AXIprotocol学习记录(6)——多个传输

标签:
it |
分类: IC设计 |
本章主要讲述out-of-order实现传输和多个outstanding的解决方法。
6.1 AXI 传输分辨方法
AXI 协议包括AXI ID传输识别码,master可以用这些去识别区分传输是否必须保序返回。
赋值AXI ID相同的所有传输必须保序,但是在不同AXI ID的传输之间并没有这个限制。这也意味着同一个物理端口可以通过逻辑端口号来支持out-of-order传输,每一个逻辑端口号保证传输的保序性。
通过AXI ID,master 可以在上一次传输没有完成的时候发送下一次传输,这样可以提高系统性能,因为这样使得传输并行处理。
这些对slave 或者master使用AXI 传输ID没有要求,master和slave同一时间可以处理一个传输,意味着传输顺序是按照他们的处理顺序进行。
slave 从master得到AXI ID后,需要返回BID或者RID响应。
6.2 传输ID
每个传输通道有它自己的传输ID,具体如下
http://s3/mw690/002pcoHFzy7oo2Qmm0We2&690
6.3 传输保序
master使用AWID和AEID传输ID为了指示它的保序需求,规则如下:
- l
不同的master传输没有保序限制,它们可以以任意顺序完成;
- l
相同的master,使用不同的ID值也没有保序限制,它们可以以任意顺序完成;
- l
读传输有相同ARID序列的命令必须保序完成,master 管理地址;
- l
写传输有相同AWID序列的命令必须保序完成,master管理地址;
- l
读写传输ARID和AWID值相同,没必要保序执行;
6.3.1 读保序
在master接口,从相同ARID来的读传输数据,必须保序,此时master分配地址。从不同ARID来的读数据可以不保序,不同ARID读到的数据可以交互抵达。
相同ARID读序列的数据,slave必须按照顺序返回读数据,数据按照顺序得到地址。不同ARID 读序列的数据,slave 可以以任意顺序返回读数据,不考虑传输命令到达顺序。
slave 必须保证返回数据的RID值和返回地址的ARID的值相匹配。
来自不同的slave相同ARID读序列的读数据,跟master收到的数据顺序,这个交互顺序必须一致,此时,master按照顺序分配地址。
读数据命令深度是slave挂起返回地址的个数,slave 一次响应一个读数据命令,读数据命令深度是一个静态值,必须由slave的设计师确定。
6.3.2 普通写保序
除非master知道slave支持写数据间插,此时必须指定写传输数据命令顺序跟传输地址相同。
master没有检查slave是否支持写数据间插的机制,AXI4 不支持写数据间插。
很多slave 设计 不支持写数据间插,因此必须按照保序命令顺序接收写数据,这样得到地址。
如果间插不同master向一个slave的写传输,此时必须保证写数据按照地址顺序。这个限制试用于不同的AWID值和不同的master。
6.3.3 写数据间插
和写数据一样,slave可以接收写数据用不同的AWID间插,写数据间插深度是slave可以接收的间插数据地址个数。
当slave可以支持写数据间插,不同的写传输使用相同的AWID时不能间插。
对于一个支持写数据间插的slave而言,每次接收第一个写传输数据顺序,必须和接收到的地址顺序相同。
为了防止死锁,支持写数据间插的slave必须可以连续接收间插写的数据,不能改变保序写数据命令的数据顺序。
写数据间插模型的使用:
当slave接收到多个互联写数据流的时候,写数据间插可以避免操作停止。例如,一个快的写数据流和一个慢的写数据流汇聚到一起,通过两个数据流的写间插可以提高系统性能。
因为大多数master可以控制写数据过程,所有写数据间插没有必要。这些master控制写数据过程,这样也为了生成地址。然而,master接口以不同的速率从不同的地方传输数据,这样也保证最大可能的使用互联接口。
6.3.4 读写交互
AXI 在读写之间传输没有顺序限制,可以以任何顺序进行,即使读传输的ARID和写传输的AWID相同。
如果master需要确定读写之间的明确关系,就需要一次传输完成才能进行下一次传输。master也可以只考虑更早的传输是否完成当:
- l
读传输时,接收到最后一个读数据;
- l
写传输时,得到最后一个写响应;
正在传输写数据时,不能当做传输完成。
另外,当master向外围设备写数据时,读写之间必须等待上一次传输完成才能开始下一次传输。
对于读写memory,master可以在outstanding传输的时候检查地址,检查两次传输是否相同,或者memory的地址是否别覆盖。如果地址没有被覆盖,mater就可以在上次传输没有完成的时候开始新的传输。
6.3.5 传输交叉互联使用识别
当master使用互联的时候,交叉互联需要额外的bit为给ARID、AWID和WID,这些和master端口一致,需要两个处理:
- l
master没必要知道其他master使用的ID值,因为互联使得mater之间的ID值一致,最初按照master 号码来识别;
- l
slave接口的ID识别码比master接口的ID识别码位宽要宽;
对于读数据,使用RID识别码的额外bit位,来确定哪一个master端口的读数据。互联通过BID识别码链接到master之前,删除BID识别码的bit位。
对于读响应,互联使用BID额外的bit位确定哪个master端口的写响应。互联在RID到达正确的master之前删除RID的标识位。
6.3.6 传输ID域段的位宽
传输ID域段的位宽是IMPLEMENTATION DEFINED(使用的时候定义),然而协议要求以下传输ID位宽:
- l
对于master端口,使用的传输ID域段位宽大于4bit;
- l
对于多个互联master互联接口,需要在传输域段的基础上再加4bit;
- l
对于slave端口,使用的传输域段需要支持8bit;
对于支持单个保序接口的master,可以固定输出传输ID域段的值,比如0;
对于不使用顺序信息、且按照顺序处理所有传输命令的slave,传输ID可以按照slave的基地址增加。
6.4 写间插移除
AXI4 不支持写数据间插,AXI4 中写数据必须在写数据通道连续传输,这也就意味着AXI4 不支持WID。
6.4.1 移除WID
移除写间插使得WID信号冗余,所有写数据必须和写地址顺序相同。
AXI 4 移除WID,减少了接口数量。
6.4.2 考虑延迟
大多数AXI3 mater不支持写间插,所以不要求AXI4 为了满足没有写间插来更新。
对于AXI3不支持写间插的master必须支持配置写间插深度为定值1,保证不支持写间插的slave正常运行。这些master也必须将写间插深度配置为1,为了适配AXI4.
任何AXI3 的slave都可以接收非间插写数据,因此不用考虑AXI3 中slave的延迟。
另外,任何AXI3 的设备都支持WID由AWID赋值。