Vector Blend Permute Instruction for Misaligned Data Rearrangement

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern processors face performance bottlenecks due to the need to rearrange data stored in physical memory to align with SIMD vector registers, particularly for misaligned addresses or data across cache lines, which is not efficiently handled by existing special-case instructions requiring additional circuitry or preprocessing.

Innovation Solution

The implementation of vector blend and permute instructions that specify a destination register, element size, mask, indices vector, and source vectors, allowing for efficient rearrangement of data by copying elements based on selector portions, enabling efficient handling of misaligned data without specialized circuitry or preprocessing.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If data is stored in physical memory at misaligned addresses or across cache line boundaries, then data parallelism can be achieved, but additional circuitry or preprocessing is required to rearrange data in vector registers

Engineering Contradiction:
Improvedata parallelismVSAvoidadditional circuitry or preprocessing
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The blend and permute instruction combines multiple data rearrangement operations into a single universal instruction that can handle misaligned addresses, cache line boundaries, and various data layouts. This multi-functional instruction eliminates the need for multiple specialized instructions and associated circuitry, resolving the contradiction by providing general-purpose data rearrangement capability that works for all misalignment cases without requiring additional specialized hardware.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The patent merges the blend operation (selecting elements from two source vectors based on a mask) and the permute operation (rearranging elements according to an index vector) into a single integrated instruction. This combination allows data to be both selected and rearranged in one operation, reducing the number of separate circuitry components and preprocessing steps needed, thereby maintaining data parallelism while reducing device complexity.

Inventive Principle:
Principle #5Merging (Combining)

2Reliability

If special-case instructions are implemented to handle misaligned addresses or specific transformations, then those specific cases can be handled, but adaptability to other cases is limited and more specialized circuitry is required

Engineering Contradiction:
Improvehandling of specific casesVSAvoidadaptability to other cases
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The blend-permute instruction is designed as a universal operation that can handle not only misaligned addresses and cache line boundaries but also transpositions, reversals, and other data rearrangement patterns. By using configurable mask and index vectors, the same instruction adapts to various data layout requirements without needing specialized variants, thus improving versatility while maintaining reliable handling of specific cases through the same unified mechanism.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Productivity

If preprocessing of data is performed to enable adaptation to vector operations, then vector operations can be performed, but performance advantages from wide vector architecture are limited

Engineering Contradiction:
Improvevector operation capabilityVSAvoidpreprocessing time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The blend and permute operations perform preliminary data rearrangement directly within the vector registers before the main computational operations are applied. By preparing the data in the correct alignment and order upfront using these dedicated instructions, subsequent vector operations can proceed immediately without requiring additional preprocessing steps, thus eliminating time loss while maintaining full vector operation capability.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The blend-permute instruction acts as an intermediary operation between data loading from memory and the main computational vector operations. It mediates the data transformation by rearranging elements according to mask and index vectors, creating properly aligned intermediate results that can be efficiently processed by subsequent vector instructions. This intermediary step eliminates the need for multiple preprocessing operations, reducing overall execution time while preserving vector architecture performance advantages.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS10037205B2Instruction and logic to provide vector blend and permute functionality
Publication Date: 2018.07.31 INTEL CORP
  • US10037205B2 patent drawing
  • US10037205B2 patent drawing
  • US10037205B2 patent drawing

AI summary

Vector blend and permute functionality are provided, responsive to instructions specifying: a destination vector register comprising fields to store vector elements, a first vector register, a vector element size, a second vector register, and a third operand. Indices are read from fields in the second register. Each index has a first selector portion and a second selector portion. Corresponding unmasked vector elements are stored to fields of the destination register, wherein each vector element, responsive to the respective first selector portion having a first value, is copied to an intermediate vector from a corresponding data field of the first register, and responsive to the respective first selector portion having a second value, is copied to the intermediate vector from a corresponding data field of the third operand. Then unmasked data fields of the destination are replaced by data fields in the intermediate vector indexed by the corresponding second selector portions.