計算機體系結構中快取一致性的方法有哪些?


快取一致性主要有兩種方法,如下所示:

  • 快取-記憶體一致性

在單一快取系統中,記憶體和快取之間的一致性透過兩種策略之一來維護:(1) 直寫,(2) 回寫。例如,當在處理器 P 上執行的任務請求記憶體位置 X 中的資料時,X 的內容將被複制到快取中,然後傳遞給 P。

當 P 更新快取中 X 的值時,也需要更新記憶體中的另一個副本以保持一致性。在直寫策略中,每次更新快取時都會更新記憶體,而在回寫策略中,只有當快取中的塊被替換時才會更新記憶體。表格顯示了直寫與回寫策略的比較。          

直寫 vs. 回寫

                               直寫回寫
序列事件記憶體快取記憶體快取
1
X
X
2P 讀取 XXXXX
3P 更新 XXXXX
  • 快取-快取一致性

在多處理系統中,例如,當在處理器 P 上執行的任務請求全域性記憶體位置 X 中的資料時,X 的內容將被複制到處理器 P 的本地快取中,然後傳遞給 P。

有兩種基本的快取一致性策略:(1) 寫無效,(2) 寫更新。寫無效透過讀取本地快取直到發生寫入操作來維護一致性。

當任何處理器透過寫入操作更新 X 的值時,為 X 釋出髒位將使所有其他副本無效。例如,當處理器 Q 將新值寫入其快取時,它會使 X 的所有其他副本無效。這將為 X 設定髒位。Q 可以繼續更改 X,而無需進一步通知其他快取,因為 Q 擁有 X 的唯一有效副本。

但是,當處理器 P 想要讀取 X 時,它必須等待直到 X 被更新並且髒位被清除。寫更新透過立即更新所有快取中的所有副本來維護一致性。在每次寫入操作期間都會設定所有髒位。畢竟,所有副本都已更新,所有髒位都已清除。表格顯示了寫更新與寫無效策略的比較。

寫更新 vs. 寫無效

                                      寫更新寫無效
序列事件P 的快取Q 的快取P 的快取Q 的快取
1P 讀取 XX
X
2Q 讀取 XXXXX
3Q 更新 XX’X’INVX’
4Q 更新 X’X’’X’’INVX’’

更新時間: 2021-07-24

547 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告