Masked Consecutive Source Element Store with Propagation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current processors face challenges in efficiently storing consecutive source elements to unmasked result elements while propagating values to masked result elements, particularly in SIMD architectures, which limits their ability to effectively implement loops with data dependencies and vectorize computations.

Innovation Solution

The introduction of masked consecutive source element store with propagation instructions allows processors to store consecutive source elements to unmasked result elements and propagate values to adjoining masked result elements, enabling efficient data manipulation and loop vectorization by using specific vector friendly instruction formats and execution units that handle packed data operations with masks.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If conventional SIMD architectures store consecutive source elements to unmasked result elements, then data storage efficiency is improved, but the ability to propagate values to masked result elements is limited

Engineering Contradiction:
Improvedata storage efficiencyVSAvoidloop vectorization capability
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent introduces dynamic mask propagation capability that adapts the storage behavior based on mask status. When mask elements indicate masked result elements, the system dynamically propagates values from unmasked source elements to masked result elements, enabling flexible adaptation to different computation patterns and loop structures.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The instruction system is enhanced to perform multiple functions: storing consecutive source elements to unmasked result elements, propagating values to masked result elements, and supporting various loop vectorization patterns. This multi-functional approach allows a single instruction type to handle diverse computational scenarios.

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

2Device complexity

If processors use existing store instructions without propagation, then instruction simplicity is maintained, but computation vectorization efficiency deteriorates

Engineering Contradiction:
Improveinstruction format complexityVSAvoidcomputation vectorization efficiency
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent merges the store operation with the propagation operation into a single instruction. The masked consecutive source element store with propagation instruction combines data storage and value propagation functions, reducing the number of instructions needed and improving vectorization efficiency without significantly increasing instruction format complexity.

Inventive Principle:
Principle #5Merging (Combining)

3Reliability

If masked result elements are not propagated from unmasked source elements, then data accuracy is maintained, but loop execution performance deteriorates

Engineering Contradiction:
Improvedata accuracyVSAvoidloop execution time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary propagation of values from unmasked source elements to masked result elements during the store operation itself, rather than requiring subsequent separate operations. This preliminary action ensures data accuracy is maintained while reducing the total execution time of loops by eliminating redundant operations.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10223113B2Processors, methods, systems, and instructions to store consecutive source elements to unmasked result elements with propagation to masked result elements
Publication Date: 2019.03.05 INTEL CORP
  • US10223113B2 patent drawing
  • US10223113B2 patent drawing
  • US10223113B2 patent drawing

AI summary

A processor of an aspect includes a decode unit to decode an instruction indicating a first source packed data operand including at least four data elements, a source mask including at least four mask elements, and a destination storage location. An execution unit, in response to the instruction, stores a result packed data operand having a series of at least two unmasked result data elements. Each of the unmasked result data elements stores a value of a different one of at least two consecutive data elements of the first source packed data operand in a relative order. All masked result elements, which are between a nearest corresponding pair of unmasked result data elements, have a same value as an unmasked result data element of the corresponding pair, which is closest to a first end of the result packed data operand. The masked result data elements correspond to masked mask elements.