コンピュータアーキテクチャの話 (325) エラーの検出方法
ので、訂正はできない。
○エラーを訂正するコード
最大1ビットのエラーしか発生しないと考えると、64ビットのデータを受け取ったとき、そのデータは、エラーなし、ビット0がエラー、ビット1がエラー、…ビット63がエラーと65通りの結果が考えられる。受け取ったデータから、この65通りのどのケースであるかが区別できないと、訂正はできない。この区別が分かるようにするためにはチェックビットを付ける必要がある。
チェックビットにもエラーは発生し得るので、元のデータビット数をD、チェックビット数をCとすると2C<D+Cが成り立っていることが必要条件である。そして、この条件が成り立っていれば、エラーが起こったビットを特定する符号化ができることが示されている。
データビット数Dが64の場合は7ビットのチェックビットを付ければこの条件を満足する。ただし、この符号は、2ビットのエラーが起こると、別のビットがエラーしたと判定してしまい、誤訂正を行ってしまう。
このため、もう1ビット チェックビットを追加し、2ビットエラーは訂正はできないが、検出はできるという符号を使うのが一般的である。この符号はSingle bit Error Correction Double bit Error Detection(SECDED)コードと呼ばれる。