TD Architecture : Pipelines
Exercice 1
Voici un premier schéma (vu en cours) d'un pipeline à 3 étages.
L'unité de temps est la pico-seconde (ps) qui vaut 10-12
seconde. Quelle est la durée minimale du cycle d'horloge ?
Quel est le débit maximal de ce
pipeline, en Gops (Giga-opérations par seconde) ?
Quelle est dans ce cas la latence,
c'est-à-dire la durée d'exécution d'une instruction ?
Mêmes questions pour le schéma ci-contre
(les durées de traitement des trois circuits
combinatoires sont différentes).
Mêmes questions en
multipliant par deux le nombre d'étages du pipeline initial.
Quel est le débit qu'on ne dépassera
jamais en augmentant encore la profondeur du pipeline ?
Exercice 2
On suppose qu'on a découpé les circuits combinatoires
qui composent une instruction en six blocs A
à F de durées respectives 80, 60, 30,
50, 70 et 10 ps ; ces blocs doivent être exécutés
l'un après l'autre dans cet ordre,
après quoi on charge un registre au prochain front d'horloge.
La durée de chargement d'un registre est de 20 ps.
- Insérer un seul registre intermédiaire fournit
un pipeline de profondeur 2. Où faut-il insérer
ce registre pour obtenir un débit maximal ?
Calculer alors la durée du cycle d'horloge,
le débit et la latence.
- Mêmes questions en insérant deux registres
intermédiaires
(pipeline de profondeur 3).
- Quel est le pipeline de profondeur optimale ?
Fournir une description et une analyse des performances
comme précédemment.
- Echanger les durées de B et C
et traiter à nouveau la question précédente.
Exercice 1 : corrigé
Question |
Durée du cycle |
Débit (en Gops) |
Latence |
1 |
120 ps |
1000 / 120 = 8.33 |
3 * 120 = 360 ps |
2 |
170 ps |
1000 / 170 = 5.88 |
3 * 170 = 510 ps |
3 |
70 ps |
1000 / 70 = 14.29 |
6 * 70 = 420 ps |
Avec un temps de chargement des registres de 20 ps,
la durée d'un cycle sera toujours supérieure à 20 ps,
et le débit inférieur à 50 Gops.
Exercice 2 : corrigé
- Le meilleur partage est { A B }
{ C D E F } :
le premier bloc de tâches a une durée de
140 ps
et le second dure 160 ps.
En plaçant C dans le premier bloc on
obtiendrait des durées de 170 et
130 ps,
ce qui est moins bon : il faut minimiser
la durée maximale.
Ce pipeline peut fonctionner avec un cycle de
180 ps,
un débit de 1000 / 180 =
5.55 Gops
et une latence de 2 * 180 =
360 ps.
- Le meilleur partage est { A }
{ B C } { D E F } ;
les durées respectives sont 80 ps,
90 ps et 130 ps.
En plaçant D dans le second bloc,
celui-ci aurait une durée de 140 ps,
ce qui est moins bon.
Ce pipeline peut fonctionner avec un cycle de
150 ps,
un débit de 1000 / 150 =
6.66 Gops
et une latence de 3 * 150 =
450 ps.
- Puisque le circuit le plus lent est
A qui dure 80 ps,
le meilleur partage est celui
dont tous les blocs ont une durée
inférieure ou égale à 80 ps.
Il faut aussi minimiser la profondeur
du pipeline, c'est-à-dire le nombre
d'étapes (qui est le même
que le nombre de registres du circuit).
D'où le découpage :
{ A }
{ B }
{ C D }
{ E F }.
Ce pipeline de profondeur 4
peut fonctionner avec un cycle de
100 ps,
un débit de
10 Gops
et une latence de 4 * 100 =
400 ps.
- Cette fois il faut un pipeline
de profondeur 5 :
{ A }
{ B }
{ C }
{ D }
{ E F }.
Ce pipeline a le même cycle et le même
débit que le précédent, mais la
latence passe à
500 ps.