---
title: "추가 NAND 읽기가 ECC에 자신감 정보를 주는 방식"
author: "브레이브브라우저쓰자"
published_at: "2026-10-11T05:15:03.770Z"
updated_at: "2026-10-06T00:01:19.389Z"
tags: ["nand soft decoding"]
canonical_url: "https://ariser.io/@writer_a9817d5a8de0/%EC%B6%94%EA%B0%80-nand-%EC%9D%BD%EA%B8%B0%EA%B0%80-ecc%EC%97%90-%EC%9E%90%EC%8B%A0%EA%B0%90-%EC%A0%95%EB%B3%B4%EB%A5%BC-%EC%A3%BC%EB%8A%94-%EB%B0%A9%EC%8B%9D"
ai_assisted: true
---

# 추가 NAND 읽기가 ECC에 자신감 정보를 주는 방식

이 글은 AI가 활용됐습니다.

[원문](https://ariser.io/@writer_a9817d5a8de0/%EC%B6%94%EA%B0%80-nand-%EC%9D%BD%EA%B8%B0%EA%B0%80-ecc%EC%97%90-%EC%9E%90%EC%8B%A0%EA%B0%90-%EC%A0%95%EB%B3%B4%EB%A5%BC-%EC%A3%BC%EB%8A%94-%EB%B0%A9%EC%8B%9D)

NAND의 두 셀이 모두 0으로 읽혔다. 하나는 0일 가능성이 매우 높고 다른 하나는 경계 바로 옆일 수 있다. hard bit만 decoder에 주면 이 차이는 사라진다. NAND Soft Decoding은 여러 reference로 같은 셀을 관측해 “어느 bit인가”에 더해 “얼마나 확신하는가”를 전달한다.

읽기는 threshold 전압이 reference보다 높은지 낮은지 비교한다. 기준이 하나라면 전압 축을 두 영역으로 나눈다. 기준을 여러 개 두면 같은 hard bit 쪽에도 몇 개의 구간을 만들 수 있다. decoder는 그 구간별 오류 가능성을 사용해 codeword의 모순을 풀어 간다. 더 많은 bit를 저장하는 것이 아니라 기존 정보를 더 정밀하게 관측하는 방식이다.

[Errors in Flash-Memory-Based Solid-State Drives 5.2.2절과 그림 39](https://arxiv.org/html/1711.11427)은 추가 read reference가 threshold 구간을 세분화하고 각 bin의 LLR을 decoder에 주는 예를 설명한다. LLR은 두 bit 가설의 가능성 비를 log로 나타낸 값이다. 전압 경계에서 멀다는 이유만으로 제품의 실제 LLR을 임의로 결정하면 안 되고 해당 noise 분포와 state를 반영해야 한다.

## 같은 0을 서로 다른 신뢰도로 표현하기

가상으로 reference 1.5V 하나를 쓰면 threshold 1.0V와 1.45V는 둘 다 낮은 쪽이다. 1.3V와 1.7V를 추가하면 1.0V는 1.3V 미만 bin, 1.45V는 1.3~1.5V bin에 들어간다. 두 cell을 동일하게 처리할 필요가 없어진다.

어떤 가상 분포에서 첫 bin의 조건부 확률이 P(0|bin)=0.9, P(1|bin)=0.1, 둘째 bin이 0.55와 0.45라고 하자. 0 쪽 confidence를 log 비로 정의하면 각각 ln 9≈2.20과 ln(0.55/0.45)≈0.20이다. hard 판정은 모두 0이지만 첫 bin이 훨씬 강한 정보를 준다. 실제 제품에서 이 숫자를 사용한다는 뜻은 아니다.

| 가상 bin | hard 판정 | 가상 LLR |
|---|---|---:|
| 1.3V 미만 | 0 | 약 2.20 |
| 1.3~1.5V | 0 | 약 0.20 |

여기서는 log 비의 분자를 0으로 정했다. 다른 decoder의 sign 관례가 반대일 수 있으므로 interface에서 부호와 bin 순서를 맞춰야 한다. 좋은 관측값도 반대 부호로 전달하면 강한 오답이 된다.

## 추가 읽기가 항상 같은 양의 정보를 주지는 않는다

분포 겹침이 많은 경계에 reference를 추가하면 불확실한 cell을 구별하는 데 도움이 될 수 있다. 거의 모든 cell이 없는 구간에 기준을 넣으면 추가 명령을 소비해도 새 정보가 작다. 그래서 soft read의 reference는 hard read에서 오류 수를 최소화하는 단일 경계와 같은 목표만으로 정할 수 없다.

bin별 분포도 wear·retention·온도에 따라 달라질 수 있다. 과거 조건에서 경계 근처를 높은 confidence로 평가한 table을 계속 쓰면 decoder가 잘못된 정보를 너무 믿을 수 있다. 관측을 많이 하는 것과 관측을 올바른 likelihood로 바꾸는 것은 두 단계다.

## 정상 page의 빠른 경로를 보존하기

모든 page에 여러 번의 array read를 적용하면 latency와 에너지가 늘어난다. hard decode가 잘 되는 page에는 추가 관측이 필요하지 않을 수 있다. 첫 시도가 실패하면 단계적으로 soft level을 높이는 정책은 정상 경로의 비용과 어려운 page의 복구 능력을 나눈다.

추가 read에서는 array와 bus 자원이 소모되고 decoder도 더 많은 정보를 처리한다. 측정은 soft decode의 성공률 외에 각 level의 read 횟수, decode 반복, latency tail을 포함해야 한다. 마지막 level까지가도 분포의 정보가 충분하지 않거나 codeword 손상이 크면 실패할 수 있다. soft라는 이름이 무제한 correction을 뜻하지 않는다.

NAND Soft Decoding은 같은 bit 판정 뒤에 숨은 확신의 차이를 복원하는 방법이다. threshold 구간을 나누고 그 구간의 likelihood를 정확히 전달해야 추가 읽기가 correction 능력으로 이어진다. 더 많이 읽는 횟수보다 새 관측이 무슨 정보를 주고 그 정보가 decoder에서 어떻게 쓰이는지를 확인하는 것이 핵심이다.

