Garbage Collection Technique using Erasure Interval for NAND Flash Memory-based Storage Systems



Similar documents
Offline Deduplication for Solid State Disk Using a Lightweight Hash Algorithm

2LGC: An Atomic-Unit Garbage Collection Scheme with a Two-Level List for NAND Flash Storage

In-Block Level Redundancy Management for Flash Storage System

Implementation of Buffer Cache Simulator for Hybrid Main Memory and Flash Memory Storages

p-oftl: An Object-based Semantic-aware Parallel Flash Translation Layer

SH-Sim: A Flexible Simulation Platform for Hybrid Storage Systems

Data Storage Framework on Flash Memory using Object-based Storage Model

Buffer-Aware Garbage Collection for NAND Flash Memory-Based Storage Systems

FASS : A Flash-Aware Swap System

NAND Flash-based Disk Cache Using SLC/MLC Combined Flash Memory

Flash Memory. Jian-Jia Chen (Slides are based on Yuan-Hao Chang) TU Dortmund Informatik 12 Germany 2015 年 01 月 27 日. technische universität dortmund

BER-Based Wear Leveling and Bad Block Management for NAND Flash

SOS: Software-Based Out-of-Order Scheduling for High-Performance NAND Flash-Based SSDs

Data Distribution Algorithms for Reliable. Reliable Parallel Storage on Flash Memories

RNFTL: A Reuse-Aware NAND Flash Translation Layer for Flash Memory

Design of a NAND Flash Memory File System to Improve System Boot Time

Sampling-based Metadata Management for Flash Storage

A Data De-duplication Access Framework for Solid State Drives

Indexing on Solid State Drives based on Flash Memory

Flash-Friendly File System (F2FS)

Linux flash file systems JFFS2 vs UBIFS

Solid State Drive (SSD) FAQ

Choosing the Right NAND Flash Memory Technology

A multi-channel architecture for high-performance NAND flash-based storage system q

A File-System-Aware FTL Design for Flash-Memory Storage Systems

A PRAM and NAND Flash Hybrid Architecture for High-Performance Embedded Storage Subsystems

Solid State Technology What s New?

Empirical Inspection of IO subsystem for Flash Storage Device at the aspect of discard

Flash Memory Database (FMDB) Issues and Promising

hybridfs: Integrating NAND Flash-Based SSD and HDD for Hybrid File System

HybridLog: an Efficient Hybrid-Mapped Flash Translation Layer for Modern NAND Flash Memory

Don t Let RAID Raid the Lifetime of Your SSD Array

Understanding endurance and performance characteristics of HP solid state drives

NAND Flash FAQ. Eureka Technology. apn5_87. NAND Flash FAQ

FAST 11. Yongseok Oh University of Seoul. Mobile Embedded System Laboratory

NAND Flash Memory Reliability in Embedded Computer Systems

Design of a High-speed and large-capacity NAND Flash storage system based on Fiber Acquisition

Implementation and Challenging Issues of Flash-Memory Storage Systems

Exploiting Self-Adaptive, 2-Way Hybrid File Allocation Algorithm

Impact of Stripe Unit Size on Performance and Endurance of SSD-Based RAID Arrays

NAND Flash Architecture and Specification Trends

Solid State Drive Technology

File Systems for Flash Memories. Marcela Zuluaga Sebastian Isaza Dante Rodriguez

Scalus Winter School Storage Systems

Lifetime Improvement of NAND Flash-based Storage Systems Using Dynamic Program and Erase Scaling

NAND Basics Understanding the Technology Behind Your SSD

SLC vs MLC: Which is best for high-reliability apps?

Endurance Models for Cactus Technologies Industrial-Grade Flash Storage Products. White Paper CTWP006

SLC vs MLC: Proper Flash Selection for SSDs in Industrial, Military and Avionic Applications. A TCS Space & Component Technology White Paper

JAM: Justifiable Allocation of Memory with Efficient Mounting and Fast Crash Recovery for NAND Flash Memory File Systems

Flash 101. Violin Memory Switzerland. Violin Memory Inc. Proprietary 1

Solid State Drive Architecture

The Bleak Future of NAND Flash Memory

Speeding Up Cloud/Server Applications Using Flash Memory

Flash-optimized Data Progression

Differential RAID: Rethinking RAID for SSD Reliability

Algorithms and Methods for Distributed Storage Networks 3. Solid State Disks Christian Schindelhauer

RFLRU: A Buffer Cache Management Algorithm for Solid State Drive to Improve the Write Performance on Mixed Workload

Solid State Drives Data Reliability and Lifetime. Abstract

An Exploration of Hybrid Hard Disk Designs Using an Extensible Simulator

High-Performance SSD-Based RAID Storage. Madhukar Gunjan Chakhaiyar Product Test Architect

Industrial Flash Storage Module

An Overview of Flash Storage for Databases

How To Write On A Flash Memory Flash Memory (Mlc) On A Solid State Drive (Samsung)

Managing Storage Space in a Flash and Disk Hybrid Storage System

DELL SOLID STATE DISK (SSD) DRIVES

HP Thin Clients Flash/SSD Selection

FlashLite: A User-Level Library to Enhance Durability of SSD for P2P File Sharing

The Technologies & Architectures. President, Demartek

A Flash Storage Technical. and. Economic Primer. and. By Mark May Storage Consultant, By James Green, vexpert Virtualization Consultant

UBI with Logging. Brijesh Singh Samsung, India Rohit Vijay Dongre Samsung, India

Benefits of Solid-State Storage

Nasir Memon Polytechnic Institute of NYU

Managing the evolution of Flash : beyond memory to storage

A Storage Architecture for High Speed Signal Processing: Embedding RAID 0 on FPGA

Transcription:

Garbage Collection Technique using Erasure Interval for NAND Flash Memory-based Storage Systems Sung Ho Kim Ph. D. Candidate, Department of Computer Engineering, Yeungnam University, 214-1 Dae-dong, Gyeongsan-si, Gyeongsangbuk-do, South Korea. Jong Wook Kwak Associate Professor, Department of Computer Engineering, Yeungnam University, 214-1 Dae-dong, Gyeongsan-si, Gyeongsangbuk-do, South Korea. Abstract Recently, many storage systems use SSD based on NAND flash memory, which has many advantages such as low power, low access latency and high reliability. However, NAND flash memory has disadvantages such as erase-beforeprogram, limited P/E cycle, and unbalanced operation latency, compared to conventional magnetic disks. To solve these problems, many works mainly adopt FTL with garbage collection in NAND flash memory systems. However, previous garbage collection techniques are sensitive to the write pattern. In this paper, we propose a garbage collection technique based on the erasure interval, which is called EIGC (Erasure Interval-based Garbage Collection). EIGC is insensitive to the write pattern, compared to other techniques. The proposed technique prolonged the system lifetime about 13% and it reduced the garbage collection overhead about 42.4%, on average. Moreover, our technique reduced the standard deviation about 22.3% on average, compared to other techniques. Keywords: NAND flash memory, garbage collection, storage systems, erasure interval, lifetime. Introduction Recently, many storage systems use SSD (Solid State Disk) based on NAND flash memory, which has many advantages such as low power, low access latency and high reliability, unlike conventional magnetic disks. Moreover, NAND flash memory is advantageous for storage systems because it can make a high capacity with inexpensive cost. Because of these advantages, NAND flash memory is adopted in variety devices like sensor nodes, smart-phones, tablets, IoT (Internet of Things), and so on. However, NAND flash memory has disadvantages, largely compared to conventional magnetic disks. NAND flash memory does not support in-place-update, which must perform the erase operation before the program (i.e., write) operation to perform in-place-update. The erase-beforeprogram increases the program operation latency of entire NAND flash memory, as shown in Table 1 [1-2]. In the worst case, the erase-before-program is slower up to 2.8 times for each one program operation. Moreover, the units of the read or program operations are a page and the units of erase operation are blocks. The block consists of pages. Thus, the erase-before-program has valid pages in the block, corresponding to the in-place update and it requires additional overhead for page migrations as much as the number of valid pages in each block. Table 1: Performance comparison of NAND flash memory operations Operation Unit Latency SLC MLC Read Page 25us 60us Program Page 200us 800us Erase Block 700us 1.5ms NAND flash memory is classified into two types according to the number of bits per cell, which is called SLC (Single-Level Cell) and MLC (Multi-Level Cell), respectively. SLC and MLC have 1-bit and 2-bit for one cell respectively, which has the limited number of P/E (Program/Erase) cycles of about 100,000 and about 10,000 respectively. SLC and MLC show a different relation between P/E cycles and bits per cell, which means a trade-off relation. Moreover, NAND flash memory has a lower endurance up to 100 times as the limited number of blocks per endurance, compared to conventional magnetic disks. To solve these problems of NAND flash memory, many previous works mainly adopt FTL (Flash Translation Layer). Garbage collection and wear leveling, in FTL, are a technique to improve a lower endurance [3-10]. In particular, many pervious works tried to prolong the lifetime by garbage collection. However, previous garbage collection techniques are sensitive to write patterns. In this paper, we propose a garbage collection technique based on the erasure interval, which is called EIGC (Erasure Interval-based Garbage Collection). EIGC has the characteristics to perform the block recycling using the erasure interval, which is insensitive to the write patterns, compare to other techniques. The rest of this paper is organized as follows. Section 2 presents a background of our system architecture for general NAND flash memory and analyzes previous works with garbage collection. In section 3, we describe the detailed algorithm of EIGC. Section 4 evaluates the performance of our proposal, compared to other techniques. Finally, section 5 concludes this paper. 5188

Background and Related Works Background: NAND flash memory cannot use a file system of conventional magnetic disks because of the critical technical constraints such as the limited number of P/E cycles and the erase-beforewrite. To solve these technical constraints, NAND flash memory adopts a software layer between a file system and MTD (Memory Technology Device) layer, which is called FTL. MTD layer performs a raw operation of read, program and erase between FTL and NAND flash memory chip. Typically, FTL consists of three modules: address translation table, garbage collection and wear leveling, as shown in Figure 1 [11]. Figure 1: System Architecture based on SSD Address translation table is the module to solve the erasebefore-program problem, which translates the physical address to the logical address. The physical address means the actual address of block or page in NAND flash memory, and the logical address is the virtual address defined by FTL. As the program operation process of address translation table, when a file system requests the write, NAND flash memory performs the program operation in a free (i.e., empty) page of physical address, and then the physical address is mapped into the logical address corresponding to address translation table. As the read operation process of address translation table, when a file system requests the read, NAND flash memory gets the page data corresponding to the physical address through the logical address, in address translation table. As a result, address translation table is possible to perform the inplace-update, without the erase-before-program. Typically, address translation table is classified into three types; page mapping, block mapping and hybrid mapping, according to the mapping unit. Garbage collection is the technique to secure the free (i.e., empty) block by the block recycling policy when storage systems is lack of the free block. In this case, garbage collection manages the free block by sacrificing one or more blocks among used (i.e., allocated) blocks. Thus, garbage collection affects the performance of entire NAND flash memory according to the block recycling policy. As the process of garbage collection trigger, if the number of free blocks in FTL drops below the predefined number of blocks in system configuration of NAND flash memory, it performs garbage collection. Typically, FTL maintains the number of free blocks of about 5 percent among the total blocks. Wear leveling is the technique to prolong the lifetime of NAND flash memory, to overcome shorter lifetime of flash memory systems. Thus, the wear leveling is important to prolong the lifetime of entire NAND flash memory through a lower overhead. Wear leveling is classified into two methods: dynamic ware leveling and static ware leveling. The target of dynamic wear leveling is dynamic program or code area blocks, and the target of static wear leveling is all blocks, including OS area. Related Works: Previous works tried to prolong the lifetime through the lower page migrations overhead of garbage collection [12-15]. Typically, garbage collection is performed through the following processes: 1) If the number of free blocks drops below the percent of system configuration in NAND flash memory, FTL calls garbage collection module. 2) Garbage collection selects a victim block by the block recycling policy. 3) Garbage collection copies all valid (i.e., used) pages in the victim block to RAM buffer. 4) All valid pages of the RAM buffer copy the active block. 5) The victim block is erased by garbage collection. 6) If FTL satisfies the number of minimal free blocks, garbage collection ends all process. Otherwise, garbage collection performs Step 1 again. In this process, many previous works were proposed for the block recycling policy. GA (Greedy Algorithm) is a representative technique of garbage collection, which selects the block corresponding to the least utilization of valid pages [16]. CB (Cost-Benefit) is the technique based on the elapsed time, which selects the block corresponding to the largest cost using the last invalid time and the valid page percentage [17]. CAT (Cost-Age-Time) is the technique to overcome the disadvantage of CB, which selects the block corresponding to the least cost using the last update time and the erasure count [18]. The block allocation policy of GA, CB, and CAT uses FIFO (First-In First-Out). SAGC (Swap-Aware Garbage Collection) is the technique for portable consumer electronics, which selects the block corresponding to the largest cost using the sum of the last invalid time of each page. The block allocation policy of SAGC uses the youngest block first [19]. FeGC (Fast and endurance Garbage Collection) is the technique for storage systems, which selects the block as the SAGC policy. The block allocation policy of FeGC, however, uses the adaptive youngest block allocation [20]. SCATA (Swap-aware Cost-Age-Time with Age-sort) is the technique for linux swap system, which selects the block corresponding to the largest cost using the time difference of the last invalid 5189

and the first valid of each page [21]. SACATA (Swap-Aware Cost-Age-Time Age-sort) is similar to SCATA policy, but it has difference to consider the maximum and minimum erasure count in all blocks [22]. The block allocation policy of SCATA and SACATA uses FIFO. The detailed garbage collection techniques are summarized in Table 2. Table 2: A comparison of garbage collection techniques Techniques Block recycling policy Block allocation policy GA Select the block correspondingto the FIFO least utilization of valid pages CB Select the block correspondingto the FIFO largest cost (a (1 u)) cost = 2u a = c_time i_time u : the percent of valid page CAT Select the block correspondingto the FIFO least cost cost = u 1 u 1 a EC a = c_time u_time EC : erasure count SAGC Select the block correspondingto the Youngest block largest CAV first FeGC n CAV = i_age i i=1 i_age i = c_time i_time i c_time : current time i_time i : the invalid time of page Select the block correspondingto the largest CwA n CwA = i_age i i=1 SCATA Select the block correspondingto the FIFO largest cost cost = max (age i ) 1 EC min (est i ) 1 u 1 + u este i = c_time o_time i o_time i : the valid time of page SACATA Select the block correspondingto the FIFO largest cost cost = max (age i ) 1 u 1 + u min (est i) EC max EC min EC EC min + 1 EC max : the maximum erasure count of all blocks EC min : the minimum erasure count of all blocks Adaptive youngest block allocation Moreover, garbage collection affects the victim block selection of block recycling policy. In this paper, the proposed technique has the characteristics to perform the block recycling policy using the erasure interval, which is insensitive to write patterns, compare to previous techniques. Erasure Interval-based Garbage Collection Overview In this section, we propose a garbage collection technique based on the erasure interval, which is called EIGC (Erasure Interval-based Garbage Collection). We describe the EIGC technique through the following section B and section C. Section B describes the block allocation policy when FTL is lack of free (e.g. empty) pages within the active blocks, and section C describes the garbage collection policy when the number of free blocks in FTL drops below the system configuration in NAND flash memory. Block Allocation Policy Storage systems based on NAND flash memory typically maintain one block for the program operation, which is called the active block. When NAND flash memory fills all pages out in the active block by the program operation, FTL allocates one block among free blocks. Block allocation policy typically uses FIFO, which is simple but inefficient. Moreover, FIFO usually allocates low index blocks, which is not suitable for block allocation policy. The allocation of low index block results in the unbalanced endurance of all blocks in NAND flash memory. Thus, we propose the block allocation policy to replace the FIFO policy, which is called LEF (Lowest Erasure count First). To effectively manage the free blocks of NAND flash memory, LEF uses a n heap using a binary tree, which satisfies O(1) search time. LEF reduces the search latency of free blocks. LEF allocates the free block through the following processes, as shown in Figure 2: 1) If NAND flash memory fills all pages in the active block, FTL performs block allocation policy. 2) LEF pops the root node, which corresponds to the lowest erase count among free blocks. 3) FTL changes the used block to the active block. 4) FTL allocates the active block to the free block corresponding to the root node. As shown in the techniques above, the problems of their proposals are that they only used one interval time after garbage collection, which does not consider all interval times of garbage collection. As a result, it does not consider the change of write patterns from the past time to the current time. Figure 2: Block allocation policy of LEF 5190

Garbage Collection Policy In this section, we describe the garbage collection policy based on the erasure interval. As shown Figure 3, for example, we assumes that there exist in block 0, block 1, block 2, and block 3 in NAND flash memory. Each block has the erasure interval. When the block is changed from free block to used block, EIGC begins to measure the erasure interval in the block. When the block is changed again from free block to used block, EIGC ends the measurement of the erasure interval of the block. In other words, the erasure interval means an interval between the previous erase operation and the current erase operation. All blocks have many erasure intervals during their lifetime, which is called N-erasure interval. Thus, we measure two factors during N-erasure interval: the time and the ratio of valid pages. N-erasure interval obtains these two factors by equation (1), which is given by c_ei_time = (e_time + ei_time) α c_ei_u = (u + ei_u) α (1) where e_time is the time to perform the erasure operation of the block by garbage collection, ei_time is the time during the erasure interval, c_ei_time is the time of current erasure interval calculated by the e_timeand the ei_time, u is the ratio of valid pages to perform the erasure operation of the block by garbage collection, ei_u is the ratio of valid pages during erasure interval, c_ei_u is the ratio of current valid pages calculated by the u and the ei_u, α is the weight. We consider all interval values during N-erasure interval. Thus, we use 0.5 of α value. Figure 3: Timing diagram of NAND flash memory EIGC selects the victim block using two factors of N-erasure interval. First, EIGC calculates the elapsed time of block using c_ei_time of the block by equation (2), which is given by time = c_time c_ei_time (2) where c_time is the current time, c_ei_time is the time calculated during the erasure interval. Then, EIGC calculates the victim cost using time and c_ei_u of the block by equation (3), which is given by cost = u 1 u 1 c_ei_u EC time (3) whereu is the ratio of valid pages, timeis the elapsed time of block obtained by equation (2), c_ei_u is the ratio of valid pages calculated during the erasure interval, EC is the erase count of block. In the victim block, EIGC selects a block corresponding to the least cost among all blocks. EIGC considers the current cost corresponding to the ratio of invalid pages and the ratio of valid pages, and it also considers the time and the ratio of valid pages measured during the erasure interval. Moreover, EIGC considers the erase count of block. As a result, EIGC effectively selects a victim block because garbage collection policy considers the ratio of valid and invalid pages (i.e., current cost), N-erasure interval (i.e., elapsed time cost), and the erase count (i.e., worn durability). Performance Evaluation Experimental Setup In this section, we evaluate the performance of EIGG. In our simulation, we use SSD simulator, based on Disksim simulation environment 4.0 [23-24]. To perform our experiments, we exploit three datasets, shown in Table 3. Table 3: A write pattern ratio of simulation environment Dataset Hot ratio Cold ratio trace1 10% 90% trace2 20% 80% trace3 30% 70% 5191

In Figure 4, we show the distribution counts of write operation in NAND flash memory. In the write distribution feature of our experiments, we use a normal distribution, which is a very common probability distribution. The probability density of the normal distribution is based on the equation (4), which is given by p = 1 2πσ e (x u)2 /2σ 2 (4) whereuis the mean or expectation of the distribution. The parameter σis its standard deviation. In our experiments, we selected the following performance indicator: the system lifetime, the garbage collection overhead, and standard deviation. In the system lifetime, we measured the elapsed time from the first bad block to the system failure time. In particular, it is important to reduce the elapsed time between first failure time and system failure time, because the spatial efficiency of storage system is reduced after the first bad time. In the garbage collection overhead, we measured the page migrations and response time during garbage collection. NAND flash memory has a correlation between the page migrations and response time. Finally, in the worn durability, we measured the standard deviation of all blocks in NAND flash memory. Figure 4: Normal distribution of each trace Based on the indicators above, we performed the simulation. In the simulation procedures, we use the MLC specification based on NAND flash memory developed by Samsung Electronics, as shown in Table 4 [2]. Performance Analysis As described in section 3, we evaluated LEF with EIGC, which denoted the block allocation policy of EIGC in all experimental results. First, we measured the first bad time and system failure time, as shown in Figure 5. LEF+EIGC prolonged the first bad time up to 41.1%, 15.5%, 13.5%, 3.4%, 80.4%, 10.3%, 10.3%, and 11.3%, and it prolonged the system failure time up to 24%, 10.4%, 9.1%, 3.4%, 31.9%, 10.4% 10.4%, and 3.8%, compared with GA, CB, CAT, SAGC, FeGC, SCATA, SACATA, and FIFO+EIGC respectively. As mentioned above, the spatial efficiency of NAND flash memory is very important. To improve the spatial efficiency, it is important for storage system to reduce the elapsed time until the system failure time after the first bad block, which is called system failure elapsed time in this paper. Our experiment measured the system failure elapsed time from the system lifetime, as shown in Figure 6. Usually, if the system failure elapsed time is below 1%, it usually treated as optimization in terms of garbage collection design. Thus, EIGC showed the performance optimization in terms of system failure elapsed time. Next, we measured the page migrations and response time during garbage collection, as shown in Figure 7 and Figure 8. LEF+EIGC reduced the page migrations up to 81.6%, 68.4%, 72.4%, 62.8%, 106.3%, 105%, 105%, and 1.5%, and it reduced the response time up to 58.7%, 49.1%, 52.1%, 45.3%, 76.4%, 76.5%, 76.5%, and 1.1%, compared with GA, CB, CAT, SAGC, FeGC, SCATA, SACATA, and FIFO+EIGC respectively. Finally, we measured the standard deviation of all blocks, as shown in Figure 9. LEF+EIGC reduced the standard deviation up to 20.5%, 16.4%, 16.2%, 14.9%, 22.3%, 16.2%, 16.2%, and 0.2%, compared with GA, CB, CAT, SAGC, FeGC, SCATA, SACATA, and FIFO+EIGC respectively. Table 4: Configurations of simulation environment Description Value Total capacity 4Gb Reserved free blocks 15% Garbage collection condition # of free blocks <5% Flash chip elements 1 Planes per elements 1 Blocks per plane 2048 Pages per block 64 Page size 4KB Page read latency 60us Page program latency 800us Block erase latency 1.5ms Lifetime per block 10 4 Figure 5: The first bad time and the system failure 5192

Figure 6: The ratio of system failure elapsed time among the system lifetime Conclusion Recently, many storage systems use SSD based on NAND flash memory, which has many advantages such as low power, low access latency and high reliability. However, NAND flash memory has disadvantages such as erase-beforeprogram, limited P/E cycle, and unbalanced operation latency, compared to conventional magnetic disks. To solve these problems of NAND flash memory, we proposed a garbage collection technique based on the erasure interval, which is called EIGC. EIGC has the characteristics to perform the block recycling using an erasure interval, which is insensitive to write patterns, compare to other previous techniques. In addition, we also proposed the block allocation policy of EIGC, which is called LEF. LEF manages a free blocks efficiently to consider block endurance, using min heap. In experimental results, we evaluated the performance of our proposal through three indicators: system lifetime, operation overhead and standard deviation. LEF+EIGC prolonged the system lifetime about 13%, and it reduced the garbage collection overhead about 42.4%, on average, compared to other techniques. Moreover, LEF+EIGC reduced the standard deviation up to 22.3%, compared to other techniques. In particular, LEF+EIGC prolonged the system lifetime up to 7.6%, compared to FIFO+EIGC. Figure 7: Normalized average page migrations during garbage collection Acknowledgement Second author (*) is a corresponding author. This research was supported by Basic Science Research Program through the National Research Foundation of Korea (NRF) funded by the Ministry of Education (NRF-2014R1A1A2057146). References Figure 8: Average response time during garbage collection Figure 9: Normalized standard deviation [1] MT29F4G08ABADAWP 8Gbit SLC NAND Flash Memory Data Sheet, http://www.micron.com, Micro Technology, 2009. [2] K9GAG08U0M 2G x 8bit MLC NAND Flash Memory Data Sheet, Samsung Electronics, https://www.samsung.com, Feb, 2007. [3] Wang, Chundong, and Weng-Fai Wong. "Observational wear leveling: an efficient algorithm for flash memory management." Design Automation Conference (DAC), 2012 49th ACM/EDAC/IEEE. IEEE, 2012. [4] Lee, Junghee, et al. "A semi-preemptive garbage collector for solid state drives." Performance Analysis of Systems and Software (ISPASS), 2011 IEEE International Symposium on. IEEE, 2011. [5] Chang, Li-Pin, and Li-Chun Huang. "A low-cost wear-leveling algorithm for block-mapping solidstate disks." ACM SIGPLAN Notices. Vol. 46. No. 5. ACM, 2011. [6] Lin, M. W., and Song Yan Chen. "Swap time-aware garbage collection policy for NAND flash-based swap system." Electronics Letters 49.24, pp. 1525-1526, 2013. [7] Lim, Seung-Ho, and Kyu-Ho Park. "An efficient NAND flash file system for flash memory storage." 5193

Computers, IEEE Transactions on 55.7, pp. 906-912, 2006. [8] Ji, Seunggu, and Dongkun Shin. "Locality and duplication-aware garbage collection for flash memory-based virtual memory systems." Computer and Information Technology (CIT), 2010 IEEE 10th International Conference on. IEEE, 2010. [9] Murugan, Muthukumar, and David HC Du. "Rejuvenator: A static wear leveling algorithm for NAND flash memory with minimized overhead." Mass Storage Systems and Technologies (MSST), 2011 IEEE 27th Symposium on. IEEE, 2011. [10] Liao, Jianwei, et al. "Adaptive wear-leveling in flashbased memory." Computer Architecture Letters, 14.1, 1-4, 2015. [11] Ma, Dongzhe, Jianhua Feng, and Guoliang Li. "A survey of address translation technologies for flash memories." ACM Computing Surveys (CSUR) 46.3, pp. 36, 2014. [12] Yang, Ming-Chang, et al. "Garbage collection and wear leveling for flash memory: Past and future." Smart Computing (SMARTCOMP), 2014 International Conference on. IEEE, 2014. [13] Jeong, Jaehyeong, and Yong Ho Song. "A technique to improve garbage collection performance for NAND flash-based storage systems." Consumer Electronics, IEEE Transactions on 58.2, pp. 470-478, 2012. [14] Chung, Ching-Che, Duo Sheng, and Ning-Mi Hsueh. "A high-performance wear-leveling algorithm for flash memory system." IEICE Electronics Express 9.24, pp. 1874-1880, 2012. [15] Yang, Ming-Chang, et al. "New ERA: new efficient reliability-aware wear leveling for endurance enhancement of flash storage devices." Proceedings of the 50th Annual Design Automation Conference. ACM, 2013. [16] Wu, Michael, and Willy Zwaenepoel. "envy: a nonvolatile, main memory storage system." ACM SigPlan Notices. Vol. 29. No. 11. ACM, 1994. [17] Kawaguchi, Atsuo, Shingo Nishioka, and Hiroshi Motoda. "A Flash-Memory Based File System." USENIX. 1995. [18] Chiang, M-L., and R-C. Chang. "Cleaning policies in mobile computers using flash memory." Journal of Systems and Software 48.3, pp. 213-231, 1999. [19] Kwon, Ohhoon, and Kern Koh. "Swap space management technique for portable consumer electronics with NAND flash memory." Consumer Electronics, IEEE Transactions on 56.3, pp. 1524-1531, 2010. [20] Kwon, Ohhoon, et al. "FeGC: An efficient garbage collection scheme for flash memory based storage systems." Journal of Systems and Software 84.9, pp. 1507-1523, 2011. [21] Lin, M. W., et al. "Garbage collection policy for flash-aware Linux swap system." Electronics letters 47.22, pp. 1218-1220, 2011. [22] Lin, Mingwei, and Shuyu Chen. "Flash-aware linux swap system for portable consumer electronics." Consumer Electronics, IEEE Transactions on 58.2, pp. 419-427, 2012. [23] Prabhakaran, Vijayan, and Ted Wobber. "SSD extension for DiskSim simulation environment."microsoft Reseach, 2009. [24] Bucy, John S., et al. "The disksim simulation environment version 4.0 reference manual (cmu-pdl- 08-101)." Parallel Data Laboratory, 26, 2008. 5194