AXI 总线基本概念1 - 如何理解outstanding传输

本文详细解析了AXI4总线规范中的关键特性——outstanding能力,对比AHB总线,阐述了outstanding在读写操作中的作用及如何通过增加其值来提升总线效率,避免拥塞。

在AXI4的总线规范中提到AXI4的总线特性之一:
   Support for issuing multiple outstanding addresses.

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

简单讲,如果没有outstanding,或者说outstanding能力为1,则总线Master的行为如下(AHB总线就没有outstanding能力):
1)读操作:读地址命令 -> 等待读数据返回 -> 读地址命令 -> 等待读数据返回 -> 。。。。。
2)写操作:写地址命令->写数据->等待写响应返回->写地址命令->写数据->等待写响应返回。。。。。(如果支持out-of-order,对于AXI3,写命令和写数据不一定有先后顺序且ID顺序不一定相同,AXI4因为已经没有WID信号,所以写数据的顺序要和写地址的顺序一样)

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


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

AXI outstanding传输验证的功能特性主要围绕着保证总线传输效率、数据准确性以及协议合规性等方面。 在传输效率方面,AXI outstanding允许总线Master在未收到前一个操作的响应时就发起新的操作。没有outstanding能力时,读操作需读地址命令、等待读数据返回,写操作需写地址命令、写数据、等待写响应返回,循环进行;而有outstanding能力后,可连续发起多个操作,提高了总线的利用率和数据传输效率 [^3]。 数据准确性方面,验证要确保在多个操作并发执行时,数据的读写地址、数据内容和传输长度等信息准确无误。例如在存储介质写入时,需保证写入地址和写入数据的正确性,像存储介质写入地址为0x0,但实际只从地址0x4开始写入32bit数据这种情况,在验证中要保证后续transfer按模式准确工作 [^1]。 协议合规性方面,验证要保证系统的操作符合AXI协议的规定。不同版本的AXI协议在一些细节上有所不同,如AXI3支持out - of - order时,写命令和写数据不一定有先后顺序且ID顺序不一定相同,而AXI4因为没有WID信号,写数据的顺序要和写地址的顺序一样,验证需确保系统遵循相应版本的规则 [^3]。 以下是一个简单的伪代码示例,用于示意AXI outstanding传输验证中对读写操作的基本检查: ```python def axi_outstanding_verification(): # 模拟多个读写操作 read_operations = [(0x100, 32), (0x200, 64)] # (地址, 数据长度) write_operations = [(0x300, 16, b'abc'), (0x400, 32, b'defg')] # 验证读操作 for addr, length in read_operations: # 这里模拟检查读操作的逻辑 if not check_read_operation(addr, length): return False # 验证写操作 for addr, length, data in write_operations: # 这里模拟检查写操作的逻辑 if not check_write_operation(addr, length, data): return False return True def check_read_operation(addr, length): # 具体的读操作检查逻辑,这里简单返回True作为示例 return True def check_write_operation(addr, length, data): # 具体的写操作检查逻辑,这里简单返回True作为示例 return True ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值