Processor Branch Controller for Pipeline Thread Switch Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional processors experience processing speed penalties due to dropping instructions in the pipeline during thread switches, especially when branch instructions are executed, leading to inefficiencies and time losses.

Innovation Solution

A processor and pipelining method that include a branch controller to determine whether to drop or continue executing instructions subsequent to a branch instruction based on the thread numbers of the branch instruction and the subsequent instruction, allowing for concurrent processing and avoiding unnecessary pipeline flushes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If instructions are dropped during thread switches in the pipeline, then thread switch correctness is maintained, but processing speed deteriorates due to pipeline flushes and time losses

Engineering Contradiction:
Improvethread switch correctnessVSAvoidprocessing speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The invention changes the parameter of instruction validity by introducing a thread number comparison mechanism. When the thread number of a subsequent instruction matches the thread number of the branch instruction, the instruction is invalidated (dropped). When they differ, the instruction remains valid and is executed. This parameter-based control resolves the contradiction by selectively maintaining instructions based on thread context.

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The invention introduces an intermediary comparison mechanism between the thread number of the branch instruction and the thread number of subsequent instructions. This intermediary thread number comparison determines whether to drop or execute instructions, avoiding unnecessary pipeline flushes while maintaining thread switch correctness.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If branch prediction is used to avoid penalties, then processing speed improves, but complexity increases due to branch prediction buffers and prediction mechanisms

Engineering Contradiction:
Improveprocessing speedVSAvoidbranch prediction mechanism complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The invention extracts the essential control logic from complex branch prediction mechanisms by focusing only on thread number comparison. Instead of implementing full branch prediction with buffers and prediction algorithms, it extracts and applies only the necessary thread context identification, significantly reducing complexity while maintaining processing speed.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

Instead of using complex prediction to determine whether to execute subsequent instructions, the invention inverts the approach by using thread number matching to determine validity. The default assumption is that subsequent instructions are valid unless they belong to the same thread as the branch instruction, simplifying the control logic.

Inventive Principle:
Principle #13The other way round (Inversion)

Data Source

PatentUS10853081B2Processor and pipelining method
Publication Date: 2020.12.01 SANKEN ELECTRIC CO LTD
  • US10853081B2 patent drawing
  • US10853081B2 patent drawing
  • US10853081B2 patent drawing

AI summary

A processor is disclosed that performs pipelining which processes a plurality of threads and executes instructions in concurrent processing, the instructions corresponding to thread numbers of the threads and including a branch instruction. The processor may include a pipeline processor, which includes a fetch part that fetches the instruction of the thread having an execution right, and a computation execution part that executes the instruction fetched by the fetch part. The processor may include a branch controller that determines whether to drop an instruction subsequent to the branch instruction within the pipeline processor based on the thread number of the thread where the branch instruction is executed and on the thread number of the subsequent instruction.