IP Library Granted Patent US 12675236
Granted Patent B2
US 12675236 · App. 18/397,765 · Granted Jul 7, 2026

Storage system supporting multiple queues

Inventors: Daejin Jung (Suwon-si, KR); Jeong-Woo Park (Suwon-si, KR); Yonghwan Song (Suwon-si, KR)
Assignee: SAMSUNG ELECTRONICS CO., LTD.
G06F3/0659G06F3/0604G06F3/0658G06F3/0679
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12675236
App. No.
18/397,765
Granted
Jul 7, 2026
Kind
B2
Abstract

A storage system includes a host device supporting multiple queues and a storage device communicating with the host device. The host device may include first and second cores, first and second queues corresponding to the first and second cores and storing commands, and a host controller that sets a queue ID and/or a parallelism demand level for each commands stored in the first and second queues. The storage device may include nonvolatile memories and a storage controller that detects pattern information of commands, received from the host device, based on the queue ID and places the commands, received from the host device, in the nonvolatile memories based on the pattern information.

Claims (50)

1 . A storage system comprising:

a host device supporting multiple queues, the host device comprising:

a first core;

a first queue corresponding to the first core and configured to store a plurality of first commands;

a second core;

a second queue corresponding to the second core and configured to store a plurality of second commands; and

a host controller configured to set a queue identifier (ID) for each the plurality of first commands stored in the first queue and each of the plurality of second commands stored in the second queue; and set a parallelism demand level for each of the plurality of first commands stored in the first queue and each of the plurality of second commands stored in the second queue, the parallelism demand level being set for each queue and indicating a priority for a parallel processing function between queues having a same pattern, and

a storage device communicating with the host device, the storage device comprising:

a plurality of nonvolatile memories; and

a storage controller configured to detect pattern information of received commands that are received from the host device, based on the queue ID, and the parallelism demand level of the received commands, and to place the received commands in the plurality of nonvolatile memories based on both the pattern information and the parallelism demand level.

2 . The storage system of claim 1 , wherein:

the host controller sets the queue ID in a group number field of each the plurality of first commands stored in the first core and each of the plurality of second commands stored in the second queue.

3 . The storage system of claim 1 , wherein:

the host controller sets the parallelism demand level in a reserved area of each the plurality of first commands stored in the first queue and each of the plurality of second commands stored in the second queue.

4 . The storage system of claim 3 , wherein:

the host controller sets the parallelism demand level using a 2-bit context configuration attributes value.

5 . The storage system of claim 1 , wherein:

the storage controller sorts the received commands by queue based on the queue ID according to an order of receiving the received commands and detects the pattern information by queue based on a continuity of logical addresses of the received commands that have been sorted.

6 . The storage system of claim 5 , wherein the storage device further comprises:

an input/output scheduler configured to receive the pattern information on each of the first queue and the second queue and to control an order of processing the received commands based on the pattern information, and

wherein the input/output scheduler preferentially distributes and places the plurality of first commands corresponding to the first queue in the plurality of nonvolatile memories when the plurality of first commands corresponding to the first queue have a sequential pattern and the plurality of second commands corresponding to the second queue have a random pattern.

7 . The storage system of claim 6 , wherein:

the plurality of first commands corresponding to the first queue are read commands, and read operations corresponding to the read commands are simultaneously performed in the plurality of nonvolatile memories.

8 . The storage system of claim 6 , wherein:

the plurality of first commands corresponding to the first queue are write commands, and a plurality of pieces of write data, corresponding to the write commands, are simultaneously written in the plurality of nonvolatile memories.

9 . The storage system of claim 6 , wherein:

the input/output scheduler controls the order of processing the received commands based on the parallelism demand levels of the first queue and the second queue when the plurality of first commands, corresponding to the first queue, have the sequential pattern and the plurality of second commands, corresponding to the second queue, have the sequential pattern.

10 . The storage system of claim 1 , wherein:

the host device transmits a packet in which a command is included, based on a flash storage interface, and the storage device receives the packet, based on the flash storage interface.

11 . A host device communicating with a storage device, the host device comprising:

a host memory configured to store multiple queues; and

a host controller configured to set a queue identifier (ID) and a parallelism demand level for commands, respectively corresponding to the multiple queues, the parallelism demand level being set for each queue and indicating a priority for a parallel processing function between queues having a same pattern,

wherein the host controller sets the queue ID in a group number field of each of the commands and sets the parallelism demand level in a reserved area of each of the commands.

12 . The host device of claim 11 , wherein the host controller sets the parallelism demand level using a 2-bit context configuration attributes value.

13 . The host device of claim 11 , wherein the group number field is a 5-bit group number field area, and wherein the host controller sets the queue ID in a reserved area of the 5-bit group number field area, other than an area in which context IDs are set, in the 5-bit group number field area.

14 . The host device of claim 11 , wherein the host controller comprises:

a flash storage host controller interface configured to receive commands corresponding to each of the multiple queues;

a flash storage transport protocol engine configured to set the queue ID in the group number field of each of the received commands and to set the parallelism demand level in the reserved area of each of the received commands; and

a flash storage interconnect layer configured to communicate with the storage device.

15 . A storage device communicating with a host device, the storage device comprising:

a pattern analyzer configured to sequentially receive a plurality of commands from the host device and to analyze pattern information of the plurality of commands by queue based on a queue identifier (ID) of each of the plurality of commands;

an input/output scheduler configured to control an order of processing the plurality of commands based on both the pattern information received from the host device and a parallelism demand level received from the host device, the parallelism demand level being set for each queue and indicating a priority for a parallel processing function between queues having a same pattern; and

a plurality of nonvolatile memories configured to perform read or write operations in parallel based on the order of processing the plurality of commands determined by the input/output scheduler.

16 . The storage device of claim 15 , wherein the queue ID is set in a group number field of each of the plurality of commands, and

wherein the pattern analyzer sorts the plurality of commands based on the queue ID set in the group number field of each of the plurality of commands.

17 . The storage device of claim 15 , wherein the input/output scheduler preferentially places commands of the plurality of commands that correspond to a queue, in parallel in the plurality of nonvolatile memories when the pattern information is a sequential pattern.

18 . The storage device of claim 15 , wherein the input/output scheduler places the plurality of commands in parallel in the plurality of nonvolatile memories based on the parallelism demand level of a first queue and a parallelism demand level of a second queue when pattern information of commands of the plurality of commands that correspond to the first queue is a sequential pattern and pattern information of commands of the plurality of commands that correspond to the second queue is the sequential pattern.

19 . The storage device of claim 18 , wherein a command parallelism demand level is set in a reserved area of each of the plurality of commands, and

wherein the input/output scheduler identifies the command parallelism demand level that is set in the reserved area of each of the plurality of commands.

20 . The storage device of claim 18 , wherein the parallelism demand level of the first queue is set using a 2-bit context configuration attributes value, and the parallelism demand level of the second queue is set using a 2-bit context configuration attributes value.