Data recovery using outer codewords stored in volatile memory
First Claim
1. A method for correcting for program disturbs in a non-volatile memory (“
- NVM”
), the non-volatile memory comprising a plurality of super blocks, the method comprising;
programming user data to a page of a super block of the plurality of super blocks, wherein the page is located in a first portion of the NVM;
updating a first outer codeword of a plurality of outer codewords that is associated with the first portion of the NVM, wherein the first outer codeword is stored in volatile memory, wherein outer codewords are generated by applying an error correction code to user data;
detecting if a program disturb has occurred in the super block;
in response to detecting that the program disturb has occurred, performing garbage collection on the super block; and
using at least the updated first outer codeword to recover from uncorrectable error correction code (“
uECC”
) errors detected in the super block.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods are disclosed for data recovery using outer codewords stored in volatile memory. Outer codewords can be associated with one or more horizontal portions or vertical portions of a non-volatile memory (“NVM”). In some embodiments, an NVM interface of an electronic device can program user data to a super block of the NVM. The NVM interface can then determine if a program disturb has occurred in the super block. In response to detecting that a program disturb has occurred in the super block, the NVM interface can perform garbage collection on the super block. The NVM interface can then use outer codewords associated with the super block to recover from any uncorrectable error correction code errors detected in the super block.
66 Citations
28 Claims
-
1. A method for correcting for program disturbs in a non-volatile memory (“
- NVM”
), the non-volatile memory comprising a plurality of super blocks, the method comprising;programming user data to a page of a super block of the plurality of super blocks, wherein the page is located in a first portion of the NVM; updating a first outer codeword of a plurality of outer codewords that is associated with the first portion of the NVM, wherein the first outer codeword is stored in volatile memory, wherein outer codewords are generated by applying an error correction code to user data; detecting if a program disturb has occurred in the super block; in response to detecting that the program disturb has occurred, performing garbage collection on the super block; and using at least the updated first outer codeword to recover from uncorrectable error correction code (“
uECC”
) errors detected in the super block. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
- NVM”
-
9. A system comprising:
-
non-volatile memory (“
NVM”
) comprising a plurality of super blocks;volatile memory for storing a first set of outer codewords of a plurality of outer codewords, wherein the first set of outer codewords is associated with a first portion of the NVM, wherein outer codewords are generated by applying an error correction code to user data; and control circuitry operative to; program user data to a page of a super block located in the first portion of the NVM; update the first set of outer codewords; detect if at least one program disturb has occurred; in response to detecting that the at least one program disturb has occurred, perform garbage collection on the super block; and using at least the updated first set of outer codewords to recover from an uncorrectable error correction code (“
uECC”
) error detected in the page. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. Apparatus for handling program disturbs in a non-volatile memory, the apparatus comprising:
-
non-volatile memory (“
NVM”
) comprising a plurality of stripes;volatile memory for storing a plurality of outer codewords, wherein each outer codeword of the plurality of outer codewords is associated with a stripe of the plurality of stripes;
wherein outer codewords are generated by applying an error correction code to user data; andcontrol circuitry operative to; determine a risk zone in the NVM based on at least one characteristic of the NVM, wherein the risk zone comprises at least one stripe of the plurality of stripes; program user data to a page of the risk zone, wherein the page is located in a first stripe of the plurality of stripes; update a first outer codeword of the plurality of outer codewords, wherein the first outer codeword is associated with the first stripe; detect if an end of the risk zone has been reached; and in response to detecting that an end of the risk zone has been reached, reset the plurality of outer codewords to a plurality of initial states. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
Specification