4、AXI互连拓扑:三种架构的选型之道

大家好,我是老李。今天咱们聊聊AXI互连拓扑。说白了,就是怎么把多个Master和多个Slave连起来,让它们高效通信。

我刚开始做SoC设计那会儿,总觉得互连就是拉几根线的事。后来踩了不少坑,才明白拓扑结构选错了,整个芯片的性能和面积都会出问题。嗯,今天我把三种主流架构掰开揉碎了讲清楚。

4.1 共享总线架构

这是最传统的方案。所有Master和Slave都挂在同一条总线上,谁想通信,先申请总线使用权。

核心特点:同一时刻,只能有一个Master占用总线。

优点:

  • 硬件实现简单,面积小,功耗低
  • 仲裁逻辑成熟,比如轮询、优先级仲裁
  • 适合Master数量少的场景(2-4个)

缺点:

  • 带宽瓶颈明显,多个Master同时请求时,只能排队
  • 扩展性差,每加一个Master,仲裁复杂度就上升
  • 时序收敛困难,总线负载重时,频率上不去

适用场景:

  • 低功耗IoT芯片,Master少,带宽要求不高
  • 成本敏感的设计,面积是第一优先级
  • 我做过一个蓝牙芯片,就用的共享总线,面积省了30%

避坑指南:我曾经在4个Master共享总线的项目里,发现CPU和DMA同时访问DDR时,总线利用率飙到95%,延迟直接翻倍。后来加了优先级仲裁才解决。记住,共享总线不适合高并发场景。

4.2 交叉开关架构

交叉开关,也叫Crossbar。它允许任意Master和任意Slave同时通信,互不干扰。

你想想看,这就像电话交换机,每个Master都能直接拨通任意Slave。硬件上,交叉开关内部是一个矩阵,每个交叉点就是一个MUX。

核心特点:N个Master和M个Slave,最多支持N×M条并行通路。

优点:

  • 并行度高,多个Master可以同时访问不同Slave
  • 延迟低,没有总线竞争时,几乎零等待
  • 扩展性好,增加Master或Slave相对容易

缺点:

  • 面积大,交叉点数量是N×M,资源消耗呈平方增长
  • 布线复杂,特别是位宽大的时候,绕线资源吃紧
  • 功耗高,所有交叉点都在工作,即使没数据传输

适用场景:

  • 高性能计算芯片,比如AI加速器、网络处理器
  • 多核CPU集群,每个核都需要独立访问内存
  • 我参与过一个8核的SoC,用的就是Crossbar,每个核跑自己的任务,互不干扰

注意:交叉开关的面积和功耗,跟端口数成平方关系。8×8的Crossbar,面积可能是4×4的4倍。选型时一定要算清楚。

4.3 多层互连架构

多层互连,是共享总线和交叉开关的折中方案。它把系统分成多个层,每层内部用共享总线,层与层之间用桥接。

我个人习惯叫它「分层总线」。比如,CPU和Cache放一层,DMA和Peripheral放另一层,两层之间通过AXI桥连接。

核心特点:分层隔离,层内共享,层间桥接。

优点:

  • 面积和性能的平衡点,比Crossbar省面积,比共享总线性能好
  • 隔离性好,一层出问题,不影响其他层
  • 时序友好,每层负载可控,频率容易做高

缺点:

  • 跨层访问有额外延迟,桥接需要时间
  • 设计复杂度增加,需要规划好分层策略
  • 灵活性不如Crossbar,跨层并行度有限

适用场景:

  • 中高端SoC,比如手机基带芯片、车载芯片
  • 需要隔离安全域和非安全域的设计
  • 我做过一个车规级芯片,就把安全相关的Master放在独立层,通过桥接隔离,既保证了性能,又满足了功能安全

4.4 三种架构对比

为了让你看得更清楚,我整理了一张表:

特性 共享总线 交叉开关 多层互连
并行度 低(1条通路) 高(N×M条通路) 中(层内1条,层间桥接)
面积 小 大(平方增长) 中
功耗 低 高 中
延迟 高(竞争时) 低(无竞争时) 中(跨层有额外延迟)
扩展性 差 好 中
设计复杂度 低 高 中
典型应用 IoT、低功耗 AI、多核CPU 手机SoC、车载

4.5 核心逻辑图

下面这张SVG图,展示了三种架构的核心逻辑。你可以直观地看到数据通路的差异。

AXI互连拓扑核心逻辑 共享总线 M0 M1 M2 ← 仲裁器 → S0 S1 S2 交叉开关 M0 M1 M2 S0 S1 S2 多层互连 层1 Master 层2 Master 层1 Slave 层2 Slave 桥 Master Slave 桥接

4.6 选型建议

说了这么多,到底怎么选?我总结几条实战经验:

  1. Master数量≤4,带宽要求低 → 共享总线,省面积省功耗
  2. Master数量≥8,需要高并行 → 交叉开关,性能优先
  3. Master数量4-8,有隔离需求 → 多层互连,折中方案
  4. 混合场景 → 可以组合使用,比如关键路径用Crossbar,非关键路径用共享总线

我的经验:有一次做AI芯片,CPU和NPU都需要频繁访问DDR。我一开始用了共享总线,结果NPU一跑推理,CPU就卡死。后来改成Crossbar,两边各走各的路,问题解决。但代价是面积多了40%。

嗯,拓扑选型没有银弹。你得根据Master数量、带宽需求、面积预算、功耗目标来权衡。我建议你在架构设计阶段,先做一轮带宽仿真,看看瓶颈在哪,再决定用哪种拓扑。

好了,这一章就到这里。记住,选拓扑就是选平衡点。

可可精品资料库