# US 12,008,251 B2 · Rate levelling among peer data storage devices

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

- Number: US 12,008,251 B2
- Document ID: US12008251B2
- Status: Granted
- Kind: B2
- Application number: 17/846,316
- Filed: 2022-06-22
- Published: 2023-12-28
- Granted: 2024-06-11
- Earliest claimed: 2022-06-22
- Assignees: Western Digital Technologies, Inc.
- Applicants: Western Digital Technologies, Inc.
- Inventors: Ramanathan Muthiah; Judah Gamliel Hahn
- Web page: https://patentgrep.com/patent/US12008251B2

## CPC

- G06F 3/061: {Improving I/O performance}
- G06F 3/064: {Management of blocks}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 11/3058: {Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations (thermal management in cooling arrangements of a computing system G06F1/206)}
- G06F 11/3409: {for performance assessment}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Example storage systems, data storage devices, and methods provide rate levelling among peer storage devices. A master storage device among peer storage devices receives host commands, determines the workload states of the peer storage devices, divides the data units in the host commands into data blocks for data striping, allocates the data blocks among the peer storage devices, and sends the data blocks to the peer storage devices using a peer communication channel.

## Claims

### Claim 1

A storage device comprising:
a non-volatile storage medium;
an interface configured to communicate with a plurality of peer storage devices over a peer communication channel; and
at least one processor configured to, alone or in combination:
receive a host storage command for a data unit from a host system;
determine workload states for the plurality of peer storage devices;
divide the data unit into a plurality of data blocks;
allocate, based on the workload states, the plurality of data blocks to target peer storage devices among the plurality of peer storage devices; and
send, through the peer communication channel, the plurality of data blocks to the target peer storage devices.

### Claim 2 (depends on 1)

The storage device of claim 1, wherein:
the at least one processor is further configured to, alone or in combination, determine thermal states for the plurality of peer storage devices; and
allocating the plurality of data blocks to the target peer storage devices is further based on the thermal states.

### Claim 3 (depends on 1)

The storage device of claim 1, wherein:
the at least one processor is further configured to, alone or in combination, determine endurance values for the plurality of peer storage devices; and
allocating the plurality of data blocks to the target peer storage devices is further based on the endurance values.

### Claim 4 (depends on 1)

The storage device of claim 1, wherein the at least one processor is further configured to, alone or in combination:
query each peer storage device of the plurality of peer storage devices for peer state data;
receive, from each peer storage device of the plurality of peer storage devices, the peer state data for that peer storage device;
store the peer state data for each peer storage device of the plurality of peer storage devices; and
use the peer state data to select the target peer storage devices from among the plurality of peer storage devices.

### Claim 5 (depends on 1)

The storage device of claim 1, further comprising:
a host logical block address mapping table configured to map host logical block addresses to storage locations among the plurality of peer storage devices, wherein the at least one processor is further configured to, alone or in combination:
determine a peer storage location for each data block of the plurality of data blocks; and
store, for each data block of the plurality of data blocks, the peer storage location in the host logical block address mapping table.

### Claim 6 (depends on 1)

The storage device of claim 1, further comprising:
a remotely addressable memory configured to include a controller memory buffer, wherein the at least one processor is further configured to, alone or in combination, receive the host storage command in at least one command queue in the controller memory buffer.

### Claim 7 (depends on 6)

The storage device of claim 6, wherein:
each peer storage device of the plurality of peer storage devices comprises a peer controller memory buffer configured to receive peer storage commands in at least one peer command queue; and
the at least one processor is further configured to, alone or in combination, send the plurality of data blocks to the target peer storage devices by writing each data block in at least one peer storage command in the at least one peer command queue of a corresponding target peer storage device.

### Claim 8 (depends on 7)

The storage device of claim 7, wherein the at least one processor is further configured to send each data block from the controller memory buffer to the peer controller memory buffer of the target peer storage device through the peer communication channel using direct memory access.

### Claim 9 (depends on 1)

The storage device of claim 1, wherein the at least one processor is further configured to, alone or in combination:
manage storage operations to the non-volatile storage medium;
determine a local workload state for the storage operations to the non-volatile storage medium, and
allocate, based on the local workload state, at least one data block of the plurality of data blocks to the non-volatile storage medium.

### Claim 10 (depends on 1)

The storage device of claim 1, wherein the at least one processor is further configured to, alone or in combination:
determine a next master storage device from the plurality of peer storage devices; and
transfer functions for allocating data blocks to target peer storage devices to the next master storage device.

### Claim 11

A computer-implemented method comprising:
establishing, among a plurality of peer storage devices, a peer communication channel;
receiving, by a first peer storage device of the plurality of peer storage devices, a host storage command for a data unit from a host system;
determining, by the first peer storage device, workload states for the plurality of peer storage devices;
dividing, by the first peer storage device, the data unit into a plurality of data blocks;
allocating, by the first peer storage device and based on the workload states, the plurality of data blocks to target peer storage devices among the plurality of peer storage devices; and
sending, by the first peer storage device and through the peer communication channel, the plurality of data blocks to the target peer storage devices.

### Claim 12 (depends on 11)

The computer-implemented method of claim 11, further comprising:
determining, by the first peer storage device, thermal states for the plurality of peer storage devices, wherein allocating the plurality of data blocks to the target peer storage devices is further based on the thermal states.

### Claim 13 (depends on 11)

The computer-implemented method of claim 11, further comprising:
determining, by the first peer storage device, endurance values for the plurality of peer storage devices, wherein allocating the plurality of data blocks to the target peer storage devices is further based on the endurance values.

### Claim 14 (depends on 11)

The computer-implemented method of claim 11, further comprising:
querying, by the first peer storage device, each peer storage device of the plurality of peer storage devices for peer state data;
receiving, by the first peer storage device and from each peer storage device of the plurality of peer storage devices, the peer state data for that peer storage device;
storing, by the first peer storage device, the peer state data for each peer storage device of the plurality of peer storage devices; and
using, by the first peer storage device, the peer state data to select the target peer storage devices from among the plurality of peer storage devices.

### Claim 15 (depends on 11)

The computer-implemented method of claim 11, further comprising:
determining, by the first peer storage device, a peer storage location for each data block of the plurality of data blocks; and
storing, by the first peer storage device and for each data block of the plurality of data blocks, the peer storage location in a host logical block address mapping table, wherein the host logical block address mapping table is configured to map host logical block addresses to storage locations among the plurality of peer storage devices.

### Claim 16 (depends on 11)

The computer-implemented method of claim 11, further comprising:
receiving, by the first peer storage device, the host storage command in at least one command queue in a controller memory buffer configured in a remotely addressable memory of the first peer storage device.

### Claim 17 (depends on 16)

The computer-implemented method of claim 16, further comprising:
sending, by the first peer storage device, the plurality of data blocks to the target peer storage devices by writing each data block in at least one peer storage command to at least one peer command queue of a corresponding target peer storage device, wherein each peer storage device of the plurality of peer storage devices comprises a controller memory buffer configured in a remotely addressable memory to receive peer storage commands in at least one peer command queue.

### Claim 18 (depends on 17)

The computer-implemented method of claim 17, further comprising:
sending each data block from the controller memory buffer of the first peer storage device to the controller memory buffer of the target peer storage device through the peer communication channel using direct memory access.

### Claim 19 (depends on 11)

The computer-implemented method of claim 11, further comprising:
determining a next master storage device from the plurality of peer storage devices; and
transferring functions for allocating data blocks to target peer storage devices from the first peer storage device to the next master storage device.

### Claim 20

A storage system comprising:
a plurality of peer storage devices, wherein a first peer storage device of the plurality of peer storage devices comprises:
a non-volatile storage medium;
means for establishing, among a plurality of peer storage devices, a peer communication channel;
means for receiving, by the first peer storage device, a host storage command for a data unit from a host system;
means for determining, by the first peer storage device, workload states for the plurality of peer storage devices;
means for dividing, by the first peer storage device, the data unit into a plurality of data blocks;
means for allocating, by the first peer storage device and based on the workload states, the plurality of data blocks to target peer storage devices from among the plurality of peer storage devices; and
means for sending, by the first peer storage device and through the peer communication channel, the plurality of data blocks to the target peer storage devices.
