×

Message

Directive européenne sur la vie privée

Ce site utilise des cookies pour gérer l'authentification, la navigation et d'autres fonctions. En utilisant notre site Web, vous acceptez que nous puissions utiliser ces types de cookies.

Voir les documents de la directive sur la protection des données personnelles

View GDPR Documents

Vous avez refusé l'installation de cookies sur votre ordinateur. Cette décision peut être annulée.

L'instruction RISC

Le microprocesseur à jeu d'instruction réduit (ou Reduced Instruction Set Computer en anglais). On l'a opposé à la fin des années 1980 et au début des années 1990 à l'architecture CISC. La sortie d'architectures hybrides comme le Pentium (CISC émulé par du RISC) a mis fin par disparition de repères à cette guerre, qui était devenue bien plus marketing que technique vers 1990.

L'idée d'origine provient de l'analyse des séquences de codes qui montrait que la grande majorité des instructions disponibles étaient très peu utilisées. Ainsi, seul un jeu très réduit d'instructions était majoritairement utilisées dans les programmes. Par conséquent, les microprocesseurs étaient dimensionnés pour de nombreuses instructions alors que très peu étaient effectivement utilisées. Ainsi, l'architecture RISC fait le choix de limiter le jeu d'instructions à seulement quelques unes, imposant en contrepartie à toutes les autres, un nombre identique de cycles pour s'exécuter. De cette manière, il est possible de débuter une nouvelle instruction à chaque cycle d'horloge, ceci constitue le «pipeline».

L'avantage de cette technique est que désormais, le processeur se comporte comme s'il y avait une instruction par cycle d'horloge. De plus, la division de chaque instruction en plusieurs étapes autorise une fréquence d'horloge plus grande puisque la profondeur combinatoire entre 2 registres est diminuée. Ces 2 caractéristiques ont pour conséquence une division du temps d'exécution pour toutes les instructions de base.

Mais cette performance se paye au prix d'une certaine diminution de lisibilité du code (surtout si on l'optimise), gênante si l'on programme en assembleur : l'instruction MVC (MoVe Character) du Système 360 (pas la console de Microsoft, rien à voir !) restait tout de même plus lisible que la séquence d'instructions faisant la même chose dans une machine RISC. Mais pour qui la codait en langage C, il n'y avait plus aucune différence. Et en temps d'exécution, le code C optimisé se montrait en général plus performant en vitesse pure grâce à des astuces d'usage de l'effet pipeline par le compilateur.

Mais il y a aussi des avantages. Du fait que chaque instruction était simple, le décodage et l'exécution par le processeur est très rapide et idéalement en un seul cycle. Le succès de l'architecture RISC a tenu à deux facteurs :
1- la mémoire avait baissée de prix à un point tel qu'a y concentrer des instructions compliquées, on perdait de sa rentabilité.
2- les temps d'accès de cette mémoire étaient devenus très faibles par rapport au temps de traitement d'une instruction complexe. Dans ces conditions, la mémoire passait l'essentiel de son temps à attendre le processeur.

C'est aujourd'hui l'inverse (le CPU est plus rapide que la RAM), c'est la raison pour laquelle on place des anté-mémoires (appelées mémoires caches) un peu partout, y compris dans les machines RISC. Le plus souvent elles en ont 2 (L1 et L2). Les premiers modèles proposait des caches externes mais aujourd'hui, elles sont directement intégrées au CPU.

L'unité de calcul des processeurs RISC, du fait de sa simplicité, est souvent plus petite. À taille de puce égale, on peut donc lui adjoindre un cache plus grand, et le plus souvent 2 caches : un pour les données et l'autre pour les instructions. En termes de performances, la comparaison CISC/RISC est difficilement quantifiable.

Historiquement, un processeur tel que le Transputer d'Inmos adopta la solution de remplacer les registres (dont la désignation consomme des bits dans les instructions) par une pile. D'autres machines RISC, au contraire, comme le RS/6000 d'IBM, multiplièrent les registres à un degré tel qu'on ne pouvait plus les programmer efficacement en assembleur, la mémoire du programmeur faisant toujours moins bien que les algorithmes d'optimisation des compilateurs de langage C. Les processeurs de la famille PowerPC, dérivés du RS/6000 et utilisés entre autres sur les Macintosh sont à architecture RISC, de même que les processeurs SPARC utilisés entre autres par Sun Microsystems pour leurs serveurs et stations de travail.

Les micro-ordinateurs de type compatible PC étaient animés jusqu'à la génération 486 par des microprocesseurs de type CISC (NEC, STMicroelectronics, AMD, Intel). Depuis la génération 586, l'architecture CISC est émulée dans les puces d'architecture IA-32 par la microprogrammation d'un processeur RISC sous-jacent. Dans le monde de l'électronique embarquée, les processeurs ARM présentent également une architecture RISC. De nos jours les CPU CISC sont rares, presque tous les appareils ou consoles de jeux depuis début 90, ont une technologie RISC, plus efficace.