๐Ÿ’พ NAND

SSD Internal Parallelism Channel Die Plane

SSD ๋‚ด๋ถ€ ๋ณ‘๋ ฌ์„ฑ ์ƒ์„ธ ๋ถ„์„

Channel ยท Package ยท Die(LUN) ยท Plane ยท Superpage/Stripe ยท Queue Depth

SSD์˜ ์„ฑ๋Šฅ์€ ๋‹จ์ผ NAND ์…€์˜ ์†๋„๋ณด๋‹ค ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋‚ด๋ถ€ ์ž์›์„ ๋™์‹œ์— ์ ์œ ํ•˜๋А๋ƒ์— ๋” ํฌ๊ฒŒ ์ขŒ์šฐ๋ฉ๋‹ˆ๋‹ค. ๋ณธ ๋ฌธ์„œ๋Š” ์ฑ„๋„, ํŒจํ‚ค์ง€, ๋‹ค์ด, ํ”Œ๋ ˆ์ธ์œผ๋กœ ์ด์–ด์ง€๋Š” SSD ๋‚ด๋ถ€ ๋ณ‘๋ ฌ์„ฑ ๊ณ„์ธต๊ณผ, ์ด๋ฅผ ์‹ค์ œ ์ฒ˜๋ฆฌ๋Ÿ‰์œผ๋กœ ๋ฐ”๊พธ๋Š” ์Šค์ผ€์ค„๋ง ์กฐ๊ฑด์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ™์€ NAND ์„ธ๋Œ€์™€ ๊ฐ™์€ ์ปจํŠธ๋กค๋Ÿฌ ๊ณ„์—ด์„ ์“ฐ๋”๋ผ๋„ ์šฉ๋Ÿ‰๋ณ„ ์„ฑ๋Šฅ์ด ๋‹ฌ๋ผ์ง€๋Š” ์ด์œ ๋„ ์ด ๋ณ‘๋ ฌ์„ฑ ๊ณ„์ธต์—์„œ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค. ๋” ํฐ ๋ชจ๋ธ์€ ๋” ๋งŽ์€ die์™€ package๋ฅผ ํƒ‘์žฌํ•ด ๋ณ‘๋ ฌ๋กœ ์ ์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ , enterprise SSD๋Š” ์—ฌ๊ธฐ์— over-provisioning๊ณผ ๋†’์€ Queue Depth๋ฅผ ๋”ํ•ด ๋‚ด๋ถ€ ์ž์›์„ ๋” ์•ˆ์ •์ ์œผ๋กœ ์ฑ„์›๋‹ˆ๋‹ค.

1. SSD ๋ณ‘๋ ฌ์„ฑ์˜ ๊ณ„์ธต ๊ตฌ์กฐ

ํ”Œ๋ž˜์‹œ ๋ณ‘๋ ฌ์„ฑ์€ Channel -> Package -> Die(LUN) -> Plane ์ˆœ์œผ๋กœ ์Œ“์ž…๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ ์š”์ฒญ์„ ์ด ๊ณ„์ธต์— ๋ถ„์‚ฐํ•ด ๋™์‹œ์— ๋ฐœํ–‰ํ•˜๊ณ , ๊ฐ ๊ฒฝ๋กœ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ busy ์ƒํƒœ๊ฐ€ ๋˜๋„๋ก ๋งŒ๋“ค์–ด ๋Œ€์—ญํญ์„ ๋Œ์–ด๋ƒ…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐ™์€ ์šฉ๋Ÿ‰์˜ SSD๋ผ๋„ ์ฑ„๋„ ์ˆ˜, ํŒจํ‚ค์ง€ ๋ฐฐ์น˜, ๋‹ค์ด ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ฒด๊ฐ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๊ณ ์šฉ๋Ÿ‰ ๋ชจ๋ธ์ด ๊ฐ™์€ ์ œํ’ˆ๊ตฐ ๋‚ด์—์„œ๋„ ๋” ๋น ๋ฅธ ์ด์œ ๊ฐ€ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ„์ธต๋ณ„ ๋น„๊ต

๊ณ„์ธต ๋ณ‘๋ ฌ ๋‹จ์œ„ ์ž˜ ๋งž๋Š” ์ž‘์—… ์ฃผ๋œ ์ œ์•ฝ
Channel ๋…๋ฆฝ NAND ํŒจํ‚ค์ง€ ๊ฒฝ๋กœ ๋Œ€์šฉ๋Ÿ‰ ์ˆœ์ฐจ ์ฝ๊ธฐ/์“ฐ๊ธฐ ๋‚ฎ์€ Queue Depth์—์„œ ์ฑ„์šฐ๊ธฐ ์–ด๋ ค์›€
Package ํ•œ ์ฑ„๋„์— ๋ถ™์€ ํŒจํ‚ค์ง€ ๋ฌถ์Œ stripe ์“ฐ๊ธฐ ๊ณต์œ  ์ฑ„๋„ ๋ฒ„์Šค ๊ฒฝ์Ÿ
Die / LUN ๊ฐ™์€ ํŒจํ‚ค์ง€ ๋‚ด๋ถ€์˜ ๋…๋ฆฝ ๋‹ค์ด die interleaving ๋ฒ„์Šค์™€ ํƒ€์ด๋ฐ ์ œ์•ฝ
Plane ๋‹ค์ด ๋‚ด๋ถ€์˜ plane multi-plane read/program ๊ฐ™์€ ์œ„์น˜์˜ ํŽ˜์ด์ง€ ์ •๋ ฌ ์กฐ๊ฑด
nand_0025_ssd_internal_parallelism_channel_die_plane

๊ทธ๋ฆผ 1. SSD ๋‚ด๋ถ€ ๋ณ‘๋ ฌ์„ฑ ๊ณ„์ธต โ€” Channel -> Package -> Die/LUN -> Plane

2. Channel ์ˆ˜์ค€ ๋ณ‘๋ ฌ์„ฑ

์ฑ„๋„์€ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ NAND ํŒจํ‚ค์ง€์— ๋ช…๋ น์„ ๋ถ„์‚ฐํ•˜๋Š” ๊ฐ€์žฅ ํฐ ๋ณ‘๋ ฌ์„ฑ ์ถ•์ž…๋‹ˆ๋‹ค. ํฐ ์ˆœ์ฐจ ์“ฐ๊ธฐ๋Š” ์—ฌ๋Ÿฌ ์ฑ„๋„์— stripe๋˜์–ด ๊ฐ ์ฑ„๋„์ด ๋™์‹œ์— program์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ๋Œ€์—ญํญ์€ ์ฑ„๋„ ์ˆ˜์— ๋น„๋ก€ํ•ด ์ž˜ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ 4KB ๋žœ๋ค I/O์ฒ˜๋Ÿผ ์š”์ฒญ์ด ์ž‘๊ฑฐ๋‚˜ Queue Depth๊ฐ€ ๋‚ฎ์œผ๋ฉด ์ฑ„๋„ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋™์‹œ์— ์ฑ„์šฐ๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ SSD ๋‚ด๋ถ€ ์ž์›์€ ์ถฉ๋ถ„ํ•ด๋„ ์‹ค์ œ ์ฒ˜๋ฆฌ๋Ÿ‰์€ ์ฑ„๋„ ์ผ๋ถ€๋งŒ ํ™œ์šฉ๋œ ์ƒํƒœ์—์„œ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

SSD Internal Parallelism Channel Die Plane

๊ทธ๋ฆผ 2. ๋ฉ€ํ‹ฐ ์ฑ„๋„ ์ปจํŠธ๋กค๋Ÿฌ์™€ ํŒจํ‚ค์ง€ ์ŠคํŠธ๋ผ์ดํ”„ ์“ฐ๊ธฐ

3. Die/LUN Interleaving๊ณผ Plane ๋ณ‘๋ ฌ์„ฑ

๊ฐ™์€ ์ฑ„๋„ ์•ˆ์—์„œ๋„ ์—ฌ๋Ÿฌ Die(LUN)๋Š” ๋น„๊ต์  ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๋‹ค์ด๊ฐ€ program busy ์ƒํƒœ์ธ ๋™์•ˆ ๋‹ค๋ฅธ ๋‹ค์ด์— read๋ฅผ ๋ณด๋‚ด๋Š” interleaving์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ฑ„๋„ ์ž์›์„ ๋” ์ด˜์ด˜ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ํ•˜๋‚˜์˜ Die ์•ˆ์—์„œ๋„ ์—ฌ๋Ÿฌ Plane์— ๋Œ€ํ•ด multi-plane operation์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋‚ด๋ถ€ ๋ณ‘๋ ฌ์„ฑ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๊ฐ™์€ timing window, shared bus, ECC ์—”์ง„ ๊ฐ™์€ ์ œ์•ฝ ๋•Œ๋ฌธ์— ์ด๋ก ์น˜๋งŒํผ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

plane-level parallelism์€ target pages๊ฐ€ ๊ฐ™์€ ์œ„์น˜์— ์žˆ์–ด์•ผ ํ•˜๋Š” ์ œ์•ฝ ๋•Œ๋ฌธ์— ํ•ญ์ƒ ์‰ฝ๊ฒŒ ์“ฐ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์—ฐ๊ตฌ์—์„œ๋Š” clean page๋ฅผ ์ผ๋ถ€ ํฌ์ƒํ•ด ์ •๋ ฌ์„ ๋งž์ถ”๋Š” selective multi-plane policy๊ฐ€ ์ œ์•ˆ๋˜์—ˆ๊ณ , ๋Œ€ํ‘œ ์„œ๋ฒ„ ์›Œํฌ๋กœ๋“œ์—์„œ ํ‰๊ท  ์„ฑ๋Šฅ์„ ์ตœ๋Œ€ 28.82%๊นŒ์ง€ ์˜ฌ๋ฆฌ๋ฉด์„œ๋„ block erasure ์ˆ˜๋ฅผ ํฌ๊ฒŒ ๋Š˜๋ฆฌ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ด๋Ÿฐ ์กฐ๊ฑด์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด interleaving, copy-back, multi-plane ๊ฐ™์€ ๋ช…๋ น์„ ์›Œํฌ๋กœ๋“œ์™€ ๋งคํ•‘ ์ƒํƒœ์— ๋”ฐ๋ผ ๊ณจ๋ผ ์”๋‹ˆ๋‹ค.

SSD Internal Parallelism Channel Die Plane

๊ทธ๋ฆผ 3. Die interleaving, multi-plane operation, cache program์˜ ๊ด€๊ณ„

4. Superpage/Stripe์™€ ์š”์ฒญ ํฌ๊ธฐ ์ •๋ ฌ

SSD๋Š” ์ข…์ข… ์—ฌ๋Ÿฌ ์ฑ„๋„/๋‹ค์ด์— ๊ฑธ์นœ stripe ๋‹จ์œ„๋ฅผ ๋‚ด๋ถ€ write granularity์ฒ˜๋Ÿผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ๊ฐ€ ํฐ ์ˆœ์ฐจ ์“ฐ๊ธฐ๋ฅผ ๋ณด๋‚ด๋ฉด ๊ฐ ๊ฒฝ๋กœ์— ํ•œ ํŽ˜์ด์ง€์”ฉ ๋‚˜๋ˆ  ์จ์„œ superpage์ฒ˜๋Ÿผ ๋ณ‘๋ ฌ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋Œ€๋กœ ์ž‘์€ ๋žœ๋ค ์“ฐ๊ธฐ๊ฐ€ ๋งŽ์ด ์„ž์ด๋ฉด ํ•œ stripe๋ฅผ ๋‹ค ์ฑ„์šฐ์ง€ ๋ชปํ•œ ์ฑ„ ๋ถ€๋ถ„ ๊ฐฑ์‹ ์ด ๋ฐ˜๋ณต๋˜์–ด ๋ณ‘๋ ฌ์„ฑ์ด ๋–จ์–ด์ง€๊ณ , ๋‚˜์ค‘์— GC ๋ถ€๋‹ด๋„ ์ปค์ง‘๋‹ˆ๋‹ค. ํŒŒ์ผ์‹œ์Šคํ…œ์ด๋‚˜ DB๊ฐ€ ์–ด๋А ์ •๋„ write coalescing์„ ํ•ด์ฃผ๋ฉด SSD ์ž…์žฅ์—์„œ๋Š” ํ›จ์”ฌ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ ํฌ๊ธฐ์™€ ํ™œ์šฉ๋„

ํ˜ธ์ŠคํŠธ ํŒจํ„ด ๋‚ด๋ถ€ ํ™œ์šฉ๋„ ๊ฒฐ๊ณผ
ํฐ ์ˆœ์ฐจ ์“ฐ๊ธฐ ๋†’์Œ stripe/superpage๋ฅผ ์‰ฝ๊ฒŒ ์ฑ„์›€
4KB ๋žœ๋ค I/O ๋‚ฎ์Œ ์ฑ„๋„/๋‹ค์ด๋ฅผ ์ถฉ๋ถ„ํžˆ ๋ชป ์ฑ„์›€
๋‚ฎ์€ Queue Depth ๋‚ฎ์Œ outstanding command๊ฐ€ ๋ถ€์กฑํ•จ
write coalescing ํ›„ ๋Œ€ํ˜• ์“ฐ๊ธฐ ๋†’์Œ GC์™€ WAF ๋ถ€๋‹ด์ด ์ค„์–ด๋“ฆ
SSD Internal Parallelism Channel Die Plane

๊ทธ๋ฆผ 4. Superpage/Stripe ์ •๋ ฌ ์—ฌ๋ถ€์— ๋”ฐ๋ฅธ ๋ณ‘๋ ฌ์„ฑ ํ™œ์šฉ ์ฐจ์ด

5. ๋™์ž‘ ์›๋ฆฌ: ํ˜ธ์ŠคํŠธ I/O๊ฐ€ ๋ณ‘๋ ฌ ์ž์›์œผ๋กœ ๋ถ„์‚ฐ๋˜๋Š” ๊ณผ์ •

SSD ์ปจํŠธ๋กค๋Ÿฌ๋Š” ํ˜ธ์ŠคํŠธ์—์„œ ๋“ค์–ด์˜จ LBA ๊ธฐ๋ฐ˜ ์š”์ฒญ์„ ๊ทธ๋Œ€๋กœ NAND์— ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋จผ์ € NVMe ํ์—์„œ ๋ช…๋ น์„ ๋ฐ›์•„ ์š”์ฒญ ํฌ๊ธฐ์™€ Queue Depth๋ฅผ ํ™•์ธํ•˜๊ณ , FTL์ด ํ˜„์žฌ ๋งคํ•‘ ์ƒํƒœ์™€ free block ์ƒํƒœ๋ฅผ ์กฐํšŒํ•œ ๋’ค, ์—ฌ๋Ÿฌ channel๊ณผ die์— ๋ถ„์‚ฐํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ์žฌ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ˆœ์ฐจ ์“ฐ๊ธฐ๋ผ๋ฉด ์—ฌ๋Ÿฌ channel์— ํ•œ ํŽ˜์ด์ง€์”ฉ stripeํ•˜๊ณ , ์ฝ๊ธฐ๋ผ๋ฉด ๊ฐ€๋Šฅํ•œ die์— interleavingํ•˜์—ฌ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ˆจ๊น๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์—์„œ ๋ณ‘๋ ฌ์„ฑ์€ ํ•ญ์ƒ ์ œ์•ฝ๊ณผ ํ•จ๊ป˜ ์›€์ง์ž…๋‹ˆ๋‹ค. multi-plane ๋ช…๋ น์€ ๊ฐ™์€ ์œ„์น˜ ์ •๋ ฌ ์กฐ๊ฑด์ด ํ•„์š”ํ•˜๊ณ , die interleaving์€ shared bus์™€ timing window๋ฅผ ํ”ผํ•ด ๋ฐœํ–‰๋ผ์•ผ ํ•˜๋ฉฐ, foreground GC๋‚˜ LDPC soft decode๊ฐ€ ๊ฒน์น˜๋ฉด ๊ฐ™์€ ์ž์›์„ ๋‘๊ณ  ๊ฒฝ์Ÿ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค์ œ SSD ์„ฑ๋Šฅ์€ ๋ณ‘๋ ฌ ํ•˜๋“œ์›จ์–ด ๊ฐœ์ˆ˜๋งŒ์ด ์•„๋‹ˆ๋ผ, ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์–ด๋–ค ์‹œ์ ์— ์–ด๋–ค ๋ช…๋ น ์กฐํ•ฉ์„ ์„ ํƒํ•˜๋А๋ƒ์— ์˜ํ•ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

6. ๋ณ‘๋ ฌ์„ฑ์„ ๊นŽ์•„๋จน๋Š” ๋ณ‘๋ชฉ

GC๋Š” valid page migration์œผ๋กœ ๋‚ด๋ถ€ ๋Œ€์—ญํญ์„ ์ž ์‹ํ•˜๊ณ , LDPC soft decode ๊ฐ™์€ ECC ๊ฒฝ๋กœ๋Š” ์ฝ๊ธฐ ์ง€์—ฐ์„ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค. ๋˜ ๋™์‹œ์— ๋„ˆ๋ฌด ๋งŽ์€ program์„ ํ—ˆ์šฉํ•˜๋ฉด ์ „๋ ฅ๊ณผ ์—ด ํ•œ๊ณ„์— ๊ฑธ๋ฆฌ๋ฏ€๋กœ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ฐœํ–‰ ์ˆ˜๋ฅผ ์ œํ•œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰ SSD ์„ฑ๋Šฅ์€ '๋‚ธ๋“œ๊ฐ€ ๋น ๋ฅธ๊ฐ€'๋ณด๋‹ค '์ถฉ๋Œ ์—†์ด ์ถฉ๋ถ„ํ•œ ์ˆ˜์˜ ๋ช…๋ น์„ ๋ณ‘๋ ฌ ์ž์›์— ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€'๊ฐ€ ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— Queue Depth, ์›Œํฌ๋กœ๋“œ์˜ ์ˆœ์ฐจ์„ฑ, GC ์••๋ฐ•์ด ๋ชจ๋‘ ๊ฐ™์€ ์ œํ’ˆ์˜ ์„ฑ๋Šฅ ํŽธ์ฐจ๋ฅผ ๋งŒ๋“ค์–ด๋ƒ…๋‹ˆ๋‹ค.

GC๋Š” valid page migration์œผ๋กœ ์ฑ„๋„ ์ ์œ  ์‹œ๊ฐ„์„ ๋Š˜๋ฆฌ๊ณ , ECC ๊ฒฝ๋กœ๋Š” read path์˜ ์ง€์—ฐ์„ ํ‚ค์šฐ๋ฉฐ, power/thermal limit์€ ๋™์‹œ์— ๋ฐœํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” program/read ์ˆ˜๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. Queue Depth๊ฐ€ ๋‚ฎ์œผ๋ฉด ์ด๋Ÿฐ ๋ณ‘๋ชฉ์„ ์ƒ์‡„ํ•  outstanding command ์ž์ฒด๊ฐ€ ๋ชจ์ž๋ผ์„œ ๋‚ด๋ถ€ ๋ณ‘๋ ฌ์„ฑ์ด ๋” ๋นจ๋ฆฌ ๋ฌด๋„ˆ์ง‘๋‹ˆ๋‹ค.

SSD Internal Parallelism Channel Die Plane

๊ทธ๋ฆผ 5. ๋ณ‘๋ ฌ์„ฑ์„ ๊ฐ์†Œ์‹œํ‚ค๋Š” ๋Œ€ํ‘œ ๋ณ‘๋ชฉ โ€” GC / ECC / ์ „๋ ฅ / Queue Depth

7. ์žฅ๋‹จ์ 

์žฅ์ 

  • ๋ณ‘๋ ฌ ๊ฒฝ๋กœ๋ฅผ ์ถฉ๋ถ„ํžˆ ์ฑ„์šฐ๋ฉด ๊ฐ™์€ NAND ์„ธ๋Œ€์—์„œ๋„ ์ฒ˜๋ฆฌ๋Ÿ‰๊ณผ tail latency๋ฅผ ๋™์‹œ์— ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํฐ ์ˆœ์ฐจ I/O, ๋†’์€ Queue Depth, ์ ์ ˆํ•œ write coalescing์€ GC์™€ WAF๋ฅผ ํ•จ๊ป˜ ์ค„์—ฌ ์„ฑ๋Šฅ๊ณผ ์ˆ˜๋ช… ๋ชจ๋‘์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ฑ„๋„, die, plane์„ ๋‹จ๊ณ„์ ์œผ๋กœ ํ™œ์šฉํ•˜๋ฏ€๋กœ ์ œํ’ˆ ์„ค๊ณ„ ์‹œ ์šฉ๋Ÿ‰ ์ฆ๊ฐ€๊ฐ€ ์„ฑ๋Šฅ ํ™•์žฅ์œผ๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์  ๋ฐ ์ฃผ์˜์ 

  • ์ž‘์€ ๋žœ๋ค I/O๋‚˜ ๋‚ฎ์€ Queue Depth์—์„œ๋Š” ๋‚ด๋ถ€ ์ž์›์ด ๋‚จ์•„๋„ ์‹ค์ œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
  • multi-plane, interleaving, cache program์€ ์ •๋ ฌ ์กฐ๊ฑด๊ณผ timing ์ œ์•ฝ์ด ๊นŒ๋‹ค๋กœ์›Œ ์ด๋ก  ๋ณ‘๋ ฌ์„ฑ์„ ํ•ญ์ƒ ์‹คํšจ ์„ฑ๋Šฅ์œผ๋กœ ๋ฐ”๊พธ์ง€๋Š” ๋ชปํ•ฉ๋‹ˆ๋‹ค.
  • foreground GC, LDPC soft decode, ์ „๋ ฅ/์—ด ์ œํ•œ์ด ๊ฒน์น˜๋ฉด ๋ณ‘๋ ฌ์„ฑ์ด ์˜คํžˆ๋ ค tail latency์™€ WAF ์•…ํ™”๋กœ ๋˜๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

8. ์‹œ์Šคํ…œ ๊ด€์  ์ •๋ฆฌ

์†Œ๋น„์ž SSD๋Š” ๋น„์šฉ๊ณผ ์ „๋ ฅ ์ œ์•ฝ ๋•Œ๋ฌธ์— ์ฑ„๋„ ์ˆ˜์™€ DRAM์ด ์ œํ•œ์ ์ด๊ณ , enterprise SSD๋Š” ๋” ๋งŽ์€ ์ฑ„๋„๊ณผ ๋†’์€ OP๋กœ ๋ณ‘๋ ฌ์„ฑ์„ ์•ˆ์ •์ ์œผ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฒค์น˜๋งˆํฌ๋ฅผ ๋ณผ ๋•Œ๋Š” ๋‹จ์ˆœํ•œ NAND ์„ธ๋Œ€๋ณด๋‹ค ์ฑ„๋„ ๊ตฌ์„ฑ๊ณผ ์šฉ๋Ÿ‰๋ณ„ ๋‹ค์ด ์ˆ˜๋ฅผ ํ•จ๊ป˜ ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ SSD ๋‚ด๋ถ€ ๋ณ‘๋ ฌ์„ฑ์€ '๋งŽ์€ NAND๋ฅผ ๋‹ฌ์•„๋†“์•˜๋‹ค'๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹ˆ๋ผ, ํ˜ธ์ŠคํŠธ I/O ํŒจํ„ด์„ ๋ฉ€ํ‹ฐ ์ฑ„๋„ยท๋ฉ€ํ‹ฐ ๋‹ค์ดยท๋ฉ€ํ‹ฐ ํ”Œ๋ ˆ์ธ์œผ๋กœ ์–ผ๋งˆ๋‚˜ ์ž˜ ์ •๋ ฌ์‹œํ‚ค๋А๋ƒ์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

SSD Internal Parallelism Channel Die Plane

๊ทธ๋ฆผ 6. FTL์ด LBA๋ฅผ PPA๋กœ ์žฌ๋ฐฐ์น˜ํ•˜๊ณ  GC, Wear Leveling, OP๋ฅผ ํ†ตํ•ด ๋ณ‘๋ ฌ์„ฑ ๊ธฐ๋ฐ˜์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹

SSD Internal Parallelism Channel Die Plane

๊ทธ๋ฆผ 7. Host Queue์—์„œ Channel, Package, Die/LUN, Plane์œผ๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ๋‚ด๋ถ€ ๋ณ‘๋ ฌ์„ฑ ๊ณ„์ธต

SSD Internal Parallelism Channel Die Plane

๊ทธ๋ฆผ 8. ํฐ ์ˆœ์ฐจ ์“ฐ๊ธฐ์™€ ์ž‘์€ ๋žœ๋ค I/O๊ฐ€ ์ฑ„๋„ ํ™œ์šฉ๋„์— ๋ฏธ์น˜๋Š” ์ฐจ์ด

SSD Internal Parallelism Channel Die Plane

๊ทธ๋ฆผ 9. ๊ฐ™์€ channel ์•ˆ์—์„œ die interleaving๊ณผ multi-plane operation์ด ๊ฒน์ณ์ง€๋Š” ๋ฐฉ์‹

SSD Internal Parallelism Channel Die Plane

๊ทธ๋ฆผ 10. superpage/stripe ์ •๋ ฌ์ด ๋งž์„ ๋•Œ์™€ ์–ด๊ธ‹๋‚  ๋•Œ์˜ ๋‚ด๋ถ€ write granularity ์ฐจ์ด

SSD Internal Parallelism Channel Die Plane

๊ทธ๋ฆผ 11. ๋ฒ„์Šค ๊ณต์œ , ECC, ์ „๋ ฅ ์ œํ•œ, ๋‚ฎ์€ Queue Depth๊นŒ์ง€ ํฌํ•จํ•œ ๋ณ‘๋ ฌ์„ฑ ์ €ํ•˜ ์š”์ธ ์š”์•ฝ

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

  • NAND NVMe SSD Analysis: SSD ์ธํ„ฐํŽ˜์ด์Šค์™€ NAND/์ปจํŠธ๋กค๋Ÿฌ์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ

  • NAND Flash Internals: NAND์˜ ์…€/ํŽ˜์ด์ง€/๋ธ”๋ก ๋™์ž‘๊ณผ ๋ฌผ๋ฆฌ ์ œ์•ฝ

  • FTL WearLeveling GarbageCollection: ๋งคํ•‘, GC, Wear Leveling, TRIM

  • ZNS OpenChannelSSD Analysis: ํ˜ธ์ŠคํŠธ์™€ ์žฅ์น˜๊ฐ€ ๋ณ‘๋ ฌ์„ฑ์„ ๋” ์ง์ ‘์ ์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹

  • NVMe Architecture: Queue Depth, SQ/CQ, ๋ณ‘๋ ฌ I/O ๋ฐœํ–‰ ๊ตฌ์กฐ

  • ECC Error Correction: BCH/LDPC์™€ ์ฝ๊ธฐ ๋ณต์› ๊ฒฝ๋กœ

์ฐธ๊ณ  ๋ฌธํ—Œ

  • Feng Chen, Binbing Hou, Rubao Lee, Internal Parallelism of Flash Memory-Based Solid-State Drives, ACM Transactions on Storage, DOI: 10.1145/2818376

  • I. Shin, Improving internal parallelism of solid state drives with selective multi-plane operation, Electronics Letters, 54(2), 64-66, DOI: 10.1049/el.2017.3912

  • Solid-state drive (Wikipedia): https://en.wikipedia.org/wiki/Solid-state_drive

  • Flash memory (Wikipedia): https://en.wikipedia.org/wiki/Flash_memory

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

SSD ๋‚ด๋ถ€ ๋ณ‘๋ ฌ์„ฑ์€ ์ฑ„๋„, ํŒจํ‚ค์ง€, ๋‹ค์ด, ํ”Œ๋ ˆ์ธ์ด ๊ฐ๊ฐ ์–ผ๋งˆ๋‚˜ ์ž˜ ์ฑ„์›Œ์ง€๋Š”์ง€์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ํฐ ์ˆœ์ฐจ I/O์™€ ๋†’์€ Queue Depth๋Š” ์ด ๊ณ„์ธต์„ ์ž˜ ํ™œ์šฉํ•˜์ง€๋งŒ, 4KB ๋žœ๋ค I/O๋‚˜ ๋‚ฎ์€ QD๋Š” ์ž์›์„ ๋‚จ๊ธฐ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ธ๊ณผ ๋‹ค์ด ์ธํ„ฐ๋ฆฌ๋น™์€ ๋ณ‘๋ ฌ์„ฑ์„ ํฌ๊ฒŒ ๋Œ์–ด์˜ฌ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฐ™์€ ์œ„์น˜ ์ •๋ ฌ, ๊ณต์œ  ๋ฒ„์Šค, ECC, GC, ์ „๋ ฅ ํ•œ๊ณ„๊ฐ€ ํ•จ๊ป˜ ๋”ฐ๋ผ์˜ต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์ข‹์€ SSD ์„ฑ๋Šฅ์€ NAND ์„ธ๋Œ€ ์ž์ฒด๋ณด๋‹ค ํ˜ธ์ŠคํŠธ I/O ํŒจํ„ด์„ ๋‚ด๋ถ€ ์ž์›์— ๋งž๊ฒŒ ์ •๋ ฌํ•˜๋Š” ๋Šฅ๋ ฅ์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค.