FlexFS: A Flexible Flash File System for MLC NAND Flash Memory Sungjin Lee , Keonsoo Ha, Kangwon Zhang, Jihong Kim, and Junghwan Kim* School of Computer Science and Engineering Seoul National University * Samsung Advanced Institute of Technology Samsung Electronics USENIX Annual Technical Conference 2009
Outline • Introduction • Background • Flexible Flash File System • Experimental Results • Conclusion
Introduction • NAND flash memory is becoming an attractive storage solution Laptops Desirable characteristics (high perf. & low power) Density increases NAND flash memory Server storage Mobile phones • Two types of NAND flash memory • Single-Level Cell (SLC) and Multi-Level Cell (MLC) NAND flash memory • They are distinctive in terms of performance, capacity, and endurance
Comparisons of SLC and MLC flashes Performance Endurance Performance Endurance Low performance High performance High capacity Low capacity Capacity Capacity MLC Flash Memory SLC Flash Memory (2 bits / cell) (1 bit / cell)
Comparisons of SLC and MLC flashes • However, consumers want to have a storage system with high performance, high capacity, and high endurance Performance Endurance Capacity Ideal NAND flash memory • How to take the benefits of two different types of NAND flash memory
Flexible Cell Programming • A writing method of MLC flash memory that allows each memory cell to be used as SLC or MLC • Makes it possible to take benefits of two different types of NAND flash memory High performance High capacity Performance Endurance Flexible cell programming Capacity MLC Flash Memory (2 bits / cell)
Our Approach • Proposes a flash file system called FlexFS – Exploits the flexible cell programming of MLC flash memory – Provides the high performance of SLC flash memory and the capacity of MLC flash memory – Provides a mechanism that copes with a poor wear characteristic of MLC flash memory – Designed for mobile systems, such as mobile phones • Implements on a real system – Implements FlexFS on a real mobile platform – Evaluates FlexFS with real mobile workloads
Outline • Introduction • Background • Flexible Flash File System • Experimental Results • Conclusion
NAND Flash Memory - Overview Flash memory organization • – A chip (e.g., 1 GB) ⇒ blocks (e.g., 512 KB) ⇒ pages (e.g., 4 KB) ⇒ cells page 1 page 1 page 1 page 2 page 2 page 2 …… … … … page k page k page k memory cell block 1 block 2 block n ( 1 or more bits) A chip Flash memory characteristics • – Asymmetric read/write and erase operations • A page is a unit of read/write and a block is a unit of erase – Physical restrictions • Erase-before-write restriction • The number of erase cycles allowed for each block is limited
NAND Flash Memory - Cell Flash memory cell : a floating gate transistor • – The number of electrons on the floating gate determines the threshold voltage V t – The threshold voltage represents a logical bit value (e.g., ‘1’ or ‘0’) 0 0 LSB bit MSB bit Floating gate transistor Threshold voltage distributions
Flexible Cell Programming The flexible cell programming is a writing method of MLC flash memory • (1) MLC programming method • – Uses all four values of cell by writing data to both LSB and MSB bits – Low performance / High capacity (2 bits per cell) (2) SLC programming method • – Uses only two values of cell by writing data to LSB bit (or MSB bit) – High performance / Low capacity (1 bit per cell) ≈ SLC MLC
Outline • Introduction • Background • Flexible Flash File System • Experimental Results • Conclusion
Overall Architecture • Flash Manager Virtual File System – Manages heterogeneous cells VFS Interface • Performance manager FlexFS – Exploits I/O characteristics – To achieve the high performance Performance Wear and high capacity Manager Manager Flash Manager • Wear manager – Guarantees a reasonable lifetime – Distributes erase cycles evenly MLC NAND Flash Memory
Overall Architecture Virtual File System VFS Interface FlexFS Wear Manager Performance Manager Flash Manager MLC NAND Flash Memory
How Flash Manager Handles Heterogeneous Cells Three types of flash memory block: SLC block, MLC block, and free block • Manages them as two regions and one free block pool • MLC region SLC region MLC block 1 MLC block 2 SLC block 1 SLC block 2 SLC block 3 (512 KB) (512 KB) (256 KB) (256 KB) (256 KB) Free block pool Free block Free block (Unknown) (Unknown) Logical Flash Memory View Free block pool MLC block 2 SLC block 1 SLC block 2 MLC block 1 SLC block 3 Free block Free block (256 KB) (256 KB) (512 KB) (256 KB) (512 KB) (Unknown) (Unknown) Physical Flash Memory View
Overall Architecture Virtual File System VFS Interface FlexFS Wear Manager Performance Manager Flash Manager MLC NAND Flash Memory
Performance Manager • Manages SLC and MLC regions Requested data – To provide the SLC performance and MLC capacity Hot Cold – Exploits I/O characteristics, such as Dynamic Allocation idle time and locality • Three key techniques MLC region SLC region – Dynamic allocation Cold – Background migration Background Migration – Locality-aware data management
Baseline Approach Incoming I/O requests should be suspended, Requested data incurring performance degradation Incoming data is written to SLC region SLC programming SLC block SLC block SLC block MLC block MLC block (256 KB) (256 KB) (256 KB) (512 KB) (512 KB) MLC region SLC region MLC programming Moves data to MLC region Free block when free space is exhausted (Unknown) Free block pool
Background Migration Requested data SLC programming SLC block SLC block SLC block MLC block MLC block (256 KB) (256 KB) (256 KB) (512 KB) (512 KB) MLC region SLC region Background Migration Exploit idle times to hide migration overhead Free block (Unknown) from end-user Free block pool
Background Migration Triggers data migrations in background, not doing it on-demand • – Generates enough free blocks for SLC programming if idle time is sufficient I/O request Response time delay !!! Idle time User I/O request SLC programming SLC programming Data migration MLC programming (SLC → MLC) Time Detect idle time & Try to suspend Trigger data migration data migration
Background Migration Triggers data migrations in background, not doing it on-demand • – Generates enough free blocks for SLC programming if idle time is sufficient I/O request Idle time User I/O request SLC programming SLC programming Data migration (SLC → MLC) Time Detect idle time & Stop data migration Start data migration Utilizes a small fraction of all the available idle time (e.g., 10%) • – Reduces the probability that I/O request is issued while migration is running
Dynamic Allocation If system has insufficient idle times, Requested data it cannot generate enough free blocks SLC programming SLC block MLC block MLC block SLC block SLC block SLC block (256 KB) (512 KB) (512 KB) (256 KB) (256 KB) (256 KB) MLC region SLC region Background Migration Free block (Unknown) Free block pool
Dynamic Allocation Writes part of data to MLC region Requested data depending on the amount of idle time Dynamic Allocation SLC block MLC block MLC block SLC block SLC block SLC block (256 KB) (512 KB) (512 KB) (256 KB) (256 KB) (256 KB) MLC region SLC region (1.0 MB) (1.0 MB) Background Migration Free block (Unknown) Free block pool
Dynamic Allocation Divides the time into several time windows • – Time window presents the period during which Np pages are written T predict Idle Busy … N p N p Previous Next Previous time window time window time window – Predicts the idle time T predict for the next time window Calculates the allocation ratio, α • – Determine the amount of data destined for the SLC or MLC region T predict α = (If T predict ≥ N p · T copy , then α = 1.0) N p · T copy Where T copy is the time required to copy a single page from SLC to MLC
Dynamic Allocation Distributes the incoming data across two regions depending on α • 10 pages 4 pages 6 pages Dynamic Allocation α = 0.6 MLC block MLC block MLC block SLC block SLC block (512 KB) (512 KB) (512 KB) (256 KB) (256 KB) MLC region SLC region (1.5 MB) (512 KB) Background Migration
Locality-aware Data Management Hot data will be invalidated shortly; it has a high temporal locality • Data migration for hot data is unnecessary • – Reduce the amount of data to move to MLC region from SLC region T predict α = ↑ ↓ hot ) · T copy (N p - N p hot is the number of hot pages for a time window Where N p – Increase the value of α for the same amount of idle times
Locality-aware Data Management Requested data Cold data Hot data Dynamic Allocation MLC block MLC block SLC block SLC block SLC block (512 KB) (512 KB) (256 KB) (256 KB) (256 KB) MLC region SLC region Cold data Free block Free block Background Migration (Unknown) (Unknown) Free block pool
Overall Architecture Virtual File System VFS Interface FlexFS Wear Manager Performance Manager Flash Manager MLC NAND Flash Memory
Recommend
More recommend