AXI Ordering Model
AXI支持乱序的事务完成,对于每个transaction来说,包括cmd和data信号,都给了一个ID标签,使用此标签来实现乱序事务完成
具有相同ID标签的transaction需要按照他们被发送的顺序执行并返回
具有不同ID标签的则可以乱序执行并返回
在AXI3中有五个ID标签信号,如下:
- AWID 此ID通过write address channel传输,是address group signal 的ID标签
- WID 此ID是通过write data channel传输,是data group signal的ID标签,这个ID要和AWID进行匹配
- BID 此ID通过write response channel传输,是response signal的ID标签,这个ID要和AWID和WID相匹配
- ARID 此ID通过read address channel传输,是address group signal的ID标签
- RID 此ID通过read data channel传输,是data group signal的ID标签,这个ID要和ARID相匹配
关于outstanding 和 out-of-order
- outstanding指的是,在上一个transaction还没结束之前,就可以发送下一个transaction的地址,这个表明的是系统并行处理transaction的性能,outstanding是有一定深度的,也就是最多允许几个transaction进行outstanding。
- out-of-order指的是返回时不需要按照发送的顺序进行返回,因为对于不同slavememory的访问速度是不同的,所以对于速度较快的slave可以先返回,较慢的可以后返回,即使发送到较慢slave的transaction是比较早的。但是这种情况是建立在他们(transaction)具有不同的ID标签的基础上。如果他们具有相同的ID标签,将只能按顺序返回
对于transaction的顺序,有以下几点规则
- 对于来自不同主机的transactions,可以以任何顺序完成,没有完成顺序的限制
- 对于来自同一个主机的transactions,但是拥有不同的ID,可以以任何顺序完成
- 对于来自同一个主机并且具有相同的AWID标签的transaction,需要按照发送地址的顺序进行完成
- 对于来自同一个主机并且具有相同的ARID标签的transaction,需要分为两种情况,
- 第一种是如果访问的是同一个slave,则读取的数据需要按照收到的地址的顺序返回。
- 第二种是如果访问的是不同的slave,interconnect需要保证返回的时候顺序和master发送的地址顺序相同
- 如果ARID和AWID具有相同的值,在传输的顺序上没有相关的要求。如果主机有要求,那么是在第二个transaction开始时,第一个transaction必粗完全结束。
对于Read的顺序
如果是不同的ARID,则可以按照任意顺序发送或接收,
- 从主机的角度,可以以任意顺序接收,并且还可以以interleave的方式接收
- 从从机的角度,可以以任意顺序发送,不需要按照接收的顺序发送
如果是相同的ARID,则必须按照顺序发送或接收 - 从主机的角度,必须按照主机发送的地址的顺序进行接收
- 从从机的角度,必须按照从机接收到的地址的顺序进行发送
对于以上的read transaction,不管怎样都必须保证RID和ARID想匹配,对于去到不同从机的有着相同ARID的transaction,interconnect需要保证返回时的顺序和发送到slave的顺序相同,这个out-of-order的深度是可定义的,需要从机的设计者指定
对于普通的Write的顺序
如果slave不支持interleave,那就是普通的write顺序,不管是否具有相同的AWID,此时需要保证主机write的data需要按照address的顺序进行发送,从机的角度来看,就是按照接收address的顺序接收data
如果transaction来自不同的主机,那么需要保证写入的这些书序是按照地址顺序的
对于Interleave Write(AXI3)
interleave指的是不同AWID的transaction中的data可以interleave,从机需要指定支持的interleave的深度,一般默认为1,也就是不支持interleave的情况
对于Interconnect
如果master interface连接到了interconnect,interconnect会在ARID,AWID,WID上加入额外的bit,这个bit是独特的。
这个时候也就是说明master不需要考虑其他master的使用的ID,同时在slave interface的ID位宽要大于master的,因为加入了interconnect的ID bit
对于读操作,返回时的RID也将具有额外的bit,来让interconnect判断发送给哪个master,但是master不必考虑这个,因为interconnect将会在发送时将RID上额外的ID bit给去掉
一般建议master发出的ID有4位,interconnect加入额外的4位,slave支持8位的ID