1.0 Introduction
(本文版权归作者所有,任何形式的转载都请注明出处)
UCIe 协议适用范围: 用于芯片封装内部的 Die 间互联(D2D),而非跨 Chip 互联。
Note:
- Die 间互联的需求,来源于大芯片在良率和成本上的挑战,而衍生出的多 Die 封装。
- 传统 UCIe 场景是 Chip 封装内部 Die 间互联,可以通过集成 IO Die 提供的 PCIe/CXL/DDR 引脚或通过 Retimer 将 Chip 内互联场景扩展为跨 Chip 互联场景,延伸到 Rack/Pod 级别的互联。
Feature:
Note:
- 自定义协议的典型应用场景,比如厂商私有的缓存一致性协议、AI 加速器数据流、DSP 音视频数据流、FPGA 加速器与 SoC 之间的自定义互联接口等。
Note:
- 也支持集成独⽴的 SERDES、收发器 Tile(如以太⽹控制器),这种 Tile 本⾝已有完整的协议栈和可靠性机制,不需要 UCIe Adapter 提供额外的 CRC、Retry 保护。
Note:
- 如 Fig 1-1 所示,展示了由 UCIe 连接的 CPU Die、加速器 Die 和 I/O Die。包括:(1)CPU Die 和 CPU Die 通过 UCIe 直连;(2)加速器或 I/O Die 通过基于 UCIe 的 CXL 事务连接到 CPU Die,其中 CXL.io、CXL.cache、CXL.mem 共用一条 UCIe 链路;(3)I/O Die 可以起到桥接作用,充当内部 UCIe 与外部标准 PCIe/CXL SERDES 接口协议的桥。
- 如 Fig 1-2 所示,展示了使用 CXL 协议的 Rack/Pod 级别的互联拓扑结构。这些加速器、存储、CPU 或 GPU 等或主或从的设备,可以放在一个或多个 drawer 中,这些 drawer 通过 CXL Switch 互联。其中,CXL Switch Die 和 UCIe Retimer 也通过 UCIe 互联。


1.1 UCIe Components( UCIe 组件)
如 Fig 1-8 所示,UCIe 是分层协议:协议层 —- D2D Adapter —- 物理层。

Note:
- 除非特殊说明,timeout 值允许在规定值的 -0%/+50% 容错范围。复位后,所有 timeout 计数必须设为规定值。
1.1.1 Protocol Layer(协议层)
UCIe 支持以下协议以实现不同的应用:
- PCIe 协议。
- CXL 协议(不支持 RCD/RCH/eRCD/eRCH)。
- Streaming 协议:“空白”协议模式,通过 UCIe 传输用户自定义协议。
- UCIe 管理传输协议(UCIe Management Transport protocol):端到端的传输 Management Flit,属于 UCIe 原生协议,不需要经过 D2D Adapter 做协议转换,且可在任意媒介上(sideband 或 mainband)承载。
1.1.2 Die-to-Die (D2D) Adapter
D2D Adapter 组件的职责有:
- 保证 UCIe 链路上的数据传输,需要保证 low-latency 、满足 timing。
- 传输 CXL 协议时,需要实现 ARB/MUX,负责 CXL.io/CXL.cache/CXL.mem 复用一条 UCIe 链路。
- 数据可靠性,即 CRC 校验 + Retry。
- 维护 Link-level state machine。
- 电源管理。
Note:
- 当 BER > 1E-27 时,意味着 bit error 不是小概率事件,所以需要实现 CRC + Retry 来兜底。BER = 1E-27 表示每传输 10^27 bit 才出现一次 bit error,实现 CRC + Retry 的代价远高于收益。显然,当速率提高或传输环境恶化,误码率会随之提升。
| 8 GT/s × 16 Lane | 0.128 × 10¹² bps | 1E-27 | 约每 2.5 亿年 | No |
| 64 GT/s × 64 Lane | 4.096 × 10¹² bps | 1E-12 | 约每 0.24 秒 | Yes |
1.1.3 Physical Layer(物理层)
如 Fig 1-9 所示,物理层包括 3 个子组件:PHY Logic、Sideband 以及 AFE。其中,AFE 设计的基本粒度称为 Module,Module 为多条 Lane 聚为一组。为满足带宽扩展需求,数据可以在多个 Module 上传输。
Note:
- 每种封装下,每个 Module 的 Lane 条数在第 4 章中做出规定。

UCIe 的物理链路由两种链接组成:
| 引脚 | 每个方向:1 * Clock + 1 * Data | 每个 Module:1 * Clock + 1 * Valid + 1 * Track + N * Data Lane |
| 冗余(先进封装) | 每个方向:提供 1 对冗余 pin 用于修复 | 每个 Module:提供 4 个冗余 pin 用于修复 |
| 速率 | 固定 800 MHz | 速率 4 ~ 64 GT/s 可变 |
| 电源 | Always-on,辅助电源域 | 可休眠 |
| 用途 | “Control Plane”:负责链路的建立、配置、管理和唤醒。 | “Data Plane”:负责承载所有业务协议的数据 Flit。 |
| 特点 | 速率低,常在线,唤醒 Mainband | 高带宽,按需休眠 |
Note:
- 对于先进封装,Mainband 数据 Lane 条数 N = 64 或 32;对于标准封装,N = 16 或 8。
- 标准封装不提供冗余 pin 用于修复,如果某条 Lane 发生故障,通过带宽降级处理。例如,原始带宽为 x16, 若 Lane 0~7 之一发生故障,就禁用上半区的所有 Lane,则带宽降级为 x8。
1.1.4 Interfaces(接⼝)
UCIe 协议定义了两种接口:
- RDI(Raw D2D Interface):物理层与 D2D Adapter 的接口,数据以 Byte Stream 形式传输。
- FDI(Flit-aware D2D Interface):协议层与 D2D Adapter 的接口,数据被打包成 Flit 形式传输。
Note:
- 中间层 D2D Adapter 的作用之一,即负责 Flit 格式的打包/解包。数据在 RDI 以每条 Lane 每个 Frame 期间至少传递 1 Byte 的形式传输。
UCIe 明确定义了各层之间两种接口规范,其目的有二:
- 便于各层使用不同厂商的 IP 做集成,缩短产品开发周期。
- 各厂商都基于相同的接口规范开发 IP,便于统一理解,按统一接口规则做验证。
1.2 UCIe Configurations(UCIe 配置)
1.2.1 Single Module Configuration(单 Module 配置)
如Fig 1-10 所示,为先进封装的单 Module 配置,数据接口为 x64 或 x32。若为标准封装,数据接口为 x16 或 x8。其中,x8 的标准封装只允许用单 Module 配置,由于 x8 模式的引脚数少,主要用于键合前测试(Pre-bond Test)。

Note:
- 每个单 Module 配置单独例化时,每个 Module 配一个 D2D Adapter,意味着这些 Module 完全独立,可以享有不同速率、带宽和协议。
1.2.2 Multi-module Configurations(多 Module 配置)
如Fig 1-14 所示,为先进封装的多 Module 配置,本协议仅支持 2 或 4 Module 配置。多个 Module 共用一个 D2D Adapter,所有 Module 必须具有相同的速率、带宽和协议,则其聚合带宽为单个 Module 带宽的 2 或 4 倍。
多 Module 配置还引入了 Multi-Module PHY Logic,负责将数据分发给多个 Module,同时对上层 D2D Adapter 呈现为统一的 RDI 接口。

1.2.3 Sideband-only Configurations(仅 Sideband 配置)
如Fig 1-17 所示,为 4 路 Sideband 场景。没有 Mainband,即没有高带宽的需求,意味着仅用于测试、管理以及访问寄存器等场景。只支持标准封装,只支持 1、2 或 4 路聚合。

1.3 UCIe Retimers
如Fig 1-18 所示,给出了一个 Off-Package 互联结构,UCIe Die 0 通过 UCIe Link 0 与 UCIe Retimer 0 互联,两边 UCIe Retimer 通过电线或光纤实现远程互联。

UCIe Retimer 的责任包括:
- 可靠性由协议层保证,UCIe 链路使用 Raw Format,Retimer 最简单,只需要透传。
- 可靠性由 Retimer 保证,UCIe 链路允许使用任意格式,Retimer 负责 FEC + CRC + Retry。其中,UCIe Link 0、UCIe Link 1 和 Off-Package Interconnect 三段链路需要独立的 Retry,即分别拥有独立的 ACK/NAK。
- 可靠性由协议层和 Retimer 共同保证,复用协议层原生的 CRC + Retry,Retimer 提供 FEC。
- 通过 Retimer 协商,使两边 Package 参数一致。
- 远程访问 timeout 概率高,Retimer 通过 “Stall” 响应避免不必要的 timeout,并有责任保证链路不会无限期 Stall。这里 “Stall” 的语义可以理解为“等一下,先不要超时”,无意义的超时比阻塞的代价更大。
- 与远端 Retimer 协调链路状态机(Link State Machine,LSM)或 协调 RDI 链路状态,保证端到端操作的正确性。
- 数据从 UCIe Die 发给 Retimer 的方向必须用 Credit 流控,Retimer Buffer 资源有限,不做流控会被撑爆。
- 数据从 Retimer 发给 UCIe DIE 的方向不用流控。(???)
- 每 256B 数据(1 个标准 Flit)消耗 1 个 Credit。
- 若 RDI 离开 Active 状态,Credit 数量会被重置,所以需要丢弃或排空 Buffer,才能再次进入 Active。
1.4 UCIe Key Performance Targets(UCIe 关键性能指标)






