IP Library Granted Patent US 9,256,384
Granted Patent B2
US 9,256,384 · App. 13/758,853 · Granted Feb 9, 2016

Method and system for reducing write latency in a data storage system by using a command-push model

Inventors: Luca Bert (Cumming, GA); Anant Baderdinni (Lawrenceville, GA); Horia Simionescu (Foster City, CA); Mark Ish (Sandy Springs, GA)
Assignee: Avago Technologies General IP (Singapore) Pte. Ltd.
G06F3/0679G06F13/28G06F13/38
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,256,384
App. No.
13/758,853
Granted
Feb 9, 2016
Kind
B2
Abstract

A data storage system is provided that implements a command-push model that reduces latencies. The host system has access to a nonvolatile memory (NVM) device of the memory controller to allow the host system to push commands into a command queue located in the NVM device. The host system completes each IO without the need for intervention from the memory controller, thereby obviating the need for synchronization, or handshaking, between the host system and the memory controller. For write commands, the memory controller does not need to issue a completion interrupt to the host system upon completion of the command because the host system considers the write command completed at the time that the write command is pushed into the queue of the memory controller. The combination of all of these features results in a large reduction in overall latency.

Claims (36)

1. A data storage system comprising:

a host system comprising a system processor and a system memory device;

a memory controller comprising a controller processor, a nonvolatile memory (NVM) device and an input/output (I/O) interface device, wherein a portion of the NVM device is used as a command queue;

at least one solid state drive (SSD) connected to the I/O interface device, wherein said at least one SSD is configured as an array of physical disk drives (PDs); and

a bus interconnecting the host system with the memory controller, wherein the host system accesses the NVM device via the bus and pushes commands into the command queue of the NVM device via the bus.

2. The data storage system of claim 1 , wherein the system processor executes a memory driver program that accesses the NVM device via the bus and pushes the commands into the command queue of the NVM device via the bus.

3. The data storage system of claim 1 , wherein the memory controller further comprises a direct memory access (DMA) engine that directly accesses the NVM device, and wherein the system processor executes a memory driver program that pushes the commands to the DMA engine via the bus, and wherein the DMA engine stores the commands in the command queue of the NVM device.

4. The data storage system of claim 1 , wherein the host system notifies the memory controller when a command has been pushed into the command queue of the NVM device.

5. The data storage system of claim 2 , wherein the host system and the NVM device use a same command and data structure.

6. The data storage system of claim 5 , wherein the bus is a peripheral interconnect express (PCIe) bus, and wherein the memory driver program accesses the NVM device by using base address registers (BARs) of the PCIe bus.

7. A memory controller comprising:

an input/output (I/O) interface device, wherein a portion of the NVM device is used as a command queue;

at least one solid state drive (SSD) connected to the I/O interface device, wherein said at least one SSD is configured as an array of physical disk drives (PDs);

a controller processor; and

a nonvolatile memory (NVM) device, a portion of the NVM device being allocated as a command queue, wherein the NVM device is configured to be accessed by a host system via a bus that interconnects the host system with the memory controller, wherein the NVM device is configured to allow the host system to push commands into the command queue of the NVM device via the bus.

8. The memory controller of claim 7 , wherein the NVM device is accessed by the host system via a memory driver program being executed by a processor of the host system, and wherein the bus is a peripheral interconnect express (PCIe) bus, and wherein the NVM device is accessible by the memory driver program through base address registers (BARs) of the PCIe bus.

9. The memory controller of claim 7 , wherein the memory controller further comprises:

a direct memory access (DMA) engine that communicates with the host system via the bus and that communicates directly with the NVM device, and wherein the DMA engine is accessed by the host system via the bus, and the DMA engine receives commands pushed to the DMA engine by the memory driver program and stores the commands in the command queue of the NVM device.

10. The memory controller of claim 8 , wherein the NVM device uses a same command and data structure as the host system.

11. A method for reducing latency in a data storage system, the method comprising:

in a memory controller comprising a controller processor, a nonvolatile memory (NVM) device and an input/output (I/O) interface device connected to at least one solid state drive (SSD) configured as an array of physical disk drives (PDs), configuring a portion of the NVM device as a command queue;

with a host system interconnected with the memory controller via a bus, pushing a command into the memory controller via the bus; and

in the memory controller, storing the command in the command queue of the NVM device.

12. The method of claim 11 , wherein a system processor of the host system executes a memory driver program that accesses the NVM device via the bus and pushes the commands into the command queue of the NVM device via the bus.

13. The method of claim 11 , wherein the memory controller further comprises a direct memory access (DMA) engine, and wherein a system processor of the host system executes a memory driver program that pushes commands from the host system to the DMA engine via the bus, and wherein the DMA engine stores the commands into the command queue of the NVM device via the bus.

14. The method of claim 12 , further comprising:

wherein the host system notifies the memory controller when a command has been pushed into the command queue of the NVM device.

15. The method of claim 12 , wherein the host system and the NVM device use a same command and data structure.

16. The method of claim 15 , wherein the bus is a peripheral interconnect express (PCIe) bus, and wherein the memory driver program accesses the NVM device by using base address registers (BARs) of the PCIe bus.

17. A non-transitory computer-readable medium having a computer program stored thereon for execution by a processor of a host system for pushing commands into a command queue of a non-volatile memory (NVM) device of a memory controller that is connected to the host system via a bus, the computer program comprising:

a first code portion for receiving a command to read or write one or more addresses of a solid state drive (SSD) configured as an array of physical disk drives (PDs); and

a second code portion for pushing the command into the memory controller.

18. The non-transitory computer-readable medium of claim 17 , wherein the second code portion pushes the command into the command queue of the NVM device, and wherein the computer program further comprises:

a third code portion for notifying a processor of the memory controller when the command has been pushed into the command queue of the NVM device of the memory controller.

19. The non-transitory computer-readable medium of claim 17 , wherein the second code portion pushes the command into a direct memory access (DMA) engine of the memory controller, wherein the DMA engine is directly connected to the NVM device to allow the DMA engine to store the command in the command queue, and wherein the computer program further comprises:

a third code portion for notifying a processor of the memory controller when the command has been pushed into the command queue of the NVM device of the memory controller.

Assignments (8)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2015
From: LSI CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035390/0388 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 5, 2013
From: BERT, LUCA; SIMIONESCU, HORIA; BADERDINNI, ANANT; ISH, MARK
To: LSI CORPORATION
Reel/Frame 029754/0639 →
Continuity (1)
Related Publication 20140223071A1 · Aug 7, 2014