【ARM AMBA AXI 入门 4 - AXI 协议中的 Out-of-Order transfer and interleave 介绍 】

文章目录

    • 1.1 AXI Out-of-Order
      • 1.1.1 axi write out-of-order
      • 1.1.2 axi read out-of-order
    • 1.2 AXI out of order and interleave
      • 1.2.1 write interleave
      • 1.2.2 read interleave
    • 1.3 小结

1.1 AXI Out-of-Order

当一个master向一个或多个slave发出数据块读/写请求时,AXI总线要求在同一个数据块内,每一个数据的读/写的完成必须按照顺序。但数据块之间,或读取与写入之间,AXI总线并不要求完成读/写的顺序与发出读/写请求的顺序保持一致,也就是允许读/写事务的乱序(Out-of-Order)。

AXI总线的每个通道上的每一个读/写请求、数据结果,以及写入回应都包括一个 4bit 的读/写事务识别序号ID[3:0]。根据识别序号,主控模块可以辨别接收到的读取数据或是写入回应与发出的读/写请求之间的对应关系。

out-of-order 说的是发送 transaction 和接收的cmd之间的顺序没有关系,如先接到 A 的 cmd,再接到 B的cmd,则可以先发 B 的data,再发A的data;

1.1.1 axi write out-of-order

对于AXI master, 先看写操作: 如果分别发出 WCMD1 和 WCMD2 两个写命令给两个不同的 slave,假设这两个写命令都是四拍的数据分别记为 WDATA1_0WDATA1_1WDATA1_2WDATA1_3,以及 WDATA2_0WDATA2_1WDATA2_2WDATA2_3

如果 master 在自己的写数据总线上,依次发出: WDATA2_0WDATA2_1WDATA2_2WDATA2_3WDATA1_0WDATA1_1WDATA1_2WDATA1_3,这就叫写 out of order

所以设计 master 时,如果是写操作,不会主动发出 out of oder 的操作,因为这个明显增加了复杂度且没带来 master 自己的效率提高。

1.1.2 axi read out-of-order

对于 master 读的情况:比如 master 同样发出 RCMD1RCMD2 两个读命令给不同的 slave,由于不同 slave 的响应速度不同,就可能出现 RCMD2 对应的读数据先返回到 master 的情况。master 依次接收到 RDATA2_0RDATA2_1RDATA2_2RDATA2_3RDATA1_0RDATA1_1RDATA1_2RDATA1_3 这样的数据是有可能的,这就是读的 out of order

1.2 AXI out of order and interleave

1.2.1 write interleave

如果 master 在自己的写数据总线上,依次发出 WDATA2_0,WDATA1_0,WDATA2_1,WDATA1_1,WDATA2_2,WDATA2_3,WDATA1_2,WDATA1_3,这就叫写 out of order且 interleave;注意,不论是out of order还是interleave,同一个命令对应的四拍数据在内部必须是顺序的,不能乱序。比如,不允许出现WDATA2_1,WDATA1_0,WDATA2_0,WDATA1_1,WDATA2_2,WDATA2_3,WDATA1_2,WDATA1_3这样的。

注意:AXI4的WID信号被去掉了,因此AXI4的写数据通道不能实现Out-of-Order 和 Interleaving

1.2.2 read interleave

对于 master 读的情况:比如 master 同样发出 RCMD1RCMD2 两个读命令给不同的 slave,由于不同 slave的响应速度不同,就可能出现 RCMD2 对应的读数据先返回到 master 的情况;再考虑到复杂系统的总线设计,master 依次接收到RDATA2_0RDATA1_0RDATA1_1RDATA1_2RDATA2_1RDATA2_2RDATA1_3RDATA2_3这样的数据是有可能的,这就是读的out of order且interleave

1.3 小结

对于 master,不建议发出 out of order 与 interleave 的写数据,但是必须支持 out of order与interleave的读操作,同样,对于 slave,必须支持 out of order 与 interleave 的写操作,不建议返回 out of order 与 interleave 的读数据。在一个系统中,interleave 会明显增加设计复杂度,其实可以约定 master, slave 以及连接总线都不要使用interleave。

推荐阅读
https://zhuanlan.zhihu.com/p/609150391

你可能感兴趣的:(#,ARM,Bus,Introduction,fpga开发,arm)