Coprocessor Run List for Context Switching

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current coprocessors, such as graphics processing units (GPUs), face inefficiencies in scheduling tasks, leading to potential 'starvation' and reduced performance when handling multiple graphically intensive applications, as they lack effective multitasking capabilities and resource allocation strategies.

Innovation Solution

Implementing a run list managed by the Central Processing Unit (CPU) to enable immediate task switching in the coprocessor, along with surface faulting, DMA control instructions like 'fence,' 'trap,' and 'enable/disable context switching,' and the 'flip' technique to enhance coprocessor efficiency and power usage, allowing for better workload management and synchronization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If cooperative multitasking is implemented in coprocessors, then applications can share coprocessor resources, but applications may hog the coprocessor and cause starvation of other tasks

Engineering Contradiction:
Improvemultitasking capabilityVSAvoidfair resource allocation
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The CPU prepares and fills a run list with multiple coprocessor tasks in advance before the coprocessor needs to switch contexts. This preliminary action ensures that when context switching is needed, the coprocessor can immediately execute the next pre-prepared task from the run list without waiting for CPU intervention, thereby preventing starvation and ensuring fair resource allocation among multiple applications.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If the CPU intervenes for every context switch in the coprocessor, then task scheduling can be controlled, but processing efficiency is reduced due to CPU overhead

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidscheduling control mechanism
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The coprocessor is designed to autonomously switch between tasks using a run list that is initially prepared by the CPU. Once the run list is populated, the coprocessor can independently execute tasks in sequence without continuous CPU intervention. This self-service mechanism dramatically reduces CPU overhead and improves processing efficiency while maintaining controlled task scheduling through the pre-established run list.

Inventive Principle:
Principle #25Self-service

3Reliability

If the coprocessor waits for CPU intervention for task switching, then scheduling accuracy is maintained, but coprocessor starvation occurs and resources are underutilized

Engineering Contradiction:
Improvescheduling accuracyVSAvoidresource utilization
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The CPU performs preliminary actions by pre-filling the run list with multiple coprocessor tasks before the coprocessor begins execution. This allows the coprocessor to maintain scheduling accuracy by following the pre-determined run list while simultaneously improving resource utilization by executing tasks continuously without waiting for CPU intervention between task switches.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9298498B2Building a run list for a coprocessor based on rules when the coprocessor switches from one context to another context
Publication Date: 2016.03.29 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9298498B2 patent drawing
  • US9298498B2 patent drawing
  • US9298498B2 patent drawing

AI summary

Techniques for minimizing coprocessor “starvation,” and for effectively scheduling processing in a coprocessor for greater efficiency and power. A run list is provided allowing a coprocessor to switch from one task to the next, without waiting for CPU intervention. A method called “surface faulting” allows a coprocessor to fault at the beginning of a large task rather than somewhere in the middle of the task. DMA control instructions, namely a “fence,” a “trap” and a “enable/disable context switching,” can be inserted into a processing stream to cause a coprocessor to perform tasks that enhance coprocessor efficiency and power. These instructions can also be used to build high-level synchronization objects. Finally, a “flip” technique is described that can switch a base reference for a display from one location to another, thereby changing the entire display surface.