水平パリティ

水平パリティ

 水平パリティは、データの誤り検出に用いられるパリティチェックの一種です。水平パリティは、行単位でパリティビットを計算する方法であり、主にメモリやストレージなどのデータ転送に用いられます。

 水平パリティでは、データビットが含まれる各行に対して、1つのパリティビットを計算します。パリティビットは、その行のデータビットの合計値に基づいて計算されます。例えば、8ビットのデータが含まれる行では、8ビットのデータビットの合計値が偶数であれば、パリティビットは0となり、合計値が奇数であれば、パリティビットは1となります。

 データが転送される際に、受信側は各行のパリティビットを計算し、送信側で計算されたパリティビットと照合します。もし、パリティビットが一致しない場合は、データに誤りがあることを示し、再送信などの対処が必要となります。

 水平パリティは、単一の誤りの検出には有効ですが、複数の誤りの検出や修正には不向きです。また、水平パリティは、ストレージやメモリなどの大容量のデータを扱う場合には、データのサイズが大きくなることや、行数が増えた場合には効率が悪くなるという問題があります。したがって、現代のデータ転送には、より高度な誤り検出・修正方式が使用されることが一般的です。

水平パリティの例

水平パリティの例を示します。

例えば、以下のような4つのデータビットが含まれる行があったとします。

0101

 この場合、水平パリティを計算すると、データビットの合計が2であり、偶数であるため、パリティビットは0となります。したがって、この行全体のデータは以下のようになります。

01010

このように、パリティビットがデータビットに加えられたデータを「パリティ付きデータ」と呼びます。

 次に、このパリティ付きデータが送信され、受信側でデータの誤り検出を行う場合を考えます。受信側は、各行のパリティビットを計算し、送信側で計算されたパリティビットと照合します。もし、パリティビットが一致しない場合は、データに誤りがあることを示し、再送信などの対処が必要となります。

例えば、送信側でパリティ付きデータが以下のように変化した場合を考えます。

01000

 この場合、受信側でパリティビットを計算すると、データビットの合計が1であり、奇数であるため、パリティビットは1となります。しかし、送信側で計算されたパリティビットは0であり、受信側で計算されたパリティビットと一致しないため、データに誤りがあることが検出されます。