# US 12,007,886 B2 · Addressing page-correlated read issues using intra-block parity

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

- Number: US 12,007,886 B2
- Document ID: US12007886B2
- Status: Granted
- Kind: B2
- Application number: 16/128,616
- Filed: 2018-09-12
- Published: 2020-03-12
- Granted: 2024-06-11
- Earliest claimed: 2018-09-12
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Sasa Tomic; Nikolaos Papandreou; Roman Alexander Pletka; Nikolas Ioannou
- Web page: https://patentgrep.com/patent/US12007886B2

## CPC

- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/064: {Management of blocks}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 11/108: {Parity data distribution in semiconductor storages, e.g. in SSD}
- G06F 2212/1032: Reliability improvement, data loss prevention, degraded operation etc
- G06F 2212/7207: management of metadata or control data
- G06F 2212/7208: Multiple device management, e.g. distributing data over multiple flash devices
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for intra-block recovery from memory page read failures of memory pages is provided. The method comprises providing a data storage device comprising a plurality of memory pages. Corresponding memory pages are physically organized as a plurality of blocks comprising each the corresponding pages, each memory page comprising a plurality of non-volatile memory cells. The method comprises grouping memory pages of a block into at least one window. Each window comprises a plurality of memory pages of the block. The method further comprises determining a window parity page for each window of the block for a recovery of page read failures of the memory pages of the block, and upon determining that a predefined number of memory pages of the window is written or not yet written, maintaining the determined window parity page as part of the related window of memory pages of the block or not.

## Claims

### Claim 1

A method for intra-block recovery from memory page read failures of memory pages, said method comprising:
providing a data storage device comprising a plurality of memory pages, wherein the plurality of memory pages are organized as a plurality of blocks, wherein each of said plurality of memory pages comprises a plurality of non-volatile memory cells;
grouping a proper subset of memory pages of a block into at least one window, each window comprising a plurality of memory pages of said block, at least two of said pages of said proper subset of pages having different page numbers, and
determining a window parity page for each window of said block for a recovery of page read failures of said memory pages of said block,
in response to determining that a predefined number of memory pages of said window is not yet written, maintaining said determined window parity page as part of a corresponding window of memory pages of said block, and
in response to determining that a predefined number of memory pages of said window is written, refraining from maintaining said determined parity page as part of said corresponding window of memory pages of said block.

### Claim 2 (depends on 1)

The method according to claim 1, wherein each window is a logical window comprising non-consecutive memory pages of a block.

### Claim 3 (depends on 1)

The method according to claim 1, wherein a window size is set according to a predefined schema and said grouping of memory pages into a window is performed according to the predefined schema.

### Claim 4 (depends on 3)

The method according to claim 3, wherein said predefined schema reflects a likelihood of said memory pages to cause a read failure.

### Claim 5 (depends on 1)

The method according to claim 1, wherein a window size and said grouping of said memory pages is determined dynamically based on statistics of said data storage device.

### Claim 6 (depends on 1)

The method according to claim 1, wherein said window parity page is one of said memory pages of a corresponding window.

### Claim 7 (depends on 1)

The method according to claim 1, wherein said window parity page is maintained outside said memory pages of corresponding EC protected memory page stripes.

### Claim 8 (depends on 1)

The method according to claim 1, wherein, upon a power failure, all maintained window parity pages are maintained in a persistent storage.

### Claim 9 (depends on 1)

The method according to claim 1, wherein said window parity page is released once all memory pages of a corresponding window are completely written.

### Claim 10 (depends on 1)

The method according to claim 1, wherein said window parity page is released once a corresponding block of memory pages is completely written.

### Claim 11 (depends on 1)

The method according to claim 1, wherein said memory pages comprise at least one selected out of a group comprising: multi-level cells, triple-level memory cells, and quadruple-level cells.

### Claim 12 (depends on 1)

The method according to claim 1, wherein said data storage device is a component of a memory flash drive.

### Claim 13 (depends on 1)

The method of claim 1, further comprising:
maintaining a separate running parity page; and
discarding said separate running parity page in response to one of: a closing of a corresponding window and a start of writing data to another memory page in another window; exhausting a predefined budget of running parities; a writing of data to an entire corresponding block; and a writing of data to a predefined number of blocks.

### Claim 14

A method for intra-block recovery from memory page read failures of memory pages, said method comprising:
providing a data storage device comprising a plurality of memory pages, wherein the plurality of memory pages are organized as a plurality of blocks, wherein each of said plurality of memory pages comprises a plurality of non-volatile memory cells;
grouping a proper subset of memory pages of a block into at least one window, each window comprising a plurality of memory pages of said block, at least two of said pages of said proper subset of pages having different page numbers, and
determining a window parity page for each window of said block for a recovery of page read failures of said memory pages of said block,
in response to determining that a predefined number of memory pages of said window is not yet written, maintaining said determined window parity page as part of a corresponding window of memory pages of said block, and
in response to determining that a predefined number of memory pages of said window is written, refraining from maintaining said determined parity page as part of said corresponding window of memory pages of said block,
wherein memory pages assigned to a specific window of the at least one window are memory pages which are least likely to have correlated failures.

### Claim 15

A system for intra-block recovery from memory page read failures of memory pages, said system comprising:
a data storage device comprising a plurality of memory pages, wherein the plurality of memory pages are organized as a plurality of blocks, wherein each memory page of said plurality of memory pages comprises a plurality of non-volatile memory cells; and
a hardware-based memory controller, the hardware-based memory controller configured to:
group said plurality of memory pages of a block into at least one window, each window comprising a proper subset of said memory pages of said block, at least two of said pages of said proper subset of pages having different page numbers, wherein each window is a logical window comprising non-consecutive memory pages of a block;
determine a window parity page for each window of said block for a recovery of page read failures of said memory pages of said block; and,
in response to determining that a predefined number of memory pages of said window is not yet written, maintain said determined window parity page as part of a corresponding window of memory pages of said block, and,
in response to determining that a predefined number of memory pages of said window is written, refrain from maintaining said determined window parity page as part of said corresponding window of memory pages of said block.

### Claim 16 (depends on 15)

The system according to claim 15, wherein said hardware-based memory controller is further configured to perform said grouping according to a predefined schema reflecting a likelihood of said memory pages to cause a read failure.

### Claim 17 (depends on 15)

The system according to claim 15, wherein a window size and said grouping of said memory pages is determined dynamically based on statistics of said data storage device.

### Claim 18 (depends on 15)

The system according to claim 15, wherein said hardware-based memory controller is further configured to group said memory pages dynamically based on a parameter representing a function of data written to said data storage device.

### Claim 19 (depends on 15)

The system according to claim 15, wherein said window parity page is one of said memory pages of said corresponding window or wherein said window parity page is maintained outside corresponding EC protected memory page stripes.

### Claim 20 (depends on 15)

The system according to claim 15, also comprising a persistent storage adapted for, in case of a power failure, storing the window parity pages.

### Claim 21 (depends on 15)

The system according to claim 15, wherein said memory pages comprise at least one selected out of a group comprising: multi-level cells, triple-level memory cells, and quadruple-level cells.

### Claim 22 (depends on 15)

The system according to claim 15, wherein said data storage device is a component of a memory flash drive.

### Claim 23

A non-transitory computer readable medium comprising computer executable instructions which when executed by a computer cause the computer to perform a method of:
providing a data storage device comprising a plurality of memory pages, wherein memory pages are organized as a plurality of blocks, wherein each memory page of said plurality of memory pages comprises a plurality of non-volatile memory cells;
grouping a proper subset of memory pages of a block into at least one window, each window comprising a plurality of memory pages of said block, at least two of said pages of said proper subset of pages having different page numbers;
determining a window parity page for each window of said block for a recovery of page read failures of said memory pages of said block;
in response to determining that a predefined number of memory pages of said window is not yet written, maintaining said determined window parity page as part of a corresponding window of memory pages of said block; and
in response to determining that a predefined number of memory pages of said corresponding window is written, refraining from maintaining said determined window parity page as part of said corresponding window of memory pages of said block.

### Claim 24

A method for intra-block recovery from memory page read failures of memory pages, said method comprising:
providing a data storage device comprising a plurality of memory pages, wherein the plurality of memory pages are organized as a plurality of blocks, wherein each of said plurality of memory pages comprises a plurality of non-volatile memory cells;
grouping a proper subset of memory pages of a block into at least one window, each window comprising a plurality of memory pages of said block, at least two of said pages of said proper subset of pages having different page numbers, and
determining a window parity page for each window of said block for a recovery of page read failures of said memory pages of said block,
in response to determining that a predefined number of memory pages of said window is not yet written, maintaining said determined window parity page as part of a corresponding window of memory pages of said block, and
in response to determining that a predefined number of memory pages of said window is written, refraining from maintaining said determined parity page as part of said corresponding window of memory pages of said block,
wherein memory pages assigned to a specific window of the at least one window are memory pages which are written prior to a pause of write operations to a block.
