cray/c64 comparison

From: Christopher Phillips (
Date: 2001-05-03 11:30:54

from the link posted earlier by Dave R.


  "Flops:  1 Cray (2.2Gigaflop)  = 1 Billion C64 (64 Bit floatingpoint
   in software?)"

I would dispute that; this implies that it would take a c64 roughly
a second for a double precision multiply-accumulate.

Let's look at the multiply; in software that would dwarf the time
for the addition.

A fairly naive squaretable driven 8bit*8bit multiply accumulating
it's 16 bit result to a field in a 112 bit total takes about 77
cycles (see below for outline).

multiplying two doubles requires (56/8)*(56/8) of these, so we're
now up to 49*77=3773 cycles.  Normalising the result should take
under 500 cycles, and there's plenty of room for optimisation
(eg not computing lower order terms in cases where they won't affect
the result, grouping the additions to avoid zero page writes and
reloads of x, etc).  So we should be able to get the entire product
in under 4000 cycles.

Tack a sub 1000-cycles addition on the end, and we should be able
to get at least 200 double precision MACs per second.

Hence, 1 Cray is only 5.5 million C64s for Flops. :-)

Christopher Jam.


   ldx n1   ; bytes to multiply
 6 lda n2
   sta l+1  ;modify code
   sta m+1
   eor #$ff
   sta l+4
   sta m+4
20 sec

   lda t1:a,x
   sbc t2:a,x
11 tay

   lda t3:a,x
   sbc t4:a,x
11 tax

   adc pp+n
10 sta pp+n
   adc pp+n+1
 8 sta pp+n+1
   adc pp+n+2
 8 sta pp+n+2
 3 bcc nomorecarries  ; this branch almost always taken!
  .. stuff for carrying to higher words
-Virus scanned and cleared ok
This message was sent through the cbm-hackers mailing list.
To unsubscribe: echo unsubscribe | mail

Archive generated by hypermail 2.1.1.