ECC(Error Correcting Code)とは、データ異常を検出し、自動的に訂正する機能のことです。
システムを停止するパリテイと違い、作業を継続できるため、高信頼を要求される機種では標準的な機能となっており、ECC機能を持つパソコンには、この機能を搭載したメモリが必要となります。
また逆にECC機能を持たないパソコンにECC機能のあるメモリを搭載することは可能です。
メモリ・エラーの検出方法としては、伝統的にパリティと呼ばれる方式が用いられてきた。
これは、一連のメモリ内のビット列(通常は8Bit)ごとに、それらのビットを加算した結果の最下位1ビットを冗長な情報としてメモリの内容と同時に記録しておく(このような冗長ビットなパリティビットと呼ばれる)。
そして以後、メモリの内容を読み出すときには、それらのビット値を加算し、パリティビットと比較して、データが破壊されていないかどうかを検査する(加算した結果の最下位ビットがパリティビットと異なれば、メモリ・エラーを報告する)。
このようなパリティによるエラー検出は、検査機構が極めて単純であり、かつ必要な冗長ビットも少なくてすむので、広く利用されてきた。しかしパリティでは、エラーが存在することは検出できても、どのビットがエラーを起こしているのかは検出不能であり、したがって修正を行うこともできない。
こうした問題に対し、エラー訂正機能までを持たせ、メモリサブシステムの信頼性を向上するために考案されたメモリがECCメモリである。ECCメモリで必要な冗長ビット数は、データバス幅に応じたハミングコード(バス幅をNとすると、Nを底とする2の対数をとり、この結果に2を加える)により算出できる。たとえば64Bitなら、8Bitの冗長ビットが必要とされる。
パリティ方式に比較すると、ECCメモリでは、必要とされる冗長ビットも多く、エラー検出/エラー訂正のための機構も複雑なので、どうしてもコスト高になる。
しかしメモリエラーは致命的なシステム障害に発展する可能性が高く、例えばサーバなど、万一の障害発生時の影響が大きいシステムでは、標準でECCメモリが採用されていたり、オプションでECCメモリを選択したりできるようになっている。
|