Open zyllt opened 6 years ago
CPU中每个缓存行(caceh line)使用4种状态进行标记(使用额外的两位(bit)表示): MESI协议中的状态
CPU中每个缓存行(caceh line)使用4种状态进行标记(使用额外的两位(bit)表示):
M: 被修改(Modified) 该缓存行只被缓存在该CPU的缓存中,并且是被修改过的(dirty),即与主存中的数据不一致,该缓存行中的内存需要在未来的某个时间点(允许其它CPU读取请主存中相应内存之前)写回(write back)主存。 当被写回主存之后,该缓存行的状态会变成独享(exclusive)状态。
E: 独享的(Exclusive) 该缓存行只被缓存在该CPU的缓存中,它是未被修改过的(clean),与主存中数据一致。该状态可以在任何时刻当有其它CPU读取该内存时变成共享状态(shared)。 同样地,当CPU修改该缓存行中内容时,该状态可以变成Modified状态。
S:共享的(Shared) 该状态意味着该缓存行可能被多个CPU缓存,并且各个缓存中的数据与主存数据一致(clean),当有一个CPU修改该缓存行中, 其它CPU中该缓存行可以被作废(变成无效状态(Invalid))。
I: 无效的(Invalid) 该缓存是无效的(可能有其它CPU修改了该缓存行)。
引用:https://www.cnblogs.com/shangxiaofei/p/5688296.html
intel的MESI协议
MESI协议中的状态
CPU中每个缓存行(caceh line)使用4种状态进行标记(使用额外的两位(bit)表示): MESI协议中的状态
CPU中每个缓存行(caceh line)使用4种状态进行标记(使用额外的两位(bit)表示):
M: 被修改(Modified) 该缓存行只被缓存在该CPU的缓存中,并且是被修改过的(dirty),即与主存中的数据不一致,该缓存行中的内存需要在未来的某个时间点(允许其它CPU读取请主存中相应内存之前)写回(write back)主存。 当被写回主存之后,该缓存行的状态会变成独享(exclusive)状态。
E: 独享的(Exclusive) 该缓存行只被缓存在该CPU的缓存中,它是未被修改过的(clean),与主存中数据一致。该状态可以在任何时刻当有其它CPU读取该内存时变成共享状态(shared)。 同样地,当CPU修改该缓存行中内容时,该状态可以变成Modified状态。
S:共享的(Shared) 该状态意味着该缓存行可能被多个CPU缓存,并且各个缓存中的数据与主存数据一致(clean),当有一个CPU修改该缓存行中, 其它CPU中该缓存行可以被作废(变成无效状态(Invalid))。
I: 无效的(Invalid) 该缓存是无效的(可能有其它CPU修改了该缓存行)。
MESI状态转换图
引用:https://www.cnblogs.com/shangxiaofei/p/5688296.html