Reducing errors caused by inter-cell interference in a memory device
Abstract
A method includes, in one aspect, performing a read operation on a wordline of a memory device, wherein the wordline comprises a plurality of cells that are expected to be in a first state; based on the read operation, identifying one or more of the plurality of cells that are determined to be in a second state that differs from the first state; encoding data using information pertaining to the identified cells to generate a codeword comprising a plurality of bits to be written to the wordline, with at least one of the plurality of bits, which are to be written to at least one of the identified cells, having a value corresponding to the second state; and writing the generated codeword to the wordline.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1. A method comprising:
in response to receiving an instruction to write data to a wordline of a memory device, performing a read operation on the wordline of the memory device, wherein the wordline comprises a plurality of cells that are expected to be in a first state;
based on the read operation, identifying one or more of the plurality of cells that are each determined to not be in the first state;
in response to the identifying, adaptively encoding the data using information pertaining to the identified cells to generate a codeword comprising a plurality of bits to be written to the wordline, with at least one of the plurality of bits, which are to be written to at least one of the identified cells, having a value corresponding to a second state that differs from the first state; and
writing, during a write operation that writes the data to the wordline of the memory device, the generated codeword to the wordline to cause the at least one of the identified cells to be in the second state.
2. The method of claim 1 , wherein:
performing the read operation on the wordline of the memory device comprises performing a pre-read operation using a pre-read voltage on the wordline of the memory device, wherein the plurality of cells of the wordline are expected to be in a erased state; and
identifying the one or more of the plurality of cells comprises identifying the one or more of the plurality of cells that are determined to be in a programmed state by determining that a threshold voltage of the one or more of the plurality of cells is higher than the pre-read voltage.
3. The method of claim 2 , wherein the pre-read voltage differs from a voltage used to read data previously written to the memory device.
4. The method of claim 1 , wherein the memory device comprises a flash memory device, and the method further comprises:
receiving the data to be written to the wordline of the flash memory device.
5. The method of claim 4 , wherein the flash memory device comprises a single-level cell flash memory device, and the method further comprises:
receiving the data to be written to the wordline of the single-level cell flash memory device.
6. The method of claim 1 , wherein the memory device comprises a phase change memory device, and the method further comprises:
receiving the data to be written to the wordline of the phase change memory device.
7. The method of claim 1 , wherein the memory device comprises a resistive memory device, and the method further comprises:
receiving the data to be written to the wordline of the resistive memory device.
8. The method of claim 1 , wherein encoding the data comprises generating the codeword using a partitioned linear block code.
9. The method of claim 1 , wherein encoding the data comprises:
determining whether a first parity vector for generating the at least one of the plurality of bits based on locations of all of the one or more identified cells exists;
when the first parity vector exists, determining the first parity vector based on the locations of all of the one or more identified cells;
when the first parity vector does not exist, selecting a subset of the one or more identified cells; and
determining a second parity vector for generating the at least one of the plurality of bits based on locations of the selected subset of the one or more identified cells.
10. The method of claim 9 , wherein a number of elements in the selected subset is less than a minimum distance for masking defects of a partitioned linear block code.
11. The method of claim 9 , wherein determining the first or second parity vector for masking defects comprises determining the first or second parity vector for masking defects using
G 0 Ψ d=G 1 Ψ m −( s + ) Ψ ,
where Ψ indicates the locations of all of the one or more identified cells or the locations of the selected subset, G 0 Ψ is a first generator matrix, G 1 Ψ is a second generator matrix, (s + ) Ψ represents side information corresponding to the locations, m is the data to be encoded, and d denotes the first or second parity vector for generating the at least one of the plurality of bits.
12. A system comprising:
a memory device comprising a wordline, with the wordline comprising a plurality of cells that are expected to be in a first state; and
a flash controller configured to perform operations comprising:
in response to receiving an instruction to write data to a wordline of a memory device, performing a read operation on the wordline of the memory device, wherein the wordline comprises a plurality of cells that are expected to be in a first state;
based on the read operation, identifying one or more of the plurality of cells that are each determined to not be in the first state;
in response to the identifying, adaptively encoding the data using information pertaining to the identified cells to generate a codeword comprising a plurality of bits to be written to the wordline, with at least one of the plurality of bits, which are to be written to at least one of the identified cells, having a value corresponding to a second state that differs from the first state; and
writing, during a write operation that writes the data to the wordline of the memory device, the generated codeword to the wordline to cause the at least one of the identified cells to be in the second state.
13. The system of claim 12 , wherein:
performing the read operation on the wordline of the memory device comprises performing a pre-read operation using a pre-read voltage on the wordline of the memory device, wherein the plurality of cells of the wordline are expected to be in an erased state; and
identifying the one or more of the plurality of cells comprises identifying the one or more of the plurality of cells that are determined to be in a programmed state by determining that a threshold voltage of the one or more of the plurality of cells is higher than the pre-read voltage.
14. The system of claim 13 , wherein the pre-read voltage differs from a voltage used to read data previously written to the memory device.
15. The system of claim 12 , wherein the memory device comprises a flash memory device, and the flash controller is configured to perform operations comprising:
receiving the data to be written to the wordline of the flash memory device.
16. The system of claim 15 , wherein the flash memory device comprises a single-level cell flash memory device, and the flash controller is configured to perform operations comprising:
receiving the data to be written to the wordline of the single-level cell flash memory device.
17. The system of claim 12 , wherein the memory device comprises a phase change memory device, and the flash controller is configured to perform operations comprising:
receiving the data to be written to the wordline of the phase change memory device.
18. The system of claim 12 , wherein the memory device comprises a resistive memory device, and the flash controller is configured to perform operations comprising:
receiving the data to be written to the wordline of the resistive memory device.
19. The system of claim 12 , wherein encoding the data comprises generating the codeword using a partitioned linear block code.
20. The system of claim 12 , wherein encoding the data comprises:
determining whether a first parity vector for generating the at least one of the plurality of bits based on locations of all of the one or more identified cells exists;
when the first parity vector exists, determining the first parity vector based on the locations of all of the one or more identified cells;
when the first parity vector does not exist, selecting a subset of the one or more identified cells; and
determining a second parity vector for generating the at least one of the plurality of bits based on locations of the selected subset of the one or more identified cells.
21. The system of claim 20 , wherein a number of elements in the selected subset is less than a minimum distance for masking defects of a partitioned linear block code.
22. The system of claim 20 , wherein determining the first or second parity vector for masking defects comprises determining the first or second parity vector for masking defects using
G 0 Ψ d=G 1 Ψ m −( s + ) Ψ ,
where Ψ indicates the locations of all of the one or more identified cells or the locations of the selected subset, G 0 Ψ is a first generator matrix, G 1 Ψ is a second generator matrix, (s + ) Ψ represents side information corresponding to the locations, m is the data to be encoded, and d denotes the first or second parity vector for generating the at least one of the plurality of bits.
23. A system comprising:
a flash memory device comprising a wordline, with the wordline comprising a plurality of cells that are expected to be in an erased state; and
a flash controller configured to perform operations comprising:
performing a pre-read operation using a pre-read voltage on the wordline of the flash memory device, wherein the pre-read voltage differs from a read voltage used to read data previously written to the flash memory device;
based on the pre-read operation, identifying one or more of the plurality of cells that have a threshold voltage that is higher than the pre-read voltage, wherein the higher threshold voltage indicates that the identified one or more cells are in a programmed state;
determining whether a first parity vector based on locations of all of the one or more identified cells exists;
when the first parity vector exists, determining the first parity vector based on the locations of all of the one or more identified cells;
when the first parity vector does not exist, selecting a subset of the one or more identified cells, wherein a number of elements in the selected subset is one less than a minimum distance for masking defects of a partitioned linear block code (PLBC);
determining a second parity vector based on locations of the selected subset of the one or more identified cells, wherein the first or second parity vector is determined using
G 0 Ψ d=G 1 Ψ m −( s + ) Ψ ,
where Ψ indicates the locations of all of the one or more identified cells or the locations of the selected subset, G 0 Ψ is a first generator matrix of a partitioned linear block code (PLBC), G 1 Ψ is a second generator matrix of the PLBC, (s + ) Ψ represents side information corresponding to the locations, m is data to be encoded, and d denotes the parity vector;
encoding data using the parity vector to generate a codeword comprising a plurality of bits to be written to the wordline, with at least one of the plurality of bits, which are to be written to at least one of the identified cells, having a value corresponding to the programmed state; and
writing the generated codeword to the wordline.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.