Flash memory wears out after a certain number of erase operations. Wear-leveling is required to lengthen flash memory overall lifespan and to keep it stable all lifetime. Wear-leveling techniques proposed so far require too much memory for the required job.
We propose a grouping-based wear-leveling policy for flash memory. Grouping logically adjacent blocks provides appropriate summary information, so that it does not degrade the wear-leveling performance while reducing the memory overhead considerably. To get the right summary information, we average the erase count of the original blocks in the group, excluding swapped-in blocks. We also prevent inappropriate swapping by checking if the victim block is suitable for swapping before actually copying valid data. Keeping appropriate summary information in memory lower both the space and time overhead.
We simulate NAND Flash memory and log-block scheme FTL to evaluate performance. Our experimental results show the grouping-based wear-leveling scheme works quite well while reducing the space and time overhead for wear-leveling significantly. Memory overhead is reduced by $\frac{1}{40}$ compared with k-leveling method. Additional access to flash memory due to wear-leveling takes only 4~5% of the time for whole operations.