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

Contenu supprimé Contenu ajouté
Ligne 206 :
Une carte graphique contient de nombreux processeurs, qui eux-mêmes contiennent plusieurs unités de calcul. Savoir combien de cœurs contient une carte graphique est cependant très compliqué, car la terminologie utilisée par les fabricants de carte graphique est particulièrement confuse. Ce qui est appelé cœur ou processeur dans leur terminologie correspond parfois à une unité de calcul, sans doute histoire de gonfler les chiffres. Dans ce qui va suivre, nous allons utiliser le terme "processeur de shaders" pour désigner les processeurs d'une carte graphique. La raison tient dans la terminologie utilisée en rendu 3D. Les '''shaders''' sont des programmes utilisés en rendu 3D, pour calculer certaines scènes 3D, et notamment pour calculer les ombres (d'où leur nom de ''shader'', pour ''shade'' - ombre). Or, ces shaders sont justement exécutés par la carte graphique, sur les processeurs de shaders. Le terme shader a depuis été élargit et désigne aujourd'hui tout programme qui s’exécute sur une carte graphique.
 
Il a existé des cartes graphiques AMD assez anciennes qui utilisaient des processeurs de type VLIW, mais ce n'est plus en odeur de sainteté de nos jours. Mais de nos jours, les processeurs de shaders sont des processeurs SIMD ou des dérivés (la technique dites du SIMT est une sorte de SIMD amélioré). Notons que le jeu d'instruction SIMD utilisé pour coder les shaders a beaucoup évolué dans le temps. Les normes de Direct X et Open GL décrivent l'ensemble des opérations que la carte graphique doit pouvoir réaliser, et cet ensemble a évolué dans le temps. Les premières versions des shaders n'imposaient que quelques instructions très simples, 17 au total, toutes travaillant sur des nombres flottants. Il n'y avait même pas de branchements ou d'accès mémoire proprement dit. Mais avec le temps, l'ensemble s'est étoffé, chaque nouvelle version de Direct X ajoutant de nouvelles instructions aux précédentes. Les shaders actuels sont capables d'effectuer des calculs sur des nombres entiers, des branchements, des accès mémoire, disposent de modes d'adressages typiques des architectures SIMD et même des accès en scatter-gather des architectures vectorielles !
 
La microarchitecture des processeurs de shaders est de plus particulièrement simple. On n'y retrouve pas les fioritures des CPU modernes, tant utiles pour du calcul séquentiel : pas d’exécution dans le désordre, de renommage de registres, et autres techniques avancées. En conséquence, les unités de décodage et/ou de contrôle sont relativement simples, peu complexes. La majeure partie du processeur est dédié aux unités de calcul.