mesi 協議(3)

FSM的狀態基於2種刺激從一種狀態過渡到另一種狀態。第一個刺激因素是處理器特定的讀寫請求。例如:處理器P1在其高速緩存中有一個塊X,並且有處理器請求從該塊讀取或寫入。第二個刺激來自另一個處理器,該處理器通過連接處理器的總線,該處理器在其緩存中沒有Cache塊或更新的數據。藉助Snoopers [4]監視總線請求,該監聽器監聽所有總線事務。

以下是不同類型的處理器請求和總線端請求:

處理器緩存請求包括以下操作:

PrRd:處理器請求讀取緩存塊。

PrWr:處理器請求寫入一個高速緩存塊

總線端請求如下:

BusRd:偵聽的請求,指示存在對另一個處理器發出的對Cache塊的讀取請求

BusRdX:偵聽的請求,指示存在對另一個尚未擁有該塊的處理器的Cache塊的寫入請求。

BusUpgr:偵聽的請求,指示存在對另一個處理器發出的對Cache塊的寫入請求,但是該處理器已經將該Cache塊駐留在其Cache中。

刷新:偵聽的請求,指示整個高速緩存塊由另一個處理器寫回到主存儲器。

FlushOpt:偵聽的請求,指示將整個緩存塊發佈在總線上,以便將其提供給另一個處理器(緩存到緩存的傳輸)。

(如果將緩存從主存儲器中移出的等待時間大於從高速緩存到高速緩存的傳輸時的延遲,那麼這種高速緩存到高速緩存的傳輸可以減少讀未命中的延遲,這在基於總線的系統中通常是這樣。但是在多核架構中,一致性是保持在L2高速緩存的級別上,在芯片上有L3高速緩存,從L3高速緩存而不是從另一個L2高速緩存中丟失的塊可能更快。

偵聽操作:在偵聽系統中,總線上的所有緩存監視(或偵聽)所有總線事務。每個高速緩存均具有其已存儲的每個物理內存塊的共享狀態的副本。塊的狀態根據所使用協議的狀態圖進行更改。 (有關MESI狀態圖,請參見上面的圖像)。巴士的兩側都有監聽器:

窺探器朝向處理器/緩存器一側。

存儲器側的監聽功能由存儲器控制器完成。


分享到:


相關文章: