1.缓存一致性协议
缓存一致性问题:
计算机在CPU与主存之间引入CPU缓存,以防止因为主存访问速度远低于CPU处理速度而导致的处理性能下降,但由此引出缓存一致性问题:并发环境下同一个变量在cpu缓存中会存在多份(每个cpu有一份缓存数据),写回主存时就会互相覆盖(如i++操作)。
为了解决缓存一致性问题,主流的解决方法有如下两种方式:
- 通过总线加锁的方式
- 通过缓存一致性协议
总线加锁解决方案:
第一种方式是一种悲观的实现方式,CPU 和其他组件的通信都是通过总线进行的,如果采用总线加锁的方式,则会阻塞其他 CPU 对其他组件的访问,从而使得只有一个 CPU(抢到总线锁) 能够访问这个变量的内存(CPU性能浪费)
缓存一致性协议解决方案:
当 CPU 从缓存中读取数据时,如果发现该变量是一个共享变量,也就是说在其他的 CPU缓存中也存在一个副本,那么就进行如下操作:
- 读取操作,不做任何处理,只是将 缓存中的数据读取到寄存器。
- 写入操作,发出信号通知其他 CPU 将该变量的缓存行置为无效状态,其他 CPU 在进行该变量读取的时候不得不到主内存中再次获取。
标签:缓存,变量,总线,note,加锁,一致性,CPU From: https://www.cnblogs.com/sen-2017/p/16798149.html