NAND ECC (Error Correction Code)(ナンドイーシーシー)
NAND Flash データの誤り訂正符号。BCH / LDPC ベース、TLC / QLC で更に強化、データ整合性とNAND 寿命を支える基盤技術。
概要
NAND ECC (Error Correction Code) はNAND Flash データの誤り訂正符号。NAND Flash は読出時に微小なビットエラー (Bit Error Rate・BER) が物理特性として必ず発生、特にTLC (3bit/cell)・QLC (4bit/cell) の多値化や3D NAND スタッキングでBER が増加。ECC はBCH (Bose-Chaudhuri-Hocquenghem) → LDPC (Low-Density Parity-Check) と進化、1KB データに数百byte の冗長符号を付加してエラー訂正、SSDの信頼性とNAND 寿命延長を支える基盤技術。
ECC アルゴリズム世代
| 世代 | アルゴリズム | 訂正能力 (1KB あたり) | 採用NAND |
|---|---|---|---|
| 1st | Hamming / Reed-Solomon | 1-2 bits | 2D SLC |
| 2nd | BCH 4-bit | 4 bits | 2D MLC初期 |
| 3rd | BCH 24-bit | 24 bits | 2D MLC / TLC |
| 4th | BCH 80-bit | 80 bits | 19nm TLC |
| 5th | LDPC | 100-200+ bits | 3D TLC |
| 6th | LDPC + Soft Decision | 200-500+ bits | 3D QLC / PLC |
LDPC (Low-Density Parity-Check)
1962年Gallager 発明・1996年MacKay 再発見されたECC手法:
- 疎な (sparse) パリティチェック行列
- Belief Propagation 復号
- BCH 比2-5倍の訂正能力
- Soft Decision (確率的判定) 対応
- 5G通信 (LDPC) と共通技術
BCH vs LDPC
| 項目 | BCH | LDPC |
|---|---|---|
| 計算量 | 中 | 高 |
| 訂正能力 | 中 | 高 (2-5×) |
| Soft Decision | 不可 | 可 |
| 復号レイテンシ | 短 | 中 |
| 主用途 | 旧2D NAND | 3D TLC/QLC |
Soft Decision Read
NAND コントローラが「強い1」「弱い1」「弱い0」「強い0」の確率情報を読出し、LDPC が確率を考慮して復号。Hard Decision (0/1 のみ) より2-3倍訂正能力強化、QLC で必須技術。
BER (Bit Error Rate) の進化
| NAND 世代 | Raw BER (新品) | Raw BER (寿命末期) |
|---|---|---|
| 2D SLC | 10⁻¹⁵ | 10⁻¹² |
| 2D MLC | 10⁻⁸ | 10⁻⁵ |
| 2D TLC | 10⁻⁵ | 10⁻³ |
| 3D TLC | 10⁻⁶ | 10⁻⁴ |
| 3D QLC | 10⁻⁴ | 10⁻² |
| 3D PLC | 10⁻³ | 10⁻¹ |
ECC がBER 10⁻² (1%エラー) を 10⁻¹⁵ (UBER・User Bit Error Rate) に訂正、SSDとして実用化。
Read Disturb / Data Retention 対策
NAND セルは:
- Read Disturb: 隣接セル読出時に微小電圧の影響を受け、徐々にデータ劣化
- Data Retention: 長期保存で電荷が漏れ、データ自然消失 (TLC で1年, QLC で数ヶ月)
ECC がこれらを訂正、コントローラは閾値超で「Refresh」(データ書直し) を自動実行。
ZNS (Zoned Namespaces) と拡張ECC
NVMe ZNS (2020) では:
- ZNS Zone (1GiB) 単位で ECC レベル可変設定
- 高耐久ゾーン (頻繁書込) は強ECC
- 低耐久ゾーン (Read Only) は弱ECC
- WAF 大幅削減
関連用語との違い
- vs RAID: SSD内ECC / RAID は複数ドライブ
- vs CRC: 検出のみ (CRC) / 訂正可能 (ECC)
- vs Reed-Solomon: BCH の親類・別アルゴリズム
FAQ
Q1: ECC 失敗で? A: コントローラがLDPC Iterations 数を増やす → RAID風内部冗長 (RAIN・Redundant Array of Independent NAND) で復元 → 最終的に Uncorrectable Error として OS に通知。
Q2: SLC が長寿命なのは? A: 1 bit のみで電圧差大、エラー少・ECC ほぼ不要に近い状態。MLC / TLC / QLC は強力ECC 必須。
Q3: なぜLDPC? A: 5G通信 / Wi-Fi 7 / NR等の現代通信でLDPC が標準、技術蓄積流用が容易。BCH を超える訂正能力でTLC / QLC を実用化。