LDPC 오류 정정, 낸드가 리드 리트라이와 함께 쓰는 이유
합창단이 노래하는 중에 한 사람이 음을 틀리면, 지휘자는 그 사람의 목소리를 따로 듣지 않아도 알아챕니다. 나머지 파트와 겹쳐진 화음이 어딘가 어긋나기 때문이죠.
낸드 플래시에서 뒤집힌 비트를 찾아 고치는 LDPC 오류 정정도 같은 발상을 씁니다. 데이터에 규칙을 미리 입혀 두고, 읽은 값이 그 규칙과 어긋나는 곳을 단서로 틀린 비트를 찾아냅니다.
비유와 다른 점은 화음의 어울림이 느낌이 아니라 정확한 0과 1의 계산으로 정해진다는 것입니다. 그리고 규칙만으로 부족할 때를 대비해 다시 읽기, 곧 리드 리트라이가 함께 따라붙습니다.
낸드에서 비트가 틀리는 이유와 오류 정정의 필요
낸드 셀은 문턱 전압의 높낮이로 비트를 구분합니다. 쓰기와 지우기를 반복하면 절연막이 열화되고, 오래 두면 전하가 조금씩 빠지며, 이웃 셀의 읽기와 쓰기가 간섭을 주기도 해서 문턱 전압 분포가 서서히 퍼지고 이동합니다.
한 셀에 담는 비트 수가 늘수록 구간 사이의 간격이 좁아져서 이런 흔들림에 더 민감해집니다. 그래서 읽은 데이터에는 어느 정도의 오류가 섞여 있다고 보고, 컨트롤러가 이를 고치는 것을 전제로 설계합니다.
이전 세대 낸드에서는 BCH 같은 부호가 널리 쓰였다고 알려져 있습니다. 오류 비트가 늘어난 최근 세대에서는 같은 여분 비트로 더 많은 오류를 고칠 수 있는 LDPC 오류 정정이 많이 쓰이는 것으로 설명됩니다.
LDPC 오류 정정의 바탕, 패리티 검사 행렬이 만드는 규칙
LDPC는 패리티 검사 행렬(Parity-Check Matrix)로 정의되는 부호입니다. 올바른 데이터라면 각 검사식에 묶인 비트들의 합이 짝수여야 한다는 규칙을 여러 개 정해 두고, 이 행렬의 거의 모든 칸이 0이라서 이름에 저밀도(Low-Density)가 붙습니다.
가상의 작은 예시, 검사식 세 개비트 b1~b6에 대해 검사식을 이렇게 정합니다. c1: b1+b2+b3, c2: b3+b4+b5, c3: b1+b5+b6이며, 각 합이 짝수여야 정상입니다.
올바른 데이터 110110을 저장했다고 하겠습니다. 읽을 때 b3이 뒤집혀 111110이 되면 c1(1+1+1=3)과 c2(1+1+1=3)는 홀수가 되어 어긋나고, c3(1+1+0=2)은 짝수라 통과합니다.
c1과 c2에 동시에 속하면서 c3에는 속하지 않는 비트는 b3뿐이므로 b3을 뒤집어 고칠 수 있습니다. 실제 LDPC는 이보다 훨씬 긴 부호와 큰 행렬을 쓰며, 이 예시는 원리를 보이려는 가정입니다.
검사식이 하나일 때는 어긋났다는 사실만 알 뿐 어느 비트인지는 모릅니다. 검사식이 여러 개 서로 겹치면 어긋난 검사식의 조합이 곧 범인의 주소가 되고, 이 겹침이 LDPC의 핵심입니다.
반복 복호와 하드 결정, 소프트 결정
부호가 길어지면 한 번에 범인을 찾기 어렵습니다. 그래서 반복 복호(Iterative Decoding)를 씁니다. 비트와 검사식이 서로 “내가 보기에 이 비트는 이쪽일 가능성이 큽니다”라는 정보를 주고받으며, 합의에 이를 때까지 여러 번 갱신합니다.
이때 입력 정보의 질이 성능을 좌우합니다. 하드 결정(Hard Decision)은 셀을 한 번 읽어 0 아니면 1로만 알려 주는 방식이고, 소프트 결정(Soft Decision)은 이 값이 얼마나 믿을 만한지까지 함께 알려 주는 방식입니다.
같은 셀이라도 달라지는 입력문턱 전압이 구분 기준선에서 멀면 값을 확신할 수 있지만, 기준선 바로 곁이라면 0일지 1일지 애매합니다.
소프트 결정은 기준선을 조금씩 옮겨 가며 여러 번 읽어서 이 애매함의 정도를 신뢰도로 만들어 줍니다. 신뢰도가 낮은 비트부터 의심할 수 있어 복호가 훨씬 수월해지지만, 읽기 횟수가 늘어 시간이 더 듭니다.
하드 결정은 빠르고 소프트 결정은 강력하지만 느립니다. 이 둘 사이의 균형이 뒤에 나오는 단계적 재시도 구조의 바탕이 됩니다.
리드 리트라이가 읽는 전압을 옮기는 이유
낸드는 읽을 때 구분 기준 전압을 정해서 셀을 판정합니다. 그런데 마모나 방치로 문턱 전압 분포가 통째로 옆으로 밀리면, 처음 정한 기준선이 두 분포의 가장 낮은 지점에서 벗어나 오류가 늘어납니다.
리드 리트라이(Read Retry)는 오류 정정이 실패했을 때 기준 전압을 조금씩 바꿔서 다시 읽는 절차입니다. 분포가 밀린 방향으로 기준선을 따라 옮기면 읽은 데이터의 오류 비트 수가 줄어서 복호가 성공할 가능성이 높아집니다.
이때 사용하는 기준 전압의 이동 값은 보통 컨트롤러나 낸드에 미리 준비된 표에서 순서대로 가져옵니다. 표의 구성과 단계 수는 제품마다 다릅니다.
두 기술이 단계적으로 함께 쓰이는 방식
LDPC 오류 정정은 쓰기 때 붙인 규칙으로 읽은 값의 오류를 고치고, 리드 리트라이는 읽는 입력의 품질 자체를 끌어올립니다. 한쪽이 가리지 못하는 약점을 다른 쪽이 메워 주는 관계입니다.
읽기 실패 시 단계적 복구 흐름의 예
- 기본 기준 전압으로 한 번 읽고 하드 결정으로 복호를 시도합니다.
- 실패하면 기준 전압을 바꿔 다시 읽는 리드 리트라이를 진행합니다.
- 그래도 실패하면 여러 기준 전압으로 읽어 얻은 신뢰도로 소프트 결정 복호를 시도합니다.
- 끝내 실패하면 다이 간 보호 부호 같은 상위 복구 수단을 쓰거나 읽기 오류로 처리합니다.
대부분의 읽기는 첫 단계에서 끝나고, 뒤로 갈수록 시간이 더 걸립니다. 그래서 사용량이 늘수록 이 재시도 단계에 들어가는 읽기가 많아지고 읽기 지연이 커지는 현상이 나타납니다.
LDPC가 있으면 어떤 오류든 고칠 수 있다는 생각은 오해입니다. 오류 정정에는 고칠 수 있는 한계가 있고, 한계를 넘으면 복호가 실패하거나 드물게는 잘못된 값으로 수렴할 수도 있어서 여러 겹의 안전장치를 두는 것입니다.
복호 방식과 리드 리트라이 비교 표
| 구분 | 하드 결정 복호 | 소프트 결정 복호 | 리드 리트라이 |
|---|---|---|---|
| 입력 정보 | 0 또는 1 | 값과 함께 신뢰도 | 기준 전압을 바꾼 새 읽기 결과 |
| 읽기 횟수 | 한 번 | 여러 번 | 실패 때마다 추가 |
| 속도 | 빠름 | 상대적으로 느림 | 단계가 늘수록 느려짐 |
| 잘 맞는 상황 | 오류가 적은 일반 읽기 | 오류가 많은 마모·방치 후 읽기 | 분포가 한쪽으로 밀린 경우 |
| 한계 | 정정 능력이 낮은 편 | 지연과 전력 부담 | 밀림이 아닌 흩어짐에는 효과가 작음 |
| 흔한 오해 | 오류 정정만 강하면 재시도는 필요 없다는 생각은 맞지 않습니다. | ||
핵심 정리
LDPC 오류 정정은 여러 검사식이 겹치는 패리티 규칙으로 틀린 비트의 위치를 좁혀 가고, 반복 복호로 합의에 이르는 방식입니다. 입력이 하드 결정이냐 소프트 결정이냐에 따라 정정 능력과 속도가 맞바뀝니다.
리드 리트라이는 기준 전압을 옮겨 입력의 품질을 높여 주는 보완 수단으로, 둘은 단계적으로 짝을 이룹니다. 합창단에서 화음의 어긋남이 틀린 사람을 가리키듯, 규칙의 위반 패턴이 틀린 비트를 가리킨다는 점을 기억하면 됩니다.
면접 대비 질문
면접 대비 질문낸드에서 LDPC가 쓰이는 이유를 설명하고, 하드 결정과 소프트 결정, 리드 리트라이가 어떻게 단계적으로 연결되는지 말해 보세요.
[답변 포인트] 마모와 방치, 셀 간 간섭으로 문턱 전압 분포가 퍼지고 이동해 읽기 오류가 늘고, 셀당 비트 수가 많을수록 더 심해진다는 점으로 시작합니다. LDPC는 희소한 패리티 검사 행렬과 반복 복호로 오류를 고치며, 하드 결정은 빠르고 소프트 결정은 신뢰도를 얻기 위해 여러 번 읽어 더 강하지만 느리다고 설명합니다. 리드 리트라이는 기준 전압을 옮겨 분포 이동에 대응하는 단계로, 하드 결정, 리트라이, 소프트 결정, 상위 복구 순서로 연결된다는 흐름을 말합니다. 마지막으로 재시도 단계가 늘면 읽기 지연이 커지는 트레이드오프까지 덧붙이면 좋습니다.









