问:
同一块物理内存区域,通过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的),此时又怎么办呢?
这个问题,我们组内也讨论过,看官方资料,好像未看到明确的说明哈