IP Library Granted Patent US 11,170,869
Granted Patent B1
US 11,170,869 · App. 16/893,204 · Granted Nov 9, 2021

Dual data protection in storage devices

Inventors: Daniel L. Helmick (Broomfield, CO); Gerrit Jan Hemink (San Jose, CA)
Assignee: Western Digital Technologies, Inc.
G11C29/42G11C11/1673G11C11/1677G11C29/44H03M13/1145
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,170,869
App. No.
16/893,204
Granted
Nov 9, 2021
Kind
B1
Abstract

The present disclosure generally relates to storage devices, such as solid state drives. A storage device comprises a controller comprising a controller error correction code (ECC) engine and a storage unit comprising a plurality of dies. Each of the dies comprise a die ECC engine. When user data is received, the controller ECC engine generates first ECC/error detection code (EDC) data. The user data and the first ECC/EDC data is sent to a die for storage as a code word. The die ECC engine generates second ECC/EDC data for the code word in granular portions. The second ECC/EDC data is used to correct bit errors in one or more code words up to a threshold value. When the number of bit errors exceeds the threshold value, the failed code words are sent to the controller ECC engine for correction.

Claims (44)

1. A storage device, comprising:

a controller comprising a controller error correction code (ECC) engine, wherein the controller ECC engine is configured to generate first ECC data for user data; and

a media unit comprising a plurality of dies coupled to the controller, each of the dies comprising a die ECC engine, wherein:

each of the dies are configured to receive and store the user data and the first ECC data from the controller,

each of the die ECC engines are individually configured to generate second ECC data for the user data,

each of the die ECC engines is configured to correct one or more code words of a plurality of code words, and

each of the die ECC engines is configured to generate a speculative code word for two or more uncorrected code words of the plurality of code words.

2. The storage device of claim 1 , wherein the controller ECC engine comprises a parity engine, a decode engine, and an encode engine.

3. The storage device of claim 1 , wherein the controller ECC engine is further configured to generate first error detection code (EDC) data for the user data.

4. The storage device of claim 1 , wherein each of the die ECC engines are configured to generate second EDC data for the user data.

5. The storage device of claim 1 , wherein the controller ECC engine is configured to send the user data and the first ECC data as the plurality of code words to the plurality of dies; and

wherein each die ECC engine of the plurality of dies is configured to correct the two or more uncorrected code words using the speculative code word and the corrected code words.

6. The storage device of claim 1 , wherein the media unit comprises magnetoresistive random access memory (MRAM).

7. The storage device of claim 1 , wherein the controller ECC engine is configured to send the user data and the first ECC data as the plurality of code words to the plurality of dies;

wherein each die ECC engine of the plurality of dies is configured to send the one or more corrected code words to the controller ECC engine; and

wherein the controller ECC engine is configured to correct the two or more uncorrected code words using the speculative code word and the corrected code words.

8. The storage device of claim 1 , wherein the controller is configured to receive one or more commands to write the user data, and temporarily store the user data in the random access memory (RAM) until the user data aggregates to a minimum write size.

9. A storage device, comprising:

a controller comprising a controller error correction code (ECC) engine, wherein the controller ECC engine is configured to:

generate first ECC and error detection code (EDC) data for user data; and

correct a first amount of errors within the user data;

a media unit comprising a plurality of dies coupled to the controller, each of the dies comprising a die ECC engine, wherein each of the die ECC engines are individually configured to:

receive the first ECC and ECD data and the user data from the controller as one or more code words;

generate second ECC and EDC data for the one or more code words;

store the second ECC and EDC data and the one or more code words;

correct a second amount of errors within the user data, the second amount of errors being less than the first amount of errors; and

send one or more corrected code words of the one or more code words and one or more uncorrected code words of the one or more code words to the controller, wherein the controller ECC engine is further configured to correct the one or more uncorrected code words received from the die ECC engines by generating a speculative code word.

10. The storage device of claim 9 , wherein the controller further comprises an internal random access memory (RAM), and wherein the controller ECC engine comprises a parity engine, a decode engine, and an encode engine.

11. The storage device of claim 9 , wherein the media unit comprises magnetoresistive random access memory (MRAM), non-volatile memory, or volatile memory.

12. The storage device of claim 9 , wherein the one or more code words are a plurality of code words, and wherein the one or more uncorrected code words have the first amount of errors.

13. A method of operating a storage device, comprising:

receiving, at a controller of the storage device, user data;

generating first error correction code (ECC) data for the user data in a controller ECC engine of the controller;

sending the user data and the first ECC data as a plurality of code words to one or more dies of a plurality of dies of the storage device, each of the plurality of dies comprising a die ECC engine;

generating, in the die ECC engines of the one or more dies, second ECC data for the plurality of code words;

correcting one or more code words of the plurality of code words having a first amount of errors using the die ECC engine of the first die to form one or more corrected code words free of errors;

sending the corrected code words, a first uncorrected code word, a second uncorrected code word, and the second ECC data from the one or more dies to the controller, the first and second uncorrected code words having a second amount of errors;

generating a speculative code word; and

correcting the first and second uncorrected code words using the speculative code word and the corrected code words.

14. The method of claim 13 , wherein the speculative code word comprises the errors from both the first uncorrected code word and the second uncorrected code word.

15. The method of claim 13 , wherein correcting the first and second uncorrected code words using the speculative code word and the corrected code words comprises generating a plurality of bit error combinations within the speculative code word.

16. The method of claim 13 , wherein generating the first ECC data for the user data in the controller ECC engine comprises generating first error detection code (EDC) data and parity data for the user data, and wherein generating second ECC data for the plurality of code words comprises generating second EDC data.

17. The method of claim 13 , further comprising sending the corrected code words, the first uncorrected code word, the second uncorrected code word, and the first ECC data from the controller to the die ECC engines of the one or more dies prior to generating the speculative code word, wherein the speculative code word is generated in the die ECC engines of the one or more dies, and wherein the first and second uncorrected code words are corrected in the die ECC engines.

18. The method of claim 13 , wherein the speculative code word is generated in the controller ECC engine.

Assignments (10)
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 →
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 053926 FRAME 0446 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058966/0321 →
SECURITY INTEREST Recorded Sep 29, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 053926/0446 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 4, 2020
From: HELMICK, DANIEL L.; HEMINK, GERRIT JAN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 052844/0097 →