IP Library Granted Patent US 10,261,695
Granted Patent B2
US 10,261,695 · App. 15/882,805 · Granted Apr 16, 2019

Methods, systems and computer readable media for intelligent fetching of data storage device commands from submission queues

Inventors: Shay Benisty (Beer Sheva, IL); Noga Harari Shechter (Lehavim, IL); Amir Segev (Meitar, IL); Tal Sharifie (Lehavim, IL)
Assignee: SanDisk Technologies LLC
G06F3/061G06F3/0653G06F3/0659G06F3/0679G06F3/0688
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,261,695
App. No.
15/882,805
Granted
Apr 16, 2019
Kind
B2
Abstract

Methods, systems, and computer readable media for intelligent fetching of storage device commands from submission queues are disclosed. On method is implemented in a data storage device including a controller and a memory. The method includes collecting submission queue command statistics; monitoring resource state of the data storage device. The method further includes using the submission queue command statistics and the resource state to select a submission queue from which a next data storage device command should be fetched. The method further includes fetching the command from the selected submission queue. The method further includes providing the command to command processing logic.

Claims (56)

1. A method, comprising:

collecting submission queue command statistics including command type information for each of a plurality of submission queues associated with a data storage device including a controller and a memory, the command type information including information regarding whether particular submission queues historically contain a majority of random input/output (I/O) commands or a majority of sequential I/O commands;

monitoring resource state of the data storage device;

using the submission queue command statistics and the resource state to select a submission queue from which a next data storage device command should be fetched;

fetching the command from the selected submission queue; and

providing the command to command processing logic.

2. The method of claim 1 wherein collecting submission queue command statistics includes collecting statistics regarding a number of pending commands in each of a plurality of submission queues.

3. The method of claim 1 wherein collecting submission queue command statistics includes collecting an indication of a number of commands fetched from each of a plurality of submission queues.

4. The method of claim 3 wherein collecting command type information includes collecting information regarding whether particular submission queues historically contain a majority of read or a majority of write commands.

5. The method of claim 1 wherein monitoring resource state includes monitoring read pipeline state of the data storage device.

6. The method of claim 1 wherein monitoring resource state includes monitoring write pipeline state of the data storage device.

7. The method of claim 1 wherein using the submission queue command statistics and the resource state to select the submission queue includes, in response to determining that a read pipeline of the data storage device is currently unavailable to process a read command and that a particular submission queue has historically contained a majority of read commands, bypassing selection of the particular submission queue in favor of a submission queue that has historically contained a majority of write commands.

8. The method of claim 1 wherein using the submission queue command statistics and the resource state to select the submission queue includes, in response to determining that a write pipeline of the data storage device is currently unavailable to process a write command and that a particular submission queue has historically contained a majority of write commands, bypassing selection of the particular submission queue in favor of a submission queue that has historically contained a majority of read commands.

9. The method of claim 1 wherein collecting the submission queue command statistics and monitoring the resource state includes continually collecting the submission queue command statistics and continually monitoring the resource state.

10. The method of claim 1 wherein the data storage device comprises a nonvolatile memory device and the controller comprises a nonvolatile memory controller.

11. The method of claim 10 wherein the nonvolatile memory controller comprises a nonvolatile memory express (NVMe) controller.

12. The method of claim 1 wherein the memory comprises two dimensional or three dimensional NAND flash memory.

13. A data storage device comprising:

a memory;

a command monitor for collecting submission queue command statistics including command type information for each of a plurality of submission queues, the command type information including information regarding whether particular submission queues have historically contained a majority of random input/output (I/O) commands or a majority of sequential I/O commands;

a resource monitor for monitoring a resource state of the data storage device;

a submission queue selector for using the submission queue command statistics and the resource state to select a submission queue from which a next data storage device command should be fetched; and

a command fetcher for fetching the command from the selected submission queue and providing the command to the submission queue selector, which provides the command to command processing logic.

14. The data storage device of claim 13 wherein the command monitor is configured to collect statistics regarding a number of pending commands in each of a plurality of submission queues.

15. The data storage device of claim 13 wherein the command monitor is configured to collect an indication of a number of commands fetched from each of a plurality of submission queues.

16. The data storage device of claim 13 wherein the command monitor is configured to collect information regarding whether particular submission queues have historically contained a majority of read commands or a majority of write commands.

17. The data storage device of claim 13 wherein the resource monitor is configured to monitor read pipeline state of the data storage device.

18. The data storage device of claim 13 wherein the resource monitor is configured to monitor write pipeline state of the data storage device.

19. The data storage device of claim 13 wherein the submission queue selector is configured to, in response to a determination that a read pipeline of the data storage device is currently unavailable to process a read command and that a particular submission queue has historically contained a majority of read commands, bypass selection of the particular submission queue in favor of a submission queue that has historically contained a majority of write commands.

20. The data storage device of claim 13 wherein the submission queue selector is configured to, in response to a determination that a write pipeline of the data storage device is currently unavailable to process a write command and that a particular submission queue has historically contained a majority of write commands, bypass selection of the particular submission queue in favor of a submission queue that has historically contained a majority of read commands.

21. The data storage device of claim 13 wherein the command monitor is configured to continually collect the submission queue command statistics and wherein the resource monitor is configured to continually monitor the resource state of the data storage device.

22. The data storage device of claim 13 comprising a controller, wherein the command monitor, the resource monitor, the submission queue selector, and the command fetcher are components of the controller.

23. The data storage device of claim 13 wherein the memory comprises a nonvolatile memory and further comprising a memory controller.

24. The data storage device of claim 23 wherein the memory controller comprises a nonvolatile memory controller.

25. The data storage device of claim 24 wherein the nonvolatile memory controller comprises a nonvolatile memory express (NVMe) controller.

26. The data storage device of claim 13 wherein the memory comprises two dimensional or three dimensional NAND flash memory.

27. A non-transitory computer readable medium having stored thereon executable instructions that when executed by the processor of a computer control the computer to perform steps comprising:

collecting submission queue command statistics including command type information for each of a plurality of submission queues, the command type information including information regarding whether particular submission queues historically contain a majority of random input/output (I/O) commands or a majority of sequential I/O commands;

monitoring resource state of a data storage device including a memory and a controller;

using the submission queue command statistics and the resource state to select a submission queue from which a next data storage device command should be fetched;

fetching the command from the selected submission queue; and

providing the command to command processing logic.

28. A method, comprising:

collecting submission queue command statistics associated with a data storage device including a controller and a memory;

monitoring resource state of the data storage device;

using the submission queue command statistics and the resource state to select a submission queue from which a next data storage device command should be fetched;

fetching the command from the selected submission queue;

providing the command to command processing logic; and

initially operating in a static submission queue selection mode and switching to using the submission queue command statistics and the resource state to select the submission queue from which the next data storage device command should be fetched in response to a predetermined trigger.

29. A data storage device comprising:

a memory;

a command monitor for collecting submission queue command statistics;

a resource monitor for monitoring a resource state of the data storage device;

a submission queue selector for using the submission queue command statistics and the resource state to select a submission queue from which a next data storage device command should be fetched; and

a command fetcher for fetching the command from the selected submission queue and providing the command to the submission queue selector, which provides the command to command processing logic,

wherein the submission queue selector is configured to initially operate in a static submission queue selection mode and switch to using the submission queue command statistics and the resource state to select the submission queue from which the next data storage device command should be fetched in response to a predetermined trigger.

Assignments (5)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 6, 2019
From: BENISTY, SHAY; HARARI SHECHTER, NOGA; SEGEV, AMIR; SHARIFIE, TAL
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 048522/0204 →
CHANGE OF NAME Recorded Mar 6, 2019
From: SANDISK TECHNOLOGIES INC.
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 048522/0560 →
Continuity (2)
Continuation 14868373 · Sep 28, 2015
Related Publication 20180150221A1 · May 31, 2018
Cited By (2)
US 12,315,604 US 12,567,482