Présentation
Les ordinateurs conçus avec des processeurs ARM et ceux conçus avec des processeurs Intel ou AMD ne sont pas interchangeables. Chacun aborde de manière différente les deux questions suivantes :
- Comment équilibrer le nombre de transistors et la complexité du programme ?
- Comment hiérarchiser la vitesse, la consommation d'énergie et le coût ?
Les réponses à ces questions ont guidé l'innovation technologique et le développement de logiciels dans tous les domaines, des smartphones aux superordinateurs, au cours de ces 40 dernières années.
Définition des processeurs x86 et ARM
Pour situer le contexte, définissons brièvement les processeurs x86 et ARM.
La plupart des informaticiens connaissent bien les processeurs x86, car ils sont utilisés dans la majorité des ordinateurs et serveurs. D'un point de vue architectural, les composants matériels d'un système x86 (cartes son et graphique, mémoire, stockage et processeur) sont tous indépendants les uns des autres. La plupart de ces composants possèdent des puces distinctes appelées contrôleurs. Ces composants peuvent être modifiés ou étendus sans affecter la connectivité ou la plateforme matérielle dans son ensemble.
Les processeurs ARM ne sont pas des composants distincts. Ils se trouvent sur le même support physique que les autres contrôleurs matériels : il s'agit d'un circuit intégré. En outre, contrairement aux processeurs Intel ou AMD, les processeurs ARM ne dépendent pas d'un fabricant unique. En effet, Arm Holdings accorde des licences pour ses puces à d'autres fabricants de matériel, qui les intègrent à leur propre matériel. Contrairement aux ordinateurs traditionnels à architecture x86, les puces ARM ne sont pas interchangeables et sont hautement spécialisées pour une application. Ces processeurs sont intégrés dans ce que l'on appelle un « système sur puce » (SoC).
RISC, CISC et les conséquences sur le développement
Un vieux débat entre les premiers programmeurs est à l'origine de la divergence entre deux grandes philosophies en informatique : simplifier le travail du programmeur ou celui du microprocesseur.
Pour fonctionner sur un ordinateur, un système d'exploitation et les programmes qu'il exécute doivent interagir avec le processeur, ainsi qu'avec d'autres composants tels que la mémoire, le stockage et les cartes réseau. Le processeur sert d'intermédiaire entre le système d'exploitation (et les programmes en cours d'exécution) et ces éléments matériels. Pour simplifier la tâche des programmeurs, le processeur dispose d'un ensemble d'actions et de calculs prédéfinis appelé jeu d'instructions ou ISA (Instruction Set Architecture). Le système d'exploitation et les programmes qu'il exécute (tous écrits par des programmeurs) s'appuient sur ces instructions pour effectuer des fonctions de base telles que :
- les interactions entre le processeur et le matériel (mémoire, stockage, réseau, etc.) ;
- les opérations arithmétiques (additions, soustractions, etc.) ;
- la manipulation de données (décalages binaires, etc.).
Les premiers processeurs x86 possédaient (et possèdent toujours) un jeu d'instructions très riche. Une seule instruction peut effectuer un calcul complet (comme une multiplication) ou déplacer un bloc de données directement d'un endroit à un autre de la mémoire. Cela peut sembler limité, mais ces opérations nécessitent un grand nombre d'instructions à ce niveau de base. Avec les ordinateurs x86, cette série complexe d'opérations peut être exécutée en un seul cycle. Les processeurs dotés de ce type de jeu d'instructions sont appelés microprocesseurs à jeu d'instructions complexe (CISC).
Cependant, la puissance des instructions d'un ordinateur CISC implique un plus grand nombre de transistors, qui consomment de l'espace et de l'énergie.
Aussi, au début des années 1980, plusieurs projets se sont intéressés à l'efficacité énergétique et aux moyens de simplifier les jeux d'instructions dans l'architecture des processeurs. Les chercheurs ont découvert que, dans les faits, la plupart des ordinateurs n'utilisaient qu'une petite partie de l'énorme jeu d'instructions présent dans les ordinateurs CISC. Cette constatation a conduit à la conception des processeurs à jeu d'instructions réduit (RISC). Ces processeurs disposent d'un jeu d'instructions où chaque instruction ne représente qu'une opération simple qui utilise peu de puissance. Cette approche complique la tâche du programmeur en langage d'assemblage, mais simplifie le travail du processeur. Avec les processeurs RISC et les machines RISC avancées, les opérations complexes sont réalisées soit en exécutant plusieurs instructions, soit en confiant les tâches complexes au compilateur plutôt qu'au cœur du processeur.
Il est impossible d'éviter les compromis. Les processeurs x86 ont généralement une plus grande puissance de calcul et offrent plus de clarté ou de simplicité pour la programmation et le nombre d'instructions, mais en contrepartie, ils requièrent une puce plus grande et plus coûteuse avec beaucoup de transistors. Les processeurs ARM peuvent être très rapides pour certains types d'opérations, toutefois les cycles répétés liés aux instructions individuelles peuvent les ralentir en cas d'opérations plus complexes et c'est au programmeur (et non au jeu d'instructions) de fournir le plus d'efforts pour la définition et l'exécution des opérations.
En outre, en raison de ces différences, le MIPS (ou million d'instructions par seconde, une mesure approximative de la puissance brute d'un ordinateur) peut être difficile à calculer, car les différents types de processeurs nécessitent différents jeux d'instructions pour effectuer la même opération.
Consommation d'énergie
L'architecture RISC est apparue avec les petits ordinateurs, ou micro-ordinateurs (qui sont finalement devenus nos PC modernes), car ceux-ci nécessitaient des puces plus petites et plus performantes. Une deuxième question fondamentale s'est alors posée en matière de conception : faut-il se concentrer sur les performances de la puce (vitesse de traitement, ou fréquence d'horloge) ou sur la consommation d'énergie (efficacité énergétique) ?
Puisque les processeurs ARM sont intégrés à la puce, la gestion globale des ressources a longtemps été une priorité, notamment la réduction de la consommation d'énergie et de la production de chaleur. Par exemple, les architectures ARM (comme ARMv8) n'ont en général pas de système de refroidissement simplifié (il n'y a pas de ventilateur dans un téléphone portable). Les processeurs x86, quant à eux, privilégient plutôt la vitesse de traitement par rapport à la faible consommation d'énergie.
Si les deux types de processeurs peuvent offrir des performances élevées (les superordinateurs à architecture ARM et x86 se disputent la palme du plus rapide au monde), les processeurs ARM sont généralement plus indiqués pour les appareils compacts et tendent à optimiser l'autonomie, la taille, le refroidissement et surtout, les coûts. C'est pourquoi on les retrouve dans les petits appareils électroniques et mobiles tels que les smartphones, les tablettes et même les systèmes Raspberry Pi. Les architectures x86 sont plus courantes dans les serveurs, les PC et même les ordinateurs portables, où l'on préfère la vitesse et la flexibilité en temps réel, et où les contraintes de refroidissement et de taille sont moindres.
Pourquoi choisir Red Hat Enterprise Linux for ARM ?
L'usage des puces ARM tend à augmenter pour le calcul haute performance (HPC), et même dans le cloud (avec AWS Graviton et Azure par exemple), là où Red Hat Enterprise Linux fournit déjà une plateforme efficace pour le calcul et la compatibilité, ainsi que pour le développement, le déploiement et l'optimisation des applications.
Les processeurs ARM ont toujours été liés aux systèmes Linux, des systèmes basés sur Android pour les smartphones aux systèmes personnalisés pour Raspberry Pi. Aujourd'hui, même l'un des superordinateurs les plus rapides au monde utilise Red Hat Enterprise Linux avec une architecture ARM (Fugaku).
Contrairement aux processeurs x86, le matériel de chaque conception ARM est unique. C'est là que la puissance d'une grande communauté Open Source s'avère utile. La solution Red Hat Enterprise Linux s'appuie sur une vaste communauté de centaines de fournisseurs de matériel, tous testés et certifiés, notamment des fabricants et concepteurs de matériel ARM. Nous proposons un programme d'accès anticipé avec nos partenaires ARM pour permettre aux clients de collaborer et d'évaluer les nouvelles technologies ARM.
Ce sont notamment ses performances dans divers environnements, du cloud aux serveurs, jusqu'à la périphérie du réseau, qui font la force de Red Hat Enterprise Linux. Ensemble, les technologies, l'écosystème et la stabilité constante permettent aux entreprises d'innover et de s'adapter à tous les environnements.