64 bit multiply-accumulate

64 bit multiply-accumulate

Post by Brian K. Micha » Mon, 22 Sep 2003 02:02:51



I have been unsuccessfully looking for a simple 64 bit MAC device.
I need:
1) this DSP or micro to be on a PC104 card
2) Linux support (or enough docs to hack)

My algorithm is very simple:
int x[4000];      // an array of 32 bit integers
int xt;           // 32 bit integer
long sum=0;       // a 64 bit integer
int i;

for (i=0; i<4000; i++) {
  xt = x[i];       // in assembler this would be mem->register
  sum = sum + xt;  // 64bit accumulator plus 32bit register to 64bit
accumulator

Quote:}

Now I know technically a MAC op might want the following:
  sum = sum*1 + xt;

Is there anything easy and cheap out there that will do this?  I
thought MMX commands would do this, but I think the MMX ALU is
strictly 32 bit operands.

 
 
 

64 bit multiply-accumulate

Post by Andrew Reill » Tue, 23 Sep 2003 12:45:54



Quote:> I have been unsuccessfully looking for a simple 64 bit MAC device.
> I need:
> 1) this DSP or micro to be on a PC104 card
> 2) Linux support (or enough docs to hack)

> My algorithm is very simple:
> int x[4000];      // an array of 32 bit integers
> int xt;           // 32 bit integer
> long sum=0;       // a 64 bit integer
> int i;

> for (i=0; i<4000; i++) {
>   xt = x[i];       // in assembler this would be mem->register
>   sum = sum + xt;  // 64bit accumulator plus 32bit register to 64bit
> accumulator
> }

> Now I know technically a MAC op might want the following:
>   sum = sum*1 + xt;

> Is there anything easy and cheap out there that will do this?  I
> thought MMX commands would do this, but I think the MMX ALU is
> strictly 32 bit operands.

If you're not actually doing a multiply, then just about any
32-bit processor will do that job.  Just follow the first add
(with the low word of the sum) with an add-with-carry of zero to
the high word.  Processors like MIPS, which don't have carry
flags can do essentially the same thing with comparisons.

In other words, I don't think that you've explained enough
about your problem to substantiate the need for a hardware 64bit
adder or MAC unit.  If you actually do need such a thing,
anything based on the ARM9e core can do it for you.  I'm sure
that there are others.

--
Andrew

 
 
 

1. RS6000 Multiply/Accumulate instruction

In last weeks COMPCOM presentation of the RS6000, the
IBM speaker was asked if the new, fast fp multiply/
accumulate instruction was IEEE 754 compatible.  The
reply was 'no.'  If anyone (IBM?) has any information,
how about commenting on some questions?

1. Is this instruction incompatible simply because such
        an instruction is not described by the IEEE 754 fp
        standard? (and would it be useful if it was?  How
        about it, DSP?)

2. Is it incompatible because it is impossible to generate
        a result which is equal to the result of a separate
        multiply then add with the selected rounding mode and
        destination size?  Or is it too difficult/complex/costly?

3. On the RS6000 - the double-precision Linpack numbers were
        quite impressive if the multiply/accumulate unit was
        allowed to operate on both fp ops in one pass.  What is
        the number if the unit must be cycled twice (once for mul
        and again for add) if that is required to generate IEEE
        precise results?

Thanks for any answers.  If the replies are to me directly, I
will post a summary if it looks like the group would benefit.

*************************************************
*   Motorola Microprocessor Products Sector     *
*   Austin, Tx                                  *
*                                               *
*   Chris N. Hinds <><      Standard Disclamers *

*************************************************

2. SQLDriverConnect

3. 64-bit Windows NT will ship for Alpha before IA-64

4. engage clock with WPS=CMD.EXE?

5. 64 bit integer divide using 32 bit divider

6. BC++ 4.02 dos IDE ?

7. WANTED: algorithm to perform 64-bit / 32-bit signed & unsigned divide

8. Windows imapd services

9. bring 32-bit executable to 64-bit processor (intel processor)

10. Stealth Move from 80-bit FP to 64-bit FP?

11. 64-bit chips, 32-bit compatibility?

12. Is 64 bit vs. 128 bit addressing even relevent?