모든 이야기

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

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은 추가 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이 훨씬 강한 정보를 준다. 실제 제품에서 이 숫자를 사용한다는 뜻은 아니다.

가상 binhard 판정가상 LLR
1.3V 미만0약 2.20
1.3~1.5V0약 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에서 어떻게 쓰이는지를 확인하는 것이 핵심이다.