volatile底层实现(CPU的缓存一致性协议MESI)

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

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的状态,再决定该数据是否有效,无效则从主存中获取数据,或根据一致性协议发生一

评论 16
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值