MSI協議
佇計算機科學內底,MSI 協議是一个佇加處理器系統中運行的基本的慢存一致性協議。佮其他的緩存一致性協議仝款,阮協議名稱中「M,S,I」三个字母表明高速緩存行可能的狀態。
概述
佇咧 MSI 中,沓沓仔存中包含逐塊可能所在以下三種狀態之一:
- Modified(已經修改): 塊已經佇咧緩存中已經予人修改,緩存的數據佮後備存儲器(譬如講內存)中的數據無一致。具有「M」狀態的塊的慢存在這塊予人替換的時陣需要共其中的內容寫轉來後備存儲。
- Shared(共享): 塊無被修改,並且至少一个處理器的緩存中以干焦讀狀態存在的。高速緩存會當共替換所以無共其中的數據寫轉來後備存儲。
- Invalid(無效): 這塊無存在做前小存內底,抑是因為匯流排會當請求若予人標記做無效。若是欲共某一个塊儉佇咧內底,著愛首先對內存抑是另外一个高速緩存內底取該塊。
遮的情形態通過高速慢存佮後備存儲之間的通信進行維護。做一个緩存中的某一塊被讀抑是講寫的時陣,抑是當慢存通過匯流排接收著其他緩存發出的讀寫信號的時,伊需要照這个動作並且調整家己的狀態。
做勻仔收著讀請求的時,若是一个角界佇咧「M」抑是「S」狀態,則伊會直接提供數據。毋過若準閣猶未予人貯入去勻仔存 ( 因為「I」狀態 ),是咧裝入該塊進前,必須先愛保證該地址的數據袂佇咧其他緩存的緩存角當中「M」狀態。無仝的緩存架構處理這个問題的方式是無仝的。比如講,匯流排架構通常使用匯流排監聽來解決此問題,現此時讀取請求將廣播予所有的慢存。其他的架構,親像一直存 kha-tá-lok-guh,若通過一个中介(比如講 kha-tá-lok-guh)來得著佗一个勻存擁有緩存塊的上新的副本。若是另外一个緩存內底有所在「M」狀態的塊,伊必須愛共數據寫轉來後備存儲,轉來到「S」抑是「I」狀態。佇數據寫回了後,緩存會當通過後備存儲或者是其他緩存中間佇咧「S」狀態的對應塊這个內容。了後緩存會答覆讀取請求。佇提供的數據了後,緩存角和「S」狀態。
做一寡採收著寫請求的時陣,若是這塊佇咧 " M " 狀態,則緩存只需要修改本地的數據。若是塊佇咧 " S " 狀態,是緩存著愛通知其他的物件有所在「S」狀態的仝款的塊的高速緩存共換出(置為「I」狀態)。 佮上文所述類似,這款通知會當通過匯流排監聽抑是緩存 kha-tá-lok-guh 來進行。完成了後勻存會修改本地的數據。若是塊佇咧 " I " 狀態,是緩存著愛通知其他的物件有所在「S」抑是「M」狀態的仝款的塊的高速緩存共換出(置為「I」狀態)。 若塊佇咧另外一个緩存中間佇咧 " M " 狀態,伊必須先將數據寫轉來了後備存或者是共提供予請求數據的緩存。若準這陣緩存猶未裝載該塊的數據,則修改進前愛先共伊其實對後備存儲讀入去。佇咧數據被修改了後,緩存角和 " M " 的狀態。
對任何予定的兩个緩存,若是𪜶有對應各地址的慢存行,若有允准的狀態如下表所示:
狀態機
處理器向高速緩存發出的請求包括:
- PrRd:處理器請求讀一个慢存角。
- PrWr:處理器請求改寫一个慢存角。
此外,猶閣有匯流排方面的請求。包括講:
- BusRd:當某一个處理器的高速緩存的讀操作出現無命中,伊會共回流排發送一个 BusRd 請求,並且預期會當收著該緩存塊的數據。
- BusRdX:當某一个處理器的高速抽退的寫操作出現無命中,伊會共回流排發送一个 BusRdX 請求,預期會當收著該慢存塊的數據,並且使其他處理器中對應無仝款地址的緩存角無效。
- BusUpgr:當某一个處理器的高速緩存的寫操作命中的時,伊會共伊敆流排發送一个 BusUpgr,使其他處理器中對應仝款的地址的緩存角無效。
- Flush:該請求表明一个緩存塊當咧予人寫轉去內存。
狀態轉移:
- 因為 Invalid(無效)狀態的緩存塊:
- 佇咧 PrRd,BusRd 發出的時陣,狀態變做 Shared(共享)。
- 佇咧 PrWr,BusRdX 發出的時陣,狀態變做 Modified(已經修改)。
- 佇咧 BusRd,BusRdX 抑是 BusUpg 發出的時陣,狀態保持 Invalid(無效)。
- 因為 Shared(共享)狀態的緩存塊:
- 佇咧 PrRd,BusRd 發出的時陣,狀態保持 Shared(共享)。
- 佇咧 PrWr,BusUpgr 發出的時陣,狀態變做 Modified(已經修改)。
- 佇咧 BusRdX 抑是 BusUpgr 發出的時陣,狀態變做 Invalid(無效)。
- 因為 Modified(已經修改)狀態的緩存塊
- 佇咧 PrRd 抑是 PrWr 發出的時陣,狀態保持 Modified(已經修改)。
- 佇咧 BusRd 發出的時陣,緩存塊被寫轉去,狀態變做 Shared(共享)。
- 佇咧 BusRdX 發出的時陣,緩存塊被寫轉去,狀態變做 Invalid(無效)。
使用
這个協議類似 SGI 四 D 使用的匯流排協議。
反種
現代化的系統使用的 MSI 協議的變種以減少保持緩存一致性所需要的通信量。MESI 協議增加一个 Exclusive(獨占)狀態,以減少對干焦存在佇咧一个高速緩存的塊的寫操作造成的通信。MOSI 協議增加一个 Owned(喔有)狀態,以減少對其他的緩存讀取過的高速緩存的塊會寫回操作造成的通信。MOESI 協議同齊做這兩件代誌。
相關條目
- 協調一致協議
- MESI 協議
- MOSI 協議
- MOESI 協議
- MESIF 協議