ECCメモリとは何ですか?

一部のRAM、またはランダムアクセスメモリは、ECCメモリとしてアドバタイズされます。 ECCはエラー訂正コードの略で、メモリ内のエラーを識別して訂正するプロセスです。 RAMにエラーがあると、データが破損または変更され、デバイスがクラッシュしたり、セキュリティの脆弱性が発生したりする可能性があります。 ECC RAMは通常、民生用PCハードウェアと互換性がありません。

メモリエラーとは何ですか?

メモリエラーは、メモリに保存されている値が変更される場合の問題です。 RAM内のデータは、値が1または0のバイナリで格納されます。 「ビットフリッピング」と呼ばれるプロセスで、1の値が0に、またはその逆に切り替わると、RAMに格納されているデータが変化します。

たとえば、変更されたビットを使用して、スプレッドシートに値を格納できます。 この場合、スプレッドシートの値を完全に異なる数値に変更することができます。 たとえば、の経済予測を変更するなど、計算の結果に影響を与えます。 仕事。 その他の場合、変更されたビットによってセキュリティ機能が無効になったり、プログラムの実行方法を変更するタイプミスが発生したりする可能性があります。 これらの2つの例は、ECCメモリを使用せずに検出および解決することは非常に困難です。 極端なシナリオでは、1つのビットが反転すると、システムクラッシュを引き起こす壊滅的なエラーが発生する可能性があります。

ビットフリッピングには多くの潜在的な原因がありますが、最も一般的な原因は、主に宇宙線イベントによって生成された中性子によって引き起こされるバックグラウンド放射線の結果です。 宇宙線は高エネルギー粒子であり、通常は陽子であり、ほぼ光速で移動します。 それらは、太陽や他の高エネルギー天体を含む恒星体から放出されます。 宇宙線が原子に当たると、中性子のシャワーと他の亜原子粒子が生成され、これらの中性子は二次相互作用を起こします。

これらの二次中性子相互作用は、ビットフリッピングエラーの主な原因であると考えられています。 宇宙線はより高い高度でより一般的であり、海抜1.5kmで3.5倍に増加し、旅客機の巡航高度で300倍に増加します。 この高度でのリスクの増加は、追加の信頼性対策を必要とします。

メモリエラーはどのくらい一般的ですか?

ほとんどの人は自分のコンピュータが毎日クラッシュすることはないので、これは主に理論上のリスクであると考えるのは簡単です。 ハイパースケールデータセンターの調査は、ビットフリッピングインシデントの発生率を分析するために使用されてきました。 Googleがデータセンター全体で実施した調査によると、1.8時間ごとにRAMのギガバイトあたり約1シングルビットエラーのエラー率が示されています。

土星に旅行するために1997年に開始されたナサのカッシーニ-ホイヘンスミッションは、それぞれ2.5GbのRAMを備えた2台の同一のフライトコンピューターで構成されていました。 その旅の最初の2年半の間、宇宙船は1日に一貫して280のシングルビットエラーを観測しました。 カッシーニ・ホイヘンスが太陽フレアの進路にあったある日の間に、ビットの4倍の増加 エラーが観察され、太陽がほとんどのビットフリッピングの原因であるというさらなる証拠を提供しました 問題。

RAMモジュールの密度が継続的に増加すると、RAMの新しいバージョンがビットフリップに対してますます脆弱になるという懸念がありました。 最近の研究では、プロセスの形状が減少するにつれてエラーが減少したため、実際には反対のことが示されています。

ECCメモリはエラーからどのように保護しますか?

ECCメモリは、ハミングコードなどのエラー訂正コードを使用して、RAMのシングルビットエラーを訂正します。 ダブルビットエラーは検出できますが、修正できません。 ハミングエラー訂正コードは、パリティビットの配列を使用して機能します。 これらのパリティビットを一緒に使用して、データビットが変更されたかどうかを検出できます。 ビットが反転したと識別された場合、それは自動的に元に戻されます。

ヒント:シングルビットエラーは、1ビットのみが反転した場合のビット反転インシデントです。 double0bitエラーでは、2ビットが反転します。 同じインシデントで2つのビットを反転する必要はありません。2番目のビットの反転は、最初の反転したビットが修正される前にのみ発生する必要があります。

ハミングエラー訂正コードには、必要以上のパリティビットが含まれています。 この追加のパリティビットにより、コードはダブルビットエラーの発生を検出できますが、これらのエラーは修正できません。

エラー検出と訂正を実行するプロセスは、RAMスティックに搭載されたメモリコントローラで実行されます。

消費者の可用性とサポート

ほとんどの民生用PCハードウェアはECCメモリをサポートしていません。 これは部分的に、サーバーハードウェアとコンシューマーハードウェアを人為的に区別する方法です。 ただし、ECC RAMはコストが高く、実行速度がわずかに遅くなります。 さらに、ビットフリッピングエラーはシステムクラッシュの主な原因ではないため、家庭の消費者に提供する追加の安定性は最小限に抑えられます。

IntelのコンシューマーおよびマニアグレードのCPUはいずれもECCメモリをサポートしておらず、XeonシリーズCPUなどのサーバーグレードのCPUのみがサポートしています。 AMDのコンシューマーグレードのCPUはECCをサポートしていませんが、ワークステーションとサーバーグレードのCPU、それぞれThreadripperとEPYCはECCメモリをサポートしています。