오류 정정 코드 (Error Correcting Code)
오류 정정 코드(ECC)는 데이터 표현에 중복 정보를 추가하여 데이터가 저장 또는 전송 중에 변경될 경우 일부 손상을 수정할 수 있도록 하는 데이터 코딩입니다. 수신 측은 덧붙은 중복 정보를 이용해 오류가 있는지 감지하고, 일정 범위 안의 오류는 재전송 없이 스스로 고칩니다.
작동 원리
- 부호화: k비트 메시지를 정해진 규칙에 따라 n비트 부호어(codeword)로 바꿉니다(n > k). 추가된 n − k비트가 중복(패리티) 정보입니다.
- 전송·저장: 잡음이나 매체 결함으로 일부 비트가 바뀔 수 있습니다.
- 복호화: 받은 비트열과 가장 가까운 유효 부호어를 찾아 원래 메시지를 복원합니다.
부호 거리와 정정 능력
두 부호어가 서로 다른 비트 수를 해밍 거리라고 하고, 코드 안에서 가장 가까운 두 부호어 사이의 거리를 최소 거리 d라고 합니다. 최소 거리가 d인 코드는 최대 d − 1개의 오류를 감지하고, 최대 t = ⌊(d − 1)/2⌋개의 오류를 정정할 수 있습니다. 정정 능력을 넘는 오류는 고칠 수 없고, 다른 부호어로 잘못 복원될 수도 있습니다. 중복을 늘리면 정정 능력은 커지지만 저장·전송 오버헤드와 계산량도 늘어납니다.
대표적인 코드
- 해밍 코드: 해밍 (7,4) 코드는 4비트 데이터에 3비트 패리티를 붙여 최소 거리 3을 얻고, 1비트 오류를 정정합니다. 여기에 패리티 1비트를 더한 SECDED 방식은 1비트 정정·2비트 감지를 제공하며 ECC 메모리에 널리 쓰입니다.
- 리드–솔로몬 코드: 비트가 아니라 심볼(바이트) 단위로 동작해 연속된 오류(버스트 오류)에 강합니다. CD·DVD, QR 코드, 디지털 방송, RAID 6 등에 쓰입니다.
- BCH 코드: 여러 비트 오류를 정정하도록 설계할 수 있는 순회 코드로, 플래시 메모리 등에 쓰입니다.
- LDPC·터보 코드: 이론적 한계(섀넌 한계)에 가까운 성능을 내며 5G, Wi-Fi, 위성 방송(DVB-S2) 등에 쓰입니다.
응용 분야
- 통신: 모바일 네트워크, 위성 통신, 심우주 탐사처럼 재전송이 어렵거나 지연이 큰 환경에서 필수적입니다.
- 저장 장치: 하드 드라이브와 SSD는 매체 결함과 시간에 따른 열화를 보정하기 위해 ECC를 씁니다.
- 컴퓨터 메모리: 우주선(宇宙線)이나 전기적 잡음 때문에 메모리 비트가 저절로 바뀌는 소프트 오류를 ECC RAM이 바로잡습니다.
- 블록체인 주소: 비트코인의 Bech32 주소는 BCH 코드 기반 체크섬을 써서 몇 글자 이내의 입력 오류를 확실히 감지합니다. 지갑은 이런 오류를 「고쳐서」 송금하지 않고 거부하도록 권장됩니다.
ECC는 하드웨어 결함과 잡음에 대비하는 기술이며, 사용자가 실수로 지우거나 고친 데이터는 복구하지 못하므로 별도의 백업이 필요합니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.