什么是AXI outstanding

描述

什么是outstanding?

从字面理解,outstanding表示正在进行中的,未完成的意思,形象地说就是“在路上”。

比如现在需要传输一段数据,假设没有outstanding,必须等到地址握手成功才能传输数据,而每一次握手过程中都不能保证主从机此刻都准备好,那这样在数据传输过程中就难免会有气泡,难以实现真正的全流水和满性能。

所以从设计的角度,我们就有多发几个地址的需求,比如我们可以发出去10个地址,尽管我们还没给数据,但是可以让从机知道,我们接下来要向这些地址写数据,这样就可以不用刻板地遵循,每次都要写地址握手成功再写数据。

所以在这个例子中,outstanding就是发出去的地址数量,未处理的地址可以先存放在AXI总线的缓存里,等完成一次传输事物之后,无需再握手传输地址,即可立即进行下一次的数据传输,所以outstanding本质上是为了实现数据传输的pipeline。

简单讲,如果没有outstanding,或者说outstanding能力为1,则总线Master的行为如下(AHB总线就没有outstanding能力):

•1)读操作:读地址命令 -》 等待读数据返回 -》 读地址命令 -》 等待读数据返回

•2)写操作:写地址命令-》写数据-》等待写响应返回-》写地址命令-》写数据-》等待写响应返回

而如果outstanding能力为N》1的话,则:

•1)读操作:可以连续发N个读地址命令,这期间如果读数据没有返回,则需要等待读数据返回,如果有读数据返回,则返回了几个,那么仍然可以接着发几个。也就是说,“在路上”的读命令(或者读数据)最多可以是N。多说一点,可以看出,如果数据返回得比较慢,那么IP需要等待,效率就会比较低,因此,为了提高效率,有必要提高outstanding能力,以弥补”路上“(总线)引入的延时。但是也不能无限制地发,否则有可能会引起总线拥塞,把其他IP给堵住。

如何计算outstanding?

首先,对于AXI而言,outstanding能力分为读outstanding能力和写outstanding能力。

如何计算outstanding能力呢?

首先对一些概念进行类比:

•burst传输的长度为一列高铁的节数,8节高铁对应的burst length=8。

•一节高铁载的乘客数就是AXI的数据位宽,常见的AXI的数据位宽有64bit,128bit等等。

•高铁的速度就是AXI总线的时钟频率,好比AXI的频率有的是200MHz,有的是300MHz。

•从高铁站触发,到终点的线路长度就是AXI的总线延迟,即AXI的Master 到Slave的延迟拍数(Clock
Cycle)固定了,一节高铁可以等效为AXI的一个Cycle。

类比之后,以一段高铁线路为例,起点为A,终点为B,从A到B的高铁线路如果要达到最高效率,需要在线路上排满高铁,首尾相接。那么需要多少列高铁才能达到最大效率呢?

假设需要X列高铁,(1列有N节)

X=(高铁线路总长度2)/(N节高铁的长度),N节高铁的长度=1节高铁的长度N,

所以X可变换为((高铁线路总长度/1节高铁长度)*2)/N,其中(高铁线路总长度/1节高铁长度)为高铁总节数,因为一节高铁对应一个AXI的cycle,所以高铁总节数对应该线路的延迟Cycle总数。

X=线路延迟Cycle数目*2/N,

X即为AXI outstanding,其中线路延迟Cycle数目*2为Round Trip Latency(cycle)(往返总延迟),N为burst length。

(补充:最大传输带宽=AXI Clock Frequency x AXI Data Width)

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分