MESI協議簡介

  MESI協議簡介


From Wikipedia, the free encyclopedia.

    MESI 協議是一種被廣泛使用的cache一致性和內存一致性協議。它是最常見的支持寫回cache的協議。它被廣泛應用於PC由於Intel的Pentium處理器採用了該協議,來支持更加高效的寫回cache,除了先前在Intel486處理器中使用的寫直達cache。

狀態:

------------------------------------------------*********-------------------------------------------------

每一個cache 行都被標記爲以下四種狀態之一:

修改(Modified):

    該cache行只存在於當前的cache中,並且是dirty的,和內存中的值相比它是已經被修改過的。在允許任何其他讀操作之前,cache需要將數據寫回到主存。寫回將該行的狀態變爲獨佔(Exclusive)。

獨佔(Exclusive):

    cache行只存在於當前的cache中,但卻是clean的;它和主存中的數據是一致的。在任何時刻,迴應一個讀請求,它可能被改變爲共享狀態;同樣的,當對它進行寫操作時,可以被變成修改狀態。

共享(Shared):

    該狀態說明這個cache行可能被存儲在系統中其他的cache中,並且是clean的,和主存中的內容是一致的。這個cache行可以在任何時候被丟棄。

無效(Invalid):

     該狀態說明這個cache行是無效的。

 --------------------------------------------*********-------------------------------------------------

操作:

    一個典型的系統中,多個caches共享一個主存公共總線。cache的總體目標就是最小化對共享主存的使用。

    除了Invalid狀態,cache可以滿足任何一個讀請求;一個無效行必須被內存中取出(變成共享或者獨佔狀態)來實現讀請求。

    當cache行是修改或者獨佔狀態時,寫操作纔可以被執行。如果該行是共享狀態,所有其他的cache拷貝必須首先被置爲無效。這可以通過一個廣播操作來完成(Request For Ownership RFO)。

    cache可以丟棄非修改狀態的行,並且變爲無效狀態。一個修改行必須首先被寫回。

    擁有修改狀態行的cache必須監聽所有對相關內存地址的讀請求(來自系統中所有其他的cache),並且插入它所包含的數據。這通常通過強制讀請求後退,然後將數據寫到內存,將cache行的狀態變爲共享狀態。

    擁有共享狀態行的cache必須監聽所有的來自其他cache無效廣播,並且丟棄該行,置爲無效狀態。

     擁有獨佔狀態cache行的cache必須窺探所有來自其他cache的讀交易,並且將該行的狀態置爲共享狀態。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章