IP Library › Granted Patent US 10,346,133
Granted Patent B1
US 10,346,133 · App. 15/851,390 · Granted Jul 9, 2019

System and method of floating point multiply operation processing

Inventors: Albert Danysh (Austin, TX); Erich Plondke (Austin, TX); Eric Mahurin (Austin, TX)
Assignee: QUALCOMM Incorporated
G06F7/4876G06F7/485
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 10,346,133
App. No.
15/851,390
Granted
Jul 9, 2019
Kind
B1
Abstract

A processor includes an integer multiplier configured to execute an integer multiply instruction to multiply significand bits of at least one floating point operand of a floating point multiply operation. The processor also includes a floating point multiplier configured to execute a special purpose floating point multiply accumulate instruction with respect to an intermediate result of the floating point multiply operation and the at least one floating point operand to generate a final floating point multiplication result.

Claims (50)

1. A processor comprising:

an integer multiplier configured to execute an integer multiply instruction to multiply significand bits of at least one floating point operand of a floating point multiply operation to generate an intermediate result; and

a floating point multiplier configured to execute a special purpose floating point multiply accumulate instruction with respect to the intermediate result and the at least one floating point operand to generate a final floating point multiplication result.

2. The processor of claim 1 , wherein the integer multiply instruction includes at least one of:

a first instruction to perform integer multiplication of low-order significand bits of the at least one floating point operand with low-order significand bits of a second operand to generate a first value;

a second instruction to perform integer multiplication of the low-order significand bits of the at least one floating point operand and high-order significand bits of the second operand to generate a second value; or

a third instruction to perform integer multiplication of the low-order significand bits of the second operand and high-order significand bits of the at least one floating point operand to generate a third value.

3. The processor of claim 2 , further comprising a register configured to store the intermediate result, and wherein the intermediate result corresponds to a sum of the third value, the second value, and a reduced-length version of the first value.

4. The processor of claim 3 , wherein the intermediate value includes a dedicated bit that indicates whether the reduced-length version of the first value is inexact.

5. The processor of claim 1 , wherein the floating point multiplier is configured to execute the special purpose floating point multiply accumulate instruction by:

performing floating-point multiplication that includes multiplying high-order significand bits of the at least one floating point operand with high-order significand bits of a second operand to generate high-order significand bits of a floating point value; and

accumulating the high-order significand bits with the intermediate result to generate the final floating point multiplication result.

6. The processor of claim 1 , further comprising a decoder configured to replace a received floating point multiply instruction with a set of instructions that includes a plurality of integer multiply instructions and the special purpose floating point multiply accumulate instruction.

7. The processor of claim 6 , wherein the set of instructions further includes an instruction that is executable to:

determine whether the at least one floating point operand of the floating point multiply operation is denormal; and

in response to determining that the at least one floating point operand is denormal and that an exponent of a second operand of the floating point multiply operation is larger than a threshold, modify a value of at least one of the at least one floating point operand or the second operand.

8. A method of performing a floating point multiply operation at a processor, the method comprising:

executing, by an integer multiplier, a plurality of integer multiply instructions to multiply significand bits of at least one floating point operand of the floating point multiply operation to generate an intermediate result; and

executing, by a floating point multiplier, a special purpose floating point multiply accumulate instruction with respect to the intermediate result and the at least one floating point operand of the floating point multiply operation to generate a floating point multiplication result.

9. The method of claim 8 , wherein the plurality of integer multiply instructions includes:

a first instruction to perform integer multiplication of low-order significand bits of the at least one floating point operand with low-order significand bits of a second operand to generate a first value;

a second instruction to perform integer multiplication of the low-order significand bits of the at least one floating point operand and high-order significand bits of the second operand to generate a second value; and

a third instruction to perform integer multiplication of the low-order significand bits of the second operand and high-order significand bits of the at least one floating point operand to generate a third value.

10. The method of claim 9 , wherein the intermediate result corresponds to a sum of the third value, the second value, and a reduced-length version of the first value.

11. The method of claim 10 , wherein the intermediate value includes a dedicated bit that indicates whether the reduced-length version of the first value is inexact.

12. The method of claim 8 , wherein executing the special purpose floating point multiply accumulate instruction causes the processor to:

perform floating-point multiplication that includes multiplying high-order significand bits of the at least one floating point operand with high-order significand bits of a second operand to generate high-order significand bits of a floating point value; and

accumulate the high-order significand bits with the intermediate result to generate the floating point multiplication result.

13. The method of claim 8 , further comprising, prior to executing the plurality of integer multiply instructions:

receiving a floating point multiply instruction; and

replacing the floating point multiply instruction with the plurality of integer multiply instructions and the special purpose floating point multiply accumulate instruction.

14. The method of claim 13 , further comprising, in response to receiving the floating point multiply instruction:

determining whether the at least one floating point operand of the floating point multiply operation is denormal; and

in response to determining that the at least one floating point operand is denormal and that an exponent of a second operand of the floating point multiply operation is larger than a threshold, modifying a value of at least one of the at least one floating point operand or the second operand.

15. An apparatus comprising:

means for executing a plurality of integer multiply instructions to multiply significand bits of at least one floating point operand of a floating point multiply operation to generate an intermediate result; and

means for executing a special purpose floating point multiply accumulate instruction with respect to the intermediate result and the at least one floating point operand to generate a final floating point multiplication result.

16. The apparatus of claim 15 , further comprising means for replacing a floating point multiply instruction with the plurality of integer multiply instructions and the special purpose floating point multiply accumulate instruction.

17. The apparatus of claim 15 , wherein the plurality of integer multiply instructions includes:

a first instruction to perform integer multiplication of low-order significand bits of the at least one floating point operand with low-order significand bits of a second operand to generate a first value;

a second instruction to perform integer multiplication of the low-order significand bits of the at least one floating point operand and high-order significand bits of the second operand to generate a second value; and

a third instruction to perform integer multiplication of the low-order significand bits of the second operand and high-order significand bits of the at least one floating point operand to generate a third value.

18. The apparatus of claim 17 , further comprising means for storing the intermediate result, and wherein the intermediate result corresponds to a sum of the third value, the second value, and a reduced-length version of the first value.

19. A method comprising:

identifying a first operand of a multi-operand floating-point multiply operation as denormal;

in response to determining that an exponent of a second operand of the multi-operand floating-point operation is larger than a threshold, modifying a value of at least one of the first operand or the second operand;

executing, at an integer multiplier, at least one integer multiply instruction using the modified value to generate an intermediate result of the multi-operand floating-point multiply operation, and

generating, at a floating point multiplier, a final result of the multi-operand floating-point multiply operation at least partially based on the intermediate result.

20. The method of claim 19 , wherein generating the final result of the multi-operand floating-point multiply operation includes

executing, at the floating point multiplier, a special purpose floating point multiply accumulate instruction with respect to the intermediate result and at least one floating point operand.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2018
From: DANYSH, ALBERT; PLONDKE, ERICH; MAHURIN, ERIC
To: QUALCOMM INCORPORATED
Reel/Frame 044993/0346 →
Cited By (1)
US 12,223,289