Nous utilisons des cookies pour améliorer votre expérience.

MacBidouille

Les CPU des Mac : ARM (bonus)

Pour commencer l'année 2024 du bon pied, je voudrais mettre en avant 3 caractéristiques des architectures ARM 32 bits, qui ont fait sa réussite et il y a du génie là-dedans.

Bien sûr chaque grande architecture a de grandes qualités, ça n'est certainement pas pour minimiser celles des concurrents, mais juste mettre en exergue ce qui a différencié ARM.

Exécution conditionnelle

On avait vu que les branchements conditionnels pris posaient des problèmes d'optimisation à cette époque en l'absence de cache de branchement et d'exécution spéculative, l'instruction suivant immédiatement le branchement étant déjà lue depuis la mémoire, amenant dans une hypothétique CPU à 1 cycle par instruction au moins 2 cycles utilisés en cas de saut, 1 cycle sinon.
Dans la pratique, on était plutôt à une perte de quelques cycles, 3 à 7 en fonction de la longueur du pipeline!

L'idée de génie fut d'offrir une exécution conditionnelle des instructions, permettant alors de se passer de branchement et de saut quand 1 à 3 instructions se suivent sans modifier le registre de condition.
Dans ce cadre-là, au lieu de sauter et sans avoir d'instruction de saut conditionnel, la CPU passe à 1 instruction par cycle devant celles-ci et ne les exécute pas, avec un avantage énorme sur du code simple.

En revanche, les instructions font 32 bits, ce qui augmente énormément la taille du code à comparer à environ 18 bits en moyenne sur du 386, à une époque où contrairement à aujourd'hui c'est celui-ci qui faisait l'essentiel des logiciels et non des ressources obèses.

Encodage d'instruction Thumb

32 bits par instruction c'était donc énorme, quasiment deux fois plus important que pour du x86, et l'avenir d'ARM se jouait sur la mobilité dont déjà des téléphones qu'on a après appelé feature-phone, des téléphones cellulaires avec des fonctionnalités avancées.

Sous la pression de la demande des fabricants de ces feature-phone, l'équipe d'ARM a eu une idée de génie!
Après avoir réduit le nombre d'instruction de leur architecture de type Berkley, ils allaient réduire l'encodage de ces mêmes instructions, écartant ainsi les encodages avec des paramètres peu ou pas utilisés pour ne garder que les plus courant, et réussir à diviser par quasiment deux l'espace occupé par les logiciels.

Thumb n'est pas un "jeu d'instruction 16 bits", c'est bien quasiment le même jeu d'instruction travaillant en 32 bits, mais c'est l'encodage lui-même qui a été réduit à 16 bits, offrant ainsi une densité compétitive avec le x86, limitant les accès mémoires ainsi que la quantité de ROM nécessaire sur les produits l'intégrant initialement.

Mode et Sous-ensemble d'instruction Jazelle DBX

Java était alors un hot spot (sic) pour les appareils mobiles, incluant les feature-phone et ce qui deviendra les prémices de nos smartphone.
Faute à la fois de grosse capacité de traitement, mais aussi d'espace mémoire, ces appareils ne pouvaient vraiment implémenter efficacement ni une compilation complète ni même du JIT optimisé, chaque cycle étant compté, chaque octet aussi.

Il fallait quand-même offrir de bonnes performances pour du code Java et plus spécifiquement sa plateforme J2ME. Et non J2EE comme on a pu le lire.

ARM a encore fait un choix original: offrir un mode alternatif où le bytecode Java est à 95% exécuté directement par la CPU, avec donc 5% des instructions exécutées via une émulation logicielle, le tout ne nécessitant que très peu de mémoire (ROM en fait) en offrant des performances suffisantes même si non-optimales.

ARMv8 64 bits: plus proche du x86!

ARM a pris le chemin du 64 bits bien après les concepteurs de CPU pour micro-ordinateur individuel classiques et surtout de serveurs, car les plateformes mobiles en avait bien moins besoin étant à l'époque très loin des limites de gestion mémoire et surtout focalisées sur l'économie d'énergie et l'autonomie. Chaque transistor a un coût, et surtout un coût énergétique sur un appareil mobile.

Cela lui a permis de réviser son architecture pour le 64 bits, et en fait de repartir d'une feuille blanche tant pour les fonctionnalités que le jeu d'instruction et son encodage.
Au contraire du x86, chez ARM il n'y a pour ainsi dire aucun point commun entre ses CPU 32 bits et 64 bits à part le logo de la société!

Finito l'exécution conditionnelle, à la trappe Thumb puis Thumb-2, plus question de Jazelle et ajout d'instructions mémoires apportant des garanties d'ordonnancement et d'atomicité dans un sens ou l'autre, LDAR et STLR.
Aucune compatibilité binaire, pas plus de compatibilité sur le code-source en langage d'assemblage, ARM a fait table-rase du passé pour le 64 bits.

Ce passage au 64 bits montre que cette société, ses chercheurs et ingénieurs sont toujours pragmatiques, à la recherche de la bonne solution dans un contexte qui a changé du tout au tout.
ARM en 64 bits vise différents marché maintenant que le marché des smartphone est bien verrouillé, de nos micro-ordinateurs aux stations de travail jusqu'aux serveurs dans le cloud!

Sondage

Pensez-vous encore qu'Apple puisse révolutionner vos usages informatiques ?