CXL介绍
cxl介绍
CXL简介
PCIe以及DDR的一些挑战和限制为CXL成为新的总线协议成为了可能:
挑战1.host和device两者内存的非一致性:
PCIe设备不能缓存系统内存以利用时间或空间局部性或执行原子的操作序列。任何PCIe设备访问host内存的请求都必须交给RC来处理,由RC来保证设备看到的内存和cpu的缓存结构的数据一致。反过来从host访问device内存也是如此。
挑战2.内存可扩展性:
随着计算的需求增大,对内存带宽和容量要求也越来越高。通过增加DDR通道来扩展内存会消耗更多的引脚以及更多的开销。而PCIe可以通过更小的代价来提升带宽能力(a x16 Gen5 PCIe port at 32 GT/s offers 256 GB/s with 64 signal pins. DDR5-6400 offers 50 GB/s with ∼200 signal-pins)。PCIe的限制导致PCIe设备不能作为内存扩展设备,CXL则可以。
CXL1.0 addresses both Challenge 1 (coherency) and Challenge 2 (memory scaling) by enabling CXL devices to cache system memory
挑战3.内存资源使用效率不高:
一台机器为了处理峰值业务通常会配更多的内存,但是在业务空闲的时候,大部分内存资源就会处于空闲状态,导致内存资源使用效率低下。
CXL 2.0 additionally addresses Challenge 3 (resource stranding) by enabling resource pooling across multiple hosts.
CXL 3.0 addresses Challenge 3 on a larger scale with multiple levels of CXL switching
挑战4.分布式数据共享:
分布式系统通常通过网络来数据共享,有些场景数据量很小,但是通过网络传输时延高。CXL3通过支持更复杂的拓扑来达到这一目标
基础概念
CXL是一种基于PCIe物理层提供的一种总线协议。它提供了低延迟和高带宽传输特性,能更好的支持加速器设备访问Host系统内存,以及Host系统去访问加速器设备的内存,如图所示:
当cpu和device能直接访问各自内存之后,DMA带来的device-mem和host-mem拷贝就不需要了。
CXL提供了三种协议:
- CXL.io:类似于PCIe的语义,用于发现和枚举设备、寄存器访问、DMA、MSI中断等功能。
- CXL.mem:支持Host Processor直接(load/store)访问设备内存,类似于host内存,可成为cachable内存,这样host内存和device mem都变成了统一内存视图。
- CXL.cache:device可以cache host内存
不同的加速器或者设备可选择性的实现CXL.mem和CXL.cache协议,下图就是一些典型场景的例子(网卡/GPU/内存扩展),定义了三种设备type1/2/3。
type1类型主要实现CXL.io和CXL.mem,用于一些智能网卡,需要一致性语义,同时还是保持PCIe的DMA传输。
type2类型实现了CXL.io、CXL.mem、CXL.cache,device内存map到host内存-cache体系中去,device也可以缓存host内存,用于GPU、FPGA设备。
type3作为内存扩展设备,可以以更低的功耗、更少的引脚、更低的成本来实现内存的扩展。
目前CXL已经发展到3.1版本了,3.0版本基于之前扩展了很多关键特性,包括swtich、p2p、内存共享的能力:
一致性问题解决:
type1的设备比较好理解,对于host来说就是cpu cache的一部分,用MESI协议来控制devcie-cache和其他L3 cache的一致性。
cxl3.0之前默认type2就是HDM-D,type3就是HDM-H,cxl3出来之后新增了一个HDM-DB可被用于type2/type3
HDM | Host-managed Device Memory. Device-attached memory that is mapped to system coherent address space and accessible to the Host using standard write-back semantics. Memory located on a CXL device can be mapped as either HDM or PDM. |
---|---|
HDM-H | Host-only Coherent HDM region type. Used only for Type 3 Devices. |
HDM-D | Device Coherent HDM region type. Used only for Type 2 devices that rely on CXL.cache to manage coherence with the host. |
HDM-DB | Device Coherent using Back-Invalidate HDM region type. Can be used by Type 2 devices or Type 3 devices. |
HDM-H模式(全靠host来管理一致性):Uncacheable 内存,或者需要flush invalid内存
HDM-D/HDM-DB:有device Coherent模块来参与一致性协议的交互。
type1 device
主要用到了cxl.cache 协议,可以理解为clx.cache 被当作是cpu-cache的一部分,通过host processer的snoop 机制来保证一致性:
CXL.cache协议允许设备使用MESI一致性协议来缓存主机内存。为了保持设备上的协议简单,由主机来管理所有Cache的一致性,设备不直接和其他cache进行交互
type2 device
既有cache 也有device-attached memory(DDR、HBM等等),CXL的主要目标也是降低host去发送操作至设备内存以及从设备内存获取结果的开销。这样涉及两方的内存一致性,规范称之为:Host-managed Device Memory with Device Managed Coherence (HDM-D/HDM-DB)。
区别于传统的PCIe设备,PCIe设备的内存是私有的(Private Device mem),会涉及大量的数据拷贝(从host内存拷贝至PDM),通过device和驱动来管理一致性。
Bias-based Coherency Model for HDM-D Memory:
The HDM-D coherence model allowsthe device to change the state of the host using a CXL.cache request
上图展示一个从host-bias转换成device-bias的过程,因为X的独占权限不在device这边,发布一条命令后,host这边的不得不放弃独占权限,然后通过CXL.mem通道告诉device放弃成功,后面device只需要跟自己的DCOH交互即可获取数据,不再需要跟host交互了。
host改变Cache状态,被称作bias 翻转,从host bias 翻转到了device-bias,
hostbias 是指host访问自身Cache即可,不用跟设备的DCOH交互,如果设备需要访问该数据,则需要跟host的交互,这样有利于host内存操作。在hostbias 模式下, coherency flows允许从主机到设备附加内存的高吞吐量访问。
相反则是device-bias:在这种模式下,设备可以访问设备连接的内存,而无需咨询主机的一致性引擎
CXL与CPU内部的一系列一致性实现兼容。
The host scales to multiple CPU sockets or caches as defined in the host specific protocol (Proprietary CPU-to-CPU), which defines an internal Home Agent to resolve coherence between host caches (which incorporate CXL.cache devices).
CXL3.0差异:
- 更高的带宽
- 不再是单一路径传输,支持在CXL网络中存在多条路径(PC)
- 支持点对点传输,当没有冲突发生时不需要host介入
PCIe的ordering rule排除了任何非树状结构,这意味着两点之间只有一条路径。由于软件依赖于生产者-消费者排序模型,CXL协议需要兼容树状拓扑,同时支持网络拓扑,通过UIO
BI HDM-DB 允许设备反向snoop 和invalid 主机:
这样host相当于不是中心点去管理所有cache了,device和host更像一个对等的关系,因为以前只能通过host去Invalid设备,现在设备也能去Invalid
CXL挑战:
随着核心数量增加,缓存一致性带来的巨大开销
引用:
CXL_3.1-Webinar-Presentation_Feb_2024.pdf
An Introduction to the Compute Express Link (CXL) Interconnect