x86 メモリ モデルと解放取得セマンティクス
MOV を使用した Memory_order_release アトミック ストアの実装に関する以前の問い合わせのフォローアップx86 命令では、追加の追加なしで x86 上で解放と取得がどのように実現されるかについて疑問が生じています。
シングルプロセッサのメモリ順序
Intel のシステム開発マニュアルの Volume 3A 第 8 章には、シングルプロセッサ システムでは、書き込みには特定の順序保証があります:
マルチプロセッサ メモリの順序
ただし、ドキュメントのマルチプロセッサのセクションでは、負荷がどのように適用されるかについては明示的に言及されていません。以下に重点を置いています。
MOV を使用した取得と解放
理解シングルプロセッサのメモリ順序付けの原則は非常に重要です。マニュアルによると、キャッシュ コヒーレント共有メモリにアクセスする場合、同じ原則がマルチプロセッサ システムに適用されます。これは、並べ替えが各 CPU コア内でローカルにのみ発生することを意味します。
ストアがグローバルに表示されると、すべてのコアに同時に表示されるようになり、すべてのコアが一貫した順序で書き込みを監視することが保証されます。これが、逐次一貫性を確立するために、x86 の mfence などのローカル バリアのみが必要な理由です。
メモリのコヒーレント共有ビュー
x86 アーキテクチャは、コヒーレントな共有メモリを維持します。コヒーレントなキャッシュを介したメモリのビュー。 Intel のマルチプロセッシング メカニズムの定義では、すべてのプロセッサが同じデータにアクセスできるようにするためのメモリの一貫性とキャッシュの一貫性の重要性が強調されています。
追加リソース
以上がx86 は明示的なフェンスを使用せずにリリース取得セマンティクスをどのように実現するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。