# US 10,872,039 B2 · Managing redundancy contexts in storage devices using eviction and restoration

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

- Number: US 10,872,039 B2
- Document ID: US10872039B2
- Status: Granted
- Kind: B2
- Application number: 16/208,499
- Filed: 2018-12-03
- Published: 2020-06-04
- Granted: 2020-12-22
- Earliest claimed: 2018-12-03
- Assignees: Micron Technology, Inc.
- Applicants: Micron Technology, Inc.
- Inventors: James P. Crowley; Yuriy Pavlenko; Karl D. Schuh
- Web page: https://patentgrep.com/patent/US10872039B2

## CPC

- G06F 12/0238: {Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory}
- G06F 12/0871: Allocation or management of cache space
- G06F 9/5016: {the resource being the memory}
- G06F 11/073: {in a memory management context, e.g. virtual memory or cache management (memory management G06F12/00; testing of static memory units G11C29/00)}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 11/2089: {Redundant storage control functionality}
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 12/0891: using clearing, invalidating or resetting means
- G06F 12/128: adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
- G06F 2212/1008: Correctness of operation, e.g. memory ordering
- G06F 2212/1024: Latency reduction
- G06F 2212/1032: Reliability improvement, data loss prevention, degraded operation etc
- G06F 2212/214: Solid state disk
- G06F 2212/225: Hybrid cache memory, e.g. having both volatile and non-volatile portions
- G06F 2212/262: configured as RAID
- G06F 2212/283: Plural cache memories
- G06F 2212/312: In storage controller
- G06F 2212/313: In storage device
- G06F 2212/7203: Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
- 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 controller selects a redundancy context for eviction in response to a request for a redundancy context. The redundancy context includes buffer data and an identifier. The redundancy context is evicted by instructing a redundancy component to send the buffer data and identifier to a memory component to store in a buffer as an evicted context. The controller instructs the memory component to provide the evicted context for storage in a controller buffer. A new redundancy context is allocated to the requester following the eviction.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving a first request to allocate a portion of a first memory as a redundancy context, wherein the first memory includes a plurality of redundancy contexts temporarily storing data used to calculate redundancy values for the data;
selecting an idle redundancy context for eviction in response to the first request, wherein the idle redundancy context includes a first buffer of data and a context identifier;
evicting contents of the idle redundancy context by sending the first buffer of data and the context identifier to a memory component of a second memory;
retrieving the contents of the evicted context from the memory component of the second memory;
storing the retrieved contents of the evicted context in a second buffer; and
allocating the portion of the first memory as a new redundancy context in response to the first request and the eviction.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
receiving a second request, the second request directed to the contents of the evicted context;
restoring the contents of the evicted context stored in the third second buffer to an available redundancy context; and
providing the restored redundancy context in response to the second request.

### Claim 3 (depends on 2)

The method of claim 2, wherein the first request is from a first process writing data at a first rate and wherein the second request is from a second process writing data at a second rate and wherein the first rate is greater than the second rate.

### Claim 4 (depends on 2)

The method of the claim 2, wherein restoring the contents of the evicted context comprises:
clearing contents of a third buffer;
storing in the third buffer a result of performing a logical operation on the cleared contents of the third buffer and the data from the contents of the evicted context; and
storing the context identifier from the contents of the evicted context in the available redundancy context.

### Claim 5 (depends on 4)

The method of claim 4, wherein the logical operation is a bitwise exclusive-or (XOR) operation.

### Claim 6 (depends on 1)

The method of claim 1, wherein the plurality of redundancy contexts is stored in a circular list and wherein each redundancy context is accessed through a sliding window within the circular list.

### Claim 7 (depends on 6)

The method of claim 6, wherein selecting the idle redundancy context for eviction includes determining that the redundancy context is preventing the sliding window from advancing to a next available redundancy context.

### Claim 8

A non-transitory computer-readable storage medium comprising instructions that, when executed by a processing device, cause the processing device to:
receive a first request to allocate a portion of a first memory as a redundancy context, wherein the first memory includes a plurality of redundancy contexts temporarily storing data used to calculate redundancy values for the data;
select an idle redundancy context for eviction in response to the first request, wherein the idle redundancy context includes a first buffer of data and a context identifier;
evict contents of the idle redundancy context by sending the first buffer of data and the context identifier to a memory component of a second memory;
retrieve the contents of the evicted context from the memory component of the second memory;
store the retrieved contents of the evicted context in a second buffer; and
allocate the portion of the first memory as a new redundancy context in response to the first request and the eviction.

### Claim 9 (depends on 8)

The storage medium of claim 8, the instructions further causing the processing device to:
receive a second request, the second request directed to the contents of the evicted context;
restore the contents of the evicted context stored in the second buffer to an available redundancy context; and
provide the restored redundancy context in response to the second request.

### Claim 10 (depends on 9)

The storage medium of claim 9, wherein the first request is from a first process writing data at a first rate and wherein the second request is from a second process writing data at a second rate and wherein the first rate is greater than the second rate.

### Claim 11 (depends on 9)

The storage medium of the claim 9, wherein instructions causing the processing device to restore the available redundancy context further includes instructions causing the processing device to:
clear contents of a third buffer;
store in the third buffer a result of performing a logical operation on the cleared contents of the third buffer and the data from the contents of the evicted context; and
store the context identifier from the contents of the evicted context in the available redundancy context.

### Claim 12 (depends on 11)

The storage medium of claim 11, wherein the logical operation is a bitwise exclusive-or (XOR) operation.

### Claim 13 (depends on 12)

The storage medium of claim 12, wherein the plurality of redundancy contexts is stored in a circular list and wherein each redundancy context is accessed through a sliding window within the circular list.

### Claim 14 (depends on 13)

The storage medium of claim 13, wherein selecting the redundancy context for eviction includes determining that the redundancy context is preventing the sliding window from advancing to a next available redundancy context.

### Claim 15

A system comprising:
a memory component; and
a processing device, coupled to the memory component, configured to:
receive a first request to allocate a portion of a first memory as a redundancy context, wherein the first memory includes a plurality of redundancy contexts temporarily storing data used to calculate redundancy values for the data;
select an idle redundancy context for eviction in response to the first request, wherein the idle redundancy context includes a first buffer of data and a context identifier;
evict contents of the idle redundancy context by sending the first buffer of data and the context identifier to a memory component of a second memory;
retrieve the contents of the evicted context from the memory component of the second memory;
store the retrieved contents of the evicted context in a second buffer; and
allocate the portion of the first memory as a new redundancy context in response to the first request and the eviction,
receive a second request, the second request directed to the contents of the evicted context;
restore the contents of the evicted context stored in the third second buffer to an available redundancy context; and
provide the restored redundancy context in response to the second request.

### Claim 16 (depends on 15)

The system of claim 15, wherein the first request is from a first process writing data at a first rate and wherein the second request is from a second process writing data at a second rate and wherein the first rate is greater than the second rate.

### Claim 17 (depends on 15)

The system of the claim 15, wherein restoring the available redundancy context further configures the processing device to:
clear contents of a third buffer;
store in the third buffer a result of performing a logical operation on the cleared contents of the third buffer and the data from the contents of the evicted context; and
store the context identifier from the contents of the evicted context in the available redundancy context.

### Claim 18 (depends on 17)

The system of claim 17, wherein the logical operation is a bitwise exclusive-or (XOR) operation.

### Claim 19 (depends on 18)

The system of claim 18, wherein the plurality of redundancy contexts is stored in a circular list and wherein each redundancy context is accessed through a sliding window within the circular list.

### Claim 20 (depends on 19)

The system of claim 19, wherein selecting the redundancy context for eviction includes determining that the redundancy context is preventing the sliding window from advancing to a next available redundancy context.
