IP Library Granted Patent US 12705000
Granted Patent B2
US 12705000 · App. 18/909,057 · Granted Aug 11, 2026

Data storage device and method for maintaining a weightage of commands in a plurality of queue layers

Inventors: Dinesh Kumar Agarwal (Bangalore, IN); Amit Sharma (Bangalore, IN)
Assignee: Sandisk Technologies, Inc.
G06F3/0659G06F3/0613G06F3/0679
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 12705000
App. No.
18/909,057
Granted
Aug 11, 2026
Kind
B2
Abstract

A data storage device and method are disclosed for maintaining a weightage of commands in a plurality of queue layers. In one embodiment, a data storage device is provided comprising a non-volatile memory and a plurality of queues. The data storage device determines whether commands received from a plurality of applications in a host can be stored in the plurality of queues according to a defined weightage. If the commands cannot be stored according to the defined weightage, feedback can be provided to a previous queue level and/or to the host to take corrective action. Other embodiments are provided.

Claims (29)

1 . A data storage device comprising:

a host interface configured to communicate with a host;

a non-volatile memory;

a plurality of queues comprising a first queue and a second queue; and

one or more processors, individually or in combination, configured to:

receive, via the host interface, commands received from a plurality of applications in the host;

store, in the first queue, the commands received from the plurality of applications in the host to access the non-volatile memory, wherein the commands are stored in the first queue according to a defined weightage among the plurality of applications;

determine whether the commands can be transferred from the first queue and stored in the second queue according to the defined weightage;

in response to determining that the commands cannot be transferred from the first queue and stored in the second queue according to the defined weightage, select at least one additional command from at least one of the plurality of applications for storage in the second queue so that the defined weightage is maintained;

determine whether the defined weightage is maintained in a last queue of the plurality of queues;

in response to determining that the defined weightage is not maintained in the last queue, send feedback to the host to take a corrective action, wherein the corrective action comprises changing a weightage for storing commands in the first queue so that the defined weightage is maintained in the last queue, reducing a fragmentation range for at least one of the plurality of applications, causing at least one of the plurality of applications to align data to increase parallelism, or changing a command length; and

after taking the corrective action, execute commands stored in the last queue in parallel in the non-volatile memory.

2 . The data storage device of claim 1 , wherein a queue interface for the first queue is exposed to the host.

3 . The data storage device of claim 1 , wherein the plurality of queues comprises a die queue and a plane queue.

4 . The data storage device of claim 1 , wherein the memory comprises a plurality of memory dies.

5 . The data storage device of claim 1 , wherein the memory comprises a three-dimensional memory.

6 . A method comprising:

performing in a data storage device comprising a non-volatile memory, a plurality of queues comprising a first queue and a second queue, and a host interface configured to communicate with a host:

receiving, via the host interface, commands received from a plurality of applications in the host;

storing, in the first queue, the commands received from the plurality of applications in the host to access the non-volatile memory, wherein the commands are stored in the first queue according to a defined weightage among the plurality of applications;

determining whether the commands can be transferred from the first queue and stored in the second queue according to the defined weightage;

in response to determining that the commands cannot be transferred from the first queue and stored in the second queue according to the defined weightage, selecting at least one additional command from at least one of the plurality of applications for storage in the second queue so that the defined weightage is maintained;

determining whether the defined weightage is maintained in a last queue of the plurality of queues;

in response to determining that the defined weightage is not maintained in the last queue, sending feedback to the host to take a corrective action, wherein the corrective action comprises changing a weightage for storing commands in the first queue so that the defined weightage is maintained in the last queue, reducing a fragmentation range for at least one of the plurality of applications, causing at least one of the plurality of applications to align data to increase parallelism, or changing a command length; and

after taking the corrective action, executing commands stored in the last queue in parallel in the non-volatile memory.

7 . The method of claim 6 , wherein a queue interface for the first queue is exposed to the host.

8 . The method of claim 6 , wherein the plurality of queues comprises a die queue and a plane queue.

9 . The method of claim 6 , wherein the memory comprises a plurality of memory dies.

10 . The method of claim 6 , wherein the memory comprises a three-dimensional memory.