Out standing、Out of order、Interleaving详细介绍
作者:互联网
总线上的顺序模型
AMBA的AXI总线中,控制和数据的传输通道是分离的,这就使得数据的传输相较于AHB总线变得灵活多变,地址的请求可以不等上一次的数据回来就可以继续发送,这使得AXI总线的传输效率大大提升,这样的数据传输就是outstanding操作。
当Master访问Slave时,可以不等待上一笔操作完成,就发下一个操作,这样Slave在控制流的处理上就可以流水起来,提高了传输速度。同时,Master也许需要对不同的地址和Slave进行访问,这样,由于Slave的响应时间不同,其返回给Master的数据也有先后,可能并不是按照Master发出的控制先后返回的,这样现象就是乱序(Out of order)操作。
Outstanding
Outstanding的意思是master不用等上一次传输完成就开始发送新的传输地址的能力,因此系统可以实现并行传输从而使得系统性能得以提升。如下图:
图中可以看出,A11地址发出后,没有等D11~D14传输完成,便发出了A21地址请求,这种操作叫做outstanding,如果只能等当前数据传输完成才能发送下一笔传输地址,则outstanding能力为1。
Out of order
Out of order的意思是传向快存储区域的传输数据不需要等待之前传向慢存储区域的传输完成,就提前完成传输的操作。由于减少了传输的latency,系统的传输性能也得以提升。如果下图:
上图中,地址的顺序为A11、A12、A13,而数据顺序则是D2~、D3~、D1~,这个操作就是out of order。
Interleaving
写数据交织(interleaving)是指slave接口能够接收来自不同AWID的交错数据。slave接口声明写数据交织的深度,该深度指示slave接口是否可以接受来自具有不同AWID的源的交错数据写入。
图中,D11和D12之间插入D23。
NOTE:outsatanding是对地址而言,一次burst还没结束,就可以发送下一相地址。而out-of-order和interleaving则是相对于 transaction,out-of-order说的是发送transaction和接收的cmd之间的顺序没有关系,如先接到A的cmd,再接到B的cmd,则可以先发B的data,再发A的data;interleaving指的是A的data和B的data可以交错,如A1 B1 A2 B2 B3……(同一个事务之间的不同数据要按顺序,例如不能出现A1 B2 A2 B1...)
对于AXI master,先看写操作。如果分别发出WCMD1和WCMD2两个写命令给两个不同的slave,假设这两个写命令都是四拍的数据分别记为WDATA1_0,WDATA1_1,WDATA1_2,WDATA1_3,以及WDATA2_0,WDATA2_1,WDATA2_2,WDATA2_3。如果master在自己的写数据总线上,依次发出WDATA2_0,WDATA2_1,WDATA2_2,WDATA2_3,WDATA1_0,WDATA1_1,WDATA1_2,WDATA1_3,这就叫写out of order;如果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这样的。
显然,你自己设计master时,如果是写操作,你不会主动发出out of oder和interleave的操作,因为这个明显增加了复杂度且没带来master自己的效率提高。再看master读,同样发出RCMD1和RCMD2两个读命令给不同的slave,由于不同slave的响应速度不同,就可能出现RCMD2对应的读数据先返回到master的情况;再考虑到复杂系统的总线设计,master依次接收到RDATA2_0,RDATA1_0,RDATA1_1,RDATA1_2,RDATA2_1,RDATA2_2,RDATA1_3,RDATA2_3这样的数据是有可能的,这就是读的out of order且interleave。所以,对于master,不建议发出out of order与interleave的写数据,但是必须支持out of order与interleave的读操作!同理,可以分析,对于slave,必须支持out of order与interleave的写操作,不建议返回out of order与interleave的读数据。在一个系统中,interleave会明显增加设计复杂度,其实可以约定master,slave以及连接总线都不要使用interleave,(另外可以配置depth ==1,达到不支持interleaving的目的)这样可以降低复杂度,但out of order是AXI特性,这个功能必须支持。
AXI4的总线规范中提到的AXI4的特性之一:支持处理多outstanding地址。
从字面理解,outstanding表示正在进行中的,未完成的意思,形象地说就是“在路上”。
简单讲,如果没有outstanding,或者说outstanding能力为1,则总线Master的行为如下(AHB总线就没有outstanding能力):
1)读操作:读地址命令 -> 等待读数据返回 -> 读地址命令 -> 等待读数据返回 -> ......
2)写操作:写地址命令->写数据->等待写响应返回->写地址命令->写数据->等待写响应返回......(如果支持out-of-order,对于AXI3,写命令和写数据不一定有先后顺序且ID顺序不一定相同,AXI4因为已经没有WID信号,所以写数据的顺序要和写地址的顺序一样)AXI4.0是没有WID信号的,因为写通道不支持乱序写,其实对于写来说,乱序会变得设计复杂而且意义不大。
而如果outstanding能力为N>1的话,则:
1)读操作:可以连续发N个读地址命令,这期间如果读数据没有返回,则需要等待读数据返回,如果有读数据返回,则返回了几个,那么仍然可以接着发几个。也就是说,“在路上” 的读命令(或者读数据)最多可以是N。多说一点,可以看出,如果数据返回得比较慢,那么IP需要等待,效率就会比较低,因此,为了提高效率,有必要提高outstanding能力,以弥补”路上“(总线)引入的延时。但是也不能无限制地发,否则有可能会引起总线拥塞,把其他IP给堵住。下图为一个outstanding读的时序图例子:
2)写操作:可以连续发出N组写地址(写数据)命令,这期间如果写响应没有返回,则必须等待写响应返回才能接着发写地址(写数据)命令,如果有写响应返回,则返回了几个,那么仍然可以接着发几组。也就是说,“在路上” 的写响应最多可以是N。
----------------
欢迎关注公众号——“IC硅农场”
--------------------------------------------------------------------------------------------如侵权请联系删除-------------
标签:standing,Interleaving,地址,WDATA2,WDATA1,master,out,order,Out 来源: https://blog.csdn.net/weixin_32775841/article/details/120605122