NVMe Offset Address Conversion for Server Storage Sharing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional techniques for allocating IO operations in computer systems with NVMe storage devices result in increased latency due to the complexity of determining whether read requests from the storage device are for data transfer or command fetching, making it difficult to convert DMA addresses correctly.
Innovation Solution
A computer system architecture that includes an intermediate device and servers with a driver that converts memory addresses into offset addresses, allowing the intermediate device to trap access requests, specify the server, and reset the offset address for efficient data transfer.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If the IO hub determines whether read requests are for data transfer or command fetching using conventional techniques, then the storage device can be shared among multiple servers, but the mechanism becomes complicated and latency increases
Solution Approach 1:
The patent applies preliminary action by having the driver convert the memory address to an offset address before the storage device reads the command. This pre-processing step eliminates the need for the IO hub to determine the request type later, as the offset address format itself indicates it is a command fetch request. The conversion is performed in advance during queue setup, not during actual command execution.
Solution Approach 2:
The patent introduces an intermediary mechanism by using the offset address as a mediator between the server's memory address and the storage device's read request. The offset address serves as an intermediate representation that the storage device can directly use without requiring the IO hub to interpret or convert it, thereby simplifying the IO hub's function.
2Productivity
If the IO hub converts DMA addresses in conventional systems, then address mapping between servers and storage devices is achieved, but this conversion cannot be applied to NVMe systems where commands are fetched from server memory
Solution Approach 1:
The patent applies parameter changes by transforming the address parameter from a full memory address to an offset address. This parameter transformation changes the nature of the data being transferred - instead of converting a complete DMA address, the system uses an offset that is relative to a base address known to both the storage device and the server. This parameter change enables NVMe protocol compatibility while maintaining address mapping functionality.
3Extent of automation
If the storage device fetches commands from server memory using NVMe specifications, then the storage device can operate independently, but the IO hub cannot determine request types and convert addresses
Solution Approach 1:
The patent applies inversion by reversing the conventional approach. Instead of the IO hub determining the request type and converting addresses (as in conventional systems), the server's driver converts the address to an offset format before the storage device reads it. This inversion of the processing sequence - doing the address transformation beforehand rather than during request handling - allows the storage device to operate autonomously while eliminating the request type determination problem at the IO hub.
Data Source
AI summary
A driver of a server converts an address of a memory included in the server into an offset address on the basis of an offset value corresponding to the server and stores a command including the offset address in a queue. A storage device acquires the command from the queue of the server and issues an access request to the offset address included in the acquired command. An intermediate device traps the access request issued from the storage device, specifies a server on the basis of the offset address included in the trapped access request, resets the offset address to an original address on the basis of an offset value corresponding to the specified server, and transfers the access request including the reset address to the specified server.


