IP Library Granted Patent US 9,507,529
Granted Patent B2
US 9,507,529 · App. 14/961,184 · Granted Nov 29, 2016

Apparatus and method for routing information in a non-volatile memory-based storage device

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,507,529
App. No.
14/961,184
Granted
Nov 29, 2016
Kind
B2
Abstract

Various systems, methods, apparatuses, and computer-readable media for accessing a storage device are described. In certain example embodiments, an active/active fault-tolerant storage device comprising two or more controllers may be implemented. In one aspect, each controller may have two or more processing entities for distributing the processing of the I/O requests. In one embodiment, the configuration of the components, modules and the controller board may be arranged in a manner to enhance heat dissipation, reduce power consumption, spread the power and work load, and reduce latency. In one embodiment, each controller may be coupled to the non-volatile memory (NVM) blades comprising the non-volatile memory (NVM) storage medium. In one example implementation, a standardized protocol, such as the Peripheral Component Interconnect Express protocol may be used for communicating amongst the various components of the controller and also the NVM storage medium.

Claims (58)

1. A storage device comprising:

a plurality of non-volatile memory (NVM) blades, each NVM blade comprising non-volatile memory;

a first processor coupled to the plurality of NVM blades, wherein the first processor is configured to:

receive a first input/output (I/O) request;

determine if the first I/O request is a first read request or a first write request;

in response to determining that the first I/O request is a first read request,

determine a location in a first target NVM blade from which first data is to be read;

request and receive the first data associated with the first I/O request from the first target NVM blade; and

in response to determining that the first I/O request is a first write request;

determine the location in the first target NVM blade at which second data is to be stored;

transmit second data to the first target NVM blade for storing the second data in the first target NVM blade; and

a second processor coupled to the plurality of NVM blades, wherein the second processor is configured to:

receive a second I/O request;

determine if the second I/O request is a second read request or a second write request;

in response to determining that the second I/O request is a second read request,

determine a location in a second target NVM blade from which third data is to be read; and

request and receive the third data associated with the second I/O request from the second target NVM blade; and

in response to determining that the second I/O request is a second write request;

determine the location in the second target NVM blade at which fourth data is to be stored; and

transmit fourth data to the second target NVM blade for storing the fourth data in the second target NVM blade.

2. The storage device of claim 1 , wherein the plurality of NVM blades are coupled to the first processor and the second processor using at least one router.

3. The storage device of claim 1 , wherein the first target NVM blade and the second target NVM blade are a same target NVM blade.

4. The storage device of claim 3 , wherein the first processor accesses a first location on the same target NVM blade for servicing the first I/O request and the second processor accesses the first location on the same target NVM blade for servicing the second I/O request.

5. The storage device of claim 1 , wherein the first processor, the second processor and a router are mounted on a controller board, and wherein data between the first processor, the second processor, and the plurality of NVM blades is routed through the router.

6. The storage device of claim 1 , wherein the first processor is at least one of a first Application Specific Integrated Circuit (ASIC) and a first Field Programmable Gate Array (FPGA) and the second processor is at least one of a second ASIC and a second FPGA.

7. The storage device of claim 1 , further comprising:

a first controller board, wherein the first processor and a first router are mounted on the first controller board and wherein the first processor is coupled to the plurality of NVM blades via the first router; and

a second controller board, wherein the second processor and a second router are mounted on the second controller board and wherein the second processor is coupled to the plurality of NVM blades using the second router.

8. The storage device of claim 1 , wherein the transmitting of data between the first processor and the first target NVM blade and the transmitting of data between the second processor and the second target NVM blade is performed using Peripheral Component Interconnect Express (PCIe) protocol.

9. The storage device of claim 1 , wherein the first I/O request received by the first processor is first received at one or more interface chips and forwarded to the first processor through a router of a plurality of routers.

10. The storage device of claim 1 , wherein at least one of the NVM blades comprises a NAND flash memory.

11. A method for storing data, comprising:

receiving, by a first processor, a first input/output (I/O) request, wherein the first processor is coupled to a plurality of non-volatile memory (NVM) blades, each NVM blade comprising non-volatile memory (NVM);

determining, by the first processor, if the I/O request is a first read or a first write request;

in response to determining that the first I/O request is a first read request,

determining, by the first processor, a location in a first target NVM blade from which first data is to be read, and

requesting and receiving, by the first processor, the first data associated with the first I/O request from the first target NVM blade; and

in response to determining that the first I/O request is a first write request,

determining, by the first processor, the location in the first target NVM blade at which second data is to be stored, and

transmitting, by the first processor, second data to the first target NVM blade for storing the second data in the first target NVM blade; and

receiving, by a second processor, a second input/output (I/O) request, wherein the second processor is coupled to the plurality of NVM blades;

determining, by the second processor, if the second I/O request is a second read or a second write request;

in response to determining that the second I/O request is a second read request,

determining, by the second processor, a location in a second target NVM blade from which third data is to be read;

requesting and receive, by the second processor, the third data associated with the second I/O request from the second target NVM blade; and

in response to determining that the second I/O request is a second write request;

determining, by the second processor, the location in the second target NVM blade at which fourth data is to be stored; and

transmitting, by the second processor, fourth data to the second target NVM blade for storing the fourth data in the second target NVM blade.

12. The method of claim 11 , wherein the plurality of NVM blades are coupled to the first processor and the second processor using one or more routers.

13. The method of claim 11 , wherein the first target NVM blade and the second target NVM blade are a same target NVM blade.

14. The method of claim 13 , wherein the first processor accesses a first location on the same target NVM blade for servicing the first I/O request and the second processor accesses the first location on the same target NVM blade for servicing the second I/O request.

15. The method of claim 11 , wherein the first processor, the second processor and a router are mounted on a controller board, and wherein data between the first processor, the second processor, and the plurality of NVM blades is routed through the router.

16. The method of claim 15 , wherein the first processor is at least one of a first Application Specific Integrated Circuit (ASIC) and a first Field Programmable Gate Array (FPGA) and the second processor is at least one of a second ASIC and a second FPGA.

17. The method of claim 11 , wherein the first processor and a first router are mounted on a first controller board and wherein the first processor is coupled to the plurality of NVM blades via the first router; and

wherein the second processor and a second router are mounted on a second controller board and wherein the second processor is coupled to the plurality of NVM blades using the second router.

18. The method of claim 11 , wherein the transmitting of data between the first processor and the first target NVM blade and the transmitting of data between the second processor and the second target NVM blade is performed using Peripheral Component Interconnect Express (PCIe) protocol.

19. The method of claim 11 , wherein the first I/O request received by the first processor is first received at one or more interface chips and forwarded to the first processor through a router of a plurality of routers.

20. The method of claim 11 , wherein at least one of the NVM blades includes a NAND flash memory.

Assignments (12)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
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 - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
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 →
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 May 29, 2018
From: SKYERA, LLC
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046726/0328 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 28, 2015
From: DANILAK, RADOSLAV; RADKE, WILLIAM
To: SKYERA, INC.
Reel/Frame 037363/0562 →
CHANGE OF NAME Recorded Dec 28, 2015
From: SKYERA, INC.
To: SKYERA, LLC
Reel/Frame 037393/0629 →