多處理器系統MESI cache一致性協議

2022-06-02 04:18:03 字數 2044 閱讀 2492

一致性要求是指,若cache中某個字被修改,那麼在主存(以及更高層次)上,該字的副本必須立即或最後加以修改,並確保它者引用主存上該字內容的正確性。

當代多處理器系統中,每個處理器大都有自己的cache。同一主存塊的拷貝能同時存於不同cache中,若允許處理器各自獨立地修改自己的cache,就會出現不一致問題。解決此問題有軟體辦法和硬體辦法。

硬體辦法能動態地識別出不一致產生的條件並予以及時處理,從而使cache的使用有很高的效率。並且此辦法對程式設計師和系統軟體開發人員是透明的,減輕了軟體研製負擔,從而普遍被採用。

mesi協議是一種採用寫--無效方式的監聽協議。它要求每個cache行有兩個狀態位,用於描述該行當前是處於修改態(m)、專有態(e)、共享態(s)或者無效態(i)中的哪種狀態,從而決定它的讀/寫操作行為。這四種狀態的定義是:

·修改態(modified)--此cache行已被修改過(髒行),內容已不同於主存並且為此cache專有;

·專有態(exclusive)--此cache行內容同於主存,但不出現於其它cache中;

·共享態(shared)--此cache行內容同於主存,但也出現於其它cache中;

·無效態(invalid)--此cache行內容無效(空行)。

mesi協議適合以匯流排為互連機構的多處理器系統。各cache控制器除負責響應自己cpu的記憶體讀寫操作(包括讀/寫命中與未命中)外,還要負責監聽匯流排上的其它cpu的記憶體讀寫活動(包括讀監聽命中與寫監聽命中)並對自己的cache予以相應處理。所有這些處理過程要維護cache一致性,必須符合mesi協議狀態轉換規則。

下面由圖的四個頂點出發,介紹轉換規則:(規則中與上圖的相應位置以*數字序號對照給出)

*1該無效行在自身cache讀未命中將被相應記憶體塊填充以建立新行時,讀監聽命中,說明其它cache正在讀同位址的記憶體塊,以建立新行。故為多cache共享行,應為s狀態,並應繼續發出讀監聽廣播,使其它cache的類似情況效仿。

*2該無效行在自身cache讀未命中將被相應記憶體塊填充以建立新行時,未讀監聽命中,為本cache專有,故新建行應為e狀態。

*3該無效行在自身cache寫未命中時,將先讀入相應記憶體塊填充新行後,再進行寫修改,與原記憶體正本的資料不一至,故新建行為m狀態。

*4該共享行寫監聽命中,說明別的cache由於寫命中修改了同此位址的行,根據寫無效原則,此共享行應改變為無效(i)狀態。

*5該共享行讀命中,狀態不變。

*6該共享行讀監聽命中,說明其它cache正在讀同位址記憶體塊,以建立新行,此時該共享行狀態不必改變,但應繼續發讀監聽廣播,供它者監聽。

*7該共享行被寫命中,其中某字被改寫,與記憶體正本不一至,故應改為m狀態,且應發出共享行寫命中監聽廣播,使其它cache同位址行作廢(同*4)。

*8該e態行讀監聽命中說明別的cache正在讀同位址的記憶體正本,以建立新行,故其狀態應改為s狀態,並發出讀監聽廣播,以使同此情況及* 1效仿之。

*9該e態行讀命中不必改變狀態。

*10該e態行寫監聽命中,說明別的cache由於寫未命中而訪問同位址的記憶體正本,該e態行內容即將過時,故應作廢。

*11該e態行寫命中,只改變狀態為m態即可,無須他者監聽。

*12該m態行寫命中狀態不變。

*13該m態行讀命中狀態不變。

*14該m態行讀監聽命中,應將該行最新資料寫回記憶體正本後變為s狀態。並發出讀監聽廣播,供他者監聽。

*15該m態行寫監聽命中,說明別的cache由於寫未命中而訪問了同位址的記憶體塊(同* 3),將實行先讀後修改,此時本地m態行應搶先寫回主存,然後作廢,以保證別的cache讀出整行而未被修改資料的正確性。

*16該m態行寫監聽命中,說明別的cache由於寫未命中而訪問了同位址的記憶體塊,將實行先讀後整行的修改,此時本地m態行不必寫回主存,只作廢即可。

上述分析可以看出,雖然各cache控制器隨時都在監聽系統匯流排,但能監聽到的只有讀未命中、寫未命中以及共享行寫命中三種情況。讀監聽命中的有效行都要進入s態並發出監聽命中指示,但m態行要搶先寫回主存;寫監聽命中的有效行都要進入i態,但收到rwitm時的m態行要搶先寫回主存。總之監控邏輯並不複雜,增添的系統匯流排傳輸開銷也不大,但mesi協議卻有力地保證了主存塊髒拷貝在多cache中的唯一性,並能及時寫回,保證cache主存訪問的正確性。

X86處理器與ARM處理器

摘要arm架構在嵌入式系統 超級計算機領域有著龐大的市場占有量。本文從x86架構出發,通過對比體現arm架構處理器的結構和特性。x86架構與arm架構的最根本區別是採用了不同的指令集。arm處理器採用32位元精簡指令集 risc 處理器架構,x86架構處理器採用可變指令長度的複雜指令集計算機 cis...

作業系統之處理器管理筆記

第三章處理器管理 本章考核知識點 1.多道程式設計 2.程序 3.程序狀態 4.程序控制塊 5.程序佇列 6.可再入程式 7.中斷及中斷響應 8.中斷優先順序 9.程序排程 自學要求 通過本章學習應該掌握多道程式設計是如何提高計算機系統效率的 程序與程式有什麼區別 程序的基本狀態以及狀態變化 程序佇...

微處理器工作原理

1.引言 2.微處理器的結構 3.微處理器指令 4.微處理器的效能和發展趨勢 引言您在瀏覽本頁面時使用的計算機便通過微處理器來完成其工作。微處理器是所有標準計算機的心臟,無論該計算機是桌面計算機 伺服器還是膝上型電腦。您正在使用的微處理器可能是奔騰 k6 powerpc sparc或者其他任何品牌和...