CXL_System_Architecture
一、CXL 核心概念与设备类型
CXL(Compute Express Link)是一种用于互联外设的高性能 I/O 总线架构。它可以连接传统 I/O 设备、内存设备或具有额外能力的加速器。
CXL 设备的三种类型
- Type 1 设备(缓存设备 - CXL Device w/o Memory)
- 核心特征:内部拥有与主机一致的缓存,但不带自己的内存。
- 协议:使用
CXL.cache
和 CXL.io
。
- 应用场景:用于需要执行复杂原子操作或自定义排序模型的加速器,标准的生产者 - 消费者模型已无法满足需求。其缓存容量受限于主机的窥探过滤能力。
- Type 2 设备(带内存的缓存设备 - CXL Device w/ Memory)
- 核心特征:同时拥有与主机一致的缓存和自己附加的内存(如 DDR,HBM)。
- 协议:唯一一种协商并使用全部三种协议的设备:
CXL.cache
,CXL.mem
和 CXL.io
。
- 应用场景:需要在自身附加内存和主机之间进行高带宽、低延迟数据交换的加速器,如 GPGPU。
- Type 3 设备(内存设备 - CXL Memory Expander/Accelerator)
- 核心特征:拥有自己附加的内存,但没有与主机一致的缓存。
- 应用场景:作为主机的内存扩展器,或者在特定模式下作为存内计算等类型的加速器。
二、主机管理设备内存(HDM)与一致性模型
当 Type 2 和 Type 3 设备的内存暴露给主机时,被称为主机管理设备内存(Host-managed Device Memory,HDM)。HDM 的一致性管理有三种模式:
- HDM-H(Host-only Coherent):完全由主机负责一致性。
- HDM-D(Device Coherent):设备通过 CXL.cache 参与一致性管理。
- HDM-DB(Device Coherent using Back-Invalidate Snoop):设备通过 CXL.mem 中的专用通道管理一致性。
- HDM-D:基于偏置的一致性模型
这是一种性能优化模型,通过切换内存的“偏置”状态,来决定在某一时刻优先满足主机还是设备的访问性能。
- 主机偏置(Host Bias):主机访问设备内存的性能最优,而设备访问则需通过主机,性能受限。适用于主机准备数据或回收结果的阶段。
- 设备偏置(Device Bias):设备访问其本地内存的性能最优(无需通过主机),而主机的访问性能则受影响。适用于设备执行计算的阶段。
- 模式管理:CXL 支持两种偏置管理方案。
- 软件辅助:由软件(驱动)根据可预测的应用流程来发起偏置转换。
- 硬件自主:由硬件根据实时的访问请求来预测和调整偏置状态,适用于访问模式复杂的应用。
- HDM-DB:基于反向无效化侦测的一致性
- 核心机制:在
CXL.mem
协议中增加了专用的 BISnp(Back-Invalidate Snoop)和 BIRsp(Back-Invalidate Response)通道,让设备可以直接向主机发起窥探请求。
- 重要性:
- 它取代了使用
CXL.cache
来管理 HDM 一致性的方法。
- 所有支持 256B Flit 模式的设备都必须支持此功能。
- 它是实现多个 Type 1/Type 2 设备扩展的关键,允许单个主机桥下连接最多 16 个此类设备。
三、高级设备配置与扩展
- 多逻辑设备(Multi-Logical Device - MLD)
- 定义:一种 Type 3 设备,可将其内部资源分割成最多 16 个相互隔离的逻辑设备(LD)。
- 管理:由 Fabric Manager(FM)通过一个特殊的 FM-owned LD(FMLD)进行管理。
- LD-ID:使用逻辑设备 ID 来区分,CXL.io 支持 16 位,而 CXL.mem 只支持 4 位。
- 寄存器:MLD 中普通 LD 的物理链路相关寄存器是被虚拟化的,写入无效或仅镜像 FMLD 的状态,以确保对共享资源的统一控制。
- 多头设备(Multi-Headed Device)
- 定义:一种拥有多个 CXL 物理端口(“头”)的 Type 3 设备。
- 类型:
- MH-SLD:所有“头”都呈现为单逻辑设备(SLD),头与 LD 之间为 1:1 映射。
- MH-MLD:可以在“头”上呈现为多逻辑设备(MLD),多个 LD 可映射到单个“头”。
- LD 池:整个物理设备的 LD 池可以支持超过 16 个 LD,因为 16 的限制是针对单个“头”的(源于 CXL.mem 的 4 位 LD-ID)。设备通过本地 ID 到全局 ID 的映射机制来管理。
- 管理:所有多头设备的内存资源管理都遵循 MLD 模型,必须支持以 LD 为基础的资源隔离。
四、CXL Fabric 与可扩展内存架构
- CXL Fabric
- 定义:依赖于基于端口的路由(PBR)的高级交换拓扑,可实现灵活、低延迟、大规模(最多 4096 个 PID)的互联。
- Fabric 附加内存(Fabric-Attached Memory - FAM)
- 共享模式:
- 池化内存(Pooled FAM):每个内存区域专用于单个主机。
- 共享内存(Shared FAM):多个主机可并发访问同一内存区域。
- 实现方式:
- LD-FAM:通过 MLD/MH-SLD 等逻辑设备形式暴露。
- G-FAM(Global-FAM):通过 PBR 链路连接到 CXL Fabric,具有更高的可扩展性。
- 共享 FAM 的一致性模型
当多个主机共享 FAM 时,由 FM 指定一致性模型。
- 多主机硬件一致性:MLD 设备硬件负责跟踪和维护跨主机的一致性。写入操作必须是两阶段的(先获取所有权,再写入)。
- 软件管理的一致性:硬件不负责,完全由各主机上的软件通过协调机制来保证一致性。这种模型需要警惕“干净写回”问题,它可能破坏数据一致性。
五、可管理性(Manageability)
CXL 采用一个分层、多标准的管理框架。
- 基础层:通过 PCIe 配置空间和 MMIO 进行设备发现和基础配置。
- 安全层:通过 DOE 或 MCTP 传输安全管理流量。
- 高级层:通过组件命令接口(CCI)执行高级管理,命令通过 Mailbox、MCTP 或隧道传输。
- 平台层:可选地使用 DMTF 的 PLDM 进行平台级监控和固件更新。