NAND flash memories have become the most widely used type of non-volatile memories. In a NAND flash memory, every block of memory cells consists of numerous pages, and rewriting a single page requires the whole block to be erased. As block erasures significantly reduce the longevity, speed and power efficiency of flash memories, it is critical to minimize the number of erasures when data are reorganized. This leads to the data movement problem, where data need to be switched in blocks, and the objective is to minimize the number of block erasures. It has been shown that optimal solutions can be obtained by coding. However, coding-based algorithms with the minimum coding complexity still remain an important topic to study. In this paper, we present a very efficient data movement algorithm with coding over GF(2) and with the minimum storage requirement. We also study data movement with more auxiliary blocks and present its corresponding solution. Furthermore, we extend the study to the data aggregation problem, where data can not only be moved but also aggregated. We present both non-coding and coding-based solutions, and rigorously prove the performance gain by using coding.
[1]
Sang-Won Lee,et al.
Design of flash-based DBMS: an in-page logging approach
,
2007,
SIGMOD '07.
[2]
Anxiao Jiang,et al.
Data movement in flash memories
,
2009,
2009 47th Annual Allerton Conference on Communication, Control, and Computing (Allerton).
[3]
Amy Hsiu-Fen Chou,et al.
Flash Memories
,
2000,
The VLSI Handbook.
[4]
Sivan Toledo,et al.
Algorithms and data structures for flash memories
,
2005,
CSUR.
[5]
Paul H. Siegel,et al.
Storage Coding for Wear Leveling in Flash Memories
,
2009,
IEEE Transactions on Information Theory.
[6]
Suman Nath,et al.
FlashDB: Dynamic Self-tuning Database for NAND Flash
,
2007,
2007 6th International Symposium on Information Processing in Sensor Networks.