AXI学习记录(5)

AXI学习记录(5)------AXI事务顺序模型介绍



前言

本文将介绍AXI事务顺序模型相关内容,主要涵盖了顺序模型和乱序模型下事务处理流程。


1 AXI事务标识符介绍

Master可以使用AXI事务标识符来标识必须按顺序返回的单独事务。

对于ID的唯一性:

  • 在同一通道内,同一Master发送的不同事务必须使用唯一ID;
  • 在不同通道间,同一ID可以跨通道复用,即同一Master的读写通道可以使用同样的ID。

事务排序需要遵守:

  • ID相同的连续事务需要按照顺序完成。
  • ID唯一的不同事务,可以乱序(顺序就是指必须等前一个事务发送完,才能执行后面事务;乱序就是指发送到较快memory区域的事务,不用等待前一个发送到较慢memory区域事务的完成,就可以提前完成)完成。

使用ID有什么好处?不就是最大化总线利用率吗。

每个事务通道都有自己的ID,5个·事务ID信号如下图所示:
在这里插入图片描述
注意:在AXI4中删除了AXI3中有的WID信号(为什么AXI3中要有呢?),写数据只需要依赖AWID就能与写地址通道同步。


2 事务处理顺序介绍

首先介绍几个名词的概念:

  • Outstanding:超前传输,也就是主机不用等待前一个事务完成就能发送下一个事务的地址。因为这种功能允许并行处理事务,因此可以提高系统性能。

2.1 事务类型与排序规则

首先介绍一下地址空间,包括Memory空间和外设区域,如下:

  1. Memory空间:
  • 读操作返回最后一次更新的值;
  • 写操作更新存储值,且不影响其他位置;
  • 原子性粒度(这是什么东西?)由单拷贝原子性大小定义;
  1. 外设区域:
  • 事务必须包含在区域内;
  • 访问可能产生副作用(如寄存器触发操作);
  • 不支持原子性保证。

对于上面两种地址空间,在不同事务类型中有如下要求:

  1. Device事务(AxCACHE[1]=0):用于外设或Memory访问,且同一ID的事务按照提交顺序到达;
  2. Normal事务(AxCACHE[1]=1):用于Memory访问,需要保证对同一存储位置的写入顺序。

对于这两种地址空间,如何确认访问顺序和访问response:

  1. Memory:写寄存器A事务W1->写寄存器B事务W2,则W1的结果在W2处可见;写地址X事务W1->写地址X事务W2->读地址X事务R1,则R1返回W2的值;写地址X事务W1->读地址X事务R1->读地址X事务R2,则R1和R2返回W1的值。
  2. 写完成响应:写响应通道中BVALID和BREADY同时有效;同一Master发出的使用相同ID的写请求,返回的响应也按照请求顺序返回。
  3. 读完成响应:最后一次读数据通道的握手信号RLAST、RVALID和RREADY同时有效。读/写完成响应之后,后续操作都能观察到先前结果。同一Master发出的使用相同ID的读请求,返回的响应也按照请求顺序返回。

2.2 读顺序

对于不支持outstanding或者outstanding=1,Master读的顺序是读地址->读数据->读地址->读数据…重复进行。如果outstanding>1的话,那么读操作是可以一次性发送N个读地址命令,接着等待返回的读数据,返回多少个(<=N)个读数据,Master可以继续发送几个读地址命令。

对于顺序传输模型,读事务中Slave返回的读数据必须按照读事务顺序返回;如果是乱序传输模型的话,那就随意顺序返回即可。对于一次Burst传输,返回数据中间不能插入其他读事务数据,如果允许插入的话,说明支持交错读数据。

2.3 写顺序

对于不支持outstanding或者outstanding=1,向Slave中写操作的顺序是写地址->写数据->等待写响应返回->写地址->写数据->等待写响应返回…重复进行。如果outstanding>1的话,那么写操作是可以一次性发送N个写地址命令,接着等待返回的写响应,返回多少个(<=N)个写响应,Master可以继续向Slave发送几个写地址命令。

大部分Slave都被设计成不支持写数据交错(非乱序写入吧),即Slave必须按照其接收地址的顺序来接收写数据。当然,也会有一些Slave支持写数据交错,即Slave接收到不同的AWID值的写事务时,Master可以向Slave中交错写入数据。

简单总结一下:outstanding是对地址起作用,顺序/乱序是相对于传输事务(例如:Master先向A发送读指令,再向B发送读指令。顺序模型这Master应该先收到A返回的数据,再收到B返回的数据;但是乱序模型可先收到B返回的数据,再收到A返回的数据),交错也是相对于传输事务(例如:Master先向A写数据,再向B写数据。不支持交错则应该A0->A1->B0->B1,如支持交错则可以A0->B0->A1->B1)。

注意:我看了AXI4 Spec A6中描述,并没有描述乱序,交错相关内容(这些内容在AXI3中详细描述),这说明AXI4的重点是顺序模型。


总结

上述文章介绍了AXI事务顺序和乱序模型。总结就是在AXI4中,相同ID的事务,按照顺序处理;不同ID的事务可以乱序处理。在AXI3中,可以进行不同ID之间的写交错处理,但是该种功能容易出错,所以AXI4中被删除了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值