#HiSpeed POV
Well,
Having a bit of spare time on my hands, and not having done anything on POV-Ray
in several months except to keep in contact with Eduard to let him know I was
alive, the other day I was spurred to see if I could improve the performance of
POV-Ray on my Quadra. For those of you unfamiliar with the Quadra's 68040 chip,
it has the great majority of the functionality of an FPU built right into the
chip. However, not all of the commands are implemented in silicone. The '040
provides support for the entire 68882 floating–point coprocessor instruction
throught emulation software which Motorola wrote. Therfore, any FPU call that
is not in the chips instruction set is executed by this emulation software. It
turns out that there are three floating point calls on the '040 that one should
never make, due to the incredible slowness of the emulation software. So, this
evening, I tweaked the output of my compiler (which is not smart enough to do
'040 optimizations) to replace all occurences of these floating point calls
with equivalent calls that are implemented in the '040 chip in hardware. This
resulted in a 30x to 50x speedup when ever any of these calls were made. When I
ran a couple of scene files through my tweaked version of the raytracer,
imagine my shock at discovering that a couple of the files rendered 5 to 8
times faster using my version of the program than the version that we compiled
and uploded to the forum. Again, this is using the unmodified POV-Ray 1.0
source with just the simple replacement of two '040 floating point calls with
different, equivalent, calls. I think this clearly points to a need for a
special 68040 version of this program for Quadra and Centril owners who have
the full blown 68040 with the FPU. In a couple of weeks, I will be getting a
version of gcc 2.33 which runs under MPW, which is capable of producing '040
optimized code, and I will not have to try and do hand substitution for the
opcodes.
David.
There is 1 Reply.
Read action !