IP Library Granted Patent US 9,575,669
Granted Patent B2
US 9,575,669 · App. 14/564,829 · Granted Feb 21, 2017

Programmable solid state drive controller and method for scheduling commands utilizing a data structure

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 9,575,669
App. No.
14/564,829
Granted
Feb 21, 2017
Kind
B2
Abstract

A memory controller and method for scheduling commands in a memory controller are disclosed. A programmable solid state drive (SSD) controller and a non-volatile memory apparatus are provided. Data structures, termed “Superbufs” are utilized for organizing internal activities in the SSD controller. Each data structure can comprise a host command area, a command area, and a notes or scratch pad area. A memory controller can be configured to, upon receiving a host command, copy the original received host command into the host command area of a first data structure, generate a first command group, copy the first command group into the command area, and execute commands of the first command group. A data structure can be initialized to an idle state, and can transition to other states such as a new command received state, a read for execution state, a command group complete state and an error state.

Claims (49)

1. A method for scheduling commands in a memory controller, the method comprising:

providing, by the memory controller, a plurality of data structures, each data structure comprising:

a host command area;

a command area; and

a notes area;

receiving, by the memory controller, a host command from a host in communication with the memory controller;

copying, by the memory controller, the received host command into the host command area of a first data structure;

generating, by the memory controller, a first command group in response to the received host command, wherein the first command group comprises at least one command for execution by an execution unit of the memory controller;

copying, by the memory controller, the first command group into the command area of the first data structure; and

executing, by the execution unit of the memory controller, the at least one command of the first command group.

2. The method of claim 1 , wherein the first command group comprises a first plurality of commands; and

wherein the execution unit of the memory controller executes the first plurality of commands of the first command group in parallel.

3. The method of claim 2 , further comprising:

generating, by the memory controller, a second command group in response to the received host command, wherein the second command group comprises a second plurality of commands for execution by the execution unit of the memory controller; and

copying, by the memory controller, the second command group into the command area of the first data structure;

wherein the execution unit of the memory controller executes the second plurality of commands after the first plurality of commands of the first command group has finished being executed.

4. The method of claim 2 , wherein a first command group of a second data structure comprises a third plurality of commands; and

wherein the execution unit of the memory controller executes the first plurality of commands of the first command group of the first data structure in parallel with the third plurality of commands of the first command group of the second data structure.

5. The method of claim 1 , further comprising initializing the first data structure to an idle state.

6. The method of claim 5 , further comprising transitioning the first data structure from the idle state to a new command received state when the host command is received.

7. The method of claim 6 , further comprising transitioning the first data structure from the new command received state to a ready for execution state when the first command group is copied into the command area of the first data structure.

8. The method of claim 7 , further comprising transitioning the first data structure from the ready for execution state to a first command group complete state when the at least one command of the first command group is executed.

9. The method of claim 8 , further comprising transitioning the first data structure to an error state when the execution unit of the memory controller cannot execute the at least one command of the first command group.

10. The method of claim 9 , further comprising initializing a second data structure when the execution unit of the memory controller cannot execute the at least one command of the first command group.

11. A memory controller comprising:

a controller module configured to:

provide a plurality of data structures, each data structure comprising:

a host command area;

a command area; and

a notes area;

receive a host command from a host in communication with the memory controller;

copy the received host command into the host command area of a first data structure;

generate a first command group in response to the received host command, wherein the first command group comprises at least one command for execution; and

copy the first command group into the command area of the first data structure; and;

an execution unit configured to execute the at least one command of the first command group.

12. The memory controller of claim 11 , wherein the first command group comprises a first plurality of commands; and

wherein the execution unit of the memory controller is further configured to execute the first plurality of commands of the first command group in parallel.

13. The memory controller of claim 12 , wherein the controller module of the memory controller is further configured to:

generate a second command group in response to the received host command, wherein the second command group comprises a second plurality of commands for execution by the execution unit of the memory controller; and

copy the second command group into the command area of the first data structure; and

wherein the execution unit of the memory controller is further configured to execute the second plurality of commands after the first plurality of commands of the first command group has finished being executed.

14. The memory controller of claim 12 , wherein a first command group of a second data structure comprises a third plurality of commands; and

wherein the execution unit of the memory controller is further configured to execute the first plurality of commands of the first command group of the first data structure in parallel with the third plurality of commands of the first command group of the second data structure.

15. The memory controller of claim 11 , wherein the controller module of the memory controller is further configured to initialize the first data structure to an idle state.

16. The memory controller of claim 15 , wherein the controller module of the memory controller is further configured to transition the first data structure from the idle state to a new command received state when the host command is received.

17. The memory controller of claim 16 , wherein the controller module of the memory controller is further configured to transition the first data structure from the new command received state to a ready for execution state when the first command group is copied into the command area of the first data structure.

18. The memory controller of claim 17 , wherein the controller module of the memory controller is further configured to transition the first data structure from the ready for execution state to a first command group complete state when the at least one command of the first command group is executed.

19. The memory controller of claim 18 , wherein the controller module of the memory controller is further configured to transition the first data structure to an error state when the execution unit of the memory controller cannot execute the at least one command of the first command group.

20. The memory controller of claim 19 , wherein the controller module of the memory controller is further configured to initialize a second data structure when the execution unit of the memory controller cannot execute the at least one command of the at least one first command group.

Assignments (8)
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 Jan 4, 2017
From: SINGHAI, ASHISH; OKIN, KENNETH ALAN
To: HGST NETHERLANDS B.V.
Reel/Frame 040840/0720 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 6, 2016
From: HGST NETHERLANDS B.V.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 040829/0516 →