IP Library Granted Patent US 11,210,090
Granted Patent B2
US 11,210,090 · App. 16/630,614 · Granted Dec 28, 2021

Register-based complex number processing

Inventors: Eric Biscondi (Roquefort les Pins, FR); Mbou Eyole (Soham, GB)
Assignee: ARM LIMITED
G06F9/30036G06F9/3001G06F9/3012G06F9/30109G06F9/30145
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 11,210,090
App. No.
16/630,614
Granted
Dec 28, 2021
Kind
B2
Abstract

Apparatuses, methods, programs, and complex number processing instructions are provided to support vector processing operations on input data vectors comprising a plurality of input data items at respective positions in the input data vectors. In response to the instructions at least one first set of data items is extracted from alternating positions in a first source register and at least one second set of data items is extracted from alternating positions in the second source register, wherein consecutive data items in the first and second source registers comprise alternating real and imaginary components of respective sets of complex numbers. A result set of complex number components is generated using the two sets of data items as operands, and the result set of complex number components is one of a real part and an imaginary part of a complex number result of the complex number operation applied to the two sets of complex numbers. The result set of complex number components is applied to the destination register.

Claims (57)

1. Apparatus comprising:

instruction decoder circuitry to decode instructions; and

data processing circuitry to selectively apply vector processing operations specified by the instructions to input data vectors comprising a plurality of input data items at respective positions in the input data vectors,

wherein the instruction decoder circuitry is responsive to a complex number processing instruction specifying a complex number operation, a first source register, a second source register, and a destination register to generate control signals to control the data processing circuitry to:

extract at least one first set of data items from alternating positions in the first source register, wherein consecutive data items in the first source register comprise alternating real and imaginary components of a first set of complex numbers;

extract at least one second set of data items from alternating positions in the second source register, wherein consecutive data items in the second source register comprise alternating real and imaginary components of a second set of complex numbers;

generate a result set of complex number components using the first and second sets of data items as operands, wherein the result set of complex number components is one of:

a set of real components of a complex number result of the complex number operation applied to the first set of complex numbers and the second set of complex numbers, each of the set of complex number components having zero imaginary component; and

a set of imaginary components of a complex number result of the complex number operation applied to the first set of complex numbers and the second set of complex numbers, each of the set of complex number components having zero real component; and

apply the result set of complex number components to the destination register,

wherein the data processing circuitry is responsive to the control signals to apply the result set of complex number components in consecutive positions in the destination register, and

wherein the complex number processing instruction further specifies a replication index for at least one of the first source register and the second source register, and wherein the data processing circuitry is further responsive to the control signals to replicate a source set of complex numbers in the at least one of the first source register and the second source register, the replication index specifying which components of the first source register and the second source register comprise the source set of complex numbers.

2. The apparatus as claimed in claim 1 , wherein each complex number component of the result set of complex number components is wider than each data item of the first and second sets of data items.

3. The apparatus as claimed in claim 1 , wherein the complex number processing instruction further specifies whether the first set of data items is to be extracted from odd-numbered positions or even-numbered positions in the first source register, and wherein the complex number processing instruction further specifies whether the second set of data items is to be extracted from odd-numbered positions or even-numbered positions in the second source register.

4. The apparatus as claimed in claim 1 , wherein replication of the source set of complex numbers comprises more than single replication of the source set of complex numbers.

5. The apparatus as claimed in claim 1 , wherein the at least one first set of data items extracted from the first source register comprises the first set of data items and a third set of data items,

wherein when the first set of data items is real components of the first set of complex numbers the third set of data items is imaginary components of the first set of complex numbers, and when the first set of data items is imaginary components of the first set of complex numbers the third set of data items is real components of the first set of complex numbers, and

wherein the data processing circuitry is further responsive to the control signals to generate the result set of complex number components further using the third set of data items as operands.

6. The apparatus as claimed in claim 1 , wherein the at least one second set of data items extracted from the second source register comprises the second set of data items and a fourth set of data items,

wherein when the second set of data items is real components of the second set of complex numbers the fourth set of data items is imaginary components of the second set of complex numbers, and when the second set of data items is imaginary components of the second set of complex numbers the fourth set of data items is real components of the second set of complex numbers, and

wherein the data processing circuitry is further responsive to the control signals to generate the result set of complex number components further using the fourth set of data items as operands.

7. The apparatus as claimed in claim 5 , wherein the complex number operation is a complex dot product operation, and wherein the data processing circuitry comprises accumulation circuitry responsive to the control signals to accumulate the result set of complex number components from partial products of a set of pairs of real and imaginary component pairs of the first set of complex numbers and a set of pairs of real and imaginary component pairs of the second set of complex numbers.

8. The apparatus as claimed in claim 1 , wherein the complex number operation comprises a complex multiply operation.

9. The apparatus as claimed in claim 1 , wherein the complex number operation is a complex addition operation or a complex subtraction operation.

10. The apparatus as claimed in claim 1 , wherein the complex number processing instruction further specifies a transposition parameter, and the data processing circuitry is responsive to the control signals to apply a transposition operation on at least one of the first and second sets of complex numbers prior to application of the complex number operation to the first and second sets of complex numbers.

11. The apparatus as claimed in claim 10 , wherein the transposition operation comprises at least one of:

substitution of real with imaginary components;

substitution of imaginary with real components;

exchange of real and imaginary components;

negation of real components; and

negation of imaginary components

in at least one the first set of complex numbers and the second set of complex numbers.

12. The apparatus as claimed in claim 10 , wherein the complex number processing instruction specifies the transposition parameter as an immediate value.

13. A method of operating a data processing apparatus comprising the steps of:

decoding instructions;

selectively applying vector processing operations specified by the instructions to input data vectors comprising a plurality of input data items at respective positions in the input data vectors;

generating control signals in response to a complex number processing instruction specifying a complex number operation, a first source register, a second source register, and a destination register to control data processing circuitry of the data processing apparatus to:

extract at least one first set of data items from alternating positions in the first source register, wherein consecutive data items in the first source register comprise alternating real and imaginary components of a first set of complex numbers;

extract at least one second set of data items from alternating positions in the second source register, wherein consecutive data items in the second source register comprise alternating real and imaginary components of a second set of complex numbers;

generate a result set of complex number components using the first and second sets of data items as operands, wherein the result set of complex number components is one of

a set of real components of a complex number result of the complex number operation applied to the first set of complex numbers and the second set of complex numbers, each of the set of complex number components having zero imaginary component; and

a set of imaginary components of a complex number result of the complex number operation applied to the first set of complex numbers and the second set of complex numbers, each of the set of complex number components having zero real component; and

apply the result set of complex number components to the destination register,

wherein the result set of complex number components is applied in consecutive positions in the destination register, and

wherein the complex number processing instruction further specifies a replication index for at least one of the first source register and the second source register, and wherein the method further comprises, in response to the control signals, replicating a source set of complex numbers in the at least one of the first source register and the second source register, the replication index specifying which components of the first source register and the second source register comprise the source set of complex numbers.

14. A computer program stored on a non-transitory computer readable storage medium for controlling a host data processing apparatus to provide an instruction execution environment comprising:

instruction decoding program logic to decode instructions; and

data processing program logic to selectively apply vector processing operations specified by the instructions to input data vector structures comprising a plurality of input data items at respective positions in the input data vector structures,

wherein the instruction decoding program logic is responsive to a complex number processing instruction specifying a complex number operation, a first source data structure, a second source data structure, and a destination data structure to generate control signals to control the data processing program logic to:

extract at least one first set of data items from alternating positions in the first source data structure, wherein consecutive data items in the first source data structure comprise alternating real and imaginary components of a first set of complex numbers;

extract at least one second set of data items from alternating positions in the second source data structure, wherein consecutive data items in the second source data structure comprise alternating real and imaginary components of a second set of complex numbers;

generate a result set of complex number components using the first and second sets of data items as operands, wherein the result set of complex number components is one of-:

a set of real components of a complex number result of the complex number operation applied to the first set of complex numbers and the second set of complex numbers, each of the set of complex number components having zero imaginary component; and

a set of imaginary components of a complex number result of the complex number operation applied to the first set of complex numbers and the second set of complex numbers, each of the set of complex number components having zero real component; and

apply the result set of complex number components to the destination data structure,

wherein the result set of complex number components is applied in consecutive positions in the destination data structure, and

wherein the complex number processing instruction further specifies a replication index for at least one of the first source register and the second source register, and wherein the data processing program logic is further responsive to the control signals to replicate a source set of complex numbers in the at least one of the first source register and the second source register, the replication index specifying which components of the first source register and the second source register comprise the source set of complex numbers.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 13, 2020
From: BISCONDI, ERIC; EYOLE, MBOU
To: ARM LIMITED
Reel/Frame 051495/0222 →
Priority Claims (1)
GB 1711700 · Jul 20, 2017 · national
Continuity (1)
Related Publication 20210026628A1 · Jan 28, 2021
Cited By (5)
US 12,260,213 US 12,282,773 US 12,314,717 US 12,536,020 US 12,650,839