AXI4总线中Outstanding到底是什么

05/18 17:31
阅读数 1.3K

AXI4总线规范中,提到了一个Outstanding的概念,那么该如何理解呢?我们首先给出一个基本的请求-响应模型,如下图所示。

下图中,Master端向Slave端发出读请求,Slave端接收请求后进行处理,待处理完成后将数据返回给Master。

下面结合上面的请求-响应模型来介绍Outstanding的概念,从字面意思上,Outstanding表示正在进行的、未完成的意思,形象地说就是 “在路上的” 意思。

先介绍最简单的情况,即Slave端Outstanding为1,那么上图中的请求-响应模型工作过程如下所示:

Mater读请求0 → Slave返回数据0 → Mater读请求1 → Slave返回数据1 → Mater读请求2 → Slave返回数据2 → ......

而如果Slave端的Outstanding为N时(N>1),那么Master端可以在Slave不返回读数据的情况下,连续发出N个请求。假如在这期间Slave端返回了m个数据,那么Master端还可以接着发m个请求。形象点说,就是Master端 "在路上" 的请求最多为N个

如下图所示,Slave端包含一个深度为8的Buffer用来缓存请求命令,该Slave的Outstanding为8,对于该Slave来说,即使一个命令都没有处理,也可以缓存8个命令。那么对应的Master端就可以连续发出8个请求,如果这期间Slave没有返回数据,那么Master端则不能再发出新的请求。如果这期间Slave端从Buffer中读取了m个请求命令进行处理后将数据返回给Master,这样Buffer中就又有了新的空间可以缓存命令,也就是说Master端可以继续发送新的请求命令。

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

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

2)写操作:可以连续发出N组写地址(写数据)命令,这期间如果写响应没有返回,则必须等待写响应返回才能接着发写地址(写数据)命令,如果有写响应返回,则返回了几个,那么仍然可以接着发几组。也就是说,“在路上” 的写响应最多可以是N

参考链接:AXI的outstanding功能

https://blog.csdn.net/tbzj_2000/article/details/88042890
AXI总线简介(一)
AXI总线简介 (二)

 

FPGA   

本文分享自微信公众号 - 瓜大三哥(xiguazai_tortoise)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部