同時実行モデルに関する一般に信じられていることに反して、Stroustrup は、最新のハードウェアには保存やロードができないと主張している単語より小さいもの。ただし、最新の x86 プロセッサでは、個々のバイトの保存と操作が可能です。この明らかな矛盾は、Stroustrup のステートメントとその意味の検討を促します。
Stroustrup は、明確に定義されたメモリ モデルがなければ、同時スレッドが互いのバイト操作操作に干渉する可能性があることを示唆しています。 、不正確な結果につながる可能性があります。この議論は、ハードウェアがアトミック バイト ストレージの明示的なサポートを欠いており、隣接するバイトの不注意な変更につながる可能性があることを前提としています。
Stroustrup のステートメントのより微妙な解釈は、特定の内部実装を備えたハードウェアに適用される可能性があるということです。 CPU は、バイト サイズの操作であっても、読み取り、変更、書き込みサイクルを使用してキャッシュ ライン内のデータを操作する場合があります。ただし、これらの内部操作はプログラマにとって透過的であり、操作の外部可視性には影響しません。バイト ストアはアトミックなままであり、キャッシュ ライン内の隣接するバイトを破損しません。
アトミック バイト ストアのない仮想の ISA は実際に存在する可能性がありますが、x86 を含むすべての最新の ISA はバイトを提供します。 -size のロードおよびストア命令。これらの命令は、隣接するバイトの整合性を維持するようにアーキテクチャ的に定義されており、プログラムの正しい実行が保証されます。さらに、L1D キャッシュを備えた最新の CPU では、どちらもキャッシュ ラインのフェッチとライトバックを必要とするため、バイトとワードの処理はほぼ同様です。
Stroustrup のステートメントは、潜在的に以下に適用可能ですが、仮想または時代遅れのハードウェア設計は、最新の x86 プロセッサの動作を正確に反映していません。これらのプロセッサは効率的なアトミック バイト ストレージを提供し、そのような操作に依存するソフトウェアの正確性を保証します。したがって、最新のハードウェアのプログラミングのコンテキストでは、バイト操作がメモリ破損につながる可能性を心配する必要はありません。
以上が最新の x86 ハードウェアは本当に 1 バイトも保存できないのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。