第一章 课程导入:GPU的发展历史、应用领域、学习路径与课程目标
图形处理器(Graphics Processing Unit,GPU)最初的设计目标仅仅是为了加速计算机屏幕上的图形渲染,让游戏画面和图形界面更加流畅。然而,过去二十年间,GPU 的演进轨迹远超所有人的预期——它从一颗“画图芯片”蜕变为驱动人工智能、高性能计算、科学仿真、自动驾驶乃至元宇宙的算力基石。理解 GPU 的来龙去脉,不仅是学习硬件设计的第一步,更是把握未来计算架构演进方向的关键。本章作为整个课程的导入,将系统梳理 GPU 的发展历史、核心应用领域、学习路径与课程目标,帮助你在进入微架构、流水线、存储层次等硬核内容之前,建立起完整的知识坐标系。
1.1 GPU 的发展历史:从图形加速卡到通用计算平台
1.1.1 核心原理:为什么 GPU 会诞生?
在 1990 年代初期,计算机的图形显示完全依赖 CPU 进行像素计算。CPU 作为通用处理器,擅长执行复杂的控制流和分支逻辑,但面对海量像素的并行填充、纹理映射、光照计算时,其串行执行模型显得力不从心。以 640×480 分辨率、60 帧/秒为例,每秒需要处理约 1840 万个像素,每个像素涉及颜色插值、深度测试、纹理采样等数十次浮点运算——这对当时的 CPU 而言是天文数字。
GPU 的诞生正是为了解决这一“并行图形计算”瓶颈。其核心设计哲学是:用大量简单的计算单元(ALU)替代少量复杂的控制单元,以吞吐量(Throughput)优先于延迟(Latency)。CPU 追求单线程极致性能,而 GPU 追求的是“人多力量大”——通过数千个线程同时执行相同的指令流,掩盖访存延迟,实现大规模并行。
1.1.2 发展历程:四个关键阶段
| 阶段 | 时间 | 代表产品 | 关键特征 | 架构变革 |
|---|---|---|---|---|
| 固定功能管线 | 1995-2000 | 3dfx Voodoo、NVIDIA TNT2 | 硬件固定渲染管线,不支持编程 | 顶点/像素操作由专用电路完成 |
| 可编程着色器 | 2001-2006 | GeForce 3、Radeon 9700 | Vertex Shader / Pixel Shader 可编程 | 引入汇编级着色器语言 |
| 统一着色器与 GPGPU | 2006-2015 | GeForce 8800 GTX、Fermi | 统一着色器架构,CUDA/OpenCL 通用计算 | 顶点/像素/几何着色器统一为流处理器 |
| AI 与专用加速 | 2016-至今 | Volta、Ampere、Hopper、Ada | Tensor Core、RT Core、NVLink、C2C | 为深度学习矩阵运算定制硬件单元 |
2006 年是一个分水岭。NVIDIA 发布 GeForce 8800 GTX,首次采用统一着色器架构(Unified Shader Architecture),将过去分离的顶点着色器和像素着色器合并为通用的流处理器(Streaming Processor),并推出 CUDA(Compute Unified Device Architecture)编程模型。这意味着 GPU 不再只是图形芯片,而是一个可以运行通用并行程序的协处理器。此后,GPU 在科学计算、金融分析、分子动力学等领域迅速普及。
1.1.3 案例拆解:从 GeForce 256 到 A100 的架构演进
以 NVIDIA 产品线为例,1999 年 GeForce 256 首次提出“GPU”概念,集成了 2300 万晶体管,拥有 4 条像素管线,核心频率 120MHz。到 2020 年 A100 发布时,集成 542 亿晶体管,拥有 6912 个 CUDA 核心和 432 个 Tensor Core,支持 FP16 混合精度训练,AI 算力达到 312 TFLOPS(稠密)。二十年间,晶体管数量增长约 235 倍,AI 算力增长超过 10 万倍。这一演进背后是架构从“专用电路”到“通用并行 + 专用加速”的深刻转变。
1.1.4 常见误区与总结
- 误区一:认为 GPU 只是“显卡”,与 CPU 无关。实际上现代 SoC 中 GPU 与 CPU 通过高速总线(如 PCIe、NVLink、C2C)紧密耦合,共享内存或统一寻址。
- 误区二:认为 GPU 频率越高性能越好。GPU 性能取决于并行度、访存带宽、调度效率、功耗墙等多维因素,频率只是其中一个变量。
- 误区三:忽略功耗与散热。GPU 的 TDP 从早期的几十瓦到如今 A100 的 400W、H100 的 700W,功耗墙已成为架构设计的核心约束。
总结:GPU 的发展史是一部“并行计算架构”的进化史。理解其历史,不是为了背诵年份,而是为了把握架构演进的逻辑——为什么固定管线被可编程取代?为什么统一着色器成为主流?为什么今天需要 Tensor Core?这些问题的答案,将贯穿整个课程。
1.2 GPU 的应用领域:四大主战场
1.2.1 核心原理:GPU 的适用场景边界
GPU 并非万能加速器。它的优势在于数据并行(Data Parallelism)——即大量数据元素执行相同或相似的计算操作,且相互之间依赖较少。典型的适用场景包括:矩阵乘法、卷积、图像滤波、蒙特卡洛模拟、粒子系统等。相反,如果任务包含大量分支跳转、递归调用、串行依赖,GPU 的效率会大幅下降。因此,判断一个应用是否适合 GPU 加速,需要分析其并行度、访存模式、计算密度(Arithmetic Intensity)。
1.2.2 四大应用领域详解
| 领域 | 典型负载 | 关键 GPU 特性 | 代表产品/技术 |
|---|---|---|---|
| 图形渲染 | 游戏、影视特效、VR/AR | 光栅化、光线追踪、纹理单元 | RTX 系列、PlayStation 5 GPU |
| AI 计算 | 大模型训练、推理、推荐系统 | Tensor Core、混合精度、NVLink | A100/H100、TPU(竞品) |
| 科学计算 | 分子动力学、气象模拟、CFD | 双精度算力、ECC 内存、NVLink | V100、MI250X |
| 自动驾驶/边缘 | 目标检测、传感器融合、路径规划 | 低功耗、实时性、功能安全 | Orin、Jetson、EyeQ |
1.2.3 实战场景:AI 大模型训练为何“非 GPU 不可”
以 级别的千亿参数大模型为例,训练一次需要约 10^23 次浮点运算。如果用 CPU 集群,假设单颗 CPU 提供 1 TFLOPS FP32 算力,需要 10^11 秒(约 3170 年)。而使用 10000 颗 A100 GPU(每颗 312 TFLOPS FP16),理论上仅需约 3.2×10^6 秒(约 37 天)。当然,实际训练还受限于显存容量、通信带宽、并行策略等因素,但 GPU 的算力密度优势是无可替代的。此外,GPU 的 Tensor Core 专门针对矩阵乘加运算优化,其 FP16 算力是 FP32 的 2 倍,FP8 更是达到 4 倍,这为混合精度训练提供了硬件基础。
1.2.4 常见误区与总结
- 误区一:“GPU 就是用来打游戏的”——这是最普遍的误解。实际上 AI 计算已占数据中心 GPU 出货量的 70% 以上。
- 误区二:“GPU 能加速所有算法”——对于串行依赖强、分支密集的负载(如编译、数据库事务),GPU 可能比 CPU 更慢。
- 误区三:“显存越大越好”——显存容量与带宽需要匹配。如果带宽不足,大显存也无法发挥算力。
总结:GPU 的应用领域已经从图形渲染扩展到 AI、科学计算、自动驾驶等“算力饥渴”场景。理解不同领域对 GPU 硬件特性的差异化需求(如 AI 需要 Tensor Core、科学计算需要双精度、自动驾驶需要低功耗),是进行硬件设计选型的前提。
1.3 学习路径与课程目标
1.3.1 核心原理:从“用 GPU”到“造 GPU”的认知跃迁
本课程的目标不是教你如何调用 CUDA 写程序,而是帮助你从硬件设计者的视角理解 GPU 内部的工作原理。这意味着你需要掌握:指令集架构(ISA)如何映射到硬件电路、流水线如何调度、存储层次如何设计、功耗如何优化、并行度如何挖掘。这是一条从“软件使用者”到“硬件架构师”的进阶之路。
1.3.2 课程知识体系与学习路径
本课程共 30 章,分为六个模块,每个模块解决一个核心问题:
- 基础篇(第 1-5 章):GPU 发展史、并行计算基础、图形渲染管线、GPU 编程模型(CUDA/OpenCL)、GPU 系统架构(PCIe/NVLink/CCIX)。
- 微架构篇(第 6-12 章):流处理器簇(SM)设计、线程调度与 warp 机制、流水线设计(取指/译码/执行/访存)、ALU 与特殊函数单元、Tensor Core 微架构、光线追踪硬件。
- 存储与互联篇(第 13-17 章):寄存器文件、共享内存、L1/L2 缓存层次、显存控制器(GDDR/HBM)、片上网络(NoC)、多 GPU 互联。
- 编程与编译篇(第 18-21 章):PTX 指令集、编译器优化、内存一致性模型、性能分析与调优工具。
- 硬件设计篇(第 22-26 章):RTL 设计基础、GPU 功能模块的 Verilog 实现、时钟/复位/功耗管理、物理设计(布局布线)、验证方法学。
- 前沿专题篇(第 27-30 章):chiplet 与 2.5D/3D 封装、存内计算、可重构 GPU、GPU 与量子计算/神经形态计算融合。
1.3.3 案例拆解:一个硬件工程师的 GPU 学习路线图
假设你是一名数字 IC 设计工程师,希望转型做 GPU 架构设计。建议的路径是:先用 2 周时间掌握 CUDA 编程(理解线程模型和内存模型),再用 4 周时间学习 GPU 微架构(重点理解 SM 内部结构、warp 调度、访存流水线),然后用 6 周时间动手实现一个简化版 GPU 核心(用 Verilog 实现一个支持基本指令的 SM),最后用 4 周时间学习 GPU 系统架构(存储一致性、互联协议)。总计约 16 周,可以完成从“软件视角”到“硬件视角”的初步转变。
1.3.4 常见误区与总结
- 误区一:“先学 Verilog 再学架构”——建议先建立架构概念,再动手写 RTL,否则容易“只见树木不见森林”。
- 误区二:“只学 NVIDIA 架构”——虽然 NVIDIA 是市场领导者,但 AMD、Intel、Apple、Arm 的 GPU 架构各有特色,应对比学习。
- 误区三:“忽略软件栈”——硬件设计必须考虑编译器、驱动、运行时库的配合。不理解 CUDA 的线程调度,就无法理解硬件为何这样设计。
总结:学习 GPU 硬件设计是一条“理论-实践-再理论”的螺旋上升路径。本课程将为你提供完整的知识框架、关键的设计方法论和实战案例,但真正的能力提升需要你在课后动手实验、阅读、参与开源项目(如 MIAOW、GPGPU-Sim)来持续打磨。
- GPU 的诞生源于图形渲染的并行计算需求,其核心设计哲学是“吞吐量优先于延迟”。
- GPU 发展经历了固定管线、可编程着色器、统一架构、AI 加速四个阶段,每一次变革都由应用需求驱动。
- GPU 的四大应用领域(图形、AI、科学计算、自动驾驶)对硬件特性有差异化需求。
- 本课程 30 章分为六大模块,从基础到前沿,覆盖 GPU 硬件设计的完整知识链。
- 学习 GPU 硬件设计需要“软件视角”与“硬件视角”并重,理解架构与电路的映射关系。