[comp.sys.m88k] A question about Mitch Alsup's June 1990 article

johnnyw@hubcap.clemson.edu (johnny lee wood) (04/19/91)

In the June 1990 IEEE Micro Mitch Alsup has an article entitled
Motorola's 88000 Family Architecture.  On page 59 he discusses the
floating point multiply pipeline which performs integer and floating point
multiplication.  The first stage multiplies one 32 bit operand by the
low-order 12 bits of the other operand.  The second stage multiplies the
middle-order 10 bits and the third stage the high-order 10 bits.  Then
he states Floating point multiplication continues with .....   This
implies to me that integer multiplication goes to the last stage, which the
multiply and arithmetic unit have in common, after the third stage.

Now for the question.  The MC88100 users manual has a diagram that shows
the integer multiply only going through the second stage of the multiply
pipe and then on to the last stage which the arithmetic and multiply
pipe have in common.  Two stages in the multiply pipe is not enough to
perform the three operations listed above, though.  Any help is greatly
appreciated.

John Wood      johnnyw@hubcap.clemson.edu 

marvin@oakhill.sps.mot.com (Marvin Denman) (04/20/91)

In article <1991Apr19.135732.27609@hubcap.clemson.edu> johnnyw@hubcap.clemson.edu (johnny lee wood) writes:
>
>In the June 1990 IEEE Micro Mitch Alsup has an article entitled
>Motorola's 88000 Family Architecture.  On page 59 he discusses the
>floating point multiply pipeline which performs integer and floating point
>multiplication.  The first stage multiplies one 32 bit operand by the
>low-order 12 bits of the other operand.  The second stage multiplies the
>middle-order 10 bits and the third stage the high-order 10 bits.  Then
>he states Floating point multiplication continues with .....   This
>implies to me that integer multiplication goes to the last stage, which the
>multiply and arithmetic unit have in common, after the third stage.
>
>Now for the question.  The MC88100 users manual has a diagram that shows
>the integer multiply only going through the second stage of the multiply
>pipe and then on to the last stage which the arithmetic and multiply
>pipe have in common.  Two stages in the multiply pipe is not enough to
>perform the three operations listed above, though.  Any help is greatly
>appreciated.

The reason for your confusion is that the multiply actually begins during the 
FP1 shared stage in the pipeline.  Some control circuitry in this stage is 
shared between the floating point pipes, but execution datapaths are not shared.
The multiplier does the first 12 bits of multiply during this stage if it
is a multiply instruction, and if it is for the add pipeline, alignment
shifting is done.  The second and third stages of the multiply array are
done during the next two clocks (Assuming the pipe does not stall).  After
the third stage of the multiplier array (MUL3 in the manual), integer 
multiplies take an early exit to the writeback stage (FPLAST in the manual).
Floating point multiplies must continue on to be accumulated fully and 
rounded.  


-- 
Marvin Denman
Motorola 88000 Design
cs.utexas.edu!oakhill!marvin