ホームページ >バックエンド開発 >C++ >最新の x86 プロセッサは本当に 1 バイトの保存に失敗する可能性がありますか?

最新の x86 プロセッサは本当に 1 バイトの保存に失敗する可能性がありますか?

DDD
DDDオリジナル
2024-12-22 13:32:41969ブラウズ

Can Modern x86 Processors Really Fail to Store a Single Byte?

最新の x86 プロセッサはメモリに 1 バイトを保存できない可能性がありますか?

Bjarne Stroustrup の主張の謎:

でStroustrup 氏の著書では、一部の最新のプロセッサは 1 ワードより小さいオブジェクトを格納できない可能性があると示唆しています。しかし、日常のプログラミング体験はこれと矛盾しているように思えます。バイトの値を設定して出力する単純な C プログラムで実証されているように、バイトを簡単に保存できます。

混乱の解決:

Stroustrup のステートメントは実際には次のようになります。バイトストア命令を実行するときの CPU の内部動作を参照します。一部の CPU は、アトミックな読み取り、変更、書き込み操作を使用して、ターゲット バイトを含むキャッシュ ラインを更新する場合があります。ただし、この内部メカニズムはプログラマには見えず、バイト ストアの結果や正確性は変わりません。

最新のハードウェアのメモリ モデル:

最新の CPU では、バイト ストアはアトミックであり、隣接するバイトには影響しません。これは、ハードウェアがメモリ操作を処理する方法を定義する明確に定義されたメモリ モデルによって保証されます。

バイト ストアの不安定性に関する神話:

バイト ストアが破損する可能性があるという考え隣接バイトは廃止されました。 x86 を含むすべての最新の (DSP 以外の) アーキテクチャには、隣接するバイトを妨げないようにアーキテクチャ的に設計されたバイトストア命令があります。

結論:

一方、Stroustrup のステートメント以前は正確だったかもしれませんが、最新の x86 ハードウェアには適用できなくなりました。バイト ストアは信頼性が高く、C プログラミングの基本です。

以上が最新の x86 プロセッサは本当に 1 バイトの保存に失敗する可能性がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。