Chapter#20 Flash-based SSDs
- Flash-based SSD
- Direct Mapped FTL
- Log-structured FTL
- Wear-leveling
Flahs-based SSD
Solid-state Storage Drives (SSDs)
- much shorter I/O latency (e.g. 10ms vs 50us)
- much higher I/O throughput (e.g. 100MB/s vs 5GB/s)
- DRAM과 다르게 power가 꺼져도 data 유지
- key technology : NAND flash memory
NAND Flash
- HDD는 transistor based이지만
- SSD는 NAND Flahs memory based이다 > non-volatile. one bits are stored in floating gate transistor
program operation으로 0으로 값 지정 : Data '0' > program > shift cell Vth to high > off state > no current flow
erasure operation으로 1로 값 지정 : Data '1' > erasure > shift cell Vth to low > on state > current flow
read operation으로 값 읽어옴
page : group of NAND cells. 4K-16K cells
block : group of pages. 128-256 pages
- In-place update 불가능 : page를 바꾸기 위해 block부터 지워야함
flash die : group of blocks
NAND Flash Chip : 2 or 4 flash dies
Page Read to SRAM | 50us |
Page Program (Write) from SRAM | 500us |
Block Erasure | 4ms |
Serial Access to SRAM | 100us (per 4KB) |
Page Size | 16KB |
Block Size | 4MB |
Die Size | 8Gb |
Dies per Package | 1, 2, or 4 |
Read is 10x faster than write : 50us vs 500us
Erasure is slowest : 4ms
Throughput is not so high : 36.4Mb/s for reads
-> NAND chips을 늘림 : 36.4MB/s x 64-128 NAND dies = 2.3-4.7 GB/s
Capacity 증가 방법
Store more than on bit per cell : Multi-level celll(MLC)
3D Stacking : 96-128 layered 3D NAND flash
Summary :
Three operations : read, write, erase
Geometry : pages(4-16KB), blocks(4MB), chips
Limited lifetime : 10K-100K erasure 후에는 block 못쓰게 됨
Virtualizing logical block이 어렵다! (Flahs Translation Layer (FTL) 사용)
SSD Architecture
Direct Mapped FTL
HDD처럼 SSD에도 Directly map logical block N to physical page N : page size는 4KB라 가정
Read logical block N : read physical page N
Write logical block N : complicated
1. read entire flash block
2. erase the flash block
3. write the pages with new content to flash block
- Write amplification factor(WAF) = Write traffic by the client (bytes) / Total write traffic by FTL (bytes)
-> 특정 page가 자주 update되면 해당 page가 속한 block은 금방 고장난다
-> write amplification으로 performance 저하
Log-structured FTL
Logging : write할 때 무조건 currently-being-written-to flash block 다음 free page에 씀
Mapping table : read를 위해서 page 위치를 나타내는 mapping table을 DRAM에 올림
logical block값에 다른 값이 덮어씌워져서 기존 page에 content를 Invalid시켜야하면?
-> garbage collection 필요
Garbage Collection
1. Invalid page가 있는 block의 valid page들 Read
2. 새 block의 free pages에 Write
3. 기존 block erase
4. mapping table 갱신
장점 :
Lower write amplification : WAF 작아짐
Better wear-leveling : 새 block에 append하므로 골고루 block사용하여 더 드물게 wear out됨
단점 :
non-trivial I/O overheads : invalid page를 지우는데 time 소모가 크다
mapping table require lots of DRAM : SSD가 커질수록 요구되는 DRAM이 크다
Demand-based FTLs
swapping idea를 사용 : enitre mapping table은 한 block에 저장해두고 자주 사용되는 page목록만 DRAM에 캐싱함
장점 :
log-structured FTLs보다 적은 DRAM 사용
단점 :
locality 없는 random workloads에서 poor performance
High miss penalty
Wear Leveling
cold page(자주 update안되는 page)들이 몰려있는 block에 비해 hot page(자주 update되는 page)가 있는 block이 더 자주 wear-out 될 수 있음. 이를 잘 조절하려는 것
Dynamic wear leveling : write할 때 가장 덜 사용된 block에 씀
+ 구현이 쉽고 overhead가 작다
- long-lived data를 handling하지 못함
Static wear leveling : 주기적으로 많이 쓰인 block data를 덜 쓰인 block으로 옮김
+ Solve long-lived data problem
- data 이동에 대한 extra I/O발생 => wear-out을 더 일으킬수도 있음
학교 강의를 토대로 개인 공부 목적으로 작성되어 오타가 및 오류가 있을 수 있으며, 문제가 될 시 삭제될 수 있습니다.
'Study > 운영체제' 카테고리의 다른 글
Chapter#22 File System Implementation (0) | 2021.12.11 |
---|---|
Chapter#21 IO : File and Directory (0) | 2021.12.10 |
Chapter#19 I/O : HDD and RAID (0) | 2021.12.10 |
Chapter#18 I/O Device (0) | 2021.12.10 |
Chapter#17 Swapping (0) | 2021.12.10 |