How long are the operands? For short operands you could use log
tables. For large floating point operands the fastest algorithm is
convergence division which requires a fast floating point multiplier. For
medium length numbers, 32 integers or single precision floating point,
you really can't do better than a two bit at time algorithm. The best
description of convergence division that I know of was in the Cray 1
manual, I think that you might be able to find a copy online.
How long is a cycle? All of the multi-cycle algorithms are
essentially pipelines, which can be unrolled. Delay won't
go down (much), throughput gets horrible, but you don't really
need the intervening clocks.
- Larry
> How long are the operands? For short operands you could use log
> tables. For large floating point operands the fastest algorithm is
> convergence division which requires a fast floating point multiplier. For
> medium length numbers, 32 integers or single precision floating point,
> you really can't do better than a two bit at time algorithm. The best
> description of convergence division that I know of was in the Cray 1
> manual, I think that you might be able to find a copy online.
I like the 360/91 algorithm a little better. It is actually a divide
instead of reciprocal, and is documented in about as many places. That is,
as an example in most books on pipelined processors. On the 360/91 it was
not unrolled, and I believe takes five cycles for single precision and six
for double.
-- glen