IP Library Granted Patent US 11,816,353
Granted Patent B2
US 11,816,353 · App. 17/555,957 · Granted Nov 14, 2023

Parity data for non-volatile storage

Inventor: Varun Sharma (Ghaziabad, IN)
Assignee: Western Digital Technologies, Inc.
G06F3/0655G06F3/0604G06F3/0679G11C16/3459
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 11,816,353
App. No.
17/555,957
Granted
Nov 14, 2023
Kind
B2
Abstract

Technology is disclosed herein for managing parity data in non-volatile memory. As user data is programming into respective groups of non-volatile memory cells, the system accumulates parity data. The system may accumulate XOR parity based on successive bitwise XOR operations of user data. After programming is complete, the system performs a post-program read test of the data stored into each respective group of memory cells. The system re-calculates the parity data such that the parity data is no longer based on the user data that was stored in any group of memory cells for which the post-program read test failed. For example, the system will perform an additional bitwise XOR between the accumulated XOR parity data with the user data that was stored in the group of memory cells for which the post-program read test failed. The parity data is programmed to a group of memory cells.

Claims (62)

1. An apparatus comprising:

one or more control circuits configured to control a memory structure that comprises non-volatile memory cells, wherein the one or more control circuits are configured to:

program data into respective groups of the non-volatile memory cells;

accumulate parity for the data in response to the data being programmed into the respective groups, wherein the accumulated parity is based on the data programmed into each respective group;

perform a post-program read test of each respective group after programming the data into the respective groups;

responsive to a determination that the post-program read test failed for a group of the non-volatile memory cells, re-calculate the parity such that the parity is based on data stored in the groups that passed the post-program read test but not the data stored in the group that failed the post-program read test; and

program the re-calculated parity to a group of the non-volatile memory cells other than the respective groups.

2. The apparatus of claim 1 , wherein the one or more control circuits are further configured to:

responsive to a determination that the post-program read test passed for each respective group, program the accumulated parity to the group of the non-volatile memory cells other than the respective groups, wherein the programmed parity is based on the data programmed into each respective group.

3. The apparatus of claim 1 , wherein the one or more control circuits are further configured to:

program any data that was programmed into the group that failed the post-program read test to non-volatile memory cells other than the respective groups.

4. The apparatus of claim 3 , wherein the one or more control circuits are configured to re-calculate the parity based on a logical combination of:

i) the accumulated parity that is based on the data programmed into each respective group; and

ii) the data that was programmed into the group that failed the post-program read test.

5. The apparatus of claim 1 , wherein the one or more control circuits are configured to re-calculate the parity based on a bitwise exclusive OR (XOR) of the accumulated parity after programming the data into each respective group and the data that was programmed into the group that failed the post-program read test.

6. The apparatus of claim 1 , wherein the one or more control circuits are configured to:

program parity to the group of the non-volatile memory cells other than the respective groups that is based on data programmed in n groups of the memory cells in response to the post-program read test passing for each respective group, wherein n is a positive integer; and

program parity to the group of the non-volatile memory cells other than the respective groups that is based on data programmed in n−m groups of the memory cells in response to the post-program read test failing for m of the respective groups, wherein m is a positive integer less than n.

7. The apparatus of claim 1 , wherein the one or more control circuits are further configured to:

use the programmed parity to recover the data in one of the respective groups of the non-volatile memory cells based on the data that was programmed in groups for which the post-program read test passed but not based on the data that was programmed in the group for which the post-program read test failed.

8. The apparatus of claim 1 , wherein the one or more control circuits are configured to:

verify whether memory cells in the respective groups have a threshold voltage at least as high as a target verify reference level for each respective memory cell when programming the data into the respective groups of the non-volatile memory cells; and

determine whether memory cells in the respective groups have a threshold voltage between two read reference levels when performing the post-program read test.

9. The apparatus of claim 1 , wherein the one or more control circuits are configured to:

program the data into the respective groups of the non-volatile memory cells during a process that folds data stored at a single bit per memory cell in source groups of non-volatile memory cells to multiple bits per memory cell in the respective groups of the non-volatile memory cells.

10. The apparatus of claim 9 , wherein the one or more control circuits are configured to:

recover the data that was programmed into the group for which the post-program read test failed from the source groups of non-volatile memory cells.

11. The apparatus of claim 1 , wherein the one or more control circuits are configured to:

program the data into the respective groups of the non-volatile memory cells as error correction code (ECC) codewords;

run a decoding algorithm as a part of the post-program read test to attempt to decode the ECC codewords; and

determine that the post-program read test fails for any group of the non-volatile memory cells for which an ECC codeword is not successfully decoded.

12. A method of operating non-volatile storage, the method comprising:

programming user data into n groups of non-volatile memory cells in a memory structure, including testing whether each respective memory cell has a threshold voltage at least as high as a target verify reference voltage for a target data state for each respective memory cell, wherein the user data is programmed as error correction code (ECC) codewords;

accumulating parity data in non-transitory memory as the user data is being programmed into the n groups of non-volatile memory cells;

performing a post-program read test of each of the n groups of the memory cells that includes running a decoding algorithm to attempt to decode the ECC codewords;

re-calculating the parity data in the non-transitory memory based on the user data stored in n−m groups that passed the post-program read test responsive to m groups of non-volatile memory cells failing the post-program read test, wherein n is a positive integer, wherein m is a positive integer less than n; and

programming the re-calculated parity data to a group of the non-volatile memory cells other than the n groups of memory cells.

13. The method of claim 12 , further comprising:

determining that the post-program read test fails for a tested group of the memory cells in response to a failure to decode an ECC codeword stored in the tested group.

14. The method of claim 12 , wherein re-calculating the parity data comprises:

forming a bitwise exclusive OR (XOR) between the accumulated parity data after programming the n groups and the user data that was programmed in the group that failed the post-program read test.

15. The method of claim 12 , further comprising:

recovering the user data that was programmed in the group of memory cells that failed the post-program read test from multiple groups of non-volatile memory cells that each store one page of user data.

16. A non-volatile storage system, comprising:

a plurality of semiconductor die, each semiconductor die comprising blocks of non-volatile memory cells;

non-transitory memory; and

one or more control circuits in communication with the non-transitory memory and the plurality of semiconductor die, the one or more control circuits comprising:

means for programming data into respective groups of the non-volatile memory cells at multiple bits per memory cell;

means for accumulating, in the non-transitory memory, exclusive OR (XOR) parity for the data while the data is being programmed;

means for performing a post-program read test of each respective group after programming the data into the respective groups;

means for re-calculating the XOR parity based on a bitwise XOR between the XOR parity after programming each respective group with data that was programmed into a group of memory cells for which the post-program read test failed; and

means for programming the re-calculated XOR parity to a group of the non-volatile memory cells other than the respective groups.

17. The non-volatile storage system of claim 16 , wherein the one or more control circuits are configured to:

program the data that was programmed into the group of memory cells for which the post-program read test failed into a different group of memory cells.

18. The non-volatile storage system of claim 16 , wherein the one or more control circuits are configured to:

program the data into respective groups of the non-volatile memory cells at multiple bits per memory cell during a process that folds data stored at a single bit per memory cell in source groups of non-volatile memory cells to the respective groups of the non-volatile memory cells.

19. The non-volatile storage system of claim 18 , wherein the one or more control circuits are configured to:

access the data that was programmed into the group for which the post-program read test failed from the source groups of non-volatile memory cells.

20. The non-volatile storage system of claim 16 , wherein the one or more control circuits are configured to:

program the data into the respective groups of the non-volatile memory cells as error correction code (ECC) codewords;

run a decoding algorithm as a part of the post-program read test to attempt to decode the ECC codewords; and

determine that the post-program read test fails for any group of the non-volatile memory cells for which an ECC codeword is not successfully decoded.

Assignments (8)
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 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2021
From: SHARMA, VARUN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058438/0670 →
Continuity (1)
Related Publication 20230195357A1 · Jun 22, 2023