1. 程式人生 > >一致性專題之cpu快取一致性(二)

一致性專題之cpu快取一致性(二)

一致性專題之cpu快取一致性(一)中主要描述了快取與記憶體的對映方式,該篇主要描述cache line的狀態:

1、狀態M表示該快取行中資料有修改,並且與記憶體中的資料不一致;

2、狀態E表示該快取行中資料有修改,並且與記憶體中的資料一致;

3、狀態S表示該快取行中資料與記憶體中的資料一致,並且與其它核心中的cache line一致;

4、狀態I表示該快取行無效;

每個cache控制器除了監聽自己cache的讀寫操作還監聽其它cache的讀寫操作與狀態,因此每個快取行根據當前所處的狀態與監聽的動作進行狀態轉換,簡稱MESI一致性協議。讀寫操作具體可分成4種類型(LR-本核心讀取本cache,LW-本核心寫本cache,RR-其它核心讀其對應的cache,RW-其它核心寫其對應的cache)狀態轉換過程如下:

1、當資料所在cache line處於I狀態併發生LR時,如果其它核心cache line中沒有該資料則從記憶體載入,然後該cache line狀態變成E;如果其它核心cache line中有該資料並處於狀態M時,令其寫入到記憶體後然後本核心從記憶體中載入,兩個cache line都處於S狀態;如果其它核心cache line中有該資料且已處於狀態S或者E時,本cache line從記憶體中載入然後都變成S狀態。

     當資料所在cache line處於I狀態併發生LW時,先從記憶體載入資料然後在cache line中修改,狀態變成M;如果其它核心cache line中有該資料,且狀態為M時先令其更新到記憶體然後狀態置為I;如果其它核心cache line中有該資料,且狀態為E時將狀態置為無效I。而本核心的cache line狀態一直是M。

    當資料所在cache line處於I狀態並監聽到RR和RW時不會作任何反應。

2、當資料所在cache line處於M狀態併發生LR時,直接讀取,狀態不變。

      發生LW時,直接寫入,狀態不變。

      監聽到RR時,資料會寫入記憶體然後狀態變成S。

      監聽到RW時,將資料寫入記憶體便於其它記憶體讀取最新資料,然後狀態置無效I。

3、當資料所在cache line處於E狀態併發生LR時,直接讀取,狀態不變。

     發生LW時,直接寫入,狀態變成M。

     監聽到RR時,狀態變成S。

     監聽到RW時,狀態置無效I。

4、當資料所在cache line處於S狀態併發生LR時,直接讀取,狀態不變。

     發生LW時,修改cache line中的內容並將狀態變成M,其餘核心的cache line置無效狀態I。

    監聽到RR時,狀態不變。

    監聽到RW時,cache li