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-before-program, 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-before-program increases the erase-before-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.
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-before-write. 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 erase-before-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 in-place-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
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 least utilization of valid pages
FIFO CB Select the block correspondingto the
largest cost
𝑐𝑜𝑠𝑡 =(𝑎 × (1 − 𝑢)) 2𝑢 𝑎 = 𝑐_𝑡𝑖𝑚𝑒 − 𝑖_𝑡𝑖𝑚𝑒 𝑢 : the percent of valid page
FIFO
CAT Select the block correspondingto the least cost 𝑐𝑜𝑠𝑡 = 𝑢 1 − 𝑢× 1 𝑎× 𝐸𝐶 𝑎 = 𝑐_𝑡𝑖𝑚𝑒 − 𝑢_𝑡𝑖𝑚𝑒 𝐸𝐶 : erasure count FIFO
SAGC Select the block correspondingto the largest CAV 𝐶𝐴𝑉 = ∑ 𝑖_𝑎𝑔𝑒𝑖 𝑛 𝑖=1 𝑖_𝑎𝑔𝑒𝑖= 𝑐_𝑡𝑖𝑚𝑒 − 𝑖_𝑡𝑖𝑚𝑒𝑖 𝑐_𝑡𝑖𝑚𝑒 : current time
𝑖_𝑡𝑖𝑚𝑒𝑖 : the invalid time of page
Youngest block first
FeGC Select the block correspondingto the largest CwA 𝐶𝑤𝐴 = ∑ 𝑖_𝑎𝑔𝑒𝑖 𝑛 𝑖=1 Adaptive youngest block allocation
SCATA Select the block correspondingto the largest cost 𝑐𝑜𝑠𝑡 = max (𝑎𝑔𝑒𝑖) ×𝐸𝐶1 × min (𝑒𝑠𝑡𝑖) ×1 − 𝑢 1 + 𝑢 𝑒𝑠𝑡𝑒𝑖= 𝑐_𝑡𝑖𝑚𝑒 − 𝑜_𝑡𝑖𝑚𝑒𝑖
𝑜_𝑡𝑖𝑚𝑒𝑖 : the valid time of page
FIFO
SACATA Select the block correspondingto the largest cost
𝑐𝑜𝑠𝑡
= 𝑚𝑎𝑥 (𝑎𝑔𝑒𝑖) ×1 − 𝑢1 + 𝑢× 𝑚𝑖𝑛 (𝑒𝑠𝑡𝑖)
×𝐸𝐶𝑚𝑎𝑥− 𝐸𝐶𝑚𝑖𝑛 𝐸𝐶 − 𝐸𝐶𝑚𝑖𝑛+ 1
𝐸𝐶𝑚𝑎𝑥 : the maximum erasure count
of all blocks
𝐸𝐶𝑚𝑖𝑛 : the minimum erasure count
of all blocks
FIFO
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.
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
OverviewIn 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.
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
𝑐_𝑒𝑖_𝑡𝑖𝑚𝑒 = (𝑒_𝑡𝑖𝑚𝑒 + 𝑒𝑖_𝑡𝑖𝑚𝑒) × 𝛼 𝑐_𝑒𝑖_𝑢 = (𝑢 + 𝑒𝑖_𝑢) × 𝛼
(1) where 𝑒_𝑡𝑖𝑚𝑒 is the time to perform the erasure operation of the block by garbage collection, ei_time is the time during the erasure interval, 𝑐_𝑒𝑖_𝑡𝑖𝑚𝑒 is the time of current erasure interval calculated by the 𝑒_𝑡𝑖𝑚𝑒 and the 𝑒𝑖_𝑡𝑖𝑚𝑒 , 𝑢 is the ratio of valid pages to perform the erasure operation of the block by garbage collection, 𝑒𝑖_𝑢 is the ratio of valid pages during erasure interval, 𝑐_𝑒𝑖_𝑢 is the ratio of current valid pages calculated by the 𝑢 and the 𝑒𝑖_𝑢, 𝛼 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 𝑐_𝑒𝑖_𝑡𝑖𝑚𝑒 of the block by equation (2), which is given by
𝑡𝑖𝑚𝑒 = 𝑐_𝑡𝑖𝑚𝑒 − 𝑐_𝑒𝑖_𝑡𝑖𝑚𝑒
(2) where𝑐_𝑡𝑖𝑚𝑒 is the current time, 𝑐_𝑒𝑖_𝑡𝑖𝑚𝑒 is the time calculated during the erasure interval. Then, EIGC calculates the victim cost using 𝑡𝑖𝑚𝑒 and 𝑐_𝑒𝑖_𝑢 of the block by equation (3), which is given by
𝑐𝑜𝑠𝑡 = 𝑢 1 − 𝑢×
1 − 𝑐_𝑒𝑖_𝑢
𝑡𝑖𝑚𝑒 × 𝐸𝐶
(3) where𝑢 is the ratio of valid pages, 𝑡𝑖𝑚𝑒is the elapsed time of block obtained by equation (2), 𝑐_𝑒𝑖_𝑢 is the ratio of valid pages calculated during the erasure interval, 𝐸𝐶 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 SetupIn 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%
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
𝑝 =
1√2𝜋𝜎
𝑒
−(𝑥−𝑢)2/2𝜎2
(4) where𝑢is 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].
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 104
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.
Figure 6: The ratio of system failure elapsed time among the system lifetime
Figure 7: Normalized average page migrations during garbage collection
Figure 8: Average response time during garbage collection
Figure 9: Normalized standard deviation
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-before-program, 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.
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
[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 solid-state 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."
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
flash-based 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 non-volatile, 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.