| |
【本章问题】AXI协议如何使用ID来处理outstanding地址和out-of-order交易的。
8.1 关于排序模型
协议允许乱序事务传输和多个outstanding地址的发起。这些特性能实现高性能互联,最大化数据吞吐和系统效能。
将每个端口视为多重顺序端口,ID信号支持乱序事务。ID相同的所有事务必须是有序的,但对于不同的ID,不存在事务顺序的限制。
【可将这个模型比作男女生按身高排两个队过独木桥,上桥端可从两队前方任意选人过桥,在下桥端单看男生,是按身高有序通过,单看女生也是如此,但桥上正在行走的男女生是无顺序的。】
5个事务的ID分别是:AWID,WID,BID,ARID,RID
-----Note-----
这些高级特性对于master和slave来说不是必须的。简单的master和slave在一个时间点可以按其发起顺序只处理1个事务。
--------------
发起多个outstanding地址的能力意味着master可以在早期发起的事务完成之前发起下一个事务的地址。因为能支持事务的并行处理,这个特性能够提升系统性能。
完全的乱序传输能力意味着不必等待早期对慢内存区发起的事务完成,就能对快内存区发起事务。因为减少了传输延迟效应,这个特性同样提升了系统性能。
-----Note-----
事务的重排序总是相对于其他事务来说的。在Burst之内不能重排序。定义burst的地址和控制信号控制着burst之内的传输顺序。
--------------
8.2 传递ID域
协议提供了ID域,使master能够发起大量单独的事务(ID不同),但必须按顺序返回。
master使用事务的ARID或AWID域来提供master的排序需求的额外信息。规则如下:
- 来自不同master的事务没有顺序限制,可以按任意顺序完成。
- 来自相同master的事务,但ID不同,没有顺序限制,可以按任意顺序完成。
- AWID相同的写序列必须按master发出的顺序完成。
- ARID相同的读序列必须按顺序完成。
1)来自相同的slave:slave保证数据返回的顺序与接收地址的顺序相同。
2)来自不同的slave:互联组件保证数据返回的顺序与master发起的地址输入的顺序相同。
-相同AWID和ARID的读写传输之间无顺序限制。如若master需要限制顺序,那么必须保证第一个事务全部完成后再发起第二个事务。
8.3 读排序
对于Master接口,ARID相同时,需按顺序,ARID不同时顺序任意,或与其他不同的ARID域交织。
对于Slave接口,ARID相同时,需按顺序,ARID不同时,随意。
Slave保证返回的数据的RID和其相应的地址的ARID一致。
互联组件保证来自不同slave的相同ARID值的读事务序列的顺序。
读数据重排序深度指的是:在slave端的未被响应的的可重排序的事务地址的个数。按顺序处理所有事务的slave的读数据重排序深度是1,这是个静态数值,必须有slave的设计者指定。
8.4 标准的写排序
若slave不支持写数据交织,那么master发起的写数据事务的顺序必须与发起的地址事务一致。
大多数slave设计不支持写数据交织,所以这类slave接受写数据的顺序必须与接受地址的顺序一致。如果互联组件将不同master的写事务汇集到一个slave,那么它必须保证写数据的顺序与地址顺序一致。
即使写事务拥有不同的AWID值,以上的限制依然成立。
8.5 写数据交织
写数据交织使slave接口能接收对应不同的AWID值的交织的写数据。slave声明一个写数据交织深度,交织深度指示出这个接口是否可以接收具有不同AWID的交织的写数据。交织深度是静态配置的。缺省条件下,任何接口的写数据交织深度都是1.
-----Note-----
当AWID相同时,不允许交织写数据。
--------------
交织深度指slave接口上当前能接收数据的待处理地址的个数。比如,一个具有交织深度为2的从机得到4个不同的待处理ID事务,只能接收前2个待处理地址对应的数据。
从机收到数据的顺序必须与收到地址的顺序一致。
当互联组件将多个写数据流汇集到同一个从机时,写交织能防止空闲。互联组件可能将一个慢源的数据与一个快源的数据汇集起来。通过交织这两个数据流,互联组件可以提升系统性能。
-----Note-----
如果两个写交易具有不同AWID值,访问同一个地址或地址有重叠,那么处理的顺序未定义。更高一层的的协议必须保证交易处理的正确顺序。
--------------
仅能产生一个AWID数据的主机,产生全部数据的顺序与发起地址的顺序一致。但如果从机交织深度大于1,主机接口可以使用不同的WID交织数据。
对于大多数能在其内部控制数据产生的主机来说,写交织是不必要的。这样的主机可以按地址产生的顺序产生数据。但,当主机传递来自不同速度源的数据时可以通过交织数据源来最大化的利用互联组件。
为防止死锁,从机只要能连续接收交织的写数据,那么它就必须有一个大于1的交织深度。从机永远不能因试图改变写数据的顺序而停止接受写数据。【具体情形??】
8.6 读写交互
读写交易之间没有排序限制,可按任意顺序完成。
如果主机需要在读写间有一个给定的关系,那么它必须保证旧交易在随后发起交易前完成。对读来说,旧交易的完成以收到最后一笔数据位标记。对于写,主机收到写响应标志着写得完成,全部写数据都发出并不能标识写得完成。
地址区被外设占用,这表明需要等旧的交易完成才能切换读写交易,这表明有顺序限制。
对于内存区,主机的实现可能需要实现一个对outstanding交易地址的检查,来看一个新的交易是否有地址相同或重叠。如果没有重的,那么新的交易可以不等待就交易的完成而开始。
8.7 利用ID互联
当主机与互联组件连接时,互联组件会对ARID,AWID,WID域附加额外的位来唯一标示主机。这有两个作用:
1)主机不需要了解其他主机的ID,因为互联组件对ID附加了主机号,已使ID值唯一了。
2)从机端的ID比主机端宽。
对于读数据,互联组件利用RID的附加位来识别哪个主机是目的地。互联组件在将RID传给主机之前会移除附加位。
8.8 ID的推荐宽度
为了利用AXI乱序交易的能力,请使用如下推荐:
1)主机端ID:4 bits
2)互联组件端附加位:4 bits
3)从机端ID:8 bits
-------Notes-------
对于仅支持单序的主机,ID可以固定为常数,比如0.
-------------------
对于不使用排序信息,仅简单的按顺序处理的从机,????