欢迎各位朋友关注“郝旭帅电子设计团队”公众号,本公众号会定时更新相关技术类资料、软件等等,感兴趣的朋友可以浏览一下本公众号的其他“模块”,希望各位朋友都能在本公众号获得一些自己想要的“东西”。
本篇主要是AMBA AXI协议中传输ID信号的解释(十二)
在AMBA AXI协议中,ID(标识符) 是实现高效并发传输的核心机制;它是AXI事务的唯一“身份证”,它允许不同的事务(即使访问同一地址)在没有依赖关系时,可以乱序完成,极大地提升了总线效率。
各通道ID信号详解与关联
写地址通道:AWID;标识一个写事务组;从设备/互联必须使用相同的 BID 来回复响应。
写数据通道:WID;AXI3中:匹配对应的 AWID,尤其在交织发送不同ID的数据时。AXI4中:该信号被移除,数据顺序必须严格匹配地址顺序。 体现了协议演进:AXI4简化了写事务模型,提升了易用性。
写响应通道:BID;必须与它响应的写地址的 AWID 完全相同。 这是主设备将响应(成功/错误)与对应写请求正确关联的唯一依据。
读地址通道:ARID;标识一个读事务组。从设备返回的读数据 RID 必须与此 ARID 一致。
读数据通道:RID;标识返回的数据属于哪个读请求。最后一个数据通过 RLAST 信号标识。主设备根据 RID 和 RLAST 重组数据流。
核心作用与设计考量
ID机制的核心价值在于:
实现乱序完成:这是最重要的性能特性。例如,主设备可以发送一个访问慢速外设的请求(ID=0),紧接着发送一个访问快速内存的请求(ID=1)。从设备可以优先完成ID=1的请求并返回数据,总线无需等待ID=0的事务完成。
支持多个未完成事务:主设备可以连续发出多个不同ID的请求,而不必等待第一个完成,从而隐藏访问延迟,提高吞吐量。
资源管理的依据:在从设备或互联内部,需要为不同ID的事务分配独立的追踪资源(如缓冲区),以管理其乱序完成。
在实际设计中,需要关注以下几点:
ID位宽:由系统设计决定,必须保证在任意时刻,主设备发出的所有未完成事务的ID必须是唯一的,否则会造成混乱。
主设备类型:对于单一线程的主设备(如DMA),其所有事务通常使用相同ID。对于多线程主设备(如支持乱序执行的多核CPU),需要为不同线程使用不同ID。
从设备能力:并非所有从设备都支持多ID或乱序返回。简单的外设可能只处理ID=0,或按顺序返回。
一个简单的事务示例
假设主设备(Master)发起两个读请求: ARID=0, 地址 A (访问慢速设备) ARID=1, 地址 B (访问片上内存)
从设备(Slave)可能的返回顺序是: RID=1, 数据 Data_B, RLAST=1 (B的请求先完成) RID=0, 数据 Data_A, RLAST=1 (A的请求后完成)
主设备根据 RID 将数据正确分发给各自的请求者,即使返回顺序与请求顺序相反。
总结与建议
总而言之,AXI的ID信号是实现高带宽、低延迟并行传输的基石。理解它的要点是:相同ID保序,不同ID可乱序。
本篇内容中有部分资源来源于网络,如有侵权,请联系作者。
305