第4章:AXI互联结构:四种主流架构对比

做AXI互联设计这么多年,我见过不少工程师一上来就问:「哪种互联结构最好?」

说实话,没有最好的,只有最合适的。今天我就把这四种架构——点对点、共享总线、交叉开关、NoC——掰开揉碎了讲清楚。你想想看,选错了架构,轻则性能瓶颈,重则芯片推倒重来,这坑我踩过不止一次。

4.1 点对点连接:最简单,也最奢侈

点对点连接,说白了就是一个master直接连一个slave。中间没有任何仲裁逻辑,也没有共享通路。

核心特点:

  • 每个master独占一条AXI通道
  • 无仲裁延迟,延迟最低
  • 带宽完全私有,不受其他master影响

我在一个AI加速器项目中用过这种方案。当时需要把DMA和计算单元直连,要求极低延迟。点对点连接确实香,延迟只有2个时钟周期。

但代价呢?

  • 连线数量爆炸:每个master都要独立走线
  • 面积开销大:每个接口都要独立的FIFO和握手逻辑
  • 扩展性差:加一个master,所有slave都得加接口

避坑指南:我曾经在一个SoC项目中,为了追求极致性能,把所有关键路径都用了点对点。结果后端布局布线时,绕线资源不够,不得不改方案。记住:点对点只适合少量、高优先级的专用通道。

4.2 共享总线:经典但已过时

共享总线架构,就是所有master和slave挂到同一条总线上。一次只能有一个master发起传输。

嗯,这里要注意:共享总线不是「大家一起用」,而是「轮流用」。

特性 点对点 共享总线
并发性 完全并发 一次一个master
连线复杂度 O(N×M) O(N+M)
仲裁延迟 无 1-3个周期
典型应用 专用高速通道 低端MCU

我个人习惯,在低功耗IoT芯片中偶尔会用共享总线。因为连线少,功耗低。但性能嘛...你想想看,CPU和DMA抢总线的时候,谁都得等。

经验之谈:如果master数量超过3个,就别用共享总线了。我曾经在一个4核处理器项目中硬用共享总线,结果仲裁器成了瓶颈,性能直接腰斩。

4.3 交叉开关:最常用的折中方案

交叉开关(Crossbar)是目前SoC中最主流的选择。它允许多个master同时访问不同的slave。

说白了,就是给每个master和slave之间建了一个「交换矩阵」。只要目标slave不同,就可以并行传输。

// 交叉开关的典型配置参数
// 以4x4 Crossbar为例
parameter NUM_MASTERS = 4;
parameter NUM_SLAVES  = 4;

// 每个master端口独立
wire [NUM_SLAVES-1:0] master_req;  // 请求信号
wire [NUM_MASTERS-1:0] slave_grant; // 授权信号

// 地址译码 + 仲裁
always_comb begin
  for (int i = 0; i < NUM_MASTERS; i++) begin
    // 每个master独立译码
    master_req[i] = 1 << addr_decode(master_addr[i]);
  end
end

交叉开关的优势很明显:

  • 并发性好:不同slave可以同时被访问
  • 延迟可控:仲裁延迟固定,通常2-4个周期
  • 面积适中:比点对点省,比共享总线费

我建议:对于10个master以内的系统,优先考虑Crossbar。我在一个多媒体SoC中用过8x6的Crossbar,CPU、GPU、DSP、显示控制器各走各的路,互不干扰。

4.4 网络片内互联:面向未来的架构

NoC(Network-on-Chip)是应对超大规模互联的方案。它把芯片内部的数据传输,抽象成了网络通信。

你想想看,当master数量超过20个,Crossbar的连线复杂度会呈O(N²)增长。这时候NoC就派上用场了。

NoC的核心组件:

  • 路由器(Router):负责数据包转发
  • 网络接口(NIC):把AXI协议转换成数据包
  • 链路(Link):物理连线,通常用2D Mesh拓扑

我曾经踩过的坑:在一个64核处理器项目中,我们一开始用了Crossbar。结果综合后面积爆炸,绕线根本走不通。后来改成NoC,面积降了40%,频率还提升了15%。但NoC的延迟比Crossbar高,平均多了5-8个周期。

4.5 四种架构的对比总结

我整理了一张对比表,方便你快速决策:

维度 点对点 共享总线 Crossbar NoC
最大master数 2-4 3-5 8-16 64+
延迟(周期) 1-2 2-4 3-6 8-20
带宽利用率 100% 30-50% 60-80% 70-90%
面积开销 高 低 中 中高
设计复杂度 低 低 中 高

选型建议:

  • 只有1-2个master:点对点,简单粗暴
  • 3-5个master且性能要求不高:共享总线,省面积
  • 6-16个master:Crossbar,性能和面积的平衡点
  • 16个master以上:NoC,扩展性优先

4.6 架构对比的SVG示意图

下面这张图,我画了四种架构的核心拓扑结构。你看一眼就能明白它们的区别:

四种AXI互联架构对比 Master Slave 仲裁/交换 点对点连接 M1 M2 S1 S2 共享总线 M1 M2 M3 总线 S1 S2 交叉开关 M1 M2 M3 交换
矩阵 S1 S2 S3 网络片内互联 (NoC) M1 R1 S1 M2 R2 S2 2x2 Mesh 拓扑示例

从这张图可以清楚看到:点对点是「专线专用」,共享总线是「单车道」,Crossbar是「立交桥」,NoC则是「城市路网」。每种架构的适用场景完全不同。

最后说句实在话:选架构没有银弹。我见过有人用NoC做3个master的系统,纯属杀鸡用牛刀。也见过有人用共享总线做16核处理器,结果性能惨不忍睹。关键是根据你的master数量、带宽需求、延迟要求来权衡。

嗯,这四种架构的对比就讲到这里。下一章我们会深入Crossbar的内部实现,包括仲裁算法、地址译码、数据通路设计。到时候我会分享一些实际项目中的优化技巧。

可可精品资料库