koontz%capvax.decnet@CAPSRV.JHUAPL.EDU ("CAPVAX::KOONTZ") (07/18/90)
Hi Len,
I was going to send this to you directly but I thought other netters may
find the numbers of interest.
We've been trying to compare 68020s et. al. with transputers for some time
now. All of our benchmarks to date have been floating-point intensive (scalar,
not vector). In the olden days, we tried an instruction mix that would appear
in an algorithm of interest on a 68020/68881 and a T800. The 68020/68881 was
coded in assembly and the T800 in occam. The 68020/881 was running at 16MHz and
the T800 at 20MHz. We tried several different mixes that included and excluded
transcendental functions. The 68881 has instructions for sin, cos, etc. while
the T800 had to make a function call and do polynomial interpolation. With
cache enabled on the 68020 and everything in on-chip RAM on the T800, we got the
following:
68020/881 (16MHz) T800 (20MHz)
Mix 1 (with trans) 100 21.34
Mix 2 (without trans) 53 5.82
Lately, we've run another benchmark on 68Ks vs. T8s which is a Kalman
filter application. This benchmark is pretty heavy on floating-point and does
Kalman tracking of X radar targets (with tracks synthesized before the benchmark
begins). The benchmark was written from common specs in both C and Ada and was
mainly used to compare the relative strengths of various C compilers to various
Ada compilers for 68020s. We took both sources lately and ran them through
Logical Systems C (89.1 Beta3) and Alsys Ada (v4.4). Here's what we got for
the best runs under LSC and Alsys and for the best compilers found for the 68020
(Microtek C and XD-Ada):
68020/881 (20MHz) T800 (20MHz)
Kalman (C) 21.0 2.68
Kalman (Ada) 16.0 6.41
The benchmarks use their own math functions so they completely disable any
transcendental instructions on either computer. We ran the benchmarks again in
C allowing the program to use the math libraries supplied with the compiler.
For the 68020, this allowed sin, cos, sqrt, and arctan to generate 68881
instructions; for the T800, sqrt instructions were generated. The results for
this pass were:
Kalman (C) w/trans 8.38 2.11
As a brief aside, we had no trouble compiling the benchmarks under C or Ada.
Both sources were expertly crafted (no sloppy use of the language); I'm sure
this helped ease the porting.
Discussion:
The Kalman results lined up well with our initial instruction mixes
performed almost 2 years earlier. If no transcendentals are used, expect 8
times better performance. If transcendentals are used, expect 4 times better.
The difference between C and Ada times are interesting to observe. Ada
compilers have been maturing at a fast clip for 68020s; their optimizers can now
beat C! However, the Alsys compiler is the 1st Ada for transputers while LSC
has been maturing nicely for years. But it sure beats the pants off the 1st Ada
compiler for 68020s we tried years back (I think the execution speed was
somewhere out in turtle-land at 200+ seconds!).
In general, benchmarks are nasty things. You have to get your application
(or something approaching your application) running on multiple machines. Then,
make sure the hardware is similar (similar clocks, memory wait-states, use of
cache or on-chip RAM, etc.). Then, try and throw as many optimization switches
in the right positions to get the fastest performance. We generally send
several people knowledgeable about their hardware and compiler off with some
code and say "Make it run as fast as you can." In the end, you hope that your
comparisons are useful and not apples-to-oranges.
We're going to run the Kalman on newer chips given their availability.
We would like to run things on a 68030/68882, 68040, T801, and T805 at faster
clock rates (33-40MHz on the 68K class, 25-30MHz on the T8s). We have some
68030/882 boards (33MHz Tadpole Multibus-II things) but no 68040s yet. We don't
have any T801 TRAMs yet but I hope to briefly borrow one for a day from a
vendor. Same for the T805 if a TRAM is available. LSC 89.1 will compile for any
T-type; I'm not sure if Alsys Ada will run on a T801 or T805. I think Microtek
C supports 68030/882's now but not the 68040 yet; I don't think XD-Ada runs on a
68030 or 040.
We're also going to adapt an ESM signal processing algorithm that we have
from C into Ada and run the tests on 680x0 and T80x hardware.
Keep you posted.
Ken Koontz
Senior Engineer
The Johns Hopkins University
Applied Physics Laboratory
Laurel, MD USA
email: koontz@capsrv.jhuapl.edu