4

誰かが私の良い答えを教えてくれるか、少なくとも次の質問への適切な参照の方向性を教えてくれるかどうか疑問に思っています: コンピューターが非常に根本的な方法で壊れていることを聞いたことがないのはなぜですか? x を double として宣言すると、それは double のままになるのはなぜですか? 一部のバイトを奪って整数にする短絡回路が決してないのはなぜですか? x を 10 に初期化すると、x が 11 になるような電力サージが発生しないと信じているのはなぜですか?

記憶についての理解を深める必要があると思います。ありがとうございます。このような単純で抽象的な質問で頭を悩ませないでください。

4

3 に答える 3

3

知る限り、そのような最大の問題は宇宙背景放射です。ガンマ線がメモリ チップに当たると、メモリ ビットがランダムに反転する可能性があります。これは、コンピューターでも時々発生します。たとえば、Excel 入力フィールドのごく一部である可能性は低く、磁気ドライブはそのような事故から保護されているため、通常は問題を引き起こしません。ただし、長くて大規模な計算では問題になります。それがECCメモリが発明された理由です。この現象の詳細については、次の場所でも確認できます。

http://en.wikipedia.org/wiki/ECC_memory

「見つかった実際のエラー率は、以前の小規模または実験室での研究よりも数桁高く、1 メガビットあたり 10 億デバイス時間あたり 25,000 ~ 70,000 エラー (約 2.5–7 × 10-11 エラー/ビット·h) (つまり、約トップエンドのエラー率を使用すると、1 時間あたり 8 ギガバイトの RAM で 5 つのシングル ビット エラーが発生し、1 年あたり 8% 以上の DIMM メモリ モジュールがエラーの影響を受けます。」

于 2013-11-09T02:19:22.227 に答える
2

コンピューターが非常に根本的な方法で壊れるという話を聞いたことがないのはなぜですか?

ハードウェアは非常に複雑であり、ハードウェアが意図したとおりに機能することを確認するのは膨大な数のエンジニアの仕事です。Intel、AMD などはチップをリリースするたびに、設計を広範囲にテストし、工場から出荷する前にあらゆる種類の診断を実行しました。彼らには、これを行う経済的インセンティブがあります。どこかに間違いがあると、非常に高くつく可能性があります。例としてIntel FDIV バグを見てください。

x を double として宣言すると、それは double のままになるのはなぜですか? 一部のバイトを奪って整数にする短絡回路が決してないのはなぜですか?

これの一部は、アセンブリがどのように機能するかに関係しています。通常、コンパイルされたアプリケーション バイナリには型情報が含まれていません。代わりに、「0x243598F0 の位置にある 4 バイトを取得してレジスタにロードする」などのコマンドを発行するだけです。変数の型を変更するには、膨大な量のアプリケーション コードを変更する必要があります。変数のスペースを過小に割り当てるエラーが発生した場合、スタック レイアウトが台無しになり、おそらく非常に迅速なプログラム クラッシュが発生する可能性があるため、結果は「型が変更された」ではなく「クラッシュした」となる可能性があります。バイナリ レベルでは、double 型と整数型の操作が大きく異なるためです。

x を 10 に初期化すると、x が 11 になるような電力サージが発生しないと信じているのはなぜですか?

あるかもしれません!ただし、ハードウェアの担当者がすべてをうまく設計しているため、非常にまれです。ソフトウェア エンジニアであることの素晴らしい点の 1 つは、食物連鎖の頂点に立つことです。

  • ソフトウェア エンジニアは、オペレーティング システムで動作するソフトウェアを作成します。
  • これはシステム プログラマによって作成され、ハードウェアと対話します。
  • これは電気エンジニアによって設計され、ハードウェア ゲートから構築されています。
  • 材料エンジニアによって製造および設計された、
  • 採掘技術者の努力で素材を手に入れた人、

多くのエンジニアがチェーンの各リンクで良い生活を送っているため、すべてが十分にテストされています. エラーが発生し、実際のコンピューター システムがダウンすることはありますが、数千または数百万のコンピューターを実行していない限り、比較的まれです。

お役に立てれば!

于 2013-11-09T03:49:43.277 に答える
1

回答 1、私たちのほとんどは、十分な規模のシステムや、この種の考慮が必要なシステムで作業することはめったにありません。大規模なデータベースやファイル システムでは、エラー検出機能を備えており、現在の記述内容に気付くことができます。物理的またはデータの大規模なシステムでは、データの書き込みまたは保存時にエラーが発生します (たとえば、パケットが途中で失われたり破損したり、ガンマ線がヒットしたりします)。セクターは、ハード ドライブで常に不良になります。面白い問題が発生したときに通知するために、ハッシング、パリティ チェック、およびその他の多数の方法があります。

回答 2: 私たちの公理とモデル。私たちが使用する傾向があるモデル、命令型または関数型モデルには、「太陽からのガンマ線が少し変化した」という考慮事項がありません。環境科学者が環境の変化を研究するときにクォークを抽象化するのと同じように、私たちはハードウェアを抽象化します。

編集 #X: これは素晴らしい質問です。実は最近、たまたま聞いたんです。物理学では、彼らのモデルは間違っています。完全に間違っています。そして、彼らは自分が間違っていることを知っていますが、とにかくそれらを使用しています。私がこの件名に対する不敬を正当化するためにこれを言ったとき、私の学校の CS 技術者は口頭で私に言い返しました。彼は基本的にあなたが言ったことを言った.「int x=10」が後でランダムに11ではないことをどのように知ることができますか?

于 2013-11-09T02:02:45.997 に答える