IP Library Granted Patent US 11,061,721
Granted Patent B2
US 11,061,721 · App. 16/504,848 · Granted Jul 13, 2021

Task queues

Inventor: Yoram Rimoni (Haifa, IL)
Assignee: WESTERN DIGITAL TECHNOLOGIES, INC.
G06F9/4881G06F3/061G06F3/0601G06F3/0659G06F3/0679G06F3/0688G06F9/5011G06F9/5016G06F9/5038G06F9/5044G06F2209/5021
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,061,721
App. No.
16/504,848
Granted
Jul 13, 2021
Kind
B2
Abstract

A data storage device may be configured to use multiple task queues to schedule tasks. The multiple task queues may be configured based on an architecture of the data storage device. In some implementations, the multiple task queues may be used to organize tasks received from an access device. In other implementations, the multiple task queues may be used to identify tasks, and identification of the tasks may be associated with an order of execution of the tasks.

Claims (86)

1. A data storage device configured to be coupled to an access device, comprising:

a non-volatile memory; and

a controller connected to the non-volatile memory, wherein the controller comprises:

a controller memory configured to store instructions;

a task scheduler module within the controller; and

a processor connected to the controller memory,

the controller configured to:

determine multiple task queues based on one or more architectural aspects of the memory, the controller, or a combination thereof,

receive a plurality of tasks, each task comprising an instruction, a command, or a request from the access device,

assign a particular task of the plurality of tasks into one of the multiple task queues based upon a protocol type of the particular task,

select a first queue of the multiple task queues within the task scheduler module based on a selection scheme,

identify a first task to be processed from the first queue,

select a second queue of the multiple task queues based on the selection scheme, and

identify a second task to be processed from the second queue after the first task is identified,

wherein the multiple task queues comprises a plurality of protocol-based queues,

wherein the selection scheme comprises selecting based on a weight value, wherein the selection scheme further comprises alternating between the first queue and a set of queues, the set of queues comprising the second queue, a third queue, and a fourth queue, and wherein the selection scheme is cyclical with respect to the set of queues,

wherein the weight value is a number of tasks that may be concurrently executed or consecutively selected, and

wherein the one or more architectural aspects comprises a number of dies in the memory, a width of a data bus coupled to the memory and the controller, a size of a data buffer in the controller, or a combination thereof.

2. The data storage device according to claim 1 , further comprising:

an execution module within the controller, wherein the execution module is configured to read one of the first task and the second task and execute the one of the first task and the second task.

3. The data storage device according to claim 1 , further comprising:

a data buffer within the controller, the data buffer configured to store user data and allow for retrieval of the user data.

4. The data storage device according to claim 1 , wherein the controller memory further comprises:

an arrangement to store the selection scheme to indicate an order in which the task queues are selected.

5. The data storage device according to claim 1 , wherein the task scheduler module further comprises:

a queue that comprises the second queue, the third queue, and the fourth queue.

6. The data storage device according to claim 5 , wherein the task scheduler module further comprises:

a task assignment module connected to the controller memory, wherein the task assignment module is configured to assign tasks to the first queue and the set of queues.

7. The data storage device according to claim 6 , wherein the task assignment module is further configured with a parse module.

8. A data storage device configured to be coupled to an access device, comprising:

a non-volatile memory with at least two memory dies and a first interface; and

a controller with a second interface, the controller connected to the non-volatile memory through the first interface and the second interface, wherein the controller comprises:

a controller memory configured to store instructions;

a task scheduler module within the controller; and

a processor connected to the controller memory,

the controller configured to:

determine multiple task queues based on one or more architectural aspects of the memory, the controller, or a combination thereof,

receive a plurality of tasks, each task comprising an instruction, a command, or a request from the access device,

assign a particular task of the plurality of tasks into one of the multiple task queues based upon a protocol type of the particular task,

select a first queue of the multiple task queues within the task scheduler module based on a selection scheme,

identify a first task to be processed from the first queue,

select a second queue of the multiple task queues based on the selection scheme, and

identify a second task to be processed from the second queue after the first task is identified,

wherein the multiple task queues comprises a plurality of protocol-based queues,

wherein the selection scheme comprises selecting based on a weight value, wherein the selection scheme further comprises alternating between the first queue and a set of queues, the set of queues comprising the second queue, a third queue, and a fourth queue, and wherein the selection scheme is cyclical with respect to the set of queues,

wherein the weight value is a number of tasks that may be concurrently executed or consecutively selected, and

wherein the one or more architectural aspects comprises a number of dies in the memory, a width of a data bus coupled to the memory and the controller, a size of a data buffer in the controller, or a combination thereof.

9. The data storage device according to claim 8 , wherein the controller further comprises:

an execution module configured to read one of the first task and the second task and execute the one of the first task and the second task.

10. The data storage device according to claim 8 , wherein the controller further comprises:

a data buffer configured to store user data and allow for retrieval of the user data.

11. The data storage device according to claim 8 , wherein the controller memory is further comprises:

an arrangement to store the selection scheme to indicate an order in which the task queues are selected.

12. The data storage device according to claim 8 , wherein the task scheduler module further comprises:

a queue that comprises the second queue, the third queue, and the fourth queue.

13. The data storage device according to claim 12 , wherein the task scheduler module further comprises:

a task assignment module connected to the controller memory, wherein the task assignment module is configured to assign tasks to the first queue and the set of queues.

14. The data storage device according to claim 13 , wherein the task assignment module is further configured with a parse module.

15. A data storage device configured to be coupled to an access device, comprising:

an access device interface configured to allow a connection of an access device to the data storage device to allow data to be transferred to and from the data storage device;

a non-volatile memory configured to store data, the non-volatile memory configured with at least two memory dies and a first interface; and

a controller with a second interface, the controller connected to the non-volatile memory through the first interface and the second interface, wherein the controller comprises:

a controller memory configured to store instructions;

a task scheduler module within the controller; and

a processor connected to the controller memory,

the controller configured to:

determine multiple task queues based on one or more architectural aspects of the memory, the controller, or a combination thereof,

receive a plurality of tasks, each task comprising an instruction, a command, or a request from the access device,

assign a particular task of the plurality of tasks into one of the multiple task queues based upon a protocol type of the particular task,

select a first queue of the multiple task queues within the task scheduler module based on a selection scheme,

identify a first task to be processed from the first queue,

select a second queue of the multiple task queues based on the selection scheme, and

identify a second task to be processed from the second queue after the first task is identified,

wherein the multiple task queues comprises a plurality of protocol-based queues,

wherein the selection scheme comprises selecting based on a weight value, wherein the selection scheme further comprises alternating between the first queue and a set of queues, the set of queues comprising the second queue, a third queue, and a fourth queue, and wherein the selection scheme is cyclical with respect to the set of queues,

wherein the weight value is a number of tasks that may be concurrently executed or consecutively selected, and

wherein the one or more architectural aspects comprises a number of dies in the memory, a width of a data bus coupled to the memory and the controller, a size of a data buffer in the controller, or a combination thereof.

16. The data storage device, according to claim 15 , wherein the non-volatile memory further comprises:

circuitry for conducting read operations and write operations.

17. The data storage device according to claim 16 , wherein the task scheduler module further comprises:

a task assignment module connected to the controller memory, wherein the task assignment module is configured to assign tasks to the first queue and the set of queues.

18. The data storage device according to claim 17 , wherein the task assignment module is further configured with a parse module.

19. The data storage device according to claim 15 , wherein the controller further comprises:

an execution module configured to read one of the first task and the second task and execute the one of the first task and the second task.

20. The data storage device according to claim 15 , wherein the controller further comprises:

a counter configured to indicate a number of tasks selected for execution.

Assignments (12)
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 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 Jul 8, 2019
From: SANDISK TECHNOLOGIES LLC
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 049692/0963 →
CHANGE OF NAME Recorded Jul 8, 2019
From: SANDISK TECHNOLOGIES INC.
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 049695/0199 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 8, 2019
From: RIMONI, YORAM
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 050695/0910 →