TD Architecture : Pipelines

Exercice 1

PP21a (165K)

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 ?


PP21b (180K)

Mêmes questions pour le schéma ci-contre (les durées de traitement des trois circuits combinatoires sont différentes).


PP21c (143K)

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.

  1. 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.
  2. Mêmes questions en insérant deux registres intermédiaires (pipeline de profondeur 3).
  3. Quel est le pipeline de profondeur optimale ? Fournir une description et une analyse des performances comme précédemment.
  4. 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é

  1. 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.
  2. 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.
  3. 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.
  4. 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.