IP Library › Granted Patent US 10,379,745
Granted Patent B2
US 10,379,745 · App. 15/298,053 · Granted Aug 13, 2019

Simultaneous kernel mode and user mode access to a device using the NVMe interface

Inventors: Konstantin Vyshetsky (San Jose, CA); Carlos Olle Francisco (Santa Clara, CA); Manoj Guthula (Los Altos, CA)
Assignee: SAMSUNG ELECTRONICS CO., LTD.
G06F3/061G06F3/0659G06F3/0679G06F3/0688G06F13/4282G06F2213/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 10,379,745
App. No.
15/298,053
Granted
Aug 13, 2019
Kind
B2
Abstract

A system and method of enabling simultaneous kernel mode access and user mode access to an NVMe device using the NVMe interface are disclosed. The method includes creating a first set of queue(s) by at least reserving a first range of memory addresses in the kernel space; providing a location address and size of the first set of queues to a controller of the NVMe device; receiving a request for user mode access from a user application process running on the host computer system; and performing the following in response to receiving the request for user mode access: creating a second set of queue(s) by at least reserving a second range of memory addresses mapped for use by the user application process, and providing a location address and size of the second set of queues to the user application process and the controller of the NVMe device.

Claims (61)

1. A method of enabling simultaneous kernel mode access and user mode access by a host computer system to a non-volatile memory express (NVMe) device using the NVMe interface, the host computer system includes a host memory space divided into at least a kernel space having a block I/O layer and a plurality of user spaces, the method comprises:

providing kernel mode access to an NVMe device by:

creating a first set of one or more queues by at least reserving a first range of memory addresses in the kernel space;

providing a location address and size of the first set of queues to a controller of the NVMe device; and

simultaneously providing user mode access to the controller of the NVMe device in response to receiving a request for user mode access from a user application process running on the host computer system by:

creating a second set of one or more queues by at least reserving a second range of memory addresses mapped for use by the user application process, and

providing a location address and size of the second set of queues to the user application process and the controller of the NVMe device;

such that the NVMe device is able to communicate with an application process via the first set of queues or the second set of queues, the second set of queues bypassing the block I/O layer of the kernel space.

2. The method of claim 1 , wherein:

the first set of queues includes at least an administrative submission queue and an administrative completion queue, and

each set of the first and second sets of queues includes at least an input/output (I/O) submission queue and an I/O completion queue.

3. The method of claim 2 , wherein user mode access from the user application process includes performing I/O operations on the NVMe device while bypassing a block I/O layer in the kernel space.

4. The method of claim 3 , further comprising:

performing a virtual memory write operation of an I/O command to the I/O submission queue in the second set of queues; and

updating the value of a submission tail doorbell register corresponding to the I/O submission queue in the second set of queues.

5. The method of claim 4 , further comprising:

performing a virtual memory write operation of an I/O command to the I/O submission queue in the first set of queues; and

updating the value of a submission tail doorbell register corresponding to the I/O submission queue in the first set of queues.

6. The method of claim 5 , wherein the virtual memory write operation to the I/O submission queue in the second set of queues is performed in parallel with the virtual memory write operation to the I/O submission queue in the first set of queues.

7. A non-transitory, computer-readable medium having stored thereon computer executable instructions that, when executed by a host computer system having a host memory space divided into at least a kernel space with a block I/O layer and a plurality of user spaces, enable simultaneous kernel mode access and user mode access to a non-volatile memory express (NVMe) device using the NVMe interface by causing the host computer system to perform at least the following:

provide kernel mode access to an NVMe device by:

creating a first set of one or more queues by at least reserving a first range of memory addresses in the kernel space;

providing a location address and size of the first set of queues to a controller of the NVMe device; and

simultaneously provide user mode access to the controller of the NVMe device in response to receiving a request for user mode access from a user application process running on the host computer system by:

creating a second set of one or more queues by at least reserving a second range of memory addresses mapped for use by the user application process, and

providing a location address and size of the second set of queues to the user application process and the controller of the NVMe device;

such that the NVMe device is able to communicate with an application process via the first set of queues or the second set of queues, the second set of queues bypassing the block I/O layer of the kernel space.

8. The non-transitory, computer-readable medium of claim 7 , wherein:

the first set of queues includes at least an administrative submission queue and an administrative completion queue, and

each set of the first and second sets of queues includes at least an input/output (I/O) submission queue and an I/O completion queue.

9. The non-transitory, computer-readable medium of claim 8 , wherein user mode access from the user application process includes performing I/O operations on the NVMe device while bypassing a block I/O layer in the kernel space.

10. The non-transitory, computer-readable medium of claim 9 having stored thereon further computer executable instructions that cause the host computer system to:

perform a virtual memory write operation of an I/O command to the I/O submission queue in the second set of queues; and

update the value of a submission tail doorbell register corresponding to the I/O submission queue in the second set of queues.

11. The non-transitory, computer-readable medium of claim 10 having stored thereon further computer executable instructions that cause the host computer system to:

perform a virtual memory write operation of an I/O command to the I/O submission queue in the first set of queues; and

update the value of a submission tail doorbell register corresponding to the I/O submission queue in the first set of queues.

12. The non-transitory, computer-readable medium of claim 11 , wherein the computer executable instructions further cause the host computer system to perform the virtual memory write operation to the I/O submission queue in the second set of queues in parallel with the virtual memory write operation to the I/O submission queue in the first set of queues.

13. A host computer system that supports simultaneous kernel mode access and user mode access to a non-volatile memory express (NVMe) device using the NVMe interface, the system comprising:

an operating system configured to:

run a user application and a kernel mode process,

create a host memory space divided into at least a kernel space having a block I/O layer and a plurality of user spaces; and

a memory device driver configured to:

provide kernel mode access to an NVMe device by:

creating a first set of one or more queues by at least reserving a first range of memory addresses in the kernel space,

providing a location address and size of the first set of queues to a controller of the NVMe device, and

simultaneously provide user mode access to the controller of the NVMe device in response to receiving a request for user mode access from the user application process running on the host computer system, by:

creating a second set of one or more queues by at least reserving a second range of memory addresses mapped for use by the user application, and

providing a location address and size of the second set of queues to the user application and the controller of the NVMe device:,

such that the NVMe device is able to communicate with an application process via the first set of queues or the second set of queues, the second set of queues bypassing the block I/O layer of the kernel space.

14. The host computer system of claim 13 , wherein:

the first set of queues includes at least an administrative submission queue and an administrative completion queue, and

each set of the first and second sets of queues includes at least an input/output (I/O) submission queue and an I/O completion queue.

15. The host computer system of claim 14 , wherein user mode access from the user application includes performing I/O operations on the NVMe device while bypassing a block I/O layer in the kernel space.

16. The host computer system of claim 15 , further comprising the user application, wherein the user application is configured to:

perform a virtual memory write operation of an I/O command to the I/O submission queue in the second set of queues; and

update the value of a submission tail doorbell register corresponding to the I/O submission queue in the second set of queues.

17. The host computer system of claim 16 , further comprising the kernel process, wherein the kernel mode process is configured to:

perform a virtual memory write operation of an I/O command to the I/O submission queue in the first set of queues; and

update the value of a submission tail doorbell register corresponding to the I/O submission queue in the first set of queues.

18. The host computer system of claim 17 , wherein the user application and the kernel mode process are configured to perform, respectively and in parallel, the virtual memory write operation to the I/O submission queue in the second set of queues and the virtual memory write operation to the I/O submission queue in the first set of queues.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2016
From: VYSHETSKY, KONSTANTIN; FRANCISCO, CARLOS OLLE; GUTHULA, MANOJ
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 040067/0875 →
Continuity (2)
Provisional Application 62326459 · Apr 22, 2016
Related Publication 20170308298A1 · Oct 26, 2017