drg (10/23/82)
We've done some preliminary speed measurements on the NS16032 microprocessor. The following numbers are the cpu times in seconds needed to execute 5 million of the indicated operations. VAX 16032 68000 780 750 6MHz 6MHz null loop 14.3 26.7 34.0 30.0 long reg+reg 2.4 6.8 4.5 7.3 short reg+reg 2.4 6.8 4.5 4.0 long reg+const 3.2 6.5 13.0 16.0 short reg+const 4.3 7.2 8.0 8.0 long+const 6.6 9.3 27.5 33.3 short+const 6.8 10.8 17.5 20.0 long*const 12.0 48.3 100 560 * See Note 1 short*const 11.5 32.9 67 62 NOTES: 1) The 68000 and the 16032 seem to be about the same speed, except that the 16032 has a 32 bit ALU and the 68000 only has a 16 bit one. Long arithmetic on the 16032 is faster. The 68000 does not have a 32 bit multiply instruction, and the number in the table reflects the time needed to simulate it. 2) Although it is hard to tell, the VAX 11/750 may actually be slower than the two micros, but its cache gives it a great advantage on memory accesses. 3) We don't have any hard numbers, but it appears that the code size for the 16032 is noticably smaller than that for the 68000. 4) We don't have a 6 MHz 68000. All we have is a 4 MHz one, and I took the numbers for it and multiplied them by .66. You can buy 12 MHz 68000 chips, and National is promising 10 MHz 16032 chips. 5) Neither micro is using a memory management. Both VAXes do, of course. We have the memory management chip for the 16032, just haven't used it yet. 6) The benchmarks should be taken with a grain of salt. They were written in a high level language (Concurrent Euclid), rather than assembler. They do not test important things like procedure calling, argument passing, etc. 7) The benchmarks were all written in Concurrent Euclid, and compiled under 4.1BSD. The long+const example follows; the others are similar. var Test: module include '%IO' initially imports (var IO) begin register var i : SignedInt register var j : SignedInt var sum : LongInt := 0 IO.PutString('Test begins$N$E') i := 1 loop exit when i >= 500 j := 1 loop exit when j >= 10000 sum := sum + 45 j := j + 1 end loop i := i + 1 end loop IO.PutString('Test complete$N$E') end end module -- Dave Galloway, CSRG, University of Toronto