总线锁:总线锁保证了原子性,通过lock锁住总线bus,使当前CPU独享内存空间。但是此时其他CPU都不能访问内存其他地址,效率低。
![](https://img-blog.csdnimg.cn/img_convert/d54332d1ac3412480cf92d86f260c8e5.png)
缓存锁:MESI协议。有些无法被缓存或跨域多个缓存行的数据,依然需要使用总线锁,现代CPU的数据一致性实现 = MESI + 总线锁 共同实现
![](https://img-blog.csdnimg.cn/img_convert/d4ceab0ffa6e4fa2773dbae509388aba.png)
Modified:修改,当前缓存行的数据已被修改,但是没有被写回到主存中。
Exclusive:独享,当前缓存行与主存数据一致,该数据只存在一个CPU中,可以自由读写,而不需要通知其他CPU。
Shared:共享,当前缓存行与主存数据一致,该数据在其他CPU中也存在,不能随意修改,需要先广播通知其他CPU,将其他CPU中的数据标记为Invalid失效状态,才能修改。
Invalid:失效,当前缓存行数据已失效。