# US 11,121,729 B1 · Read channel buffer management for higher throughput decoding

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

- Number: US 11,121,729 B1
- Document ID: US11121729B1
- Status: Granted
- Kind: B1
- Application number: 16/944,050
- Filed: 2020-07-30
- Granted: 2021-09-14
- Earliest claimed: 2020-07-30
- Assignees: Seagate Technology LLC
- Applicants: Seagate Technology LLC
- Inventors: Deepak Sridhara; Jason Bellorado; Ara Patapoutian; Marcus Marrow
- Web page: https://patentgrep.com/patent/US11121729B1

## CPC

- G11B 20/10527: {Audio or video recording; Data buffering arrangements (G11B20/12 - G11B20/18 take precedence)}
- H03M 13/6343: {Error control coding in combination with techniques for partial response channels, e.g. recording}
- 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/6331: {Error control coding in combination with equalisation}
- G11B 2020/10675: {aspects of buffer control}
- H03M 13/152: {Bose-Chaudhuri-Hocquenghem [BCH] codes}
- 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)
- 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

An error recovery process provides for identifying a set of failed data blocks read from a storage medium during execution of a read command, populating sample buffers in a read channel with data of a first subset of the set of failed data blocks, and initiating an error recovery process on the data in the sample buffers. Responsive to successful recovery of one or more data blocks in the first subset, recovered data is released from the sample buffers and sample buffers locations previously-storing the recovered data are repopulated with data of a second subset of the set of failed data blocks. The error recovery process is then initiated on the data of the second subset of the failed data blocks while the error recovery process is ongoing with respect to data of the first subset of failed data blocks remaining in the sample buffers.

## Claims

### Claim 1

A method comprising:
identifying a set of failed data blocks read from a storage medium during execution of a read command;
populating sample buffers in a read channel with data of a first subset of the set of failed data blocks;
initiating an error recovery process on the data in the sample buffers, the error recovery process being a read sample combining process that entails multiple rounds of read averaging to update previously-stored samples based on newly-sampled read data;
responsive to successful recovery of one or more data blocks in the first subset, releasing the recovered data from the sample buffers and repopulating sample buffer locations previously-storing the recovered data with data of a second subset of the set of failed data blocks prior to completion of the multiple rounds of read averaging on the first subset of the failed data blocks; and
initiating the error recovery process on the data of the second subset of the failed data blocks while the error recovery process is ongoing with respect to data of the first subset of failed data blocks remaining in the sample buffers.

### Claim 2 (depends on 1)

The method of claim 1, wherein the multiple rounds of read averaging are performed without firmware intervention.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
during each of the multiple rounds of the read sample combining recovery process, allocating different numbers of decoding iterations to different data blocks in the set of failed data blocks.

### Claim 4 (depends on 1)

The method of claim 1, wherein releasing the recovered data from the sample buffers and repopulating the sample buffers with the data of the second subset of failed data blocks further comprises:
dynamically freeing up one or more of the sample buffers prior to a last round of the multiple rounds of the read sample combining recovery process; and
repopulating the freed-up sample buffers with the data of the second subset of the set of failed data blocks without freeing up another subset of the sample buffers storing data of the first subset of the failed data blocks not yet successfully recovered.

### Claim 5 (depends on 1)

The method of claim 1, wherein the multiple rounds of the read sample combining process are effective to perform decoding operations on a greater number of data blocks than there exist sample buffers in the read channel.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
dynamically tracking, in hardware, a subset of the failed data blocks that remain to be recovered as the subset is reduced in size with each subsequent round of an ongoing read sample combining recovery process.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
dynamically tracking, in hardware, a count value for data currently held in each one of a subset of the sample buffers allocated to a read sample combining process, the count value indicating a number of update rounds that a data sample stored within the buffer has been subjected to.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
decoding the set of failed data blocks according to an order that is different than the order for which failed data blocks are arranged on the storage medium.

### Claim 9

A system comprising:
read channel hardware adapted to:
receive a set of failed data blocks read from a storage medium during execution of a read command;
populate sample buffers in a read channel with data of a first subset of the set of failed data blocks;
initiate an error recovery process on the data in the sample buffers, the error recovery process being a read sample combining process that entails multiple rounds of read averaging to update previously-stored samples based on newly-sampled read data;
responsive to successful recovery of one or more data blocks in the first subset, release the recovered data from the sample buffers and repopulate sample buffer locations previously-storing the recovered data with data of a second subset of the set of failed data blocks prior to completion of the multiple rounds of read averaging on the first subset of the failed data blocks; and
initiate the error recovery process on the data of the second subset of the failed data blocks while the error recovery process is ongoing with respect to data of the first subset of failed data blocks remaining in the sample buffers.

### Claim 10 (depends on 9)

The system of claim 9, wherein the multiple rounds of read averaging are performed without firmware intervention.

### Claim 11 (depends on 9)

The system of claim 9, wherein the read channel hardware is further adapted to:
release the recovered data from the sample buffers without releasing other data of the first subset of failed data blocks that has not yet been recovered.

### Claim 12 (depends on 9)

The system of claim 9, wherein the multiple rounds of the read sample combining process are effective to perform decoding operations on a greater number of data blocks than there exist sample buffers in the read channel.

### Claim 13 (depends on 9)

The system of claim 9, wherein the read channel hardware is further adapted to:
during each of the multiple rounds of the read sample combining process, allocate different numbers of decoding iterations to different data blocks in the set of failed data blocks.

### Claim 14 (depends on 9)

The system of claim 9, wherein the read channel hardware is further adapted to:
dynamically track a subset of the failed data blocks that remain to be recovered as the subset is reduced in size with each subsequent round of an ongoing read sample combining recovery process.

### Claim 15 (depends on 9)

The system of claim 9, wherein the read channel hardware is further adapted to:
dynamically track a count value for data currently held in each one of a subset of the sample buffers allocated to a read sample combining process, the count value indicating a number of update rounds that data stored within the buffer has been subjected to.

### Claim 16 (depends on 9)

The system of claim 9, wherein the read channel hardware is further adapted to:
manage a block-to-buffer map to dynamically track, in hardware, a buffer location for data stored in association with each one of the failed data blocks.

### Claim 17

One or more tangible computer-readable storage media encoding instructions for executing a computer process, the computer process comprising:
identifying a set of failed data blocks read from a storage medium during execution of a read command;
populating sample buffers in a read channel with data of a first subset of the set of failed data blocks;
initiating an error recovery process on the data in the sample buffers, the error recovery process being a read sample combining process that entails multiple rounds of read averaging to update previously-stored samples based on newly-sampled read data;
responsive to successful recovery of one or more data blocks in the first subset, releasing the recovered data from the sample buffers and repopulating sample buffers locations previously-storing the recovered data with data of a second subset of the set of failed data blocks prior to completion of the multiple rounds of read averaging on the first subset of the failed data blocks; and
initiating the error recovery process on the data of the second subset of the failed data blocks while the error recovery process is ongoing with respect to data of the first subset of failed data blocks remaining in the sample buffers.
