Priority-based command execution

Patent No. US9519943 (titled "Priority-based command execution") on Jun 29, 2011. The application was issued on Dec 13, 2016.

What is this patent about?

’943 is related to the field of heterogeneous computing and command scheduling between different processing units. Specifically, it addresses the latency challenges encountered when a central processing unit (CPU) offloads non-graphical tasks, such as physics simulations or artificial intelligence calculations, to a graphics processing unit (GPU). In traditional systems, these time-sensitive computational tasks often get stuck behind large batches of rendering commands, leading to performance bottlenecks because the CPU cannot receive the necessary results in time for the next frame.

The underlying idea behind ’943 is the implementation of a multi-tiered, priority-aware pipeline that spans from the software abstraction layer in the CPU down to the hardware execution level in the GPU. By categorizing commands into distinct priority levels—such as high-priority computational tasks versus mid-priority rendering tasks—the system can bypass the standard first-in, first-out bottlenecks. The core insight is to maintain this priority separation throughout the entire transfer process, ensuring that urgent data does not lose its precedence while moving from the application driver to the execution cores.

The claims of ’943 focus on a method and architecture that utilizes a plurality of virtual devices within the CPU to abstract the GPU. Each virtual device is assigned a specific priority level and maintains its own queue. The independent claims describe a hardware-software handshake where commands are routed through these priority-specific virtual devices and then mapped to a corresponding set of hardware buffers on the GPU. A specialized command processor then manages these buffers, specifically ensuring that high-priority commands are retrieved and dispatched to the processing core before those in lower-priority queues.

In practice, the invention works by using a multithreaded command processor and a run-list controller to monitor the status of multiple ring buffers simultaneously. When a high-priority command arrives in its dedicated buffer, the command processor can trigger a preemption mechanism. This allows the GPU to finish its current atomic operation and immediately pivot to the urgent task, rather than waiting for an entire rendering command buffer to complete. The system tracks the state of these multiple streams using dedicated sets of head and tail pointer registers for each priority level.

This approach differs from prior solutions by moving away from a single, monolithic command stream that treats all GPU tasks as asynchronous background work. By integrating priority-based scheduling directly into the hardware ring buffers and the CPU's virtual device drivers, the invention enables the GPU to function as a low-latency co-processor for real-time logic. This allows for a more efficient distribution of labor, where the CPU is relieved of heavy mathematical burdens without the penalty of missing frame-timing windows.

How does this patent fit in bigger picture?

Technical Landscape

In the early 2010s when ’943 was filed, heterogeneous computing environments were typically implemented using a primary central processing unit (CPU) that offloaded specific tasks, such as graphics rendering, to a secondary processing device like a graphics processing unit (GPU). At a time when systems commonly relied on a single command stream or ring buffer for the secondary processor, all offloaded tasks were generally executed in the order they were received regardless of their functional urgency. Because these secondary processors were designed for high-throughput parallel tasks rather than low-latency interrupts, hardware and software constraints made it non-trivial to prioritize time-sensitive computational tasks, such as physics or artificial intelligence logic, over standard rendering commands without incurring significant latency penalties on the CPU side.

Prosecution Position

The disclosed invention represents a meaningful technical advancement through an architectural shift in how commands are managed and dispatched to a secondary processing device. By implementing a multi-queued structure where commands are segregated by priority levels—such as high-priority computational tasks versus lower-priority rendering or background tasks—the system enables a more granular control over execution order. The integration of a command processor capable of monitoring multiple ring buffers allows the system to overcome the technical constraint of sequential execution. This architecture achieves a reduction in latency for critical tasks by enabling the command processor to retrieve and dispatch high-priority commands before lower-priority ones, and further allows for the preemption of active command buffers to ensure that time-sensitive results are returned to the primary processor without waiting for the completion of less urgent, high-volume rendering operations.

Claims

The patent contains 24 total claims, with claims 1, 11, and 19 serving as the independent claims. These independent claims focus on a method, processing device, and system for managing graphics processing unit (GPU) commands through the creation of virtual devices within a central processing unit (CPU) and the use of prioritized queues to ensure high-priority commands are retrieved and executed by the GPU before lower-priority tasks. The dependent claims serve to further define the technical implementation by specifying the use of ring buffers, head and tail pointers, round-robin scheduling, preemption mechanisms, and the specific roles of user mode and kernel mode drivers in command generation and transport.

Key Claim Terms New

Definitions of key terms used in the patent claims.

Term (Source)Support for SpecificationInterpretation
Command processor
(Claim 11, Claim 19)
Command processor 310 retrieves commands from ring buffers 304-308 and sends them to processing core 312 for execution. Command processor 310 and RLC 311 form a multithreaded system that can monitor the status of more than one ring buffer. In an embodiment, command processor 310 and RLC 311 can be implemented as different microcontrollers or as a single microcontroller.A hardware component or microcontroller responsible for monitoring multiple command buffers and selecting commands for execution based on priority or scheduling schemes.
High priority queue
(Claim 11, Claim 19)
GPU 302 includes a ring buffer for each priority type, such as ring buffers 304, 306, and 308 for high, mid, and low priority commands, respectively. The command processor can retrieve all commands from a higher priority buffer before moving on to retrieve commands from a lower priority buffer. For example, command processor 310 can retrieve all commands being held in ring buffer 304 before moving on to retrieve commands from ring buffer 306.A specific storage buffer (such as a ring buffer) within a processing device dedicated to holding commands that must be retrieved and executed before commands in other queues.
Priority
(Claim 1, Claim 11, Claim 19)
Computational commands, e.g., physics or artificial intelligence commands, are often high priority because the CPU needs results relatively quickly. Rendering commands may be mid priority, while background commands generated when resources are idle are low priority. The use of different virtual devices for each priority of commands allows higher priority commands to wait a shorter amount of time before they are sent to the GPU.A classification assigned to commands (e.g., high, mid, low, or background) that determines their placement in specific virtual devices and the order in which they are retrieved for execution.
Processing core
(Claim 11)
Command processor 310 retrieves commands from ring buffers 304-308 and sends them to processing core 312 for execution. If processing core 312 is executing commands included in a command buffer having a mid priority and a high priority command is detected, the command processor can preempt the command buffer being executed. Specifically, it allows a current command to complete but prevents the next command from starting so the core can execute the high priority command.The functional unit within a GPU that performs the actual execution of commands received from the command processor.
Virtual device
(Claim 1, Claim 11, Claim 19)
The CPU can run multiple processes each having its own respective instance of a user mode driver and respective set of virtual devices. Use of different virtual devices for each priority of commands allows higher priority commands to wait a shorter amount of time before they are sent to the GPU for execution. For example, user mode driver 206 can place high priority commands in virtual device 208, mid priority commands in virtual device 210, and low priority commands in virtual device 212.A software abstraction created within a CPU that represents a virtualized instance of a GPU to manage command streams based on specific priority levels.

Litigation Cases New

US Latest litigation cases involving this patent.

Case NumberFiling DateTitle
1:25-cv-00586Apr 17, 2025Onesta IP, LLC v. NVIDIA Corporation
1:25-cv-00587Apr 17, 2025Onesta IP, LLC v. Qualcomm Inc. et al

Patent Family

Patent Family

File Wrapper

The dossier documents provide a comprehensive record of the patent's prosecution history - including filings, correspondence, and decisions made by patent offices - and are crucial for understanding the patent's legal journey and any challenges it may have faced during examination.

  • Get instant alerts for new documents

US9519943

Application Number
US13171979A
Filing Date
Jun 29, 2011
Publication Date
Dec 13, 2016
External Links
Slate, USPTO , Google Patents