1、AXI三板斧之Outstanding
可以不用等单个命令的响应,直接连续发送N个命令(N>1),假设Slave端的Outstanding能力为N时(N>1),那么Master端可以在Slave不返回读数据的情况下,连续发出N个请求。假如在这期间Slave端返回了m个数据,那么Master端还可以接着发m个请求。形象点说,就是Master端 "在路上" 的请求最多为N个。
下图所示,AXI Slave包含一个深度为8的Buffer用来缓存请求命令,那么该Slave的Outstanding为8,Master端可以连续发出8个请求,如果这期间Slave没有返回数据,那么Master端则不能再发出新的请求。如果这期间Slave端从Buffer中读取了m个请求命令进行处理后将数据返回给Master,这样Buffer中就又有了新的空间可以缓存命令。
比如,可以连续发送地址1和地址2,然后连续发送地址1要写入的数据和地址2要写入的数据,最后依次等待地址1的响应和地址2的响应。这时Outstanding能力为2。
请问,AHB总线是否支持Outstanding?请问,AXI Outstanding特性相比AHB的时序特性提高在哪里?请景芯SoC训练营同学画出时序图对比。
请问,如果地址1对应的slave是busy,数据暂时无法写入,而地址2对应的slave是idle,数据可以先写入,这时AXI怎么处理来提高带宽?这种特性对应AXI的那种特性?
2、AXI三板斧之out-of-order
out-of-order,连续发送地址1和地址2,然后连续发送地址1要写入的数据和地址2要写入的数据,如果地址1对应的slave是busy,数据暂时无法写入,而地址2对应的slave是idle,那么数据可以先写入slave2,即先完成后发的地址2的操作,再完成地址1的写操作,这就是out-of-order。
3、AXI三板斧之interleavling
注意,对于AXI3,写命令和写数据不一定有先后顺序且ID顺序不一定相同,即AXI3支持interleavling。由于interleavling基本不用,因此AXI4放弃了interleavling功能,即AXI4因为已经没有WID信号,所以写数据的顺序要和写地址的顺序一样。