Patent ID: 8856622

Claim:
A controller for a nonvolatile memory having memory cells that are each configured to store data using more than two levels, the controller comprising: an encoder configured to generate first data for storage in first memory cells of the memory cells, wherein for a first subset of cells of the first memory cells, the first data is stored at a first level of the more than two levels, measurable values of the first subset of cells are characterized by a first probability density function having a first width, for a second subset of cells of the first memory cells, the first data is stored at a second level of the more than two levels, measurable values of the second subset of cells are characterized by a second probability density function having a second width, the first width of the first probability density function is greater than the second width of the second probability density function, and the encoder is configured to generate the first data such that a size of the first subset of cells is less than a size of the second subset of cells; and a decoder configured to (i) receive, from the nonvolatile memory, encoded data, and (ii) decode the encoded data to produce decoded data.