4、Chiplet互连技术(下):Die-to-Die接口标准与协议栈

好,咱们接着聊Chiplet互连。上一章我们把物理层的那些事儿讲得差不多了,这一章重点聊聊Die-to-Die的接口标准。说白了,就是不同芯片之间怎么“握手”、怎么“说话”。

我个人习惯把接口标准分成三类:UCIe、BoW和OpenHBI。这三兄弟各有各的脾气,也各有各的适用场景。你想想看,一个高性能计算芯片和一个低功耗IoT芯片,它们对互连的要求能一样吗?

4.1 三大主流接口标准

4.1.1 UCIe(Universal Chiplet Interconnect Express)

UCIe是目前最火的接口标准,没有之一。为什么?因为它背后站着一大票巨头——Intel、AMD、ARM、Google、Meta、微软……嗯,基本上你能想到的半导体大厂都在里面。

UCIe的核心思想是什么?就是把PCIe和CXL的协议栈搬到Chiplet互连上来。这样做的好处很明显:软件生态可以直接复用。你原来写的PCIe驱动,稍微改改就能用在UCIe上。

UCIe的关键参数:

  • 每通道数据速率:最高32 GT/s(当前标准)
  • 每通道功耗:约0.5 pJ/bit(标准封装)
  • 最大带宽密度:约1.35 TB/s/mm(边缘密度)
  • 支持封装类型:标准封装、先进封装(2.5D/3D)

我在项目中遇到过一个问题:UCIe的物理层设计其实挺讲究的。它的时钟方案用的是转发时钟(Forwarded Clock),而不是嵌入式时钟。为什么?因为转发时钟的抖动性能更好,对高速信号的时序裕度更友好。嗯,这里要注意,转发时钟需要额外的时钟走线,这会占用一些布线资源。

4.1.2 BoW(Bridge of Wires)

BoW是Open Compute Project(OCP)推的标准。说实话,它没有UCIe那么“豪华”,但胜在简单、灵活。

BoW的设计哲学是“够用就好”。它不像UCIe那样追求极致的高速,而是更注重低成本和易实现。我个人觉得,BoW特别适合那些对带宽要求不是特别变态的场景——比如中端AI加速器、网络芯片等。

特性 UCIe BoW OpenHBI
最大速率 32 GT/s 16 GT/s 24 GT/s
功耗效率 0.5 pJ/bit 0.3 pJ/bit 0.4 pJ/bit
协议栈复杂度 高(完整PCIe/CXL栈) 低(精简协议) 中(HBM衍生)
适用封装 标准+先进 标准封装为主 先进封装(2.5D/3D)

4.1.3 OpenHBI(Open High Bandwidth Interface)

OpenHBI这个名字你可能不太熟,但它的“亲戚”你一定知道——HBM(High Bandwidth Memory)。没错,OpenHBI就是从HBM的接口标准衍生出来的。

OpenHBI最大的特点是:它专门为先进封装设计。2.5D封装、3D封装,这些场景下OpenHBI的表现非常出色。为什么?因为它的物理层设计就是针对硅中介层(Interposer)和微凸点(Micro-bump)优化的。

我的建议:如果你在做HBM相关的Chiplet设计,优先考虑OpenHBI。它和HBM的兼容性最好,可以减少很多适配工作。我曾经在一个项目中硬要用UCIe去连HBM,结果折腾了两个月才发现,还是OpenHBI更省事。

4.2 协议栈分层

好了,标准讲完了,咱们聊聊协议栈。不管哪个标准,协议栈的分层思路都差不多。我习惯把它分成四层:

  1. 物理层(PHY):负责信号的发送和接收,包括SerDes、时钟恢复、均衡等。
  2. 数据链路层(Data Link):负责数据的可靠传输,包括CRC校验、重传机制、流量控制等。
  3. 传输层(Transport):负责数据包的路由和分发,包括地址映射、数据包分片/重组等。
  4. 协议层(Protocol):负责上层协议的适配,比如PCIe、CXL、AXI等。

你可能会问:为什么要分这么多层?直接传数据不就行了?

嗯,这个问题我当年也问过。后来在项目中吃过亏才明白:分层是为了解耦。比如,你想换一种物理层实现(从标准封装换成先进封装),只要接口不变,上面的协议层完全不用动。这就是分层的好处。

避坑指南:我曾经在一个项目中,为了追求极致的低延迟,把数据链路层的CRC校验给去掉了。结果呢?芯片跑起来偶尔会出现数据错误,排查了整整两周才发现是这个问题。从那以后,我再也不敢随便砍协议栈的可靠性机制了。

4.3 带宽与延迟的权衡

做Chiplet互连,最核心的权衡就是带宽和延迟。你想想看,带宽高了,延迟往往也会跟着上去;延迟低了,带宽可能又不够用。怎么平衡?

我总结了几条经验:

  • 数据包大小是关键:大包有利于提高带宽利用率,但会增加延迟。小包延迟低,但带宽利用率会下降。一般来说,控制面用短包,数据面用长包。
  • 时钟频率不是越高越好:频率高了,时序收敛更难,功耗也更大。我建议先满足带宽需求,再考虑降频。
  • 并行度比单通道速率更重要:用多个低速通道并行,往往比单条高速通道更稳定。我在一个项目中试过用32条1 GT/s的通道,效果比4条8 GT/s的通道好得多——功耗更低,信号完整性也更容易保证。

下面这张图是我自己总结的带宽-延迟权衡关系,你可以参考一下:

带宽与延迟权衡关系图 带宽(Gbps) 0 50 100 150 200 延迟(ns) 0 10 20 30 40 大包(高带宽、高延迟) 小包(低带宽、低延迟) 最优 权衡区 小包场景 大包场景 最优权衡区

从这张图你可以看到,小包场景下延迟低,但带宽也低;大包场景下带宽高,但延迟也高。中间那个绿色区域,就是我们需要努力达到的“最优权衡区”。

怎么进入这个区域?我的经验是:

  • 合理选择数据包大小:根据应用场景动态调整。比如,控制指令用64字节的小包,数据传输用1024字节的大包。
  • 使用流水线技术:把大包拆成多个小包流水传输,既保证了带宽,又降低了延迟。
  • 优化协议栈实现:减少不必要的协议开销。比如,在数据链路层使用轻量级的纠错码(如BCH码)代替完整的CRC+重传机制。

一个小技巧:在实际项目中,我习惯先用仿真工具跑一下带宽和延迟的trade-off曲线。找到那个“拐点”——就是带宽增加但延迟开始急剧上升的那个点。然后在这个点附近选择设计参数,往往能得到比较好的平衡。

好了,这一章的内容就到这里。Die-to-Die接口标准的选择,说白了就是看你的应用场景:要生态兼容选UCIe,要低成本选BoW,要HBM兼容选OpenHBI。协议栈分层是基本功,别偷懒。带宽和延迟的权衡,需要你在实际项目中慢慢摸索。

记住一句话:没有最好的标准,只有最合适的标准。

可可精品资料库