简介
MESI协议是基于Invalidate的高速缓存一致性协议,并且是支持回写高速缓存的最常用协议之一。 它也被称为伊利诺伊州协议(由于其在伊利诺伊大学厄巴纳 - 香槟分校的发展)。 回写高速缓存可以节省很多通常在写入缓存上浪费的带宽。
四种状态的介绍
每一块被写入cache的内容都会使用4种状态进行标记。它们分别为:
M:被修改的(Modified)
此高速缓存行仅存在于当前的cache当中,并且是脏数据(即该部分内容与主内存对应的内容是不一致的,因为它被CPU修改了)。在允许其他cache在主存读取该部分内容的任何状态之前需要cache将数据回写主存。
E:独享的(Exclusive)
此高速缓存行仅存在于当前的cache当中,与主存数据一致。
S:共享的(Shared)
此高速缓存行可能存储在计算机其他的cache中,与主存数据一致,可以随时丢弃改行。
I:无效的(Invalid)
表示此缓存行无效。
四种状态的转换
四种状态之间的转换可以通过下面这张MESI状态迁移图来表示。
local read表示此cache或CPU读取本高速缓存行;local write表示此CPU修改本高速缓存行;
remote read表示其他cache或CPU读取本高速缓存行;remote write表示其他CPU修改本高速缓存行。
关于这张图的解读可参考表格。