패리티 비트 (Parity Bit)
패리티 비트는 정보의 전달 과정에서 오류가 생겼는지를 검사하기 위해 추가되는 비트를 말합니다.
하나의 문자 또는 수는 8비트로 표현되는데 ASCII Code(7비트)와 Parity Bit(1비트)로 구성되어 있습니다.
패리티 비트를 포함한 데이터에서 1의 개수가 짝수인지 홀수인지에 따라 짝수 패리티 또는 홀수 패리티로 나눌 수 있습니다.
- 홀수 패리티: 1의 개수가 홀수개가 되도록 패리티 비트를 설정한다.
- 짝수 패리티: 1의 개수가 짝수개가 되도록 패리티 비트를 설정한다.
이렇게 패리티 비트를 정하여 데이터를 보내면, 데이터를 받는 쪽에서는 수신된 데이터의 전체 비트를 계산하여 패리티 비트를 다시 계산하는 것으로 데이터에 오류가 발생했는지를 확인할 수 있습니다.
그러나, 패리티 비트로는 오류가 발생했다는 사실만 확인할 수 있을 뿐 어느 비트에서 오류가 발생했는지 알 수 없습니다. 그리고 하나가 아닌 2개의 비트에서 오류가 발생하면 오류 발생을 검출해내지 못합니다.
해밍 코드 (Hamming Code)
해밍 코드는 데이터 전송 시 1 bit의 에러를 정정할 수 있는 오류정정부호(ECC)의 일종입니다.
패리티 비트를 데이터의 비트 수에 따라 필요한 만큼 사용하여 데이터에 추가하고, 패리티 비트를 조합하여 에러 검출 및 교정을 수행합니다.
패리티 비트의 위치는 2의 n승 번째 자리인 1, 2, 4번째이고 나머지 비트에는 ASCII Code가 들어갑니다.
데이터를 전송할 때에는 그 10진수에 해당하는 값들의 합이 홀수 패리티면 홀수가 되도록, 짝수 패리티면 짝수가 되도록 패리티 비트를 채웁니다.
데이터를 수신할 때에는 각각의 패리티 코드 값을 확인하여 홀수 패리티이면 1의 개수가 홀수개, 짝수 패리티이면 짝수개인지 확인합니다. 개수가 맞으면 0, 틀리면 1을 기록합니다.
기록한 수들을 역순으로 나열한 후 10진수로 바꾸면 어느 위치에서 오류가 났는지 검출할 수 있고 해당 위치의 값을 바꾸면 올바른 데이터를 얻을 수 있습니다.
패리티 비트와 해밍 코드의 한계점
오류가 홀수개일 때는 잘 검출되지만, 짝수개일 때는 오류를 검출할 수 없습니다.
'CS 지식 > 컴퓨터구조' 카테고리의 다른 글
[CS] ARM과 MIPS (0) | 2023.08.12 |
---|---|
[CS] 고정 소수점과 부동 소수점 (0) | 2023.08.11 |
[CS] 캐시 메모리 (0) | 2023.08.11 |
[CS] 컴퓨터의 구성 (0) | 2023.08.09 |