一、设计思想的差异 —— CPU 与 GPU 的架构哲学
在深入解析GPU内部构造之前,必须首先理解其与CPU在设计理念上的本质区别。两者虽均由晶体管构成,但目标迥异,导致结构大相径庭。
| 特性 | CPU | GPU |
|---|---|---|
| 核心目标 | 追求低延迟,高效完成单个复杂任务 | 强调高吞吐量,同时处理大量简单并行任务 |
| 核心数量 | 较少(通常为几个到几十个),每个核心功能强大且独立运行 | 极多(可达数千甚至上万个),核心小巧高效,专为并行计算优化 |
| 缓存体系 | 多层次、大容量缓存系统,旨在最小化数据读取延迟 | 相对精简,主要用于支持线程束间的数据共享,而非掩盖延迟 |
| 控制单元 | 占比高,具备强大的指令调度、分支预测和乱序执行能力 | 占比小,采用SIMT(单指令多线程)模型,统一控制多个线程执行相同指令流 |
| 适用场景 | 操作系统调度、通用程序运行、逻辑判断及串行计算 | 图形渲染、科学模拟、深度学习训练、密码破解等高度并行任务 |
| 比喻形象 | “博学家”或“法拉利”:擅长处理复杂事务,单次操作速度极快 | “军队”或“巨型卡车”:个体能力有限,但能组织海量单元协同执行简单命令 |
核心理念在于:GPU将绝大多数芯片面积分配给计算单元,而非复杂的控制逻辑或庞大缓存,通过极致的并行化策略实现最大化的整体吞吐性能。
[此处为图片1]二、GPU 架构层级解析
以现代 NVIDIA GPU 架构(如 Ampere、Hopper)为例,可将其内部结构划分为多个层次,逐级深入理解其工作原理。
层级1:宏观视角 —— GPU 芯片整体布局
一块完整的GPU芯片由以下几个关键模块组成:
- 图形处理集群(GPC):芯片中最顶层的功能划分,每个GPC包含若干流式多处理器(SM)、光栅引擎等功能单元。
- 流式多处理器(SM):GPU的核心运算单元,所有计算任务——无论是图形渲染、AI推理还是科学计算——最终都在SM中完成。高端GPU往往集成上百个SM。
- 内存控制器:连接GPU核心与显存的关键通道。借助HBM2e或HBM3等高带宽显存技术,提供远超传统内存的数据传输速率。
- 二级缓存(L2 Cache):所有SM共享的最后一级高速缓存,作为SM与显存之间的中间缓冲区,降低访问延迟。
- PCIe 接口:负责与主机CPU通信,实现数据交换与指令传递。
层级2:核心动力源 —— 流式多处理器(SM)内部结构
SM 是 GPU 真正意义上的“心脏”,其内部结构决定了计算效率与并行能力。
1. 计算单元
- CUDA 核心:最基本的标量处理单元,主要承担单精度浮点运算和整数运算。
- Tensor 核心:专为矩阵乘加运算设计的硬件加速器,可在单个时钟周期内完成 4×4 矩阵的混合精度计算,是推动深度学习性能飞跃的核心组件。
- RT 核心:用于加速光线追踪中的射线-几何体求交运算,显著提升实时光追渲染效率。
2. 执行上下文与线程束调度机制
SM 基于 SIMT 模型运作,能够同时维护成千上万线程的执行状态(寄存器信息)。
- 线程束(Warp):GPU的基本执行单位,通常由32个线程组成。这些线程共享同一程序计数器,执行相同的指令,但作用于不同的数据。
- 调度器:每个时钟周期从就绪队列中选择可执行的线程束,并将其指令分发至对应的功能单元。高效的调度机制有助于隐藏内存访问带来的延迟。
3. 寄存器文件
每个 SM 都配备一个巨大的寄存器堆(例如 256KB)。每个线程拥有专属寄存器空间,用于存储局部变量和中间结果。这一设计使得大量线程之间可以实现快速切换,无需频繁保存/恢复上下文。
4. 内存子系统
- 共享内存 / L1 缓存:位于 SM 内部的小容量、超高带宽 SRAM。该内存对 SM 中的所有线程可见,程序员可通过代码显式控制其使用,是性能调优的重要手段。
- 只读缓存 / 常量缓存:专门优化对只读数据和常量数据的访问速度,减少重复加载开销。
层级3:执行模型 —— 软件线程如何映射至硬件资源
掌握“网格-线程块-线程”这一编程模型如何与物理硬件对接,是理解GPU并行机制的关键。
- 线程:最小的执行实体。
- 线程块:一组逻辑相关的线程(如 128 或 256 个),可被分配到同一个 SM 上执行,并利用共享内存进行协作与同步。
- 网格:一次内核启动所包含的所有线程块的集合。
硬件映射流程如下:
- 程序员调用内核函数,启动一个网格。
- GPU驱动程序将网格中的线程块动态分配到各个可用的SM上。
- 每个SM根据资源情况,可容纳一个或多个线程块。
- 进入SM的线程块被进一步拆分为多个线程束(每组32个线程)。
- SM内的调度器在每个时钟周期选取就绪的线程束,将其指令发送至CUDA核心或Tensor核心阵列。
- 同一线程束内的32个线程以锁步方式执行相同指令,在计算单元上并行处理不同数据。
层级4:内存体系结构 —— 数据流动路径与优化原则
GPU拥有层次分明的内存系统,各层级在速度、容量和访问权限方面各有特点:
- 寄存器:最快,仅限当前线程访问。
- 共享内存:高速,同一SM内所有线程共享,可用于手动优化数据复用。
- L1 缓存 / 常量缓存 / 只读缓存:驻留在SM内部,服务于局部数据访问。
- L2 缓存:全芯片范围内共享,是连接SM与显存之间的桥梁。
- 全局内存(显存):容量大,但延迟较高,带宽充沛,所有线程均可访问。
- 纹理内存 / 常量内存:特殊的只读全局内存类型,具有专用缓存机制,适合特定访问模式。
性能优化要点:应尽量让数据保留在寄存器和共享内存中,减少对全局内存的访问频率;同时确保全局内存访问是“合并的”——即一个线程束的32个线程连续访问一段对齐的内存地址,从而最大化带宽利用率。
[此处为图片5]三、演进趋势与人工智能的深度融合
GPU的发展经历了从专用图形处理器向通用并行计算平台,再到AI时代核心算力引擎的转变:
- 早期GPU专为图形渲染服务,仅支持固定管线操作。
- 随着CUDA和OpenCL等通用编程框架的出现,GPU开始支持任意类型的并行计算,迈入GPGPU(通用GPU)时代。
- 近年来,AI尤其是深度学习的爆发性增长,促使GPU架构持续演进,引入Tensor核心、稀疏化支持、Transformer加速等新技术,成为训练大模型不可或缺的基础设施。
如今,GPU已不仅是图形加速卡,更是高性能计算与人工智能领域的基石性硬件平台。
GPU架构的演进深刻体现了其“吞吐量优先”的设计思想,而Tensor核心的出现则标志着GPU正式迈入AI加速器主导地位。这类核心的设计重心已从传统的通用浮点运算,转向针对深度学习中关键操作——矩阵乘加运算的高度优化。
随着AI模型的发展,稀疏性成为不可忽视的特征:模型中的权重与激活值往往包含大量零值。为应对这一趋势,新一代GPU(如NVIDIA Hopper架构)在Tensor核心中引入了结构化稀疏加速能力。该技术能够识别稀疏模式并跳过无效的零值计算,从而显著提升有效计算密度和能效表现。
与此同时,线程调度机制也在持续进化。细粒度的线程协作模式被引入,例如“线程束簇”(Thread Block Cluster)的概念,使得更小规模的线程组(如16个线程)也能实现高效的同步与通信。这种改进增强了并行执行的灵活性,更好地适应复杂多变的计算负载需求。
[此处为图片1]
嵌入式GPU的架构权衡
尽管嵌入式GPU(如NVIDIA Jetson系列、高通Adreno、ARM Mali等)与桌面级或数据中心GPU共享相同的基础架构理念,但在实际设计中面临不同的约束与目标:
- 高度集成化设计:通常作为SoC的一部分,与CPU、内存控制器及其他外设共存于单一芯片内,采用统一内存架构,不配备独立显存。
- 极致能效追求:性能功耗比是核心指标。通过精细调节核心数量、工作频率与电压,并结合动态电压频率调整(DVFS)和功耗门控技术,实现最优能效。
- 规模缩减但架构完整:虽然仅集成数个至数十个SM单元,但仍保留完整的SM结构,包括CUDA核心、Tensor核心以及共享内存子系统。
- 专用硬件协同:为满足嵌入式视觉处理需求,常集成图像信号处理器(ISP)、视频编解码器等专用模块,与GPU形成高效协同流水线。
- 实时性保障:在汽车自动驾驶、工业控制等应用场景中,需确保任务执行的确定性与可预测的最坏响应时间,这与传统GPU侧重最大吞吐量的设计目标形成对比。
总结
GPU的内部组织方式是其高并发计算哲学的具体体现:
- 以流式多处理器(SM)为基本构建单元,依靠大规模并行实现性能突破;
- 采用SIMT(单指令多线程)执行模型,在简化控制逻辑的同时驱动海量线程并发运行;
- 引入专用计算单元(如Tensor核心),精准应对人工智能等新兴负载的核心瓶颈;
- 构建多层次的片上存储体系,在性能最大化与编程灵活性之间取得平衡。
在嵌入式领域,设计重点进一步向能效比和系统集成度倾斜。理解GPU底层架构,不仅有助于编写高性能的CUDA或OpenCL程序,更是掌握现代异构计算体系与AI硬件加速原理的关键所在。它象征着计算范式从“更快完成单个任务”向“同时处理更多任务”的根本转变。


雷达卡


京公网安备 11010802022788号







