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.