IP Library Granted Patent US 11,487,434
Granted Patent B2
US 11,487,434 · App. 17/069,663 · Granted Nov 1, 2022

Data storage device and method for adaptive command completion posting

Inventor: Shay Benisty (Beer Sheva, IL)
Assignee: Western Digital Technologies, Inc.
G06F3/0611G06F3/0659G06F3/0688G06F13/1642G06F13/20
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,487,434
App. No.
17/069,663
Granted
Nov 1, 2022
Kind
B2
Abstract

Systems and methods for dynamic and adaptive interrupt coalescing are disclosed. NVM Express (NVMe) implements a paired submission queue and completion queue mechanism, with host software on the host device placing commands into the submission queue. The memory device notifies the host device, via an interrupt, of entries on the completion queue. Responsive to receiving the interrupt, the host device access the completion queue to access entries placed by the memory device therein. The host device may take a certain amount of time to service the interrupt resulting in host latency. Given knowledge of the host latency, the memory device time the sending of the interrupt so that, given the host latency, the memory device may post the entry to the completion queue in a timely manner.

Claims (69)

1. A data storage device, comprising:

a memory; and

a controller configured to cause:

in response to a first request, from a first device, to read a queue in the data storage device, responding to the first device within a first response time period; and

in response to receiving a second request from the first device to read the queue in the data storage device, responding to the first device within a second response time period,

wherein:

the queue is configured to be indicative of execution of at least a command;

the first device is different from the data storage device;

the second request is different from the first request;

the second response time period is different from the first response time period; and

the controller is configured to cause in response to receiving the second request from the first device, determining whether to delay responding to the second request based on anticipated activity in the queue, wherein the anticipated activity comprises updating the queue with a second entry, within a predetermined time period of entering the second entry, wherein the second entry is indicative of completion of a second command.

2. The data storage device of claim 1 , wherein the second response time period is longer than the first response time period.

3. The data storage device of claim 1 , wherein the second response time period is based on a predetermined time period after an entry into the queue.

4. The data storage device of claim 1 , wherein the controller is configured to cause:

in response to determining to delay responding, delaying responding to the second request until after the controller performs the anticipated activity in the queue.

5. The data storage device of claim 1 , wherein the controller is configured to cause:

sending an interrupt to the first device, to cause the first device to access a given entry posted to the queue regarding completion of a given command.

6. The data storage device of claim 1 , wherein the controller is configured to cause:

sending an interrupt to the first device, the interrupt indicative to the first device to send the second request to read the queue.

7. The data storage device of claim 1 , wherein:

the queue is a completion queue;

the data storage device is configured to comprise the completion queue and a sequential queue;

the data storage device is configured to cause one or more commands, upon one or more requests from the first device, to be stored on the sequential queue for execution by the data storage device; and

the controller is configured to cause:

responsive to the one or more requests of the first device causing the one or more commands to be stored on the sequential queue, fetching the one or more commands stored on the sequential queue;

commencing execution of the one or more fetched commands; and

sending an interrupt to the first device prior to completing execution of the one or more fetched commands.

8. The data storage device of claim 7 , wherein the controller is configured to cause: determining whether to delay responding to the one or more requests based on determining that the one or more fetched commands have begun execution but have not completed execution.

9. A method, comprising:

in response to a first request, from a first device, to read a queue in a data storage device, responding to the first device within a first response time period; and

in response to receiving a second request from the first device to read the queue in the data storage device, responding to the first device within a second response time period,

wherein:

the queue is configured to be indicative of execution of at least a command;

the first device is different from the data storage device;

the second request is different from the first request; and

the second response time period is different from the first response time period, and

wherein the method comprises:

in response to receiving the second request from the first device, determining whether to delay responding to the second request based on anticipated activity in the queue, wherein the anticipated activity comprises updating the queue with a second entry, within a predetermined time period of entering the second entry, wherein the second entry is indicative of completion of a second command.

10. The method of claim 9 , wherein the second response time period is longer than the first response time period.

11. The method of claim 9 , wherein the second response time period is based on a predetermined time period after an entry into the queue.

12. The method of claim 9 , comprising:

in response to determining to delay responding, delaying responding to the second request until after the anticipated activity is performed in the queue.

13. The method of claim 9 , comprising:

sending an interrupt to the first device, to cause the first device to access a given entry posted to the queue regarding completion of a given command.

14. The method of claim 9 , comprising:

sending an interrupt to the first device, the interrupt indicative to the first device to send the second request to read the queue.

15. The method of claim 9 , wherein:

the queue is a completion queue;

the data storage device is configured to comprise the completion queue and a sequential queue;

the data storage device is configured to cause one or more commands, upon one or more requests from the first device, to be stored on the sequential queue for execution by the data storage device; and

the method comprises:

responsive to the one or more requests from the first device causing the one or more commands to be stored on the sequential queue, fetching the one or more commands stored on the sequential queue;

commencing execution of the one or more fetched commands; and

sending an interrupt to the first device prior to completing execution of the one or more fetched commands.

16. The method of claim 15 , comprising: determining whether to delay responding to the one or more requests based on determining that the one or more fetched commands have begun execution but have not completed execution.

17. An apparatus, comprising:

in response to a first request, from a first device, to read a queue in a data storage device, means for responding to the first device within a first response time period; and

in response to receiving a second request from the first device to read the queue in the data storage device, means for responding to the first device within a second response time period,

wherein:

the queue is configured to be indicative of execution of at least a command;

the first device is different from the data storage device;

the second request is different from the first request; and

the second response time period is different from the first response time period, and

wherein the apparatus comprises:

in response to receiving the second request from the first device, means for determining whether to delay responding to the second request based on anticipated activity in the queue, wherein the anticipated activity comprises updating the queue with a second entry, within a predetermined time period of entering the second entry, wherein the second entry is indicative of completion of a second command.

18. The apparatus of claim 17 , wherein the second response time period is longer than the first response time period.

19. The apparatus of claim 17 , wherein the second response time period is based on a predetermined time period after an entry into the queue, wherein the queue is indicative of completion of execution of the second command.

20. The apparatus of claim 17 , comprising:

in response to determining to delay responding, means for delaying responding to the second request until after the anticipated activity is performed in the queue.

Assignments (10)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
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 →
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 054475 FRAME 0421 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058966/0358 →
SECURITY INTEREST Recorded Nov 18, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 054475/0421 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2020
From: BENISTY, SHAY
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 054353/0258 →
Continuity (4)
Continuation 16455644 · Jun 27, 2019
Division 15602874 · May 23, 2017
Continuation In Part 15468620 · Mar 24, 2017
Related Publication 20210042039A1 · Feb 11, 2021