Processing unit that enables asynchronous task dispatch

Patent No. US8854381 (titled "Processing unit that enables asynchronous task dispatch") on Sep 1, 2010. The application was issued on Oct 7, 2014.

What is this patent about?

’381 is related to the field of high-performance computing and graphics processing, specifically addressing how a processing unit manages multiple concurrent workloads. In traditional architectures, a GPU typically processes a single command stream at a time, requiring a costly and time-consuming context switch to swap out state data when a higher-priority task needs to interrupt a running process. This overhead creates significant latency and necessitates extra hardware for backing up data, which limits the efficiency of real-time or high-priority compute tasks.

The underlying idea behind ’381 is the implementation of virtual engines that allow a single shader core to maintain and execute multiple contexts simultaneously. Instead of treating the GPU as a serial processor that must drain its pipeline to switch tasks, the invention enables the hardware to receive multiple task streams in parallel. By partitioning the physical resources of the shader core, the system can handle different priority levels—such as background tasks and low-latency 3D rendering—without the performance penalty of traditional context switching.

The claims of ’381 focus on a processing architecture where a plurality of engines receives tasks from an external scheduler and loads their respective state data into a shared shader core. The independent claims specifically protect the mechanism by which the shader core executes a first task and a second task concurrently based on their individual state data. This includes the coordination between a primary processor, like a CPU, and the specialized processing unit to ensure that tasks are dispatched and executed based on their specific priority types.

In practice, the invention works by utilizing spatial and temporal partitioning of the shader core’s SIMD units. Spatial partitioning assigns specific subsets of processing elements to different tasks, while temporal partitioning allows tasks to share the same elements over interleaved time slices. A scheduling module within the GPU manages these resources dynamically, ensuring that high-priority, low-latency tasks get immediate access to the necessary compute cycles while standard graphics tasks continue to progress in the background.

This approach differs from prior solutions by eliminating the need to flush the pipeline and swap memory contents during a task change. By allowing multiple active contexts to reside within the local data share of the shader core at once, the invention enables a GPU to behave more like a multi-tasking CPU. This is particularly effective for large chips where resources can be divided among concurrent tasks based on demand, ensuring that no single low-latency task is delayed by the overhead of stopping a massive graphics workload.

How does this patent fit in bigger picture?

Technical Landscape

In the late 2000s when ’381 was filed, graphics processing units were typically implemented as serial command processors that executed tasks from a single command buffer provided by the operating system. At a time when systems commonly relied on a monolithic execution model, the hardware was designed to process one context at a time, meaning that all processing elements in a shader core were dedicated to a single task until completion or interruption. When hardware constraints made the management of multiple concurrent execution streams non-trivial, high-priority or low-latency tasks necessitated a full context switch, where the state data of the active task was swapped out to backup storage to make room for new state data. This architectural reliance on serial processing and state-swapping created significant latency overhead and required substantial physical chip area for backup data storage units.

Prosecution Position

The disclosed invention represents a technical advancement through an architectural shift from serial context switching to asynchronous, parallel task dispatch within a single shader core. By integrating a plurality of virtual engines capable of receiving multiple tasks and their associated state data substantially in parallel, the system enables the simultaneous existence of multiple contexts. This structural solution overcomes the technical constraint of context-switch latency by employing spatial or temporal partitioning of the shader core resources, allowing high-priority and standard tasks to share processing elements without draining the pipeline. The resulting capability enables the processing unit to execute low-latency tasks with minimal overhead while maintaining high utilization of computational resources across diverse instruction streams.

Claims

This patent contains 27 claims, with claims 1, 9, 15, 21, and 27 serving as the independent claims. These independent claims focus on a hardware and software architecture where a first processing unit utilizes multiple engines to receive tasks and load state data from a second processing unit, enabling a shader core to concurrently execute multiple tasks based on their respective state data. The dependent claims further define the system by specifying the use of multiple processing elements, task queuing mechanisms, priority-based execution, and the differentiation between low-latency, graphics-processing, and general-compute task types.

Key Claim Terms New

Definitions of key terms used in the patent claims.

Term (Source)Support for SpecificationInterpretation
Priority type
(Claim 27)
Background engines process low-priority tasks and take over the resources of GPU only when no other virtual engines are using the resources. Real-time low-latency engine has priority access to the resources of GPU in order to process high-priority tasks. Resources (e.g., SIMDs) of the GPU shader core can be divided between concurrent tasks based on demand, priority, and/or preset limits.An indication associated with a task that determines its access rights to processing resources, such as low-latency, high-priority, or background status.
Scheduling module
(Claim 1, Claim 9, Claim 15, Claim 21)
The processing unit may also include a scheduling module that schedules the plurality of tasks to be issued to the shader core. In an embodiment, input logic implements a software routine to schedule the tasks for execution in shader core based on the availability of the resources of shader core and the relative priority of the various tasks.A logic component or software routine that arbitrates and schedules tasks for the shader core based on resource availability and task priority.
Shader core
(Claim 1, Claim 9, Claim 15, Claim 21, Claim 27)
To efficiently execute the various threads of a single graphics-processing task, the GPU includes an array of processing elements, called a shader core. The array of processing elements is organized into single-instruction, multiple-data (SIMD) devices. To enable the single shader core to (substantially) simultaneously process tasks from two or more different virtual engines, resources of the shader core are partitioned in space and/or time.An array of processing elements, such as SIMD devices, configured to execute multiple threads or tasks in parallel by partitioning resources spatially or temporally.
State data
(Claim 1, Claim 9, Claim 15, Claim 21, Claim 27)
Each thread (e.g., shader program) is typically associated with a set of state data (such as texture handles, shader constants, transform matrices, or the like) that is locally stored in data-storage units of the GPU. The locally stored state data is called a context. The shader core then executes the threads of the task based on the new state data in the data-storage units.The specific set of data, such as texture handles, shader constants, or transform matrices, required to execute a particular thread or task, collectively forming a context.
Virtual engines
(Claim 1, Claim 9, Claim 15, Claim 21, Claim 27)
Each virtual engine is configured to receive data-parallel processing tasks and independently execute these tasks on the single shader core. In this way, the processing unit may execute two or more different streams of processing tasks without requiring a context switch. Embodiments of the present invention enable multiple contexts to exist and be executed (substantially) simultaneously in a single shader core.Functional components within a command processor that independently receive and manage different streams of processing tasks (such as low-latency or standard graphics tasks) to be executed on a shared shader core.

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

US8854381

Application Number
US12874134A
Filing Date
Sep 1, 2010
Publication Date
Oct 7, 2014
External Links
Slate, USPTO , Google Patents