Principe
L’exécution d’une instruction est décomposée en une succession d’étapes et chaque étape correspond à l’utilisation d’une des fonctions du microprocesseur. Lorsqu’une instruction se trouvedans l’une des étapes, les composants associés aux autres étapes ne sont pas utilisés. Le fonctionnement d’un microprocesseur simple n’est donc pas efficace.
L’architecture pipeline permet d’améliorer l’efficacité du microprocesseur. En effet, lorsque lapremière étape de l’exécution d’une instruction est achevée, l’instruction entre dans la seconde étape de son exécution et la première phase de l’exécution de l’instruction suivante débute. Il peut donc y avoir une instruction en cours d’exécution dans chacune des étapes et chacun des composants du microprocesseur peut être utilisé à chaque cycle d’horloge. L’efficacité est maximale. Le temps d’exécution d’une instruction n’est pas réduit mais le débit d’exécution des instructions est considérablement augmenté. Une machine pipeline se caractérise par le nombre d’étapes utilisées pour l’exécution d’une instruction, on appelle aussi ce nombre d’étapes le nombre d’étages du pipeline.
Exemple de l’exécution en 4 phases d’une instruction :
Modèle classique :
Modèle pipeliné :
Gain de performance
Dans cette structure, la machine débute l’exécution d’une instruction à chaque cycle et lepipeline est pleinement occupé à partir du quatrième cycle. Le gain obtenu dépend donc du nombred’étages du pipeline. En effet, pour exécuter n instructions, en supposant que chaque instructions’exécute en k cycles d’horloge, il faut :
- n.k cycles d’horloge pour une exécution séquentielle.
- k cycles d’horloge pour exécuter la première instruction puis n-1 cycles pour les n-1
instructions suivantes si on utilise un pipeline de k étages
Le gain obtenu est donc de :
Donc lorsque le nombre n d’instructions à exécuter est grand par rapport à k, on peut admettre qu’on divise le temps d’exécution par k.
Remarques :
Le temps de traitement dans chaque unité doit être à peu près égal sinon les unités rapides doivent attendre les unités lentes.
Exemples :
L’Athlon d’AMD comprend un pipeline de 11 étages.
Les Pentium 2, 3 et 4 d’Intel comprennent respectivement un pipeline de 12, 10 et 20 étages.
Problèmes
La mise en place d’un pipeline pose plusieurs problèmes. En fait, plus le pipeline est long, plus le nombre de cas où il n’est pas possible d’atteindre la performance maximale est élevé. Il existe 3 principaux cas où la performance d’un processeur pipeliné peut être dégradé ; ces cas de dégradations de performances sont appelés des aléas :
- aléa structurel qui correspond au cas où deux instructions ont besoin d’utiliser la
même ressource du processeur (conflit de dépendance),
- aléa de données qui intervient lorsqu’une instruction produit un résultat et que
l’instruction suivante utilise ce résultat avant qu’il n’ait pu être écrit dans un registre,
- aléa de contrôle qui se produit chaque fois qu’une instruction de branchement
est exécutée. Lorsqu’une instruction de branchement est chargée, il faut normalement attendre de connaître l’adresse de destination du branchement pour
pouvoir charger l’instruction suivante. Les instructions qui suivent le saut et qui
sont en train d’être traitées dans les étages inférieurs le sont en général pour rien,
il faudra alors vider le pipeline. Pour atténuer l’effet des branchements, on peut
spécifier après le branchement des instructions qui seront toujours exécutées. On
fait aussi appel à la prédiction de branchement qui a pour but de recenser lors
de branchements le comportement le plus probable. Les mécanismes de prédiction de branchement permettent d'atteindre une fiabilité de prédiction de l'ordre de 90 à 95 %.
Lorsqu’un aléa se produit, cela signifie qu’une instruction ne peut continuer à progresse dans le pipeline. Pendant un ou plusieurs cycles, l’instruction va rester bloquée dans un étage du pipeline, mais les instructions situées plus en avant pourront continuer à s’exécuter jusqu’à ce que l’aléa ait disparu. Plus le pipeline possède d’étages, plus la pénalité est grande. Les compilateurs s’efforcent d’engendrer des séquences d’instructions permettant de maximiser le remplissage du pipeline. Les étages vacants du pipeline sont appelés des « bulles » de pipeline, en pratique une bulle correspond en fait à une instruction NOP (No OPeration) émise à la place de l’instruction bloquée.
L’exécution d’une instruction est décomposée en une succession d’étapes et chaque étape correspond à l’utilisation d’une des fonctions du microprocesseur. Lorsqu’une instruction se trouvedans l’une des étapes, les composants associés aux autres étapes ne sont pas utilisés. Le fonctionnement d’un microprocesseur simple n’est donc pas efficace.
L’architecture pipeline permet d’améliorer l’efficacité du microprocesseur. En effet, lorsque lapremière étape de l’exécution d’une instruction est achevée, l’instruction entre dans la seconde étape de son exécution et la première phase de l’exécution de l’instruction suivante débute. Il peut donc y avoir une instruction en cours d’exécution dans chacune des étapes et chacun des composants du microprocesseur peut être utilisé à chaque cycle d’horloge. L’efficacité est maximale. Le temps d’exécution d’une instruction n’est pas réduit mais le débit d’exécution des instructions est considérablement augmenté. Une machine pipeline se caractérise par le nombre d’étapes utilisées pour l’exécution d’une instruction, on appelle aussi ce nombre d’étapes le nombre d’étages du pipeline.
Exemple de l’exécution en 4 phases d’une instruction :
Modèle classique :
Modèle pipeliné :
Gain de performance
Dans cette structure, la machine débute l’exécution d’une instruction à chaque cycle et lepipeline est pleinement occupé à partir du quatrième cycle. Le gain obtenu dépend donc du nombred’étages du pipeline. En effet, pour exécuter n instructions, en supposant que chaque instructions’exécute en k cycles d’horloge, il faut :
- n.k cycles d’horloge pour une exécution séquentielle.
- k cycles d’horloge pour exécuter la première instruction puis n-1 cycles pour les n-1
instructions suivantes si on utilise un pipeline de k étages
Le gain obtenu est donc de :
Donc lorsque le nombre n d’instructions à exécuter est grand par rapport à k, on peut admettre qu’on divise le temps d’exécution par k.
Remarques :
Le temps de traitement dans chaque unité doit être à peu près égal sinon les unités rapides doivent attendre les unités lentes.
Exemples :
L’Athlon d’AMD comprend un pipeline de 11 étages.
Les Pentium 2, 3 et 4 d’Intel comprennent respectivement un pipeline de 12, 10 et 20 étages.
Problèmes
La mise en place d’un pipeline pose plusieurs problèmes. En fait, plus le pipeline est long, plus le nombre de cas où il n’est pas possible d’atteindre la performance maximale est élevé. Il existe 3 principaux cas où la performance d’un processeur pipeliné peut être dégradé ; ces cas de dégradations de performances sont appelés des aléas :
- aléa structurel qui correspond au cas où deux instructions ont besoin d’utiliser la
même ressource du processeur (conflit de dépendance),
- aléa de données qui intervient lorsqu’une instruction produit un résultat et que
l’instruction suivante utilise ce résultat avant qu’il n’ait pu être écrit dans un registre,
- aléa de contrôle qui se produit chaque fois qu’une instruction de branchement
est exécutée. Lorsqu’une instruction de branchement est chargée, il faut normalement attendre de connaître l’adresse de destination du branchement pour
pouvoir charger l’instruction suivante. Les instructions qui suivent le saut et qui
sont en train d’être traitées dans les étages inférieurs le sont en général pour rien,
il faudra alors vider le pipeline. Pour atténuer l’effet des branchements, on peut
spécifier après le branchement des instructions qui seront toujours exécutées. On
fait aussi appel à la prédiction de branchement qui a pour but de recenser lors
de branchements le comportement le plus probable. Les mécanismes de prédiction de branchement permettent d'atteindre une fiabilité de prédiction de l'ordre de 90 à 95 %.
Lorsqu’un aléa se produit, cela signifie qu’une instruction ne peut continuer à progresse dans le pipeline. Pendant un ou plusieurs cycles, l’instruction va rester bloquée dans un étage du pipeline, mais les instructions situées plus en avant pourront continuer à s’exécuter jusqu’à ce que l’aléa ait disparu. Plus le pipeline possède d’étages, plus la pénalité est grande. Les compilateurs s’efforcent d’engendrer des séquences d’instructions permettant de maximiser le remplissage du pipeline. Les étages vacants du pipeline sont appelés des « bulles » de pipeline, en pratique une bulle correspond en fait à une instruction NOP (No OPeration) émise à la place de l’instruction bloquée.
Jeu 28 Nov - 8:07 par arsenepoutsi
» CCNA version 4 français
Dim 31 Mar - 15:15 par kadhouceeee
» Trés important " Livre exercices en langage C ( claude delannoy) "
Jeu 27 Sep - 16:31 par latifa oustouh
» Ulead VideoStudio 11.5.0157.2 Plus + Crack Collection
Jeu 26 Avr - 9:51 par miloduvi
» Langage IDL(Interface Definition Language)
Mar 27 Sep - 13:02 par Abdelkhalek Bakkari
» demande cours PHP
Jeu 2 Juin - 11:23 par elasriahmed
» exemple page web réaliser avec du html et JavaScript
Lun 30 Mai - 4:05 par ouh.rouchan.zakaria
» cours group2_ 2année 2011
Dim 20 Mar - 15:35 par El Maligno Angelo
» Cours : Infrastructures Réseaux 2003 Server
Mar 15 Fév - 6:55 par jettjackson
» cours officiel de CCNA 2
Mar 18 Jan - 13:53 par agares