位于同一缓存行的两个不同数据,被两个不同的CPU锁定,产生相互影响,此即伪共享问题。
因为读取和写入都是以缓存行为基本单位,CPU1只需要X,却将位于同一缓存行中的Y给读取到了,CPU2只需要Y,却将X给读到了。CPU1修改了X的值,此时CPU2中的缓存行被标记为invalid状态,此时CPU2需要再到主存中去读取缓存行,其实是不需要这么做的,因为CPU2并不需要X,至于为何会存在缓存行的概念,就是因为让数据位于同一缓存行可以提升CPU效率。
详细解决方案
读取缓存行的伪共享问题
热度:8 发布时间:2024-01-25 19:56:41.0
相关解决方案