質問:
Bjarne Stroustrup の説明によるとC のメモリ モデルの場合、最新のハードウェアは、C のメモリ モデルよりも小さいデータを含むロードまたはストア操作を実行できません。一言。しかし、著者が x86 プロセッサでテストしたところ、実際にシングルバイト オブジェクトを格納できることが実証されました。
答え:
x86 を含む最新の命令セット アーキテクチャ (ISA) 、バイトサイズのストアを実行するための手順を示します。これらの命令はアトミックであり、隣接するバイトには影響しません。
内部的に、一部の非 x86 CPU は RMW サイクルを使用してバイト ストアを実装し、キャッシュ ライン内のワード全体を変更する場合があります。ただし、これはプログラマには公開されず、外部ストアの正確さに影響しません。
現代のハードウェアはワードより小さいデータを処理できないという Stroustrup の声明は、不正確な一般化です。最新の CPU は確かに効率的にバイトをロードおよび保存できます。
一部の高性能 CPU は、キャッシュ内にバイト ストアを実装するために RMW サイクルを使用する場合があります。ただし、これは内部実装の詳細であり、外部から見えるストアの動作には影響しません。バイト ストアは依然としてアトミックであり、隣接するバイトを妨げません。
C メモリ モデルは、スレッドが干渉することなく安全に個別のメモリ位置にアクセスし、更新できることを保証します。この保証の実装は、コンパイラとハードウェアの組み合わせに任されています。
最新の CPU とメモリ コントローラーには、バイト ストアがアトミックかつ正しく動作することを保証するメカニズムがあります。これらは、バイト サイズの転送を処理するために、キャッシュ コヒーレンス プロトコルや専用メモリ コントローラー信号などの技術を採用しています。
最新の CPU はバイト ストアを効率的に処理できますが、特定の機能に注意することが重要です。アーキテクチャまたは特定のシナリオによっては、パフォーマンスが低下する可能性があります。たとえば、整列されていないバイト ストアや I/O 関連の書き込みでは、余分なオーバーヘッドが発生する可能性があります。
最新のハードウェアはバイト サイズのストアを実行できないという主張は不正確です。主流の CPU と ISA は何十年にもわたってこの機能を提供しており、バイト関連の操作が効率的かつ安全に実行されることを保証しています。 C メモリ モデルは、これらのアーキテクチャ機能に依存して正確性を保証し、高性能ソフトウェアを実現します。
以上が最新の x86 CPU は本当にメモリに 1 バイトを保存できないのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。