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。
- (1)各主机保证自己的ID与其它主机不同。
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来保证从机返回主机数据的顺序要与主机发出的事务顺序一致。重排序电路设计与从机内的相似。
如有问题,请多指正!!
标签:事务,Interconnect,主机,从机,AMBA4,AXI,ID From: https://www.cnblogs.com/qianbinbin/p/17473848.html