๐Ÿ’พ NAND

FTL WearLeveling GarbageCollection

FTL ยท Wear Leveling ยท Garbage Collection ์ƒ์„ธ ๋ถ„์„

Logical-to-Physical Mapping ยท Out-of-Place Update ยท WAF ยท Over-Provisioning ยท TRIM

NAND๋Š” ์ฝ๊ธฐ/์“ฐ๊ธฐ๋ฅผ Page ๋‹จ์œ„๋กœ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, ์ด๋ฏธ ์“ด ์œ„์น˜๋ฅผ ๊ณง๋ฐ”๋กœ ๋ฎ์–ด์“ธ ์ˆ˜ ์—†๊ณ  ์†Œ๊ฑฐ๋Š” ๋” ํฐ Block ๋‹จ์œ„๋กœ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ๋ฌธ์„œ๋Š” ์ด ๋น„๋Œ€์นญ์„ฑ์„ ๊ฐ์ถ”๊ธฐ ์œ„ํ•ด SSD๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” FTL์˜ ์ฃผ์†Œ ๋งคํ•‘, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜, ๋งˆ๋ชจ ํ‰์ค€ํ™”, ์˜ค๋ฒ„ํ”„๋กœ๋น„์ €๋‹์„ ํ•˜๋‚˜์˜ ๋™์ž‘ ์ฒด๊ณ„๋กœ ์—ฐ๊ฒฐํ•ด ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ SSD ํ’ˆ์งˆ์€ ๋‹จ์ˆœํžˆ NAND ์…€ ์†๋„๋งŒ์œผ๋กœ ๊ฒฐ์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ NAND๋ฅผ ์จ๋„ ๋งคํ•‘ ํ…Œ์ด๋ธ”์„ ์–ผ๋งˆ๋‚˜ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š”์ง€, free block pool์„ ์–ผ๋งˆ๋‚˜ ๋‘๊ป๊ฒŒ ํ™•๋ณดํ•˜๋Š”์ง€, TRIM๊ณผ background GC๋ฅผ ์–ผ๋งˆ๋‚˜ ์ž˜ ์—ฎ๋Š”์ง€์— ๋”ฐ๋ผ ๋žœ๋ค์“ฐ๊ธฐ ์ง€์—ฐ, WAF, ์ˆ˜๋ช…, tail latency๊ฐ€ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ FTL์€ NAND ์ œ์•ฝ์„ ์ˆจ๊ธฐ๋Š” ๋ฒˆ์—ญ๊ธฐ์ด๋ฉด์„œ ๋™์‹œ์— ์„ฑ๋Šฅ๊ณผ ๋‚ด๊ตฌ์„ฑ์„ ์กฐ์ •ํ•˜๋Š” ์ •์ฑ… ์—”์ง„์œผ๋กœ ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1. FTL์ด ํ•„์š”ํ•œ ๊ทผ๋ณธ ์ด์œ 

ํ˜ธ์ŠคํŠธ์™€ ์šด์˜์ฒด์ œ๋Š” SSD๋ฅผ ์ผ๋ฐ˜ ๋ธ”๋ก ๋””๋ฐ”์ด์Šค์ฒ˜๋Ÿผ ์ทจ๊ธ‰ํ•˜๋ฉฐ LBA(Logical Block Address) ๋‹จ์œ„๋กœ ์ฝ๊ณ  ์”๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ NAND๋Š” erase-before-write ์ œ์•ฝ ๋•Œ๋ฌธ์— ๊ฐ™์€ LBA๋ฅผ ๋‹ค์‹œ ์จ๋„ ์›๋ž˜ ๋ฌผ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ๋ฎ์–ด์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ SSD๋Š” '๋ณด์ด๋Š” ์ฃผ์†Œ(LBA)'์™€ '์‹ค์ œ ์œ„์น˜(PPA)'๋ฅผ ๋ถ„๋ฆฌํ•ด ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ๋ฐ์ดํ„ฐ๋Š” ํ•ญ์ƒ ๋นˆ ํŽ˜์ด์ง€์— out-of-place๋กœ ๊ธฐ๋กํ•˜๊ณ , ๊ธฐ์กด ํŽ˜์ด์ง€๋Š” invalid๋กœ ํ‘œ์‹œํ•œ ๋’ค ๋งคํ•‘ ํ…Œ์ด๋ธ”๋งŒ ์ƒˆ ๋ฌผ๋ฆฌ ์œ„์น˜๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

nand_0020_ftl_wearleveling_garbagecollection

๊ทธ๋ฆผ 1. in-place update ๋ถˆ๊ฐ€์™€ FTL์˜ Logicalโ†’Physical ๋งคํ•‘ ํ•„์š”์„ฑ

Out-of-Place Update

์ด ๊ตฌ์กฐ ๋•๋ถ„์— ํ˜ธ์ŠคํŠธ๋Š” ํ‰๋ฒ”ํ•œ overwrite์ฒ˜๋Ÿผ ๋ณด์ด๋Š” I/O๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” invalid page๊ฐ€ ๋ˆ„์ ๋˜๊ณ  free block pool์„ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋‹ด์ด ์ƒ๊น๋‹ˆ๋‹ค. FTL์€ ๋ฐ”๋กœ ์ด ๋ถ€๋‹ด์„ ๊ฐ์ถ”๋Š” ํ•ต์‹ฌ ํŽŒ์›จ์–ด ๊ณ„์ธต์ž…๋‹ˆ๋‹ค.

2. FTL ๋งคํ•‘ ๊ตฌ์กฐ

๊ฐ€์žฅ ์„ธ๋ฐ€ํ•œ ๋ฐฉ์‹์€ Page Mapping์ž…๋‹ˆ๋‹ค. 4KB ๋˜๋Š” 16KB ํŽ˜์ด์ง€๋งˆ๋‹ค ๊ฐœ๋ณ„ PPA๋ฅผ ๋ถ™์ด๋ฏ€๋กœ ๋žœ๋ค์“ฐ๊ธฐ์™€ overwrite๊ฐ€ ๋งŽ์€ ์›Œํฌ๋กœ๋“œ์— ์œ ๋ฆฌํ•˜์ง€๋งŒ, ๋งคํ•‘ ํ…Œ์ด๋ธ” ํฌ๊ธฐ๊ฐ€ ์ปค DRAM ๋น„์šฉ์ด ์ปค์ง‘๋‹ˆ๋‹ค.

๋ฐ˜๋Œ€๋กœ Block Mapping์€ ํ…Œ์ด๋ธ”์ด ์ž‘์ง€๋งŒ ๊ฐฑ์‹  ๋‹จ์œ„๊ฐ€ ๊ฑฐ์น ๊ณ , ์ž‘์€ overwrite๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋‚ด๋ถ€ copy๊ฐ€ ๋งŽ์•„์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‹ค์ œ SSD๋Š” ๋ฐ์ดํ„ฐ ๋ธ”๋ก๊ณผ ๋กœ๊ทธ ๋ธ”๋ก์„ ์กฐํ•ฉํ•œ Hybrid Mapping์ด๋‚˜ page-level cache๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

๋งคํ•‘ ๋ฐฉ์‹ ๋น„๊ต

๋ฐฉ์‹ ๋งคํ•‘ ๋‹จ์œ„ ์žฅ์  ํ•œ๊ณ„
Page Mapping Page ๋žœ๋ค ์“ฐ๊ธฐ์™€ overwrite์— ๊ฐ•ํ•จ ๋งคํ•‘ ํ…Œ์ด๋ธ”์ด ์ปค์„œ DRAM ๋ถ€๋‹ด์ด ํผ
Block Mapping Block ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ์ž‘๊ณ  ๋‹จ์ˆœํ•จ ์ž‘์€ overwrite์—์„œ copy ๋น„์šฉ์ด ํผ
Hybrid Mapping Page + Block ์„ฑ๋Šฅ๊ณผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ๊ท ํ˜•์ด ์ข‹์Œ ๊ตฌํ˜„ ๋ณต์žก๋„๊ฐ€ ๋†’์Œ
FTL WearLeveling GarbageCollection

๊ทธ๋ฆผ 2. Page Mapping / Block Mapping / Hybrid Mapping ๊ตฌ์กฐ ๋น„๊ต

๋งคํ•‘ ํ…Œ์ด๋ธ”๊ณผ DRAM/HMB

๋งคํ•‘ ํ…Œ์ด๋ธ”์€ ๋น ๋ฅธ ์กฐํšŒ๋ฅผ ์œ„ํ•ด ๋Œ€๊ฐœ ์ปจํŠธ๋กค๋Ÿฌ ๋‚ด DRAM์— ๋†“์ž…๋‹ˆ๋‹ค. DRAM-less SSD๋Š” Host Memory Buffer(HMB)๋‚˜ ๋” ์ž‘์€ ์บ์‹œ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด ์ผ๋ถ€๋งŒ ์œ ์ง€ํ•˜๋ฉฐ, ๊ทธ ๋Œ€๊ฐ€๋กœ ๋žœ๋ค ์ ‘๊ทผ ์ง€์—ฐ์ด ๋Š˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋งคํ•‘ ์ •๋ณด๋Š” ์ „์› ์ฐจ๋‹จ ์ดํ›„์—๋„ ๋ณต๊ตฌ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ, SSD๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ mapping checkpoint๋ฅผ NAND ๋ฉ”ํƒ€ ์˜์—ญ์— ๊ธฐ๋กํ•˜๊ฑฐ๋‚˜ ์ €๋„ ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝ๋ถ„์„ ๋‚จ๊น๋‹ˆ๋‹ค. ์ด ๋ณต๊ตฌ ๊ฒฝ๋กœ๊ฐ€ ๋А๋ฆฌ๋ฉด ๋ถ€ํŒ… ์งํ›„ ์ดˆ๊ธฐ ์Šค์บ” ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ณ , ๋„ˆ๋ฌด ์ž์ฃผ ๊ธฐ๋กํ•˜๋ฉด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ ์ž์ฒด๊ฐ€ WAF๋ฅผ ํ‚ค์šฐ๋ฏ€๋กœ ๊ตฌํ˜„ ๊ท ํ˜•์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„๋Œ€ SSD ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ด ๋งคํ•‘ ์™ธ์—๋„ bad block management, ECC, read disturb management๋ฅผ ํ•จ๊ป˜ ์ˆ˜ํ–‰ํ•ด NAND์˜ ๋ฌผ๋ฆฌ์  ์—ดํ™”๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

3. Garbage Collection

out-of-place ์“ฐ๊ธฐ๊ฐ€ ๊ณ„์†๋˜๋ฉด ๋ธ”๋ก ๊ณณ๊ณณ์— valid ํŽ˜์ด์ง€์™€ invalid ํŽ˜์ด์ง€๊ฐ€ ์„ž์ž…๋‹ˆ๋‹ค. SSD๋Š” invalid ๋น„์œจ์ด ๋†’์€ victim block์„ ๊ณ ๋ฅธ ๋’ค valid ํŽ˜์ด์ง€๋งŒ ์ƒˆ ๋ธ”๋ก์œผ๋กœ ์˜ฎ๊ธฐ๊ณ , ์›๋ž˜ ๋ธ”๋ก ์ „์ฒด๋ฅผ ์†Œ๊ฑฐํ•ด free block์œผ๋กœ ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

์ด migration์€ ํ˜ธ์ŠคํŠธ๊ฐ€ ์š”์ฒญํ•˜์ง€ ์•Š์€ ์ถ”๊ฐ€ ์“ฐ๊ธฐ์ด๋ฏ€๋กœ Write Amplification์˜ ์ง์ ‘ ์›์ธ์ž…๋‹ˆ๋‹ค. free block์ด ๋ถ€์กฑํ•œ ์ˆœ๊ฐ„์— ์‹คํ–‰๋˜๋Š” foreground GC๋Š” tail latency๋ฅผ ํฌ๊ฒŒ ํ”๋“ค๊ณ , ์ถฉ๋ถ„ํ•œ ์—ฌ์œ  ๋ธ”๋ก์ด ์žˆ์œผ๋ฉด background GC๋กœ ๋” ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

FTL WearLeveling GarbageCollection

๊ทธ๋ฆผ 3. Invalid Page ๋ˆ„์  -> Victim Block ์„ ํƒ -> Valid Page Migration -> Erase

GC ํŠธ๋ฆฌ๊ฑฐ์™€ TRIM

์šด์˜์ฒด์ œ๊ฐ€ TRIM/Discard๋ฅผ ๋ณด๋‚ด๋ฉด SSD๋Š” ๋” ์ด์ƒ ์˜๋ฏธ ์—†๋Š” LBA๋ฅผ ๋ฏธ๋ฆฌ invalid๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์–ด migration ์–‘์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŒŒ์ผ ์‚ญ์ œ๋‚˜ ์„ธ๊ทธ๋จผํŠธ ์ •๋ฆฌ๋ฅผ ์ •ํ™•ํžˆ ํ†ต์ง€ํ•˜๋Š” ์ƒ์œ„ ์†Œํ”„ํŠธ์›จ์–ด๋Š” WAF์™€ ์ง€์—ฐ์‹œ๊ฐ„์„ ๋™์‹œ์— ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

victim block ์„ ํƒ๋„ ๋‹จ์ˆœํžˆ invalid ๋น„์œจ ํ•˜๋‚˜๋กœ ๋๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์ปจํŠธ๋กค๋Ÿฌ๋Š” reclaim ํšจ์œจ, erase count ํŽธ์ฐจ, ์ฑ„๋„/๋‹ค์ด ๋ถ€ํ•˜, foreground ๊ธด๊ธ‰๋„๊นŒ์ง€ ํ•จ๊ป˜ ๊ณ ๋ คํ•ด victim์„ ๊ณ ๋ฅด๋ฉฐ, ์ด ์„ ํƒ์ด ๊ณต๊ฒฉ์ ์ผ์ˆ˜๋ก ๊ณต๊ฐ„ ํšŒ์ˆ˜๋Š” ๋นจ๋ผ์ง€์ง€๋งŒ copy cost์™€ ์ง€์—ฐ ํ”๋“ค๋ฆผ๋„ ์ปค์ง‘๋‹ˆ๋‹ค.

FTL WearLeveling GarbageCollection

๊ทธ๋ฆผ 4. TRIM/Discard๊ฐ€ GC migration ์–‘๊ณผ WAF๋ฅผ ์ค„์ด๋Š” ๊ฒฝ๋กœ

4. Wear Leveling

NAND ๋ธ”๋ก์€ ์ œํ•œ๋œ P/E cycle๋งŒ ๊ฒฌ๋”œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ํŠน์ • ๋ธ”๋ก์— ์“ฐ๊ธฐ๊ฐ€ ๋ชฐ๋ฆฌ๋ฉด ๊ทธ ๋ธ”๋ก์ด ๋จผ์ € ๋‹ณ์•„ ์ „์ฒด SSD ์ˆ˜๋ช…์ด ์งง์•„์ง‘๋‹ˆ๋‹ค. Wear Leveling์€ ๋ธ”๋ก๋“ค์˜ erase count๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ณ ๋ฅด๊ฒŒ ๋งŒ๋“œ๋Š” ์ •์ฑ…์ž…๋‹ˆ๋‹ค.

๋™์  Wear Leveling์€ ์ƒˆ ์“ฐ๊ธฐ๋ฅผ ์ƒ๋Œ€์ ์œผ๋กœ ๋œ ๋‹ณ์€ ๋ธ”๋ก์— ๋ฐฐ์น˜ํ•˜๊ณ , ์ •์  Wear Leveling์€ ์˜ค๋žซ๋™์•ˆ ๋ฐ”๋€Œ์ง€ ์•Š๋Š” cold data๋„ ๊ฐ€๋” ์˜ฎ๊ฒจ ํŠน์ • ๋ธ”๋ก๋งŒ ์ง€๋‚˜์น˜๊ฒŒ '์ Š๊ฒŒ' ๋‚จ๋Š” ํ˜„์ƒ์„ ๋ง‰์Šต๋‹ˆ๋‹ค.

FTL WearLeveling GarbageCollection

๊ทธ๋ฆผ 5. ๋™์ /์ •์  Wear Leveling๊ณผ Hot/Cold Data ๋ถ„์‚ฐ ์ „๋žต

5. ์˜ค๋ฒ„ํ”„๋กœ๋น„์ €๋‹๊ณผ QoS

์˜ค๋ฒ„ํ”„๋กœ๋น„์ €๋‹(OP)์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœ๋˜์ง€ ์•Š๋Š” ์˜ˆ๋น„ ์šฉ๋Ÿ‰์œผ๋กœ, free block pool์„ ๋‘ํ…๊ฒŒ ์œ ์ง€ํ•ด GC์™€ Wear Leveling์ด ์ˆจ ์‰ด ๊ณต๊ฐ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. OP๊ฐ€ ์ž‘์œผ๋ฉด migration ์••๋ฐ•์ด ์ปค์ง€๊ณ  write cliff๊ฐ€ ๋นจ๋ฆฌ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋Œ€๋กœ enterprise SSD์ฒ˜๋Ÿผ OP๊ฐ€ ์ถฉ๋ถ„ํ•˜๋ฉด idle ๊ตฌ๊ฐ„์— ๋ฏธ๋ฆฌ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด WAF๊ฐ€ ๋‚ฎ์•„์ง€๊ณ  ์„ฑ๋Šฅ ์˜ˆ์ธก์„ฑ์ด ์ข‹์•„์ง‘๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ FTL์˜ ํ’ˆ์งˆ์€ ๋งคํ•‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด๋ฟ ์•„๋‹ˆ๋ผ free block budget๊ณผ background maintenance ์ „๋žต๊นŒ์ง€ ํ•จ๊ป˜ ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

FTL WearLeveling GarbageCollection

๊ทธ๋ฆผ 6. Free Block Pool, OP, Background GC๊ฐ€ Tail Latency์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ

6. ์žฅ๋‹จ์ 

์žฅ์ 

  • out-of-place update์™€ L2P ๋งคํ•‘ ๋•๋ถ„์— ํ˜ธ์ŠคํŠธ๋Š” ์ผ๋ฐ˜ ๋ธ”๋ก ๋””๋ฐ”์ด์Šค์ฒ˜๋Ÿผ SSD๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Wear Leveling์€ erase count๋ฅผ ๋ถ„์‚ฐํ•ด ํŠน์ • ๋ธ”๋ก์˜ ์กฐ๊ธฐ ๊ณ ์žฅ์„ ์ค„์ž…๋‹ˆ๋‹ค.

  • ์˜ค๋ฒ„ํ”„๋กœ๋น„์ €๋‹๊ณผ background GC๋Š” idle ๊ตฌ๊ฐ„์— ์ •๋ฆฌ๋ฅผ ๋ฐ€์–ด ๋„ฃ์–ด WAF์™€ tail latency๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • TRIM/Discard๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋ถˆํ•„์š”ํ•œ migration์„ ์ค„์—ฌ ์ˆ˜๋ช…๊ณผ ์„ฑ๋Šฅ์„ ํ•จ๊ป˜ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•œ๊ณ„

  • page mapping์€ ์„ฑ๋Šฅ์ด ์ข‹์ง€๋งŒ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋น„์šฉ์ด ์ปค์„œ DRAM ์˜์กด๋„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค.

  • block mapping์€ ๊ตฌํ˜„์ด ๋‹จ์ˆœํ•˜์ง€๋งŒ ์ž‘์€ overwrite๊ฐ€ ๋งŽ์„์ˆ˜๋ก ๋‚ด๋ถ€ copy๊ฐ€ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค.

  • free block pool์ด ๋ถ€์กฑํ•˜๋ฉด foreground GC๊ฐ€ ๋ฐœ์ƒํ•ด ์ง€์—ฐ ๋ณ€๋™์„ฑ์ด ์ปค์ง‘๋‹ˆ๋‹ค.

  • ์ •์  wear leveling์€ ์ˆ˜๋ช…์„ ๋Š˜๋ฆฌ์ง€๋งŒ cold data migration ๋•Œ๋ฌธ์— ์ถ”๊ฐ€ ์“ฐ๊ธฐ ๋น„์šฉ์ด ์ƒ๊น๋‹ˆ๋‹ค.

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

์ฐธ๊ณ  ๋ฌธํ—Œ

  • Garth Goodson, Rahul Iyer, Design Tradeoffs in a Flash Translation Layer (PDF: https://web.archive.org/web/20150623162937/http://drona.csa.iisc.ernet.in/~gopi/west10/goodson.pdf)

  • Li-Pin Chang, On Efficient Wear Leveling for Large Scale Flash Memory Storage Systems (CiteSeerX: https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.103.4903)

  • Feng Chen, Tian Luo, Xiaodong Zhang, CAFTL: a content-aware flash translation layer enhancing the lifespan of flash memory based solid state drives (FAST'11: https://dl.acm.org/doi/10.5555/1960475.1960481)

  • Kingston, Flash Memory Guide (PDF: http://media.kingston.com/pdfs/FlashMemGuide.pdf)

  • OCZ Technology, SSDs - Write Amplification, TRIM and GC (PDF: https://web.archive.org/web/20120526033947/http://www.oczenterprise.com/whitepapers/ssds-write-amplification-trim-and-gc.pdf)

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

FTL์€ ๋‹จ์ˆœํ•œ ์ฃผ์†Œ ๋ณ€ํ™˜ ํ…Œ์ด๋ธ”์ด ์•„๋‹ˆ๋ผ, NAND์˜ ๋น„๋Œ€์นญ์„ฑ๊ณผ ์ˆ˜๋ช… ์ œ์•ฝ์„ ์ผ๋ฐ˜ ๋ธ”๋ก ์ธํ„ฐํŽ˜์ด์Šค ๋’ค์— ์ˆจ๊ธฐ๋Š” ์šด์˜ ์ฒด์ œ์™€ ๊ฐ™์€ ๊ณ„์ธต์ž…๋‹ˆ๋‹ค. ๋งคํ•‘์ด ์œ ์—ฐํ• ์ˆ˜๋ก ์„ฑ๋Šฅ์€ ์ข‹์•„์ง€์ง€๋งŒ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋น„์šฉ์ด ๋Š˜๊ณ , GC/Wear Leveling์ด ๊ณต๊ฒฉ์ ์ผ์ˆ˜๋ก ์ˆ˜๋ช…์€ ์ข‹์•„์ง€์ง€๋งŒ ๋‚ด๋ถ€ ์“ฐ๊ธฐ์™€ ์ง€์—ฐ ๋ณ€๋™์„ฑ์ด ์ปค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ข‹์€ SSD ์„ค๊ณ„๋Š” L2P ๋งคํ•‘, GC, Wear Leveling, OP, DRAM/HMB, TRIM ์ฒ˜๋ฆฌ๊นŒ์ง€๋ฅผ ํ•˜๋‚˜์˜ ํ๋ฃจํ”„๋กœ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฌธ์ œ๋กœ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

FTL WearLeveling GarbageCollection
FTL WearLeveling GarbageCollection
FTL WearLeveling GarbageCollection
FTL WearLeveling GarbageCollection
FTL WearLeveling GarbageCollection
FTL WearLeveling GarbageCollection