AMBA4 AXI 多主机多传输

发布时间 2023-06-11 23:26:42作者: 可达达鸭

1. 多主机 AXI 架构

2. 不同主机间的事务独立

  • 如何实现多主机间事务独立
    • (1)各主机保证自己的ID与其它主机不同。
      • 协议并没有在主机之间设立消息共享机制,也就是各个主机都不知道其它主机使用的是什么ID,也就没办法避免。
    • (2)使用AXI Interconnect组件对不同主机的ID进行调整,即使各个主机发出的ID相同,经过AXI Interconnect之后,从机拿到的ID也是不同的。
      • 如上图所示,主机连接到Interconnect组件有对应的Sx端口,x值即表示了传输事务来自哪个主机,所以Interconnect可以在主机发过来的ARID号前面加上附加值x,再发送给从机。
      • 对于从机返回的RID,Interconnect需要剥掉附加值再返回数据给主机。
      • 对于从机返回的RID和BID的附加值可以直接将其转发至对应的主机。
      • 参考文献中有图片解释,更为清晰。
      • 考虑到要加附值信号,而赋值信号的位宽取决于主机的个数。
        • 协议建议:主机端ID位宽不超过4bit,从机端ID位宽不超过8bit。

3. Interconnect 功能

3.1 转发功能

  • AXI 本是一个单对单的协议,需要借助Interconnect组件才能实现多对多的通信。
  • Interconnect使用交叉总线连接每一个主机和从机端口,而交差总线的选通是由Interconnect内部的switch fabric或称crossbar来控制的。
    • 选通实现:Interconnect接收到主机发送过来的AxADDR,将其进行译码,选择对应的从机,这个过程相当于把哪根交叉线选通。
  • 写传输事务中,Interconnect需要保证写数据的保序性。
    • (1)写数据的顺序需要与写事务的顺序保持一致。
    • (2)在一个写事务的写数据期间,不能插入其它事务的数据。

3.2 多机仲裁功能

  • 需求:考虑到主机传输事务独立性,可能同时多个主机提出使用总线进行传输。Interconnect 也需为多个从机提供仲裁。
  • Interconnect中每个主机/从机接口有对应的缓冲通道Buff,而仲裁就是决定从哪个缓冲通道中读取事务,输入crossbar。
  • 仲裁策略
    • (1)轮询(round-robin),轮流从各个主机的缓存通道读取事务。
    • (2)优先级仲裁(priority),先读高优先级的缓存通道。

3.3 读数据重排序功能

  • 这篇博客中介绍,单主机的读事务中,由从机负责(相同ID传输事务的)保序性。
  • 在多主机通信中,主机可能向多个从机发出ID一致的传输事务,此时需要Interconnect来保证从机返回主机数据的顺序要与主机发出的事务顺序一致。重排序电路设计与从机内的相似。

如有问题,请多指正!!