Fault-tolerant non-volatile integrated circuit memory
AssigneeMicron Technology, Inc.
InventorWilliam H. Radke
Life of this patent
Estimating the term…
Abstract
Apparatus and methods are disclosed, such as those that store data in a plurality of non-volatile integrated circuit memory devices, such as NAND flash, with convolutional encoding. A relatively high code rate for the convolutional code consumes relatively little extra memory space. In one embodiment, the convolutional code is spread over portions of a plurality of memory devices, rather than being concentrated within a page of a particular memory device. In one embodiment, a code rate of m/n is used, and the convolutional code is stored across n memory devices.
Claims26
A method of storing data in a plurality of non-volatile integrated circuit memory devices, the method comprising:
- convolutionally encoding data;
- storing the convolutionally encoded data such that the convolutionally encoded data is interleavingly spread over at least two non-volatile integrated circuit memory devices;
- convolutionally encoding comprises convolutionally encoding data corresponding to at least m sectors of block-encoded data, wherein m/n corresponds to a code rate of the convolutional code;
- storing comprises storing the convolutionally encoded data in n non-volatile integrated circuit memory devices;
- and
- convolutional encoding with a code rate of m/n, wherein n is equal to m+1.
A method of storing data in a plurality of non-volatile integrated circuit memory devices, the method comprising:
- convolutionally encoding data;
- storing the convolutionally encoded data such that the convolutionally encoded data is interleavingly spread over at least two non-volatile integrated circuit memory devices;
- convolutionally encoding comprises convolutionally encoding data corresponding to at least m sectors of block-encoded data, wherein m/n corresponds to a code rate of the convolutional code;
- storing comprises storing the convolutionally encoded data in n non-volatile integrated circuit memory devices;
- determining whether data in any of the m sectors of block-encoded data corresponds to blank data;
- and
- bypassing convolutional encoding of the block-encoded data if that data was determined to correspond to blank data.
A method of storing data in a plurality of non-volatile integrated circuit memory devices, the method comprising:
- convolutionally encoding data;
- storing the convolutionally encoded data such that the convolutionally encoded data is interleavingly spread over at least two non-volatile integrated circuit memory devices;
- convolutionally encoding comprises convolutionally encoding data corresponding to at least m sectors of block-encoded data, wherein m/n corresponds to a code rate of the convolutional code;
- storing comprises storing the convolutionally encoded data in n non-volatile integrated circuit memory devices;
- and
- selecting a code rate m/n for the convolutional encoding at least partially based on a number of non-volatile integrated circuit memory devices over which data is spread.
A method of storing data in a plurality of non-volatile integrated circuit memory devices, the method comprising:
- convolutionally encoding data;
- storing the convolutionally encoded data such that the convolutionally encoded data is interleavingly spread over at least two non-volatile integrated circuit memory devices;
- convolutionally encoding comprises convolutionally encoding data corresponding to at least m sectors of block-encoded data, wherein m/n corresponds to a code rate of the convolutional code;
- storing comprises storing the convolutionally encoded data in n non-volatile integrated circuit memory devices;
- and
- selecting a puncturing pattern at least partially based on a number of non-volatile integrated circuit memory devices over which data is spread.
A method of reading data from a plurality of non-volatile integrated circuit memory devices, the method comprising:
- retrieving convolutionally encoded data from at least two non-volatile integrated circuit memory devices, wherein the convolutionally encoded data is spread over the at least two non-volatile integrated circuit memory devices;
- and
- deconvolving the convolutionally encoded data retrieved from the memory devices, wherein deconvolving comprises rearranging the convolutional encoded data to restore an original order of the convolutional encoded data, wherein deconvolving comprises inserting data and decoding via a Viterbi algorithm.
A method of reading data from a plurality of non-volatile integrated circuit memory devices, the method comprising:
- retrieving convolutionally encoded data from at least two non-volatile integrated circuit memory devices, wherein the convolutionally encoded data is spread over the at least two non-volatile integrated circuit memory devices;
- deconvolving the convolutionally encoded data retrieved from the memory devices, wherein deconvolving comprises rearranging the convolutional encoded data to restore an original order of the convolutional encoded data;
- determining that portions of the retrieved data correspond to blank data;
- and
- bypassing deconvolving for those portions.
A method of storing data in a plurality non-volatile integrated circuit memory devices, the method comprising:
- convolutional encoding m first-size portions of data into m second-size portions of convolutional code using a code rate of m/n, wherein the second-size portions are n/m times larger than the first-size sectors, wherein at least one of the m first-size portions contains actual data as opposed to blank data, wherein convolutional encoding further comprises puncturing the convolutional code;
- and
- storing the m second-size portions of convolutional code in n non-volatile integrated circuit memory devices, wherein the m non-volatile integrated circuit memory devices are configured to store m first-size portions, wherein n is at least two.
A method of storing data in a plurality non-volatile integrated circuit memory devices, the method comprising:
- convolutional encoding m first-size portions of data into m second-size portions of convolutional code using a code rate of m/n, wherein the second-size portions are n/m times larger than the first-size sectors, wherein at least one of the m first-size portions contains actual data as opposed to blank data;
- storing the m second-size portions of convolutional code in n non-volatile integrated circuit memory devices, wherein the m non-volatile integrated circuit memory devices are configured to store m first-size portions, wherein n is at least two;
- determining that at least one of the m first-size portions of data corresponds to blank data;
- and
- bypassing a convolutional coding of a corresponding portion of the m second-size sectors of convolutional code for the m non-volatile integrated circuit memory devices.
A method of accessing data from a plurality of non-volatile integrated circuit memory devices, the method comprising:
- receiving a request from a host for data;
- retrieving one or more associated sectors of data from at least one of two or more of the non-volatile integrated circuit memory devices, wherein the one or more associated sectors are of a first sector size;
- deconvolving at least a portion of the one or more associated sectors to generate one or more sectors of information related to at least portion of the requested page, wherein the one or more sectors of the generated information are of a second sector size smaller than the first sector size by a code rate of a convolutional code that is deconvolved, wherein the sectors of generated information are read for deconvolving one rage after another from the non-volatile integrated circuit memory devices;
- compensating for punctured data;
- and
- decoding via a Viterbi algorithm.
A method of accessing data from a plurality of non-volatile integrated circuit memory devices, the method comprising:
- receiving a request from a host for data;
- retrieving one or more associated sectors of data from at least one of two or more of the non-volatile integrated circuit memory devices, wherein the one or more associated sectors are of a first sector size;
- deconvolving at least a portion of the one or more associated sectors to generate one or more sectors of information related to at least portion of the requested page, wherein the one or more sectors of the generated information are of a second sector size smaller than the first sector size by a code rate of a convolutional code that is deconvolved, wherein the sectors of generated information are read for deconvolving one page after another from the non-volatile integrated circuit memory devices;
- determining that one or more of the retrieved sectors are blank;
- and
- bypassing deconvolving for the blank sectors such that the generated information corresponds to blank data.
An apparatus comprising:
- a first buffer;
- a second buffer;
- control logic configured to interface between a host and a plurality of non-volatile integrated circuit memory devices and to control the storage of data from the second buffer to the non-volatile integrated circuit memory devices such that data is interleavingly spread over the non-volatile integrated circuit memory devices;
- a convolutional code encoder configured to encode data stored in the first buffer and to store the encoded data in the second buffer for transfer to the non-volatile integrated circuit memory devices;
- a convolutional code decoder configured to decode data stored in the second buffer retrieved from the non-volatile integrated circuit memory devices and to store the decoded data in the first buffer;
- and
- a blank sector bypass module configured to bypass the convolutional code encoder and/or convolutional code decoder in response to detecting blank data.
An apparatus comprising:
- a first buffer;
- a second buffer;
- control logic configured to interface between a host and a plurality of non-volatile integrated circuit memory devices and to control the storage of data from the second buffer to the non-volatile integrated circuit memory devices such that data is interleavingly spread over the non-volatile integrated circuit memory devices;
- a convolutional code encoder configured to encode data stored in the first buffer and to store the encoded data in the second buffer for transfer to the non-volatile integrated circuit memory devices;
- and
- a convolutional code decoder configured to decode data stored in the second buffer retrieved from the non-volatile integrated circuit memory devices and to store the decoded data in the first buffer;
- wherein the control logic is further configured to select a code rate m/n for the convolutional code encoder at least partially based on a number of non-volatile integrated circuit memory devices over which data is spread.
An apparatus comprising:
- a first buffer;
- a second buffer;
- control logic configured to interface between a host and a plurality of non-volatile integrated circuit memory devices and to control the storage of data from the second buffer to the non-volatile integrated circuit memory devices such that data is interleavingly spread over the non-volatile integrated circuit memory devices;
- a convolutional code encoder configured to encode data stored in the first buffer and to store the encoded data in the second buffer for transfer to the non-volatile integrated circuit memory devices;
- and
- a convolutional code decoder configured to decode data stored in the second buffer retrieved from the non-volatile integrated circuit memory devices and to store the decoded data in the first buffer;
- wherein the control logic is further configured to select a puncturing pattern for the convolutional code encoder at least partially based on a number of non-volatile integrated circuit memory devices over which data is spread.
Dependencies are inferred from the claim text.