原文:多執行緒之:mesi-cpu快取一致性協議
mesi
(modified exclusive shared or invalid
)(也稱為伊利諾斯協議,是因為該協議由伊利諾斯州立大學提出)是一種廣泛使用的支援寫回策略的快取一致性協議。
cpu
中每個快取行(caceh line
)使用4種狀態進行標記(使用額外的兩位(bit
)表示):
m: 被修改(modified)
該快取行只被快取在該cpu
的快取中,並且是被修改過的(dirty
),即與主存中的資料不一致,該快取行中的記憶體需要在未來的某個時間點(允許其它cpu
讀取請主存中相應記憶體之前)寫回(write back
)主存。
當被寫回主存之後,該快取行的狀態會變成獨享(exclusive
)狀態。
e: 獨享的(exclusive)
該快取行只被快取在該cpu
的快取中,它是未被修改過的(clean
),與主存中資料一致。該狀態可以在任何時刻當有其它cpu
讀取該記憶體時變成共享狀態(shared
)。
同樣地,當cpu
修改該快取行中內容時,該狀態可以變成modified
狀態。
s: 共享的(shared)
該狀態意味著該快取行可能被多個cpu
快取,並且各個快取中的資料與主存資料一致(clean
),當有乙個cpu
修改該快取行中,其它cpu
中該快取行可以被作廢(變成無效狀態(invalid
))。
i: 無效的(invalid)
該快取是無效的(可能有其它cpu
修改了該快取行)。
狀態之間的相互轉換關係也可以使用下表進行表示。
在乙個典型系統中,可能會有幾個快取(在多核系統中,每個核心都會有自己的快取)共享主存匯流排,每個相應的cpu
會發出讀寫請求,而快取的目的是為了減少cpu
讀寫共享主存的次數。
乙個快取除在invalid
狀態外都可以滿足cpu的讀請求,乙個invalid
的快取行必須從主存中讀取(變成s
或者e
狀態)來滿足該cpu
的讀請求。
乙個寫請求只有在該快取行是m或者e狀態時才能被執行,如果快取行處於s
狀態,必須先將其它快取中該快取行變成invalid
狀態(也既是不允許不同cpu
同時修改同一快取行,即使修改該快取行中不同位置的資料也不允許)。該操作經常作用廣播的方式來完成,例如:requestfor ownership
(rfo
)。
快取可以隨時將乙個非m狀態的快取行作廢,或者變成invalid
狀態,而乙個m
狀態的快取行必須先被寫回主存。
乙個處於m
狀態的快取行必須時刻監聽所有試圖讀該快取行相對就主存的操作,這種操作必須在快取將該快取行寫回主存並將狀態變成s狀態之前被延遲執行。
乙個處於s狀態的快取行也必須監聽其它快取使該快取行無效或者獨享該快取行的請求,並將該快取行變成無效(invalid
)。
乙個處於e狀態的快取行也必須監聽其它快取讀主存中該快取行的操作,一旦有這種操作,該快取行需要變成s
狀態。
對於m
和e
狀態而言總是精確的,他們在和該快取行的真正狀態是一致的。而s
狀態可能是非一致的,如果乙個快取將處於s
狀態的快取行作廢了,而另乙個快取實際上可能已經
獨享了該快取行,但是該快取卻不會將該快取行公升遷為e
狀態,這是因為其它快取不會廣播他們作廢掉該快取行的通知,同樣由於快取並沒有儲存該快取行的copy
的數量,因此(即使有這種通知)也沒有辦法確定自己是否已經獨享了該快取行。
從上面的意義看來e狀態是一種投機性的優化:如果乙個cpu
想修改乙個處於s
狀態的快取行,匯流排事務需要將所有該快取行的copy
變成invalid
狀態,而修改e
狀態的快取不需要使用匯流排事務。
併發程式設計 MESI CPU快取一致性協議
mesi modified exclusive shared or invalid 也稱為伊利諾斯協議,是因為該協議由伊利諾斯州立大學提出 是一種廣泛使用的支援寫回策略的快取一致性協議。cpu中每個快取行 caceh line 使用4種狀態進行標記 使用額外的兩位 bit 表示 該快取行只被快取在該...
MESI CPU快取一致性
1.概念 mesi modified exclusive shared or invalid 是一種廣泛使用的支援寫回策略的快取一致性協議。cpu核中每個快取行使用2bit表示4種狀態。2.狀態機 m modified,修改的 快取行只被快取在該cpu中 其它cpu中如果有,也會變為invalid ...
MESI CPU快取一致性協議
mesi cpu快取一致性協議mesi modified exclusive shared or invalid 也稱為伊利諾斯協議,是因為該協議由伊利諾斯州立大學提出 是一種廣泛使用的支援寫回策略的快取一致性協議,該協議被應用在intel奔騰系列的cpu中,詳見 support the more ...