본문 바로가기

Library/Data Communication

패리티 검사(Parity Check)

단순 패리티 검사는, 패리티 비트(parity bit)라 불리는 중복 비트를 각 데이터 단위에 덧붙여서, 패리티 비트를 포함한 데이터 단위 내의 1의 전체 개수가 짝수, 또는 홀수가 되도록 한다.

패리티 검사는 모든 단일 비트 오류를 알아낼 수 있다.또한 변경된 비트의 전체 개수가 홀수일 때 폭주 오류도 알아낼 수 있다. 패리티 비트를 포함하여 전체 1의 개수가 6 : 1000111011인 짝수 패리티 데이터 단위를 생각해보자. 임의의 세 비트의 값이 변경되면, 결과적으로 패리티는 홀수가 될 것이며, 오류를 알아낼 수 있다.

패리티 검사는, 동일한 패리티가 변경되었을 경우에는 오류를 탐지하지 못한다. 즉, 홀수 패리티의 경우, 1의 개수가 홀수라고 했을 때, 짝수 패리티라면 1을 추가하여 1의 개수를 짝수로 만든다. 만약, 데이터를 전송하는 과정에서 이 데이터 단위의 비트 중 2개의 1이 0으로 바뀌는 것처럼, 짝수 개의 비트가 변경되는 경우, 패리티 검사로는 오류를 알아낼 수 없다.

더 나은 방법으로는, 2차원 패리티 검사가 있다. 이 방법은, 비트의 블록이 테이블로 구성된다. 각 열에 대해 패리티 비트를 계산하고, 전체를 테이블로 구성한다. 예를 들어, 네 개의 열과 8개의 행으로 된 네 개의 데이터를 생각해보자.

1100111    1011101    0111001    0101001
(새로 만들어지는 행) → 1100111 1011101 0111001 0101001 + (각 비트열의 첫 번째 열에 대한 패리티, 두 번째 열에 대한 패리티..)

이제 전체 블럭에 대한 패리티 비트인 8비트의 새로운 행을 만든다. 다섯 번째 행의 첫 번째 패리티 비티는 모든 행의 첫 번째 비트를 기준으로 계산된 것이다. 두 번째 패리티 비트는 모든 행의 두 번째 비트를 기준으로 계산된 것이다. 다른 행도 마찬가지이다. 원래 데이터에 8개의 패리티 비트를 더해서 그것을 수신자에게 보낸다.

2차원 패리티 검사를 사용하면 폭주 오류를 상당 부분 알아낼 수 있다. n 비트의 중복 비트는 n 비트의 폭주 오류를 쉽게 검출 할 수 있다. n 비트 이상의 폭주 오류 또한 매우 높은 확률로 검출된다. 하지만, 그래도 검출하지 못하는 오류 패턴은 있다. 하나의 데이터 단위 내에서 두 비트가 손상되고, 다른 데이터 단위에서 정확히 같은 위치의 두 비트가 손상된 경우, 이 오류 패턴은 알아낼 수 없다.