NVMe Switch PRP Pointer Modification for Multi-Host PCIe Routing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Routing PCIe memory requests to multiple hosts associated with Solid State Drives (SSDs) is complex due to the lack of host identification in Physical Region Pages (PRP) entries within the NVMe standard, making it difficult to determine which host to route the requests to.
Innovation Solution
The NVMe switch modifies PRP entries with a host ID or virtual function ID to facilitate routing of PCIe memory requests by embedding this identification within the PRP data or list pointers, allowing the NVMe switch to direct requests to the appropriate host.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If the NVMe standard uses PRP entries without host identification, then the structure remains simple and compatible with the original standard, but routing PCIe memory requests to multiple hosts becomes complex and ambiguous
Solution Approach 1:
The patent embeds host identification information within the existing PRP entry structure by utilizing unused or reserved bits in the PRP descriptor. This nested approach allows host routing information to be contained within the original PRP structure without adding external complexity, enabling multi-host support while maintaining structural simplicity
Solution Approach 2:
The NVMe switch preemptively modifies PRP entries by embedding host identification information before forwarding commands to SSDs. This preliminary action ensures that routing information is already embedded in the PRP entries when they reach the SSD, eliminating the need for complex routing decisions at later stages and simplifying the overall routing process
2Measurement precision
If the NVMe switch modifies PRP entries by embedding host ID or VF ID, then routing accuracy to specific hosts improves, but the complexity of pointer modification and processing increases
Solution Approach 1:
The patent applies modification only to specific fields within the PRP entry structure, specifically targeting unused or reserved bits that are local to the PRP descriptor. This localized modification approach embeds host identification information without altering the overall structure or functionality of the PRP entries, minimizing processing complexity while maintaining identification accuracy
Solution Approach 2:
The NVMe switch changes parameters within the PRP entry by embedding host ID or VF ID in specific bit positions. This parameter change approach modifies only the necessary routing information fields while leaving other PRP parameters unchanged, enabling accurate host identification without requiring complete restructuring of the pointer system
3Reliability
If multiple hosts are supported without modifying PRP entries, then the original NVMe standard compatibility is maintained, but the ability to route requests to specific hosts is lost
Solution Approach 1:
The patent nests host identification information within the existing PRP entry structure by utilizing unused or reserved bits. This nested embedding maintains outward compatibility with the original NVMe standard while internally providing multi-host routing capability, allowing both standard compliance and enhanced functionality to coexist
Solution Approach 2:
The NVMe switch performs preliminary modification of PRP entries by embedding host identification information before commands are processed by SSDs. This advance preparation ensures that when PRP entries are encountered during command execution, they already contain the necessary routing information, enabling both standard compatibility and multi-host support without conflict
Data Source
Figure 1A
Figure 1B
Figure 2
AI summary
A first command is received from a virtual or physical host associated with a storage system which includes two or more hosts. The first command comprises one or more physical request page (PRP) entries associated with the non-volatile memory express (NVMe) standard. The one or more PRP entries are modified with an indication of the virtual or physical host. A second command is sent with the modified one or more PRP entries to a solid state drive (SSD). A memory request is received from the SSD, where the memory request comprises the modified one or more PRP entries. The memory request is routed to the virtual or physical host based on the indication of the virtual or physical host in the modified one or more PRP entries.