计算机体系结构中缓存一致性的方法有哪些?

缓存一致性有两种方法,如下所示 -

  • 缓存-内存一致性

在单个缓存系统中,内存和缓存之间的一致性使用以下两种策略之一来维护 - (1) 直写和 (2) 回写。例如,当一个在处理器 P 上运行的任务请求内存位置 X 中的数据时,X 的内容被复制到缓存中,在那里它被传递给 P。

当 P 更新缓存中 X 的值时,内存中的另一个副本也需要更新以保持一致性。在直写中,每次缓存更新时都会更新内存,而在回写中,只有在缓存中的块被替换时才会更新内存。该表显示了直写与回写策略。           

直写与回写

                               直写回写
Serial事件Memory缓存Memory缓存
1
X
X
2P 读取 XXXXX
3P 更新 XXXXX
  • 缓存-缓存一致性

例如,在多处理系统中,当运行在处理器 P 上的任务请求全局内存位置 X 中的数据时,X 的内容被复制到处理器 P 的本地缓存中,然后传递给 P。

有两个基本的缓存一致性策略 - (1) 写无效,和 (2) 写更新。Write-invalidate 通过从本地缓存读取直到发生写入来保持一致性。

当任何处理器通过写入更新 X 的值时,为 X 发布一个脏位会使所有其他副本无效。例如,当处理器 Q 将新值写入其缓存时,它会使 X 的所有其他副本无效。这为 X 设置了脏位。 Q 可以继续更改 X,而无需进一步通知其他缓存,因为 Q 拥有 X 的唯一有效副本。

但是,当处理器 P 要读取 X 时,它必须等到 X 更新并清除脏位。写更新通过立即更新所有缓存中的所有副本来保持一致性。在每次写入操作期间设置所有脏位。毕竟,副本已经更新,所有脏位都被清除了。该表显示了写入更新与写入无效策略。

写更新与写无效

                                      写更新写无效
Serial事件P’s CacheQ的缓存P’s CacheQ的缓存
1P 读取 XX
X
2Q 读取 XXXXX
3Q 更新 XX’X'INVX'
4Q 更新 X'X’’X''INVX''