Para-virtualized Asymmetric GPU Processor with Segmented Virtual Nodes

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing para-virtualization solutions underutilize the performant features of physical GPUs by serializing tasks, limiting parallel processing and resulting in inefficient GPU command execution in child partitions.

Innovation Solution

The implementation of a virtual GPU (vGPU) with a kernel-mode driver (KMD) and user-mode driver (UMD) in a child partition, which includes multiple virtual nodes for parallel operation, and a render component in the root partition for executing GPU commands, along with memory access channels for communication, allowing for parallel execution of diverse operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If a single virtual GPU node is used to process all GPU commands, then the system is simpler to manage, but the physical GPU is underutilized due to serialization of tasks

Engineering Contradiction:
ImprovevGPU structureVSAvoidGPU command processing throughput
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The vGPU is segmented into multiple virtual nodes (first virtual node, second virtual node, etc.), each capable of processing different types of GPU commands in parallel. This segmentation allows the system to maintain simplicity at the vGPU level while achieving high throughput through internal parallelization of command processing across multiple virtual nodes.

Inventive Principle:
Principle #1Segmentation

2Productivity

If multiple virtual nodes are implemented for parallel processing, then GPU command processing throughput is improved, but the device complexity increases

Engineering Contradiction:
ImproveGPU command processing throughputVSAvoidvGPU structure
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

Multiple virtual nodes are implemented within the vGPU, where each virtual node can handle different types of GPU commands (e.g., rendering commands, compute commands). This multi-functionality approach enables parallel processing of diverse command types simultaneously, improving throughput while the virtual nodes collectively form a unified vGPU interface that abstracts the complexity from the host system.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Device complexity

If tasks are serialized on a single virtual GPU node, then the vGPU structure is simpler, but the performant features of the physical GPU are underutilized

Engineering Contradiction:
ImprovevGPU architectureVSAvoidGPU performance utilization
Core Design Contradiction:
Device complexityVSLoss of energy

Solution Approach 1:

The vGPU is divided into multiple virtual nodes that can process different task types in parallel, enabling the physical GPU's performant features to be fully utilized. Each virtual node maps to specific GPU capabilities, allowing concurrent execution of rendering, compute, and other GPU-accelerated tasks without serialization overhead.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Multiple virtual nodes enable continuous utilization of the physical GPU by eliminating idle periods between task completions. While one virtual node is processing a task, another can simultaneously handle a different task type, ensuring the physical GPU remains continuously engaged and maximizing its computational throughput.

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentEP2807555B1Para-virtualized asymmetric GPU processors
Publication Date: 2018.07.11 MICROSOFT TECHNOLOGY LICENSING LLC
  • EP2807555B1 patent drawingFigure 1
  • EP2807555B1 patent drawingFigure 2

AI summary

The present invention extends to methods, systems, and computer program products for providing asymmetric Graphical Processing Unit ("GPU") processors in a para-virtualized environment. A virtual GPU ("vGPU") within a child partition of the para-virtualized environment includes a kernel-mode driver ("KMD") and a user-mode driver ("UMD"). The KMD includes a plurality of virtual nodes. Each virtual node performs a different type of operation in parallel with other types of operations. The KMD is declared as a multi-engine GPU. The UMD schedules operations for parallel execution on the virtual nodes. A render component within a root partition of the para-virtualized environment executes GPU commands received from the vGPU at the physical GPU. A plurality of memory access channels established between the KMD and the render component communicate GPU commands between a corresponding virtual node at the KMD and the render component.