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

Linux 当一个物理地址映射到不同的虚拟地址时,在后端的dcache上会发生什么?,linux,arm,memcached,Linux,Arm,Memcached,我对arm的缓存问题感到困惑。 在这里,我映射了相同的块或物理内存,得到了两个不同的虚拟地址,没有O_SYNC,这两个地址都将被缓存: (假设我只访问两个字节中的前4个字节) 如果我读取两个地址,将加载多少个dcache条目,一个或两个 若我在一个虚拟内存上写操作,有多少个dcache条目会被标记为脏的,一个或两个(若必须写dcache条目)?dcache条目的后端发生了什么 谢谢。最近的ARM被指定为具有物理标记的缓存(例如,由物理地址标识的缓存线),因此多个别名虚拟地址(即使在单独的进程中)

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

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

  • 谢谢。

    最近的ARM被指定为具有物理标记的缓存(例如,由物理地址标识的缓存线),因此多个别名虚拟地址(即使在单独的进程中)应反映相同的物理缓存线


    这并非普遍正确;ARM-v7A体系结构之前的旧ARM内核支持虚拟标记缓存。

    谢谢,我想我找到了