Vector Load Store Instructions for Array of Structures

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current processor architectures require numerous sequential load and store operations to transfer data items associated with arrays of structures (AoS) between memory and vector registers, leading to inefficiencies in high-performance computations.

Innovation Solution

The introduction of Load#N and Store#N instructions, which allow for concurrent loading and storing of multiple data items from/to multiple vector registers, reducing the number of operations needed to fully populate or empty vector registers.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If sequential load and store operations are used to transfer AoS data between memory and vector registers, then data transfer can be performed using standard processor instructions, but the number of operations required increases and processing efficiency decreases

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidnumber of operations
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent combines multiple separate load or store operations into a single vector instruction that can simultaneously access multiple memory locations and transfer multiple data items. The vector store/load instructions are designed to operate on arrays of structures by specifying a base address and a count, enabling concurrent transfer of multiple data items associated with AoS from/to multiple vector registers in one operation, thereby reducing the total number of operations required.

Inventive Principle:
Principle #5Merging (Combining)

2Loss of time

If multiple sequential operations are used to populate vector registers with AoS data, then compatibility with existing processor architectures is maintained, but the time required to complete data transfer increases

Engineering Contradiction:
Improvedata transfer timeVSAvoidinstruction set complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The vector store/load instructions are designed with multi-functionality to handle various data types and structures. The instructions can operate on different data element sizes (bytes, words, double-words, quad-words) and can process arrays of structures with varying numbers of elements per structure. This universal design allows a single instruction format to perform multiple functions, reducing data transfer time without requiring entirely new processor architecture.

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

3Device complexity

If traditional load/store instructions are used for AoS, then implementation simplicity is maintained, but the number of instructions required to transfer all data items increases

Engineering Contradiction:
Improveinstruction complexityVSAvoidoperations per cycle
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent introduces a new dimension to the traditional load/store instructions by adding vector register operands and structure element count parameters. This transforms scalar instructions that operate on single data items into vector instructions that can operate on multiple data items simultaneously. The instruction format is extended to include base address, count, and vector register specifications, enabling parallel data transfer operations that increase productivity while maintaining reasonable implementation complexity through systematic extension of existing instruction formats.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Data Source

PatentUS10019262B2Vector store/load instructions for array of structures
Publication Date: 2018.07.10 INTEL CORP
  • US10019262B2 patent drawing
  • US10019262B2 patent drawing
  • US10019262B2 patent drawing

AI summary

A processor comprises a plurality of vector registers, and an execution unit, operatively coupled to the plurality of vector registers, the execution unit comprising a logic circuit implementing a load instruction for loading, into two or more vector registers, two or more data items associated with a data structure stored in a memory, wherein each one of the two or more vector registers is to store a data item associated with a certain position number within the data structure.