IP Library Granted Patent US 9,229,855
Granted Patent B2
US 9,229,855 · App. 14/078,302 · Granted Jan 5, 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,229,855
App. No.
14/078,302
Granted
Jan 5, 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 (55)

1. A storage device comprising:

a plurality of non-volatile memory (NVM) blades, wherein each of the NVM blades from the plurality of NVM blades comprises non-volatile memory;

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

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

determine if the first 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,

determine a first target NVM blade from the plurality of NVM blades and a location in the 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 first target NVM blade from the plurality of NVM blades and 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 processing entity coupled to the plurality of NVM blades, wherein the second processing entity is configured to:

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

determine 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,

determine a second target NVM blade from the plurality of NVM blades and a location in the 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 second target NVM blade from the plurality of NVM blades and 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 processing entity and the second processing entity using one or more routing entities.

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 2 , wherein the first processing entity accesses a first location on the same target NVM blade for servicing the first I/O request and the second processing entity 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 a controller board comprises the first processing entity, the second processing entity and a routing entity for routing data between the first processing entity, the second processing entity, and the plurality of NVM blades.

6. The storage device of claim 5 , wherein the first processing entity accesses the first target NVM blade via the routing entity and the second processing entity accesses the second target NVM blade via the routing entity.

7. The storage device of claim 1 , wherein a first controller board comprises the first processing entity and is coupled to the plurality of NVM blades using a first routing entity and a second controller board comprises the second processing entity and is coupled to the plurality of NVM blades using a second routing entity.

8. The storage device of claim 1 , wherein the transmitting of data between the first processing entity and the first target NVM blade and the transmitting of data between the second processing entity 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 processing entity is first received at one or more interfacing entities and forwarded to the first processing entity through a routing entity of a plurality of routing entities.

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

11. A method for storing data, comprising:

receiving, by a first physical processing entity, a first input/output (I/O) request, wherein the first physical processing entity is coupled to a plurality of non-volatile memory (NVM) blades and wherein each of the NVM blades from the plurality of NVM blades comprises non-volatile memory (NVM);

determining, by the first physical processing entity, 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 physical processing entity, a first target NVM blade from the plurality of NVM blades and a location in the first target NVM blade from which first data is to be read, and

requesting and receiving, by the first physical processing entity, 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 physical processing entity, the first target NVM blade from the plurality of NVM blades and the location in the first target NVM blade at which second data is to be stored, and

transmitting, from the first physical processing entity, second data to the first target NVM blade for storing the second data in the first target NVM blade; and

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

determining, by the second physical processing entity, 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, at the second physical processing entity, a second target NVM blade from the plurality of NVM blades and a location in the second target NVM blade from which third data is to be read;

requesting, at the second physical processing entity, 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;

determining, at the second physical processing entity, the second target NVM blade from the plurality of NVM blades and the location in the second target NVM blade at which fourth data is to be stored; and

transmitting, from the second physical processing entity, 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 physical processing entity and the second physical processing entity using one or more routing entities.

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 physical processing entity accesses a first location on the same target NVM blade for servicing the first I/O request and the second physical processing entity accesses the first location on the same target NVM blade for servicing the second I/O request.

15. The method of claim 11 , wherein a controller board comprises the first physical processing entity, the second physical processing entity and a routing entity for routing data between the first physical processing entity, the second physical processing entity, and the plurality of NVM blades.

16. The method of claim 15 , wherein the first physical processing entity accesses the first target NVM blade via the routing entity and the second physical processing entity accesses the second target NVM blade via the routing entity.

17. The method of claim 11 , wherein a first controller board comprises the first physical processing entity and is coupled to the plurality of NVM blades using a first routing entity and a second controller board comprises the second physical processing entity and is coupled to the plurality of NVM blades using a second routing entity.

18. The method of claim 11 , wherein the transmitting of data between the first physical processing entity and the first target NVM blade and the transmitting of data between the second physical processing entity 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 physical processing entity is first received at one or more interfacing entities and forwarded to the first physical processing entity through a routing entity of a plurality of routing entities.

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

Assignments (15)
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 - 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 May 29, 2018
From: SKYERA, LLC
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046726/0328 →
CHANGE OF NAME Recorded May 4, 2015
From: SKYERA, INC.
To: SKYERA, LLC
Reel/Frame 035571/0412 →
RELEASE OF SECURITY INTEREST Recorded Jan 6, 2015
From: DELL PRODUCTS L.P.
To: SKYERA, LLC
Reel/Frame 034742/0069 →
SECURITY INTEREST Recorded Nov 11, 2014
From: SKYERA, INC.
To: WESTERN DIGITAL CAPITAL, INC.
Reel/Frame 034204/0849 →
SECURITY INTEREST Recorded Aug 14, 2014
From: SKYERA, INC.
To: DELL PRODUCTS L.P.
Reel/Frame 033546/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2014
From: DANILAK, RADOSLAV; RADKE, WILLIAM
To: SKYERA, INC.
Reel/Frame 032353/0661 →