Arm, Arm ARM, Armv9, ARM9, ARM64, AArch64, A64, A78, … les distinguer
(nickdesaulniers.github.io)Récapitulatif des termes pour les débutants dans l’écosystème Arm
- L’architecture Arm est une famille de produits RISC avec des modes d’adressage simples
- Arm Limited est l’entreprise britannique qui gère l’architecture Arm
- ARM est passé de Acorn RISC Machine à Advanced RISC Machines
- Arm ARM (Architecture Referecnce Manual) est le manuel de programmation pour Arm
- Armv9 est la plus récente des familles d’architecture (au moment où l’auteur écrit ces lignes). Elle ajoute notamment les vecteurs SIMD (SVE) et les opérations matricielles (SME/SME2)
- Armv9.4-A est le lot d’extensions le plus récent d’Armv9. Ces extensions sont documentées dans l’Arm ARM. Certaines extensions sont optionnelles lors de leur introduction, mais deviendront obligatoires dans les versions futures
- Le A de Armv9.4-A signifie "Application Profile". Il prend en charge la mémoire virtuelle via la MMU et se retrouve dans tous les systèmes Arm tels que les téléphones, ordinateurs portables et serveurs.
Il existe aussi un profil "R" pour les systèmes temps réel, ou "M" pour les microcontrôleurs sans MMU.
Ces trois profils d’architecture sont également "A", "R" et "M" - AArch64 est un "execution state" introduit avec ARMv8. Il prend en charge les registres 64 bits (31 registres à usage général, un pointeur de pile 64 bits dédié, un compteur ordinal 64 bits et un pseudo-registre à valeur zéro)
En parallèle, les fonctionnalités 32 bits utilisées avec ARMv7 ont été nommées AArch32 - Fait intéressant, l’Arm ARM ne mentionne pas le terme ARM64 (Apple, Microsoft et Linus Torvalds le préfèrent)
Ce nom a finalement du sens ; le noyau Linux arm64 peut exécuter du code en espace utilisateur dans les états d’exécution AArch64 ou AArch32, mais le noyau lui-même est exclusivement AArch64 - A64 est le jeu d’instructions introduit avec AArch64. En pratique, c’est le seul jeu d’instructions pris en charge par AArch64. Les registres d’AArch64 sont en 64 bits, mais les instructions elles-mêmes restent en 32 bits (largeur fixe)
A32 désigne l’ancien ISA. Lui aussi est en largeur fixe 32 bits. T32 désigne le jeu d’instructions utilisé avant Armv8 et correspond au Thumb2 32 bits et 16 bits - À ne pas confondre avec A64, il y a aussi la désignation des cœurs comme "A78", qui correspond à Cortex-A78.
Arm conçoit non seulement l’architecture Arm, mais aussi les implémentations de cette architecture que nous appelons microarchitectures. Quel que soit le nombre qui suit, si vous voyez les mots Cortex ou Neoverse, il s’agit de microarchitectures conçues par Arm.
Par exemple, Cortex-A78 implémente les extensions jusqu’à ArmV8.3. Wikipédia propose un modèle qui les récapitule - DynamIQ (anciennement bit.LITTLE) repose sur l’idée d’utiliser, en multicœur, des cœurs hétérogènes plutôt qu’homogènes
L’avantage de cette conception est qu’elle permet d’être performant sur des tâches différentes à des moments différents. Quand on a besoin de performances, on utilise des processeurs out-of-order qui consomment beaucoup d’énergie ; pour réduire la consommation, on utilise des cœurs in-order plus lents
Il est intéressant de voir Intel faire quelque chose de similaire avec ses cœurs performance/efficacité sur Alder Lake - En fouillant dans le manuel de référence, on voit l’évolution intéressante de différents execution states : A55, X1, X3, etc.
- Termes historiques
- ARM9 ne doit pas être confondu avec Armv9. C’est une famille de cœurs ; certains implémentent ARMv4t et d’autres ARMv5
- StrongARM est une série de CPU ARMv4 créée par DEC. Intel a acquis cette propriété intellectuelle à la suite d’un règlement judiciaire, puis a fini par concevoir sa propre microarchitecture ARMv5 appelée XScale
Intel a ensuite vendu à Marvell sa gamme de SoC PXA qui utilisait XScale. On peut se demander à quoi le monde aurait ressemblé si Intel avait persévéré avec Atom et/ou XScale - ARMv4 a introduit un jeu d’instructions compressé appelé Thumb. Les instructions sont en largeur fixe 16 bits
- ARMv6t2 a introduit Thumb2. Il prend en charge les instructions 32 bits ainsi que l’UAL (Unified Assembly Language), entre autres
3 commentaires
Le nom "Arm ARM" donne vraiment l’impression d’avoir été choisi exprès lol
*mdr
Arm ARM va certainement me rester en mémoire :)