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
toARMv7
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.
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înex86_64
est largement utilisée (et préférée) par rapport àx86
etamd64
. Un exemple de ceci est que le projet FreeBSD fait référence à l'architecture x86 64 bits sous le nom deamd64
tandis que Linux et macOS l'appellentx86_64
.
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 basex86_64
que presque tout le monde connaît. Quand quelqu'un ditx86_64
, il fait très probablement référence à l'ISAx86_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'ISAx86_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 ARMvX
où X
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.)
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 :
Le nom
arm64
a fait son chemin avant queAArch64
ne soit choisi par ARM. (ARM fait également référence à l'architecture ARM 64 bits sous le nom dearm64
dans certaines de ses documentations officielles... 😬)Linus Torvalds n'aime pas le nom
AArch64
. Par conséquent, la base de code Linux fait largement référence àAArch64
commearm64
. Mais il signalera toujoursaarch64
lorsque vous effectuerez ununame -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.
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
.
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.