メモリの誤り検出 基本情報技術者試験
————————–パリティチェック
まずはパリティチェックです。
パリティチェックは、一定単位のデータにパリティビットという、誤り検査用のビットを1ビット追加します。
この一定単位のデータをブロックといいます。
このパリティビットを含めて全体で1が偶数個か奇数個になるように、パリティビットに1か0をセットします。、
送り手側は、このパリティビットを含めたデータを送り出し、受け手側はデータを受け取った後に、1の個数を数えて、偶数か奇数かを判断します。
奇数パリティチェックでは、送り手が1の個数が奇数になるように、パリティビットを設定して送り出します。
受け手側では1の個数が奇数かどうかを判断します。
もし、データの1つが壊れていたとすると、1の個数は奇数ではなく偶数になってしまいます。
これで、データ転送の間に誤りが発生したことを検出します。
この方法では、奇数個の誤りが発生したことは分かりますが、偶数個の誤りが発生した場合は検出することができません。
一般的に、この方法を「垂直パリティチェック」と呼びます。
————————–水平パリティチェック
では、水平パリティチェックを見ていきましょう。
水平パリティチェックは、一定単位にまとめたブロックの各ブロックの同順位のビットをグループ化して、このグループにパリティビットを付加する方式です。
図では、1ブロックが7ビットで右端がパリティビットで偶数パリティを付加しています。
黄色い部分のビットが、各ブロックのパリティビットになります。
これは、先程説明をした「垂直パリティチェック」になります。
次に7つのブロックをひとまとまりとして、各ブロックの1ビット目をグループ化して、8ブロック目の1ビット目に奇数パリティビットを付加しています。
8ブロック目を、各ブロックをまたがって、パリティチェックすることからBCC(ビーシーシー)と呼びます。
略は、Block Check Character(ブロックチェックキャラクター)です。
図では、緑色のブロックになります。
このように、水平パリティチェックは、各ブロックの同順位ビットにBCCを付加してパリティチェックを行う方式です。
垂直パリティチェックでは、奇数個の誤りは検出できるが、偶数個の誤りは検出できませんでした。
水平パリティチェックと併用することで、より誤り検出の精度が上がります。
————————–ハミングコードチェック
ハミングコードチェックは、データを送る前に、送るデータ(ブロック)に一定のルールで計算をしたチェック用データを付加して送りだします。
このチェック用のデータをハミングコードといいます。
通常、4ビットのデータに対して、3ビットのハミングコードを付加します。
データを受け取った側で、ハミングコードを検査して誤りを検出します。
ハミングコードでは、1ブロックにつき1ビットの誤りを検出して、それを訂正することが出来ます。