【发布时间】:2017-04-27 11:44:52
【问题描述】:
如果缓存的某些部分的值为 4,我们将其更改为 5,则该数据的脏位设置为 1。但是,如果我们将值设置回 4,脏位是否仍保持为 1还是变回0?
我对此很感兴趣,因为这意味着在处理主存和缓存之间的读写操作时,计算机系统会进行更高级别的优化。
【问题讨论】:
-
从缓存的角度来看,它不知道它之前的值是4。因此它仍将设置为脏。显然,对于您提到的情况,您可以实现某种检查点并稍后恢复脏位。
-
相关:What specifically marks an x86 cache line as dirty - any write, or is an explicit change required? 是关于静默存储(仅优化当前值的一个存储以不设置脏位)。真正的 CPU 甚至不这样做。
标签: cpu cpu-architecture cpu-cache