# Leveraging Static and Dynamic Wear Leveling to Prolong the Lifespan of Solid-State Drives
###### Abstract  
In order to extend the lifespan of SSDs, it is essential to achieve wear leveling that evenly distributes the accumulated erase counts of NAND blocks, thereby delaying the occurrence of bad blocks as much as possible. This paper proposes the Greedy-MP policy, integrating static and dynamic wear leveling. When a specific block exhibits excessive erasures surpassing a defined threshold, Greedy-MP initiates the migration of cold data, expected to undergo infrequent modifications, to that block. Additionally, migrated blocks are excluded as candidates for garbage collection until their erase counts reach a similar level to others, preventing premature transition into bad blocks. Performance evaluations demonstrate that Greedy-MP achieves the longest lifespan across all test scenarios. Compared to policies solely utilizing static wear leveling like PWL, it extends the lifespan by up to 1.72 times. Moreover, when integrated with dynamic wear leveling policies such as CB alongside static wear leveling like PWL, it extends the lifespan by up to 1.99 times. Importantly, these extensions are achieved without sacrificing performance. By preserving garbage collection efficiency, Greedy-MP delivers the shortest average response time for I/O requests. erase count; lifespan; NAND; solid-state drives; wear leveling +
Footnote †: journal: Medical  
Previous research on achieving wear leveling has been categorized into two main approaches: dynamic wear leveling [14; 15; 16; 17] and static wear leveling [18; 19; 20]. Dynamic wear leveling policies achieve wear leveling by selecting blocks for erasure during garbage collection based on their erase counts. While selecting the block with the highest invalidation ratio may seem advantageous from a performance standpoint [15; 21], it can potentially lead to an imbalance in erase counts among blocks. Therefore, dynamic policies consider both the invalidation ratio and erase count of blocks. In contrast, static wear leveling policies do not interfere with the selection of victim blocks during garbage collection. Instead, when a specific block is at risk of becoming a bad block due to excessive erasures, they relocate cold data--data expected to rarely undergo modification--from other blocks to the worn-out block. Because the invalidation ratio of the block is expected to be low in the future, it is less likely to be selected as a victim block for garbage collection, thereby delaying its transition into a bad block. Both dynamic wear leveling and static wear leveling contribute to improving the lifespan of SSDs; however, existing research on achieving wear leveling mostly focuses on utilizing only one of these approaches. In this paper, we design a wear leveling policy that combines dynamic wear leveling and static wear leveling. The proposed policy performs static wear leveling by relocating cold data to specific blocks when they are excessively erased compared to other blocks. Blocks that have undergone migration are managed separately and are not selected as victim blocks for garbage collection until their accumulated erase counts reach a similar level to other blocks. This prevents excessively erased blocks from prematurely transitioning into bad blocks compared to other blocks, ultimately contributing to extending the lifespan of SSDs. Performance evaluations using server traces indicate that the proposed policy extends the lifespan of SSDs by up to 1.72 times compared to a policy solely performing static wear leveling. Furthermore, compared to a policy incorporating existing dynamic wear leveling and static wear leveling, the proposed policy extends the lifespan by up to 1.99-3.56 times. Notably, there is no occurrence of performance degradation, such as an increase in average response time for input/output requests. This paper is organized as follows: In Section 2, we provide a detailed description of the internal structure of SSDs and explain representative wear leveling policies.