# US 2018/0321855 A1 · Multistreaming in heterogeneous environments

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

- Number: US 2018/0321855 A1
- Document ID: US20180321855A1
- Status: Published application
- Kind: A1
- Application number: 15/690,270
- Filed: 2017-08-29
- Published: 2018-11-08
- Earliest claimed: 2017-05-03
- Assignees: Samsung Electronics Co., Ltd.
- Applicants: Samsung Electronics Co., Ltd.
- Inventors: Jason MARTINEAU; Changho CHOI; Rajinikanth PANDURANGAN; Jingpei YANG
- Web page: https://patentgrep.com/patent/US20180321855A1

## CPC

- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/0649: {Lifecycle management}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- H04B 1/02: Transmitters
- H04B 1/06: Receivers
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04B: TRANSMISSION

## Abstract

A storage device is disclosed. The storage device may include storage to store data, which may include a first storage of a first type and a second storage of a second type. The storage device may support a number of device streams, some of which associated with the first storage and some associated with the second storage. The storage device may also include a streaming capabilities analyzer that may inventory the streaming capabilities for the storage device. Finally, the storage device may include a transmitter to transmit the streaming capabilities of the storage device to a storage manager.

## Claims

### Claim 1

A storage device, comprising:
storage for data, including a first storage and a second storage, the first storage of a first type and the second storage of a second type, wherein the first type is different from the second type;
a number of device streams used in writing the data to the storage, a first of the number of device streams supported by the storage device associated with the first storage and a second of the number of device streams supported by the storage device associated with the second storage;
a streaming capabilities analyzer to inventory streaming capabilities of the storage device; and
a transmitter to transmit the streaming capabilities of the storage device to at least one storage manager.

### Claim 2 (depends on 1)

A storage device according to claim 1, wherein the streaming capabilities are drawn from a set including the number of device streams supported by the storage device, a size of an erase block on the storage device, a description of a physical heterogeneity of the storage device, an auto-streaming capability of the storage device, an Optical Stream Write Size of the storage device, in-storage computing (ISC) supported by the storage device, Program and Erase speed parameters of the storage device, a buffer size of the storage device, throughput limitations on the device streams supported by the storage device, and firmware version of the storage device.

### Claim 3 (depends on 1)

A storage device according to claim 1, wherein:
the storage device further comprises an update detector operative to detect when there has been an update in the streaming capabilities of the storage device;
the streaming capabilities analyzer is operative to re-inventory the updated streaming capabilities of the storage device; and
the transmitter is operative to transmit the updated streaming capabilities of the storage device to the at least one storage manager.

### Claim 4

A storage manager, comprising:
a receiver to receive at least one streaming capability of at least one storage device, requirements for at least one software stream, and a request from the at least one software stream;
a device stream selector to select one of a number of device streams supported by the at least one storage device responsive to the requirements for the at least one software stream and the at least one streaming capability of the at least one storage device; and
a transmitter to transmit the request to a first storage device of the at least one storage device, the first storage device supporting the selected one of the number of device streams.

### Claim 5 (depends on 4)

A storage manager according to claim 4, further comprising an augmenter to augment the at least one streaming capability of the at least one storage device with storage device-independent considerations.

### Claim 6 (depends on 4)

A storage manager according to claim 4, wherein the streaming capability are drawn from a set including the number of device streams supported by the storage device, a size of an erase block on the storage device, a description of a physical heterogeneity of the storage device, an auto-streaming capability of the storage device, an Optimal Stream Write Size of the storage device, in-storage computing (ISC) supported by the storage device, Program and Erase speed parameters of the storage device, a buffer size of the storage device, throughput limitations on the device streams supported by the storage device, and firmware version of the storage device.

### Claim 7 (depends on 4)

A storage manager according to claim 4, wherein the device stream selector includes a mapper to generate a mapping from the at least one software stream to at least one of the number of device streams supported by the at least one storage device responsive to the at least one requirement of the at least one software stream and the at least one streaming capability of the at least one storage device.

### Claim 8 (depends on 7)

A storage manager according to claim 7, further comprising storage for a data structure storing the mapping.

### Claim 9 (depends on 4)

A storage manager according to claim 4, further comprising storage for a data structure storing the at least one streaming capability of the at least one storage device.

### Claim 10 (depends on 4)

A storage manager according to claim 4, wherein the at least one streaming capability of the at least one storage device specifies that the at least one storage device includes a first storage of a first type and a second storage of a second type, wherein the first type is different from the second type.

### Claim 11 (depends on 4)

A storage manager according to claim 4, wherein the at least one storage device includes a first storage device and a second storage device, wherein the first storage device and the second storage device support different streaming capabilities.

### Claim 12 (depends on 11)

A storage manager according to claim 11, wherein the at least one storage device includes:
a first storage device supporting a first type of storage; and
a second storage device supporting a second type of storage, the second type of storage different from the first type of storage.

### Claim 13 (depends on 11)

A storage manager according to claim 11, wherein the different streamlining capabilities include different numbers of device streams, different erase block sizes, different storage capacities, different auto-streaming capabilities, different Optimal Stream Write Sizes, different in-storage computing capabilities, different Program and Erase speed parameters, different buffer sizes, different throughput limitations, and different firmware versions.

### Claim 14 (depends on 4)

A storage manager according to claim 4, wherein:
the requirements for the at least one software stream include at least two requirements for the at least one software stream;
the device stream selector includes a weight assignor to assign weights to the at least two requirements for the at least one software stream; and
the device stream selector is operative to select the at least one of the number of device streams supported by the at least one storage device responsive to the weights and the at least one streaming capability of the at least one storage device.

### Claim 15

A method, comprising:
receiving at least two streaming capabilities of at least one storage device, the at least one storage device supporting a number of device streams;
receiving a request from at least one software stream;
determining at least one requirement of the at least one software stream;
selecting at least one of the number of device streams supported by the at least one storage device responsive to the at least one requirement of the at least one software stream and the at least one streaming capability of the at least one storage device; and
sending the request from the at least one software stream to the at least one storage device using the selected at least one of the number of device streams.

### Claim 16 (depends on 15)

A method according to claim 15, further comprising augmenting the at least one streaming capability of the at least one storage device with storage device-independent considerations.

### Claim 17 (depends on 15)

A method according to claim 15, wherein selecting at least one of the number of device streams supported by the at least one storage device responsive to the at least one requirement of the at least one software stream and the at least one streaming capability of the at least one storage device includes:
generating a mapping from the at least one software stream to at least one of the number of device streams supported by the at least one storage device responsive to the at least one requirement of the at least one software stream and the at least one streaming capability of the at least one storage device; and
using the mapping to select the at least one of the number of device streams supported by the at least one storage device responsive to the at least one software stream.

### Claim 18 (depends on 17)

A method according to claim 17, wherein generating a mapping from the at least one software stream to at least one of the number of device streams supported by the at least one storage device responsive to the at least one requirement of the at least one software stream and the at least one streaming capability of the at least one storage device includes:
assigning each of the number of device streams supported by the at least one storage device using the at least one streaming capability of the at least one storage device to one of at least two classes;
assigning the at least one software stream to one of the at least two classes; and
generating the mapping by assigning the at least one software stream to at least one of the at least one of the number of device streams supported by the at least one storage device that has a same class.

### Claim 19 (depends on 15)

A method according to claim 15, wherein receiving at least one streaming capability of at least one storage device, the at least one storage device supporting a number of device streams and at least two different types of storage includes:
receiving at least a first streaming capability of at least a first storage device, the first storage device supporting at least a first type of storage; and
receiving at least a second streaming capability of at least a second storage device, the second storage device supporting at least a second type of storage, the second type of storage different from the first type of storage.

### Claim 20 (depends on 15)

A method according to claim 15, wherein:
determining at least one requirement of the at least one software stream includes determining at least two requirements of the at least one software stream, wherein the at least two requirements represent a subset of the at least one streaming capability of the at least one storage device; and
selecting at least one of the number of device streams supported by the at least one storage device responsive to the at least one requirement of the at least one software stream and the at least one streaming capability of the at least one storage device includes:
assigning weights to the at least two requirements of the at least one software stream; and
selecting the at least one of the number of device streams supported by the at least one storage device responsive to the weights and the at least one streaming capability of the at least one storage device.
