C メモリの順序付け: x86 上の MOV を使用して解放および取得のセマンティクスを実現する
質問: MOV 命令は、追加のメモリ バリアを使用せずに、x86 上で取得/解放セマンティクスを提供します。同期プリミティブ?
答え:
メモリの解放と取得の順序を強制するために複数の命令が必要な従来のプロセッサ アーキテクチャとは異なり、x86 の MOV 命令はこの機能をエレガントに実現します。これは、x86 プロセッサのキャッシュ コヒーレントな性質によって可能になり、すべてのコアにわたってメモリの一貫した共有ビューが保証されます。
x86 メモリ モデルは、次の原則に従っています。
ストア バッファリングでは、各 CPU コア内にローカルな並べ替えレベルが導入されます。ただし、ストアがグローバルに可視になると、順序を変更することなくすべてのコアに同時に可視になります。
したがって、MOV 命令は、次のプロパティを利用して取得-解放セマンティクスを使用してアトミック ストアを実行します。
その結果、x86 上の 1 つの MOV 命令は、他のスレッドが取得できるように共有メモリ内の更新された値を解放することと、他のスレッドが取得できるように共有メモリから値を取得することの両方を行います。現在のスレッド。この動作は、ハイ パフォーマンス コンピューティングの同期に必要な取得-解放セマンティクスを効果的に実装します。
追加の考慮事項:
以上が単一の MOV 命令は、x86 上で取得と解放のセマンティクスをどのように実現しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。