STM32F4 - Unidad de punto flotante (FPU)

4

Me gustaría saber cuál es el propósito de la unidad especial de FPU que se anuncia con los microcontroladores STM32F4.

Para citar este sitio web :

  

"El núcleo de Cortex-M4 presenta una precisión única de unidad de punto flotante (FPU) que admite todas las instrucciones y tipos de datos de procesamiento de datos de precisión simple de ARM".

¿Cuál sería la diferencia si esta unidad no estuviera presente en la arquitectura? ¿Esto significa que necesito usar algunas bibliotecas / funciones especiales cuando hago aritmética con variables de punto flotante? Gracias.

    
pregunta James C

3 respuestas

7

Sí, si no tiene una unidad de punto flotante de hardware, las operaciones de punto flotante deben realizarse utilizando las funciones de la biblioteca. Eso es lo que se hace con los procesadores Cortex-M3 típicos que no tienen soporte de punto flotante de hardware, y el tiempo de ejecución de estas operaciones aumenta significativamente.

    
respondido por el Joe Hass
3

Si necesita realizar operaciones flotantes simples de precisión simple, la FPU (suponiendo que su compilador lo admita y usted lo configure adecuadamente) puede acelerar esas operaciones en al menos un orden de magnitud.

Tenga en cuenta que si necesita una precisión doble, la SPFPU no sirve de nada. En la práctica, 24 bits de mantisa (flotación de 32 bits) no es suficiente para muchas aplicaciones reales (adquisición y filtrado de datos de precisión, navegación, audio de gama alta), mientras que un punto fijo doble o incluso a menudo de 32 bits es suficiente .

No estoy seguro de si acelera SP trascendentales o no, me gustaría ver algunos puntos de referencia.

    
respondido por el Spehro Pefhany
2

El ARM de 32 bits es bastante eficiente en el punto flotante del software. El conjunto de instrucciones permite que cualquier instrucción incluya un desplazamiento de barril derecho o izquierdo de longitud arbitraria en 1 ciclo. La ganancia de velocidad del hardware FP es más o menos de 5 a 50, dependiendo de la operación y cómo se manejan las funciones trigonométricas. El hardware de punto fijo DSP en el F4 puede mejorar la velocidad de DSP entre 2 y 4 veces. Eso no parece mucho, pero es la diferencia entre actualizar la velocidad del motor 16 veces por segundo en comparación con 4. Tiene, entre otras cosas, un MAC (multiplicador-acumulador) que funciona con 32x32 + 64 - > Acumulador de 64 bits y algunos procesos que harán un par de MAC de 16 a 32 bits. El MAC es el pilar de DSP.

También hay un generador de números aleatorios analógicos y 3 ADC de 12 bits que pueden manejar 7.2MHz (supongo que es una placa Discovery). Supongo que veremos muchas de estas variaciones en "-uino".

Re: ventaja de la velocidad, hice un gran análisis cuando. Era 1 MHz 65C02 en comparación con el mismo, con una FPU ADM9511 agregada. Algunas cosas en los trascendentales fueron 1000 veces más rápidas, pero muchas estaban solo en el rango de 10 a 50. Como la inspiración para ARM no es sorprendente que 6502 fuera bastante eficiente. Wozniak escribió el sistema completo de Apple II FP en 256 bytes. Números como 100 a 1000X fueron buenos para algunos otros 8 bits 8080 / Z80. AVR en Arduino tiene algunos buenos trucos para el conjunto de instrucciones que lo ubican muy por delante de la multitud de 8080 de los viejos tiempos.

    
respondido por el C. Towne Springer

Lea otras preguntas en las etiquetas