๐Ÿ’พ NAND

NAND ECC ๊ณ ๊ธ‰

NAND ECC ๊ณ ๊ธ‰ ๊ธฐ์ˆ  ๋ถ„์„

LDPC ยท BCH ยท ์ฝ”๋”ฉ ์ด๋ก  ยท ์†Œํ”„ํŠธ/ํ•˜๋“œ ๋””์ฝ”๋”ฉ ยท ์˜จ๋‹ค์ด ECC ยท ECC ๊ฐ•๋„ ๋น„๊ต

NAND ํ”Œ๋ž˜์‹œ์˜ ์‹ ๋ขฐ์„ฑ์€ ์—๋Ÿฌ ์ •์ • ์ฝ”๋“œ(ECC) ๊ธฐ์ˆ ์— ํฌ๊ฒŒ ์˜์กดํ•ฉ๋‹ˆ๋‹ค. SLC ์‹œ๋Œ€์˜ BCH์—์„œ TLC/QLC ์‹œ๋Œ€์˜ LDPC๋กœ ์ง„ํ™”ํ•˜๋ฉด์„œ, ECC๋Š” ๋‹จ์ˆœํ•œ ๋น„ํŠธ ๊ต์ • ๋„๊ตฌ์—์„œ ์ •๊ตํ•œ ์ฝ”๋”ฉ ์ด๋ก  ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐœ์ „ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๋ฌธ์„œ๋Š” LDPC์™€ BCH์˜ ์ด๋ก ์  ๋ฐฐ๊ฒฝ, ์†Œํ”„ํŠธ/ํ•˜๋“œ ๋””์ฝ”๋”ฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜, ECC ๊ฐ•๋„ ์„ ํƒ ๊ธฐ์ค€, ์˜จ๋‹ค์ด ECC์™€ ํ˜ธ์ŠคํŠธ ECC์˜ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

NAND ์…€์˜ ๋ฌผ๋ฆฌ์  ํ•œ๊ณ„๋Š” ๊ณ ์ •๋˜์–ด ์žˆ์ง€๋งŒ, ECC ๊ธฐ์ˆ ์€ ๋Š์ž„์—†์ด ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 3D NAND๊ฐ€ 200์ธต์„ ๋„˜์–ด๊ฐ€๋ฉด์„œ ์…€ ๊ฐ„ ๊ฐ„์„ญ๊ณผ ์—ดํ™”๊ฐ€ ์‹ฌํ•ด์ง€๊ณ , QLC๋Š” ์ „์•• ๋ ˆ๋ฒจ ๊ฐ„๊ฒฉ์ด ๊ทน๋„๋กœ ์ข์•„์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ™˜๊ฒฝ์—์„œ ECC๋Š” ๋” ์ด์ƒ ์„ ํƒ์ด ์•„๋‹ˆ๋ผ ํ•„์ˆ˜์ด๋ฉฐ, ์ตœ์ ์˜ ECC ๊ฐ•๋„์™€ ๋””์ฝ”๋”ฉ ์ „๋žต์€ SSD์˜ ์ˆ˜๋ช…๊ณผ ์„ฑ๋Šฅ์„ ์ง์ ‘์ ์œผ๋กœ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

1. ํ•ต์‹ฌ ๊ฐœ๋…

1.1 ECC ์ฝ”๋“œ ๋ถ„๋ฅ˜

ECC๋Š” ๊ตฌ์กฐ์™€ ๋””์ฝ”๋”ฉ ๋ฐฉ์‹์— ๋”ฐ๋ผ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๊ณ„ํ†ต์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

๊ตฌ๋ถ„ BCH LDPC
๊ธฐ๋ฐ˜ ์ด๋ก  Galois ์ฒด ๋‹คํ•ญ์‹ ํฌ์†Œ ํŒจ๋ฆฌํ‹ฐ ์ฒดํฌ ํ–‰๋ ฌ
์ฝ”๋“œ ๊ตฌ์กฐ ์ˆœํ™˜ ์ฝ”๋“œ ์„ ํ˜• ๋ธ”๋ก ์ฝ”๋“œ
์ •์ • ๋Šฅ๋ ฅ t๋น„ํŠธ (์„ค๊ณ„ ์‹œ ๊ฒฐ์ •) ๋ฐ˜๋ณต ๋””์ฝ”๋”ฉ์œผ๋กœ ์ ์ง„์  ์ •์ •
๋””์ฝ”๋”ฉ ๋ฐฉ์‹ ๋Œ€์ˆ˜์  ๋””์ฝ”๋”ฉ (Peterson) ์‹ ๋ขฐ๋„ ์ „ํŒŒ (Belief Propagation)
๋ณต์žก๋„ O(nยทtยฒ) O(nยทiter)
์ฃผ์š” ํ™œ์šฉ SLC, MLC, ๋ฒ”์šฉ TLC, QLC, ๊ณ ๋ฐ€๋„ NAND
ECC ์ฝ”๋“œ ๋ถ„๋ฅ˜

๊ทธ๋ฆผ 1. ECC ์ฝ”๋“œ ๋ถ„๋ฅ˜์™€ NAND ์„ธ๋Œ€๋ณ„ ์ ์šฉ

1.2 ์ฝ”๋“œ ์ด๋ก  ๊ธฐ๋ณธ ๊ฐœ๋…

๊ฐœ๋… ์˜๋ฏธ ECC์—์„œ์˜ ์—ญํ• 
์ฝ”๋“œ์œจ (Code Rate) k/n (์ •๋ณด ๋น„ํŠธ / ์ด ๋น„ํŠธ) ์˜ค๋ฒ„ํ—ค๋“œ์™€ ์ •์ • ๋Šฅ๋ ฅ์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„
์ตœ์†Œ ๊ฑฐ๋ฆฌ (Minimum Distance) ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋‘ ์ฝ”๋“œ์›Œ๋“œ ๊ฐ„ ๊ฑฐ๋ฆฌ ์ •์ • ๋Šฅ๋ ฅ ๊ฒฐ์ •: t = โŒŠ(d-1)/2โŒ‹
ํŒจ๋ฆฌํ‹ฐ ์ฒดํฌ ํ–‰๋ ฌ (H) Hยทcแต€ = 0์„ ๋งŒ์กฑํ•˜๋Š” ํ–‰๋ ฌ ๋””์ฝ”๋”ฉ ์‹œ ์˜ค๋ฅ˜ ๊ฐ์ง€
์ฝ”๋”ฉ ์ด๋“ (Coding Gain) ECC ์ ์šฉ ํ›„ ํ•„์š”ํ•œ Eb/No ๊ฐ์†Œ๋Ÿ‰ ๋™์ผ BER์—์„œ์˜ ์ „๋ ฅ ์ ˆ์•ฝ

1.3 BCH ์ฝ”๋“œ ์ƒ์„ธ

BCH(Bose-Chaudhuri-Hocquenghem)๋Š” Galois ์ฒด GF(2^m) ์œ„์˜ ๋‹คํ•ญ์‹์œผ๋กœ ์ •์˜๋˜๋Š” ์ˆœํ™˜ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

BCH ์ฝ”๋“œ ์ƒ์„ฑ ๊ณผ์ •:
1. ์›์‹œ ์š”์†Œ ฮฑ โˆˆ GF(2^m) ์„ ํƒ
2. ์ตœ์†Œ ๋‹คํ•ญ์‹ m_i(x) ๊ณ„์‚ฐ (i = 1, 2, ..., 2t)
3. ์ƒ์„ฑ ๋‹คํ•ญ์‹ g(x) = lcm(m_1(x), ..., m_{2t}(x)) ๊ณ„์‚ฐ
4. ์ฝ”๋“œ ๊ธธ์ด n = 2^m - 1, ์ •๋ณด ๋น„ํŠธ k = n - deg(g(x))

BCH ์ •์ • ๋Šฅ๋ ฅ:

์ƒ์„ฑ ๋‹คํ•ญ์‹ ์ฐจ์ˆ˜ ์ฝ”๋“œ (n, k) ์ •์ • ๋Šฅ๋ ฅ ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ
4 (15, 11) 1๋น„ํŠธ 4
8 (15, 7) 2๋น„ํŠธ 8
10 (15, 5) 3๋น„ํŠธ 10
14 (15, 1) 7๋น„ํŠธ 14

BCH๋Š” ์„ค๊ณ„ ์‹œ ์ •ํ™•ํ•œ ์ •์ • ๋Šฅ๋ ฅ์„ ๋ณด์žฅํ•˜์ง€๋งŒ, TLC/QLC์˜ ๋†’์€ ์˜ค๋ฅ˜์œจ์„ ๊ฐ๋‹นํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ ๋น„์œจ์ด ๋น„ํ˜„์‹ค์ ์œผ๋กœ ๋†’์•„์ง‘๋‹ˆ๋‹ค.

1.4 LDPC ์ฝ”๋“œ ์ƒ์„ธ

LDPC(Low-Density Parity-Check)๋Š” Robert Gallager๊ฐ€ 1960๋…„์— ์ œ์•ˆํ•œ ์ฝ”๋“œ๋กœ, 1990๋…„๋Œ€์— ์žฌ๋ฐœ๊ฒฌ๋˜์–ด ํ˜„๋Œ€ ํ†ต์‹ ๊ณผ ์Šคํ† ๋ฆฌ์ง€์˜ ํ‘œ์ค€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

LDPC ์ฝ”๋“œ ๊ตฌ์กฐ:
- ํŒจ๋ฆฌํ‹ฐ ์ฒดํฌ ํ–‰๋ ฌ H: ํฌ์†Œ(sparse) ํ–‰๋ ฌ, ๊ฐ ํ–‰์€ ํ•˜๋‚˜์˜ ํŒจ๋ฆฌํ‹ฐ ์ฒดํฌ
- ๋ณ€์ˆ˜ ๋…ธ๋“œ (Variable Node): ์ฝ”๋“œ์›Œ๋“œ์˜ ๊ฐ ๋น„ํŠธ
- ์ฒดํฌ ๋…ธ๋“œ (Check Node): ํŒจ๋ฆฌํ‹ฐ ์ฒดํฌ ์ œ์•ฝ์กฐ๊ฑด
- Tanner ๊ทธ๋ž˜ํ”„: ๋ณ€์ˆ˜ ๋…ธ๋“œ์™€ ์ฒดํฌ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์ด๋ถ„ ๊ทธ๋ž˜ํ”„

LDPC ์ฝ”๋“œ ํŠน์„ฑ:

ํŠน์„ฑ ์„ค๋ช…
ํฌ์†Œ์„ฑ H ํ–‰๋ ฌ์˜ ๋Œ€๋ถ€๋ถ„์˜ ์š”์†Œ๊ฐ€ 0
๋ฐ˜๋ณต ๋””์ฝ”๋”ฉ ์‹ ๋ขฐ๋„ ์ „ํŒŒ(Belief Propagation) ์•Œ๊ณ ๋ฆฌ์ฆ˜
์†Œํ”„ํŠธ ๋””์ฝ”๋”ฉ ๋น„ํŠธ์˜ ์‹ ๋ขฐ๋„(likelihood)๋ฅผ ํ™œ์šฉ
๋ธ”๋ก ๊ธธ์ด ๋ณดํ†ต 1000~64800 ๋น„ํŠธ
์ฝ”๋“œ์œจ 0.5~0.95 ๋ฒ”์œ„
LDPC Tanner ๊ทธ๋ž˜ํ”„

๊ทธ๋ฆผ 2. LDPC Tanner ๊ทธ๋ž˜ํ”„์™€ ๋ฉ”์‹œ์ง€ ํŒจ์‹ฑ ํ๋ฆ„

2. ์†Œํ”„ํŠธ/ํ•˜๋“œ ๋””์ฝ”๋”ฉ

2.1 ํ•˜๋“œ ๋””์ฝ”๋”ฉ

ํ•˜๋“œ ๋””์ฝ”๋”ฉ์€ ๊ฐ ๋น„ํŠธ๋ฅผ 0 ๋˜๋Š” 1๋กœ ํ™•์ •ํ•œ ํ›„ ๋””์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค.

๋™์ž‘ ๊ณผ์ •:
1. NAND์—์„œ ํŽ˜์ด์ง€ ์ฝ๊ธฐ ์ˆ˜ํ–‰
2. ๊ฐ ์…€์˜ ์ „์••์„ ๊ธฐ์ค€ ์ „์••๊ณผ ๋น„๊ตํ•˜์—ฌ 0/1 ํ™•์ •
3. ํ™•์ •๋œ ๋น„ํŠธ์— ๋Œ€ํ•ด BCH ๋˜๋Š” LDPC ํ•˜๋“œ ๋””์ฝ”๋”ฉ ์ ์šฉ
4. ์˜ค๋ฅ˜ ์ •์ • ์™„๋ฃŒ

์žฅ์ : ๋น ๋ฅธ ์†๋„, ๋‚ฎ์€ ๋ณต์žก๋„
ํ•œ๊ณ„: ์‹ ๋ขฐ๋„ ์ •๋ณด ์†์‹ค, ์ •์ • ๋Šฅ๋ ฅ ์ œํ•œ

2.2 ์†Œํ”„ํŠธ ๋””์ฝ”๋”ฉ

์†Œํ”„ํŠธ ๋””์ฝ”๋”ฉ์€ ๊ฐ ๋น„ํŠธ์˜ ์‹ ๋ขฐ๋„(likelihood ratio)๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๋””์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค.

๋™์ž‘ ๊ณผ์ •:
1. NAND์—์„œ ์—ฌ๋Ÿฌ ์ „์•• ๋ ˆ๋ฒจ๋กœ ์…€ ๊ฐ์ง€(sensing)
2. ๊ฐ ๋น„ํŠธ์˜ ์‹ ๋ขฐ๋„ LLR = log(P(0)/P(1)) ๊ณ„์‚ฐ
3. LLR์„ LDPC ๋””์ฝ”๋”์— ์ž…๋ ฅํ•˜์—ฌ ๋ฐ˜๋ณต ๋””์ฝ”๋”ฉ
4. ์ˆ˜๋ ด ์‹œ ๋””์ฝ”๋”ฉ ์™„๋ฃŒ

์žฅ์ : 1~2dB ์ฝ”๋”ฉ ์ด๋“, ๋†’์€ ์ •์ • ๋Šฅ๋ ฅ
ํ•œ๊ณ„: ๋†’์€ ๋ณต์žก๋„, ๋А๋ฆฐ ์†๋„

2.3 ๋‹จ๊ณ„์  ๋””์ฝ”๋”ฉ ์ „๋žต

์‹ค์ œ SSD ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์„ฑ๋Šฅ๊ณผ ์‹ ๋ขฐ์„ฑ ์‚ฌ์ด์˜ ๊ท ํ˜•์„ ์œ„ํ•ด ๋‹จ๊ณ„์  ์ „๋žต์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹จ๊ณ„์  ๋””์ฝ”๋”ฉ

๊ทธ๋ฆผ 3. SSD ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋‹จ๊ณ„์  ๋””์ฝ”๋”ฉ ํ๋ฆ„

๋‹จ๊ณ„ ๋™์ž‘ ์ง€์—ฐ ์‹œ๊ฐ„ ์ •์ • ๋Šฅ๋ ฅ
1๋‹จ๊ณ„ ํ•˜๋“œ ๋””์ฝ”๋”ฉ (BCH/LDPC) ์ตœ์†Œ ๋‚ฎ์Œ
2๋‹จ๊ณ„ LDPC ์†Œํ”„ํŠธ ๋””์ฝ”๋”ฉ (๋ฐ˜๋ณต ํšŸ์ˆ˜ ์ฆ๊ฐ€) ์ค‘๊ฐ„ ์ค‘๊ฐ„
3๋‹จ๊ณ„ Read Retry + ์†Œํ”„ํŠธ ๋””์ฝ”๋”ฉ ๋†’์Œ ๋†’์Œ
4๋‹จ๊ณ„ Read Reclaim (๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜) ์ตœ๋Œ€ ์ตœ๋Œ€

์ด ์ „๋žต์€ ์ •์ƒ ํŽ˜์ด์ง€์—๋Š” ๋น ๋ฅธ ์ฝ๊ธฐ๋ฅผ ๋ณด์žฅํ•˜๊ณ , ์—ดํ™”๋œ ํŽ˜์ด์ง€์—๋งŒ ๋†’์€ ์—ฐ์‚ฐ ๋น„์šฉ์„ ์ง‘์ค‘ํ•˜์—ฌ ์ „์ฒด SSD ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

2.4 ์†Œํ”„ํŠธ ๋””์ฝ”๋”ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜

Sum-Product ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Belief Propagation):
- ์ฒดํฌ ๋…ธ๋“œ์—์„œ ๋ณ€์ˆ˜ ๋…ธ๋“œ๋กœ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ
- ๋ณ€์ˆ˜ ๋…ธ๋“œ์—์„œ ์ฒดํฌ ๋…ธ๋“œ๋กœ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ
- ๋ฐ˜๋ณตํ•˜์—ฌ ์ˆ˜๋ ด ๋˜๋Š” ์ตœ๋Œ€ ๋ฐ˜๋ณต ํšŸ์ˆ˜ ๋„๋‹ฌ

Min-Sum ์•Œ๊ณ ๋ฆฌ์ฆ˜:
- Sum-Product์˜ ๊ทผ์‚ฌ ๋ฒ„์ „
- ๊ณฑ์…ˆ ๋Œ€์‹  ์ตœ์†Œ๊ฐ’ ์—ฐ์‚ฐ ์‚ฌ์šฉ
- ๋ณต์žก๋„ ๊ฐ์†Œ, ์•ฝ๊ฐ„์˜ ์„ฑ๋Šฅ ์†์‹ค

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณต์žก๋„ ์„ฑ๋Šฅ ์ ์šฉ
Sum-Product O(d_c ยท log(d_v)) ์ตœ๊ณ  ๊ณ ์„ฑ๋Šฅ SSD
Min-Sum O(d_c) ์šฐ์ˆ˜ ๋ฒ”์šฉ SSD
Normalized Min-Sum O(d_c) ์šฐ์ˆ˜ ๋ณด์ •๋œ Min-Sum

3. ECC ๊ฐ•๋„ ๋น„๊ต

3.1 NAND ์„ธ๋Œ€๋ณ„ ECC ์š”๊ตฌ์‚ฌํ•ญ

NAND ์„ธ๋Œ€ ์…€๋‹น ๋น„ํŠธ RBER ECC ์š”๊ตฌ์‚ฌํ•ญ ์ฝ”๋“œ์œจ
SLC 1 10^-6 BCH 4bit/512B 0.992
MLC 2 10^-5 BCH 24bit/512B 0.953
TLC 3 10^-4 LDPC 60bit/1KB 0.941
QLC 4 10^-3 LDPC 100bit/1KB 0.907
3D TLC 3 10^-3 LDPC 120bit/1KB 0.906
3D QLC 4 10^-2 LDPC 240bit/1KB 0.807

3.2 ECC ๊ฐ•๋„์™€ ์ฝ”๋“œ์œจ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„

ECC๋ฅผ ๊ฐ•ํ™”ํ•˜๋ฉด ์ •์ • ๋Šฅ๋ ฅ์ด ๋†’์•„์ง€์ง€๋งŒ, ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ ๋น„์œจ์ด ์ฆ๊ฐ€ํ•˜์—ฌ ์œ ํšจ ์ €์žฅ ์šฉ๋Ÿ‰์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

์ฝ”๋“œ์œจ = ์ •๋ณด ๋น„ํŠธ / (์ •๋ณด ๋น„ํŠธ + ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ)

ECC ๊ฐ•๋„ ์ฝ”๋“œ์œจ ์ •์ • ๋Šฅ๋ ฅ ์ €์žฅ ํšจ์œจ
BCH 4bit/512B 99.2% ๋‚ฎ์Œ ๋†’์Œ
BCH 24bit/512B 95.3% ์ค‘๊ฐ„ ์ค‘๊ฐ„
LDPC 60bit/1KB 94.1% ๋†’์Œ ์ค‘๊ฐ„
LDPC 120bit/1KB 90.6% ๋งค์šฐ ๋†’์Œ ๋‚ฎ์Œ
LDPC 240bit/1KB 80.7% ์ตœ๊ณ  ๋งค์šฐ ๋‚ฎ์Œ

3.3 ์ฝ”๋“œ์œจ๊ณผ ECC ์„ ํƒ ๊ธฐ์ค€

๊ธฐ์ค€ BCH ์„ ํ˜ธ LDPC ์„ ํ˜ธ
NAND ์„ธ๋Œ€ SLC, MLC TLC, QLC, 3D NAND
RBER ๋‚ฎ์Œ (< 10^-5) ๋†’์Œ (> 10^-4)
์ง€์—ฐ ์‹œ๊ฐ„ ๋ฏผ๊ฐ ๋œ ๋ฏผ๊ฐ
์ „๋ ฅ ์†Œ๋ชจ ์ œํ•œ์  ์—ฌ์œ  ์žˆ์Œ
๋น„์šฉ ์ €๊ฐ€ SSD ๊ณ ์„ฑ๋Šฅ/์—”ํ„ฐํ”„๋ผ์ด์ฆˆ SSD

4. ์˜จ๋‹ค์ด ECC vs ํ˜ธ์ŠคํŠธ ECC

4.1 ๊ณ„์ธต์  ECC ๊ตฌ์กฐ

์ตœ์‹  3D NAND๋Š” ๋‹ค์ด ๋‚ด๋ถ€ ECC์™€ ํ˜ธ์ŠคํŠธ ์ปจํŠธ๋กค๋Ÿฌ ECC๋ฅผ ๊ฒฐํ•ฉํ•œ ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ณ„์ธต์  ECC

๊ทธ๋ฆผ 4. ์˜จ๋‹ค์ด ECC์™€ ํ˜ธ์ŠคํŠธ ECC ๊ณ„์ธต ๊ตฌ์กฐ

4.2 ์˜จ๋‹ค์ด ECC

์˜จ๋‹ค์ด ECC๋Š” NAND ๋‹ค์ด ๋‚ด๋ถ€์—์„œ 1์ฐจ ์˜ค๋ฅ˜ ์ •์ •์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํŠน์„ฑ ์„ค๋ช…
์œ„์น˜ NAND ๋‹ค์ด ๋‚ด๋ถ€
๋Œ€์ƒ ํŽ˜์ด์ง€ ๋‹จ์œ„ ๋น„ํŠธ ์˜ค๋ฅ˜
์ง€์—ฐ ๋งค์šฐ ๋‚ฎ์Œ (< 1ฮผs)
์ •์ • ๋Šฅ๋ ฅ ๋‚ฎ์Œ (BCH ์ˆ˜์ค€)
๋ชฉ์  ํ˜ธ์ŠคํŠธ ECC ๋ถ€ํ•˜ ๊ฐ์†Œ

4.3 ํ˜ธ์ŠคํŠธ ECC

ํ˜ธ์ŠคํŠธ ECC๋Š” SSD ์ปจํŠธ๋กค๋Ÿฌ์—์„œ 2์ฐจ ์˜ค๋ฅ˜ ์ •์ •์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํŠน์„ฑ ์„ค๋ช…
์œ„์น˜ SSD ์ปจํŠธ๋กค๋Ÿฌ
๋Œ€์ƒ ์˜จ๋‹ค์ด ECC๋ฅผ ํ†ต๊ณผํ•œ ์ž”์—ฌ ์˜ค๋ฅ˜
์ง€์—ฐ ์ค‘๊ฐ„ (~ 10ฮผs)
์ •์ • ๋Šฅ๋ ฅ ๋†’์Œ (LDPC ์ˆ˜์ค€)
๋ชฉ์  ์ตœ์ข… ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ

4.4 RAID-like ๋ณดํ˜ธ

SSD ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์—ฌ๋Ÿฌ NAND ๋‹ค์ด์— ๊ฑธ์ณ RAID์™€ ์œ ์‚ฌํ•œ ํŒจ๋ฆฌํ‹ฐ ๋ณดํ˜ธ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณดํ˜ธ ๋ ˆ๋ฒจ ์„ค๋ช… ๋ณดํ˜ธ ๋ฒ”์œ„ ๋น„์šฉ
์˜จ๋‹ค์ด ECC ๋‹ค์ด ๋‚ด๋ถ€ 1์ฐจ ECC ํŽ˜์ด์ง€ ๋น„ํŠธ ์˜ค๋ฅ˜ ๋‚ฎ์Œ
ํ˜ธ์ŠคํŠธ ECC ์ปจํŠธ๋กค๋Ÿฌ 2์ฐจ ECC ํŽ˜์ด์ง€ ๋น„ํŠธ ์˜ค๋ฅ˜ ์ค‘๊ฐ„
RAID-like ๋‹ค์ด ๊ฐ„ ํŒจ๋ฆฌํ‹ฐ ๋‹ค์ด ๋‹จ์œ„ ์žฅ์•  ๋†’์Œ

RAID-like ๋ณดํ˜ธ๋Š” ํŠน์ • NAND ๋‹ค์ด๊ฐ€ ์™„์ „ํžˆ ๊ณ ์žฅ๋‚˜๋”๋ผ๋„ ํŒจ๋ฆฌํ‹ฐ ์ •๋ณด๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์–ด, enterprise SSD์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

5. ๋™์ž‘ ์›๋ฆฌ: LDPC ๋””์ฝ”๋”ฉ ํŒŒ์ดํ”„๋ผ์ธ

5.1 LDPC ์ธ์ฝ”๋”ฉ

LDPC ์ธ์ฝ”๋”ฉ์€ ์ •๋ณด ๋น„ํŠธ๋ฅผ ์ฝ”๋“œ์›Œ๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

  1. ์ •๋ณด ๋น„ํŠธ ๋ฒกํ„ฐ s (๊ธธ์ด k) ์ž…๋ ฅ
  2. ์ƒ์„ฑ ํ–‰๋ ฌ G์™€ ๊ณฑ์…ˆ: c = s ยท G
  3. ์ฝ”๋“œ์›Œ๋“œ c (๊ธธ์ด n) ์ถœ๋ ฅ
  4. H ยท cแต€ = 0 ๋งŒ์กฑ ํ™•์ธ

์‹ค์ œ ๊ตฌํ˜„์—์„œ๋Š” ์ˆœํ™˜ ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ธ์ฝ”๋”ฉ ๋ณต์žก๋„๋ฅผ O(n)์œผ๋กœ ์ค„์ž…๋‹ˆ๋‹ค.

5.2 LDPC ๋””์ฝ”๋”ฉ ํ๋ฆ„

LDPC ๋””์ฝ”๋”ฉ

๊ทธ๋ฆผ 5. LDPC ๋ฐ˜๋ณต ๋””์ฝ”๋”ฉ ํ๋ฆ„

๋‹จ๊ณ„๋ณ„ ๋™์ž‘:

๋‹จ๊ณ„ ๋™์ž‘ ์„ค๋ช…
1 ์ดˆ๊ธฐ LLR ๊ณ„์‚ฐ NAND ์ฝ๊ธฐ ๊ฒฐ๊ณผ์—์„œ ๋น„ํŠธ๋ณ„ ์‹ ๋ขฐ๋„ ๊ณ„์‚ฐ
2 ๋ณ€์ˆ˜ ๋…ธ๋“œ ์—…๋ฐ์ดํŠธ ์ˆ˜์‹  LLR๊ณผ ์ฒดํฌ ๋…ธ๋“œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฒฐํ•ฉ
3 ์ฒดํฌ ๋…ธ๋“œ ์—…๋ฐ์ดํŠธ ๋ณ€์ˆ˜ ๋…ธ๋“œ ๋ฉ”์‹œ์ง€๋ฅผ ์ด์šฉํ•ด ํŒจ๋ฆฌํ‹ฐ ์ฒดํฌ ๊ณ„์‚ฐ
4 ํ•˜๋“œ ๋””cision ํ˜„์žฌ ์ถ”์ •์น˜๋กœ codeword ๊ฒฐ์ •
5 ํŒจ๋ฆฌํ‹ฐ ์ฒดํฌ H ยท cแต€ = 0 ํ™•์ธ
6 ๋ฐ˜๋ณต ๋˜๋Š” ์ข…๋ฃŒ ์ˆ˜๋ ด ์‹œ ์ข…๋ฃŒ, ๋ฏธ์ˆ˜๋ ด ์‹œ 2๋‹จ๊ณ„๋กœ ๋ณต๊ท€

5.3 ๋ฐ˜๋ณต ํšŸ์ˆ˜์™€ ์„ฑ๋Šฅ

๋ฐ˜๋ณต ํšŸ์ˆ˜ ์ •์ • ๋Šฅ๋ ฅ ์ง€์—ฐ ์‹œ๊ฐ„ ์ „๋ ฅ ์†Œ๋ชจ
1 ๋‚ฎ์Œ ์ตœ์†Œ ์ตœ์†Œ
5 ์ค‘๊ฐ„ ์ค‘๊ฐ„ ์ค‘๊ฐ„
10 ๋†’์Œ ๋†’์Œ ๋†’์Œ
20 ๋งค์šฐ ๋†’์Œ ๋งค์šฐ ๋†’์Œ ๋งค์šฐ ๋†’์Œ

SSD ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ฝ๊ธฐ ์—๋Ÿฌ์œจ์— ๋”ฐ๋ผ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ •์ƒ ๋ธ”๋ก์€ 1~3ํšŒ ๋ฐ˜๋ณต์œผ๋กœ ๋””์ฝ”๋”ฉ๋˜๊ณ , ์—ดํ™”๋œ ๋ธ”๋ก์€ 10~20ํšŒ ๋ฐ˜๋ณต์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

6. ์žฅ๋‹จ์ 

์žฅ์ 

  • LDPC ์†Œํ”„ํŠธ ๋””์ฝ”๋”ฉ์€ ๋‚ฎ์€ RBER์—์„œ๋„ ๋†’์€ ์ •์ • ๋Šฅ๋ ฅ ์ œ๊ณต
  • ๋‹จ๊ณ„์  ๋””์ฝ”๋”ฉ ์ „๋žต์€ ์„ฑ๋Šฅ๊ณผ ์‹ ๋ขฐ์„ฑ์˜ ๊ท ํ˜• ๋‹ฌ์„ฑ
  • ์˜จ๋‹ค์ด ECC + ํ˜ธ์ŠคํŠธ ECC ๊ณ„์ธต ๊ตฌ์กฐ๋Š” ์‹œ์Šคํ…œ ์ „์ฒด ์‹ ๋ขฐ์„ฑ ํ–ฅ์ƒ
  • RAID-like ๋ณดํ˜ธ๋Š” ๋‹ค์ด ์žฅ์• ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ
  • ์ฝ”๋“œ์œจ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ์ €์žฅ ํšจ์œจ ๊ทน๋Œ€ํ™” ๊ฐ€๋Šฅ

ํ•œ๊ณ„

  • ์†Œํ”„ํŠธ ๋””์ฝ”๋”ฉ์€ ๋†’์€ ์ง€์—ฐ ์‹œ๊ฐ„๊ณผ ์ „๋ ฅ ์†Œ๋ชจ ์œ ๋ฐœ
  • LDPC ๋””์ฝ”๋”ฉ ๋ณต์žก๋„๋Š” ํ•˜๋“œ์›จ์–ด ๋น„์šฉ ์ฆ๊ฐ€
  • ์˜จ๋‹ค์ด ECC๋Š” ์ถ”๊ฐ€ ๋‹ค์ด ๋ฉด์  ํ•„์š”
  • RAID-like ๋ณดํ˜ธ๋Š” ํŒจ๋ฆฌํ‹ฐ ๊ณ„์‚ฐ ์˜ค๋ฒ„ํ—ค๋“œ์™€ WAF ์ฆ๊ฐ€
  • 3D NAND ๊ณ ์ธตํ™”๋Š” ECC ๊ฐ•๋„๋ฅผ ์ง€์†์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ์š”์ธ

7. ๊ด€๋ จ ๊ธฐ์ˆ 

์ฐธ๊ณ  ๋ฌธํ—Œ

  • Robert G. Gallager. "Low-Density Parity-Check Codes." MIT Press, 1963.

  • David J. C. MacKay and Radford M. Neal. "Near Shannon Limit Performance of Low Density Parity Check Codes." Electronics Letters, 1996.

  • Tom Richardson and Rudiger Urbanke. "Modern Coding Theory." Cambridge University Press, 2008.

  • 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.

  • Jack Tsai. "Error Correction Codes for Flash Memories." 2021.

  • Kai Zhao et al. "LDPC-in-SSD: Making Advanced Error Correction Codes Work Effectively in Solid State Drives." FAST'13, 2013.

  • Yu Cai et al. "Error Patterns in MLC NAND Flash Memory: Measurement, Characterization, and Analysis." DATE 2012.

8. ํ•ต์‹ฌ ์ •๋ฆฌ

NAND ECC ๊ณ ๊ธ‰ ๊ธฐ์ˆ ์€ BCH์—์„œ LDPC๋กœ, ํ•˜๋“œ ๋””์ฝ”๋”ฉ์—์„œ ์†Œํ”„ํŠธ ๋””์ฝ”๋”ฉ์œผ๋กœ ์ง„ํ™”ํ•˜๋ฉด์„œ TLC/QLC ๊ฐ™์€ ๊ณ ๋ฐ€๋„ NAND๋„ ์‹ ๋ขฐ์„ฑ ์žˆ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. LDPC์˜ ๋ฐ˜๋ณต ๋””์ฝ”๋”ฉ๊ณผ ์†Œํ”„ํŠธ ๋””์ฝ”๋”ฉ์€ ๋‚ฎ์€ RBER์—์„œ๋„ ๊ฐ•๋ ฅํ•œ ์ •์ • ๋Šฅ๋ ฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋ณต์žก๋„์™€ ์ง€์—ฐ ์‹œ๊ฐ„์˜ ๋Œ€๊ฐ€๋ฅผ ์ˆ˜๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ์˜จ๋‹ค์ด ECC์™€ ํ˜ธ์ŠคํŠธ ECC์˜ ๊ณ„์ธต ๊ตฌ์กฐ๋Š” ์‹œ์Šคํ…œ ์ „์ฒด์˜ ์‹ ๋ขฐ์„ฑ์„ ๋†’์ด๊ณ , RAID-like ๋ณดํ˜ธ๋Š” ๋‹ค์ด ์žฅ์• ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ ์˜ ECC ๊ฐ•๋„์™€ ๋””์ฝ”๋”ฉ ์ „๋žต์€ NAND ์„ธ๋Œ€, ์›Œํฌ๋กœ๋“œ, ๋น„์šฉ ์ œ์•ฝ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฉฐ, SSD ์ปจํŠธ๋กค๋Ÿฌ์˜ ํŽŒ์›จ์–ด ํ’ˆ์งˆ์— ์˜ํ•ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.