4、物理层对比:CCIX vs CXL 的 SerDes 基础

聊到物理层,很多工程师第一反应就是“不就是 PCIe 那套东西吗?”
嗯,这话对了一半。CCIX 和 CXL 确实都站在 PCIe 的肩膀上,但站上去之后,两家走的路不太一样。

我个人习惯把物理层比作高速公路的路基。PCIe 5.0/6.0 把路基修好了,32 GT/s 的速率、PAM4 调制(6.0 引入),这些是共享的基础设施。但 CCIX 和 CXL 在这条路上跑的车队规模、编队方式、信号容错策略,各有各的讲究。

4.1 共享的 PCIe 5.0/6.0 物理层基础

先说说共同点。两者都基于 PCIe 5.0 的 32 GT/s NRZ 信令,或者 PCIe 6.0 的 64 GT/s PAM4 信令。SerDes 的 TX/RX 均衡、时钟恢复、链路训练序列,这些底层机制完全一致。

我记得有一次调试一块 CXL 原型板,链路死活 link up 不上。折腾了半天,最后发现是 PCIe 5.0 的 TX 均衡参数没配对。你看,底层还是那套 PCIe 的物理层,该踩的坑一个不少。

参数 PCIe 5.0 PCIe 6.0
单 Lane 速率 32 GT/s (NRZ) 64 GT/s (PAM4)
编码方式 128b/130b 128b/130b + FLIT
前向纠错 (FEC) 轻量级 FEC
链路宽度 x1, x2, x4, x8, x16 x1, x2, x4, x8, x16

核心要点:CCIX 和 CXL 在 SerDes 层面没有本质区别。它们都复用 PCIe 的 PHY IP,包括 PLL、CDR、TX Driver、RX CTLE/DFE。这意味着你选哪家,芯片的模拟前端设计工作量几乎一样。

4.2 通道扩展:CCIX 的“宽车道” vs CXL 的“灵活编队”

这里开始出现分歧了。

CCIX 的做法:它支持更宽的通道扩展。标准定义中,CCIX 可以做到 x16 甚至 x32 的链路宽度。为什么?因为 CCIX 最初瞄准的是多路处理器互联,需要高带宽、低延迟的对称访问。你想想看,两个 64 核的 CPU 通过 CCIX 连起来,x16 的带宽才勉强够用。

CXL 的做法:CXL 更灵活。它支持 x1、x2、x4、x8、x16,但更强调“通道复用”。CXL 的物理层可以同时承载 CXL.io(类似 PCIe)、CXL.cache(缓存一致性)、CXL.mem(内存访问)三种流量。说白了,CXL 的物理层是一个多路复用器,把不同协议的 flit 包分时调度到同一条 SerDes 链路上。

避坑指南:我曾经在一个项目中,试图用 CXL 的 x4 链路去承载两个加速器的缓存一致性流量。结果发现,CXL.cache 的协议开销比想象中大,x4 的带宽根本不够用。后来老老实实换成了 x8。所以,选链路宽度时,别只看峰值带宽,要算上协议开销和流量模型。

4.3 链路宽度:物理 Lane 与逻辑 Lane 的映射

这里有个容易混淆的点:物理 Lane 和逻辑 Lane 的映射关系。

在 PCIe 中,一个物理 Lane 就是一个 SerDes 通道。但在 CCIX 和 CXL 中,逻辑上可以跨多个物理 Lane 做捆绑。比如,CCIX 支持“通道绑定”(Channel Bonding),把多个 x16 链路聚合成一个更大的逻辑链路。CXL 则更保守,它严格遵循 PCIe 的 Lane 映射规则,不支持跨链路聚合。

为什么会这样?
我个人理解是:CCIX 的设计哲学是“把带宽做大”,适合数据中心内的大规模一致性域。CXL 的设计哲学是“把延迟做低”,适合加速器与 CPU 的紧耦合。你想想看,跨链路聚合虽然带宽大了,但跨芯片的同步开销也上去了,延迟反而可能变差。

4.4 信号完整性:谁更“娇气”?

信号完整性这块,两者都跑在 32 GT/s 甚至 64 GT/s 上,对 PCB 走线、连接器、背板的要求都很高。但细节上有差异。

  • CCIX:对信号完整性要求更严格。因为 CCIX 支持更长的通道距离(比如跨背板互联),而且对误码率(BER)的要求更高(10^-19 级别)。我在调试 CCIX 链路时,经常需要加 retimer 或者 redriver 来补偿通道损耗。
  • CXL:相对“宽容”一些。CXL 的典型应用场景是片内或板级互联,通道距离短(通常 < 30cm),而且 CXL 的协议层有重传机制,可以容忍偶尔的 bit 错误。当然,PCIe 6.0 引入的 FEC 也帮了大忙。

注意:别被“宽容”两个字骗了。CXL 虽然协议层有重传,但重传带来的延迟惩罚是很大的。如果你的 CXL 链路信号质量太差,频繁触发重传,那延迟会从几十纳秒飙升到微秒级别。所以,该做的信号完整性优化,一样不能少。

4.5 核心逻辑:一张图看懂物理层对比

下面这张 SVG 图,把 CCIX 和 CXL 在物理层的异同点梳理清楚了。我建议你保存下来,以后做架构选型时直接参考。

CCIX vs CXL 物理层对比核心逻辑 共享基础:PCIe 5.0/6.0 PHY SerDes: 32 GT/s NRZ / 64 GT/s PAM4 CCIX CXL 通道扩展:支持 x16/x32,可跨链路聚合 链路宽度:物理 Lane 可捆绑成逻辑大通道 信号完整性:要求更高,BER 10^-19,需 retimer 通道扩展:严格遵循 PCIe Lane 映射,不支持聚合 链路宽度:x1~x16,更灵活,支持通道复用 信号完整性:相对宽容,协议层有重传机制 选型关键:带宽优先选 CCIX,延迟优先选 CXL

4.6 我的选型建议

说了这么多,到底怎么选?

我个人经验是:

  • 如果你在做多路 CPU 互联,或者需要构建一个大规模的一致性内存池,CCIX 的宽通道和跨链路聚合能力是刚需。别犹豫,上 CCIX。
  • 如果你在做加速器(GPU、FPGA、SmartNIC)与 CPU 的紧耦合,CXL 的灵活链路宽度和低延迟特性更合适。而且 CXL 的生态支持更广,Intel、AMD、ARM 都在推。
  • 如果信号完整性是你的痛点,比如板级走线很长、连接器质量一般,那 CXL 的重传机制能给你多一层保障。但别指望它解决所有 SI 问题,该加 retimer 还是得加。

一句话总结:物理层上,CCIX 和 CXL 同根同源,但 CCIX 偏向“宽而强”,CXL 偏向“灵而快”。选型时,先想清楚你的场景是带宽驱动还是延迟驱动。


公众号:蓝海资料掘金营,微信deep3321