将数据更改为原始状态后的脏位值

1 cpu cpu-architecture cpu-cache

如果缓存中某个部分的值为4,然后将其更改为5,则该数据的脏位将设置为1。但是,如果将值设置为4,该脏位仍将保持为1或更改为零。到0?

我对此很感兴趣,因为这意味着在处理主内存和缓存之间的读写操作时,计算机系统会进行更高级别的优化。

Mar*_*oom 5

为了使缓存按您所说的那样工作,它需要保留一半的数据空间来存储旧值。
由于高速缓存之所以昂贵是因为它们的每位成本很高,并且考虑到以下因素:

  • 该机制将仅检测两个级别的写入历史记录:A-> B-> A,并且不会更深(例如A-> B-> C-> A)。
  • 写入将隐含旧值中当前值的副本。
  • 高速缓存中可标记数据的最小数量是该,需要将整行更改回其原始值。考虑到一行的大小约为64字节,这是极不可能发生的。
  • 缓存的分层结构(L1,L2,L3等)正好可以缓解逐出问题

与缺点相比,您提出的解决方案没有什么好处,因此无法实施。