Patent US5317527A successfully refreshed from Google Patents.
US5317527A
Expired / Lapsed
US
⏱️ 0.0 years remaining
Leading one/zero bit detector for floating point operation
Assignee: Hewlett Packard Development Co LP
•
Filing: 1993-02-10
•
Granted: 1994-05-31
•
Expires: 2013-02-10
Abstract
Abstract A circuit is provided for using the input operands of a floating point addition or subtraction operation to detect the leading one or zero bit position in parallel with the arithmetic operation. This allows the alignment to be performed on the available result in the next cycle of the floating point operation and results in a significant performance advantage. The leading I/O detection is decoupled from the adder that is computing the result in parallel, eliminating the need for special circuitry to compute a carry-dependent adjustment signal. The single-bit fraction overflow that can result from leading I/O misprediction is corrected with existing circuitry during a later stage of computation.
Inventors
- 👤 Sharon M. Britton
- 👤 Randy Allmon
- 👤 Sridhar Samudrala
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-11-01 21:48
CPC Classifications
G; G06; G06F; G06F7/00; G06F7/74
Claims Analysis
Total Claims: 23
Claim 1
Independent Claim
324 words
A method for performing a floating point operation, comprising the steps of: (a) applying a first n-bit floating point operand and a second n-bit floating point operand to an arithmetic unit to perform said floating point operation on said first n-bit floating point operand and said second n-bit floating point operand and to generate a floating point result at an output of the arithmetic unit; (b) detecting a leading one position or leading zero position by: (i) scanning each bit position of both of said first n-bit floating point operand and said second n-bit floating point operand from left to right to detect a trigger condition: A.sub.i+1 XOR B.sub.i+1 =0 where A is the first n-bit floating point operand, B is the second n-bit floating point operand, A i or B i is the value of a bit in position i in A or B, A i+1 or B i+1 is the value of a bit one position to the left of A i or B i , and XOR is an Exclusive-OR operator; (ii) continuing to scan from left to right, and, if said floating point result is a positive value, detecting a next bit position j where: [A.sub.j, B.sub.j ]=NOT[0,0] where j<i, A j or B j is the value of a bit in position j in A or B, and designating said bit position j where [A j , B j ]=NOT[0,0] as the leading one position in the floating point result, or, if said floating point result is a negative value, detecting a next bit position j where: [A.sub.j, B.sub.j ]=NOT[1,1] and designating said bit position j where [A j , B j [=NOT[1,1] as the leading zero position in the floating point result; (c) and aligning said floating point result to said leading one position if the floating point result is a positive value or to said leading zero position if said floating point result is a negative value.
Claim 2
Independent Claim
324 words
A method for performing a floating point operation, comprising the steps of: (a) applying a first n-bit floating point operand and a second n-bit floating point operand to an arithmetic unit to perform said floating point operation on said first n-bit floating point operand and said second n-bit floating point operand and to generate a floating point result at an output of the arithmetic unit; (b) detecting a leading one position or leading zero position by: (i) scanning each bit position of both of said first n-bit floating point operand and said second n-bit floating point operand from left to right to detect a trigger condition: A.sub.i+1 XOR B.sub.i+1 =0 where A is the first n-bit floating point operand, B is the second n-bit floating point operand, A i or B i is the value of a bit in position i in A or B, A i+1 or B i+1 is the value of a bit one position to the left of A i or B i , and XOR is an Exclusive-OR operator; (ii) continuing to scan from left to right, and, if said floating point result is a positive value, detecting a next bit position j where: [A.sub.j, B.sub.j ]=NOT[0,0] where j<i, A j or B j is the value of a bit in position j in A or B, and designating said bit position j where [A j , B j ]=NOT[0,0] as the leading one position in the floating point result, or, if said floating point result is a negative value, detecting a next bit position j where: [A.sub.j, B.sub.j ]=NOT[1,1] and designating said bit position j where [A j , B j [=NOT[1,1] as the leading zero position in the floating point result; (c) and aligning said floating point result to said leading one position if the floating point result is a positive value or to said leading zero position if said floating point result is a negative value.
Claim 3
Dependent Claim
25 words
A method according to claim 1 wherein said step of detecting is performed simultaneously with and in parallel to said operation in said arithmetic unit.
Claim 4
Dependent Claim
28 words
A method acording to claim 2 wherein said steps of applying, detecting and aligning are all performed in a single-chip integrated circuit device containing said floating point processor.
Claim 5
Dependent Claim
331 words
A floating point processor, comprising: (a) an arithmetic unit, and means for applying a first n-bit floating point operand and a second n-bit floating point operand to inputs of said arithmetic unit to perform a floating point operation on said first n-bit floating point operand and said second n-bit floating point operand and generate a floating point result at an output of the arithmetic unit; (b) a leading one position or leading zero position detection circuit including: (i) means for scanning each bit position of both of said first n-bit floating point operand and said second n-bit floating point operand from left to right to detect a trigger condition: A.sub.i+1 XOR B.sub.i+1 =0 where A is the first n-bit floating point operand, B is the second n-bit floating point operand, A i or B i is the value of a bit in position i in A or B, A i+1 or B i+1 is the value of a bit one position to the left of A i or B i , and XOR is an Exclusive-OR operator; (ii) means for continuing to scan from left to right, and, if said floating point result is a positive value, detecting a next bit position j where: [A.sub.j, B.sub.j ]=NOT[0,0] where j<i, A j or B j is the value of a bit in position j in A or B, and designating said bit position j where [A j , B j ]=NOT[0,0] as the leading one position in the floating point result, or, if said floating point result is a negative value, detecting a next bit position j where: [A.sub.j, B.sub.j ]=NOT[1,1] and designating said bit position j where [A j , B j ]=NOT[1,1] as the leading zero position in the floating point result; (c) and means for aligning said floating point result to said leading one position if the floating point result is a positive value or to said leading zero position if said floating point result is a negative value.
Claim 6
Dependent Claim
331 words
A floating point processor, comprising: (a) an arithmetic unit, and means for applying a first n-bit floating point operand and a second n-bit floating point operand to inputs of said arithmetic unit to perform a floating point operation on said first n-bit floating point operand and said second n-bit floating point operand and generate a floating point result at an output of the arithmetic unit; (b) a leading one position or leading zero position detection circuit including: (i) means for scanning each bit position of both of said first n-bit floating point operand and said second n-bit floating point operand from left to right to detect a trigger condition: A.sub.i+1 XOR B.sub.i+1 =0 where A is the first n-bit floating point operand, B is the second n-bit floating point operand, A i or B i is the value of a bit in position i in A or B, A i+1 or B i+1 is the value of a bit one position to the left of A i or B i , and XOR is an Exclusive-OR operator; (ii) means for continuing to scan from left to right, and, if said floating point result is a positive value, detecting a next bit position j where: [A.sub.j, B.sub.j ]=NOT[0,0] where j<i, A j or B j is the value of a bit in position j in A or B, and designating said bit position j where [A j , B j ]=NOT[0,0] as the leading one position in the floating point result, or, if said floating point result is a negative value, detecting a next bit position j where: [A.sub.j, B.sub.j ]=NOT[1,1] and designating said bit position j where [A j , B j ]=NOT[1,1] as the leading zero position in the floating point result; (c) and means for aligning said floating point result to said leading one position if the floating point result is a positive value or to said leading zero position if said floating point result is a negative value.
Claim 7
Dependent Claim
27 words
Apparatus according to claim 4 wherein said leading one or leading zero detection circuit operates simultaneously with and in parallel to said operation in said arithmetic unit.
Claim 8
Dependent Claim
31 words
Apparatus according to claim 5 wherein said arithmetic unit, said detection circuit, and said means for aligning are all contained in a single-chip integrated circuit device containing said floating point processor.
Claim 9
Independent Claim
268 words
A method for detecting a leading one position or leading zero position for a floating point operation, comprising the steps of: (i) scanning each bit position of both a first n-bit floating point operand and a second n-bit floating point operand from left to right to detect a trigger condition: A.sub.i+1 XOR B.sub.i+1 =0 where A is the first n-bit floating point operand, B is the second n-bit floating point operand, A i or B i is the value of a bit in position i in A or B, A i+1 or B i+1 is the value of a bit one position to the left of A i or B i , and XOR is an Exclusive-OR operation; (ii) continuing to scan from left to right, and, if a floating point result of said floating-point operation on said first n-bit floating point operand and said second n-bit floating point operand is a positive value, detecting a next bit position j wherein: [A.sub.j, B.sub.j ]=NOT[0,0] where j<i, A j or B j is the value of a bit in position j in A or B, and designating said bit position j where [A j , B j ]=NOT[0,0] as the leading one position in the floating point result, or, if said floating point result of said floating point operation on said first n-bit floating point operand and said second n-bit floating point operand is a negative value detecting a next bit position j where: [A.sub.j,B.sub.j ]=NOT[1,1] and designating said bit position j where [A j , B j ]=NOT[1,1] as the leading zero position in the floating point result.
Claim 10
Independent Claim
268 words
A method for detecting a leading one position or leading zero position for a floating point operation, comprising the steps of: (i) scanning each bit position of both a first n-bit floating point operand and a second n-bit floating point operand from left to right to detect a trigger condition: A.sub.i+1 XOR B.sub.i+1 =0 where A is the first n-bit floating point operand, B is the second n-bit floating point operand, A i or B i is the value of a bit in position i in A or B, A i+1 or B i+1 is the value of a bit one position to the left of A i or B i , and XOR is an Exclusive-OR operation; (ii) continuing to scan from left to right, and, if a floating point result of said floating-point operation on said first n-bit floating point operand and said second n-bit floating point operand is a positive value, detecting a next bit position j wherein: [A.sub.j, B.sub.j ]=NOT[0,0] where j<i, A j or B j is the value of a bit in position j in A or B, and designating said bit position j where [A j , B j ]=NOT[0,0] as the leading one position in the floating point result, or, if said floating point result of said floating point operation on said first n-bit floating point operand and said second n-bit floating point operand is a negative value detecting a next bit position j where: [A.sub.j,B.sub.j ]=NOT[1,1] and designating said bit position j where [A j , B j ]=NOT[1,1] as the leading zero position in the floating point result.
Claim 11
Dependent Claim
24 words
A method according to claim 7 wherein said step of scanning is performed simultaneously with and in parallel to operate in an adder unit.
Claim 12
Dependent Claim
238 words
A leading one position or leading zero position detection circuit for a floating point operation comprising: (i) means for scanning each bit position of both a first n-bit floating point operand and a second n-bit floating point operand from left to right to detect a trigger condition: A.sub.i+1 XOR B.sub.i+1 =0 where A is the first n-bit floating point operand, B is the second n-bit floating point operand, A i or B i is the value of a bit in position i in A or B, A i+1 or B i+1 is the value of a bit one position to the left of A i or B i , and XOR is an Exclusive-OR operator; (ii) mans for continuing to scan from left to right, and, if a floating point result of said floating point operation is a positive value, detecting a next bit position j where: [A.sub.j,B.sub.j ]=NOT[0,0] where j<i, A j or B j is the value of a bit in position j in A or B, and designating said bit position j where [A j ,B j ]=NOT[0,0] as the leading one position in the floating point result, or, if said floating point result of said floating point operation is a negative value, detecting a next bit position j where: [A.sub.j B.sub.j ]=NOT[1,1] and designating said bit position j where [A j B j ]=NOT[1,1] as the leading zero position in the floating point result.
Claim 13
Dependent Claim
238 words
A leading one position or leading zero position detection circuit for a floating point operation comprising: (i) means for scanning each bit position of both a first n-bit floating point operand and a second n-bit floating point operand from left to right to detect a trigger condition: A.sub.i+1 XOR B.sub.i+1 =0 where A is the first n-bit floating point operand, B is the second n-bit floating point operand, A i or B i is the value of a bit in position i in A or B, A i+1 or B i+1 is the value of a bit one position to the left of A i or B i , and XOR is an Exclusive-OR operator; (ii) mans for continuing to scan from left to right, and, if a floating point result of said floating point operation is a positive value, detecting a next bit position j where: [A.sub.j,B.sub.j ]=NOT[0,0] where j<i, A j or B j is the value of a bit in position j in A or B, and designating said bit position j where [A j ,B j ]=NOT[0,0] as the leading one position in the floating point result, or, if said floating point result of said floating point operation is a negative value, detecting a next bit position j where: [A.sub.j B.sub.j ]=NOT[1,1] and designating said bit position j where [A j B j ]=NOT[1,1] as the leading zero position in the floating point result.
Claim 14
Dependent Claim
27 words
Apparatus according to claim 9 wherein said leading one or leading zero detection circuit operates simultaneously with and in parallel to an operation in an arithmetic unit.
Claim 15
Dependent Claim
22 words
Apparatus according to claim 10 wherein said arithmetic unit and said detection circuit are all contained in a single-chip integrated circuit device.
Claim 16
Independent Claim
184 words
A method for performing a floating point operation, comprising the steps of: (a) applying a first n-bit floating point operand and a second n-bit floating point operand to an arithmetic unit to perform said floating point operation on said first n-bit floating point operand and said second n-bit floating point operand and generate a floating point result at an output of the arithmetic unit; (b) detecting a leading one position in parallel with the floating point operation performed by the arithmetic unit; (c) detecting a leading zero position in parallel with the floating point operation performed by the arithmetic unit; (d) determining whether the floating point result generated by the arithmetic unit is a positive value or a negative value; (e) selecting the leading one position if the floating point result is a positive value or the leading zero position if the floating point result is negative value; and (f) aligning said floating point result to said leading one position if the floating point result is a positive value or to said leading zero position if said floating point result is a negative value.
Claim 17
Independent Claim
184 words
A method for performing a floating point operation, comprising the steps of: (a) applying a first n-bit floating point operand and a second n-bit floating point operand to an arithmetic unit to perform said floating point operation on said first n-bit floating point operand and said second n-bit floating point operand and generate a floating point result at an output of the arithmetic unit; (b) detecting a leading one position in parallel with the floating point operation performed by the arithmetic unit; (c) detecting a leading zero position in parallel with the floating point operation performed by the arithmetic unit; (d) determining whether the floating point result generated by the arithmetic unit is a positive value or a negative value; (e) selecting the leading one position if the floating point result is a positive value or the leading zero position if the floating point result is negative value; and (f) aligning said floating point result to said leading one position if the floating point result is a positive value or to said leading zero position if said floating point result is a negative value.
Claim 18
Dependent Claim
173 words
The method of claim 12, wherein the step of detecting a leading one position further comprises the steps of: (a) scanning each bit position of both of said first n-bit floating point operand and said second n-bit floating point operand from left to right to detect a trigger condition: A.sub.i+1 XOR B.sub.i+1 =0 where A is the first n-bit floating point operand, B is the second n-bit floating point operand, A i or B i is the value of a bit in position i in A or B, A i+1 or B i+1 is the value of a bit one position to the left of A i or B i , and XOR is an Exclusive-OR operator; and (b) upon detecting said trigger condition, continuing to scan from left to right and detecting a next bit position j where: [A.sub.j, B.sub.j ]=NOT[0,0] where j<i, A j or B j is the value of a bit in position j in A or B, and designating said bit position j as the leading one position.
Claim 19
Dependent Claim
172 words
The method of claim 12 wherein the step of detecting a leading zero further comprises the steps of: (a) scanning each bit position of both of said first n-bit floating point operand and said second n-bit floating point operand from left to right to detect a trigger condition: A.sub.i+1 XOR B.sub.i+1 =0 where A is the first n-bit floating point operand, B is the second n-bit floating point operand, A i or B i is the value of a bit in position i in A or B, A i+1 or B i+1 is the value of a bit one position to the left of A i or B i , and XOR is an Exclusive-OR operator; and (b) upon detecting said trigger condition, continuing to scan from left to right, and detecting a next bit position j where: [A.sub.j, B.sub.j ]=NOT[1,1] where j<i, A j or B j is the value of a bit in position j in A or B, and designating said bit position j as the leading zero position.
Claim 20
Dependent Claim
176 words
A floating point processor, comprising: (a) an arithmetic unit for performing a floating point operation on operands to generate a floating point result at an output of said arithmetic unit; (b) means for applying a first n-bit floating point operand and a second n-bit floating point operand to the arithmetic unit; (c) means for detecting a leading one position in parallel with the floating point operation performed by the arithmetic unit; (d) means for detecting a leading zero position in parallel with the floating point operation performed by the arithmetic unit; (e) means for determining whether the floating point result is a positive value or a negative value; (f) means for selecting the leading one position if the floating point result is a positive value or the leading zero position if the floating point result is negative value; and (g) means for aligning said floating point result to said leading one position if the floating point result is a positive value or to said leading zero position if said floating point result is a negative value.
Claim 21
Dependent Claim
176 words
A floating point processor, comprising: (a) an arithmetic unit for performing a floating point operation on operands to generate a floating point result at an output of said arithmetic unit; (b) means for applying a first n-bit floating point operand and a second n-bit floating point operand to the arithmetic unit; (c) means for detecting a leading one position in parallel with the floating point operation performed by the arithmetic unit; (d) means for detecting a leading zero position in parallel with the floating point operation performed by the arithmetic unit; (e) means for determining whether the floating point result is a positive value or a negative value; (f) means for selecting the leading one position if the floating point result is a positive value or the leading zero position if the floating point result is negative value; and (g) means for aligning said floating point result to said leading one position if the floating point result is a positive value or to said leading zero position if said floating point result is a negative value.
Claim 22
Dependent Claim
177 words
The floating point processor of claim 15 wherein the means for detecting a leading zero position further comprises: (a) means for scanning each bit position of both of said first n-bit floating point operand and said second n-bit floating point operand from left to right to detect a trigger condition: A.sub.i+1 XOR B.sub.i+1 =0 where A is the first n-bit floating point operand, B is the second n-bit floating point operand, A i or B i is the value of a bit in position i in A or B, A i+1 or B i+1 is the value of a bit one position to the left of A i or B i , and XOR is an Exclusive-OR operator; and (b) upon detecting said trigger condition, means for continuing to scan from left to right and detecting a next bit position j where: [A.sub.j, B.sub.j ]=NOT[0,0] where j<i, A j or B j is the value of a bit in position j in A or B, and for designating said bit position j as the leading one position.
Claim 23
Dependent Claim
177 words
The floating point processor of claim 15 wherein the means for detecting a leading zero position further comprises: (a) means for scanning each bit position of both of said first n-bit floating point operand and said second n-bit floating point operand from left to right to detect a trigger condition: A.sub.i+1 XOR B.sub.i+ =0 where A is the first n-bit floating point operand, B is the second n-bit floating point operand, A i or B i is the value of a bit in position i in A or B, A i+1 or B i+1 is the value of a bit one position to the left of A i or B i , and XOR is an Exclusive-OR operator; and (b) upon detecting said trigger condition, means for continuing to scan from left to right, and detecting a next bit position j where: [A.sub.j, B.sub.j ]=NOT[1,1] where j<i, A j or B j is the value of a bit in position j in A or B, and for designating said bit position j as the leading zero position.
References Cited (Backward Citations)
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 1997-05-30 | 1997-11-29 | 1998-05-31 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2001-05-30 | 2001-11-29 | 2002-05-31 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2005-05-30 | 2005-11-29 | 2006-05-31 | $7700.00 | Window Closed / Lapsed |