从 CPU 拓扑到 DPU 拓扑:引出 NVLink 与 CXL
全文主线:CPU 曾是世界的中心,一切设备挂在它的树上;东西向流量打碎了金字塔;数据中心用 CLOS 把网络压扁;DPU 把网络边界推进到主机内部;NVLink 与 CXL 再把主机内部的树压扁——金字塔在所有尺度上,让位于"矩阵 + 弹性池"。
章 主题 一句话
1 CPU 拓扑 旧世界:CPU 居中,一切过根
2 树的缺陷 病因:单路径 + 必经根 + 根拥塞
3 数据中心 CLOS 药方(网络侧):压扁加宽
4 DPU 拓扑 边界移动:网络侵入主机
5 NVLink / NVL72 主机内部革命·私有高速路
6 CXL 主机内部革命·开放标准
7 多尺度统一 同一套数学,同一个方向
1. 起点:CPU 拓扑——以 CPU 为中心的世界
1.1 核内
+----------------------------------+| Core || 取指/译码 → 分支预测 → 调度 → ALU/FPU || || L1I 48KB / L1D 32KB ~4周期 | ← 每核私有| L2 1~2MB ~14周期 | ← 每核私有| SMT:1 核 = 2 个逻辑线程 |+----------------+-----------------+ | 进入片内互联网络
1.2 封装内:Mesh 互联 + 三个出口
+--------------------------------------------------+| CPU 封装(以 64 核为例) || [C0][C1][C2] ...... [C63] || | | | | || ═══╪══╪══╪══ Mesh 互联 ══(旧架构 Ring,今多 Mesh)|| | | | | || [LLC 切成 N 片,逻辑上全体共享] ~50周期 || || ─────────── 对外三个出口 ─────────── || IMC(8~12通道) PCIe RC(80~128 lanes) UPI |+───│───────────────│───────────────────│──────────+ ▼ ▼ ▼ DDR5 内存 GPU / DPU / NVMe 另一颗 CPU
要点:L3 是"分布式共享"(物理切片、逻辑统一,MESI 协议在 Mesh 上维护一致性);IMC、PCIe RC、UPI 三个出口决定了 CPU 能连什么。
1.3 多路服务器:NUMA 诞生
NUMA 节点 0 NUMA 节点 1+----------------------+ +----------------------+| CPU 0 | UPI ×2~4 | CPU 1 || [C0]...[C31] │<───────────>│ [C0]...[C31] || IMC │ ~40ns │ IMC |+────┬────────┬────────+ +────┬────────┬────────+ DDR5 PCIe DDR5 PCIe │ │ │ │ [内存A] [GPU0][DPU] [内存B] [GPU1][NVMe×4] │ ▼ ToR 交换机 本地内存 ~90ns ┃ 对端内存 ~140~190ns(过 UPI,带宽还减半)
1.4 Chiplet:封装内的分布式(AMD EPYC / 新至强)
[CCD 0] [CCD 1] [CCD 2] [CCD 3] ← 计算小片:8核+32MB L3 ╲ ╲ ╱ ╱ ═══ Infinity Fabric ═══ ← CCD 间必须经 IOD 中转 │ [中央 IOD:DDR5×12通道 / PCIe5×128 / xGMI]
L3 只在 CCD 内共享;双路互联(xGMI)走两颗 IOD 之间。软件看到的仍是两棵 NUMA 树,chiplet 是对 OS 透明的实现细节。
1.5 本章小结:CPU 拓扑 = 一棵树
层级 技术 典型带宽 延迟量级
核 ↔ L3 片内 Mesh / IF TB/s 级 ~10ns
CPU ↔ 内存 DDR5 × 8~12 通道 ~38GB/s/通道 ~90ns
CPU ↔ CPU UPI / xGMI xGMI ≈ 2× UPI 跨 NUMA +40~60ns
CPU ↔ GPU/DPU PCIe 5.0 x16 ~64GB/s ~100ns+
GPU ↔ GPU NVLink 900GB/s(H100,双向) —
核心观察:单路是一棵树,双路是 NUMA 森林——所有东西向通信,都必须先爬到 CPU 这个"根"。
- 病因:树形拓扑的结构性缺陷
[核心] ← 全网流量的汇聚点 / \ [汇聚A] [汇聚B] / \ / \ [ToR] [ToR] [ToR] [ToR] │ │ │ │ 服务器 服务器 服务器 服务器
树的隐含假设:流量以上下(南北向)为主。一旦流量变成左右(东西向),缺陷全部暴露:
缺陷 根源
1 根拥塞/收敛比:48×25G 下行 vs 2×100G 上行 → 6:1 越往上总带宽越窄
2 对分带宽小:左右两半的通信容量被根锁死 切面必经根
3 故障域放大:坏核心 = 全网瘫痪 越高越关键、越贵
4 先上后下:跨子树 5 跳,同层 1 跳 → 延迟方差大 路径必经共同祖先
5 路径唯一:无 ECMP 空间;冗余链路被 STP 阻塞 树的数学性质
6 扩展性差:规模天花板写在根设备的端口数上 单体即上限
主机内部,病也一样
网络 PCIe 设备树 NUMA 树
根 核心交换机 PCIe RC(CPU) —
瓶颈 上行链路 通往 CPU 的上行带宽 UPI 链路
跨域代价 先上后下 过根的 P2P 极差 跨节点 +50ns
单路径 STP 阻塞 链路唯一,断了子树消失 一条 UPI 路径
转折点:流量模型变了。 微服务 RPC、分布式存储副本、AI all-reduce、存算分离——全是东西向。树,在两个尺度上同时崩了。
- 药方(网络侧):CLOS / Fat-Tree / Spine-Leaf
3.1 思想源头:Clos 网络(1953)
用一堆小交换机织成网络,替代一台大交换机。Clos 定理:中间级数量 m ≥ 2n−1 时严格无阻塞。关键转变:用"网络结构"替代"单体设备",容量上限被数学消除了。
3.2 Fat-Tree:用同一种便宜交换机织出的胖树
核心0 核心1 核心2 核心3 ← (k/2)² 台 │ ╲ ╲ ╱ ╱ ╲ │ ┌────┴───────┴──┴────┴─────┴───┐ │ Pod 0 Pod 1 │ ← 共 k 个 Pod │ ┌─────────┐ ┌─────────┐ │ 每 Pod:汇聚×k/2 + 边缘×k/2 │ │ 汇聚 │ │ 汇聚 │ │ 上半层连核心,下半层连服务器 │ │ 边缘 │ │ 边缘 │ │ │ └─┬───┬───┘ └─┬───┬───┘ │ └────┼───┼──────────┼───┼─────┘ h0 h1 h2 h3 ← 每台边缘挂 k/2 台服务器 全网 k³/4 台
k=48 的体感:27,648 台服务器、2,880 台同款白盒交换机、10 万+条链路、收敛比 1:1。代价:布线噩梦、需定制路由(如 Portland 的 10.pod.交换机.主机 编址)。
3.3 Spine-Leaf:把 Clos"对折"
[Spine1] [Spine2] [Spine3] [Spine4] ╲ │ │ │ │ │ │ ╱ ════╪══╪════╪══╪════╪══╪════╪════ 全交叉:每台 Leaf 连所有 Spine Leaf1 Leaf2 Leaf3 Leaf4 │ │ │ │ [DPU] [DPU] [DPU] [DPU]
性质 说明
恒定 2 跳 任意两台服务器路径长度固定 → 延迟均匀(RDMA 友好)
路径数 = Spine 数 ECMP 哈希分担
优雅降级 坏一台 Spine:容量下降,不分区
横向扩展 加 Spine / 加 Leaf,规模不绑定任何单体设备
再大就 CLOS 套 CLOS(五阶):Leaf+Spine 组成 Fabric Pod,Pod 之间再织 Super-Spine 层——Google Jupiter、Meta、Azure 的超大规模网络皆如此。收敛比由上下行配比决定:通用业务 3~5:1,AI 集群 1.5~2:1,追求无阻塞则 1:1。
3.4 压扁加宽之后,还剩什么病?
ECMP 哈希碰撞:两条大象流哈希到同一上行 → 拥塞,别的链路闲着;
Incast:多打一,微秒级爆队列。
解药正是 DPU(如 Spectrum-X):DPU 与交换机实时互通遥测,做自适应路由——把"哈希赌运气"变成"看着路况开车"。(→ 引出第 4 章)
- DPU 拓扑:网络边界推进到主机内部
4.1 一个节点长这样
[GPU0]═NVLink═[GPU1]═NVLink═[GPU2]═NVLink═[GPU3] │ │ │ │ └───────────┴─────┬─────┴───────────┘ [PCIe Switch] │ Gen5 x16 [NVMe]────────[ CPU ]────────[ DPU ] (业务 OS/应用) (见 4.3) │ │ [DDR5 内存] │ 400G ← 主机唯一对外网口 ▼ ToR/Leaf 交换机
4.2 DPU 的三个拓扑视图
视角 看到的网络 DPU 的角色
向外 Spine-Leaf / CLOS 矩阵 矩阵的分布式延伸:OVS/VXLAN/RDMA 在主机边缘终结,东西向流量不惊动上层
向内 PCIe 设备树 树的根(RC 模式)或高端口:向 CPU 呈现 virtio/SR-IOV 虚拟设备,真实拓扑被隐藏
向上 业务/存储/RDMA/管理多个逻辑平面 "一卡多平面",多网合一的硬件基础
4.3 DPU 内部:一个隐形的管理节点
│ 对外:接 ToR/Leaf(400G) ┌───────┴────────┐ │ 可编程网络流水线 │ ← RDMA QP 的硬件终点、OVS 卸载 └───┬────────┬───┘ [ARM×16+自带OS] [硬件加速:加密/压缩/正则] └────┬────┘ [PCIe 接口 → 主机] │ 主机看到:virtio 网卡 / 虚拟 NVMe 盘,或直通 VF/SF
每台服务器实际有两套系统:业务系统(CPU)+ 基础设施系统(DPU 的 ARM)。数千个 DPU 组成一张隐藏的带外管理网。
4.4 快车道上跑的技术(数据面 + 设备虚拟化)
技术 一句话 与拓扑的关系
RDMA 网卡直接 DMA 读写两端内存,内核旁路 + 零拷贝 + 单边操作,~1μs QP/MR 在 DPU 流水线终结;GPUDirect RDMA 让 GPU 显存不过 CPU 内存直传
NVMe-oF NVMe 队列(64K×64K)映射到 RDMA QP / TCP,远端盘当本地盘 DPU 卸载后主机可无盘化(SNAP)
SR-IOV PF 切 VF 直通,线速但私有驱动、热迁移难 VF 接入 DPU 硬件 eswitch,策略由 DPU 下发
vDPA 硬件执行 virtqueue,guest 用标准 virtio 驱动 快且开放,支持热迁移,支撑弹性裸金属
应用 / VM / 容器 / 裸金属 virtio 标准驱动 厂商 VF 驱动 │ │ vDPA 硬件 virtqueue VF 直通 └───── DPU ─────┘ │ │ RDMA 快车道 NVMe-oF 存储网
4.5 遗留问题(→ 引出第 5、6 章)
DPU 解决了"主机如何接入矩阵",但主机内部仍是 PCIe 树:GPU↔GPU 的 all-reduce 要过 CPU 根,跨 NUMA 只有一条 UPI。网络已经压扁,机箱里还是金字塔——于是:
NVLink:GPU 圈的私有高速路(第 5 章)
CXL:开放标准的矩阵化(第 6 章)
5. 主机内部革命(上):NVLink / NVSwitch 与 GB200 NVL72
5.1 NVSwitch:机箱内的胖树
传统:GPU─PCIe Switch─CPU─PCIe Switch─GPU (过根,单路径) NVLink4/5 + NVSwitch: GPU0 ─┐ ┌─ GPU4 GPU1 ─┼──┼─ GPU5 每块 GPU 18 条 NVLink GPU2 ─┤NV├─ GPU6 全部接入 NVSwitch 矩阵 GPU3 ─┘开关└─ GPU7 → 任意两卡多路径直通
H100:NVLink 900GB/s,是 PCIe 5.0 x16 的 ~14 倍。AMD/Intel 等 2024 年成立 UALink 联盟做开放版——方向已是行业共识。
5.2 GB200 NVL72:一张完美双部图
指标 数值
GPU / CPU 72 × Blackwell(共 ~13.8TB HBM3e)/ 36 × Grace(共 ~17TB LPDDR5X)
结构 18 个计算托盘(每盘 2 GB200 = 2 Grace + 4 Blackwell)+ 9 个交换托盘(每盘 2 颗 NVSwitch)
交换芯片 18 颗 × 72 端口
NVLink 总带宽 130 TB/s(= 72 × 1.8TB/s)
功耗 ~120kW,液冷
布线规则(全部答案):
每块 Blackwell 18 条 NVLink,每条各奔一颗交换芯片 托盘0 托盘1 …… 托盘17 每托盘 4 GPU × 18 = 72 条 72条 72条 72条 ╞═════════╪═════════════════╪═══ 每个「托盘↔芯片」对恰好 4 条 ▼ [SW0][SW1][SW2] ……… [SW17] 18 颗芯片 × 72 口 验算:72 GPU × 18 链路 = 1296 = 18 芯片 × 72 端口 ✓ 完美双部图
5.3 布线规则直接推出的性质
任意两卡恒 1 跳,其间 18 条不相交路径;
单对可聚合 1.8TB/s(PCIe 5.0 x16 的 ~28 倍);
全网 1:1 无收敛——对分带宽 130TB/s = 72 × 1.8TB/s,CLOS 数学"用结构替代单体性能"的机架级实现;
SHARP3:all-reduce 在交换芯片里边转发边归约(FP8/FP4);
9 托盘×2 芯片不是选择,是数学唯一解:72×18÷72 = 18。
5.4 铜缆经济学:为什么死守一个机架
1296 条链路全部无源铜缆(交换托盘穿插摆放,保证 ≲0.5m);
对比光模块每机架省 ~20kW 量级;
出机架(NVL576 方向)必须转光——单机架就是铜缆的经济边界,这就是 72 的由来。
5.5 定位
NVL72 是一台电脑,BlueField-3 是它的网卡,Spine-Leaf 是它的局域网——第 3、4 章的图在这里合为一体。托盘内部:Grace 经 NVLink-C2C(~900GB/s)直连自家 4 块 Blackwell,借道 NVLink 访问全机架内存。
- 主机内部革命(下):CXL 从树到矩阵,从池化到共享
6.1 协议与设备
CXL 复用 PCIe 物理层,升级为缓存一致协议:
子协议 作用
CXL.io 就是 PCIe(枚举/DMA/中断)
CXL.cache 设备缓存主机内存,硬件保证一致
CXL.memory 主机访问设备上的内存
设备类型 例子 用到的协议
Type 1 智能网卡/加速器 .cache
Type 2 GPU/FPGA(带显存) .cache + .memory
Type 3 内存扩展器/池 .memory
6.2 三个阶段:扩展 → 池化 → 共享
PCIe 时代(树) CXL 时代(矩阵): CPU (RC) Host1 Host2 Host3 / │ \ ╲ │ ╱ GPU NIC NVMe ┌─────────────────────┐ (单根单路径, │ CXL Switch │ ← 相当于 Spine 多主机=多棵不相通的树) └─────────────────────┘ / │ │ ╲ 内存池 GPU池 FPGA池 NVMe池
阶段 能力 机理 状态
① 扩展 单机内存扩容(+2TB,延迟约本地 1.5~2 倍) OS 识别为新 NUMA 节点,冷页下沉 已量产
② 池化(CXL 2.0) 多主机独占式共享内存池 MLD:逻辑设备独占绑定,交接靠软件 flush + 重绑(GB 级/毫秒级) 试点
③ 共享(CXL 3.0) 多主机同读同写同一区域 Back-Invalidation,硬件一致性 硬件在路上
6.3 CXL 3.0 Back-Invalidation:把"反向窥探权"交给网络
CXL 2.0 为什么不能真共享?因为主机是唯一的一致性权威——B 写了内存,A 缓存里的旧值无人能失效。
CXL 3.0(2023.8)新增反向消息(BI-SnpInv / BI-SnpData):允许网络向主机缓存发起窥探:
Host A Fabric(交换芯片当"目录") Host B │ 读X,缓存X(S) │ │ 读X,缓存X(S) │ │◄─────────────────────────│ 欲写X,请求升级到M │◄── BI-SnpInv(X) ──│ ← 反向窥探:打进主机缓存! │ X: S→I,回ACK ────►│ │ │ │─────────────────────────►│ 获M,写入 X=20 │ 再读X: miss │ │ │──────────────────►│ 从 B 干预/回传新值 │ M→S │◄── X=20 (S) ──────│◄─────────────────────────│
你其实早就见过这门手艺:双路服务器里 CPU1 写 X,就是经 UPI 窥探失效 CPU0 的缓存。CXL 3.0 = 把 socket 间窥探机制从 UPI 延伸到交换矩阵上,"机架 = 一台大号多路机"在内存层面成立。 附带:GPF(全局持久化刷写)+ FM API(fabric 标准化管理面)。
6.4 与 RDMA 的范式对照
RDMA CXL 3.0 共享内存
范式 消息传递(单边读写) 共享内存
一致性 无,应用自己 fencing 硬件缓存一致
编程 QP/MR/Verbs 普通 load/store
带宽 400G ≈ 50GB/s/链 每主机口 ~64GB/s(单向)
适合 大块传输 读多写少的共享元数据/锁/消息队列/引用计数
注意代价:窥探数百 ns(跨 socket 同级)、带宽低于 DDR/NVLink 一个量级——慢但通,与 NVLink"快而专"互补。
- 多尺度统一:同一套数学,同一个方向
数据中心 主机内部 共同思想
三层树(核心/汇聚/接入) PCIe 树 / NUMA 树 单根、单路径、必经根
单体核心交换机 单体大型主机 容量天花板写在硬件上
Spine-Leaf / Fat-Tree NVSwitch 矩阵 / CXL Switch 压扁:固定跳数;加宽:多路径
ECMP 多路径 18 条 NVLink 并行 / CXL 多端口 并行链路堆出对分带宽
Clos 定理(m≥2n−1) NVL72 双部图(72×18=18×72) 用数学结构替代单体性能
存储 → NVMe-oF 弹性存储池 内存 → CXL Type-3 弹性内存池 局部资源 → 共享弹性资源
服务器 = 计算节点 CPU host = 计算节点 节点只管算,通信交给矩阵
DPU:边缘可编程端点 DPU:设备树的翻译官 两个尺度都需要边缘智能
阵营 NVSwitch / NVL72 CXL 3.0 + BI
性质 NVIDIA 私有 开放标准
对分带宽 130 TB/s 每主机口 ~64GB/s(单向)
距离 单机架,铜 跨机箱、跨机架
定位 快而专(AI) 慢而通(通用) - 结语
70 年前 Clos 为电话局发明"用小交换机网络替代大交换机"。此后同一场革命被重演了四次:
电话网(1953)→ 数据中心→ 经 DPU 侵入主机→ CXL 把总线摊成网络,NVL72 把网络叠回总线。
拓扑进化的方向只有一个:从金字塔变成"矩阵 + 弹性池";而 DPU 在每个尺度上都扮演同一个角色——站在边缘的翻译官和交通警察。
附:关键数字速查
数字 含义
2n−1 Clos 严格无阻塞条件
k³/4 k 元胖树服务器数(k=48 → 27,648)
2 跳 Spine-Leaf 任意两点恒定跳数
~90 / ~140ns 本地 / 跨 NUMA 内存延迟
900GB/s H100 NVLink(PCIe5 x16 的 ~14 倍)
1296 = 72×18 = 18×72 NVL72 完美双部图
130 TB/s NVL72 全网对分带宽,1:1 无收敛
16 LD / BI-SnpInv CXL 2.0 池化 / 3.0 共享的分水岭