メモリーのエラーはハードエラーとソフトエラーの2つに分類して対策を考えます。
ソフトエラー
ソフトエラーはハードエラーと違って非破壊的にメモリー値が反転するエラーです。一時的なものでメモリーデバイスを交換する必要はありませんが、システムを停止させる原因になります。ただし、発生頻度が低いことから、一般的なパソコンではソフトエラーに対する対策は行われていません。
ソフトエラーの実際の頻度はどれくらいになるのでしょうか?Googleのサーバの大半の約2年半にわたるデータ収集をもとに行った研究によると、平均でGoogleのサーバの3台に1台ほどで1年当たり1回の訂正可能なメモリエラーが発生し、100台に1台で1回の訂正不可能なエラーが発生すると報告しています。この研究から考えると、ソフトエラーによるシステムの停止は ECC なしでは 年に 1/3 回で、 ECC 付きだと 年に 1/100 となると考えて良さそうです。また、ソフトエラーによる停止の確率を 0 にすることは出来ませんが ECC付きメモリーが有効な対策であること分かります。
- パリティチェック
-
パリティチェックは多くのエラーを検出できますが、パリティチェックではシングルビットエラーが奇数個存在する場合だけ検出できます。また、エラーとなったビットの位置を特定して訂正することができません。従ってパリティチェックでエラーを検出してもエラー訂正できませんのでサーバは停止します。
- ECCメモリ
-
ECCはシングルビットエラーを訂正できますので、シングルビットエラーの場合には、システムを停止させずに済みます。ECCはパリティチェックよりソフトエラーによる停止の確率を大幅に下げます。
ハードエラー
ハードエラーは回路自体がダメージを受けて発生するエラーで、初期不良や、経年劣化で電気的な特性が変わり動作不良を起こすと考えられ、ハードエラーが原因である場合には回復せず、ハードエラーでのビット化けはマルチビットエラーになる事が多いので、ECC 付きメモリーでも対策になりません。従って、メモリーデバイス自体を交換することになります。
システムの稼働中にメモリーを交換できるメモリーのホットプラグをサポートするシステムはかなりマイナーで限られており高価になります。サーバーが SPOF(単一障害点) でもなければ多重化することでサービスの停止時間をなくす対応ができますので、SPOFを無くす設計を行う対策が一般的になります。