# US 11,443,826 B2 · Storage area retirement in a storage device

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

- Number: US 11,443,826 B2
- Document ID: US11443826B2
- Status: Granted
- Kind: B2
- Application number: 16/883,081
- Filed: 2020-05-26
- Published: 2020-09-10
- Granted: 2022-09-13
- Earliest claimed: 2018-04-27
- Assignees: Seagate Technology LLC
- Applicants: Seagate Technology LLC
- Inventors: Ludovic Danjean; Abdelhakim Alhussien; Erich Franz Haratsch
- Web page: https://patentgrep.com/patent/US11443826B2

## CPC

- G11C 29/42: using error correcting codes [ECC] or parity check
- G06F 11/1048: {using arrangements adapted for a specific error detection or correction feature}
- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G11C 29/4401: {for self repair}
- G11C 29/52: Protection of memory contents; Detection of errors in memory contents
- G11C 2029/0409: {Online test}
- G11C: STATIC STORES (semiconductor memory devices H10B)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods presented herein provide for testing degradation in a storage device. In one embodiment, a storage controller is operable to test individual portions of a first of the plurality of storage areas of the storage device by: analyzing individual portions of the first storage area; determining that one or more of the individual portions of the first storage area have failed; and retire the failed one or more portions of the first storage area. The storage controller is further operable to write to the first storage area using an error correction code (ECC), and to test the remaining portions of the first storage area to determine whether the first storage area should be retired in response to writing to the first storage area.

## Claims

### Claim 1

A method operable with a storage device comprising a plurality of storage areas operable to store data, the method comprising steps of:
identifying a number of individual portions of a first storage area of the plurality of storage areas of the storage device to retire;
determining whether a total of the number of identified individual portions of the first storage area to retire and a number of individual portions of the first storage area already retired is less than a threshold total;
upon determining that the total of the number of identified individual portions to retire and the number of individual portions already retired is not less than the threshold total, retiring the entire first storage area;
upon determining that the total of the number of identified individual portions to retire and the number of individual portions already retired is less than the threshold total, retiring the identified individual portions of the first storage area;
testing the remaining individual portions of the first storage area;
determining whether individual portions of the first storage area were retired due to write failures during the testing;
upon determining that individual portions of the first storage area were retired due to write failure, setting a current code rate index associated with the first storage area to an original code rate index for the first storage area; and
upon determining that no individual portions of the first storage area were retired due to write failure, setting the current code rate index associated with the first storage area to a minimum code rate index.

### Claim 2 (depends on 1)

The method of claim 1, wherein:
the storage device is a Solid State Drive (SSD), the plurality of storage areas of the SSD are R-blocks of a NAND flash device, and the individual portions of the storage areas of the NAND flash device are pages.

### Claim 3 (depends on 1)

The method of claim 1, wherein testing the remaining individual portions of the first storage area comprises steps of:
writing test data to the remaining individual portions of the first storage area;
determining whether at least one write failure occurred in writing the test data;
upon determining that at least one write failure occurred, returning to the identifying step to identify whether any remaining individual portions of the first storage should be retired;
upon determining that no write failures occurred, reading the first storage area;
determining whether the test data was successfully recovered from the first storage area; and
upon determining that the test data was not successfully recovered from the first storage area, returning to the identifying step to identify whether any remaining individual portions of the first storage should be retired.

### Claim 4 (depends on 1)

The method of claim 1, further comprising, before testing the remaining individual portions of the first storage area:
erasing the first storage area;
determining whether an erase failure occurred to the first storage area; and
retiring the first storage area upon detection of the erase failure to the first storage area.

### Claim 5 (depends on 1)

The method of claim 1, wherein:
the current code rate index associated with the first storage area is one of a plurality of tiered code rate indices, and
the minimum code rate index is associated with the highest code rate in the tiered code rates.

### Claim 6 (depends on 1)

The method of claim 1, wherein identifying individual portions of the storage area to retire comprises steps of:
writing test data to a first individual portion of the first storage area using a code rate associated with a first code rate index;
reading the test data from the first individual portion;
determining whether the test data was successfully recovered from the first individual portion;
upon determining that the test data was not successfully recovered from the first individual portion, incrementing the code rate index;
determining whether the incremented code rate index exceeds a maximum code rate index;
upon determining that the incremented code rate index exceeds the maximum code rate index, identify the first individual portion for retirement; and
upon determining that the incremented code rate index does not exceed the maximum code rate index, repeating the writing, reading, and determining steps using a code rate associated with the incremented code rate index.

### Claim 7 (depends on 6)

The method of claim 6, wherein:
the code rate associated with the maximum code rate index is based on a threshold number of clock cycles used for low density parity check (LDPC) decoding.

### Claim 8

A storage system, comprising:
a storage device comprising a plurality of storage areas operable to store data; and
a controller operable to manage the plurality of storage areas of the storage device and configured to:
identify a number of individual portions of a first storage area of the plurality of storage areas of the storage device to retire,
determine whether a total of the number of identified individual portions of the first storage area to retire and a number of individual portions of the first storage area already retired is less than a threshold total,
upon determining that the total of the number of identified individual portions to retire and the number of individual portions already retired is not less than the threshold total, retire the entire first storage area,
upon determining that the total of the number of identified individual portions to retire and the number of individual portions already retired is less than the threshold total, retire the identified individual portions of the first storage area,
test the remaining individual portions of the first storage area,
determine whether individual portions of the first storage area were retired due to write failures during the testing,
upon determining that individual portions of the first storage area were retired due to write failure, setting a current code rate index associated with the first storage area to an original code rate index for the first storage area, and
upon determining that no individual portions of the first storage area were retired due to write failure, setting the current code rate index associated with the first storage area to a minimum code rate index.

### Claim 9 (depends on 8)

The storage system of claim 8, wherein:
the storage device is a Solid State Drive (SSD), the plurality of storage areas of the SSD are R-blocks of a NAND flash device, and the individual portions of the storage areas of the NAND flash device are pages.

### Claim 10 (depends on 8)

The storage system of claim 8, wherein testing the remaining individual portions of the first storage area comprises steps of:
writing test data to the remaining individual portions of the first storage area;
determining whether at least one write failure occurred in writing the test data;
upon determining that at least one write failure occurred, returning to the identifying step to identify whether any remaining individual portions of the first storage should be retired;
upon determining that no write failures occurred, reading the first storage area;
determining whether the test data was successfully recovered from the first storage area; and
upon determining that the test data was not successfully recovered from the first storage area, returning to the identifying step to identify whether any remaining individual portions of the first storage should be retired.

### Claim 11 (depends on 8)

The storage system of claim 8, wherein the controller is further configured to, before testing the remaining individual portions of the first storage area:
erase the first storage area;
determine whether an erase failure occurred to the first storage area; and
retire the first storage area upon detection of the erase failure to the first storage area.

### Claim 12 (depends on 8)

The storage system of claim 8, wherein:
the current code rate index associated with the first storage area is one of a plurality of tiered code rate indices, and
the minimum code rate index is associated with the highest code rate in the tiered code rates.

### Claim 13 (depends on 8)

The storage system of claim 8, wherein identifying individual portions of the storage area to retire comprises steps of:
writing test data to a first individual portion of the first storage area using a code rate associated with a first code rate index;
reading the test data from the first individual portion;
determining whether the test data was successfully recovered from the first individual portion;
upon determining that the test data was not successfully recovered from the first individual portion, incrementing the code rate index;
determining whether the incremented code rate index exceeds a maximum code rate index;
upon determining that the incremented code rate index exceeds the maximum code rate index, identify the first individual portion for retirement; and
upon determining that the incremented code rate index does not exceed the maximum code rate index, repeating the writing, reading, and determining steps using a code rate associated with the incremented code rate index.

### Claim 14 (depends on 13)

The storage system of claim 13, wherein:
the code rate associated with the maximum code rate index is based on a threshold number of clock cycles used for low density parity check (LDPC) decoding.

### Claim 15

A non-transitory computer readable medium comprising instructions that, when executed by a controller of a storage device, direct the controller to:
identify a number of individual portions of a first storage area of the storage device to retire;
determine whether a total of the number of identified individual portions of the first storage area to retire and a number of individual portions of the first storage area already retired is less than a threshold total;
upon determining that the total of the number of identified individual portions to retire and the number of individual portions already retired is not less than the threshold total, retire the entire first storage area;
upon determining that the total of the number of identified individual portions to retire and the number of individual portions already retired is less than the threshold total, retire the identified individual portions of the first storage area;
test the remaining individual portions of the first storage area;
determine whether individual portions of the first storage area were retired due to write failures during the testing;
upon determining that individual portions of the first storage area were retired due to write failure, setting a current code rate index associated with the first storage area to an original code rate index for the first storage area; and
upon determining that no individual portions of the first storage area were retired due to write failure, setting the current code rate index associated with the first storage area to a minimum code rate index.

### Claim 16 (depends on 15)

The non-transitory computer readable medium of claim 15, wherein:
the storage device is a Solid State Drive (SSD), the first storage area of the SSD comprises an R-block of a NAND flash device, and the individual portions of the first storage area of the NAND flash device are pages.

### Claim 17 (depends on 16)

The non-transitory computer readable medium of claim 16, wherein the threshold total comprises a firmware parameter representing a number of outlier pages in an R-block that generally fail first.

### Claim 18 (depends on 15)

The non-transitory computer readable medium of claim 15, wherein setting a current code rate index associated with the first storage area results in a higher code rate being used for writing and reading data to and from the first storage area subsequent to retirement of the identified individual portions.

### Claim 19 (depends on 15)

The non-transitory computer readable medium of claim 15, wherein:
the current code rate index associated with the first storage area is one of a plurality of tiered code rate indices, and
the minimum code rate index is associated with the highest code rate in the tiered code rates.

### Claim 20 (depends on 15)

The non-transitory computer readable medium of claim 15, wherein testing the remaining individual portions of the first storage area comprises steps of:
writing test data to the remaining individual portions of the first storage area;
determining whether at least one write failure occurred in writing the test data;
upon determining that at least one write failure occurred, returning to the identifying step to identify whether any remaining individual portions of the first storage should be retired;
upon determining that no write failures occurred, reading the first storage area;
determining whether the test data was successfully recovered from the first storage area; and
upon determining that the test data was not successfully recovered from the first storage area, returning to the identifying step to identify whether any remaining individual portions of the first storage should be retired.
