[net.arch] The problem with high-order truncation of multiplication

ken@turtlevax.UUCP (Ken Turkowski) (08/01/85)

Signal processing generally uses fixed-point numbers that are normalized:
i.e. have a magnitude less than 1.  When two such numbers are multiplied
together, the product is still normalized.  Rather than throwing away the
most significant bits as in multiplication of integers, you want to keep
these bits, since that's where most of the significance is, and instead
throw away the least significant bits, after shifting out the duplicated
sign bit.

Machines like the WE32100 which automatically truncate products at the top
cannot be used for signal processing.  I'm surprised that AT&T would make
such a machine, since they do so much signal processing for echo cancelling,
phase extraction, etc. in their communication products.
-- 

Ken Turkowski @ CADLINC, Menlo Park, CA
UUCP: {amd,decwrl,hplabs,nsc,seismo,spar}!turtlevax!ken
ARPA: turtlevax!ken@DECWRL.ARPA

hammond@petrus.UUCP (Rich A. Hammond) (08/05/85)

> Ken Turkowski @ CADLINC, Menlo Park, CA says:
> discussion of multiplication of fixed point where MS half is important...
> 
> Machines like the WE32100 which automatically truncate products at the top
> cannot be used for signal processing.  I'm surprised that AT&T would make
> such a machine, since they do so much signal processing for echo cancelling,
> phase extraction, etc. in their communication products.
> 
But almost all signal processing to be done in real time is much too slow
on even a 32 bit micro.  They have had specialized chips to do digital
signal processing for many years, and the echo cancelling chip is a full
custom design.
Besides, the processor people are probably a completely different location
and organization than the people building applications for signal processing.
Rich Hammond (Bell Commmunications Research, not part of AT&T).
(ihnp4, decvax, ucbvax)!bellcore!hammond

franka@mmintl.UUCP (Frank Adams) (08/05/85)

In article <846@turtlevax.UUCP> ken@turtlevax.UUCP (Ken Turkowski) writes:
>Signal processing generally uses fixed-point numbers that are normalized:
>i.e. have a magnitude less than 1.  When two such numbers are multiplied
>together, the product is still normalized.  Rather than throwing away the
>most significant bits as in multiplication of integers, you want to keep
>these bits, since that's where most of the significance is, and instead
>throw away the least significant bits, after shifting out the duplicated
>sign bit.

This is not as bad as you make it sound.  If you want something other than
the low-order bits, just stick your operands in the lower order half of
double-size operands, and pull out the portion of the result that you want.

This is a bit inconvenient, but the point is to make the common case
convenient.  And wanting the low order bits only is by far the most
common case.