home .. forth .. misc mail list archive ..

Re: Adders and speed


> 
> MuP21 and the rest of Chuck's current projects all use straight ripple
> carry adders for arithmetic, with the known result that you have to insert
> a NOP after an ADD, because the addition is still propagating.
> 
> I went to a Computer Arithmetic lecture last night, on adders.  The guy
> talking was the guy who basically wrote the book on adders.  He first went
> through ripple carry adders, in gate-level detail, then he jumped to the
> far end of the spectrum and did full-up carry lookahead adders, then backed
> out to 4-bit carry lookahead cascades, then he covered a few pieces in
> between  (Carry Select, Carry Skip).
> 
[CUT]
> So: what is the point for MISC?
> 
> Well, I went away with the impression that, for the actual arithmetic unit
> adder, that adds user operands, once you decide a ripple carry adder isn't
> quite enough, you really need a pretty good reason not to go to a full-up
> carry lookahead cascade unit, and you NEVER have a reason to do Carry
> Select.

Depends. Carry select is sometimes good if you pipeline it
 - it depends on your technology and speed requirements.
If done carefully a hybrid carry-select adder can be blazingly fast.

Full blown carry lookahead is often overkill. (And if you're going that far
you could look at some other architectures such as Brent-Kung and other such
oddities). It can be very expensive.

I wrote up an overview and speed/area comparison of some adders last
august (and posted it either to MISC or Hotwired, I don't recall which).

The conclusion was that unless you have a very good reason to do otherwise
a skip adder is a good bet for medium performance applications.

I've just stuffed them on the web at http://www.io.com/~blighty/ if
anyone wants to see them.

Cheers,
  Steve