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

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
Ligne 1 :
[[File:SIMD2.svg|vignette|Parallélisme de données au niveau de l'unité de calcul. Celle-ci contient plusieurs circuits indépendants qui appliquent la même opération sur des données différentes.]]
 
Nous allons maintenant aborder le parallélisme de données, qui consiste à traiter des données différentes en parallèle. De nombreuses situations s'y prêtent relativement bien : traitement d'image, manipulation de sons, vidéo, rendu 3d, etc. Mais pour exploiter ce parallélisme, il a fallu concevoir des processeurs adaptés.
Les premières architectures matérielles conçues pour le parallélisme de données utilisaient plusieurs processeurs qui exécutaient la même instruction, chacun sur des données différentes. On peut par exemple citer l'exemple des Thinking machines CM-1 et CM-2, qui exécutaient tous la même instruction au même cycle d'horloge sur 64000 processeurs minimalistes. Mais cette solution a de nombreux problèmes : il faut garantir la synchronisation des processeurs, garantir que tous les processeurs exécutent la même instruction (ce qui pose problème quand des branchements sont impliqués, des processeurs pouvant prendre le branchement et pas les autres). De plus, ce genre de solution ne peut être efficace et rentable que sur des grosses données, car elle nécessite des ordinateurs assez chers. N'espérez pas commander ce genre d’ordinateurs pour noël ! Ceci dit, une variante moderne de ces architectures est utilisée sur les cartes graphiques actuelles, dont nous toucherons un mot à la fin du chapitre.
 
Ces architectures ont depuis étés remplacées par des architectures plus simples, où on exécute une instruction sur plusieurs données en parallèle, à l'intérieur d'un processeur. Ces architectures exploitent le parallélisme de données au niveau de l'unité de calcul, celle-ci pouvant exécuter un même calcul sur des données différentes en parallèle. Si on omet quelques exceptions, on peut classer ces architectures dans trois catégories principales : les processeurs à instructions SIMD, les processeurs vectoriels, et les cartes graphiques modernes. Si les processeurs vectoriels sont assez rares de nos jours, tous les processeurs récents incorporent des instructions SIMD. Ne parlons pas des cartes graphiques récentes, qui sont des monstres de puissance de calcul parallèle !
Les premières architectures matérielles conçues pour le parallélisme de données utilisaient plusieurs processeurs qui exécutaient la même instruction, chacun sur des données différentes. On peut par exemple citer l'exemple des Thinking machines CM-1 et CM-2, qui exécutaient tous la même instruction au même cycle d'horloge sur 64000 processeurs minimalistes. Mais ce genre de solution ne peut être efficace et rentable que sur des grosses données, car elle nécessite des ordinateurs assez chers. N'espérez pas commander ce genre d’ordinateurs pour noël !
 
Ces architectures ont depuis étés remplacées par des architectures qui exploitent le parallélisme de données au niveau de l'unité de calcul, celle-ci pouvant exécuter des calculs en parallèle. Nous allons aborder ces architectures dans ce chapitre.
 
==Les instructions SIMD==