Recovery from programming failure in non-volatile memory
First Claim
1. A method, comprising:
- receiving data encoded with an Error Correction Code (ECC) for storage in a plurality of memory cells;
buffering the data in a volatile buffer;
writing the buffered data to the plurality of memory cells;
overwriting a first bit of the data in the volatile buffer with information indicative of a success in writing the first bit in a given one of the plurality of memory cells;
upon detecting a failure in writing the buffered data to the memory cells, producing recovered data by reading both the volatile buffer and the plurality of memory cells;
assigning reliability metrics to a second bit of the recovered data depending on whether the second bit was read from the volatile buffer or from a particular memory cell of the plurality of memory cells;
applying ECC decoding to the recovered data using the reliability metrics; and
re-programming the recovered data.
1 Assignment
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, applying ECC decoding to the recovered data using the reliability metrics and reprogramming the recovered data.
22 Citations
20 Claims
-
1. A method, comprising:
-
receiving data encoded with an Error Correction Code (ECC) for storage in a plurality of memory cells; buffering the data in a volatile buffer; writing the buffered data to the plurality of memory cells; overwriting a first bit of the data in the volatile buffer with information indicative of a success in writing the first bit in a given one of the plurality of memory cells; upon detecting a failure in writing the buffered data to the memory cells, producing recovered data by reading both the volatile buffer and the plurality of memory cells; assigning reliability metrics to a second bit of the recovered data depending on whether the second bit was read from the volatile buffer or from a particular memory cell of the plurality of memory cells; applying ECC decoding to the recovered data using the reliability metrics; and re-programming the recovered data. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. An apparatus, comprising:
-
a memory, which comprises multiple memory cells; and storage circuitry configured to; receive data encoded with an Error Correction Code (ECC) for storage in the multiple memory cells; buffer the data in a volatile buffer; write the buffered data to the multiple memory cells; overwrite a first bit of the data in the volatile buffer with information indicative of a success in writing the first bit of the data in a given one of the multiple memory cells; produce recovered data in response to detecting a failure in writing the buffered data to the multiple memory cells, by reading both the volatile buffer and the memory cells; assign reliability metrics to a second bit of the recovered data depending on whether the second bit was read from the volatile buffer or from the multiple memory cells; and apply ECC decoding to the recovered data using the reliability metrics; and re-program the recovered data. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. An apparatus, comprising:
-
an interface, which is configured to communicate with a memory comprising multiple memory cells; and storage circuitry configured to; receive data encoded with an Error Correction Code (ECC) for storage in the multiple memory cells; buffer the data in a volatile buffer; write the buffered data to the multiple memory cells; overwrite a first bit of the data in the volatile buffer with information indicative of a success in writing the first bit of the data in a given one of the multiple memory cells; produce recovered data in response to detecting a failure in writing the buffered data to the multiple memory cells, by reading both the volatile buffer and the memory cells assign reliability metrics to a second bit of the recovered data depending on whether the second bit was read from the volatile buffer or from the multiple memory cells; and apply ECC decoding to the recovered data using the reliability metrics; and re-program the recovered data. - View Dependent Claims (18, 19, 20)
-
Specification