9

After seeing this question, I reminisced about how my old Amiga 2500/030 had a 68882 FPU unit. I recall that the Amiga's floating point routine library was smart enough to detect if you had an FPU or not and would automatically utilize it if available. If that was the case, you just got the benefit for free in any application that utilized the library.

That being said, I was always curious exactly how much performance benefit did it actually give. Are there any benchmarks or notable examples on the Amiga where this difference is visible? Any particular Amiga applications which greatly benefited from an FPU?

3
  • Ray-tracing applications were very popular amongst Amiga users before the Video Toaster. Sculpt 3D was the trail-blazing application, created by Eric Graham in 1987, inspired by the popularity of the "Juggler".
    – Brian H
    Nov 10 '20 at 14:02
  • I don't think the Amiga's floating-point library had to be all that smart re: detection; the 68000 reserves the F-line instructions for coprocessors and raises an exception if it encounters one and no coprocessor is present. So an OS just needs to provide a trap for the F-line exception and then software implementations of the floating point instructions.
    – Tommy
    Nov 10 '20 at 16:22
  • even some rare games can benefit from an FPU. TFX is an example Nov 10 '20 at 21:57
9

As an example, years ago I installed a 25MHz 68030RC / 68851 / 68882 8MB accelerator in my A1200. First thing I did was use Realsoft Real 3D 1.x ray tracing program to render the teapot project. I rendered it using the standard program(1), then the FPU version. From what I remember, using the FPU version of Real 3D, the speed up was about 3 to 4 times faster.

So whilst doing floating point emulation in software can take dozens to hundreds of instructions, real world programs would tend to be mixed with CPU instructions for program control and logic, e.g comparisons, branches, moves etc, so the speed increase wouldn't be so dramatic. Still nothing to be sniffed at though.

(1 - I think the standard program would have been compiled for 68000 as it could run on my A500. So a minority of the speed up of the FPU version would have been due to the 020/030 32-bit instruction set enhancements.)

4
  • 1
    Many Amiga accelerator ads claimed >10x performance increase with popular ray tracing applications. In practice, rendering times of hours became minutes and days became hours.
    – Brian H
    Nov 10 '20 at 13:42
  • @BrianH 6x to 10x depeding on the exact software and the model to be rendered was also my experience. A500 with turboboard: 50Mhz 68030, 64MHz 68882 and 4 MB 32-bit RAM on the board.
    – Tonny
    Nov 10 '20 at 15:13
  • @Tonny You're right. I had (still have) the poorer solution of 68000+68881 connected to an A1000 as part of my 2MB FAST RAM expansion. Later, upgraded to A3000.
    – Brian H
    Nov 10 '20 at 15:53
  • @BrianH Still got mine too. It still works. A500 + A520 with 2 MB fast ram and 3 SCSI HD's and a SCSI CDROM player (modified a mini-tower PC case to house the drives and the beefier PSU I needed for the turbo-board) + KCS board (a Nec V30 PC on board that doubled as 512KB RAM expansion when not used as PC) + the turboboard itself. The turboboard wasn't an Amiga specific one. It was an upgrade board for MC68000 based VME bus industrial computers. They threw several away at work because they were broken. One PCB was good. Scrounged working CPU's and RAM from the other 3.
    – Tonny
    Nov 10 '20 at 16:11
8

The extreme example is pure floating point calculations. Analogue electronics simulations, some kinds of 3D graphics rendering, statistical machine learning, huge spreadsheets, and so on.

The comp.sys.m68k FAQ gives 264 kFLOPS for the 68882 at 25 MHz. The 68030 runs about 8 MIPS (integer) at 25 MHz. The source code for Linux's m68k floating point emulation library is available, and the routines require dozens to many hundreds of instructions to run.

While the exact speed-up would depend on the library and specific instruction mix, we can infer from these numbers that floating point with the 68882 will generally run dozens of times faster.

3

Any particular Amiga applications which greatly benefited from an FPU?

Any program that uses floating point math extensively should greatly benefit. It can be done automatically by going through an external library that uses the FPU if available, but this has higher overhead than inlined FPU instructions.

In general if a program has different versions for FPU and non-FPU, or the documentation states that it requires an FPU, then it probably has inline FPU code. Since requiring an FPU greatly reduces the target audience it suggests the developers thought the performance gain was worth it.

Notable examples of Amiga applications with specific FPU versions include Lightwave 3D, Imagine, VistaPro, and IBrowse (Javascript library).

I was always curious exactly how much performance benefit did it actually give. Are there any benchmarks or notable examples on the Amiga where this difference is visible?

The benchmarking program AIBB includes several tests that show the difference between using software floating point math and inline FPU instructions. On my A1200 with Blizzard 1230-IV accelerator (50MHz 68030 and 68882) the following results were obtained:-

Savage (nested calls to transcendental functions in double precision floating point math):-

SC Math: 64.6 seconds 
CP math: 1.68 seconds 
speedup: 38.5 times faster

BeachBall (raytraced 3D beach ball rendered on hires 8 color screen):-

SC Math: 60.45 seconds      
CP Math: 7.35 seconds
speedup: 8.2 times faster

The BeachBall test is probably more representative of typical real world performance (though of course results are always dependent on the particular implementation). In this case the speedup is equivalent to running the 68030 at 410 MHz, and 52% faster than a 50 MHz 68060 running software floating point code.

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.