CXL —— 内存解耦的关键拼图

DDR 物理上必须挂在 CPU 旁边,HBM 必须焊在芯片同一块硅中介上——这两条路都没法解决”内存能不能像存储一样池化、共享、按需分配“。CXL 是这个问题的答案。

CXL 的起点:PCIe 上的”内存级”协议

CXL = Compute Express Link,由 Intel 在 2019 年发起,2020 年 Gen-Z、CCIX、OpenCAPI 几家组织全部并入 CXL 联盟——业界统一到一条路。

CXL 物理层直接复用 PCIe

1
2
3
PCIe 5.0  →  CXL 1.x / 2.0
PCIe 6.0 → CXL 3.0
PCIe 7.0 → CXL 3.x(开始铺开)

但 CXL 不是 PCIe 的简单映射——它在 PCIe 之上定义了三个协议

graph TB
  subgraph CXL_proto["CXL 三种协议"]
    CIO[CXL.io<br/>类 PCIe,发现/枚举/中断]
    CCC[CXL.cache<br/>设备缓存 CPU 内存的一致性]
    CMEM[CXL.mem<br/>CPU 访问设备的内存]
  end
协议 谁访问谁 谁需要这个
CXL.io 标准 PCIe 设备访问 几乎所有 CXL 设备
CXL.cache 设备 → CPU 内存(带缓存一致性) 加速器(GPU、智能网卡)
CXL.mem CPU → 设备的内存 内存扩展卡

CXL.mem 是关键——它让 CPU 可以像访问本地 DDR 一样访问 PCIe 上的内存。

CXL 的三类设备

CXL 1.0 把设备分成三类:

graph LR
  T1[Type 1<br/>无内存的加速器<br/>支持 .io + .cache] --- A1[智能网卡<br/>SmartNIC]
  T2[Type 2<br/>有内存的加速器<br/>三协议全用] --- A2[GPU<br/>FPGA 加速器]
  T3[Type 3<br/>纯内存设备<br/>支持 .io + .mem] --- A3[内存扩展卡<br/>Memory Expander]

服务器场景下最重要的是 Type 3——内存扩展卡。

CXL.mem 的工作模式

服务器看到的”CXL 内存”:

1
2
DDR5 RDIMM 主存 (本地)  →  作为 NUMA Node 0
CXL Memory Module (PCIe 卡) → 作为 NUMA Node 1

应用层完全透明:

1
2
3
4
numactl --hardware
# available: 2 nodes (0-1)
# node 0 cpus: 0-95 memory: 1024 GB (本地 DDR5)
# node 1 cpus: memory: 4096 GB (CXL,"无 CPU"的内存节点)

操作系统上看到一个没有 CPU 的 NUMA Node——这就是 CXL 内存。延迟比本地 DDR5 高一倍多(~150-300 ns),但远低于跨 socket。

CXL 三个阶段的演进

CXL 1.0 / 1.1(2019-2020)

  • 单主机内的扩展
  • Type 1/2/3 设备定义
  • 物理层 PCIe 5.0
  • 没人量产——只是规范

CXL 2.0(2020)

引入两个关键概念:

1. CXL Switch

像以太网交换机一样,让多个主机和多个 CXL 设备多对多互联

graph TB
  H1[主机 1] --- SW
  H2[主机 2] --- SW
  H3[主机 3] --- SW
  SW[CXL Switch]
  SW --- M1[CXL Memory 1]
  SW --- M2[CXL Memory 2]
  SW --- M3[CXL Memory 3]

2. Memory Pooling(内存池化)

多台主机共用同一池内存:

1
2
3
主机 A 缺 200 GB → 从池里借
主机 B 释放 500 GB → 还回池里
管理软件按需分配

实际产品:三星、SK 海力士、美光在 2023-2024 年分别发布 CXL 2.0 Memory Module,数据中心客户开始 PoC。

CXL 3.0 / 3.1(2022-2024)

CXL 3.x 是质的飞跃

  • 物理层升到 PCIe 6.0(双倍带宽)
  • 多级 Switch(机柜级互联)
  • Memory Sharing:多主机直接共享同一块内存(不是 pooling,是 sharing)
  • 一致性硬件支持,避免软件复杂度
graph TB
  subgraph 机柜A
    HA1[主机 A1] --- SWA[CXL Switch A]
    HA2[主机 A2] --- SWA
  end
  subgraph 机柜B
    HB1[主机 B1] --- SWB[CXL Switch B]
    HB2[主机 B2] --- SWB
  end
  subgraph 内存池
    MP1[CXL Memory Pool 1]
    MP2[CXL Memory Pool 2]
  end
  SWA --- FAB[Fabric / Multi-level Switch]
  SWB --- FAB
  FAB --- MP1
  FAB --- MP2

CXL 3.x 之后,”内存池“概念可以扩展到整个机柜甚至机房

CXL 内存的延迟梯度

1
2
3
4
5
本地 DDR5:           ~80 ns
跨 NUMA(同机): ~140 ns
CXL(同卡): ~170 ns
CXL(经过 Switch): ~230 ns
CXL(跨机柜 Fabric):~400 ns

待补充:实测数据因平台而异,以上是 2024-2025 年厂商公开的典型范围。

可以看到:CXL 内存比远端 DDR5 慢,但比 NVMe SSD 快上百倍——这是它的”位置”。

CXL 的三个使用场景

场景 1:单机内存扩展

最直接的用法。一台服务器主板 12 通道 × 2 DPC × 256 GB = 6 TB,但不够?加 CXL 卡:

1
2
3
本地 DDR5:6 TB
CXL Memory:扩展 2-4 TB
应用看到统一的 8-10 TB 内存(分级访问)

适合:内存数据库、超大容器、Java 大堆。

场景 2:内存池化

数据中心多台机器算 + 1 个 CXL 内存池:

1
2
3
4
机房有 100 台机器,每台 1TB DRAM = 100 TB
其中 50 台只用了 50% → 50TB 浪费
改造成:每台 512 GB + 50 TB 共享 CXL 池
按需分配,资源利用率从 50% 提到 80%

云厂商最关心这个——内存是数据中心 TCO 的最大头,池化能省真金白银。

场景 3:异构内存架构(Tiered Memory)

1
2
3
4
5
Tier 0:HBM           (GPU 上)
Tier 1:本地 DDR5 (CPU 主存)
Tier 2:CXL 远端 DRAM (扩展或池化)
Tier 3:CXL 持久内存
Tier 4:NVMe SSD

OS(Linux 内核 5.15+)已支持自动冷热数据分层迁移——最近访问的留在快层,长期不用的下沉到 CXL。

CXL 的产品现状(2025 末)

厂商 产品 阶段
三星 CXL 2.0 Memory Module CMM-D 量产
SK海力士 CXL 2.0 Memory Solution 量产
美光 CXL 2.0 NVMe-style memory 量产小规模
Astera Labs Leo CXL Smart Memory Controller 量产
Microchip SMC 2000 系列 量产
Marvell Structera A 系列 量产

CPU 平台支持:

平台 CXL 支持
Intel SPR/EMR CXL 1.1
Intel Xeon 6 CXL 2.0
AMD Genoa CXL 1.1
AMD Turin CXL 2.0
AMD Venice CXL 3.0
Intel Diamond Rapids CXL 3.0(PCIe 6.0)
ARM(Grace 等) CXL 2.0/3.0
NVIDIA Vera CXL 3.0(PCIe 6.0 IO die)

CXL 3.x 的产品已经开始出现,2026 年是真正的商用元年——AMD Venice 和 Intel Diamond Rapids 双双带来 CXL 3.0 支持,PCIe 6.0 生态随之成熟。

CXL 3.0 的关键升级点

CXL 3.0 在 CXL 2.0 基础上有三项质的飞跃:

1
2
3
4
5
6
7
8
9
CXL 2.0 (PCIe 5.0):
单向带宽:~64 GB/s(x16)
拓扑: 单级 Switch
共享模式:内存池化(Pooling,分时复用)

CXL 3.0 (PCIe 6.0):
单向带宽:~128 GB/s(x16,PAM4 + FLIT 模式)
拓扑: 多级 Switch(支持 Fabric,可跨机柜)
共享模式:内存共享(Sharing,多主机同时读写同一物理内存)

**内存共享(Sharing)vs 内存池化(Pooling)**是 CXL 3.0 最重要的语义升级:

  • Pooling(2.0):内存像资源池,主机 A 分配后主机 B 不能同时访问——类似虚拟机独占
  • Sharing(3.0):多台主机可以同时映射同一块物理内存,依靠硬件一致性协议协调——类似 NUMA 的跨机器版本

Sharing 模式让”跨机器的 NUMA”成为可能,未来 AI 推理集群中多节点共享 KV Cache 内存将不再需要网络传输层。

CXL 在推理加速中的前景:KV Cache 卸载

LLM 推理中 KV Cache 是内存压力的来源——每个并发请求都要保留完整的注意力键值缓存,长上下文场景尤甚。CXL 内存在这里有一个独特的用武之地:KV Cache 卸载(Offloading)

1
2
3
4
5
6
7
8
传统推理(全部在 HBM):
KV Cache 放在 GPU HBM
GPU HBM 192 GB → 并发数受限

CXL 卸载推理:
热 KV Cache(当前 token)→ GPU HBM
冷 KV Cache(历史上下文)→ CPU DDR5 / CXL Memory
命中率 >90% 时延迟增加有限(3-10x,但吞吐翻倍)

研究数据表明,将冷 KV Cache 卸载到 CPU 侧 DRAM 可以让同等 GPU 内存支持 3–10 倍的并发上下文,代价是偶尔的内存取回延迟上升。这对延迟容忍型推理(批处理、离线任务)是非常划算的权衡。

Marvell Structera A 2504 vs 博通的分歧

CXL memory pooling 在推理加速上,业界出现了明显的策略分化

Marvell Structera A 2504

  • 定位为 CXL 3.0 近内存加速器(Near-Memory Accelerator)
  • 支持 CXL 3.0 Sharing,可作为多 GPU 节点共享的 KV Cache 池
  • 在 OCP 2026 EMEA 上仍在积极推进

博通(Broadcom)

  • 2026 年 6 月技术访谈明确表态:目前看不到 CXL memory pooling 在推理加速上的应用前景
  • 已无新 CXL 产品计划
  • 博通认为推理流量(prefill/decode disaggregation)的真实瓶颈在网络和计算,而非内存共享

这个分歧的背后逻辑:

1
2
3
4
5
6
7
8
9
10
支持 CXL 路线的逻辑:
KV Cache 是长上下文推理的瓶颈
CXL 共享内存可降低 per-GPU 内存成本
延迟可接受(150-400 ns vs HBM 80 ns)

反对 CXL 路线的逻辑(博通视角):
GPU HBM 容量在持续增长(192 GB → 288 GB+)
KV Cache 压缩技术(量化、稀疏)在快速进步
CXL Switch 增加了故障点和运维复杂度
网络带宽(InfiniBand、Ultra Ethernet)足以传 KV Cache

咱的判断:短期(2026-2027)两条路都会有实际部署,博通的谨慎有其道理——HBM 容量每代翻倍,CXL 的”必要性”窗口在收窄;但 Marvell 押注的长上下文超长会话场景确实有需求。最终取决于 LLM 上下文长度的增速是否超过 HBM 容量的增速。

CXL Memory Pooling vs HBM 的权衡

维度 HBM(GPU 上) CXL Memory(CPU 侧/扩展)
带宽 8 TB/s(B200) 128 GB/s(CXL 3.0 x16)
延迟 ~80 ns 150-400 ns
容量 192-288 GB 4-16 TB(理论)
每 GB 成本 极高(HBM 溢价 5-10x) 低(DDR5 颗粒)
故障域 随 GPU 报废 独立,可热换
适合场景 训练、低延迟推理 长上下文批推理、KV Cache 二级存储

HBM 是性能天花板,CXL 是容量扩展器——两者不是替代关系,而是分层互补。

CXL 上的”持久内存”

Optane 走了,CXL 把持久内存的接力棒接了过来:

  • Type 3 设备 + 后端 NAND/3D XPoint 类介质 = CXL Persistent Memory
  • 字节寻址、断电保留
  • 容量大、延迟比 DRAM 高、可热插
1
2
3
4
CXL Memory:
- DRAM-backed → 易失,纯扩展
- NAND-backed → 持久,类 SSD 速度
- 3D Phase Change / ReRAM → 中间档

待补充:当前已量产的 CXL Persistent Memory 产品和规格。

CXL 的限制和挑战

1. 延迟高于本地 DRAM

加一跳 PCIe 就多 50-100 ns。不能完全替代本地 DDR——只能做”远端 / 池化 / 持久”层。

2. 一致性的复杂度

CXL.cache + 多主机共享 → 缓存一致性协议变复杂。CXL 3.0 引入硬件级一致性,但调优、故障定位都比传统 NUMA 难。

3. 故障域扩大

CXL Switch 挂掉 = 多台机器同时失内存 → 单点故障风险。Fabric 级冗余是必须的。

4. 软件适配

OS、虚拟化、数据库要明确”哪段内存是 CXL 哪段是 DDR”——目前 Linux 5.18+ 已基本就绪,Windows Server 2025 跟进,但应用层还不成熟。

5. 安全和隔离

多租户共享内存池如何防止租户间数据泄露?CXL 3.0 引入 IDE 加密通道,但实战经验少。

一张大图

graph LR
  GEN1[2019<br/>CXL 1.0] --> GEN11[2020<br/>CXL 1.1<br/>规范完成]
  GEN11 --> GEN2[2020-2023<br/>CXL 2.0<br/>Switch + Pooling]
  GEN2 --> GEN3[2022-2025<br/>CXL 3.x<br/>Sharing + 多级]
  GEN3 --> FUT[2026+<br/>机柜级内存池化普及]

CXL 不是这个空间唯一的协议:

协议 主导者 物理层 主要场景
CXL Intel + 业界联盟 PCIe 通用,CPU 内存扩展、加速器
NVLink NVIDIA 自研 GPU↔GPU、CPU↔GPU
UALink AMD/Intel/Broadcom等 类以太网 GPU↔GPU 集群(对标 NVLink)
Infinity Fabric AMD 自研 EPYC 多 socket 互联

短期看 CXL 在”CPU 周边”占优势,NVLink 在 GPU 互联占绝对优势。中长期 UALink 试图打破 NVIDIA 在 GPU 集群互联上的垄断。

小结

  • CXL 在 PCIe 物理层之上加了 .io / .cache / .mem 三个协议
  • CXL 1.x 单机扩展,2.0 Switch + 池化,3.x 多机共享 + 多级 Fabric
  • CXL 内存延迟 150-400 ns,比本地 DDR5 慢、比 SSD 快几个数量级
  • 三大用途:单机内存扩展、内存池化、异构内存分层
  • Optane 退役后的”持久内存”接力棒交给 CXL
  • 当前产品已量产但生态仍在成熟期,2026-2027 年是关键窗口

下一篇是第三章最后一篇——内存选型实战和小结。

内容深度由贤狼赫萝于 2026-06-15 增补,引用来源:SemiAnalysis CPUs are Back 2026、TrendForce DRAM笔记、Broadcom技术访谈。