PCIe
PCIe 在 AI 系统里扮演的通用总线角色及其带宽演进
核心要点:
- AI 服务器中连接 CPU / GPU / NIC 的通用高速总线
- PCIe 5.0 x16 单向 63 GB/s / 双向 126 GB/s
- 是 GPUDirect RDMA / GPUDirect Storage 的物理基础
- 无 NVLink 时承担 GPU-GPU 兜底通信,带宽仅为 NVLink 的 1/7-1/14
- CXL 1.x / 2.0 复用 PCIe 5.0 物理层;CXL 3.0 复用 PCIe 6.0
代际带宽怎么演进的?
每代带宽翻倍,4 代覆盖了 2010-2022,规格见 @tbl-hw-pcie-gen。
| 版本 | 发布年 | 单 Lane 带宽 (双向) | x16 双向总带宽 | 主要应用场景 |
|---|---|---|---|---|
| PCIe 3.0 | 2010 | ~2 GB/s | ~31.5 GB/s | V100 PCIe,旧 GPU |
| PCIe 4.0 | 2017 | ~4 GB/s | ~63 GB/s | A100 PCIe,H20,ConnectX-6 |
| PCIe 5.0 | 2019 | ~8 GB/s | ~126 GB/s | H100 PCIe,B200 PCIe,ConnectX-7 |
| PCIe 6.0 | 2022 | ~16 GB/s | ~256 GB/s | 下一代 (规范已定,待商用) |
@tbl-hw-pcie-gen PCIe 代际带宽
带宽数字为理论峰值双向,实际可用带宽因协议开销约低 2-5%。x16 指 16 条 Lane 并行。
PCIe 在 AI 系统中承担哪几类角色?
CPU↔GPU 数据搬运、GPU↔NIC RDMA 直传、GPU↔GPU 兜底三大类。
CPU ↔ GPU 数据传输
主机内存 (DRAM) 到 GPU 显存 (HBM) 的搬运必须经 PCIe。典型操作:模型权重首次加载、输入 batch 传输、KV Cache 换出。
关键约束:PCIe 带宽 (63-126 GB/s) 远低于 HBM 带宽 (3-6 TB/s),推理场景下"首 Token 前的权重加载"和"KV Cache 卸载到 CPU 内存"是主要延迟来源。
GPU ↔ NIC (GPUDirect RDMA)
GPUDirect RDMA 让 NIC 直接读写 GPU 显存,数据不经 CPU 和系统内存。但 DMA 传输仍走 PCIe 总线,PCIe 带宽是 GPUDirect RDMA 实际吞吐的上界。
H100 配 ConnectX-7 (PCIe 5.0) 时,GPUDirect RDMA 单端口吞吐可接近 400 Gbps (~50 GB/s),此时 PCIe 5.0 的 126 GB/s 留有充足余量。
GPU ↔ GPU (无 NVLink 时的兜底)
无 NVLink/NVSwitch 配置 (如 H100 PCIe 版 8 卡通过 PCIe Switch 连接) 时:
GPU A → PCIe Switch → GPU B
AllReduce 带宽受限于 PCIe Switch 上行/下行带宽之和,实测 8 卡 PCIe 配置下 AllReduce BusBW 约为 NVLink 方案的 1/8-1/10。
NVLink 和 PCIe 的带宽差距有多大?
NVLink 5.0 比 PCIe 5.0 快 14×。对比见 @tbl-hw-pcie-vs-nvlink。
| 互联方式 | 双向带宽 (每 GPU) | 典型单跳延迟 | 适用场景 |
|---|---|---|---|
| PCIe 5.0 x16 | 126 GB/s | ~1-3 us | CPU-GPU,GPU-NIC,无 NVLink 时的 GPU-GPU |
| PCIe 4.0 x16 | 63 GB/s | ~1-3 us | A100 PCIe,老一代 GPU-NIC |
| NVLink 3.0 (A100) | 600 GB/s | ~1-2 us | DGX A100 节点内 |
| NVLink 4.0 (H100) | 900 GB/s | ~1-2 us | DGX H100 节点内 |
| NVLink 5.0 (B200) | 1800 GB/s | <1 us | NVL72 节点内 |
@tbl-hw-pcie-vs-nvlink NVLink vs PCIe 带宽对比
关键推论:NVLink 4.0 是 PCIe 5.0 的 7×,NVLink 5.0 是 14×。这一差距直接决定 TP (张量并行) 性能上界 — TP 组必须落在 NVLink 域内才能发挥应有效率。
GPUDirect 是怎么省 CPU 中转的?
通过 PCIe 对等传输 (Peer-to-Peer DMA) 让 NIC 或 SSD 直接访问 GPU 显存,省去两次 CPU 内存拷贝。
GPUDirect RDMA:
- 传统路径:
GPU 显存 → CPU 内存 (PCIe) → NIC DMA (PCIe) → 网络 - GPUDirect 路径:
GPU 显存 → NIC DMA (PCIe,直接对等) → 网络
实现条件:NIC 和 GPU 需在同一 PCIe Root Complex (或通过支持 ACS 的 PCIe Switch 互联)。延迟优势在小消息时尤为明显 (省去 CPU 软中断和内存拷贝的固定开销)。
GPUDirect Storage:类似机制,NVMe SSD 控制器直接向 GPU 显存 DMA,用于大模型权重从本地存储直接加载。
CXL 跟 PCIe 是什么关系?
CXL 基于 PCIe 物理层,但叠加了一致性协议。CXL 1.x/2.0 复用 PCIe 5.0,CXL 3.0 复用 PCIe 6.0。版本能力见 @tbl-hw-pcie-cxl。
三个子协议:
- CXL.io:功能等同 PCIe,用于设备发现和配置
- CXL.cache:加速器对主机内存的缓存一致性访问
- CXL.mem:主机对加速器本地内存 (HBM) 的直接内存语义访问
| CXL 版本 | 物理基础 | 关键能力 | AI 相关性 |
|---|---|---|---|
| CXL 1.x | PCIe 5.0 | CPU-加速器一致性互联 | 简化数据共享,减少显式拷贝 |
| CXL 2.0 | PCIe 5.0 | 内存池化、Switch 拓扑 | GPU 显存扩展 (HBM 不足时接 CXL 内存池) |
| CXL 3.0 | PCIe 6.0 | 多层 Switch、P2P | 多 GPU 共享内存池 (研究阶段) |
@tbl-hw-pcie-cxl CXL 版本能力
CXL 在 AI 互联中仍处早期落地阶段,主要价值在解决单 GPU 显存容量瓶颈,而非替代 NVLink 做高带宽 GPU-GPU 通信。详见 1.12 CXL。
PCIe 在大模型训练中的核心局限是什么?
AllReduce 带宽瓶颈 + TP 规模受限。
AllReduce 瓶颈 (8 卡无 NVSwitch 服务器)
典型拓扑:8 卡 GPU 通过 2 个 PCIe Switch 分两组,两 Switch 再通过 PCIe Retimer 或 PLX 上联。跨组 GPU AllReduce 带宽受限于 Switch 上行口,实测 BusBW 约 30-50 GB/s (vs NVLink 的 400-900 GB/s)。
TP 规模限制
PCIe 配置下 TP 通常只能在 4 卡内有效 (TP=8 时 AllReduce 耗时过长)。更大规模 TP 依赖 NVLink 域。
解决思路
- 节点内:NVLink + NVSwitch 替代 PCIe 做 GPU-GPU 通信,PCIe 仅保留 CPU-GPU 通路
- 节点间:IB 或 RoCE 承担跨节点 AllReduce,避开 PCIe 上行瓶颈
- 模型分配:TP 组约束在 NVLink 域内,DP/PP 跨 PCIe/IB
Takeaway
| 知识点 | 核心结论 |
|---|---|
| 代际带宽 | PCIe 5.0 x16 双向 126 GB/s,PCIe 6.0 翻倍到 256 GB/s |
| AI 系统角色 | CPU↔GPU 搬运 / GPU↔NIC GPUDirect RDMA / GPU↔GPU 兜底 |
| vs NVLink | NVLink 5.0 比 PCIe 5.0 快 14×,TP 必须落在 NVLink 域 |
| GPUDirect | P2P DMA 直通显存,省 CPU 中转,延迟优势在小消息明显 |
| CXL 关系 | CXL 复用 PCIe 物理层,叠加一致性协议;解决显存容量而非带宽 |
| 训练瓶颈 | 8 卡 PCIe AllReduce BusBW 约为 NVLink 的 1/8-1/10 |