ARM NEON
From Wikipedia, the free encyclopedia
L'ARM NEON également appelé Advanced SIMD ou encore « MPE » (de l'anglais media processing engine, littéralement « moteur de calcul de médias ») est une unité de calcul de type SIMD, accélérant les calculs de type DSP, apparu en 2009 et intégré à la série de microprocesseurs ARM Cortex-A, d'architecture ARMv7A. Elle reprend certains principes des SIMD précédents d'ARM, mais apporte 3 fois plus de performance que celui du processeur VFP (de l'anglais « vector floating point » pour virgule flottante vectorielle) présent dès l'architecture ARMv5 (VFPv2) et deux fois plus que le SIMD implémenté dans l'architecture ARMv6 en plus de l'unité VFP[1]. Dans l'architecture ARMv7, le VFP est remplacé par VFPv3 (VFPlite pour la révision r1p1 du Cortex-A8) et le SIMD par l'Advanced SIMD ou NEON.
Si les unités VFP sont compatibles avec la norme IEEE 754[2], assurant ainsi un bon niveau de précision, ça n'est pas le cas de Neon[3],[4].
Il contient 32 registres 64 bits qui peuvent être combinés pour former 16 registres 128 bits. Ceux-ci sont partagés avec le FPU (VFPlite, VFPv3 ou VFPv4 selon les modèles) du processeur. Ces registres sont considérés comme des vecteurs d'éléments qui sont tous du même type avec les particularités suivantes [1]:
- Les types de données peuvent également être de type entier, signés ou non-signés sur 8, 16, 32 ou 64 bits, ou des flottants simple précision ;
- Les mêmes instructions peuvent être exécutées sur tous les canaux de calcul.
Il fournit l'accélération des calculs vectoriels, standardisé pour les applications de traitement du signal ou des médias. Par exemple, filtre de couleurs au format ARGB, des opérations sur des vecteurs de type (x, y, z) ou bien de la compression et décompression d'un signal audio ou vidéo.
Il est obligatoirement inclus dans l'ARM Cortex-A8, mais, tout comme le VFP est optionnel sur l'ARM Cortex-A9 MPCore[5].
Il supporte l'accélération des codecs MPEG-4, H.264, On2 VP6/7/8, Real, AVS.
NEON peut faire du décodage MP3 sur un processeur fonctionnant à 10 MHz et peut encoder et décoder le codec audio GSM AMR à 13 MHz.
Il contient un jeu d’instructions, un registre de fichiers séparé et de l’exécution matérielle indépendante[6].