A multibit-per-cell non-volatile memory divides the suitable threshold
voltages of memory cells into ranges corresponding to allowed states for
storage of data and ranges corresponding to forbidden zones indicating a
data error. A read process checks whether a threshold voltage is in a
forbidden zone. Alternately, a refresh process includes reprogramming the
threshold voltage into an allowed state. In the case of a flash memory, a
refresh reads a sector of the memory and saves corrected data from the
sector in a buffer or another sector. The corrected data from the buffer
or other sector can be written back in the original sector, or the
corrected data can be left in the other sector with addresses of the
original sector being mapped to the other sector. Refresh process for the
non-volatile memory can be performed in response to detecting a threshold
voltage in a forbidden zone or periodically.