プロセッサ x86/x86_64 で命令 LFENCE を行う意味はありますか?に対する以前の回答からわかるように、Sequential ConsistencySFENCE
の代わりに使用することはできません。MFENCE
MFENCE
そこの答えは、 = SFENCE
+ LFENCE
、つまり、LFENCE
それなしでは Sequential Consistency を提供できないことを示唆しています。
LFENCE
並べ替えを不可能にします:
SFENCE
LFENCE
MOV reg, [addr]
-- へ -->
MOV reg, [addr]
SFENCE
LFENCE
たとえば、メカニズムによって提供されるMOV [addr], reg
LFENCE
--> の並べ替え - Store Bufferは、パフォーマンス向上のために Store - Loads を並べ替えますが、それを妨げないためです。そして、このメカニズムを無効にします。LFENCE
MOV [addr], reg
LFENCE
SFENCE
LFENCE
並べ替えを不可能にするメカニズムは何ですか(x86 にはメカニズムがありません - Invalidate-Queue)?
また、SFENCE
MOV reg, [addr]
-->の並べ替えはMOV reg, [addr]
SFENCE
理論上のみ可能ですか、それとも実際には可能ですか? そして、可能であれば、実際には、どのようなメカニズムで、どのように機能するのでしょうか?