9.9 Hot-Plug (热插拔)

这一节的核心是说明 CXL 如何在继承 PCIe 热插拔模型的基础上,增加了针对缓存和内存一致性的关键软件流程,以确保系统稳定。

CXL 热插拔的核心要点

CXL 热插拔功能允许在系统运行时动态地添加或移除 CXL 设备,但这需要 CXL 感知软件的深度参与。

  1. 基于 PCIe, 拓展于 CXL: CXL 热插拔沿用了 PCIe 的基本模型和元素,但为其增加了管理 CXL.cache 和 CXL.mem 的新规则。

  1. “托管式热移除” (Managed Hot-Remove): 这是与标准 PCIe 最大的不同。

    • 问题: 如果一个拥有缓存(CXL.cache)或内存(CXL.mem)的设备被突然拔掉,可能会导致数据丢失或系统因访问不到这些地址而崩溃。
    • CXL 解决方案: 在移除设备前,软件会收到一个移除请求通知。CXL 感知的系统软件必须执行以下关键操作,以实现“优雅”移除:
    • 写回缓存: 命令设备将其缓存中的所有“脏”数据写回主机内存。
    • 下线内存: 通知操作系统内核,将该设备提供的内存区域(HDM)从系统内存图中移除,确保没有新的访问。
    • 只有完成这些步骤后,才能安全地断开设备电源。
  1. “热添加” (Hot-Add):

    • 当一个新设备插入时,CXL 感知软件会发现其 CXL.cache 和 CXL.mem 的能力。
    • 软件会进行初始化和配置,例如,将新发现的内存容量和属性(如延迟、带宽)通知给操作系统的内存管理器,使其可供应用程序使用。
  1. 对 eRCD 的特殊处理:

    • RCD/eRCD 设备不支持热插拔。规范定义了相应机制(例如,在系统启动后由固件设置 Disable_RCD_Training 位),以防止用户在运行时热添加 RCD 设备,避免导致不可预测的行为。

总结

9.9 节 的核心思想是:CXL 的热插拔不仅仅是一个物理动作,更是一个需要软件深度介入的、管理一致性状态的流程。与普通 PCIe 设备不同,对 CXL.cache/mem 设备的热插拔必须由 CXL 感知软件来精心“编排”,以确保数据不丢失、系统不崩溃。这是实现 CXL 系统灵活性和可维护性的关键。

zood