IP Library Granted Patent US 11,036,582
Granted Patent B2
US 11,036,582 · App. 16/585,503 · Granted Jun 15, 2021

Uncorrectable error correction code (UECC) recovery time improvement

Inventors: Raghavendra Gopalakrishnan (Bangalore, IN); Bhanushankar Doni (Bangalore, IN); Manohar Srinivasaiah (Bangalore, IN)
Assignee: Western Digital Technologies, Inc.
G06F11/1068G11C11/5628G11C11/5671G11C16/10G11C16/26G11C16/0483
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,036,582
App. No.
16/585,503
Granted
Jun 15, 2021
Kind
B2
Abstract

An apparatus comprising non-volatile memory is configured to access a selected unit of encoded SLC data in the non-volatile memory during a first programming phase of a process of folding data stored at a single bit per memory cell to data stored at multiple bits per memory cell. The apparatus recovers the selected unit of SLC data based on redundancy data formed from units of SLC data that data include the selected unit of SLC data. The apparatus saves the recovered selected unit of SLC data to memory. The apparatus uses the saved recovered unit of SLC data during a second programming phase of folding the data stored at a single bit per memory cell to the data stored at multiple bits per memory cell, thereby saving considerable time in not having to again recover the SLC data using the redundancy data.

Claims (63)

1. An apparatus comprising:

volatile memory;

a memory interface configured to be connected to non-volatile memory; and

a processor circuit connected to the memory interface and coupled to the volatile memory, the processor circuit configured to:

read a selected unit of encoded single level cell (SLC) data from a first group of non-volatile memory cells in the non-volatile memory into the volatile memory during a first programming phase of a process of folding data stored at a single bit per memory cell in the non-volatile memory to data stored at multiple bits per memory cell in the non-volatile memory;

recover the selected unit of SLC data based on a plurality of other units of SLC data and redundancy data formed from the selected unit of SLC data and the plurality of other units of SLC data in response to a failure to decode the selected unit of encoded SLC data;

save the recovered selected unit of SLC data to memory; and

use the saved recovered unit of SLC data during a second programming phase of folding the data stored at a single bit per memory cell in the non-volatile memory to the data stored at multiple bits per memory cell in the non-volatile memory.

2. The apparatus of claim 1 , wherein:

the processor circuit comprises an error correction engine configured to determine whether the selected unit of encoded SLC data can be recovered by applying an error correcting algorithm to the encoded SLC data; and

the processor circuit is configured to save the recovered selected unit of SLC data to volatile memory coupled to the error correction engine.

3. The apparatus of claim 1 , wherein:

the processor circuit is configured to save the recovered selected unit of SLC data to a second group of non-volatile memory cells in the non-volatile memory.

4. The apparatus of claim 1 , wherein:

the processor circuit is configured to save the recovered selected unit of SLC data to a region of the non-volatile memory that is used as a safe zone.

5. The apparatus of claim 1 , wherein:

the processor circuit is configured to save the recovered selected unit of SLC data to an open block of non-volatile memory cells in the non-volatile memory.

6. The apparatus of claim 1 , wherein:

the first programming phase of the folding comprises a coarse programming phase; and

the second programming phase of the folding comprises a fine programming phase.

7. The apparatus of claim 1 , wherein the processor circuit is further configured to:

store the data at multiple bits per memory cell in a first word line in a block of non-volatile memory cells in the non-volatile memory during the first programming phase of the process of folding the data; and

perform the second programming phase of the process of folding the data after programming data to a second word line in the block of non-volatile memory cells in the non-volatile memory.

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

reading, from a first group of non-volatile memory cells, a codeword for a selected single level cell (SLC) page of data during a coarse programming phase of folding SLC data stored at a single bit per non-volatile memory cell to multi-level cell (MLC) data stored at multiple bits per non-volatile memory cell;

applying an error correcting algorithm to the codeword for the selected SLC page during the coarse programming phase;

determining that the selected SLC page is not recovered by applying the error correcting algorithm to the codeword for the selected SLC page during the coarse programming phase;

recovering the selected SLC page using a redundancy page and a plurality of SLC pages other than the selected SLC page, the redundancy page comprising bitwise combinations of the selected SLC page and the plurality of SLC pages other than the selected SLC page;

saving the recovered selected SLC page to a second group of non-volatile memory cells;

reading, from the first group of non-volatile memory cells, the codeword for the selected SLC page during a fine programming phase of folding the SLC data to the MLC data;

applying the error correcting algorithm to the codeword for the selected SLC page during the fine programming phase; and

using the saved recovered selected SLC page during the fine programming phase of folding the SLC data to the MLC data in response to a failure to decode the codeword for the selected SLC page during the fine programming phase.

9. The method of claim 8 , further comprising:

forming the redundancy page from bitwise combinations of the selected SLC page and the plurality of SLC pages other than the selected SLC page; and

storing the redundancy page in the non-volatile storage.

10. The method of claim 8 , wherein saving the recovered selected SLC page to memory comprises:

saving the recovered selected SLC page to non-volatile memory cells that store one bit per memory cell.

11. The method of claim 8 , wherein saving the recovered selected SLC page to memory comprises:

saving the recovered selected SLC page to a block of non-volatile memory cells that are reserved for storing information for managing operation of the non-volatile storage.

12. The method of claim 8 , wherein saving the recovered selected SLC page to memory comprises:

saving the recovered selected SLC page to an open block of non-volatile memory cells.

13. The method of claim 8 , further comprising:

storing the MLC data at multiple bits per memory cell in a first word line of a block of the non-volatile memory cells in the non-volatile storage during the coarse programming phase of folding the SLC data to the MLC data; and

performing the fine programming phase of folding the SLC data to the MLC data after programming data to a second word line in the block of non-volatile memory cells.

14. A non-volatile storage device comprising:

non-volatile memory cells; and

a control circuit configured to:

read a codeword for a selected single level cell (SLC) page in a first block of the non-volatile memory cells during a coarse programming phase of a process of folding SLC data stored at a single bit per memory cell to multi-level cell (MLC) data stored at multiple bits per memory cell in a first word line of a second block of the non-volatile memory cells;

recover the selected SLC page using a page of XOR data formed from a plurality of SLC pages stored in the non-volatile memory cells, the plurality of SLC pages include the selected SLC page;

store the recovered selected SLC page to data latches;

use the recovered selected SLC page in the data latches to perform the coarse programming phase of folding the SLC data to the first word line in the second block;

save the recovered selected SLC page to a third block of the non-volatile memory cells;

perform a coarse programming phase of programing MLC data to a second word line in the second block after performing the coarse programming phase of folding the SLC data to the first word line in the second block, including overwrite the recovered selected SLC page in the data latches;

access the recovered selected SLC page from the third block of the non-volatile memory during a fine programming phase of the process of folding the SLC data to the MLC data, wherein the fine programming phase is performed after the coarse programming phase of the second word line in the second block; and

use the recovered selected SLC page during the fine programming phase to fold the SLC data to the MLC data.

15. The non-volatile storage device of claim 14 , wherein:

the control circuit comprises a memory controller configured to determine whether the codeword for the selected SLC page can be decoded by applying an error correcting algorithm to the codeword for the selected SLC page, the memory controller is configured to recover the selected SLC page using the page of XOR data in response to determining that the codeword for the selected SLC page cannot be decoded by applying the error correcting algorithm.

16. The non-volatile storage device of claim 14 , wherein:

the control circuit is configured to save the recovered selected SLC page to a group of the non-volatile memory cells that store data at a single bit per memory cell.

17. The non-volatile storage device of claim 14 , wherein:

the control circuit is configured to save the recovered selected SLC page to a group of the non-volatile memory cells that are used as a safe zone.

18. The non-volatile storage device of claim 14 , wherein:

the control circuit is configured to save the recovered selected SLC page to a group of the non-volatile memory cells that comprise an open block of non-volatile memory cells.

Assignments (10)
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 - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
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 →
RELEASE OF SECURITY INTEREST AT REEL 051717 FRAME 0716 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058965/0385 →
SECURITY INTEREST Recorded Feb 4, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 051717/0716 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2019
From: GOPALAKRISHNAN, RAGHAVENDRA; DONI, BHANUSHANKAR; SRINIVASAIAH, MANOHAR
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 050527/0474 →