1、AXI 协议定义了memory和外设slave的transaction 属性,通过ARCACHE和AWCACHE信号来指定。控制:

      1)transaction progresses如何通过system?

      2)system-level cache 如何处理transaction

axios清除缓存maxage axi cache_ci

axios清除缓存maxage axi cache_axios清除缓存maxage_02

axios清除缓存maxage axi cache_axios清除缓存maxage_03

  

axios清除缓存maxage axi cache_数据_04

     xact_type有:READ、WRITE、IDLE、COHERENT和DATA_STREAM几种,如果打开cache的情况下,xact_type要设为COHERENT,同时设置coherent_xact_type

  AXI CACHE类型有如下:

axios清除缓存maxage axi cache_axios清除缓存maxage_05

ACE比AXI 增加了如下信号和通道:

1)信号:

        ARDOMAIN 【1:0】 :00--Non-Shareable  01--Inner Shareable  10:Outer Sharable   11--System ,当AXCACHE的cache bit为0时,ARDOMAIN只能为11 level;AXCACHE【3:2】 不为零时,不能用11 level;

       ARSNOOP【3:0】:

     ARBAR【1:0】:00--Normal access(respecting barrier), 01---Memory barrier  10--Normal access(ignoring barrier)  11:Synchronization barrier

axios清除缓存maxage axi cache_数据_06

axios清除缓存maxage axi cache_axios清除缓存maxage_07

axios清除缓存maxage axi cache_主存_08

2、CAche 一致性基础了解

    1)目的:以最低的cost 提高性能

    2)Cache bouncing:多个线程频繁修改一个字段时候,这个字段的cacheline会不停同步到各个核上(在核间弹来弹去),cache一致性是硬件锁来实现的,cache bouncing是一种隐式的全局竞争。

 缺点:

对于频繁修改的变量,会导致开销陡增;

False sharing:还会使访问同一个cacheline中不常修改的变量也变慢,这个现象是false sharing.避免可以通过:按照cacheline对齐来避免(不理解)。

  1. 为什么要cache?

  缓解cpu和主存ddr之间的矛盾,cpu太快了,如果访问cache只要几个纳秒,而访问主存,需要几百个cycle,在微秒级别。

  局部性原理:

时间局部性:访问到的数据,下一个时间还会再访问;

空间局部性:访问数据的相邻数据可能被访问;

  1. cache 写方式

  Write through:每次CPU修改的cache中内容,会立即更新到内存;

  缺点:每次写都会有总线事务,会引起竞争,虽然高一致性,但是效率低。

  Write back:写回,cpu修改cache内容,不会立刻更新到内存,而是到一定时机才会更新到内存中去。

 写失效:当一个cpu修改了数据,若其他cpu有该数据,则通知其无效;

 写更新:当一个cpu修改了数据,若其他cpu有数据,通知其更新。

  1. MESI协议(mesi协议采用的是写失效 write invalidate)

   M:modify修改,E:exclusive独占,s:shared,I:invalid失效

  Cache操作:

     LR:local read,读取本地cache中数据;

     LW:local write,将数据写到本地cache;

     RR:remote read,读取内存中数据;

     RW:remote write,将数据写通到主存;

 

  疑问:对于多核单个cpu,每个核心有一个L1cache,外部有一个L2 cache(控制器),cpu内部如何做cache的一致性?外部又如何做cache的一致性?

 

3、AXDomain 属性

AxDomain三根信号线描述了shareable属性,具有相同属性的master之间,需要进行cache一致性操作。

   

axios清除缓存maxage axi cache_ci_09

 

axios清除缓存maxage axi cache_数据_10

axios清除缓存maxage axi cache_axios清除缓存maxage_11