IP Library Granted Patent US 10,719,389
Granted Patent B2
US 10,719,389 · App. 16/204,022 · Granted Jul 21, 2020

Enhanced data storage with concatenated inner and outer error correction codes

Inventors: David Christopher Pruett (Longmont, CO); Christopher Bergman (Erie, CO); Tod Roland Earhart (Longmont, CO)
Assignee: Burlywood, Inc.
G06F11/1004G06F11/1012H03M13/1105H03M13/29H03M13/2906H03M13/2948H03M13/3746H03M13/09H03M13/1102H03M13/152
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,719,389
App. No.
16/204,022
Granted
Jul 21, 2020
Kind
B2
Abstract

A method of operating a storage controller is provided. The method includes determining encoded data to be written to a storage media by applying at least an initial encoding comprising a first error correcting code type and a subsequent encoding comprising a second error correcting code type. The method further includes writing the encoded data to the storage media, and responsive to reading the encoded data from the storage media, processing the encoded data into primary decoded data using one or more primary decoders employing the second error correcting code type and detecting when data errors arise in the decoded data. The method also includes based at least on detecting one or more data errors in the decoded data, processing the encoded data into secondary decoded data using one or more secondary decoders employing the first error correcting code type.

Claims (38)

1. A method of operating a data storage device, the method comprising:

determining encoded data to be written to a storage media by applying to source data at least an initial encoding comprising a first error correcting code type and a subsequent encoding comprising a second error correcting code type;

writing the encoded data to the storage media;

responsive to reading the encoded data from the storage media, processing the encoded data into primary decoded data using one or more primary decoders employing the second error correcting code type and detecting data errors arising in the decoded data; and

based at least on detecting one or more data errors in the decoded data, processing the encoded data into secondary decoded data using one or more secondary decoders employing the first error correcting code type.

2. The method of claim 1 , further comprising:

based at least on detecting one or more data errors in the decoded data, discarding the primary decoded data and providing the secondary decoded data as read data.

3. The method of claim 1 , wherein the first error correcting code type is a Low-Density Parity Check (LDPC) error correcting code, and the second error correcting code type is a Bose-Chaudhuri-Hocquenghem (BCH) error correction code.

4. The method of claim 1 , wherein configuring encoded data further comprises encoding with an error detection code, and randomizing in a reversible manner.

5. The method of claim 4 , wherein the error detection code uses at least a Cyclic Redundancy Check (CRC).

6. The method of claim 1 , wherein processing the encoded data into secondary decoded data using one or more secondary decoders employing the first error correcting code type is performed iteratively until no data errors are detected in the decoded data.

7. The method of claim 1 , wherein the primary decoders each comprises a BCH decoder module, a de-randomizer module, and a CRC check module; and wherein the secondary decoders each comprises a BCH decoder module, a LDPC decoder module, a de-randomizer module, and a CRC check module.

8. A media controller for a storage system comprising:

a host interface, configured to interface with a host system;

a media interface, configured to interface with a storage media; and

processing circuitry coupled with the host interface and the storage interface configured to:

determine encoded data to be written to the storage media by applying at least an initial encoding comprising a first error correcting code type and a subsequent encoding comprising a second error correcting code type;

write the encoded data to the storage media;

responsive to reading the encoded data from the storage media, process the encoded data into primary decoded data using one or more primary decoders employing the second error correcting code type and detecting when data errors arising in the decoded data; and

based at least on detecting one or more data errors in the decoded data, process the encoded data into secondary decoded data using one or more secondary decoders employing the first error correcting code type.

9. The media controller of claim 8 , wherein the processing circuitry is further configured to:

based at least on detecting one or more data errors in the decoded data, discard the primary decoded data and providing the secondary decoded data as read data.

10. The media controller of claim 8 , wherein the first error correcting code type is a Low-Density Parity Check (LDPC) error correcting code, and the second error correcting code type is a Bose-Chaudhuri-Hocquenghem (BCH) error correction code.

11. The media controller of claim 8 , wherein configuring encoded data further comprises encoding with an error detection code, and randomizing in a reversible manner.

12. The media controller of claim 11 , wherein the error detection code uses at least a Cyclic Redundancy Check (CRC).

13. The media controller of claim 8 , wherein processing the encoded data into secondary decoded data using one or more secondary decoders employing the first error correcting code type is performed iteratively until no data errors are detected in the decoded data.

14. The media controller of claim 8 , wherein the primary decoders each comprises a BCH decoder module, a de-randomizer module, and a CRC check module; and wherein the secondary decoders each comprises a BCH decoder module, a LDPC decoder module, a de-randomizer module, and a CRC check module.

15. One or more non-transitory computer-readable media having stored thereon program instructions to operate a media controller for a storage system, the program instructions, when executed by processing circuitry, direct the processing circuitry to at least:

determine encoded data to be written to a storage media by applying at least an initial encoding comprising a first error correcting code type and a subsequent encoding comprising a second error correcting code type;

write the encoded data to the storage media;

responsive to reading the encoded data from the storage media, process the encoded data into primary decoded data using one or more primary decoders employing the second error correcting code type and detecting data errors arising in the decoded data; and

based at least on detecting one or more data errors in the decoded data, process the encoded data into secondary decoded data using one or more secondary decoders employing the first error correcting code type.

16. The one or more non-transitory computer-readable media of claim 15 , wherein the program instructions further direct the processing circuitry to at least:

based at least on detecting one or more data errors in the decoded data, discard the primary decoded data and providing the secondary decoded data as read data.

17. The one or more non-transitory computer-readable media of claim 15 , wherein the first error correcting code type is a Low-Density Parity Check (LDPC) error correcting code, and the second error correcting code type is a Bose-Chaudhuri-Hocquenghem (BCH) error correction code.

18. The one or more non-transitory computer-readable media of claim 15 , wherein configuring encoded data further comprises encoding with an error detection code, and randomizing in a reversible manner.

19. The one or more non-transitory computer-readable media of claim 18 , wherein the error detection code uses at least a Cyclic Redundancy Check (CRC).

20. The one or more non-transitory computer-readable media of claim 15 , wherein processing the encoded data into secondary decoded data using one or more secondary decoders employing the first error correcting code type is performed iteratively until no data errors are detected in the decoded data.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 15, 2025
From: INNOVATIVE SSD IP, LLC
To: BIP BY DDN, INC.
Reel/Frame 070844/0470 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 21, 2025
From: JONES, MICHAEL
To: INNOVATIVE SSD IP, LLC
Reel/Frame 070582/0446 →
NUNC PRO TUNC ASSIGNMENT Recorded Oct 16, 2024
From: EARHART, TOD ROLAND; BERGMAN, CHRISTOPHER; PRUETT, DAVID CHRISTOPHER
To: BURLYWOOD, INC.
Reel/Frame 068917/0832 →
CORRECTIVE ASSIGNMENT TO CORRECT THE APPLICATION NUMBER 10719389 TO PATENT NUMBER 10719389 PREVIOUSLY RECORDED AT REEL: 065954 FRAME: 0911. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Dec 27, 2023
From: BURLYWOOD, INC.
To: JONES, MICHAEL
Reel/Frame 066132/0215 →
CHANGE OF NAME Recorded Jul 21, 2020
From: BURLYWOOD, LLC
To: BURLYWOOD, INC.
Reel/Frame 053267/0383 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 29, 2018
From: PRUETT, DAVID CHRISTOPHER; BERGMAN, CHRISTOPHER; EARHART, TOD ROLAND
To: BURLYWOOD, LLC
Reel/Frame 047628/0286 →
Continuity (2)
Provisional Application 62593495 · Dec 1, 2017
Related Publication 20190171518A1 · Jun 6, 2019