Thread Synchronization at Disparate Memory Addresses

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing techniques for synchronizing threads in parallel processing compute architectures are inefficient, particularly when threads execute different sets of instructions, as they require a common synchronization instruction at a single memory address, leading to unreliable synchronization and increased complexity.

Innovation Solution

The method involves determining when threads at different memory addresses have executed synchronizing instructions, allowing them to unblock and return to their respective instructions without the need for a synchronization outline function, thereby enabling synchronization at disparate addresses.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a synchronization outline function is used to allow threads to synchronize at different memory addresses, then thread synchronization reliability is improved, but device complexity and processing time increase

Engineering Contradiction:
Improvethread synchronization reliabilityVSAvoidprogram complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent extracts the synchronization logic from a separate outline function and integrates it directly into the instruction streams at the points where synchronization is needed. This allows threads to execute synchronizing instructions at different memory addresses without requiring a common synchronization function, thereby reducing program complexity while maintaining synchronization reliability

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent introduces a mediator mechanism that tracks the execution state of multiple threads and coordinates their synchronization without requiring them to converge at a single memory address. This mediator enables reliable synchronization at disparate addresses by managing the blocking and unblocking of threads based on their individual execution paths

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If a synchronization outline function is used to allow threads to synchronize at different memory addresses, then thread synchronization reliability is improved, but processing time increases

Engineering Contradiction:
Improvethread synchronization reliabilityVSAvoidprocessing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent performs preliminary setup of synchronization state tracking before threads diverge into different instruction paths. By preparing the synchronization mechanism in advance and allowing threads to block at their respective synchronization points without function call overhead, the system achieves reliable synchronization while minimizing additional processing time

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

By removing the function call and return overhead associated with outline functions, the patent allows threads to synchronize directly at instruction level. This extraction of synchronization logic from a separate function eliminates the time penalty of function calls while maintaining the ability to synchronize at different memory addresses

Inventive Principle:
Principle #2Taking out (Extraction)

3Device complexity

If all threads are constrained to synchronize at the same memory address, then device complexity is reduced, but thread synchronization reliability deteriorates when threads execute different instruction sets

Engineering Contradiction:
Improveprogram complexityVSAvoidthread synchronization reliability
Core Design Contradiction:
Device complexityVSReliability

Solution Approach 1:

The patent segments the synchronization mechanism to allow different subsets of threads to synchronize at different memory addresses. Instead of requiring a single common synchronization point, the system divides synchronization into multiple independent points that can be executed at disparate addresses, thereby maintaining low program complexity while achieving reliable synchronization for threads executing different instruction sets

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent extends the synchronization concept from a single-dimensional common address model to a multi-dimensional model where threads can synchronize at different memory addresses. This dimensional change allows threads executing different instruction sets to find their own synchronization points without increasing overall system complexity

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Data Source

PatentUS12271765B2Techniques for efficiently synchronizing multiple program threads
Publication Date: 2025.04.08 NVIDIA CORP
  • US12271765B2 patent drawing
  • US12271765B2 patent drawing
  • US12271765B2 patent drawing

AI summary

Various embodiments include a parallel processing computer system that enables parallel instances of a program to synchronize at disparate addresses in memory. When the parallel program instances need to exchange data, the program instances synchronize based on a mask that identifies the program instances that are synchronizing. As each program instance reaches the point of synchronization, the program instance blocks and waits for all other program instances to reach the point of synchronization. When all program instances have reached the point of synchronization, at least one program instance executes a synchronous operation to exchange data. The program instances then continue execution at respective and disparate return addresses.