本文主要是介绍CXL RCD/VH Mode,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
🔥点击查看精选 CXL 系列文章🔥
🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥
📢 声明:
- 🥭 作者主页:【MangoPapa的CSDN主页】。
- ⚠️ 本文首发于CSDN,转载或引用请注明出处【https://mangopapa.blog.csdn.net/article/details/132332485】。
- ⚠️ 本文目的为 个人学习记录 及 知识分享。因个人能力受限,存在协议解读不正确的可能。若您参考本文进行产品设计或进行其他事项并造成了不良后果,本人不承担相关法律责任。
- ⚠️ 若本文所采用图片或相关引用侵犯了您的合法权益,请联系我进行删除。
- 😄 欢迎大家指出文章错误,欢迎同行与我交流 ~
- 📧 邮箱:mangopapa@yeah.net
- 💬 直达博主:loveic_lovelife 。(搜索或点击扫码)
文章目录
- RCD Mode
- VH Mode
- PCIe/VH/RCD Mode 举例
- RCD 与 VH Mode 协商
- 如何防止 Hot-Plug 场景下训练到 RCD Mode?
- 参考
Flex Bus 可以工作在 PCIe Mode 或 CXL Mode,CXL Mode 又可以进一步细分为 RCD Mode 及 VH Mode ,其中 RCD Mode 仅支持 CXL 1.1 相关特性,不支持 CXL 2.0 及以上新出现的 CXL 特性。
CXL 协议更迭较快,每一代都有较多新的特性引入。当不同 CXL 版本的 Upstream Port (UP)及 Downstream Port (DP) 出现在同一 CXL 链路上时,为了避免非预期的软件行为,链路两端的组件需协商工作在同一 Link Mode 下。
RCD Mode
RCD Mode,全称 Restricted CXL Device Mode,是一种功能有限的 CXL Mode。RCD Mode 可认为是工作在 CXL 1.1 下的 CXL 链路。
RCD 对外显示为 RCiEP,其存在以下约束:
- 不支持 Hot-Plug;
- 不支持 68B Flit Mode 之外的其他 Flit Mode;
- 不支持基于 PBR (Hierarchy Based Routing) 之外的其他路由方式;
- 链路对 CXL-unaware 软件不可见。
VH Mode
VH Mode,全称 Virtual Hierarchy Mode,可认为是工作在 CXL 2.0 或更高版本的 CXL 链路。
有别于 RCD Mode,VH Mode 支持以下特性:
- VH-capable Device 支持 Hot-Add 及 Switching 功能;
- 支持 68B Flit Mode、256B Flit Mode 及 Latency-Optimized 256B Flit Mode;
- 支持 PBR (Port Based Routing)、HBR 等路由方式;
- 链路对 CXL-unaware 软件可见。
PCIe/VH/RCD Mode 举例
CXL VH 是一个虚拟的层级,是软件视角的层级,不一定跟物理拓扑完全一致(物理拓扑中的 eRCD 独立于该 VH)。CXL VH 内既可以包含 CXL 组件也可以包含 PCIe 组件。在 CXL VH 内,CXL RP 是 VH 的根节点, 至少应包含 1 个非 eRCD 的 CXL Device ,此外还可以包含 0 到多个 CXL Switch、0 到多个 PCIe Switch 或 0 到多个 PCIe Device。
上图中,Host 内有 4 个 RP,其中 RP1(不存在 CXL Device)、RP2(不存在 Device)、RP4(不存在 Non-RCD Device)均不符合 CXL VH 定义要求的条件,只有 RP3 作为 Root 物理拓扑可以形成 VH。RP3 作为 Root 的物理拓扑内,DSP1 下的 eRCD 对软件不可见,将其扣除后所形成的 Hierarchy 即为 RP3 作为 Root 的 VH。
按照工作模式进行分类,上图所示物理拓扑中链路分类如下:
- PCIe Mode: RP1-PCIe Device1、DSP3-PCIe Device2
- RCD Mode: DSP1-eRCD1、RP4-eRCD2
- VH Mode: RP3-USP、DSP2-CXL_Device
RCD 与 VH Mode 协商
CXL 链路训练期间 UP 及 DP 通过 Modified TS 进行 Link Mode 的协商,若 UP 及 DP 无法就链路工作模式达成一致,则 CXL 链路训练失败。
对于只支持 CXL 1.1 的 Host 及 Device 称为 eRCH、eRCD,其通过 Modified TS 中的 Alternate Protocol ID/Vendor ID=0x8086 来指示当前为 CXL 1.1;对于 CXL 2.0 及以上版本的 CXL Component,其 Modified TS 中的 Alternate Protocol ID/Vendor ID=0x1e98,同时有相关字段指示 VH Capable。
UP 及 DP 支持的能力及 Link Mode 协商结果如下表所示。(TODO:下表 UP/DP 有误,写反了。)
从上表可见:
- 只有 CXL 链路两端的 UP 及 DP 均为 VH Capable 时才为 VH Mode;
- 若 Device 为 eRCD 且在初始上电前就已与 CXL Host 硬件连接则为 RCD Mode,通过 Hot-Plug 上接 Host-VH 或 CXL Switch 时,链路训练失败;
- EP-VH 上接 eRCH 则为 RCD Mode,上接 Host-VH 或 Switch 则为 VH Mode;
- Switch 上接 Host-VH 则为 VH Mode,上接 eRCH 则训练失败,上接 Switch 不会独立触发链路训练。
以上 CXL Link Mode 协商过程中,Link Mode 协商失败即意味着 Flex Bus CXL Mode 训练失败,不能直接切换到 PCIe Mode。若想重新针对 PCIe Mode 进行训练,需要关闭 APN 机制后重新触发链路训练。
如何防止 Hot-Plug 场景下训练到 RCD Mode?
RCD Mode 不支持 Hot-Plug,准确说是不支持 Hot-Plug 后链路训练到 RCD Mode。为了防止 Hot-Plug 后训练到 RCD Mode,有以下两者途径:
- 对于 eRCH,无论 Device 是否为 RCD 该链路都不支持 Hot-Add。BISO 会在上电后 RCD Mode 训练成功之后关闭 CXL APN 协商,以阻止 CXL Hot-Add。
- 对于支持 VH 的 DP,不支持 RCD 的 Hot-Plug。BIOS 会在上电后初次 VH/RCD Mode 训练成功之后把 DP DVSEC Flex Bus Port Control 寄存器里的 Disable_RCD_Training Bit 置一。Host 在启动链路训练前依据该字段来判断当前是否为初始上电状态,若非初始上电则为 Hot-Add 进来的,一次关闭后续 RCD Mode 的训练。Disable_RCD_Training 对后续 Non-RCD 的 Hot-Plug 无影响。
参考
- CXL Base Spec, r3.0
|
🔥 精选往期 CXL 协议系列文章,请查看【 CXL 专栏】🔥
⬆️ 返回顶部 ⬆️
这篇关于CXL RCD/VH Mode的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!