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

Contenu supprimé Contenu ajouté
Ligne 196 :
==Les cartes graphiques modernes==
 
Les cartes graphiques modernes, programmables, sont des architectures massivement parallèles. Il faut dire que chaque triangle ou pixel d'une scène 3D peut être traité indépendamment des autres, ce qui rend le traitement 3D fortement parallèle. De fait, une carte graphique est conçue pour effectuer un maximum de calculs en parallèle, quitte à réduire la puissance pour des calculs séquentiels (ceux qu'effectue un processeur). Les cartes graphiques récentes incorporent toutes les techniques de parallélisme de donnée au niveau matériel : elles ont plusieurs processeurs, ceux-ci sont capables d’exécuter des instructions SIMD (ils ne font que cela, à vrai dire), et j'en passe. Et cela a des conséquences sur le nombre de processeurs etL'architecture d'unitésune decarte calcul,graphique ainsirécente queest surillustrée laci-dessous. hiérarchieOn mémoire.y Déjà,voit la carte graphique contientprésence d'un très grand nombre de processeurs/cœurs et d'unités de calcul. De plus,une hiérarchie mémoire d'uneassez carteétagée graphiqueavec doitdes gérermémoires un grand nombre d'accès mémoire simultanés : qui dit plein d'instructionslocales en parallèle qui travaillent sur des données indépendantes dit aussi pleincomplément de donnéesla indépendantesmémoire à lire ou écrire !vidéo principale.
 
L'architecture d'une carte graphique récente est illustrée ci-dessous. On y voit plusieurs caractéristiques typiques : un grand nombre de processeurs/cœurs, un grand nombre d'unités de calculs par cœur, et une hiérarchie mémoire assez étagée avec des mémoires locales en complément de la mémoire vidéo principale.
 
[[File:NVIDIA GPU Accelerator Block Diagram.png|centre|vignette|upright=2.0|Ce schéma illustre l'architecture d'un GPU en utilisant la terminologie NVIDIA. Comme on le voit, la carte graphique contient plusieurs cœurs de processeur distincts. Chacun d'entre eux contient plusieurs unités de calcul généralistes, appelées processeurs de threads, qui s'occupent de calculs simples (en bleu). D'autres calculs plus complexes sont pris en charge par une unité de calcul spécialisée (en rouge). Ces cœurs sont alimentés en instructions par un processeur de commandes, ici appelé ''Thread Execution Control Unit'', qui répartit les différents shaders sur chaque cœur. Enfin, on voit que chaque cœur a accès à une mémoire locale dédiée, en plus d'une mémoire vidéo partagée entre tous les cœurs.]]
Ligne 215 ⟶ 213 :
 
===La hiérarchie mémoire d'une carte graphique===
 
La grande quantité de processeurs, cœurs et unités de calcul a des conséquences sur la hiérarchie mémoire, qui doit gérer un grand nombre d'accès mémoire simultanés : qui dit plein d'instructions en parallèle qui travaillent sur des données indépendantes dit aussi plein de données indépendantes à lire ou écrire !
 
La hiérarchie mémoire d'une carte graphique ressemble à celle-ci, si on omet les très nombreux caches spécialisés pôur le rendu 3D et quelques caches généraliste qui se retrouvent un peu partout dans la hiérarchie mémoire.