GPU 架构学习
第十七课:NVIDIA GPU 架构如何演进
这一课按时间线梳理 NVIDIA GPU 架构演进,重点不是背型号,而是看每一代解决了什么瓶颈。
目录
一、Tesla/G80:GPU 从图形处理器变成并行计算器二、Fermi:建立完整的通用计算基础三、Kepler:扩大吞吐规模并减少调度瓶颈四、Maxwell:不再只追求更多核心,而是追求每瓦效率五、Pascal:连接低精度计算、高带宽显存和多 GPU六、Volta:Tensor Core 改变了 GPU 的计算方向七、Turing:实时光线追踪与 AI 进入消费级图形八、Ampere:让 Tensor Core 覆盖更多精度和工作负载九、Hopper:数据搬运和多 SM 协作成为核心设计对象十、Blackwell:从单芯片 GPU 走向机架级 AI 计算机十一、架构路线并非只有一条十二、从历史中可以看到的五条主线1. 从固定功能走向可编程2. 从裸算力走向完整存储体系3. 从通用算术走向专用矩阵计算4. 从同步执行走向异步数据流水5. 从单 GPU 走向系统级扩展十三、三个最重要的历史转折点十四、不要只比较 CUDA Core 数量本课核心结论第十八课:PTX、SASS 和 Compute Capability导语:这一课按时间线梳理 NVIDIA GPU 架构演进,重点不是背型号,而是看每一代解决了什么瓶颈。
学习架构演进时,不应只背“CUDA Core 数量增加了多少”,而要关注每一代主要解决的瓶颈:
Tesla:让 GPU 能进行通用计算
Fermi:让 GPU 更像完整的计算处理器
Kepler:扩大并行规模
Maxwell:提高每瓦性能
Pascal:加强低精度、显存和多 GPU
Volta:引入 Tensor Core
Turing:引入 RT Core
Ampere:统一 AI、HPC 和资源隔离
Hopper:强化数据搬运与 Transformer
Blackwell:低至 FP4,并扩展到机架级计算
这里的 Tesla 架构 是早期 CUDA GPU 架构;后来 NVIDIA 也曾把数据中心产品称为 Tesla 产品线,二者不要混淆。
一、Tesla/G80:GPU 从图形处理器变成并行计算器
2006 年的 G80 是 NVIDIA GPU 架构的重要转折点。
在它之前,GPU 中往往存在不同的专用处理器:
顶点处理器
像素处理器
几何处理器
如果某一帧像素工作很多、顶点工作很少,就可能出现:
像素处理器忙不过来
顶点处理器却处于空闲
G80 采用统一着色器架构,让同一套可编程处理器能够执行顶点、像素、几何和计算任务。它还引入标量线程处理、SIMT、Shared Memory 和线程屏障;CUDA 则让程序员能够使用高级语言直接编写通用计算程序,而不再需要把科学计算伪装成图形渲染。
这一代最重要的改变不是“核心更多”,而是:
GPU 从固定图形流水线,转向可编程的大规模并行处理器。
其基本模型已经与今天非常接近:
Grid
└── Block
└── Warp
└── Thread
现代 GPU 仍然延续着 G80 奠定的 SIMT、Warp 和 Shared Memory 等基本思想。
二、Fermi:建立完整的通用计算基础
早期 CUDA GPU 已经能运行通用程序,但距离成熟的 HPC 处理器还有差距,例如:
- 缓存体系较弱;
- 双精度性能不足;
- 缺乏完整 ECC;
- 原子操作较慢;
- 多任务执行能力有限。
Fermi 针对这些问题加入了可配置的 L1/Shared Memory、统一 L2 Cache、ECC、更强的双精度、并发 Kernel、双 Warp Scheduler,以及更完整的 C++ 和统一地址空间支持。
可以把 Fermi 的目标概括为:
G80:
GPU 可以做计算
Fermi:
GPU 可以可靠地承担大型科学计算
Fermi 也是前面所学现代 GPU 结构的重要起点:
多个 SM
↓
公共 L2 Cache
↓
多个显存分区
三、Kepler:扩大吞吐规模并减少调度瓶颈
Kepler 进一步强调性能、能效和大规模并行。
它引入或强化了几个重要功能:
- SMX:更大规模的流式多处理器;
- Hyper-Q;
- Dynamic Parallelism;
- GPUDirect RDMA;
- 高双精度计算能力。
NVIDIA 官方将 SMX、Dynamic Parallelism 和 Hyper-Q 列为 Kepler 面向并行计算的主要创新。
Hyper-Q 解决什么问题
早期架构中,多个 CPU 任务提交到 GPU 后,可能被压缩到较少的硬件工作队列中,造成无关任务之间出现“假依赖”。
Hyper-Q 增加了更多独立硬件工作队列:
多个 CPU 线程或 MPI 进程
↓
多个硬件工作队列
↓
更充分地向 GPU 提交任务
Dynamic Parallelism
它允许 GPU Kernel 在 GPU 内部启动新的 Kernel。
传统方式:
GPU 完成一阶段
↓
通知 CPU
↓
CPU 启动下一 Kernel
Dynamic Parallelism:
GPU Kernel
↓
直接启动子 Kernel
这对递归、自适应网格和不规则任务更方便,但子 Kernel 启动仍有成本。
四、Maxwell:不再只追求更多核心,而是追求每瓦效率
Kepler 的 SMX 很宽,包含大量执行单元,但并不是所有工作负载都能持续填满这些资源。
Maxwell 重新设计了 Streaming Multiprocessor,将其划分成更独立的处理分区,并改善了:
- 控制逻辑分区;
- 工作负载平衡;
- 时钟门控粒度;
- 编译器静态调度;
- 指令发射效率。
NVIDIA 将 Maxwell SMM 的核心目标概括为显著提升架构和能量效率。
其思路是:
Kepler:
一个很宽的大型 SMX
Maxwell:
拆成多个更独立、更容易利用的执行分区
因此,即使某些 Maxwell 产品的理论资源增长不夸张,它们的实际每瓦性能仍明显提高。
这一代说明了一个重要规律:
增加执行单元数量并不困难,困难的是让执行单元持续获得可执行指令和数据。
五、Pascal:连接低精度计算、高带宽显存和多 GPU
Pascal 是 AI 计算快速发展阶段的重要过渡架构。
其代表性变化包括:
- 16 nm FinFET;
- HBM2;
- 第一代 NVLink;
- 更高 FP16 吞吐率;
- 改进 Unified Memory;
- GPU 硬件页面错误与数据迁移。
Pascal P100 将高速 NVLink、HBM2 和高能效计算结合起来,为多 GPU 深度学习和 HPC 奠定了更强的系统基础。
Pascal 的重点已经不只是 SM:
更快的计算
+
更高的显存带宽
+
更快的 GPU 间互连
+
更方便的 CPU/GPU 内存管理
这反映出 GPU 性能问题开始从“芯片内部算得多快”,扩展到:
数据怎样进入 GPU,以及多块 GPU 怎样协作。
六、Volta:Tensor Core 改变了 GPU 的计算方向
Volta 是 AI GPU 架构的关键分界点。
在 Volta 之前,神经网络矩阵乘法主要依靠普通 CUDA Core 执行大量标量 FMA。
Volta 首次加入 Tensor Core:
Tensor Core 直接处理矩阵块,并采用低精度乘法和较高精度累加,使深度学习吞吐率大幅提高。完整 GV100 SM 中配置了独立 FP32、INT32、FP64 和 Tensor Core 管线。
Volta 还引入了 Independent Thread Scheduling,使 Warp 内线程具有更细粒度的执行状态。但这不意味着 Warp 消失,也不意味着分支发散没有代价。
Volta 的历史意义是:
以前:
GPU 是通用并行处理器,也能运行 AI
Volta 以后:
GPU 内部出现了明确面向 AI 矩阵计算的专用单元
从这里开始,GPU 更明显地成为一种异构芯片:
CUDA Core:通用标量计算
Tensor Core:矩阵计算
LSU:数据搬运
SFU:特殊函数
固定功能单元:图形等任务
七、Turing:实时光线追踪与 AI 进入消费级图形
Volta 主要面向数据中心和 HPC,而 Turing 将 Tensor Core 带入 RTX 图形产品,并首次加入 RT Core。
RT Core 主要加速:
- BVH 遍历;
- 光线与包围盒求交;
- 光线与三角形求交。
Tensor Core 则可以用于:
- AI 降噪;
- 图像重建;
- DLSS;
- INT8/INT4 推理。
Turing 由可编程着色、RT Core 和增强型 Tensor Core共同构成混合渲染架构,使光栅化、光线追踪和 AI 能在同一渲染流程中协作。
其思路可以表示为:
光栅化:
高效完成大部分基础画面
RT Core:
处理反射、阴影和求交
Tensor Core:
执行 AI 降噪和图像重建
Turing 说明 GPU 的发展并不是完全抛弃专用硬件,而是:
在可编程 SM 周围加入越来越多面向高频任务的专用加速结构。
八、Ampere:让 Tensor Core 覆盖更多精度和工作负载
Ampere 的重要变化包括:
- 第三代 Tensor Core;
- TF32;
- BF16;
- FP64 Tensor Core;
- INT8、INT4 等格式;
- 2:4 结构化稀疏;
- Global Memory 到 Shared Memory 的异步复制;
- 更大的统一 L1/Shared Memory;
- MIG。
A100 Tensor Core 可以处理多种浮点和整数格式,并通过 2:4 结构化稀疏提高特定矩阵运算吞吐率。Ampere 还允许数据更直接地从 Global Memory 搬到 Shared Memory,减少寄存器中转。
TF32 的意义
过去要使用 Tensor Core,通常需要显式把 FP32 模型转为 FP16。
TF32 让许多以 FP32 输入的矩阵计算能够更容易使用 Tensor Core:
FP32 范围
+
降低的乘法尾数精度
+
较高精度累加
MIG 的意义
MIG 可以把一块 A100 划分成多个相对隔离的 GPU Instance,每个实例拥有独立的 SM 和部分内存系统路径。
它解决的不是单任务峰值性能,而是:
一块很大的 GPU
↓
安全、可预测地服务多个较小任务
九、Hopper:数据搬运和多 SM 协作成为核心设计对象
Tensor Core 的速度持续提高后,一个新问题越来越突出:
计算单元已经很快,但数据搬运、同步和多 SM 协作跟不上。
Hopper 因此不仅增强计算,还重点改进数据流。
主要变化包括:
- 第四代 Tensor Core;
- FP8;
- 第一代 Transformer Engine;
- Tensor Memory Accelerator;
- Thread Block Cluster;
- Distributed Shared Memory;
- DPX 指令;
- HBM3;
- 第四代 NVLink。
Hopper 的 TMA 可以异步搬运多维数据块,使少量线程发起大块 Global Memory—Shared Memory 传输;Thread Block Cluster 则允许多个 SM 上的 Block 同步,并通过 Distributed Shared Memory 访问其他 Block 的 Shared Memory。
传统 CUDA 层次是:
Grid
└── Block
└── Thread
Hopper 增加了:
Grid
└── Thread Block Cluster
└── Block
└── Thread
Transformer Engine 会在 FP8 和 16 位格式之间动态选择和转换,以兼顾性能与数值范围。
Hopper 的核心趋势是:
不只是增加 Tensor Core
而是让数据搬运、计算和同步形成异步流水线
十、Blackwell:从单芯片 GPU 走向机架级 AI 计算机
Blackwell 数据中心 GPU 使用两个接近光刻尺寸上限的 Die,通过约 10 TB/s 的封装内互连连接,并在软件中表现为一个统一 GPU。完整 Blackwell GPU 包含约 2080 亿个晶体管。
其主要演进包括:
- 第五代 Tensor Core;
- 第二代 Transformer Engine;
- FP4 与微张量缩放;
- 更强的可靠性和解压硬件;
- 第五代 NVLink;
- 面向 NVL72 的机架级扩展。
FP4 只有4位,单独使用很难覆盖神经网络张量的动态范围,因此 Blackwell 使用更细粒度的 Micro-Tensor Scaling,让不同局部数据块使用不同缩放因子。
Blackwell 的第五代 NVLink 可在 NVL72 中构建72 GPU高速域,官方给出的该域聚合 NVLink 带宽为130 TB/s。
因此 Blackwell 的设计单位不再只是:
一个 SM
或
一块 GPU
而越来越接近:

图示:十、Blackwell:从单芯片 GPU 走向机架级 AI 计算机
十一、架构路线并非只有一条
从 Volta 以后,NVIDIA 的数据中心与图形架构出现了一定程度的分支:

图示:十一、架构路线并非只有一条
它们共享许多基础设计思想,但重点不同。
数据中心 GPU 更强调:
- FP64、BF16、FP8、FP4;
- HBM;
- NVLink;
- ECC 和 RAS;
- MIG;
- 大规模 AI 与 HPC。
图形 GPU 更强调:
- RT Core;
- 光栅化;
- Texture Unit;
- ROP;
- 视频编码;
- 显示输出;
- 游戏能效。
所以不能仅凭架构名称,就假定所有产品具有相同资源比例。
十二、从历史中可以看到的五条主线
1. 从固定功能走向可编程
固定图形流水线
↓
统一 Shader
↓
CUDA 通用计算
代表架构:G80。
2. 从裸算力走向完整存储体系
Shared Memory 为主
↓
L1 + L2 + ECC
↓
更大的缓存与统一内存
代表架构:Fermi、Pascal。
3. 从通用算术走向专用矩阵计算
CUDA Core FMA
↓
Tensor Core
↓
FP8 / FP4 Transformer Engine
代表架构:Volta、Hopper、Blackwell。
4. 从同步执行走向异步数据流水
线程加载数据并等待
↓
异步复制
↓
TMA 和多阶段流水线
代表架构:Ampere、Hopper。
5. 从单 GPU 走向系统级扩展
PCIe 多 GPU
↓
NVLink
↓
NVSwitch
↓
机架级 NVLink Domain
代表架构:Pascal、Hopper、Blackwell。
十三、三个最重要的历史转折点
如果只记住三个节点,可以记:
G80:可编程化
GPU 不再只能画图
统一 Shader、SIMT、Shared Memory 和 CUDA 奠定现代 GPU 基础。
Volta:AI 专用化
矩阵计算不再只使用普通 CUDA Core
Tensor Core 使 AI 成为 GPU 硬件设计的核心目标。
Blackwell:系统化
性能单位从一块芯片扩展到整个机架
低精度、先进封装、NVLink Switch 和机架级系统共同决定最终性能。
十四、不要只比较 CUDA Core 数量
跨架构比较“CUDA Core 数量”常常会误导。
因为不同代 CUDA Core 的以下属性可能不同:
- 每周期指令能力;
- 工作频率;
- 发射结构;
- FP32 与 INT 管线关系;
- 寄存器带宽;
- 缓存容量;
- SM 分区方式;
- 实际利用率。
同样,Tensor Core 的数量也不能直接跨代比较。
例如:
Volta:每个 Tensor Core 每周期处理较小吞吐
Ampere:Tensor Core 数量可能减少,但单个能力明显增强
Ampere A100 每个 SM 的 Tensor Core 数由 Volta 的8个变为4个,但每个第三代 Tensor Core 的工作能力更强,SM 总矩阵吞吐率反而提高。
因此应比较:
实际支持的数据格式
每周期矩阵吞吐率
显存和片上带宽
软件支持
真实应用性能
而不是只数方框。
本课核心结论
第一,G80 和 CUDA奠定了统一着色、SIMT 和通用 GPU 计算的基础。
第二,Fermi 加入成熟缓存、ECC、双精度和并发 Kernel,使 GPU 更适合 HPC。
第三,Kepler 通过 SMX、Hyper-Q 和 Dynamic Parallelism 扩大并行规模和可编程性。
第四,Maxwell 通过重构 SM 分区提高每瓦性能和执行单元利用率。
第五,Pascal 将 FP16、HBM2、NVLink 和改进统一内存结合起来。
第六,Volta 首次加入 Tensor Core,是 GPU AI 专用化的重要转折点。
第七,Turing 加入 RT Core,形成光栅化、光线追踪和 AI 的混合图形架构。
第八,Ampere 扩展 Tensor Core 数据格式,引入 TF32、BF16、结构化稀疏、异步复制和 MIG。
第九,Hopper 通过 FP8、Transformer Engine、TMA 和 Thread Block Cluster 强化异步数据流。
第十,Blackwell 通过双 Die、FP4、细粒度缩放和第五代 NVLink,把设计范围扩展到机架级 AI 系统。
第十一,GPU 架构演进的核心并非单纯堆算力,而是同时演进:
下一课将讲:
第十八课:PTX、SASS 和 Compute Capability
包括:
CUDA C++ 如何变成 GPU 指令
PTX 是什么
SASS 是什么
虚拟 ISA 与真实 ISA 的区别
sm_80、sm_90、sm_100 表示什么
为什么同一 CUDA 程序能运行在不同架构上
JIT 编译与 Fat Binary
如何查看 Kernel 的汇编指令