按三条原本独立的栈(板级 I/O 栈、封装内 D2D 栈、Arm 一致性 NoC 栈),是"分层 + 跨栈拼接"的关系。下面按"自底向上分层 → 逐个定位 → 组合链路 → 选型场景"来梳理。
一、全景分层:三条栈如何咬合
┌──────────────────────────────────────────────────────────────────────┐
│ A. 片上 NoC / 一致性域 │
│ CHI(Arm 一致性) AXI / ACE-Lite(非一致或 IO 一致) │
└───────────────┬──────────────────────────────────────────────────────┘
│ CCG(CMN 多芯片网关:ID 空间映射 LDID ↔ RAID/HAID)
│ 可切换成三种"出片协议":CML_SMP / CHI C2C / CXL
┌───────────────┴──────────────────────────────────────────────────────┐
│ B. 出片协议层(决定语义:SMP 对称一致 / Host-Device / CXL 内存语义) │
│ CML_SMP(64B|256B flit) CHI C2C(fmt X=die2die / Y=PCIe) │
│ CXL.io + CXL.cache + CXL.mem(68B 或 256B flit) │
│ PCIe Transaction Layer(纯 I/O 语义) │
└───────────────┬──────────────────────────────────────────────────────┘
│ ★ CXS:AMBA 信用制流接口(512-bit Issue B),
│ 只管 flit 搬运与 credit,不管 flit 语义
┌───────────────┴──────────────────────────────────────────────────────┐
│ C. 链路层(决定可靠性与 flit 封装) │
│ CML DLL/LLL(Arm AES0024) CXL/PCIe 链路层 UCIe D2D Adapter │
└───────────────┬──────────────────────────────────────────────────────┘
│ FDI(Flit-aware D2D Interface,协议层↔Adapter)
┌───────────────┴──────────────────────────────────────────────────────┐
│ D. 物理层(决定距离、带宽密度、pJ/bit) │
│ UCIe PHY(封装内,时钟前向 + sideband,UCIe-S/UCIe-A/UCIe-3D) │
│ PCIe PHY(板级/背板,SerDes + Retimer,NRZ→PAM4) │
└──────────────────────────────────────────────────────────────────────┘
│ RDI(Raw D2D Interface,Adapter↔PHY)
关键洞察:CXS 是"竖向胶水",CCG 是"横向闸门",CML 是"协议方言",UCIe/PCIe 是"物理与链路底座",CXL/PCIe 是"通用语"。
二、逐个定位(最容易混淆的地方)
| 概念 | 全称与归属 | 层次 | 本质作用 |
|---|---|---|---|
| PCIe | PCI Express,PCI-SIG | 完整协议栈(TL/DL/PHY) | 通用 I/O 互连底座,板级事实标准 |
| CXL | Compute Express Link,CXL 联盟 | 跑在 PCIe PHY 之上的协议层集合 | 给 PCIe 补上缓存一致性与内存语义(.io/.cache/.mem) |
| UCIe | Universal Chiplet Interconnect Express | PHY + D2D Adapter(链路层) | 封装内 die-to-die 的开放底座,上层可承载 PCIe/CXL/自定义流 |
| CXS | AMBA CXS,Arm 公开规范 | 片上/片间接口(非协议) | 基于 credit 的宽位流接口,把 CCIX/CXL/C2C 包搬给链路层或 PCIe 控制器 |
| CML | Coherent Mesh Link(CML_SMP),Arm CMN IP | 芯片间一致性协议 + 其 DLL | Arm 私有 SMP 一致性协议,把 CMN 网格跨芯片延伸到对称多芯片系统 |
| CCG | CMN multi-chip Gateway,Arm CMN IP | 网关模块(非协议) | 在片上 ID 空间(LDID)与跨片 ID 空间(RAID/HAID)之间做映射与路由 |
三个必须纠正的常见误解:
- CXS 不是 CXL 的下层。CXS 是 Arm 定义的"传输接口",它搬运的载荷既可以是 CXL 包,也可以是 CCIX、CHI C2C、CML_SMP 包------它对载荷语义完全透明。
- CCG 不是协议,是 CMN 里的一个节点/模块,且同一 CCG 可配置为跑 CML_SMP、CHI C2C 或 CXL 3.0,CMN S3 最多 32 个 CCG,每个带 512-bit CXS Issue B 接口。
- CML_SMP 是 Arm IP 的私有协议,CHI C2C 才是开放的 AMBA 规范。前者用于同构多芯片 SMP,后者用于 Host-Device 直连,二者不是一回事。
三、四条可落地的组合链路
组合 1:原生 PCIe
PCIe TL → PCIe DL → PCIe PHY
标准 I/O attach:网卡、SSD、GPU、Retimer 扩展。板级、跨连接器、带枚举与驱动生态。
组合 2:CXL over PCIe PHY
CXL.io/.cache/.mem → CXL/PCIe 链路层(68B / 256B flit,FEC+CRC)→ PCIe PHY
CXL 与 PCIe 的关系是逐层不同:物理层直接继承,逻辑 PHY 与链路层是"扩展",事务层与 .cache/.mem 则是"新增"------PCIe 本身没有对应语义。用于内存扩展/池化(Type 3)、带缓存的加速器(Type 1/2)、机架级解耦。
版本现状:CXL 1.1/2.0 基于 PCIe 5.0(32 GT/s),CXL 3.x 基于 PCIe 6.0(64 GT/s、256B Flit),CXL 4.0 已于 2025 年 11 月发布,转向 PCIe 7.0(128 GT/s),新增 bundled port(多端口聚合成单一逻辑端口)、原生 x2 宽度、最多 4 个 Retimer,并强化内存 RAS。
组合 3:PCIe / CXL over UCIe(封装内)
PCIe TL 或 CXL → UCIe D2D Adapter(CRC/retry/arb-mux)→ UCIe PHY
- 走 Flit Mode 时由 Adapter 负责 CRC 与重传,延迟可预测;
- 走 Raw Mode 时绕过 Adapter 的可靠性处理,专为 Retimer 场景(把 UCIe 流量经光/电缆送出封装)设计,由协议层自己保证可靠性。
- UCIe 支持多协议挂在同一 Adapter 上,靠 Adapter 的 Arb/Mux 时分复用,链路训练时通过 sideband 协商选哪个协议。
UCIe 3.0(2025 年 8 月)把 UCIe-S 与 UCIe-A 速率均提升至 48/64 GT/s,新增运行时重校准、sideband 距离扩展至 100 mm、早期固件下载、连续传输模式,且完全向后兼容。
组合 4:Arm 一致性栈(CML / CCG / CXS 真正出场的地方)
路径 a --- 同构多芯片 SMP(封装内)
CHI NoC → CCG(LDID→RAID 映射)→ CML_SMP(64B/256B flit)→ CXS(512b)→ CML LLL/DLL(format X)→ UCIe PHY
路径 b --- Host 到 Device 直连
CHI NoC → CCG → CHI C2C → CXS → LLL:format X 走 UCIe(die-to-die),format Y 走 PCIe LLL
路径 c --- 接标准 CXL 设备
CHI NoC → CCG RA 配成 CXSA 模式 → CXL.mem / CXL.cache → CXS(512b Issue B)→ CXL/PCIe 控制器 → PCIe PHY
路径 c 里还有个值得注意的组合:CCG RA 通过额外的 MPE CXS 接口外接内存保护引擎,在 CXL Type-3 HDM-H 设备上做主机侧数据加解密。
四、场景选型速查
| 场景 | 推荐组合 | 理由 |
|---|---|---|
| 封装内 I/O die ↔ 计算 die,要求驱动零改动 | **PCIe over UCIe(Flit Mode)** | 复用 PCIe 软件栈,跨 die 边界对软件透明 |
| 封装内接 CXL 内存/加速器,追求低延迟 | CXL over UCIe | 省掉板级 SerDes 与 Retimer,pJ/bit 与延迟大幅改善 |
| 自研同构多芯片 SMP(如双 compute die 拼一颗) | **CML_SMP over UCIe(Streaming Raw Mode)** | 对称一致性、延迟最优,代价是绑定 Arm CMN 生态 |
| 跨厂商 chiplet 生态、需要混搭 | CHI C2C over UCIe | 开放 AMBA 规范,format X 专为 die-to-die 设计 |
| 跨封装 / 跨 socket / 背板 | CXL over PCIe(或 UCIe Retimer Raw Mode) | 只有 PCIe PHY 能撑住长距与连接器 |
| 内存池化、机架级解耦 | CXL 3.x/4.0 Type 3 + Switch | 多级交换、fabric、DCD 动态容量 |
| 非标准协议(以太网 MAC、自定义 NoC、RF/DSP 流) | UCIe Streaming Raw Mode | 协议任意,只要两端自洽,仍可白拿 UCIe 的链路管理与测试修复 |
| 纯 I/O 扩展 | 原生 PCIe | CXL 的一致性开销没有收益 |
五、几条实践判据
- 要"生态互通"选 CXL,要"极致延迟/能效"选自研协议 over UCIe Streaming------这是 chiplet 设计里最核心的一次取舍。
- CXS 只解决"怎么把包递给链路层",flit 内容、顺序、重试语义全由上层的 CXL/CML/C2C 决定;换协议时 CXS 这层不用动,这正是 Arm 把它独立出来的价值。
- 距离决定物理层,语义决定协议层:先定"封装内还是板级",UCIe 与 PCIe PHY 二选一;再定"要不要一致性",CXL / CML_SMP / CHI C2C / 纯 PCIe 四选一。这两步定完,栈就基本确定了。
- UCIe 上跑 PCIe 有个版本坑:Flit Mode 要求协议本身已 flit 化,所以早期只支持 PCIe 6.0;UCIe 2.0 起才补充了把 PCIe non-Flit 模式事务封装进 68B Flit 的映射方式,做 IP 选型时务必对齐版本。