Storage elements are read multiple times and the results are accumulated and averaged for each storage element to reduce the effects of
noise or other transients in the storage elements and associated circuits that may adversely affect the quality of the read. Several techniques may be employed, including: A full read and transfer of the data from the storage device to the controller device for each iteration, with averaging performed by the controller; a full read of the data for each iteration, with the averaging performed by the storage device, and no transfer to the controller until the final results are obtained; one full read followed by a number of faster re-reads exploiting the already established state information to avoid a full read, followed by an intelligent
algorithm to guide the state at which the storage element is sensed. These techniques may be used as the
normal mode of operation, or invoked upon exception condition, depending on the
system characteristics. A similar form of
signal averaging may be employed during the verify phase of
programming. An embodiment of this technique would use a peak-detection scheme. In this
scenario, several verify checks are performed at the state prior to deciding if the storage element has reached the target state. If some predetermined portion of the verifies fail, the storage element receives additional
programming. These techniques allow the
system to store more states per storage element in the presence of various sources of
noise.