IP Library Granted Patent US 11,392,320
Granted Patent B2
US 11,392,320 · App. 16/903,054 · Granted Jul 19, 2022

Quality of service based arbitrations optimized for enterprise solid state drives

Inventor: Shay Benisty (Beer Sheva, IL)
Assignee: WESTERN DIGITAL TECHNOLOGIES, INC.
G06F3/0659G06F3/0611G06F3/0673G06F9/30101G06F9/321G06F9/3855
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,392,320
App. No.
16/903,054
Granted
Jul 19, 2022
Kind
B2
Abstract

A method and apparatus for providing accurate command aging in a data storage device. A host provides multiple doorbell requests for the same command queue and a timestamp is saved for each request. When the storage device fetches the commands associated with the requests, the commands are all given the value of the timestamp associated with the requests and placed into the command queue and the aging algorithm of the storage device ages the commands. In an alternate embodiment, the commands may be assigned timestamps based on statistical values such as an average value, between the first and last doorbell request timestamps.

Claims (110)

1. A data storage device comprising:

one or more memory devices; and

a controller comprising a first timestamp register and a command queue, wherein the controller is configured to:

place the command queue in a non-command fetching mode, wherein the command queue includes one or more pending commands;

receive a notification of a first command from a host; and

record a first timestamp in the first timestamp register corresponding to a time of receipt of the notification of the first command, wherein the first timestamp is attached to the first command and a subsequently received command, and wherein the subsequently received command is received after the command queue is transitioned from the non-command fetching mode to a command fetching mode.

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

place the command queue in the command fetching mode;

receive the first command;

attach the first timestamp to the first command in the command queue; and

set a priority of the first command based on an age of the first timestamp.

3. The data storage device of claim 1 , wherein the controller further comprises a command counter, and wherein:

receiving the first command comprises receiving a plurality of commands; and

recording the first timestamp comprises:

recording the first timestamp in the first timestamp register corresponding to a time of receipt of each one of the plurality of commands; and

incrementing the command counter for each respective one of the plurality of commands.

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

attach the first timestamp to each respective one of the plurality of commands; and

set a priority of each command of the plurality of commands based on an age of each respective one of the plurality of commands.

5. The data storage device of claim 3 , wherein the controller further comprises a second timestamp register, wherein the controller is further configured to:

set the second timestamp register at a second time;

attach the first timestamp to a first group of the plurality of commands;

attach the second timestamp to a second group of the plurality of commands; and

set a priority of each command of the plurality of commands based on the attached first timestamp and second timestamp of each command of the plurality of commands.

6. The data storage device of claim 3 , wherein the controller further comprises a second timestamp register, and wherein the controller is further configured to:

set the second timestamp register at a second timestamp;

set a plurality of timestamp values from the first timestamp to the second timestamp;

set each command of the plurality of commands to one of the plurality of timestamp values; and

set a priority of each command of the plurality of commands based on each respective one of the plurality of timestamp values of each command of the plurality of commands.

7. A data storage device comprising:

one or more memory devices; and

a controller comprising a first timestamp register, a command queue, a command counter, and a second timestamp register, wherein the controller is configured to:

place the data storage device in a non-command fetching mode;

receive a first command from a host;

record a first timestamp in the first timestamp register corresponding to a time of receipt of the first command;

wherein:

receiving the first command comprises receiving a plurality of commands; and

recording the first timestamp comprises:

recording the first timestamp in the first timestamp register corresponding to a time of receipt of each one of the plurality of commands; and

incrementing the command counter for each respective one of the plurality of commands;

set the second timestamp register at a second timestamp;

generate an average timestamp time based on the first timestamp and second timestamp;

attach one of the first timestamp, the second timestamp, and the average timestamp to each respective one of the plurality of commands; and

set a priority of each command of the plurality of commands based on the respective first timestamp, second timestamp, and average timestamp attached to each command of the plurality of commands.

8. The data storage device of claim 7 , wherein the controller is further configured to attach the average timestamp to a first command of the plurality of commands that is not the first command to arrive.

9. The data storage device of claim 8 , wherein the controller is further configured to attach the second timestamp to a second command of the plurality of commands that arrives last.

10. A data storage device, comprising:

a host I/O;

a memory I/O coupling a controller to one or more memories;

a first timestamp register; and

a command queue, wherein the command queue includes one or more pending commands, and wherein the controller is configured to:

place the data storage device in an idle mode;

receive a notification of a first command from a host; and

generate a first timestamp in the first timestamp register corresponding to a time of receipt of the notification, wherein the first timestamp is attached to the first command and a subsequently received command, and wherein the subsequently received command is received after the command queue is taken out of the idle mode.

11. The data storage device of claim 10 , wherein the controller is further configured to:

take the data storage device out of the idle mode;

fetch a first command from the host, corresponding to the notification;

obtain the first timestamp from the first timestamp register;

attach the first timestamp to the first command; and

prioritize the first command based on an age of the first timestamp to a first priority.

12. The data storage device of claim 10 , wherein the controller further comprises a command counter, and wherein:

receiving the notification comprises receiving a plurality of notifications from the host, each notification being associated with at least one command;

generating the first timestamp comprises generating a plurality of timestamps in the timestamp register, each timestamp of the plurality of timestamps corresponding to a time receipt of each respective one of the plurality of notifications; and

incrementing the command counter for each command of each respective one of the plurality of notifications.

13. The data storage device of claim 12 , wherein the controller is further configured to:

attach each one of the plurality of timestamps to each command of every respective one of the notifications;

prioritize each command based on an age of each respective one of the plurality of timestamps;

fetch each command from the host; and

execute each command based on the prioritizing.

14. The data storage device of claim 12 , wherein the controller further comprises a second timestamp register, and wherein the controller is further configured to:

set the second timestamp register at a second time;

set the first timestamp to a first group of the plurality of commands;

set the second timestamp to a second group of the plurality of commands;

prioritize each command of the plurality of commands based on the first timestamp and second timestamp of each command;

fetch each command from the host; and

execute each command based on the prioritizing.

15. The data storage device of claim 12 , wherein the controller further comprises a second timestamp register, and wherein the controller is further configured to:

generate a second timestamp for the second timestamp register at a second timestamp;

provide a plurality of timestamps between the first timestamp and the second timestamp;

assign each notification of the plurality of notifications to one of the plurality of timestamps; and

prioritize each command associated with each respective one of the plurality of notifications based on the plurality of timestamps.

16. A data storage device, comprising:

a host I/O;

a memory I/O coupling a controller to one or more memories;

a first timestamp register;

a command queue; and

a command counter, wherein the controller is configured to:

place the data storage device in an idle mode;

receive a first doorbell request from a host, wherein receiving the first doorbell requests comprises receiving a plurality of doorbell requests, each doorbell request comprising at least one command;

generate a first timestamp in the first timestamp register corresponding to a time of receipt of the first doorbell request, wherein generating the first timestamp comprises generating a plurality of timestamps in the timestamp register, each timestamp of the plurality of timestamps corresponding to a time receipt of each respective one of the plurality of doorbell requests;

increment the command counter for each command of each respective one of the plurality of doorbell requests;

generate a second timestamp for the second timestamp register;

calculate an average timestamp based on the first timestamp and second timestamp;

provide, for each respective one of the plurality of commands, one of the first timestamp, the second timestamp, and the average timestamp; and

prioritize each command of the plurality of commands based on one of the provided first timestamp, second timestamp, and average timestamp, provided to each command.

17. The data storage device of claim 16 , wherein the controller is further configured to provide the average timestamp to at least one command of the plurality of commands that is not the first command.

18. The data storage device of claim 16 , wherein the controller is further configured to provide the second timestamp to at least one command of the plurality of commands that is not the first command.

19. A data storage device, comprising:

a memory means; and

a controller coupled to the memory means, the controller comprising:

a first timestamp register; and

a command queue, wherein the command queue includes one or more pending commands, and wherein the controller is configured to:

place the data storage device in a non-command fetching mode;

receive a notification of a first command from a host; and

record a first timestamp in the first timestamp register corresponding to a time of receipt of the notification, wherein the first timestamp is attached to the first command and a subsequently received command, and wherein the subsequently received command is received after the command queue is transitioned from the non-command fetching mode to a command fetching mode.

20. The data storage device of claim 19 , wherein the controller is further configured to:

place the data storage device in the command fetching mode;

receive the first command;

attach the first timestamp to the first command; and

set a priority of the first command based on an age of the first timestamp.

Assignments (10)
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 →
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 053926 FRAME 0446 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058966/0321 →
SECURITY INTEREST Recorded Sep 29, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 053926/0446 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2020
From: BENISTY, SHAY
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 052967/0229 →
Continuity (2)
Continuation In Part 16026965 · Jul 3, 2018
Related Publication 20200326890A1 · Oct 15, 2020