パリティビットとは何か:原理・用途・限界をわかりやすく解説
はじめに — パリティビットの基本概念
パリティビット(parity bit)は、デジタル通信やメモリなどで用いられるもっとも単純な誤り検出手法の一つです。データ列に1ビットの付加情報を加え、全体の1の個数が偶数(または奇数)になるように設定します。受信側は受け取ったデータ列の1の個数を数え、パリティ条件が満たされているかを確認することで、単一ビットの誤りを検出できます。
パリティの種類:偶数パリティと奇数パリティ
パリティには主に二種類があります。
- 偶数パリティ(even parity):データとパリティビットを合わせたとき、全体の1の個数が偶数になるようにパリティビットを設定します。
- 奇数パリティ(odd parity):全体の1の個数が奇数になるようにパリティビットを設定します。
例えばデータが「1011」(1の個数は3)の場合、偶数パリティならパリティビットは1(3+1=4で偶数)、奇数パリティならパリティビットは0(3+0=3で奇数)となります。
どのように誤りを検出するか — 単一ビット誤り検出の仕組み
伝送中に1ビットが反転した場合、データ列全体の1の個数の偶奇性が変化します。パリティ条件と合致しなくなるため、誤り検出が可能です。例えば偶数パリティを用いたとき、受信データの1の総数が奇数であれば少なくとも1ビットの誤りが発生したと判断できます。
パリティの限界 — 検出できない誤りと誤検出
パリティビットは単純で低コストですが、以下のような限界があります。
- 同時に偶数個のビットが反転した場合、全体の偶奇性は変わらないため検出できません(たとえば2ビット反転)。
- 単なる誤り検出のみであり、どのビットが誤っているかの訂正はできません。
- バーストエラー(連続した複数ビットの誤り)に弱い。
このため信頼性が強く要求される領域では、パリティだけでは不十分であり、より高度な方式(CRC、チェックサム、ECCなど)が用いられます。
実装例:シリアル通信(UART)でのパリティビット
UARTなどのシリアル通信では、1フレームにデータビットのほかにスタートビット、ストップビット、そして任意でパリティビットが付加されます。通信設定で「パリティ無し/偶数パリティ/奇数パリティ」を指定でき、双方の端点が同一の設定である必要があります。パリティはフレーム単位で単一ビットの誤り検出に使われますが、伝送レイヤーでの再送や上位プロトコルとの組合せで信頼性を確保します。
メモリとストレージにおけるパリティの応用
コンピュータのメモリ(DIMM等)やストレージでは、パリティは簡易的な誤り検出手段として利用されます。古い世代のシステムや特定の用途では「パリティメモリ」が使われ、メモリ読み出し時にパリティチェックを行います。エラーが検出された場合、システムは障害を報告するかプロセスを停止して安全を確保します。
一方でサーバ用途など高信頼が必要な場面では単一ビット検出に加え訂正を行うECC(Error Correcting Code、例:シングルビット訂正+ダブルビット検出のSECDED)が採用されます。ECCは複数のパリティビットを組み合わせることで誤りの位置を特定し訂正できます。
RAIDにおける“パリティ”の意味(ストレージの冗長性)
RAID(特にRAID5/6)で使われる“パリティ”は、ビット単位の単純なパリティとはやや異なる応用です。複数ディスクに分散して書き込まれるデータから冗長情報(排他的論理和 XOR を使ったパリティブロック)を生成し、1台(RAID5)または2台(RAID6)の障害からデータを再構築できるようにします。ここでのパリティはブロックレベルの冗長性であり、単一ビット誤り検出よりも高い可用性を提供します。
パリティと他の検査方式との比較
- CRC(巡回冗長検査):パリティより遥かに強力で、バーストエラーや多重ビットエラーを高確率で検出できる。パケット通信やファイル整合性検査で多用される。
- チェックサム:パリティより複雑でデータ和に基づく検査。TCP/IP等で使われるが、衝突ケースも存在する。
- ECC(誤り訂正符号):誤りを検出するだけでなく訂正する能力がある。メモリ用途で広く採用される。
パリティの計算方法(実践例)
偶数パリティを例に計算方法を示します。データビット列が 1101001 のとき、1の個数は4で偶数です。したがって偶数パリティのパリティビットは0になります。もしデータが 1101000(1の個数は3)なら、偶数にするためパリティビットは1になります。実装ではビットごとのXOR演算(排他的論理和)を利用して簡潔に求められます。
実装上の考慮点
- 通信相手間でパリティ設定(偶数/奇数/なし)を事前に合意すること。
- ハードウェアレベルではパリティ生成回路とチェック回路の遅延が発生するため、タイミングやクロック設計に注意すること。
- システム全体の信頼性設計では、パリティ単体では不十分な場合が多く、上位レイヤの再送やECCと組み合わせること。
歴史的背景と現代での位置づけ
パリティビットはコンピュータや通信の初期から用いられてきた古典的な手法です。ビットの数が少なく、計算資源が限られていた時代に非常に有効でした。現在では計算コストや回路面積の制約が緩和されたため、より高度な検査・訂正技術が普及していますが、簡便性と低オーバーヘッドのために組込み機器や単純な通信インタフェースではいまだに有用です。
まとめ — いつパリティを使うべきか
パリティビットは低コストで単一ビット誤りを確実に検出できるため、次のような場合に向いています。
- 実装コストや帯域を最小限に抑えたい時。
- 誤り検出のみで十分で、上位プロトコルで再送を行う設計のとき。
- リソースが限られた組込み機器やレガシーインタフェース。
反対に、高信頼性が必要なメモリや長距離通信、バーストエラーが発生しやすい環境では、CRCやECC、冗長ストレージ(RAID)など、より強力な手法を検討してください。
参考文献
- パリティビット - Wikipedia
- ハミング符号 - Wikipedia
- 巡回冗長検査 (CRC) - Wikipedia
- シリアルポート - Wikipedia(UARTのパリティ設定など)
- RAID - Wikipedia(RAIDにおけるパリティ)
- Intel: Memory and Storage Reliability (関連資料)
投稿者プロフィール
最新の投稿
書籍・コミック2025.12.16推理小説の魅力と技法──歴史・ジャンル・読み方・書き方を徹底解説
用語2025.12.16イヤモニ完全ガイド:種類・選び方・安全な使い方とプロの活用法
用語2025.12.16曲管理ソフト完全ガイド:機能・選び方・おすすめと運用のコツ
用語2025.12.16オーディオ機材徹底ガイド:機器選び・設置・音質改善のすべて

