2、多芯片互联基础:片内互联与片间互联的区别、多芯片系统的拓扑结构

各位同学,今天我们来聊聊多芯片互联。说实话,这个主题我特别喜欢,因为我在职业生涯早期踩过不少坑。记得第一次做多芯片系统时,我天真地以为把几个芯片用线连起来就行了——结果呢?信号完整性一塌糊涂,功耗高得吓人。从那以后,我才真正开始认真研究互联这件事。

2.1 片内互联 vs 片间互联:本质区别在哪?

先问大家一个问题:为什么我们要区分片内和片间?你想想看,一个芯片内部,信号走线可能只有几毫米;而芯片之间,走线可能是几厘米甚至几十厘米。这可不是简单的距离问题。

片内互联,说白了就是芯片内部各个模块之间的通信。比如CPU核和L2缓存之间,或者GPU和内存控制器之间。片内互联有几个特点:

  • 带宽高:片内走线可以做到很宽,128位、256位甚至512位数据总线都很常见
  • 延迟低:几纳秒到十几纳秒,因为物理距离短
  • 功耗可控:驱动片内走线的功耗相对较小
  • 协议简单:比如AXI、CHI这些协议,都是为片内设计的

片间互联就完全不一样了。芯片和芯片之间,信号要经过封装、PCB走线、连接器——嗯,这里要注意,每一段都会引入寄生参数。片间互联的特点:

  • 带宽受限:受限于封装引脚数和PCB布线密度
  • 延迟大:几十纳秒到几百纳秒,甚至微秒级
  • 功耗高:驱动片外走线需要更强的驱动能力
  • 协议复杂:需要处理链路训练、错误重传、流量控制等

核心区别一句话总结:片内互联追求极致带宽和低延迟,片间互联更关注可靠性和可扩展性。

我在项目中遇到过这样一个案例:某次做AI加速器,片内用CHI协议互联,带宽做到1TB/s没问题。但片间用PCIe 4.0 x16,带宽才32GB/s——差了30多倍。这就是现实,你得接受。

2.2 多芯片系统的拓扑结构

拓扑结构,说白了就是芯片之间怎么连。我见过不少新手一上来就选Mesh,觉得它最流行。但实际选型要看具体场景。下面我介绍三种最常见的拓扑。

2.2.1 Mesh结构

Mesh结构就像一张网格,每个芯片是一个节点,只和上下左右四个邻居相连。这种结构在CMN(Coherent Mesh Network)中非常常见。

2x3 Mesh 拓扑结构 Chip 0 Chip 1 Chip 2 Chip 3 Chip 4 Chip 5 芯片节点 片间链路

Mesh的优点很明显:

  • 可扩展性好:增加芯片只需在网格边缘添加节点
  • 局部性优势:相邻芯片通信延迟极低
  • 布线简单:每个节点只有4个方向,PCB设计友好

但缺点也突出:

  • 跳数多:对角芯片通信需要多次跳转,延迟累积
  • 路由复杂:需要死锁避免和拥塞控制
  • 带宽瓶颈:中心节点可能成为热点

我的经验:Mesh适合芯片数量多(8个以上)且通信模式以局部为主的场景。我曾经在16芯片的AI训练系统中用过Mesh,效果不错。但如果芯片数量少于4个,Mesh就有点大材小用了。

2.2.2 Ring结构

Ring结构,所有芯片连成一个环。数据只能沿着一个方向(单向环)或两个方向(双向环)传输。

双向Ring拓扑结构 Chip 0 Chip 1 Chip 2 Chip 3 Chip 4 芯片节点 双向链路

Ring结构的优缺点:

优点 缺点
布线最简单,PCB走线少 跳数随芯片数线性增长
协议实现简单 单点故障会导致整个环失效
功耗相对较低 带宽受限于最慢的链路
适合确定性流量 扩展性差,超过8个芯片延迟就很高

避坑指南:我曾经在一个4芯片的存储系统中用了Ring结构,结果发现当Chip 0和Chip 3频繁通信时,中间节点Chip 1和Chip 2的带宽被大量占用。后来我加了一个旁路通道才解决。所以,Ring结构一定要考虑流量模式。

2.2.3 Crossbar结构

Crossbar,也叫交叉开关。每个芯片都有一条专用链路连接到中央交换矩阵。说白了,就是全互联。

4x4 Crossbar 拓扑结构 Crossbar 交换矩阵 Chip 0 Chip 1 Chip 2 Chip 3 Chip 4 Chip 5 Chip 6 Chip 7 芯片节点 交换矩阵

Crossbar的特点:

  • 全互联:任意两个芯片之间都有直达路径,延迟最低
  • 无阻塞:理论上所有端口可以同时通信
  • 实现复杂:N个芯片需要N²条链路,成本高
  • 扩展性差:芯片数超过8个,布线就变得非常困难

选型建议

  • 芯片数 ≤ 4:Crossbar最合适,延迟最低
  • 芯片数 4-8:Ring或小规模Mesh都可以
  • 芯片数 ≥ 8:Mesh是主流选择
  • 芯片数 ≥ 16:必须用Mesh,且要考虑层次化设计

2.3 实际项目中的选择逻辑

我个人的习惯是,先看芯片数量,再看通信模式。举个例子:

去年我做的一个边缘计算项目,用了4个芯片。我一开始想用Mesh,但后来发现芯片之间的通信主要是Chip 0和Chip 1之间,Chip 2和Chip 3之间,跨组通信很少。最后我选了Ring结构,布线简单,功耗也低。你看,不是所有场景都要上Mesh。

另一个项目是数据中心交换机,用了12个芯片。这次我选了Mesh,因为流量模式是任意的,而且需要高可靠性。Mesh的冗余路径正好满足需求。

小技巧:在做拓扑选型时,建议先画一个通信流量矩阵。把每个芯片对之间的通信带宽估算出来,然后看看哪些路径是热点。这个矩阵能帮你快速排除不合适的拓扑。

好了,关于片内和片间互联的区别,以及三种常见拓扑,我们就聊到这里。记住,没有最好的拓扑,只有最适合你场景的拓扑。下次遇到多芯片系统设计,先别急着选Mesh,停下来想想——你的流量模式是什么样的?


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