ARM9 VIVT cache架构中MMU的缓存属性如何理解

问:

同一块物理内存区域,通过MMU映射成2个虚拟地址区域A和B(可以理解为2个进程共享数据)。
在映射虚拟地址A时,假设cache属性设置成允许cache(具体cache策略随意,比如write back);
在映射虚拟地址B时,假设cache属性设置成不允许cache。

假设在同一个核内,以A地址读数据,之后又做了修改;随后以B地址执行读操作,那么以B地址读时,是直接从物理内存获得数据,还是从cache获取数据呢?

答:

B从内存读取

问:

@baron 若cache是PIPT方式,我能理解,因为在转换物理地址时,可以得到转换表中设置的内存属性,进而根据内存设置的属性来执行对应的操作;但CACHE若是VIVT方式,用虚拟地址去索引cache,此时CPU并不知道这块内存域的属性配置了什么(如是cache的,还是non-cache的),此时又怎么办呢?

这个问题,我们组内也讨论过,看官方资料,好像未看到明确的说明哈

答:

armv7/8/9微架构中,请问哪里又VIVT的cache?
不存在的

问:

这3个架构中倒是没有看到过,之前的架构中,如arm9

你可能感兴趣的:(问题答疑,缓存,VIVT,ARM9,ARMV9,CACHE)