CPU缓存一致性问题

目的

为了平衡CPU和内存访问性能的差异性,引入了CPU缓存(高速缓存)。当CPU读取数据时,尽量从CPU缓存中读取数据,而不是每次都从内存中读取数据。

CPU缓存使用原理-局部性原理

程序运行时,对内存数据的访问存局部性的特征。有效的利用这种局部性,可以达到极高的命中率。

  • 时间局部性:如果某个数据被访问,大概在不久的将来仍会被访问。
  • 空间局部性:如果某个数据被访问,大概它相连的数据会被访问。

问题

  1. 数据写入CPU缓存中,CPU缓存中和内存中的数据不一致
  2. 数据写入某一CPU核心缓存中,与其他CPU核心缓存数据不一致

解决方案

  • 问题1:
    • ​​​​​​​写直达
      • ​​​​​​​如果cpu缓存中存在要写入的数据,更新cpu缓存数据,再更新内存数据
      • ​​​​​​​如果cpu缓存中不存在要写入的数据,直接更新内存数据
    • 写回
      • 读请求,如果命中cpu缓存直接返回其数据;未命中先在缓存中分配一块缓存块,判断该块是否是“脏”的,如果是“脏”的将数据写入内存存储中,如果不是“脏”的,直接从下一存储中获取读到缓存块中将“脏”的修改为“未被修改”状态并返回数据
      • 写请求,如果命中cpu缓存,直接将数据写入缓存,并标记为“脏”的;若未命中cpu缓存,cpu缓存分配一个缓存块,判断当前的缓存块是否是“脏”的,如果是“脏”的将当前缓存块中的数据写入到下一级存储,并把当前的数据写入到缓存块中,如果不是“脏”的直接写入缓存块中,并标记为“脏”的。
  • 问题2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值