缓存一致性:
CPU读写数据过程:
CPU从主存中加载数据到高速缓存
CPU对高速缓存中数据进行读写
CPU将数据写回主存
问题描述:
多核CPU:每个核都有自己的高速缓存,每个CPU对同一份数据进行处理,就会产生数据不一致的问题。
解决方法:
(1)通过在总线加LOCK#锁的方式
当有CPU对缓存中数据进行操作时,就往总线发送一个lock信号,其它CPU收到信号后就不会对这个数据进行处理,当CPU释放锁之后,所有CPU从内存中获取数据,但是用锁的方式,其它和就得排队等候,CPU效率下降
(2)通过缓存一致性协议(锁缓存)
核心思想是:当CPU向内存写入数据时,如果发现操作的变量是共享变量,即在其他CPU中也存在该变量的副本,会发出信号通知其他CPU将该变量的缓存置为无效状态,因此当其他CPU需要读取这个变量时,发现自己缓存中缓存行是无效的,那么它就会从内存重新读取