IP Library Granted Patent US 8,301,832
Granted Patent B1
US 8,301,832 · App. 13/428,631 · Granted Oct 30, 2012

Storage system with guaranteed read latency

Assignee: DSSD, Inc.
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,301,832
App. No.
13/428,631
Filed
Mar 23, 2012
Granted
Oct 30, 2012
Kind
B1
Art Unit
2187
USPC
711/103
Abstract

A method for writing data to persistent storage. The method includes receiving a first request to write a first datum to persistent storage including NAND dies, identifying a first NAND die in which to write a first copy of the first datum and a second NAND die in which to write a second copy, generating a second request to write the first copy of the first datum to the first NAND die and a third request to write the second copy to the second NAND die, and waiting until the first NAND die and second NAND die not are busy. Based on a determination that the first NAND die and the second NAND die are not busy: issuing the second request to the first NAND die, and issuing the third request to the second NAND die after the second request is complete.

Claims (65)

1. A method for writing data to persistent storage, comprising:

receiving a first request to write a first datum to persistent storage, wherein the persistent storage comprises a plurality of NAND dies;

in response to the first request:

identifying a first NAND die in which to write a first copy of the first datum;

identifying a second NAND die in which to write a second copy of the first datum;

generating a second request to write the first copy of the first datum to the first NAND die;

generating a third request to write the second copy of the first datum to the second NAND die;

waiting until the first NAND die and second NAND die not are busy;

based on a determination that the first NAND die and the second NAND die are not busy:

issuing the second request to the first NAND die; and

issuing the third request to the second NAND die after the second request is complete.

2. The method of claim 1 , further comprising:

receiving a fourth request to read a second datum;

determining that a first copy of the second datum is located on the first NAND die and a second copy of the second datum is located on the second NAND die; and

after the second request is issued to the first NAND die and while the first NAND die is servicing the second request, servicing the fourth request using the second NAND die.

3. The method of claim 1 , wherein data in the first NAND die is mirrored in the second NAND die.

4. The method of claim 1 , wherein a third copy of the first datum is stored in memory, wherein the memory is in a storage module, wherein the storage module comprises a solid state memory module (SSMM), wherein the SSMM comprises the first NAND die, and wherein the first copy of the first datum is obtained using the third copy of the first datum.

5. The method of claim 4 , wherein the third copy of the first datum is removed from the memory after the second request is complete.

6. The method of claim 4 , wherein the memory comprises vaulted memory, and wherein the third copy of the first datum is stored in vaulted memory, wherein contents of the vaulted memory are automatically written to the SSMM in the event of a power failure in the storage module.

7. A system, comprising:

a control module comprising:

an Input/Output module (IOM);

a processor;

a first memory connected to the processor;

a switch fabric, wherein the IOM and the processor are connected to the switch fabric;

a first storage module connected to the control module using the switch fabric and comprising:

a second memory;

a first persistent storage;

a second storage module connected to the control module using the switch fabric and comprising:

a third memory;

a second persistent storage;

wherein the control module is configured to:

receive, from the control module, a first request to write a first datum to persistent storage, wherein the persistent storage comprises the first persistent storage and the second persistent storage;

in response to the first request:

identify a first NAND die in which to write a first copy of the first datum, wherein the first NAND die is located in the first persistent storage;

identify a second NAND die in which to write a second copy of the first datum, wherein the first NAND die is located in the first persistent storage;

generate a second request to write the first copy of the first datum to the first NAND die;

generate a third request to write the second copy of the first datum to the second NAND die;

waiting until the first NAND die and second NAND die are not busy;

based on the determination that the first NAND die and the second NAND die are not busy:

issue the second request to the first NAND die; and

issue the third request to the second NAND die after the second request is complete.

8. The system of claim 7 , wherein the control module is further configured to:

receive a fourth request to read a second datum;

determine that a first copy of the second datum is located on the first NAND die and a second copy of the second datum is located on the second NAND die; and

after the second request is issued to the first NAND die and while the first NAND die is servicing the second request, servicing the fourth request using the second NAND die.

9. The system of claim 8 , wherein the first memory comprises a data structure mapping the first copy of the second datum to a first physical address in the first persistent storage, wherein the control module is configured to use the data structuring to determine that the first copy of the second datum is located on the first NAND die.

10. The system of claim 7 , wherein after serving the second request, the first copy of the first datum is stored in the first NAND die at a first physical address, wherein the first physical address comprises a block ID and a page ID, wherein after serving the third request, the second copy of the first datum is stored in the second NAND die at a second physical address, wherein the second physical address comprises the block ID and the page ID.

11. The system of claim 7 , wherein a third copy of the first datum is stored in the second memory prior to receiving the first request, wherein the first copy of the first datum is obtained using the third copy of the first datum.

12. The system of claim 11 , wherein the second memory comprises vaulted memory, wherein the third copy of the first datum is stored in vaulted memory, and wherein contents of the vaulted memory are automatically written to the first persistent storage in the event of a power failure in the first storage module.

13. The system of claim 7 , wherein the switch fabric implements Peripheral Component Interconnect Express (PCIe) protocol.

14. The system of claim 7 , wherein the first storage module further comprises a storage module controller, wherein the storage module controller is configured to write the first copy of the first datum to the first NAND die.

15. The system of claim 14 , wherein the storage controller is configured to communicate with the processor using Peripheral Component Interconnect Express (PCIe) protocol.

16. The system of claim 7 , wherein the first NAND die is associated with a first write queue and the second NAND die is associated with a second write queue, wherein the second request is stored in the first write queue and the third request is stored in the second write queue.

17. The system of claim 16 , wherein the second NAND die is associated with a read queue, and wherein the fourth request is stored in the read queue.

18. The system of claim 16 , wherein the first write queue and the second write queue are located in the first memory.

19. A method for reading data comprising:

receiving a request to read the data, wherein the request comprises a logical address;

determining a plurality of physical addresses based on the logical address, wherein a first physical address of the plurality of physical addresses comprises a first datum, wherein a second physical address of the plurality of physical addresses comprises a second datum, wherein a third physical address of the plurality of physical addresses comprises parity datum;

identifying the first physical address and the second physical address, wherein the first physical address corresponds to a location on a first NAND die, the second physical address corresponds to a location on a second NAND die, the third physical address corresponds to a location on a third NAND die, wherein the first NAND die and the third NAND die are not busy and the second NAND die is busy;

obtaining the first datum from the first NAND die and the parity datum from the third NAND die;

reconstructing the second datum from the first datum and the parity datum;

combining the first datum and the second datum to obtain the data; and

returning the data to the client.

20. The method of claim 19 , wherein the first NAND die is located in a storage module, wherein the storage module comprises a storage module controller, and wherein obtaining the first datum comprises: sending a Read Physical Data command comprising the first physical address to the storage module controller, wherein the first datum is transferred from the storage module directly to a client memory.

Assignments (11)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
MERGER Recorded Sep 10, 2016
From: DSSD, INC.
To: EMC CORPORATION
Reel/Frame 039694/0912 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2012
From: MOORE, WILLIAM H.; BONWICK, JEFFREY S.
To: DSSD, INC.
Reel/Frame 027928/0510 →