# US 2019/0171518 A1 · Enhanced data storage with concatenated inner and outer error correction codes

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2019/0171518 A1
- Document ID: US20190171518A1
- Status: Published application
- Kind: A1
- Application number: 16/204,022
- Filed: 2018-11-29
- Published: 2019-06-06
- Earliest claimed: 2017-12-01
- Assignees: Burlywood, Inc.
- Applicants: Burlywood, LLC
- Inventors: David Christopher Pruett; Christopher Bergman; Tod Roland Earhart
- Web page: https://patentgrep.com/patent/US20190171518A1

## CPC

- G06F 11/1004: {to protect a block of data words, e.g. CRC or checksum (G06F11/1076 takes precedence; security arrangements for protecting computers or computer systems against unauthorized activity G06F21/00)}
- G06F 11/1012: {using codes or arrangements adapted for a specific type of error (G06F11/1048 takes precedence)}
- H03M 13/1105: {Decoding}
- H03M 13/29: combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M 13/2906: {using block codes (H03M13/2957 takes precedence)}
- H03M 13/2948: {Iterative decoding (H03M13/2957 takes precedence)}
- H03M 13/3746: {with iterative decoding}
- H03M 13/09: Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M 13/1102: {Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes}
- H03M 13/152: {Bose-Chaudhuri-Hocquenghem [BCH] codes}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)

## 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

### Claim 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 when data errors arise 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.

### Claim 2 (depends on 1)

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.

### Claim 3 (depends on 1)

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.

### Claim 4 (depends on 1)

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

### Claim 5 (depends on 4)

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

### Claim 6 (depends on 1)

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.

### Claim 7 (depends on 1)

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

### Claim 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 arise 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.

### Claim 9 (depends on 8)

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.

### Claim 10 (depends on 8)

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.

### Claim 11 (depends on 8)

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

### Claim 12 (depends on 11)

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

### Claim 13 (depends on 8)

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.

### Claim 14 (depends on 8)

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

### Claim 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 when data errors arise 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.

### Claim 16 (depends on 15)

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.

### Claim 17 (depends on 15)

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.

### Claim 18 (depends on 15)

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

### Claim 19 (depends on 18)

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).

### Claim 20 (depends on 15)

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.
