« Fonctionnement d'un ordinateur/Les architectures à parallélisme de données » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 157 :
===Une unité de calcul pipelinée===
 
[[File:Vectorsimdpipeline.png|vignette|Illustration du pipeline interne d'un processeur vectoriel.]]
La différence entre processeur vectoriel et SIMD tient dans la façon dont sont traités les vecteurs : les instructions SIMD traitent chaque élément en parallèle, alors que les processeurs vectoriels pipelinent ces calculs ! Par pipeliner, on veut dire que l’exécution de chaque instruction est découpée en plusieurs étapes indépendantes : au lieu d'attendre la fin de l’exécution d'un opération avant de passer à la suivante, on peut ainsi commencer le traitement d'une nouvelle donnée sans avoir à attendre que l'ancienne soit terminée.
 
La différence entre processeur vectoriel et SIMD tient dans la façon dont sont traités les vecteurs : les instructions SIMD traitent chaque élément en parallèle, alors que les processeurs vectoriels pipelinent ces calculs ! Par pipeliner, on veut dire que l’exécution de chaque instruction est découpée en plusieurs étapes indépendantes. : auAu lieu d'attendre la fin de l’exécution d'un opération avant de passer à la suivante, on peut ainsi commencer le traitement d'une nouvelle donnée sans avoir à attendre que l'ancienne soit terminée.
<gallery widths=450px heights=200px>
 
Vectorsimdpipeline.png|Illustration du pipeline interne d'un processeur vectoriel.
[[File:Pipeline.png|centre|vignette|upright=2|Pipeline vectoriel.]]
</gallery>
 
Pour donner un exemple, on peut donner l'exemple d'une multiplication flottante effectuée entre deux registres. Son exécution peut être décomposée en plusieurs étapes.
Ligne 174 ⟶ 173 :
[[File:Multiplication vectorielle - pipeline.png|centre|vignette|upright=2|Multiplication vectorielle - pipeline]]
 
Avec une unité de calcul pipelinée découpée en N étages, on peut gérer plusieursN opérationsdonnées simultanées : autant qu'il y a d'étapes différentes. Mais ce nombre maximal d'opérationsde données met un certain temps avant d'être atteint. : lL'unité de calcul met un certaindu temps avant d'arriver à son régime de croisière. Durant un certaince temps, elle n'a pas commencé à traiter suffisamment d’éléments pour que toutes les étapes soient occupées. Ce temps de démarrage est strictement égal du nombre d'étapes nécessaires pour effectuer une instruction. La même chose arrive vers la fin du vecteur, quand il ne reste plus suffisamment d’éléments à traiter pour remplir toutes les étapes.
 
[[File:Startup and dead time vector pipeline.png|centre|vignette|upright=2|Startup and dead time vector pipeline]]