Complex instruction set computing

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche

Un microprocesseur à jeu d'instruction étendu, ou complex instruction set computer (CISC) en anglais, désigne un microprocesseur possédant un jeu d'instructions comprenant de très nombreuses instructions mixées à des modes d'adressages complexes.

L'architecture CISC est opposée à l'architecture RISC (Reduced Instruction-Set Computer).

Avantages[modifier | modifier le code]

  • 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 complexes. En outre, ces instructions prenne 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és 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.

Défauts[modifier | modifier le code]

  • 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.

Processeur de cette famille[modifier | modifier le code]

Notes et références[modifier | modifier le code]