Cumulative Product Instruction for Vectorized Data Processing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing computer processor architectures face challenges in efficiently performing cumulative product operations across multiple data elements, particularly in scientific and machine learning applications where loop-carried dependencies hinder vectorization.

Innovation Solution

A cumulative-product (cumprod) instruction is introduced, which calculates the cumulative product of each data element position in a packed data source operand and stores the result in a corresponding data element position of a packed data destination operand, utilizing a specific instruction format that includes fields for source and destination operands and a writemask for conditional operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If traditional processor architectures are used to perform cumulative product operations, then the operations can be completed, but the performance is degraded due to loop-carried dependencies that hinder vectorization

Engineering Contradiction:
Improvecumulative product operation performanceVSAvoidinstruction complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The cumulative product operation is segmented into multiple data element positions within packed data operands. Each data element position is independently processed to compute its cumulative product, allowing parallel execution across multiple elements while maintaining the sequential dependency within each element's calculation chain.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent transitions from scalar sequential processing to vectorized parallel processing by operating on packed data containing multiple data elements simultaneously. This dimensional change from 1D sequential operations to ND parallel operations enables vectorization despite loop-carried dependencies.

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

2Speed

If vectorization is attempted for cumulative product operations, then processing speed can be improved, but loop-carried dependencies prevent effective vectorization

Engineering Contradiction:
Improveprocessing speedVSAvoidvectorization effectiveness
Core Design Contradiction:
SpeedVSReliability

Solution Approach 1:

The operation is segmented into independent data element positions that can be processed in parallel. Each position's cumulative product calculation is segmented from others, allowing simultaneous execution across multiple positions while preserving the sequential dependency chain within each position.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent enables vectorization by moving from scalar sequential execution to vector parallel execution across multiple data elements. The loop-carried dependency is resolved by processing different elements of the same iteration in parallel rather than sequentially across iterations.

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

3Adaptability or versatility

If multiple instructions are used to perform cumulative product operations, then flexibility can be maintained, but the number of instructions increases execution overhead

Engineering Contradiction:
Improveoperation flexibilityVSAvoidexecution overhead
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

Multiple operations are merged into a single cumulative product instruction that processes all data element positions in one execution. The instruction combines loading packed data, computing cumulative products for all positions, and storing results into a single atomic operation, eliminating the overhead of multiple separate instructions.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The cumulative product instruction is designed as a universal operation that can process different data types and packed data formats. The single instruction handles various operand sizes and configurations, providing flexibility without requiring multiple specialized instructions.

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

Data Source

PatentUS10089110B2Systems, apparatuses, and methods for cumulative product
Publication Date: 2018.10.02 INTEL CORP
  • US10089110B2 patent drawing
  • US10089110B2 patent drawing
  • US10089110B2 patent drawing

AI summary

Systems, methods, and apparatuses for executing an instruction are described. In some embodiments, the instruction includes at least an opcode, a field for a packed data source operand, and a field for a packed data destination operand. When executed, the instruction causes for each data element position of the source operand, multiply to a value stored in that data element position all values stored in preceding data element positions of the packed data source operand and store a result of the multiplication into a corresponding data element position of the packed data destination operand.