Microprocessor Code Optimizer for Parallel Thread Execution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current processor architectures face inefficiencies in handling multiple threads due to the need for context switching and the overhead of duplicating architecture state elements for each thread, which hinders fine-grain parallelism and complicates the parallelization of non-threaded software codes.

Innovation Solution

A method for accelerating code optimization in microprocessors by fetching and decoding microinstruction sequences, reordering them into optimized dependent code groups for parallel execution, and storing optimized sequences for subsequent use, thereby reducing context switches and improving execution efficiency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If context switching is performed to handle multiple software threads, then thread execution is enabled, but execution time is lost due to saving and restoring processor state

Engineering Contradiction:
Improvethread execution capabilityVSAvoidcontext switch overhead
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent pre-loads and caches microinstruction sequences for multiple software threads in hardware structures before context switches are needed. Thread control blocks and associated microcode are prepared in advance in the cache, so when a context switch occurs, the processor can quickly switch to a pre-prepared thread state without extensive saving and restoring operations, significantly reducing context switch overhead

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent creates hardware copies of thread state information in thread control blocks and caches microinstruction sequences for multiple threads simultaneously. Instead of serially saving and restoring single-thread states, multiple thread states are maintained in parallel in hardware, allowing rapid switching between threads without repeated save/restore cycles

Inventive Principle:
Principle #26Copying

2Productivity

If microinstruction sequences are optimized through reordering into dependent code groups, then execution efficiency is improved, but processing complexity increases

Engineering Contradiction:
Improveexecution efficiencyVSAvoidoptimization processing complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments microinstruction sequences into dependent code groups that can be independently optimized and executed. By dividing the instruction stream into logical segments with clear dependency boundaries, the optimization processor can work on smaller, manageable units rather than entire instruction sequences, reducing the complexity of the optimization process while maintaining execution efficiency

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs microinstruction reordering and optimization in advance during compilation or code generation, creating optimized instruction sequences before execution. This preliminary optimization eliminates the need for complex real-time reordering during processor execution, shifting the complexity to a pre-processing stage where it can be handled more efficiently

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10191746B2Accelerated code optimizer for a multiengine microprocessor
Publication Date: 2019.01.29 INTEL CORP
  • US10191746B2 patent drawing
  • US10191746B2 patent drawing
  • US10191746B2 patent drawing

AI summary

A method for accelerating code optimization a microprocessor. The method includes fetching an incoming microinstruction sequence using an instruction fetch component and transferring the fetched macroinstructions to a decoding component for decoding into microinstructions. Optimization processing is performed by reordering the microinstruction sequence into an optimized microinstruction sequence comprising a plurality of dependent code groups. The plurality of dependent code groups are then output to a plurality of engines of the microprocessor for execution in parallel. A copy of the optimized microinstruction sequence is stored into a sequence cache for subsequent use upon a subsequent hit optimized microinstruction sequence.