L’unité de traitement (la rapidité de calcul)
8 3995 TE PA 02
7
2. Optimiser le cycle d’instruction
Nous avons vu que le cycle d’exécution d’une instruction est découpé en tâches. Par
exemple, sur le CNED86, nous avons distingué 5 tâches :
– R.I. = Recherche de l’Instruction en mémoire centrale ;
– D.I. = Décodage de l’Instruction ;
– R.O. = Recherche des Opérandes en mémoire centrale ;
– X.I. = eXécution de l’Instruction ;
– S.R. = Stockage du Résultat en mémoire centrale.
Exemple : observons l’exécution d’un programme comportant deux instructions 1 et 2 :
R. I.1D.I.1R.O.1X.I.1S.R.1R.I.2D.I.2R.O.2X.I.2S.R.2
Figure 1 : traitement des instructions en séquence
Si l’on suppose que chaque tâche coûte 1 unité de temps, les deux instructions sont trai-
tées en 10 unités de temps. On constate que, par exemple, l’utilisation du décodeur n’est
pas optimale : il ne fonctionne que pendant deux unités de temps et ne fait rien pendant
les huit autres. C’est inadmissible ! Heureusement, on a trouvé un moyen de mieux faire
travailler ce petit fainéant. Il s’agit du pipeline.
Le principe du pipeline consiste à commencer le traitement de l’instruction suivante
avant que la précédente ne soit terminée.
Démontrons cela sur un schéma :
R.I.2D.I.2R.O.2X.I.2S.R.2
R. I.1D.I.1R.O.1X.I.1S.R.1
Figure 2 : Traitement des instructions en « pipe-line »
Dans l’exemple, les deux instructions sont exécutées en 6 unités de temps soit un gain
de 40%.
Le nombre d’instructions qui peuvent être traitées suivant le principe du pipeline donne
le nombre d’étages du pipeline.
temps
1 2
temps
1
2