150 likes | 251 Views
Systèmes Pipeline – opérations multicycles. Nous avons vu jusqu’à maintenant comment faire un pipeline simple, avec une seule unité d’exécution. Comment peut-on ajouter de multiples unités d’exécution, certaines utilisant plus d’un coup d’horloge pour faire leurs calculs?.
E N D
Systèmes Pipeline – opérations multicycles Nous avons vu jusqu’à maintenant comment faire un pipeline simple, avec une seule unité d’exécution. Comment peut-on ajouter de multiples unités d’exécution, certaines utilisant plus d’un coup d’horloge pour faire leurs calculs?
DLX plus complet: plus d’unités d’exécution • Pour améliorer le DLX, nous allons maintenant considérer l’ajout de plusieurs unités d’exécution à l’ALU initial: • Unité d’addition point flottant • Unité de multiplication d’entiers • Unité de multiplication point flottant • Unite de division
Pipeline: Comment utiliser des opérations multicycles? • Jusqu’à maintenant, nous n’avons considéré que des opérations sur les entiers dans l’ALU. Qu’arrive-t-il lorsqu’on incorpore des opérations à point flottant? • Ou bien on allonge le cycle de l’horloge • Ou bien on augmente la taille du circuit • On bien on permet d’intégrer des opérations multi-cycles dans le pipeline
Pipeline: intégration des opérations multicycles • But: permettre à un opérateur point flottant d’utiliser plus d’un cycle d’horloge pour effectuer son travail • Nous supposerons que l’unité point flottant peut utiliser un nombre arbitraire de cycles (le nombre exact dépend du type d’opération). Nous supposerons de plus qu’il peut y avoir plusieurs unités point flottant en parallèle
Pipeline: intégration des opérations multicycles (2) • Nous définissons 2 termes: la latence et l’intervalle d’émission • Latence: durée de l’opération totale par rapport à la durée d’une opération ALU sur des entiers • Intervalle d’émission (initiation interval): délai entre l’émission de deux opérations du même type
Pipeline: unités multicycles • Soient les 5 opérations suivantes: ALU entier, accès à la mémoire, addition FP, multiplication FP/entier, division FP, avec les paramètres suivants: Quelles sont les implications de ce tableau?
Pipeline: implications multicycles • Toutes les opérations peuvent commencer une instruction par coup d’horloge, excepté la division. Celle-ci peut donc causer des problèmes structuraux (structural hazards). Dans ce cas, la seule solution est de faire des « stalls » • Puisque les opérations sont de durée variable, il se peut que deux opérations atteignent l’étage d’écriture en même temps • Il peut y avoir des problèmes de dépendance de données de type WAW • Les instructions peuvent être complétées dans un ordre différent que l’ordre d’émission • Puisque la latence est plus longue, il y aura plus de problèmes de type RAW
Pipeline multicycle: solution à l’écriture multiple • Il est possible que deux instructions ou plus se terminent en même temps, et tentent d’écrire leurs résultats simultanément. Quoi faire? • On pourrait ajouter des registres à plusieurs ports d’entrée. On ajouterait beaucoup de matériel pour un cas relativement peu fréquent. Et il faudrait de toutes façons gérer l’écriture simultanée au même registre • Une meilleure solution est de détecter l’utilisation simultanée (on peut le faire dès l’étage ID), et réserver l’utilisation de l’étage d’écriture. Comment? En utilisant un registre à décalage pour réserver l’étage MEM. De cette façon, on peut faire un « stall » de l’opération problématique au niveau du ID.
Pipeline multicycles: sommaire du contrôle • Vérification de problèmes de structure (seulement avec le diviseur) • Vérification de problèmes de type RAW • Vérification de problèmes de type WAW
Pipeline: quoi d’autre? • Que peut-on faire pour augmenter l’efficacité des méthodes de pipeline? • Dans le MIPS 4000, on a utilisé plus d’étages de pipeline (8 au lieu de 5). En répartissant les opérations sur plus d’étages, il est possible d’augmenter la vitesse de l’horloge. • Dans le R4000, on a ajouté des étages pour l’accès à la mémoire. On appelle parfois cette technique le « superpipelining »
Le MIPS R4000 • Dans le MIPS R4000, les étages sont les suivants: • IF / IS / RF / EX / DF / DS / TC / WB • IF: première partie du « instruction fetch » (sélection du PC, début d’accès) • ID: deuxième partie du « instruction fetch » (lecture) • RF: instruction decode, register fetch, cache hit? • EX: unité d’exécution • DF: data fetch • DS: deuxième partie de l’accès à la mémoire (lecture) • TC: cache hit? • WB: write back