ホームページ > バックエンド開発 > C++ > 最新の x86 CPU は本当にメモリに 1 バイトをアトミックに保存できないのでしょうか?

最新の x86 CPU は本当にメモリに 1 バイトをアトミックに保存できないのでしょうか?

Linda Hamilton
リリース: 2024-12-29 08:49:10
オリジナル
626 人が閲覧しました

Can Modern x86 CPUs Really Not Atomically Store a Single Byte to Memory?

最新の x86 ハードウェアはメモリに 1 バイトも保存できないのか?

ストラストラップ氏の著書の中での声明は、仮想ハードウェアの潜在的な動作について言及しています。明確に定義された記憶モデル。彼は、そのようなハードウェアが非アトミック更新によるバイト ストアを実装し、隣接するバイトに影響を与える可能性があると示唆しています。

実際の最新のハードウェアの動作

しかし、x86 を含む最新のハードウェアでは、 Stroustrup が説明するように動作しません。

  • シングルバイト ストアx86 ハードウェアはアトミックであり、周囲のバイトに影響を及ぼしません。
  • アトミック RMW サイクル (読み取り-変更-書き込み) によるバイト ストアの実装は、高性能 CPU では不必要で非効率的です。
  • 一部のハードウェアは非アトミックです。 x86 CPU は内部でアトミック RMW サイクルを使用してバイト ストアを実装することがありますが、これは外部からは認識されません。

歴史的背景

Stroustrap のステートメントは、初期の Alpha AXP プロセッサの動作に基づいていた可能性があり、当初はバイト ロード/ストア命令をサポートしていませんでした。 。ただし、Alpha の以降のバージョンとすべての最新の CPU は、安全で効率的なバイト ストアをサポートしています。

ハードウェア実装

最新の CPU は通常、メモリのセグメントを保存するキャッシュを使用します。キャッシュされたシステムでは:

  • キャッシュ ライン内のすべてのバイト ストアはアトミックです。
  • CPU はキャッシュ ライン全体をフェッチし、バイトを変更し、そのラインをメモリに書き込みます。
  • キャッシュ コントローラーはバイト更新の実行中もラインの制御を維持し、他のユーザーによる意図しない変更を防ぎます。 cores.

例外

最新の CPU はアトミック バイト ストアを提供しますが、特定の状況では例外が発生する可能性があります。

  • キャッシュ不可メモリ領域には同じ保護手段がない可能性があり、非アトミック バイトが許可される可能性があります
  • デバイスへの I/O 操作はバイト レベルではアトミックではない可能性があります。

結論

実際には、最新のハードウェアはアトミック バイト ストアをサポートしているため、潜在的なハードウェア動作に関する Stroustrup の説明は実際のシステムとの関連性が低くなります。 C コンパイラによって提供されるメモリ モデル保証は、スレッドの安全性を確保するために最新のハードウェアの信頼できる動作に依存しています。

以上が最新の x86 CPU は本当にメモリに 1 バイトをアトミックに保存できないのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート