(General Question) What is Wear Leveling?

NAND flash memory is susceptible to wear due to repeated write and erase cycles that are commonly done in data storage applications and systems using Flash Translation Layer (FTL). Constantly writing and erasing to the same memory location eventually wears that portion of memory out and makes it invalid. As a result, the NAND flash would have limited lifetime. To prevent scenarios such as these from occurring, special algorithms are deployed within the SSD called wear leveling.  Wear leveling provides a method for distributing write and erase cycles uniformly throughout all of the memory blocks within the SSD. This stop's continuous write and erase cycles to the same memory block, resulting in greater extended life to the overall NAND flash memory.

There are two types of wear leveling, dynamic and static. The dynamic wear algorithm guarantees that data write and erase cycles will be evenly distributed throughout all the blocks within the NAND flash. The algorithm is dynamic because it is executed every time the data in the write buffer of the drive is flushed and written to flash memory. Dynamic wear leveling alone cannot insure that all blocks are being wear-leveled at the same rate. There is also the special case when data is written and stored in flash for long periods of time or indefinitely. While other blocks are actively being swapped, erased and pooled, these blocks remain inactive in the wear-leveling process. To insure that all blocks are being wear-leveled at the same rate, a secondary wear-leveling algorithm called static wear leveling is deployed. Static wear leveling addresses the blocks that are inactive and have data stored in them.