将数据更改为原始状态后的脏位值
Dirty bit value after changing data to original state
如果缓存的某个部分的值是4,我们将其更改为5,则将该数据的脏位设置为1。但是,如果我们将该值设置回4,脏位仍然会保持 1 还是变回 0?
我对此很感兴趣,因为这意味着在处理主存和高速缓存之间的读写操作时,计算机系统将进行更高级别的优化。
为了让缓存像你说的那样工作,它需要保留 一半 的数据 space 来存储旧值。
由于缓存之所以昂贵,正是因为它们的每位成本很高,并考虑到:
- 该机制只会检测到两个级别的写入历史记录:A -> B -> A 而不会更深(例如 A -> B -> C -> A).
- 写入意味着将当前值复制到旧值中。
- 缓存中可标记数据的最小量是行并且整行需要改回其原始值.考虑到一行的大小约为 64 字节,这不太可能发生。
- 缓存的层次结构(L1、L2、L3,...)正是为了减轻 problem of eviction。
您提出的解决方案利大于弊,因此未实施。
如果缓存的某个部分的值是4,我们将其更改为5,则将该数据的脏位设置为1。但是,如果我们将该值设置回4,脏位仍然会保持 1 还是变回 0?
我对此很感兴趣,因为这意味着在处理主存和高速缓存之间的读写操作时,计算机系统将进行更高级别的优化。
为了让缓存像你说的那样工作,它需要保留 一半 的数据 space 来存储旧值。
由于缓存之所以昂贵,正是因为它们的每位成本很高,并考虑到:
- 该机制只会检测到两个级别的写入历史记录:A -> B -> A 而不会更深(例如 A -> B -> C -> A).
- 写入意味着将当前值复制到旧值中。
- 缓存中可标记数据的最小量是行并且整行需要改回其原始值.考虑到一行的大小约为 64 字节,这不太可能发生。
- 缓存的层次结构(L1、L2、L3,...)正是为了减轻 problem of eviction。
您提出的解决方案利大于弊,因此未实施。