Raspberry Pi ha il supporto hardware a virgola mobile?


34

Ci sono alcuni articoli in giro che dicono che è meglio usare algoritmi soft float su dispositivi ARM, perché pochissimi chip ARM hanno coprocessori float. Quindi, l'RPi ha il supporto float? Se è così, è più veloce quel galleggiante morbido? (Dovrebbe essere, giusto?)

Risposte:


30

Secondo le FAQ , il Raspberry Pi utilizza un chip ARM 11 con supporto in virgola mobile:

Quale SoC stai usando?

Il SoC è un Broadcom BCM2835. Questo contiene un ARM1176JZFS, con virgola mobile, a 700 Mhz e una GPU Videocore 4. La GPU è in grado di riprodurre in qualità BluRay, utilizzando H.264 a 40 MB / s. Ha un core 3D veloce accessibile tramite le librerie OpenGL ES2.0 e OpenVG fornite.

Questo sarà più veloce del soft float (se non lo è, sarei stupito!), Anche se sui sistemi senza supporto hardware è spesso una migliore idea sfruttare l'elaborazione a virgola fissa se non hai bisogno specificamente dell'intervallo offerto dal floating precisione puntuale.


9

Ha supporto hardware in virgola mobile. Per quanto ne so, questo non è disponibile nella distribuzione Debian predefinita fornita per l'RPi (ancora). Non sono troppo sicuro di Arch, anche se se non hanno il supporto immagino che lo avrà presto.

Ho Gentoo sul mio RPi, quindi ho tutto compilato con il supporto float per impostazione predefinita. È veloce :)

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

(distcc e cross-compilation ampiamente utilizzati, ovviamente!)


Xiol, puoi fare un benchmark Unixbench sul tuo sistema Gentoo e pubblicare i risultati? Sarebbe sicuramente interessante per il confronto in quanto la differenza di prestazioni tra soft-fpu e hard-fpu è piuttosto grande. Secondo copypaste.at/2012/06/raspberry-pi-und-debian-7-wheezy-soft.html (scusate, lingua tedesca) il benchmark whetstone è circa 10 volte più veloce con Raspian (arco ARMHF con HardFPU) rispetto all'RPI Debian consigliato (ARMEL con SoftFPU). Immagino che per GenToo debba essere ancora più grande.

6

Quindi, l'RPi ha il supporto float?

Sì, in particolare (sul Pi originale) VFPv2.

Se è così, è più veloce quel galleggiante morbido?

Ci sono alcuni articoli in giro che dicono che è meglio usare algoritmi soft float su dispositivi ARM, perché pochissimi chip ARM hanno coprocessori float.

Nel 2007 il floating point on arm era un casino, molti chip non avevano affatto una FPU. Quelli che avevano spesso ne avevano uno tra diversi e incompatibili. Il peggio Debian arm (una delle maggiori distribuzioni linux di arm al momento) fu per ragioni storiche costruito per una FPU chiamata FPA che pochissimi chip avevano e si basava principalmente sull'emulazione del kernel per il virgola mobile (il virgola mobile del software è lento, il virgola mobile emulato dal kernel è più lento). Penso che la situazione in altre distro fosse simile ma non sono positivo su questo.

Dato il disastro al momento, fu fatta la descrizione che l'opzione migliore era quella di fare una porta EABI usando la versione basale (soft-float) di EABI. Questa ABI è stata progettata in modo tale che il codice possa utilizzare l'ABI di base mentre opzionalmente utilizza la FPU. L'idea all'epoca era che il nucleo della distro sarebbe stato costruito usando il software in virgola mobile e quindi il codice specifico che utilizzava in modo massiccio il virgola mobile poteva essere costruito con hardware virgola mobile ma utilizzando comunque la linea di base (soft float) ABI. Questa porta era conosciuta nel mondo Debian come "armel".

Tuttavia, il bit "pacchetti specifici creati utilizzando l'hardware in virgola mobile" non ha funzionato. In pratica pochi pacchetti si sono preoccupati di fare una cosa del genere e c'era anche il sovraccarico di mescolare i valori tra registri interi e in virgola mobile.

Passiamo rapidamente al 2011 e la situazione era notevolmente cambiata. Arm aveva spinto in modo aggressivo VFP e la stragrande maggioranza dei "processori di applicazioni" (il genere di cose che trovi nei telefoni cellulari e simliar) l'aveva adottato. Un certo numero di distro Linux importanti (almeno Debian, Ubuntu e Fedora inizialmente, più tardi) hanno scelto di fare le porte usando l'hardware in virgola mobile e l'ABI del float. Sfortunatamente per il Pi queste distro (che stavano raggiungendo la compilazione nel momento in cui il Pi fu rilasciato) generalmente stabilirono i loro requisiti hardware minimi come ARMv7 con VFPv3_d16 in modo che non funzionassero sul Pi.

Quindi i fan di Pi hanno iniziato a lavorare su varianti di distro specifiche per pi che utilizzavano l'hardware in virgola mobile e l'ABI del float ma erano costruite con impostazioni del compilatore che sarebbero state eseguite sul pi.


5

Dal 18 settembre 2012, Arch Linux ARM ha anche il supporto per float. Leggi questo annuncio:

Oggi stiamo aprendo al pubblico i nuovi repository hard-float armv6, con tutti i pacchetti creati per supportare l'unità a virgola mobile VFP disponibile in Raspberry Pi e Via APC-IO. Poiché non esiste un percorso di aggiornamento tra il repository soft-float armv5 e il nuovo repository armv6h, abbiamo anche rilasciato una nuova immagine di installazione per Raspberry Pi. Il link all'immagine è disponibile nella pagina di installazione del Pi sul nostro sito principale. Questa immagine è impostata anche per systemd invece di sysvinit e initscripts, quindi i tempi di avvio sono più rapidi e l'installazione è a prova di futuro per le modifiche che alla fine stanno diventando permanenti in Arch.

Arch Linux ARM Raspberry Pi


4

Sì, come altri hanno affermato che Raspberry Pi ha il supporto float. Scopri il sistema operativo Raspbian .

Raspbian è una porta non ufficiale dell'armhf Debian Wheezy con impostazioni di compilazione regolate per produrre codice "float" ottimizzato che verrà eseguito su Raspberry Pi. Ciò dovrebbe fornire prestazioni significativamente più veloci per le applicazioni che fanno un uso pesante di operazioni aritmetiche in virgola mobile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.