Fused Multiply-Adder for Complex Number Operations

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current computer processors face inefficiencies in performing complex multiply and accumulate operations, particularly in handling packed real and imaginary data elements, as they often require multiple instructions and complex logic to achieve accurate results.

Innovation Solution

The implementation of a specific instruction set architecture (ISA) that includes instructions like VCFMADDPH and VCFCMADDPH, which allow for a single instruction to perform complex multiply and accumulate operations on packed data, utilizing a fused multiply-adder to calculate both real and imaginary components efficiently.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If traditional processor architecture is used to perform complex multiply and accumulate operations, then multiple instructions and complex logic are required, but this results in reduced processing speed and increased instruction complexity

Engineering Contradiction:
Improveprocessing speedVSAvoidinstruction complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The patent combines multiple operations (complex multiplication and accumulation) into a single fused instruction that can be executed in one cycle. The fused multiply-adder circuit integrates the multiplication and addition functions into a unified hardware structure, allowing both operations to be performed simultaneously rather than sequentially, thereby improving processing speed while reducing the number of instructions required.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The fused multiply-adder circuit is designed to handle multiple data formats (half-precision, single-precision, and double-precision floating-point) and different operation types (complex multiplication, complex accumulation, and combined operations) through a single unified hardware structure. This multi-functional design eliminates the need for separate dedicated circuits for each operation type, reducing overall device complexity while maintaining high processing speed.

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

2Productivity

If multiple instructions are used to perform complex number operations on packed data, then processing accuracy can be maintained, but the number of instructions increases and processing efficiency decreases

Engineering Contradiction:
Improvecomputational throughputVSAvoidinstruction execution time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The processor performs preliminary preparation of packed complex data by organizing real and imaginary components into specific register formats before execution. The fused multiply-adder circuit is pre-configured with the necessary data pathways and control logic to handle multiple data elements in parallel, allowing the single instruction to process multiple complex numbers simultaneously without requiring intermediate instructions for data reorganization.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The fused instruction maintains continuous processing by eliminating idle cycles between multiplication and accumulation operations. The hardware circuitry is designed to pipeline the operations such that while one multiplication is being completed, the next accumulation can begin, ensuring that the processing unit remains continuously productive without interruption or waiting periods that would occur with sequential instruction execution.

Inventive Principle:
Principle #20Continuity of useful action

Data Source

PatentUS10489154B2Apparatus and method for complex multiply and accumulate
Publication Date: 2019.11.26 INTEL CORP
  • US10489154B2 patent drawing
  • US10489154B2 patent drawing
  • US10489154B2 patent drawing

AI summary

An embodiment of the invention is a processor including execution circuitry to calculate, in response to a decoded instruction, a result of a complex multiply-accumulate of a first complex number, a second complex number, and a third complex number. The calculation includes a first operation to calculate a first term of a real component of the result and a first term of the imaginary component of the result. The calculation also includes a second operation to calculate a second term of the real component of the result and a second term of the imaginary component of the result. The processor also includes a decoder to decode an instruction to generate the decoded instruction and a first source register, a second source register, and a source and destination register to provide the first complex number, the second complex number, and the third complex number, respectively.