LoadIndicesAndPrefetchScatter Instruction for Sparse Memory Access

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern processors face challenges in efficiently executing complex instructions such as floating-point operations, load/store operations, and data moves, which require more execution time and resources, impacting overall processor performance, especially in applications like internet, text, and multimedia tasks.

Innovation Solution

The introduction of an instruction set architecture that includes extended vector instructions, such as LoadIndicesAndPrefetchScatter and LoadIndicesScatterAndPrefetch, which allow for loading indices from an array and prefetching data from sparse memory locations, optimizing pipeline throughput by taking ownership of memory locations for subsequent scatter operations, and utilizing SIMD technology to perform operations on packed data types.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If traditional load/store instructions are used for sparse memory access, then memory operations can be performed, but processor performance deteriorates due to increased execution time and resource consumption

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

Solution Approach 1:

The patent performs preliminary actions by loading indices into the index register and prefetching data from sparse memory locations before the actual scatter operation is needed. The LoadIndicesAndPrefetchScatter instruction executes the load and prefetch operations in advance, so that when the scatter operation occurs, the data is already available in the buffer, eliminating waiting time and improving instruction throughput.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent segments the memory access operation into distinct phases: index loading, data prefetching, and scatter operation. By using separate index registers and buffer structures, the patent divides the complex sparse memory access into manageable segments that can be processed efficiently in parallel, reducing overall execution time.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If complex instructions such as floating-point operations and data moves are executed, then computational tasks can be completed, but processor performance deteriorates due to increased resource consumption

Engineering Contradiction:
Improveinstruction capabilityVSAvoidresource utilization
Core Design Contradiction:
Adaptability or versatilityVSUse of energy by moving object

Solution Approach 1:

The patent merges multiple operations into a single unified instruction: LoadIndicesAndPrefetchScatter combines index loading, data prefetching, and scatter operation execution into one atomic instruction. This consolidation reduces the number of separate instruction fetches, decodes, and executions, thereby reducing resource utilization while maintaining full computational capability.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent creates a universal instruction that handles multiple functions: loading indices, prefetching data from sparse memory, buffering the data, and performing scatter operations. This multi-functional instruction reduces the need for multiple specialized instructions, decreasing overall resource consumption while maintaining adaptability for various computational tasks.

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

Data Source

PatentEP3391203B1Instructions and logic for load-indices-and-prefetch-scatters operations
Publication Date: 2021.09.29 INTEL CORP
  • EP3391203B1 patent drawingFigure 1A
  • EP3391203B1 patent drawingFigure 1B
  • EP3391203B1 patent drawingFigure 1C

AI summary

A processor includes an execution unit to execute instructions to load indices from an array of indices, optionally perform scatters, and prefetch (to a specified cache) contents of target locations for future scatters from arbitrary locations in memory. The execution unit includes logic to load, for each target location of a scatter or prefetch operation, an index value to be used in computing the address in memory for the operation. The index value may be retrieved from an array of indices identified for the instruction. The execution unit includes logic to compute the addresses based on the sum of a base address specified for the instruction, the index value retrieved for the location, and a prefetch offset (for prefetch operations), with optional scaling. The execution unit includes logic to retrieve data elements from contiguous locations in a source vector register specified for the instruction to be scattered to the memory.