Vector Processor Dependency Prediction Micro-Operations

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing vector processors face challenges in vectorizing loops due to dependencies between iterations, which limits the performance benefits of data-level parallelism, as compilers cannot conclusively determine runtime dependencies and require extensive manual recoding for thread-level and data-level parallelism.

Innovation Solution

A processor that executes vector instructions by predicting the result of dependency-checking instructions using a prediction micro-operation, generating a predicted result vector, and executing subsequent instructions speculatively, with remedial actions taken if the prediction differs from the actual result, allowing for dynamic adaptation of parallelism based on runtime conditions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If dependency-checking instructions are executed to determine runtime dependencies, then vectorization safety is improved, but execution time increases due to sequential dependency resolution

Engineering Contradiction:
Improvevectorization safetyVSAvoidexecution time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary actions by executing dependency-checking instructions before the main vectorized computation. These instructions determine at runtime whether dependencies exist between loop iterations, allowing the processor to prepare the execution plan in advance and avoid unnecessary sequential resolution steps during the main computation loop.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent applies skipping by allowing the processor to skip the sequential dependency resolution step when the dependency-checking instruction indicates no dependencies exist. This enables the processor to rush through the vectorized computation directly without performing expensive sequential resolution operations, thereby improving performance while maintaining safety through the preliminary check.

Inventive Principle:
Principle #21Skipping (Rushing through)

2Productivity

If compilers perform static analysis to determine dependencies, then code vectorization is improved, but adaptability to runtime conditions deteriorates

Engineering Contradiction:
Improvecode vectorizationVSAvoidadaptability to runtime conditions
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The system implements dynamics by transitioning from static compiler analysis to runtime-dependent execution. The dependency-checking instructions are executed at runtime to determine actual dependencies, allowing the vectorization strategy to adapt dynamically to real-time conditions such as data characteristics and memory access patterns, rather than relying on fixed static analysis results.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent applies parameter changes by modifying the vectorization parameters based on runtime dependency detection results. When dependency-checking instructions reveal specific dependency patterns, the system changes execution parameters such as vector length, iteration scheduling, or parallelization strategy to optimize performance under the actual runtime conditions rather than using predetermined static parameters.

Inventive Principle:
Principle #35Parameter changes

3Reliability

If vector processors execute instructions sequentially to resolve dependencies, then correctness is improved, but throughput deteriorates

Engineering Contradiction:
ImprovecorrectnessVSAvoidthroughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system applies segmentation by dividing the instruction execution into distinct phases: dependency-checking instructions are executed separately before the main vectorized instructions. This segmentation allows the correctness verification to be performed in isolation without blocking the entire throughput path, as the dependency resolution is performed as a preliminary step rather than during the critical throughput-bound execution phase.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements preliminary action by performing dependency resolution before the main computation loop. The dependency-checking instructions are executed in advance to determine safety constraints, allowing the subsequent vectorized instructions to execute at full throughput without repeated sequential correctness checks, thus decoupling correctness verification from throughput-limiting operations.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9122485B2Predicting a result of a dependency-checking instruction when processing vector instructions
Publication Date: 2015.09.01 APPLE INC
  • US9122485B2 patent drawing
  • US9122485B2 patent drawing
  • US9122485B2 patent drawing

AI summary

The described embodiments include a processor that executes a vector instruction. In the described embodiments, while dispatching instructions at runtime, the processor encounters a dependency-checking instruction. Upon determining that a result of the dependency-checking instruction is predictable, the processor dispatches a prediction micro-operation associated with the dependency-checking instruction, wherein the prediction micro-operation generates a predicted result vector for the dependency-checking instruction. The processor then executes the prediction micro-operation to generate the predicted result vector. In the described embodiments, when executing the prediction micro-operation to generate the predicted result vector, if a predicate vector is received, for each element of the predicted result vector for which the predicate vector is active, otherwise, for each element of the predicted result vector, the processor sets the element to zero.