Computational Storage Namespaces with Isolated Accelerator Queues
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing computational storage devices lack efficient methods to optimize performance by integrating accelerators and queues for separate computing namespaces, leading to suboptimal processing speeds and resource utilization.
Innovation Solution
A computational storage device is designed with multiple computing namespaces, each allocated with accelerators and queues, allowing separate virtual machines to independently manage storage operations, enhancing computational resources and queue management through a storage controller and FPGA.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If multiple virtual machines share a single physical NVMe controller without namespace isolation, then device utilization is improved, but performance and security are degraded due to resource contention and lack of independent management
Solution Approach 1:
The patent divides the physical NVMe controller into multiple virtual NVMe controllers, each with its own namespace. This segmentation allows different virtual machines to have isolated resource pools while sharing the physical hardware, resolving the contradiction between utilization and isolation by creating intermediate virtualization layers.
Solution Approach 2:
The patent introduces a virtualization layer that acts as an intermediary between virtual machines and the physical NVMe controller. This intermediary manages resource allocation and namespace creation, enabling both high utilization through shared physical resources and strong isolation through virtual namespace boundaries.
2Device complexity
If computational resources are shared without dedicated allocation, then device complexity is reduced, but processing speed and resource utilization are degraded due to contention
Solution Approach 1:
The patent segments computational resources including accelerators and queues into namespace-specific allocations. Each computing namespace has dedicated accelerators and queues, eliminating resource contention and improving processing speed while maintaining manageable complexity through systematic resource organization.
Solution Approach 2:
The patent implements dynamic resource allocation where computational resources can be flexibly assigned to different namespaces based on demand. This dynamic approach allows the system to optimize processing speed for each namespace while maintaining overall system efficiency.
3Device complexity
If accelerators and queues are not dedicated to specific computing namespaces, then device complexity is reduced, but performance is degraded due to resource contention
Solution Approach 1:
The patent segments accelerators and queues into namespace-dedicated resources. Each computing namespace has its own accelerators and queues, eliminating contention and improving computational throughput. The systematic organization into namespaces keeps complexity manageable through clear resource boundaries.
Solution Approach 2:
The patent applies local quality by giving each computing namespace its own specific accelerators and queues tailored to its computational needs. This localized resource allocation optimizes performance for each namespace while the overall system maintains efficiency through coordinated management.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
An operating method of a computational storage device includes: setting a first computing namespace, including a first queue and a first accelerator and having a first value as its first ID, per instructions from a first host; setting a second computing namespace, including a second queue and a second accelerator and having a second value as its first ID, per instructions from a second host; loading a first program from the first host in the first computing namespace; loading a second program from the second host in the second computing namespace; setting a second ID of the first computing namespace to a third value based on an ID of the first program per instructions to activate the first program; and setting the second ID of the second computing namespace to a fourth value based on an ID of the second program per instructions to activate the second program.