NVMe Dual-Queue Architecture for Kernel and User Mode Access
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current NVMe devices require user application processes to access I/O queues through kernel mode, leading to latency due to indirect access through abstraction layers, which hinders high-performance and low-latency operations.
Innovation Solution
The system enables simultaneous kernel mode and user mode access to NVMe devices by creating separate queues in both kernel and user spaces, allowing user application processes to directly access NVMe devices without kernel intervention, thereby reducing latency.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If user application processes access I/O queues through kernel mode, then system stability and security are maintained, but access latency increases due to indirect access through abstraction layers
Solution Approach 1:
The patent segments the I/O queue access mechanism into two distinct pathways: kernel mode queues for system processes and user mode queues for application processes. This segmentation allows user applications to access I/O queues directly through user mode without traversing kernel abstraction layers, thereby reducing access latency while maintaining kernel mode access for system stability and security.
2Loss of time
If user application processes access I/O queues directly in user mode, then access latency is reduced, but system complexity increases due to dual queue management
Solution Approach 1:
The patent implements a universal queue management system where a single NVMe device controller can serve both kernel mode and user mode processes simultaneously through separate I/O queue sets. The controller is designed to handle both types of queues with unified command processing logic, allowing user applications to access I/O queues directly while maintaining kernel mode access, thereby reducing latency without proportionally increasing system complexity.
Data Source
AI summary
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.


