Vector Packed Dual Complex Multiply Accumulate Instruction
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current computer processors require multiple instructions to perform multiplication and accumulation operations on packed data values, which can be inefficient for complex number operations involving real and imaginary components.
Innovation Solution
The implementation of a vector-friendly instruction format that allows for a single instruction to perform vector packed dual complex multiply and accumulate operations, using a VEX prefix to enable operations on 128-bit packed data registers, facilitating efficient processing of real and imaginary components within a single execution step.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If multiple instructions are used to perform multiplication and accumulation operations on packed data values, then the operations can be completed with existing single instruction multiple data (SIMD) microarchitectures, but the processing efficiency is reduced and the number of required instructions increases
Solution Approach 1:
The patent combines multiplication and accumulation operations that were previously performed by separate instructions into a single vector packed dual complex multiply and accumulate instruction. This merging of operations allows the processor to execute both multiplication of complex numbers and accumulation of results in one instruction cycle, thereby improving processing efficiency and reducing the total number of instructions required for digital signal processing tasks
Solution Approach 2:
The invention creates a universal instruction that handles both real and imaginary components of complex numbers simultaneously within a single operation. The vector packed dual complex multiply and accumulate instruction operates on packed data registers containing multiple complex values, performing multiplication and accumulation for both real and imaginary parts in parallel, thus providing multi-functionality that eliminates the need for separate instructions for different components
2Productivity
If separate operations are performed on real and imaginary components of complex numbers, then existing SIMD microarchitectures can handle the operations, but the computational throughput is reduced
Solution Approach 1:
The patent enables continuous useful action by performing multiplication and accumulation operations on real and imaginary components simultaneously within a single instruction execution. Instead of sequentially processing real components then imaginary components (which would create idle time), the dual complex multiply and accumulate instruction maintains continuous computational activity by operating on both components in parallel, thereby maximizing computational throughput and minimizing execution time
Solution Approach 2:
The invention transitions from processing real and imaginary components in separate sequential steps to processing them simultaneously in a parallel dimensional approach. By organizing data in packed registers that contain multiple complex values and using a single instruction to operate on all components across different dimensions (real and imaginary parts of multiple complex numbers), the processor achieves higher computational throughput by exploiting parallelism rather than sequential execution
Data Source
AI summary
An apparatus and method for multiplying packed real and imaginary components of complex numbers. A method comprises: multiplying selected imaginary and real data elements in a first and second source registers to generate a plurality of imaginary products; adding a first subset of the plurality of imaginary products to generate a first temporary result and adding a second subset of the plurality of imaginary products to generate a second temporary result; negating the first temporary result to generate a third temporary result and the second temporary result to generate a fourth temporary result; accumulating the third temporary result with first data to generate a first final result and accumulating the fourth temporary result with second data to generate a second final result; and storing the first final result and second final.


