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



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