High-density NAND flash memories are key components in the burgeoning consumer market. Applications are rapidly expanding
beyond USB keys and MP3 players to cell phones, media players, and
game stations. This market is characterized by an ever-increasing
demand for greater memory capacities and lower cost per bit.
Multilevel-cell (MLC) technology, where each NAND flash memory cell
stores two or more bits of data, offers significant benefits in density and
cost. Yet its data retention and memory cycling performance pale next to
single-level cell (SLC) NAND flash memories. That's why MLC NAND flash
memories require error-correction-code (ECC) schemes that are much
more complex to meet product requirements for data integrity.
The cell architectures for SLC and MLC NAND are very different and
require substantially different ECC solutions. ECC has been used in many
applications for decades and has an excellent track record in military,
aerospace, and server applications. In typical flash applications, hardware detect and software correct is the most widely used solution.
Hamming, Reed Solomon (RS), and Binary BCH codes are the most
common algorithms used for ECC. They represent a large class of random error-correcting codes and sub-classes. Hamming and RS are mostly used for flash memory devices. The Hamming or shortened Hamming
codes are mostly used for single bit correction.
RS usually is better for multisymbol applications where the errors are
connected or grouped. BCH is better suited for random errors that have
no relationship with each other. Also, BCH is one of the better solutions
for current and future SLC and MLC device types.