不要失去信心,只要坚持不懈,就终会有成果的。
-- 钱学森
来看看事务属性(Transaction Attributes),主要是对cache,buffer和memory controller的规定。按照协议,从机分为存储从机(memory slave)和外设从机(peripheral slave)。存储从机要能够正确执行所有的事务,外设从机处理事务的能力取决于具体实现。
AXI协议用AxCACHE来控制事务属性。如果不清楚cache基本知识,可以翻前面的文章,《CPU设计之Cache -- 基础》。简单了解一下。在AXI3中,AxCACHE信号的含义如下图:
从上图可以看出,AxCACHE信号的4bit有各自的含义,比如AxCACHE[1]就是表示该事务是不是cacheable的。
在AXI4中,AxCACHE[1]指示是否modifiable。Non-modifiable的事务不可以拆分或合并。对于Non-modifiable的事务,下列参数不可以改变。
AXI4中的Read-Allocate和Write-Allocate与AXI3中的也略有不同。
根据AxCACHE的不同,存储类型分为下图中的几种:
对于Device Non-bufferable,协议规定:
- 写响应必须从最终目的地获得
- 读数据必须从最终目的地获取
- 事务可以改变
- 读操作不得预取。不能合并写操作
- 从同一ID到同一从机的所有不可修改读写事务(AxCACHE[1]=0)必须保持秩序(ordered)
对于Device Bufferable,协议规定:
- 写响应可从中间节点获得
- 写事务必须最终目的地及时可见
- 读数据必须从最终目的地获取
- 事务不可修改
- 读操作不得预取。不能合并写操作
- 从同一ID到同一从机的所有不可修改读写事务(AxCACHE[1]=0)必须保持秩序(ordered)
对于Normal Non-cacheable Non-bufferable,协议规定:
- 写响应必须从最终目的地获得
- 读数据必须从最终目的地获取
- 事务可以改变
- 写操作可以合并
- 同一ID到重叠地址的读写事务必须保持有序
对于Normal Non-cacheable Bufferable,协议规定:
- 写响应可从中间节点获得
- 写事务必须最终目的地及时可见
- 读数据必须从最终目的地或者正在进行到其最终目的地的写事务获得
- 事务可以改变
- 写操作可以合并
- 同一ID到重叠地址的读写事务必须保持有序
对于Write-Through No-Allocate,协议规定:
- 写响应可从中间点获得
- 写入事务必须最终目的地及时可见
- 读取数据可从中间缓存副本获取
- 事务可修改
- 读取可以预取
- 写入可以合并
- 读和写事务需要缓存查找
- 从同一ID到重叠地址的读写事务必须保持有序
- 出于性能原因,建议内存系统不要分配这些事务
对于Write-Through Read-Allocate,除了满足Write-Through No-Allocate的要求,协议规定:
- 推荐读事务分配
- 不推荐写事务分配
对于Write-Through Write-Allocate,除了满足Write-Through No-Allocate的要求,协议规定:
- 不推荐读事务分配
- 推荐写事务分配
对于Write-Through Read and Write-Allocate,除了满足Write-Through No-Allocate的要求,协议规定:
- 推荐读事务分配
- 推荐写事务分配
对于Write-Back No-Allocate,协议规定:
- 写响应可从中间点获得
- 写事务不需要在最终目的地可见
- 读取数据可从中间缓存副本获取
- 事务可修改
- 读取可以预取
- 写入可以合并
- 读和写事务需要缓存查找
- 从同一ID到重叠地址的读写事务必须保持有序
- 出于性能原因,建议内存系统不要分配这些事务
对于Write-Back Read-Allocate,除了满足Write-Back No-Allocate的要求,协议规定:
- 推荐读事务分配
- 不推荐写事务分配
对于Write-Back Write-Allocate,除了满足Write-Back No-Allocate的要求,协议规定:
- 不推荐读事务分配
- 推荐写事务分配
对于Write-Back Read and Write-Allocate,除了满足Write-Back No-Allocate的要求,协议规定:
- 推荐读事务分配
- 推荐写事务分配
为了阻止非法事务越权访问,AXI 协议设计了访问控制信号 AxPROT。读/写事务的 AxPROT 信号位宽均为3bit,其具体含义如下表:
AXI主机可能支持多个级别的操作权限,并将此权限概念扩展到内存访问。AxPROT[0]将访问标识为非特权或特权。AXI主机可能支持安全和非安全操作状态,并扩展了这一概念到内存访问的安全性。AxPROT[1]将访问标识为安全或不安全。AxPROT[2]指示是数据还是指令访问,但是并非在所有情况下都是准确的,例如,事务包含指令和数据项的混合。协议建议主机将AxPROT[2]设置为低,以指示数据访问,除非确认该访问是指令访问。
看到现在,是不是有种想吐的感觉?哈哈哈。正常现象,每次看跟memory相关的内容都很痛苦。肯定有少翻译不到位的地方,请大家包涵了。
【未完,待续】
作者:老秦谈芯
来源:https://mp.weixin.qq.com/s/W9i4Gt4PK7XaxMbVI7Jgyg
相关文章推荐
更多IC设计技术干货请关注IC设计技术专栏。