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

Contenu supprimé Contenu ajouté
Ligne 205 :
 
Notons que ces processeurs sont utilisés pour les calculs graphiques, mais l'on peut aussi les utiliser pour du calcul scientifique ou toute autre application demandant beaucoup de calculs arithmétiques en parallèle. Depuis l'apparition des technologie CUDA et assimilées, les cartes graphiques ne sont plus limitées aux calculs 3D. Si les anciennes cartes graphiques étaient limitées au rendu 3D, elle avaient techniquement des processeurs capables de faire des calculs assez variés et pouvaient être adaptées à des applications très diverses. Mais l'accès au processeurs de shaders se faisait par l'intermédiaire d'un processeur de commande, qui ne comprenait que les commandes graphiques. On pouvait envoyer des scènes 3D à la carte 3D, la faire exécuter des commandes de rendu graphique codées avec un standard bien précis, mais rien d'autre. Mais de nos jours, le processeur de commande s'est complexifié et peut accepter des commandes très diverses, pas seulement des commandes graphiques, mais aussi des commandes de calcul ou des commandes pour exécuter n'importe quel code sur la carte graphique.
 
===Les processeurs 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. Si on omet cette exception, les processeurs de shaders sont tous 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, avec l'évolution des normes de Direct X et Open GL. Les premières versions des shaders n'imposaient que quelques instructions très simples, 17 au total, toutes travaillant sur des nombres flottants, sans branchements ou 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, des registres de masque, disposent de modes d'adressages typiques des architectures SIMD, incorporent un ''mask register'' et des accès en scatter-gather typiques des processeurs vectoriels. Pour faire simple, ces processeurs de shaders sont un intermédiaire entre processeurs SIMD et processeurs vectoriels : leur jeu d'instruction est celui d'un processeur vectoriel, avec les modes d'adressages et la prédication, mais ils n'utilisent pas d'unité de calcul en pipeline et préférent utiliser des unités de calcul SIMD.