在什么情况下单处理器系统会使它的缓存失效?

In what case would a uniprocessor system invalidate it's cache?

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

由于不需要一致性,其他核心的失效是不可能的。

是否有硬件支持缓存行的计时器失效?

当一个程序退出时,(如何)与它相关的缓存行失效?我假设 OS 不知道缓存实现,所以它不会失效。

我能想到几种情况。

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

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

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

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

据我所知,没有定时失效,尽管您可以稍后在指令流中发出无效指令。

此外,Isuru 的回答 - 有时用户希望使某些行的所有副本无效,通常是为了容错(有时这可能涉及写入某些 non-volatile 内存,但缓存可能仍会丢失,因此您需要确保没有新数据保留在那里)。 我还可以想到一些安全目的(其他进程的缓存嗅探)。

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