Strided Load Instruction for Vector Data Permutation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current instruction set architectures face inefficiencies in vectorizing loops with strided loads from arrays of structures, particularly due to complex gather implementations and increased register pressure with gather-to-shuffle optimizations, which lead to suboptimal performance and poor locality of data access.

Innovation Solution

The introduction of a strideload instruction that allows loading packed data elements from concatenated source operands using a stride and storing results in a destination operand, with the stride and offset defined by immediate values, reducing register pressure and simplifying data permutation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If gather instructions are used to load strided data from arrays of structures, then data can be loaded with stride, but the implementation becomes complex and register pressure increases

Engineering Contradiction:
Improvestrided data loading capabilityVSAvoidgather implementation complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent extracts the strided load operation from the complex gather instruction set and creates a dedicated strideload instruction. This separates the specific strided loading function from the general gather mechanism, simplifying the overall implementation while maintaining strided data loading capability. The strideload instruction directly loads data with stride without requiring complex gather-to-shuffle sequences.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent segments the data loading operation into a dedicated strideload instruction that handles strided accesses independently from other memory operations. This segmentation allows the strided load to be optimized specifically for its use case, avoiding the overhead of general gather instructions and reducing register pressure by eliminating the need for additional shuffle operations.

Inventive Principle:
Principle #1Segmentation

2Productivity

If gather-to-shuffle optimizations are applied, then strided loads can be performed, but register pressure increases and performance deteriorates

Engineering Contradiction:
Improvestrided load performanceVSAvoidregister pressure
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent removes the unnecessary shuffle operation from the gather-to-shuffle sequence by introducing a dedicated strideload instruction. This extraction eliminates the intermediate shuffle step that caused register pressure, directly loading strided data into the destination register without requiring additional registers for shuffle controls and temporary data.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent merges the strided load operation and data permutation into a single strideload instruction execution. By combining these operations that were previously separate steps (gather followed by shuffle), the instruction reduces the total number of registers needed and eliminates the performance penalty associated with multiple memory accesses and register operations.

Inventive Principle:
Principle #5Merging (Combining)

3Productivity

If conventional vectorization is used for strided loads, then data parallelism can be achieved, but data locality becomes poor and performance suffers

Engineering Contradiction:
Improvedata parallelism capabilityVSAvoiddata access locality
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The patent applies local quality by optimizing the memory access pattern specifically for strided loads, where data elements are accessed with a consistent stride. The strideload instruction is designed to handle this specific access pattern efficiently, maintaining data locality by loading data in a predictable sequence rather than using generic vectorization that would scatter data access throughout memory.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10282204B2Systems, apparatuses, and methods for strided load
Publication Date: 2019.05.07 INTEL CORP
  • US10282204B2 patent drawing
  • US10282204B2 patent drawing
  • US10282204B2 patent drawing

AI summary

Systems, methods, and apparatuses for strided loads are described. In an embodiment, an instruction to include at least an opcode, a field for at least two packed data source operands, a field for a packed data destination operand, and an immediate is designated as a strided load instruction. This instruction is executed to load packed data elements from the at least two packed data source operands using a stride and storing results of the strided loads in the packed data destination operand starting from a defined position determined in part from the immediate.