Architecture ARM
Les architectures ARM, développées par ARM Ltd, sont des architectures RISC 32 bits (ARMv3 à ARMv7) et d'ici 2014, 64 bits (ARMv8)[1] introduite à partir de 1983.
Dotés d'une architecture relativement plus simple que d'autres familles de processeurs, et bénéficiant d'une faible consommation, les processeurs ARM sont devenus dominants dans le domaine de l'informatique embarquée, en particulier la téléphonie mobile et les tablettes.
Ces processeurs sont fabriqués sous licence par un grand nombre de constructeurs.
Sommaire |
Présentation des processeurs ARM [modifier]
L'architecture ARM a initialement été développée en interne par la société britannique Acorn Computers, qui l'utilisa à partir de 1987 dans sa gamme d'ordinateurs 32 bits Archimedes. ARM signifiait alors 'Acorn Risc Machine'. Ultérieurement la division 'création de microprocesseurs' d'Acorn fut détachée de la société mère et devint la société 'Advanced Risc Machine limited', se positionnant avec une offre indépendante pour le marché de l'électronique embarquée.
Une particularité des processeurs ARM est leur mode de vente. En effet, ARM Ltd. ne fabrique ni ne vend ses processeurs sous forme de circuits intégrés. La société vend les licences de ses processeurs de manière à ce qu'ils soient intégrés dans le silicium par d'autres fabricants. Aujourd'hui, la plupart des grands fondeurs de puces proposent de l'architecture ARM.
Le cœur le plus célèbre est l'ARM7TDMI[réf. souhaitée] qui comporte 3 niveaux de pipeline. De plus, le ARM7TDMI dispose d'un second jeu d'instructions appelé THUMB permettant le codage d'instructions sur 16 bits et, ainsi, de réaliser un gain de mémoire important, notamment pour les applications embarquées.
ARM Ltd. a ensuite développé le cœur ARM9 qui comporte 5 niveaux de pipeline. Cela permet ainsi l'augmentation du nombre d'opérations logiques sur chaque cycle d'horloge et donc une amélioration des performances en vitesse.
L'architecture ARM est utilisée dans de très nombreux domaines et équipe par exemple les calculatrices TI-Nspire. Cette architecture est notamment très répandue dans la téléphonie mobile.
De nombreux systèmes d'exploitation sont compatibles avec cette architecture :
- Symbian S60 avec les Nokia N97 ou Samsung Player HD ;
- iOS avec l'iPhone et l'iPad ;
- Linux, avec la plupart des distributions ou avec Android ;
- BlackBerry OS avec les BlackBerry
- Windows CE, Windows Phone 7 et Windows RT[2], une version de windows 8.
- le système Playstation Vita ;
- ...
Le monde des ordinateurs portables pourrait connaître prochainement une évolution avec le remplacement progressif des processeurs x86 par l'architecture ARM. Windows 8 est compatible avec cette architecture (avec certaines limitations), tout comme Google Chrome OS. L'utilisation de l'architecture ARM devrait permettre la réduction de la consommation électrique.
Par contre, les fondeurs des processeurs des x86 (Intel et AMD) se préparent à cette concurrence en réduisant la consommation électrique de leurs solutions et en simplifiant leurs architectures, comme avec les Atom et Bobcat, par exemple en intégrant les capacités graphiques avec le processeur. De l'autre côté, les fondeurs des SoC à base d'architecture ARM, comme NVidia et Qualcomm, continuent d'augmenter les performances de leurs puces, par exemple en augmentant le nombre de cores ou en ajoutant de nouvelles instructions. Ces derniers, pour éviter que leurs solutions ne consomment trop d'énergie, peuvent ajouter un processeur compagnon limité en performance (donc économe en énergie) à côté du multi-cores énergivore, par exemple le Tegra 3 de NVidia, Samsung a également opté pour cette stratégie avec son Exynos 5 qui comporte lui 4 cœurs haute performances ARMv15 et 4 cœurs basse consommation ARMv7 pour un total de 8 cœurs.
Architecture et jeu d'instruction [modifier]
L'architecture ARM est fortement inspirée des principes de conception RISC. Elle dispose de 16 registres généraux de 32 bits. Les instructions, codées sur 32 bits jusqu'à l'ARMv7 et sur 64 bits avec l'ARMv8[1], peuvent toutes disposer d'exécution conditionnelle.
Le jeu d'instruction a reçu des extensions au fil du temps, telles que Thumb, permettant d'améliorer la densité du code, NEON, apportant des instructions SIMD, ou Jazelle, améliorant l'exécution de code Java.
Technologies des processeurs [modifier]
Les processeurs qui suivent utilisent les technologies indiquées plus bas :
- MMU (Memory Management Unit) : Gestionnaire de mémoire permettant d'avoir une sécurité accrue (uniquement présente sur l'ARM710 et les ARM9). La MMU permet l'adressage virtuel de la mémoire, elle est nécessaire pour faire fonctionner certains systèmes d'exploitation comme Windows CE ou la plupart des Linux[3].
- MPU (Memory Protection Unit) : Protection de la mémoire, faisant partie du MMU, donc protection simplifiée.
- DSP : composant électronique optimisé pour les calculs. Son application principale est le traitement du signal numérique (filtrage, extraction de signaux, etc.).
- FPU : Unité de calcul sur les nombres flottants
Jazelle [modifier]
Jazelle DBX (Direct Bytecode eXecution) est une technique permettant d'executer directement du Bytecode Java dans les architectures ARM comme un troisième état d'execution (et jeu d'execution), en parallèle à l'ARM existant et au mode Thumb. Le support pour cet état est signalé par le « J » de l'architecture ARMv5TEJ et les noms de cœurs ARM9EJ-S et ARM7EJ-S. Le support de cet état est requis à partir d'ARMv6 (sauf pour le profil ARMv7-M). Malgré tout, les cœurs plus récents incluent seulement une implémentation triviale qui ne fournit pas d'accélération matérielle.
Thumb [modifier]
Thumb est un jeu d'instruction 16 bits qui fournit un sous-ensemble des instructions ARM 32 bits classique et permet un gain de mémoire important. Pour obtenir un codage plus compact de ces instructions, certains opérandes sont implicites et les possibilités offertes sont plus limitées.
Dans le mode Thumb, les instructions 16 bits offrent moins de possibilités. Seuls les branchement peuvent par exemple, être conditionnels et plusieurs instructions sont limitées à l'accès d'une partie réduite des registres généraux du processeur. Ces possibilités réduites améliorent la densité globale d'un programme, bien que certaines opérations nécessitent plus d'instructions. Cela peut réduire le temps de chargement du code en mémoire (libérant ainsi de la bande passante) et augmenter la probabilité de rester dans le cache d'instruction, augmentant ainsi considérablement les performances.
Du matériel embarqué telle que la Game Boy Advance, a typiquement, une petite quantité de RAM accessible via un bus de donnée 32 bits mais la majorité y est accédé via un second bus de 16 bits ou moins. Dans cette situation, il est très intéressant de compiler son programme en mode Thumb et d'optimiser à la main les quelques sections les plus consommatrices en utilisant le jeu d'instructions complet ARM 32 bits, permettant de placer ces instruction plus large dans le bus d'accès mémoire 32 bits.
Le premier processeur contenant un décodeur d'instruction Thumb est l'ARM7TDMI. Toutes les ARM9 et supérieures (dont l'XScale), incluent un décodeur Thumb.
Thumb-2 [modifier]
La technologie Thumb-2 commence avec le cœur ARM1156 annoncé en 2003. Thumb-2 étend le jeu d'instructions limité 16 bits de Thumb par un des instructions 32 bits additionnelles afin de donner plus de largesse au jeu d'instruction. Il en résulte un jeu d'instructions de largeur variable. Thumb-2 a pour visée d'atteindre une densité de code proche de Thumb tout en conservant des performances similaires au jeu d'instructions ARM en mémoire 32 bits.
Thumb-2 étend à la fois le jeu instruction Thumb et celui d'ARM avec notamment de la manipulation de champs de bits, des branches de table et des exécutions conditionnelles. Un nouveau Langage assembleur unifié (Unified Assembly Language, UAL) supporte la génération simultanée de code d'instructions ARM et Thumb-2 depuis le même code source ; Les versions de Thumb sur processeurs ARMv7 sont également capables de code ARM incluant la possibilité d'écrire des fonctions de gestion d'interruption. Un peu d'attention est nécessaire et l'utilisation de la nouvelle instruction « IT » (if-then), qui permet d’exécuter quatre instructions successives en fonction d'une condition de test. En compilant en code ARM, ce cas est ignoré, mais en compilant en Thumb-2, une réelle instruction est générée. Par exemple :
; if (r0 == r1) CMP r0, r1 ITE EQ ; ARM : pas de code ... Thumb : instruction IT ; then r0 = r2; MOVEQ r0, r2 ; ARM : conditionnel ; Thumb : condition via ITE 'T' (then) ; else r0 = r3; MOVNE r0, r3 ; ARM : conditionnel ; Thumb: condition via ITE 'E' (else) ; Se rappeler que l'instruction MOV de Thumb n'a pas de bits pour encoder "EQ" ou "NE"
Toutes les puces ARMv7 supportent le jeu d'instruction Thumb-2. Les autres puces dans les séries Cortex et ARM11 supportent toutes les états d'instruction ARM ou d'instruction Thumb-2[4],[5],[6].
Thumb Execution Environment (ThumbEE) [modifier]
ThumbEE, également appelé Thumb-2EE, ou, commercialement Jazelle RCT pour (Runtime Compilation Target, signifiant en anglais « cible de compilation à la volée »), est annoncé en 2005 et apparait pour la première fois dans le processeur Cortex-A8. ThumbEE est le quatrième état de processeur, ajoutant de petit changement au jeu d'instruction étendue Thumb de Thumb-2. Ces changements rendent le jeu d'instruction particulièrement adapté à la génération de code au moment de l’exécution, par compilation à la volée, dans des environnements d’exécution controlés. ThumbEE est orienté vers les langages de programmation tels que Limbo, Java, C#, Perl, Python ou Ruby et permet aux compilateurs à la volée de générer moins de code de sortie sans affecter les performances.
Les nouvelles fonctionnalités de ThumbEE incluent la vérification automatique de pointeur nul à chaque instruction de chargement et sauvegarde, une instruction vérifiant les limites d'un tableau, un accès aux registres r8-r15 (où la Machine virtuelle Jazelle/DBX Java est maintenue), et des instructions spéciales qui appellent une fonction de rappel[7]. Les handlers sont des petites sections de code fréquemment appelées, utilisées généralement pour implémenter une fonctionnalité d'un langage de programmation de haut niveau tel que l'allocation de mémoire pour un nouvel objet. Ces changements ont été effectués pour réorienter une poignée d'opcodes et afin de savoir que le cœur est dans le mode ThumbEE.
Floating-point (VFP) [modifier]
La technologie VFP (Vector Floating Point ou « virgule flottante vectoriel » en français) est une extension de coprocesseur de type FPU dans les architectures ARM. Il fournit le calcul des formats de virgule flottante simple précision à bas prix et de virgule flottante en double précision remplissant la norme ANSI/IEEE Std 754-1985 Standard for Binary Floating-Point Arithmetic. VFP fournit des calculs en virgule flottante permettant d'accomplir un vaste spectre d'applications et de besoins tels que les PDAs, les smartphones, la compression et décompression de voix, des graphiques en trois dimensions ou encore de l'audio numérique, des imprimantes, des boîtiers multimédias, et des applications automobiles. L'architecture VFP à eu pour but de supporter l’exécution de mode d'instructions vectorielles courtes mais elles opèrent séquentiellement sur chaque élément vectoriel et ainsi n'offre pas les performances d'un vrai parallélisme vectoriel comme le fait un SIMD. Ces modes vectoriels ont donc été retirés rapidement après leur introduction,[8] et ont été remplacées par l'unit NEON Advanced SIMD, bien plus puissante.
Quelques processeurs, tel que l'ARM Cortex-A8 ont été amputé avec un module VFPLite au lieu d'un module VFP complet, et requièrent environ dix fois plus de cycles d'horloge par opération en nombre flottant.[9] LEs autres coprocesseurs à virgule flottante ou SIMD que l'on peut trouver dans processeurs basés sur l'architecture ARM incluent les FPA, FPE, iwMMXt. Ils fournissent quelques fonctionnalités similaires aux VFP mais ne sont pas compatible avec lui au niveau de l'opcode.
Advanced SIMD (NEON) [modifier]
L'extension Advanced SIMD (également appelée NEON ou "MPE" pour Media Processing Engine (signifiant « moteur de calcul de médias » en anglais)) est un SIMD (single instruction, multiple data, combinant des jeux d'instruction 64 et 128 bits, qui fournissent de l'accélération de calcul standardisé pour les application de médias et de traitement du signal. NEON est inclus dans tous les cœurs Cortex-A8 mais est optionnel dans les cœurs Cortex-A9[10]. NEON peut faire du décodage MP3 sur un processeur fonctionnant à 10 MHz et peut encoder/décoder le codec audio GSM AMR à 13 MHz. Il contient un jeu d’instruction, un registre de fichiers séparé et de l’exécution matérielle indépendante[11]. NEON supporte des entiers de 8, 16, 32 et 64 bits, des nombres flottants en simple précision (32 bits) et des opérations SIMD pour gérer le traitement audio, vidéo et graphiques. Dans NEON, le SIMD supporte jusqu'à 16 opérations simultanées. Le matériel NEON partage les mêmes registres à virgule flottante que le VFP. Des cœurs comme le ARM Cortex-A8 et le Cortex-A9 supportent des vecteurs 128 bits mais ne traitent que 64 bits à la fois,[9] tandis qu'à partir du plus récent Cortex-A15, il peut traiter 128 bits à la fois.
Processeurs graphiques ARM [modifier]
ARM propose également des processeurs graphiques (GPU) appelés Mali qui peuvent être intégrés aux architectures des SoC ARM. La première série, Mali 200, utilisée dans des processeurs tels que le SoC Telechips TCC890x[12].
La seconde série, Mali 300 ne semble pas avoir été utilisée par les constructeurs.
La troisième série, Mali 400 MP est proposé sur des processeurs plus haut de gamme, généralement, Cortex A9, comme le ST-Ericsson U8500[13], les Samsung Exynos 4 ou l'Amlogic 8726-M, mais aussi sur les Cortex A8 AllWinner A1X.
La série Mali 600 est à destination des Cortex A15. Elle équipe notamment la série de Samsung Exynos 5. Le premier modèle a été le Mali T604[14].
L'API générique d'accès au GPU MALI compatible EXA/DRI2 libres à sources ouvertes (licences Apache et MIT) est disponible pour les Mali 200, 300, 400 et 600 sur la plateforme Linux[15], mais la partie la plus basse d'accès au processeur, dépendant du constructeur reste fermée.
Le projet Lima driver a été créé pour créer un pilote libre permettant d'accéder à ces processeur.
De nombreux SoC ARM comportent cependant un GPU PowerVR ou plus rarement d'autres processeurs graphiques (Qualcomm Adreno, Vivante, Nvidia), qui possèdent tous des pilotes pour Linux, mais dont la partie 3d est propriétaire et à sources fermées. Le projet Freedreno a les mêmes visées pour les Adreno que le projet Lima driver pour la série des Mali.
Architectures [modifier]
| Architecture | Famille(s) |
|---|---|
| ARMv1 | ARM1 |
| ARMv2 | ARM2, ARM3 |
| ARMv3 | ARM6, ARM7 |
| ARMv4 | StrongARM, ARM7TDMI, ARM9 TDMI |
| ARMv5 | ARM7EJ, ARM9E, ARM10E, XScale |
| ARMv6 | ARM11, ARM Cortex-M |
| ARMv7 | ARM Cortex-A, ARM Cortex-M, ARM Cortex-R |
| ARMv8 | ARM Cortex-A50 |
Divers processeurs ARM [modifier]
- ARM1 (1985) : premier prototype de cœur ARM
- Famille ARM2 (1987) : premier ARM commercialisé dans l'Archimedes d'Acorn : Pipeline 3 niveaux, adressage sur 24 bits alignés (16 mébimots de 32 bits soit 64 Mio adressables), 8 MHz puis 12 MHz
- Famille ARM3 : Interface FPU, fréquence 25 puis 33 MHz, 4K cache
- Famille ARM4
- Famille ARM4T
- Famille ARM5TE (2000) : arrivée de Thumb et de fonctionnalités de DSP
- Famille ARM5TEJ (2000) : arrivée de Jazelle
- Famille ARM6 sorti en 1990
- Famille ARM7 :
- ARM720T (MMU)
- ARM7TDMI
- ARM7TDMI-S
- ARM7EJ-S : DSP et Jazelle
- Famille ARM9 (5 niveaux de pipeline sur les entiers, MMU) : ARM920T (double cache de 16 Ko) et ARM922T (double cache de 8 Ko)
- Famille ARM9E
- ARM946E-S : DSP, double cache, MPU, 1 port AHB
- ARM926EJ-S: DSP, double cache, MMU, 2 ports AHB
- ARM966E-S : DSP, double cache, MPU, 1 ports AHB
- Famille ARM10E
- ARM1020E : DSP, double cache de 32 Ko, MMU
- ARM1022E : identique au ARM1020E, sauf le double cache de 16 Ko
- ARM1026EJ-S
- Famille ARM11 : SIMD, Jazelle, DSP, Thumb-2
- Famille Cortex-A, processeur applicatif: Architecture ARMv7-A, SIMD, Jazelle, DSP, Thumb-2
- Cortex-A5
- Cortex-A5 MPCore : Cortex-A5 version multiprocesseur (1 à 4 CPU)
- Cortex-A7 MPCore : Cortex-A7 multiprocesseur (1 à 4 CPU)
- Cortex-A8
- Cortex-A9
- Cortex-A9 MPCore : Cortex-A9 version multiprocesseur (1 à 4 CPU), 45, 32[16] et 28 nm jusqu’à 2 GHz (3,1 GHz dans certaines conditions [17])
- Cortex-A15 MPCore : Cortex-A15 multiprocesseur (1 à 4 CPU), 45, 32 et 28 nm[18] (20 nm projeté), jusqu’à 2,5 GHz
- Famille Cortex-R, processeur temps-réel: Architecture ARMv7-R
- Cortex-R4
- Famille Cortex-M, processeur embarqué : Architecture ARMv6-M et ARMv7-M
- Cortex-M0
- Cortex-M0+
- Cortex-M1
- Cortex-M3
- Cortex-M4
Fabricants de processeurs ARM [modifier]
La propriété intellectuelle appartient à une société britannique, mais les processeurs fabriqués sous licence le sont par différentes entreprises de par le monde. Parmi les entreprises fabriquant les modèles des séries Cortex (les plus avancées), la majorité se trouve en Asie (19), suivie par les États-Unis (9) et enfin par l'Europe (4).
- Accent
Italie - Alchip
Taïwan - AllWinner Technology (ou Quanzhi)
Chine (Cortex A8 avec Mali 400MP et VPU décodant le QuadHD 2160P[19]) - Amlogic www.amlogic.com
États-Unis/
Chine (Cortex A9) - Anyka
Chine - Atmel
États-Unis - Broadcom
États-Unis (Cortex A9) - Celestial Semiconductor
Chine - Cypress
États-Unis - Freescale
États-Unis - Fujitsu
Japon (cortex M3, Cortex A9 et Cortex A15[20]) - HiSilicon
Chine (Cortex A9, Cortex A15[21] [22]) - Huawei Technologies
Chine (Cortex A9)[23] - Infineon
Allemagne - Inside Secure
France - Matsushita
Japon (Cortex A8[24]) - Marvell
États-Unis - MediaTek
Taïwan (Cortex A9[25]) - NXP
Pays-Bas - Nufront (conception)
Chine, usiné par TSMC
Taïwan (Cortex A9) - Nvidia
États-Unis (Cortex A9) - Qualcomm
États-Unis - Renesas
Japon (Cortex A9[26]) - Rockchip
Chine (Cortex A8, Cortex A9 MPcore, Mali 400 MP[27]) - Samsung
Corée du Sud (Cortex A8, Cortex A9 et Cortex A15 (Exynos 5250)[28]) - STMicroelectronics
France
Italie et ST-Ericsson (Cortex A9 (U9500), Cortex A15 (A9600)[29]) - Telechips
Corée du Sud - Texas Instruments
États-Unis (Cortex A9 (OMAP4), Cortex A15 (OMAP5)) - Toshiba
Japon - VIA
Taïwan - ZiiLABS
Singapour - ZTE
Chine
Notes et références [modifier]
- ARMv8 : le 64 bits va arriver (28 octobre 2011).
- Quoi de neuf dans Windows 8 ?, Cachem.fr, publié le 23 mai 2011.
- uclinux excepté, mais pas seulement:(en)site officiel
- (en) ARM Processor Instruction Set Architecture, Arm.com. Consulté le 18 avril 2009
- (en) ARM aims son of Thumb at uCs, ASSPs, SoCs, Linuxdevices.com. Consulté le 18 avril 2009
- (en) ARM Information Center, Infocenter.arm.com. Consulté le 18 avril 2009
- (en) Arm strengthens Java compilers: New 16-Bit Thumb-2EE Instructions Conserve System Memory by Tom R. Halfhill 2005.
- VFP directives and vector notation, Arm.com. Consulté le 21 novembre 2011
- Differences between ARM Cortex-A8 and Cortex-A9, Shervin Emami. Consulté le 21 novembre 2011
- Cortex-A9 Processor, Arm.com. Consulté le 21 novembre 2011
- About the Cortex-A9 NEON MPE, Arm.com. Consulté le 21 novembre 2011
- (en) TCC8900 development board
- (en) MOP500 development board
- (en) Mali-T604 sur ARM
- (en) Open Source Mali GPUs Linux EXA/DRI2 And X11 Display Drivers sur malideveloper.com
- Exynos 4 Quad sur samsung.com
- (en)TSMC's 28nm Based ARM Cortex-A9 Test Chip Reaches Beyond 3GHz sur TSMC.com
- [1]
- (zh) A1X by Allwinner Technology Co., Ltd 珠海全志科技股份有限公司 sur ARM.com
- (ja) ARMコアマクロ sur jp.Fujitsu.com
- (zh) 海思半导体获ARM技术授权,用于创新的3G/4G基站网络基础架构及移动计算应用 sur arm.com
- (en)HiSilicon Announces K3V2 Quad-core Application Processor
- [2] sur ses propres smartphones.
- (en) Processor licensees
- (en) MediaTek Launches MT6575 Android Platform sur MediaTek.com
- (en) Renesas Mobile Introduces First Integrated LTE Triple-Mode Platform Optimised for Full-Featured, High Volume Smartphones
- (en) (zh) Rockchip Licenses a Wide Range of ARM IP for Turnkey Solution Targeting Mass Market, Cost-Effective Android Tablets sur ARM.com
- (en)Samsung Announces Industry First ARM Cortex-A15 Processor Samples for Tablet Computers sur Samsung.com, le 30 novembre 2011
- (en) ARM Cortex-A15 processor adopts Imagination's new graphics IP sur Linuxfordevices.com