跳至內容

MESI協議

出自Taiwan Tongues 台語維基
於 2025年8月23日 (六) 19:26 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

MESI 協議是一个因為失效的慢存一致性協議,支持寫轉去(write-back)活落來的上捷用協議。嘛叫做它利對它協議( Illinois protocol,因為是在它利嗎他大學厄巴納-香檳分校予人發明的 )。佮寫直達(write through)慢存相比,轉寫緩衝能節約大量帶闊。總是有「垃圾」(dirty)狀態表示慢存中的數據佮主存內底無仝。MESI 協議要求佇咧緩存無命中(miss)而且數據塊另外一个緩存的時陣,允准緩存到慢存的數據複製。佮 MSI 協議相比,MESI 協議減少了主存的事務數量。這極大改善著性能。

狀態

沓沓仔存行有四種無仝款的狀態 :

已經修改 Modified ( M )

束結是垃圾(_ dirty _), 佮主存的值無仝。若別項的 CPU 內核要讀主存這塊數據,愛去慢慢仔行著愛去寫著主存,狀態變做共享 ( S ) .

獨占 Exclusive ( E )

慢存行干焦佇咧當前沓沓仔存在,但是清氣的(clean)--緩存數據仝款於主存數據。做別項慢存讀伊的時,狀態變做共享;當前寫數據的時,變做已經修改狀態。

共享 Shared ( S )

慢存行嘛存在其他緩存內底閣是清氣的。勻仔存行會使佇任意時時刻放捒。

無效 Invalid ( I )

慢存行是無效的任意一對慢存,對應慢存行的相容關係 :

做一塊標記做一塊 M ( 已經修改 ) , 佇其他緩存內底的數據副本被標記做 I ( 無效 ) .


操作

有限狀態自動機的狀態轉換結束兩種場景:緩存所在處理器的讀寫;其他處理器的讀寫。匯流排請求被匯流排看探器監視。

處理器對慢存的請求 :

一 . PrRd : 處理器的請求一个緩存角二 . PrWr : 處理器的請求一塊勻仔匯流排對慢存的請求 :

一 . BusRd : 看探器的請求指出其他處理器的請求一个緩存角二 . BusRdX : 看探器的請求指出其他處理器的請求一个該處理器無擁有的緩存角三 . BusUpgr : 看探器的請求指出其他處理器的請求一个該處理器有的緩存角四 . Flush : 看探器的請求指出請求回寫規个緩存到主存五 . FlushOpt : 看探器的請求指出規个緩存塊被發到匯流排以發送予另外一个處理器(慢存到慢存的複製)

解說

圖一爿一是 MESI 協議四種狀態的轉換圖。

寫操作干焦佇咧沓沓仔存行是已經改抑是孤占狀態的時陣會當自由執行。若是咧共享狀態,其他的勻仔存在攏愛先共伊寄付行無效,這款的廣播操作叫做是 _ Request For Ownership ( RFO ) _ .

慢存對已經修改狀態的慢存行,欲監聽各處理器對其的讀請求並插入其數據到匯流排。

慢存對共享狀態的慢存行,欲監聽使其無效抑是請求有的放送,當做配合會使共寄付行為無效。

已經修改狀態、獨占狀態是精確的,匹配該愛靠家己的系統當中的實際狀況。共享狀態會當是無精確的:若別項慢存在放捒這途,干焦當前這勻仔存在的這途,毋過其狀態無變做是獨占。其他緩存無需要廣播通知其他的操作。

獨占狀態是一个優化機會:處理器修改共享狀態的慢存行必須愛先發出一个匯流排事務予其他緩存中的該行失效;獨占狀態下修改一行毋免匯流排事務。

MESI 協議操作圖解

假使下述讀 / 寫操作訪問仝一主存位置的數據。操作流是   : R 一 , W 一 , R 三 , W 三 , R 一 , R 三 , R 二 . 上蓋起初所有做空。

參見

  • MOSI 協議
  • MOESI 協議
  • MESIF 協議
  • MERSI 協議
  • Dragon 協議
  • 火金蛄協議

參考文獻

外部連結

  • An interactive MESI simulation
  • An open source MESI controller ( Verilog )