1.概述
在现代CPU中为了提高CPU的利用率,在CPU层面设计了L1/L2/L3三级缓存,缓存以缓存行为单位,进行数据的读取和写入。每个缓存行的大小通常是64个字节, 由于多核处理器的多个核心 ,在并行执行任务的时候,允许同时读取同一个数据缓存到缓存行中,那么就存在一个潜在的问题。
假设存在xy 2个变量,CPU1本来想读取x变量,但是因为缓存行的存在,他会读取到y变量,然后cpu2同理,一个cpu修改了数据并不会对另外一个cpu进行通知。
本文出自 csdn 九师兄,防伪标志,本文由九师兄唯一发布。原地址:https://blog.youkuaiyun.com/qq_21383435
因此就有了缓存一致性协议,如果一个缓存行在cpu1中被修改了,那么其他cpu的缓存行会失效,然后强制从缓存行再次读取。 如果xy分别在两个cpu钟被修改就会导致缓存行不停的失效,然后导致不停的被重新读取,导致性能下降。
这里可以参考&