« Les cartes graphiques/Les processeurs de shaders » : différence entre les versions

m
(typo)
Outre le jeu d’instruction, la conception interne (aussi appelée microarchitecture) des processeurs de shaders possède quelques particularités idiosyncratiques. Rien de bien déroutant pou qui a déjà étudié les architectures à parallélisme de données, mais quelques rappels ou explications ne peuvent pas faire de mal.
 
Les cartes graphiques modernes, programmables, sont des architectures massivement parallèles,. àIl savoirfaut qudire que chaque triangle ou pixel d'ellesune sontscène capables3D depeut faireêtre untraité trèsindépendamment granddes nombreautres, ce qui rend le traitement 3D fortement parallèle. De fait, une carte graphique est conçue pour effectuer un maximum de calculs simultanésen parallèle, durantquitte leà mêmeréduire cyclela dpuissance pour des calculs séquentiels (ceux qu'horlogeeffectue un processeur). IlTpiquemùent, fautles direcartes quegraphiques chaquerécentes verticeincorporent outoutes pixelles peuttechniques êtrede traitéparallélisme indépendammentde desdonnée autresau niveau matériel : elles ont plusieurs processeurs, ceceux-ci quisont rendcapables led’exécuter traitementdes 3Dinstructions fortementSIMD parallèle(ils ne font que cela, à vrai dire), et j'en passe. CelaEt cela a quelquesdes conséquences sur le nombre de processeurs et d'unités de calcul, ainsi que sur la hiérarchie mémoire. L'architectureDéjà, doitla êtrecarte conçuegraphique pourcontient pouvoirun effectuertrès ungrand maximumnombre de calculsprocesseurs enet parallèle,d'unités quittede àcalcul. simplifierDe fortementplus, lahiérarchie puissancemémoire pour des calculs séquentiels (ceux qud'effectueune uncarte processeur). La hiérarchie mémoiregraphique doit aussi 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 !
 
L'architecture d'une carte grahiquegraphique 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 le 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.]]
40 957

modifications