Processor Vertex Debugging via Thread-Scoped Breakpoints

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Debugging multi-tile, multi-threaded processor architectures executing machine intelligence algorithms is challenging due to the complexity of managing and inspecting vertices in a graph-based computation environment, where parallelism and concurrency lead to difficulties in identifying and addressing errors within the processor.

Innovation Solution

The processor architecture allocates each vertex to a thread and uses debug hardware to raise an instruction exception only when a vertex break identifier matches the vertex being processed, enabling targeted debugging while allowing other threads to continue executing, and employs a bulk synchronous parallel scheme to synchronize threads across tiles.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If traditional debugging methods are used in multi-tile, multi-threaded processors, then all threads must be stopped for inspection, but this causes loss of processing time and reduces productivity

Engineering Contradiction:
Improvedebugging capabilityVSAvoidprocessing throughput
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The processor divides debugging capability into separate debug units, one for each thread, allowing independent inspection of individual threads without affecting others. Each debug unit can capture and hold thread state independently, enabling precise debugging of specific threads while maintaining execution of others.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Instead of stopping all threads for debugging, the system applies debugging action only to the specific thread that requires inspection. The debug unit selectively captures state from individual threads based on debug requests, performing partial debugging action that minimizes impact on overall processing productivity.

Inventive Principle:
Principle #16Partial or excessive action

2Speed

If multiple execution pipelines are provided for parallelism, then processing speed is improved, but hardware complexity and silicon area increase significantly

Engineering Contradiction:
Improveprocessing speedVSAvoidhardware complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

Multiple threads share a common execution pipeline rather than each thread having a dedicated pipeline. The pipeline is time-multiplexed across threads, merging resources to reduce hardware complexity and silicon area while maintaining parallel processing capability through concurrent thread execution.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The execution pipeline switches between different threads in periodic time slots, allowing each thread to execute instructions during its allocated period. This periodic time-multiplexing enables parallelism effects without requiring simultaneous dedicated pipelines for each thread, reducing hardware complexity.

Inventive Principle:
Principle #19Periodic action

3Device complexity

If threads share a common execution pipeline, then hardware complexity is reduced, but pipeline latency must be hidden through increased interleaving

Engineering Contradiction:
Improvehardware complexityVSAvoidprocessing efficiency
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The processor dynamically schedules threads across the execution pipeline, adjusting which thread executes at each time slot based on thread state, priority, and pipeline availability. This dynamic interleaving maximizes pipeline utilization and hides latency by continuously switching between threads to keep the pipeline full.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system monitors pipeline status and thread execution progress, using this feedback to adjust scheduling decisions. When pipeline latency is detected or threads stall, the scheduler increases interleaving of other threads to maintain processing efficiency and keep the pipeline actively utilized.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS11893390B2Method of debugging a processor that executes vertices of an application, each vertex being assigned to a programming thread of the processor
Publication Date: 2024.02.06 GRAPHCORE LTD
  • US11893390B2 patent drawing
  • US11893390B2 patent drawing
  • US11893390B2 patent drawing

AI summary

A method for debugging a processor which is executing vertices of a software application is described. Each vertex is assigned to a programming thread of the processor. The processor has debug hardware for raising exceptions in certain break conditions. The method comprises inspecting a vertex identifier, comparing the vertex identifier and raising an instruction exception event for the programming thread if the vertex identifier assigned to the thread matches the vertex break identifier in the debug hardware. Exceptions are raised based on identified vertices, rather than just individual instructions or instruction addresses.