IP Library Granted Patent US 10,198,315
Granted Patent B2
US 10,198,315 · App. 15/056,070 · Granted Feb 5, 2019

Non-volatile memory with corruption recovery

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 10,198,315
App. No.
15/056,070
Granted
Feb 5, 2019
Kind
B2
Abstract

A non-volatile storage system is provided that includes a mechanism to restore data that has been corrupted beyond the limits of traditional error correction. The system creates first level parity information for each subset of data to form multiple sets of programmable data, with each set of programmable data including a subset of data and corresponding first level parity. Separate second level parity is created for each set of programmable data. The system creates combined second level parity information based on a function of separate second level parity information for the multiple sets of programmable data. If a set of programmable data is found to be corrupt, the corrupt subset of data is recovered using the corrupt subset of data read from the non-volatile storage system, the corresponding first level parity read from the non-volatile storage system and the combined second level parity information.

Claims (53)

1. An apparatus, comprising:

a control circuit configured to communicate with non-volatile storage,

the control circuit is configured to access a corrupted first set of programmed data from non-volatile storage, the corrupted first set of programmed data includes a first subset of data and corresponding first level parity for the first subset of data,

the control circuit is configured to access combined second level parity information for multiple sets of programmed data, each set of programmed data includes a subset of data and corresponding first level parity, the multiple sets of programmed data include the first set of programmed data;

the control circuit configured to recover the corrupted first set of programmed data by:

reading non-corrupt sets of programmed data of the multiple sets of programmed data,

creating separate second level parity information for the non-corrupt sets of programmed data,

computing separate second level parity information for the corrupted first set of programmed data using the created separate second level parity information for the non-corrupt sets of programmed data and the accessed combined second level parity information, and

decoding the corrupted first set of programmed data using the accessed first level parity for the first subset of data and the computed separate second level parity information for the corrupted first set of programmed data.

2. The apparatus of claim 1 , wherein:

the control circuit is configured to create the combined second level parity information from the multiple sets of programmed data; and

the control circuit is configured to cause the programming of the multiple sets of programmed data into the non-volatile storage and cause the storage of the combined second level parity information.

3. The apparatus of claim 2 , wherein:

the control circuit is configured to create the corresponding first level parity for the subsets of data of the multiple sets of programmed data.

4. The apparatus of claim 2 , wherein:

the control circuit is configured to test whether the first set of programmed data is corrupted after causing the programming of the multiple sets of programmed data into the non-volatile storage.

5. The apparatus of claim 2 , wherein:

the control circuit is a controller for the non-volatile storage and is configured to temporarily store the combined second level parity information at the controller until a time after causing the programming of the multiple sets of programmed data into the non-volatile storage and determining that none of the multiple sets of programmed data are corrupted.

6. The apparatus of claim 2 , wherein:

the control circuit is configured to cause the programming of the combined second level parity information in the non-volatile storage.

7. The apparatus of claim 1 , wherein:

the control circuit configured to determine that the first set of programmed data is corrupted;

the control circuit is configured to read the non-corrupt sets of programmed data from the non-volatile storage;

the control circuit is configured to create the separate second level parity information for the non-corrupt sets of programmed data from the read non-corrupt sets of programmed data; and

the control circuit is configured to create the separate second level parity information after and in response to determining that the first set of programmed data is corrupted.

8. The apparatus of claim 1 , wherein:

the control circuit is configured to create the separate second level parity information for the non-corrupt sets of programmed data based on contents of the multiple sets of programmed data

the control circuit is configured to XOR together the separate second level parity information in order to create the combined second level parity information; and

the control circuit is configured to cause the programming of the multiple sets of programmed data into the non-volatile storage and cause the storage of the combined second level parity information.

9. The apparatus of claim 1 , further comprising:

a plurality of memory cells arranged in a three dimensional array, the memory cells comprise the non-volatile storage.

10. The apparatus of claim 1 , wherein:

the control circuit is part of a controller that is connected to the non-volatile storage;

the controller includes a memory interface and a host interface, the memory interface configured to communicate with the non-volatile storage, the host interface configured to communicate with a host; and

the controller is configured to store the multiple sets of programmed data in different blocks of the non-volatile storage so that a defect that corrupts the first subset of data will not corrupt the multiple sets of programmed data in different physical pages.

11. A method comprising:

reading a corrupt subset of data and its corresponding first level parity;

reading and decoding non-corrupt subsets of data of multiple sets of programmable data, each set of programmable data includes a subset of data and corresponding first level parity, the non-corrupt subsets of data are decoded using their corresponding first level parity;

encoding the non-corrupt subsets of data and corresponding first level parity to create separate second level parity information for the non-corrupt subsets of data after the reading and decoding of the non-corrupt subsets of data;

computing separate second level parity information for the corrupt subset of data using the created separate second level parity information for the non-corrupt subsets of data and combined second level parity information, the combined second level parity information is based on second level parity information for the non-corrupt subsets of data and separate second level parity information for the corrupt subset of data; and

decoding the corrupt subset of data from the read corrupt subset of data, the corresponding first level parity for the corrupt subset of data that was read and the computed separate second level parity information for the corrupt subset of data.

12. The method of claim 11 , further comprising:

creating the combined second level parity information from separate second level parity information for the multiple sets of programmable data; and

causing the programming of sets of programmable data into non-volatile storage and causing the storage of the combined second level parity information.

13. The method of claim 12 , wherein:

the creating the combined second level parity information is performed by an XOR function of the second level parity information for the multiple sets of programmable data; and

the combined second level parity information is shorter in length than each set of programmable data.

14. The method of claim 11 , further comprising:

the reading the corrupt subset of data and its corresponding first level parity includes reading the corrupt subset of data from a three dimensional data structure and determining that the corrupt subset of data is corrupt.

15. An apparatus, comprising:

means for creating combined second level parity information from separate second level parity information for multiple sets of programmable data, each set of programmable data includes a subset of data and corresponding first level parity;

means for causing the programming of sets of programmable data into non-volatile storage and causing the storage of the combined second level parity information; and

means for recovering a corrupt subset of data by decoding other subsets of non-corrupt data, creating separate second level parity information for the decoded other subsets of non-corrupt data based on the decoded other subsets of non-corrupt data and corresponding first level parity for the respective decoded other subset of non-corrupt data, deriving separate second level parity information for the corrupt subset of data by using the created separate second level parity information for the decoded other subsets of non-corrupt data and the combined second level parity information, decoding the corrupt data using the derived separate second level parity information for the corrupt subset of data.

Assignments (5)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038812/0954 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 29, 2016
From: SHARON, ERAN; ALROD, IDAN
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 037854/0909 →
Cited By (1)
US 12,657,093