Lane-Based Strided Store Vector Register Reorganization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern processors face challenges in efficiently executing complex instructions such as floating-point operations and data rearrangement, which require more resources and time, impacting overall performance, especially in applications like multimedia and internet-based systems.

Innovation Solution

The introduction of lane-based strided store operations and extended vector instructions, such as those in the Intel AVX-512 instruction set, allows for efficient execution of vector operations by reorganizing data elements within vector registers and performing memory write operations in a way that optimizes resource utilization and execution time.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If traditional vector store operations are used, then memory write operations can be performed, but the throughput for complex operations is limited and resource utilization is inefficient

Engineering Contradiction:
Improveinstruction throughputVSAvoidexecution time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent segments the vector store operation into lane-based parallel operations. Each lane processes a subset of data elements independently, allowing simultaneous execution of multiple store operations. The vector register is divided into multiple lanes, with each lane handling specific data elements based on the strided pattern, thereby increasing throughput and reducing execution time for complex vector operations.

Inventive Principle:
Principle #1Segmentation

2Speed

If data elements are processed sequentially, then resource requirements are lower, but the execution time increases and performance deteriorates

Engineering Contradiction:
Improveexecution speedVSAvoidprocessing complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The patent implements dynamic lane-based processing where the number and configuration of lanes can be adjusted based on the specific operation requirements. The strided store operation dynamically assigns data elements to different lanes based on the stride value, allowing the processing structure to adapt to different data patterns and operation types, thereby achieving high execution speed without requiring fixed complex hardware for all possible operations.

Inventive Principle:
Principle #15Dynamics

3Productivity

If standard memory access patterns are used, then implementation is simpler, but memory access efficiency is reduced and throughput is limited

Engineering Contradiction:
Improvememory access throughputVSAvoidmemory access complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent changes the memory access parameters by introducing strided access patterns within each lane. Instead of standard sequential or fixed-pattern access, the strided store operation uses variable stride values to determine the spacing between accessed memory locations. This parameter change enables efficient memory access for scattered data patterns while maintaining lane-based parallelism, thereby increasing memory access throughput without requiring fundamentally complex memory subsystem changes.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentEP3391195B1Instructions and logic for lane-based strided store operations
Publication Date: 2021.12.01 INTEL CORP
  • EP3391195B1 patent drawingFigure 1A
  • EP3391195B1 patent drawingFigure 1B
  • EP3391195B1 patent drawingFigure 1C

AI summary

A processor includes an execution unit to execute lane-based strided store instructions. The execution unit includes logic to extract a first data element from each of multiple lanes within a source vector register and to extract a second data element from each lane. The execution unit includes logic to place, in a destination vector, the first data element extracted from the second lane next to the first data element extracted from the first lane, and the second data element extracted from the second lane next to the second data element extracted from the first lane. The execution unit includes logic to store the destination vector in memory, beginning at a location specified in the instruction, such that data elements placed next to each other in the destination vector are stored in contiguous locations. The data elements placed next to each other may be respective components of a data structure.