MESI

當前狀態

事件

行爲

下一個狀態

I(Invalid)

Local Read

如果其它Cache沒有這份數據,本Cache從內存中取數據,Cache line狀態變成E;

如果其它Cache有這份數據,且狀態爲M,則將數據更新到內存,本Cache再從內存中取數據,2個Cache 的Cache line狀態都變成S;

如果其它Cache有這份數據,且狀態爲S或者E,本Cache從內存中取數據,這些Cache 的Cache line狀態都變成S

E/S

Local Write

從內存中取數據,在Cache中修改,狀態變成M;

如果其它Cache有這份數據,且狀態爲M,則要先將數據更新到內存;

如果其它Cache有這份數據,則其它Cache的Cache line狀態變成I

M

Remote Read

既然是Invalid,別的核的操作與它無關

I

Remote Write

既然是Invalid,別的核的操作與它無關

I

E(Exclusive)

Local Read

從Cache中取數據,狀態不變

E

Local Write

修改Cache中的數據,狀態變成M

M

Remote Read

數據和其它核共用,狀態變成了S

S

Remote Write

數據被修改,本Cache line不能再使用,狀態變成I

I

S(Shared)

Local Read

從Cache中取數據,狀態不變

S

Local Write

修改Cache中的數據,狀態變成M,

其它核共享的Cache line狀態變成I

M

Remote Read

狀態不變

S

Remote Write

數據被修改,本Cache line不能再使用,狀態變成I

I

M(Modified)

Local Read

從Cache中取數據,狀態不變

M

Local Write

修改Cache中的數據,狀態不變

M

Remote Read

這行數據被寫到內存中,使其它核能使用到最新的數據,狀態變成S

S

Remote Write

這行數據被寫到內存中,使其它核能使用到最新的數據,由於其它核會修改這行數據,

狀態變成I



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