大数跨境
0
0

历史在不断重演:NVIDIA SM 架构的颠覆性创新之路

历史在不断重演:NVIDIA SM 架构的颠覆性创新之路 NeuralTalk
2025-11-16
2
导读:本文聚焦2006-2018年NVIDIA流多处理6代架构演进,从Tesla到Turing,以统一架构、SIMT等创新为核心,工艺从90nm精进至12nm,核心数128增至4352,算力从345.6Gf

关键词:流多处理器GPU架构、CUDA、GPU 编程、并行计算

  • A history of NVidia Stream Multiprocessor
  • https://fabiensanglard.net/cuda/
  • 9000 字,阅读 30 分钟,播客 15 分钟
相关推荐

本文聚焦 2006-2018 年 NVIDIA 流多处理器(SM)的 6 代架构演进,核心围绕“统一架构+技术迭代”驱动 GPU 性能颠覆式提升。本文涉及的 GPU 架构包括从 2006 年的 Tesla 到 2018 年的 Turnig:

Year    Arch       Series             Die      Process      Enthusiast Card
===========================================================================
2006    Tesla      GeForce 8          G80        90 nm             8800 GTX 
2010    Fermi      GeForce 400      GF100        40 nm              GTX 480
2012    Kepler     GeForce 600      GK104        28 nm              GTX 680
2014    Maxwell    GeForce 900      GM204        28 nm          GTX  980 Ti
2016    Pascal     GeForce 10       GP102        16 nm          GTX 1080 Ti
2018    Turing     GeForce 20       TU102        12 nm          RTX 2080 Ti

2006 年 Tesla 架构打破传统分层设计,以 SIMT 技术实现顶点、片段等内核统一处理,奠定 SM 基础。后续 Fermi、Kepler、Maxwell、Pascal、Turing 架构持续革新,工艺从 90nm 精进至 12nm,核心数从 128 增至 4352,算力从 345.6 Gflops 飙升至 13.45 flops。

关键创新包括 Fermi 的 float64 支持与 C++特性集成、Maxwell 的能效优化与核心对齐设计、Turing 的 Tensor/光追核心融合独立线程调度

同时,CUDA 编程模型的推出与升级,配合内存子系统(如 GDDR5X/GDDR6X)迭代,作者基于 CUDA,实现了一个“光线追踪器”,实现了从 101 秒到 150 毫秒的 700x 加速效果

整体呈现出架构创新、工艺进步与算力提升的协同演进,彰显 NVIDIA SM 在 GPU 并行计算领域的持续引领地位。

交流加群请在 NeuralTalk 公众号后台回复:加群

unsetunset本文目录unsetunset

  • 本文目录
  • 关键问题
    • 问题 1:从“统一架构”到“多核心分化”,Turing 架构是否违背 Tesla 的创新初衷?
    • 问题 2:核心数与算力倍增的背后,NVIDIA SM 架构是否存在不可回避的设计取舍?
    • 问题 3:700x 加速与 13.45 Tflops 的峰值,能否证明 SM 架构创新已触及算力增长天花板?
  • 一、2006 年前的 GPU 设计困境:功能模块绑定的技术瓶颈
  • 二、Tesla 架构(2006):统一架构与 SIMT 技术的奠基之路
  • 三、Fermi 架构(2010):float64 支持与 C++ 特性的突破升级
  • 四、Kepler 架构(2012):能效比优化与 SMX 设计的性能飞跃
  • 五、Maxwell 架构(2014):核心对齐与极致能效的架构革新
    • 第一代 Maxwell 架构
    • 第二代 Maxwell 架构
  • 六、Pascal 架构(2016):16nm 工艺与 GDDR5X 内存的协同提升
  • 七、Turing 架构(2018):张量核心、光追核心与独立线程调度的创新
  • 未来展望:Ampere 架构与 7nm 工艺的潜在突破
  • 参考文献
交流加群请在 NeuralTalk 公众号后台回复:加群

unsetunset关键问题unsetunset

问题 1:从“统一架构”到“多核心分化”,Turing 架构是否违背 Tesla 的创新初衷?

Tesla 架构以“统一 SM 替代分层单元”打破传统设计,成为后续 20 年 GPU 基础,而 Turing 架构却引入 Tensor、光追核心形成多核心分化,这一“回归式”设计是否与当初的统一化创新逻辑相悖?其背后是技术妥协还是更高维度的突破?

Turing 架构的多核心分化并非违背 Tesla 初衷,而是更高维度的突破。

  • Tesla 的核心创新是用统一 SM 替代分层单元,解决传统设计的负载平衡难题,其本质是 “打破功能割裂”;
  • 而 Turing 引入 Tensor 和光追核心,是在统一 SM 基础上新增专属功能模块,并未抛弃统一调度逻辑。

作者提到,Turing 仍延续 SM 的核心执行模型,同时通过多核心分化适配 AI 计算、实时光追等新场景,是对 “统一架构” 的补充而非否定。这种设计既保留了 Tesla 奠定的灵活调度优势,又通过功能模块化满足复杂算力需求,属于技术演进中的精准创新,而非妥协。

问题 2:核心数与算力倍增的背后,NVIDIA SM 架构是否存在不可回避的设计取舍?

从 Tesla 的 128 核心/345.6 Gflops 到 Turing 的 4352 核心/13.45 Tflops,每代架构均以核心数、工艺迭代实现算力倍增,但 Kepler 移除硬件调度、Maxwell 减少核心数等设计,是否牺牲了部分灵活性?这些取舍对长期性能提升的制约如何?

SM 架构的性能倍增确实伴随设计取舍,但并非不可回避的制约,而是基于场景需求的优化平衡

  • Kepler 移除硬件调度改用软件方案,虽增加调度逻辑复杂度,却换来了 28nm 工艺下更多 SM 的集成,实现 2x 性能提升;
  • Maxwell 减少核心数至 128 个(对齐 warp 尺寸),看似核心缩减,实则优化了 die 分区,节省面积与功耗,让 Gen2 版本能集成 24 个 SMM,算力达 6060 Gflops。

这些取舍并非牺牲灵活性,而是通过 “能效优先”“结构优化” 换取更大的整体性能空间,每代架构的算力倍增数据(从 345.6 Gflops 到 13.45 Tflops)已证明,这些取舍是推动长期提升的必要选择。

问题 3:700x 加速与 13.45 Tflops 的峰值,能否证明 SM 架构创新已触及算力增长天花板?

依托 SM 架构演进与 CUDA 优化实现 700x 加速,Turing 架构达到 13.45 Tflops 峰值,但工艺已逼近 12nm,多核心整合复杂度提升,后续架构能否延续“每代性能倍增”的节奏?SM 架构的创新路径是否面临技术瓶颈?

现有峰值数据不足以证明 SM 架构触及增长天花板。

  • 从工艺来看,Turing 的 12nm 并非终点,文中提到 Intel 已实现 7nm 工艺,NVIDIA 后续 Ampere 架构可依托 7nm 进一步缩小 SM 尺寸、集成更多核心;
  • 从架构创新来看,Turing 的独立线程调度、CUDA 核心超标量设计,以及内存子系统从 GDDR5X 到 GDDR6X 的迭代(带宽提升 43%),仍有持续优化空间;
  • 从硬件扩展来看,SM 已实现 Tensor 与光追核心的融合,未来可针对更多场景新增专属模块。

历史数据显示,SM 架构从 Tesla 到 Turing 保持每代性能倍增,结合工艺进步与架构创新的协同,后续仍能延续增长节奏,尚未触及技术瓶颈。

unsetunset一、2006 年前的 GPU 设计困境:功能模块绑定的技术瓶颈unsetunset

在 2006 年之前,NVIDIA 的 GPU 设计与渲染 API 中的逻辑阶段紧密绑定。

以 G71 芯片为核心的 GeForce 7900 GTX 显卡,主要由三个部分构成:

  • 顶点处理单元(8 个):是图形处理器(GPU)的核心功能模块之一,主要负责图形渲染流程中 “顶点阶段” 的计算处理,是将 3D 模型 “转化” 为屏幕可见图像的关键环节。
  • 片段生成单元(24 个):是早期 NVIDIA GPU 中的核心功能模块之一,主要作用是生成图形渲染所需的 “片段”(Fragment,可理解为屏幕像素的 “前身”),是传统 GPU 按渲染流程分层设计中的关键环节。
  • 片段合并单元(16 个):是一个在数据处理、多媒体处理、信号分析等技术领域中常见的功能模块,核心作用是将分散的 “数据 / 信息片段” 整合为完整、连续的目标内容,以解决 “片段化数据无法直接使用” 的问题。
这张图是 G71 芯片(GeForce 7900 GTX)的架构图,展示早期 GPU 按渲染阶段分层的设计:包含顶点处理、片段生成 / 合并单元,通过 Z-Cull 提前剔除被遮挡片段,再经 Fragment Crossbar 将数据送入 Z-Buffer(深度缓存)和 RGB Buffer(颜色缓存)。这种功能模块绑定的设计因灵活性不足,推动了后续统一架构的革新
这张图是 G71 芯片(GeForce 7900 GTX)的架构图,展示早期 GPU 按渲染阶段分层的设计:包含顶点处理、片段生成 / 合并单元,通过 Z-Cull 提前剔除被遮挡片段,再经 Fragment Crossbar 将数据送入 Z-Buffer(深度缓存)和 RGB Buffer(颜色缓存)。这种功能模块绑定的设计因灵活性不足,推动了后续统一架构的革新

前面提到:2006 年前,NVIDIA GPU的设计始终与渲染 API 的逻辑阶段深度绑定,怎么理解?

比如 GeForce 7900 GTX搭载的G71芯片,就专门划分了顶点处理单元、片段生成单元与片段合并单元,每个硬件模块仅负责对应API阶段的任务。

这种设计的核心局限在于,硬件性能的平衡完全依赖对渲染负载的预判

  • 设计师必须提前判断哪类API阶段会成为瓶颈,才能决定各模块的规模配比;
  • 一旦实际场景中各阶段的负载与预判不符,就会出现部分模块满负荷运行、部分模块闲置的资源浪费问题。

而当 DirectX 10 引入“几何着色器”这一新阶段后,这一设计的矛盾被彻底激化。几何着色器的核心作用是将点、线等简单几何图元转换为三角形,但其实际使用率却存在极大不确定性——不同游戏、不同场景对它的依赖程度差异悬殊,既可能仅零星调用,也可能需要它承担大量几何处理工作。

面对这种“无法预判的负载需求”,工程师根本无法合理分配硬件资源:

  • 若为几何着色器单独增设大量模块,可能面临多数场景下的资源闲置;
  • 若不增设或少量增设,又可能在高依赖场景中形成性能瓶颈。

至此,“与 API 阶段绑定”的传统设计已无法适配新的渲染需求,GPU 架构的全面变革已成为必然趋势。

unsetunset二、Tesla 架构(2006):统一架构与 SIMT 技术的奠基之路unsetunset

为解决架构复杂度不断攀升的问题,NVIDIA 于 2006 年推出了“统一架构”——Tesla 架构。

在 G80 芯片中,不再有“不同功能模块划分”的概念。流多处理器(SM)取代了此前所有的功能单元,因为它能够无差别地运行顶点着色器、片段着色器和几何着色器的“内核程序”。负载均衡会通过“根据流水线需求切换每个 SM 所运行的内核程序”自动实现。

“我们几乎彻底抛弃了 NV30/NV40 架构的整个着色器体系,从零开始打造了一个全新的通用处理器架构(即 SIMT),同时还引入了新的处理器设计方法。”

——乔纳·阿尔本(Jonah Alben,NVIDIA 高管)(摘自 extremetech.com 的采访)

如今,“着色器单元”(Shader Unit)不再仅支持 SIMD,而是升级为“核心”(Core)——每个核心每时钟周期可执行一条整数指令或一条 32 位浮点(float32)指令。SM 接收的线程会以 32 个为一组,称为“线程束”(warp,GPU 中的基本调度单位,一组同时被调度执行的线程)。

理想情况下,一个线程束中的所有线程会在同一时钟周期执行相同的指令,只是处理不同的数据(这也正是 SIMT 名称的由来)。多线程指令单元(MT,Multi-threaded Instruction Unit)负责在线程束的指令指针(IP,Instruction Pointer,指示当前执行指令位置的指针)趋同或分歧时,启用或禁用相应线程。

SM 中还配备了两个 SFU(Special Function Unit,特殊功能单元),用于处理复杂的数学计算,如平方根的倒数(inverse square root)、正弦(sin)、余弦(cos)、指数(exp)以及倒数(rcp)。这些 SFU 同样每时钟周期可执行一条指令,但由于仅有两个 SFU,线程束的执行速度会降低至原来的 1/4。此外,该架构不支持硬件级 64 位浮点(float64)运算,只能通过软件模拟实现,这会大幅降低执行速度。

只有当 SM 能够通过“始终拥有可调度的线程束”来隐藏内存延迟(内存延迟指从发出内存访问请求到获取数据的时间间隔),并且线程束中的线程不会出现“分歧”(即控制流保持一致,所有线程执行相同的指令路径)时,SM 才能发挥最大性能。

4KB 大小的寄存器文件(RF,Register File,用于存储线程运行时的状态和数据的高速存储区域)是线程状态的存储载体。如果线程占用过多栈空间,会减少可同时处于“在飞”(in-flight,指已启动但尚未完成执行的状态)状态的线程数量,进而导致性能下降。

这张图展示了 G80 芯片的流多处理器(SM)架构。顶部的指令缓存(Instruction Cache)和常量缓存(Constants Cache)用于快速获取指令与常量数据;MT Issue 负责多线程指令分发;RF(1024 个 32 位寄存器)提供大量临时存储。核心区域包含 8 个计算核心(Core)和 2 个特殊功能单元(SFU,处理超越函数等),底部 16 KiB 共享内存支持线程间数据共享。这种设计通过并行计算与分层存储,实现高效的 GPU 通用计算与图形渲染。其中,渲染输出单元(ROP)负责处理抗锯齿(Anti-Aliasing,一种消除图像边缘锯齿、提升画面平滑度的技术)
这张图展示了 G80 芯片的流多处理器(SM)架构。顶部的指令缓存(Instruction Cache)和常量缓存(Constants Cache)用于快速获取指令与常量数据;MT Issue 负责多线程指令分发;RF(1024 个 32 位寄存器)提供大量临时存储。核心区域包含 8 个计算核心(Core)和 2 个特殊功能单元(SFU,处理超越函数等),底部 16 KiB 共享内存支持线程间数据共享。这种设计通过并行计算与分层存储,实现高效的 GPU 通用计算与图形渲染。其中,渲染输出单元(ROP)负责处理抗锯齿(Anti-Aliasing,一种消除图像边缘锯齿、提升画面平滑度的技术)

Tesla 架构的旗舰芯片是基于 90 纳米制程的 G80,该芯片被用于 GeForce 8800 GTX 显卡。两个 SM 会与一个纹理单元(Texture Unit,负责处理纹理贴图,为 3D 物体表面添加细节纹理的硬件单元)和一级纹理缓存(Tex L1 Cache)捆绑在一起,构成一个“纹理处理器集群”(TPC,Texture Processor Cluster)。

  • G80 芯片包含 8 个 TPC,官方标称拥有 128 个核心,浮点运算性能可达 345.6 Gflops(每秒十亿次浮点运算)[3]。
  • 8800 GTX 显卡在当时极为畅销,获得了极高的评价,深受有能力购买的用户喜爱。它的性能如此强劲,以至于在发布 13 个月后,仍稳居市场最快 GPU 之列。
这张图展示了支持DirectX 10的GPU架构,通过Vtx(顶点)、Geo(几何)、Pxl(像素)三类线程分发单元,分别向8组计算单元分配任务。每组包含计算核心、纹理单元(TEX UNIT)和L1缓存;下方的ROP(光栅操作单元)、L2缓存和FB(帧缓存)负责最终像素的输出与存储,实现了顶点、几何、像素阶段的并行处理,适配新API的多阶段渲染需求。G80为8800 GTX提供动力。渲染输出单元(ROP)负责抗锯齿处理。
这张图展示了支持DirectX 10的GPU架构,通过Vtx(顶点)、Geo(几何)、Pxl(像素)三类线程分发单元,分别向8组计算单元分配任务。每组包含计算核心、纹理单元(TEX UNIT)和L1缓存;下方的ROP(光栅操作单元)、L2缓存和FB(帧缓存)负责最终像素的输出与存储,实现了顶点、几何、像素阶段的并行处理,适配新API的多阶段渲染需求。G80为8800 GTX提供动力。渲染输出单元(ROP)负责抗锯齿处理。

与 Tesla 架构一同推出的,还有 NVIDIA 的“统一计算设备架构编程语言”(CUDA C)——它是 C99 标准的超集。对于通用图形处理器(GPGPU,General-Purpose Graphics Processing Unit,指将 GPU 用于非图形渲染的通用计算任务)爱好者而言,这无疑是个好消息:他们终于有了替代方案,无需再通过 GLSL(OpenGL Shading Language,OpenGL 的着色器语言)着色器和纹理来“曲线利用”GPU 的计算能力。

尽管本节重点讨论了流多处理器(SM),但它只是 GPU 系统的“一半”。SM 需要获取存储在 GPU 内存中的指令和数据才能运行。

为避免运算停滞,GPU 并未像 CPU 那样,通过大量缓存和指令预测来“避免”内存延迟;相反,GPU 会“接纳”内存延迟——通过让内存总线饱和(即最大化内存数据传输速率),来满足数千个线程的输入/输出(I/O)需求。以 G80 芯片为例,它通过 6 条双向 DRAM(动态随机存取存储器)内存通道,实现了高内存吞吐量。

这张图对比了CPU和GPU的架构差异。左侧CPU有较大的控制单元(CONTROL)负责指令调度,少量算术逻辑单元(ALU)执行运算,还有大块缓存(CACHE)加速数据访问,适合串行复杂任务。右侧GPU则由大量绿色ALU组成,侧重并行计算,仅搭配少量控制和缓存单元,适合图形渲染、AI等大规模并行任务,通过数量优势实现高吞吐量。
这张图对比了CPU和GPU的架构差异。左侧CPU有较大的控制单元(CONTROL)负责指令调度,少量算术逻辑单元(ALU)执行运算,还有大块缓存(CACHE)加速数据访问,适合串行复杂任务。右侧GPU则由大量绿色ALU组成,侧重并行计算,仅搭配少量控制和缓存单元,适合图形渲染、AI等大规模并行任务,通过数量优势实现高吞吐量。

上图想要表达 GPU 通过饱和内存总线来【接纳】内存延迟,而 CPU 则通过大容量缓存和预测逻辑来隐藏内存延迟。

unsetunset三、Fermi 架构(2010):float64 支持与 C++ 特性的突破升级unsetunset

Tesla 架构是一次“冒险之举”,但最终被证明是极为成功的决策。它的成功程度远超预期,成为了未来 20 年 NVIDIA GPU 的架构基石。

“自那以后,我们确实对架构进行了多次重大改进(Fermi 架构是一次重大的系统架构变革,Maxwell 架构则是处理器设计层面的又一次重大调整),但我们在 G80 芯片中引入的基本架构框架,即便到如今(帕斯卡架构时代)依然核心地位稳固。

——乔纳·阿尔本(Jonah Alben)(摘自 extremetech.com 的采访)

2010 年,NVIDIA 发布了基于全新 Fermi 架构的 GF100 芯片。其内部结构在《Fermi 白皮书》[4]中有详细描述。

这张图展示NVIDIA GPU的流多处理器架构:顶部指令缓存配合双Warp调度器、分发单元实现线程调度;32768×32位寄存器文件提供海量临时存储。核心区含大量计算核心、LD/ST单元(加载存储)、SFU(特殊功能单元);下方互联网络连接纹理单元(TEX)、64KB共享内存/L1缓存、统一缓存,还有Polymorph Engine处理几何任务,通过并行化与分层存储实现高效通用计算与图形渲染。
这张图展示NVIDIA GPU的流多处理器架构:顶部指令缓存配合双Warp调度器、分发单元实现线程调度;32768×32位寄存器文件提供海量临时存储。核心区含大量计算核心、LD/ST单元(加载存储)、SFU(特殊功能单元);下方互联网络连接纹理单元(TEX)、64KB共享内存/L1缓存、统一缓存,还有Polymorph Engine处理几何任务,通过并行化与分层存储实现高效通用计算与图形渲染。

Fermi 架构的执行模型依然围绕“32 线程组成的线程束”展开,线程束会被调度到 SM 上执行。不过,得益于 40 纳米制程工艺的进步,NVIDIA 将 SM 的各项性能指标提升了 2 倍甚至 4 倍。如今,一个 SM 配备两组 16 核 CUDA 核心阵列,能够同时调度两个“半线程束”(half-warp,即 16 个线程)。由于每个核心每时钟周期可执行一条指令,一个 SM 每时钟周期可完成一个线程束的指令执行——性能达到了 Tesla 架构 SM 的 4 倍。

SFU 的数量也有所增加,但增幅不及 CUDA 核心(仅翻倍),由此可推断,这类特殊功能指令的使用率当时并不高。

Fermi 架构特点还有:

  • 对 64 位浮点(float64)运算提供了“半硬件支持”——通过两个 CUDA 核心协同工作来完成 64 位浮点运算
  • 此外,GF100 芯片的 32 位算术逻辑单元支持单时钟周期整数乘法(而 Tesla 架构的 ALU 为 24 位,无法实现这一性能);
  • 同时,其 32 位浮点(float32)流水线从 IEEE 754-1985 标准升级到了 IEEE 754-2008 标准
  • 支持融合乘加(FMA,Fused Multiply-Add,一种将乘法和加法合并为一步执行的运算方式,比传统的“先乘后加”更高效、精度更高)——相比 Tesla 架构中使用的 MAD(Multiply-Add,普通乘加运算),精度有显著提升。

从编程角度来看,Fermi 架构的“统一内存系统”(Unified Memory System,让 CPU 和 GPU 能够访问同一块内存区域,无需在两者之间频繁拷贝数据)使得 CUDA C 能够支持 C++的部分特性,例如类对象(object)和虚函数(virtual methods),但不支持异常处理(exceptions)。

由于纹理单元(Texture Unit)如今已整合到 SM 内部“纹理处理器集群”(TPC)的概念随之消失,取而代之的是“图形处理器集群”(GPC,Graphics Processor Cluster)——每个 GPC 包含 4 个 SM。

此外,SM 还新增了一个“多态引擎”(Polymorph Engine),其负责顶点提取、视口变换和曲面细分的硬件单元顶点提取即从内存中读取顶点数据;视口变换即将顶点坐标转换到屏幕坐标系;曲面细分即增加模型的多边形数量,提升画面细节。

Fermi 架构的旗舰显卡是 GeForce GTX 480,其搭载的 GF100 芯片官方标称拥有 512 个核心,浮点运算性能可达 1345 Gflops[5]。

这是NVIDIA Fermi架构GPU如GeForce GTX 480的GF100架构示意图,核心组件包括:GigaThread Engine:全局线程调度引擎,负责线程管理与分发;GPC(图形处理器集群):多个GPC构成GPU主体,每个GPC包含光栅化引擎(Raster Engine)和多个SM(流多处理器),SM是并行计算的核心单元;L2 Cache:二级缓存,用于数据高速存储与共享;特别需要注意的是图形处理器集群(GPC)提供支持的六个内存控制器(Memory Controller),负责与显存的数据交互,保障数据吞吐量。整体架构通过多模块并行设计,实现高效的图形渲染与通用计算能力。
这是NVIDIA Fermi架构GPU如GeForce GTX 480的GF100架构示意图,核心组件包括:GigaThread Engine:全局线程调度引擎,负责线程管理与分发;GPC(图形处理器集群):多个GPC构成GPU主体,每个GPC包含光栅化引擎(Raster Engine)和多个SM(流多处理器),SM是并行计算的核心单元;L2 Cache:二级缓存,用于数据高速存储与共享;特别需要注意的是图形处理器集群(GPC)提供支持的六个内存控制器(Memory Controller),负责与显存的数据交互,保障数据吞吐量。整体架构通过多模块并行设计,实现高效的图形渲染与通用计算能力。

unsetunset四、Kepler 架构(2012):能效比优化与 SMX 设计的性能飞跃unsetunset

2012 年,NVIDIA 发布了以天文学家开普勒(因“行星运动三大定律”闻名)命名的 Kepler 架构。与以往一样,《GK104 白皮书》[6]为我们揭示了该芯片的内部细节。

这是NVIDIA Kepler架构的流多处理器(SMX)示意图。顶部有调度器(Scheduler)和分发器(Disp),负责线程束的调度与指令分发;配备65,536×32位寄存器文件(RF)存储线程数据;大量绿色区域为计算核心;下方有纹理单元(TEX)处理纹理,64KB共享内存/一级缓存用于数据共享与高速访问;底部多态引擎(Polymorph Engine)负责顶点提取、视口变换等图形任务,整体架构支撑高效并行计算与图形处理
这是NVIDIA Kepler架构的流多处理器(SMX)示意图。顶部有调度器(Scheduler)和分发器(Disp),负责线程束的调度与指令分发;配备65,536×32位寄存器文件(RF)存储线程数据;大量绿色区域为计算核心;下方有纹理单元(TEX)处理纹理,64KB共享内存/一级缓存用于数据共享与高速访问;底部多态引擎(Polymorph Engine)负责顶点提取、视口变换等图形任务,整体架构支撑高效并行计算与图形处理

在 Kepler 架构中,NVIDIA 通过“降低时钟频率”以及“将核心时钟与显卡时钟统一”(此前两者频率比为 2:1),大幅提升了芯片的能效比(性能与功耗的比值)。

理论上,这些调整会导致性能下降。但得益于以下两点,NVIDIA 不仅避免了性能损失,还优化了架构设计:

  • 一是制程工艺缩减至 28 纳米(相比 Fermi 的 40 纳米,在相同芯片面积下可集成更多晶体管);
  • 二是移除了硬件调度器,改用软件调度。

下一代流多处理器”(SMX,Next Generation Streaming Multiprocessor)的性能极为强劲——几乎所有组件的数量都实现了 2 倍或 3 倍增长。

SMX 配备 4 个线程束调度器,每个调度器每时钟周期可处理一个完整的线程束(相比 Fermi 架构“每次处理半线程束”的设计有显著提升),整个 SMX 包含 196 个核心。每个调度器支持“双重分发”(double dispatch)——如果线程束中的第二条指令与当前正在执行的指令相互独立(即无数据依赖),则可同时分发该指令。不过,这种双重调度并非总能实现,因为每两列分发器会共享一列 32 核的执行单元。这种设计使得调度逻辑更为复杂(后续章节会进一步探讨),但 SMX 每时钟周期最多可执行 6 条线程束指令,性能达到了 Fermi 架构 SM 的 2 倍。

Kepler 架构的旗舰显卡是 NVIDIA GeForce GTX 680,其搭载的 GK104 芯片包含 8 个 SMX,官方标称拥有 1536 个核心,浮点运算性能可达 3250 Gflops[7]。此时芯片的内部结构已极为复杂,以至于示意图中的标注不得不省略(否则会过于杂乱)。

这是NVIDIA Kepler架构GeForce GTX 680 GPU的 GK104 架构示意图。顶部是Giga Thread Engine(全局线程调度引擎),负责线程管理;Raster Engine(光栅化引擎)处理图形光栅化;核心是多个GPC(图形处理器集群),每个GPC包含多个SMX(流多处理器) 执行并行计算;中间L2缓存用于数据高速共享;两侧Memory Controller(内存控制器)保障显存数据传输。该架构通过模块化并行设计,实现高效的图形渲染与通用计算能力。
这是NVIDIA Kepler架构GeForce GTX 680 GPU的 GK104 架构示意图。顶部是Giga Thread Engine(全局线程调度引擎),负责线程管理;Raster Engine(光栅化引擎)处理图形光栅化;核心是多个GPC(图形处理器集群),每个GPC包含多个SMX(流多处理器) 执行并行计算;中间L2缓存用于数据高速共享;两侧Memory Controller(内存控制器)保障显存数据传输。该架构通过模块化并行设计,实现高效的图形渲染与通用计算能力。

值得注意的是,经过彻底重新设计的内存子系统(运行频率高达 6GHz),使得内存控制器的数量从 6 个减少到 4 个,但仍能满足性能需求。

unsetunset五、Maxwell 架构(2014):核心对齐与极致能效的架构革新unsetunset

2014 年,NVIDIA 发布了其第十代 GPU 架构——Maxwell。

第一代 Maxwell 架构

《GM107 白皮书》[8]指出,第一代 Maxwell 架构的核心目标是“极致能效比与卓越的每瓦性能”(每瓦性能指单位功耗所能提供的计算性能)。其面向的消费级市场主要是“受功耗限制的设备”,如笔记本电脑和小型台式机(SFF PC,Small Form Factor PC,体积小巧的台式计算机)。

Maxwell 架构的一个重大决策是:放弃 Kepler 架构中“SMX 包含非 2 的幂次个 CUDA 核心(196 个)且部分核心共享”的设计,回归到“按半线程束(16 个线程)调度”的模式。这是该系列架构中首次出现“SM 核心数量少于前代”的情况——Maxwell 架构的 SM 仅包含 128 个核心。

将核心数量“与线程束大小(32 个线程)对齐”(128 是 32 的整数倍),优化了芯片的分区设计,从而节省了芯片面积并降低了功耗。

这是NVIDIA某架构流多处理器示意图,特点是配备多组Warp Scheduler(线程束调度器)+ Dispatch Unit(分发单元),实现高效线程调度;拥有16,384×32位寄存器文件(RF),保障大量线程数据存储;集成L1 Cache加速数据访问;底部Polymorph Engine(多态引擎)负责顶点提取等图形任务。其创新在于将并行计算调度与图形处理单元深度融合,为GPU在通用计算与图形渲染的协同高效运行提供了架构支撑,是NVIDIA在处理器调度与功能集成上的重要设计。
这是NVIDIA某架构流多处理器示意图,特点是配备多组Warp Scheduler(线程束调度器)+ Dispatch Unit(分发单元),实现高效线程调度;拥有16,384×32位寄存器文件(RF),保障大量线程数据存储;集成L1 Cache加速数据访问;底部Polymorph Engine(多态引擎)负责顶点提取等图形任务。其创新在于将并行计算调度与图形处理单元深度融合,为GPU在通用计算与图形渲染的协同高效运行提供了架构支撑,是NVIDIA在处理器调度与功能集成上的重要设计。

2014 年的一个 SMM 所含的核心数(128 个),就相当于 2006 年一整块 GTX 8800 显卡的核心数。

第二代 Maxwell 架构

第二代 Maxwell 架构(其细节在《GM200 白皮书》[9]中有描述)在保持第一代能效比优势的同时,显著提升了性能。

由于制程工艺仍停留在 28 纳米(未进一步缩减),NVIDIA 的工程师无法依靠“单纯的晶体管微型化”来提升性能。但“每个 SMM 核心数量减少”使得 SMM 的体积更小,这意味着在同一块芯片上可以集成更多的 SMM。第二代 Maxwell 架构的芯片集成的 SMM 数量是 Kepler 架构的 2 倍,而芯片面积仅增加了 25%。

此外,Maxwell 架构的改进还包括:

  • 简化了调度逻辑(减少了调度决策的冗余计算),降低了计算延迟,从而提升了线程束的占用率(线程束占用率指 SM 中正在运行的线程束数量与最大可支持线程束数量的比值,越高表示 SM 利用率越高);
  • 同时,内存时钟频率也提升了 15%。

观察 Maxwell 架构 GM200 芯片的框图,已经会让人感到“眼花缭乱”,但作为“GPU 爱好者”,我们仍会努力去理解它。第二代 Maxwell 架构的旗舰显卡是 NVIDIA GeForce GTX 980 Ti,其搭载的 GM200 芯片包含 24 个 SMM,官方标称拥有 3072 个核心,浮点运算性能可达 6060 Gflops[10]。

这是NVIDIA Maxwell架构 GeForce GTX 980 Ti GPU 的核心 GM200 芯片架构示意图,采用模块化GPC集群设计,每个GPC集成SMM(流多微处理器)与光栅引擎,通过Giga Thread Engine实现海量线程的高效调度。L2缓存与多组内存控制器构建低延迟数据通路,既强化图形渲染的并行算力,又通过模块化设计提升通用计算灵活性,是支撑GPU在游戏、AI推理等场景实现高性能、高吞吐的硬件基石,体现了其从“图形专用”到“通用算力平台”的架构演进逻辑。
这是NVIDIA Maxwell架构 GeForce GTX 980 Ti GPU 的核心 GM200 芯片架构示意图,采用模块化GPC集群设计,每个GPC集成SMM(流多微处理器)与光栅引擎,通过Giga Thread Engine实现海量线程的高效调度。L2缓存与多组内存控制器构建低延迟数据通路,既强化图形渲染的并行算力,又通过模块化设计提升通用计算灵活性,是支撑GPU在游戏、AI推理等场景实现高性能、高吞吐的硬件基石,体现了其从“图形专用”到“通用算力平台”的架构演进逻辑。

unsetunset六、Pascal 架构(2016):16nm 工艺与 GDDR5X 内存的协同提升unsetunset

2016 年,NVIDIA 推出了 Pascal 架构。《GP104 白皮书》[11]给人的感觉是“似曾相识”——因为 Pascal 架构的 SM 与 Maxwell 架构的 SMM 在结构上完全一致

尽管 SM 本身没有变化,但 16 纳米制程工艺的应用带来了两大提升:一是芯片上可集成更多的 SM;二是浮点运算性能再次实现翻倍。

Pascal 架构的另一大重大改进在于内存系统——它基于全新的 GDDR5X 显存(GDDR5X 是 GDDR5 显存的升级版,拥有更高的带宽和速度)构建。

  • 内存系统配备 8 个内存控制器,数据传输速率可达 10 Gbps(千兆位每秒);
  • 256 位的内存接口(内存接口宽度决定了单位时间内可传输的数据量,宽度越大,带宽越高)使得内存带宽提升了 43%,有效减少了线程束的“饥饿感”(即线程束因无法及时获取内存数据而等待的情况)。

Pascal 架构的旗舰显卡是 NVIDIA GeForce GTX 1080 Ti,其搭载的 GP102 芯片包含 28 个 TSM(此处应为笔误,实际为 SM,Pascal 架构的流多处理器),官方标称拥有 3584 个核心,浮点运算性能可达 11340 Gflops[12]。

这是NVIDIA Pascal架构的GeForce GTX 1080 GPU: GP104 核心示意图,采用模块化集群设计,由多个GPC(图形处理簇)组成,每个GPC包含SM(流多处理器)和光栅引擎,通过Giga Thread Engine调度海量线程。L2缓存与多组内存控制器构建高效数据通路,支撑其16nm工艺下高性能并行计算能力,既实现游戏场景的实时渲染,又为深度学习、科学计算提供算力,是从图形向通用计算转型的架构典范
这是NVIDIA Pascal架构的GeForce GTX 1080 GPU: GP104 核心示意图,采用模块化集群设计,由多个GPC(图形处理簇)组成,每个GPC包含SM(流多处理器)和光栅引擎,通过Giga Thread Engine调度海量线程。L2缓存与多组内存控制器构建高效数据通路,支撑其16nm工艺下高性能并行计算能力,既实现游戏场景的实时渲染,又为深度学习、科学计算提供算力,是从图形向通用计算转型的架构典范

unsetunset七、Turing 架构(2018):张量核心、光追核心与独立线程调度的创新unsetunset

2018 年,NVIDIA 发布了 Turing 架构,并称其为“十多年来最重大的架构飞跃”[13]。

Turing 架构的“图灵 SM”:

  • 不仅新增了专门用于 AI 计算的“张量核心”(Tensor Cores,用于加速深度学习中的张量运算,如矩阵乘法)
  • 还加入了专门用于光线追踪的“光线追踪核心”(Raytracing Cores,用于加速光线追踪计算,如光线与物体的相交检测)

这种“功能分区”的设计,让人联想到 Tesla 架构之前的“分层架构”(即按渲染阶段划分模块),这再次印证了“历史总是在重演”。

这是NVIDIA Turing架构流多处理器(SM)的架构示意图。顶部是线程束调度与分发单元,负责线程调度;下方是寄存器文件(16384×32位)存储线程数据。核心区域包含32位整数核心(INT32)、32位浮点核心(FP32)、张量核心(Tensor Cores,加速AI计算)、加载存储单元(LD/ST)、特殊功能单元(SFU)。还配备96 KiB一级缓存/共享内存、纹理单元(Texture Unit)处理纹理,最下方是光线追踪核心(Raytracing Cores)加速光线追踪,实现了并行计算、AI、光线追踪的多任务支持
这是NVIDIA Turing架构流多处理器(SM)的架构示意图。顶部是线程束调度与分发单元,负责线程调度;下方是寄存器文件(16384×32位)存储线程数据。核心区域包含32位整数核心(INT32)、32位浮点核心(FP32)、张量核心(Tensor Cores,加速AI计算)、加载存储单元(LD/ST)、特殊功能单元(SFU)。还配备96 KiB一级缓存/共享内存、纹理单元(Texture Unit)处理纹理,最下方是光线追踪核心(Raytracing Cores)加速光线追踪,实现了并行计算、AI、光线追踪的多任务支持

除了新增核心,Turing 架构还带来了三大重要特性:

  • 第一,CUDA 核心实现了“超标量”(Superscalar,指处理器可在一个时钟周期内执行多条独立指令)设计,能够并行执行整数指令和浮点指令。如果你经历过 1996 年,这可能会让你联想到英特尔(Intel)当时的“突破性”Pentium 架构(Pentium 架构首次在 x86 处理器中实现了超标量设计)。

  • 第二,全新的 GDDR6X 显存子系统(GDDR6X 是 GDDR6 显存的升级版,带宽更高)配备 16 个内存控制器,数据传输速率可达 14 Gbps。

  • 第三,线程束中的线程不再共享同一个指令指针(IP)。得益于 Volta 架构中首次引入的“独立线程调度”(Independent Thread Scheduling,每个线程拥有独立的指令指针,可独立执行不同的指令路径),SM 能够灵活地调度线程束中的单个线程,无需再迫使线程尽快“趋同”(即回到同一条指令路径)。

Turing 架构的旗舰显卡是 NVIDIA GeForce RTX 2080 Ti(原文误写为 GTX 2080 Ti,实际为 RTX 系列,因 RTX 系列首次支持光线追踪),其搭载的 TU102 芯片包含 68 个 TSM(此处应为 SM,Turing 架构的流多处理器),官方标称拥有 4352 个核心,浮点运算性能可达 13.45 Tflops(每秒万亿次浮点运算,1 Tflops = 1000 Gflops)[14]。

Turing 流多处理器(SM)架构图,包含 4 个 Warp 调度分发单元,每个单元配备 16,384×32 位寄存器文件。计算单元涵盖 INT32(整数)、FP32(浮点)、TENSOR CORES(张量核心),还设有 LD/ST(加载存储)、SFU(特殊功能单元)。下方有 96KB L1 数据缓存 / 共享内存、纹理单元(Tex),以及 RT CORE(光线追踪核心)。各组件协同实现多线程调度、多样计算与存储管理,为显卡的并行计算、AI 加速及光线追踪等功能提供支撑。
Turing 流多处理器(SM)架构图,包含 4 个 Warp 调度分发单元,每个单元配备 16,384×32 位寄存器文件。计算单元涵盖 INT32(整数)、FP32(浮点)、TENSOR CORES(张量核心),还设有 LD/ST(加载存储)、SFU(特殊功能单元)。下方有 96KB L1 数据缓存 / 共享内存、纹理单元(Tex),以及 RT CORE(光线追踪核心)。各组件协同实现多线程调度、多样计算与存储管理,为显卡的并行计算、AI 加速及光线追踪等功能提供支撑。

原文未提供该芯片的框图,因为它看起来会像一个“模糊的绿色斑点”(内部结构过于复杂,标注后会杂乱不清)。

unsetunset未来展望:Ampere 架构与 7nm 工艺的潜在突破unsetunset

下一代 GPU 架构代号为“Ampere”(安培架构,以物理学家安培命名),传闻将于 2020 年晚些时候发布。

由于英特尔(Intel)已通过其 Ice Lake 处理器证明,7 纳米制程工艺(7nm Process,相比 12 纳米制程,可在更小的芯片面积上集成更多晶体管)仍有发展空间,因此 NVIDIA 无疑会利用这一制程工艺,进一步缩小 SM 的体积,并再次实现性能翻倍。

这张图表展示了NVIDIA不同架构显卡的浮点运算性能(单位:Tflops/s,每秒万亿次浮点运算),数据来源:techpowerup.com)。横轴是显卡型号,涵盖TURING、PASCAL、MAXWELL、KEPLER、FERMI、TESLA等架构;纵轴是性能数值。可以看到,越新的架构(如TURING)性能越强,TITAN RTX、RTX 2080 Ti等型号领先,数值超15;而早期架构(如FERMI、TESLA)性能较低。这直观体现了NVIDIA显卡随架构迭代,在并行计算能力上的持续提升。
这张图表展示了NVIDIA不同架构显卡的浮点运算性能(单位:Tflops/s,每秒万亿次浮点运算),数据来源:techpowerup.com)。横轴是显卡型号,涵盖TURING、PASCAL、MAXWELL、KEPLER、FERMI、TESLA等架构;纵轴是性能数值。可以看到,越新的架构(如TURING)性能越强,TITAN RTX、RTX 2080 Ti等型号领先,数值超15;而早期架构(如FERMI、TESLA)性能较低。这直观体现了NVIDIA显卡随架构迭代,在并行计算能力上的持续提升。

未来值得关注的是:如今 NVIDIA 的芯片已包含三种用途不同的核心(CUDA 核心、张量核心、光线追踪核心),其后续发展方向会是怎样?我们是否会看到“完全由张量核心构成”或“完全由光线追踪核心构成”的芯片?

我对此充满好奇,期待答案揭晓。

unsetunset参考文献unsetunset

  1. Revisiting the Business Card Raytracer https://fabiensanglard.net/revisiting_the_businesscard_raytracer/index.html
  2. Fermi: The First Complete GPU Computing Architecture https://fabiensanglard.net/cuda/fermi-the_first_complete_gpu_architecture.pdf
  3. NVIDIA GeForce 8800 GTX (techpowerup.com) https://www.techpowerup.com/gpu-specs/geforce-8800-gtx.c187
  4. Fermi (GF100) whitepaper https://fabiensanglard.net/cuda/Fermi_Compute_Architecture_Whitepaper.pdf
  5. NVIDIA GeForce GTX 480 https://www.techpowerup.com/gpu-specs/geforce-gtx-480.c268
  6. Kepler (GK104) whitepaper https://fabiensanglard.net/cuda/nvidia-gtx-680.pdf
  7. NVIDIA GeForce GTX 680 https://www.techpowerup.com/gpu-specs/geforce-gtx-680.c342
  8. Maxwell Gen1 (GM107) whitepaper https://fabiensanglard.net/cuda/GeForce-GTX-750-Ti-Whitepaper.pdf
  9. Maxwell Gen2 (GM200) whitepaper https://fabiensanglard.net/cuda/GeForce_GTX_980_Whitepaper.pdf
  10. NVIDIA GeForce GTX 980 Ti https://www.techpowerup.com/gpu-specs/geforce-gtx-980-ti.c2724
  11. Pascal (GP102) whitepaper https://fabiensanglard.net/cuda/GeForce_GTX_1080_Whitepaper.pdf
  12. NVIDIA GeForce GTX 1080 Ti https://www.techpowerup.com/gpu-specs/geforce-gtx-1080-ti.c2877
  13. Turing (TU102) whitepaper https://fabiensanglard.net/cuda/Turing-Architecture-Whitepaper.pdf
  14. NVIDIA GeForce GTX 2080 Ti https://www.techpowerup.com/gpu-specs/geforce-rtx-2080-ti.c3305
更多推荐
    交流加群请在 NeuralTalk 公众号后台回复:加群

    【声明】内容源于网络
    0
    0
    NeuralTalk
    关注深度学习框架开发、模型压缩、低比特量化、移动端推理加速性能优化、工程化部署,v: zhushi202409
    内容 517
    粉丝 0
    NeuralTalk 关注深度学习框架开发、模型压缩、低比特量化、移动端推理加速性能优化、工程化部署,v: zhushi202409
    总阅读794
    粉丝0
    内容517