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

时间:2016-12-12 15:05:47

标签: cpu cpu-architecture cpu-cache

如果缓存的某些部分的值是4并且我们将其更改为5,则将该数据的脏位设置为1.但是,如果我们将值设置回4,那么脏位仍将保持为1或者改回0?

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

1 个答案:

答案 0 :(得分:4)

为了使缓存像您所说的那样工作,它需要保留其数据空间的一半来存储旧值。
由于缓存很昂贵,因为它们每比特的成本很高,并考虑到:

  • 该机制只会检测两个级别的写作历史记录: A - > B - > 而不是更深层次(例如 A - > B>> C - > A )。
  • 写入会暗示旧值中当前值的副本。
  • 缓存中可标记数据的最小数量是整行需要更改回原始值。考虑到一条线的大小约为64字节,这种情况不太可能发生。
  • 缓存(L1,L2,L3,...)的层次结构,正是为了缓解problem of eviction

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