导航

 

1.缓存一致性协议

缓存一致性问题

计算机在CPU与主存之间引入CPU缓存,以防止因为主存访问速度远低于CPU处理速度而导致的处理性能下降,但由此引出缓存一致性问题:并发环境下同一个变量在cpu缓存中会存在多份(每个cpu有一份缓存数据),写回主存时就会互相覆盖(如i++操作)。

为了解决缓存一致性问题,主流的解决方法有如下两种方式:

  • 通过总线加锁的方式
  • 通过缓存一致性协议

总线加锁解决方案:

第一种方式是一种悲观的实现方式,CPU 和其他组件的通信都是通过总线进行的,如果采用总线加锁的方式,则会阻塞其他 CPU 对其他组件的访问,从而使得只有一个 CPU(抢到总线锁) 能够访问这个变量的内存(CPU性能浪费

缓存一致性协议解决方案:

当 CPU 从缓存中读取数据时,如果发现该变量是一个共享变量,也就是说在其他的 CPU缓存中也存在一个副本,那么就进行如下操作:

  1. 读取操作,不做任何处理,只是将 缓存中的数据读取到寄存器。
  2. 写入操作,发出信号通知其他 CPU 将该变量的缓存行置为无效状态,其他 CPU 在进行该变量读取的时候不得不到主内存中再次获取。 

 

posted on 2022-10-17 10:00  一棵二叉树  阅读(358)  评论(0编辑  收藏  举报