私は、ハイパースレッディングによって境界が整列されていても、32ビットint(32ビットプロセッサ上)で非アトミックな読み書きができることを読んでいます。ハイパースレッディングがこれにどのように影響を与えるのか誰も説明できますか?ハイパースレッディングは、32ビットプロセッサ上での32ビットintの読み取り/書き込みの原子性に影響を及ぼしますか?
答えて
これが真実なら、特定のモデルやステッピングに特有の恐ろしいCPUバグです。 32ビットの読み書きはアトミックであることは、x86プラットフォームのプロパティの基本であり、Windows、Linux、たくさんのアプリケーションソフトウェアに依存しています。
これは、ハイパースレッディングなしのシングルコアCPUから、ハイパースレッディング付きのシングル物理コアCPUへの移行を指していると思います。ハイパースレッディングのないシングルコアのx86 CPUでは、整列した32ビット変数に対するリード・モディファイ・ライト操作を行う単一の命令(インクリメントなど)は、ロック接頭辞がなくてもアトミックです。ハイパースレッディングのCPUは、2つの物理コアを持つCPUのように動作します。したがって、読み取り - 変更 - 書き込み操作(それ以外の交換)は、ロック接頭辞。
あなたのソフトウェアが遭遇するCPUの大部分には、複数のコアがありますので、これは無関係です。従って、整列した32ビット値に対する単一命令のリード・モディファイ・ライト・オペレーションでさえ、ロックされていなければアトミックではありません。 (Exchangeは例外であり、プレフィックスがなくてもロックされているため)
マルチCPUシステムでも、アライメントされた読み取りまたは書き込みは常にアトミックです。アトミックでないもの(そしてこれはおそらくあなたが聞いたことであり、少なくともあなたが聞いたはずのものです)は、増分のようなリード・モディファイ・ライト命令、またはメモリ・ターゲットでの追加です。これらはHTシステム上でさえ原子ではありませんが、ロックされていなくても単一の論理CPUを持つシステムでは原子レベル(保証ではなく、偶然)です。
あなたはこれ以上のことを詳しく説明していますか? – DuckMaestro
- 1. 読み込んで32ビットまたは64ビットJNIライブラリのJava
- 2. 32ビットレジスタの特定のビットを書き込んで読み取る方法
- 3. VHDL 32ビットレジスタ位置に16ビットのみ書き込み
- 4. アスタリスク設定の書き込みシーケンスは、VoIPのパフォーマンスに影響を及ぼしますか?
- 5. Firebaseの読み取り/書き込み/検証ルールのパフォーマンスへの影響は?
- 6. C++ 32ビットおよび64ビットプロセッサのアラインメントの安全性
- 7. はSTDと書き込み、次いで原子読み取る::原子
- 8. Libtiff.Netを使用して32ビットのグレースケールTiffを読み取る
- 9. エージング32ビットOCXコントロールが.NETで読み込めません。
- 10. 32ビットCPUプロセッサでのメモリリークと64ビットプロセッサCPUでのリークなし
- 11. は32ビット整数1つの方法の第31ビット(MSB)を読み出すために32ビット整数
- 12. Java intは常に32ビットですか?
- 13. 原子の読み取りとアトミック書き込みを確実にする方法は?私は次のように原子が整数(int型ではない)と、他の人に読み込み、アトミック書き込みたい
- 14. オペレーティングシステムの脆弱性はデータベースのセキュリティに影響を及ぼしますか?
- 15. 2 32ビットOS上の^ 32ビットまたはバイト
- 16. RequiredFieldValidatorはページ上の他の要素に影響を及ぼしますか?
- 17. カスタムフィルターの追加はチェーンに影響を及ぼしますか?
- 18. 5ビットのEEPROM読み取りと書き込み
- 19. 長いビットの読み取り/書き込み
- 20. 32ビットレジスタから16ビットを読み取る
- 21. 32ビット32倍の32ビット32ビット乗算
- 22. Linuxカーネルでの原子操作の読み込みと書き込み
- 23. 64ビット環境で長い32ビットの16進数を読み取る
- 24. 32ビットWindowsサービスによる64ビットレジストリへの書き込み。 (AutoAdminLogonキー)
- 25. 組み込みLinux(32ビット)用の2038年ソリューション?
- 26. Windows 7のC#アプリケーションでC++ DLLを読み込めません。32ビットOS
- 27. ページの読み込み後にHTMLの 'lang'属性を変更しても影響はありますか?
- 28. mipsには32ビットのアドレスと32ビットの命令がありますか?
- 29. innodb_flush_methodは読み取り操作に影響しますか?
- 30. C言語での32ビットバイナリでの読み込み
私はあなたが正しく理解しているかどうかはわかりません。私は、読み込みが原子的であると信じています(すべてのワード・アライメントされた4バイトはまだ一度に読み込まれます)が、実際に読み込まれたものについてはメモリ・モデルが驚きを与えるかもしれません。 –
リンク、またはそれは起こらなかった。私たちは誰かが「どこかに読んだ」という狂った噂を討論することはできません。 (おそらくそれは間違っていました) – cHao
単純な算術演算をアトミックに実行することができない場合、それは幾分興味深い意味を持ちます... – Corbin