Sign up to receive free email alerts when patent applications with chosen keywords are publishedSIGN UP

Abstract:

A method for operating a memory (28) that includes a plurality of analog
memory cells (32) includes storing data in the memory by writing first
storage values to the cells. Second storage values are read from the
cells, and a Cumulative Distribution Function (CDF) of the second storage
values is estimated. The estimated CDF is processed so as to compute one
or more thresholds. A memory access operation is performed on the cells
using the one or more thresholds.

Claims:

1-49. (canceled)

50. A method, comprising: receiving data to be stored in a memory,
wherein the memory includes a plurality of data storage cells; writing
first storage values in the plurality of data storage cells; reading
second storage values from the plurality of data storage cells;
determining a number of data memory cells of the plurality of data memory
cells associated with a plurality of programming levels dependent upon
the read second storage values; estimating a probability density function
(PDF) for each programming level of the plurality of programming levels;
scaling each PDF dependent upon the determined number of data storage
cells; integrating the plurality of PDFs to produce a cumulative
distribution function (CDF); computing one or more thresholds dependent
upon the CDF; reading third storage values from the plurality of data
storage cells; comparing the third storage values to the computed one or
more thresholds; and generating data bits dependent upon the comparison.

51. The method of claim 50, wherein each data storage cell of the
plurality of data storage cells comprises an analog memory cell.

54. The method of claim 50, wherein writing first storage values
comprises encoding the received data using an error correction code
(ECC).

55. An apparatus, comprising: a memory including a plurality of data
storage cells; and a controller coupled to the memory, wherein the
controller is configured to: receive data to be stored in the memory;
write first storage values in the plurality of data storage cells; read
second storage values from the plurality of data storage cells; determine
a number of data storage cells of the plurality of data storage cells
associated with a plurality of programming levels dependent upon the read
second storage values; estimate a probability density function (PDF) for
each programming level of the plurality of programming levels; scale each
PDF dependent upon the determined number of data storage cells; integrate
the plurality of PDFs to produce a cumulative distribution function
(CDF); compute one or more thresholds dependent upon the CDF; read third
storage values from the plurality of data storage cells; compare the
third storage values to the computed one or more thresholds; and generate
data bits dependent upon the comparison.

56. The apparatus of claim 55, wherein each data cell of the plurality of
data storage cells comprises an analog memory cell.

58. The apparatus of claim 55, wherein write first storage values in the
plurality of data storage cells comprises encoding the data using an
error correction code (ECC).

59. The apparatus of claim 58, wherein the controller is further
configured to decode the data bits using the ECC.

60. A non-transitory computer accessible storage medium having program
instructions stored therein that, in response to execution by a computer
system, causes the computer system to perform operations including:
receiving data to be stored in a memory, wherein the memory includes a
plurality of data storage cells; writing first storage values in the
plurality of data storage cells; reading second storage values from the
plurality of data storage cells; determining a number of data storage
cells of the plurality of memory cells associated with a plurality of
programming levels dependent upon the read second storage values;
estimating a probability density function (PDF) for each programming
level of the plurality of programming levels; scaling each PDF dependent
upon the determined number of data storage cells; integrating the
plurality of PDFs to produce a cumulative distribution function (CDF);
computing one or more thresholds dependent upon the CDF; reading third
storage values from the plurality of data storage cells; comparing the
third storage values to the computed one or more thresholds; and
generating data bits dependent upon the comparison.

[0002] The present invention relates generally to memory devices, and
particularly to methods and systems for estimating thresholds used in
reading data from analog memory cells.

BACKGROUND OF THE INVENTION

[0003] Several types of memory devices, such as Flash memories, use arrays
of analog memory cells for storing data. Each analog memory cell stores a
quantity of an analog value, also referred to as a storage value, such as
an electrical charge or voltage. The storage value represents the
information stored in the cell. In Flash memories, for example, each
analog memory cell holds a certain amount of electrical charge. The range
of possible analog values is typically divided into regions, each region
corresponding to one or more data bit values. Data is written to an
analog memory cell by writing a nominal analog value that corresponds to
the desired bit or bits.

[0004] Some memory devices, commonly referred to as Single-Level Cell
(SLC) devices, store a single bit of information in each memory cell,
i.e., each memory cell can be programmed to assume two possible memory
states. Higher-density devices, often referred to as Multi-Level Cell
(MLC) devices, store two or more bits per memory cell, i.e., can be
programmed to assume more than two possible memory states.

[0005] Flash memory devices are described, for example, by Bez et al., in
"Introduction to Flash Memory," Proceedings of the IEEE, volume 91,
number 4, April, 2003, pages 489-502, which is incorporated herein by
reference. Multi-level Flash cells and devices are described, for
example, by Eitan et al., in "Multilevel Flash Cells and their
Trade-Offs," Proceedings of the 1996 IEEE International Electron Devices
Meeting (IEDM), New York, N.Y., pages 169-172, which is incorporated
herein by reference. The paper compares several kinds of multilevel Flash
cells, such as common ground, DINOR, AND, NOR and NAND cells.

[0007] Analog memory cells are typically read by comparing the analog
values (storage values) stored in the cells to one or more thresholds,
commonly referred to as read thresholds. Several methods for determining
read threshold values are known in the art. For example, U.S. Pat. No.
6,751,766, whose disclosure is incorporated herein by reference,
describes methods in which the quality of data stored in a memory system
is assessed, and the memory system is operated according to the assessed
quality. In some embodiments, data storage values are read from the
memory. Digital data values are generated according to predefined storage
value intervals in which the data storage values lie. The storage value
intervals are separated by separation points, which are modified
according to the statistics of a plurality of quality indications
associated with the read storage values.

[0008] U.S. Patent Application Publication 2005/0013165, whose disclosure
is incorporated herein by reference, describes methods for reading cells
of a Flash memory. The cells are read by determining respective adaptive
reference voltages for the cells and comparing the cells' threshold
voltages to their respective reference voltages. The adaptive reference
voltages are determined either from analog measurements of the threshold
voltages of the cells' neighbors, or from preliminary estimates of the
cells' threshold voltages based on comparisons of the cells' threshold
voltages with integral or fractional reference voltages common to all the
cells. Cells of a Flash memory are also read by comparing the cells'
threshold voltages to integral reference voltages, comparing the
threshold voltages of cells that share a common bit pattern to a
fractional reference voltage, and adjusting the reference voltages in
accordance with the comparisons.

[0009] U.S. Patent Application Publication 2006/0028875, whose disclosure
is incorporated herein by reference, describes methods for managing a
plurality of memory cells. The cells are managed by obtaining values of
one or more environmental parameters of the cells and adjusting values of
one or more reference voltages of the cells accordingly. Alternatively, a
statistic of at least some of the cells, relative to a single reference
parameter that corresponds to a control parameter of the cells, is
measured, and the value of the reference voltage is adjusted accordingly.
Examples of statistics include the fraction of cells whose threshold
voltages exceed initial lower bounds or initial medians.

SUMMARY OF THE INVENTION

[0010] Embodiments of the present invention provide a method for operating
a memory that includes a plurality of analog memory cells, including:

[0011] storing data in the memory by writing first storage values to the
cells;

[0012] reading second storage values from the cells and estimating a
Cumulative Distribution

[0013] Function (CDF) of the second storage values;

[0014] processing the estimated CDF so as to compute one or more
thresholds; and

[0015] performing a memory access operation on the cells using the one or
more thresholds.

[0016] In some embodiments, estimating the CDF includes computing one or
more CDF data points, such that a CDF data point that corresponds to a
given storage value is indicative of one of:

[0017] a number of the second storage values that do not exceed the given
storage value; and

[0018] a number of the second storage values that exceed the given storage
value.

[0019] In an embodiment, processing the estimated CDF includes defining a
model that produces a target CDF responsively to input parameters,
adapting the model by fitting the target CDF to the estimated CDF, and
computing the thresholds based on the adapted model. In a disclosed
embodiment, the first storage values are selected from a set of nominal
values that program the cells to assume respective programming states,
and the input parameters include at least one parameter selected from a
group of parameters consisting of:

[0020] a widening factor of a distribution of a subset of the second
storage values associated with one of the programming states;

[0021] a variance of the distribution of the subset of the second storage
values associated with the one of the programming states;

[0022] a relative shift of the distribution of the subset of the second
storage values associated with the one of the programming states; and

[0023] a mean of the distribution of the subset of the second storage
values associated with the one of the programming states.

[0024] In another embodiment, defining the model includes predefining a
plurality of target CDFs, and fitting the target CDF to the estimated CDF
includes selecting a predefined target CDF from the plurality
responsively to the estimated CDF. In yet another embodiment, the first
storage values are selected from a set of nominal values that program the
cells to assume respective programming states, the second storage values
that are associated with a given programming state are distributed in
accordance with a known function of a subset of the input parameters, and
adapting the model includes estimating the subset of the input parameters
irrespective of programming states other than the given programming
state.

[0025] In still another embodiment, the first storage values are selected
from a set of nominal values that program the cells to assume respective
programming states, the model is defined based on a first distribution of
the memory cells among the programming states, the CDF is estimated based
on a second distribution of the memory cells among the programming states
that is different from the first distribution, and adapting the model
includes correcting an error in the target CDF caused by a difference
between the first and second distributions. In an embodiment, storing the
data includes storing information regarding the first distribution in the
memory, and correcting the error includes retrieving the stored
information and correcting the error responsively to the retrieved
information.

[0026] In some embodiments, the first storage values are selected from a
set of nominal values that program the cells to assume respective
programming states, the second storage values corresponding to each of
the programming states are distributed in accordance with respective
distributions, and estimating the CDF includes scaling the distributions
in accordance with numbers of the second storage values that correspond
to the respective programming states, and estimating the CDF responsively
to the scaled distributions.

[0027] In a disclosed embodiment, processing the estimated CDF includes
identifying a flat region in the estimated CDF and positioning at least
one of the thresholds within the flat region. In another embodiment, the
CDF has a known shape within at least a partial range of the second
storage values, the estimated CDF has a shift with respect to the CDF,
and processing the estimated CDF includes calculating the shift and
computing the thresholds responsively to the calculated shift. Estimating
the CDF may include measuring one or more values of the CDF in respective
one or more of the second storage values that are located in the partial
range of the second storage values, and determining the shift based on
the measured values of the CDF. Additionally or alternatively, computing
the thresholds may include shifting the thresholds with the calculated
shift.

[0028] In yet another embodiment, the first storage values are selected
from a set of nominal values that program the cells to assume respective
programming states, the second storage values fall in a set of storage
value ranges that correspond to the programming states, and estimating
the CDF includes measuring at least one value of the CDF within the
storage value ranges.

[0029] In still another embodiment, reading the second storage values
includes reading the second storage values from a first group of the
memory cells, and performing the memory access operation includes
performing the memory access operation on a second group of the memory
cells, different from the first group, using the one or more thresholds.
In an embodiment, the data stored in the first and second groups have
first and second data value distributions that are different from one
another, and the thresholds are adjusted to match the second data value
distribution. In another embodiment, the method includes determining a
dependence of optimal threshold positions in the second group on the
optimal threshold positions in the first group, and adjusting the
thresholds for performing the memory access operation in the second group
in accordance with the dependence.

[0030] In some embodiments, the one or more thresholds include read
thresholds, and performing the memory access operation includes reading
third storage values from the cells using the read thresholds, so as to
reconstruct the stored data. In an embodiment, storing the data includes
encoding the data with an Error Correction Code (ECC), reading the third
storage values includes decoding the ECC and determining errors that were
corrected by the ECC, and the read thresholds adjusted responsively to
the corrected errors.

[0031] In another embodiment, for a given read threshold, determining the
corrected errors includes determining a first number of the errors caused
by the third storage values falling below the given read threshold and a
second number of the errors caused by the third storage values falling
above the given read threshold, and adjusting the read thresholds
includes adjusting the given read threshold responsively to the first and
second numbers. Reading the third storage values may include canceling a
distortion in one or more of the third storage values.

[0032] In some embodiments, the thresholds include verification
thresholds, and performing the memory access operation includes verifying
the first storage values written to the cells using the verification
thresholds. In a disclosed embodiment, storing the data includes encoding
the data with an Error Correction Code (ECC), the one or more thresholds
include multiple sets of read thresholds, and performing the memory
access operation includes reading multiple sets of third storage values
from the cells using the respective multiple sets of the read thresholds,
computing soft decoding metrics responsively to the multiple sets of the
third storage values, and decoding the ECC using the soft decoding
metrics, so as to reconstruct the data.

[0033] In another embodiment, each of the memory cells stores multiple
data bits, storing the data includes storing multiple memory pages in the
respective multiple data bits of the memory cells, and performing the
memory access operation includes reading each of the memory pages using a
subset of the thresholds.

[0034] There is additionally provided, in accordance with an embodiment of
the present invention, a data storage apparatus, including:

[0035] an interface, which is operative to communicate with a memory that
includes a plurality of analog memory cells; and

[0036] a processor, which is connected to the interface and is coupled to
store data in the memory by writing first storage values to the cells, to
read second storage values from the cells, to estimate a Cumulative
Distribution Function (CDF) of the second storage values, to process the
estimated CDF so as to compute one or more thresholds, and to perform a
memory access operation on the cells using the one or more thresholds.

[0037] There is also provided, in accordance with an embodiment of the
present invention, a data storage apparatus, including:

[0038] a memory, which includes a plurality of analog memory cells; and

[0039] a processor, which is connected to the memory and is coupled to
store data in the memory by writing first storage values to the cells, to
read second storage values from the cells, to estimate a Cumulative
Distribution Function (CDF) of the second storage values, to process the
estimated CDF so as to compute one or more thresholds, and to perform a
memory access operation on the cells using the one or more thresholds.

[0040] The present invention will be more fully understood from the
following detailed description of the embodiments thereof, taken together
with the drawings in which:

BRIEF DESCRIPTION OF THE DRAWINGS

[0041]FIG. 1 is a graph showing a distribution and a Cumulative
Distribution Function (CDF) of threshold voltages in a group of analog
memory cells, in accordance with an embodiment of the present invention;

[0042] FIG. 2 is a block diagram that schematically illustrates a memory
system, in accordance with an embodiment of the present invention;

[0043] FIG. 3 is a diagram that schematically illustrates a memory cell
array, in accordance with an embodiment of the present invention;

[0044]FIG. 4 is a flow chart that schematically illustrates a method for
data storage and retrieval, in accordance with an embodiment of the
present invention;

[0045]FIG. 5 is a flow chart that schematically illustrates a method for
adjusting read thresholds, in accordance with an embodiment of the
present invention;

[0046]FIG. 6 is a diagram that schematically illustrates a method for
adjusting read thresholds, in accordance with an alternative embodiment
of the present invention;

[0047] FIGS. 7-11 are flow charts that schematically illustrate methods
for adjusting read thresholds, in accordance with alternative embodiments
of the present invention; and

[0048]FIG. 12 is a graph showing threshold voltage distributions and read
thresholds used in the method of FIG. 11, in accordance with an
embodiment of the present invention.

DETAILED DESCRIPTION OF EMBODIMENTS

Overview

[0049] The optimal values of the read thresholds used for retrieving data
from analog memory cells often vary from one cell group to another, as
well as over the lifetime of the memory. Accurate positioning of the read
thresholds is crucial for maintaining low reading error probability,
especially in high-density, multi-level cells.

[0050] Embodiments of the present invention provide improved methods and
systems for adaptively adjusting the read thresholds used for reading
analog memory cells. In accordance with the methods and systems described
herein, a Memory Signal processor (MSP) stores and retrieves data in an
array of analog memory cells. The MSP estimates the Cumulative
Distribution Function (CDF) of the storage values stored in the cells.
The CDF is a function whose value, for any given storage value, is
indicative of the number of cells (in absolute or relative terms) having
storage values less than or equal to the given storage value. The MSP
determines the optimal positions of the read thresholds based on the
estimated CDF. The MSP adjusts the read thresholds to assume the optimal
positions and reads data from the cells using the adjusted thresholds.

[0051] Generally, threshold adaptation based on the CDF is superior to
adaptation that is based on the storage value distributions themselves,
since the CDF can typically be estimated by a much smaller number of data
points in comparison with the Probability Distribution Function (PDF).

[0052] In some embodiments that are described hereinbelow, the CDF is
estimated based on the numbers of cells associated with the different
programming levels. In other embodiments, the MSP identifies boundary
regions that separate the different programming levels, and positions the
read thresholds within the boundary regions. In some methods, the MSP has
full or partial a-priori information regarding the distribution of
storage values for a given programming level, and the MSP uses this
information in computing the read thresholds.

[0053] Some of the disclosed methods are model-based. In these methods,
the MSP maintains a model that produces a modeled CDF (also referred to
as a target CDF) based on a number of input parameters. The MSP adapts
the model parameters so as to fit the modeled CDF to the estimated
(measured) CDF, and derives the read thresholds from the model. In an
alternative embodiment, the model comprises a predefined set of target
CDFs, and the MSP selects the target CDF that best fits the measured CDF.
In other methods, the MSP encodes the stored data using an Error
Correction Code (ECC) and decodes the ECC when retrieving data. The MSP
uses information regarding errors that were corrected during ECC decoding
in order to adjust the read thresholds. In some embodiments, the read
thresholds used for reading a certain group of cells (e.g., a memory
page) are adjusted based on CDF measurements that were performed on the
same group. In alternative embodiments, CDF measurements are performed on
one group of cells, and are used to adjust the read thresholds of another
group.

[0054] Since the methods and systems described herein continuously track
the optimal positions of the read thresholds, the achieved reading
performance remains optimal over different cell groups, over the entire
lifetime of the memory device, and in the presence of various types of
distortion and interference.

[0055] Analog memory cells are programmed to store data by writing storage
values (e.g., voltages or currents) to the cells. Although the target
storage values that are used for programming the cells are typically
chosen from a finite set of nominal values that represent the data, the
actual storage values stored in the cells may deviate from the nominal
values. These deviations may be caused by several factors, such as
inaccuracies in the programming process, drift due to device aging, cell
wearing due to previous programming and erasure cycles, disturb noise
caused by memory operations applied to other cells in the array and/or
cross-coupling interference from other cells. Thus, the storage values of
the cells typically have a certain statistical distribution, which may
vary from one cell group to another and/or over the lifetime of the
memory cells.

[0056] (Although the description that follows refers mainly to threshold
voltages of Flash memory cells, this choice is made purely for the sake
of conceptual clarity. The methods and systems described herein can be
used with any other type of storage value used in any other type of
analog memory cells.)

[0057]FIG. 1 is a graph showing a distribution (upper plot) and a
Cumulative Density Function (CDF, lower plot) of threshold voltages in a
group of analog memory cells, in accordance with an embodiment of the
present invention. In the present example, the cells comprise four-level
cells, with each cell storing two data bits. Curves 20A . . . 20D show
the distributions of threshold voltages in the group of cells. Each curve
corresponds to a subset of the cells that are programmed to a certain
programming level or state. Curves 20A . . . 20D show the threshold
voltage distributions in the cells that are programmed with target
storage values 22A . . . 22D, respectively. In the present example,
distribution 20A corresponds to an erased level.

[0058] In order to read the data from the cells, the storage values of the
cells are compared with read thresholds. In the present example, three
read thresholds TH1 . . . TH3 are used to differentiate between the four
levels.

[0059] A curve 21 shows the Cumulative Distribution Function (CDF) of the
threshold voltages in the group of cells. For a given threshold voltage
on the horizontal axis, the CDF gives the relative number of cells whose
threshold voltage does not exceed the given threshold voltage. Thus, the
CDF is zero at the lower edge of the voltage axis, and monotonically
increases to reach a value of one at the upper edge of the voltage axis.

[0060] In the example of FIG. 1, the same number of cells is programmed to
each of the four levels. Thus, the CDF reaches 1/4 between the first and
second levels, 1/2 between the second and third levels, and 3/4 between
the third and fourth levels. Note also that the slope of the CDF is
steepest at the middle of distributions 20A . . . 20D, and is
substantially flat at the boundary regions in between distributions 20A .
. . 20D. Some of the methods described below make use of these
characteristics for determining optimal positions (values) of the read
thresholds.

System Description

[0061] FIG. 2 is a block diagram that schematically illustrates a memory
system 23, in accordance with an embodiment of the present invention.
System 23 can be used in various host systems and devices, such as in
computing devices, cellular phones or other communication terminals,
removable memory modules ("disk-on-key" devices), digital cameras, music
and other media players and/or any other system or device in which data
is stored and retrieved.

[0062] System 23 comprises a memory device 24, which stores data in a
memory cell array 28. The memory array comprises multiple analog memory
cells 32. In the context of the present patent application and in the
claims, the term "analog memory cell" is used to describe any memory cell
that holds a continuous, analog value of a physical parameter, such as an
electrical voltage or charge.

[0063] Array 28 may comprise analog memory cells of any kind, such as, for
example, NAND, NOR and CTF Flash cells, PCM, NROM, FRAM, MRAM and DRAM
cells. The charge levels stored in the cells and/or the analog voltages
or currents written into and read out of the cells are referred to herein
collectively as analog values or storage values.

[0064] System 23 stores data in the analog memory cells by programming the
cells to assume respective memory states. The memory states are selected
from a finite set of possible states, and each state corresponds to a
certain nominal analog value. For example, a 2 bit/cell MLC can be
programmed to assume one of four possible memory states by writing one of
four possible nominal analog values into the cell.

[0065] Data for storage in memory device 24 is provided to the device and
cached in data buffers 36. The data is then converted to analog voltages
and written into memory cells 32 using a reading/writing (R/W) unit 40,
whose functionality is described in greater detail below. When reading
data out of array 28, R/W unit 40 converts the electrical charge, and
thus the analog voltages of memory cells 32, into digital samples having
a resolution of one or more bits. The samples are cached in buffers 36.
The operation and timing of memory device 24 is managed by control logic
48.

[0066] The storage and retrieval of data in and out of memory device 24 is
performed by a Memory Signal Processor (MSP) 52. MSP 52 comprises a
signal processing unit 60, which processes the data that is written into
and read from device 24. In some embodiments, unit 60 encodes the data to
be written into the memory cells using an Error Correction Code (ECC),
and decodes the ECC of the retrieved data. Unit 60 may use a
Bose-Chaudhuri-Hocquenghem (BCH) code, a Low Density Parity Chack (LDPC)
code, or any other suitable type of ECC known in the art. In particular,
MSP 52 carries out methods for adaptively adjusting the positions of the
read thresholds used for reading data from cells 32, as will be described
in detail below.

[0067] MSP 52 comprises a data buffer 72, which is used by unit 60 for
storing data and for interfacing with memory device 24. MSP 52 also
comprises an Input/Output (I/O) buffer 56, which forms an interface
between the MSP and the host system. A controller 76 manages the
operation and timing of MSP 52. Signal processing unit 60 and controller
76 may be implemented in hardware. Alternatively, unit 60 and/or
controller 76 may comprise microprocessors that run suitable software, or
a combination of hardware and software elements.

[0068] The configuration of FIG. 2 is an exemplary system configuration,
which is shown purely for the sake of conceptual clarity. Any other
suitable configuration can also be used. Elements that are not necessary
for understanding the principles of the present invention, such as
various interfaces, addressing circuits, timing and sequencing circuits
and debugging circuits, have been omitted from the figure for clarity.

[0069] In the exemplary system configuration shown in FIG. 2, memory
device 24 and MSP 52 are implemented as two separate Integrated Circuits
(ICs). In alternative embodiments, however, the memory device and MSP may
be integrated on separate semiconductor dies in a single Multi-Chip
Package (MCP) or System on Chip (SoC). Further alternatively, some or all
of the MSP circuitry may reside on the same die on which memory array 28
is disposed. Further alternatively, some or all of the functionality of
MSP 52 can be implemented in software and carried out by a processor or
other element of the host system. In some implementations, a single MSP
52 may be connected to multiple memory devices 24.

[0070] In a typical writing operation, data to be written into memory
device 24 is accepted from the host and cached in I/O buffer 56. The data
is transferred, via data buffers 72, to memory device 24. The data may be
pre-processed by MSP 52 before it is transferred to the memory device for
programming. For example, unit 60 may encode the data using an ECC, add
certain data for internal use, and/or scramble the data. In device 24 the
data is temporarily stored in buffers 36. R/W unit 40 converts the data
to nominal analog values and writes the nominal values into the
appropriate cells 32 of array 28.

[0071] In a typical reading operation, R/W unit 40 reads analog values
(storage values) out of the appropriate memory cells 32 and converts them
to soft digital samples by comparing the read storage values to the read
thresholds. The samples are cached in buffers 36 and transferred to
buffers 72 of MSP 52. In some embodiments, unit 60 of MSP 52 converts the
samples to data bits and provides the reconstructed data as output.

[0072] FIG. 3 is a diagram that schematically illustrates memory cell
array 28, in accordance with an embodiment of the present invention.
Although FIG. 3 refers to Flash memory cells that are connected in a
particular array configuration, the principles of the present invention
are applicable to other types of memory cells and other array
configurations, as well. Some exemplary cell types and array
configurations are described in the references cited in the Background
section above.

[0073] Memory cells 32 of array 28 are arranged in a grid having multiple
rows and columns. Each cell 32 comprises a floating gate Metal-Oxide
Semiconductor (MOS) transistor. A certain amount of electrical charge
(electrons or holes) can be stored in a particular cell by applying
appropriate voltage levels to the transistor gate, source and drain. The
value stored in the cell can be read by measuring the threshold voltage
of the cell, which is defined as the minimal voltage that needs to be
applied to the gate of the transistor in order to cause the transistor to
conduct. The read threshold voltage is indicative of the charge stored in
the cell.

[0074] In the exemplary configuration of FIG. 3, the gates of the
transistors in each row are connected by word lines 80. The sources of
the transistors in each column are connected by bit lines 84. In some
embodiments, such as in some NOR cell devices, the sources are connected
to the bit lines directly. In alternative embodiments, such as in some
NAND cell devices, the bit lines are connected to strings of
floating-gate cells.

[0075] The memory cell array is typically divided into multiple pages,
i.e., groups of memory cells that are programmed and read simultaneously.
Pages are sometimes sub-divided into sectors. In some embodiments, each
page comprises an entire row of the array. In alternative embodiments,
each row (word line) can be divided into two or more pages. For example,
in some devices each row is divided into two pages, one comprising the
odd-order cells and the other comprising the even-order cells. In a
typical implementation, a two-bit-per-cell memory device may have four
pages per row, a three-bit-per-cell memory device may have six pages per
row, and a four-bit-per-cell memory device may have eight pages per row.

[0076] Erasing of cells is usually carried out in blocks that contain
multiple pages. Typical memory devices may comprise several thousand
erasure blocks. In a typical two-bit-per-cell MLC device, each erasure
block is on the order of 32 word lines, each comprising several thousand
cells. Each word line of such a device is often partitioned into four
pages (odd/even order cells, least/most significant bit of the cells).
Three-bit-per cell devices having 32 word lines per erasure block would
have 192 pages per erasure block, and four-bit-per-cell devices would
have 256 pages per block. Alternatively, other block sizes and
configurations can also be used.

[0077] Some memory devices comprise two or more separate memory cell
arrays, often referred to as planes. Since each plane has a certain
"busy" period between successive write operations, data can be written
alternately to the different planes in order to increase programming
speed.

Read Threshold Estimation Methods

[0078] The positions of the read thresholds used for reading the memory
cells have a considerable effect on the reading quality, i.e., on the
decoding error probability. The read thresholds should be positioned
appropriately with respect to the threshold voltage distributions, so
that the probability that a read storage value belonging to a certain
level will fall on the wrong side of a read threshold is minimized.

[0079] Since the threshold voltage distributions of the memory cells vary
over the lifetime of the memory cells, it is important to continually
track these variations and adjust the threshold positions accordingly.
Adaptive setting of read thresholds is particularly important in cells
having a large number of programming levels (e.g., eight-level or
sixteen-level MLC). In such cells, the different levels are
closely-packed on the voltage axis, and voltage distributions often
overlap one another given a certain amount of aging and interference.
Therefore, the decoding error probability in these cells is
highly-sensitive to non-optimal threshold positions.

[0080] The methods and systems described herein estimate and adjust the
positions of read thresholds, based on the Cumulative Distribution
Function (CDF) of the storage values. Threshold estimation and adjustment
can be performed at any time and at any frequency, such as in production,
during the operational lifetime of the memory device, at periodic
intervals, after power-up, as a background low-priority task that
operates concurrently with memory access operations, after reading data,
after writing data, in response to certain events or conditions, or in
accordance with any other suitable logic.

[0081]FIG. 4 is a flow chart that schematically illustrates a method for
data storage and retrieval, in accordance with an embodiment of the
present invention. The description that follows refers to a single page
of memory cells. However, the method is applicable to any other suitable
group of cells. The method can also be used in an inter-page manner, by
using measurements acquired in one page for adjusting the thresholds of
another page, as described further below.

[0082] The method begins with MSP 52 storing data in a page of memory
cells 32 in array 28 by programming the cells with appropriate storage
values, at a data storage step 90. At a later time, the MSP is requested
to retrieve the data from the memory cells, such as in response to a host
command. Data retrieval may be requested at any time, e.g., seconds,
hours, days or even years after the data was stored.

[0083] In order to retrieve the data with high accuracy, the MSP adjusts
the positions of the read thresholds that will be used to read the cells.
The MSP reads the storage values (in the present example, the threshold
voltages) from the memory cells, at a reading step 94. Typically, the MSP
reads the storage values from the entire page in a single read operation.
The read operation compares the storage values of the cells in the page
to a certain read threshold, and produces indications (hard decisions) as
to whether the storage values are smaller or greater than the read
threshold.

[0084] The MSP estimates the CDF of the threshold voltages of the page, at
a CDF estimation step 98. For a given read threshold V, the MSP
determines the number N of cells in the page whose threshold voltage is
smaller than the threshold. The pair <N,V> forms a single datapoint
on the CDF of the threshold voltages of the page. The MSP may estimate
the CDF at various accuracy or resolution levels, depending on the number
of measured CDF datapoints. In other words, the MSP can improve the CDF
estimation by performing a larger number of read operations with
different thresholds, and vice versa.

[0085] Although the embodiments described herein refer mainly to the
estimation, storage and processing of CDFs, the methods and systems
described herein can be carried out equivalently by processing inverse
CDFs, or CDF-1 functions. In the context of the present patent
application and in the claims, any reference to the estimation,
measurement, storage or any other form of processing of a CDF is meant to
refer to the equivalent configuration of CDF-1 processing, as well.
Typically but not necessarily, processing CDF functions is more efficient
in terms of memory usage than processing CDF-1 functions. On the
other hand, processing CDF-1 functions is often more efficient in
terms of computational complexity. Thus, the choice between processing
CDF and CDF-1 functions can be made based on available resources.

[0086] The MSP adjusts the positions of the read thresholds based on the
estimated CDF, at a threshold adjustment step 102. The MSP sets the read
thresholds accordingly and retrieves the data using the adjusted
thresholds, at a data retrieval step 106.

[0087] In some embodiments, the MSP estimates the CDF over a subset of the
storage values read from a given page, (e.g., over the values at the
beginning of the page) in order to reduce reading time.

[0088] In some MLC devices, multiple memory pages are mapped to a single
group of cells, such that each page is mapped to a certain bit. For
example, in an eight-level (3 bits/cell) device, a certain page may be
stored in the Least Significant Bits (LSB) of the cells, another page may
be stored in the Central Significant Bits (CSB) of the cells and yet
another page may be stored in the Most Significant Bits (MSB) of the
cells.

[0089] For example, eight programming levels L1 . . . L8 are mapped to the
data bit combinations "111", "011", "001", "101", "100", "000", "010" and
"110", in ascending order of storage values. This mapping has a "gray
coding" characteristic, in which adjacent programming levels differ from
one another by only a single bit. As can be appreciated, the LSB in this
case can be read using a single read threshold located between levels L4
and L5. The CSB can be read using two read thresholds, located between
levels L2 and L3 and between levels L6 and L7. The MSB can be read using
four read thresholds, which are located between levels L1/L2, L3/L4,
L5/L6 and L7/L8. In some embodiments, the MSP adjusts some or all of the
read thresholds used for reading the data stored in the different MLC
bits.

[0090] In MLC configurations, the MSP may obtain more than a single CDF
data point in a given read operation. In the eight-level configuration
above, for example, reading the LSB page obtains one CDF data point,
reading the CSB page obtains two additional data points, and reading the
MSB page obtains four additional data points. Overall, seven CDF data
points are obtained in three read operations.

[0091] FIGS. 5-11 below show several exemplary methods for adjusting the
read thresholds based on the estimated CDF. Each method makes certain
assumptions and has certain advantages and limitations, which are
discussed below.

CDF Estimation Using the Number of Cells at Each Programming Level

[0092] In some cases, the relative number of cells associated with each
programming level is known when the cells are to be read. For example, it
can sometimes be assumed that each level has approximately the same
number of cells. This condition holds, for example, when the data is
scrambled. In other scenarios, the number of cells associated with each
level is not the same, but the absolute numbers or ratios between them
are known. For example, information indicative of the number of cells in
the page that belong to each level can be stored in the page along with
the data, or in another area of the memory.

[0093] In some embodiments, the MSP estimates the CDF based on the known
number of cells associated with each level. The MSP may then adjust the
read thresholds based on the estimated CDF, using any of the techniques
described herein.

[0094]FIG. 5 is a flow chart that schematically illustrates a method for
estimating the CDF and adjusting the read thresholds, in accordance with
an embodiment of the present invention. The method assumes that the
general shape of the storage value distribution (the PDF of the storage
values) is known. The method begins with the MSP scaling the magnitude of
the PDF of each programming level based on the relative number of cells
associated with the level, at a scaling step 110. The output of this step
is a set of PDFs, each having a relative magnitude that is proportional
to the number of cells associated with the level. In some cases, the
number of cells in each individual level is unknown, but the total number
of cells in a certain group of levels is known. In such cases, the MSP
may assume that the total known number of cells is distributed evenly
among the levels in the group.

[0095] The MSP integrates the set of PDFs to produce an estimated CDF, at
a CDF estimation step 114. The MSP adjusts the read thresholds based on
the estimated CDF, at a threshold adjustment step 118. The MSP may adjust
the read thresholds using any of the techniques described herein.

[0096] In some embodiments, the MSP may estimate the CDF based on the
numbers of cells associated with a set of levels, without knowledge of
the number of cells in each individual level. For example, when different
pages are stored in different MLC bits, the MSP may record the number of
"1" data bits in each page, without a need to combine data from different
pages. The number associated with each page can be generated
independently.

[0097] This feature may be used in the other CDF-based methods described
herein. Assuming the cells are distributed evenly among programming
levels (e.g., when the data is scrambled), the CDF can be estimated
without explicit statistics related to individual pages. When the number
of cells associated with each programming level (or group of levels) is
known, the CDF estimation can be improved, as described above.

Threshold Adjustment for Known Storage Value Distributions

[0098] In some cases, the distribution of storage values in a given
programming level is known, but its absolute location on the storage
value axis is not known. For example, it may be known in advance that the
storage value distribution of a particular level is Gaussian and has a
certain variance, but the mean of the distribution is unknown. Such a
scenario occurs, for example, when each level has a certain known
distribution, which has an unknown drift due to aging. In order to
position the read thresholds correctly, the absolute position of the
storage value distribution should be determined.

[0099]FIG. 6 is a diagram that schematically illustrates a method for
adjusting read thresholds, in accordance with an alternative embodiment
of the present invention. The method of FIG. 6 assumes that the shape of
the storage value distribution is known (and therefore the shape of the
CDF is known, at least within a partial range of storage values), but its
absolute position with respect to the thresholds is unknown. In order to
estimate the absolute position of the CDF, the MSP measures two CDF data
points (<N,V> pairs, as described above), at two values denoted
THA and THB. The difference between the CDF values at these two
values is given by ΔCDF=CDF(THB)-CDF(THA). For most
distributions, since the shape of the CDF is known, the value of
ΔCDF uniquely determines the absolute position of the CDF on the
storage value axis.

[0100] The MSP determines the absolute position of the CDF (e.g., the mean
of the storage value distribution) from the known CDF shape and the two
CDF data points. The MSP then adjusts the read thresholds with respect to
the known absolute position of the CDF.

[0101] The process described above can be repeated for the different
programming levels. Thus, for n-level cells, all thresholds can be set by
performing 2n read operations, i.e., using 2n CDF data points. (In some
cases, a smaller number of CDF data points may suffice. For example, when
one of the levels is an erased level, it may not be necessary to estimate
its position accurately. In these cases, only 2n-2 read operations are
often sufficient. Alternatively, The MSP may verify that the number of
bits below TH1 is 1/n of the total number, by performing 2n-1 read
operations.)

[0102] Further alternatively, the MSP can determine the absolute position
of the storage value distribution using a single read operation, assuming
the numbers of cells associated with the different levels are known. The
MSP may obtain a single CDF data point in the relevant region of a given
programming level, and determine the absolute position of the level
distribution based on the acquired data point and on the known relative
number of cells associated with the respective programming level. The use
of multiple CDF data points reduces the sensitivity of the estimation to
the number of cells associated with each level, at the expense of
additional read operations.

[0103] The method above can also be used when the number of cells
associated with each programming levels is not known. For example, when
the data is scrambled, the MSP may assume that the cells are distributed
evenly among the different programming levels.

[0104] In some cases, the storage value distributions of the different
programming levels are separated by well-defined boundary regions. The
number of cells whose storage values fall in the boundary regions is
typically very small. Therefore, the CDF of the storage values is
typically flat in these regions. The widths and absolute locations of the
boundary regions may change over time, for example because of drift and
widening of the storage value distributions. In some embodiments, the MSP
automatically determines the locations of the boundary regions between
programming levels, and positions the read thresholds within these
regions.

[0105]FIG. 7 is a flow chart that schematically illustrates a method for
adjusting read thresholds, in accordance with another embodiment of the
present invention. The method begin with the MSP estimating the CDF of
the storage values, at a CDF estimation step 124, similarly to step 98 of
FIG. 4 above. The MSP determines the boundary regions between adjacent
programming levels by detecting flat regions in the estimated CDF, at a
boundary detection step 128. (In some cases, the CDF is not entirely flat
in the boundary regions, but has a gentle slope. Thus, the term "flat
region" also refers to a region whose slope is considerably gentler with
respect to other regions.) The MSP positions the read thresholds within
the detected boundary regions, at a threshold positioning step 132.

[0106] Typically, the MSP positions a single read threshold that
differentiates between a pair of adjacent programming levels within the
boundary region that separates the two levels. The MSP may select the
read threshold values from a set of predetermined threshold values, by
selecting values that fall in relatively flat regions of the CDF.

[0107] When the shape of the storage value distribution is known (i.e.,
the shape of the CDF is known, at least within a certain region of
storage values), the MSP can reduce the number of read operations
performed in CDF estimation step 124 above. For example, for a given
boundary region, the MSP can measure a single CDF data point that falls
slightly above the boundary region, and derive the upper edge of the
boundary region from the known CDF shape. The lower edge of the boundary
region can be similarly determined using a single CDF data point falling
slightly below the region. Thus, when the CDF shape is known, the MSP can
determine the edge of a certain boundary region using only a single read
operation (a single CDF data point).

Model-Based Threshold Adjustment

[0108] In some embodiments, the MSP defines and maintains a mathematical
model that produces a target CDF based on one or more input parameters.
The MSP calculates the read thresholds by fitting the target CDF produced
by the model to an estimated CDF derived from actual read operations. In
particular, the MSP may store a predefined set of target CDFs, and select
the target CDF that best fits the estimated (measured) CDF. In this
context, the set of target CDFs is also referred to herein as a model.

[0109] FIG. 8 is a flow chart that schematically illustrates a method for
adjusting read thresholds, in accordance with an embodiment of the
present invention. The method of FIG. 8 is typically used when the
properties of the CDF are not known a-priori. The method begins with the
MSP defining a model that produces the target CDF and initializing the
model parameters, at a model definition step 136.

[0110] In some embodiments, the model accepts as input various parameters
of the storage value distributions of the different levels. The input
parameters may comprise, for example, an offset (or an absolute position)
and/or a scaling factor (shrinking/widening factor) for each of the
programming levels. The input parameters may be initially set to the best
currently-known values or to any other suitable initial values. In an
alternative embodiment, the model comprises a set of several CDFs
(referred to as target CDFs), such as CDFs that are typical of various
stages along the lifetime of the memory. Such CDFs may reflect, for
example, different numbers of programming/erasure cycles that the cells
have gone through, different degrees of cell aging or different
temperature conditions.

[0112] The MSP estimates the actual CDF of the storage values by measuring
one or more CDF data points, at a CDF estimation step 140. The MSP fits
the model to the estimated (measured) CDF, at a fitting step 144.
Typically, the MSP attempts to estimate the input parameter values (e.g.,
the offsets and scaling factors of the different programming levels) for
which the model produces a target CDF that best fits the estimated CDF.
In some embodiments, the MSP may adjust the model based on the numbers of
cells that are associated with different programming levels, as described
above.

[0113] For example, in an eight-level MLC, the model may comprise an
offset and a scaling factor for each of the seven non-erased levels,
i.e., a total of fourteen parameters. Alternatively, a simpler model may
use a smaller set of input parameters by assuming that all levels are
subject to the same offset and/or the same scaling factor. Further
alternatively, any other suitable model having any suitable set of input
parameters can be used. For example, a certain known dependence may exist
between the shifts and/or widening factors of the different levels (e.g.,
the shift of a certain level may be proportional to the central storage
value of the level). In such cases, the MSP may use a smaller number of
parameters and a smaller number of read operations. When the model
comprises a predefined set of target CDFs, the MSP selects the target CDF
that best fits the estimated CDF.

[0114] The MSP may fit the target CDF to the estimated CDF using a Maximum
Likelihood (ML) criterion, as is known in the art, or using any other
suitable fitting criterion or metric.

[0115] The MSP adjusts the read threshold values based on the fitting
results, at a threshold adjustment step 148. For example, the model may
produce read threshold values that match the target CDF. When the model
comprises a set of target CDFs, a corresponding set of optimal read
thresholds may be stored with each target CDF. Alternatively, the MSP may
set the read thresholds based on the estimated CDF, using any of the
techniques described herein. The method then loops back to step 140
above, and the MSP continues to estimate the actual storage value CDF and
fit the model accordingly.

[0116] The accuracy of the threshold adjustment process described above
depends on the accuracy of the estimated CDF measured at step 140, as
well as on the accuracy of the model. The CDF estimation accuracy
generally depends on the number and quality of the measured CDF data
points, which increases with the number of model fitting iterations. In
some cases it is beneficial to obtain additional CDF data points before
attempting to adapt the model. Therefore, the MSP may decide, at each
iteration of the method of FIG. 8, whether to try and fit the model
parameters to the estimated CDF or to obtain additional CDF data points
and improve the CDF estimation accuracy.

[0117] Further alternatively, the MSP may carry out steps 140 and 144
concurrently. For example, the MSP may perform model fitting calculations
on previously-obtained CDF data points, and in parallel obtain additional
data points.

[0118]FIG. 9 is a flow chart that schematically illustrates another
model-based method for adjusting read thresholds, in accordance with an
alternative embodiment of the present invention. The method of FIG. 9
assumes that the distribution of each programming level is known and is
defined by a finite number of parameters. For example, in some cases it
is known that the storage values in each level have a Gaussian
distribution, which can be described using two parameters--the mean and
the variance of the distribution.

[0119] The method begins with the MSP measuring CDF data points separately
for each programming level, at a level-specific measurement step 156.
Typically, the number of CDF data points measured per level matches the
number of parameters used for representing the known distribution. For
example, when each level has a Gaussian distribution, the MSP measures
two CDF data points per level. The MSP then estimates the distribution
parameters of each level, at a level-specific parameter estimation step
160.

[0120] Having estimated the distribution parameters of the different
programming levels, the MSP can adjust the read thresholds based on the
known CDF, as described above.

[0121] The number of measured CDF data points can be reduced when some of
the distribution parameters are known, and/or when relationships between
some of the distribution parameters can be assumed. For example, when the
level distributions are Gaussian having known variances and only unknown
offsets, the MSP can adjust the thresholds using only a single CDF data
point per level. The number of data points can also be reduced, for
example, when all levels can be assumed to have the same offset.
Typically, the number of CDF data points can be reduced to the number of
independent parameters.

[0122] When carrying out the methods of FIGS. 8 and 9, the MSP may use
different methods and criteria for determining which CDF data points to
measure. In particular, a trade-off exists between measuring CDF data
points located in the boundaries between programming levels and data
points located inside the levels.

[0123] On one hand, the regions of the CDF that lie within the programming
levels (CDF data points located within the programming levels) are often
extremely valuable to the accuracy of the model, in comparison with data
points that lie in boundary regions between programming levels. On the
other hand, CDF data points located in the boundaries between levels can
be re-used for retrieving data from the cells, whereas data points in the
middle of the programming levels can typically be used only for model
fitting. The MSP may measure CDF data points in the boundary regions,
within the level distributions, or it may measure a combination of both
types of data points.

Compensation for Unknown Shift in CDF

[0124] In some cases, the actual CDF is known a-priori, with the exception
of an unknown shift. Such a scenario occurs, for example, as a result of
temperature variations or when aging effects cause similar shifts in all
levels.

[0125] FIG. 10 is a flow chart that schematically illustrates a method for
adjusting read thresholds, in accordance with another embodiment of the
present invention. The method of FIG. 10 assumes that the CDF is known
except for an unknown shift. The method can also be used when other
unknown factors exist, but the shift is dominant. For example, when the
CDF is subject to both shift and scaling, scaling may sometimes be
neglected for small shift values.

[0126] The method begins with the MSP measuring one or more CDF data
points, at a CDF measurement step 168. The MSP estimates the shift of the
actual CDF from the measured data points, at a shift estimation step 172.
For example, the MSP may compare the measured CDF data points to a
reference version of the known CDF and derive the shift value from the
comparison.

[0127] For a certain measured CDF data point <N,V>, the MSP may
determine a reference voltage VREF in the reference CDF that would
produce the same value of N. The offset can be estimated as V-VREF.
In some embodiments, the MSP may average the calculated shift over a
number of CDF data points.

[0128] The MSP adjusts the read thresholds based on the estimated shift,
at a threshold adjustment step 176. For example, when the reference CDF
has a corresponding set of optimal thresholds (referred to as reference
thresholds), the MSP can calculate the adjusted thresholds by subtracting
the estimated shift from each of the reference thresholds.

[0129] The method of FIG. 10 assumes that the relative number of cells
associated with each level is similar in the measured CDF and in the
reference CDF. In practice, however, this condition may not always hold.
Deviations from this condition may introduce inaccuracies into the shift
estimation, and therefore into the read threshold positions.

[0130] The deviation can be corrected, for example, by storing the number
of cells whose values are smaller than a given threshold when the cells
are programmed. This stored number is denoted NREC. When reading the
cells, the MSP can use NREC to adjust the read thresholds to account
for differences in the number of cells at each level.

[0131] The MSP can correct any read value (i.e., any value V in a measured
CDF data point <N,V>) by calculating
VCORR=V+CDF.sup.-(N)-CDF-1(N+NREF-NREC), wherein
VCORR denotes the corrected value, V denotes the uncorrected value,
and NREF denotes the number of cells in the reference CDF whose
value is below VCDF. The measured CDF data point <N,V> is
typically chosen close to the data point in the reference CDF. The CDF
correction technique above can also be used in any of the other CDF
estimation methods described herein.

[0132] Alternatively, the MSP may use any other suitable technique for
correcting errors caused by deviations in the number of cells associated
with each programming level. For example, NREC may be calculated
over only a subset of the cells. Typically, correcting a certain read
threshold using the method above involves the use of the NREC values
of all levels that are below the threshold in question. In the example of
FIG. 1 above, correcting threshold TH3 uses the NREC values of the
first three levels. In MLC devices in which different pages are mapped to
different MLC bits using Gray-coded mapping, The NREC values may
refer to numbers of cells that are associated with different memory
pages, as described above.

[0133] Generally, the model-based methods described above may define the
model based on a certain distribution of data values. The group of memory
cells over which the CDF is estimated may have a different distribution
of data values. In some cases, the group of memory cells for which the
thresholds are adjusted may be different from the group of memory cells
over which the CDF was estimated, and may have yet another distribution
of data values. The MSP can correct the deviations caused by the
different data value distributions using information regarding the actual
distributions.

[0134] In MLC devices in which different memory pages are mapped to
different MLC bits using Gray mapping, The MSP can estimate each read
threshold separately, and at each stage process a single threshold.
Alternatively, however, the MSP may use standard read commands that are
commonly used in such memory devices. Many devices, for example, read a
given CSB page with two thresholds in a single command. In such a case,
the MSP may calculate a differential CDF, i.e., the number of cells whose
storage values fall between the two read thresholds. If all levels were
subjected to similar shifts, the differential CDF will not change
substantially. If, however, different levels have different shifts, the
differential CDF can be used to estimate the relative shift of one
threshold with respect to the other. Having previously processed the LSB
page, i.e., having found the absolute shift of one threshold, the MSP can
estimate the absolute shift of other thresholds. Using this technique,
the CDF estimation accuracy can be improved without a need to store the
number of "1" bits in individual levels.

ECC-Assisted Threshold Adjustment

[0135] In some embodiments, the MSP encodes the data using an Error
Correction Code (ECC) before storing the data in the memory cells. When
retrieving data from the cells, the MSP decodes the ECC in order to
correct reading errors. A reading error occurs when the storage value of
a certain cell falls on the wrong side of a threshold, e.g., in a storage
value interval that corresponds to an adjacent programming level.

[0136] For a given read error that was corrected by the ECC, the MSP can
determine the direction of the error, i.e., the programming level with
which the read storage value was erroneously associated before applying
ECC correction. The MSP can use information regarding directions of
corrected errors for adjusting the read thresholds.

[0137] For example, consider a read threshold that differentiates between
two adjacent programming levels denoted L1 and L2. When the threshold is
positioned properly, the number of errors in both directions around this
threshold (i.e., the number of read values that fell in level L1 even
though the cell was programmed to level L2, and the number of read values
that fell in level L2 even though the cell was programmed to level L1) is
expected to be similar. An asymmetry in the number of corrected errors of
opposite directions may indicate a non-optimal threshold position. For
example, if the number of read values that fell in level L1 even though
the cell was programmed to level L2 is considerably greater than the
number of errors in the opposite direction, the threshold should most
likely be moved toward level L1.

[0138] FIG. 11 is a flow chart that schematically illustrates a method for
adjusting read thresholds, in accordance with an embodiment of the
present invention. The method begins with the MSP retrieving ECC-encoded
data from the cells and decoding the ECC, at a decoding step 180. The MSP
classifies the errors corrected by the ECC into the different directions,
at an error classification step 184. The MSP counts the number of errors
in each class. For example, for a pair of levels denoted L1 and L2, the
MSP counts the number of corrected errors directed from L1 to L2, and the
number of corrected errors directed from L2 to L1. When level L1
corresponds to a "1" data bit and level L2 corresponds to a "0" data bit,
the errors directed from L1 to L2 comprise the errors in which the ECC
corrected a "0" into a "1", and the errors directed from L2 to L1
comprise the errors in which the ECC corrected a "1" into a "0".

[0139] (In MLC devices in which different pages are mapped to different
MLC bits using Gray-coded mapping, the MSP typically uses the data read
from lower-order pages in order to identify the errors in a given page.
The MSP uses the data read from lower-order pages to identify the errors
that correspond to a given pair of levels, and/or to determine the read
threshold that should be adjusted based on such errors. Alternatively,
the MSP may assume that all thresholds are subject to the same amount of
shift.)

[0140] The MSP adjusts the read thresholds based on the numbers of
corrected errors of the different directions, at a threshold adjustment
step 188. Typically, the distribution (or CDF) of each level is known,
and the MSP takes the known distributions into account when calculating
the threshold adjustment.

[0141]FIG. 12 is a graph showing threshold voltage distributions and read
thresholds used in the method of FIG. 11, in accordance with an
embodiment of the present invention. In the present example, plots 190A
and 190B show the storage value distributions of programming levels L1
and L2, respectively. The two distributions are assumed to be Gaussian
having known means (denoted η1 and η2) and variances
(denoted σ1 and σ2).

[0142] Initially, a current read threshold 194 differentiates between the
two levels. When using threshold 194, the number of corrected errors
directed from level L1 to level L2 is indicated by a region 198A. The
number of corrected errors directed in the opposite direction, from level
L2 to level L1, is indicated by a region 198B. As can be seen in the
figure, the area of region 198B is considerably larger than the area of
region 198A. Therefore, threshold 194 should be moved toward level L1. A
Corrected read threshold 200 is positioned at the optimal value, which
balances the numbers of corrected errors in both directions.

wherein t denotes the value of threshold 194, "1"→"0" denotes the
number of bits that the ECC decoder changed from "1" to "0",
"0"→1" denotes the number of bits that the ECC decoder changed
from "0" to "1", total "1" denotes the total number of "1" bits after ECC
correction, and total "0" denotes the total number of "0" bits after ECC
correction.

[0144] The optimal threshold value x (i.e., the value of threshold 200) is
a solution of ax2+bx+c=0, wherein

[0147] The latter method can also be used with non-Gaussian distributions.

[0148] The description of FIGS. 11 and 12 addresses two programming
levels. In MLC devices in which different pages are mapped to different
bits, the MSP may examine a specific page, and determine the appropriate
programming levels using the data read from the other pages mapped to the
same group of memory cells. For example, the programming levels
applicable to the CSB page can be determined based on the data read from
the LSB page. The programming levels applicable to the MSB page can be
determined based on the data read from the LSB and CSB pages. The LSB
page can be processed independently of the other pages.

[0149] For asymmetric distributions (e.g., in the Gaussian case when
σ1 ≠ σ2), the number of corrected errors
directed from level L1 to level L2 may differ from the number of errors
in the opposite direction, even when the read threshold is set to the
optimal position. In the Gaussian case, the formulas given above handle
this situation and nevertheless provide the optimal threshold position.

Threshold Acquisition and Tracking

[0150] The different threshold estimation methods described herein can be
used with different levels of a-priori uncertainty as to the optimal
threshold locations. These scenarios can be roughly classified as
threshold acquisition and threshold tracking scenarios. In threshold
acquisition, the currently-used read thresholds are very far from
optimal. Acquisition scenarios occur, for example, after power-up or
following a long period in which the thresholds were not adapted. In
threshold tracking, on the other hand, the thresholds that are currently
in use have relatively small deviations from the optimal positions.
Tracking scenarios occur, for example, when the MSP continually estimates
and adjusts the threshold positions to track gradual changes in the
memory device.

[0151] The methods of FIGS. 8-10, for example, are particularly suitable
for threshold acquisition, although they can also be used for tracking.
The methods of FIGS. 11 and 12, on the other hand, are particularly
suitable for threshold tracking, although they can also be used for
threshold acquisition. Typically but not necessarily, the techniques that
are based on ECC assistance and on counting the number of "1" or "0" bits
are best suited for threshold tracking.

Intra-Page and Inter-Page Threshold Estimation

[0152] In some embodiments, the threshold estimation methods described
herein are used for adjusting the read thresholds within a certain page.
In these implementations, the measurements and computations are performed
over the memory cells of a certain page, and the results are used for
adjusting the thresholds of the same page. Such a configuration is
referred to as intra-page threshold estimation. In alternative
embodiments, the measurements and computations are performed over a
certain page, and the results are used to adjust the thresholds of a
different page. Such a configuration is referred to as inter-page
threshold estimation. (Although the description that follows refers to
memory pages, the methods described herein are similarly applicable to
any other suitable groups of memory cells.)

[0153] When carrying out inter-page estimation, the source page (i.e., the
page over which the measurements are performed) and the target page (the
page whose thresholds are modified) sometimes have different data
characteristics, which may affect the optimal threshold positions. In
some embodiments, the MSP adapts the threshold adjustment to the specific
characteristics of the target page. For example, for each page and for a
given read threshold value, the MSP may store the number of cells in the
page whose storage values are below the threshold. The MSP can then
correct the threshold adjustment using this characteristic of the target
page. A similar correction can be applied in intra-page operation, as
well.

[0154] The threshold correction can be written as
Δ=F(N-NRECORDED), wherein N denotes the measured number of
cells that are below the threshold, and NRECORDED denotes the number
that is stored along with the page. A more elaborated correction factor
may include information from multiple thresholds, e.g.,
Δ=F(N1-N1RECORDED, N2-N2RECORDED, N3-N3RECORDED, . .
. ).

[0155] Consider, for example, a 3 bit/cell memory. Each cell stores three
data bits denoted LSB, CSB and USB in a Gray-coded mapping. Within a
certain word line, the cell LSBs store a certain page, the USBs store
another page and the MSBs store a third page. At a certain point in time,
the LSB and USB pages are already retrieved and their read thresholds are
set. Thus, the MSP has three threshold offsets--one for the LSB and two
for the USB. The MSP can use the three offsets for calculating the read
threshold adjustment of the MSB page.

[0156] Additionally or alternatively, threshold adjustment information can
be used between different word lines, different erasure blocks, different
planes, different dies originating from a certain wafer, and/or between
any other suitable groups of cells.

[0157] For example, the threshold correction may vary from one word line
to the next in accordance with a certain dependence that can be estimated
and tracked. As another example, the threshold correction in odd and even
pages in a certain word line may be correlative. In another scenario,
certain word lines within a block may exhibit different threshold
behavior. For example, in a 32-line erasure block, word lines 0 to 4 may
exhibit large threshold variation between word lines, word lines 5-25 may
exhibit little or no variation, and word lines 26-31 may again exhibit
large variations. The MSP can take these characteristics into account by
restricting the allowed variations between word lines 5-25, and allowing
large changes between the other word lines.

[0158] Additionally or alternatively to using the number of cells that
fall below a given threshold in each page, the MSP may record and use
information regarding errors that were corrected by the ECC in each page
in order to correct the read threshold adjustment between pages. Further
additionally or alternatively, the MSP may correct the thresholds between
different pages based on the number of "1" bits and/or the "0" bits in
the page. (When Gray mapping is used, the number of "1" bits in a page
equals the number of cells that is associated with a set of programming
levels.) These counts can be stored, for example, when the page is
programmed.

[0159] Although the embodiments described herein mainly address data
storage and retrieval in solid-state memory devices, the principles of
the present invention can also be used for storing and retrieving data in
Hard Disk Drives (HDD) and other data storage media and devices.

[0160] Although the embodiments described herein mainly refer to
estimation and adaptation of read thresholds, the methods described
herein can be similarly be used to compute other types of thresholds used
for processing the storage values in analog memory cells, such as
programming thresholds and verification thresholds.

[0162] In some embodiments, the MSP reads a given group of memory cells
(e.g., a page) using multiple read thresholds. In some of these
embodiments, the data is encoded with an ECC before it is stored in the
memory cells. The MSP computes soft decoding metrics based on the
multiple read results, and decodes the ECC using the metrics. The
threshold estimation and adjustment methods described herein can be used
to determine the values of the multiple read thresholds used for
producing the soft decoding metrics. Using the methods and systems
described herein, the number of read operations performed on each group
of memory cells can be reduced.

[0163] In some embodiments, the MSP estimates and cancels distortion that
is present in the storage values read from the memory cells. In these
embodiments, the MSP may position the read thresholds used for reading
the cells using the methods and systems described herein, so as to reduce
the number of read operations.

[0164] It will thus be appreciated that the embodiments described above
are cited by way of example, and that the present invention is not
limited to what has been particularly shown and described hereinabove.
Rather, the scope of the present invention includes both combinations and
sub-combinations of the various features described hereinabove, as well
as variations and modifications thereof which would occur to persons
skilled in the art upon reading the foregoing description and which are
not disclosed in the prior art.