【UCIe】UCIe D2D Adapter 介绍



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


📢 声明

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


1. UCIe D2D Adapter 基本介绍


  UCIe D2D (Die-to-die) Adapter 位于 Procotol Layer 及 Physical Layer 之间,如图 1 所示。Adapter 往上通过 FDI (Flit-Aware D2D Interface) 接口连接 Protocol Layer,往下通过 RDI (Raw D2D Interface) 接口连接 Physical Layer。

在这里插入图片描述

▲图 1:UCIe D2D Adapter 在 UCIe 分层协议中的位置

  在 UCIe 分层协议中,D2D Adapter 主要承担以下几项工作:

  1. UCIe Die 间的参数协商。
  2. 链路状态管理。
  3. 确保数据可靠传输。相关机制有 CRC、Parity 及 Retry 等。
  4. 多协议栈的多路仲裁及选择。

  以上几大工作中,D2D Adapter 必须实现链路状态管理及参数协商,根据使用场景及需求可以支持数据可靠传或多路仲裁选择。



2. UCIe D2D Adapter 主要作用


2.1 Die 间参数协商

  UCIe Die 间参数协商主要发生在链路初始化及 Retrain 期间,接下来主要讲讲 Adapter 在链路初始化中的作用。


2.1.1 链路初始化中的 Adapter 初始化

  在 UCIe Mainband 传输 Protocol 发来的 Flit 之前,必须对 UCIe 链路进行初始化。UCIe 链路初始化分为 4 个阶段,如图 2 所示,其中,链路初始化最后一个阶段(Stage3)便是 Adapter 初始化。

在这里插入图片描述

▲图 2:UCIe 链路初始化的 4 个阶段

  RDI 状态机进入 Active 状态后,链路初始化进入 Stage3 的 Adapter 初始化。Adapter 初始化期间主要进行以下 3 项工作:

  1. 查询 Local UCIe 的能力(Capability)。比如支持哪些操作模式、是否支持多协议栈、是否开启 Retry、PCIe Port Type 及 Retimer 相关能力等等。注意:若 Local UCIe 的链路速度为 8GT/s 以上,应该使能 Retry 能力,并在接下来跟对端进行参数交换时请求对端也开启 Retry 能力。
  2. 跟对端 UCIe 进行参数交换。在查询完 Local UCIe 具备的能力后,通过 Sideband Message {AdvCap.*} 将自身能力告知对方,这一过程称为 Adapter 的参数交换。双方通过交换参数来获知对方信息并进行协商,协商一致后发送 {FinCap.*} 形成最终结论对链路最终工作状态进行配置。参数交换有个时间限制,从 RDI Active 开始,若 8ms 内没有完成参数交换也没有收到 {Adv/FinCap.*.Stall} 的 Message 来复位 Timer,则触发参数交换的 Timeout 机制。
  3. FDI Bring Up。FDI Bring Up 是指 UCIe Link 两侧的 UCIe 协议层之间经过一系列握手协商,使 FDI 状态机进入 Active 状态。FDI Bring Up 的过程如图 3 所示,这里不作展开,以后会详细讲(TODO)。对于有多组 FDI 接口的情况,每个 FDI 独立进行 Bring Up。

在这里插入图片描述

▲图 3:UCIe FDI Bring Up

2.2 链路状态管理

  链路状态管理主要包括链路的 Power 状态等的管理 (Power Management, PM)。

  UCIe 协议层采用 PCIe、CXL 协议时必须支持 L1、L2 低功耗状态。Adapter 通过与 Protocol Layer 及 Phisical Layer 进行握手,使 UCIe 链路进入低功耗状态。L1、L2 状态下,① 可以对 Global Clock 进行 Gating,② 也可以在系统层面发送 Idle Package。FDI 支持 L1、L2 Power 状态,握手规则跟 CXl 256B Flit Mode 相同。RDI 也支持 L1、L2,但在 L1、L2 状态下,RDI 内部可以将这两个状态映射为常规非低功耗状态。不作展开,后边会单独开一节讲 UCIe PM (TODO)

  UCIe 采用 PCIe/CXL之外的其他 Streaming Protocol 时,对其 PM 能力未作要求。对于其他不支持 PM 的协议,在收到远端发来的 PM 请求后,可以回复 PMNAK 来拒绝 PM 请求。


2.3 数据可靠传输

2.3.1 插入信息

  Protocol Layer 发给 Adapter 的 Flit 中,有些给 Adapter 预留的 Reserved 位,比如 Flit_Hdr、DLP、CRC。这些信息需要 Adapter 来进行填充。

  • Flit_Hdr:为了保证发出的 Flit 被正确传递到对端对应 Protocol Layer,在 Flit_Hdr 中携带有当前 Flit 的协议类型、协议栈 ID 等信息。对于支持 Retry 机制的 UCIe,Flit_Hdr 中还携带有 Sequence Number 及 Ack/Nak 等信息。
  • DLP:对于 Standard 256B Flit 而言,Flit_Hdr 占用了原来 DLP0/DLP1 的位置,若没有 Flit Marker,Adapter 还负责在 DLP Bytes (DLP2:5) 插入 DLLP 信息。
  • CRC:CRC 是循环冗余校验,在 D2D Adapter 中计算 CRC 并插入 Flit 适当位置,对端接收到 Flit 后能够通过解析 CRC 检测出最多 3 bit 随机错误。在接收端,若根据接收到的 Flit 计算出的 CRC跟 Flit 中标识的 CRC 不同,则 Invalid 当前 Flit 并请求重传。

  当协议层发送 64 Byte Flit 数据,适配层一般会在有效数据 Flit 的前面加上 2 Byte Flit Header,后面加上 2 Byte CRC值,对于256B Flit一般需要额外增加 2 Byte CRC,每 128B Flit 对应 2 Byte CRC。


2.3.2 可靠传输

  除了 CRC 机制,UCIe 还提供有 FEC、Parity、Retry、Flow Control 等机制来保证数据在链路上的可靠传输。

  • FEC:从 Spec 来看,D2D Adapter 在 Flit Mode 下没有涉及到 FEC,在 Raw Mode 下由 UCIe Protocol Layer 来插入 FEC。
  • Parity 机制:Parity 机制是一种在数据传输间隙检测物理链路健康状态的机制。若开启了 Parity 机制,在常规数据流之间周期性插入 Parity Bytes,对端解析 Parity Bytes 并判决链路是否出了问题。UCIe Parity 机制仅适用于 On-Package 的 UCIe 链路,对 UCIe Retimer 而言,Parity Bytes 并不占用其 Reciever Buffer Credit,Retimer Rx 也不能将 Rarity 数据写进其 Rx Buffer 中或传递给对端的 Retimer。
  • Retry 机制:UCIe Retry 机制是 PCIe 6.0 Flit Mode Retry 机制的简化版。速率为 8GT/s 及以上时,BER 性能相对较差,此时必须有 Retry 机制。Retry 一旦打开,即使中途掉速,仍然使需使用 Retry。想关闭 Retry,需要重新 Link Training。
  • Flow Control:流控时 Protocol Layer 通过 FDI 传输 Update_FC DLLP 来更新 Credit 信息,在 Adapter 中需要将其打包为 Optimized_Update_FC 的格式并加载到 Flit 中。在接收端,Adapter 从 Flit 中提取 DLLP 或 Optimized_Update_FC,然后驱动到 FDI 对应接口上。

2.4 多路复用及仲裁

  UCIe 支持多个协议栈共享同一个 D2D Adapter,各协议栈通过独立的一组 FDI 接口连接到 Adapter 上。当多协议栈共享同一 Adapter 时,需要在 Adapter 中实现 Arb/Mux、Stack Mux,通过 Arb/Mux 或 Stack Mux 的选通与否,实现多协议栈对 Adapter 及 PHY 的分时复用。示意图如图 4 所示。

在这里插入图片描述

▲图 4:UCIe Protocol -> Adapter 配置

  需要注意的是:

  1. 多个协议栈的带宽需求不能超过 UCIe PHY 的带宽能力。
  2. 若其中某个协议栈某段时间内没有 Protocol Flit 要发送,在选通该协议栈时需要插入 NOP Flit,防止出现 RDI 与 PHY 速率失配。


3. 参考


  1. UCIe Spec r1.0, Chapter 3
  2. 深度解读Chiplet互连标准“UCIe”


— END —

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

⬆️ 返回顶部 ⬆️

  • 20
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MangoPapa

请作者喝瓶可乐吧

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

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

打赏作者

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

抵扣说明:

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

余额充值