在什么情况下单处理器系统会使其缓存无效?

时间:2017-02-19 08:55:54

标签: caching operating-system hardware cpu-architecture

是否存在单个处理器(或单核)系统使其高速缓存行无效的情况?

由于不需要一致性,因此无法从其他核心失效。

是否存在对高速缓存行的定时器失效的硬件支持?

当一个程序退出时,(如何)与它相关的缓存行无效?我假设操作系统不知道缓存实现,因此它不会失效。

2 个答案:

答案 0 :(得分:2)

我可以想到几种情况。

  1. 如果你的缓存是"写旁路",写入只会使缓存行无效并更新主存。

  2. 内存映射I / O,因此I / O设备可以修改缓存的内存位置。这类似于简化的缓存一致性系统。

  3. 此外,当交换分页时,TLB中的虚拟到物理转换无效,因此该条目标记为无效。因此,高速缓存条目变得无效,因为物理地址不再与高速缓存的条目相对应。

  4. 现有的程序类似于交换页面,所以我想3点回答了这个问题。

    AFAIK,虽然您可以稍后在指令流中发出无效指令,但没有定时失效。

答案 1 :(得分:2)

此外,Isuru的回答 - 有时候用户想要使某些行的所有副本无效,通常是为了容错(有时这可能涉及写入一些非易失性内存,但是缓存可能仍然会丢失,所以你需要确保没有新的数据存在)。 我还可以考虑一些安全目的(缓存嗅探其他rocesses)。

但是,我认为最常见的原因是CPU的某些掉电/休眠状态可能会使某些组件进入休眠状态(包括某些高速缓存),例如在等待某些外部事件时。