Pourquoi quelqu'un voudrait-il de l'ICCA?


42

Dans notre exposé sur les systèmes informatiques, nous avons découvert le processeur MIPS. Il a été (re) développé au cours du mandat et a été en fait assez facile à comprendre. Il utilise une conception RISC , c’est-à-dire que ses commandes élémentaires sont régulièrement codées et qu’elles sont peu nombreuses afin de garder les fils simples.

Il a été mentionné que l' ICCA suit une philosophie différente. J'ai brièvement regardé le jeu d'instructions x86 et j'ai été choqué. Je ne peux pas imaginer comment quiconque voudrait construire un processeur utilisant un jeu de commandes aussi complexe!

Je suppose donc qu'il doit y avoir de bons arguments pour expliquer pourquoi une grande partie du marché des processeurs utilise les architectures CISC. Que sont-ils?


Réponses:


47

Il y a une tendance historique générale.

Auparavant, les souvenirs étaient petits et les programmes étaient donc forcément petits. En outre, les compilateurs n'étaient pas très intelligents et de nombreux programmes étant écrits en assembleur, il était donc considéré comme une bonne chose de pouvoir écrire un programme en utilisant peu d'instructions. Les pipelines d’instructions étaient simples et les processeurs saisissaient une instruction à la fois pour l’exécuter. La machinerie à l'intérieur du processeur était assez complexe de toute façon; Le décodage des instructions n’a pas été perçu comme un fardeau.

Dans les années 1970, les concepteurs de calculateurs et de compilateurs ont compris qu’avoir des instructions aussi complexes n’était pas aussi utile. Il était difficile de concevoir des processeurs dans lesquels ces instructions étaient vraiment efficaces, et il était difficile de concevoir des compilateurs qui tiraient réellement parti de ces instructions. La complexité de la zone de puce et du compilateur a été mieux dépensée dans des activités plus génériques telles que des registres plus généraux. L' article de Wikipedia sur RISC l' explique plus en détail.

MIPS est l’architecture RISC ultime, raison pour laquelle elle est enseignée si souvent.

La famille x86 est un peu différente. Il s’agissait à l’origine d’une architecture CISC destinée à des systèmes disposant de très peu de mémoire (pas de place pour de grosses instructions) et a subi de nombreuses versions successives. Le jeu d’instructions x86 d’aujourd’hui est non seulement compliqué parce qu’il s’agit d’un CISC, mais aussi parce qu’il s’agit en réalité d’un 8088 avec un 80386 avec un Pentium éventuellement avec un processeur x86_64.

Dans le monde actuel, RISC et le CDCI ne sont plus la distinction en noir et blanc comme ils auraient pu l'être une fois. La plupart des architectures de CPU ont évolué vers différentes nuances de gris.

Du côté de RISC, certaines variantes modernes de MIPS ont ajouté des instructions de multiplication et de division, avec un codage non uniforme. Les processeurs ARM sont devenus plus complexes: beaucoup d'entre eux ont un jeu d'instructions de 16 bits appelé Thumb en plus des instructions 32 bits «originales», sans parler de Jazelle pour exécuter des instructions JVM sur la CPU. Les processeurs ARM modernes disposent également d' instructions SIMD pour les applications multimédia: certaines instructions complexes sont payantes.

Du côté de l'ICCA, tous les processeurs récents sont dans une certaine mesure RISC à l'intérieur. Ils ont un microcode pour définir toutes ces instructions macro complexes. La complexité même du processeur fait que la conception de chaque modèle prend plusieurs années, même avec une conception RISC, avec un grand nombre de composants, avec une exécution en pipeline et prédictive, etc.

Alors, pourquoi les processeurs les plus rapides restent-ils à l'extérieur du CISC? Une partie de celle-ci, dans le cas de la famille x86 (32 bits et 64 bits), est la compatibilité historique. Mais ce n'est pas tout. Au début des années 2000, Intel a essayé de pousser l' architecture Itanium . L'Itanium est un cas extrême d'instructions complexes (pas vraiment CISC, cependant: sa conception a été baptisée EPIC ). Cela élimine même l’ancienne idée d’exécuter des instructions en séquence: toutes les instructions sont exécutées en parallèle jusqu’à la prochaine barrière. Une des raisons pour lesquelles Itanium n’a pas choisi, c’est que personne, que ce soit chez Intel ou ailleurs, n’a pu écrire un compilateur décent pour cela. Maintenant, un bon vieux processeur essentiellement séquentiel comme x86_64, c'est quelque chose que nous comprenons.


4
Une des raisons est que CISC est sorti de mémoires limitées (rendant les instructions compactes indispensables), les processeurs actuels sont beaucoup plus rapides que la mémoire ( une extraction de mémoire prend suffisamment de temps pour exécuter des centaines d'instructions, et l'écart est de plus en plus grand), Les instructions compactes sont indispensables pour utiliser efficacement le cache.
vonbrand

Oh, et l’un des éléments moteurs de RISC a été l’analyse des instructions exécutées sur les machines CISC du jour. Ils ont abouti à des instructions extrêmement simples, de sorte que l’effort supplémentaire de décodage d’instructions complexes (circuit et dans le temps) était pour l’essentiel perdu.
vonbrand

2
@vonbrand: Sur les processeurs contenant des instructions telles que dec [address], ils ont tendance à être assez utilisés et offrent un avantage significatif par rapport ldr r0,[address] / sub r0,#1 / str r0,[address] aux architectures capables de les implémenter efficacement . L’émergence de RISC provient du fait qu’une machine non pipelinée peut implémenter une séquence decdeux fois plus rapide qu’une load/sub/storeséquence, elle permet d’améliorer davantage la vitesse de cette dernière séquence que celle de lire, de modifier, d’écrire. instruction.
Supercat

@vonbrand a raison, en ce sens que la RAM n'est pas aussi précieuse qu'elle l'était, mais que le cache l'est. Huffman codant le jeu d'instructions (ce qui est un peu ce que l'ICCS est aujourd'hui) est toujours utile dans ce sens.
Pseudonyme le

Eh bien, c'est quelque chose que je n'ai jamais su à propos d'Itanium! Merci. (J'aimerais aussi que les processeurs MIPS haut de gamme soient encore créés. Ils semblent fascinants à programmer. Je sais que les conceptions existent, mais personne ne les a
conçues

15

Le jeu d'instructions x86 est un cas particulier. Je pense que le 68K de Motorola et le VAX de DEC sont des exemples un peu meilleurs de l'ICCA. À l’époque de nombreux codes en langage assembleur, les gens pensaient qu’une ISA très régulière et très inclusive était préférable: je crois qu’ils ont appelé la différence entre le code d’assemblage et la façon dont les gens pensaient le « fossé sémantique ». Théoriquement, vous vouliez un jeu d'instructions correspondant à votre façon de penser.

L’autre grand moteur de conception de l’ICCA semble être «l’orthogonalité»: chaque instruction fonctionnerait avec tous les modes d’adressage (registre, adresse absolue, décalage relatif, etc.). Vous pouvez voir le fantôme de l'orthogonalité apparaître dans la conception de l'API dans l'environnement de calcul distribué (DCE) et dans CORBA. Cette idée ne se limite pas à la conception de jeux d'instructions.


5
C'est drôle comme l'orthogonalité en pratique se traduit par l'union de toutes les options .
Dave Clarke

Cette ortogonalité peut certes être poussée trop loin, mais c’est une aide utile à la mémoire. J'aimais le Motorola 6502, mais il avait toutes sortes de frustrations: "cette instruction prend X, ce même semblable, seul Y, le troisième aucun", des restrictions sur l'utilisation du registre. Rencontrer le VAX libérait ...
vonbrand

@vonbrand: Le 6502 n'était pas Motorola, mais bien MOS Technologies, qui l'avait créé en tant que concurrent du Motorola 6800. Je me suis parfois demandé si le 6502 aurait été plus simple ou plus compliqué si toutes les instructions non liées à une branche Les opérandes utilisés utilisaient le même codage (24 instructions multipliées par huit, le mode d'adressage pouvait être décodé assez facilement). Je trouve particulièrement curieux que CMP fonctionne avec huit modes d’adressage et DEC avec seulement quatre, mais (sur les versions NMOS du 6502), si un "OU" est associé aux opcodes de ces instructions, non seulement un "DCP" sera obtenu. instruction ...
Supercat

... qui se comporte comme DEC, mais compare ensuite le résultat de la décrémentation à la valeur de l'accumulateur et définit les indicateurs de manière appropriée, mais DCP gérera correctement les modes d'adressage non disponibles avec DEC. Bizarre que le matériel puisse gérer correctement (ZP), l'adressage en Y avec une instruction d'écriture lecture-modification, mais le décodeur d'instruction ne permet pas à ce mode de fonctionner dans les instructions documentées lecture-modification-écriture.
Supercat

1
D'après ce que j'ai lu, le "R" dans RISC ne signifie pas que le processeur a un jeu d'instructions réduit, mais plutôt qu'il a un jeu d'instructions réduites; le plus gros problème est la nécessité de ne pas combiner les charges et les mémoires en mémoire avec d’autres opérations.
Supercat

7

L’une des raisons de l’ICCA était d’avoir un encodage dense pour les instructions (mémoire coûteuse). Toute l’idée de RISC était d’accélérer le processeur en récupérant tout le temps les mêmes instructions de taille (pas de pas complexe et lent, "comprendre la taille des instructions"), de leur demander de faire des choses simples (il est donc rapide de savoir quoi faire). . La mémoire était bon marché. Cette zone de circuit libérée sur la CPU pour d'autres tâches (plus de registres, plus d'unités de traitement afin que plusieurs instructions puissent être exécutées en parallèle si elles étaient indépendantes). Comme le processeur était beaucoup plus lent que la RAM, cela a porté ses fruits. Mais les processeurs sont devenus plus rapides (et plus en parallèle, et ...) alors que la RAM n'a pas été plus rapide (du moins pas au même rythme que la consommation de données du processeur en raison du parallélisme accru). Rencontrez la mémoire cache, rapide comme le CPU, mais petite. Alors maintenant, la mémoire est à nouveau un atout, non pas pour des raisons de coût, mais de rapidité. Période de reprise de l'ICCA. Pendant ce temps, les processeurs sont devenus plus complexes, au point que le microprocesseur actuel accomplit une grande partie de ce qu'un compilateur RISC a fait: décomposer les opérations en éléments élémentaires, réorganiser les instructions RISCy internes afin qu'elles puissent être exécutées simultanément si possible. RISC a été critiqué sous le nom de "Soulager des tâches importantes pour le compilateur" pour une raison ...


1
La capacité de mémoire est toujours importante dans certains systèmes embarqués, en particulier les microcontrôleurs où toute la mémoire / stockage est sur la puce du processeur. Cela a probablement été un facteur important pour l’introduction par Renesas d’un nouvel ISA-RX-- du CDCI, c’est-à-dire non seulement la densité de code pour les performances, mais (principalement?) Pour un stockage réduit.
Paul A. Clayton

D'après ce que j'ai compris, le "R" de RISC ne faisait pas référence à l'ensemble d'instructions réduit, mais plutôt à la réduction des instructions elles-mêmes. Plus particulièrement, dans un processeur CISC tel que le 8086, on peut ajouter une valeur directement à la mémoire, mais dans un RISC, les opérations de chargement, d’ajout et de stockage doivent être exécutées séparément. Dans de nombreux cas, les machines CISC ont des jeux d’instructions de longueur variable et des codages d’instruction plus denses que les machines RISC, mais les processeurs ARM plus récents utilisent des instructions de longueur variable tout en séparant les charges et les magasins.
Supercat

@ PaulA.Clayton C'est exact, mais je vais être pédant et vous indiquer que vous pouvez interfacer avec de la RAM externe (SRAM ou DDR via un contrôleur) et étendre votre capacité de mémoire au prix d'une complexité accrue et de fonctionnalités réduites.
Wyatt8740

3

Le véritable avantage de CISC réside dans la réduction de la mémoire et de la pression de la mémoire cache, ce qui en fait un avantage supplémentaire pour les applications exigeantes à hautes performances, car la bande passante mémoire constitue un goulot d'étranglement majeur dans ces systèmes. Avec une mémoire cache de taille égale, les processeurs CISC peuvent décrire plus d'informations que RISC. De plus, étant donné que les instructions du CDCI impliquent plusieurs micro-opérations, des améliorations architecturales sont peut-être possibles, offrant ainsi le chemin d’exécution le plus rapide possible pour ces instructions. En résumé, les processeurs CISC utilisent plus efficacement la bande passante mémoire, ce qui se traduit souvent par des gains de performances pour les applications gourmandes en mémoire.

Par exemple, pour exécuter R1 = R2 + R3 + R4 + R5 + R6et placer le résultat sur une pile, supposons que le code RISC soit écrit ainsi:

ADD  R1, R2, R3 (4-byte)
ADD  R1, R4, R5 (4-byte)
ADD  R1, R6, R0 (4-byte, R0=0)
PUSH R1         (4-byte)

et en tant que tel nécessite 16 octets d'espace.

En venant à l'ICCA, en raison de la possibilité de différents styles d'encodage, la même information peut être représentée comme suit ...

ADD R1, R2, R3 (4-byte)
ADD R1, R4, R5 (4-byte)
ADD R1, R6     (2-byte)
PUSH R1        (1-byte) 

qui ne prend que 12 octets de mémoire. Ainsi, l'utilisation de la mémoire est améliorée, ce qui permet au processeur de voir plus d'instructions et de réduire ainsi les cycles d'inactivité.


1
Ceci fournit une perspective utile mais semble également éventuellement légèrement sur-déclaré dans son utilisation des adjectifs. "gains de performances énormes" - voudriez-vous quantifier cela? Pouvez-vous justifier la partie "énorme"? De même pour "beaucoup plus d'informations".
DW

Je crois que Linus Torvalds a déclaré une déclaration similaire. Adjectifs enlevés quand même.
Revanth Kamaraj

Ce n'est tout simplement pas vrai. CISC ne réduit pas la bande passante mémoire. Enregistrer la pression peut-être.
Jeff

Jeff, reportez-vous à l'architecture ARM soc de Steve Furber.
Revanth Kamaraj

Page 27 2ème édition Architecture du système sur puce ARM.
Revanth Kamaraj

2

Un aspect important que personne n’a évoqué est que presque tous les processeurs CISC sont des architectures à microcodage. Un microséquenceur et un magasin de contrôle consomment beaucoup moins de biens immobiliers qu'un contrôleur câblé, et le jeu d'instructions peut être modifié sans modifier le matériel.

Les microprocesseurs étaient des dispositifs de nouveauté lorsque je suis entré sur le terrain. Dans les années soixante-dix et au début des années quatre-vingt, une pratique très courante consistait à assembler un processeur à l'aide d'ALU à tranches de bits, d'une unité de contrôle à base de microséquenceur et d'un magasin de contrôle dans lequel le jeu d'instructions microcodé était chargé ou soufflé. Ces ordinateurs étaient basés sur la logique à transistors-transistors (TTL) série 7400. L’ALU 78181 4 bits a été utilisée pour construire de nombreux processeurs, notamment les ordinateurs DEC PDP-11 et les anciens ordinateurs VAX 11, le Data General Nova, le Xerox Alto et l’ordinateur de bureau Wang.


"Un aspect important que personne n'a encore mentionné est que presque tous les processeurs CISC sont des architectures à microcodage." Oui et non. Pour la planification des instructions, les CPU CISC modernes n’utilisent généralement le contrôle microcodé que pour les instructions CISC traditionnelles (par exemple, les instructions transcendantes x87). D'un autre côté, même les puces RISC utilisent parfois le contrôle par microcode comme alternative aux machines à états pour certains sous-systèmes (par exemple, pour contrôler une unité spécifique). En effet, la ligne entre le microcode et une table d'état peut être floue.
Pseudonyme le

2

Vous aurez du mal à trouver un ordinateur de bureau n’utilisant pas de processeur compatible x86. Ce jeu d'instructions a battu MIPS, Sparc, Alpha et Titanic (j'ai peut-être mal orthographié ce nom). MIPS, par contre, existe à peine aujourd'hui. Donc, peu importe ce que vous pensez aujourd'hui, des personnes très intelligentes pensaient que le jeu d'instructions x86 était une très bonne idée et elles en ont gagné beaucoup d'argent.

Les ordinateurs ont démarré en tant que RISC car un jeu d'instructions complexe dépassait les capacités des développeurs. Si vous souhaitez voir un jeu d'instructions RISC, consultez les jeux d'instructions CDC 6400-6600 et CDC Cyber ​​170-175. C'est bon RISC. Il y a environ 10 ans, j'ai demandé à certains concepteurs de puces combien d'espace il leur faudrait (dans le coin d'une puce GPU avancée raisonnable). Ils m'ont parlé d'environ 1 mm2, y compris la mémoire RAM de la machine, qui occuperait 99% de cet espace.

Quand les gens pouvaient construire des machines CISC, ils avaient un avantage. Rappelez-vous que x86 est sorti bien avant MIPS, 1978 vs. 1985. À cette époque, vous aviez besoin de cycles de processeur pour lire les instructions, les décoder, les exécuter. MIPS en 1978 aurait pris quatre cycles par instruction et par opération. Si vous prenez une instruction x86 du type "ajouter un registre à la mémoire", cela prendrait peut-être 7 cycles pour l'instruction, mais en effectuant 3 opérations. C'était un avantage majeur. Et plus vous avez d'instructions différentes et plus chaque instruction est puissante, plus l'avantage est grand.

Et lorsque le jeu d'instructions x86 64 bits avec ses codes de préfixe cauchemardesques a été développé, la complexité du jeu d'instructions importait peu. De nos jours, l'ICCA est seulement traduit en RISC, et l'ensemble de l'activité de traduction représente peut-être un pour cent de la puce.


1

Cette question a beaucoup à faire avec de très récentes tendances dans le calcul qui favorisent un transfert massif vers le mobile et la tablette informatique, favorisant ainsi RISC CPUs, et a pris Intel (Les mondes probablement le plus grand CISC de Purveyor) un désavantage dans un soi-disant « inflexion point " exactement comme le genre Grove a attiré l'attention et averti de. La nouvelle est que CISC semble commencer à fondre sous l’ impact massif du changement de paradigme / changement de jeu de l’informatique mobile en raison de sa consommation d’énergie apparemment intrinsèquement élevée.

L'ICCA sera probablement toujours présent sur le bureau, mais le mobile est largement considéré comme le nouvel avenir de l'informatique. De nombreux pays en développement (avec une importante population utilisatrice d’ordinateur) vont en grande partie ignorer la phase de bureau. Voir, par exemple, Rise and Fall of computer desktop

Une excellente étude de cas de cette question concerne Mike Bell qui occupe un nouveau poste pour Intel et tente de mieux positionner Intel sur le marché de la téléphonie mobile via le processeur Atom via un projet / une initiative de type "skunkworks", avec de très solides dirigeants soutien. Le marché de la téléphonie mobile est étroitement lié à l’architecture RISC, et principalement aux processeurs ARM, en raison principalement de leur efficacité énergétique élevée (consommation d’énergie), un nouveau critère clé pour l’informatique auquel la question ne donne aucune réponse. Voici deux articles récents allant dans ce sens, qui révèlent une grande partie de la pensée interne de l'entreprise (et des difficultés qui en découlent!) Sur le sujet:


Addenda. destiné à citer un article sur les points d'inflexion basés sur le commerce , qui sont vaguement liés au concept mathématique. voir par exemple Andy Grove et les mystères du point d'inflexion
vzn

0

Un facteur non mentionné dans les autres réponses est économique. C'est aussi à propos d'Intel. L'architecture du CDCI est largement représentée par les familles x86 et x64. Celles-ci proviennent toutes de l’humble 8088 utilisé dans le PC IBM original. La domination initiale de cette série d’ordinateurs sur le marché signifiait qu’Intel disposait d’une source de revenus solide pour la recherche et le développement. Couplé au fait qu'Intel a été capable de freiner la concurrence en annulant / annulant ses deuxièmes contrats source, les prix des processeurs pourraient atteindre des niveaux extrêmes garantissant des marges bénéficiaires brutes très élevées.

Ainsi, alors que les autres fabricants de processeurs ont eu du mal à suivre le rythme, Intel a pu injecter des milliards de dollars dans le développement de nouveaux produits plus rapides. La concurrence RISC ne pouvait pas dépenser autant d’argent. De nombreux processeurs RISC ont quitté le marché. Certains étaient:

DEC Alpha, Fairchild Clipper, AMD 29000, SPARC, MIPS, POWER (pour utilisation sur PC), Hitachi SuperH ...

Je me souviens que des experts de cette époque avaient annoncé que la guerre entre le RISC et l'ICCA était terminée et que l'ICCA avait gagné. Ce n'était pas le cas. Il a juste dépassé tout le monde.

Cette dynamique peut-elle jamais changer? C'est déjà. Aucun avantage économique n'est absolu.

Le seul talon d'Achille du x86 est son appétit vorace pour le pouvoir. Cela a permis à un concurrent plus petit et plus agile (ARM) de prospérer sur des marchés (comme les téléphones / tablettes / etc.) où l’économie d’énergie importait.

Un membre de l’équipe ARM a réalisé une excellente vidéo à ce sujet: Processeur ARM - Semer les graines de la réussite - Computerphile vers 8 h 30.

Le deuxième problème de x86 est le succès de la stratégie d’Intel. Ils ont réussi à éliminer presque toute la concurrence. Ils ont ralenti. Depuis de nombreuses années, les nouveaux processeurs Intel n’apportent que de très modestes améliorations. Pire encore, les marges super riches sont un régime difficile à abandonner pour toute entreprise.

Aujourd'hui, les systèmes sur puce (SOC) et les puces x64 concurrentes d'AMD font de nouveau du marché des processeurs un endroit intéressant. (A MON HUMBLE AVIS)


0

Il y a plusieurs raisons pour lesquelles on choisirait de mettre en œuvre un CDIC. La principale raison est la compatibilité binaire avec un jeu d'instructions CISC existant. Bien que la technologie de traduction logicielle binaire ait été améliorée, la compatibilité matérielle présente certains avantages techniques (ainsi que l’inconvénient de réduire la mise en cache de la traduction) et l’avantage moins technique de paraître plus fiable.

La densité de code est peut-être la deuxième raison la plus importante pour choisir CISC. Renesas RX a été conçu comme un CDIC spécialement conçu pour la densité de code car il cible les microcontrôleurs dont la taille de la mémoire est un facteur de coût important. Les instructions de longueur variable, les instructions complexes (principalement plusieurs modes d'adressage), les opérandes implicites et le compte de registres inférieur sont tous denses en codes de densité.

Une raison historique (et à mon avis erronée) de choisir CISC était de réduire l'écart sémantique entre les programmeurs utilisant un langage de niveau supérieur et le processeur. Étant donné que les instructions complexes peuvent généralement être remplacées par une séquence d'instructions plus simples, la complexité d'un compilateur de langage de niveau supérieur pour un RISC n'a pas besoin d'être beaucoup plus complexe que pour un CISC correspondant à un langage. RISC évite les "conflits sémantiques" (où une instruction de processeur fonctionne plus ou moins bien qu'une déclaration de langage correspondante) et facilite l'optimisation de la réduction de la force et de la planification. (Voir "Quels sont les compromis entre les efforts de développement de compilateur liés à CISC par rapport à RISC?" Pour plus de détails.)

L'exécution d'une instruction peut entraîner des coûts fixes importants. Cela encourage l'utilisation d'instructions relativement complexes pour répartir ces frais généraux sur un travail plus réel; réduire le nombre d'instructions dynamiques peut améliorer les performances. Lorsque le coût de la logique et de la RAM était bien supérieur au coût de la ROM, l'incitation à utiliser des instructions complexes était importante, car une instruction était décodée par recherche de microcode.

Une raison d'utiliser l'historique de CISC, peut-être contredite par des preuves historiques, est que le microcode peut être optimisé pour chaque microarchitecture alors que les bibliothèques standard peuvent être lentes à exploiter les fonctionnalités d'une nouvelle implémentation. Le niveau d'optimisation des implémentations logicielles de memcopy par rapport à celui du microcode pour REP MOVSB ​​implique que les bibliothèques peuvent attirer davantage l'attention que le microcode. Cela peut provenir en partie du fournisseur de processeurs ciblant un plus grand nombre d’utilisateurs. Il peut donc être plus difficile de justifier un effort comparé à un logiciel open source ou à un logiciel interne où les intérêts localisés des développeurs ou des utilisateurs peuvent biaiser les efforts de mise en œuvre.

Le fait d’expédier une bibliothèque standard optimisée avec le processeur présente des avantages considérables. Le stockage et l'exécution d'une bibliothèque standard de plate-forme peuvent être considérablement optimisés par le code-logiciel logiciel-matériel. La distinction entre une instruction complexe et un appel de la couche d'abstraction de la plate-forme peut être subtile (ou inexistante). Une conception RISC pourrait utiliser les mêmes techniques de mise en œuvre pour traiter les appels PAL que le CISC pour les instructions complexes, y compris les opérations non fournies dans le jeu d'instructions générales avec du matériel spécialisé, la mise en cache et le décodage intelligents, et la spécification d'opérandes de registre (bien qu'un CISC utilisent souvent des registres dédiés similaires à un ABI par fonction). Le modèle mental associé à l'ICCA peut encourager de telles optimisations. En outre, les utilisateurs peuvent être moins offensés par l'inclusion forcée d'un "

Le décodage d'instructions relativement complexes peut entraîner moins de temps système (et peut-être plus de précision dans l'intention de discernement) que la technique comparable de reconnaissance d'idiome RISC, dans laquelle une séquence d'instructions est reconnue comme une unité sémantique. Cette différence de coût serait particulièrement perceptible dans une implémentation réduite, mais le temps système nécessaire pour utiliser cette information réduit l’importance des économies de décodage.

Des informations contextuelles supplémentaires peuvent faciliter l'optimisation du matériel. Par exemple, lors de l’incrémentation d’une valeur en mémoire, le matériel peut reconnaître que l’adresse de la mémoire est utilisée deux fois (pour le chargement et le stockage), offrant ainsi une possibilité de mémorisation de la manière mise en cache et de mise en cache de la traduction. Des instructions complexes peuvent fournir explicitement ces informations. Dans une instruction complexe, les valeurs intermédiaires ont une durée de vie explicite (celle de l'instruction); avec un registre RISC traditionnel, les valeurs doivent être explicitement remplacées pour indiquer la fin de la vie. (Remarque: un RISC peut spécifier un registre qui est toujours mis à zéro après chaque utilisation, fournissant ainsi un moyen de spécifier une valeur temporaire à usage unique. De telles instructions seraient modérément plus complexes.)

Si les détails de la mise en œuvre ne sont pas cachés derrière une couche d'abstraction, il devient plus difficile d'utiliser différentes microarchitectures à optimiser pour différents compromis. Exposer des détails microarchitecturaux en tant que garanties architecturales verrouille la microarchitecture dans la garantie de compatibilité. Bien que le logiciel PAL puisse être optimisé de la même manière que des instructions complexes, il nécessite un code-code matériel-logiciel. La séparation et la diversité organisationnelles rendent la codification plus difficile.

Des instructions complexes peuvent fournir un accès protégé à l'état privilégié. Par exemple, les instructions complexes sont souvent atomiques par rapport aux interruptions. Alors qu'un jeu d'instructions RISC pourrait fournir un mécanisme au niveau utilisateur pour suspendre temporairement les interruptions, il pourrait même s'agir de quelque chose comme une charge liée, de sorte que le logiciel tente explicitement l'opération s'il est interrompu, à condition que cela ne soit pas typique pour les RISC.

De même, une instruction complexe pourrait fournir un accès contrôlé et / ou une utilisation d'informations privilégiées. Étant donné que l'opération exécutée a une sémantique contrôlée, la violation de privilège réelle peut être évitée. Les alternatives orientées RISC incluent le code PAL (qui a généralement une surcharge importante) et un accès masqué aux registres de configuration (ou aux clichés instantanés de registres) ayant un état privilégié. Fournir une solution générale (RISC) est plus difficile que de fournir une solution à un ou plusieurs cas spéciaux (CDIC), mais il est plus puissant et moins vulnérable à l'accumulation de cas particuliers. Si on pense que les cas spéciaux importants sont peu nombreux, le CDIC peut être plus attrayant.

Des instructions complexes peuvent également masquer l'état d'un logiciel. Un avantage important de ce type serait la sauvegarde et la restauration du contexte. Avec des instructions qui sauvegardent et restaurent l’état, l’architecture doit seulement communiquer la taille du contexte au système d’exploitation, et non les mécanismes spécifiques de transfert d’état en mémoire. Cela permet aux applications s'exécutant sur un système d'exploitation existant d'utiliser des extensions ISA qui ajoutent un état. (Encore une fois, le logiciel PAL pourrait fournir les mêmes fonctionnalités.)


Une grande partie de la complexité de x86 provient de la compatibilité de nombreuses extensions. Avec des instructions complexes et moins orthogonales (utiles pour la densité de code), supprimez certains travaux inutiles, évitez les chaînes de dépendances inutiles (par exemple, un seul bit de retenue, un seul registre de valeur de décalage dynamique), en ajoutant des travaux être utilisé couramment et peut être optimisé dans le cadre d’une instruction complexe - l’une d’entre elles nécessiterait l’ajout d’une nouvelle instruction et rendrait l’ISA moins esthétique.

Dans de nombreux cas, un RISC ne rencontrerait pas de tels problèmes car les instructions sont hautement orthogonales et primitives. Dans certains cas, un RISC peut avoir besoin d'ajouter de nouvelles primitives, mais celles-ci seraient généralement applicables à plusieurs utilisations.

En outre, une fois que l'infrastructure est en place pour prendre en charge les instructions complexes, les obstacles sont réduits pour les instructions complexes supplémentaires. C'est-à-dire qu'une grande partie du coût des instructions complexes est non récurrente. Les ISA RISC sont fortement gênées par l’introduction des fonctionnalités de CISCy.

La fréquence d’extension de x86 peut également être attribuée en partie à sa popularité pour l’informatique grand public et le modèle de processeur du commerçant (qui augmentent également l’importance de la compatibilité binaire). Les ISA RISC ont souvent été liées à des fournisseurs de système, ce qui encourage une focalisation plus étroite sur les applications et le manque de concurrence pour la mise en œuvre d'une ISA RISC spécifique décourage quelque peu l'utilisation d'extensions de jeux d'instructions pour le marketing. La popularité réduit également le coût de développement de nouvelles extensions (les dépenses non récurrentes sont moins importantes lorsque le volume est élevé).

La philosophie de compatibilité x86 est probablement aussi axée sur l’extension des mécanismes existants plutôt que sur une rupture plus nette, ce qui signifie que les nouvelles fonctionnalités sont davantage influencées par les fonctionnalités existantes. Une fréquence d'extension plus élevée encourage également des modifications plus progressives, ce qui encourage les mécanismes de réutilisation, tendant à réduire l'orthogonalité.

Comparaison d'une présentation académique de MIPS classique (qui est un sous-ensemble des versions modernes de MIPS et exclut diverses extensions ISA facultatives) et de x86 moderne (qui retrace la compatibilité binaire jusqu'au code 8086 16 bits et la quasi-compatibilité au niveau de l'assemblage encore plus loin) avec tous ses bagages historiques ne présente pas le meilleur cas pour CISC, ni un cas réaliste pour RISC.


-1

Juste avant qu'il y ait des configurations de jeu d'instructions réduites, il y avait des configurations de jeu d'instructions. Ils ont leurs applications. en particulier dans les très grands transferts de blocs de mémoire avec des jeux de puces de grande capacité, qui ne nécessiteraient que 4 à 16 octets pour transférer une page vidéo entière, au lieu d'une longue boucle. cela change et RISC devient le statu quo alors que les jeux de puces sont de plus en plus sophistiqués, comme les incroyables GPU que l'on trouve dans les cartes vidéo haut de gamme.


-2

Le processeur de l'ICCA a plus d'avantages que RISC. Parce que CISC utilise moins de registres de matériel et de portes XNOR / XOR que RISC plusieurs fois !!!! Imaginez que les octets d’instruction dans le CDCI soient exécutés en séquence, il n’ya qu’une porte logique et un registre est utilisé. Si un milliard de transistors peut produire environ 300 millions de portes logiques, vous pouvez ainsi traiter 300 millions d'opérateurs ou de processus (SI, égaux, mathématiques, variables, adressage, etc.) et permettre à davantage de programmes de fonctionner dans le CDCI. Mais dans RISC, il faut des dizaines de fois de portes logiques pour exécuter un programme en conception pipeline. Donc, 300 millions x 50 fois (50 instructions) + compteurs 15000000000 bits !!! dans ce qu'on appelle RISC. CISC utilise plus de matériel pour réduire les logiciels algothrim qui ralentissent le cpu.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.