作業系統的cpu和記憶體並不是直接互動操作的。我們的cpu有一級快取,cpu直接操作一級快取,由一級快取和記憶體進行互動。
所以同乙個程式,cpu進行切換的時候,切換前和切換後的資料可能會有不一致的情況。那麼這個就是乙個很大的問題了。
如何保證各個cpu快取中的資料是一致的。就是cpu的快取一致性問題。
一種處理一致性問題的辦法是使用bus locking(匯流排鎖)。當乙個cpu對其快取中的資料進行操作的時候,往匯流排中傳送乙個lock訊號。
這個時候,所有cpu收到這個訊號之後就不操作自己快取中的對應資料了,當操作結束,釋放鎖以後,所有的cpu就去記憶體中獲取最新資料更新。
但是用鎖的方式總是避不開效能問題。匯流排鎖總是會導致cpu的效能下降。所以出現另外一種維護cpu快取一致性的方式,mesi。
mesi是保持一致性的協議。它的方法是在cpu快取中儲存乙個標記位,這個標記位有四種狀態:
cpu的讀取遵循下面幾點:
快取一致性協議
cpu快取的存在是為了解決cpu和主記憶體之間的速度差問題,現在的一般多核cpu存在多級快取。cpu快取的基本單位是cache 行,是與主記憶體交換的基本單位,乙個cache 行的單位是2的次冪位元,所以cpu快取乙個變數的時候會快取這個變數周圍的區域。mysql也有這樣的特性。cpu快取示意圖如下...
快取一致性協議(MESI協議)
大家都知道,計算機在執行程式時,每條指令都是在cpu中執行的,而執行指令過程中,勢必涉及到資料的讀取和寫入。由於程式執行過程中的臨時資料是存放在主存 物理記憶體 當中的,這時就存在乙個問題,由於cpu執行速度很快,而從記憶體讀取資料和向記憶體寫入資料的過程跟cpu執行指令的速度比起來要慢的多,因此如...
MESI CPU快取一致性協議
mesi cpu快取一致性協議mesi modified exclusive shared or invalid 也稱為伊利諾斯協議,是因為該協議由伊利諾斯州立大學提出 是一種廣泛使用的支援寫回策略的快取一致性協議,該協議被應用在intel奔騰系列的cpu中,詳見 support the more ...