IP Library Granted Patent US 11,836,380
Granted Patent B2
US 11,836,380 · App. 17/304,522 · Granted Dec 5, 2023

NVMe direct virtualization with configurable storage

Inventors: Parag R. Maharana (Dublin, CA); Anirban Ray (Santa Clara, CA); Gurpreet Anand (Pleasanton, CA); Samir Rajadnya (San Jose, CA); Paul Stonelake (Santa Clara, CA); Samir Mittal (Palo Alto, CA)
Assignee: Micron Technology, Inc.
G06F3/0659G06F3/0604G06F3/0622G06F3/0688G06F13/1668G06F13/4282G06F2213/0024
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,836,380
App. No.
17/304,522
Granted
Dec 5, 2023
Kind
B2
Abstract

A processing device, operatively coupled with one or more memory devices, is configured to provide a plurality of virtual memory controllers, partition one or more memory devices into a plurality of physical partitions, and associate each of the plurality of virtual memory controllers with one of the plurality of physical partitions. The processing device further provides a plurality of physical functions, wherein each of the plurality of physical functions corresponds to a different one of the plurality of virtual memory controllers, and presents the plurality of physical functions to a host computing system over a peripheral component interconnect express (PCIe) interface.

Claims (48)

1. A memory system comprising:

one or more memory devices; and

a processing device, operatively coupled with the one or more memory devices, to perform operations comprising:

providing a plurality of virtual memory controllers;

providing a plurality of physical functions, wherein each of the plurality of physical functions corresponds to a different one of the plurality of virtual memory controllers;

partitioning the one or more memory devices into a plurality of physical partitions;

associating each of the plurality of virtual memory controllers with a respective one of the plurality of physical partitions and a respective one of the plurality of physical functions; and

presenting the plurality of physical functions to a host computing system over a peripheral component interconnect express (PCIe) interface to provide access to the plurality of virtual memory controllers and the associated plurality of physical partitions.

2. The memory system of claim 1 , wherein the processing device is to perform operations further comprising:

assigning each of the plurality of virtual memory controllers a respective number of input/output (I/O) queue pairs in the processing device to receive I/O commands from the host computing system, wherein each respective number of I/O queue pairs in the system controller corresponds to a characteristic of an associated one of the plurality of virtual memory controllers.

3. The memory system of claim 1 , wherein each of the plurality of virtual memory controllers to receive and process memory access requests from an assigned virtual machine running on the host computing system, the memory access requests pertaining to an associated portion of the one or more memory devices.

4. The memory system of claim 3 , wherein the processing device is to perform operations further comprising:

determining whether the assigned virtual machine and the memory access request satisfy one or more conditions of an access control policy associated with the plurality of virtual memory controllers; and

responsive to the assigned virtual machine and the memory access request satisfying the one or more conditions of the access control policy, authorizing access to the plurality of virtual memory controllers.

5. The memory system of claim 1 , wherein each of the plurality of physical functions represents a corresponding one of the plurality of virtual memory controllers as a physical memory controller to the host computing system on the PCIe interface.

6. The memory system of claim 1 , wherein each of the plurality of physical functions provides a configuration space for a corresponding one of the plurality of virtual memory controllers, and wherein each configuration space is addressable by knowing a unique bus, device, and function (BDF) number.

7. The memory system of claim 1 , wherein a first physical function of the plurality of physical functions is implemented in a privileged mode and is configured to perform management operations on a remainder of the plurality of physical functions implemented in a normal mode.

8. A method comprising:

providing a plurality of virtual memory controllers;

providing a plurality of physical functions, wherein each of the plurality of physical functions corresponds to a different one of the plurality of virtual memory controllers;

partitioning one or more memory devices into a plurality of physical partitions;

associating each of the plurality of virtual memory controllers with a respective one of the plurality of physical partitions and a respective one of the plurality of physical functions; and

presenting the plurality of physical functions to a host computing system over a peripheral component interconnect express (PCIe) interface to provide access to the plurality of virtual memory controllers and the associated plurality of physical partitions.

9. The method of claim 8 , further comprising:

assigning each of the plurality of virtual memory controllers a respective number of input/output (I/O) queue pairs to receive I/O commands from the host computing system, wherein each respective number of I/O queue pairs in the system controller corresponds to a characteristic of an associated one of the plurality of virtual memory controllers.

10. The method of claim 8 , further comprising:

receiving and processing, by each of the plurality of virtual memory controllers, memory access requests from an assigned virtual machine running on the host computing system, the memory access requests pertaining to an associated portion of the one or more memory devices.

11. The method of claim 10 , further comprising:

comparing the assigned virtual machine and the memory access request to an access control policy associated with the plurality of virtual memory controllers; and

responsive to the assigned virtual machine and the memory access request satisfying one or more conditions of the access control policy, authorizing access to the plurality of virtual memory controllers.

12. The method of claim 8 , wherein each of the plurality of physical functions represents a corresponding one of the plurality of virtual memory controllers as a physical memory controller to the host computing system on the PCIe interface.

13. The method of claim 8 , wherein each of the plurality of physical functions provides a configuration space for a corresponding one of the plurality of virtual memory controllers, and wherein each configuration space is addressable by knowing a unique bus, device, and function (BDF) number.

14. The method of claim 8 , wherein a first physical function of the plurality of physical functions is implemented in a privileged mode and is configured to perform management operations on a remainder of the plurality of physical functions implemented in a normal mode.

15. A non-transitory computer-readable storage medium comprising instructions that, when executed by a processing device, cause the processing device to perform operations comprising:

providing a plurality of virtual memory controllers;

providing a plurality of physical functions, wherein each of the plurality of physical functions corresponds to a different one of the plurality of virtual memory controllers;

partitioning one or more memory devices into a plurality of physical partitions;

associating each of the plurality of virtual memory controllers with a respective one of the plurality of physical partitions and a respective one of the plurality of physical functions; and

presenting the plurality of physical functions to a host computing system over a peripheral component interconnect express (PCIe) interface to provide access to the plurality of virtual memory controllers and the associated plurality of physical partitions.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the instructions cause the processing device to perform operations further comprising:

assigning each of the plurality of virtual memory controllers a respective number of input/output (I/O) queue pairs in the processing device to receive I/O commands from the host computing system, wherein each respective number of I/O queue pairs in the system controller corresponds to a characteristic of an associated one of the plurality of virtual memory controllers.

17. The non-transitory computer-readable storage medium of claim 15 , wherein the instructions cause the processing device to perform operations further comprising:

receiving and processing, by each of the plurality of virtual memory controllers, memory access requests from an assigned virtual machine running on the host computing system, the memory access requests pertaining to an associated portion of the one or more memory devices.

18. The non-transitory computer-readable storage medium of claim 17 , wherein the instructions cause the processing device to perform operations further comprising:

comparing the assigned virtual machine and the memory access request to an access control policy associated with the plurality of virtual memory controllers; and

responsive to the assigned virtual machine and the memory access request satisfying one or more conditions of the access control policy, authorizing access to the plurality of virtual memory controllers.

19. The non-transitory computer-readable storage medium of claim 15 , wherein each of the plurality of physical functions represents a corresponding one of the plurality of virtual memory controllers as a physical memory controller to the host computing system on the PCIe interface.

20. The non-transitory computer-readable storage medium of claim 15 , wherein each of the plurality of physical functions provides a configuration space for a corresponding one of the plurality of virtual memory controllers, and wherein each configuration space is addressable by knowing a unique bus, device, and function (BDF) number.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2021
From: STONELAKE, PAUL; RAY, ANIRBAN; ANAND, GURPREET; RAJADNYA, SAMIR; MITTAL, SAMIR; MAHARANA, PARAG R.
To: MICRON TECHNOLOGY, INC.
Reel/Frame 056632/0527 →
Continuity (3)
Continuation 16355271 · Mar 15, 2019
Provisional Application 62713411 · Aug 1, 2018
Related Publication 20210311665A1 · Oct 7, 2021
Cited By (1)
US 12,321,637