¿La Raspberry Pi tiene soporte de punto flotante de hardware?

34

Hay algunos artículos que dicen que es mejor usar algoritmos de flotación suave en dispositivos ARM, porque muy pocos chips ARM tienen coprocesadores de flotación dura. Entonces, ¿el RPi tiene soporte de flotación dura? Si es así, ¿es más rápido ese flotador suave? (Debería ser, ¿verdad?)

Alex Chamberlain
fuente

Respuestas:

30

De acuerdo con las preguntas frecuentes , la Raspberry Pi utiliza un chip ARM 11 con soporte de coma flotante:

¿Qué SoC estás usando?

El SoC es un Broadcom BCM2835. Contiene un ARM1176JZFS, con punto flotante, que funciona a 700Mhz, y una GPU Videocore 4. La GPU es capaz de reproducir con calidad BluRay, utilizando H.264 a 40MBits / s. Tiene un núcleo 3D rápido al que se accede utilizando las bibliotecas OpenGL ES2.0 y OpenVG suministradas.

Esto será más rápido que el flotador suave (si no lo es, ¡me sorprendería!), Aunque en sistemas sin soporte de hardware, a menudo es una mejor idea aprovechar el procesamiento de punto fijo si no necesita específicamente el rango ofrecido por flotación precisión de punto

Matt Lacey
fuente
9

Tiene soporte de coma flotante de hardware. Hasta donde sé, esto no está disponible en la distribución predeterminada de Debian proporcionada para el RPi (todavía). No estoy muy seguro acerca de Arch, aunque si no tienen soporte, imagino que lo tendrá pronto.

Tengo Gentoo en mi RPi, por lo que tengo todo compilado con soporte de flotación dura por defecto. Es rápido :)

CFLAGS="-O2 -pipe -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard"
CXXFLAGS="${CFLAGS}"
CHOST="armv6j-hardfloat-linux-gnueabi"

(¡distcc y compilación cruzada se usan ampliamente, por supuesto!)

Xiol
fuente
Xiol, ¿puedes hacer un Unixbench-Benchmark en tu sistema Gentoo y publicar los resultados? Seguramente sería interesante para la comparación, ya que la diferencia de rendimiento entre soft-fpu y hard-fpu es bastante grande. De acuerdo con copypaste.at/2012/06/raspberry-pi-und-debian-7-wheezy-soft.html (lo siento, idioma alemán) el punto de referencia de piedra de afilar es aproximadamente 10 veces más rápido con Raspian (ARMHF arch w / HardFPU) en comparación con el RPI Debian recomendado (ARMEL con SoftFPU). Supongo que para GenToo debe ser aún más grande.
6

Entonces, ¿el RPi tiene soporte de flotación dura?

Sí, específicamente (en el Pi original) VFPv2.

Si es así, ¿es más rápido ese flotador suave?

Hay algunos artículos que dicen que es mejor usar algoritmos de flotación suave en dispositivos ARM, porque muy pocos chips ARM tienen coprocesadores de flotación dura.

En 2007, el punto flotante en el brazo era un desastre, muchos chips no tenían FPU en absoluto. Aquellos que sí tenían a menudo tenían uno de varios diferentes e incompatibles. El peor brazo de Debian (una de las principales distribuciones de Linux de brazo en ese momento) fue construido por razones históricas para una FPU llamada FPA que muy pocos chips tenían y dependía principalmente de la emulación del kernel para punto flotante (el punto flotante del software es lento, el punto flotante emulado por el núcleo es más lento) Creo que la situación en otras distribuciones fue similar, pero no soy positivo al respecto.

Dado el desorden en el momento, se tomó la decisión de que la mejor opción era hacer un puerto EABI utilizando la versión de línea de base (flotante suave) de EABI. Este ABI fue diseñado de tal manera que el código podría usar el ABI de línea de base mientras que opcionalmente usa la FPU. La idea en ese momento era que el núcleo de la distribución se construiría usando un punto flotante de software y luego el código específico que utilizaba el punto flotante podría construirse con punto flotante de hardware pero aún usando la línea de base (flotación suave) ABI. Este puerto era conocido en el mundo de Debian como "armel".

Sin embargo, el bit "paquetes específicos creados con hardware de coma flotante" realmente no funcionó. En la práctica, pocos paquetes se molestaron en hacer tal cosa y también hubo una sobrecarga de valores aleatorios entre registros enteros y de coma flotante.

Un avance rápido hasta 2011 y la situación había cambiado considerablemente. Arm había estado presionando agresivamente a VFP y la gran mayoría de los "procesadores de aplicaciones" (el tipo de cosas que se encuentran en teléfonos móviles y similares) lo habían adoptado. Varias de las principales distribuciones de Linux (al menos Debian, Ubuntu y Fedora inicialmente, más tarde) optaron por hacer puertos utilizando punto flotante de hardware y el ABI de flotación rígida. Desafortunadamente para el Pi, estas distribuciones (que se estaban completando en el momento en que se lanzó el Pi) generalmente establecieron sus requisitos mínimos de hardware como ARMv7 con VFPv3_d16 para que no se ejecuten en el Pi.

Entonces, los fanáticos de Pi comenzaron a trabajar en variantes de distribución específicas de pi que usaban punto flotante de hardware y el ABI de flotación dura pero se construyeron con configuraciones de compilador que se ejecutarían en el pi.

Peter Green
fuente
5

Desde el 18 de septiembre de 2012, Arch Linux ARM también tiene soporte de flotación dura. Lea este anuncio:

Hoy estamos abriendo los nuevos repositorios de hard-float armv6 al público, con todos los paquetes creados para admitir la unidad de punto flotante VFP disponible en Raspberry Pi y Via APC-IO. Debido a que no hay una ruta de actualización entre el repositorio de flotación suave armv5 y el nuevo repositorio armv6h, también hemos lanzado una nueva imagen de instalación para Raspberry Pi. El enlace a la imagen está disponible en la página de instalación de Pi en nuestro sitio principal. Esta imagen también está configurada para systemd en lugar de sysvinit e initscripts, por lo que los tiempos de arranque son más rápidos y la instalación está preparada para el futuro para los cambios que eventualmente se están volviendo permanentes en Arch.

Arch Linux ARM Raspberry Pi

Toni
fuente
4

Sí, como otros han dicho, la Raspberry Pi tiene soporte de flotación dura. Echa un vistazo al sistema operativo Raspbian .

Raspbian es un puerto no oficial de Debian Wheezy armhf con configuraciones de compilación ajustadas para producir un código optimizado de "flotación dura" que se ejecutará en la Raspberry Pi. Esto debería proporcionar un rendimiento significativamente más rápido para aplicaciones que hacen un uso intensivo de las operaciones aritméticas de coma flotante.

Christopher
fuente