「同等」「等価」という意味の名詞。
コンピュータ用語としては、送受信したデジタルデータが、送り元と受けた側とで間違いなく同一内容かどうかを確認するしくみの一種として、「パリティ・チェック(parity
check)」という技法が普及している。また、実際にこの用途に使われる1ビットのメモリ領域のことを「パリティ・ビット(parity
bit)」と呼ぶ。
「ビットの奇偶」で検査するパリティ・チェック
パリティ・チェックでは、ひとまとまりのデータ(一般に7~8ビット)に対して1つのパリティ・ビット(冗長ビット)を用意し、データ本体を一定のルールで演算した結果(0か1か)を記録する。たとえば下記は、8ビットのデータに対して0と1の個数を数え、偶数なら0、奇数なら1をパリティ・ビットに入れた例である。
10進数 | データ | パリティ |
0 | 00000000 | 0 |
1 | 00000001 | 1 |
2 | 00000010 | 1 |
3 | 00000011 | 0 |
4 | 00000100 | 1 |
5 | 00000101 | 0 |
6 | 00000110 | 0 |
7 | 00000111 | 1 |
8 | 00001000 | 1 |
9 | 00001001 | 0 |
このような演算をデータ送信(保存)時と受信(読み出し)時に双方が行うことによって、データの受け手側は、独自に演算した結果のパリティは0のはずなのにオリジナルは1だったか、またはその逆の場合に、そのデータが誤りであると判定し、しかるべき処理(通信等なら再送要求。メモリエラーならシステムの緊急停止など)を行うことになる。
ただし、上の例でいえば、もし5であるべきデータが0、3、6、9……などに化けて受け渡されても、パリティ・ビットは同じ"0"だから検出できない理屈になる。
さらに順番によーくデータ欄の2進数を見比べてゆくとわかると思うが、この方式には「1データ内のエラー発生個所が奇数の場合にしか発見できない」という限界があるのだ。
したがって、エラーが1度だけ発生した場合に発見できる確率は、おおまかにみて2分の1にすぎない。
しかし、エラーが2回起きれば、両方とも発見できない確率は2分の1の自乗=4分の1となり、逆に「どちらか1回のエラーが検出できる確率」が4分の3に上がる。3回エラーが起きれば、この確率は8分の7になる……と、そんなふうに、エラーの発生回数が多ければ多いほど、遅かれ早かれ発見できる確率は100%に近づいてゆく。
そのように、実用上でのエラー検出確率は十分高く、かつ、処理も簡単なため、通信やメモリー(RAM)のエラー検出技法など、パリティ・チェック方式はパソコン関連分野では非常によく使われている。
エラーの訂正もやってくれるECC
パリティ・チェックで検出できるのは「エラーが発生したかどうか」だけだし、上にも述べたとおり、ごく稀には「発見できない」ということも起こり得る。
そこで、エラーの発生をより確実に検出し、かつ、エラーが起きているそのデータ自体とあわせて演算することでデータを復元できる符号"ECC(誤り訂正符合、Error-Correcting
Code)"も考案されており、サーバなど高度なデータ信頼性を要求される用途では、この技術が多方面で採用されている。
現在パソコン用にも普及しつつあるECCメモリ(Error Check and Correct memory)もその活用例のひとつで、パリティ・ビット方式より冗長なエラー検出・訂正用符号を使うしくみになっている。
当然ながら、ECCなし(パリティ方式、あるいはそれもない)メモリより高価にはなるが、(ECCメモリの機能を利用可能なマザーボードを採用しているPCでは)安定度は向上する。
2001/10/14 (C)2001 柳澤健二