IP Library Granted Patent US 8,396,995
Granted Patent B2
US 8,396,995 · App. 13/599,594 · Granted Mar 12, 2013

Memory controllers, memory systems, solid state drives and methods for processing a number of commands

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 8,396,995
App. No.
13/599,594
Granted
Mar 12, 2013
Kind
B2
Abstract

The present disclosure includes methods and devices for a memory controller. In one or more embodiments, a memory controller includes a plurality of back end channels, and a command queue communicatively coupled to the plurality of back end channels. The command queue is configured to hold host commands received from a host. Circuitry is configured to generate a number of back end commands at least in response to a number of the host commands in the command queue, and distribute the number of back end commands to a number of the plurality of back end channels.

Claims (30)

1. A memory controller, comprising:

a plurality of back end channels; and

a front end command dispatcher communicatively coupled to the plurality of back end channels and a command queue configured to hold a number of write commands,

wherein the command dispatcher is configured to determine a net change to memory to be accomplished by the number of write commands, and to modify one or more of the number of write commands in order to optimize distribution of the number of write commands among the plurality of back end channels.

2. The memory controller of claim 1 , wherein the command dispatcher is configured to modify the one or more of the number of write commands in order to optimize distribution only when the plurality of back end channels are busy.

3. The memory controller of claim 1 , wherein the command dispatcher is configured to not distribute one of the number of write commands from the command queue without changing the determined net change to memory by the number of write commands.

4. The memory controller of claim 3 , wherein the command dispatcher is configured to modify a memory range associated with a first write command in the command queue to include a portion of the memory range of a second write command in the command queue, and thereafter not distribute the second write command from the command queue without changing the determined net change to memory by the number of write commands.

5. The memory controller of claim 1 , wherein the number of write commands are received in the command queue in an initial order, and the command dispatcher is configured to change an order of the number of write commands in the command queue from the initial order to a changed order.

6. The memory controller of claim 5 , wherein the command dispatcher is configured to distribute commands according to the changed order of the number of write commands in the command queue rather than according to the initial order.

7. The memory controller of claim 1 , wherein the command dispatcher is configured to modify at least one of the number of write commands in the command queue by combining commands to overlapping memory locations.

8. The memory controller of claim 7 , wherein the command dispatcher is configured to change an order of the number of write commands in the command queue to a changed order in response to at least one of the number of write commands being modified.

9. The memory controller of claim 7 , wherein the command dispatcher is configured to not distribute a write command determined to involve a number of memory locations that will be overwritten by a write command to be subsequently-executed in the command queue.

10. The memory controller of claim 7 , wherein the command dispatcher is configured to not execute a write command determined to involve the number of memory locations that will be overwritten by a subsequently-executed write command without an intervening read operation involving the number of memory locations.

11. The memory controller of claim 7 , wherein the command dispatcher is configured to group multiple write commands into a single write command.

12. The memory controller of claim 11 , wherein the command dispatcher is configured to determine that at least two write commands are a same operation involving logically adjacent memory locations, and combine the at least two write commands into a single write command involving the logically adjacent memory locations.

13. The memory controller of claim 11 , wherein the command dispatcher is configured to determine that at least two write commands are a same operation involving logically overlapping memory locations, and combine the at least two write commands into a single write command involving the logically overlapping memory locations.

14. The memory controller of claim 1 , wherein the payload associated with a particular write command is distributed among more than one of the plurality of back end channels, and the command dispatcher is configured to distribute the particular write command to each of the more than one of the plurality of back end channels.

15. The memory controller of claim 14 , wherein the command dispatcher is configured to determine an associated logical block address and sector count for a portion of the payload associated with each of the more than one of the plurality of back end channels, and modify the particular write command distributed to a respective back end channel with the logical block address and sector count for the associated portion of the payload.

16. The memory controller of claim 1 , wherein the command dispatcher is configured to modify write commands in the command queue during a time when the command dispatcher is prevented from distributing commands to the plurality of back end channels.

17. A memory controller, comprising:

a plurality of back end channels; and

a front end command dispatcher communicatively coupled to the plurality of back end channels and a command queue configured to hold a number of write commands,

wherein the command dispatcher is configured to determine a net write to memory to be accomplished by the number of write commands, and to provide write commands to accomplish the net write among the plurality of back end channels using fewer than the number of write commands.

18. The memory controller of claim 17 , wherein the front end command dispatcher is configured to delete one or more of the number of write commands that involves a portion of memory that is subsequently overwritten by other of the one or more of the number of write commands without a corresponding modification of remaining one or more of the number of write commands.

19. The memory controller of claim 17 , wherein the front end command dispatcher is configured to delete one or more of the number of write commands and modify another of the one or more of the number of write commands to accomplish a write of the deleted one or more of the number of write commands.

20. A memory controller, comprising:

a plurality of back end channels, each back end channel corresponding to a different memory device;

a command queue configured to hold a number of write commands; and

a front end command dispatcher communicatively coupled to the plurality of back end channels and the command queue,

wherein the command dispatcher includes a command processor portion configured to determine a net write to memory to be accomplished by the number of write commands, and to delete and/or modify one or more of the number of write commands in order to reduce a quantity of write commands distributed among the plurality of back end channels.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Nov 12, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
Reel/Frame 051028/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050937/0001 →
RELEASE OF SECURITY INTEREST Recorded Aug 23, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 047243/0001 →
SECURITY INTEREST Recorded Jul 13, 2018
From: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 047540/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Jun 8, 2017
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 043079/0001 →
PATENT SECURITY AGREEMENT Recorded Jun 2, 2016
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 038954/0001 →
SECURITY INTEREST Recorded May 12, 2016
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038669/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 30, 2012
From: ASNAASHARI, MEHDI; LIAO, YU-SONG; YANG, JUI-YAO; NEMAZIE, SIAMACK
To: MICRON TECHNOLOGY, INC.
Reel/Frame 028877/0493 →