NVM express controller for remote access of memory and I/O over ethernet-type networks
First Claim
Patent Images
1. An extended Non-Volatile Memory Express (NVMe) controller device, comprising:
- a host interface adapted to couple the extended NVMe controller to a host processor;
a direct network interface adapted to couple the extended NVMe controller to an external network, the direct network interface having a plurality of local ports connecting to the external network;
hardware logic configured to receive from the host processor NVMe commands directed to a remote namespace with remote non-volatile memory that is coupled to the external network, and to convert the NVMe commands to a format suitable for transmission over the external network to a remote extended NVMe controller coupled to the remote namespace, wherein the converted NVMe commands are passed to the direct network interface to be transmitted over the external network;
a local storage interface adapted to couple the extended NVMe controller to a local namespace for a local non-volatile memory via a plurality of memory channels of the local non-volatile memory;
wherein the hardware logic is further configured to assign each memory channel to one of the plurality of local ports of the direct network interface;
wherein the remote extended NVMe controller includes a remote direct network interface having a plurality of destination ports connecting to the external network, and the hardware logic is further configured to assign each memory channel to one of the plurality of destination ports; and
wherein the hardware logic is further configured to be able to reassign the plurality of memory channels to the plurality of local ports of the extended NVMe controller and to reassign the plurality of memory channels to the plurality of destination ports of the remote extended NVMe controller.
3 Assignments
0 Petitions
Accused Products
Abstract
A method and system for enabling Non-Volatile Memory express (NVMe) for accessing remote solid state drives (SSDs) (or other types of remote non-volatile memory) over the Ethernet or other networks. An extended NVMe controller is provided for enabling CPU to access remote non-volatile memory using NVMe protocol. The extended NVMe controller is implemented on one server for communication with other servers or non-volatile memory via Ethernet switch. The NVMe protocol is used over the Ethernet or similar networks by modifying it to provide a special NVM-over-Ethernet frame.
84 Citations
22 Claims
-
1. An extended Non-Volatile Memory Express (NVMe) controller device, comprising:
-
a host interface adapted to couple the extended NVMe controller to a host processor; a direct network interface adapted to couple the extended NVMe controller to an external network, the direct network interface having a plurality of local ports connecting to the external network; hardware logic configured to receive from the host processor NVMe commands directed to a remote namespace with remote non-volatile memory that is coupled to the external network, and to convert the NVMe commands to a format suitable for transmission over the external network to a remote extended NVMe controller coupled to the remote namespace, wherein the converted NVMe commands are passed to the direct network interface to be transmitted over the external network; a local storage interface adapted to couple the extended NVMe controller to a local namespace for a local non-volatile memory via a plurality of memory channels of the local non-volatile memory; wherein the hardware logic is further configured to assign each memory channel to one of the plurality of local ports of the direct network interface; wherein the remote extended NVMe controller includes a remote direct network interface having a plurality of destination ports connecting to the external network, and the hardware logic is further configured to assign each memory channel to one of the plurality of destination ports; and wherein the hardware logic is further configured to be able to reassign the plurality of memory channels to the plurality of local ports of the extended NVMe controller and to reassign the plurality of memory channels to the plurality of destination ports of the remote extended NVMe controller. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computer-implemented method in an extended Non-Volatile Memory Express (NVMe) controller device for load balancing, comprising:
-
receiving from a host processor, NVMe commands directed to a remote namespace for a remote non-volatile memory coupled to an external network via a remote direct network interface, the extended NVMe controller also coupled to the external network via a local direct network interface; retrieving data indicated in the NVMe commands from a plurality of memory channels of a local non-volatile memory of a local namespace; assigning each of the memory channels to one of a plurality of local ports of the local direct network interface, wherein the memory channels are reassignable to the plurality of local ports; assigning each of the memory channels to one of a plurality of destination ports of the remote direct network interface, wherein the memory channels are reassignable to the plurality of destination ports; converting the received NVMe commands to a format suitable for transmission over the external network a remote extended NVMe controller coupled to the remote namespace; and transmitting the converted NVMe commands including the data over the external network to the remote extended NVMe controller, said transmission using the local ports and destination ports assigned to the memory channels for the converted NVMe commands. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22)
-
Specification