1. UCIe 协议层概要
UCIe 1.0 的 Protocol Layer 支持以下 3 类协议:① PCIe 6.0 Flit Mode;② CXL 2.0 及以上版本;③ Streaming Protocol。支持以下 4 种操作模式:① Raw Mode;② Standard 256B Flit Mode;③ Latency Optimized 256B Flit Mode 及 ④ 68B Flit Mode。受限于协议本身特性,不同协议对 Flit Mode 的支持情况不尽相同,但所有协议均支持 Raw Mode。每类协议支持的操作模式情况如表 1 所示。
▼ 表 1:不同协议支持的操作模式
UCIe 链路训练期间,决定采用哪种协议的哪种操作模式。无论是哪种操作模式,协议层在 FDI 接口上传给 D2D Adapter 的数据包都应该是 Flit 模式,这也是为什么 UCIe 支持 PCIe 6.0 但不支持 PCIe 5.0 及之前版本的原因。稍微展开介绍下。
2. UCIe 协议层支持的协议及操作模式
2.1 PCIe 6.0 Protocol
UCIe Protocol Layer 采用 PCIe 6.0 时,支持 Raw Mode 及 Standard 256B Flit Mode 两种操作模式。Raw Mode 是可选项,Standard 256B Flit Mode 是必选项。
2.1.1 Raw Mode
Raw Mode,本意是给 UCIe Retimer 用的。UCIe Retimer 连接 Local UCIe Die 的一侧采用 UCIe 协议,连接 Remote UCIe Die 的另一侧采用 PCIe 协议,在 UCIe Retimer 内实现封装内连接到封装外连接的转换。
若 UCIe 工作在 PCIe 6.0 Protocol 且采用 Raw Mode,需要在 Protocol Layer 实现 Retry、CRC、FEC 等功能(非 Raw Mode 时一般在 D2D Adapter 内做这些工作)。Raw Mode 下的 Flit 数据格式如图 1 所示,64B Flit 数据全部来自 Protocol Layer,D2D Adapter 不对这些数据做任何改动。
▲ 图 1:Raw Mode 数据格式
2.1.2 Flit Mode with Standard 256B Flit
对于仅支持标准 PCIe 协议的 Die,其 UCIe 必须支持 Flit Mode 且为 Standard 256B Flit。Standard 256B Flit 数据格式与 PCIe 6.0 采用的 Flit 格式类似,如图 2 所示,其中包含 236B TLP + 6B DLP + 14B CRC (PCIe 6.0 Flit 为 8B CRC + 6B FEC,UCIe 这里没有 FEC)。14B CRC 数据由 D2D Adapter 填充,在 Protocol Layer 中该 14B 数据为 0。
鉴于 PCIe 6.0 采用的为 UCIe PHY,UCIe PHY 有其基于 Sideband Message 的链路和功耗管理机制,原 PCIe Flit 中跟 PCIe PHY 链路管理及功耗管理相关的 DLLP 均不再使用。为了节省面积、降低功耗,UCIe 用不到的 PCIe 协议层中的功能,比如 8b/10b, 128b/130b 编码及 Non-Flit Mode 相关的 CRC/Retry 机制,均可以移除。
▲ 图 2:UCIe@PCIe 6.0 Standard 256B Flit Mode 数据格式
虽然 UCIe 是 Flit Mode 的,但 UCIe 仍然支持 PCIe 6.0 的 Non-Flit Mode,只不过 PCIe 是工作在 CXL.io 64B Mode 下的。
2.2 CXL Protocol
UCIe 1.0 支持 CXL 2.0、CXL 3.0 协议及其更高的协议版本,不支持 CXL1.1。CXL 2.0 时支持两种操作模式:Raw Mode 及 68B-Enhanced Flit Mode。CXL 3.0 时支持 4 种操作模式:Raw Mode、Standard 256B Flit Mode、CXL.io Latency-Optimized 256B Flit Mode 及 CXL.cachemem Latency-Optimized 256B Flit Mode(适用于 CXL.cache 及 CXL.mem)。
2.2.1 CXL 2.0/3.0 Raw Mode
跟 PCIe 6.0 时的 Raw Mode 同理,适用于 UCIe Retimer 从 UCIe 协议到 CXL 协议的转换,其数据格式如图 1。
2.2.2 CXL 2.0 68B-Enhanced Flit Mode
UCIe 协议层采用 CXL 2.0 协议时,其必须支持 68B Flit 操作模式。68B-Enhanced Flit 数据格式如图 3 所示,68B 包括 64B TLP + 2B Flit Header + 2B CRC,多个 Flit 背靠背依次传输。
▲ 图 3:CXL 2.0 68B Flit 数据格式
CXL 68B-Enhanced Flit 操作模式下,CXL.io 的 Ack、Nak、PM 等 DLLP 不再使用,Credit Update 等 DLLP 照常封装在 Flit 中。
2.2.3 CXL 3.0 Standard 256B Flit Mode
支持 CXL 3.0 256B Flit Mode 的 UCIe Die 必须支持 Standard 256B Flit 操作模式。 CXL 3.0 256B Flit 操作模式下,CXL.io、CXL.cache 及 CXL.mem 采用相同的 Flit 格式,数据格式如图 4 所示。
对于 CXL.io,Ack、Nak、链路及功耗管理类的 DLLP 都不再使用。对于 CXL.cache 及 CXL.mem,FDI 接口上提供有 lp_corrupt_crc 信号来辅助优化传输 Latency。跟接下来要讲的 Latency-optimized 256B Flit Mode 相比,Standard 256B Flit 不携带有 TLP 信息或 H-Slot 信息。
▲ 图 4:CXL 3.0 Standard 256B Flit 数据格式
2.2.4 CXL 3.0 Latency-Optimized 256B Flit Mode
为了进一步优化传输时延,CXL 3.0 时支持将 Standard 256B Flit 一拆为二,2 笔 128B Flit 分开收集处理,能够极大地降低时延,称为 Latency-Optimized 256B Flit Mode。
该模式又分为两种模式,一种是 CXL.io 用的,有额外的 4B TLP 信息;一种给 CXL.cachemem 用,具备 14B H-Slot。两种 Flit 数据格式分别如图 5、6 所示。两种模式在打包效率上稍有区别,CXL.cachemem 的 Flit 操作模式打包效率更高。
CXL.io 时,UCIe 不具备 Ack、Nak、PM、LM 等 DLLP。CXL.cache Mode 时,FDI 接口提供有 lp_corrupt_crc 信号来辅助 Latency 优化。这两种 Flit Mode 不是必须的,但强烈建议实现这种两种 Mode。
▲ 图 5:CXL.io Latency-Optimized 256B Flit 数据格式
▲ 图 6:CXL.cachemem Latency-Optimized 256B Flit 数据格式
2.3 Streaming Protocol
Streaming Protocol 可以是任意一种除 PCIe 及 CXL 之外的流协议,甚至是自定义的协议,只要 UCIe 链路两端能够互相匹配就可以。Streaming Protocol 只支持一种必选的操作模式:Raw Mode。采用 Streaming Protocol 时,Flit 数据在 UCIe Adapter 中透明传输。
3. 总结
UCIe 协议层兼容 PCIe、CXL 等标准协议,也支持其他既有或定制的 Streaming 协议。UCIe 协议层通过 FDI 接口将 Flit 数据包发送给 D2D Adapter。通过 D2D Adapter 中 的 Arb/Mux 或 Stack Mux,还可以实现多个协议栈对 UCIe PHY 的分时复用。
4. 参考
UCIe Spec r1.0, Chapter 1
深度解读Chiplet互连标准“UCIe”