5-to-2 binary adder

Information

  • Patent Grant
  • 6578063
  • Patent Number
    6,578,063
  • Date Filed
    Thursday, June 1, 2000
    24 years ago
  • Date Issued
    Tuesday, June 10, 2003
    21 years ago
Abstract
A five-input/two-output binary adder is disclosed. The five-input/two-output adder includes five inputs and two outputs. Four levels of XOR logic gates are coupled between the five inputs and the two outputs for combining values received at the five inputs and generating a sum value and a carry value at the outputs.
Description




BACKGROUND OF THE INVENTION




1. Technical Field




The present invention relates to an apparatus for data processing in general, and in particular to a binary adder. Still more particularly, the present invention relates to a five-input/two-output binary adder.




2. Description of the Prior Art




The two most commonly encountered binary adders in digital arithmetic circuit arrangements are carry-propagate adders (CPAs) and carry-save adders (CSAs). CPAs are typically designed to have two data inputs and one output. CPAs operate according to well-known principles in which addend bits of the same order are added together, and a carry bit will be transferred to an adjacent higher order bit when required. A sum is directly derived from a bit-by-bit addition, with an appropriate carry to an adjacent higher order bit and a single bit carry out from the highest order bit position. The ripple carry of a CPA tends to result in slow non-parallel operations because high order bits computations are dependent on the results from low order bits.




CSAs, on the other hand, typically have three data inputs and two outputs. Carry bits in CSAs are accumulated separately from the sum bits of any given order (or position). The output of CSAs are two vectors, namely, a sum and a carry, which when added together yield the final result. One benefit of CSAs is that high-order bits have no dependency on any low-order bit because all bit positions are calculated independently, thereby avoiding the propagation latency associated with carry bits in CPAs. Because of their speed and simplicity, CSAs are pervasively found in digital logic designs.




The present disclosure describes a five-input/two-output CSA adder. Such five-input/two-output CSA adder can be advantageously used in, for example, a fused multiply-adder that combine a multiplication operation with an add operation.




SUMMARY OF THE INVENTION




In accordance with a preferred embodiment of the present invention, a five-input/two-output binary adder includes five inputs and two outputs. Four levels of XOR logic gates are coupled between the five inputs and the two outputs for combining values received at the-five inputs and generating a sum value and a carry value at the outputs.




All objects, features, and advantages of the present invention will become apparent in the following detailed written description.











BRIEF DESCRIPTION OF THE DRAWINGS




The invention itself, as well as a preferred mode of use, further objects, and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:





FIG. 1

is a block diagram of a direct implementation of a five-input/two-output adder;





FIG. 2

is a block diagram of a five-input/two-output adder in accordance with a preferred embodiment of the present invention; and





FIG. 3

is a block diagram of a processor in which a preferred embodiment of the present invention may be incorporated.











DETAILED DESCRIPTION OF A PREFERRED EMBODIMENT




A five-input/two-output adder is typically not readily available in a conventional logic gate library. However, a five-input/two-output adder can be formed by directly combining, for example, a three-input/two-output adder with a four-input/two-output adder. Referring now to the drawings and in particular to

FIG. 1

, there is illustrated a block diagram of a direct implementation of a five-input/two-output adder. As shown, a three-input/two-output adder


11


is coupled to a four-input/two-output adder


12


to form a five-input/two-output adder


10


. Five-input/two-output adder


10


combines inputs a, b, c, d, and e to generate a sum output


13


and a carry output


14


.




The time delay for five-input/two-output adder


10


can be qualitatively measured by the total number of levels of XOR gates utilized. Three-input/two-output adder


11


requires two levels of XOR gates, and four-input/two-output adder


12


requires three levels of XOR gates. Thus, five-input/two-output adder


10


requires a total of five levels of XOR gates. Because of the relatively long delay time associated with five level of XOR gates, it is not very attractive to realize a five-input/two-output adder by this type of direct implementation.




With reference now to

FIG. 2

, there is illustrated a block diagram of a five-input/two-output adder


20


, in accordance with a preferred embodiment of the present invention. Similar to five-input/two-output adder


10


, five-input/two-output adder


20


combines inputs a, b, c, d, and e to generate a sum output


27


and a carry output


28


. However, five-input/two-output adder


20


only requires four levels of XOR gates. Specifically, at level one, an XOR gate


21


combines input a and input b, and an XOR gate


22


combines input c and input d. At level two, an XOR gate


23


combines the result from XOR gate


21


and XOR gate


22


, and an XOR gate


24


combines input e and a first carry-out (i.e., x


1


_in) from a previous stage of five-input/two-output adder


20


. At level three, an XOR gate


25


combines the results from XOR gate


23


and XOR gate


24


. At level four, an XOR gate


26


combines the results from XOR gate


25


and a second carry-out (i.e., x


2


_in) from the previous stage of five-input/two-output adder


20


. The logic operations shown within blocks


17


and


18


are preferably performed at level one in conjunction with XOR gates


21


and


22


.




In order for five-input/two-output adder


20


to operate correctly, the following equation must be satisfied:








a+b+c+d+e+x




1


_in+


x




2


_in=2(


x




1


_out+


x




2


_out+carry)+sum






For the convenience of illustration, various results of (a+b+c+d) are mapped out in Table I, where a, b, c, and d are input values of either a logical 0 or logical 1.
















TABLE I









a + b + c + d




other conditions




x1_out




n




s1











0





0




0




0






1





0




1




0






2




(a and b) or (c and d)




0




1




1







(a or b) and (c or d)




1




0




0






3





1




0




1






4





1




1




1














In Table I, column a+b+c+d represents the sum of inputs a+b+c+d, column other conditions represents the two different conditions in which the sum total of inputs a+b+c+d equals two, columns x


1


_out, n, and s


1


represent different intermediate values within five-input/two-output adder


20


.




Based on the result listed in Table I, the following equations hold true:








x




1


_out=(


a


or


b


) and (


c


or


d


);










s




1


=(


a


and


b


) or (


c


and


d


);










s




1


xor


n


=(


a


xor


b


) xor (


c


xor


d


); and










a+b+c+d


=2(


x




1


_out)+


s




1


+


n


  (1)






For the equations, “and” denotes a logical AND operation, “or” denotes a logical OR operation, and “xor” denotes a logical XOR (exclusive OR) operation. The 2(x


1


_out) in equation (1) denotes x


1


_out being a higher significant position than s


1


+n. By defining x


2


_out and s


2


as carry and save of (s


1


+n+x


1


_in), respectively, the following equations are formed:













x2_out
=


(

s1





and





n

)






or






(

s1











and











x1_in

)






or






(

n











and





x1_in

)








=


(

s1











and





n

)






or






(

x1_in





and






(

s1_in





or





n

)


)









=


{


(


s1





xor





n

_

)












and





s1

}






or






(


(

s1











xor











n

)












and





x1_in

)



;











s2
=


(

s1





xor





n

)






xor





x1_in


;




and



&IndentingNewLine;




s1
+
n
+
x1_in

=


2


(
x2_out
)


+
s2






(
2
)













In a similar manner, let carry and sum be the carry and sum of (s


2


+e+x


2


_in), respectively, and the following equations are formed:






carry={({overscore (


s





2


xor


e


)}) and


e


} or (


s




2


xor


e


) and x


2


_in);








sum=(


s




2


xor


e


) xor


x




2


_in; and










s




2


+


e+x




2


_in=2(carry)+sum (3)






From equations (1), (2), and (3),










a
+
b
+
c
+
d
+
e
+
x1_in
+
x2_in

=


2


(
x1_out
)


+
s1
+
n
+
e
+
x1_in
+
x2_in







=


2


(
x1_out
)


+

2


(
x2_out
)


+
s2
+
e
+
x2_in









=


2


(
x1_out
)


+
x2_out
+
carry


)

+
sum













Thus, it is shown that five-input/two-output adder


20


generates x


1


_out, x


2


_out, carry, and sum according to their definitions in the corresponding equations.




By arranging the equations, it is shown that five-input/two-output adder


20


combines input values a, b, c, d, and e to generate a sum value and a carry value, as follows:









sum
=






(

s2





xor





e

)












xor











x2_in








=






(

s1





xor





n





xor






x1

_

in


)






xor





e





xor





x2_in












=






(

a





xor





b











xor





c





xor





d

)






xor





x1_in





xor





e











xor





x2_in







=





a











xor





b





xor





c





xor





d





xor





e





xor





x1_in











xor





x2_in








carry
=





{


(


s1





xor





n











xor





x1_in





xor





e

_

)






and





e

}


















or






{


(

s1





xor





n





xor





x1_in





xor





e

)






and





x2_in

}


;








=





{


(


a





xor





b





xor





c





xor





d











xor





x1_in





xor





e

_

)












and





e

}

















or






{


(

a





xor





b











xor





c





xor





d





xor





x1_in





xor





e

)












and





x2_in

}















As has been described, the present invention provides a five-input/two-output adder. The five-input/two-output adder of the present invention only have four levels of XOR delays on its critical path. It is understood by those skilled in the art that the five-input/two-output adder of the present invention can be utilized to implement various multipliers or fused multiply-adders within a processor. Furthermore, several five-input/two-output adders of the present invention can be concatenated to provide 5:2, 10:2, 15:2, 20:2 compressions.




Referring now to

FIG. 3

, there is depicted a block diagram of a processor in which five-input/two-output adder


20


may be incorporated. Within a processor


30


, a bus interface unit


32


is coupled to a data cache


33


and an instruction cache


34


. Both data cache


33


and instruction cache


34


are high speed set-associative caches which enable processor


30


to achieve a relatively fast access time to a subset of data or instructions previously transferred from a main memory (not shown). Instruction cache


34


is further coupled to an instruction fetch unit


31


which fetches instructions from instruction cache


34


during each execution cycle.




Processor


30


also includes three execution units, namely, an integer unit


35


, a load/store unit


36


, and a floating-point unit


37


. Five-input/two-output adders can be found within integer unit


35


and floating-point unit


37


. Each of execution units


35


-


37


can execute one or more classes of instructions, and all execution units


35


-


37


can operate concurrently during each processor cycle. After execution has terminated, execution units


35


-


37


store data results to a respective rename buffer, depending upon the instruction type. Then, any one of execution units


35


-


37


signals a completion unit


40


that the instruction unit has been finished. Finally, instructions are completed in program order by transferring result data from the respective rename buffer to a general purpose register


38


or a floating-point register


39


.




While the invention has been particularly shown and described with reference to a preferred embodiment, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention.



Claims
  • 1. An adder comprising:five data inputs; a first carry-in input and a second carry-in input; a sum output and a carry output; and only four levels of logic gates coupled between said five data inputs and said sum output and said carry output for combining values received at said five data inputs and generating a sum value and a carry value at said sum output and said carry output, respectively.
  • 2. The adder of claim 1, wherein said sum value is generated by a xor b xor c xor d xor e xor x1_in xor x2_in, wherein a, b, c, d, and e are input values to said five data inputs, wherein x1_in and x2_in are values from a previous stage to said first and second carry-in inputs.
  • 3. The adder of claim 1, wherein said carry value is generated by {({overscore (a xor b xor c xor d xor x1_in xor e)}) and e} or {(a xor b xor c xor d xor x1_in xor e) and x2_in}, wherein a, b, c, d, and e are input values to said five data inputs, wherein x1_in and x2_in are values from a previous stage to said first and second carry-in inputs.
  • 4. The adder of claim 1, wherein said logic gates include XOR logic gates.
  • 5. The adder of claim 1, wherein said adder further includes a first carry-out output and a second carry-out output.
  • 6. A processor comprising:an instruction unit, and an execution unit coupled to said instruction unit, wherein said execution unit has an adder that includes five data inputs; a first carry-in input and a second carry-in input; a sum output and a carry output; and only four levels of logic gates coupled between said five data inputs and said sum output and said carry output for combining values received at said five data inputs and generating a sum value and a carry value at said sum output and said carry output, respectively.
  • 7. The processor of claim 6, wherein said sum value is generated by a xor b xor c xor d xor e xor x1_in xor x2_in, wherein a, b, c, d, and e are input values to said five data inputs, wherein x1_in and x2_in are values from a previous stage to said first and second carry-in inputs.
  • 8. The processor of claim 6, wherein said carry value is generated by {({overscore (a xor b xor c xor d xor x1_in xor e)}) and e} or {(a xor b xor c xor d xor x1_in xor e) and x2_in}, wherein a, b, c, d, and e are input values to said five data inputs, wherein x1_in and x2_in are values from a previous stage to said first and second carry-in inputs.
  • 9. The processor of claim 6, wherein said logic gates include XOR logic gates.
  • 10. The processor of claim 6, wherein said adder further includes a first carry-out output and a second carry-out output.
US Referenced Citations (7)
Number Name Date Kind
3535502 Clapper Oct 1970 A
5805491 Bechade Sep 1998 A
5818747 Wong Oct 1998 A
6308195 Hirase et al. Oct 2001 B1
6345286 Dhong et al. Feb 2002 B1
20020038327 Ferroussat Mar 2002 A1
20020129077 Rhee Sep 2002 A1
Non-Patent Literature Citations (6)
Entry
Hsiao et al “Design of high-speed low-power 3-2 counter and 4-2 compressor for fast multipliers” Electronics Letters vol. 34 No. 4 pp. 341-343 Feb. 19, 1998.*
Mori et al., “A 10-NS 54×54-B Parallel Structured Full Array Multiplier with 0.5um CMOS Technology,” IEEE Journal of Solid State Circuits, vol. 26, No. 4, 1991, pp. 600-606.
Law et al., “A Low-Power 16×16-B Parallel Multiplier Utilizing Pass-Transistor Logic”, IEEE Journal of Solid State Circuits, vol. 34, No. 10, Oct. 1999, pp. 1395-1399.
Izumikawa et al., “A 0.25um CMOS 0.9-V 100-MHz DSP Core”, IEEE Journal of Solid State Circuits, vol. 32, No. 1, Jan. 1997, pp. 52-61.
Yano et al., “A 3.8-ns CMOS 16×16-B Multiplier Using Complementary Pass-Transistor Logic”, IEEE Journal of Solid State Circuits, vol. 25, No. 2, Apr. 1990, pp. 388-395.
Song et al., “Circuit and Architecture Trade-Offs for High-Speed Multiplication,” IEEE Journal of Solid State Circuits, vol. 26, No. 9., Sep. 1991, pp. 1184-1198.