CPU的缓存一致性协议MESI
在多核CPU中,内存中的数据会在多个核心中存在数据副本,某一个核心发生修改操作,就产生了数据不一致的问题,而一致性协议正是用于保证多个CPU cache之间缓存共享数据的一致性。
cache的写操作
write through 写通
每次CPU修改cache中的内容会立即更新到内存,也就意味着每次CPU写共享数据,会导致总线事务,因此这种方式常常会引起总线事务的竞争,虽然后高的一致性但是效率非常低。
write back 写回
每次CPU修改了cache中的数据,不会立即更新到内存,而是等到cache line在某一个必须或合适的实际才会更新到内存。
写失效
当一个CPU修改了数据,如果其他CPU有该数据,则通知其为无效;
写更新
当一个CPU修改了数据,如果其他CPU有该数据,则通知其更新;
cache line

cache line是cache与内存数据交换的最小单位,根据操作系统一般是32或64byte,在MESI协议中状态 可以是M、E、S、I,地址则是cache line中映射的内存地址,数据则是从内存中读取的数据。
工作方式
当CPU从cache中读取数据时候,会比较地址是否相同,如果相同则检查cache line的状态,再决定该数据是否有效,无效则从主存中获取数据,或根据一致性协议发生一
MESI缓存一致性与Volatile

探讨了多核CPU中的MESI缓存一致性协议如何解决数据一致性问题,包括缓存状态及其转换,并对比了Volatile关键字如何确保数据的可见性。
最低0.47元/天 解锁文章
2523





