Wear levelling is a technique for prolonging the service life of some kinds of erasable computer storage media, such as flash memory, which is used in solid-state drives (SSDs), USB flash drives, and Phase Change Memory (PCRAM).
Wear levelling is typically managed by the flash controller, which uses an algorithm to determine which physical block to use each time data is programmed. There are two types of solid-state drive (SSD) wear levelling: dynamic and static.
Dynamic wear levelling
Dynamic wear levelling uses a map to link logical block addresses (LBAs) from the OS to the physical flash memory. Each time the OS writes replacement data, the map is updated so the original physical block is marked as invalid data, and a new block is linked to that map entry. Each time a block of data is re-written to the flash memory, it is written to a new location. However, flash memory blocks that never get replacement data would sustain no additional wear, thus the name comes only from the dynamic data being recycled. Such a device may last longer than one with no wear levelling, but there are blocks still remaining as active even when a device is no longer operable.
Static wear levelling
Static wear levelling, on the other hand, selects the target block with the lowest overall erase count, erases the block if necessary, writes new data to the block, and ensures that blocks of static data are moved when their block erase count is below a certain threshold. This additional step of moving data can slow write performance due to overhead on the flash controller, but static wear levelling is considerably more effective than dynamic wear levelling for extending the lifespan of solid state devices.
No wear levelling
A flash memory storage system with no wear levelling will not last very long if data is written to the flash. Without it, the underlying flash controller must permanently assign the logical addresses from the operating system (OS) to the physical addresses of the flash memory.
While many flash drivers claim to provide wear levelling, they typically do not deal with static areas of the flash containing basic system resources such as operating systems and applications. This “static” wear levelling is important to extend the life of flash because by periodically moving static data, it effectively provides a much larger number of cells across which data can be distributed.
Many device designers will either write their own algorithms for wear levelling or use one that is publicly available, writing a wear-levelling algorithm that works well with the complexities of NAND is a significant undertaking, which can make time to market an issue and divert resources from development of differentiating features.
There are many unique characteristics of flash memory that have fuelled its growth across varying market segments, such as its ability to retain data without continued power; this benefit, however, comes at a cost of a finite lifetime and endurance. The hardware architecture and software technologies such as wear levelling that extend the life of a flash chip are often ill-considered. While the limited lifetime of flash memory may or may not be problematic for products that are expected to last ten or more years, flash management software can expand the breadth of available flash parts for your project.