IP Library Granted Patent US 7,437,538
Granted Patent B1
US 7,437,538 · App. 10/881,763 · Granted Oct 14, 2008

Apparatus and method for reducing execution latency of floating point operations having special case operands

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,437,538
App. No.
10/881,763
Granted
Oct 14, 2008
Kind
B1
Abstract

An apparatus and method for floating-point special case handling. In one embodiment, a processor may include a first execution unit configured to execute a longer-latency floating-point instruction, and a second execution unit configured to execute a shorter-latency floating-point instruction. In response to the longer-latency floating-point instruction being issued to the first execution unit, the second execution unit may be further configured to detect whether a result of the longer-latency floating-point instruction is determinable from one or more operands of the longer-latency floating-point instruction independently of the first execution unit executing the longer-latency floating-point instruction. In response to detecting that the result is determinable, the second execution unit may be further configured to flush the longer-latency floating-point instruction from the first execution unit and to determine the result.

Claims (39)

1. A processor, comprising: a first execution unit configured to execute a longer-latency floating-point instruction, wherein said longer-latency floating-point instruction defines a floating-point computation to be performed on one or more operands; and

a second execution unit configured to execute a shorter-latency floating-point instruction;

wherein said longer-latency floating-point instruction is configured to execute in a greater number of execution cycles than said shorter-latency floating-point instruction;

wherein in response to said longer-latency floating-point instruction being issued to said first execution unit, said second execution unit is further configured to detect from one or more operands of said longer-latency floating-point instruction whether a result of said longer-latency floating-point instruction is determinable without actually performing said floating-point computation to completion; and

wherein in response to detecting that said result is determinable, said second execution unit is further configured to flush said longer-latency floating-point instruction from said first execution unit and to determine said result.

2. The processor as recited in claim 1 , wherein in response to said second execution unit determining said result, execution of said longer-latency floating-point instruction completes in fewer execution cycles than if said first execution unit had determined said result.

3. The processor as recited in claim 1 , wherein said second execution unit detecting whether said result is determinable occurs concurrently with said first execution unit executing said longer-latency floating-point instruction.

4. The processor as recited in claim 1 , wherein said first execution unit is configured to execute floating-point division or square root instructions.

5. The processor as recited in claim 1 , wherein said second execution unit is configured to execute floating-point addition or multiplication instructions.

6. The processor as recited in claim 1 , wherein said second execution unit is further configured to determine an exception status of said longer-latency floating-point instruction in response to detecting that said result of said longer-latency instruction is determinable without actually performing said floating-point computation to completion.

7. The processor as recited in claim 1 , wherein said first execution unit is further configured to perform a mantissa arithmetic portion of said longer-latency floating-point instruction, and wherein said second execution unit is further configured to perform an exponent arithmetic portion of said longer-latency floating-point instruction.

8. The processor as recited in claim 1 , wherein execution behavior of said longer-latency and said shorter-latency floating point instructions is defined according to Institute of Electrical and Electronics Engineers (IEEE)754-1985 Standard for Binary Floating-Point Arithmetic.

9. The processor as recited in claim 1 , further comprising instruction fetch logic configured to issue a first instruction from one of a plurality of threads during one execution cycle and to issue a second instruction from another one of said plurality of threads during a successive execution cycle.

10. A method, comprising: issuing a longer-latency floating-point instruction to a first execution unit, wherein said longer-latency floating-Point instruction defines a floating-point computation to be performed on one or more operands;

in response to said issuing, detecting from one or more operands of said longer-latency floating-point instruction whether a result of said longer-latency floating-point instruction is determinable without actually performing said floating-point computation to completion; and

in response to detecting that said result is determinable, flushing said longer-latency floating-point instruction from said first execution unit and determining said result independently of said first execution unit.

11. The method as recited in claim 10 , wherein in response to determining said result independent of said first execution unit, execution of said longer-latency floating-point instruction completes in fewer execution cycles than if said first execution unit had determined said result.

12. The method as recited in claim 10 , wherein detecting whether said result is determinable occurs concurrently with said first execution unit executing said longer-latency floating-point instruction.

13. The method as recited in claim 10 , wherein said first execution unit is configured to execute floating-point division or square root instructions.

14. The method as recited in claim 10 , further comprising executing a shorter-latency floating-point instruction in a second execution unit, wherein said shorter-latency floating-point instruction includes a floating-point addition or multiplication instruction, and wherein said longer-latency floating-point instruction is configured to execute in a greater number of execution cycles than said shorter-latency floating-point instruction.

15. The method as recited in claim 14 , further comprising performing a mantissa arithmetic portion of said longer-latency floating-point instruction in said first execution unit, and performing an exponent arithmetic portion of said longer-latency floating-point instruction in said second execution unit.

16. The method as recited in claim 14 , wherein execution behavior of said longer-latency and said shorter-latency floating point instructions is defined according to Institute of Electrical and Electronics Engineers (IEEE)754-1985 Standard for Binary Floating-Point Arithmetic.

17. The method as recited in claim 10 , further comprising determining an exception status of said longer-latency floating-point instruction in response to detecting that said result of said longer-latency instruction is determinable without actually performing said floating-point computation to completion.

18. The method as recited in claim 10 , further comprising:

issuing a first instruction from one of a plurality of threads during one execution cycle; and

issuing a second instruction from another one of said plurality of threads during a successive execution cycle.

19. A system, comprising: a system memory; and a processor coupled to said system memory, wherein said processor comprises: a first execution unit configured to execute a longer-latency floating-point instruction, wherein said longer-latency floating-point instruction defines a floating-point computation to be performed on one or more operands; and

a second execution unit configured to execute a shorter-latency floating-point instruction;

wherein said longer-latency floating-point instruction is configured to execute in a greater number of execution cycles than said shorter-latency floating-point instruction;

wherein in response to said longer-latency floating-point instruction being issued to said first execution unit, said second execution unit is further configured to detect from one or more operands of said longer-latency floating-point instruction whether a result of said longer-latency floating-point instruction is determinable without actually performing said floating-point computation to completion; and

wherein in response to detecting that said result is determinable, said second execution unit is further configured to flush said longer-latency floating-point instruction from said first execution unit and to determine said result.

20. The system as recited in claim 19 , wherein in response to said second execution unit determining said result, execution of said longer-latency floating-point instruction completes in fewer execution cycles than if said first execution unit had determined said result.

21. The system as recited in claim 19 , wherein said second execution unit detecting whether said result is determinable occurs concurrently with said first execution unit executing said longer-latency floating-point instruction.

22. The system as recited in claim 19 , wherein said first execution unit is configured to execute floating-point division or square root instructions.

23. The system as recited in claim 19 , wherein said second execution unit is configured to execute floating-point addition or multiplication instructions.

24. The system as recited in claim 19 , wherein said second execution unit is further configured to determine an exception status of said longer-latency floating-point instruction in response to detecting that said result of said longer-latency instruction is determinable without actually performing said floating-point computation to completion.

25. The system as recited in claim 19 , wherein said first execution unit is further configured to perform a mantissa arithmetic portion of said longer-latency floating-point instruction, and wherein said second execution unit is further configured to perform an exponent arithmetic portion of said longer-latency floating-point instruction.

26. The system as recited in claim 19 , wherein execution behavior of said longer-latency and said shorter-latency floating point instructions is defined according to Institute of Electrical and Electronics Engineers (IEEE)754-1985 Standard for Binary Floating-Point Arithmetic.

27. The system as recited in claim 19 , wherein said processor further comprises instruction fetch logic configured to issue a first instruction from one of a plurality of threads during one execution cycle and to issue a second instruction from another one of said plurality of threads during a successive execution cycle.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037303/0349 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2004
From: BROOKS, JEFFREY S.; OLSON, CHRISTOPHER
To: SUN MICROSYSTEMS, INC.
Reel/Frame 015544/0322 →