IP Library Granted Patent US 11,055,022
Granted Patent B2
US 11,055,022 · App. 16/363,097 · Granted Jul 6, 2021

Storage system and method for early host command fetching in a low queue depth environment

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 11,055,022
App. No.
16/363,097
Granted
Jul 6, 2021
Kind
B2
Abstract

A storage system and method are provided for early host command fetching in a low queue depth environment. In one embodiment, a storage system is provided comprising a memory and a controller. The controller is configured to: determine a host's behavior for updating a submission queue; begin executing at least one command based on the determined host's behavior before receiving notification from the host that the host has updated the submission queue; receive notification from the host that the host has updated the submission queue; determine whether the submission queue has been updated with the at least one command that the controller began executing; and in response to determining that the submission queue has been updated with the at least one command that the controller began executing, continue executing the at least one command.

Claims (57)

1. A storage system comprising:

a memory; and

a controller in communication with the memory, wherein the controller is configured to:

determine a behavior of a host for updating a submission queue;

before receiving notification from the host that the host has updated the submission queue, begin executing at least one command based on the determined host's behavior;

receive notification from the host that the host has updated the submission queue;

determine whether the submission queue has been updated with the at least one command that the controller began executing; and

in response to determining that the submission queue has been updated with the at least one command that the controller began executing, continue executing the at least one command.

2. The storage system of claim 1 , wherein the controller is further configured to:

in response to determining that the submission queue has not been updated with the at least one command that the controller began executing:

cancel execution of the at least one command; and

execute a new command from the submission queue.

3. The storage system of claim 1 , wherein the controller is further configured to determine the host's behavior in response to determining that the storage system has a low queue depth.

4. The storage system of claim 1 , wherein the controller is further configured to determine the host's behavior by comparing entries in the submission queue before and after receiving notification from the host that the host has updated the submission queue to learn when and how the host updates the submission queue.

5. The storage system of claim 1 , wherein:

the determined host's behavior is that the host writes a command to the submission queue only after receiving a completion queue message to a previous command; and

the controller is further configured to poll a next slot in the submission queue until the controller detects that a new command has been posted to the submission queue.

6. The storage system of claim 1 , wherein:

the determined host's behavior is that the host writes a command to the submission queue only at an initialization phase of the submission queue; and

the controller is further configured to read the at least one command from the storage system's memory.

7. The storage system of claim 1 , wherein:

the determined host's behavior is that the host writes N number of commands to the submission queue and sends N number of notifications to the storage system; and

the controller is further configured to read the N number of commands from the submission queue before receiving notification from the host that the host has updated the submission queue.

8. The storage system of claim 1 , wherein the memory comprises a three-dimensional memory.

9. The storage system of claim 1 , wherein the storage system is embedded in the host.

10. The storage system of claim 1 , wherein the storage system is removably connected to the host.

11. A method for speculative execution of a command, the method comprising:

performing the following in a storage system:

selecting a command from a submission queue before the storage system receives notification that the command has been posted in the submission queue, wherein the command is selected based on learned knowledge of how a host updates the submission queue;

beginning execution of the command;

after receiving a notification from the host that a new command has been posted to the submission queue, determining whether the new command is the command being executed;

in response to determining that the new command is the command being executed, continuing execution of the command; and

in response to determining that the new command is not the command being executed, executing the new command.

12. The method of claim 11 , wherein the learned knowledge is obtained by comparing entries in the submission queue before and after receiving notification from the host that the host has updated the submission queue to learn when and how the host updates the submission queue.

13. The method of claim 11 , wherein:

the learned knowledge is that the host writes a command to the submission queue only after receiving a completion queue message to a previous command; and

the method further comprises polling a next slot in the submission queue until detecting that the new command has been posted to the submission queue.

14. The method of claim 11 , wherein:

the learned knowledge is that the host writes a command to the submission queue only at an initialization phase of the submission queue; and

the method further comprises selecting the command from a memory of the storage system.

15. The method of claim 11 , wherein:

the learned knowledge is that the host writes N number of commands to the submission queue and sends N number of notifications to the storage system; and

the method further comprises reading N number of commands from the submission queue before receiving notification from the host that the host has updated the submission queue.

16. A storage system comprising:

means for selecting a command from a submission queue before the storage system receives notification that the command has been posted in the submission queue, wherein the command is selected based on learned behavior of a host;

means for beginning execution of the command; and

means for determining, after receiving a notification from the host that a new command has been posted to the submission queue, whether the new command is the command being executed.

17. The storage system of claim 16 , wherein the behavior is learned by comparing entries in the submission queue before and after receiving notification from the host that the host has updated the submission queue to learn when and how the host updates the submission queue.

18. The storage system of claim 16 , wherein:

the learned behavior is that the host writes a command to the submission queue only after receiving a completion queue message to a previous command; and

the storage system further comprises means for polling a next slot in the submission queue until detecting that the new command has been posted to the submission queue.

19. The storage system of claim 16 , wherein:

the learned behavior is that the host writes a command to the submission queue only at an initialization phase of the submission queue; and

the storage system further comprises means for selecting the command from a memory of the storage system.

20. The storage system of claim 16 , wherein:

the learned behavior is that the host writes N number of commands to the submission queue and sends N number of notifications to the storage system; and

the storage system further comprises means for reading N number of commands from the submission queue before receiving notification from the host that the host has updated the submission queue.

Assignments (8)
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 25, 2019
From: BENISTY, SHAY
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 048686/0543 →