AXIprotocol学习记录(7)——保序模型

标签:
it |
分类: IC设计 |
本章讲述AXI4 使用ID传输时候的顺序模型。
7.1 顺序模型定义
AXI 4 支持基于ID识别方法的传输顺序模型。
并行传输通过使用相同的ID实现:
-
l
向任意单个器件并行传输,必须按照要求顺序并行到达,而不是地址传输;
-
l
向同一个memory传输数据,或者覆盖,要求地址必须按照指定顺序到达。
AXI保序模型要求所有同一个方向使用相同ID传输完成的响应,必须按照原始顺序返回。
因为读写地址通道独立,如果两个不同方向相同ID的传输有保序要求,master必须等待第一个的响应后才能进行下一次传输。
如果master完成一次传输,在此之前已经收到前一次反方向传输的响应,此时两个传输之间不保证保序。
7.2 master 顺序
master 遇到相同方向多个传输,相同ID的读和写时,保序传输有以下需求:
-
l
master的所有响应顺序必须和命令顺序相同;
-
l
对于器件memory的传输,到达slave的命令顺序必须和处理顺序相同;
-
l
对于一般memory,到达slave相同或者覆盖的传输顺序,必须和命令顺序相同。这也适合到到cache memory的应用。或者说,这也适合所有AxCACHE[3:1]不为3'b000时候的合法传输。
7.3 相互顺序
为了满足保序模型,互联必须满足条件:
-
l
向器件memory发送相同方向相同ID的传输命令顺序不会变化;
-
l
对于相同方向相同ID同一地址或者覆盖操作,传输顺序是不会变化的;
-
l
相同ID的写响应顺序不会变化;
-
l
相同ID的读响应顺序不会变化;
-
l
传输中使用多个AXI ID传输,命令顺序任然按照最初始值进行;
-
l
任何已经得到传输响应的器件,在传输没有到达最终目的地之前,必须确保顺序不会改变,直到达到最终目的地。
7.4 slave 顺序
为了满足保序模型的需求,slave必须满足:
-
l
任何需要返回响应的写传输,都必须被其他子序列通过写和读传输感知,而不是传输ID;
-
l
任何对器件memory的写传输,都必须被相同ID对器件memory写传输子序列感知,即使没有写响应返回;
-
l
任何对于普通memory的写传输,都必须通过用相同ID向相同或者覆盖地址写传输的子序列感知,即使没有返回响应。这个要求也适用于cache memory,也适用于所有AWCACHE[3:1]不为0’b000的合法写传输;
-
l
相同ID的多个写传输的响应,必须和传输到达的顺序一致;
-
l
不同ID的多个写传输的响应,可以是任意顺序;
-
l
任何需要返回响应的读传输,必须被除了传输ID以外的读或者写的子序列感知;
-
l
任何对器件memory的读传输,必须被使用相同传输ID对器件memory读传输的子序列感知,即使没有要求返回响应;
-
l
相同ID对多个读传输的响应,必须和传输到达的顺序相同;
-
l
不同ID对多个读传输的响应,可以任意顺序返回;
7.5 到达最终目的地之前的响应
任何等待传输响应的中间元件,在传输没有到达最终目的地之前,必须确保传输对于任何发起传输流的mater可见。
需求是:
-
l
对于访问任何memory类型,到相同地址或者覆盖地址的子传输序列,必须观察中间元件等待响应的传输;
-
l
对于访问器件memory,中间元件也必须维护到相同slave和相同ID的子传输的顺序,因为这些memory和传输响应的顺序有关系;
一个中间元件的响应在AxCACHE属性允许的时候可以只通过传输给予。
AXI 协议要求对于器件memory的访问顺序保证,也是访问普通memory的保证。这样确保了被标志为普通的任何传输可以被有顺序保障的器件调顺序。为了满足这种这种需求,相同ID或者覆盖地址访问器件memory必须和访问普通memory相同,此时不考虑ID的值。
表A6-1为当保序出现在memory类型、传输ID、访问相同地址或者覆盖地址都出现时的情况。
http://s3/mw690/002pcoHFzy7oo65imhIa2&690
7.6 写观察的顺序
为了提高协议接口支持不同保序模型的能力,接口定义一个Ordered_Write_Observation 属性可以是True或者False。
Ordered_Write_Observation为True的时候,接口有这个属性;
Ordered_Write_Observation为False的时候,接口不支持这个属性,默认值为False;
支持Ordered_Write_Observation的接口可以支持生产者/消费者的保序模型,拥有更高性能;
如果两个相同ID的写传输,传输中要求相同的顺序,可以被系统中所有其他相关器件检测,此时接口也可以设置Ordered_Write_Observation;
如果接口不支持Ordered_Write_Observation,对相同外设可见的写传输只有通过传输ID去保证。没有Ordered_Write_Observation但需要支持生产者/消费者的保序模型,在写下一个不同外设之前,必须完成上一个写传输且得到BRESP响应。