Per ISA ARMv7 (e varianti)
Il neon è un SIMD e un'unità di elaborazione dati in parallelo per i dati interi e virgola mobile e il VFP è un'unità in virgola mobile completamente IEEE-754 compatibile. In particolare su A8, l'unità NEON è molto più veloce per quasi tutto, anche se non si dispone di dati altamente paralleli, dal momento che il VFP non ha pipeline.
Quindi, perché mai utilizzeresti il VFP ?!
La differenza principale è che il VFP fornisce un punto in virgola mobile a doppia precisione.
In secondo luogo, ci sono alcune istruzioni specializzate che VFP offre che non ci sono implementazioni equivalenti per l'unità NEON. Mi viene in mente SQRT, forse alcune conversioni di tipo.
Ma la differenza più importante non menzionata nella risposta di Cosmin è che la pipeline in virgola mobile NEON non è interamente conforme allo standard IEEE-754. La migliore descrizione delle differenze si trova nello FPSCR Register Description.
Poiché non è conforme allo standard IEEE-754, un compilatore non può generare queste istruzioni a meno che non si dica al compilatore che non si è interessati alla piena conformità. Questo può essere fatto in diversi modi.
- Utilizzo di una funzione intrinseca per forzare l'utilizzo di NEON, ad esempio vedere GCC Neon Intrinsic Function List.
- Chiedi al compilatore, molto bene. Anche le versioni GCC più recenti con
-mfpu=neon
non generano istruzioni NEON a virgola mobile a meno che non si specifichi anche -funsafe-math-optimizations
.
Per ARMv8 + ISA (e varianti) [Update]
NEON è ora completamente IEE-754 compliant, e da un programmatore (e del compilatore) punto di vista, v'è in realtà non è troppa differenza . La doppia precisione è stata vettorializzata. Dal punto di vista della microarchitettura, dubito che siano anche unità hardware diverse. ARM documenta separatamente le istruzioni scalari e vettoriali, ma entrambe fanno parte di "Advanced SIMD".
fonte
2013-02-07 22:46:13
Ehi Pierre, occhio aperto!Ma non sono riuscito a ottenere ciò che intendi per aiuto dello squalo, puoi gentilmente postare il link? – HaggarTheHorrible
Per ragioni esterne, non esiste un collegamento diretto alla documentazione dell'architettura ARM. Invece, indico gli sviluppatori iOS alla copia locale che hanno già, a/Libreria/Applicazione \ Supporto/Shark/Aiutanti/ARM \ Help.app/Contents/Resources/ARMISA.pdf (meglio ancora, quel documento omette le informazioni che sono obsolete o irrilevante per lo sviluppo di iOS, come le informazioni a livello di sistema). Se non sei uno sviluppatore iOS, vai su http://infocenter.arm.com/help/topic/com.arm.doc.ddi0406b/index.html, registrati per un account, accetta le condizioni e scarica il documento. –