4 votos

STM32F4 - Unidad de punto flotante ( FPU )

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

Para citar este sitio web :

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

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

7voto

Chris Lieb Puntos 106

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

3voto

Spehro Pefhany Puntos 90994

Si necesitas realizar operaciones sencillas con flotadores de precisión simple, la FPU (suponiendo que tu compilador la soporte y la configures adecuadamente) puede acelerar esas operaciones al menos en un orden de magnitud.

Ten en cuenta que si necesitas doble precisión, la SPFPU no es de ayuda. En la práctica, 24 bits de mantisa (float de 32 bits) no son suficientes para muchas aplicaciones reales (adquisición y filtrado de datos de precisión, navegación, audio de alta gama), mientras que un punto fijo de doble o incluso de 32 bits es suficiente.

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

2voto

Nam G VU Puntos 3494

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

También hay un generador analógico de números aleatorios y 3 ADCs de 12 bits que pueden manejar 7,2MHz (estoy asumiendo una placa Discovery). Supongo que veremos muchos de estos en variaciones "-uino".

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X