當前狀態 | 事件 | 行爲 | 下一個狀態 |
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 |
MESI
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.