Introduction : L'héritage permanent de l'architecture du CDCI

L'architecture de l'ensemble d'instructions complexes (ICSC) a façonné la fondation de l'informatique moderne depuis plus de cinq décennies. Des ordinateurs centraux de taille de pièce des années 1970 aux appareils de poche d'aujourd'hui, les ensembles d'instructions du CISC ont constamment évolué pour répondre aux exigences de logiciels et de matériel de plus en plus complexes. Comprendre l'histoire et l'évolution du CISC est essentiel pour quiconque travaille dans l'architecture informatique, la programmation de systèmes ou la conception du matériel.

Le principe fondamental du CDCI est élégant : concevoir un processeur qui peut exécuter des opérations complexes et en plusieurs étapes avec des instructions uniques, réduisant ainsi l'écart sémantique entre les langages de programmation de haut niveau et le code machine. Cette approche promettait des compilateurs plus simples, des tailles de programmes plus petites et une utilisation plus efficace de la mémoire à un moment où la mémoire et le stockage étaient extrêmement coûteux.

Les origines du CDCI dans les années 1970: les cadres principaux et la naissance des instructions complexes

Les concepteurs d'ordinateurs ont cherché à maximiser le travail accompli par instruction, parce que chaque instruction est tirée de cycles de mémoire précieux. Le IBM System/360, introduit en 1964, est souvent cité comme le premier système commercial majeur qui incarne les principes du CISC. Son ensemble d'instructions était remarquablement riche pour son temps, soutenant de multiples modes d'adressage et une variété de types de données, des entiers aux nombres décimaux emballés. Le système/360 a démontré qu'un ensemble d'instructions simple et complet pouvait s'étendre à toute une famille de machines, des modèles à faible coût aux ordinateurs centraux à haute performance.

Le terme « ICSC » n'existait qu'à la fin des années 70, lorsque les chercheurs de l'IBM et de l'Université Stanford ont commencé à le comparer avec la philosophie émergente du RISC. Avant cela, tous les processeurs étaient simplement des « processeurs ». L'approche architecturale qui serait ensuite étiquetée CISC était motivée par plusieurs contraintes pratiques : bande passante de mémoire limitée, coût élevé des puces de mémoire, et le désir de rendre la programmation en langage de montage plus productive.

Au milieu des années 1970, des entreprises comme Digital Equipment Corporation (DEC) avec son VAX-11/780 et Intel avec son processeur 8086 poussaient plus loin les principes du CISC. L'architecture VAX, en particulier, est devenue un exemple de manuel de CVIC, avec plus de 300 instructions et 16 modes d'adressage. Le VAX pouvait exécuter des instructions comme (évaluation polynomiale) et (modifier et comparer la chaîne de caractères) dans le matériel, tâches que les architectures RISC auraient besoin de plusieurs instructions à exécuter.

Principales caractéristiques des premiers transformateurs du CDCI

  • Les puces du CDCI tôt contenaient souvent des centaines d'instructions distinctes, dont beaucoup effectuaient des opérations hautement spécialisées.
  • Longues d'instructions variables:[ Les instructions peuvent varier d'un octet à plusieurs dizaines d'octets, permettant un codage flexible mais compliquant le décodage.
  • Modes d'adressage multiples:[ Les processeurs ont pris en charge de nombreuses façons de spécifier les opérandes, y compris les modes de registre direct, de mémoire indirecte, indexé et de base-déplacement.
  • : La logique de contrôle a été mise en œuvre en utilisant le microcode, une couche d'instructions de bas niveau qui a traduit chaque instruction de machine en signaux de commande matérielle.
  • Opérations mémorielles :[ De nombreuses instructions du CDCI pourraient fonctionner directement sur des opérandes de mémoire sans exiger de registres pour le stockage intermédiaire.

Ces caractéristiques ont rendu les premiers processeurs du CDCI exceptionnellement flexibles pour les programmeurs et compilateurs. Cependant, la complexité du décodage des instructions de longueur variable et de l'exécution des opérations microcodées a fait que ces processeurs fonctionnent généralement à des vitesses d'horloge plus lentes et exigent plus de surface de silicium que des conceptions plus simples.

L'ascension du CISC : Intel 8086 et le x86 Legacy

L'événement le plus consécutif de l'histoire du CDCI a été l'introduction de l'Intel 8086 en 1978. Le 8086 était un processeur 16 bits avec un bus d'adresse 20 bits, lui permettant d'adresser jusqu'à 1 Mo de mémoire. Son ensemble d'instructions a été délibérément conçu pour être compatible avec le processeur 8 bits 8080 précédent, facilitant la transition pour les développeurs de logiciels. Ce ensemble d'instructions, connu sous le nom x86, deviendrait l'architecture du CDCI le plus durable et largement déployée dans l'histoire.

La décision d'IBM d'utiliser en 1981 l'Intel 8088 (version 8 bits-bus de la 8086) dans son ordinateur personnel IBM original a oint efficacement x86 comme norme pour l'architecture PC. Chaque génération ultérieure de processeurs Intel, des familles 80286 et 80386 aux familles Pentium, Core et Xeon, a maintenu une compatibilité avec l'instruction originale 8086. Cette compatibilité est devenue à la fois une force et un fardeau : elle a permis à des décennies de logiciels de fonctionner sur du matériel moderne, mais elle a aussi forcé Intel à faire avancer les instructions héritées et les quirks d'encodage qui compliquent les implémentations modernes à haute performance.

Le 80386, sorti en 1985, était une puce phare qui a introduit le traitement 32 bits à la ligne x86. Il a également apporté la mémoire de la recherche, le mode protégé et le mode virtuel 8086, des capacités qui ont jeté les bases pour les systèmes d'exploitation modernes comme Linux et Windows NT. L'ensemble d'instructions de 80386 a été considérablement élargi à partir de la 8086, ajoutant de nouvelles instructions générales, des opérations de chaînes et des commandes de niveau système.

Débat du CDCI contre le RISC : le grand schéma architectural

Au milieu des années 1980, un schisme philosophique s'était manifesté dans la recherche en architecture informatique. D'un côté se trouvait l'établissement du CDCI, dirigé par Intel, Motorola et National Semiconductor. De l'autre, une nouvelle génération d'architectes défendait la simplification et la rapidité des processeurs. Ce mouvement, baptisé RISC (Réduction de l'instruction de calcul), était défendu par des chercheurs de l'UC Berkeley et de l'Université Stanford. Les projets semi-naux Berkeley RISC-I et Stanford MIPS démontraient qu'un processeur doté d'une petite instruction uniforme pouvait surpasser les puces du CDCI contemporaines sur de nombreuses charges de travail, malgré l'exécution de plus d'instructions par programme.

Les arguments fondamentaux du camp de RISC étaient puissants :

  • Les instructions de simplificateurs décodent plus rapidement, ce qui permet des vitesses d'horloge plus élevées.
  • Les instructions de longueur fixe simplifient la pipeline, permettant à plusieurs instructions d'exécuter simultanément.
  • Les architectures de stockage, où seulement charger et stocker les instructions d'accès à la mémoire, facilitent l'optimisation de l'utilisation des registres et réduisent les décrochages de pipelines.
  • Les plus grands fichiers de registre réduisent le nombre d'accès à la mémoire, améliorant ainsi les performances.
  • L'optimisation de la compilateur peut souvent obtenir de meilleurs résultats avec des instructions plus simples que les instructions complexes microcodées.

Pendant un certain temps, le RISC est apparu prêt à supplanter entièrement le CISC. Les postes de travail de Sun (SPARC), Silicon Graphics (MIPS) et IBM (POWER) ont démontré les avantages de performance du RISC. Au début des années 1990, les puces RISC étaient à des vitesses d'horloge plus élevées et fournissaient des performances supérieures en entier et en point flottant par rapport aux processeurs du CISC contemporains.

Cependant, la réponse du CDCI n'était pas d'abandonner son ensemble d'instructions mais d'adopter les techniques de RISC en interne. Intel 80486, sorti en 1989, a incorporé un pipeline en cinq étapes, un cache sur puce et un moteur de microcode plus efficace. Le Pentium, lancé en 1993, a ajouté une architecture superscalaire qui pouvait exécuter deux instructions par cycle d'horloge. Mais la véritable percée est venue avec le Pentium Pro en 1995, qui a introduit une couche de traduction [ du matériel [ qui a converti les instructions x86 en micro-opérations (micro-ops), qui ont ensuite été exécutées par un noyau rapide, semblable à RISC. Cette approche hybride, connue sous le nom de «CISC front end, RISC back end», a permis à Intel de maintenir la compatibilité en arrière tout en réduisant l'écart de performance avec les conceptions de RISC pures.

La Renaissance du CDCI : Micro-Ops, Pipeline et Exécution hors-commande

La technique de traduction micro-op du Pentium Pro était une innovation transformatrice. Les processeurs modernes x86 d'Intel et d'AMD décodent chaque instruction x86 complexe en une ou plusieurs micro-opérations simples et fixes. Ces micro-ops sont ensuite expédiés par un moteur d'exécution super-scalaire en pipeline profond qui supporte l'exécution hors-commande, le renommage des registres et l'exécution spéculative. Le noyau d'exécution lui-même est essentiellement semblable à un RISC, optimisé pour la simplicité et le parallélisme, tandis que l'extrémité avant gère la complexité de l'ensemble d'instructions du CISC.

Cette philosophie de conception a atteint son zénith avec la microarchitecture Intel Core (2006) et ses successeurs. L'architecture Core comprenait:

  • L'exécution hors ordre est terminée :[ Le processeur peut récupérer, décoder et exécuter jusqu'à quatre instructions par cycle, les réorganiser pour maximiser l'utilisation du pipeline.
  • Macro-fusion et micro-fusion: Des instructions adjacentes x86 pourraient être combinées en une seule micro-op, améliorant la bande passante de décodage.
  • Prédiction avancée de la branche:[ Les prédicteurs multiniveaux et les tampons de la pile de retour ont réduit la pénalité des erreurs de prévision de la branche, un facteur critique dans les processeurs pipeliniers.
  • Le sommeil à faible efficacité est : La tension dynamique et l'échelle de fréquence ont permis au processeur de réduire la consommation d'énergie lorsque la demande était faible.

Les architectures concurrentes d'AMD, K8 et K10, puis la série Ryzen/Zen, ont poursuivi des stratégies similaires. L'architecture Zen, introduite en 2017, comportait une microarchitecture entièrement repensée avec un cache d'instruction L1 massif de 32KB, un cache micro-op, quatre ULA et un support pour le multithreading simultané (SMT).

Principales techniques de mise en oeuvre moderne du CDCI

  • Micro-opération translation:[ Les instructions x86 complexes sont décomposées en micro-ops plus simples et de longueur fixe qui peuvent être programmés hors de la commande.
  • Micro-op cache:[ Les micro-ops fréquemment utilisés sont mis en cache, sautant le stade de décodage et réduisant la consommation d'énergie.
  • Exécution hors-ordre:[ Les instructions (micro-ops) sont exécutées dans l'ordre du flux de données plutôt que dans l'ordre du programme, améliorant l'utilisation des unités d'exécution.
  • Inscription du nom:[ Le grand ensemble de registres d'architectes de x86 est cartographié sur un plus grand bassin de registres physiques, éliminant les fausses dépendances.
  • Exécution spécifique:[ Le processeur prédit les résultats de la branche et exécute les instructions à l'avance, en retournant sur les erreurs de prédiction.
  • Plusieurs threads matériels partagent des ressources d'exécution, améliorant le débit sans dupliquer le noyau entier.

Ces techniques permettent aux processeurs modernes x86 d'obtenir un parallélisme de niveau d'instruction qui rivalise ou dépasse celui des conceptions RISC, tout en maintenant une compatibilité entièrement rétrograde. Le résultat est un processeur qui peut exécuter des logiciels vieux de plusieurs décennies à des vitesses de blason, tout en soutenant des charges de travail modernes comme la virtualisation, le chiffrement et l'inférence d'apprentissage machine.

CDCI moderne : x86-64, Virtualisation et Extensions de sécurité

L'extension 64 bits à l'architecture x86, connue sous le nom de AMD64 (adoptée par Intel sous le nom d'Intel 64 ou x86-64), a été introduite par AMD avec le processeur Opteron en 2003. Cette extension a ajouté des registres à usage général 64 bits, a élargi l'espace d'adresse virtuelle à 48 bits (et éventuellement 57 bits avec des balises à 5 niveaux) et a introduit un nouveau jeu d'instructions pour les opérations 64 bits.

La virtualisation a été un autre jalon important de l'évolution du CDCI. La technologie VT-x (Vanderpool) a été introduite en 2005, ajoutant la virtualisation assistée par le matériel à l'architecture x86. AMD a suivi avec son extension AMD-V (Pacifica). Ces fonctionnalités ont permis aux hyperviseurs d'exécuter plusieurs systèmes d'exploitation invités avec des performances quasi natives, révolutionnant l'efficacité du centre de données et permettant la révolution de l'informatique en nuage.

Les extensions de sécurité sont également devenues une caractéristique déterminante des processeurs modernes du CDCI. SGX (Prolongations de protection logicielle) et TDX[ (Extensions de domaine fiable), ainsi que SEV[ (Virtalisation encryptée sécurisée), fournissent une isolation renforcée par le matériel pour les attaques de code et de données sensibles. Intel CET (Technologie de contrôle-flux) et AMD Shadow Stack[ se défendent contre les attaques de programmation orientée retour (ROP) et de programmation orientée saut (JOP). Ces caractéristiques de sécurité tirent parti de la riche série d'instructions du CDCI pour offrir des protections qui seraient difficiles à mettre en œuvre sur des architectures plus simples.

L'IA et le traitement vectoriel ont également été intégrés dans le CISC moderne. Les AVX-512 (Prolongations vectorielles avancées) et les opérations AVX2 et les futures AVX-512 offrent des opérations SIMD de 512 bits (Instruction unique, données multiples) qui accélèrent les charges de travail allant de l'informatique scientifique à l'inférence d'apprentissage automatique.

Mise en œuvre contemporaine du CDCI : Intel Core et AMD Ryzen

Au milieu des années 2020, les deux familles dominantes des processeurs du CDCI sont Intel Core (maintenant dans sa 14e génération) et AMD Ryzen (basé sur les microarchitectures Zen 4 et Zen 5).

Les processeurs Intel Core Ultra (Meteor Lake et successeurs) utilisent un design basé sur des tuiles qui séparent les calculs, les graphiques et les E/S en pucelettes distinctes.Le tuile de calcul comprend un mélange de "Performance-cores" (P-cores) basé sur Redwood Cove microarchitecture et "Efficient-cores" (E-cores) basé sur Crestmont.Cette approche hétérogène, inspirée par le grand.LITTLE, permet au processeur d'optimiser les performances à simple lecture et le débit multithreadérent tout en maintenant l'efficacité de la puissance.

Les processeurs Ryzen 7000 et 8000 d'AMD, construits sur la microarchitecture Zen 4, disposent de 16 cœurs (32 threads) dans la plate-forme de bureau principale. L'architecture Zen 4 a augmenté le cache L2 par cœur à 1 Mo, amélioré le prédicteur de branche et ajouté le support pour les instructions AVX-512. Le contrôleur mémoire prend en charge la mémoire DDR5 et fournit jusqu'à 28 voies PCIe 5.0 directement du processeur. La technologie 3D V-Cache] empile 64 Mo supplémentaires de cache L3 au-dessus du calcul, ce qui permet de réaliser des gains de performance substantiels pour les charges sensibles au cache, comme les opérations de jeu et de base de données.

Les deux entreprises continuent d'investir massivement dans des architectures de pucelettes[, qui leur permettent de combiner plusieurs matrices plus petites en un seul paquet. Cette approche améliore les rendements de fabrication, réduit les coûts et permet des configurations de produits flexibles. La tendance de pucelettes représente un changement fondamental dans la conception des processeurs, s'éloignant des matrices monolithiques vers des systèmes modulaires basés sur l'interconnexion.

L'avenir du CDCI : Architectures hybrides et Accélérateurs spécialisés

L'évolution du CDCI est loin d'être complète. Plusieurs tendances façonnent l'avenir de la conception des ensembles d'instructions :

  • Les accélérateurs spécifiques au domaine:[ Les processeurs modernes du CDCI intègrent de plus en plus des blocs matériels spécialisés pour l'IA, la cryptographie, l'encodage des médias et le réseautage.
  • Instructions axées sur la sécurité:[ De nouvelles instructions pour le marquage de mémoire, l'authentification des pointeurs et le calcul confidentiel sont ajoutées à x86-64, ce qui reflète l'importance croissante de la sécurité dans les systèmes informatiques.
  • La concurrence RISC-V : L'architecture d'instruction RISC-V à source ouverte présente un défi à long terme à la domination de x86. Bien que RISC-V manque actuellement de l'écosystème et des performances de x86, sa nature modulaire et sa gouvernance ne faisant pas appel aux fournisseurs attirent les investissements des grandes entreprises.
  • La compatibilité arrière comme une épée à double tranchant :[ L'exigence de soutenir des décennies d'instructions anciennes impose une complexité importante et des coûts de surface en silicium. Cependant, l'élimination complète de l'aide existante risquerait de briser de grandes quantités de logiciels existants. L'industrie explore des moyens de rationaliser l'ensemble d'instructions tout en maintenant la compatibilité par l'émulation ou la traduction dynamique.
  • Computation hybride: L'intégration des éléments du CDCI et du RISC se poursuit. Certains modèles futurs peuvent adopter une approche à deux niveaux : un noyau semblable au RISC pour une exécution à haut rendement et efficace en énergie, avec une extrémité frontale du CDCI qui traduit les instructions héritées.

Une possibilité particulièrement intéressante est l'utilisation de traduction binaire dynamique pour découpler l'ensemble d'instructions présenté au logiciel de l'architecture interne native du processeur.C'est déjà courant dans la virtualisation (par exemple, QEMU) et dans certaines implémentations de processeurs (par exemple, le mode de compatibilité x86 d'Itanium).Si la technologie de traduction binaire mûrit suffisamment, elle pourrait permettre aux futurs processeurs du CDCI d'éliminer progressivement les codages d'instructions hérités tout en maintenant la compatibilité logicielle à travers une couche de traduction logicielle.

Conclusion: le CDCI, le RISC et le brouillage des limites

L'histoire des ensembles d'instructions du CDCI est une histoire d'adaptation et de résilience. Né des contraintes pratiques de l'informatique des années 1970, les architectures du CDCI ont dominé l'industrie pendant des décennies, ont fait face à un défi mortel du RISC dans les années 1980 et 1990, puis se réinventer en adoptant des techniques de type RISC en interne tout en préservant la compatibilité avec l'arrière.

Les processeurs du CISC d'aujourd'hui, illustrés par les familles Ryzen de Core et AMD, sont des modèles hybrides qui combinent la riche sémantique d'un grand ensemble d'instructions avec le modèle d'exécution facile à pipeline de RISC. La couche de traduction micro-op qui relie ces deux mondes est maintenant une caractéristique standard de tous les processeurs x86 haute performance. Cette fusion de philosophies du CISC et de RISC a produit des puces à la fois riches en fonctionnalités et exceptionnellement rapides, capables de tout gérer, des applications commerciales anciennes aux charges de travail de pointe en matière d'IA.

Les architectures émergentes comme RISC-V et ARM v9 intègrent des instructions plus complexes pour des tâches spécialisées, tandis que les conceptions du CISC rationalisent leurs cœurs d'exécution et ajoutent une accélération matérielle. Le débat de longue date entre le CISC et RISC a été résolu non pas par la victoire d'un camp sur l'autre, mais par la convergence des deux vers un milieu pragmatique. Pour les ingénieurs et les architectes, la leçon est claire : la meilleure instruction est celle qui répond le mieux aux besoins de ses utilisateurs, en conciliant complexité, performance, puissance et compatibilité dans un paysage technologique en constante évolution.

Pour plus de détails, la documentation Intel Architecture Instruction Set Extensions fournit des détails faisant autorité sur les instructions modernes x86, tandis que ]AMD's Zen Microarchitecture[ offre un aperçu de la mise en œuvre contemporaine du CISC. L'archive IBM System/360 historique offre un contexte précieux pour comprendre les origines du CISC, et les spécifications techniques RISC-V International illustrent l'approche modulaire alternative à la conception de l'ensemble d'instructions.