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

Contenu supprimé Contenu ajouté
Ligne 204 :
===Un grand nombre de processeurs et d'unités de calculs===
 
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, qui sont justement exécutés par la carte graphique, sur les processeurs de shaders.
[[File:CPU and GPU.png|vignette|Comparaison du nombre de processeurs et de cœurs entre CPU et GPU.]]
 
Une carte graphique contient de nombreux processeurs, qui eux-mêmes contiennent plusieurs unités de calcul. La microarchitecture des processeurs d’une cartede graphiqueshaders 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.
 
[[File:Cpu-gpu.svg|centre|vignette|upright=2.0|Comparaison entre l'architecture d'un processeur généraliste et d'un processeur de shaders.]]
 
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 d'unede carte graphiqueshaders sont des processeurs SIMD.
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.
 
Les processeurs de shaders sont de plus des processeurs multithréadés, c'est à dire conçus pour exécuter nativement plusieurs ''threads'' en parallèles, comme nous l'avons vu dans le chapitre sur les architectures multithreadées et l'''hyperthreading''. L'intérêt du multithreading sur une carte graphique tient dans la lenteur les accès mémoire. Les accès mémoire sont très lents sur une carte graphique, car les GDDR des cartes graphiques sont conçues pour avoir un débit absolument énorme mais une latence pas terrible. Après tout, il faut faire un compromis entre latence et débit, et le débit est plus important quand on manipule de très grandes quantités de donnée. Pour mitiger l’impact de la latence, les processeurs de shaders utilisent le multithreading : quand un thread attend la mémoire, le processeur en lance un autre pour combler le temps d'attente avec des calculs. Les processeurs de shaders sont capables de gérer nativement plusieurs dizaines, voire centaines de threads simultanément.
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 d'une carte graphique sont des processeurs SIMD.
 
===La hiérarchie mémoire d'une carte graphique===