Macroscalar Architecture Vector Processing with Runtime Dependency Resolution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional vector processors face limitations in vectorizing loops due to dependencies between iterations, such as loop-carried data dependencies and memory-address aliasing, which restrict the extent of parallelism that can be determined at compile-time, leading to reduced performance benefits from vectorization.

Innovation Solution

The Macroscalar Architecture enables dynamic switching between scalar and vector execution based on runtime conditions, using instructions that allow for vector-length agnostic operations and speculative execution to handle dependencies, thereby enabling parallelism to be exploited at runtime without requiring complete parallelism determination at compile-time.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If the compiler determines parallelism during compilation, then the vectorization can be performed, but the extent of parallelism is limited due to unresolved runtime dependencies

Engineering Contradiction:
Improvevectorization extentVSAvoidruntime dependency information
Core Design Contradiction:
ProductivityVSLoss of information

Solution Approach 1:

The compiler performs preliminary static analysis to identify potential parallelism and generates vectorized code, but defers the final determination of parallelism extent to runtime when actual dependency information is available. This allows the system to prepare vectorization in advance while adapting to runtime conditions.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system transitions from static compile-time parallelism determination to dynamic runtime parallelism determination. The processor can adjust the degree of vectorization based on runtime dependency analysis, allowing the vectorization extent to be dynamic rather than fixed at compilation.

Inventive Principle:
Principle #15Dynamics

2Productivity

If loops are vectorized in conventional DLP processors, then performance benefits are gained, but loop-carried data dependencies and memory-address aliasing prevent complete vectorization

Engineering Contradiction:
Improveexecution performanceVSAvoiddependency resolution accuracy
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system introduces an intermediary mechanism (runtime dependency analysis) between the compiler and the processor execution. The compiler generates vectorized code with placeholders for dependency checks, and the runtime system resolves actual dependencies, mediating between static compilation and dynamic execution to ensure correctness while enabling vectorization.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Adaptability or versatility

If speculative execution is used to handle dependencies, then more loops can be vectorized, but the complexity of the architecture increases

Engineering Contradiction:
Improvevectorization capabilityVSAvoidarchitecture complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The processor performs self-service dependency resolution through runtime analysis of the executed code. The system uses its own execution traces and dependency information to dynamically determine vectorization opportunities, reducing the need for external compiler analysis and simplifying the overall architecture while maintaining high adaptability.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9335997B2Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture
Publication Date: 2016.05.10 APPLE INC
  • US9335997B2 patent drawing
  • US9335997B2 patent drawing
  • US9335997B2 patent drawing

AI summary

Embodiments of a system and a method in which a processor may execute instructions that cause the processor to receive an operand vector, a selection vector, and a control vector are disclosed. The executed instructions may also cause the processor to perform a wrapping rotate previous operation dependent upon the input vectors.