当一个物理地址映射到不同的虚拟地址时,后端的 dcache 会发生什么?
What will happen on dcache in backends when one physical address mapped different virtual address?
我对 arm 的缓存问题感到困惑。
在这里,我映射了相同的块或物理内存,并得到了两个不同的虚拟地址而没有 O_SYNC,这两个都将被缓存:
(假设我只访问两者的前 4 个字节)
- If i read two address, how many dcache entries would be loaded, one or two?
- If i did write operation on one virtual memory, how many dcache entries would be marked dirty, one or two(if have to dcache entries)? what happened at the backends for dcache entries?
谢谢。
最近的 ARM 被指定为好像缓存被物理标记(例如,缓存行由物理地址标识)一样,因此多个别名虚拟地址(即使在单独的进程中)应该反映相同的物理缓存行。
这不是普遍正确的; ARM-v7A 架构之前的旧 ARM 内核支持虚拟标记缓存。
我对 arm 的缓存问题感到困惑。 在这里,我映射了相同的块或物理内存,并得到了两个不同的虚拟地址而没有 O_SYNC,这两个都将被缓存: (假设我只访问两者的前 4 个字节)
- If i read two address, how many dcache entries would be loaded, one or two?
- If i did write operation on one virtual memory, how many dcache entries would be marked dirty, one or two(if have to dcache entries)? what happened at the backends for dcache entries?
谢谢。
最近的 ARM 被指定为好像缓存被物理标记(例如,缓存行由物理地址标识)一样,因此多个别名虚拟地址(即使在单独的进程中)应该反映相同的物理缓存行。
这不是普遍正确的; ARM-v7A 架构之前的旧 ARM 内核支持虚拟标记缓存。