3、AXI互连拓扑结构:共享总线、交叉开关、多层互连与网状网络
好,咱们今天聊聊AXI互连的拓扑结构。说白了,就是怎么把一堆master和slave连起来,让它们高效地“说话”。
我刚开始做SoC的时候,觉得连起来不就行了吗?后来发现,拓扑选错了,性能直接崩盘。你想想看,一个CPU核要读数据,另一个DMA要写数据,结果都堵在一条路上,那画面太美我不敢看。
常见的拓扑有四种:共享总线、交叉开关、多层互连、网状网络。咱们一个一个说。
3.1 共享总线
这是最原始、最简单的方案。所有master和slave都挂在一根总线上。谁想用,先申请,拿到授权才能用。
优点:
- 硬件简单,面积小,功耗低。
- 适合master少、带宽要求不高的场景。
缺点:
- 同一时刻只能有一个master访问总线,其他都得等着。
- 总线是全局的,频率上不去,延迟大。
3.2 交叉开关
交叉开关(Crossbar)就灵活多了。它像一个矩阵,每个master都可以同时连接不同的slave。只要不冲突,多个master可以并行访问。
举个例子,一个4x4的交叉开关,可以同时让CPU读内存、DMA写外设、GPU读纹理。互不干扰。
优点:
- 并行度高,带宽大。
- 每个master都有独立的路径,延迟可控。
缺点:
- 面积大,功耗高。交叉点数量是master数×slave数,master一多,面积爆炸。
- 仲裁逻辑复杂,特别是当多个master同时访问同一个slave时。
3.3 多层互连
多层互连(Multi-layer Interconnect)是共享总线和交叉开关的折中方案。它把总线分成多个层,每个层可以独立工作。层与层之间通过桥接器连接。
比如,一个SoC可以分成“CPU层”、“DMA层”、“外设层”。CPU层内部用共享总线,DMA层内部也用共享总线,但两层之间可以并行工作。
优点:
- 面积和功耗比交叉开关小。
- 比共享总线并行度高。
- 设计灵活,可以按需分层。
缺点:
- 层间通信需要桥接器,增加延迟。
- 如果层内master太多,还是会成为瓶颈。
3.4 网状网络
网状网络(Mesh Network)是大型SoC的终极方案。它把互连结构变成一个网格,每个节点(router)连接一个master或slave。数据包在网格里路由,从源节点跳到目标节点。
这就像城市里的交通网络,每条路都可以走,但需要导航(路由算法)。
优点:
- 可扩展性极强,master和slave数量可以很多。
- 并行度极高,理论上所有节点可以同时通信。
- 没有全局瓶颈,频率可以很高。
缺点:
- 设计复杂,需要路由算法、流控、死锁避免等。
- 面积和功耗大,特别是router。
- 延迟不确定,取决于跳数和拥塞情况。
3.5 拓扑对比与选型建议
为了让你看得更清楚,我整理了一个表格:
| 拓扑类型 | 并行度 | 面积 | 功耗 | 延迟 | 可扩展性 | 适用场景 |
|---|---|---|---|---|---|---|
| 共享总线 | 低 | 小 | 低 | 高 | 差 | 小规模、低带宽 |
| 交叉开关 | 高 | 大 | 高 | 低 | 中 | 中规模、高带宽 |
| 多层互连 | 中 | 中 | 中 | 中 | 中 | 中规模、混合带宽 |
| 网状网络 | 极高 | 大 | 高 | 可变 | 强 | 大规模、高性能 |
我个人选型的习惯是:
- master少于4个,用共享总线。
- master在4-8个之间,用多层互连或小型交叉开关。
- master超过8个,或者有高带宽需求,用交叉开关。
- master超过16个,或者需要极致扩展性,用网状网络。
3.6 知识体系结构图
下面这张图展示了四种拓扑的核心逻辑和关系:
嗯,这张图把四种拓扑的核心特点都列出来了。你选型的时候,对着这张图看,基本不会跑偏。
最后说一句,没有完美的拓扑,只有最适合的拓扑。别盲目追求高性能,也别为了省面积牺牲性能。平衡,才是SoC架构师的真功夫。