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?
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?
Réponses:
ARM
est une architecture RISC (Reduced Instruction Set Computing) alors qu'elle x86
est une CISC (Complex Instruction Set Computing).
La principale différence entre celles-ci dans cet aspect est que les instructions ARM ne fonctionnent que sur des registres avec quelques instructions pour charger et enregistrer 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, favorisant les opérations sur quatre octets par rapport aux autres.
ARM est donc une architecture plus simple, conduisant à une petite zone de silicium et à de nombreuses fonctionnalités d'économie d'énergie, tandis que x86 devient une bête de puissance en termes de consommation d'énergie et de production.
À propos de la question sur " 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 les mobiles. Cependant, encore une fois, en raison des choix architecturaux de base, x86 a également des instructions avec lesquelles travailler directement, IO
contrairement à ARM. Cependant, avec les bus IO spécialisés comme les USB, le besoin de telles fonctionnalités disparaît également.
Si vous avez besoin d'un document à citer, voici ce que le Guide des programmeurs de la série Cortex-A (4.0) explique sur 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, ont un riche jeu d'instructions capable de faire des choses complexes avec une seule instruction. Ces processeurs ont souvent des quantités importantes de logique interne qui décodent les instructions de la machine en séquences d'opérations internes (microcode).
Les architectures RISC, en revanche, ont un plus petit nombre d'instructions plus générales, qui pourraient être exécutées avec beaucoup moins de transistors, rendant le silicium moins cher et plus économe 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 s'exécutent en un seul cycle. Il a des modes d'adressage simples, où toutes les adresses de chargement / stockage peuvent être déterminées à partir du contenu du registre et des champs d'instructions.
La société ARM fournit également un article intitulé Architectures, Processors, and Devices Development Article décrivant comment ces termes s'appliquent à leur entreprise.
Un exemple comparant l'architecture du jeu d'instructions:
Par exemple, si vous avez besoin d'une sorte de bloc de comparaison de mémoire par octet dans votre application (généré par le compilateur, en ignorant les détails), voici à quoi cela pourrait ressembler sur x86
repe cmpsb /* repeat while equal compare string bytewise */
tandis que sur la ARM
forme la plus courte peut 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 */
qui devrait vous donner une idée de la différence de complexité des jeux d'instructions RISC et CISC.
Ni l'un ni l'autre n'a rien de spécifique au clavier ou au mobile, à part le fait que pendant des années, ARM a eu un avantage assez substantiel en termes de consommation d'énergie, ce qui le rendait attrayant pour toutes sortes d'appareils fonctionnant sur batterie.
En ce qui concerne les différences réelles: ARM a plus de registres, prend en charge la prédication pour la plupart des instructions bien avant qu'Intel ne l'ajoute, et a longtemps incorporé toutes sortes de techniques (appelez-les "astuces", si vous préférez) pour économiser de l'énergie presque partout où il le pourrait.
Il y a aussi une différence considérable dans la façon dont les deux instructions codent. Intel utilise un codage de longueur variable assez complexe dans lequel une instruction peut occuper de 1 à 15 octets. Cela permet aux programmes d'être assez petits, mais rend le décodage des instructions relativement difficile (comme dans: le décodage rapide des instructions en parallèle ressemble plus à un cauchemar complet).
ARM a deux modes d'encodage d'instructions différents: ARM et THUMB. En mode ARM, vous avez accès à toutes les instructions et l'encodage est extrêmement simple et rapide à décoder. Malheureusement, le code du mode ARM a tendance à être assez volumineux, il est donc assez courant pour un programme d'occuper environ deux fois plus de mémoire que le code Intel. Le mode pouce tente d'atténuer cela. Il utilise toujours un codage d'instructions assez régulier, mais réduit la plupart des instructions de 32 bits à 16 bits, par exemple en réduisant le nombre de registres, en éliminant la prédication de la plupart des instructions et en réduisant la plage de branches. Au moins d'après mon expérience, cela ne donne toujours pas tout à faitaussi dense de codage que le code x86 peut l'être, mais c'est assez proche, et le décodage est encore assez simple et direct. Une densité de code inférieure signifie que vous avez généralement besoin d'au moins un peu plus de mémoire et (généralement plus sérieusement) d'un cache plus grand pour obtenir des performances équivalentes.
À un moment donné, Intel a mis 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 de puissance 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.) Pour ce marché, ils recherchent au maximum quelques watts. Ils semblent s'en tirer plutôt bien, bien que leur approche ait été substantiellement différente de celle d'ARM, mettant l'accent sur la technologie de fabrication où ARM a principalement mis l'accent sur la micro-architecture (pas surprenant, étant donné qu'ARM vend des conceptions et laisse la fabrication à d'autres).
Selon la situation, la consommation d'énergie d'un processeur est souvent plus importante que sa consommation d'énergie. Au moins comme j'utilise les termes, la consommation d'énergie fait référence à la consommation d'énergie sur une base (plus ou moins) instantanée. Cependant, la consommation d'énergie se normalise en fonction de la vitesse, donc si (par exemple) le processeur A consomme 1 watt pendant 2 secondes pour effectuer un travail et que le processeur B consomme 2 watts pendant 1 seconde pour faire le même travail, les deux processeurs consomment la même quantité totale d'énergie (deux watts secondes) pour faire ce travail - mais avec le CPU B, vous obtenez des résultats deux fois plus rapidement.
Les processeurs ARM ont tendance à très bien fonctionner en termes de consommation d'énergie. Donc, si vous avez besoin de quelque chose qui nécessite presque constamment la "présence" d'un processeur, mais qui ne fait pas vraiment beaucoup de travail, cela peut très bien fonctionner. Par exemple, si vous faites de la visioconférence, vous collectez quelques millisecondes de données, les compressez, les envoyez, recevez des données d'autres personnes, les décompressez, les lisez et répétez. Même un processeur très rapide ne peut pas passer beaucoup de temps à dormir, donc pour des tâches comme celle-ci, ARM fonctionne très bien.
Les processeurs Intel (en particulier leurs processeurs Atom, qui sont en fait destinés aux applications basse consommation) sont extrêmement compétitifs en termes de consommation d'énergie. Alors qu'ils fonctionnent presque à leur pleine vitesse, ils consommeront plus d'énergie que la plupart des processeurs ARM - mais ils finissent également de travailler rapidement, de sorte qu'ils peuvent se rendormir plus tôt. En conséquence, ils peuvent combiner une bonne autonomie de batterie avec de bonnes performances.
Donc, lorsque vous comparez les deux, vous devez faire attention à ce que vous mesurez, pour être sûr que cela reflète ce qui vous tient vraiment à cœur. ARM fonctionne très bien en termes de consommation d'énergie, mais selon la situation, vous pouvez facilement vous soucier davantage de la consommation d'énergie que de la consommation d'énergie instantanée.
En plus du premier paragraphe de Jerry Coffin . Par exemple, la conception ARM réduit la consommation d'énergie.
L'entreprise ARM
ne concède que la technologie CPU. Ils ne fabriquent pas de puces physiques. Cela permet à d'autres entreprises d'ajouter diverses technologies périphériques, généralement appelées SOC ou système sur puce. Que l'appareil soit une tablette, un téléphone portable ou un système de divertissement embarqué. Cela permet aux fournisseurs de puces d'adapter le reste de la puce à une application particulière. Cela présente des avantages supplémentaires,
ARM
prend en charge les fournisseurs de SOC avec AMBA , permettant aux développeurs de SOC d'acheter des modules tiers prêts à l'emploi; comme un Ethernet, des contrôleurs de mémoire et d'interruption. Certaines autres plates-formes de processeur prennent en charge cela, comme MIPS , mais MIPS n'est pas aussi conscient de la puissance.
Tous ces éléments sont avantageux pour une conception portable / à piles. Certains sont tout simplement bons partout. De plus, ARM
a des antécédents d'appareils à piles; Apple Newton , organisateurs Psion . L' infrastructure du logiciel PDA a été exploitée par certaines entreprises pour créer des appareils de type téléphone intelligent . Cependant, ceux qui ont réinventé l'interface graphique pour une utilisation avec un téléphone intelligent ont eu plus de succès .
La montée en puissance des Open source
jeux d'outils a operating systems
également facilité les différentes SOC
puces. Une organisation fermée aurait des problèmes pour essayer de prendre en charge tous les différents appareils disponibles pour l'ARM. Les deux plates-formes cellulaires les plus populaires, Andriod et OSx / IOS, sont basées sur les systèmes d' exploitation Linux et FreeBSD, Mach et NetBSD . Open Source
aide les SOC
fournisseurs à fournir un support logiciel pour leurs jeux de puces.
Espérons que la raison pour laquelle x86 est utilisé pour le clavier est évidente. Il a le logiciel et, plus important encore, des personnes formées pour utiliser ce logiciel. Netwinder est un ARM
système conçu à l'origine pour le clavier . En outre, les fabricants recherchent actuellement ARM64 pour le marché des serveurs. L'électricité / 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 que la faible consommation d'énergie. ARM
se bat depuis un certain temps (du milieu à la fin des années 1980) pour un calcul à faible puissance et à hautes performances et ils ont beaucoup de monde à bord.
Remarque 1: plusieurs puces ont besoin de pilotes de bus pour communiquer entre eux à des tensions connues et conduire. En outre, des puces séparées nécessitent généralement des condensateurs de prise en charge et d'autres composants d'alimentation qui peuvent être partagés dans un système SOC .
L'ARM est comme une voiture de sport italienne:
Le x86 est comme une muscle car américaine:
En résumé: le x86 est basé sur un design de 1974 et est bon en ligne droite (mais utilise beaucoup de carburant). Le bras consomme peu de carburant, ne ralentit pas pour les virages (branches).
Métaphore terminée, voici quelques vraies différences.
L'architecture ARM a été conçue à l'origine pour les ordinateurs personnels Acorn (voir Acorn Archimedes , vers 1987, et RiscPC ), qui étaient autant d'ordinateurs personnels à clavier que les modèles de PC IBM x86. Seules les implémentations ARM ultérieures ont été principalement ciblées sur le segment de marché mobile et embarqué.
À l'origine, de simples processeurs RISC de performances à peu près équivalentes pouvaient être conçus par des équipes d'ingénierie 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 ont des unités d'envoi d'instructions dans le désordre multi-issues très complexes conçues par de grandes équipes d'ingénierie, et les cœurs x86 peuvent avoir quelque chose comme un cœur RISC alimenté par une unité de traduction d'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 fait probablement plus de frais de licence à partir des applications intégrées qui ont tendance à être beaucoup plus limitées en termes de puissance et de coût. Et Intel doit maintenir un avantage de performance dans les PC et les serveurs pour leurs marges bénéficiaires. Ainsi, vous voyez différentes optimisations de mise en œuvre.)