NAND 에러 관리
NAND 플래시 에러 관리 상세 분석
ECC · Bad Block Management · Read Disturb · Data Retention · Read Retry · 에러 유형별 대응 전략
NAND 플래시는 전하를 절연막에 가두는 물리적 특성 때문에 읽기/쓰기 과정에서 다양한 에러가 발생합니다. 본 문서는 NAND에서 발생하는 주요 에러 유형, ECC(에러 정정 코드) 메커니즘, Bad Block Management, Read Disturb/Data Retention 대응 기술을 분석합니다.
NAND 셀은 이상적이지 않습니다. 프로그램/소거가 반복될수록 절연막이 열화되고, 읽기 작업도 인접 셀에 미세한 영향을 줍니다. 시간이 지나면 전하가 서서히 누설됩니다. 따라서 SSD 컨트롤러는 이러한 물리적 한계를 소프트웨어적으로 보정하여 신뢰성을 유지해야 합니다. 이것이 바로 NAND 에러 관리의 핵심입니다.
1. 핵심 개념
1.1 NAND 에러 유형
| 에러 유형 | 원인 | 발생 시점 | 영향 |
|---|---|---|---|
| 프로그램 에러 | ISPP 검증 실패, 셀 간 간섭 | 프로그램 중 | 목표 Vth 도달 실패 |
| 읽기 에러 | Vth 분포 겹침, 셀 열화 | 읽기 중 | 비트 오류 발생 |
| Read Disturb | 인접 셀 읽기 전압의 부수적 전하 주입 | 반복 읽기 후 | 비선택 셀 값 변질 |
| Program Disturb | 프로그램 중 인접 셀에 의도치 않은 전하 주입 | 프로그램 중 | 이웃 셀 교란 |
| Data Retention | 시간 경과로 갇힌 전하 누설 | 장기 보관 시 | 데이터 변질 |
그림 1. NAND 에러 유형과 발생 메커니즘
1.2 셀당 비트 수와 에러율 (페이지당 ECC 기준)
| 구분 | 비트/셀 | Vth 레벨 | 오류율 | ECC 요구사항 (페이지당) |
|---|---|---|---|---|
| SLC | 1 | 2 | 매우 낮음 | BCH 4bit/512B |
| MLC | 2 | 4 | 낮음 | BCH 24~40bit/512B |
| TLC | 3 | 8 | 높음 | LDPC 60~120bit/1KB |
| QLC | 4 | 16 | 매우 높음 | LDPC 100~240bit/1KB |
셀당 비트 수가 많아질수록 전압 레벨 사이 간격이 좁아져 오류율이 급격히 높아집니다. 이를 극복하기 위해 LDPC 코드와 정교한 읽기 보정이 필수가 됩니다.
1.3 RBER과 UBER
NAND 에러 관리는 단순히 "에러가 났다"는 수준이 아니라, 어느 단계에서 얼마나 많은 오류가 발생하는지를 구분해 운영합니다. 컨트롤러는 먼저 원시 비트 오류율(RBER, Raw Bit Error Rate)을 관찰하고, ECC와 retry를 거친 뒤에도 남는 최종 복구 실패 확률을 UBER(Uncorrectable Bit Error Rate) 관점에서 관리합니다.
| 지표 | 의미 | 관찰 시점 | 운영 의미 |
|---|---|---|---|
| RBER | ECC 적용 전 원시 비트 오류율 | NAND 페이지 읽기 직후 | 셀 열화, retention, disturb 정도를 조기에 파악 |
| Post-ECC BER | ECC 1차 복구 후 잔여 오류율 | BCH/LDPC 디코드 이후 | soft decode나 read retry 필요 여부 판단 |
| UBER | 최종적으로 복구하지 못한 비트 오류 확률 | 컨트롤러 복구 체인 종료 후 | SSD 신뢰성 목표와 데이터 보호 수준 판단 |
같은 TLC/QLC라도 RBER이 빠르게 올라가는 블록은 조기 refresh, read reclaim, wear leveling 대상으로 우선순위가 높아집니다. 따라서 ECC 강도만 높이는 것보다, 오류 증가 추세를 먼저 감지해 데이터 위치를 선제적으로 바꾸는 운영이 더 중요합니다.
2. ECC (Error Correction Code)
2.1 ECC의 역할
ECC는 NAND에서 읽은 데이터의 비트 오류를 감지하고 교정하는 메커니즘입니다. SSD 컨트롤러는 페이지 단위로 데이터를 읽을 때마다 ECC를 디코딩하여 오류를 수정합니다.
그림 2. ECC 인코딩/디코딩 흐름과 오류 교정 과정
2.2 BCH vs LDPC
| 항목 | BCH | LDPC |
|---|---|---|
| 복잡도 | 낮음 | 높음 |
| 오류 교정 능력 | 4~40 bit | 50~240 bit |
| 디코딩 속도 | 빠름 | 느림 (소프트 디코딩) |
| 적합 대상 | SLC, MLC | TLC, QLC |
| 소프트 디코딩 | 불가 | 가능 (SHINING 등) |
BCH는 단순하고 빠르지만, TLC/QLC의 높은 오류율을 감당하기에는 역부족입니다. LDPC는 반복 디코딩과 soft-decision 방식으로 훨씬 강력한 오류 정정이 가능하지만, 복잡도와 디코딩 지연이 증가합니다.
2.3 LDPC 소프트 디코딩
LDPC의 핵심 장점은 soft-decision 디코딩입니다. 각 비트의 신뢰도(likelihood)를 고려하여 반복적으로 디코딩하므로, 하드 디코딩보다 1~2dB 정도의 코딩 이득을 얻을 수 있습니다.
- 하드 디코딩: 비트를 0 또는 1로 확정 후 디코딩
- 소프트 디코딩: 비트의 전압값에서 신뢰도를 계산하여 반복 디코딩
소프트 디코딩은 연산 비용이 크지만, TLC/QLC 시대에는 불가피한 선택입니다. 컨트롤러는 읽기 에러율이 높아지면 디코딩 반복 횟수를 늘려 성능과 신뢰성 사이의 균형을 맞춥니다.
실제 SSD는 보통 "빠른 하드 디코딩 -> 실패 시 soft decode -> 그래도 실패하면 read retry" 순서로 복구 비용을 단계적으로 높입니다. 이렇게 해야 정상 페이지에는 지연 시간을 최소화하면서, 열화된 블록에만 높은 연산 비용을 집중할 수 있습니다.
3. Bad Block Management (BBM)
3.1 불량 블록의 정의
불량 블록은 제조 공정 결함이나 사용 중 열화로 인해 신뢰할 수 없는 블록입니다. NAND는 처음부터 불량 블록이 존재할 수 있으므로(Bad Block Initial), 컨트롤러는 이를 관리해야 합니다.
3.2 불량 블록 관리 방식
| 방식 | 설명 | 장점 | 한계 |
|---|---|---|---|
| 블록 테이블 | 불량 블록을 별도 테이블로 관리 | 단순함 | 테이블 크기 제한 |
| PBT (Physical Block Table) | 물리 블록별 상태 기록 | 정확함 | 메타데이터 오버헤드 |
| 메타 영역 활용 | Spare 영역에 상태 기록 | 추가 메모리 불필요 | 영역 제한 |
그림 3. 불량 블록 관리 흐름과 대체 블록 할당
3.3 불량 블록 처리 절차
- 불량 블록 감지: 읽기/쓰기 에러, ECC 교정 실패, 프로그램/소거 시간 초과
- 블록 폐기: 불량 블록을 매핑 테이블에서 제외
- 대체 블록 할당: 오버프로비저닝 영역에서 대체 블록 제공
- 데이터 복구: 가능하면 유효 페이지를 다른 블록으로 마이그레이션
4. Read Disturb 관리
4.1 Read Disturb 메커니즘
Read Disturb은 읽기 작업 시 인접 셀에 미세한 전하가 누적되는 현상입니다. 같은 블록의 다른 페이지를 반복 읽으면, 비선택 셀의 Vth가 점차 높아져 '0'에서 '1'로 변질될 수 있습니다.
그림 4. Read Disturb 발생 메커니즘과 영향 범위
4.2 Read Disturb 대응
| 대응 기법 | 설명 | 적용 시점 |
|---|---|---|
| Read Retry | 기준 전압 미세 조정 후 재읽기 | 읽기 에러 발생 시 |
| Read Reclaim | 읽기 에러 블록의 데이터를 새 블록으로 이동 | 반복 Read Retry 실패 시 |
| 페이지 프리페치 | 자주 읽는 페이지를 백그라운드에서 마이그레이션 | 주기적 |
| Read Disturb 모니터링 | 블록별 읽기 횟수 추적 | 상시 |
Read Disturb은 SLC보다 TLC/QLC에서 더 빈번하게 발생합니다. 컨트롤러는 각 블록의 읽기 횟수를 추적하고, 임계값을 초과하면 자동으로 데이터를 마이그레이션합니다.
5. Data Retention 관리
5.1 Data Retention 개념
Data Retention은 프로그램된 데이터가 시간이 지나도 올바르게 유지되는 능력입니다. NAND 셀에 저장된 전하는 시간이 지나면 절연막을 통해 서서히 누설되어 Vth가 변합니다.
그림 5. Data Retention 특성과 온도/수명에 따른 열화
5.2 Data Retention 영향 요인
| 요인 | 영향 | 설명 |
|---|---|---|
| P/E 사이클 | 높음 | 절연막 손상이 심할수록 전하 누설이 빨라짐 |
| 온도 | 높음 | 고온에서 전하 누설이 가속됨 |
| 시간 | 중간 | 장기 보관 시 Vth 변화 누적 |
| 셀 구조 | 중간 | Charge Trap이 Floating Gate보다 우수 |
5.3 데이터 보존 기간
| 구분 | P/E 사이클 미사용 | P/E 사이클 사용 후 |
|---|---|---|
| SLC | 100년+ | 10년+ |
| MLC | 10년+ | 3~10년 |
| TLC | 5~10년 | 1~3년 |
| QLC | 3~5년 | 수개월~1년 |
QLC는 P/E 사이클이 누적되면 데이터 보존 기간이 크게 줄어들 수 있습니다. 이를 보완하기 위해 컨트롤러는 주기적인 data refresh를 수행합니다.
Retention 열화는 단순 보관 시간만의 문제가 아니라 온도와 사용 이력의 함수입니다. 엔터프라이즈 SSD는 idle 시간에 scrub 또는 refresh를 수행해 오래된 데이터를 다시 읽고, ECC 여유가 줄어든 페이지를 새 블록으로 재기록해 UBER 상승을 억제합니다.
6. Read Retry와 Read Reclaim
6.1 Read Retry
Read Retry은 읽기 에러가 발생했을 때 기준 전압을 미세 조정하여 다시 읽는 기술입니다. NAND 셀의 Vth 분포가 시간/온도/사용에 따라 변동하므로, 단일 기준 전압으로는 정확한 판별이 어려울 수 있습니다.
그림 6. Read Retry 동작 흐름과 전압 조정 전략
6.2 Read Reclaim
Read Retry로도 해결되지 않으면, 해당 블록의 유효 페이지를 다른 블록으로 마이그레이션하는 Read Reclaim이 수행됩니다. 이 과정은 WAF(Write Amplification Factor)를 증가시키지만, 데이터 안전성을 위해 필수적입니다.
| 단계 | 동작 | 결과 |
|---|---|---|
| 1단계 | 읽기 에러 감지 | ECC 디코딩 실패 |
| 2단계 | Read Retry 수행 | 기준 전압 조정 후 재읽기 |
| 3단계 | Read Reclaim | 유효 페이지를 새 블록으로 마이그레이션 |
| 4단계 | 블록 폐기 | 불량 블록으로 등록 |
7. 동작 원리: 컨트롤러의 에러 관리 파이프라인
SSD 컨트롤러의 에러 관리 파이프라인은 한 번의 읽기 실패를 단일 이벤트로 보지 않고, 블록의 열화 상태를 반영하는 신호로 취급합니다. 읽기 시점에는 먼저 기본 read reference voltage와 fast path ECC를 적용하고, 실패하면 soft decode와 read retry로 넘어갑니다. 이 과정에서 수집한 오류 카운터는 블록별 health 정보로 누적됩니다.
쓰기 경로에서도 에러 관리는 동시에 진행됩니다. 프로그램 검증에서 목표 Vth에 도달하지 못하면 재프로그램 또는 블록 폐기가 결정되고, spare/OOB 메타데이터에는 ECC parity, bad block marker, LBA 매핑 정보가 함께 기록됩니다. 결국 읽기 경로의 복구 정책과 쓰기 경로의 배치 정책이 결합되어 NAND 신뢰성이 유지됩니다.
| 단계 | 읽기/쓰기 경로 동작 | 실패 시 다음 단계 |
|---|---|---|
| 1 | 페이지 읽기 또는 프로그램 후 verify | ECC decode 또는 재프로그램 |
| 2 | BCH/LDPC fast path 적용 | soft decode 또는 read retry |
| 3 | read retry, 추가 sensing, soft decode 반복 | read reclaim 또는 data refresh |
| 4 | 블록 health 갱신, hot/cold 분류 | wear leveling, 블록 교체 |
| 5 | ECC 한계 초과 블록 격리 | bad block 등록, RAID-like 복구 |
이 파이프라인의 핵심은 모든 오류를 즉시 폐기로 처리하지 않는다는 점입니다. recoverable error는 retry와 migration으로 흡수하고, unrecoverable error로 넘어가기 전에 다른 블록으로 데이터를 옮겨 SSD의 서비스 수명을 최대화합니다.
8. ECC 메모리와 RAID
8.1 On-die ECC
최신 3D NAND는 다이 내부에 ECC를 적용합니다. 호스트 컨트롤러의 ECC와 별도로, NAND 다이 자체에서 1차 오류 정정을 수행하여 전체 시스템의 신뢰성을 높입니다.
8.2 RAID-like 보호
SSD 컨트롤러는 여러 NAND 다이에 걸쳐 RAID와 유사한 패리티 보호를 적용할 수 있습니다. 특정 다이가 완전히 고장나더라도 패리티 정보로 데이터를 복구할 수 있습니다.
| 보호 레벨 | 설명 | 보호 범위 |
|---|---|---|
| On-die ECC | NAND 다이 내부 ECC | 페이지 단위 비트 오류 |
| 컨트롤러 ECC | 호스트 컨트롤러 ECC | 페이지 단위 비트 오류 |
| RAID-like | 다이 간 패리티 | 다이 단위 장애 |
9. 장단점
장점
- ECC 기술의 발전으로 TLC/QLC 같은 고밀도 NAND도 신뢰성 있게 사용 가능
- Read Retry/Reclaim은 데이터 안전성을 자동으로 유지
- Bad Block Management는 제조 결함과 사용 열화를 투명하게 처리
- RAID-like 보호는 다이 장애로부터 데이터를 보호
한계
- 강력한 ECC는 디코딩 시간과 전력 소모를 증가시킴
- Read Reclaim은 추가 쓰기를 유발하여 WAF 증가
- Data Retention은 장기 보관 시 데이터 안전성에 한계
- QLC는 P/E 사이클 후 데이터 보존 기간이 크게 단축
10. 관련 기술
-
NAND Flash Internals: 플로팅 게이트/charge trap, Vth, Program/Erase 물리
-
FTL WearLeveling GarbageCollection: L2P 매핑, GC, Wear Leveling, OP
-
QLC/TLC/MLC 비교: 셀당 비트 수에 따른 특성 비교
-
ECC Error Correction: BCH, LDPC와 비트 오류 정정 이론
-
SSD Internal Parallelism: 채널/다이/플레인 병렬성
-
NAND NVMe SSD Analysis: SSD 컨트롤러, 펌웨어, OOB 메타데이터와 복구 경로
참고 문헌
-
Samsung Electronics. "NAND Flash Memory: Technology and Applications." 2023.
-
Western Digital. "3D NAND Technology: From 64-Layers to 200+." 2023.
-
Intel. "QLC NAND: The Future of Flash Storage." 2022.
-
JEDEC. "JESD230: NAND Flash Interface Standard." 2022.
-
Yu Cai et al. "Error Patterns in MLC NAND Flash Memory: Measurement, Characterization, and Analysis." DATE 2012.
-
Micron Technology. "3D NAND: Scaling Memory Density." 2023.
-
Jack Tsai. "Error Correction Codes for Flash Memories." 2021.
-
David J. C. MacKay and Radford M. Neal. "Near Shannon Limit Performance of Low Density Parity Check Codes." Electronics Letters, 1996.
11. 핵심 정리
NAND 에러 관리는 ECC, Bad Block Management, Read Disturb/Data Retention 대응 기술을 종합적으로 운영하는 체계입니다. BCH에서 LDPC로, 하드 디코딩에서 소프트 디코딩으로 진화하면서 TLC/QLC 같은 고밀도 NAND도 신뢰성 있게 사용할 수 있게 되었습니다. Read Retry, Read Reclaim, data refresh 같은 자동화 기술은 컨트롤러의 펌웨어 품질에 좌우되며, 장기적인 데이터 안전성은 ECC 강도, 데이터 보존 기간, 워크로드의 복합적인 균형에 달려 있습니다.