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๋ก ํ์ํ ๋ค ๋งคํ ํ ์ด๋ธ๋ง ์ ๋ฌผ๋ฆฌ ์์น๋ก ๋ฐ๊ฟ๋๋ค.
๊ทธ๋ฆผ 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 | ์ฑ๋ฅ๊ณผ ๋ฉํ๋ฐ์ดํฐ์ ๊ท ํ์ด ์ข์ | ๊ตฌํ ๋ณต์ก๋๊ฐ ๋์ |
๊ทธ๋ฆผ 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๋ก ๋ ๋ถ๋๋ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๊ทธ๋ฆผ 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์ ์ง์ฐ ํ๋ค๋ฆผ๋ ์ปค์ง๋๋ค.
๊ทธ๋ฆผ 4. TRIM/Discard๊ฐ GC migration ์๊ณผ WAF๋ฅผ ์ค์ด๋ ๊ฒฝ๋ก
4. Wear Leveling
NAND ๋ธ๋ก์ ์ ํ๋ P/E cycle๋ง ๊ฒฌ๋ ์ ์์ผ๋ฏ๋ก, ํน์ ๋ธ๋ก์ ์ฐ๊ธฐ๊ฐ ๋ชฐ๋ฆฌ๋ฉด ๊ทธ ๋ธ๋ก์ด ๋จผ์ ๋ณ์ ์ ์ฒด SSD ์๋ช ์ด ์งง์์ง๋๋ค. Wear Leveling์ ๋ธ๋ก๋ค์ erase count๋ฅผ ๊ฐ๋ฅํ ํ ๊ณ ๋ฅด๊ฒ ๋ง๋๋ ์ ์ฑ ์ ๋๋ค.
๋์ Wear Leveling์ ์ ์ฐ๊ธฐ๋ฅผ ์๋์ ์ผ๋ก ๋ ๋ณ์ ๋ธ๋ก์ ๋ฐฐ์นํ๊ณ , ์ ์ Wear Leveling์ ์ค๋ซ๋์ ๋ฐ๋์ง ์๋ cold data๋ ๊ฐ๋ ์ฎ๊ฒจ ํน์ ๋ธ๋ก๋ง ์ง๋์น๊ฒ '์ ๊ฒ' ๋จ๋ ํ์์ ๋ง์ต๋๋ค.
๊ทธ๋ฆผ 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 ์ ๋ต๊น์ง ํจ๊ป ๋ด์ผ ํฉ๋๋ค.
๊ทธ๋ฆผ 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. ๊ด๋ จ ๊ธฐ์
-
NAND NVMe SSD Analysis: NAND์ Page/Block ๋น๋์นญ, FTL, TRIM, ์ค๋ฒํ๋ก๋น์ ๋์ ์ ์ฒด ํ๋ฆ
-
NAND Flash Internals: ํ๋กํ ๊ฒ์ดํธ/charge trap, Vth, Program/Erase ๋ฌผ๋ฆฌ
-
VFS FS PageCache BlockIO: OS ์ ์ฅ์ฅ์น ๊ฒฝ๋ก์ TRIM ์ ๋ฌ ๊ฒฝ๋ก
-
SSD Internal Parallelism Channel Die Plane: ์ฑ๋/๋ค์ด/ํ๋ ์ธ ๋ณ๋ ฌ์ฑ
-
NVMe Architecture: NVMe ํ ๊ตฌ์กฐ์ Deallocate ๊ณ์ด ๋ช ๋ น
-
ECC Error Correction: BCH, LDPC์ NAND ์ค๋ฅ ์ ์
-
Flash memory controller: FTL, wear leveling, garbage collection ๊ฐ์
-
Wear leveling: dynamic/static/global wear leveling ๊ฐ๋
-
TRIM (computing): TRIM/UNMAP/Deallocate์ write amplification
์ฐธ๊ณ ๋ฌธํ
-
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 ์ฒ๋ฆฌ๊น์ง๋ฅผ ํ๋์ ํ๋ฃจํ๋ก ์ต์ ํํ๋ ๋ฌธ์ ๋ก ์ดํดํด์ผ ํฉ๋๋ค.