x86 でのアトミック操作: 内部の視点
メモリ操作が RAM 上で直接実行されることを示唆する最初の印象とは異なり、アトミック操作は RAM 内に限定されます。キャッシュ。このコア間の一貫性とキャッシュ コヒーレント DMA の使用により、システム内のすべてのオブザーバーに対してメモリ アクセスがアトミックに見えることが保証されます。
アトミック性は特にメモリの順序とは関係がなく、アライメントされたロードとストアは最大 64 ビットのままです。順序に関係なくアトミック。これは、このような操作がコア、メモリ、PCIe バス間の幅広いデータ パス内で実行され、追加のハードウェアを必要とせずに不可分性が保証されるためです。
CPU は、その機能のおかげで、アライメントされたロードとストアのアトミック性を保証します。キャッシュラインをアトミックに変更します。これにより、必ずしもメイン メモリに到達することなく、アトミックな操作を完全にキャッシュ内で実行できるようになります。ただし、データ パスよりも広いストアには、すべてのアクセスで尊重されるロックによる保護が必要です。
アトミックな読み取り、変更、書き込み (RMW) 操作は、より大きな課題を引き起こします。 RMW をアトミックに実行するために、コアはキャッシュ ラインを Modified 状態に維持し、操作が完了するまで外部からの変更を防ぎます。アライメントされていない RMW の場合、複数のキャッシュ ラインにわたってアトミック性を強制するために実際の DRAM ストレージが必要になる場合があり、バス ロックのアサートが必要になる可能性があります。
以上がx86 プロセッサ上でアトミック操作はどのように機能しますか: キャッシュ、メモリ、アトミック性?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。