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

Contenu supprimé Contenu ajouté
Ligne 63 :
===Des unités de calcul autrefois spécialisée, puis devenus banalisées===
 
Même les premiers processeurs de ''shaders'' disposaient de plusieurs unités de calculs séparées, capables de faire des calculs en parallèle. UnMais bonces exempleunités estétaient conçues pour le processeurrendu de3D, verticesles deopérations laqu'elles Geforcefaisaient 6800,étés illustréprévues ci-dessouspour cet objectif. OnLes voitprocesseurs queprincipaux le(CPU) processeurd'un contientordinateur troissont unitéscapables de calculsfaire séparéesbeaucoup :de unecalculs unitéarithmétiques d'accèssimples, mémoirecomme pourdes lireadditions, lesdes texturesmultiplications, une unité pour lesdes opérations mathématiquesbit-à-bit, complexeséventuellement (divisiondes divisions, racineetc. carrée,Mais racineil carréeest inverse,rare autres)qu'ils etsoient enfincapables unede unitéfaire pourdes leopérations calculplus ''Multiply-And-Add''complexes, (unecomme multiplicationdes suiviecalculs d'unetrigonométriques, des additionexponentielles, opérationdes trèslogarithmes, courantedes enracines 3D).carrées Onou voitracines quecarrées lesinverse, unitésetc. deDe tels calculs sont assezrares spécialisées,dans avecles uneprogrammes ouexécutables plusieurshors-rendu unités3D généralistes,ou secondéetraitement pard'image et créer des unitésinstructions capablesspécifiques dene fairevaudrait despas le coup, alors que les calculs spécialisésarithmétiques simples y sont légion.
 
Mais pour les unités de calculs des processeurs de ''shaders'', ce n'est pas le cas. Les instructions de calcul arithmétiques sont nécessaires, mais le gros du travail demande d'effectuer des opérations complexes. Il faut dire que le rendu 3D demande pas mal de calculs trigonométriques, de produits scalaires ou d'autres opérations. Aussi, les processeurs de''shaders'' disposent souvent d'une unité de calcul spécialisée dans les calculs complexes (exponentielle/logarithme, racine carrée, racine carrée inverse, autres), parfois de plusieurs. De plus, on trouve souvent une unité de calcul spécialisée dans l’opération ''Multiply-And-Add'' (une multiplication suivie d'une addition, opération très courante en 3D, notamment dans le calcul de produits scalaires). Un bon exemple est le processeur de ''vertex shader'' de la Geforce 6800, illustré ci-dessous. On voit que le processeur contient une unité d'accès mémoire pour lire les textures, avec deux unités de calcul : une unité pour les opérations mathématiques complexes et une unité pour le calcul ''Multiply-And-Add''. On voit que les unités de calculs sont assez spécialisées, avec une ou plusieurs unités généralistes, secondée par des unités capables de faire des calculs spécialisés.
 
[[File:GeForce 6800 Vertex processor block.png|centre|vignette|upright=2.0|Processeur de shader (vertex shader) d'une GeForce 6800. On voit clairement que celui-ci contient, outre les traditionnelles unités de calcul et registres temporaires, un "cache" d'instructions, des registres d'entrée et de sortie, ainsi que des registres de constante.]]