Kernel Mode Graphics Driver Dual-Core Parallelism

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional graphics applications, being single-threaded, do not realize performance benefits in dual-core systems due to sequential execution of processing tasks, limiting system performance in parallel processing environments.

Innovation Solution

Creating an auxiliary thread for the kernel-mode graphics driver that binds to a separate processing core, allowing the application thread to transmit commands to the auxiliary thread for execution, enabling synchronous or asynchronous operation to leverage dual-core parallelism.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a single-threaded graphics driver is used in a dual-core system, then the system maintains simplicity in driver architecture, but the graphics application performance is limited and cannot utilize parallel processing capabilities

Engineering Contradiction:
Improvegraphics application performanceVSAvoiddriver architecture complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The graphics driver is segmented into two separate threads: an application thread that handles application-level graphics commands and an auxiliary thread that executes hardware-level graphics instructions. This segmentation allows the driver to utilize both cores of a dual-core processor, improving graphics application performance by enabling parallel execution of driver functions while maintaining relative architectural simplicity through clear thread separation.

Inventive Principle:
Principle #1Segmentation

2Productivity

If processing tasks are executed sequentially in a single thread, then the driver architecture remains simple and easy to manage, but system performance in parallel processing environments is limited

Engineering Contradiction:
Improvesystem performanceVSAvoidthread management complexity
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The single processing thread is segmented into two distinct threads with specific responsibilities: the application thread manages high-level graphics commands from applications, while the auxiliary thread handles low-level hardware instruction execution. This segmentation enables the system to execute graphics processing tasks in parallel on dual-core processors, significantly improving system performance while keeping thread management straightforward through well-defined functional boundaries.

Inventive Principle:
Principle #1Segmentation

3Speed

If multiple threads are created for parallel processing, then execution speed and performance are improved, but resource sharing and synchronization become more complex

Engineering Contradiction:
Improveexecution speedVSAvoidthread coordination complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The driver functionality is divided into two specialized threads: the application thread that receives and queues graphics commands from applications, and the auxiliary thread that retrieves and executes hardware instructions. This segmentation improves execution speed by enabling parallel processing on dual-core systems while minimizing coordination complexity through clear separation of concerns and well-defined inter-thread communication protocols.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS7773090B1Kernel mode graphics driver for dual-core computer system
Publication Date: 2010.08.10 NVIDIA CORP
  • US7773090B1 patent drawing
  • US7773090B1 patent drawing
  • US7773090B1 patent drawing

AI summary

A kernel-mode graphics driver (e.g., a D3D driver running under Microsoft Windows) exploits the parallelism available in a dual-core computer system. When an application thread invokes the kernel-mode graphics driver, the driver creates a second (“auxiliary”) thread and binds the application thread to a first one of the processing cores. The auxiliary thread, which generates instructions to the graphics hardware, is bound to a second processing core. The application thread transmits each graphics-driver command to the auxiliary thread, which executes the command. The application thread and auxiliary thread can execute synchronously or asynchronously.