# US 12,118,228 B2 · Data protection method for memories and memory device thereof

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

- Number: US 12,118,228 B2
- Document ID: US12118228B2
- Status: Granted
- Kind: B2
- Application number: 17/687,004
- Filed: 2022-03-04
- Published: 2023-03-09
- Granted: 2024-10-15
- Earliest claimed: 2021-09-08
- Assignees: Yangtze Memory Technologies Co., Ltd.
- Applicants: Yangtze Memory Technologies Co., Ltd.
- Inventors: Yonggang Chen
- Web page: https://patentgrep.com/patent/US12118228B2

## CPC

- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 11/10: Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- 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)}
- G06F 11/1012: {using codes or arrangements adapted for a specific type of error (G06F11/1048 takes precedence)}
- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The present disclosure provides a system. The system includes a memory device and a controller. The memory device is configured to store memory data and includes a plurality of memory modules. Each of the memory modules includes a first memory block and a second memory block. The controller includes a processor and a memory. The controller is operatively coupled to the plurality of memory modules. In an operation on redundant array of independent disks (RAID), the controller is configured to generate a first check code based on memory data in the first memory block of the plurality memory modules, generate a second check code based on memory data in the second memory block of the plurality memory modules, and generate an additional check code based on the first check code and the second check code.

## Claims

### Claim 1

A system, comprising:
a memory device configured to store memory data, the memory device comprising a plurality of memory modules, each memory module of the plurality of memory modules comprising a first memory block and a second memory block, and
a controller, comprising a processor and a memory, operatively coupled to the plurality of memory modules and configured to, in an operation on redundant array of independent disks (RAID)
perform a programming process of the plurality of memory modules;
generate a first check code based on memory data in the first memory block of the plurality of memory modules;
generate a second check code based on memory data in the second memory block of the plurality of memory modules;
generate a single additional check code associated with the memory data in the first memory block of the plurality of memory modules and the memory data in the second memory block of the plurality of memory modules, the single additional check code being generated based on the first check code and the second check code, and the single additional check code being associated with all memory data in the plurality of memory modules;
identify memory data is lost in one memory block in the plurality of memory modules; and
in response to the memory data being lost in the one memory block in the plurality of memory modules, restore lost memory data using the single additional check code and unlost data in the plurality of memory modules.

### Claim 2 (depends on 1)

The system of claim 1, wherein the controller is configured to generate the first check code and the second check code in a programming process of the plurality of memory modules.

### Claim 3 (depends on 2)

The system of claim 2, wherein the controller is configured to generate the single additional check code after the programming process of the plurality of memory modules.

### Claim 4 (depends on 1)

The system of claim 1, wherein the controller is configured to:
perform an XOR operation on the memory data in the first memory block of the plurality of memory modules to generate the first check code;
perform an XOR operation on the memory data in the second memory block of the plurality of memory modules to generate the second check code; and
perform an XOR operation on the first check code and the second check code to generate the single additional check code.

### Claim 5 (depends on 1)

The system of claim 1, wherein to restore the lost memory data, the controller is configured to perform an XOR operation on the single additional check code and the unlost data in the plurality of memory modules.

### Claim 6 (depends on 1)

The system of claim 1, wherein the controller is further configured to delete the first check code and the second check code after restoring the lost memory data.

### Claim 7 (depends on 1)

The system of claim 1, wherein the first memory block and the second memory block of each of the plurality of memory modules are physically adjacent to each other.

### Claim 8 (depends on 1)

The system of claim 1, wherein the controller is further configured to:
store the first check code and the second check code into respective caches before generating the single additional check code.

### Claim 9 (depends on 1)

The system of claim 1, wherein the controller is further configured to:
store the single additional check code in a respective cache; and
delete the first check code and the second check code after storing the single additional check code.

### Claim 10 (depends on 1)

The system of claim 1, wherein the plurality of memory modules are each located in a memory die or a memory plane.

### Claim 11 (depends on 1)

The system of claim 1, wherein the memory device comprises a three-dimensional (3D) NAND flash memory.

### Claim 12

A method for operating a memory apparatus using redundant array of independent disks (RAID), the method comprising:
performing, by a memory controller, a programming process of a plurality of memory modules, each memory module of the plurality of memory modules comprising a first memory block and a second memory block;
generating, by the memory controller, a first check code based on memory data in the first memory block of the plurality of memory modules;
generating, by the memory controller, a second check code based on memory data in the second memory block of the plurality of memory modules;
generating, by the memory controller, a single additional check code associated with the memory data in the first memory block of the plurality of memory modules and the memory data in the second memory block of the plurality of memory modules, the single additional check code being generated based on the first check code and the second check code, and the single additional check code being associated with all memory data in the plurality of memory modules;
identifying, by the memory controller, memory data is lost in one memory block in the plurality of memory modules; and
in response to the memory data being lost in the one memory block in the plurality of memory modules, restoring, by the memory controller, lost memory data using the single additional check code and unlost data in the plurality of memory modules.

### Claim 13 (depends on 12)

The method of claim 12, comprising generating the first check code and the second check code in a programming process of the plurality of memory modules.

### Claim 14 (depends on 13)

The method of claim 13, comprising generating the single additional check code after the programming process of the plurality of memory modules.

### Claim 15 (depends on 12)

The method of claim 12, comprising:
performing, by the memory controller, an XOR operation on the memory data in the first memory block of the plurality of memory modules to generate the first check code;
performing, by the memory controller, an XOR operation on the memory data in the second memory block of the plurality of memory modules to generate the second check code; and
performing, by the memory controller, an XOR operation on the first check code and the second check code to generate the single additional check code.

### Claim 16 (depends on 12)

The method of claim 12, wherein restoring the lost memory data comprising performing an XOR operation on the single additional check code and the unlost data in the plurality of memory modules.

### Claim 17 (depends on 12)

The method of claim 12, further comprising deleting the first check code and the second check code after restoring the lost memory data.

### Claim 18

A memory controller, comprising:
a processor; and
a memory storing instructions, which when executed by the processor, cause the processor to, in an operation on redundant array of independent disks (RAID),
perform a programming process of a plurality of memory modules, each memory module of the plurality of memory modules comprising a first memory block and a second memory block;
generate a first check code based on memory data in a first memory block of a plurality of memory modules;
generate a second check code based on memory data in a second memory block of the plurality of memory modules;
generate a single additional check code associated with the memory data in the first memory block of the plurality of memory modules and the memory data in the second memory block of the plurality of memory modules, the single additional check code being generated based on the first check code and the second check code, and the single additional check code being associated with all memory data in the plurality of memory modules;
identify memory data is lost in one memory block in the plurality of memory modules; and
in response to the memory data being lost in the one memory block in the plurality of memory modules, restore lost memory data using the single additional check code and unlost data in the plurality of memory modules.
