CXL:内存层级的下一次重组

内存一直是计算机体系结构里最少被讨论、但最常成为瓶颈的部分。CPU 的进化有 Moore’s Law 可以讲,GPU 的进化有 FLOPS 的增长曲线可以讲,内存的进化……大部分时候就是 DDR 的版本号在变,DIMM 的规格在更新,延迟数字在缓慢改善。

CXL(Compute Express Link)试图打破这个格局。它不只是一个新的内存接口标准,它的方向是让服务器的内存层级从静态的、预先划分好的,变成动态的、可组合的

这件事如果做成了,对数据中心的架构影响相当深远。


内存层级的现状和问题

先说清楚现状。

今天的服务器,内存是固定插在主板 DIMM 槽上的。一台服务器配多少 DRAM,在采购时就决定了,之后基本不变。这个模型的问题在现代数据中心里越来越明显:

利用率不均衡。内存密集型工作负载(数据库、内存计算、向量化搜索)总是在抢内存,CPU 密集型工作负载里的内存经常闲置。这两种工作负载很可能跑在同一个集群里,但内存资源无法在它们之间动态流动。

NUMA 的扩展性问题。多路服务器通过 NUMA 扩展内存容量,但 NUMA 访问的延迟惩罚是真实的——跨 NUMA 节点的内存访问延迟比本地访问高出 30-50%。扩大内存容量和保持低延迟访问在 NUMA 架构下是矛盾的。

AI 工作负载的内存压力。大语言模型的推理需要把整个模型权重加载进内存,一个 70B 参数的模型用 FP16 存储需要 140GB,用 FP32 需要 280GB。这个需求规模已经超出单路服务器的合理配置范围,但扩展到多机又引入了网络传输延迟。

这三个问题的共同根源是:内存资源和计算资源被物理地捆绑在一起,无法独立扩展


CXL 是什么

CXL 是 Intel 主导、多家厂商联合制定的互联标准,基于 PCIe 物理层。它的核心目的是让 CPU、GPU、内存控制器之间能够用统一的协议通信,共享一个内存地址空间。

CXL 定义了三种协议:

CXL.io:类似 PCIe,用于设备发现和配置,传统 I/O 语义。

CXL.cache:允许设备(比如智能网卡、GPU)缓存主机 CPU 的内存。设备在访问主机内存时不需要每次都触发 DMA,可以在本地缓存,由 CXL 协议保证缓存一致性。

CXL.mem:允许主机 CPU 访问设备上的内存,就像访问本地 DRAM 一样(从 CPU 的视角)。设备上的内存(比如独立内存扩展模块)可以出现在 CPU 的物理地址空间里。

三个协议里,CXL.mem 是最能改变架构格局的那个

它意味着可以做到这样的硬件配置:服务器主板上插少量高速 DRAM,然后通过 CXL 接口连接外部的内存扩展模块(CXL Memory Expander),CPU 访问这些外部内存的方式和访问本地 DRAM 几乎相同,只是延迟稍高。更进一步,一个 CXL 内存池可以被多个主机共享——这叫内存池化(Memory Pooling)


内存池化的工程含义

内存池化是 CXL 最受关注的应用场景,值得单独解释。

设想一个机柜里有 10 台服务器和一个 CXL 内存池(比如 4TB 的大容量内存模块)。这 10 台服务器通过 CXL 交换机(CXL Switch)连接到这个内存池。当某个服务器上跑的工作负载需要更多内存,可以动态地从内存池里划分一部分给它;当工作负载结束,内存归还给池子,可以分配给其他服务器。

这个模型对数据中心运维意义:

过配(Overprovisioning)减少。现在数据中心里,内存通常按峰值使用量的 120-150% 配置,因为你不知道哪台机器的哪个工作负载会突然需要大量内存,而且内存扩展需要停机。有了 CXL 内存池,可以按平均使用量配本地 DRAM,峰值需求从池子里动态补充。这直接降低了总体内存成本。

新型工作负载成为可能。AI 推理的一个实际问题是:加载一个 140GB 的模型需要 140GB 以上的内存,但这台机器在不跑推理时,这些内存就闲置了。CXL 内存池化让”共享大内存”的模式可行,不同机器可以轮流使用大块内存,而不是每台机器都常驻一个大模型。

存算分离的内存层面实现。云原生的存算分离已经在计算和存储之间做了,CXL 把这个分离推到了内存层面。计算节点可以是高密度 CPU,内存节点可以是大容量低功耗内存模块,两者独立扩展,按需组合。


延迟:那个无法忽视的数字

CXL.mem 的关键问题是延迟。

本地 DDR5 DRAM 的访问延迟大约在 80-100 纳秒。CXL 内存扩展的延迟,根据 Intel、Micron 等厂商的测试数据,大约在 200-300 纳秒范围内——相当于本地 DRAM 的 2-3 倍。

这个差距从技术上说来自两部分:CXL 协议本身的开销(序列化/反序列化),以及物理层传输延迟(PCIe 链路)。CXL 3.x 的优化方向之一是降低这个协议开销,但物理层的限制是有下界的。

对工程师来说,200-300 纳秒是一个需要认真对待的数字。

对于顺序访问、大块读写的工作负载(HPC 的矩阵运算、流式数据处理),这个额外延迟的影响很小,因为内存带宽是主要瓶颈,不是单次访问延迟。CXL 内存在这些场景下几乎和本地 DRAM 一样好用。

对于随机访问、延迟敏感的工作负载(内存数据库的点查询、图计算的边遍历),200 纳秒的额外延迟会直接体现在 p99 响应时间上。Redis、RocksDB 这类工作负载如果冷热数据分层放,冷数据在 CXL 上,热数据在本地 DRAM 上,是可行的;但如果全部放 CXL,性能退化会很明显。

这意味着 CXL 内存不是对本地 DRAM 的简单替代,而是一个新的存储层级——延迟比本地 DRAM 高,但比 NVMe SSD 低得多(NVMe 的访问延迟通常在 70-100 微秒级别)。

DRAM → CXL Memory → NVMe SSD → 网络存储

这是数据中心内存层级正在形成的新格局。


软件栈的挑战

硬件准备好了,软件还没跟上。

Linux 内核从 5.x 开始增加了 CXL 驱动支持,但应用层对 CXL 内存的利用仍然主要依赖 NUMA 接口——把 CXL 内存设备作为一个新的 NUMA 节点暴露给系统,应用通过 mbind/numactl 等接口把内存分配定向到 CXL 节点。

这个方法能用,但不优雅。因为 NUMA 接口设计时假设的是”哪个 CPU 离哪块内存近”,而不是”哪块数据访问频率高适合放在低延迟内存”。NUMA 感知的内存管理是拓扑感知的,不是访问模式感知的。

真正充分利用 CXL 的软件路径需要:

DAMON(Data Access Monitor)+ 内存分层:Linux 内核的 DAMON 机制可以追踪内存页的访问热度,结合内存分层(Memory Tiering)功能,自动把冷数据迁移到 CXL 内存,热数据保留在本地 DRAM。这个功能在 Linux 6.x 里正在成熟,但需要调优,默认行为不总是最优。

数据库引擎的 CXL 感知:理想情况下,数据库引擎(以 PostgreSQL 为例)应该知道哪部分 buffer pool 在 CXL 上,哪部分在本地 DRAM 上,并根据查询的热度动态调整数据放置。目前没有主流数据库做到这一步,这是一个研究和工程实践都还在进行中的方向。

运行时的自适应:Java、Go 这类带 GC 的运行时,GC 的行为和内存访问延迟紧耦合。当部分堆内存在 CXL 上时,GC 的扫描开销会不均匀地增加。运行时需要 CXL 感知才能做出合理的内存布局决策。

软件栈的成熟需要时间,通常是硬件标准完成后 3-5 年才会出现生产可用的完整方案。CXL 1.0 在 2019 年发布,3.0 在 2022 年发布,按这个节奏,2025-2027 是软件生态逐渐成熟的窗口期。


谁在推动,谁在观望

推动 CXL 落地最积极的是三类参与者:

内存厂商(Micron、SK Hynix、Samsung):CXL 内存扩展模块是新的产品形态,溢价空间比普通 DIMM 更高。这三家都已经有商业化的 CXL 内存产品在出货。

超大规模数据中心(Google、Meta、Microsoft):这些公司的数据中心规模足够大,内存利用率提升 10% 就是可观的节省。他们有足够动力推动 CXL 生态的软件成熟,也有足够的工程资源做定制化集成。

AI 芯片厂商:随着 AI 工作负载的内存需求持续增长,HBM(高带宽内存)的容量已经不够用,CXL 提供了一条扩展内存容量而不需要重新设计芯片的路径。NVIDIA H200/B200 的 HBM 容量已经相当可观,但推理时的 KV cache 需求仍然可能超过它,CXL 内存扩展是潜在的补充。

观望的主要是中小规模的云服务商和企业数据中心:CXL 设备的价格还高,软件支持还需要调优,ROI 不够清晰。等超大规模玩家把生态跑通、价格随量下来,这部分用户才会跟进。这个过程通常需要 3-5 年。


这件事的意义

计算机体系结构里有一个旧的共识:处理器和内存是分离的两个池子,通过固定的物理接口相连。CXL 试图打破的是这个”固定”——让内存成为一个可以弹性分配、跨机器共享的资源,就像计算资源可以通过虚拟化和容器来弹性分配一样。

这不是一个炒作周期里的概念,Intel、AMD 的新一代服务器处理器已经原生支持 CXL,主流数据中心厂商已经在测试,软件生态在追赶。它的落地节奏不会像新模型发布那样有明确的时间点和发布会,而是会悄悄地渗透进数据中心的基础设施更新周期里。

几年后,”这台机器配了多少内存”可能会是一个不够精确的问题。精确的问法应该是:”这台机器本地 DRAM 多少,CXL 池子分了多少。”


CXL:内存层级的下一次重组
https://www.krli.org/2026/05/08/CXL-内存层级的下一次重组/
作者
李科燃
发布于
2026年5月8日
许可协议