ECCメモリとは
企業やデータセンターのサーバーでは、データのエラーを最小限に抑えることが不可欠です。そして、これこそが、ECC(誤り訂正符号)メモリの目的なのです。
ECCはシングルビットのメモリエラーを検出し、このエラーを正しい値に訂正する方法です。シングルビットメモリエラーは出力サーバーまたは本番環境のデータエラーで、エラーによってサーバーのパフォーマンスに大きな影響を与える可能性があります。
シングルビットメモリエラーには、ハードエラーとソフトエラーの2種類があります。ハードエラーは、メモリビットにもたらされた過度の温度変化、電圧ストレス、物質的なストレスといった、物理的な要因によって生じます。
ソフトエラーは、マザーボードの電圧の変化やメモリのビットへの反転を引き起こす可能性のある宇宙線、放射性崩壊に至るまで、データが元の意図とは異なって書き込まれたり、読み込まれたりした場合に生じます。ビットは電荷の形でプログラムされた値を保持しているため、このようなタイプの妨害がメモリビットの電荷を変化させ、エラーを引き起こす可能性があります。サーバーには、ストレージドライブ内、CPUコア内、ネットワーク接続経由、さまざまな種類のメモリがあり、エラーが起こりうる場所が複数あります。
ECCメモリは、金融セクターのような、エラー、データ破損、システム障害などを何としてでも避ける必要のあるワークステーションやサーバーによく選ばれているメモリです。
ECCがどのように機能するかについて説明します。コンピューティングでは、データはビットで送受信されます。ビットはコンピューター内の最小のデータ単位で、0と1のいずれかを使用するバイナリコードで表されます。
ビットはグループ化される際、バイナリコード、もしくはメモリとCPU間でアドレス指定され、移動するデータ単位である「ワード」を作成します。たとえば、8ビットのバイナリコードは10110001です。
ECCメモリには、パリティビットとして知られる余分なECCビットがあります。 この余分なパリティビットが101100010というバイナリコードを作成します。最後の0はパリティビットで、メモリエラーの特定に使用されます。1行のコードのすべての1の合計が偶数の場合(パリティビットは含まずに)、その1行のコードは偶数パリティと呼ばれます。エラーのないコードは常に偶数パリティを持っています。ただし、パリティには2つの制限があります。奇数のエラー(1、3、5など)だけを検出することができ、偶数のエラー(2、4、6など)は検出出来ず、通過させてしまいます。また、パリティはエラーを修正することはできず、検出のみが可能となります。そこでECCメモリの暗号化の出番となります。
ECCメモリは、データをメモリに書き込むとき、パリティビットを使って暗号化されたコードを保存します。また、ECCコードも同時に保存されます。データが読み込まれる際、保存されたECCコードはデータが読み込まれたときに生成されたECCコードと比較されます。読み込んだコードが保存されていたコードと一致しない場合、どのエラーだったのかを判断するためにパリティビットに解読され、ビットは即座に修正されます。シンドローム復号化テーブルは、このようなビットエラーを数学的に識別し、修正する手段です。
データ処理時に、ECCメモリはシングルビットメモリエラーを検出、修正する特殊アルゴリズムで、常にコードをスキャンしています。
金融業界など、ミッションクリティカルな業界では、ECCメモリが効果を発揮します。たとえば、クライアントの機密情報であるアカウント情報を編集し、他の金融機関とこのデータを交換する場合、データを送信する際、バイナリ桁が何らかの電気干渉で反転されるとします。
相手の金融機関が受け取る際、このバイナリコードが100100011となって、本来の意図とは異なる情報が伝わり、エラーとなります。ここでは、電気干渉によって3桁目が1から0に反転したとします。そのため、最初の8ビット全体で伝える値は3となり、これはパリティですらないため、自分が送った機密データは不正の恐れ(あるいは、システムクラッシュのリスク)があります。他方、ECCメモリが搭載されている場合は、エラーが検出され、3つめのバイナリ桁を1(もとのコード)に変更する修正が施されます。
ECCサーバーメモリは、シングルビットエラーの検出と修正を通じてデータの整合性を保ち、データ破壊を防ぎ、システムのクラッシュや障害を予防します。
ミッションクリティカルなサーバーやワークステーションには、Crucial ECCメモリをお使いください。