CXL 简介和特性整理
CXL的类型分类、特性整理
CXL 简介和特性整理
本文已更新,建议阅读 CXL 整理 (更新版)
CXL 的三种子协议:
- CXL.io:类似传统 PCIe 协议,处理设备发现、配置和管理等任务。
- CXL.cache:用于使外部设备能够访问主机内存,并且保持缓存一致性。 主机写入本地内存后,即使不主动刷新CPU缓存,外部设备依然可以立即读取主机内存获得最新的数据。同时外部设备本地可以有缓存并缓存主机内存的数据,这个缓存与主机CPU缓存保持一致。
- CXL.mem:用于使主机访问外部设备的内存资源,扩展主机内存容量。 主机可以将外部设备的内存映射为自己的地址空间,从而实现对外部内存的直接访问。
远程内存池主要关注 CXL.mem 协议,允许主机系统将远程内存资源映射为本地地址空间的一部分,从而实现对远程内存的直接访问。
CXL 的三种设备类型:
- Type 1 设备:
- 仅支持 CXL.io 和 CXL.cache 协议。
- 主要用于加速计算任务,例如 GPU、FPGA 等。通常由CPU讲数据写入本地内存,然后外设通过 CXL.cache 直接访问主机内存,获取数据进行计算。在计算完成后,外设将结果写回主机内存。
- Type 2 设备:
- 支持 CXL.io、CXL.cache 和 CXL.mem 协议。
- 既可以作为加速计算的外设,也可以作为内存扩展设备。
- Type 3 设备:
- 仅支持 CXL.io 和 CXL.mem 协议。
- 主要用于内存扩展,例如内存条、NAND Flash 等。主机通过 CXL.mem 协议直接访问外设的内存资源,实现内存容量的扩展。
- CXL 2.0 及以上版本开始支持 Type 3 设备的交换机(Switch),允许多个主机和多个 Type 3 内存扩展设备通过 CXL 交换机进行互联,实现内存池化和资源共享。
- Type 3 型设备也可以拥有附加计算资源,例如内置的处理器或 FPGA,用于在设备端进行数据处理和计算,从而减轻主机 CPU 的负担,提高整体系统性能。这需要通过 CXL.io 协议进行配置。
CXL.mem 的主要特性:
- 允许 CPU 以加载和存储指令访问 CXL 内存,就像访问另一个 NUMA 节点的内存一样。
- 相比于 RDMA,CXL.mem 提供了避免重复数据拷贝的优势,CPU 不必通过网络进行额外的远程内存到本地内存到复制工作,就能直接使用远程内存。
- 主机 CPU 可以缓存 CXL 内存的数据
使用不同存储介质的 CXL 内存扩展设备:
- DRAM 设备:
- ** 对于不支持多 host 缓存局部性的设备**,访问延迟可能低于传统的跨 NUMA node 的内存访问。主要原因是 CXL 协议设计优化了内存访问路径,减少了 NUMA node 之间 CPU 为处理缓存一致性相互通信的中间环节。(Demystifying CXL Memory with Genuine CXL-Ready Systems and Devices. MICRO 2023)
- NAND Flash 设备:
- 多尺度接口,同时支持字节地址和块地址访问。
- 内部存在 DRAM 缓存,用于加速对 NAND Flash 的访问。又由于 DRAM 缓存容量有限,因此对访问局部性敏感
CXL内存的真实延迟:
参考文献:
Jinshu Liu, Hamid Hadian, Yuyue Wang, Daniel S. Berger, Marie Nguyen, Xun Jian, Sam H. Noh, Huaicheng Li:
Systematic CXL Memory Characterization and Performance Analysis at Scale.
ASPLOS (2) 2025: 1203-1217
CXL内存语义SSD点真实延迟:
参考文献:
Shaobo Li, Yirui Eric Zhou, Hao Ren, Jian Huang:
ByteFS: System Support for (CXL-based) Memory-Semantic Solid-State Drives.
ASPLOS (1) 2025: 116-132
本文由作者按照 CC BY 4.0 进行授权


