Vector Friendly Instruction Format Complex Multiply-Accumulate

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current processor architectures require multiple instructions to perform multiply-accumulate operations on complex values, which is inefficient and can be improved by implementing a single instruction that can handle these operations effectively.

Innovation Solution

The introduction of a vector friendly instruction format that supports complex vector operations, allowing for the execution of multiply-accumulate operations on packed data elements with real and imaginary components in a single instruction, utilizing a VEX instruction format and specific opcode encoding to enable efficient complex-by-complex multiplication and accumulation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If existing SIMD microarchitectures are used to implement multiply-accumulate operations, then the operations can be performed using standard instructions, but multiple instructions are required which reduces processing efficiency

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

Solution Approach 1:

The patent combines multiplication and accumulation operations into a single unified instruction (VPMACCS). This merging of operations allows the processor to execute complex multiply-accumulate operations in one instruction rather than requiring separate multiply and add instructions, directly improving productivity while managing device complexity through instruction consolidation

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The VPMACCS instruction is designed to handle multiple data types (complex numbers, packed integers) and perform multiple operations (multiplication, accumulation, saturation) within a single instruction framework. This multi-functionality approach allows the same instruction to serve multiple purposes, improving processing efficiency without requiring separate specialized instructions for each operation type

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

2Speed

If complex values are processed using standard SIMD instructions, then compatibility with existing processor architectures is maintained, but the processing speed and performance are reduced due to multiple instruction sequences

Engineering Contradiction:
Improveprocessing speedVSAvoidinstruction execution time
Core Design Contradiction:
SpeedVSLoss of time

Solution Approach 1:

The patent performs preliminary organization of complex number data into packed formats (e.g., 128-bit registers containing multiple complex values) before execution. This preliminary preparation allows the single VPMACCS instruction to process multiple complex values simultaneously, increasing processing speed and reducing the total time required compared to sequential processing with standard instructions

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The VPMACCS instruction enables continuous processing by eliminating the need to wait for separate multiply and add instructions to complete. The instruction performs both operations in a continuous manner within a single execution cycle, maximizing processor utilization and reducing idle time, thereby improving speed and reducing instruction execution time

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentUS11334319B2Apparatus and method for multiplication and accumulation of complex values
Publication Date: 2022.05.17 INTEL CORP
  • US11334319B2 patent drawing
  • US11334319B2 patent drawing
  • US11334319B2 patent drawing

AI summary

An apparatus and method for multiplying packed unsigned words. For example, one embodiment of a processor comprises: a decoder to decode a first instruction to generate a decoded instruction; a first source register to store a first plurality of packed unsigned words; a second source register to store a second plurality of packed unsigned words; execution circuitry to execute the decoded instruction, the execution circuitry comprising: multiplier circuitry to multiply each of a plurality of packed unsigned words from the first source register with corresponding packed unsigned words from the second source register to generate a plurality of products responsive to the decoded instruction, adder circuitry to add the products to generate a first result, and accumulation circuitry to combine the first result with an accumulated result to generate a final result comprising a third plurality of packed unsigned words, and to write the third plurality of packed unsigned words or a maximum value to a destination register.