web-dev-qa-db-fra.com

En quoi l'architecture ARM diffère-t-elle de x86?

L'architecture x86 est-elle spécialement conçue pour fonctionner avec un clavier alors que ARM s'attend à être mobile? Quelles sont les principales différences entre les deux?

142
user1922878

ARM est une architecture RISC (calcul réduit d'un ensemble d'instructions), tandis que x86 est une architecture CISC (traitement complexe d'instructions).

La principale différence entre ces deux aspects réside dans le fait que les instructions ARM ne fonctionnent que sur des registres comportant quelques instructions de chargement et de sauvegarde des données depuis/vers la mémoire, tandis que x86 peut également fonctionner directement sur la mémoire. Jusqu'à la v8, ARM était une architecture 32 bits native, privilégiant les opérations à quatre octets par rapport aux autres.

Donc, ARM est une architecture plus simple, conduisant à une petite zone de silicium et à de nombreuses fonctionnalités d'économie d'énergie, tandis que x86 est en train de devenir une véritable source d'énergie en termes de consommation et de production.

À propos de la question " L’architecture x86 est-elle spécialement conçue pour fonctionner avec un clavier alors que ARM s'attend à être mobile? ". x86 n'est pas spécialement conçu pour fonctionner avec un clavier, ni ARM pour mobile. Cependant, encore une fois, à cause des choix architecturaux de base, x86 contient également des instructions pour travailler directement avec IO, alors que ARM ne l’a pas. Cependant, avec les bus spécialisés IO tels que les clés USB, le besoin de telles fonctionnalités disparaît également.

Si vous avez besoin d'un document à citer, voici ce que Guide de la programmation Cortex-A Series (4.0) indique les différences entre les architectures RISC et CISC:

Un processeur ARM est un processeur RISC (Reduced Instruction Set Computer).

Les processeurs CISC (Complex Instruction Set Computer), comme le x86, possèdent un riche jeu d'instructions capable d'effectuer des tâches complexes avec une seule instruction. De tels processeurs ont souvent des quantités importantes de logique interne qui décodent les instructions machine en séquences d'opérations internes (microcode).

Les architectures RISC, en revanche, ont un nombre plus restreint d’instructions plus générales pouvant être exécutées avec beaucoup moins de transistors, ce qui rend le silicium moins cher et plus efficace en énergie. Comme les autres architectures RISC, les cœurs ARM ont un grand nombre de registres à usage général et de nombreuses instructions sont exécutées au cours d'un cycle. Il dispose de modes d'adressage simples, dans lesquels toutes les adresses de chargement/stockage peuvent être déterminées à partir du contenu du registre et des champs d'instruction.

La société ARM fournit également un document intitulé Article sur le développement des architectures, processeurs et périphériques décrivant comment ces termes s’appliquent à leur activité.

Un exemple comparant l'architecture d'un jeu d'instructions:

Par exemple, si vous avez besoin d'une sorte de bloc de comparaison de mémoire octet par octet dans votre application (généré par le compilateur, sans les détails), voici à quoi cela pourrait ressembler sur x86

repe cmpsb         /* repeat while equal compare string bytewise */

alors que sur ARM la forme la plus courte pourrait ressembler (sans vérification d'erreur, etc.)

top:
ldrb r2, [r0, #1]! /* load a byte from address in r0 into r2, increment r0 after */
ldrb r3, [r1, #1]! /* load a byte from address in r1 into r3, increment r1 after */
subs r2, r3, r2    /* subtract r2 from r3 and put result into r2      */
beq  top           /* branch(/jump) if result is zero                 */

cela devrait vous donner une idée de la complexité des jeux d'instructions RISC et CISC.

243
auselen

Il n’ya rien de spécifique au clavier ou au mobile, si ce n’est le fait que, depuis des années, ARM bénéficie d’un avantage considérable en termes de consommation d’énergie, ce qui le rend attrayant pour toutes sortes d’appareils fonctionnant sur piles.

En ce qui concerne les différences réelles: ARM a plus de registres, prédication prise en charge pour la plupart des instructions bien avant que Intel ne l'ajoute, dispose d'un mode "pouce" destiné principalement à augmenter la densité du code (ainsi, un programme tient moins dans la mémoire ) et a depuis longtemps incorporé toutes sortes de techniques (appelez-les "astuces", si vous préférez) pour économiser de l’énergie presque partout où vous le pourriez.

À une époque, Intel mettait beaucoup plus l’accent sur la vitesse que sur la consommation d’énergie. Ils ont commencé à mettre l'accent sur la consommation d'énergie principalement dans le contexte des ordinateurs portables. Pour les ordinateurs portables, leur objectif d'alimentation typique était de l'ordre de 6 watts pour un ordinateur portable assez petit. Plus récemment (beaucoup plus récemment), ils ont commencé à cibler les appareils mobiles (téléphones, tablettes, etc.). Sur ce marché, ils consomment au moins quelques watts. Ils semblent bien s'en tirer, même si leur approche a été sensiblement différente de celle d'ARM, mettant l'accent sur la technologie de fabrication où ARM a surtout mis l'accent sur la micro-architecture (ce qui n'est pas surprenant, vu que ARM vend des dessins et laisse la fabrication à d’autres).

87
Jerry Coffin

Additionnel à Jerry Coffin premier paragraphe. En d'autres termes, la conception ARM donne une consommation d'énergie inférieure.

La société ARM, n'utilise que la technologie CPU. Ils ne font pas de copeaux physiques. Cela permet à d'autres entreprises d'ajouter diverses technologies périphériques, appelées généralement SOC ou système sur puce. Qu'il s'agisse d'une tablette, d'un téléphone portable ou d'un système de divertissement embarqué. Cela permet aux vendeurs de puces d'adapter le reste de la puce à une application particulière. Cela a des avantages supplémentaires,

  1. Coût de la planche réduit
  2. Puissance inférieure (note1)
  3. Fabrication plus facile
  4. Facteur de forme plus petit

ARM prend en charge les fournisseurs de services SOC avec AMBA , ce qui permet aux développeurs de solutions SOC d'acheter des modules tiers standard; comme un Ethernet, la mémoire et les contrôleurs d'interruption. Certaines autres plates-formes de processeur supportent cela, comme MIPS , mais MIPS n’est pas aussi soucieux de l’alimentation.

Tous ces avantages sont bénéfiques pour une conception portable/à piles. Certains sont simplement bons tout autour. De plus, ARM a une histoire de dispositifs à piles; Apple Newton , organisateurs Psion . Le infrastructure logicielle pour PDA a été exploité par certaines entreprises pour créer des appareils de type smartphone . Cependant, ceux qui ont réinventé l’interface graphique pour l’utiliser avec un téléphone intelligent ont eu plus de succès.

La montée en puissance de Open source et de operating systems a également facilité la création de diverses puces SOC. Une organisation fermée aurait des problèmes à essayer de prendre en charge tous les différents dispositifs disponibles pour ARM. Les deux plateformes cellulaires les plus populaires, Andriod et OSx/IOS, sont basées sur Linux et FreeBSD, Mach et NetBSD os. Open Source aide SOC les éditeurs proposent un support logiciel pour leurs jeux de puces.

Espérons que la raison pour laquelle x86 soit utilisé pour le clavier est évidente. Il contient le logiciel et, plus important encore, des personnes formées à l’utilisation de ce logiciel. Netwinder est un système ARM qui avait été conçu à l'origine pour le clavier. En outre, les fabricants se tournent actuellement vers ARM64 pour le marché des serveurs. L’alimentation/chaleur est une préoccupation dans les centres de données 24/7.

Je dirais donc que l'écosystème qui se développe autour de ces puces est aussi important que des fonctionnalités telles qu'une faible consommation d'énergie. ARM s'efforce depuis quelque temps (du milieu à la fin des années 1980) d'utiliser des ordinateurs à faible consommation d'énergie et aux performances plus élevées. Beaucoup de monde y travaille.

Remarque 1: Plusieurs puces ont besoin de pilotes de bus pour communiquer entre eux à des tensions et à des commandes connues. En outre, des puces séparées ont généralement besoin de condensateurs de support et d'autres composants d'alimentation pouvant être partagés dans un système SOC.

35
artless noise

Le ARM est comme une voiture de sport italienne:

  • Bien équilibré, bien réglé, moteur. Donne une bonne accélération et une vitesse maximale.
  • Excellentes poursuites, freins et suspension. Peut s’arrêter rapidement, peut virer sans ralentir.

Le x86 est comme un muscle car américain:

  • Gros moteur, grosse pompe à essence. Donne une excellente vitesse de pointe et accélération, mais utilise beaucoup de carburant.
  • Freins affreux, vous devez mettre un rendez-vous dans votre agenda si vous voulez ralentir.
  • Direction terrible, vous devez ralentir au virage.

En résumé: le x86 est basé sur un design de 1974 et est bon en ligne droite (mais consomme beaucoup de carburant). Le bras consomme peu de carburant, ne ralentit pas dans les virages (branches).


Métaphore terminée, voici quelques différences réelles.

  • Arm a plus de registres.
  • Arm a peu de registres à usage spécifique, x86 désigne tous les registres à usage spécial (donc moins de déplacements).
  • Arm a peu de commandes d'accès à la mémoire, seulement charger/stocker le registre.
  • Arm est l’architecture interne de Harvard, ma conception.
  • Le bras est simple et rapide.
  • Les instructions de bras sont architecturalement à cycle unique (sauf chargement/stockage multiple).
  • Les instructions de bras font souvent plus d’une chose (en un seul cycle).
  • Lorsque plus d'une instruction Arm est nécessaire, telle que le stockage en boucle et l'incrémentation automatique du x86, Arm le fait toujours en moins de cycles d'horloge.
  • Arm a plus d'instructions conditionnelles.
  • Le prédicteur de branche d'armement est trivialement simple (si inconditionnel ou inversé, supposons branche, sinon non-branche), et fonctionne mieux que celui très très complexe du x86 (il n'y a pas assez de place ici pour l'expliquer, pas que je puisse ).
  • Arm a un jeu d'instructions cohérent simple (vous pouvez compiler à la main et apprendre le jeu d'instructions rapidement).
15
ctrl-alt-delor

L’architecture ARM a été conçue à l’origine pour les ordinateurs personnels Acorn (voir Acorn Archimedes , vers 1987 et RiscPC ), qui étaient également basés sur le clavier. ordinateurs personnels, de même que les modèles IBM PC basés sur x86. Seulement plus tard, les implémentations de ARM étaient principalement destinées aux segments de marché des mobiles et des applications intégrées.

À l'origine, de simples processeurs RISC de performances à peu près équivalentes pouvaient être conçus par des équipes d'ingénieurs beaucoup plus petites (voir Berkeley RISC ) que celles travaillant sur le développement x86 chez Intel.

Mais, de nos jours, les puces ARM les plus rapides possèdent des unités d'envoi d'instructions hors-ordre multi-problèmes très complexes conçues par de grandes équipes d'ingénieurs, et les cœurs x86 peuvent ressembler à un cœur RISC alimenté par une unité de traduction des instructions. .

Ainsi, les différences actuelles entre les deux architectures sont davantage liées aux besoins spécifiques du marché des niches de produits ciblées par les équipes de développement. (Opinion aléatoire: ARM génère probablement plus de frais de licence pour des applications intégrées qui ont tendance à être beaucoup plus puissantes et à des coûts moindres. Et Intel doit maintenir des performances optimales dans les PC et les serveurs afin de préserver leurs marges de profit. voir les différentes optimisations d’implémentation.)

15
hotpaw2