cpu cache现在是三级缓存结构,cache的意义:cpu频率较高,内存处理慢,cache的出现是为了解决cpu和内存之间速度不匹配的问题
缓存一致性:mesi协议可以使cpu缓存达成一致性
cache line是cache与内存数据交换的最小单位,根据操作系统一般是32byte或64byte。在mesi协议中,状态可以是四种,地址是cache line中映射的内存地址,数据则是从内存中读取的数据
mesi状态介绍: modify:当前cpu cache拥有最新的数据(cache line),其他cpu拥有失效数据以当前cpu的数据为准 exclusive:当前cpu有数据,其他cpu中没有数据,当前cpu的数据和主寸中数据一致 shared:当前CPU和其他CPU中都有共同数据,并且和主存中的数据一致 invalid:当前CPU中的数据失效,数据应该从主存中获取,其他CPU中可能有数据也可能无数据,当前CPU中的数据和主存被认为是不一致的
对于invalid,mesi协议中采取的是写失效
MESI协议为了保证多个CPU cache中共享数据的一致性,定义了cache line的四种状态,而CPU对cache的4种操作可能会产生不一致状态,因此cache控制器监听到本地操作和远程操作的时候,需要对地址一致的cache line状态做出一定的修改,从而保证数据在多个cache之间流转的一致性。