# US 10,872,012 B2 · XOR recovery schemes utilizing external memory

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

- Number: US 10,872,012 B2
- Document ID: US10872012B2
- Status: Granted
- Kind: B2
- Application number: 16/243,070
- Filed: 2019-01-08
- Published: 2020-07-09
- Granted: 2020-12-22
- Earliest claimed: 2019-01-08
- Assignees: Western Digital Technologies, Inc.
- Applicants: Western Digital Technologies, Inc.
- Inventors: Karthik Subramanian; Vinay Vijendra Kumar Lakshmi; Manohar Srinivasiah
- Web page: https://patentgrep.com/patent/US10872012B2

## CPC

- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G06F 11/108: {Parity data distribution in semiconductor storages, e.g. in SSD}
- G06F 11/1004: {to protect a block of data words, e.g. CRC or checksum (G06F11/1076 takes precedence; security arrangements for protecting computers or computer systems against unauthorized activity G06F21/00)}
- G11C 29/52: Protection of memory contents; Detection of errors in memory contents
- G11C 2029/0411: {Online error correction}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11C: STATIC STORES (semiconductor memory devices H10B)

## Abstract

A storage device includes a storage controller, non-volatile memory, volatile memory and a communication interface configured to connect to external volatile memory of a host system. The storage controller is configured to receive data from the host system for storing in the non-volatile memory, buffer the data in the volatile memory, obtain parity data corresponding to the buffered data from an external volatile memory within the host system, compute XOR parity data for the buffered data based on the parity data and the buffered data, store the computed XOR parity data on the external volatile memory, and write the data from the host to the non-volatile memory.

## Claims

### Claim 1

A storage device comprising:
a communication interface configured to connect to a host system;
non-volatile memory;
volatile memory; and
a storage controller associated with the non-volatile memory, the storage controller configured to:
receive data from the host system for storing in the non-volatile memory;
buffer the data in the volatile memory;
obtain parity data corresponding to the buffered data from an external volatile memory within the host system;
compute XOR parity data for the buffered data based on the parity data and the buffered data;
transfer the computed XOR parity data from the storage device to the host system via the communication interface;
store the computed XOR parity data on the external volatile memory; and
write the data from the host system to the non-volatile memory.

### Claim 2 (depends on 1)

The storage device of claim 1, wherein the storage device caches the computed XOR parity data only in the external volatile memory and not in internal XOR random access memory (XRAM).

### Claim 3 (depends on 2)

The storage device of claim 2, wherein the storage device does not comprise XRAM.

### Claim 4 (depends on 1)

The storage device of claim 1, wherein the storage device is a solid state drive.

### Claim 5 (depends on 1)

The storage device of claim 1, wherein computing the XOR parity data comprises:
computing a first set of XOR parity data for each same numbered plane page of each plane and die; and
computing a second set of XOR parity data for all pages from a particular plane.

### Claim 6 (depends on 1)

The storage device of claim 1, wherein the storage controller comprises:
a first XOR engine configured to cache parity data on the external volatile memory; and
a second XOR engine configured to cache parity data on the external volatile memory.

### Claim 7 (depends on 6)

The storage device of claim 6, wherein the first XOR engine and the second XOR engine are configured to operate in parallel.

### Claim 8 (depends on 7)

The storage device of claim 7, wherein the first XOR engine and the second XOR engine obtain parity data from the external volatile memory in parallel.

### Claim 9 (depends on 8)

The storage device of claim 8, wherein:
the first XOR engine performs an XOR calculation in a first dimension; and
the second XOR engine performs an XOR calculation in a second dimension.

### Claim 10 (depends on 1)

The storage device of claim 1, wherein the storage controller is further configured to:
determine a firmware tag, a cyclic redundancy check (CRC), and an error correction code (ECC) for the computed XOR parity data stored in the external volatile memory; and
store the firmware tag, CRC, and ECC in the external volatile memory in a separate buffer from the computed XOR parity data.

### Claim 11

A method of storing parity data on volatile memory external to a storage device, the method comprising:
receiving, via a communication interface, data from a host system for storing in non-volatile memory of the storage device;
buffering the data in internal volatile memory of the storage device;
obtaining parity data corresponding to the buffered data from an external volatile memory within the host system;
computing XOR parity data for the buffered data based on the parity data and the buffered data;
transferring the computed XOR parity data from the storage device to the host system via the communication interface;
storing the computed XOR parity data on the external volatile memory; and
writing the data from the host system to the non-volatile memory.

### Claim 12 (depends on 11)

The method of claim 11, wherein the storage device caches the computed XOR parity data only in the external volatile memory and not in internal XOR random access memory (XRAM).

### Claim 13 (depends on 12)

The method of claim 12, wherein the storage device does not comprise XRAM.

### Claim 14 (depends on 11)

The method of claim 11, wherein the storage device is a solid state drive.

### Claim 15 (depends on 11)

The method of claim 11, wherein computing the XOR parity data comprises:
computing a first set of XOR parity data for each same numbered plane page of each plane and die; and
computing a second set of XOR parity data for all pages from a particular plane.

### Claim 16 (depends on 11)

The method of claim 11, further comprising:
performing a first XOR calculation with a first XOR engine of the storage device in a first dimension; and
performing a second XOR calculation with a second XOR engine of the storage device in a second dimension.

### Claim 17 (depends on 16)

The method of claim 16, wherein the first XOR calculation and the second XOR calculation are performed in parallel.

### Claim 18 (depends on 17)

The method of claim 17, wherein the first XOR engine and the second XOR engine are configured to obtain parity data from the external volatile memory in parallel.

### Claim 19 (depends on 11)

The method of claim 11, further comprising:
determining a firmware tag, a cyclic redundancy check (CRC), and an error correction code (ECC) for the computed XOR parity data stored in the external volatile memory; and
storing the firmware tag, CRC, and ECC in the external volatile memory in a separate buffer from the computed XOR parity data.

### Claim 20

A storage device comprising:
a communication means configured to connect to a host system;
non-volatile memory means;
volatile memory means; and
processing means associated with the non-volatile memory means, the processing means configured to:
receive data from the host system for storing in the non-volatile memory means;
buffer the data in the volatile memory means;
obtain parity data corresponding to the buffered data from an external volatile memory within the host system;
compute XOR parity data for the buffered data based on the parity data and the buffered data;
transfer the computed XOR parity data from the storage device to the host system via the communication means;
store the computed XOR parity data on the external volatile memory; and
write the data from the host system to the non-volatile memory means.
