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

來源:互聯網
上載者:User

 

      一致性要求是指,若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主存存取的正確性。

 

 

 

   相似內容參考:Ulrich Drepper 神牛的文章《what every programmer should know about memory》第3.3.4節Multi-Processor Support

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.