Patent US5317527A successfully refreshed from Google Patents.
← Back to Patent Explorer
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
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

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)

US4922446A Cited
US4926369A Cited
US5010508A Cited
US5075882A Cited
US5204825A Cited

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

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag