CPU缓存一致性问题

本文探讨了CPU缓存一致性问题,包括数据写入内存的两种方式(写直达与写回)、缓存一致性的重要性,以及为解决此问题的MESI协议。MESI协议通过四种状态(Modified、Exclusive、Shared、Invalidated)确保多核CPU中的数据一致性,并介绍了总线嗅探和伪共享现象。

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

今天复习了下CPU缓存的知识。(๑•̀ㅂ•́)و✧


CPU的访问速率要远高于内存的访问速率,为了减少内存访问次数,提高计算机系统效率,CPU中引入了缓存。

在这里插入图片描述
这是我虚拟机的三级缓存结构。L1d和L1i是一级缓存,他距离cpu核心最近,
其中,l1d用来存数据,l1i用来存指令。L1和L1 cache是每个核心独有的缓存,而L3则是多个cpu核心共享的。
缓存每次从内存中读取的数据的大小cache line 可以从这里看到,默认是64字节。
在这里插入图片描述
接下来进入正题:

数据写入内存的两种方式

如何同步cache和内存的数据呢?
写直达 & 写回
写直达就是每次写数据的时候都同时往cache和内存写。如果写操作比较频繁的话,这样显然效率很低。
写回则是cpu只往cache写,只有当某个cache block要被替换时,才把他写回内存,这就引出了下一个问题:

缓存一致性问题

因为每个cpu核心都有自己私有的cache。假设有两个cpu核心A和B,他们都从内存读取了同一个变量i,之后A修改了 i 的值并且写回了内存,此时B的缓存中 i 的值就和内存中的i不一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值