Processor Vector Instruction Predicate Key Element Position

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing processor architectures face challenges in vectorizing loops due to loop-carried data dependencies and memory aliasing, which limits the adoption of data-level parallelism and requires extensive manual recoding, hindering widespread adoption.

Innovation Solution

A processor architecture that executes vector instructions with optional predicate vectors, determining key element positions and generating result vectors based on active elements, while setting status flags to indicate active positions, allowing for dynamic parallelism exploitation at runtime.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If vector processing is implemented to exploit data-level parallelism, then processing speed and productivity are improved, but device complexity increases and ease of operation deteriorates due to requiring manual recoding

Engineering Contradiction:
Improveprocessing speedVSAvoidease of use
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The system performs self-service through automatic vectorization. The processor includes circuitry that automatically detects loop structures and data dependencies in executable code, then generates vectorized versions without requiring manual intervention from programmers. This resolves the contradiction by maintaining high processing speed through vectorization while eliminating the need for manual recoding, thus preserving ease of operation.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

An intermediary component (vectorization circuitry or compiler infrastructure) is introduced between the existing executable code and the vector processing unit. This intermediary automatically analyzes the code, identifies vectorization opportunities, and translates scalar operations into vector operations, allowing standard code to benefit from vector processing without requiring manual recoding.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If static analysis is used to determine parallelism, then reliability is improved by ensuring correctness, but productivity is limited due to inability to handle runtime dependencies

Engineering Contradiction:
ImprovecorrectnessVSAvoidparallelism exploitation
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system transitions from static to dynamic analysis by incorporating runtime observation capabilities. The processor includes circuitry that monitors actual data values and dependency conditions during execution, allowing it to adaptively determine vectorization opportunities based on runtime conditions. This resolves the contradiction by maintaining reliability through correct dependency handling while improving productivity by exploiting parallelism that was previously undetectable at compile time.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system performs preliminary static analysis to identify potential vectorization candidates, then uses runtime observation to confirm safety and execute vectorization. This two-phase approach maintains reliability by verifying correctness before vectorization while improving productivity by capturing additional parallelism opportunities that become apparent during runtime.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS8650383B2Vector processing with predicate vector for setting element values based on key element position by executing remaining instruction
Publication Date: 2014.02.11 APPLE INC
  • US8650383B2 patent drawing
  • US8650383B2 patent drawing
  • US8650383B2 patent drawing

AI summary

The described embodiments include a processor that executes a vector instruction. The processor starts by receiving an input vector and optionally receiving a predicate vector as inputs. The processor then executes the vector instruction, which causes the processor to determine a key element position in the input vector and generate a result vector. When generating the result vector, if the predicate vector is received, for each element in the result vector for which a corresponding element of the predicate vector is active, otherwise, for each element of the result vector, the processor sets each element of the result vector to the right of the key element to a first predetermined value and sets each element of the result vector at or to the left of the key element to a second predetermined value. The processor then sets one or more processor status flags based on the values in the result vector.