Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

パリティエラー(パリティエラー)とは | 意味や読み方など丁寧でわかりやすい用語解説

パリティエラー(パリティエラー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

パリティエラー (パリティエラー)

英語表記

parity error (パリティエラー)

用語解説

パリティエラーとは、デジタルデータを転送または保存する際に、データの誤りを検出するために使用されるパリティチェックという仕組みにおいて、データの整合性が損なわれていることが検出された状態を指す。これは、データが正しく送信または記録されなかったことを示す信号であり、システムの安定性やデータの信頼性にとって重要な意味を持つ。

デジタルデータは、0と1のビット列で表現される。これらのビットが、送信経路上のノイズや記憶媒体の劣化、ハードウェアの故障など、様々な要因によって意図せず反転してしまう(0が1に、または1が0になる)ことがある。このような誤りが発生すると、本来のデータとは異なる情報になってしまい、システムが誤動作したり、データが破損したりする原因となる。そこで、データの信頼性を確保するために、データ本体に加えて「パリティビット」という付加情報を用いることで、データに誤りがないかを検証する仕組みがパリティチェックである。

パリティビットとは、データのビット列に含まれる「1」の数が、偶数になるように、あるいは奇数になるように調整するために追加される1ビットのデータである。この調整方法は、偶数パリティと奇数パリティの二種類がある。偶数パリティの場合、データビット列中の「1」の総数が偶数になるようにパリティビットを設定する。例えば、送信したいデータが「1010110」だったとしよう。このデータ中の「1」の数は4つであり、既に偶数であるため、偶数パリティビットは「0」となる。したがって、送信されるデータはパリティビットを含めて「10101100」となる。もし、データ中の「1」の数が奇数だった場合、例えば「1010111」の場合、「1」の数は5つで奇数であるため、偶数パリティビットは「1」となる。この場合、送信されるデータは「10101111」となり、全体の「1」の数は6つで偶数となる。

一方、奇数パリティは、データビット列中の「1」の総数が奇数になるようにパリティビットを設定する。上記の例で考えると、データ「1010110」(「1」が4つ)の場合、奇数パリティビットは「1」となる。送信データは「10101101」となり、全体の「1」の数は5つで奇数となる。データ「1010111」(「1」が5つ)の場合、奇数パリティビットは「0」となる。送信データは「10101110」となり、全体の「1」の数は5つで奇数となる。このように、送信側は元のデータビット列にパリティビットを付加して送信する。

受信側では、受信したデータビット列(パリティビットを含む)の「1」の数を数え、それが偶数パリティの設定であれば偶数になっているか、奇数パリティの設定であれば奇数になっているかを検証する。この検証結果が、事前に設定されたパリティ方式と一致しない場合に「パリティエラー」が検出される。例えば、偶数パリティで「10101100」というデータを受信した際、何らかの要因で途中のビットが反転し「10101110」になってしまったとする。この受信データ中の「1」の数は5つとなり、偶数パリティの期待値である偶数と一致しないため、パリティエラーが検出される。

パリティエラーは、主にコンピュータのメインメモリ(RAM)、ネットワーク通信、データストレージシステム、または周辺機器とのインターフェースなど、データを扱う様々な場所で発生する可能性がある。メモリにおけるパリティエラーは、メモリチップ自体の故障や、システムバス上の電気的ノイズなどが原因で発生することが多い。ネットワーク通信では、伝送路の品質不良や電磁干渉、ケーブルの断線などが原因で発生しうる。データストレージ、例えばRAID(冗長ディスクアレイ)システムでは、ディスクの一部が故障した際にパリティ情報を利用してデータを復旧するが、そのパリティ情報自体に誤りがある場合にパリティエラーとして検出されることもある。

パリティチェックは、比較的シンプルで実装が容易な誤り検出方法であるが、いくつかの限界も持つ。最も重要な限界は、検出できるのは通常1ビットの誤りのみであるという点だ。もし、データ転送中に2ビットの誤り、特に偶数個のビットが同時に反転してしまった場合、パリティビットの計算結果が偶然にも期待値と一致してしまうことがあり、この種の誤りはパリティチェックでは検出できない。例えば、偶数パリティで「10101100」が「10100000」になった場合(2ビットが反転)、依然として「1」の数は偶数であるため、エラーは検出されない。また、パリティチェックはあくまで誤りを「検出」するだけであり、検出された誤りを「訂正」する能力は持たない。そのため、より高い信頼性が求められるシステムでは、ECC (Error-Correcting Code) メモリやCRC (Cyclic Redundancy Check) といった、誤り訂正機能や多ビットの誤り検出に対応した高度な技術が利用される。

システムがパリティエラーを検出した場合、その対応は状況によって異なる。メモリでパリティエラーが発生した場合、多くはシステムが停止し、ブルースクリーンが表示されたり、エラーメッセージが出力されたりして、問題のあるメモリの特定と交換が促される。ネットワーク通信では、エラーが検出されたパケットは破棄され、再送要求が出されることでデータの整合性を保つ。これにより、一時的な通信品質の低下はあっても、最終的には正しいデータが届けられる。ストレージシステムでは、パリティエラーがデータの整合性に関わる深刻な問題を示唆する場合があり、RAIDシステムであれば冗長性によってデータが保護されるものの、基盤となるディスクに問題がある可能性が高い。システムエンジニアとしては、パリティエラーのログが記録された場合、それが一時的な現象なのか、あるいはハードウェアの劣化や故障の兆候なのかを判断し、適切な診断と対策を講じる必要がある。具体的には、システムのイベントログやハードウェアの診断ツールを用いてエラー発生箇所を特定し、場合によっては問題のある部品の交換やファームウェアの更新などを行うことで、システムの安定稼働を維持することが求められる。パリティエラーの理解は、ITシステムの信頼性を確保するための基礎知識として非常に重要である。

関連コンテンツ