1999 年,英伟达发明了 GPU(graphics processing unit),本节将介绍英伟达 GPU 从 Fermi 到 Blackwell 共 9 代架构,时间跨度从 2010 年至 2024 年,具体包括费米(Feimi)、开普勒(Kepler)、麦克斯韦(Maxwell)、帕斯卡(Pashcal)、伏特(Volt)、图灵(Turing)、安培(Ampere)和赫柏(Hopper)和布莱克韦尔(Blackwell)架构。经过 15 年的发展,CUDA 已成为英伟达的技术“护城河”,Tensor Core5.0,NVLink5.0,NVswitch4.0,Transformer Engine2.0 等技术迭代更新,正如英伟达公司官方宣传语所言:“人工智能计算领域的领导者,推动了 AI、HPC、游戏、创意设计、自动驾驶汽车和机器人开发领域的进步。”
架构名称
中文名字
发布时间
核心参数
特点&优势
纳米制程
代表型号
Fermi
费米
2010
16 个 SM,每个 SM 包含 32 个 CUDA Cores,一共 512 CUDA Cores
首个完整 GPU 计算架构,支持与共享存储结合的 Cache 层次 GPU 架构,支持 ECC GPU 架构
40/28nm, 30 亿晶体管
Quadro 7000
Kepler
开普勒
2012
15 个 SMX,每个 SMX 包括 192 个 FP32+64 个 FP64 CUDA Cores
游戏性能大幅提升,首次支持 GPU Direct 技术
28nm, 71 亿晶体管
K80, K40M
Maxwell
麦克斯韦
2014
16 个 SM,每个 SM 包括 4 个处理块,每个处理块包括 32 个 CUDA Cores+8 个 LD/ST Unit + 8 SFU
每组 SM 单元从 192 个减少到每组 128 个,每个 SMM 单元拥有更多逻辑控制电路
28nm, 80 亿晶体管
M5000, M4000GTX 9XX 系列
Pascal
帕斯卡
2016
GP100 有 60 个 SM,每个 SM 包括 64 个 CUDA Cores,32 个 DP Cores
NVLink 第一代,双向互联带宽 160GB/s,P100 拥有 56 个 SM HBM
16nm, 153 亿晶体管
P100, P6000, TTX1080
Volta
伏特
2017
80 个 SM,每个 SM 包括 32 个 FP64+64 Int32+64 FP32+8 个 Tensor Cores
NVLink2.0,Tensor Cores 第一代,支持 AI 运算,NVSwitch1.0
12nm, 211 亿晶体管
V100, TiTan V
Turing
图灵
2018
102 核心 92 个 SM,SM 重新设计,每个 SM 包含 64 个 Int32+64 个 FP32+8 个 Tensor Cores
Tensor Core2.0,RT Core 第一代
12nm, 186 亿晶体管
T4,2080TI, RTX 5000
Ampere
安培
2020
108 个 SM,每个 SM 包含 64 个 FP32+64 个 INT32+32 个 FP64+4 个 Tensor Cores
Tensor Core3.0,RT Core2.0,NVLink3.0,结构稀疏性矩阵 MIG1.0
7nm, 283 亿晶体管
A100, A30 系列
Hopper
赫柏
2022
132 个 SM,每个 SM 包含 128 个 FP32+64 个 INT32+64 个 FP64+4 个 Tensor Cores
Tensor Core4.0,NVLink4.0,结构稀疏性矩阵 MIG2.0
4nm, 800 亿晶体管
H100
Blackwell
布莱克韦尔
2024
-
Tensor Core5.0,NVLink5.0, 第二代 Transformer 引擎,支持 RAS
4NP, 2080 亿晶体管
B200
Fermi 架构
2006 年英伟达提出 G80 架构,使开发者可以基于 C 语言在 GPU 上进行开发。2008 年基于 G80 架构提出 GT200,增加了流处理器核的数量,更高的精度和并行能力使 GPU 进行科学计算和高性能计算成为可能。
2010 年英伟达提出 Feimi 架构,最大可支持 16 个 SMs,每个 SM 有 32 个 CUDA Core,一共 512 个 CUDA Core,架构设计主要是以当时游戏用户的需求为主,因此整个 GPU 有多个 GPC(图形处理簇),单个 GPC 包含一个光栅引擎(Raster Engine)和 4 个 SM。
GPU 拥有 6 个 64 位内存分区,总共是 384 位内存,最多支持 6 GB GDDR5 DRAM 内存。主机接口通过 PCI-Express 连接 GPU 和 CPU。GigaThread 全局调度器将线程块分配给 SM 线程调度器。因为计算核心较多,因此将 L2 Cache 放在处理器中间位置,使得数据可以在 CUDA Core 之间快速传输。
恩里科·费米(Enrico Fermi)是意大利裔美国物理学家,20 世纪最重要的物理学家之一,被誉为“原子能时代之父”。他在核物理、量子力学和统计力学等领域做出了重要贡献。主要成就包括:
提出费米子统计,即著名的费米-狄拉克统计,描述了半整数自旋的粒子的统计性质。
领导了芝加哥大学的“费米堆”课程,成功实现了世界上第一座自持核链反应堆。
参与了曼哈顿计划,对原子弹的研发做出了重要贡献。
获得了 1938 年的诺贝尔物理学奖,以表彰他在人类利用新的放射性同位素所作出的贡献。
Fermi 架构采用第三代流处理器,每个 SM 有 16 个加载/存储单元(Load/Store, LD/ST),允许为每个时钟 16 个线程计算源地址和目标地址,支持将每个地址的数据加载并存储到缓存或 DRAM 中。特殊功能单元(Special Function Unit, SFU)执行超越函数,如 sin、cos、导数和平方根。每个 SFU 在每个线程、每个时钟执行一条指令,一次 warp(由 32 个线程组成的线程组)要经过 8 个时钟周期。SFU 管线与调度单元解耦,允许调度单元在占用 SFU 时向其他执行单元发出命令。双精度算法是高性能计算应用的核心,每个 SM、每个时钟可执行多达 16 个双精度融合乘加运算。
每个 SM 有两个 warp 调度器和两个指令调度单元,允许同时发出和执行两个 warp。并行计算主要在 CUDA 中进行处理,每个 CUDA 处理器都有一个完整的流水线整数算术逻辑单元(ALU)和浮点单元(FPU),可以选择 FP 32 或者 INT 8 执行计算,但是 FP Unit 和 INT Unit 的执行不是并行的。
Fermi 架构支持新的并行线程执行 PTX 2.0(Parallel Thread Execution)指令集架构。一个 CUDA 程序被称作并行的 Kernel,线程分为三级,包含线程(Threads)、块(Blocks)和网格(Grid),每个层次结构对应硬件,Thread 可以共享局部内存(Local memory),线程块使用共享内存(Shared Memory),Grid 共享全局内存(Global Memory),具有相应的每个线程专用、每个块共享和每个应用程序全局内存空间。
Kepler 架构
2012 年英伟达提出 Kepler 架构,由 7.1 亿个晶体管组成的 Kepler GK110 将提供超过 1 TFlop 的双精度吞吐量,采用台积电 28 nm 制程,每瓦的性能是费米架构的 3 倍。由 15 个 SMX 单元和 6 个 64 bit 内存控制器,内存子系统提供额外的缓存功能,在每个层次结构的存储器有更大的带宽,实现更快的 DRAM I/O,同时为编程模型提供硬件支持。
约翰内斯·开普勒(Johannes Kepler)是一位德国天文学家、数学家和占星术士,被誉为现代天文学的奠基人之一。他生活在 16 世纪末至 17 世纪初,是科学革命时期的重要人物,他的工作对天文学和物理学领域产生了深远的影响,为后来伽利略和牛顿等科学家的研究奠定了基础。主要成就包括:
- 提出了行星运动的三大定律,即开普勒定律:
第一定律:行星绕太阳运行的轨道是椭圆形的,太阳位于椭圆的一个焦点上。
第二定律:行星在其轨道上的矢量面积与时间的比率是常数。
第三定律:行星轨道的半长轴与公转周期的平方成正比。
通过观测和分析提出了行星运动的椭圆轨道理论,颠覆了当时的圆周运动观念。
对光学、天文学和数学领域都做出了重要贡献,为日后牛顿的引力理论奠定了基础。
开普勒架构相比上一代 Fermi 架构,SM(Streaming Multiprocessor)更名为 SMX,但是本身的概念没有改变,每个 SMX 具有四个 warp 调度器和八个指令调度单元,允许同时发出和执行四个 warp。Fermi 架构共有 32 核,Kepler 架构拥有 192 核,大大提升了 GPU 并行处理的能力。Fermi 支持最大线程数是 1536,Kepler 最大线程数达到 2048。64 个双精度(Double-Precision,DP)单元,32 特殊功能单元(SFU)和 32 个 LD/ST(load/store)单元,满足高性能计算场景的实际需求。
Kepler 架构支持动态并行(Dynnamic Parallelism),在不需要 CPU 支持的情况下自动同步,在程序执行过程中灵活动态地提供并行数量和形式。Hyper-Q 使多个 CPU 核使用单个 GPU 执行工作,提高 GPU 利用率并显着减少 CPU 空闲时间,允许 32 个同时进行的硬件管理连接,允许从多个 CUDA 流处理,多个消息传递进程中分离出单个进程。使用网格管理单元(Grid Management Unit,GMU)启用动态并行和调度控制,比如挂起或暂停网格和队列直到执行的环境准备好。
英伟达 GPUDirect 可以使单个计算机内的 GPU 或位于网络上不同服务器中的 GPU 直接交换数据,而无需转到 CPU 系统内存,RDMA 特性允许第三方设备直接访问同一系统内多个 GPU 上的内存,减少了对系统内存带宽的需求,释放 GPU DMA 引擎供其它 CUDA 任务使用。
Maxwell 架构
2014 年英伟达提出 Maxwell 架构,麦克斯韦架构相比上一代架构没有太大改进,其中 SM 又使用了原来的名称,整体的核心个数变为 128 个,因为核心数不需要太多,可以通过超配线程数来提升 GPU 并行计算的能力。
SMM 使用基于象限的设计,其中每个 SMM 有四个共 32 核处理块,每个处理块都有一个专用的 warp 调度器,能够在每个时钟调度两条指令。每个 SMM 提供 8 个纹理单元,一个图形的几何处理引擎,以及专用的寄存器文件(Register File)和共享内存(Shared Memory)。单核性能是