IP Library Granted Patent US 7,392,368
Granted Patent B2
US 7,392,368 · App. 11/173,408 · Granted Jun 24, 2008

Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,392,368
App. No.
11/173,408
Granted
Jun 24, 2008
Kind
B2
Abstract

Methods and apparatus for calculating Single-Instruction-Multiple-Data (SIMD) complex arithmetic. A coprocessor instruction has a format identifying a multiply and subtract instruction to generate real components for complex multiplication of first operand complex data and corresponding second operand complex data, a cross multiply and add instruction to generate imaginary components for complex multiplication of the first operand complex data and the corresponding second operand complex data, an add-subtract instruction to add real components of the first operand to imaginary components of the second operand and to subtract real components of the second operand from imaginary components of the first operand, and a subtract-add instruction to subtract the real components of the second operand from the imaginary components of the first operand and to add the real components of the first operand to the imaginary components of the second operand.

Claims (28)

1. A computer-implemented method comprising:

decoding a multiply and subtract instruction that specifies a first operand having first and second complex data elements and a second operand having third complex data elements corresponding to the first and second complex data elements, each of the first, second and third complex data elements having real and imaginary components;

executing a multiply and subtract operation responsive to the multiply and subtract instruction to generate a first real component for a complex multiplication of the first complex data element and the corresponding third complex data element, and a second real component for a complex multiplication of the second complex data element and the corresponding third complex data element;

decoding a cross multiply and add instruction that specifies the first operand and the second operand; and

executing a cross multiply and add operation responsive to the cross multiply and add instruction to generate a first imaginary component for a complex multiplication of the first complex data element and the corresponding third complex data element, and a second imaginary component for a complex multiplication of the second complex data element and the corresponding third complex data element.

2. The method of claim 1 wherein decoding the multiply and subtract instruction includes identifying bit positions 23 - 22 of the instruction as each having a binary value of one and bit position 20 of the instruction having a binary value of zero.

3. The method of claim 1 wherein decoding the cross multiply and add instruction includes identifying bit position 22 of the instruction as having a binary value of zero and bit position 20 of the instruction as having a binary value of one.

4. An apparatus comprising:

a coprocessor interface unit to identify an instruction of a first instruction format for a cross multiply and add operation, a first source having a first ordered plurality of complex data elements including a first source first complex data element having a first source first real component and a first source first imaginary component and a first source second complex data element having a first source second real component and a first source second imaginary component, and a second source having a second ordered plurality of complex data elements corresponding to the first ordered plurality of complex data elements including a second source first complex data element having a second source first real component and a second source first imaginary component and a second source second complex data element that is the same as the second source first complex data element having a second source second real component and a second source second imaginary component; and

an execution unit to perform:

the cross multiply and add operation on the first source first complex data element and the second source first complex data element responsive to the instruction by adding the product of multiplying the first source first real component by the corresponding second source first imaginary component to the product of multiplying the first source first imaginary component by the corresponding second source first real component; and

the cross multiply and add operation on the first source second complex data element and the second source second complex data element responsive to the instruction by also adding the product of multiplying the first source second real component by the second source second imaginary component to the product of multiplying the first source second imaginary component by the second source second real component.

5. The apparatus of claim 4 wherein responsive to bit 21 of the first instruction format having a binary value of one and bit positions 7 - 5 each having a binary value of zero, signed arithmetic is used and the result of said adding is truncated to a data size of 32-bits.

6. The apparatus of claim 4 , said execution unit to perform the multiply and subtract operation on the first source first complex data element and the second source first complex data element responsive to the instruction by subtracting the product of multiplying the first source first imaginary component by the corresponding second source first imaginary component from the product of multiplying the first source first real component by the corresponding second source first real component.

7. The apparatus of claim 4 , said execution unit to perform the multiply and subtract operation on the first source second complex data element and the second source second complex data element responsive to the instruction by also subtracting the product of multiplying the first source second imaginary component by the second source second imaginary component from the product of multiplying the first source second real component by the second source second real component.

8. A data processing system comprising:

an addressable memory to store a plurality of instruction including instructions for SIMD operations;

a processing core including:

an execution core to access a first instruction for a SIMD multiply and subtract operation stored by the addressable memory;

a first source register to store a first plurality of complex data elements and a second source register to store a second plurality of corresponding complex data elements that are the same;

a functional unit to perform the SIMD multiply and subtract operation on the first plurality of complex data elements and the corresponding second plurality of complex data elements to generate a plurality of real components for complex multiplications of the first plurality of complex data elements and the corresponding second plurality of complex data elements;

said execution core to also access a second instruction for a SIMD cross multiply and add operation stored by the addressable memory; and

said functional unit to also perform the SIMD cross multiply and add operation on the first plurality of complex data elements and the corresponding second plurality of complex data elements to generate a plurality of imaginary components for complex multiplications of the first plurality of complex data elements and the corresponding second plurality of complex data elements;

a wireless interface to receive a digital signal comprising a third plurality of complex data elements; and

an I/O system to provide the first plurality of complex data elements to the processor from the third plurality of complex data elements.

9. The data processing system of claim 8 wherein the first instruction for the SIMD multiply and subtract operation, bit positions 23 - 22 of the first instruction each have a binary value of one and bit position 20 of the first instruction has a binary value of zero.

10. The data processing system of claim 8 wherein the second instruction for a SIMD cross multiply and add operation, bit position 22 of the second instruction has a binary value of zero and bit position 20 of the second instruction has a binary value of one.

11. The data processing system of claim 8 wherein responsive to bit 21 of the first and second instructions having a binary value of one and bit positions 7 - 5 of the first and second instructions each having a binary value of zero, signed arithmetic is used and the plurality of real components and the plurality of imaginary components for complex multiplications of the first plurality of complex data elements and the corresponding second plurality of complex data elements are truncated to a data size of 32-bits.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053475/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: MARVELL INTERNATIONAL LTD.
To: CAVIUM INTERNATIONAL
Reel/Frame 052918/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2006
From: INTEL CORPORATION
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 018515/0817 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 3, 2005
From: KHAN, MOINUL H.; PAVER, NIGEL C.; ALDRICH, BRADLEY C.
To: INTEL CORPORATION
Reel/Frame 016849/0989 →