12/20 Can someone explain this: "Denormal numbers present a major
stumbling block to implementing floating point multiplcation,
because they require performing a variable shift in the
multiplier, which wouldn't otherwise be needed. Thus, high-
performance, floating point multipliers often do no handle
denormalized numbers, but instead trap, letting software
handle them."
\_ Don't you always multiply the mantissas as if they are integers
and then add the exponents, regardless of whether they are
normalized or not?
\_ normalizing a floating point number means shifting its mantissa
to the left until the MSB of the mantissa is 1 (and compensating
by changing the exponent). if you know
a number is normalized, you don't need to store the 1, which
means that assuming normalized gets you a free bit.
however, being a certain number of shifts, when the exponent
gets as small as it can get, you can't shift any more, and
you might be forced to use a denormal float. this is only a
problem with very small number. typically, hardware
will throw and error when it can't normalize. good hardware
doesn't and just says lets you know that something is a denorm.
-ali.
\_ That's easy. Just shift left by the leading zero count.
Zero counting in hardware is pretty easy. For 32-bits
that's just 5 levels of multiplexor and AND gates (AND
gates are probaly has a higher delay).
gates probably has a higher delay). |