AXI 协议 Out-of-Order 传输机制
概述
AXI (Advanced eXtensible Interface) 协议支持乱序传输 (Out-of-Order) 机制,这是一种重要的性能优化特性,允许数据传输不按照发起顺序完成,从而提高总线带宽利用率和系统整体性能。
基本原理
通道独立性
AXI 协议包含 5 个独立通道,支持乱序传输:
- AR (Address Read): 读地址通道
- R (Read Data): 读数据通道
- AW (Address Write): 写地址通道
- W (Write Data): 写数据通道
- B (Write Response): 写响应通道
ID(Identifier)
- 标识: 每个 AXI 事务都包含一个唯一的 ID 标识符
- ID 位宽: 通常为 4-8 位,支持最多 16-256 个并发事务
- 独立跟踪: Master 可以通过 ID 来跟踪和匹配请求与响应
ID的类型:
名字 | 位宽 | 含义 |
---|---|---|
AWID | ID_W_WIDTH | 写通道的标识(write request) |
BID | ID_W_WIDTH | 写通道的标识(write response) |
ARID | ID_R_WIDTH | 读通道的标识(read request) |
RID | ID_R_WIDTH | 读通道的标识(read data) |
WID | ID_R_WIDTH | 写通道的标识(write data) |
注: WID用于交织,但是在后续的协议中,被移除了
Out-of-Order 传输特性
写乱序
- 写地址和写数据可以乱序发送
- 写响应可以乱序返回
- 但同一 ID的写地址必须在写数据之前或同时到达
如下图所示:
- 先后发出的地址为A,ID为0的写请求、地址为B,ID为1的写请求,以及地址为C,ID为0的写请求
- 同样是写,蓝色的写请求先于红色,但是红色的写操作先完成了,先返回相应,返回的响应是乱序的
- 红色的写数据,可以穿插在蓝色的写数据之中,也就是交织;但是由于设计过于复杂,后续协议已将WID删除
- 对于同一ID而言,内部的顺序是必须一致的
读乱序
读乱序与写乱序实际差不多,有一点需要注意,写操作只有完成同一ID的最后一个才会返回对应的WID;读操作每读一次,对应返回对应的RID
如下图:
- 先发送的读请求和地址的后返回数据—>乱序
- 红色的读操作先完成,同时支持不同ID之间的乱序
- 红色的读之间支持蓝色的读,支持交织
- 同一ID之间是按顺序的
总结
AXI 的 out-of-order 传输机制是现代高性能 SoC 设计的关键特性,通过合理的 ID 管理和灵活的顺序约束,在保证数据一致性的前提下,显著提升了系统的并发性能和资源利用率。在实际应用中,需要根据具体的系统需求和性能目标,合理设计相关的硬件架构和验证策略。
和灵活的顺序约束,在保证数据一致性的前提下,显著提升了系统的并发性能和资源利用率。在实际应用中,需要根据具体的系统需求和性能目标,合理设计相关的硬件架构和验证策略。