# US 2021/0240618 A1 · Using multi-tiered cache to satisfy input/output requests

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

- Number: US 2021/0240618 A1
- Document ID: US20210240618A1
- Status: Published application
- Kind: A1
- Application number: 16/780,733
- Filed: 2020-02-03
- Published: 2021-08-05
- Earliest claimed: 2020-02-03
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Lokesh Mohan Gupta; Edward Hsiu-Wei Lin; Beth Ann Peterson; Matthew G. Borlick
- Web page: https://patentgrep.com/patent/US20210240618A1

## CPC

- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 12/0802: Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F 3/061: {Improving I/O performance}
- G06F 3/0617: {in relation to availability}
- G06F 3/0649: {Lifecycle management}
- G06F 3/065: {Replication mechanisms}
- 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/0658: {Controller construction arrangements}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 12/0888: using selective caching, e.g. bypass
- G06F 2212/222: Non-volatile memory
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A computer-implemented method, according to one approach, includes: receiving an I/O request. In response to determining that the I/O request does not include a bypass indication, the I/O request is satisfied using a primary cache which is coupled to a data storage device and a secondary cache having SCM. In response to determining that the data associated with the I/O request has been updated as a result of satisfying the I/O request: the updated data is destaged from the primary cache to the data storage device, the updated data is copied to the secondary cache, and the updated data is demoted from the primary cache. Yet, in response to determining that the data associated with the I/O request has not been updated: the data associated with the I/O request is copied to the secondary cache, and the data associated with the I/O request is demoted from the primary cache.

## Claims

### Claim 1

A computer-implemented method, comprising:
receiving an input/output (I/O) request;
determining whether the I/O request includes a bypass indication;
in response to determining that the I/O request does not include a bypass indication, satisfying the I/O request using a primary cache, wherein the primary cache is coupled to a secondary cache and a data storage device, wherein the secondary cache includes storage class memory;
determining whether data associated with the I/O request has been updated as a result of satisfying the I/O request;
in response to determining that the data associated with the I/O request has been updated as a result of satisfying the I/O request:
destaging the updated data from the primary cache to the data storage device,
copying the updated data to the secondary cache, and
demoting the updated data from the primary cache; and
in response to determining that the data associated with the I/O request has not been updated as a result of satisfying the I/O request:
copying the data associated with the I/O request to the secondary cache, and
demoting the data associated with the I/O request from the primary cache.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the secondary cache includes a first tier of storage class memory and a second tier of storage class memory, wherein performance characteristics of the first tier of storage class memory are greater than performance characteristics of the second tier of storage class memory.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, wherein the primary cache includes dynamic random access memory.

### Claim 4 (depends on 3)

The computer-implemented method of claim 3, wherein copying the updated data to the secondary cache includes:
determining whether the I/O request has a high priority associated therewith;
in response to determining that the I/O request has a high priority associated therewith, copying the updated data to the first tier of storage class memory;
in response to determining that the I/O request does not have a high priority associated therewith, determining whether the I/O request has a high write intensity associated therewith;
in response to determining that the I/O request has a high write intensity associated therewith, copying the updated data to the first tier of storage class memory; and
in response to determining that the I/O request does not have a high write intensity associated therewith, copying the updated data to the second tier of storage class memory.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, wherein the I/O request is a write request, wherein satisfying the I/O request using the primary cache includes:
determining whether the data associated with the I/O request is already located in the primary cache;
in response to determining that the data associated with the I/O request is not already located in the primary cache, determining whether the data associated with the I/O request is located in the secondary cache;
in response to determining that the data associated with the I/O request is located in the secondary cache, causing the data associated with the I/O request to be copied from the secondary cache to the primary cache;
invalidating the data associated with the I/O request located in the secondary cache; and
satisfying the I/O request using the copy of the data associated with the I/O request located in the primary cache.

### Claim 6 (depends on 5)

The computer-implemented method of claim 5, comprising:
in response to determining that the data associated with the I/O request is not located in the secondary cache, determining whether the data associated with the I/O request is located in the data storage device;
in response to determining that the data associated with the I/O request is located in the data storage device, causing the data associated with the I/O request to be copied from the data storage device to the primary cache;
invalidating the data associated with the I/O request located in the data storage device;
satisfying the I/O request using the copy of the data associated with the I/O request located in the primary cache; and
in response to determining that the data associated with the I/O request is not located in the data storage device, satisfying the I/O request using the primary cache.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein the I/O request is a read request, wherein satisfying the I/O request using the primary cache includes:
determining whether the data associated with the I/O request is already located in the primary cache;
in response to determining that the data associated with the I/O request is not already located in the primary cache, determining whether the data associated with the I/O request is located in the secondary cache;
in response to determining that the data associated with the I/O request is located in the secondary cache, causing the data associated with the I/O request to be copied from the secondary cache to the primary cache; and
satisfying the I/O request using the copy of the data associated with the I/O request located in the primary cache.

### Claim 8 (depends on 7)

The computer-implemented method of claim 7, comprising:
in response to determining that the data associated with the I/O request is not located in the secondary cache, causing the data associated with the I/O request to be copied from the data storage device to the primary cache; and
satisfying the I/O request using the copy of the data associated with the I/O request located in the primary cache.

### Claim 9 (depends on 1)

The computer-implemented method of claim 1, comprising:
in response to determining that the I/O request includes a bypass indication, satisfying the I/O request using the secondary cache;
determining whether data associated with the I/O request has been updated as a result of satisfying the I/O request; and
in response to determining that the data associated with the I/O request has been updated as a result of satisfying the I/O request, destaging the updated data from the secondary cache to the data storage device.

### Claim 10

A computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions readable and/or executable by a processor to cause the processor to:
receive, by the processor, an input/output (I/O) request;
determine, by the processor, whether the I/O request includes a bypass indication;
in response to determining that the I/O request does not include a bypass indication, satisfy, by the processor, the I/O request using a primary cache, wherein the primary cache is coupled to a secondary cache and a data storage device, wherein the secondary cache includes storage class memory;
determine, by the processor, whether data associated with the I/O request has been updated as a result of satisfying the I/O request;
in response to determining that the data associated with the I/O request has been updated as a result of satisfying the I/O request:
destage, by the processor, the updated data from the primary cache to the data storage device,
copy, by the processor, the updated data to the secondary cache, and
demote, by the processor, the updated data from the primary cache; and
in response to determining that the data associated with the I/O request has not been updated as a result of satisfying the I/O request:
copy, by the processor, the data associated with the I/O request to the secondary cache, and
demote, by the processor, the data associated with the I/O request from the primary cache.

### Claim 11 (depends on 10)

The computer program product of claim 10, wherein the secondary cache includes a first tier of storage class memory and a second tier of storage class memory, wherein performance characteristics of the first tier of storage class memory are greater than performance characteristics of the second tier of storage class memory, wherein the primary cache includes dynamic random access memory.

### Claim 12 (depends on 11)

The computer program product of claim 11, wherein copying the updated data to the secondary cache includes:
determining whether the I/O request has a high priority associated therewith;
in response to determining that the I/O request has a high priority associated therewith, copying the updated data to the first tier of storage class memory;
in response to determining that the I/O request does not have a high priority associated therewith, determining whether the I/O request has a high write intensity associated therewith;
in response to determining that the I/O request has a high write intensity associated therewith, copying the updated data to the first tier of storage class memory; and
in response to determining that the I/O request does not have a high write intensity associated therewith, copying the updated data to the second tier of storage class memory.

### Claim 13 (depends on 10)

The computer program product of claim 10, wherein the I/O request is a write request, wherein satisfying the I/O request using the primary cache includes:
determining whether the data associated with the I/O request is already located in the primary cache;
in response to determining that the data associated with the I/O request is not already located in the primary cache, determining whether the data associated with the I/O request is located in the secondary cache;
in response to determining that the data associated with the I/O request is located in the secondary cache, causing the data associated with the I/O request to be copied from the secondary cache to the primary cache;
invalidating the data associated with the I/O request located in the secondary cache; and
satisfying the I/O request using the copy of the data associated with the I/O request located in the primary cache.

### Claim 14 (depends on 13)

The computer program product of claim 13, wherein the program instructions are readable and/or executable by the processor to cause the processor to:
in response to determining that the data associated with the I/O request is not located in the secondary cache, determine, by the processor, whether the data associated with the I/O request is located in the data storage device;
in response to determining that the data associated with the I/O request is located in the data storage device, cause, by the processor, the data associated with the I/O request to be copied from the data storage device to the primary cache;
invalidate, by the processor, the data associated with the I/O request located in the data storage device;
satisfy, by the processor, the I/O request using the copy of the data associated with the I/O request located in the primary cache; and
in response to determining that the data associated with the I/O request is not located in the data storage device, satisfy, by the processor, the I/O request using the primary cache.

### Claim 15 (depends on 10)

The computer program product of claim 10, wherein the I/O request is a read request, wherein satisfying the I/O request using the primary cache includes:
determining whether the data associated with the I/O request is already located in the primary cache;
in response to determining that the data associated with the I/O request is not already located in the primary cache, determining whether the data associated with the I/O request is located in the secondary cache;
in response to determining that the data associated with the I/O request is located in the secondary cache, causing the data associated with the I/O request to be copied from the secondary cache to the primary cache; and
satisfying the I/O request using the copy of the data associated with the I/O request located in the primary cache.

### Claim 16 (depends on 15)

The computer program product of claim 15, wherein the program instructions are readable and/or executable by the processor to cause the processor to:
in response to determining that the data associated with the I/O request is not located in the secondary cache, cause, by the processor, the data associated with the I/O request to be copied from the data storage device to the primary cache; and
satisfy, by the processor, the I/O request using the copy of the data associated with the I/O request located in the primary cache.

### Claim 17 (depends on 10)

The computer program product of claim 10, wherein the program instructions are readable and/or executable by the processor to cause the processor to:
in response to determining that the I/O request includes a bypass indication, satisfy, by the processor, the I/O request using the secondary cache;
determine, by the processor, whether data associated with the I/O request has been updated as a result of satisfying the I/O request; and
in response to determining that the data associated with the I/O request has been updated as a result of satisfying the I/O request, destage, by the processor, the updated data from the secondary cache to the data storage device.

### Claim 18

A system, comprising:
a processor, wherein the processor is coupled to a primary cache and a secondary cache, wherein the secondary cache includes a first tier of storage class memory and a second tier of storage class memory; and
logic integrated with the processor, executable by the processor, or integrated with and executable by the processor, the logic being configured to:
receive, by the processor, an input/output (I/O) request;
determine, by the processor, whether the I/O request includes a bypass indication;
in response to determining that the I/O request does not include a bypass indication, satisfy, by the processor, the I/O request using the primary cache, wherein the primary cache is coupled to the secondary cache and a data storage device;
determine, by the processor, whether data associated with the I/O request has been updated as a result of satisfying the I/O request;
in response to determining that the data associated with the I/O request has been updated as a result of satisfying the I/O request:
destage, by the processor, the updated data from the primary cache to the data storage device,
copy, by the processor, the updated data to the secondary cache, and
demote, by the processor, the updated data from the primary cache; and
in response to determining that the data associated with the I/O request has not been updated as a result of satisfying the I/O request:
copy, by the processor, the data associated with the I/O request to the secondary cache, and
demote, by the processor, the data associated with the I/O request from the primary cache.

### Claim 19 (depends on 18)

The system of claim 18, wherein performance characteristics of the first tier of storage class memory are greater than performance characteristics of the second tier of storage class memory, wherein the primary cache includes dynamic random access memory, wherein the processor is physically electrically coupled to both the primary cache and the secondary cache.

### Claim 20 (depends on 19)

The system of claim 19, wherein copying the updated data to the secondary cache includes:
determining whether the I/O request has a high priority associated therewith;
in response to determining that the I/O request has a high priority associated therewith, copying the updated data to the first tier of storage class memory;
in response to determining that the I/O request does not have a high priority associated therewith, determining whether the I/O request has a high write intensity associated therewith;
in response to determining that the I/O request has a high write intensity associated therewith, copying the updated data to the first tier of storage class memory; and
in response to determining that the I/O request does not have a high write intensity associated therewith, copying the updated data to the second tier of storage class memory.

### Claim 21 (depends on 18)

The system of claim 18, wherein the I/O request is a write request, wherein satisfying the I/O request using the primary cache includes:
determining whether the data associated with the I/O request is already located in the primary cache;
in response to determining that the data associated with the I/O request is not already located in the primary cache, determining whether the data associated with the I/O request is located in the secondary cache;
in response to determining that the data associated with the I/O request is located in the secondary cache, causing the data associated with the I/O request to be copied from the secondary cache to the primary cache;
invalidating the data associated with the I/O request located in the secondary cache; and
satisfying the I/O request using the copy of the data associated with the I/O request located in the primary cache.

### Claim 22 (depends on 21)

The system of claim 21, the logic being configured to:
in response to determining that the data associated with the I/O request is not located in the secondary cache, determine, by the processor, whether the data associated with the I/O request is located in the data storage device;
in response to determining that the data associated with the I/O request is located in the data storage device, cause, by the processor, the data associated with the I/O request to be copied from the data storage device to the primary cache;
invalidate, by the processor, the data associated with the I/O request located in the data storage device;
satisfy, by the processor, the I/O request using the copy of the data associated with the I/O request located in the primary cache; and
in response to determining that the data associated with the I/O request is not located in the data storage device, satisfy, by the processor, the I/O request using the primary cache.

### Claim 23 (depends on 18)

The system of claim 18, the logic being configured to:
in response to determining that the I/O request includes a bypass indication, satisfy, by the processor, the I/O request using the secondary cache;
determine, by the processor, whether data associated with the I/O request has been updated as a result of satisfying the I/O request; and
in response to determining that the data associated with the I/O request has been updated as a result of satisfying the I/O request, destage, by the processor, the updated data from the secondary cache to the data storage device.

### Claim 24

A system, comprising:
a processor, wherein the processor is coupled to: a primary cache, a secondary cache, and a data storage device, wherein the primary cache includes dynamic random access memory, wherein the secondary cache includes a first tier of storage class memory and a second tier of storage class memory; and
logic integrated with the processor, executable by the processor, or integrated with and executable by the processor, the logic being configured to:
receive, by the processor, an input/output (I/O) request;
determine, by the processor, whether the I/O request includes a bypass indication;
in response to determining that the I/O request includes a bypass indication, satisfying the I/O request using the secondary cache;
determining whether data associated with the I/O request has been updated as a result of satisfying the I/O request; and
in response to determining that the data associated with the I/O request has been updated as a result of satisfying the I/O request, destaging the updated data from the secondary cache to the data storage device.

### Claim 25

A computer-implemented method, comprising:
receiving an input/output (I/O) request;
determining whether the I/O request includes a bypass indication;
in response to determining that the I/O request includes a bypass indication, satisfying the I/O request using a secondary cache, wherein the secondary cache is coupled to a primary cache and a data storage device, wherein the primary cache includes dynamic random access memory, wherein the secondary cache includes a first tier of storage class memory and a second tier of storage class memory;
determining whether data associated with the I/O request has been updated as a result of satisfying the I/O request; and
in response to determining that the data associated with the I/O request has been updated as a result of satisfying the I/O request, destaging the updated data from the secondary cache to the data storage device.
