# US 10,310,980 B2 · Prefetch command optimization for tiered storage systems

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

- Number: US 10,310,980 B2
- Document ID: US10310980B2
- Status: Granted
- Kind: B2
- Application number: 15/088,169
- Filed: 2016-04-01
- Published: 2017-10-05
- Granted: 2019-06-04
- Earliest claimed: 2016-04-01
- Assignees: Seagate Technology LLC
- Applicants: Seagate Technology LLC
- Inventors: George Alexander Kalwitz
- Web page: https://patentgrep.com/patent/US10310980B2

## CPC

- G06F 12/0862: with prefetch
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 12/0804: with main memory updating (G06F12/0806 takes precedence)
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 12/121: using replacement algorithms
- G06F 2201/805: Real-time
- G06F 2212/1016: Performance improvement
- G06F 2212/1021: Hit rate improvement
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/222: Non-volatile memory
- G06F 2212/283: Plural cache memories
- G06F 2212/284: being distributed
- G06F 2212/312: In storage controller
- G06F 2212/6022: Using a prefetch buffer or dedicated prefetch cache
- G06F 2212/6028: Prefetching based on hints or prefetch instructions
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system is provided. The system includes a storage controller configured to receive a prefetch command from a host interface. The storage controller includes a read cache memory that stores prefetch data in response to the prefetch command and a plurality of storage tiers coupled to the storage controller and providing the prefetch data. The plurality of storage tiers includes a fastest storage tier that stores the prefetch data if the read cache memory discards the prefetch data after storing the prefetch data.

## Claims

### Claim 1

A system comprising:
a host computer;
a storage controller configured to receive a prefetch command from the host computer, the storage controller comprising:
a read cache memory that stores prefetch data in response to the prefetch command; and
metadata comprising a starting Logical Block Address, a Logical Block Address length for the prefetch command, and one or more of a time stamp, a prefetch command flag, and a read by host flag; and
a plurality of storage tiers, each comprising storage devices having different performance characteristics than others of the plurality of storage tiers, coupled to the storage controller and providing the prefetch data, the plurality of storage tiers comprising:
a fastest storage tier that stores the prefetch data from the read cache memory in response to the storage controller determines the prefetch data should be discarded from the read cache memory, the storage controller further configured to transfer the prefetch data between the read cache memory and the fastest storage tier.

### Claim 2 (depends on 1)

The system of claim 1, wherein the plurality of storage tiers comprises at least one storage tier having lower data read performance than the fastest storage tier, wherein the prefetch command is a small system computer interface (SCSI) prefetch command.

### Claim 3 (depends on 1)

The system of claim 1, wherein the fastest data storage tier comprises solid state device (SSD) storage devices configured to be fault-tolerant.

### Claim 4 (depends on 3)

The system of claim 3, wherein the SSD storage devices are configured in a redundant array of independent disks (RAID) configuration that continues to read and write data after one or more SSD storage devices has failed.

### Claim 5 (depends on 1)

The system of claim 1, wherein the storage controller receives a plurality of prefetch commands comprising the prefetch command and the storage controller further comprises:
metadata storage comprising identifiers of first data in the read cache memory that was prefetched in response to the storage controller receives the plurality of prefetch commands.

### Claim 6 (depends on 5)

The system of claim 5, wherein in response to the read cache memory is full when the storage controller receives the prefetch command, the storage controller identifies second data in the read cache memory that was not prefetched in response to any of the plurality of prefetch commands and overwrites the second data with the prefetch data.

### Claim 7 (depends on 5)

The system of claim 5, wherein in response to the read cache memory is full when the storage controller receives the prefetch command and all data in the read cache memory is first data, the storage controller identifies newest first data, transfers the newest first data to the fastest storage tier, and writes the prefetch data into a read cache memory area where the newest first data was stored.

### Claim 8 (depends on 5)

The system of claim 5, wherein the metadata storage further comprises:
identifiers of first data in the read cache memory that was previously read, wherein in response to the read cache memory is full when the storage controller receives the prefetch command and all data in the read cache memory is first data, the storage controller overwrites first data that was previously read with the prefetch data.

### Claim 9 (depends on 8)

The system of claim 8, wherein the prefetch data is transferred over a host interface from the read cache memory and in response, the storage controller identifies third data in the fastest storage tier corresponding to a prefetch command that has not been read over the host interface and transfers the third data to the read cache memory.

### Claim 10

A method comprising:
receiving, by a hardware storage controller, an interface prefetch command from a host, the hardware storage controller comprising metadata comprising a starting Logical Block Address, a Logical Block Address length for the interface prefetch command, and one or more of a time stamp, a prefetch command flag, and a read by host flag;
reading, from one or more storage tiers, interface prefetch data corresponding to the interface prefetch command into a read cache, the one or more storage tiers each comprising storage devices having different performance characteristics than others of the one or more storage tiers; and
storing, by the hardware storage controller, the interface prefetch data to a fastest storage tier of the one or more storage tiers in response to the storage controller determining the interface prefetch data should be discarded from the read cache.

### Claim 11 (depends on 10)

The method of claim 10, wherein prior to storing the interface prefetch data to the fastest storage tier, the method comprising:
storing the interface prefetch data to a read flash cache, wherein the read flash cache functions as a level 2 read cache between the read cache and the storage tiers other than the fastest storage tier, wherein the read flash cache comprises only read data.

### Claim 12 (depends on 11)

The method of claim 11, wherein after storing the interface prefetch data to the read flash cache, the method comprising:
freeing up space in the read cache corresponding to the interface prefetch data to provide unallocated space for new interface prefetch data in the read cache.

### Claim 13 (depends on 10)

The method of claim 10, wherein the method further comprising:
preserving the interface prefetch data in the read cache after the host has read the interface prefetch data as long as the interface prefetch data is not the oldest data in the read cache.

### Claim 14 (depends on 13)

The method of claim 13, wherein the one or more storage tiers comprises at least one storage tier having slower read access time than the fastest storage tier and the interface prefetch command is a small computer system interface (SCSI) prefetch command.

### Claim 15 (depends on 10)

The method of claim 10, wherein the storage controller determining the interface prefetch data should be discarded from the read cache comprises a new interface prefetch command has been received by the storage controller and one of:
the host has previously read the interface prefetch data from the read cache; and
the interface prefetch data is the oldest data in the read cache.

### Claim 16 (depends on 15)

The method of claim 15, wherein a plurality of interface prefetch commands comprises the interface prefetch command.

### Claim 17 (depends on 16)

The method of claim 16, further comprising:
maintaining, by the storage controller, identifiers of interface prefetch data in the read cache that was prefetched in response to the storage controller receiving any of the plurality of interface prefetch commands and interface prefetch data corresponding to any of the plurality of interface prefetch commands that was previously read by the host.

### Claim 18

A storage controller comprising:
circuitry configured to allocate data between a top storage tier and secondary storage tiers, the top storage tier comprising relatively faster data access media than any of the secondary storage tiers, the circuitry further configured to receive data read and write requests from a host computer, each of the top and secondary storage tiers comprising storage devices having different performance characteristics than others of the top and secondary storage tiers;
a storage controller cache memory to store prefetch data, the storage controller identifying prefetch data in the storage controller cache memory corresponding to target data prefetched from the top or secondary storage tiers, retaining the prefetch data in the storage controller cache memory to serve read requests for the target data from the host computer, and migrating the prefetch data to the top storage tier in response to receiving a read request for the target data; and
metadata comprising a starting Logical Block Address, a Logical Block Address length for the prefetch data, and one or more of a time stamp, a prefetch command flag, and a read by host flag.

### Claim 19 (depends on 18)

The storage controller of claim 18, comprising a host interface comprising a small computer system interface (“SCSI”) protocol or alternative interface protocol.

### Claim 20 (depends on 18)

The storage controller of claim 18, wherein identifying prefetch data prevents the prefetch data from being overwritten in the storage controller cache memory according to predetermined cache prefetch policies.
