Background
The advent of NAND flash memory technology has triggered a shift in the memory and storage paradigm for every major computing platform. Each platform has been enabled by the unique benefits of NAND flash memory vis-a-vis prevailing memory and storage solutions. Compared to DRAM, NAND flash is non-volatile and has significantly higher bit density and lower cost per bit. Compared to traditional hard disk drives, NAND flash offers much faster random access performance, consumes a fraction of the power, and is less vulnerable to mechanical and environmental distress.
However, there are also significant limitations and complexities, such as an inability to support in-place data modification, an incongruity between the sizes of a programmable page and an erasable block, a susceptibility to data disturbances, and a progressive wear and degradation of the memory cells. These limitations are exacerbated as semiconductor manufacturers aggressively pursue smaller process geometries and multi-bit-per-cell technologies to reduce NAND flash cost-per-bit.
Such challenges necessitate substantial system-level mediation to create a workable storage solution based on NAND flash. However, creating a truly optimal storage solution requires more than an understanding of the NAND flash memory; it requires an intimate understanding of the target applications and the hardware and software platforms upon which they operate.
However, there are also significant limitations and complexities, such as an inability to support in-place data modification, an incongruity between the sizes of a programmable page and an erasable block, a susceptibility to data disturbances, and a progressive wear and degradation of the memory cells. These limitations are exacerbated as semiconductor manufacturers aggressively pursue smaller process geometries and multi-bit-per-cell technologies to reduce NAND flash cost-per-bit.
Such challenges necessitate substantial system-level mediation to create a workable storage solution based on NAND flash. However, creating a truly optimal storage solution requires more than an understanding of the NAND flash memory; it requires an intimate understanding of the target applications and the hardware and software platforms upon which they operate.

