IP Library Granted Patent US 9,652,321
Granted Patent B2
US 9,652,321 · App. 14/493,956 · Granted May 16, 2017

Recovery algorithm in non-volatile memory

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,652,321
App. No.
14/493,956
Granted
May 16, 2017
Kind
B2
Abstract

Apparatus, systems, and methods for Recovery algorithm in memory are described. In one embodiment, a controller comprises logic to receive a read request from a host device to read a line of data to the memory device, wherein the data is spread across a plurality (N) of dies and comprises an error correction code (ECC) spread across the plurality (N) of dies, retrieve the line of data from the memory device, perform an error correction code (ECC) check on the line of data retrieved from the memory device, and invoke a recovery algorithm in response to an error in the ECC check on the line of data retrieved from the memory device. Other embodiments are also disclosed and claimed.

Claims (66)

1. A memory, comprising:

a memory device; and

a controller coupled to the memory device and comprising logic, at least partially including hardware logic, configured to:

receive a read request from a host device for read data stored in the memory device, wherein a portion of the read data is stored in each of a plurality of dies and a portion of an error correction code (ECC) codeword associated with the read data is stored in each of the plurality of dies;

in response to the read request, retrieve the read data and the ECC codeword from the plurality of dies;

perform an ECC check on the read data retrieved from the plurality of dies; and

invoke a recovery algorithm in response to an error in the ECC check.

2. The memory of claim 1 , wherein:

the ECC check comprises evaluating a result of performing an Exclusive OR (XOR) operation on the read data and the ECC codeword.

3. The memory of claim 2 , wherein the logic is further configured— to:

calculate a second XOR from the read data retrieved from the plurality of dies and the result of performing the XOR operation on the read data retrieved from the plurality of dies.

4. The memory of claim 3 , wherein the logic is further configured to:

return the read data to the host device when the result of performing the second XOR is all zeroes.

5. The memory of claim 3 , wherein the logic is further configured to successively:

locate a position of a 1 in the second XOR; and

implement a loop which traverses the plurality of dies to successively:

flip a bit in a die of the plurality of dies at a position corresponding to the position of the 1 in the second XOR; and

recalculate the second XOR.

6. The memory of claim 5 , wherein the logic is further configured to:

return the read data to the host device when the contents of the second XOR are all zeroes.

7. The memory of claim 5 , wherein the logic is further configured to:

return a read error to the host device when the contents of the second XOR includes a 1.

8. An electronic device, comprising:

a processor; and

a memory, comprising:

a memory device; and

a controller coupled to the memory device and comprising logic, at least partially including hardware logic, to:

receive a read request from the processor for a line of read data stored in the memory device, wherein the line of read data is spread across a plurality of dies and comprises an error correction code (ECC) codeword spread across the plurality of dies;

retrieve the line of read data and the ECC codeword from the plurality of dies;

perform an ECC check on the line of read data retrieved from the plurality of dies; and

invoke a recovery algorithm in response to an error in the ECC check.

9. The electronic device of claim 8 , wherein:

the ECC check comprises evaluating an XOR of the line of read data and the ECC codeword.

10. The electronic device of claim 9 , wherein the logic is further configured to:

calculate a second XOR from the line of read data retrieved from the plurality of dies and the XOR of the line of read data retrieved from the plurality of dies.

11. The electronic device of claim 10 , wherein the logic is further configured to:

return the line of read data to the processor when the contents of the second XOR are all zeroes.

12. The electronic device of claim 10 , wherein the logic is further configured to successively:

locate a position of a 1 in the second XOR; and

implement a loop which traverses the plurality of dies to successively:

flip a bit in a die of the plurality of dies at a position corresponding to the position of the 1 in the second XOR; and

recalculate the second XOR.

13. The electronic device of claim 12 , wherein the logic is further configured to:

return the line of read data to the processor when the contents of the second XOR are all zeroes.

14. The electronic device of claim 12 , wherein the logic is further configured to:

return a read error to the processor when the contents of the second XOR includes a 1.

15. A computer program product comprising logic instructions stored on a nontransitory computer readable medium which, when executed by a controller coupled to a memory device, configure the controller to:

receive a read request from a host device for a line of read data stored in the memory device, wherein the line of read data is spread across a plurality of dies and comprises an error correction code (ECC) codeword spread across the plurality of dies;

retrieve the line of read data and the ECC codeword from the plurality of dies;

perform an ECC check on the line of read data retrieved from the plurality of dies; and

invoke a recovery algorithm in response to an error in the ECC check.

16. The computer program product of claim 15 , wherein:

the ECC check comprises evaluating an XOR of the line of read data and the ECC codeword.

17. The computer program product of claim 16 , wherein the logic instructions further configure the controller to:

calculate a second XOR from the line of read data retrieved from the plurality of dies and the XOR of the line of read data retrieved from the plurality of dies.

18. The computer program product of claim 17 , wherein the logic instructions further configure the controller to:

return the line of read data to the host device when the contents of the second XOR are all zeroes.

19. The computer program product of claim 17 , wherein the logic instructions further configure the controller to successively:

locate a position of a 1 in the second XOR; and

implement a loop which traverses the plurality of dies to successively:

flip a bit in a die of the plurality of dies at a position corresponding to the position of the 1 in the second XOR; and

recalculate the second XOR.

20. The computer program product of claim 19 , wherein the logic instructions further configure the controller to:

return the line of read data to the host device when the contents of the second XOR are all zeroes.

21. The computer program product of claim 19 , wherein the logic instructions further configure the controller to:

return a read error to the host device when the contents of the second XOR includes a 1.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2023
From: INTEL CORPORATION
To: SK HYNIX NAND PRODUCT SOLUTIONS CORP.
Reel/Frame 062702/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2015
From: MOTWANI, RAVI H; PANGAL, KIRAN
To: INTEL CORPORATION
Reel/Frame 035524/0745 →