pour comprendre le principe du pipelining il ya 2 questions trés importantes :
-1 pourquoi le pipelining améliore t-il la performance ?
-2 quelles sont les limites de l'amelioration de performance offerte par le pipelining ?
la solution est la suivante:
-1) dans un processeur non pipeliné ,chaque instruction doit etre entiérement exécutée avant que l'execution de la suivante ne puisse commencer .dans un processeur pipelinée l'execution de l'instruction est décomposée en plusieurs etapes correspondant aux étages du pipeline. dés que le premier étage est franchi,l'instruction suivante peut entamer son exécution en y accédant a son tour.ceci augmente la vitesse.
-le pipelining devise le chemin de donneés d'un processeur en étages séparé par des latches.dans un processeur non pipeliné, une instruction doit etre capable de parcourir la totalité du chemin de données en un seule cycle d'horloge . dans un processeur pipeliné , l'instruction doit simplement pouvoir passer a l'etage suivant a chaque cycle ce qui permet au cycle d'horloge d'etre beaucoup plus court .
-2)Il existe deux limites principales.Tout d'abord a mesure que le nombre d'etages du pipeline augmente , la fraction que represente la latence des latches de chaque étage devient plus importante .
-la deuxiéme limite provient des dependances de données et des délais de branchement .les instructions qui dépendent des résultats d'autre instructions attendre que ces derniéres aient terminées leur éxecution et provoquent dans ce cas des blockages de pipeline .par ailleurs ,les instructions qui suivent les branchements doivent attendre que ces branchements se terminent pour pouvoir etre insérer dans le pipeline .ces différent retard améneront le pipeline a exécuté moin d' une instruction par cycle en moyen ,ce qui implique q'une plus grande partie du temp du processeur sera consacrée a attendre les deblocages du pipeline.
-comment calculer le temp de l'exécution d'une sequence d'instructions ?