Vector Processing Unit Strided Loading for Non-Sequential Memory

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Efficient vectorization of microprocessors is hindered when data elements are stored in non-sequential memory locations, as existing methods struggle to optimize SIMD instructions for such scenarios, leading to suboptimal performance.

Innovation Solution

A system with a vector processing unit that performs vector load and store operations by calculating a skip factor based on the stride and vector register size, allowing for efficient loading and storing of operands in non-sequential memory locations using shuffle and permute operations, and masking to manage unused elements.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If data elements are stored in non-sequential memory locations, then memory storage flexibility is improved, but vectorization efficiency deteriorates

Engineering Contradiction:
Improvememory storage flexibilityVSAvoidvectorization efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent segments the data access pattern into multiple independent load operations with calculated strides. Instead of treating non-sequential access as a single complex operation, it divides the access into sequential loads with predictable gaps, allowing each segment to be optimized independently while maintaining overall efficiency.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary calculation of the skip factor based on the stride and vector register size before executing memory loads. This advance computation enables the processor to pre-determine which memory locations to access, eliminating runtime overhead and optimizing the execution path for non-sequential data patterns.

Inventive Principle:
Principle #10Preliminary action

2Speed

If SIMD instructions are used to perform operations on multiple data elements simultaneously, then processing speed is improved, but memory access complexity increases

Engineering Contradiction:
Improveprocessing speedVSAvoidmemory access complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The patent changes the memory access parameters by introducing a calculated skip factor that transforms complex non-sequential access patterns into simplified sequential-like access with predictable gaps. This parameter transformation allows SIMD instructions to operate efficiently while the memory access complexity is managed through mathematical calculation rather than complex hardware logic.

Inventive Principle:
Principle #35Parameter changes

3Productivity

If vector load operations are performed on non-sequential memory locations, then data processing capability is improved, but memory bandwidth utilization deteriorates

Engineering Contradiction:
Improvedata processing capabilityVSAvoidmemory bandwidth utilization
Core Design Contradiction:
ProductivityVSLoss of energy

Solution Approach 1:

The patent implements a skip mechanism that deliberately bypasses intermediate memory locations that would otherwise be accessed in a continuous sequential pattern. By calculating and skipping over unused memory locations, the system rushes through the necessary data elements without wasting memory bandwidth on irrelevant locations, thereby improving both processing capability and bandwidth efficiency.

Inventive Principle:
Principle #21Skipping (Rushing through)

Data Source

PatentUS10353708B2Strided loading of non-sequential memory locations by skipping memory locations between consecutive loads
Publication Date: 2019.07.16 ADVANCED MICRO DEVICES INC
  • US10353708B2 patent drawing
  • US10353708B2 patent drawing
  • US10353708B2 patent drawing

AI summary

Systems, apparatuses, and methods for utilizing efficient vectorization techniques for operands in non-sequential memory locations are disclosed. A system includes a vector processing unit (VPU) and one or more memory devices. In response to determining that a plurality of vector operands are stored in non-sequential memory locations, the VPU performs a plurality of vector load operations to load the plurality of vector operands into a plurality of vector registers. Next, the VPU performs a shuffle operation to consolidate the plurality of vector operands from the plurality of vector registers into a single vector register. Then, the VPU performs a vector operation on the vector operands stored in the single vector register. The VPU can also perform a vector store operation by permuting and storing a plurality of vector operands in appropriate locations within multiple vector registers and then storing the vector registers to locations in memory using a mask.