RECOVERY FROM PROGRAMMING FAILURE IN NON-VOLATILE MEMORY
First Claim
1. An apparatus, comprising:
- a buffer memory;
a plurality of memory devices; and
a controller configured to;
receive a page of data for storage;
store the page of data in the buffer memory to generate a buffered data page;
program the page of data in at least one memory device of the plurality of memory devices;
retrieve partially-programmed data from the at least one memory device in response to a determination that programming the page of data was unsuccessful;
combine the partially-programmed data with the buffered data page to generate a combined page;
decode an Error Correction Code (ECC) associated with the combined page to generate a recovered page; and
program the recovered page in the at least one memory device.
0 Assignments
0 Petitions
Accused Products
Abstract
A method includes storing data encoded with an Error Correction Code (ECC) in analog memory cells, by buffering the data in a volatile buffer and then writing the buffered data to the analog memory cells while overwriting at least some of the data in the volatile buffer with success indications. Upon detecting a failure in writing the buffered data to the analog memory cells, recovered data is produced by reading both the volatile buffer and the analog memory cells, assigning reliability metrics to respective bits of the recovered data depending on whether the bits were read from the volatile buffer or from the analog memory cells, and applying ECC decoding to the recovered data using the reliability metrics. The recovered data is re-programmed.
8 Citations
20 Claims
-
1. An apparatus, comprising:
-
a buffer memory; a plurality of memory devices; and a controller configured to; receive a page of data for storage; store the page of data in the buffer memory to generate a buffered data page; program the page of data in at least one memory device of the plurality of memory devices; retrieve partially-programmed data from the at least one memory device in response to a determination that programming the page of data was unsuccessful; combine the partially-programmed data with the buffered data page to generate a combined page; decode an Error Correction Code (ECC) associated with the combined page to generate a recovered page; and program the recovered page in the at least one memory device. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method, comprising:
-
receiving a page of data for storage; storing the page of data in a buffer memory to generate a buffered data page; programming the page of data in at least one memory device of a plurality of memory devices; retrieving partially-programmed data from the at least one memory device in response to a determination that programming the page of data was unsuccessful; combining the partially-programmed data with the buffered data page to generate a combined page; decoding an Error Correction Code (ECC) associated with the combined page to generate a recovered page; and programming the recovered page in the at least one memory device. - View Dependent Claims (8, 9, 10, 11, 12, 13)
-
-
14. A system, comprising:
-
a host; and a storage device that includes a buffer memory and a plurality of memory devices, wherein the storage device is configured to; receive a page of data for storage from the host; store the page of data in the buffer memory to generate a buffered data page; program the page of data in at least one memory device of the plurality of memory devices; retrieve partially-programmed data from the at least one memory device in response to a determination that programming the page of data was unsuccessful; combine the partially-programmed data with the buffered data page to generate a combined page; decode an Error Correction Code (ECC) associated with the combined page to generate a recovered page; and program the recovered page in the at least one memory device. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification