Other Topics‎ > ‎

Correcting Cell Failures

Let's compare a binary BCH code with a RS code in an effort to determine which code is better for MLC NAND Flash. Let's make the following assumptions:
  • 4 bits per cell where all of the bits in one cell are in one RS symbol.
  • A RS code with t=10, locator symbol width m=12 requiring 2mt= 2x12x10 = 240 bits of redundancy.
  • A binary BCH code with t=20, locator symbol width m=13 requiring mt = 13x20 = 260 bits of redundancy.
  • Cells fail at random.
When 1 cell fails...
  • The RS decoder must correct 0-1 symbol in 0-1 page.
  • The binary BCH decoder must correct 0-4 bits in 0-4 different pages.
With N bits per page, each page contains bits from N cells with the binary BCH code and N/4 cells with the RS code.

When a cell fails with the RS code, and many other cells have previously failed, there is a fairly good chance that the additional cell failure will not require the RS decoder to correct any more symbol errors because the bits in error occur in the same RS symbol as the bits from some previous cell that failed.

When a cell fails with the binary BCH code, it will always require the binary BCH decoder to correct from 0-4 additional bits in error.

Overall, it appears that the RS code with 240 bits of redundancy will correct for more cell failures than the binary BCH code with 260 bits of redundancy.

The RS code will be able to correct for many more total bits in error than the binary BCH code. In this example, the RS code can correct 10 symbols * 12 bits/symbol = 120 bits, the binary BCH code can correct 20 bits, and the RS code takes 20 less bits of redundancy.

The effectiveness of the binary BCH code depends upon how many bits in a cell tend to be in error when a cell fails while the effectiveness of the RS code does not depend upon how many bits within a cell are in error when a cell fails.

Erasure correction is a natural property of RS codes so one of the most compelling reasons for implementing RS codes is that they enable the development of the 2D RS ECC scheme. It is not practical to implement a 2D ECC scheme with binary BCH codes.