Les puces RISC
1. Objectif_de_la_technologie RISC
2. Introduction
3. Le PIPELINE
4. Comparaison_des_architectures RISC
5. Conclusion
1. Objectif de la technologie RISC : La Rapidité d'exécution des programmes.
La vitesse passe par la simplification du microprocesseur, ce qui entraîne une baisse de la
consommation et du coût.
2. Introduction : En 1975, les chercheurs d'IBM firent la constatation suivante : moins de
20% des instructions disponibles dans le microprocesseur sont utilisées dans 80% des cas.
D'où la question : pourquoi ne pas simplifier les microprocesseurs en implantant sur la puce
les instructions les plus courantes ? On gagnerait ainsi en vitesse, donc en performance, et on
réduirait la surface de la puce, donc la consommation et le coût. C'est cette idée qui fut la base
de la technologie RISC (Reduced Instruction Set Computer : microprocesseur à jeu
d'instructions réduit) par opposition aux CISC (Complex Instruction Set Computer). Mais que
fait-on des instructions complexes ? Il suffit tout simplement de les remplacer par une série
d'instructions simples (une multiplication est une série de sommes). Mais à la différence de
l'approche CISC, le décodage des instructions complexes est assuré par le logiciel au niveau
du compilateur, et non pas par des circuits logiques implantés sur le microprocesseur. Il
permet ainsi d'éviter les microcodes à programmer sur la puce. Ceci oblige à avoir un
compilateur plus complexe, devant être optimisé de façon à réduire les temps d'exécution, si
l'on veut préserver les avantages de la puce RISC. Remarque : une instruction complexe à
l'intérieur du microprocesseur n'est en fin de compte qu'un " programme " implantés sur la
puce.
3. Le PIPELINE : on a vu que la réduction du jeu d'instructions apporte un gain de
rapidité, mais l'essentiel des performances vient de l'exploitation du gain de place pour une
nouvelle fonction : le traitement en pipeline. Une instruction du programme s'exécute
généralement en 5 séquences successives. A chaque séquence correspond une impulsion
d'horloge
IF : Instruction Fetch, chargement des instructions du cache mémoire vers la
file d'instructions.
DEC : Décodage, traduction de l'instruction se trouvant sur le haut de la file
d'instructions.
EX : Exécution, exécution par l'ALU ou la FPU de l'instruction décodée
MEM : Memory acces, lors d'une opération de lecture/écriture, la donnée est
écrite vers une file de lecture/écriture. Ceci évite de bloquer le pipeline dans le
cas où on ne pourrait accéder à la mémoire.
WB : Write Back, écriture du résultat de EX ou de MEM
La simplification apportée par la technologie RISC ayant conduit à des instructions standards
de même longueur, le principe du pipeline est donc de profiter de cette standardisation pour
exécuter les instructions, non pas de façon séquentielle, mais en cascade à 5 étages à la
manière d'une chaîne de fabrication à 5 postes de travail (Merci Taylor). Chaque étage est
chargé d'une séquence. En permanence, 5 instructions se trouvent donc simultanément à des
séquences différentes de traitement. A chaque coup d'horloge, une instruction est entièrement
exécutée.
t t+1 t+2 t+3 t+4 t+5 t+6 t+7 t+8
ins1 IF DEC EX MEM WB MOV AX,I
ins2 IF DEC EX MEM WB MOV BX,J
ins3 IF DEC EX MEM WB SUB AX,BX
ins4 IF DEC EX MEM WB CMP AX,0
ins5 IF DEC EX MEM JE Suite
Exemple : chaque cycle : 1 étage activé = 5 instructions en //
Il peut arriver certains conflits :
- Conflit de ressource : 2 instructions veulent accéder à la même ressource au même moment
- Dépendance de données : un registre (résultat d'une opération précédente) est lu alors qu'il
n'a pas encore été écrit.
- Aléas de branchement : le processeur n'a pas encore le résultat d'un test et doit choisir entre
deux sauts (ex : sauts conditionnels).
Résolution des conflits : elle se fait souvent pendant le DECodage.
Ressource : on diffère l'accès à cette ressource pour l'instruction la plus jeune
Données : pour les registres, il existe sur les ALU des systèmes de by-pass pour récupérer la
valeur calculée avant la véritable écriture dans la table des registres (WB)
Branchements : le processeur fait le pari sur le branchement. S'il se révèle bon, alors on
continue. S'il est mauvais, on invalide toutes les instructions exécutées depuis la prise de
décision ce qui est complexe et coûteux en matériel. Pour prédire le branchement, il existe des
techniques de statistiques utilisant des buffers de prédiction pour savoir si le branchement a
déjà été pris ou non (valable surtout pour les boucles). On associe un bit à chaque instruction
dans le cache instructions.
Architecture supersacalaire : elle consiste à multiplier le nombre de pipelines, donc à mettre
plusieurs unités de traitement travaillant en parallèle. La cadence de traitement s'en trouve au
mieux multipliée par le nombre de pipelines. Avec 4 pipelines, les microprocesseur RISC les
plus récents traitent jusqu'à 4 instructions par cycle.
Architecture superpipeline : elle consiste à augmenter la profondeur du pipeline (plus de
séquences et une fréquence plus élevée donc t plus petit) permettant ainsi d'augmenter encore
la cadence du traitement. Par contre, cette organisation demande une logistique plus complexe
pour approvisionner les différents " postes ". Pour l'instant, le bon compromis est un pipeline
à 7 étages, le gain est donc beaucoup moins significatif que dans le cas d'une multiplication
du nombre de pipelines.
4. Comparaison des architectures RISC et CISC :
Architecture RISC CISC
Jeu réduit limité aux instructions simples les
jeu d'instructions plus utilisées dans le traitement. Typiquement plus de 200 instructions
Typiquement moins de 100 instructions
format des
Standard Variable
instructions
Seules les instructions simples sont gravées
La plupart des instructions sont gravées sur le
Implémentation sur le silicium. Les autres sont programmées
silicium. Pas de microcodes. Les tâches
des instructions sous forme de microcodes sur des circuits
complexes sont décodées par le compilateur.
logiques
Accès à la Seules les instructions de chargement et de
La plupart des instructions y ont accès
mémoire rangement de registres (Load et Store)
Typiquement une instruction par cycle Typiquement une instruction pour 3 à 10
Vitesse d'exécution d'horloge cycles d'horloge
Puce plus petite. Fréquence d'horloge plus Développement plus simple des systèmes.
Avantages élevée. Vitesse d'exécution plus grande Base installée importante
Nécessite des compilateurs plus complexes et Technologie gourmande en silicium. Puce
Inconvénients plus performants. Programme d'application plus compliquée à développer. Possibilités
plus long occupant plus de mémoire d'évolution limitées
5. Conclusion : La division entre les concepts CISC et RISC n'est plus aussi dichotomique
que par le passé. L'ensemble des microprocesseur utilise des solutions similaires, même si les
uns sont classés CISC et les autres RISC. Le 486 d'Intel et le 68040 de Motorola sont les deux
premiers (connus du grand public) processeurs CISC à se rapprocher de la technologie RISC.
L'unité centrale contient les instructions les plus courantes, tandis que les instructions
complexes sont confiées à une unité spécifique séparée et utilisent le traitement en pipeline.
Le Pentium et le 86060 qui ont suivis, vont plus loin en adoptant l'architecture superscalaire.
Par contre les microprocesseur RISC ont tendance à enrichir leur jeu d'instructions et finissent
par devenir aussi complexes que des CISC. Si bien qu'aujourd'hui, l'important n'est pas de
savoir si tel ou tel microprocesseur est CISC ou RISC, mais de connaître son architecture
interne et ses performances.