# US 2019/0356334 A1 · Data storage device employing memory efficient processing of un-converged codewords

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

- Number: US 2019/0356334 A1
- Document ID: US20190356334A1
- Status: Published application
- Kind: A1
- Application number: 15/983,033
- Filed: 2018-05-17
- Published: 2019-11-21
- Earliest claimed: 2018-05-17
- Assignees: Western Digital Technologies, Inc.
- Applicants: Western Digital Technologies, Inc.
- Inventors: IOURI OBOUKHOV; WELDON M. HANSON; NIRANJAY RAVINDRAN; RICHARD L. GALBRAITH
- Web page: https://patentgrep.com/patent/US20190356334A1

## CPC

- H03M 13/1128: {Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0676: {Magnetic disk device}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G11B 20/1833: {by adding special lists or symbols to the coded information (G11B20/1806, G11B20/1866 take precedence)}
- H03M 13/1111: {Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms}
- H03M 13/2957: {Turbo codes and decoding}
- H03M 13/4138: {soft-output Viterbi algorithm based decoding, i.e. Viterbi decoding with weighted decisions}
- H03M 13/6325: {Error control coding in combination with demodulation}
- G11B 2020/185: {using an low density parity check [LDPC] code}
- 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)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11B: INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER (recording measured values in a way that does not require playback through a transducer G01D9/00; recording or playback apparatus using mechanically marked tape, e.g. punched paper tape, or using unit records, e.g. punched or magnetically marked cards G06K; transferring data from one type of record carrier to another G06K1/18; circuits for coupling output of reproducer to radio receiver H04B1/20; gramophone pick-ups or like acoustic electromechanical transducers or circuits therefor H04R)

## Abstract

A data storage device is disclosed comprising a head actuated over a disk comprising a data track having at least a first data segment and a second data segment. A first plurality of codewords are generated, and a first parity sector is generated over the first plurality of codewords. The first plurality of codewords and the first parity sector are written to the first data segment. A second plurality of codewords are generated, and a second parity sector is generated over the second plurality of codewords. The second plurality of codewords and the second parity sector are written to the second data segment. During a read operation the data segments of the data track are processed sequentially to decode the codewords using a low density parity check (LDPC) decoder, wherein the reliability metrics of un-converged codewords are stored in a codeword buffer and updated using the respective parity sector.

## Claims

### Claim 1

A data storage device comprising:
a disk comprising a data track having a plurality of data segments including a first data segment and a second data segment;
a head actuated over the disk; and
control circuitry configured to:
generate a first plurality of codewords each comprising a plurality of symbols;
generate a first parity sector over the first plurality of codewords;
write the first plurality of codewords and the first parity sector to the first data segment;
generate a second plurality of codewords each comprising a plurality of symbols;
generate a second parity sector over the second plurality of codewords;
write the second plurality of codewords and the second parity sector to the second data segment; and
during a revolution of the disk:
read the first plurality of codewords and the first parity sector from the first data segment;
process each of the first plurality of codewords read from the first data segment using a Viterbi-type detector, thereby generating codeword reliability metrics;
iteratively process the codeword reliability metrics for each of the first plurality of codewords using a low density parity check (LDPC) type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
store the LDPC reliability metrics for each of a plurality of un-converged codewords out of the first plurality of codewords in a codeword buffer;
process the LDPC reliability metrics stored in the codeword buffer using the first parity sector, thereby updating the un-converged codeword reliability metrics; and
iteratively process the updated codeword reliability metrics for each of the un-converged codewords using the LDPC-type decoder.

### Claim 2 (depends on 1)

The data storage device as recited in claim 1, wherein during the revolution of the disk, the control circuitry is further configured to:
read the second plurality of codewords and the second parity sector from the second data segment;
process each of the second plurality of codewords read from the second data segment using a Viterbi-type detector, thereby generating codeword reliability metrics;
iteratively process the codeword reliability metrics for each of the second plurality of codewords using a low density parity check (LDPC) type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
store the LDPC reliability metrics for each of a plurality of un-converged codewords out of the second plurality of codewords in a codeword buffer;
process the LDPC reliability metrics stored in the codeword buffer using the second parity sector, thereby updating the un-converged codeword reliability metrics; and
iteratively process the updated codeword reliability metrics for each of the un-converged codewords using the LDPC-type decoder;

### Claim 3

A data storage device comprising:
a disk comprising a data track;
a head actuated over the disk; and
control circuitry configured to:
generate a first plurality of codewords each comprising a plurality of symbols;
generate a second plurality of codewords each comprising a plurality of symbols;
generate a first parity sector over a first plurality of codewords;
generate a second parity sector over the second plurality of codewords;
write the first plurality of codewords and the second plurality of codewords to the data track;
write first parity sector and the second parity sector to the data track;
during a data recover procedure to recover the first plurality of codewords and the second plurality of codewords:
during a first revolution of the disk, read the first plurality of codewords and the first parity sector from the data track;
process each of the first plurality of codewords read from the disk using a Viterbi-type detector, thereby generating codeword reliability metrics;
iteratively process the codeword reliability metrics for each of the first plurality of codewords using a low density parity check (LDPC) type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
store the LDPC reliability metrics for each of a plurality of un-converged codewords out of the first plurality of codewords in a codeword buffer;
process the LDPC reliability metrics stored in the codeword buffer using the first parity sector, thereby updating the un-converged codeword reliability metrics out of the first plurality of codewords;
iteratively process the updated codeword reliability metrics for each of the un-converged codewords out of the first plurality of codewords using the LDPC-type decoder;
during a second revolution of the disk following the first revolution of the disk, read the second plurality of codewords and the second parity sector from the data track;
process each of the second plurality of codewords read from the disk using the Viterbi-type detector, thereby generating codeword reliability metrics;
iteratively process the codeword reliability metrics for each of the second plurality of codewords using the LDPC-type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
store the LDPC reliability metrics for each of a plurality of un-converged codewords out of the second plurality of codewords in a codeword buffer;
process the LDPC reliability metrics stored in the codeword buffer using the second parity sector, thereby updating the un-converged codeword reliability metrics out of the second plurality of codewords; and
iteratively process the updated codeword reliability metrics for each of the un-converged codewords out of the second plurality of codewords using the LDPC-type decoder.

### Claim 4 (depends on 3)

The data storage device as recited in claim 3, wherein the control circuitry is further configured to write the first plurality of codewords and the second plurality of codewords to the data track by interleave writing the first plurality of codewords and the second plurality of codewords to the data track.

### Claim 5

A data storage device comprising:
a disk comprising a data track;
a head actuated over the disk; and
control circuitry configured to:
generate a first plurality of codewords each comprising a plurality of symbols;
generate a first parity sector over the first plurality of codewords;
generate a second plurality of codewords each comprising a plurality of symbols;
generate a second parity sector over the second plurality of codewords;
interleave write the first plurality of codewords and the second plurality of codewords to the data track;
write the first parity sector and the second parity sector to the data track; and
during a read operation:
read the first plurality of codewords and the first parity sector from the first data segment;
process each of the first plurality of codewords read from the first data segment using a Viterbi-type detector, thereby generating codeword reliability metrics;
iteratively process the codeword reliability metrics for each of the first plurality of codewords using a low density parity check (LDPC) type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
store the LDPC reliability metrics for each of a plurality of un-converged codewords out of the first plurality of codewords in a codeword buffer;
process the LDPC reliability metrics stored in the codeword buffer using the first parity sector, thereby updating the un-converged codeword reliability metrics; and
iteratively process the updated codeword reliability metrics for each of the un-converged codewords using the LDPC-type decoder.

### Claim 6

A method of operating a data storage device, the method comprising:
generating a first plurality of codewords each comprising a plurality of symbols;
generating a first parity sector over the first plurality of codewords;
writing the first plurality of codewords and the first parity sector to a first data segment of a data track on a disk;
generating a second plurality of codewords each comprising a plurality of symbols;
generating a second parity sector over the second plurality of codewords;
writing the second plurality of codewords and the second parity sector to a second data segment of the data track; and
during a revolution of the disk:
reading the first plurality of codewords and the first parity sector from the first data segment;
processing each of the first plurality of codewords read from the first data segment, thereby generating codeword reliability metrics;
iteratively processing the codeword reliability metrics for each of the first plurality of codewords using a low density parity check (LDPC) type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
processing the LDPC reliability metrics of a first un-converged codeword out of the first plurality of codewords using the first parity sector, thereby updating the codeword reliability metrics for the first un-converged codeword; and
iteratively processing the updated codeword reliability metrics for the first un-converged codeword using the LDPC-type decoder.

### Claim 7 (depends on 6)

The method as recited in claim 6, further comprising during the revolution of the disk:
reading the second plurality of codewords and the second parity sector from the second data segment;
processing each of the second plurality of codewords read from the second data segment, thereby generating codeword reliability metrics;
iteratively processing the codeword reliability metrics for each of the second plurality of codewords using a low density parity check (LDPC) type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
processing the LDPC reliability metrics of a second un-converged codeword out of the second plurality of codewords using the second parity sector, thereby updating the codeword reliability metrics for the second un-converged codeword; and
iteratively processing the updated codeword reliability metrics for the second un-converged codeword using the LDPC-type decoder.

### Claim 8

A method of operating a data storage device, the method comprising:
generating a first plurality of codewords each comprising a plurality of symbols;
generating a second plurality of codewords each comprising a plurality of symbols;
generating a first parity sector over a first plurality of codewords;
generating a second parity sector over the second plurality of codewords;
writing the first plurality of codewords and the second plurality of codewords to a data track on a disk;
writing first parity sector and the second parity sector to the data track;
during a data recover procedure to recover the first plurality of codewords and the second plurality of codewords:
during a first revolution of the disk, reading the first plurality of codewords and the first parity sector from the data track;
processing each of the first plurality of codewords read from the disk, thereby generating codeword reliability metrics;
iteratively processing the codeword reliability metrics for each of the first plurality of codewords using a low density parity check (LDPC) type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
processing the LDPC reliability metrics of a first un-converged codeword out of the first plurality of codewords using the first parity sector, thereby updating the codeword reliability metrics for the first un-converged codeword;
iteratively processing the updated codeword reliability metrics for the first un-converged codeword using the LDPC-type decoder;
during a second revolution of the disk following the first revolution of the disk, reading the second plurality of codewords and the second parity sector from the data track;
processing each of the second plurality of codewords read from the disk, thereby generating codeword reliability metrics;
iteratively processing the codeword reliability metrics for each of the second plurality of codewords using the LDPC-type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
processing the LDPC reliability metrics of a second un-converged codeword out of the second plurality of codewords using the second parity sector, thereby updating the codeword reliability metrics for the second un-converged codeword; and
iteratively processing the updated codeword reliability metrics for the second un-converged codeword using the LDPC-type decoder.

### Claim 9 (depends on 8)

The method as recited in claim 8, further comprising writing the first plurality of codewords and the second plurality of codewords to the data track by interleave writing the first plurality of codewords and the second plurality of codewords to the data track.

### Claim 11

A method of operating a data storage device, the method comprising:
generating a first plurality of codewords each comprising a plurality of symbols;
generating a first parity sector over the first plurality of codewords;
generating a second plurality of codewords each comprising a plurality of symbols;
generating a second parity sector over the second plurality of codewords;
interleave writing the first plurality of codewords and the second plurality of codewords to a data track on a disk;
writing the first parity sector and the second parity sector to the data track; and
during a read operation:
reading the first plurality of codewords and the first parity sector from the first data segment;
processing each of the first plurality of codewords read from the first data segment, thereby generating codeword reliability metrics;
iteratively processing the codeword reliability metrics for each of the first plurality of codewords using a low density parity check (LDPC) type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
processing the LDPC reliability metrics of a first un-converged codeword out of the first plurality of codewords using the first parity sector, thereby updating the codeword reliability metrics for the first un-converged codeword; and
iteratively processing the updated codeword reliability metrics for the first un-converged codeword using the LDPC-type decoder.

### Claim 12

Control circuitry configured to:
generate a first plurality of codewords each comprising a plurality of symbols;
generate a first parity sector over the first plurality of codewords;
write the first plurality of codewords and the first parity sector to a first data segment of a data track on a disk;
generate a second plurality of codewords each comprising a plurality of symbols;
generate a second parity sector over the second plurality of codewords;
write the second plurality of codewords and the second parity sector to a second data segment of the data track; and
during a revolution of the disk:
read the first plurality of codewords and the first parity sector from the first data segment;
process each of the first plurality of codewords read from the first data segment using a Viterbi-type detector, thereby generating codeword reliability metrics;
iteratively process the codeword reliability metrics for each of the first plurality of codewords using a low density parity check (LDPC) type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
store the LDPC reliability metrics for each of a plurality of un-converged codewords out of the first plurality of codewords in a codeword buffer;
process the LDPC reliability metrics stored in the codeword buffer using the first parity sector, thereby updating the un-converged codeword reliability metrics; and
iteratively process the updated codeword reliability metrics for each of the un-converged codewords using the LDPC-type decoder.

### Claim 13 (depends on 12)

The control circuitry as recited in claim 12, wherein during the revolution of the disk, the control circuitry is further configured to:
read the second plurality of codewords and the second parity sector from the second data segment;
process each of the second plurality of codewords read from the second data segment using a Viterbi-type detector, thereby generating codeword reliability metrics;
iteratively process the codeword reliability metrics for each of the second plurality of codewords using a low density parity check (LDPC) type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
store the LDPC reliability metrics for each of a plurality of un-converged codewords out of the second plurality of codewords in a codeword buffer;
process the LDPC reliability metrics stored in the codeword buffer using the second parity sector, thereby updating the un-converged codeword reliability metrics; and
iteratively process the updated codeword reliability metrics for each of the un-converged codewords using the LDPC-type decoder;

### Claim 14

Control circuitry configured to:
generate a first plurality of codewords each comprising a plurality of symbols;
generate a second plurality of codewords each comprising a plurality of symbols;
generate a first parity sector over a first plurality of codewords;
generate a second parity sector over the second plurality of codewords;
write the first plurality of codewords and the second plurality of codewords to a data track on a disk;
write first parity sector and the second parity sector to the data track;
during a data recover procedure to recover the first plurality of codewords and the second plurality of codewords:
during a first revolution of the disk, read the first plurality of codewords and the first parity sector from the data track;
process each of the first plurality of codewords read from the disk using a Viterbi-type detector, thereby generating codeword reliability metrics;
iteratively process the codeword reliability metrics for each of the first plurality of codewords using a low density parity check (LDPC) type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
store the LDPC reliability metrics for each of a plurality of un-converged codewords out of the first plurality of codewords in a codeword buffer;
process the LDPC reliability metrics stored in the codeword buffer using the first parity sector, thereby updating the un-converged codeword reliability metrics out of the first plurality of codewords;
iteratively process the updated codeword reliability metrics for each of the un-converged codewords out of the first plurality of codewords using the LDPC-type decoder;
during a second revolution of the disk following the first revolution of the disk, read the second plurality of codewords and the second parity sector from the data track;
process each of the second plurality of codewords read from the disk using the Viterbi-type detector, thereby generating codeword reliability metrics;
iteratively process the codeword reliability metrics for each of the second plurality of codewords using the LDPC-type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
store the LDPC reliability metrics for each of a plurality of un-converged codewords out of the second plurality of codewords in a codeword buffer;
process the LDPC reliability metrics stored in the codeword buffer using the second parity sector, thereby updating the un-converged codeword reliability metrics out of the second plurality of codewords; and
iteratively process the updated codeword reliability metrics for each of the un-converged codewords out of the second plurality of codewords using the LDPC-type decoder.

### Claim 15 (depends on 14)

The control circuitry as recited in claim 14, wherein the control circuitry is further configured to write the first plurality of codewords and the second plurality of codewords to the data track by interleave writing the first plurality of codewords and the second plurality of codewords to the data track.

### Claim 16

Control circuitry configured to:
generate a first plurality of codewords each comprising a plurality of symbols;
generate a first parity sector over the first plurality of codewords;
generate a second plurality of codewords each comprising a plurality of symbols;
generate a second parity sector over the second plurality of codewords;
interleave write the first plurality of codewords and the second plurality of codewords to a data track on a disk;
write the first parity sector and the second parity sector to the data track; and
during a read operation:
read the first plurality of codewords and the first parity sector from the first data segment;
process each of the first plurality of codewords read from the first data segment using a Viterbi-type detector, thereby generating codeword reliability metrics;
iteratively process the codeword reliability metrics for each of the first plurality of codewords using a low density parity check (LDPC) type decoder, thereby generating a LDPC reliability metric for each symbol of each codeword;
store the LDPC reliability metrics for each of a plurality of un-converged codewords out of the first plurality of codewords in a codeword buffer;
process the LDPC reliability metrics stored in the codeword buffer using the first parity sector, thereby updating the un-converged codeword reliability metrics; and
iteratively process the updated codeword reliability metrics for each of the un-converged codewords using the LDPC-type decoder.
