L'architecture x86 est-elle spécialement conçue pour fonctionner avec un clavier alors que l'ARM s'attend à être mobile ? Quelles sont les principales différences entre les deux ?
ARMv8-A possède une architecture 64 bits appelée AArch64.
L'architecture x86 est-elle spécialement conçue pour fonctionner avec un clavier alors que l'ARM s'attend à être mobile ? Quelles sont les principales différences entre les deux ?
ARM est un RISC (Reduced Instruction Set Computing), tandis que le x86 est une architecture de type CISC (Complex Instruction Set Computing) un.
La principale différence entre ces deux systèmes est que les instructions ARM ne fonctionnent que sur des registres, avec quelques instructions pour charger et stocker des données depuis/vers la mémoire, tandis que le x86 peut utiliser des opérandes de mémoire ou de registre avec des instructions ALU, ce qui permet parfois d'effectuer le même travail en moins d'instructions. Parfois plus, car l'ARM a ses propres astuces utiles, comme le chargement d'une paire de registres en une seule instruction, ou l'utilisation d'un registre décalé dans le cadre d'une autre opération. Jusqu'à ARMv8 / AArch64, ARM était une architecture 32 bits native, favorisant les opérations sur quatre octets par rapport aux autres.
L'architecture ARM est donc plus simple, ce qui permet d'obtenir une petite surface de silicium et de nombreuses fonctions d'économie d'énergie, tandis que l'architecture x86 devient une bête de somme en termes de consommation d'énergie et de production.
Pour répondre à votre question " L'architecture x86 est-elle spécialement conçue pour fonctionner avec un clavier alors que l'ARM s'attend à être mobile ? ". x86 n'est pas spécialement conçu pour fonctionner avec un clavier tout comme ARM n'est pas conçu spécifiquement pour les mobiles. Cependant, toujours en raison des choix architecturaux fondamentaux, x86 dispose également d'instructions permettant de travailler directement avec un espace d'adressage d'E/S distinct, ce qui n'est pas le cas de ARM. Au lieu de cela, ARM utilise l'IO mappée en mémoire pour tout, y compris la lecture/écriture de l'espace IO PCI. (Ce qui est rarement nécessaire avec les périphériques modernes car c'est lent sur x86. Par exemple, les contrôleurs USB modernes, l'accès aux périphériques connectés à l'USB est aussi efficace que le contrôleur USB le permet).
Si vous avez besoin d'un document à citer, voici ce qu'il faut faire Guide du programmeur de la série Cortex-A (4.0) explique les différences entre les architectures RISC et CISC :
Un processeur ARM est un ordinateur à jeu d'instructions réduit (RISC). (RISC).
Les processeurs CISC (Complex Instruction Set Computer), tels que le x86, possèdent un riche jeu d'instructions capable de faire des choses complexes avec une seule instruction. Ces processeurs ont souvent une quantité importante de logique interne qui décode les instructions de la machine en séquences d'opérations internes (microcode).
Architectures RISC, dans En revanche, elles ont un plus petit nombre d'instructions à usage plus général, qui pourraient être exécutées avec beaucoup moins de transistors, ce qui rendrait le silicium moins cher et plus économe en énergie. Comme les autres architectures RISC les noyaux ARM disposent d'un grand nombre de registres à usage et de nombreuses instructions sont exécutées en un seul cycle. Il possède modes d'adressage simples, où toutes les adresses de chargement/stockage peuvent être peuvent être déterminées à partir du contenu des registres et des champs d'instruction.
La société ARM fournit également un document intitulé Article sur le développement d'architectures, de processeurs et de dispositifs décrivant comment ces termes s'appliquent à leur entreprise.
Un exemple comparant l'architecture des jeux d'instructions :
Par exemple, si vous avez besoin d'une sorte de bloc de comparaison de mémoire bytewise dans votre application (généré par le compilateur, en sautant les détails), voici à quoi cela pourrait ressembler sur x86, si l'on optimise la taille du code plutôt que la vitesse. ( rep movsb
/ rep stosb
sont assez rapides sur les CPU modernes, les instructions de comparaison conditionnelle-rep ne le sont pas).
repe cmpsb /* repeat while equal compare string bytewise */
alors qu'en ARM, la forme la plus courte pourrait ressembler (sans contrôle d'erreur ni optimisation pour la comparaison de plusieurs octets à la fois, 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 */
ce qui devrait vous donner une idée de la différence de complexité entre les jeux d'instructions RISC et CISC. Il est intéressant de noter que le x86 n'a pas de mode d'adressage write-back (qui charge et incrémente le pointeur). sauf via ses instructions "string" comme lodsd
.
Bien que le x86 possède des instructions très puissantes, le bras peut toujours le battre dans un combat (si les deux ont la même vitesse d'horloge). Ceci est en partie dû au fait que l'arm a un bon ensemble de registres, alors que le x86 passe la moitié de son temps à déplacer des données dans et hors de son ensemble limité de registres (ceci est moins vrai pour le x86-64, car il a plus de registres). Et en partie parce que la simplicité de l'Arm laisse de la place pour un plus grand cache, et a toutes les instructions conditionnelles (ce qui rend les ratés du cache moins nombreux). Et l'instruction de déplacement multiple de l'Arm (la seule instruction non RISC), lui permet de déplacer les données rapidement.
Je pouvais écrire du code ARM plus rapidement, bien que plus gros, en utilisant plus de registres. Si je regarde cette mise en œuvre, le x86 prend 5+9×N horloges, l'ARM prend 4×N horloges (les deux chiffres sont pour aucun manque de cache). Le x86 obtient de meilleurs résultats pour les octets d'instruction sur cet exemple : x86 = 2 octets, ARM = 16 octets. L'ARM obtient de bien meilleurs résultats sur cette métrique dans des tests plus réalistes, par exemple, à la sortie de la boucle, r2 aura des informations sur l'égalité des chaînes de caractères et sur leur taille, tout comme les codes de condition. L'ARM peut exécuter d'autres instructions avant de vérifier les codes de condition. Le bras n'est pas obligé de bifurquer lors de la vérification des codes de condition.
Ni l'un ni l'autre n'a de spécificité pour les claviers ou les mobiles, si ce n'est que pendant des années, ARM a eu un avantage assez substantiel en termes de consommation d'énergie, ce qui l'a rendu attrayant pour toutes sortes d'appareils fonctionnant sur batterie.
En ce qui concerne les différences réelles : ARM a plus de registres, a supporté 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 "trucs", si vous préférez) pour économiser de l'énergie presque partout où il le pouvait.
Il y a aussi une différence considérable dans la façon dont les deux codent les instructions. 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 est plutôt un cauchemar complet).
L'ARM dispose de deux modes d'encodage d'instructions différents : ARM et THUMB. En mode ARM, vous avez accès à toutes les instructions, et le codage est extrêmement simple et rapide à décoder. Malheureusement, le code en mode ARM a tendance à être assez volumineux, il est donc assez courant qu'un programme occupe environ deux fois plus de mémoire que le code Intel. Le mode Thumb tente d'atténuer ce phénomène. Il utilise toujours un codage d'instructions assez régulier, mais réduit la plupart des instructions de 32 bits à 16 bits, notamment en réduisant le nombre de registres, en éliminant la prédication de la plupart des instructions et en réduisant l'étendue des branches. Au moins dans mon expérience, cela ne donne toujours pas de résultats satisfaisants. tout à fait Le code x86 n'est pas aussi dense qu'il peut l'être, mais il en est assez proche et le décodage reste assez simple et direct. Une densité de code plus faible 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.
À 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 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 visent quelques watts tout au plus. Ils semblent s'en sortir plutôt bien, bien que leur approche soit sensiblement différente de celle d'ARM, mettant l'accent sur la technologie de fabrication là où ARM a surtout mis l'accent sur la micro-architecture (ce qui n'est 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 électrique. En tout cas, la consommation d'énergie fait référence à l'utilisation de l'énergie sur une base (plus ou moins) instantanée. La consommation d'énergie, quant à elle, est normalisée en fonction de la vitesse. Ainsi, si (par exemple) le CPU A consomme 1 watt pendant 2 secondes pour effectuer un travail et que le CPU B consomme 2 watts pendant 1 seconde pour effectuer le même travail, les deux CPU consomment la même quantité totale d'énergie (deux watt secondes) pour effectuer ce travail - mais avec le CPU B, vous obtenez des résultats deux fois plus rapidement.
Les processeurs ARM ont tendance à être très performants en termes de consommation d'énergie. Ainsi, si vous avez besoin de quelque chose qui nécessite la "présence" d'un processeur presque constamment, mais qui ne fait pas vraiment beaucoup de travail, ils peuvent fonctionner assez bien. Par exemple, si vous faites de la vidéoconférence, vous recueillez quelques millisecondes de données, vous les compressez, vous les envoyez, vous recevez des données des autres, vous les décompressez, vous les lisez et vous recommencez. Même un processeur très rapide ne peut pas passer beaucoup de temps à dormir, donc pour des tâches comme celle-ci, ARM s'en sort très bien.
Les processeurs d'Intel (en particulier leurs processeurs Atom, qui sont en fait destinés aux applications à faible consommation) sont extrêmement compétitifs en termes de consommation d'énergie. Lorsqu'ils tournent presque à plein régime, ils consomment plus d'énergie que la plupart des processeurs ARM, mais ils terminent aussi leur travail rapidement, ce qui leur permet de se remettre en veille plus tôt. Par conséquent, ils peuvent combiner une bonne autonomie de batterie avec de bonnes performances.
Ainsi, lorsque vous comparez les deux, vous devez faire attention à ce que vous mesurez, afin d'être sûr que cela reflète ce qui vous tient vraiment à cœur. L'ARM est très performant en matière de consommation d'énergie, mais selon la situation, vous pouvez facilement vous préoccuper davantage de la consommation d'énergie que de la consommation instantanée.
C'est pourquoi ? RISC a besoin de plus de RAM, alors que CISC met l'accent sur la réduction de la taille du code et utilise globalement moins de RAM que RISC.
Le mode Pouce (longueur variable permettant des encodages courts) n'est pas un mode d'encodage. différence ; c'est toujours ainsi que fonctionne le x86 (mais plus encore, avec une longueur d'instruction variant de 1 à 15 octets, et beaucoup plus difficile à décoder que le Thumb2). Le mode ARM (codage à largeur fixe avec instructions non destructives à 3 opérandes) est la différence avec le x86 !
Avoir un processeur beaucoup plus rapide n'est pas une grande aide. - La vidéoconférence est peut-être un meilleur exemple : une faible latence signifie que vous ne pouvez pas simplement faire une rafale de décodage dans un tampon de taille décente et retourner dans un état de sommeil profond ou moyen. La "course au sommeil" est un concept clé en matière de consommation d'énergie pour une quantité fixe de calculs, étant donné que les CPU modernes peuvent économiser beaucoup d'énergie lorsqu'ils sont complètement inactifs (horloge arrêtée, ou même mise hors tension de certaines parties du cœur). Ou dans les sleeps plus profonds, également les caches après write-back). ... et c'est le point que vous faites dans le paragraphe suivant, bien sûr. >.<
Supplémentaire à Jerry Coffin's premier paragraphe. C'est-à-dire que la conception ARM donne une consommation d'énergie plus faible.
L'entreprise ARM
ne concède de licence que pour la technologie du processeur. 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 vendeurs de puces d'adapter le reste de la puce à une application particulière. Cela présente des avantages supplémentaires,
ARM
soutient les fournisseurs de SOC avec AMBA Ce système permet aux concepteurs de SOC d'acheter des modules tiers prêts à l'emploi, tels qu'un contrôleur Ethernet, un contrôleur de mémoire et un contrôleur d'interruption. D'autres plates-formes CPU supportent cette fonctionnalité, comme MIPS mais le MIPS n'est pas aussi sensible à la consommation d'énergie.
Tous ces éléments sont bénéfiques pour une conception de type portatif/à piles. Certaines sont tout simplement bonnes. De même, ARM
a un passé d'appareils à piles ; Apple Newton , Organisateurs Psion . Le site Infra-structure du logiciel PDA a été mis à profit par certaines entreprises pour créer téléphone intelligent dispositifs de type. Cependant, ceux qui ont réinventé l'interface graphique pour l'utiliser avec un appareil de type téléphone intelligent .
La montée en puissance de Open source
ensembles d'outils et operating systems
a également facilité les différents SOC
puces. Une organisation fermée aurait des difficultés à 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 la technologie ARM. Linux y FreeBSD, Mach et NetBSD Les os. Open Source
aide SOC
Les vendeurs fournissent un support logiciel pour leurs jeux de puces.
J'espère, pourquoi x86 est utilisé pour le clavier est évidente. Elle dispose du logiciel et, plus important encore, de personnes formées à l'utilisation de ce logiciel. Netwinder est un ARM
qui a été conçu à l'origine pour le clavier . De plus, les fabricants s'intéressent actuellement à l'ARM64 pour le marché des serveurs. L'alimentation et la chaleur sont des préoccupations dans les centres de données fonctionnant 24 heures sur 24 et 7 jours sur 7.
Je dirais donc que le écosystème qui se développe autour de ces puces est aussi important que des caractéristiques comme la faible consommation d'énergie. ARM
s'efforce depuis un certain temps (entre le milieu et la fin des années 1980) de mettre au point des systèmes de calcul à faible consommation d'énergie et à haute performance, et de nombreuses personnes sont à bord.
Note1 : Les puces multiples ont besoin de pilotes de bus pour communiquer entre elles à des tensions et des pilotages connus. De même, les puces séparées ont généralement besoin de condensateurs de support et d'autres composants d'alimentation qui peuvent être partagés dans un système de gestion de l'alimentation. SOC système.
L'ARM est comme une voiture de sport italienne :
Le x86 est comme un muscle car américain :
En résumé : le x86 est basé sur un design de 1974 et est bon en ligne droite (mais consomme beaucoup de carburant). L'arm consomme peu de carburant, ne ralentit pas dans les virages (branches).
Métaphore terminée, voici quelques différences réelles.
L'architecture ARM a été conçue à l'origine pour les ordinateurs personnels Acorn (Voir Archimède à gland vers 1987, et RiscPC ), qui étaient tout autant des ordinateurs personnels à clavier que des modèles IBM PC à base de x86. Ce n'est que plus tard que les implémentations ARM ont été principalement destinées au segment de marché mobile et embarqué.
À l'origine, de simples unités centrales RISC de performances à peu près équivalentes pouvaient être conçues par des équipes d'ingénieurs beaucoup plus petites (cf. Berkeley RISC ) que ceux qui travaillent au développement du x86 chez Intel.
Mais, de nos jours, les puces ARM les plus rapides sont dotées d'unités de répartition des instructions hors ordre très complexes, conçues par de grandes équipes d'ingénieurs, et les cœurs x86 peuvent avoir quelque chose comme un cœur RISC alimenté par une unité de traduction des instructions.
Ainsi, toute différence actuelle entre les deux architectures est davantage liée aux besoins spécifiques du marché des niches de produits que les équipes de développement ciblent. (Opinion aléatoire : ARM gagne probablement plus en droits de licence grâce aux applications embarquées qui ont tendance à être beaucoup plus limitées en termes de puissance et de coûts. Et Intel a besoin de maintenir un avantage de performance dans les PC et les serveurs pour ses marges de profit. C'est pourquoi vous voyez des optimisations d'implémentation différentes).
Il existe encore des différences architecturales considérables. Cependant, Intel a fait un travail formidable et a investi beaucoup d'argent pour faire fonctionner très bien un processeur mal architecturé (on peut se demander ce qui aurait pu être fait si tous ces efforts avaient été consacrés à un processeur bien architecturé).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
39 votes
À moins que le x86 ne dispose d'un port ps/2 dont j'ignore l'existence, il n'est pas plus conçu pour les claviers qu'une paire de sous-vêtements sales :-)
7 votes
Je pense clavier fait référence au rôle typique d'un PC, par opposition au dispositif physique.
27 votes
Le x86 n'a pas été conçu ; il a évolué sur une île, avec un oiseau étrange qui mangeait tout ce qui essayait de prier sur lui. Il a maintenant l'air plus étrange qu'un ornithorynque à bec de canard, et ne ferait pas bon ménage avec un bateau rempli de nouveaux animaux.
6 votes
Richard - Malheureusement, il s'agit de la description la plus précise de l'architecture x86 que j'aie jamais vue. Cela en dit long sur l'industrie.
6 votes
@Leeor Désolé j'ai fait une petite erreur dans mon commentaire, j'ai dit que l'oiseau mangeait les prédateurs du x86, alors qu'il ne les a pas mangé, il s'est assis sur eux. Il est aussi à noter que les plumes douces de l'oiseau étaient très très très soignées.
1 votes
@richard Pouvez-vous expliquer votre analogie s'il vous plaît ? Je ne suis pas très versé dans les processeurs. Je suppose que votre première phrase dit quelque chose du genre "écraser la concurrence". Et la deuxième ligne concerne la façon dont le CPU a évolué ou progressé grossièrement, comme dans un tas de mises à jour non polies. Ma compréhension est-elle correcte ?
1 votes
Comment cette question peut-elle faire l'objet d'autant de votes ? Elle ne montre certainement pas un effort de recherche. Je pense que je devrais demander "Quelle est la différence entre C et Python ?". Ce sera une excellente question, c'est certain.
0 votes
Pensez à en regarder d'autres, comme le MIPS (utilisé dans les stations de travail graphiques en silicone et la Nintendo 64), le PowerPC (utilisé dans les MAC du milieu de l'ère, la Playstation, le 68k (premiers MAC, Amiga), le SPARC (Sun), l'Alpha (Dec), etc.
0 votes
Vote de clôture car trop large.
3 votes
La différence entre x86 et arm n'est pas cisc contre risc. Le x86 n'est pas un bon exemple de cisc, il y a de nombreux exemples de cisc, qui ont beaucoup en commun avec l'arm. Par exemple, le 680x0 : les deux ont des jeux d'instructions uniformes, les deux ont un espace d'adressage plat de 32 bits, les deux ont des registres multiples d'usage général (presque le 680x0, a deux types de registres : 8 données, 8 adresses), les deux ont un seul jeu d'instructions (en fait, l'arm en a au moins 3, mais pas pour des raisons de rétrocompatibilité).
0 votes
Este enlace contient toutes les informations pour ARM et x86. Il contient également des détails sur l'implémentation 64 bits des deux architectures.