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

m
===Jeu de registres===
 
Un processeur de shaders contient beaucoup de registres, sans quoi il ne pourrait pas faire son travail efficacement. Sur les processeurs de vertices des anciennes cartes 3D, il existait un grand nombre de registres spécialisés. Certains registres étaient spécialisés dans le stockage des vertices, d'autres dans le stockage des résultats de calculs, d'autres dans le stockage de constante, etc. Il y avait bien quelques registres généraux, sans fonction préétablie, mais ils étaient secondés par un grand nombre de registres spécialisés assez nombreux. De nos jours, ce n'est plus le cas : tous les registres sont banalisés et peuvent stocker toute donnée utile. Les registres spécialisés ont disparus. Le fait est que l'usage de registres spécialisés a perdu de son intérêt avec l'unification des ''shaders'', certains registres n'ayant de sens que pour les vertices et rien d'autre.
Un processeur de shaders contient deux types de registres :
 
*Les registres des registresprocesseurs généraux,de quivertices peuvent mémoriserse toutclasser typeen deplusieurs donnéestypes ;:
* des registres d'entrée, qui réceptionnent les vertices ou pixels ;
* des registres de sorties, dans lesquelles le processeur stocke ses résultats finaux ;
* des registres qui servent à stocker des constantes.
 
* des ''registres généraux'', qui peuvent mémoriser tout type de données ;
Un processeur de shaders contient, en plus des registres généraux, des '''registres de constantes''' pour stocker les matrices servant aux différentes étapes de transformation ou d'éclairage. Ces constantes sont placées dans ces registres lors du chargement du vertex shader dans la mémoire vidéo : les constantes sont chargées un peu après. Toutefois, le vertex shader peut écrire dans ces registres, au prix d'une perte de performance particulièrement violente. Le choix du registre de constante à utiliser s'effectue en utilisant un '''registre d'adresse de constante'''. Celui-ci va permettre de préciser quel est le registre de constante à sélectionner dans une instruction. Une instruction peut ainsi lire une constante depuis les registres constants, et l'utiliser dans ses calculs.
* des ''registres d'entrée'', qui réceptionnent les vertices ou pixels ;
* des ''registres de sortiessortie'', dans lesquelles le processeur stocke ses résultats finaux ;
* des ''registres de constantes'' qui, comme leur nom l'indique, servent à stocker des constantes.
 
Un processeur de shadersvertices contientcontenait, en plus des registres généraux, des '''registres de constantes''' pour stocker les matrices servant aux différentes étapes de transformation ou d'éclairage. Ces constantes sont placées dans ces registres lors du chargement du vertex shader dans la mémoire vidéo : les constantes sont chargées un peu après. Toutefois, le vertex shader peut écrire dans ces registres, au prix d'une perte de performance particulièrement violente. Le choix du registre de constante à utiliser s'effectue en utilisant un '''registre d'adresse de constante'''. Celui-ci va permettre de préciser quel est le registre de constante à sélectionner dans une instruction. Une instruction peut ainsi lire une constante depuis les registres constants, et l'utiliser dans ses calculs.
<gallery widths=500px heights=300px>
 
[[File:Geforce 3 architecture vertex unit.PNG|centre|vignette|upright=2.0|Architecture d'un processeur de shaders avec accès aux textures.]]
GeForce 6800 Vertex processor block.png|thumb|centre|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.
</gallery>
 
==Microarchitecture==
40 954

modifications