# US 12,007,840 B2 · Storage controller, operation method thereof

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

- Number: US 12,007,840 B2
- Document ID: US12007840B2
- Status: Granted
- Kind: B2
- Application number: 17/517,946
- Filed: 2021-11-03
- Published: 2022-08-25
- Granted: 2024-06-11
- Earliest claimed: 2021-02-24
- Assignees: Samsung Electronics Co., Ltd.
- Applicants: Samsung Electronics Co., Ltd.
- Inventors: Kwang Ho Yoo; Seung Min Ha; Kil Hwan Kim; Ho Young Chang; Ju Hyung Hong
- Web page: https://patentgrep.com/patent/US12007840B2

## CPC

- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 11/108: {Parity data distribution in semiconductor storages, e.g. in SSD}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- G06F 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 11/1048: {using arrangements adapted for a specific error detection or correction feature}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A storage controller and an operating method of the storage controller are provided. The storage controller includes processing circuitry configured to read sub-stripe data from each of a plurality of non-volatile memory devices connected with a RAID (Redundant Array of Inexpensive Disk), check error information of at least one of the sub-stripe data, and perform a RAID recovery operation in response to the at least one of the sub-stripe data having an uncorrectable error, and a RAID memory which stores calculation results of the RAID recovery operation.

## Claims

### Claim 1

A storage controller comprising:
processing circuitry configured to
read sub-stripe data from each of a plurality of non-volatile memory devices connected with a Redundant Array of Inexpensive Disk (RAID),
check error information of at least one of the sub-stripe data,
store error information as a header or basic information of the sub-stripe data,
store an execution count value,
increase the execution count value each time the sub-stripe data is read,
store a failure count value,
increase the failure count value in response to the sub-stripe data having an uncorrectable error, and
perform a RAID recovery operation in response to the error information indicating the at least one of the sub-stripe data has the uncorrectable error, and
a RAID memory configured to store calculation results of the RAID recovery operation.

### Claim 2 (depends on 1)

The storage controller of claim 1, wherein the processing circuitry is further configured to:
read the sub-stripe data; and
execute the RAID recovery operation on the basis of the error information, until the execution count value becomes equal to a total number of sub-stripes.

### Claim 3 (depends on 1)

The storage controller of claim 1, wherein the processing circuitry is further configured to perform the RAID recovery operation by
performing an XOR calculation on all the sub-stripe data in which no error is detected, and storing an XOR calculation result in the RAID memory, and extracting the stored XOR calculation result as recovered data, in response to the failure count value being less than a number of parity sub-stripes.

### Claim 4 (depends on 1)

The storage controller of claim 1, wherein the processing circuitry is further configure to:
perform error-decoding of the sub-stripe data on the basis of the error information; and
perform error-decoding of the sub-stripe data, in response to the failure count value exceeding a number of parity sub-stripes.

### Claim 5 (depends on 4)

The storage controller of claim 4, wherein the processing circuitry is further configured to:
perform a primary error decoding on the sub-stripe data by hard decision error decoding; and
perform a secondary error decoding by soft decision error decoding, in response to an error of the sub-stripe data not being corrected by the primary error decoding.

### Claim 6 (depends on 5)

The storage controller of claim 5, wherein the processing circuitry is further configured to terminate the RAID recovery operation, in response to the error of the sub-stripe data not being corrected by the secondary error decoding.

### Claim 7

An operation method of a storage controller, the operation method comprising:
reading sub-stripe data from each of a plurality of non-volatile memory devices connected with a Redundant Array of Inexpensive Disk (RAID);
checking error information of the read sub-stripe data to check an existence of an uncorrectable error;
increasing a failure count value and reading next sub-stripe data, in response to the error information indicating the read sub-stripe data has an error; and
performing an XOR calculation by the read sub-stripe data in response to the read sub-stripe data not having the error,
resetting the failure count value and re-reading the sub-stripe data stored in each of the plurality of non-volatile memory devices, in response to the failure count value exceeding a number of parity sub-stripes,
wherein the error information is stored as a header or basic information of the sub-stripe data.

### Claim 8 (depends on 7)

The operation method of the storage controller of claim 7, further comprising:
extracting an XOR calculation result as recovery data, in response to the failure count value being within a number of parity sub-stripes once the storage controller reads all the sub-stripe data.

### Claim 9 (depends on 7)

The operation method of the storage controller of claim 7, further comprising:
performing a first error decoding on the re-read sub-stripe data, and
extracting an XOR calculation result as recovery data in response to the error being corrected and the failure count value being less than the number of the parity sub-stripes once all the sub-stripe data are read.

### Claim 10 (depends on 9)

The operation method of the storage controller of claim 9, further comprising:
reading the sub-stripe data by a second error coding, stronger than the first error decoding, in response to the error not being corrected on the re-read sub-stripe data.

### Claim 11 (depends on 10)

The operation method of the storage controller of claim 10, further comprising:
increasing the failure count value in response to the error not being corrected by the first error coding.

### Claim 12 (depends on 10)

The operation method of the storage controller of claim 10, further comprising:
performing an XOR calculation with the re-read sub-stripe data in response to the error being corrected on the re-read sub-stripe data by the second error coding.

### Claim 13 (depends on 12)

The operation method of the storage controller of claim 12, further comprising:
reading a next sub-stripe data in response to the error not being corrected by the second error coding.

### Claim 14 (depends on 13)

The operation method of the storage controller of claim 13, further comprising:
terminating a RAID recovery operation in response to the failure count value exceeding the number of parity sub-stripes.

### Claim 15

A storage controller comprising:
a Direct Memory Access (DMA) interface connected to a plurality of non-volatile memory devices, the DMA interface configured to transmit and receive sub-stripe data to and from each of the non-volatile memory devices; and
processing circuitry configured to
check error information of the sub-stripe data, the error information being stored as a header or basic information of the sub-stripe data, and
perform an XOR calculation on the basis of the error information indicating the sub-stripe data has no uncorrectable error to extract recovery data,
wherein the processing circuitry is configured to re-read the sub-stripe data having the uncorrectable error and perform first error decoding, and performs the XOR calculation on the basis of the sub-stripe data to extract recovery data in response to the uncorrectable error being corrected, and
wherein the processing circuitry is configured to extract the recovery data in response to the error information indicating a number of the sub-stripe data has the uncorrectable error and the number of the sub-stripe data having the uncorrectable error being less than or equal to a number of parity sub-stripes.

### Claim 16 (depends on 15)

The storage controller of claim 15, wherein, in response to the uncorrectable error not being corrected by the first error decoding, the processing circuitry is further configured to:
read the sub-stripe data; and
perform a second error decoding that is stronger than the first error decoding.
