缓存一致性和内存屏障之间的关系是什么?

问题描述 投票:0回答:1

据我所知,使用内存屏障来避免out-of-order execution。但是,在谈论缓存一致性时,也经常提到存储障碍。我不确定这两个概念如何连接,因为-根据我的发现-缓存一致性应该已经通过各种协议在硬件级别得到保证,例如MESI等。使用内存屏障防止乱序执行是另一种(手动)授予缓存一致性的方法吗?

multithreading assembly memory cpu cpu-cache
1个回答
0
投票

在现代CPU上,存储首先进入存储缓冲区。当存储离开存储缓冲区并应用于高速缓存行时,才涉及高速缓存一致性协议。

虽然存储在存储缓冲区中处于挂起状态,但构成存储的CPU可以从存储缓冲区中读取它(存储到加载转发,但是其他CPU尚不能观察到存储的影响。

[x86 SFENCE之类的内存屏障等待存储缓冲区耗尽:

在SFENCE指令之前命令处理器相对于所有内存存储区的执行。处理器确保SFENCE之前的每个商店在全局范围内可见,而SFENCE之后的每个商店在全局范围内可见。 SFENCE指令是根据内存存储,其他SFENCE指令,MFENCE指令和任何序列化指令(例如CPUID指令)进行排序的。相对于内存负载或LFENCE指令,该命令未排序。

© www.soinside.com 2019 - 2024. All rights reserved.