跳到主要内容

CXL

CXL 内存语义互联协议的三子协议设计及 2.0 到 4.0 的版本演进

核心要点

  • 基于 PCIe 物理层叠加缓存一致 + 内存语义两个新协议
  • 三子协议:CXL.io (PCIe 等价) / CXL.cache / CXL.mem
  • Device Type 1/2/3 对应不同协议组合,Type 3 (纯内存扩展) 最先大规模落地
  • 2.0 引入 Memory Pooling,3.0 引入 Sharing + GFAM + PBR Fabric (4096 节点)
  • 4.0 (2025-11) 基于 PCIe 7.0,x16 单向 ~242 GB/s
  • 延迟比直挂 DRAM 高 ~70 ns,但比 NVMe 快 20-50×,不替代 NVLink

CXL 由 CXL Consortium 于 2019-03 推出。本文写 CXL 协议本身:三子协议、Device Type 分类、版本演进、Switch / Pooling / Fabric 拓扑、延迟局限。与 NVLink / UALink / IB 横向对比见 1.14 AI 互联标准对比

本文新引入名词 (其他名词见 1.1 总览 Glossary):

  • CXL.io / CXL.cache / CXL.mem:三子协议,分别等价 PCIe / 缓存一致 / 内存语义 load/store
  • Type 1/2/3 Device:按子协议组合分类,对应 SmartNIC / GPU / 内存扩展器
  • Memory Pooling:多 host 共享一个物理内存池,region 私有 (CXL 2.0)
  • Memory Sharing:多 host 同时访问同一段内存且保持一致视图 (CXL 3.0)
  • GFAM (Global Fabric Attached Memory):直挂 Fabric 上、与 host 解耦的共享内存池
  • PBR (Port Based Routing): CXL 3.0 引入的可路由 Fabric 转发,单 Fabric 4096 节点
  • TSP (Trusted Security Protocol): CXL 3.1 引入的机密计算扩展

为什么要在 PCIe 之上再造一层协议?

补齐 PCIe 在共享内存场景下的三处语义空缺[1]:

  • 缓存不一致:PCIe 设备访问主机内存通过 DMA,CPU cache 与设备 cache 之间没有硬件维护一致性。软件必须显式 flush/invalidate,否则可能读脏数据。加速器无法以"cache line"颗粒度共享数据
  • 没有内存语义 load/store:PCIe 无法把加速器卡上的内存暴露成 CPU 可直接 load/store 的物理地址区间。CPU 访问加速器本地内存必须绕道 DMA buffer
  • 核数增长快于内存通道:多核 CPU 核数比 DRAM 通道增长更快,每核可用带宽下降;同时加速器本地内存 (如 GPU HBM) 在 CPU 视角下"摸不到",内存资源被困在单台机器内

CXL 设计原则:复用 PCIe 物理层 / 电气接口 (FlexBus 上一条链路可协商成 PCIe 或 CXL),叠加缓存一致 + 内存语义两个新协议,与 PCIe 软硬件生态向后兼容[1]

三个子协议怎么分工?

CXL.io 强制,CXL.cache 设备发起,CXL.mem 主机发起,见 @tbl-hw-cxl-sub

子协议语义主要发起方典型用途
CXL.ioPCIe 等价:MMIO / 配置 / DMA / 中断双向设备枚举、driver 初始化、控制面
CXL.cache缓存一致:设备发起 cache line 读写 / 共享 / 独占,host 仲裁设备 → 主机加速器读 CPU 工作集 (图、参数) 保持一致性
CXL.mem内存语义 load/store: host 以 cache line 颗粒度直接访问 device-attached memory主机 → 设备CPU 直挂 CXL 内存扩展模块、读 GPU HBM

@tbl-hw-cxl-sub CXL 三子协议

关键设计是不对称:CXL.cache 由设备主动访问 host 内存,host 充当一致性域 Home;CXL.mem 反过来,host 主动访问设备本地内存。这种不对称让 host 保持单一一致性管理点,避免设备间维护复杂目录协议[2]

CXL.io 强制,CXL.cache 和 CXL.mem 可选,组合方式决定 Device Type。

Device Type 1/2/3 怎么对应硬件用例?

按设备实现的子协议组合分类[2][1],见 @tbl-hw-cxl-type

Type协议组合本地暴露内存典型设备典型用例
Type 1io + cacheSmartNIC、网络加速卡、压缩/加密卸载卡缓存一致访问主机 RAM,自身无大块内存对外暴露
Type 2io + cache + mem是 (HBM/GDDR)GPU、FPGA、训练 ASIC既读 CPU 工作集,又把本地 HBM 暴露给 CPU,最完整
Type 3io + mem是 (DDR5/持久内存)CXL Memory Module、E3.S 扩展卡纯容量/带宽扩展,CPU 当"远端 DRAM"用

@tbl-hw-cxl-type Device Type

当前商用情况:Type 3 是 2024-2025 阶段最先大规模落地的形态。AMD EPYC 自 Genoa (2022) 起、Intel Xeon 自 Emerald Rapids (2023-12) 起原生支持 Type 3 内存扩展模块。Montage / Samsung / Micron / SK Hynix 等已出货 DDR5 CXL 内存扩展卡[3]。Type 1 / Type 2 落地较慢,Type 2 (CXL-attached GPU) 目前主要在原型/研究阶段。

版本怎么演进?

约每两年一代,跟随 PCIe 物理层升级[2],见 @tbl-hw-cxl-ver

版本发布日期PCIe 物理层每 lane 速率x16 单向带宽关键能力
CXL 1.02019-03-11PCIe 5.032 GT/s~64 GB/s三子协议定义,单 host 直连单 device
CXL 1.12019-06PCIe 5.032 GT/s~64 GB/s1.0 合规/互操作修订
CXL 2.02020-11-10PCIe 5.032 GT/s~64 GB/s单层 Switch、Memory Pooling、设备加密
CXL 3.02022-08-02PCIe 6.064 GT/s~121 GB/s多层 Switch/Fabric、PBR (4096 节点)、Memory Sharing、GFAM、P2P
CXL 3.12023-11-14PCIe 6.064 GT/s~121 GB/sTSP 机密计算扩展、Fabric Manager API 增强、GFAM 进一步定义
CXL 3.22024-12-03PCIe 6.064 GT/s~121 GB/s3.x 系列优化与勘误
CXL 4.02025-11-18PCIe 7.0128 GT/s~242 GB/sPCIe 7.0 翻倍,向后兼容 3.x 协议特性

@tbl-hw-cxl-ver CXL 版本演进

带宽口径:x16 单向带宽按物理层规格折算,CXL 3.x x16 = 121 GB/s,CXL 4.0 x16 = 242 GB/s[2]。注意这是单向,与 1.1 总览 PCIe 表的"双向 x16"口径不同。

Switch / Pooling / Fabric 拓扑怎么递进?

1.x 点对点 → 2.0 单层 Switch + Pooling → 3.0 多层 Fabric + Sharing

CXL 1.x:直连

CPU --- CXL link --- Device

一个 host 直挂一个 device,最早商用的 Type 3 内存扩展模块走这条路径,等同"远端一点的内存通道"。

CXL 2.0:单层 Switch + Pooling

Host A ----+
Host B ----+--- CXL Switch ---+--- Device 1 (Type 3 pool)
Host C ----+ +--- Device 2 (Type 3 pool)
Host D ----+ +--- Device 3 (Type 3 pool)

2.0 引入单层 CXL Switch,多 host 共享一组 Type 3 内存设备组成的物理池。Fabric Manager 把池中的 region 动态分配给某个 host,同一时刻一个 region 只属于一个 host (Pooling,不是 Sharing)[3]。落地厂商如 Microchip、XConn 已出货 2.0 Switch 芯片。

CXL 3.0/3.1:多层 Fabric + Sharing + GFAM

Host A --+                          +-- GFAM Memory
Host B --+--- Switch ---+--- Switch +-- GPU (Type 2)
Host C --+ + +-- Type 3 Module
Host D --+ +--- Switch +-- ...
+-- Peer-to-Peer Device

3.0 核心变化是 PBR:单 CXL Fabric 可路由扩展到 4096 节点,并支持多层 Switch 串联[2]。在此基础上:

  • Memory Sharing:多 host 同时访问同一段内存且看到一致视图,硬件维护一致性,是 Pooling 的语义升级[3]
  • GFAM:内存池直挂 Fabric 而非某 host 后面,host 通过 Switch 透明访问,进一步解耦 host 与内存
  • Peer-to-Peer:设备之间可绕过 host 直接走 Fabric 通信,给 GPU-GPU、GPU-存储等场景预留语义 (目前实际部署罕见)

3.1 在 3.0 基础上引入 TSP,给 Fabric 上的内存访问加加密与完整性保护,面向机密计算场景[2]

CXL 端到端访存延迟显著高于直挂 DRAM:PCIe SerDes + 协议层 (FlexBus / 缓存一致协议栈 / Switch 转发) 都引入开销,见 @tbl-hw-cxl-lat

内存层级典型访存延迟来源
GPU HBM3 / HBM3e (片上)~80 ns业界普遍口径
CPU 直挂 DDR5~80-100 ns业界普遍口径
CXL Type 3 (直连,无 Switch)~150-200 ns (直挂 DDR + ~70 ns CXL 开销)Montage MXC 3.1 控制器[3]
CXL Type 3 (经 Switch 池化)~200-300+ nsSwitch 转发额外加几十 ns
本地 NVMe SSD~10 us业界普遍口径

@tbl-hw-cxl-lat 内存层级延迟对比

Introl 实测:当前一代 CXL 控制器相比直挂 DRAM 引入约 70 ns 额外延迟,但相比 NVMe 仍快 20-50×[3]。这一延迟特征决定 CXL 的定位:

  • 适合做:内存容量扩展 (KV Cache 溢出、in-memory database tier)、内存池化 (弹性资源调度)、跨 host 共享数据池
  • 不适合做:训练时 GPU-GPU 高频 AllReduce (带宽差 NVLink 一个数量级,延迟差 NVLink 2 个数量级)。CXL 不与 NVLink / UALink 在 scale-up 层级竞争

CXL 与 NVLink / UALink 的具体定位差异见 1.14 AI 互联标准对比 memory-semantic 一节。

开放问题

核心问题:CXL 在 Type 2 商用化、3.0 Fabric 落地、AI 推理场景中尚未解决的关键问题有哪些?

  • Type 2 商用化:CXL 2.0/3.0 规范完整支持 Type 2 (GPU 把 HBM 暴露给 CPU),但 2024-2025 没有公开出货的 Type 2 GPU,NVIDIA/AMD 主流 GPU 仍走 NVLink/xGMI 自家协议。原因可能是带宽/延迟差距 + 生态锁定
  • 3.0 Fabric 落地节奏:3.0 发布于 2022-08,但截至 2025 年公开出货的多层 PBR Switch 仍少见。GFAM / 跨 host Memory Sharing 在生产环境的稳定性、Fabric Manager 软件栈成熟度都是开放问题
  • CXL 4.0 (PCIe 7.0) 何时商用:4.0 规范于 2025-11 发布,PCIe 7.0 物理层何时进入服务器主板 (Intel/AMD 路线图) 决定 4.0 实际可用时间
  • AI 推理 KV Cache 卸载到 CXL 的 TTFT/TPOT 影响:理论上把冷 KV Cache 放 CXL 池可省 HBM 容量,但 ~150-300 ns 延迟对 attention 访存的实际影响需 benchmark 验证

Takeaway

知识点核心结论
出现动机PCIe 三处空缺:缓存不一致 / 无 load/store / 核数 vs 内存通道失配
三子协议io 强制 + cache (设备 → host) + mem (host → 设备),不对称设计
Device TypeType 1 SmartNIC / Type 2 GPU / Type 3 内存扩展,Type 3 最先落地
版本演进1.x 直连 → 2.0 Pooling → 3.0 Sharing + GFAM + PBR (4096 节点) → 4.0 PCIe 7.0 翻倍
延迟比直挂 DRAM 高 ~70 ns,比 NVMe 快 20-50×
定位内存扩展/池化/共享,不是 NVLink 替代品
商用现状Type 3 已大规模落地,Type 2 仍研究阶段,3.0 Fabric 出货少

参考资料

  1. Rambus Blog, Compute Express Link (CXL). https://www.rambus.com/blogs/compute-express-link/
  2. Compute Express Link, Wikipedia. https://en.wikipedia.org/wiki/Compute_Express_Link
  3. Introl, CXL Memory Expansion, Pooling and Disaggregated Memory in the 2025 AI Data Center. https://introl.com/blog/cxl-memory-expansion-pooling-disaggregated-memory-ai-data-center-2025