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


  • Français


  • Ê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 d’une 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 de l’informatique.

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

    Architecture du processeur Description
    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 à 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 commande de mémoire petit-boutiste

    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 repose principalement sur 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 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 selon le 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é (et préféré) sur x86 et amd64. Un exemple de ceci est que le projet FreeBSD fait référence à l’architecture x86 64 bits comme 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. Mais le terme le plus largement accepté reste x86_64.

    Le x86 La chaîne pour CPU ISA est spéciale. Vous voyez, lors de la transition du x86 32 bits (i386) à 64 bits x86 (x86_64), les fournisseurs de processeurs ont veillé à ce que le processeur puisse exécuter à la fois des processeurs 32 bits et Instructions 64 bits. Par conséquent, parfois, lorsque vous lisez x86cela peut également signifier “Il fonctionnera uniquement sur un ordinateur 64 bits, mais si cet ordinateur peut exécuter des instructions 32 bits, vous pouvez y exécuter un logiciel utilisateur 32 bits.”

    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).

    (Ouais ! Je suis drôle)

    Le x86_64 ISA a également des sous-ensembles. Tous ces sous-ensembles sont en 64 bits mais comportent diverses fonctionnalités ajoutées. Surtout les instructions SIMD (Single Instruction Multiple Data).

    • x86_64-v1: La base x86_64 ISA que presque tout le monde connaît. Quand quelqu’un dit x86_64ils font très probablement référence au x86_64-v1 EST UN.
    • x86_64-v2: Cela ajoute plus d’instructions comme SSE3 (Streaming SIMD Extensions 3) en tant qu’extensions.
    • x86_64-v3: Ajoute des instructions comme AVX (Advance Vector eXtensions) et AVX2 qui peuvent utiliser 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 le x86_64-v3 ISA en ajoutant plus d’instructions SIMD en tant qu’extensions. Tels que AVX256 et AVX512. Ce dernier peut utiliser registres CPU jusqu’à 512 bits de large!

    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é de x86_64 processeurs à utiliser leur propre conception de processeurs ARM dans leurs offres d’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 AArch32 et AArch64 respectivement. La chaîne « AArch » signifie « Arm Architecture ». Ceux-ci sont Modes un processeur peut être présent 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 à un numéro de génération d’une spécification. À 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 quand AArch64 est le nom officiellement reconnu pour l’architecture ARM 64 bits. La raison est double :

    1. Le nom arm64 compris avant AArch64 a été décidé par ARM. (ARM fait également référence à l’architecture ARM 64 bits comme arm64 dans certaines de ses documentations officielles… 😬)
    2. Linus Torvalds n’aime pas le AArch64 nom. Par conséquent, la base de code Linux fait largement référence à AArch64 comme arm64. Mais il signalera quand même aarch64 quand tu fais un uname -m.

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

    RISC-V

    RISC-V est une spécification open source d’un CPU ISA. Cela ne signifie pas 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 disponibles gratuitement (comme dessins; pas en tant que cœurs physiques/SoC) sous une licence open source. Voici un de ces efforts.

    💡

    TL;DR : Vous devriez chercher 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 de processeur, RISC-V possède des architectures de processeur 32 bits et 64 bits. Puisque RISC-V est tout nouveau (dans les termes d’un CPU ISA), 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é CPU RISC-V est le « jeu d’instructions de base entier » (rv64i).

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

    Nom du poste Description
    rv64i Jeu d’instructions d’entier de base 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 (comprend 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 obligatoire jeu d’instructions entier de base. La raison pour laquelle rv64i est écrit ensemble, c’est parce que, même si le i l’extension est une “extension”, c’est obligatoire.

    La convention est d’avoir le nom de l’extension dans l’ordre spécifique indiqué ci-dessus. Donc rv64g s’étend à rv64imafdpas à 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 de la rédaction de cet article) rv64g est en fait rv64imafdZicsrZifencei. rire diabolique

    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 bugs logiciels) qui a toujours été petit-boutiste. Je pourrais continuer encore et encore sur l’endianisme, mais vous feriez mieux de consulter ce document de Mozilla pour en savoir plus sur l’endianisme.

    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 commande de mémoire big-endian.
    • ppc64le: L’architecture PowerPC 64 bits avec commande de mémoire petit-boutiste.

    À partir de maintenant, 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. Certains processeurs proposent 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.

    Source

    Houssen Moshinaly

    Pour contacter personnellement le taulier :

    1 réponse

    1. Girodet Christian dit :

      Bonjour.
      Ah….très bien, maintenant je commence à mieux pouvoir comprendre.
      Salutations.
      Un ancien professeur de mécanique de la vielle école.

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Copy code