【UCIe】UCIe Standard 256B Flit for PCIe 6.0 vs. PCIe 6.0 Flit

文章对比了UCIeStandard256BFlitforPCIe6.0与PCIe6.0Flit的差异,包括CRC缩短为4B,FEC字段取消,以及10B的预留字节。TLPBytes的打包规则与PCIe相同,DLPBytes中FlitHeader的字段有所调整,如StackID、Retry机制和FlitSequenceNumber的变化。UCIe的优化主要考虑了Die-to-die通信的短距离传输特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



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


📢 声明

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


0. 前言


  UCIe 的 Standard 256B Flit Mode 有 PCIe 6.0、CXL.io、CXL.cachemem 等多种应用场景。UCIe 协议层采用 PCIe 协议时,UCIe FDI、RDI 及 UCIe Link 上传递的 Flit 格式采用 Standard 256B Flit Mode for PCIe 6.0。

  Standard 256B Flit for 6.0 与 PCIe 6.0 Flit 有何区别呢?今天,我们站在 UCIe 角度,对比下两种 Flit 的区别。

  (注意:如无特殊说明,下文中的 UCIe Flit 均指 UCIe Standard 256B Flit for PCIe。)



1. Flit Format 概览


  UCIe Standard 256B Flit for PCIe 6.0 在格式上继承自 PCIe 6.0 Flit,两者 Flit 格式如图 1 所示。


在这里插入图片描述

▲图 1:PCIe 6.0 Flit & UCIe Standard 256B Flit for PCIe 6.0 Format

  整体来看,两者的 TLP Bytes 及 DLP Bytes 在 Flit 内的位置没有变动,只在具体实现时对相关位域做了调整。在 PCIe 6.0 Flit 基础上,UCIe Standard 256B Flit for PCIe 6.0 的改动如下:

  • CRC 字段由 8B 缩短为 4B,且位置由 DLP Bytes 之后移至 Flit 末尾。CRC 计算方式稍有区别。
  • FEC 字段取消。UCIe 适用于 Die-to-die 等短距离传输,误码性能较好,前向纠错的必要性不大。
  • 10B Reserved。CRC 及 FEC 节省出来的 10B 作为预留字段。


2. TLP Bytes


  UCIe Standard 256B Flit for PCIe 的 TLP Bytes 共 236B。早前我们聊过《PCIe Flit 打包解包规则》,Standard 256B Flit 的 TLP Bytes 打包规则与 PCIe Flit 的 TLP Bytes 打包规则相同。

  若 TLP Bytes 全部为 NOP TLP,该 Flit 称为 NOP Flit。协议层在组装 NOP Flit 时,必须在 Flit Header 内填入相应的 Protocol Identifier 来标志当前为 NOP Flit,Flit Chunk 部分全部填 0。协议层经 FDI 接口给 Adapter 发送 NOP Flit 时,通过 lp_nop_flit 信号来指示当前 Flit 为 NOP Flit,Adapter 可以依据此信号来 Bypass Tx Retry Buffer。注意:lp_nop_flit 仅用于 256B Flit Mode,只在当前 Flit 多个 Chunk 的最后一个 Chunk 期间置起

  除了将 Protocol Identified 置 0,NOP Flit 在 FDI 接口上传递给 Adapter 时,在若干个 Flit Chunk 的最后一个 Chunk 传输期间,还需要将 lp_nop_flit 信号置为 1,提示 Adapter Tx Retry Buffer 来 Bypass 该 Flit。

  在 FDI 接口上,NOP Flit 只能由 Protocol Layer 传往 Adapter,不能由 Adapter 传递 到 Protocol Layer。在 RDI 接口上则没有这个方向限制。

  对于 PCIe 而言,整个 Flit 全部通过 PIPE 接口在 MAC 与 PCS 之间传递,也不存在传递方向的限制。



3. DLP Bytes


  UCIe Standard 256B Flit for PCIe 的 DLP Bytes 共 6B,在 Byte 粒度的功能划分上,其与 PCIe 6.0 Flit 的 DLP Bytes 相同,即 DLP[0:1] 存放状态指示位及 Ack/Nak 机制,DLP[2:5] 存放常规 DLLP Payload 及 Flit_Marker、Optimized_Update_FC 等。


3.1 DLP[0:1] - Flit_Hdr

  在 UCIe 中,DLP[0:1] 有一个新名字:Flit Header (缩写为 Flit_Hdr)。UCIe Standard 256B Flit for PCIe 6.0 与 PCIe 6.0 Flit 的 DLP[0:1] 相关字段意义对比如表 1 所示。

▼表 1:Detailed DLP[0:1] of PCIe 6.0 Flit & UCIe Standard 256B Flit for PCIe 6.0
DLPBitPCIe 6.0 FlitUCIe Standard 256B Flit for PCIe 6.0
17 Flit Usage
  • 2'b00: IDLE Flit or NOP Flit
  • 2'b01: Payload Flit
  • Others: Reserved
Protocol Identifier
  • 2'b00: D2D Adapter/PCIe NOP
  • 2'b01: PCIe
  • Others: Reserved
6
5 Prior Flit was Payload
  • 1'b0: Prior flit was a NOP Flit or IDLE Flit
  • 1'b1: Prior flit was a Payload Flit
Stack Identifier
  • 1'b0: Stack 0
  • 1'b1: Stack 1
4 Type of DLLP Payload
  • 1'b0: DLLP Payload in DLP[2:5]
  • 1'b1: Optimized_Update_FC or Flit_Marker in DLP[2:5]
3 Replay Command
  • 2'b00: The Flit Sequence Number included in the Flit is an Explicit Flit Sequence Number of the transmitted Flit.
  • 2'b01: Ack of Flit Sequence Number from Receiver. The included Flit Sequence Number indicates the Flit Sequence Number of the last valid Flit received.
  • 2'b10: Nak requesting a Replay of all unacknowledged Flits. The included Flit Sequence Number indicates the Flit Sequence Number of the last valid Flit received.
  • 2'b11: Nak requesting a Replay of a single Flit (Flit Sequence Number + 1). The included Flit Sequence Number indicates the Flit Sequence Number of the last valid Flit received.
With Retry:
  • The upper four bits of Sequence number "S" (i.e. S[7:4])
Without Retry:
  • Reserved
2
1 Flit Sequence Number.
0
07 Reserved
6
5 With Retry: Ack or Nak information
  • 2'b00: Explicit Sequence number "S" of the current Flit is present
  • 2'b01: Ack. The sequence number "S" carries the Ack’ed sequence number.
  • 2'b10: Nak. The sequence number "S" carries 255 if N=1, otherwise it carries N-1; where N is the Nak’ed sequence number.
  • 2'b11 : Reserved

Without Retry:
  • Reserved
4
3 With Retry:
  • The lower four bits of Sequence number "S" (i.e. S[3:0]) Sequence number 0 is reserved and if present, it implies no Ack or Nak is sent.

Without Retry:
  • Reserved
2
1
0

  PCIe 必须支持 Retry,但 Retry 在 PCIe based UCIe 8 GT/s 速率以下时是可选的,因此 UCIe Standard 256B Flit for PCIe 的 Flit_Hdr 中仅在开启 Retry 时有意义,未开启时为 Reserved。

  总体而言,由 PCIe Flit 到 UCIe Flit,其 Flit_Hdr 的变动主要有以下几点:

  • DLP1 Bit5 由指示前一 Flit 的 NOP/Payload Flit 类型变为指示 Stack ID。
  • Relay Command 位置变动,且 UCIe 不支持 Selective Nak
  • Flit Sequence Number 位置变动,且其位宽由 10bit 减小为 8bit

  更多 UCIe Retry 或 Ack/Nak 机制的介绍,请查看《UCIe 数据完整性》


3.2 DLP[2:5] - DLLP Payload/Optomized_Update_FC/Flit_Marker

  DLP Bytes 的后 4B 存放 DLLP。跟 PCIe 一样,根据 DLLP 的类型将其分为了 Normal DLLP Payload 及 Optimized_Update_FC 及 Flit_Marker,其意义及打包方式与 PCIe Flit DLLP 字段大致相同。

  • 跟 PCIe 相比,UCIe 不需要 Link Management 及 Power Management 相关 DLLP,相关功能通过 Sideband 实现。
  • Optimized_Update_FC 是一种优化后的流控包。UCIe 的 Optimized_Update_FC 可以由 Procotol Layter 生成,也可以由 Adapter 生成。
  • Flit_Marker 用以指示当前 Flit 中最后一笔 TLP 的状态,并携带有 PTM 相关消息。
  • 当没有 DLLP 要发送时,DLP[2:5] 位置全部置零,即 NOP DLLP。

  在 FDI 接口上,有单独的接口信号 lp_dllp、pl_dllp 来传递 DLLP,并有独立的 lp_dllp_ofc、pl_dllp_ofc 信号来指示当前 DLLP 数据为 Optimized_Update_FC。

  在 RDI 接口上,DLLP 数据已经填充进了 Flit DLP 字段,RDI 接口上没有 dllp 专用信号。


  更多 UCIe Optimized_Update_FC、Flit_Marker 介绍请看《UCIe DLP/DLLP 介绍》

  更多 UCIe NOP DLLP 介绍请看《UCIe NOP 介绍》



4. Reserved Bytes


  在 PCIe Flit 中不存在 Reserved Bytes。

  对于 UCIe Flit,其在 CRC 及 FEC 上的优化,使得 Flit 中空出了 10B。这 10B 目前(UCIe 1.0)为 Reserved Bytes,更多作用会体现在未来版本的 UCIe 协议中。



5. CRC Bytes


  PCIe Flit 的 CRC 长 8B,其计算方法请参考 PCIe 协议。

  在 UCIe Flit 中,CRC 长度缩减为 4B。UCIe 协议采用 CRC-16-IBM 算法计算 CRC,能够实现 3bit 检错。UCIe CRC 计算逻辑电路的输入为 128B Message,最终输出为 2B CRC。更多 UCIe CRC 相关请见《UCIe 数据完整性》



6. FEC Bytes


  PCIe 6.0 引入了 FEC 前向纠错机制,在较高的传输速率下获得较优的 BER 性能。PCIe 6.0 采用单 Symbol 的 FEC 纠错机制,可以将 FLIT 解码时间压缩到 2 ns 以内。

  UCIe Flit 中不存在 FEC Bytes。在 UCIe 中,其传输距离较近,且最高传输速率低于 PCIe 6.0 的 64 GT/s,BER 性能本身就比较好,没有必要进行 FEC。



7. 参考


  1. UCIe Spec r1.0
  2. PCI Express 6.0 Base Spec
  3. PCIe Flit 打包解包规则
  4. UCIe DLP/DLLP 介绍
  5. UCIe 数据完整性
  6. UCIe NOP 介绍


— END —


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

⬆️ 返回顶部 ⬆️

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MangoPapa

请作者喝瓶可乐吧

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

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

打赏作者

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

抵扣说明:

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

余额充值