IP Library Granted Patent US 10,942,874
Granted Patent B2
US 10,942,874 · App. 16/250,412 · Granted Mar 9, 2021

Methods and systems that manage fetching of commands by a controller from queues of a host

Inventors: Rajesh Kumar Sahoo (Karnataka, IN); Aishwarya Ravichandran (Karnataka, IN); Manoj Thapliyal (Karnataka, IN)
Assignee: Samsung Electronics Co., Ltd.
G06F13/1642G06F13/18H04L47/6215H04L47/6275H04L49/90
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 10,942,874
App. No.
16/250,412
Granted
Mar 9, 2021
Kind
B2
Abstract

A method and system for managing command fetches by an Non-Volatile Memory express (NVMe) controller from a plurality of queues in a host maintains a predefined ratio of data throughput, based on the command fetches, between the plurality of queues. Each of the plurality of queues is assigned with a particular priority and weight.

Claims (54)

1. A method executed by a controller of a storage device for fetching commands from high-priority queues and low-priority queues of a host, the method comprising:

incrementing a first count in response to each instance of transferring an amount of data equivalent to a logical block of a predetermined size between the high-priority queues and the storage device;

incrementing a second count in response to each instance of transferring the amount of data equivalent to the logical block between the low-priority queues and the storage device;

prioritizing the fetching of the commands from the high-priority queues and low-priority queues based on the first count and the second count; and

fetching the commands from the high-priority queues and the low-priority queues in accordance with the prioritization, wherein

the fetching the commands is disabled when data throughput of a plurality of queues categorized in the high-priority queues and the low-priority queues is not equal to a predefined ratio of data throughput based on the command fetches of the plurality of queues categorized in the high-priority queues and the low-priority queues.

2. The method of claim 1 , further comprising determining whether the second count exceeds the first count.

3. The method of claim 2 , further comprising:

in response to determining the second count exceeds the first count, determining whether the high-priority queues have a command pending; and

in response to determining the high-priority queues have a command pending, assigning priority to fetching a command from the high-priority queues.

4. The method of claim 2 , further comprising:

in response to determining the second count does not exceed the first count, determining whether priority has been assigned to fetching a command from the high-priority queues; and

in response to determining priority has been assigned to fetching a command from the high-priority queues, eliminating the priority assigned to fetching the command from the high-priority queues.

5. The method of claim 2 , further comprising:

in response to determining the second count exceeds the first count, determining whether the high-priority queues have a command pending; and

in response to determining the high-priority queues do not have a command pending, setting each of the first count and the second count to a same value.

6. The method of claim 1 , wherein the controller comprises a Non-Volatile Memory express (NVMe) controller that processes the commands from the host.

7. A storage device comprising:

an arbitrator that categorizes a first group of queues of a host as high-priority queues and a second group of queues of the host as low-priority queues; and

a controller that manages fetching of commands from the host by:

incrementing a first count in response to each instance of transferring an amount of data equivalent to a logical block of a predetermined size between the high-priority queues and the storage device,

incrementing a second count in response to each instance of transferring the amount of data equivalent to the logical block between the low-priority queues and the storage device,

prioritizing the fetching of the commands from the high-priority queues and low-priority queues based on the first count and the second count, and

fetching the commands from the high-priority queues and the low-priority queues in accordance with the prioritization, wherein

the fetching is disabled when data throughput of a plurality of queues categorized in the high-priority queues and the low-priority queues is not equal to a predefined ratio of data throughput based on the command fetches of the plurality of queues categorized in the high-priority queues and the low-priority queues.

8. The storage device of claim 7 , wherein the controller further processes commands fetched from the host by determining whether the second count exceeds the first count.

9. The storage device of claim 8 , wherein the controller further processes commands fetched from the host by:

determining, in response to determining the second count exceeds the first count, whether the high-priority queues have a command pending; and

assigning, in response to determining the high-priority queues have a command pending, priority to fetching a command from the high-priority queues.

10. The storage device of claim 8 , wherein the controller further processes commands fetched from the host by:

determining, in response to determining the second count does not exceed the first count, whether priority has been assigned to fetching a command from the high-priority queues; and

eliminating, in response to determining priority has been assigned to fetching a command from the high-priority queues, the priority assigned to fetching the command from the high-priority queues.

11. The storage device of claim 8 , wherein the controller further processes commands fetched from the host by:

determining, in response to determining the second count exceeds the first count, whether the high-priority queues have a command pending; and

setting, in response to determining the high-priority queues do not have a command pending, each of the first count and the second count to a same value.

12. The storage device of claim 7 , wherein the controller comprises a Non-Volatile Memory express (NVMe) controller.

13. A storage device comprising:

an arbitrator that categorizes a first group of queues of a host as high-priority queues and a second group of queues of the host as low-priority queues; and

a Non-Volatile memory express (NVMe) controller that manages fetching of commands from the host by:

incrementing a first count in response to each instance of transferring an amount of data equivalent to a logical block of a predetermined size between the high-priority queues and the storage device,

incrementing a second count in response to each instance of transferring the amount of data equivalent to the logical block between the low-priority queues and the storage device,

prioritizing the fetching of the commands from the high-priority queues and low-priority queues based on the first count and the second count, and

fetching the commands from the high-priority queues and the low-priority queues in accordance with the prioritization, wherein

the fetching is disabled when data throughput of a plurality of queues categorized in the high-priority queues and the low-priority queues is not equal to a predefined ratio of data throughput based on the command fetches of the plurality of queues categorized in the high-priority queues and the low-priority queues.

14. The storage device of claim 13 , wherein the NVMe controller further processes commands fetched from the host by determining whether the second count exceeds the first count.

15. The storage device of claim 14 , wherein the NVMe controller further processes commands fetched from the host by:

determining, in response to determining the second count exceeds the first count, whether the high-priority queues have a command pending; and

assigning, in response to determining the high-priority queues have a command pending, priority to fetching a command from the high-priority queues.

16. The storage device of claim 14 , wherein the NVMe controller further processes commands fetched from the host by:

determining, in response to determining the second count does not exceed the first count, whether priority has been assigned to fetching a command from the high-priority queues; and

eliminating, in response to determining priority has been assigned to fetching a command from the high-priority queues, the priority assigned to fetching the command from the high-priority queues.

17. The storage device of claim 14 , wherein the NVMe controller further processes commands fetched from the host by:

determining, in response to determining the second count exceeds the first count, whether the high-priority queues have a command pending; and

setting, in response to determining the high-priority queues do not have a command pending, each of the first count and the second count to a same value.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 21, 2019
From: SAHOO, RAJESH KUMAR; RAVICHANDRAN, AISHWARYA; THAPLIYAL, MANO
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 048071/0577 →
Priority Claims (1)
IN 201841011307 · Mar 27, 2018 · national
Continuity (1)
Related Publication 20190303309A1 · Oct 3, 2019