Unanimous Branch Instructions for Parallel Thread Processor Divergence

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current parallel graphics processing systems with SIMT architectures face inefficiencies when handling predicated branch instructions, leading to thread group divergence and unnecessary execution cycles due to the difficulty in predicting runtime cases and managing synchronization operations.

Innovation Solution

The implementation of unanimous branch and branch-any instructions, which combine condition values using Boolean AND and OR functions respectively, allowing all active threads to agree on branching decisions, thereby avoiding extra execution cycles and synchronization overhead.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If predicated branch instructions are used to implement conditional code sequences, then threads can execute different code paths based on conditions, but thread group divergence occurs requiring synchronization operations that reduce execution efficiency

Engineering Contradiction:
Improveconditional code execution capabilityVSAvoidexecution efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent extracts the branch decision logic from individual thread-level predicated branches and implements it at the thread-group level using unanimous branch instructions. This allows the branch decision to be made once for the entire thread group based on combined condition values, eliminating per-thread branch evaluation and synchronization overhead while maintaining conditional execution capability.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent combines condition values from multiple threads using Boolean AND/OR functions to make a unified branch decision for the entire thread group. This merging of individual thread conditions into a collective decision eliminates thread group divergence and the associated synchronization operations, directly resolving the contradiction between conditional execution and execution efficiency.

Inventive Principle:
Principle #5Merging (Combining)

2Ease of operation

If all threads are dragged through each part of conditional code regardless of execution need, then no synchronization is required, but hundreds of threads execute unnecessary instructions reducing efficiency

Engineering Contradiction:
Improvesynchronization-free executionVSAvoidexecution efficiency
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The patent extracts the branch decision-making process from the individual thread execution path and implements it at the thread-group level. By using unanimous branch instructions that evaluate conditions once for all threads, the system eliminates unnecessary instruction execution while avoiding the need for synchronization operations, thus resolving the contradiction between ease of operation and execution efficiency.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent implements partial action by having threads selectively execute code paths based on the unified branch decision. Instead of all threads executing all instructions, only the necessary code paths are executed based on the combined condition evaluation, reducing wasted instruction execution while maintaining simple synchronization-free operation.

Inventive Principle:
Principle #16Partial or excessive action

3Stability of the object's composition

If predicated instructions without branch instructions are used, then no thread group divergence occurs, but all threads must execute both code paths increasing instruction count

Engineering Contradiction:
Improvethread group convergenceVSAvoidinstruction count
Core Design Contradiction:
Stability of the object's compositionVSQuantity of substance

Solution Approach 1:

The patent segments the code execution into distinct paths based on the unified branch decision made at the thread-group level. By using unanimous branch instructions, the system divides execution flow into necessary and unnecessary paths, allowing threads to skip irrelevant code sections. This segmentation maintains thread group convergence while reducing the effective instruction count that threads must execute.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies partial action by having threads execute only the necessary code paths determined by the unified branch decision. Instead of all threads executing both code paths as in traditional predicated instructions, threads selectively execute only the relevant path, reducing the total instruction count while maintaining thread group convergence.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentEP2480979B1Unanimous branch instructions in a parallel thread processor
Publication Date: 2016.12.07 NVIDIA CORP
  • EP2480979B1 patent drawingFigure 1
  • EP2480979B1 patent drawingFigure 2
  • EP2480979B1 patent drawingFigure 3

AI summary

One embodiment of the present invention sets forth a mechanism for managing thread divergence in a thread group executing a multithreaded processor. A unanimous branch instruction, when executed, causes all the active threads in the thread group to branch only when each thread in the thread group agrees to take the branch. In such a manner, thread divergence is eliminated. A branch-any instruction, when executed, causes all the active threads in the thread group to branch when at least one thread in the thread group agrees to take the branch.