Methods and apparatus for performing parallel integer multiply accumulate operations
AssigneeSun Microsystems, Inc.
InventorAshley Saulsbury
Life of this patent
Estimating the term…
Abstract
According to the invention, a processing core that executes a parallel multiply accumulate operation is disclosed. Included in the processing core are a first, second and third input operand registers; a number of functional blocks; and, an output operand register. The first, second and third input operand registers respectively include a number of first input operands, a number of second input operands and a number of third input operands. Each of the number of functional blocks performs a multiply accumulate operation. The output operand register includes a number of output operands. Each of the number of output operands is related to one of the number of first input operands, one of the number of second input operands and one of the number of third input operands.
Claims20
A processing core that executes a parallel multiply accumulate operation, the processing core comprising:
- a first input operand register comprising a plurality of first input operands;
- a second input operand register comprising a plurality of second input operands;
- a third input operand register comprising a plurality of third input operands;
- a plurality of functional blocks that each perform a multiply accumulate operation, wherein an instruction for the multiply accumulate operation indicates a rounding algorithm to use, and the rounding algorithm is one of a plurality that can be indicated by various multiply accumulate instructions;
- an output operand register comprising a plurality of output operands, wherein each of the plurality of output operands is related to one of the plurality of first input operands, one of the plurality of second input operands and one of the plurality of third input operands.
A method for determining a plurality of output operands, the method comprising:
- loading a multiply accumulate instruction;
- decoding the multiply accumulate instruction wherein the multiply accumulate instruction specifies one of a plurality of rounding algorithms;
- loading a plurality of multiplicands, a plurality of multipliers and a plurality of accumulate values;
- processing a first multiplicand, a first multiplier and a first accumulated value in order to produce a first output operand;
- processing a second multiplicand, a second multiplier and a second accumulated value in order to produce a second output operand;
- and
- storing the first output operand and second output operand.
A method for determining a plurality of output operands, the method comprising:
- loading a multiply accumulate instruction;
- decoding the multiply accumulate instruction;
- loading a plurality of multiplicands, a plurality of multipliers and a plurality of accumulate values;
- determining a first result equal to a product of a first multiplicand and a first multiplier plus a first accumulate value;
- storing the first result;
- loading a second multiply accumulate instruction;
- decoding the second multiply accumulate instruction;
- loading a second plurality of multiplicands, a second plurality of multipliers and a second plurality of accumulate values;
- determining a second result equal to a product of a second multiplicand and a second multiplier plus a second accumulate value;
- storing the second result;
- and
- arranging the first result and second result into an unified result occupying more bits than either the first or second results.
Dependencies are inferred from the claim text.