IP Library Granted Patent US 11,121,729
Granted Patent B1
US 11,121,729 · App. 16/944,050 · Granted Sep 14, 2021

Read channel buffer management for higher throughput decoding

Inventors: Deepak Sridhara (Longmont, CO); Jason Bellorado (San Jose, CA); Ara Patapoutian (Hopkinton, MA); Marcus Marrow (San Jose, CA)
Assignee: SEAGATE TECHNOLOGY LLC
H03M13/6343G11B20/1833H03M13/1111H03M13/6331
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,121,729
App. No.
16/944,050
Granted
Sep 14, 2021
Kind
B1
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 (44)

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.

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

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

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

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

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

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

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

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.

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

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

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

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

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

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

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

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.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2024
From: SEAGATE TECHNOLOGY LLC; SEAGATE SINGAPORE INTERNATIONAL HEADQUARTERS PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 067489/0509 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2020
From: SRIDHARA, DEEPAK; BELLORADO, JASON; PATAPOUTIAN, ARA; MARROW, MARCUS
To: SEAGATE TECHNOLOGY LLC
Reel/Frame 053371/0570 →