"In the world of embedded systems, you can't work for long without working on an ARM CPU."* Telle est la phrase d’introduction du livre « Professional Embedded ARM Development » de James A. Langbridge (http://goo.gl/idtPgz ) et force est de constater à quel point il s’agit bel et bien d’une affirmation. Il existe encore quelques domaines dans lesquels d’autres architectures persistent, mais finalement peu ont résisté face à la richesse de l’offre ARMTM. Les chiffres sont là pour le prouver puisqu’en 2013, ARMTM franchissait le cap des 50 milliards de puces électroniques équipés de processeurs éponymes (sur une période de 20 ans). La courbe publiée à l’époque a tout d’une exponentielle avec, rien que pour l’année 2013, 10 Milliards de puces concernées**
Comment en est-on arrivé là ? D’un point de vue plus technique, comment s’y retrouver dans la [très] grande famille ARMTM ? Enfin, quelles sont les dernières nouveautés proposées par ce « concepteur non fondeur » de CPU ?
Un peu d’histoire…
[caption id="attachment_3864" align="alignright" width="191"] BBC Computer[/caption]
Avant d’être l’acronyme d’« Advanced RISC Machine », ARMTM signifiait « Acorn RISC Machine », du nom d’une société anglaise, basée à Cambridge qui, à la fin des années 70 a conçu et fabriqué un processeur 8 bits sur lequel la société base un ensemble de micro-ordinateurs, le plus emblématique étant le « BBC micro » vendu à 1,5 millions d’exemplaires.
Au milieu des années 80, Acorn, non satisfaite des solutions disponibles à l’époque (principalement, solutions Intel et Motorola basées sur l’architecture CISC - https://goo.gl/m9AptX ) se lance dans le développement d’une nouvelle génération de processeurs basés sur la technologie RISC (https://goo.gl/rjbJmu). En avril 1985, après seulement 18 mois de travaux, l’ARM 1 est le premier (co)processeur RISC à être commercialisé. En 1987, le premier ordinateur à base de cœur ARM est l’Acorn Archimedes (ARM 2 puis ARM 3). Là où Apple, Atari et Commodore, avec un Motorola 68000 à 8 Mhz ne disposait que d'une puissance de 1 MIPS, Acorn disposait lui d'une puissance de 4,5 MIPS à même fréquence avec son processeur maison. En novembre 1990, face à l’intérêt d’Apple vis-à-vis de l’architecture des processeurs ARM, la joint venture ARM Ltd est créée entre Apple, Acorn et VLSI.
Une des particularités d’ARM, c’est d’être un « concepteur non fondeur » de CPU : impossible en effet d’acheter un processeur fabriqué par ARM comme on peut le faire chez Intel ou AMD (pour ne citer qu’eux). ARM Ltd, depuis ses débuts, se positionne en effet comme fournisseur d’IP (Intellectual Properties), principalement des cœurs de CPU 32 bits (64 bits pour les plus récents) basés sur l’architecture RISC : il revient alors aux fabricants (Freescale, STMicroelectronics, Renesas, … - la liste est longue) d’intégrer ces cœurs dans leur SoC (System on Chip) afin de répondre aux besoins des marchés visés.
La [très] grande famille ARMTM
Pas facile de s’y retrouver dans la [très] grande famille ARMTM ! Non seulement parce que l’offre est riche et en constante évolution, mais aussi parce que pendant longtemps, les cœurs ARM étaient désignés par des références à rallonge. Certes, une nomenclature existait, mais il fallait vraiment avoir son permis ARM pour s’y retrouver : allez distinguer un ARM7TDMI d’un ARM926EJ-S, en en comprenant bien les subtiles différences !
La difficulté est d’autant plus grande que les versions d’architectures sur lesquelles se base une famille de processeurs venaient semer la confusion avec les références de composants eux-mêmes. Quelques exemples à titre d’illustration : l’ARM7TDMI se base sur l’architecture ARMv4 tandis que l’ARM926EJ-S se base sur l’architecture ARMv5 (mais attention, l’ARM9TDMI, lui, se base sur l’ARMv4 !!) : je vous l’avais bien dit que ce n’était pas facile !!
Heureusement, au moment de segmenter son offre en 3 gammes distinctes, ARM a introduit la ligne des processeurs « Cortex », simplifiant (un peu) dans le même temps, la compréhension des références. Le premier « Cortex » sorti fut le premier de la famille « M » (Microcontroller Profile) : le Cortex M3. L’année suivante, ce fut le premier de la famille « A » (Application Profile) : le Cortex A8. Enfin, il faudra attendre 2011 pour voir apparaître les représentants de la famille « R » (Real time profile) : les Cortex R4, R5 et R7. A quelques exceptions près (détaillées plus loin) les Cortex se basent sur l’architecture ARMv7 : ARMv7-M (ou E-M) pour les Cortex M, ARMv7-A pour les Cortex A et ARMv7-R pour les Cortex R, chaque version d’architecture présentant des spécificités vis-à-vis des applications visées.
Schématiquement, les exceptions se situent aux extrêmes de l’offre Cortex. En effet, d’un côté, les cœurs micro contrôleurs les plus optimisés (Cortex M0, M0+ et M1) se basent sur une architecture ARMv6-M, tandis que les cœurs applicatifs les plus puissants (64 bits : Cortex A53, A57 et A72) sont eux les premiers à utiliser l’architecture ARMv8-A.
A l’heure de l’écriture de cet article, la grande majorité des nouveaux SoC intègrent des cœurs de la famille Cortex. On citera par exemple l’iMX7 de Freescale intégrant à la fois un Cortex A7 (deux pour la version iMX7 Dual) et un Cortex M4 sur le même chip, ou encore la famille RZ/G de Renesas, dédiée aux applications IHM riches, intégrant un Cortex A7 ou deux Cortex A15 (selon les modèles). Néanmoins, certains cœurs ARM sortis il y a presque 15 ans sont encore choisis par des fondeurs : preuve en est, le choix d’un cœur ARM7 EJ-S par Mediatek pour son SoC MT2502 – Aster, dédié aux dispositifs portés sur soi, équipant son kit de démarrage Linkit ONE (http://goo.gl/zRUXOY).
Les dernières nouveautés
Proposer des cœurs 64 bits a été une petite révolution pour ARM. En effet, contrairement à d’autres architectures de micros qui avaient évolué dans le temps, passant successivement du 8 au 16 bits, puis du 16 au 32 bits et, enfin du 32 au 64 bits, l’architecture ARM, dès le début, était une architecture 32 bits. C’est donc la première fois que l’architecture connaissait une telle transition. A ce jour, trois cœurs 64/32 bits sont disponibles : les Cortex A53, A57 et A72. Un quatrième a été annoncé à l’occasion de la conférence ARM TechCon 2015 qui s’est tenue du 10 au 12 novembre dernier : le Cortex A35. Ce dernier est présenté comme le plus éco-efficace de la famille Cortex-A et vient compléter une offre déjà bien fournie. Comme certains de ces prédécesseurs, le Cortex A35 a des capacités d’association big.LITTLE permettant d’optimiser la consommation d’énergie, tout en assurant une disponibilité de puissance en cas de besoin.
Pour en savoir plus
- Les fondamentaux de l’architecture ARM
- Présentation du Cortex A35 lors de la conférence ARM TechCon 2015 :
- Liste des micro-architectures ARM
- Dates importantes de l’histoire ARM
- Principe big.LITTLE
* : « Dans le domaine des systèmes embarqués, il ne vous faudra pas longtemps avant de travailler sur un CPU ARM ».
** : En 2014, cela a concerné 12 milliards d’équipements (source : Wikipedia).
Je suis cité dans Linux Embedded? J'en suis honoré! Oui, ARM a été un voyage incroyable pour moi, ayant commencé très tôt dans la famille ARM avec un Acorn Archimedes A5000, basé sur un ARM3 (oui, je suis vieux, avec une barbe et quelques cheveux gris, les gens bien élevés appellent ça la "sagesse"). Et de ce que je vois, l'aventure ARM ne fait que commencer! Très bon article, merci pour ce moment de lecture très agréable.