x86 でのロードとストアのアトミック性
x86 アーキテクチャは、最大 64 ビットのデータのアライメントされたロードとストアのアトミック性を提供します。これは、システム内で同時に発生する可能性のある他の操作に関係なく、これらの操作が単一の分割不可能なアクションとして実行されることが保証されることを意味します。
CPU が内部的にアトミック性を実装する方法
CPU は、ハードウェアとソフトウェアのメカニズムを組み合わせて内部的にアトミックな操作を処理します。アライメントされたロードとストアの場合、CPU は操作がキャッシュ階層内で単一の分割不可能な操作として実行されることを保証するだけです。これは、キャッシュがコヒーレントであるため可能です。つまり、キャッシュ内のデータのすべてのコピーが同期を保たれています。
非整列ロードおよびストア、または読み取り、変更、書き込み操作の場合、CPU は、アトミック性を確保するための追加メカニズム。これらのメカニズムには次のものが含まれます。
ソフトウェアへの影響
x86 アーキテクチャによって提供されるアトミック性は、ソフトウェア設計に重要な影響を及ぼします。 。たとえば、これは、プログラマがロックや他の同期メカニズムに頼ることなく、アトミック変数を使用して共有データを同時アクセスから保護できることを意味します。
ただし、アトミック性は、操作はすぐに実行されます。 CPU はパフォーマンス上の理由から操作を遅らせる場合があります。または、アトミック操作を実行する前に他の操作が完了するまで待機する必要がある場合があります。
以上がx86 のロードとストアはアトミックですか? CPU はどのようにしてこれを保証しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。