axi cache属性介绍
参考文章:
系统级缓存
attention
AXI协议缓存相关机制是针对处理器系统级缓存的一种实现
所谓系统级缓存(system level cache)区别于处理器内部的缓存,系统级缓存提高整个系统访问外部存储的速度。当系统级缓存连接在处理器核与外部存储之间时,可以被看做处理器核外部的 L2 缓存,如下图所示

处理器核、系统缓存以及外部存储控制器通过 AXI 总线接口互联。L1 缓存位于处理器核内部。当处理器访问外部存储中的数据,在 L1 缓存中缺失时,向外部缓存发起传输事务。传输事务在通过系统缓存时,如果该事务命中缓存表项,即可直接得到结果,避免访问外部存储带来的缺失代价。
AXI3
AXI3中AxCACHE的信号如下所示

Bufferable
当 AxCACHE[0] 置高时,表示该传输事务在传输至目的地的途中,可以被 interconnect 或者任意的 AXI 组件缓存,延迟若干个周期。一般应用于写传输事务。
CPU 在特定的写入策略下,本来在写传输事务中需要写入至主存储(main memory)的数据,可以先缓存于 cache 中,等待被替换时再真正写入主存储。
因此 CPU 在写入 cache 后就认为写操作完成。写事务原先的目的地是主存储,比如外部 DDR,理论上应该由 DDR 控制器在 “真的” 写入数据到 DDR 后,向 CPU 发出写回复信号,表示写传输事务完成。但是现在数据写入 cache后,即向 CPU 发出了写回复信号结束了本次写回复。
当 AxCACHE[0] 置低时,这种特性即不被允许,那什么情况下不允许缓存?
当 CPU 使用 DMA 将数据传输至 IO 设备时,数据首先被写入 DMA 在内存中开辟的缓冲区。此时 CPU 需要掌握什么时候数据“真的”被完全写入缓冲区,因为需要确保数据存入后,再启动 DMA 传输
Modifiable
当 AxCACHE[1] 置高时,表示传输过程中,该写传输事务的传输特性可以改变。
协议列举了一些传输事务改变的情形:
- 单个传输事务可以被分解为多个传输事务
- 同理,多个传输事务也可被聚合为一个(上节描述的现象)
- 读传输事务中,可以预取相邻地址上的读数据,要求目的地址返回比主机需求更多的数据
- 写传输事务中,可以访问比需求地址跨度更大的区域,其中使用 WSTRB 信号防止更新不相关的数据
上述几种情况中,几项信号可以发生改变(Modify):
- 传输地址 AxADDR
- 突发传输位宽与长度 AxSIZE AxLEN
- 突发传输类型 AxBURST
