字面概念
CPU缓存一致性协议
M
(modified)锁住缓存行 代表缓存行中的数据被修改了,并且改缓存行只存在于该CPU中,这个缓存行中的数据与内存中的数据不一致。在未来某个时刻会被刷回到内存中。
E
(exclusive) 代表内存中的变量只被该CPU缓存,这个缓存变量的值与内存中的值一致,并且可以由其他CPU读取时变为S状态,或有持有CPU写改缓存行时变为M状态
S
(shared) 代表内存中的变量 被两个及以上的CPU缓存 并且所有CPU缓存的数据都与内存中的变量一致,当有一个CPU对改对象的缓存行进行写操作时,其他CPU和内存中的对象变为I状态
I
(invalid)代表缓存行中数据无效
通过 总线嗅探机制 检查变量的状态
背景
目前计算机都是多个CPU构成,CPU访问内存的速度比较慢,所以在CPU和内存之间加了个缓存以提高访问速度。(一般CPU为三级缓存,运行时通过总线将内存条中的数据加载到缓存中)
多个CPU对内存中的变量进行读取,通过MESI协议保证数据处理的准确性