Recherche de site Web

arm contre aarch64 contre amd64 contre x86_64 : quelle est la différence


Il existe de nombreux termes lorsqu'il s'agit de CPU : aarch64, x86_64, amd64, arm et plus encore. Apprenez ce qu’ils sont et en quoi ils diffèrent les uns des autres.

Êtes-vous quelqu'un qui est confus par des termes comme ARM, AArch64, x86_64, i386, etc. lors de la visualisation d'une fiche technique ou la page de téléchargement d'un logiciel ? C'est ce qu'on appelle les architectures CPU et je vais vous aider à vous plonger dans ce sujet informatique.

Voici un tableau qui vous fournira un bon résumé de la signification de chaque chaîne :

x86_64/x86/amd64

Même nom pour les processeurs AMD/Intel 64 bits

AArch64/arm64/ARMv8/ARMv9

Même nom pour les processeurs ARM 64 bits

i386

Processeurs AMD/Intel 32 bits

AArch32/arm/ARMv1 to ARMv7

Même nom pour les processeurs ARM 32 bits

rv64gc/rv64g

Même nom pour les processeurs RISC-V 64 bits

ppc64le

Processeurs PowerPC 64 bits
avec ordre de mémoire Little-Endian

La lecture de gauche à droite correspond à la préférence d'utiliser ce terme pour décrire l'architecture du processeur plutôt que les autres termes utilisés alternativement à sa droite.

Si vous êtes ringard comme moi et souhaitez une explication plus approfondie, continuez à lire !

Présentation générale : architectures CPU

Les termes que j'ai énumérés ci-dessus sont, de manière générale, des architectures CPU. Cependant, d’un point de vue pédant, c’est ce qu’un ingénieur informaticien appelle un CPU ISA (Instruction Set Architecture).

Un CPU ISA est ce qui définit la façon dont les 1 et les 0 du binaire sont interprétés par votre CPU.

Il existe quelques surensembles de ces ISA CPU.

  • x86 (AMD/Intel)

  • BRAS

  • RISC-V

  • PowerPC (toujours vivant chez IBM)

Il existe davantage d'ISA CPU comme MIPS, SPARC, DEC Alpha, etc. Mais ceux que j'ai énumérés ci-dessus sont ceux qui sont encore largement utilisés aujourd'hui (dans une certaine mesure).

Les ISA répertoriées ci-dessus comportent au moins deux sous-ensembles. Ceci est principalement basé sur la largeur du bus mémoire. La largeur du bus mémoire indique le nombre de bits pouvant être transférés entre le CPU et la RAM en une seule fois. Il existe plusieurs largeurs de bus mémoire, mais les deux largeurs les plus importantes sont un bus mémoire de 32 bits et un bus mémoire de 64 bits.

💡
Les homologues 32 bits des CPU ISA sont soit une relique du passé, conservés en vie pour la prise en charge héritée, soit utilisés uniquement dans les microcontrôleurs. Il est prudent de supposer que style="white-space: pre-wrap;">tout nouveau matériel est en 64 bits (en particulier le matériel destiné aux consommateurs).

x86 (AMD/Intel)

Le CPU ISA x86 vient principalement d'Intel puisque c'est Intel qui l'a créé en premier lieu avec le microprocesseur 8085. Le microprocesseur 8085 avait un bus mémoire de 16 bits de large. Plus tard, AMD est entré dans le jeu et a suivi les traces d'Intel jusqu'à ce qu'AMD crée sa propre architecture sur-ensemble 64 bits, surpassant Intel.

Les sous-ensembles de l'architecture x86 sont les suivants :

  • i386 : si vous possédez un processeur antérieur à 2007, il s'agit probablement de l'architecture de votre processeur. Il s'agit de la "variante" 32 bits de l'architecture x86 actuellement connue d'AMD/Intel.

  • x86_64/x86/amd64 : les trois termes sont utilisés de manière interchangeable en fonction du projet que vous examinez. Mais ils font tous référence à la « variante » 64 bits de l’architecture x86 AMD/Intel. Quoi qu'il en soit, la chaîne x86_64 est largement utilisée (et préférée) par rapport à x86 et amd64. Un exemple de ceci est que le projet FreeBSD fait référence à l'architecture x86 64 bits sous le nom de amd64 tandis que Linux et macOS l'appellent x86_64.

💡
Depuis qu'AMD a battu Intel dans la création d'un ISA 64 bits, certains projets comme FreeBSD font référence à la variante 64 bits de x86 sous le nom d'amd64. style="white-space: pre-wrap;">Mais le terme le plus largement accepté reste x86_64< b>style="white-space: pre-wrap;">.

La chaîne x86 pour CPU ISA est spéciale. Vous voyez, lors de la transition du x86 32 bits (i386) au x86 64 bits (x86_64), les fournisseurs de processeurs se sont assurés que le processeur peut exécuter les deux, 32 -bit et instructions 64 bits. Par conséquent, parfois, lorsque vous lisez x86, cela peut aussi signifier « Il fonctionnera uniquement sur un ordinateur 64 bits, mais si cet ordinateur peut exécuter des instructions 32 bits, vous pouvez exécuter un logiciel utilisateur 32 bits. dessus."

Cette ambiguïté du x86 - c'est-à-dire des processeurs 64 bits qui peuvent également exécuter du code 32 bits - est principalement due aux systèmes d'exploitation qui fonctionnent sur des processeurs 64 bits, mais permettent à l'utilisateur dudit système d'exploitation d'exécuter du code 32 bits. logiciel. Windows en profite avec une fonctionnalité appelée « mode de compatibilité ».

Récapitulons, il existe deux architectures CPU pour les CPU conçus par AMD et Intel. Ils sont 32 bits (i386) et 64 bits (x86_84).

Intels supplémentaires

(Ouais ! Je suis drôle)

L'ISA x86_64 possède également des sous-ensembles. Tous ces sous-ensembles sont en 64 bits mais comportent diverses fonctionnalités ajoutées. En particulier les instructions SIMD (Single Instruction Multiple Data).

  • x86_64-v1 : l'ISA de base x86_64 que presque tout le monde connaît. Quand quelqu'un dit x86_64, il fait très probablement référence à l'ISA x86_64-v1.

  • x86_64-v2 : cela ajoute plus d'instructions comme SSE3 (Streaming SIMD Extensions 3) en tant qu'extensions.

  • x86_64-v3 : ajoute des instructions telles que AVX (Advance Vector eXtensions) et AVX2 qui peuvent utiliser des registres CPU jusqu'à 256 bits de large ! Cela peut massivement paralléliser vos calculs si vous pouvez en profiter.

  • x86_64-v4 : itère sur l'ISA x86_64-v3 en ajoutant plus d'instructions SIMD en tant qu'extensions. Tels que AVX256 et AVX512. Ce dernier peut utiliser des registres CPU d'une largeur allant jusqu'à 512 bits !

BRAS

ARM est une société qui crée sa propre spécification pour un CPU ISA, conçoit et licencie ses propres cœurs de processeur et permet également à d'autres sociétés de concevoir leurs propres cœurs de processeur à l'aide du ARM CPU ISA. (La dernière partie ressemblait à une requête SQL !)

Vous avez peut-être entendu parler d'ARM à cause des SBC (Single Board Computer) comme la gamme de SBC Raspberry Pi. Mais leurs processeurs sont également largement utilisés dans les téléphones mobiles. Récemment, Apple est passé des processeurs x86_64 à l'utilisation de sa propre conception de processeurs ARM dans ses offres pour ordinateurs portables et de bureau.

Comme toute architecture CPU, il existe deux sous-ensembles basés sur la largeur du bus mémoire.

Les noms officiellement reconnus pour les architectures ARM 32 bits et 64 bits sont respectivement AArch32 et AArch64. La chaîne « AArch » signifie « Arm Architecture ». Ce sont des modes dans lesquels un processeur peut se trouver pour exécuter des instructions.

La spécification réelle d'une instruction conforme au CPU ISA d'ARM est nommée ARMvXX fait référence à une génération numéro d’un cahier des charges. À ce jour, il existe 9 versions majeures de cette spécification. Allant de ARMv1 à ARMv7, qui définit une spécification d'architecture de processeur pour les processeurs 32 bits. Alors que ARMv8 et ARMv9 sont des spécifications pour les processeurs ARM 64 bits. (Plus d'infos ici.)

💡
Chaque spécification de processeur ARM comporte d'autres sous-spécifications. En prenant ARMv8 comme exemple, nous avons ARMv8-R, ARMv8-A, ARMv8.1-A, ARMv8.2-A, ARMv8.3-A, ARMv8.4-A, ARMv8.5-A, ARMv8.6- A, ARMv8.7-A, ARMv8.8-A et ARMv8.9-A. Le -A signifie « Cœurs d'applications » et -R signifie « Cœurs en temps réel ».

Vous vous demandez peut-être pourquoi certaines personnes l'appellent arm64 même si AArch64 est le nom officiellement reconnu pour l'architecture ARM 64 bits. La raison est double :

  1. Le nom arm64 a fait son chemin avant que AArch64 ne soit choisi par ARM. (ARM fait également référence à l'architecture ARM 64 bits sous le nom de arm64 dans certaines de ses documentations officielles... 😬)

  2. Linus Torvalds n'aime pas le nom AArch64. Par conséquent, la base de code Linux fait largement référence à AArch64 comme arm64. Mais il signalera toujours aarch64 lorsque vous effectuerez un uname -m.

Par conséquent, pour les processeurs ARM 32 bits, vous devez rechercher la chaîne AArch32 mais parfois cela peut aussi être arm ou armv7. De même, pour les processeurs ARM 64 bits, vous devez rechercher la chaîne AArch64 mais parfois cela peut aussi être arm64 ou ARMv8 ou ARMv9.

RISC-V

RISC-V est une spécification open source d'un CPU ISA. Cela ne veut pas dire que les processeurs eux-mêmes sont open source ! C'est un standard, un peu comme Ethernet. La spécification Ethernet est open source, mais les câbles, routeurs et commutateurs que vous achetez coûtent de l'argent. Même accord avec les processeurs RISC-V. :)

Cependant, cela n'a pas empêché les gens de créer des cœurs RISC-V qui sont disponibles gratuitement (sous forme de conceptions ; et non sous forme de cœurs physiques/SoC) sous une licence open source. Voici un de ces efforts.

💡
TL;DR : Vous devriez rechercher la chaîne rv64gc si vous recherchez un logiciel à exécuter sur des processeurs grand public RISC-V. C'est ce sur quoi un grand nombre de distributions Linux se sont mises d'accord.

Comme toute architecture CPU, RISC-V possède des architectures CPU 32 bits et 64 bits. Étant donné que RISC-V est très nouveau (en termes d'ISA de processeur), tous les principaux cœurs de processeur côté consommateur/client sont généralement des processeurs 64 bits. Les conceptions 32 bits sont pour la plupart des microcontrôleurs qui ont un cas d'utilisation très spécifique.

Ce qui les différencie, ce sont les extensions de processeur. L'extension minimale absolue qu'il faut implémenter pour être appelé processeur RISC-V est le « jeu d'instructions de base entier » (rv64i).

Un tableau de quelques extensions et la description est la suivante :

rv64i

Jeu d'instructions de base d'entier de 64 bits (obligatoire)

m

Instructions de multiplication et de division

a

Instructions atomiques

f

Instructions à virgule flottante simple précision

d

Instructions à virgule flottante double précision

g

Alias; Une collection d'extensions nécessaires pour exécuter un gOS à usage général (inclut imafd)

c

Instructions compressées

Dans la chaîne rv64i, rv signifie RISC-V, 64 indique qu'il s'agit d'une architecture CPU 64 bits et i est l'extension du jeu d'instructions de base obligatoire pour les entiers. La raison pour laquelle rv64i est écrit ensemble est que, même si l'extension i est une "extension", elle est obligatoire.

La convention est d'avoir le nom de l'extension dans l'ordre spécifique indiqué ci-dessus. Ainsi, rv64g se développe en rv64imafd, pas en rv64adfim.

💡
Il existe d'autres extensions comme Zicsr et Zifencei qui se situent entre les extensions d et g mais je ne les ai délibérément pas incluses pour ne pas vous effrayer.

Donc techniquement, (au moment d'écrire cet article) rv64g est en fait rv64imafdZicsrZifencei. rires diaboliques

PowerPC

PowerPC était une architecture CPU très populaire au début du partenariat Apple, IBM et Motorola. C'est l'architecture CPU qu'Apple a utilisée dans toute sa gamme grand public jusqu'à ce qu'ils passent du PowerPC au x86 d'Intel.

PowerPC avait initialement un ordre de mémoire big-endian. Plus tard, lorsqu'une architecture 64 bits a été introduite, une option permettant d'utiliser le petit-boutisme a été ajoutée. Cela a été fait pour être compatible avec l'ordre de mémoire d'Intel (pour éviter les bogues logiciels) qui a toujours été petit-boutiste. Je pourrais continuer encore et encore sur l'endianité, mais vous feriez mieux de consulter ce document de Mozilla pour en savoir plus sur l'endianité.

Puisque l'endianisme est également un facteur ici, il existe 3 architectures de PowerPC :

  • powerpc : L'architecture PowerPC 32 bits.

  • ppc64 : l'architecture PowerPC 64 bits avec ordre de mémoire big-endian.

  • ppc64le : l'architecture PowerPC 64 bits avec un ordre de mémoire little-endian.

À l'heure actuelle, ppc64le est largement utilisé.

Conclusion

Il existe de nombreuses architectures de processeur dans la nature. Pour chaque architecture CPU, il existe des sous-ensembles 32 bits et 64 bits. Il existe des processeurs proposant des architectures x86, ARM, RISC-V et PowerPC.

Le x86 est l’architecture CPU la plus largement et la plus facilement disponible, puisque c’est celle qu’utilisent Intel et AMD. Il existe également des offres ARM qui sont presque exclusivement utilisées dans les téléphones mobiles et les SBC accessibles.

RISC-V s'efforce continuellement de rendre le matériel plus largement accessible. J'ai un SBC doté d'un processeur RISC-V ;)

PowerPC se trouve principalement dans les serveurs, du moins pour le moment.

Articles connexes: