CXL RCD/VH Mode



🔥点击查看精选 CXL 系列文章🔥
🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥


📢 声明

  • 🥭 作者主页:【MangoPapa的CSDN主页】。
  • ⚠️ 本文首发于CSDN,转载或引用请注明出处【https://mangopapa.blog.csdn.net/article/details/132332485】。
  • ⚠️ 本文目的为 个人学习记录知识分享。因个人能力受限,存在协议解读不正确的可能。若您参考本文进行产品设计或进行其他事项并造成了不良后果,本人不承担相关法律责任。
  • ⚠️ 若本文所采用图片或相关引用侵犯了您的合法权益,请联系我进行删除。
  • 😄 欢迎大家指出文章错误,欢迎同行与我交流 ~
  • 📧 邮箱:mangopapa@yeah.net
  • 💬 直达博主:loveic_lovelife(搜索或点击扫码)


  Flex Bus 可以工作在 PCIe Mode 或 CXL Mode,CXL Mode 又可以进一步细分为 RCD ModeVH 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 无影响。


参考

  1. CXL Base Spec, r3.0

— END —


🔥 精选往期 CXL 协议系列文章,请查看【 CXL 专栏🔥

⬆️ 返回顶部 ⬆️

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MangoPapa

请作者喝瓶可乐吧

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

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

打赏作者

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

抵扣说明:

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

余额充值