Les architectures ARM (anciennement un acronyme pour Advanced RISC Machines) sont des architectures externes de type RISC 32 bits (ARMv1 à ARMv7) et 64 bits (ARMv8)ARMv8 : le 64 bits va arriver (28 octobre 2011). développées depuis 1983 et introduites à partir de 1990 par Acorn Computers. L'architecture ARM est le fruit du travail de Sophie Wilson et de Steve Furber.
Dotés d'une architecture relativement plus simple que d'autres familles de processeurs et faibles consommateurs d'électricité, les processeurs ARM sont aujourd'hui 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. En 2026, Arm fabrique, pour la première fois depuis 35 ans, son propre CPU, pour le compte de Meta.
SoC ARM vignette|300px|redresse|Diagramme d'un SoC ARM. Aujourd'hui, l'entreprise ARM Ltd est surtout connue pour ses systèmes sur une puce (SoC), intégrant sur une seule puce : microprocesseur, processeur graphique (GPU), DSP, FPU, SIMD, et contrôleur de périphériques. Ceux-ci sont présents dans la majorité des smartphones et tablettes. ARM propose des architectures qui sont vendues sous licence de propriété intellectuelle aux concepteurs. L'entreprise propose différentes options dans lesquelles les constructeurs peuvent prendre ce qui les intéresse pour compléter avec leurs options propres ou des concepteurs tiers. ARM propose ainsi pour les SoC les plus récents les microprocesseurs Cortex (Cortex-A pour les dispositifs portables de type smartphones et tablettes, Cortex-M pour le couplage à un microcontrôleur, Cortex-R pour les microprocesseurs temps réel), des processeurs graphiques (Mali), des bus AMBA sous licence libre, ainsi que les divers autres composants nécessaires à la composition du SoC complet. Certains constructeurs, tels que Nvidia, préfèrent produire leur propre processeur graphique, d'autres, comme Samsung, préfèrent prendre dans certains cas un processeur graphique de prestataire tiers ou d'ARM selon les modèles, et d'autres, comme Apple, modifient certains composants du microprocesseur en mélangeant plusieurs architectures processeur ARM (l'Apple A6 par exemple, mixe les technologies de microprocesseur Cortex-A9 et Cortex-A15).
Présentation des processeurs ARM 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 qu'ils soient gravés dans le silicium par d'autres fabricants. Aujourd'hui, la plupart des grands fondeurs de puces proposent de l'architecture ARM.
Le premier cœur produit est l'ARM2, vendu dans l'Archimedes A310 puis la gamme A4xx. Il comportait un pipeline à 3 étapes.
Puis vient un cœur plus inovant, l'ARM7TDMI qui comporte un pipeline à 3 étapes, et un second jeu d'instructions dit THUMB permettant le codage d'instructions sur 16 bits, avec un moindre besoin de mémoire, dont pour les applications embarquées.
ARM Ltd. a ensuite développé le cœur ARM9 qui comporte un pipeline à 5 étapes, permettant d'augmenter le nombre d'opérations logiques sur chaque cycle d'horloge, et donc une amélioration de la vitesse.
L'architecture ARM est utilisée dans de nombreux domaines, elle équipe par exemple les calculatrices TI-Nspire et HP-50G et est répandue dans la téléphonie mobile.
Bien avant la Nintendo Switch de Nintendo, l'architecture ARM était présente dans une cartouche Super Nintendo pour gérer l'intelligence artificielle de jeu vidéo (game AI) du jeu Hayazashi Nidan Morita Shogi 2, sorti uniquement au Japon en 1995. La puce, nommée ST018 et fabriquée par Seta Corporation Société (fondée en 1985 et disparue en 2009), possède une architecture ARMv3 32 bits et une fréquence de 21,47 MHz (voir liste des puces d'amélioration de la Super Nintendo dans la rubrique ST).
De nombreux systèmes d'exploitation sont compatibles avec cette architecture : Symbian S60 avec les Nokia N97 ou Samsung Player HD, macOS (depuis le , concomitamment au lancement de la puce Apple M1), iOS, iPadOS, watchOS et tvOS avec les appareils Mac, iPhone, iPad, Apple Watch et Apple TV respectivement, Linux, avec la plupart des distributions ou avec Android, BlackBerry OS avec les BlackBerry, Windows CE, Windows Phone 7, Quoi de neuf dans ?, Cachem.fr, publié le 23 mai 2011., Windows 10, et Windows 11. ReactOS, Risc OS, l'OS d'origine produit par Acorn, le système de la PlayStation Vita, le système de la Nintendo Switch,
Il est possible d’agglomérer des cœurs de différentes puissances, les plus faibles en consommation et puissance travaillant la majorité du temps, pour minimiser la consommation électrique des cœurs plus puissants, lesquels sont activés qu'en cas de forte demande de calcul, pour accélérer le traitement (technologie dite big.LITTLE, utilisée par Samsung, avec ses Exynos 5 octo (4 Cortex-A7 faible consommation et 4 Cortex-A15 de forte puissance), MediaTek et d'autres. Le Tegra 3 de NVidia, utilise une technique similaire associant une cœur de faible consommation à plusieurs de forte puissance.
Architecture et jeu d'instructions 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 peuvent toutes disposer d'exécution conditionnelle ; sur l'architecture 64 bits (ARMv8), quelques instructions seulement peuvent disposer d'exécution conditionnelle.
Le jeu d'instructions 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 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 Linuxuclinux excepté, mais pas seulement:(en)site officiel. (memory protection unit) : protection de la mémoire, faisant partie du MMU, donc protection simplifiée. DSP : composant électronique optimisé pour l'analyse numérique. Son application principale est le traitement du signal numérique (filtrage, encodage/décodage, extraction de signaux, etc.). FPU : unité de calcul sur les nombres flottants
Jazelle Jazelle DBX (Direct Bytecode eXecution) est une technique permettant d'exécuter directement du bytecode Java dans les architectures ARM comme un troisième état d'exécution (et jeu d'exécution), 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 Thumb est un jeu d'instructions 16 bits qui fournit un sous-ensemble des instructions ARM 32 bits classiques 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 branchements peuvent être conditionnels et plusieurs instructions sont limitées en accès à 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.
Le matériel embarqué, à l'instar de Game Boy Advance, a typiquement une quantité limitée de RAM accessible par un bus de données 32 bits. La majeure partie de la mémoire transite par un second bus, de 16 bits ou moins. Dans cette configuration, il est pertinent de compiler un programme en mode Thumb et d'optimiser à la main, grâce au jeu d'instructions complet ARM 32 bits, les quelques sections les plus consommatrices. Ainsi, les instructions plus larges sont placées 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 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 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 instructions Thumb et celui d'ARM avec notamment de la manipulation de champs de bits, des exécutions conditionnelles et des . Un nouveau langage assembleur unifié (unified assembly language, UAL) supporte simultanément la génération de code ARM et Thumb-2 depuis le même code source ; Les versions Thumb de code sur processeurs ARMv7 sont aussi capables que du code ARM, y compris pour é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, cette instruction est ignorée, 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'instructions Thumb-2. Les puces dans les séries Cortex-A, Cortex-R et ARM11 supportent les jeux d'instructions ARM et Thumb-2 (en mutuelle exclusion et selon l'état de l'indicateur interne T) tandis que les puces Cortex-M ne supportent pas le jeu d'instructions ARM....
Thumb Execution Environment (ThumbEE) 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 petits changements au jeu d'instructions étendu Thumb de Thumb-2. Ces changements rendent le jeu d'instructions 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 contrôlé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.