关于简介这一章,作者简单阐明了CPU,GPU过去的发展,以及它们的差异。除此之外,作者还引入了CUDA,介绍了CUDA的代码类型,以及全书的结构。
此章值得注意的点如下:
1、GPU上的晶体管数量超过CPU上的。
2、两设备之间的差异。
3、带宽聚合。
4、三种代码类型。
(一)GPU上的晶体管数量超过CPU上的。
1、GPU 的晶体管数量为何比CPU多?
CPU的晶体管用于逻辑控制、缓存和分支预测。这与CPU的自身目标有关:低延迟、高 IPC(每周期指令数)、复杂逻辑。因此晶体管大量用于:超大L1/L2/L3 Cache、乱序执行、分支预测、高级指令调度器、多层次流水线。这些晶体管属于控制类晶体管,不直接带来算力。
GPU:把晶体管主要用在ALU(算力)和内存带宽上。这也与GPU的目标有关:最大化吞吐量、最大化并行、最大化算力密度。晶体管主要用:晶体管主要用于:CUDA core/ALU,Tensor Core,大规模 SIMD/SIMT 单元,Memory Controller,HBM 通道。
2、为什么 GPU 能堆这么多晶体管?
首先是因为GPU的逻辑结构简单得多(重复复制 SM + ALU),GPU 的 SM(Streaming Multiprocessor)基本是一个模块:一堆 ALU、一堆寄存器、一点点控制单元。一个 SM 拥有数百万晶体管,而整个GPU堆了几百个SM,使得晶体管数量直接线性上升。而CPU无法这样复制(因为线程依赖复杂)。其次、GPU 的缓存很少,占用晶体管少。CPU的L3 Cache动不动就 30MB、60MB,这个非常占晶体管。GPU 只有:共享内存96 KB~128 KB/SM,L2 Cache 6MB~60MB(但相对GPU数千核心不算大。CPU在Cache上耗掉大量晶体管,GPU把晶体管省下来放在执行单元上。再其次,GPU用HBM(外置显存),把大部分晶体管放在控制链路上。HBM需要多个:memory stack controller、channel controller、PHY(物理接口)。HBM3/4 通道 → 有成百上千的信号线→ 晶体管数量非常大但这带来超高 1~5 TB/s 带宽。CPU 用 DDR5,不需要这么多控制器。
3、为什么 GPU 晶体管多但频率不高?
GPU 频率通常只有:1.0 ~ 1.9 GHz,CPU 可以:4.0 ~ 6.0 GHz。原因:晶体管越多,功耗越难控制;GPU 的并行体系决定不需要太高频率;低频 = 更好能耗比。GPU是用纯数量堆吞吐量,不是靠频率。
(二)两设备之间的差异。
原文提到:大部分CPU芯片面积是为了支持缓存,而大部分GPU芯片面积是为了逻辑。GPU是专门为了并行吞吐处理而设计的,它们的小规模缓存是为了带来更多带宽聚合,而不是为了减少指令延迟。
(三)带宽聚合
将多个独立的数据通道/路径组合起来,使总带宽大于单通道带宽,提升吞吐量和数据传输能力。核心目的:提高总吞吐量,而不仅仅是单条通道速度。GPU 高带宽设计就是带宽聚合的典型应用:HBM(高带宽显存)通道聚合:
多堆 HBM,每堆有多个通道;多通道并行访问 → 带宽叠加,例如 NVIDIA H100:5堆HBM3,每堆 ~ 800 GB/s,总带宽 ≈ 5 × 800 = 4 TB/s。GPU 内部总线聚合:每个SM的小缓存(Shared Memory)和寄存器,支持 warp并行访问,隐藏延迟。小缓存不是为了降低延迟,而是为了提供多通道带宽聚合。GPU之间通信聚合(NVLink / NVSwitch):多条链路同时工作,每条链路 50 GB/s,18 条链路 → 总带宽 ≈ 900 GB/s,多 GPU 系统通信性能大幅提升。
(四)三种代码类型。
1、验证型代码
目的:验证 GPU、CUDA 环境和核函数能正常运行。特点:小规模、简单逻辑。用于测试:GPU 是否可用,核函数(kernel)是否正确执行,内存拷贝 Host ↔ Device 是否成功,通常用可预测的操作(如向量加法、数组初始化)验证结果。
2、演示型代码
通常用于展示CUDA功能或GPU特性,不追求性能极限,只要能直观展示效果即可。
3、探究型代码
在CUDA或GPU编程中通常指用来探索性能瓶颈、理解硬件行为或验证设计思路的代码。
拓展:
IPC:是一个性能指标,CPU或GPU每个时钟周期平均能执行多少条指令。
Cache(高速缓存):是一种位于CPU/GPU核心和主存之间的高速存储器,用来临时存储数据或指令,减少访问主存(DRAM)的延迟。访问主存可能需要几十到几百个时钟周期,Cache 访问只需要 1~10 个周期。CPU 设计哲学:减少单线程延迟 → L1/L2/L3 占芯片面积很大;Cache 越大,对 CPU IPC 提升越明显,但面积和功耗增加;控制逻辑复杂:多级 Cache 需要一致性协议(MESI/MOESI)保证数据一致性。

GPU 核心数量多 → 每个核心只需小缓存即可;缓存主要用于高并行带宽聚合,而不是降低单线程延迟;L1/Shared Memory 可编程 → 线程块 warp 内高效共享。
| Cache 级别 | 位置 | 容量 | 作用 |
|---|---|---|---|
| L1 / Shared Memory | 每个 SM(Streaming Multiprocessor) | 32~128 KB | 小规模高速缓存,存储 warp 数据,提高带宽聚合,隐藏延迟 |
| L2 Cache | GPU 全局共享 | 6~60 MB | 缓存 DRAM 数据,供所有 SM 访问,带宽优化为主 |
| HBM(显存) | Chip外 | 8~128 GB | 大容量,但访问延迟高,带宽聚合靠多通道实现 |
HPB:在 GPU 架构里,HPB 一般指 High Performance Bus(高性能总线) 或 High Performance Buffer(高性能缓冲),核心作用是提高GPU内部与显存访问的吞吐量。[SM 核心] → [L1/Shared Memory] → [L2 Cache] → [HPB] → [HBM 显存]。SM 核心:执行线程计算,L1/Shared Memory:每个 SM 的小缓存,隐藏访问延迟,L2 Cache:全 GPU 共享缓存,缓存全局数据,HPB(High Performance Bus / Buffer):高性能总线或缓冲区,负责:聚合 L2 缓存请求,多通道显存请求调度,缓解 L2 → HBM 的延迟,HBM(High Bandwidth Memory):显存,多通道并行访问,高带宽。核心作用:HPB 是 GPU 内部 吞吐量桥梁,连接高速缓存和大容量显存。