CXL Hotplug流程

前言:

CXL(Compute Express Link)3.0 在 PCIe Hot-Plug 模型的基础上扩展了对缓存一致性(Coherency)和内存语义(Memory Semantics)的支持,同时定义了针对 Hot-Add(热添加) 和 Managed Hot-Remove(受控热移除) 的流程。以下是关键流程和机制解析:

1. Hot-Add(热添加)流程

目标:在系统运行时安全添加 CXL 设备(如 CXL 加速卡、内存扩展设备)。
步骤:

1. 物理插入:

○ 用户将 CXL 设备插入支持 Hot-Add 的插槽(如 CXL Root Port 或 Downstream Switch Port)。
○ 设备上电后触发 Hot-Plug 事件(如 PRESENT# 引脚变化)。

2. 硬件检测与链路初始化:

○ Root Port 或 Switch 检测到设备存在,启动链路训练(Link Training)。
○ 若设备为 eRCD(Exclusive Restricted CXL Device (formerly known as CXL 1.1 only Device). eRCD is a CXL device component that can operate only in RCD mode.),需检查 Disable_RCD_Training 位:
■ 若该位已设置(由系统固件在启动时配置),链路训练将失败,阻止操作系统发现 eRCD。
■ 若未设置,链路可能成功建立,但需依赖后续软件处理。

3. 软件发现与配置:

○ 系统软件(如 OS 或管理程序)通过 PCIe 配置空间发现新设备,读取其 CXL Capability Structures(如 DVSEC CXL 寄存器)。
○ 验证设备类型与功能:
■ 检查是否为 CXL.cache(缓存一致性设备)或 CXL.mem(内存扩展设备)。
■ 确认 Root Port 是否支持设备功能(通过 DVSEC Flex Bus Port Capability 寄存器)。

4. 资源初始化:

○ CXL.cache 设备:
■ 读取设备缓存大小(通过 DVSEC CXL Capability2 寄存器),与主机侦听过滤器(Snoop Filter)容量比对。
■ 配置 Cache_SF_Coverage 字段(在 DVSEC CXL Control 寄存器中),限制设备使用的侦听过滤器资源,避免过载。
○ CXL.mem 设备:
■ 通过 CDAT(Coherent Device Attribute Table) 获取内存性能属性(如延迟、带宽),配置 HDM(Host Managed Device Memory)解码器,实现内存地址映射与交织(Interleaving)。
○ 若设备支持电源管理初始化(PM Init),需等待其完成后启用功能。

5. 功能启用:

○ 软件启用设备的 CXL.cache 或 CXL.mem 能力,将其纳入系统一致性域。
○ 更新全局资源分配(如内存地址空间、能源预算)。

2. Managed Hot-Remove(受控热移除)流程

目标:安全移除正在运行的 CXL 设备,避免数据丢失或系统崩溃。
步骤:

1. 用户触发移除请求:

○ 通过物理按钮或软件界面发起移除请求,触发 Hot-Plug 事件。

2. 软件准备:

○ CXL.cache 设备:
■ 使用 Cache Writeback and Invalidation 能力,强制设备回写所有脏缓存行(Modified Cachelines),确保数据一致性。
○ CXL.mem 设备:
■ 若启用了 CXL.mem 隔离(Isolation),停止对设备内存的访问。
■ 若未隔离,需通过操作系统卸载相关内存区域(如 Linux 中使用 offline_memory)。

3. 设备停用:

○ 软件禁用设备的 CXL 功能,将其从一致性域中移除。
○ 释放资源(如 HDM 解码器、侦听过滤器条目)。

4. 物理移除:

○ 软件通知用户可安全移除设备。
○ 设备下电后,硬件触发 Link Down 事件,系统清理残留状态。

3. Surprise Hot-Remove(意外热移除)处理

场景:设备被直接拔出,无预先通知。
硬件保护:
● 电气安全:所有 CXL 设备和 Switch 必须设计为支持意外拔插,避免短路或信号损坏。
● 链路隔离:
○ CXL.cache 隔离:若设备缓存中有脏数据且未启用隔离,主机访问可能超时,需依赖 Downstream Port Containment 能力隔离错误。
○ CXL.mem 隔离:若未启用 HDM 隔离,主机对设备内存的访问可能失败,需触发错误恢复机制。
软件恢复:
● 检测到 Link Down 后,标记设备为失效状态。
● 清理相关资源(如释放内存映射、更新 CDAT)。

4. 关键寄存器与能力

在这里插入图片描述

5. 设计注意事项

● eRCD 的特殊处理:
○ eRCD 热添加可能导致不可预测行为,需通过 Disable_RCD_Training 位阻止链路训练,或依赖 Hot-Plug 处理程序标记为失败。
● 能源管理:
○ Hot-Add 后需重新评估系统能源预算(GPF Energy Budget),必要时降频或限制设备功耗。
● 固件与软件协作:
○ 系统固件需在启动阶段配置 Disable_RCD_Training,操作系统需实现 CXL 感知的 Hot-Plug 驱动。

6.CXL type3 设备热添加流程

  1. 系统固件可能为将来的热添加准备系统(例如,填充资源以满足热添加适配器的需求)。
  2. 用户在空插槽中热添加 CXL 内存扩展器。下游端口以 CXL VH 模式启动链路。
  3. 生成 PCIe 热插拔中断。
  4. 总线驱动程序执行标准 PCIe 热添加操作,从而启用 CXL.io。
    此过程将 BAR 分配给设备。
  5. CXL 感知软件(例如,操作系统中的 CXL 总线驱动程序、设备驱动程序或其他软件实体)探测设备上的 CXL DVSEC 功能并确保 HDM 处于活动状态。内存可以由硬件、适配器上的 FW 或设备驱动程序初始化。
  6. CXL 感知软件在设备、交换机和主机桥(例如 GPF DVSEC、HDM 解码器)上配置 CXL DVSEC 结构。
  7. CXL 感知软件将新内存及其属性(例如延迟和带宽)通知操作系统内存管理器。内存管理器处理请求并将新内存添加到其分配池中。
  8. 可以通过注意指示器或其他用户界面通知用户成功完成。

7.CXL type 3 设备管理的热移除流程

  1. 用户通过注意按钮或其他用户界面发起热移除请求。
  2. 触发标准 PCIe 热移除流程(例如,如果使用了注意按钮,则通过热插拔中断)。
  3. CXL 感知软件(例如,操作系统中的 CXL 总线驱动程序、设备驱动程序或其他软件实体)探测设备上的 CXL DVSEC 功能并确定活动内存范围。
  4. CXL 感知软件请求操作系统内存管理器腾出这些范围。
  5. 如果内存管理器无法满足此请求(例如,由于存在固定页面),CXL 感知软件将向热删除处理程序返回错误,该处理程序将通知用户操作失败。
  6. 如果内存管理器能够满足此请求,CXL 感知系统软件将重新配置 CXL 交换机和根端口中的 HDM 解码器。接下来是标准 PCIe 热删除流程,该流程将处理 CXL.io 资源释放。
  7. 如果 PCIe 热删除流程失败,则会通知用户热删除操作失败;否则,将通知用户热删除流程已成功完成。

8. CXL type1 设备热添加流程

  1. 系统固件可能为将来的热添加做好系统准备(例如,填充 MMIO
    资源以满足要热添加的适配器的需求)。
  2. 用户在空插槽中热添加 CXL 类型 1 设备。下游端口
    在 68B Flit 模式下以 CXL VH 操作启动链路。
  3. 生成 PCIe 热插拔中断。
  4. 总线驱动程序执行标准 PCIe 热添加操作,从而启用
    CXL.io。此过程将 BAR 分配给设备。
  5. CXL 感知软件(例如,操作系统中的 CXL 总线驱动程序、设备驱动程序或其他
    软件实体)探测设备上的 CXL DVSEC 功能。如果设备热添加到无法容纳启用 CXL.cache 的设备的根端口下方,则拒绝热添加。如果设备的缓存大于主机监听过滤器可以处理的缓存,则热添加将被拒绝。用户可能会通过注意指示器或其他用户界面收到通知。
  6. 如果上述检查通过,CXL 感知软件将在设备和交换机上配置 CXL DVSEC 结构(例如 GPF DVSEC)。
  7. 热添加流程已完成。用户可能会通过注意指示器或其他用户界面收到成功完成的通知。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏天Aileft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值