ECC のメモリ内での動作
メモリ用の ECC は、モジュールの追加 DRAM コンポーネントを使用することで使用可能になるパリティ (チェックビット) を使用して、保存されたすべてのデータワードの精度を検証します。データが書き込まれると、プロセッサ内のメモリコントローラがビットパターンに基づいてエラー訂正符号を生成し、オリジナルデータと一緒に保存します。
あとでデータが読み込まれたときに、コントローラはそのコードを再計算し、保存済みの値と比較します。コードが一致すると、データにクリーンです。1 ビットエラーが検出されると、メモリコントローラは ECC ビットを使用して自動的にそのエラーを訂正します。
ECC が適切に機能するには、CPU とマザーボードの両方が ECC モードをサポートする必要があります。この調整的なサポート機能により、メモリパス全体にわたりエンドツーエンドでエラーの検出と訂正が実行され、データの信頼性が確保されます。一般的に、エンタープライズサーバープラットフォームでは、レジスタード DIMM (RDIMM)、負荷低減メモリ (LRDIMM)、またはマルチプレックスランクDIMM (MRDIMM) の形式で、ECC クラスのメモリモジュールを使用する必要があることに注意してください。
DDR5 の場合、これらのモジュールタイプは、ECC または非ECC アンバッファードメモリ DIMM (UDIMM) とソケットの互換性がないため、多くの場合デスクトップ PC やエントリレベルのワークステーションで使用されます。
X8 幅 DRAM で構築されたメモリモジュールは、ECC を使用して 1 ビットのエラー検出および訂正をサポートします。マルチビットエラーが検出されると、メモリコントローラはエラーにフラグを付けるため、システムはデータが信頼できなことを認識できます。この「1 ビットエラー訂正/2ビットエラー検出」動作 (SECDED) は、サーバークラス DIMM では標準になっており、エンタープライズシステムでの安定した高精度メモリ操作の基礎になっています。
x4 幅の DRAM を使用して構築されたメモリモジュールは、ECC によるマルチビットエラー検出と訂正をサポートし、高いレベルのデータの整合性を必要とするミッションクリティカルなサーバーには最適です。
DDR5 を導入すると、オンダイ ECC (ODECC) という RAM に対した新たなレベルのデータ整合性もたらしました。これにより、個別の ODECC コンポーネントに 1 ビットエラー検出と訂正が追加されます。これにより、モジュールが ECC クラスかどうかに関わらずサーバーシステムだけでなく、DDR5 メモリ技術を使用したすべてのシステムの安定性が大幅に向上します。
メモリエラーが発生する理由
メモリエラーは、DRAM セルがデータを微量な電荷として保存し、これが電気ノイズ、電圧変動、またはわずかなタイミングの変化により、ずれたり大きく変動したりする場合があります。負荷や熱も、宇宙背景放射線と同様にビット反転を引き起こし、クラッシュすることはありませんが、サイレントにデータを破損させるソフトエラーが発生する場合があります。
メモリ半導体リソグラフィーが収縮し、密度が高まるにつれ、特に負荷のかかった状態で常に実行されるサーバーでビット反転が発生する可能性が高まります。これらのリスクが増えることで、わずかなエラーがプログラミングからアプリケーションレベルの問題になることを防ぐために ECC が必要になります。
ソフトビットエラーとハードビットエラー
ソフトとハードエラーは、異なる障害メカニズムから生じます。この違いを理解することが、サーバークラスメモリで ECC が重大な役割を果たしている理由を評価する際に重要になります。
ソフトエラーは、電気ノイズ、電圧スパイク、バックグラウンド放射などの外的要因により発生する一時的なビット反転です。ソフトエラーはハードウェアの損傷を示しています。ECC メモリは、アプリケーションが影響を受ける前に、これらの障害を自動的に検出し訂正するよう設計されています。
一方、ハードエラーは、DRAM 自体の物理的な損傷や劣化により発生します。これらの障害は永続的で、通常は同じメモリの場所で繰り返し発生します。ECC がこれらの問題にフラグを付け、場合によっては限定的なマルチビット破損が含まれている場合、ハードエラーには一般的にロギング、障害のある範囲の隔離、影響を受ける DIMM の交換などのメンテナンス措置が必要です。ハードエラーは、実際のハードウェアの磨耗が影響しているため、エンタープライズ環境の長期間の信頼性に対する懸念が生じます。
エンタープライズシステムで ECC メモリがパフォーマンスに与える影響
サーバーワークロードでは、メモリに非常に大きな負荷がかかります。長時間実行プロセス、持続的な同時実効性、大規模なメモリ内データセットによりデータの整合性対するリスクが大幅に高まります。データベースバッファの単一のメモリエラー、VM ホスト、または金融計算は、停止や不正なトランザクションにつながります。このことが、すべてのサーバーシステムで ECC メモリが必要とされる理由です。
データの整合性が重視される環境:
- 仮想クラスタ
- データベースプラットフォーム
- 金融および科学計算環境
- 24時間365日の高信頼性と予測可能な稼働時間が必要なすべてのシステム
ECC 機能は、メモリを「高速化」することが目的ではありません。プラットフォーム全体を安定させることで、ビジネスクリティカルなシステムに不可欠なものにすることが目的です。
ECC RAM と 非 ECC RAM の比較
サーバーシステムでは、ECC RAM を使用する必要がありますが、ワークステーション、エッジシステム、ルーターなどのデータセンターのその他のセグメントでは、アンバッファード DIMM や SODIMM でオプションとして使用します。ワークステーション PC やノートパソコンは、固有のプロセッサで ECC をサポートし、BIOS 内で有効にできます。ECC クラス RAM を備えたシステムをプロビジョニングするかどうかの判断は、システムが採用することになるアプリケーションのタイプに応じて決定する必要があります。
非 ECC RAM には機能が欠落しており、障害を特定したり訂正したりできません。このため、メモリを大量消費するワークロード、永続的なワークロード、またはマルチテナントワークロードには適していません。ECC クラスモジュールにさらに DRAM を追加するとコストが増加するため、非 ECC RAM は、24 時間 365 日運用しないクライアント PC やノートパソコンでの汎用アプリケーションに適しており、コストも低減できます。
この理由により、サーバーメモリタイプの違いを理解し、目的のワークロードに適切なモジュールを選択することが、互換性とシステムの長期安定性を確保するために不可欠になります。