当一个物理地址映射到不同的虚拟地址时,后端的dcache会发生什么?

时间:2017-04-20 03:03:45

标签: linux arm memcached

我对手臂的缓存问题感到困惑。 在这里,我映射了相同的块或物理内存,并获得了两个不同的虚拟地址而没有O_SYNC,这两个都将被缓存: (假设我只访问两者的前4个字节)

  
      
  1. 如果我读了两个地址,将加载多少个dcache条目,一个或两个?
  2.   
  3. 如果我在一个虚拟内存上写了操作,那么有多少个dcache条目会被标记为脏,一个或两个(如果有dcache条目)?在dcache条目的后端发生了什么?
  4.   

感谢。

1 个答案:

答案 0 :(得分:0)

指定最近的ARM表现得好像高速缓存是物理标记的(例如,由物理地址标识的高速缓存行),因此多个别名虚拟地址(即使在单独的进程中)应该反映相同的物理高速缓存行。

这不是普遍真实的; ARM-v7A架构之前的旧ARM内核支持虚拟标记的缓存。