Vector Horizontal Add Instruction for Packed Data Processing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current computer processors lack an efficient method for performing vector horizontal add operations on signed/unsigned words and doublewords, which are essential for digital signal processing and other applications, requiring multiple instructions and complex pipelines.

Innovation Solution

The introduction of specific vector-friendly instruction formats and instructions, such as VPHADDLSWUQ, VPHADDLSWQ, VPHADDLSDUQ, and VPHADDLSDQ, that allow for single-instruction multiple-data (SIMD) operations to perform horizontal adds on packed data elements, saturating results as needed, and storing them in destination registers.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple instructions are used to perform horizontal add operations on packed data elements, then the operation can be completed with existing processor capabilities, but the number of instructions increases and pipeline efficiency decreases

Engineering Contradiction:
Improvepipeline efficiencyVSAvoidnumber of instructions
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent combines multiple separate instructions into a single vector horizontal add instruction that can operate on multiple packed data elements simultaneously. The new instruction merges the functionality of what previously required separate load, add, and store operations into one unified operation that processes 4, 8, or 16 data elements in parallel, thereby improving pipeline efficiency and reducing instruction count.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent creates a universal vector horizontal add instruction that can handle multiple data element sizes (bytes, halfwords, words, doublewords) and multiple data element counts (4, 8, or 16 elements) through a single instruction format. This multi-functional instruction replaces the need for multiple specialized instructions, improving both productivity and simplifying the instruction set.

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

2Productivity

If existing SIMD microarchitectures are used to perform multiply-accumulate operations, then the processor can execute operations sequentially, but the number of instructions required increases

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

Solution Approach 1:

The patent enables continuous execution of vector horizontal add operations by allowing the instruction to operate on multiple data elements in a single execution slot. The instruction maintains continuous useful action by processing 4, 8, or 16 packed data elements through a single instruction that keeps the execution pipeline fully utilized without gaps between operations.

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentUS11249754B2Apparatus and method for vector horizontal add of signed/unsigned words and doublewords
Publication Date: 2022.02.15 INTEL CORP
  • US11249754B2 patent drawing
  • US11249754B2 patent drawing
  • US11249754B2 patent drawing

AI summary

An apparatus and method for performing a packed horizontal addition of words and doublewords. One embodiment of a processor includes a decoder to decode a packed horizontal add instruction which includes an opcode and one or more operands used to identify a plurality of packed words; a source register to store a plurality of packed words; execution circuitry to execute the decoded instruction, and a destination register to store a final result as a packed result word in a designated data element position. The execution circuitry includes operand selection circuitry to identify first and second packed words from the source register in accordance with the operands and opcode; adder circuitry to add the two packed words to generate a temporary sum; a temporary storage of at least 17 bits to store the temporary sum; and saturation circuitry to saturate the temporary sum if necessary to generate the final result.