技术文章

CPU 与 GPU 有什么区别:从芯片内部看 AI 训练和推理

从 Ryzen 9 7950X 和 NVIDIA H100 SXM 的封装进入裸片与核心内部,通过交互模型、原始结构图和中文语音,理解核心、缓存、HBM、Tensor Core 怎样参与 AI 计算。

大家好啊,我是 jianpeng。今天和大家聊一下 CPU 与 GPU 的区别。

电脑明明已经有 CPU,为什么训练大模型还要装 GPU?把芯片“拆开”看,你会发现差别不只是核心数量:计算单元怎样组织、数据放在哪里、一次能搬多少数据,都会改变它适合干什么。

AI 并不是只能用 GPU 训练和推理。CPU 能做,Google TPU 这样的专用加速器也能做。大规模深度学习经常选择 GPU,与它的并行计算组织、内存带宽和软件支持有关。

先分清:封装拆开,和架构展开

这次我选了两种公开资料充分、设计有代表性的实现:AMD Ryzen 9 7950X(Zen 4)和 NVIDIA H100 SXM(Hopper)。它们分别代表桌面多芯粒 CPU 和数据中心 GPU,用来解释结构;这不是相同功耗、价格或用途下的性能对比,也不代表所有 CPU、GPU 都长这样。

下面两幅图都能拖动旋转、缩放、点击部件查看说明。先用“封装拆分”拉开实际器件,再进入裸片细节、核心或 SM 内部接口。选中部件后点击“放大部件”,也可以全屏查看。键盘用户可以用部件按钮和视角按钮操作。

从封装看到裸片,再进入核心内部

封装模型对照产品外观与结构资料;裸片细节使用有出处的图像,功能和接口按官方架构图解释。拆分间距经过放大,方便观察。显微图中的电路区域、功能框图里的模块,都属于同一硅片;它们不是实际可以逐块拆下的零件。

CPU:先把一条复杂任务跑得顺

把 7950X 的散热顶盖移开,可以看到两颗计算芯粒 CCD,加一颗输入输出芯粒 IOD。两颗 CCD 各有 8 个 Zen 4 核心,合计 16 核、32 线程。每个核心支持两个硬件线程,它们共享部分执行资源。

CCD(Core Complex Die)是承载 CPU 核心和缓存的计算芯粒;IOD(I/O Die)是输入输出芯粒,I/O 即 Input/Output,负责连接计算芯粒、内存和外部接口。它们是封装里的硅片,一颗 CCD 内部还包含多个 CPU 核心。

听 CPU 结构讲解中文合成语音 · 结构概览
查看本段讲稿

大家好啊,我是 jianpeng。今天和大家聊一下 CPU 与 GPU 的区别。先看这颗锐龙九,七九五零 X。散热顶盖下面,并排放着两颗计算裸片和一颗输入输出裸片。两颗计算裸片各有八个核心,合起来是十六核、三十二线程。三十二线程,并不等于三十二个物理核心。输入输出裸片负责连接内存和外部设备,也包含集成显卡。我们再看计算裸片内部:核心旁边有缓存,用来减少反复访问主内存的等待。CPU 花了很多电路处理分支预测、指令调度和复杂控制,适合任务变化多、需要及时响应的工作。你可以旋转模型,再拖动拆分滑块观察各部分。注意,这款不是带堆叠缓存的 X 三 D 型号;这些功能区集成在同一颗裸片内,不是可以拆下来的独立芯片。

交互模型正在加载。下方结构说明可直接阅读;3D 交互需要启用 JavaScript 和 WebGL。

封装对应 Ryzen 9 7950X。显微细节采用 Fritzchens Fritz 拍摄的 Ryzen 5 7600 Raphael 样本,分别展示 CCD 的多晶硅层与 IOD 的短波红外影像;它们用于观察这一代硅片的结构,不是 7950X 本体实拍或开盖后的裸眼颜色。核心与缓存分区另对照 AMD 官方 Zen 4 图。

不操作模型,也能顺着这条结构读懂

散热顶盖 → 同一封装基板上的 CCD 0、CCD 1、IOD。每颗 CCD 内:8 个核心、每核 1 MB L2、该 CCD 共享的 32 MB L3。IOD 连接 DDR5 内存与 PCIe 等接口。

DDR5是第五代 DDR 内存标准。DDR 是 Double Data Rate(双倍数据速率),数据可在时钟的上升沿和下降沿传输;5 表示标准的代际。这里指电脑主内存使用的技术。PCIe(Peripheral Component Interconnect Express)则是连接显卡、固态硬盘等设备的高速接口。

在 AMD 的 CCD 裸片分区图中,两侧各有四组核心与 L2,中央是 32 MB L3。进入核心接口图,可以继续查看整数、浮点执行路径和缓存连接。7950X 总共 16 MB L2、64 MB L3,其中 L3 分属两颗 CCD,核心访问本 CCD 与另一颗 CCD 的数据,经过的路径不同。

缓存保存数据的副本,帮助核心减少访问外部内存的等待。寄存器、L1/L2/L3 缓存与外部内存一起构成容量和访问代价不同的存储层次。这里的 7950X 是普通型号,没有画 X3D 型号额外堆叠的缓存芯片

L1、L2、L3分别是 Level 1、Level 2、Level 3 cache,也就是一级、二级、三级缓存。一般越靠近核心,容量越小、访问越快,后面的层级提供更大容量。L3 的“3”表示缓存层级;7950X 的 L3 是同一颗 CCD 内多个核心共享的片上缓存,与外部 DDR5 内存分工不同。

CPU 核心要处理的不只是乘加。取指、译码、分支预测、乱序调度,让它能应对“算完这个结果,再决定下一步”的复杂流程。例如程序解析一个请求、查一串相互依赖的数据,再根据条件进入不同分支,后面的工作不一定能提前分成几千份。

进入核心内部,可以沿 AMD 的结构图看一条指令怎样经过这些模块:前端取指、译码或从微操作缓存取得已经译码的操作;重命名与调度电路跟踪操作数和依赖,把可执行的工作送往整数、浮点等执行单元。Load/Store 单元处理读写,连接数据缓存。图中的寄存器、调度队列和缓存阵列,都有具体的任务,并不是一片同质的“计算区”。

CPU 也通过多核、向量指令和指令级并行提高计算吞吐,Zen 4 支持的 AVX-512 就能用于向量运算。与此同时,它保留了复杂的控制与调度机制,以应对程序中频繁变化的指令和数据依赖。

GPU:让大量计算单元持续有活干

再看 H100 SXM。它的封装里,中央是 GH100 GPU 裸片,HBM(High Bandwidth Memory,高带宽内存)位于周围,通过中介层与 GPU 相连。HBM 在这里承担显存的工作,存放模型权重、输入和中间结果;HBM3 表示第三代 HBM。GPU 和 HBM 在封装上并排;HBM 自己的存储芯片才在堆栈内部竖向叠放。片上的 L2 缓存、SM 与控制逻辑,则集成在中央这颗裸片内。

听 GPU 结构讲解中文合成语音 · 结构概览
查看本段讲稿

接着看用于数据中心的 H 一百,S X M 版本。中间的大块是 GPU 裸片,旁边是高带宽显存,也就是 H B M。它们并排连接在中介层上,再通过封装基板通向外部。显存没有盖在 GPU 顶上;真正的垂直堆叠,发生在每一组 H B M 的内部。进入 GPU 的逻辑结构,你会看到许多重复的流式多处理器,简称 S M。每个 S M 内部,都有寄存器、共享内存和一级缓存,以及执行计算的单元。其中,Tensor Core 专门加速支持的数据格式下的矩阵运算。大量并行计算,还需要缓存和高带宽显存持续供给数据,才能发挥作用。模型里分开展示的功能区,是为了帮你看清关系;它们实际集成在同一颗裸片中,不是一盒可以拔出来的小芯片。

交互模型正在加载。下方结构说明可直接阅读;3D 交互需要启用 JavaScript 和 WebGL。

封装外观参考 NVIDIA 的 H100 SXM 资料;裸片细节采用 HiEQ 发布的 GH100 标注图,图中的区域划分属于作者分析。SM 的功能与内部接口采用 NVIDIA 官方图,二者分别标明来源。

沿着数据的路径看结构

HBM → GPU 内的 L2 缓存 → SM 的共享内存、L1 与寄存器 → 运算单元。实际访问由指令和缓存策略决定,这条简化路径用来定位各部件。

切到内部功能视图,重点看 SM(Streaming Multiprocessor,流式多处理器)。它是 NVIDIA GPU 内部组织线程与运算的功能模块,不是另封装的一颗芯片。一个 SM 内有指令调度、寄存器、共享内存/L1,以及不同运算单元,多个 SM 再协作工作。CUDA Core 和 CPU Core 不是同一种计数单位,不能拿“几万个 CUDA 核”除以“16 个 CPU 核”推算速度。

NVIDIA 的完整 GH100 设计有 144 个 SM;H100 SXM 产品启用 132 个 SM,共 528 个第四代 Tensor Core,配备 80 GB HBM3。完整芯片的功能框图和实际销售型号的启用配置要分开读。公开资料没有给出某一颗产品具体停用了哪些位置的 SM。

Tensor Core 是针对矩阵乘加优化的运算单元。D = A × B + C 这样的运算,可以按小矩阵块送入这类硬件执行;激活函数、索引、分支等工作还需要其他执行单元处理。

在单个 SM 的结构图中,四个处理分区各有 Warp 调度器、指令派发与寄存器资源,并连接 FP32、FP64、INT32、Tensor Core 等执行单元。Load/Store 单元负责内存读写,SFU 处理特定函数运算。寄存器保存线程正在使用的操作数;共享内存让同一线程块中的线程交换和复用数据,L1 缓存则由硬件管理访问缓存。两者虽然使用组合资源,编程方式并不相同。

GPU 依靠大量并发线程,让一批线程等待数据时,其他可运行线程继续占用执行资源。它仍有分支、调度与缓存;只是要发挥吞吐能力,通常需要足够多、能并行组织的工作。数据太少、同一组一起调度的线程走向不同分支,或搬运频繁,都可能降低计算资源的利用率。

两种设计,究竟差在哪里?

观察点通用 CPU 的典型取向GPU 的典型取向
希望优化什么复杂程序、控制流程与单任务响应大量并发任务的总吞吐量
如何使用并行多核、指令级并行、向量计算多个 SM 同时调度大量线程,协作处理数据块
如何减少等待缓存、预测与乱序执行等机制缓存与数据复用,加上大量线程掩盖等待
本文的外部内存7950X 经 IOD 连接板上的 DDR5H100 SXM 的 HBM3 与 GPU 位于同一封装内
在 AI 系统中的工作也能训练和推理;常承担数据准备、调度与通用服务常用于大规模张量运算、训练和高吞吐推理

封装方式还会随产品定位改变。CPU 可以集成 GPU;很多消费级显卡使用板上的 GDDR 显存,而 H100 SXM 使用封装内的 HBM。7950X 和 H100 展示的是两种具体实现。

AI 为什么常用 GPU,但并非只能用 GPU?

先看最直接的反例:PyTorch 官方入门教程会在没有可用加速器时选择 cpu,同样执行训练和推理;Google Cloud TPU 官方文档也明确介绍训练与推理。这说明 GPU 是常用的加速方案,而不是 AI 数学运算成立的前提。

听 AI 与硬件的关系中文合成语音 · 训练、推理与选择
查看本段讲稿

最后回答一个容易误解的问题:人工智能并不是只能用 GPU。CPU 可以训练模型,也可以做推理,谷歌的 T P U 等专用加速器也能承担这些工作。GPU 常被选中,是因为神经网络里有大量矩阵运算:许多数字能同时计算,同一批数据还能反复使用。并行计算单元、矩阵计算硬件、高带宽显存,再加上成熟的软件库,共同提高了适合任务的处理效率。训练要计算梯度并更新参数,通常比只做前向计算的推理保存更多状态。大语言模型推理也有两个不同阶段:先处理输入,再逐个生成词元。小批量生成时,等待搬运权重和缓存,常常比计算本身更关键。所以,不能只看算力数字就断定 GPU 总是更快;模型大小、数值精度和批量都会影响结果。CPU 仍然负责准备数据、调度任务,让整套系统协同运行。

那为什么深度学习特别适合这类加速器?先看一个小例子。假设输入矩阵 X 的形状是 64 × 4096,权重 W 是 4096 × 4096,输出 Y 就是 64 × 4096。按一次乘加计两次浮点操作,单次矩阵乘法约需要 2 × 64 × 4096 × 4096 ≈ 21.5 亿 次操作。这里是教学计算,不是芯片跑分。

Y 中有很多可以并行求出的元素;同时,一个权重块能被多个输入复用。GPU 内核把矩阵分块,在 SM 内用寄存器与共享内存尽量重复利用已经搬来的数据,再调用适合的向量或矩阵指令。足够大的工作量,才有机会把硬件持续用满。

X64 × 4096W4096 × 4096Y64 × 4096

第二个原因是数据供给。参数、激活值与中间结果都要存取;计算单元再多,等不到数据也没用。H100 的 HBM、片上缓存与 SM 内存储共同服务于这件事。增加批量可能提高权重复用,但也会增加内存需求,还可能改变请求等待时间。

第三个原因是软件。CUDA、cuBLAS、cuDNN 和深度学习框架把大量常见算子接到了经过优化的实现上;多卡系统还有设备间通信。硬件擅长的数学形式、库的支持程度和整个系统的数据流共同决定收益,不能只看一个峰值 TFLOPS 数字。

低精度也是加速的重要手段,但它有条件:FP16、BF16、FP8 等格式是否合适,取决于模型、硬件、算子和训练策略。减少位宽可以节省存储和搬运,某些硬件也提供更高吞吐;能否保持模型质量,需要相应验证。

同一块 GPU,训练和推理也会有不同瓶颈

训练不仅要做前向计算,还要计算梯度并更新参数。除权重外,通常还要保存反向传播需要的中间状态、梯度和优化器状态。因此,“权重能装进去”不等于“训练能装进去”;具体占用会随优化器、精度、激活重计算和并行策略变化。

推理使用已有权重产生结果,通常不需要反向传播和参数更新,但仍要容纳运行时工作区。对于自回归大语言模型,还要关注保存历史注意力键值的 KV cache,它会随上下文和并发等条件增长。

大语言模型推理又可以拆成两个阶段。预填充(prefill)先处理输入提示中的多个 token,容易形成较大的矩阵计算;解码(decode)通常逐步产生下一个 token,单条序列的后续步骤依赖前一步结果。在小批量等条件下,反复读取权重和 KV cache 可能让解码更受内存带宽影响。扩大批量、长上下文或不同模型结构,又会改变瓶颈。

Tensor Core 的峰值算力,只描述其中一类运算的能力。一次请求还可能花时间读取权重、搬运 KV cache、等待设备通信,或等待下一步计算的输入。因此,训练吞吐、首 token 延迟和后续 token 速度,需要分别观察。

引用链接

  1. AMD Ryzen 9 7950X:核心、缓存、芯粒与接口规格
  2. AMD Ryzen Processor Software Optimization:7950X 封装与缓存关系、Zen 4 核心框图(第 13、16、17 页)
  3. AMD Hot Chips:Zen 4 核心与 CCD 裸片分区图(第 10、11 页)
  4. Geekerwan:Ryzen 9 7950X 外观实拍(视频帧与来源说明)
  5. AMD Ryzen 7000:每核 L2、IOD 与 AVX-512
  6. Fritzchens Fritz:Raphael CCD 多晶硅层显微图(Ryzen 5 7600 样本)
  7. Fritzchens Fritz:Raphael IOD 短波红外图(Ryzen 5 7600 样本)
  8. NVIDIA Hopper Architecture In-Depth:GH100、H100 SXM 与 SM 架构
  9. NVIDIA H100 Tensor Core GPU Architecture 白皮书:产品配置、GH100 图 6 与 SM 图 7
  10. HiEQ:GH100 裸片标注图
  11. TSMC CoWoS:硅中介层与封装结构
  12. IEEE/EPS · John H. Lau 公开讲义:H100 封装截面(第 62 页)
  13. NVIDIA GPU Performance Background:执行模型、存储与性能限制
  14. NVIDIA Matrix Multiplication Background:矩阵分块与数据复用
  15. PyTorch Quickstart:CPU / 加速器上的训练与推理
  16. PyTorch Training a Classifier:从 CPU 训练迁移至 GPU
  17. Google Cloud TPU:训练与推理专用加速器
  18. Hugging Face Transformers:大语言模型速度与内存优化
  19. NVIDIA LLM 推理优化:预填充、解码与瓶颈
  20. Micron:DDR5 内存标准与常见问题
  21. Intel:PCI Express(PCIe)接口定义