IP Library › Granted Patent US 11,768,783
Granted Patent B2
US 11,768,783 · App. 17/750,523 · Granted Sep 26, 2023

Local non-volatile memory express virtualization device

Inventors: Vadim Makhervaks (Bellevue, WA); Aaron William Ogus (Woodinville, WA); Jason David Adrian (Woodinville, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F13/1673G06F9/45558G06F12/0284G06F13/4022G06F2009/45583G06F2213/0026
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 11,768,783
App. No.
17/750,523
Granted
Sep 26, 2023
Kind
B2
Abstract

A server system is provided that includes one or more compute nodes that include at least one processor and a host memory device. The server system further includes a plurality of solid-state drive (SSD) devices, a local non-volatile memory express virtualization (LNV) device, and a non-transparent (NT) switch for a peripheral component interconnect express (PCIe) bus that interconnects the plurality of SSD devices and the LNV device to the at least one processor of each compute node. The LNV device is configured to virtualize hardware resources of the plurality of SSD devices. The plurality of SSD devices are configured to directly access data buffers of the host memory device. The NT switch is configured to hide the plurality of SSD devices such that the plurality of SSD devices are not visible to the at least one processor of each compute node.

Claims (71)

1. A server system comprising:

a compute node configured to run host software, the compute node including a processor and a host memory device;

a local non-volatile memory express virtualization (LNV) device configured to virtualize one or more solid-state drive (SSD) devices and present a virtual SSD device to the compute node; and

a non-transparent (NT) switch for a peripheral component interconnect express (PCIe) bus, the NT switch configured to:

interconnect the one or more SSD devices and the LNV device to the at least one processor of each compute node;

permit access, by the one or more SSD devices, to a data buffer of the host memory device through the NT switch, thereby bypassing the LNV device; and

hide the one or more SSD devices from the processor of the compute node.

2. The server system of claim 1 , wherein the LNV device is configured to:

access a non-volatile memory express (NVMe) command and a physical region page entry (PRP) stored in the host memory device of the compute node;

generate a backend NVMe command and a backend PRP based on the accessed NVMe command and PRP from the host memory device of the compute node; and

store the backend NVMe command and the backend PRP in a backend memory device that is separate from the host memory device of the compute node.

3. The server system of claim 2 , wherein

the LNV device is configured to cause a target SSD device of the one or more SSD devices to access the at least one backend NVMe command and the backend PRP in the backend memory device; and

the target SSD device is configured to bypass the LNV device to access a data buffer of the host memory device through the NT switch based on the backend NVMe command and the backend PRP.

4. The server system of claim 3 , wherein the NT switch is configured to:

identify a PCIe transaction for the target SSD device accessing data buffers of the host memory device; and

remap a requester identifier (RID) of the PCIe transaction from an RID of the target SSD device to an RID of the LNV device.

5. The server system of claim 1 , wherein the compute node is configured to host virtual machines (VM), each VM having associated VM memory; and

wherein the LNV device is configured to:

access a non-volatile memory express (NVMe) and a physical region page entry (PRP) stored in the VM memory of one of the VMs;

generate a backend NVMe command and a backend PRP based on the accessed NVMe command and PRP from the VM memory of the one of the VMs; and

store the backend NVMe command and the backend PRP in a backend memory device that is separate from the host memory device of the compute node.

6. The server system of claim 5 , wherein the LNV device is configured to:

translate a guest physical address (GPA) of the PRP from the VM memory to a corresponding host physical address (HPA) in the host memory device that hosts the VM memory; and

generate the backend PRP to indicate the corresponding HPA for data buffers of the host memory device.

7. The server system of claim 6 , wherein

the LNV device is configured to cause the target SSD device to access the backend NVMe command and the backend PRP in the backend memory device, and

the target SSD device is configured to bypass the LNV device to access data buffers of the host memory device hosting the VM memory through the NT switch based on the backend NVMe command and the backend PRP using the translated corresponding HPA.

8. The server system of claim 5 , wherein:

the host software of the compute node and each VM have respective local address ranges,

the LNV device is configured to manage a global address space and map the respective local address ranges to respective global address ranges in the global address space such that the respective local address ranges do not overlap in the global address space, and

the LNV device is configured to map a GPA indicated by the accessed PRP from the local address range of the one of the VMs to a corresponding GPA of the corresponding global address range in the global address space, and generate the at least one backend PRP to indicate the corresponding GPA of the global address range.

9. The server system of claim 8 , wherein the NT switch is configured to map each global address range to both an egress port of the NT switch that routes to a compute node associated with that global address range, and a local address range that corresponds to that global address range.

10. A method comprising:

virtualizing one or more solid-state drive (SSD) devices;

presenting a virtual SSD device to host software of a compute node using a local non-volatile memory express virtualization (LNV) device;

permitting access, by the one or more SSD devices, to a data buffer of a host memory device of the compute node through a non-transparent (NT) switch for a peripheral component interconnect express (PCIe) bus, thereby bypassing the LNV device; and

hiding the one or more SSD devices from a processor of the compute node.

11. The method of claim 10 , further comprising:

accessing a non-volatile memory express (NVMe) command and a physical region page entry (PRP) stored in the host memory device of the compute node;

generating a backend NVMe command and a backend PRP based on the accessed NVMe command and PRP from the host memory device of the compute node; and

storing the backend NVMe command and the backend PRP in a backend memory device that is separate from the host memory device of the compute node.

12. The method of claim 11 , further comprising:

causing a target SSD device to access the backend NVMe command and the backend PRP in the backend memory device; and

bypassing, by the target SSD, the LNV device to access data buffer of the host memory device based on the backend NVMe command and the backend PRP.

13. The method of claim 12 , further comprising:

identifying a PCIe transaction for the target SSD device accessing data buffers of the host memory device; and

remapping a requester identifier (RID) of the PCIe transaction from an RID of the target SSD device to an RID of the LNV device.

14. The method of claim 10 , further comprising:

hosting virtual machines (VM) on the compute node, each VM having associated VM memory;

accessing a non-volatile memory express (NVMe) and a physical region page entry (PRP) stored in the VM memory of one of the VMs;

generating a backend NVMe command and a backend PRP based on the accessed NVMe command and PRP from the VM memory of the one of the VMs; and

storing the backend NVMe command and the backend PRP in a backend memory device that is separate from the host memory device of the compute node.

15. The method of claim 14 , further comprising:

translating a guest physical address (GPA) of the PRP from the VM memory to a corresponding host physical address (HPA) in the host memory device that hosts the VM memory; and

generating the backend PRP to indicate the corresponding HPA for data buffers of the host memory device.

16. The method of claim 15 , further comprising:

causing the target SSD device to access the backend NVMe command and the backend PRP in the backend memory device; and

bypassing, by the target SSD, the LNV device to access data buffers of the host memory device hosting the VM memory through the NT switch based on the backend NVMe command and the backend PRP using the translated corresponding HPA.

17. The method of claim 14 , wherein the host software of the compute node and each VM have respective local address ranges, and the method further comprises:

managing a global address space and mapping the respective local address ranges to respective global address ranges in the global address space such that the respective local address ranges do not overlap in the global address space;

mapping a GPA indicated by the accessed PRP from the local address range of the one of the VMs to a corresponding GPA of the corresponding global address range in the global address space; and

generating the at least one backend PRP to indicate the corresponding GPA of the global address range.

18. The method of claim 17 , further comprising mapping each global address range to both an egress port of the NT switch that routes to a compute node associated with that global address range, and a local address range that corresponds to that global address range.

19. A server system comprising:

one or more compute nodes configured to run host software, each compute node including at least one processor and a host memory device;

a local non-volatile memory express virtualization (LNV) device that includes a logical non-transparent (NT) switch that interconnects the LNV device to one or more SSD devices and the at least one processor of each compute node; wherein

the LNV device is configured to virtualize the one or more SSD devices and present a virtual SSD device to the host software of the one or more compute nodes; wherein

the logical NT switch is configured to permit access, by the one or more SSD devices, to a data buffer of the host memory device, thereby bypassing the LNV device; and wherein

the logical NT switch is configured to hide the one or more SSD devices from a processor of a compute node.

20. The server system of claim 19 , wherein the LNV device is configured to encrypt data accessed from data buffers of the host memory device of each compute node.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 23, 2022
From: MAKHERVAKS, VADIM; OGUS, AARON WILLIAM; ADRIAN, JASON DAVID
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 059979/0823 →
Continuity (2)
Continuation 16868285 · May 6, 2020
Related Publication 20220283967A1 · Sep 8, 2022