AMD xGMI / Infinity Fabric 互联技术
AMD xGMI(Cross-GPU Memory Interconnect)基于 Infinity Fabric 总线实现,是 AMD GPU 系列的高速片间互联协议。从 MI100 到 MI300X,xGMI 经历了从"多卡点对点连接"到"单封装多芯粒全互联"的架构跃迁。MI300X 在单封装内通过 xGMI 将 8 个计算裸片(XCD)全互联,实现了与 NVLink 4.0 相当的节点内互联带宽,并在统一内存架构上走出了与 NVIDIA 不同的设计路线。
技术背景
Infinity Fabric
Infinity Fabric 是 AMD 于 2017 年(Zen 架构)引入的统一片内/片间互联总线,覆盖范围从 CPU 内部的核心互联(CCX 间),到多 CPU/GPU 的封装间连接。其核心特性是带宽可扩展、延迟确定性强,并支持一致性缓存协议。
xGMI(Infinity Fabric 的片间扩展)
xGMI 是 Infinity Fabric 在多芯片场景下的对外接口形态,专用于 GPU 之间或 GPU 与 CPU 之间的高速直连。与 NVLink 的功能定位相同(均为节点内高速互联),但协议设计和拓扑选择存在明显差异:NVLink 通过 NVSwitch 实现全连接,xGMI 在 MI200 时代采用有限点对点连接,在 MI300X 时代通过单封装解决了拓扑限制。
代际规格演进
| 产品代际 | 互联技术 | 每链路单向带宽 | 节点内链路配置 | 节点内聚合双向带宽(每 GPU/Die) |
|---|---|---|---|---|
| MI100 | xGMI 3.0 | ~23 GB/s | 3 条链路(连接 3 个邻居) | ~138 GB/s |
| MI200(2-Die 封装) | xGMI 3.0 | ~23 GB/s | Die 间 8 条链路 | 封装内 ~368 GB/s(双向) |
| MI300X(8 XCD 封装) | xGMI 3.1 | 片内高速 Fabric | 封装内全互联 | ~5.3 TB/s(HBM 聚合,所有 XCD 共享) |
注:MI300X 的"聚合带宽"统计口径与 MI200/MI100 不同。MI300X 中 XCD 通过 IOD(IO Die)上的 Infinity Fabric 互联,所有 XCD 共享同一批 HBM3 堆栈,带宽不再是"每 GPU 卡"的概念,而是整个封装的统一内存带宽。
MI300X 多芯粒封装架构
MI300X 是 AMD 迄今为止拓扑最复杂的 GPU 封装,核心组成如下:
MI300X 封装内部结构:
[XCD 0] [XCD 1] <- 计算裸片(CDNA3 架构,GCD)
[XCD 2] [XCD 3]
[XCD 4] [XCD 5]
[XCD 6] [XCD 7]
|
[IOD 0][IOD 1][IOD 2][IOD 3] <- IO Die(负责 HBM 控制器、PCIe、xGMI 对外接口)
|
[HBM3] x 8 堆栈(共 192 GB,5.3 TB/s)
关键设计决策:
- 8 个 XCD 共享 4 个 IOD 上的 HBM3 控制器,形成统一内存地址空间(UMA)
- XCD 间通过 IOD 上的 Infinity Fabric 互联,无需外部 xGMI 链路或交换芯片
- 对软件层完全透明——ROCm 视整个 MI300X 为单个 GPU 设备(192 GB 显存)
- 与 H100 SXM(80 GB 显存 + 8 卡 NVLink 全连接)相比,MI300X 单卡显存容量大 2.4 倍
封装内带宽 vs 封装外:
XCD 间通过 IOD Fabric 通信的带宽(封装内,~TB/s 量级)远高于封装外的节点间 xGMI 链路(~数百 GB/s),与 NVLink 节点内 vs 节点间的带宽层级差异类似。
节点间 xGMI 配置(MI200 时代)
MI300X 之前,多卡 GPU 服务器依靠节点间 xGMI 链路互联。以 MI200 为例:
- 拓扑:8 卡 MI200 服务器通过 xGMI 形成"Hive"拓扑(非全连接,类似环形或部分 Mesh)
- 跨 GPU 延迟:xGMI 直连约 400-600 ns,与 NVLink 延迟量级相当
- 带宽限制:非全连接拓扑导致部分 GPU 对通信需要 2 跳,有效带宽低于直连
- 软件感知:ROCm 中
rocm-smi --showtoponuma可查看 xGMI 链路权重
与 NVIDIA H100 的对比:H100 SXM 通过 NVSwitch 实现 8 卡全连接,所有 GPU 对延迟和带宽一致;MI200 的 Hive 拓扑存在带宽不对称性,对 AllToAll(MoE 路由)等操作的性能影响更明显。
ROCm 软件栈的通信支持
RCCL(ROCm Collective Communications Library)
RCCL 是 AMD 对标 NCCL 的集合通信库,直接调用 xGMI/Infinity Fabric 链路完成节点内通信,调用 RDMA(RoCE 或 InfiniBand)完成节点间通信。
主要特性:
- 自动检测 xGMI 拓扑权重,优先使用直连链路,避免多跳路由
- AllReduce 算法根据拓扑选择 Ring 或 Tree:Ring 适合均匀全连接,Tree 适合非对称拓扑
- 支持与 NCCL API 兼容的接口,方便 PyTorch/JAX 等框架移植
NUMA 感知:MI300X 的 8 个 XCD 在 ROCm 软件栈中表现为 NUMA 节点,RCCL 会感知 XCD 间 Fabric 距离优化通信路径。
统一内存架构(MI300X 的差异化设计)
MI300X 的核心差异化是"统一内存"(Unified Memory Architecture):
- CPU 和 GPU 共享同一物理内存地址空间(CPU DDR5 + GPU HBM3 均可直接访问)
- 消除了传统 CPU-GPU 数据传输中的显式
memcpy开销 - 对大模型推理的影响:模型权重可直接在 CPU 侧分配,推理时按需 prefetch 到 HBM,有效支持超大模型(>192 GB)的分片加载
这一设计与 NVIDIA 的方向不同——NVIDIA 在 GB200 中通过 NVLink-C2C 实现 Grace CPU 和 Blackwell GPU 的统一内存,两者殊途同归。
与 NVLink 的对比
| 指标 | AMD xGMI(MI300X) | NVIDIA NVLink 4.0(H100 SXM) |
|---|---|---|
| 节点内拓扑 | 封装内全互联(8 XCD,单封装) | NVSwitch 全连接(8 卡) |
| 节点内芯片间互联带宽 | ~1.6 TB/s(封装内 IOD Fabric,XCD 间传输峰值) | 900 GB/s × 8 = 7.2 TB/s(NVLink 聚合) |
| 节点内 HBM 内存带宽 | ~5.3 TB/s(8 堆栈 HBM3,所有 XCD 共享) | ~3.35 TB/s(HBM3,单卡) |
| 每 GPU 显存 | 192 GB(单封装) | 80 GB(单卡)× 8 = 640 GB(集群) |
| 节点间互联 | PCIe 5.0 + RoCE/InfiniBand | NVSwitch(节点内)+ InfiniBand(节点间) |
| 集合通信库 | RCCL | NCCL |
| 统一内存 | 是(CPU+GPU 共享) | 部分(NVLink-C2C,Grace Hopper) |
| 软件生态成熟度 | 追赶中(ROCm 持续完善) | 成熟(CUDA 生态) |
关键权衡:MI300X 单卡显存容量大幅领先(192 GB vs 80 GB),适合单卡部署超大模型;H100 SXM 8 卡集群的 NVLink 聚合互联带宽(7.2 TB/s)高于 MI300X 的封装内 Fabric 互联带宽,在多卡 TP 训练任务上 H100 集群有优势。注意 MI300X 的 5.3 TB/s 是 HBM 内存带宽(非芯片间互联带宽),两者量纲不同,不可直接对比。