Vector Conflict Detection for Scalar-to-SIMD Conversion

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing processor architectures face challenges in efficiently converting scalar processes to SIMD processes while preserving scalar program order due to data dependencies and memory conflicts, which hinders operational improvements and resource utilization.

Innovation Solution

The implementation of a processor core architecture that dynamically detects memory conflicts using vector-processing operations, allowing for the partitioning of loop iterations into ranges with no conflicts, enabling vectorization while maintaining proper memory ordering through the use of conflict detection logic and instruction formats that support bit-masking and vector comparison operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If scalar processes are converted to SIMD processes to improve processing speed and resource utilization, then productivity is improved, but reliability deteriorates due to potential violations of scalar program order from data dependencies and memory conflicts

Engineering Contradiction:
Improveprocessing speedVSAvoidprogram order preservation
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system performs preliminary conflict detection by comparing memory addresses in the first vector against memory addresses in the second vector before executing the vectorized loop. This preliminary action identifies potential conflicts that would violate scalar program order, allowing the system to mask or serialize conflicting iterations while maintaining parallel execution of non-conflicting iterations, thus resolving the contradiction between improved productivity and preserved reliability

Inventive Principle:
Principle #10Preliminary action

2Loss of time

If vectorization is applied to process multiple data elements simultaneously to improve productivity, then processing time is reduced, but device complexity increases due to the need for conflict detection logic and instruction formats

Engineering Contradiction:
Improveprocessing timeVSAvoidconflict detection logic
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The system segments the vectorization process into distinct phases: conflict detection phase (comparing memory addresses using vector comparison instructions), conflict masking phase (generating mask vectors to identify conflicting iterations), and execution phase (executing vectorized operations with masking applied). This segmentation allows the use of existing vector instruction capabilities while adding conflict detection functionality, reducing the increase in device complexity compared to a fully integrated approach

Inventive Principle:
Principle #1Segmentation

3Reliability

If memory conflicts are detected and managed to preserve scalar program order, then reliability is improved, but productivity decreases due to reduced parallelism

Engineering Contradiction:
Improveprogram order preservationVSAvoidparallelism
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system applies local quality by generating a mask vector where each element independently indicates whether the corresponding iteration is conflicting or non-conflicting. This allows different quality treatments for different iterations: conflicting iterations are serialized or masked to preserve program order, while non-conflicting iterations execute in parallel with full vectorization. This local differentiation maintains reliability for critical operations while preserving productivity through parallel execution of safe operations

Inventive Principle:
Principle #3Local quality

Data Source

PatentEP3238091B1Fast vector dynamic memory conflict detection
Publication Date: 2020.05.13 INTEL CORP
  • EP3238091B1 patent drawingFigure 1A~1B
  • EP3238091B1 patent drawingFigure 2A~2B
  • EP3238091B1 patent drawingFigure 3

AI summary

In one embodiment vector conflict detection instructions are disclosed to perform dynamic memory conflict detection within a vectorized iterative scalar operation. The instructions may be performed by a vector processor to generate a partition vector identifying groups of conflict free iterations. The partition vector may be used to generate a write mask for subsequent vector operations.