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

Contenu supprimé Contenu ajouté
Ligne 66 :
===Les registres des processeurs de shaders===
 
Un processeur de shaders contient beaucoup de registres, sans quoi il ne pourrait pas faire son travail efficacement. SurLes lesanciennes processeurscartes degraphiques verticesavaient desbeaucoup anciennesde cartesregistres 3Dspécialisés, ilc'est existaità undire grandque nombrechaque deregistre registresavait spécialisés.une Certainsfonction registresbien étaientdéfinie spécialiséset dansne lepouvait stockagestocker desqu'un vertices,type d'autresde dansdonnée lebien stockageprécise. desMais résultatsavec l'évolution de calculs,Direct X et d'autresOpen dansGL, leles stockageregistres sont devenues de constante,moins etc.en Ilmoins yspécialisés avaitet biensont quelquesdevenues des registres généraux, sans fonction préétablieinterchangeables, mais ils étaient secondés par un grand nombrecapables de registresstocker spécialisésdes assezdonnées nombreuxarbitraires. 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 ontsont disparu.devenus Leanecdotique, faitcar est que l'usage de registres spécialisésleur a perdu de son intérêt avec l'unification des ''shaders'', certains: la plupart des registres spécialisés n'ayantavaient de sens que pour les vertices et rien d'autre.
 
===Les anciennes cartes graphiques : beaucoup de registres spécialisés====
Les registres des processeurs de vertices peuvent se classer en plusieurs types :
 
Sur les processeurs de vertices des anciennes cartes 3D, 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. Certains é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 constantes, etc. Les registres spécialisés des processeurs de vertices peuvent se classer en plusieurs types :
* des ''registres généraux'', qui peuvent mémoriser tout type de données ;
* des ''registres d'entrée'', qui réceptionnent les vertices ou pixels ;
Ligne 78 ⟶ 79 :
 
[[File:Geforce 3 architecture vertex unit.PNG|centre|vignette|upright=2.0|Architecture d'un processeur de shaders avec accès aux textures.]]
 
====Les cartes graphiques modernes : une hiérarchie de registres généralistes====
 
De nos jours, les processeurs de shaders utilisent une hiérarchie de registres. On trouve d'abord quelques '''bancs de registres locaux''' (''Local Register File''), directement connectés aux unités de calcul. Ces derniers sont reliés à un banc de registres plus gros, le '''banc de registre global''', qui sert d'intermédiaire entre la mémoire RAM et les bancs de registres locaux. La différence entre les bancs de registres locaux/globaux et un cache vient du fait que les caches sont souvent gérés par le matériel, tandis que ces bancs de registres sont gérés via des instructions machines. Le processeur dispose d'instructions pour transférer des données entre les bancs de registres ou entre ceux-ci et la mémoire. Leur gestion peut donc être déléguée au logiciel, qui saura les utiliser au mieux.