cache coherence 概念

本文通过举例说明了一致性问题,并详细解释了多核处理器中缓存不一致的现象。介绍了两种保证缓存一致性的底层操作:writeinvalidate(写失效)和writeupdate(写更新),并比较了它们的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引子
首先说一下一致性,现实中,由于沟通不好而导致的问题,比如,一方改变了某些东西,而没有及时通知另一方,导致两方的信息不同,这就是一致性问题。

概念
多核处理器中也存在不一致的问题。
举个例子,比如内存中有个数据x,被缓存到不同的 私有cache 中,假如有两个核,core0 和 core1,
本来x=1,如果core0 将x 重新赋值为3的话,而core1还以为x=1,那么就会导致程序出错了,这就是cache的不一致。

底层操作
为了保证cache 的一致性,处理器有两个底层操作:write invalidate(写失效) 和 write update(写更新)。

1.write invalidate
当一个内核修改了一份数据时,其他内核如果有这个数据的副本(copy),那么我们将其他核的这份数据,
置为无效。
2.write update
当一个内核修改了一份数据时,其他内核如果有这个数据的副本(copy),那么我们将其他核的这份数据,
更新到最新值。

3.对比
1)write invalidate 是一种简单的方式,不需要更新数据。如果以后处理器都不再使用这个变量 的话,这时候
置为无效是很有效的;不过由于每个valid位,对应的是一个cache line ,那么将valid位置invalid后,这个cache line
中其他的有效的数据就不能用了。

2)write update 会产生大量的数据更新操作,不过只更新修改的数据,如果 处理器还会使用这个数据 的话,那么 write update 就很有效了。
通常,由于write invalidate 简单,大多数处理器都用这种策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值