GPU架构学习

摘要

图形处理单元(Graphics Processing Unit,GPU)自诞生以来,已从专注于图形渲染的专用硬件演变为支撑现代计算科学、人工智能、科学仿真乃至区块链等多元领域的通用并行计算引擎。其核心架构设计理念------以大规模并行性换取高吞吐量------与传统中央处理单元(CPU)的低延迟串行执行路线形成了鲜明对比。本文将系统、深入地剖析GPU的架构演进历程、核心组成部件、内存层次结构、执行模型、调度机制以及现代GPU在AI与高性能计算(HPC)领域的前沿扩展,旨在为读者提供一份兼具理论深度与工程实践价值的综合性技术参考。


一、引言:从图形加速器到通用计算引擎

1.1 GPU的历史起源

GPU的概念可追溯至20世纪80年代的图形加速卡时代。彼时,图形显示任务(如多边形光栅化、纹理填充)由专用固定功能硬件完成,处理逻辑高度定制化,缺乏通用编程能力。1999年,NVIDIA发布GeForce 256,首次将变换与光照(T&L)计算卸载至硬件,并将该芯片命名为"GPU",标志着这一概念的正式确立。

进入21世纪初,随着DirectX 8和OpenGL 1.4可编程着色器标准的推出,GPU开始获得有限的可编程能力。开发者意识到,若将着色器单元视作通用浮点计算单元,便可借助图形API实现矩阵运算、物理仿真等非图形任务。这一思路催生了早期的通用GPU计算(GPGPU)实践。

2007年,NVIDIA发布CUDA(Compute Unified Device Architecture)平台,彻底打破了GPU编程必须借道图形API的壁垒,使GPU正式迈入通用并行计算时代。此后,AMD的ROCm/HIP平台、Khronos的OpenCL标准相继出现,GPU计算生态系统逐步走向成熟与多元化。

1.2 GPU与CPU的本质差异

理解GPU架构,首先需要厘清其与CPU在设计哲学上的根本分歧。

CPU(中央处理单元) 的设计目标是以最低延迟执行复杂的控制流程序。为此,CPU配备了深度流水线、乱序执行引擎、分支预测器、大容量多级缓存(L1/L2/L3)以及少数但极为强大的执行核心(通常为4至128个)。CPU擅长处理数据依赖复杂、分支密集、串行性强的任务。

GPU(图形处理单元) 的设计目标则是以最高吞吐量处理大规模数据并行任务。GPU将大量芯片面积用于计算单元而非缓存和控制逻辑,牺牲单线程性能以换取并发执行数千乃至数万个轻量级线程的能力。GPU的内存系统针对高带宽而非低延迟优化,通过多线程交错执行来隐藏内存访问延迟。

用一个形象的比喻来说:CPU好比几位经验丰富、能力超群的专家,可以独立解决各类复杂问题;GPU则好比数以千计的流水线工人,每人只做简单重复的工序,但整体产出惊人。


二、GPU架构的核心层次结构

现代GPU的架构是一个精心设计的分层结构,从最顶层的整芯片(Die)到最底层的执行单元,每一层都有其特定的职能划分与资源配置逻辑。以下以NVIDIA的Ampere(A100)和Hopper(H100)架构为主要参考,辅以AMD RDNA/CDNA架构进行比较说明。

2.1 流式多处理器(Streaming Multiprocessor,SM)

SM是NVIDIA GPU架构的核心计算单元,是理解GPU并行架构的关键抽象层。AMD的对应概念称为计算单元(Compute Unit,CU)或工作组处理器(WGP)。

一个完整的GPU芯片由数十乃至上百个SM构成。以NVIDIA A100为例,其包含108个SM;H100 SXM5版本更拥有132个SM。每个SM都是相对独立的计算子系统,具备自己的寄存器文件、共享内存/L1缓存、执行管线和调度器。

SM的内部构成(以Ampere架构为例)

  • CUDA Core(FP32单精度核心):每个SM包含128个FP32 CUDA Core,分为四个处理块(Processing Block),每个处理块32个核心。FP32核心执行标准浮点加法与乘法运算。
  • FP64单元:每个SM包含64个FP64双精度单元,专用于科学计算场景。
  • INT32单元:整数运算单元,与FP32单元可以并发执行,大幅提升混合计算效率。
  • Tensor Core(张量核心):这是NVIDIA从Volta架构(2017年)引入的专用矩阵运算加速单元。每个SM包含4个Tensor Core(第三代)。Tensor Core能够在单个时钟周期内完成4×4的混合精度矩阵乘累加(MMA)操作,是深度学习训练与推理性能的核心驱动力。Ampere架构的Tensor Core支持TF32、FP16、BF16、INT8、INT4、FP64等多种精度格式,Hopper架构进一步引入FP8精度支持。
  • 特殊功能单元(SFU):每个SM包含16个SFU,用于执行超越函数(sin、cos、exp、log、rcp、sqrt等)的近似计算,延迟约4个时钟周期。
  • 加载/存储单元(LSU):每个SM包含32个LSU,负责执行内存加载与存储操作,是连接执行单元与内存系统的桥梁。
  • Warp调度器:每个SM包含4个Warp调度器,每个调度器每时钟周期可发射一条指令给其负责的执行单元。这意味着每个SM每周期可同时发射4条指令,保证了极高的指令吞吐量。
  • 指令调度缓冲区(Dispatch Unit):与Warp调度器配合,负责将指令分发到对应的执行单元。
  • 寄存器文件(Register File):每个SM拥有256KB的寄存器文件,是整个GPU存储层次中延迟最低的存储资源。所有活跃线程的工作状态均保存于此。
  • 共享内存/L1缓存(Shared Memory / L1 Cache):每个SM配备128KB的片上SRAM,可通过软件配置在共享内存与L1缓存之间灵活分配(如96KB共享内存 + 32KB L1,或64KB + 64KB等多种组合)。共享内存是程序员可直接控制的片上存储器,对于需要线程间数据共享的算法(如矩阵分块乘法、归约运算)至关重要。

2.2 线程束(Warp)与SIMT执行模型

GPU的执行模型基于SIMT(Single Instruction, Multiple Threads,单指令多线程),这是NVIDIA对传统SIMD(单指令多数据)模型的扩展与演进。

在CUDA编程模型中,程序员以线程(Thread) 为粒度编写内核(Kernel)程序。线程被组织为线程块(Thread Block / CTA,Cooperative Thread Array) ,多个线程块构成线程网格(Grid) 。在硬件层面,SM以Warp(线程束,包含32个线程)为基本调度单位执行指令。

当一个线程块被调度到某个SM上执行时,SM将其内部线程按顺序分组为若干个Warp。同一Warp内的32个线程在同一时钟周期内执行相同的指令,但各自操作不同的数据元素。这一机制使得指令获取与译码的硬件开销被32个线程共同分摊,极大提升了面积效率。

分支分歧(Branch Divergence) 是SIMT模型的核心挑战。当同一Warp内的线程在条件分支处产生不同的执行路径时(部分线程走if分支,部分走else分支),GPU必须串行执行两个分支路径,对不活跃的线程进行掩码(Mask)屏蔽,导致执行效率下降至理论峰值的1/n(n为分歧路径数)。这一特性要求程序员在优化GPU代码时尽量避免Warp内的控制流分歧。

Volta及更新架构引入了独立线程调度(Independent Thread Scheduling) 机制,为每个线程维护独立的程序计数器(PC)和调用栈,使Warp内线程可以在分歧情况下更加灵活地调度执行,同时引入了同步点收敛(Convergence) 机制,在语义上更精确地定义了线程同步行为,为细粒度并发算法(如Warp级别的协作操作)提供了更强大的编程模型支撑。

2.3 线程块集群(Thread Block Cluster)与分布式共享内存

NVIDIA Hopper架构引入了一个全新的执行层级------线程块集群(Thread Block Cluster),填补了线程块与线程网格之间的空白。

在Hopper架构中,一个集群由最多16个线程块组成,这些线程块被调度到同一个GPU处理集群(GPC)内邻近的SM上执行。集群内的线程块可以通过分布式共享内存(Distributed Shared Memory,DSMEM) 机制直接访问彼此SM上的共享内存,无需经过全局内存的中转,从而实现了比全局内存通信效率高得多的跨SM数据共享。

这一特性对于需要大范围数据交换的并行算法(如大型矩阵分块操作、All-Reduce通信模式的片上优化版本)具有重要意义,是Hopper架构在系统级并行编程模型上的重大创新。


三、GPU内存层次结构

内存系统是GPU性能的关键瓶颈所在,也是架构设计中最为复杂的子系统之一。GPU的内存层次结构从延迟最低、容量最小的寄存器文件,到延迟最高、容量最大的主机(CPU)内存,构成了一个多达六七层的存储金字塔。

3.1 寄存器文件(Register File)

寄存器是GPU访问延迟最低(约1个时钟周期)的存储资源。每个SM拥有64K个32位寄存器(256KB),由所有活跃Warp的线程共享。寄存器文件的容量直接决定了SM上可以同时驻留的线程数量(即占用率,Occupancy)。

若每个线程使用的寄存器越多,SM能同时维持活跃的线程束(Warp)数量就越少。高寄存器使用率(Register Pressure)是导致GPU占用率下降的常见原因之一,需要在优化时谨慎权衡。

寄存器溢出(Register Spilling) 是指当线程需要的寄存器数量超过硬件限制时,编译器将部分寄存器内容溢出至L2缓存或全局内存,导致显著的访问延迟增加,是性能优化的重要关注点。

3.2 共享内存(Shared Memory)

共享内存(在CUDA中通过__shared__关键字声明)是程序员可显式控制的片上SRAM,位于SM内部,仅对同一线程块内的所有线程可见。其访问延迟约为20-30个时钟周期(当不存在Bank冲突时接近L1缓存速度),带宽极高(约32TB/s,对于A100的单个SM而言)。

Bank冲突(Bank Conflict) 是共享内存的典型性能陷阱。共享内存被划分为32个等宽的Bank,同一时钟周期内,若同一Warp内的多个线程访问同一Bank中的不同地址,则会产生Bank冲突,导致访问被串行化,效率下降。通过适当的数据填充(Padding)或访问模式调整,通常可以消除Bank冲突。

共享内存在矩阵乘法、卷积运算、归约(Reduction)、前缀扫描(Prefix Scan)等经典并行算法中扮演着至关重要的角色。以矩阵乘法为例,分块矩阵乘法算法将全局内存中的矩阵子块加载到共享内存后进行计算,可将全局内存访问次数减少至原来的1/TILE_SIZE,大幅提升计算强度(Arithmetic Intensity),实现接近理论峰值的硬件利用率。

3.3 L1/纹理缓存

L1缓存与共享内存共用同一片SRAM(在Ampere架构中为128KB/SM),作为全局内存访问的透明硬件缓存,程序员无需显式管理。L1缓存采用128字节的缓存行(Cache Line),对具有空间局部性的访问模式(连续内存访问,即合并访问,Coalesced Access)极为友好。

纹理缓存(Texture Cache)是专为图形纹理采样设计的只读缓存,支持二维空间局部性优化,并内置了多种滤波、寻址模式的硬件加速。在计算场景中,通过__ldg()内置函数可以利用只读数据路径访问全局内存,绕过L1缓存直接走纹理缓存,有时可获得更好的缓存效果。

3.4 L2缓存

L2缓存是所有SM共享的末级片上缓存(LLC),位于SM阵列与显存控制器之间,容量通常在数十MB量级(A100拥有40MB L2缓存,H100增至50MB)。L2缓存的访问延迟约为200-300个时钟周期,但其超高带宽(约12TB/s for A100)使其仍远优于DRAM访问。

现代GPU的L2缓存支持分区(Partitioned) 设计,不同物理区域的L2与不同内存控制器相邻,实现了高度并行的访问路径。Ampere架构引入了L2持久缓存(L2 Persistent Cache / Residency Control) 机制,允许程序员将频繁访问的数据集"钉"在L2缓存中,防止被其他数据驱逐,对于推理场景(模型权重频繁复用)具有显著的性能提升效果。

3.5 显存(GDDR / HBM)

显存是GPU的主内存,所有的模型权重、激活值、输入输出缓冲区均存储于此。显存的带宽与容量是制约GPU整体性能的关键指标之一。

GDDR(Graphics Double Data Rate) 是传统图形卡采用的显存类型,以GDDR6/GDDR6X为代表。RTX 4090配备24GB GDDR6X显存,内存带宽约为1008GB/s。GDDR内存与GPU通过PCB上的宽总线(通常256位至384位)直连,成本相对较低,适合消费级产品。

HBM(High Bandwidth Memory,高带宽内存) 是面向高性能计算和AI训练的高端显存技术。HBM采用3D堆叠封装(将多层DRAM die垂直堆叠并通过硅通孔TSV互连),并通过硅中介层(Silicon Interposer)与GPU芯片实现极近距离的宽总线连接(通常1024位以上)。HBM2e(A100)提供约2TB/s的内存带宽,HBM3(H100 SXM5)更高达3.35TB/s,是GDDR6X的3倍有余。HBM3e(H200)进一步突破至4.8TB/s。

高带宽显存对于内存带宽受限(Memory-Bound) 的工作负载(如大型语言模型推理中的注意力机制计算、稀疏矩阵运算)至关重要,是数据中心GPU与消费级GPU之间最显著的性能鸿沟之一。

3.6 统一内存(Unified Memory)与NVLink/NVSwitch

随着GPU在异构计算系统中的角色日益重要,CPU与GPU之间的内存访问模式变得越来越复杂。NVIDIA的统一内存(Unified Memory) 技术(CUDA 6.0引入,Pascal架构后大幅增强)提供了一个统一的内存地址空间,使CPU和GPU可以透明地共享数据,由运行时系统和硬件页表管理机制负责自动迁移数据。统一内存简化了编程模型,但对于性能敏感的应用,显式内存管理仍是首选。

NVLink 是NVIDIA开发的高速GPU互连总线,用于替代PCIe实现GPU间(GPU-GPU)或CPU-GPU之间的高带宽、低延迟直连。NVLink 4.0(Hopper架构)每对GPU之间提供900GB/s的双向总线带宽,远超PCIe 5.0的约128GB/s双向带宽。

NVSwitch 是配合NVLink使用的高带宽交换芯片,可将多个GPU(通常8个)通过NVSwitch实现全互连(All-to-All),每个GPU均可以接近NVLink峰值带宽与任意其他GPU通信,是构建DGX服务器等高密度GPU集群的核心互连基础设施。在H100 DGX H100系统中,8个GPU通过4个NVSwitch芯片互连,系统总双向互连带宽高达7.2TB/s。


四、GPU的执行流水线与调度机制

4.1 指令流水线

GPU的指令执行遵循标准的流水线架构,主要阶段包括:

  1. 指令获取(Instruction Fetch,IF):从指令缓存中获取当前Warp的下一条指令。
  2. 指令译码(Instruction Decode,ID):对指令进行解码,识别操作类型、源操作数和目标操作数。
  3. 操作数收集(Operand Collection):从寄存器文件读取源操作数。若存在数据相关(RAW Hazard),需等待前驱指令完成写回。
  4. 指令发射(Issue):将指令分发至对应的执行单元(FP32 Core、Tensor Core、SFU、LSU等)。
  5. 执行(Execute):在对应的功能单元中完成计算。不同类型的指令具有不同的执行延迟(如FP32加法通常4周期,Tensor Core MMA约16周期,全局内存加载可达数百周期)。
  6. 写回(Writeback):将执行结果写回寄存器文件。

GPU通过乱序发射(Out-of-Order Issue)Warp交错(Warp Interleaving) 来隐藏长延迟操作的影响。当某个Warp正在等待内存访问结果时,调度器可以立即切换到另一个已就绪的Warp发射指令,实现执行单元的持续占用,这与CPU通过深度乱序执行缓冲区来隐藏延迟的方式截然不同。

4.2 Warp调度策略

每个SM上的Warp调度器负责从驻留的活跃Warp中选择就绪的Warp进行指令发射。一个Warp处于"就绪"状态的条件是:其所有操作数均已可用(无数据相关等待),且所需的执行单元当前空闲。

常见的Warp调度策略包括:

  • 循环调度(Round Robin):按轮转顺序依次调度各Warp,简单公平。
  • 最近最少使用(LRU):优先调度最长时间未被调度的Warp,旨在最大化延迟隐藏效果。
  • 贪婪调度(GTO,Greedy Then Oldest):优先持续执行同一Warp直到其阻塞,然后切换到等待时间最长的就绪Warp,有助于提高缓存局部性,减少因Warp切换导致的缓存抖动。
  • 两级调度(Two-Level Scheduling):将活跃Warp分为"获取指令集"(Fetch Set)和"待命指令集"(Pending Set),优先从获取集中调度,周期性地从待命集补充,在延迟隐藏与缓存效率之间取得平衡。

现代GPU(如Ampere及之后架构)的Warp调度器是高度专有的复杂设计,具体实现细节通常不对外公开,但其设计目标始终是在保持高执行单元利用率的同时,尽量减少不必要的缓存失效与内存带宽浪费。

4.3 占用率(Occupancy)与性能调优

占用率(Occupancy) 定义为SM上实际活跃的Warp数量与SM最大可支持的Warp数量之比,是衡量GPU利用率的重要指标之一。

SM上可驻留的Warp数量受以下三类资源的限制:

  1. 线程数量限制:每个SM最多支持1536个线程(即48个Warp),这由硬件固定。
  2. 寄存器文件限制:所有活跃线程使用的寄存器总量不能超过SM的寄存器文件容量(64K个32位寄存器)。若每个线程使用32个寄存器,则最多可驻留2K个线程(64个Warp);若每线程使用64个寄存器,则仅能驻留1K个线程(32个Warp),占用率下降至67%。
  3. 共享内存限制:所有活跃线程块消耗的共享内存总量不能超过SM的共享内存容量。若每个线程块使用的共享内存过多,则可同时驻留的线程块数量减少,导致活跃Warp数量不足。

值得注意的是,高占用率并非总是能带来最佳性能。对于计算密集型(Compute-Bound) 内核,只要有足够的Warp来隐藏算术流水线延迟(通常20-30个活跃Warp即可),进一步提高占用率的收益往往边际递减。而对于内存带宽受限(Memory-Bound) 内核,高占用率通常更为关键,因为需要大量并发内存请求来充分利用内存系统的带宽能力。

NVIDIA提供的Nsight ComputeNsight Systems 是专业的GPU性能分析工具,可精确测量SM占用率、内存访问模式、Warp效率、Tensor Core利用率等关键性能指标,是GPU性能调优的必备工具链。


五、现代GPU的专用加速单元

5.1 Tensor Core:矩阵计算的革命

Tensor Core 是NVIDIA自Volta架构(2017年)引入的专用矩阵运算加速器,也是过去七年间深度学习训练性能呈指数级增长的最主要硬件驱动力。

Tensor Core的基本操作单元是混合精度矩阵乘累加(Matrix Multiply-Accumulate,MMA): $$D = A \times B + C$$

其中A、B为低精度矩阵(FP16/BF16/TF32/INT8等),C、D为高精度累加矩阵(FP32/FP16)。

各代Tensor Core的演进如下:

  • 第一代(Volta,V100):支持FP16精度,每个SM每周期可完成64次FP16 MMA操作,峰值性能125 TFLOPS(FP16)。
  • 第二代(Turing,T4):新增INT8和INT4精度支持,面向推理优化。
  • 第三代(Ampere,A100):引入BF16、TF32精度,并支持稀疏矩阵(Sparse Tensor Core)加速。TF32精度下峰值312 TFLOPS,启用稀疏加速后可达624 TFLOPS。BF16精度更高达312/624 TFLOPS(稠密/稀疏)。FP64 Tensor Core峰值19.5 TFLOPS(稠密)。
  • 第四代(Hopper,H100) :引入FP8精度(E4M3和E5M2两种格式),峰值性能大幅提升至FP8精度下3958 TFLOPS(稀疏)。同时引入Transformer Engine,能够在FP8与FP16/BF16之间进行自动量化与反量化,专门针对Transformer架构中的自注意力机制和前馈网络进行端到端优化。

稀疏Tensor Core(Sparse Tensor Core) 是Ampere架构的一项重要创新,利用深度学习模型权重中普遍存在的稀疏性(特别是经过剪枝的模型)。它要求权重满足2:4结构化稀疏格式(每4个连续元素中恰有2个非零),在此约束下,Tensor Core可跳过零值运算,将吞吐量提升1倍。

从CUDA编程角度而言,Tensor Core通过Warp Matrix Functions(WMMA API) 或更底层的PTX指令(mma.sync) 以及高层的cuBLAS/cuDNN库来调用。在实际工程中,直接调用cuBLAS进行GEMM(通用矩阵乘)是利用Tensor Core的最佳实践,cuBLAS针对各种矩阵尺寸和精度组合进行了高度优化。

5.2 RT Core:光线追踪的专用加速

RT Core(Ray Tracing Core) 是NVIDIA Turing架构(2018年)引入的专用光线求交加速单元,专门用于加速光线追踪渲染中最耗时的包围体层次结构(BVH)遍历光线-三角形求交运算。

在传统软件光线追踪实现中,BVH遍历与求交测试需要占用大量CUDA Core的时钟周期。RT Core将这部分工作卸载到独立的固定功能硬件,使CUDA Core可以同时进行着色计算,实现了光线追踪、降噪(通常由Tensor Core加速的AI降噪算法DLSS完成)与光栅化的高效并行。

第三代RT Core(Ada Lovelace架构)的光线追踪吞吐量较第一代提升约2-3倍,支持透明几何体的不透明测试(Opacity Micromap)等高级特性,进一步扩展了实时光线追踪的渲染质量边界。

5.3 视频编解码引擎(NVENC/NVDEC)

现代GPU均集成了专用的视频编解码硬件引擎。NVIDIA的NVENC(硬件编码器)NVDEC(硬件解码器) 支持H.264、H.265/HEVC、AV1、VP9等主流编解码标准,能够在几乎不占用GPU计算核心资源的情况下完成高效的视频编解码任务。

这对于视频流媒体处理、视频会议、云游戏等应用场景至关重要。数据中心GPU(如A10G)可同时运行数十路甚至上百路视频流的实时编解码,满足大规模视频平台的算力需求。

5.4 AMD架构的对应单元

AMD的CDNA系列(面向计算)使用Matrix Core(矩阵核心) 实现类似Tensor Core的功能。MI250X(基于CDNA2架构)每个CU包含4个Matrix Core,支持FP64、FP32、FP16、BF16、INT8等精度,整卡FP64峰值性能高达47.9 TFLOPS,在科学计算领域具有显著优势。

AMD的RDNA系列(面向游戏)则引入了Ray Accelerator(光线加速器) 支持硬件光线追踪,功能上对标NVIDIA的RT Core。


六、GPU的互连与系统集成

6.1 PCIe接口

PCIe(Peripheral Component Interconnect Express)是GPU与主机CPU进行通信的标准接口,负责传输指令、数据以及控制信号。PCIe 5.0 x16接口提供约64GB/s的单向理论带宽(128GB/s双向),远低于GPU的显存带宽(数TB/s量级),因此CPU-GPU之间的数据搬运(H2D/D2H传输)往往是系统性能的主要瓶颈之一。

优化策略包括:尽量减少CPU-GPU数据传输频率、使用异步传输(cudaMemcpyAsync)与计算流水线重叠、使用页锁定内存(Pinned Memory / Page-Locked Memory)以启用DMA直接传输(避免中间缓冲区拷贝)等。

6.2 NVLink与NVSwitch(详述)

如前所述,NVLink专为GPU-GPU高速互连设计。在DGX H100系统中,每个H100 GPU通过NVLink 4.0与所有其他7个GPU直连,每GPU的NVLink总带宽高达900GB/s(双向),使多GPU并行训练时的梯度同步(All-Reduce通信)开销大幅降低。

相比之下,传统基于InfiniBand或以太网的节点间互连(如400Gb InfiniBand)带宽仅为约50GB/s,与节点内NVLink带宽相差近20倍,这也是大规模分布式训练中节点间通信效率远低于节点内通信的根本原因,驱动了张量并行(Tensor Parallelism)和流水线并行(Pipeline Parallelism)等旨在最大化节点内通信的先进并行策略的发展。

6.3 多实例GPU(MIG,Multi-Instance GPU)

MIG 是NVIDIA Ampere架构引入的硬件级GPU分区技术,允许将一个物理GPU分割为最多7个独立的、相互隔离的GPU实例(称为MIG实例),每个实例拥有独占的SM子集、L2缓存分区、内存控制器和显存带宽,提供接近物理GPU的完整功能(包括专用的Tensor Core、RT Core等)。

MIG的应用场景主要包括:

  • 云服务商(如AWS、Azure、GCP)可将单个A100/H100切分为多个MIG实例,向不同租户提供GPU算力服务,大幅提升GPU的资源利用率与服务密度。
  • 推理服务:对于延迟敏感但计算量相对较小的推理任务,单个完整GPU往往被浪费。MIG允许同时运行多个推理实例,实现更高的服务吞吐量。

6.4 PCIe Switch与GPU超级服务器

在构建超大规模GPU集群时,除了节点内的NVLink/NVSwitch互连外,节点间互连(如InfiniBand HDR/NDR)以及节点内的PCIe Switch拓扑设计同样至关重要。

以NVIDIA DGX A100为例,其8个A100 GPU通过NVSwitch全互连,同时通过PCIe Switch连接至两路AMD EPYC CPU,并配备8块200Gb/s InfiniBand网卡用于节点间高速通信。这种精心设计的混合互连拓扑,在最大化节点内GPU通信带宽的同时,也保证了节点间的高吞吐量通信能力,是构建大规模分布式深度学习训练集群的标准范式。


七、GPU编程模型与软件栈

7.1 CUDA编程模型

CUDA(Compute Unified Device Architecture)是NVIDIA推出的GPU通用计算平台与编程模型,是目前应用最广泛的GPU编程框架。CUDA将GPU编程抽象为以下层次:

  • 线程(Thread) :最基本的执行单元,每个线程执行相同的内核函数,通过内置变量threadIdxblockIdxblockDimgridDim来确定自己的全局唯一身份,从而访问不同的数据元素。
  • 线程块(Thread Block / CTA) :由一组线程组成,共享同一块共享内存,可使用__syncthreads()进行块内同步。线程块是SM的基本分配单位。
  • 线程网格(Grid):由多个线程块组成,所有线程块共同执行同一个内核函数。Grid可以是一维、二维或三维结构。
  • 流(Stream):CUDA流是一组在GPU上按序执行的操作序列(内核启动、内存拷贝等)。不同流之间的操作可以并发执行,实现计算与内存传输的重叠(Overlap),是提升异构系统整体吞吐量的重要手段。
  • 事件(Event):用于精确测量GPU操作执行时间,以及实现流之间的同步依赖关系。

CUDA内存管理API允许程序员精确控制数据在主机内存、设备全局内存、共享内存、常量内存、纹理内存等不同存储层次之间的流动,这是实现高性能GPU代码的核心技能之一。

7.2 上层计算库生态

直接使用CUDA编写高性能内核对大多数应用开发者而言门槛较高。NVIDIA提供了一系列经过高度优化的计算库,覆盖深度学习、线性代数、信号处理、图计算等多个领域:

  • cuBLAS:BLAS(基本线性代数子程序)的GPU实现,提供GEMM、TRSM等矩阵运算的高度优化实现,充分利用Tensor Core。
  • cuDNN:深度神经网络原语库,提供卷积、池化、激活函数、BatchNorm、注意力机制等深度学习算子的高效实现,是PyTorch、TensorFlow等深度学习框架的底层算子库。
  • cuFFT:快速傅里叶变换(FFT)的GPU实现。
  • cuSPARSE:稀疏矩阵运算库。
  • NCCL(NVIDIA Collective Communications Library):专为多GPU、多节点深度学习训练设计的集合通信库,提供All-Reduce、Broadcast、Gather、Scatter等通信原语,支持NVLink、InfiniBand等多种互连后端。
  • Thrust:类STL风格的GPU并行算法库,提供排序、扫描、归约等通用并行算法。
  • TensorRT:NVIDIA的推理优化引擎,通过图融合(Layer Fusion)、精度校准(INT8/FP8量化)、内核自动调优(Auto-Tuning)等技术,将训练好的模型转化为高度优化的部署格式。

7.3 AMD ROCm与OpenCL

AMD的ROCm(Radeon Open Compute platform) 是其开源GPU计算生态,提供了与CUDA高度兼容的HIP(Heterogeneous Interface for Portability) 编程接口。CUDA代码通常可通过hipify工具以较小代价移植为HIP代码,在AMD GPU上运行。ROCm生态亦包括rocBLAS、MIOpen(对应cuDNN)、RCCL(对应NCCL)等配套库。

OpenCL(Open Computing Language)是Khronos Group制定的跨厂商、跨平台GPU/异构计算标准,支持NVIDIA、AMD、Intel GPU及多种加速器。然而,OpenCL在极致性能优化方面通常不及CUDA/ROCm,且生态成熟度相对欠缺,在AI/HPC领域的主流地位已逐渐被CUDA取代。


八、GPU架构在AI时代的演进趋势

8.1 从计算受限到内存带宽受限的范式转变

随着大语言模型(LLM,如GPT-4、LLaMA等)参数规模的急剧膨胀,GPU工作负载的性质正在发生深刻转变。在模型训练阶段,大批量(Large Batch Size)的矩阵乘法运算具有极高的计算强度(Arithmetic Intensity),属于典型的计算密集型(Compute-Bound)负载,Tensor Core的高FLOPS是核心瓶颈。

然而,在模型推理阶段,特别是自回归解码(Autoregressive Decoding)阶段,每个解码步骤仅生成一个Token,批量大小(Batch Size)通常远小于训练阶段,导致计算强度骤降,工作负载转变为内存带宽受限(Memory-Bound)。大型模型的权重需要从HBM中不断读取,内存带宽成为核心瓶颈。这正是高带宽HBM内存对推理性能如此关键的根本原因,也是为何H200(配备HBM3e,带宽4.8TB/s)相比H100在推理场景下具有显著性能提升的核心逻辑。

8.2 计算通信重叠与异步执行

在大规模分布式训练中,通信开销(梯度同步的All-Reduce操作)是影响训练效率的关键因素。现代GPU通过NVLink的硬件多路复用与NCCL的精心调度,实现了计算(前向/反向传播)与通信(梯度聚合)的深度重叠,将通信延迟"隐藏"在计算执行的时间窗口内,大幅提升了分布式训练的扩展效率(Scaling Efficiency)。

Hopper架构引入的异步执行引擎(Async Engines)TMA(Tensor Memory Accelerator) 进一步强化了数据搬运与计算的解耦:TMA能够在专用DMA引擎上自动完成全局内存到共享内存的数据搬运(支持分块、步长、降维等复杂访问模式),完全无需CUDA Core的介入,将计算核心从数据搬运任务中彻底解放出来。

8.3 芯片封装技术的演进:从单芯片到小芯片(Chiplet)

随着摩尔定律的放缓,单个芯片的晶体管数量增长愈发困难,芯片良率与制造成本的压力也日益凸显。芯片封装技术的创新正在成为延续GPU性能提升的新路径。

CoWoS(Chip on Wafer on Substrate) 封装技术被广泛用于A100/H100这类将GPU Die与HBM Die集成在同一硅中介层上的高端产品。更先进的SoIC(System on Integrated Chips) 技术则实现了Die到Die的面对面堆叠,进一步缩短互连距离、提升集成密度。

Chiplet(小芯片) 架构是指将大型芯片分解为多个独立制造的功能模块(如计算Die、I/O Die、内存控制器Die等),通过先进的封装技术(如UCIe标准的Die to Die互连)集成为一个整体封装,实现不同模块使用最优工艺节点的混合制造策略,兼顾良率与性能。AMD的CDNA3(MI300X/MI300A)是GPU领域Chiplet架构的标志性产品:MI300X集成了8个CDNA3计算Die(GCD)和12个HBM3内存Die,通过AMD的3D封装技术(3D V-Cache的GPU版本)叠层集成,实现了192GB的超大HBM3容量(高达5.2TB/s带宽),彻底改变了大型语言模型推理的内存容量约束。

8.4 专用AI推理芯片与GPU的竞争

面对日益旺盛的AI推理需求,各类专用AI推理芯片(ASIC)也在蓬勃发展,如Google TPU、华为昇腾、百度昆仑、寒武纪MLU等。与GPU相比,这些专用芯片针对特定的神经网络模型和精度格式进行极致定制优化,在特定场景下可以实现更高的能效比(TOPS/W)。

然而,GPU凭借其高度可编程性、完善的软件生态(CUDA、PyTorch、TensorRT等)以及持续强劲的硬件迭代速度,在灵活性与生态优势方面仍保持显著领先。NVIDIA通过不断在GPU中集成更多专用加速功能(Tensor Core、Transformer Engine等),模糊了通用GPU与专用AI芯片之间的边界,持续保持着AI加速硬件市场的主导地位。


九、GPU热设计与功耗管理

GPU的性能提升伴随着功耗的显著增长。H100 SXM5的TDP(热设计功耗)高达700W,而H200更达到1000W,这对数据中心的供电、散热和能效提出了严峻挑战。

9.1 动态电压频率调节(DVFS)

DVFS(Dynamic Voltage and Frequency Scaling) 是GPU功耗管理的核心机制。GPU根据当前工作负载的强度、温度传感器读数以及功率上限(Power Limit)等参数,动态调整工作频率和供电电压。在轻负载或高温情况下,GPU会主动降低频率(Throttling)以控制功耗和温度;在满负载且热条件允许时,现代GPU(如RTX系列)支持GPU Boost机制,自动将频率提升至额定值以上,以榨取最大性能。

9.2 散热方案

消费级GPU通常采用风冷散热(轴流风扇+热管+散热鳍片),专业工作站卡(如RTX 4000/5000系列)则常采用涡轮风扇的刀卡设计,以适配机架服务器的气流管理。数据中心GPU(如A100/H100 SXM)采用更先进的解决方案:

  • 液冷(Liquid Cooling):通过直接接触冷板或浸没式液冷(Immersion Cooling)实现更高效的热量散除,可支持更高功耗密度。
  • 热界面材料(TIM):高导热硅脂或相变材料被用于填充芯片表面与散热器之间的微观空隙,最大化热传导效率。

随着AI芯片功耗持续攀升,液冷甚至全浸没式冷却正在从高端数据中心专属技术逐渐走向主流,成为下一代超算中心散热方案的必然选择。


十、结论与展望

GPU架构经历了从固定功能图形加速器到高度可编程通用并行计算引擎的深刻演变,其核心设计理念------以大规模线程级并行性实现极致计算吞吐量------已被证明与深度学习时代计算密集型工作负载的需求高度吻合。

从微架构层面的SM与Tensor Core设计,到内存层次结构中寄存器、共享内存、L2缓存与HBM的精心协作;从SIMT执行模型与Warp调度器的协同,到NVLink/NVSwitch构建的高速GPU互连网络;从CUDA编程模型的层次化抽象,到cuBLAS、cuDNN、TensorRT构成的完整软件生态------GPU架构的每一个层面都体现了硬件设计与软件优化紧密协同的系统工程智慧。

展望未来,GPU架构的演进将沿以下几个方向持续推进:

  1. 更高精度的混合精度计算:FP8已经成为当前大模型训练的主流精度,未来或将探索更极端的4位(FP4/NF4)量化,进一步提升计算密度与内存效率。
  2. 内存容量与带宽的持续扩展:HBM4/HBM4E技术将提供更高的堆叠密度与位宽,突破当前内存容量瓶颈,为千亿乃至万亿参数模型的单机推理提供可能。
  3. Chiplet与3D封装的深度应用:异构集成技术将允许将不同功能优化的芯片模块灵活组合,实现计算密度、内存带宽与I/O能力的协同优化,突破单一Die面积限制。
  4. 计算架构的进一步专业化:随着Transformer架构在NLP、CV、科学计算等领域的全面渗透,专为注意力机制、FFN层、KV Cache管理等Transformer特有计算模式定制的专用硬件单元将越来越多地集成到主流GPU中。
  5. 能效比的持续提升:在数据中心总功耗受限的背景下,如何用更少的能量完成更多的计算(TOPS/W),将成为GPU设计者与AI系统工程师共同面临的核心挑战。

GPU架构是现代计算科学最复杂、最精密的工程结晶之一。深入理解其架构原理,不仅是GPU内核工程师和系统架构师的基本功,也是每一位在AI时代从事算法研究、工程开发的技术人员高效利用这一算力基础设施的前提与基础。随着GPU算力需求的持续爆炸性增长,GPU架构的演进步伐非但不会放缓,反而将在更广泛的技术生态推动下不断加速,持续书写人类计算科技史上最精彩的章节之一。


参考文献

  1. NVIDIA. (2022). NVIDIA Hopper Architecture In-Depth. NVIDIA Technical Blog.
  2. NVIDIA. (2020). NVIDIA Ampere GA100 GPU Architecture. NVIDIA Whitepaper.
  3. Jouppi, N. P., et al. (2017). In-Datacenter Performance Analysis of a Tensor Processing Unit. ISCA 2017.
  4. Hennessy, J. L., & Patterson, D. A. (2019). Computer Architecture: A Quantitative Approach (6th ed.). Morgan Kaufmann.
  5. Kirk, D. B., & Hwu, W. W. (2016). Programming Massively Parallel Processors: A Hands-on Approach (3rd ed.). Morgan Kaufmann.
  6. AMD. (2022). AMD CDNA 2 Architecture. AMD Whitepaper.
  7. Fatahalian, K., & Houston, M. (2008). A closer look at GPUs. Communications of the ACM, 51(10), 50-57.
  8. Lindholm, E., et al. (2008). NVIDIA Tesla: A Unified Graphics and Computing Architecture. IEEE Micro, 28(2), 39-55.
  9. Dao, T., et al. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. NeurIPS 2022.
  10. NVIDIA. (2023). NVIDIA H100 Tensor Core GPU Architecture. NVIDIA Whitepaper.
相关推荐
生成论实验室2 小时前
即事经智能:一种基于生成易算的通用智能新范式(书)
人工智能·神经网络·算法·架构·信息与通信
red_redemption2 小时前
自由学习记录(121)
学习
红豆子不相思2 小时前
haproxy七层代理
linux·学习
知识即是力量ol3 小时前
微服务架构:从入门到进阶完全指南
java·spring cloud·微服务·nacos·架构·gateway·feign
2501_926978333 小时前
思想波与引力共振理论:统一物理主义意识框架的革命性探索--AGI理论系统基础12
人工智能·经验分享·架构·langchain·agi
天若有情6733 小时前
IoC不止Spring!求同vs存异,两种反向IoC的核心逻辑
java·c++·后端·算法·spring·架构·ioc
zzcufo3 小时前
Anki 使用完整教程
笔记·学习
绝无仅有3 小时前
mac笔记本中在PHP中调用Java JAR包的指南
后端·面试·架构
绝无仅有3 小时前
PHP与Java项目在服务器上的对接准备与过程
后端·面试·架构