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)中非常常见。
Mesh的优点很明显:
- 可扩展性好:增加芯片只需在网格边缘添加节点
- 局部性优势:相邻芯片通信延迟极低
- 布线简单:每个节点只有4个方向,PCB设计友好
但缺点也突出:
- 跳数多:对角芯片通信需要多次跳转,延迟累积
- 路由复杂:需要死锁避免和拥塞控制
- 带宽瓶颈:中心节点可能成为热点
我的经验:Mesh适合芯片数量多(8个以上)且通信模式以局部为主的场景。我曾经在16芯片的AI训练系统中用过Mesh,效果不错。但如果芯片数量少于4个,Mesh就有点大材小用了。
2.2.2 Ring结构
Ring结构,所有芯片连成一个环。数据只能沿着一个方向(单向环)或两个方向(双向环)传输。
Ring结构的优缺点:
| 优点 | 缺点 |
|---|---|
| 布线最简单,PCB走线少 | 跳数随芯片数线性增长 |
| 协议实现简单 | 单点故障会导致整个环失效 |
| 功耗相对较低 | 带宽受限于最慢的链路 |
| 适合确定性流量 | 扩展性差,超过8个芯片延迟就很高 |
避坑指南:我曾经在一个4芯片的存储系统中用了Ring结构,结果发现当Chip 0和Chip 3频繁通信时,中间节点Chip 1和Chip 2的带宽被大量占用。后来我加了一个旁路通道才解决。所以,Ring结构一定要考虑流量模式。
2.2.3 Crossbar结构
Crossbar,也叫交叉开关。每个芯片都有一条专用链路连接到中央交换矩阵。说白了,就是全互联。
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