Microprocesseur à jeu d'instruction étendu

{{#ifeq:||Un article de Ziki, l'encyclopédie libre.|Une page de Ziki, l'encyclopédie libre.}}
Révision datée du 13 octobre 2023 à 20:59 par 2a01:cb18:35:f400:d3c:d90d:7ee1:8676 (discussion) (→‎Avantages : Correction d'une faute d'accord)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Modèle:À sourcer Un microprocesseur à jeu d'instructions étendu (Modèle:En anglais, CISC) désigne un microprocesseur possédant un jeu d'instructions comprenant de très nombreuses instructions Modèle:Refnec.

L'architecture CISC est opposée à l'architecture RISC qui au contraire, limite ses instructions à l'essentiel afin de réduire la quantité de transistors.

Histoire

Modèle:Voir Le premier microprocesseur est l'Intel 4004, d'architecture 4 bits, sorti en 1971, suivi de l'Intel 8008, d'architecture Modèle:Nobr, sorti en 1972. Intel sort ensuite en 1974, le 8080, toujours Modèle:Nobr, dont le langage assembleur est différent de celui du 8008, mais pose les bases de l'assembleur x86. Différents processeurs concurrents, également d'architecture CISC apparaissent alors, tels que le MOS Technology 6502 (1975) ou le Zilog Z80 (1976), qui équipent la majorité des micro-ordinateurs du début des Modèle:Lnobr.

L'Intel 8086, sorti en 1978 est le premier processeur x86, d'architecture Modèle:Nobr. L'unité de calcul en virgule flottante (FPU) n'est alors pas incluse dans le microprocesseur dans ces séries. C'est un circuit intégré séparé et optionnel. Le 8087 est le premier coprocesseur arithmétique des processeurs Modèle:Nobr d'Intel. Les processeurs Modèle:Nobr (adressage Modèle:Nobr, registres Modèle:Nobr) des Motorola 68000, sorti en 1979, sont le 68881 et ses successeurs.

Sur tout matériel informatique, le système de démarrage des composants est contenu dans une EEPROM (appelé « BIOS » sur les IBM/PC et compatibles, équipés de processeurs x86 Modèle:Nobr et supérieurs). Le compilateur étant responsable de convertir toutes les instructions écrites en langages source (Fortran, CobolModèle:Etc.) en langage machine, ce qui pouvait nécessiter des milliers de lignes de code et des compilateurs complexes, avec des ordinateurs avec très peu de mémoire vive, des périphériques assez lents (ruban perforé, carte perforée, bande magnétiqueModèle:Etc.) et/ou de capacité limitée (tambour magnétique, disque durModèle:Etc.).

Avec le développement des capacités de gravure des microprocesseurs, ceux-ci se sont développés pour couvrir de plus en plus d'instructions utilisées dans les langages de programmation. Cela pouvait souvent comprendre :

Avantages

  • L'empreinte mémoire du code est beaucoup plus dense (facteur deux entre de l'ARM thumb et le x86), ce qui est intéressant pour minimiser la taille du cache instruction.
  • Possibilité de microprogrammation, donc de corriger le jeu d'instructions (cela peut être utile pour corriger des bugs).
  • Permet d'utiliser des instructions très complexes, rendant la tâche des compilateurs plus complexe. En outre, ces instructions prennent du fait de leur microcode plusieurs cycles d'horloge, et sont donc plus lentes que des instructions câblées. Lors de la programmation en assembleur, il est important de connaître le temps pris par chaque instruction pour l'optimisation.

Les instructions de types SIMD (instruction unique, multiples données) ne sont pas spécifiques au CISC, ces instructions sont d'ailleurs d'abord apparues sur des architectures RISC dédiées au calcul, dans ce que l'on appelle un processeur vectoriel, notamment utilisé sur le supercalculateur Cray-1 en 1976. Ce sont des instructions simples (addition, soustraction, multiplications), gérées en parallèle sur plusieurs données, afin d'accélérer les calculs d'algèbre linéaire, fondamentaux en analyse numérique. Elles sont très parallélisables et ne prennent généralement qu'un cycle d'horloge. Dans les Modèle:Nobr, les processeurs grand public tels que les CISC d'Intel (MMX, puis SSE) ou les RISC de PowerPC (AltiVec) ont intégré des SIMD plus limités que les processeurs vectoriels. Ils permettent des traitements sur des vecteurs chargés dans les registres des processeurs. Tandis que dans le cas des processeurs vectoriels, tels qu'ils sont présents sur les processeurs RISC, comme Cell, dérivé de l'architecture IBM POWER, ou l'extension V de RISC-V, le principe de Cray, plus simple mais plus efficace est repris, on charge dans les registres l'adresse d'une table de vecteurs, ainsi que sa taille, puis on exécute une instruction vectorielle qui va parcourir toute la table.

Défauts

  • Le microprocesseur est plus compliqué à accélérer (problème pour pipeliner le moteur d'exécution).
  • Le processeur est globalement plus complexe qu'un processeur RISC.
  • Les compilateurs ont des difficultés à générer des instructions complexes.
  • Certaines instructions complexes sont exécutées sur plusieurs cycles d'horloge, dont le nombre peut dépendre des arguments. Il est difficile de prévoir la durée de certains calculs, ce qui peut mener à des problèmes de synchronisation.
  • Ces éléments, obligent à multiplier le nombre de transistors au sein de la puce, la rendant plus coûteuse et lui conférant une moins bonne efficacité énergétique.

Processeur de cette famille

Cette famille regroupe différents types de processeurs<ref>Comparaison CISC/RISC, sur irif.fr (consulté le 20 septembre 2020).</ref>, des architectures datant principalement des Modèle:Lnobr à 1990 :

Notes et références

Modèle:Références

Annexes

Articles connexes

Modèle:Palette Modèle:Portail