パリティ ビット、またはチェック ビットは、バイナリ コードの文字列に追加されるビットです。パリティ ビットは、単純な形式のエラー検出コードです。パリティ ビットは、通常、通信プロトコルの最小単位 (通常は 8 ビットのオクテット(バイト))に適用されますが、メッセージのビット文字列全体に個別に適用することもできます。
パリティビットは、文字列内の1 ビットの合計数が偶数か奇数かを保証します。[1]したがって、パリティビットには、偶数パリティビットと奇数パリティビットの 2 種類があります。偶数パリティの場合、特定のビットセットについて、値が 1 であるビットがカウントされます。そのカウントが奇数の場合、パリティビットの値は 1 に設定され、セット全体 (パリティビットを含む) での 1 の発生の合計数 (偶数) になります。特定のビットセットでの 1 のカウントがすでに偶数の場合、パリティビットの値は 0 になります。奇数パリティの場合、コーディングは逆になります。特定のビットセットについて、値が 1 であるビットのカウントが偶数の場合、パリティビットの値は 1 に設定され、セット全体 (パリティビットを含む) での 1 の合計数 (奇数) になります。値が 1 であるビットの数が奇数の場合、その数はすでに奇数なので、パリティ ビットの値は 0 になります。偶数パリティは巡回冗長検査(CRC) の特殊なケースであり、1 ビットの CRC は多項式 x +1 によって生成されます。
パリティ
数学においてパリティとは整数の偶数か奇数かを指すもので、2 進数形式で表すと最下位ビットだけを調べるだけで判定できます。
情報技術において、パリティとは、任意の 2 進数セットにおいて、値が 1 であるビットの数の偶数または奇数を指します。パリティは各ビットの状態によって決定されるため、パリティのこの特性 (すべてのビットに依存し、1 つのビットが変更されると値が偶数パリティから奇数パリティに変わる) により、エラー検出および訂正スキームでの使用が可能になります。
電気通信において、一部のプロトコルで言及されるパリティはエラー検出のために使用されます。伝送媒体は、両端で奇数パリティまたは偶数パリティのいずれかに同意するように事前に設定されます。送信準備が整った各ビット列 (データ パケット) について、送信側はパリティ ビット (0 または 1) を計算し、合意されたパリティ (偶数または奇数) に適合するようにします。そのパケットの受信側は、まずパケット全体のパリティが事前に設定された合意に従っているかどうかを確認し、そのパケットにパリティ エラーがある場合は、そのパケットの再送信を要求します。
コンピュータ サイエンスでは、 RAIDのパリティ ストライプまたはパリティ ディスクはエラー訂正を提供します。パリティ ビットは、nビットあたり 1 パリティ ビットの割合で書き込まれます( nはアレイ内のディスクの数)。読み取りエラーが発生すると、エラー領域の各ビットはnビットのセットから再計算されます。このように、1 つのパリティ ビットを使用することで、1 ビットのサイズから 1 つのディスクのサイズまでの領域に「冗長性」が作成されます。以下の「独立したディスクの冗長アレイ」を参照してください。
電子機器では、パリティ付きのデータのトランスコーディングは非常に効率的です。XORゲートは偶数パリティを作成するチェックビットと同等のものを出力し、XOR ロジック設計は任意の数の入力に簡単に拡張できるためです。XOR と AND 構造は、ほとんどの集積回路の大部分を構成しています。
エラー検出
奇数ビット(パリティ ビットを含む)が誤って送信された場合、パリティ ビットは不正確となり、送信時にパリティ エラーが発生したことを示します。パリティ ビットはエラーの検出にのみ適しています。破損した特定のビットを特定する方法がないため、エラーを訂正することはできません。データを完全に破棄し、最初から再送信する必要があります。ノイズの多い送信媒体では、正常な送信に長い時間がかかったり、まったく送信されなかったりすることがあります。ただし、パリティには 1 ビットのみを使用し、生成に必要なXOR ゲートの数もわずかであるという利点があります。エラー訂正コードの例としては、 ハミング コードを参照してください。
パリティ ビット チェックは、 7 ビットのASCII文字を送信し、8 番目のビットをパリティ ビットとして残す場合に時々使用されます。
たとえば、パリティ ビットは次のように計算できます。アリスとボブが通信していて、アリスがボブに単純な 4 ビット メッセージ 1001 を送信したいとします。
このメカニズムにより、単一ビット エラーの検出が可能になります。これは、回線ノイズによって 1 ビットが反転すると、受信データ内の 1 の数が不正確になるためです。上記の 2 つの例では、ボブが計算したパリティ値が受信値のパリティ ビットと一致しており、単一ビット エラーがないことを示しています。XOR を使用して 2 番目のビットで送信エラーが発生した次の例を検討してください。
パリティ方式には制限があります。パリティ ビットは、奇数ビットのエラーのみを検出することが保証されています。偶数ビットにエラーがある場合、データが破損していてもパリティ ビットは正しい数の 1 を記録します。(エラー検出と訂正も参照してください。) 前と同じ例ですが、破損したビットの数が偶数の場合を考えてみましょう。
ボブは予想どおり偶数パリティを観察したため、2 ビット エラーを検出できませんでした。
使用法
パリティは単純であるため、困難な場合に操作を繰り返すことができる、または単にエラーを検出するだけで役立つ多くのハードウェアアプリケーションで使用されます。たとえば、 SCSIバスとPCI バスはパリティを使用して転送エラーを検出し、多くのマイクロプロセッサ命令キャッシュにはパリティ保護が含まれています。命令キャッシュデータはメイン メモリのコピーにすぎないため、破損していることが判明した場合は無視して再フェッチすることができます。
シリアル データ伝送では、一般的な形式は 7 つのデータ ビット、偶数パリティ ビット、および 1 つまたは 2 つのストップ ビットです。この形式では、8 ビット バイトにすべての 7 ビットASCII文字を収容できます。他の形式も可能で、8 ビットのデータとパリティ ビットですべての 8 ビット バイト値を伝達できます。
シリアル通信のコンテキストでは、パリティは通常、インターフェース ハードウェア ( UARTなど) によって生成およびチェックされ、受信時に、インターフェースハードウェアのハードウェア レジスタのステータス ビットを介して、CPU などのプロセッサ(およびオペレーティング システムなど)に結果が提供されます。エラーからの回復は通常、データの再送信によって行われ、その詳細は、通常、ソフトウェア (オペレーティング システムの I/O ルーチンなど) によって処理されます。
パリティ ビットを含む送信ビットの総数が偶数の場合、奇数パリティには、すべて 0 のパターンとすべて 1 のパターンの両方がエラーとして検出されるという利点があります。ビットの総数が奇数の場合、パターンの 1 つだけがエラーとして検出され、より一般的なエラーが何であるかに基づいて選択を行うことができます。
RAIDアレイ
パリティ データは、冗長性を実現するために RAID アレイ (独立した安価なディスクの冗長アレイ)によって使用されます。アレイ内のドライブが故障した場合、他のドライブに残っているデータをパリティ データと組み合わせ (ブールXOR関数を使用)、失われたデータを再構築できます。
たとえば、3 ドライブのRAID 4アレイ内の 2 つのドライブに次のデータが含まれているとします。
2 つのドライブのパリティ データを計算するには、データに対して XOR を実行します。
結果のパリティ データ10111001はドライブ 3 に保存されます。
3 つのドライブのいずれかが故障した場合、残りのドライブのデータに同じ XOR 演算を適用することで、故障したドライブの内容を交換用ドライブで再構築できます。ドライブ 2 が故障した場合、残りの 2 つのドライブ (ドライブ 1 とドライブ 3) の内容の XOR 結果を使用して、そのデータを再構築できます。
次のように:
XOR 計算の結果はドライブ 2 の内容になります。次に、 11010100がドライブ 2 に保存され、アレイが完全に修復されます。
XOR ロジックは偶数パリティと同等です ( a XOR b XOR c XOR ... は XOR( a、b、c、...) として扱うことができ、これは奇数の引数が真の場合にのみ真となる n 項演算子です)。したがって、上記と同じ XOR 概念は、任意の数のディスクを使用する、パリティ付きのより大規模な RAID アレイにも同様に適用されます。12 台のドライブの RAID 3 アレイの場合、11 台のドライブが上記の XOR 計算に参加し、専用のパリティ ドライブに保存される値を生成します。
RAID-DPでは、パリティ ビット メカニズムの拡張とバリエーションである「ダブル」、「デュアル」、または「対角」パリティが使用されます。
歴史
パリティ トラックは、 1951 年に登場した最初の磁気テープ データ ストレージに存在していました。複数の並列信号に適用されるこの形式のパリティは、横断的冗長検査と呼ばれます。これは、単一の信号で送信される複数のビットに対して計算されるパリティ (縦方向冗長検査)と組み合わせることができます。並列バスでは、並列信号ごとに 1 つの縦方向冗長検査ビットがあります。
パリティは、少なくとも一部の紙テープ (パンチ テープ) データ入力システム (磁気テープ システムに先行) でも使用されていました。英国の会社 ICL (旧 ICT) が販売していたシステムでは、1 インチ幅 (25 mm) の紙テープに 8 つの穴が開いており、8 番目はパリティ用でした。7 つの位置はデータ (たとえば 7 ビット ASCII) に使用されました。8 番目の位置には、パンチされたデータ穴の数に応じて穴が開けられていました。
参照
参考文献
外部リンク
- パリティビットを生成するさまざまな方法、その他のビット操作
