IP Library › Granted Patent US 10,528,267
Granted Patent B2
US 10,528,267 · App. 15/637,298 · Granted Jan 7, 2020

Command queue for storage operations

Inventors: Nidhi Batra (Delhi, IN); Ravindra Arjun Madpur (Bangalore, IN); Amandeep Kaur (Bangalore, IN)
Assignee: SanDisk Technologies LLC
G06F3/0611G06F3/0659G06F3/0688
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 10,528,267
App. No.
15/637,298
Granted
Jan 7, 2020
Kind
B2
Abstract

Apparatuses, systems, methods, and computer program products are disclosed for queueing commands for storage operations. An apparatus includes a command queue configured to queue storage commands received at a storage device and a controller for the storage device. A controller is configured to receive a storage command on a first port of a storage device. A controller is configured to queue a received storage command as an entry in a command queue. An entry in a command queue indicates a type of a received storage command. A controller is configured to service a received storage command from a command queue on a second port of a storage device based on a type of the received storage command indicated by an entry in the command queue associated with the received storage command.

Claims (42)

1. An apparatus comprising:

a command queue configured to queue storage commands received at a storage device; and

a controller for the storage device, the controller configured to:

receive a storage command on a first port of the storage device;

queue the received storage command as an entry in the command queue, the entry in the command queue indicating a type of the received storage command; and

service the received storage command from the command queue on a second port of the storage device based on the type of the received storage command indicated by the entry in the command queue associated with the received storage command,

wherein the entry of the command queue comprises a flag indicating the type of the received storage command and the controller is configured to set flags for a plurality of entries in the command queue each to a same default value prior to queueing the received storage command in the command queue, the default value representing a predefined type of storage command.

2. The apparatus of claim 1 , wherein the controller is configured to reset the flag for the entry of the command queue to the default value in response to the storage command being serviced, the predefined type of the default value comprising one of a read type and a write type of storage command, such that the flag comprises a single bit.

3. The apparatus of claim 1 , wherein the controller is configured to determine whether the storage command is queued in the command queue based on current positions of an input pointer for an input stage of the command queue and an output pointer for an output stage of the command queue.

4. The apparatus of claim 3 , wherein an entry at the output stage indicated by the current position of the output pointer indicates that:

a read command is queued in response to the current positions of the input pointer and the output pointer pointing at different entries and the entry at the output stage indicating a read type;

a write command is queued in response to the current positions of the input pointer and the output pointer pointing at different entries and the entry at the output stage indicating a write type; and

no command is queued for servicing in response to the current positions of the input pointer and the output pointer pointing at the same entry.

5. The apparatus of claim 1 , wherein the controller is configured to receive the storage command at an input stage of the command queue, the input stage of the command queue referenced by an input pointer.

6. The apparatus of claim 5 , wherein the controller is configured to increment the input pointer to a subsequent input stage of the command queue in response to queuing the received storage command in the command queue.

7. The apparatus of claim 1 , wherein the controller is configured to service a storage command from the command queue at an output stage of the command queue, the output stage of the command queue referenced by an output pointer.

8. The apparatus of claim 7 , wherein the controller is configured to increment the output pointer to a subsequent output stage of the command queue in response to servicing the storage command referenced by the output pointer.

9. The apparatus of claim 8 , wherein the controller is configured to increment the output pointer in response to detecting a pulse generated by an end of burst signal associated with the storage command that was serviced, the pulse indicating that servicing the storage command is complete.

10. The apparatus of claim 1 , wherein the controller is configured to enable one or more input/output lines of the second port associated with a queued storage command in response to one of:

an input pointer for the input stage being in the same position as an output pointer for the output stage prior to queuing the storage command; and

the input pointer for the input stage being in a different position as the output pointer for the output stage after incrementing the output pointer for the output stage.

11. The apparatus of claim 10 , wherein the controller is configured to:

enable one or more input/output lines of the second port for servicing a read command and disable one or more input/output lines of the second port for servicing a write command in response to the queued storage command comprising a read command; and

enable one or more input/output lines of the second port for servicing a write command and disable one or more input/output lines of the second port for servicing a read command in response to the queued storage command comprising a write command.

12. The apparatus of claim 10 , wherein the controller is configured to reset one or more input/output lines associated with the second port in response to servicing the queued storage command and the input pointer for the input stage being in the same position as the output pointer for the output stage after incrementing the output pointer for the output stage.

13. The apparatus of claim 1 , wherein the command queue comprises a one-bit data latch associated with the entry, the data latch indicating the type of the received storage command.

14. An apparatus comprising:

means for determining a type of storage command received at an input stage of a command queue for a memory element;

means for setting a flag in the command queue, the flag indicating the type of the received storage command, the command queue storing flags indicating types of a plurality of storage commands that are received at the input stage of the command queue, the plurality of storage commands including the received storage command;

means for tracking an execution order for the plurality of storage commands such that the storage commands execute in a first-in first-out order at an output stage of the command queue; and

means for setting each of the stored flags in the command queue to a same default value prior to queueing the storage commands in the command queue, the default value associated with a predefined type of storage command.

15. The apparatus of claim 14 , further comprising means for tracking a location in the command queue for the storage command received at the input stage of the command queue.

16. The apparatus of claim 14 , further comprising means for determining whether a storage command is queued for servicing in the command queue based on a current location of a queue input tracker for the input stage of the command queue and a current location of a queue output tracker for the output stage of the command queue.

17. The apparatus of claim 16 , wherein one of the flags indicates that:

a read command is queued in response to the queue input tracker and the queue output tracker indicating different locations and the one of the flags having a value different than the default value;

a write command is queued in response to the queue input tracker and the queue output tracker indicating different locations and the one of the flags having a value that is the same as the default value; and

no command is queued in response to the queue input tracker and the queue output tracker indicating the same location.

18. A method comprising:

receiving read and write storage commands for a memory die;

queuing both the read and write storage commands in a single command queue for the memory die, the read and write storage commands distinguished from each other in the single command queue by a flag value and distinguished from an empty single command queue by an input pointer and an output pointer pointing to a same position in the single command queue;

setting flag values for a plurality of entries in the single command queue each to a same default value prior to queueing the received read and write storage commands in the single command queue, the default value representing a predefined type of storage command; and

executing the read and write storage commands from the single command queue based on the values of the flag and the input and output pointers.

Assignments (4)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2018
From: BATRA, NIDHI; MADPUR, RAVINDRA ARJUN; KAUR, AMANDEEP
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 045947/0013 →
Priority Claims (1)
IN 201641038622 · Nov 11, 2016 · national
Continuity (2)
Continuation In Part 15365944 · Nov 30, 2016
Related Publication 20180136851A1 · May 17, 2018
Cited By (4)
US 12,253,943 US 12,277,056 US 12,300,349 US 12,639,236