パリティビットとは
パリティビットとは、
コンピュータや
通信において、送信されるデータに付加される1ビットの情報です。このビットは、データ全体の
偶奇性を調整する役割を持ち、データの誤りを検出するために使用されます。パリティビットには、偶数パリティと奇数パリティの2種類があります。
偶数パリティ (even parity): データ中の1の数が偶数になるようにパリティビットを設定します。
奇数パリティ (odd parity): データ中の1の数が奇数になるようにパリティビットを設定します。
パリティビットは、最も単純な誤り検出符号として広く利用されています。
パリティチェックの仕組み
パリティチェックは、送信側で付加されたパリティビットと、受信側で計算されたパリティビットを比較することで、データ伝送中に誤りが発生したかどうかを検出する仕組みです。
1.
送信側: 送信するデータに対して、偶数パリティまたは奇数パリティのいずれかのルールに従ってパリティビットを計算し、データに付加します。
2.
受信側: 受信したデータから、同じルールに従ってパリティビットを計算し、送信側から送られてきたパリティビットと比較します。
3.
誤り検出: 計算されたパリティビットと受信したパリティビットが一致しない場合、データ伝送中に誤りが発生したと判断します。
パリティチェックでは、1ビットの誤りであれば確実に検出できますが、2ビット以上の偶数個の誤りは検出できません。また、誤りが発生したビットの位置を特定することもできません。
パリティチェックの例
例えば、4ビットのデータ「1001」を送信する場合を考えます。
偶数パリティの場合:
送信側: データ中の1の数が2個(偶数)なので、パリティビットは0となり、送信データは「01001」となります。
受信側: 受信データ「01001」中の1の数は2個(偶数)なので、パリティチェックは成功します。
奇数パリティの場合:
送信側: データ中の1の数が2個(偶数)なので、パリティビットは1となり、送信データは「11001」となります。
受信側: 受信データ「11001」中の1の数は3個(奇数)なので、パリティチェックは成功します。
もし、送信中にデータが「01011」のように変化した場合、偶数パリティでは1の数が3個となり、パリティチェックでエラーを検出できます。しかし、データが「11011」のように変化した場合、偶数パリティでは1の数が3個になり、エラーを検出できません。
パリティビットの限界
パリティビットは、その単純さから広く利用されていますが、いくつかの限界があります。
検出できる誤りの数: パリティビットは、奇数個のビット誤りしか検出できません。偶数個のビット誤りが発生した場合は、パリティ値が変わらないため、検出できません。
誤り訂正能力: パリティビットは誤りの発生を検出できますが、どのビットが誤っているかを特定することはできません。したがって、誤りを訂正するためには、データの再送が必要になります。
より高度な誤り検出・訂正技術が必要な場合は、ハミング符号などの別の方式が使用されます。
パリティビットの利用例
パリティビットは、その単純さから様々な場面で利用されています。
SCSIバス: SCSIバスでは、
データ転送中の誤り検出にパリティビットが使用されます。
マイクロプロセッサの命令キャッシュ: 命令キャッシュでは、メモリから読み出したデータの誤りを検出するためにパリティビットが使用されます。
シリアルデータ転送: シリアル
データ転送では、7ビットの
ASCII文字に1ビットのパリティビットを付加して、
8ビット単位でデータを送受信することが一般的です。
RAID: RAID5などの構成では、パリティブロックを利用してデータの冗長性を持たせ、一部のドライブが故障した場合にデータを復旧するのに使われます。
RAIDでは、複数のデータブロックに対してパリティブロックが生成され、万が一データブロックが破損した場合でも、残りのデータブロックとパリティブロックから元のデータを復元できます。
まとめ
パリティビットは、データ伝送における最も基本的な誤り検出方法の一つであり、その単純さと実装の容易さから広く利用されています。しかし、検出できる誤りの数や誤り訂正能力には限界があるため、用途に応じて適切な誤り検出・訂正技術を選択することが重要です。
注釈
パリティビットは、データの信頼性を高めるために役立ちますが、完全な誤り検出・訂正を保証するものではありません。
パリティチェックは、データ伝送の初期段階や、低コストで実装できる場合に有効な手段です。
外部リンク
パリティビットと誤り検出
Quick way to get the odd parity of an integer
*
Different methods of generating the parity bit, among other bit operations