¿Qué aumento de rendimiento obtenía normalmente un Amiga con una FPU?

Nov 09 2020

Después de ver esta pregunta , recordé cómo mi antiguo Amiga 2500/030 tenía una unidad FPU 68882. Recuerdo que la biblioteca de rutinas de punto flotante de Amiga era lo suficientemente inteligente como para detectar si tenía una FPU o no y la utilizaría automáticamente si estaba disponible. Si ese fuera el caso, simplemente obtuvo el beneficio de forma gratuita en cualquier aplicación que utilizara la biblioteca.

Habiendo dicho eso, siempre tuve curiosidad por saber exactamente cuánto beneficio de rendimiento proporcionaba. ¿Hay puntos de referencia o ejemplos notables en el Amiga donde esta diferencia sea visible? ¿Alguna aplicación Amiga en particular que se haya beneficiado enormemente de una FPU?

Respuestas

8 RETRAC Nov 09 2020 at 20:37

El ejemplo extremo son los cálculos de punto flotante puro. Simulaciones de electrónica analógica, algunos tipos de renderizado de gráficos 3D, aprendizaje automático estadístico, hojas de cálculo enormes, etc.

Las preguntas frecuentes de comp.sys.m68k dan 264 kFLOPS para el 68882 a 25 MHz. El 68030 funciona con aproximadamente 8 MIPS (entero) a 25 MHz. El código fuente de la biblioteca de emulación de punto flotante m68k de Linux está disponible y las rutinas requieren de docenas a cientos de instrucciones para ejecutarse.

Si bien la aceleración exacta dependería de la biblioteca y la combinación de instrucciones específicas, podemos inferir de estos números que el punto flotante con el 68882 generalmente se ejecutará docenas de veces más rápido.

8 user19862 Nov 10 2020 at 12:18

Como ejemplo, hace años instalé un acelerador de 25MHz 68030RC / 68851/68882 8MB en mi A1200. Lo primero que hice fue usar el programa de trazado de rayos Realsoft Real 3D 1.x para renderizar el proyecto de la tetera. Lo rendericé usando el programa estándar (1), luego la versión FPU. Por lo que recuerdo, usando la versión FPU de Real 3D, la aceleración fue de 3 a 4 veces más rápida.

Entonces, si bien la emulación de punto flotante en el software puede tomar de docenas a cientos de instrucciones, los programas del mundo real tienden a mezclarse con instrucciones de la CPU para el control y la lógica del programa, por ejemplo, comparaciones, ramificaciones, movimientos, etc., por lo que el aumento de velocidad no sería tan grande. dramático. Sin embargo, todavía no hay nada que olfatear.

(1 - Creo que el programa estándar se habría compilado para 68000, ya que podría ejecutarse en mi A500. Por lo tanto, una minoría de la aceleración de la versión FPU se habría debido a las mejoras del conjunto de instrucciones 020/030 de 32 bits).

1 BruceAbbott Nov 11 2020 at 10:22

¿Alguna aplicación de Amiga en particular que se haya beneficiado enormemente de una FPU?

Cualquier programa que utilice ampliamente las matemáticas de coma flotante debería beneficiarse enormemente. Se puede hacer automáticamente pasando por una biblioteca externa que usa la FPU si está disponible, pero esto tiene una sobrecarga más alta que las instrucciones FPU en línea.

En general, si un programa tiene diferentes versiones para FPU y no FPU, o la documentación indica que requiere una FPU, entonces probablemente tenga código FPU en línea. Dado que requerir una FPU reduce en gran medida la audiencia objetivo, sugiere que los desarrolladores pensaron que la ganancia de rendimiento valió la pena.

Ejemplos notables de aplicaciones Amiga con versiones específicas de FPU incluyen Lightwave 3D , Imagine , VistaPro e IBrowse (biblioteca Javascript).

Siempre tuve curiosidad por saber exactamente cuánto beneficio de rendimiento ofrecía. ¿Hay puntos de referencia o ejemplos notables en el Amiga donde esta diferencia sea visible?

El programa de evaluación comparativa AIBB incluye varias pruebas que muestran la diferencia entre el uso de matemáticas de punto flotante de software e instrucciones FPU en línea. En mi A1200 con acelerador Blizzard 1230-IV (50MHz 68030 y 68882) se obtuvieron los siguientes resultados: -

Savage (llamadas anidadas a funciones trascendentales en matemáticas de punto flotante de doble precisión): -

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

BeachBall (pelota de playa 3D con trazado de rayos representada en la pantalla de 8 colores de los empleados): -

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

La prueba de BeachBall es probablemente más representativa del rendimiento típico del mundo real (aunque, por supuesto, los resultados siempre dependen de la implementación particular). En este caso, la aceleración es equivalente a ejecutar el 68030 a 410 MHz, y un 52% más rápido que un código de punto flotante del software 68060 de 50 MHz.