prix

Stéphane Charpentier, Guillaume Louel | 14/05/2007
Accès direct :

Architecture : GeForce 8, rappels

ImageVous avez peut être saisi cette constance depuis le début de notre article : le lancement de ce R600 est une accumulation de paradoxes. ATI est en retard sur le lancement de ces puces DirectX 10 alors même qu’ils étaient très présents dans l’écriture de la spécification auprès de Microsoft. Un rapprochement lié au fait qu’ATI a développé pour ce même Microsoft le Xenos, la puce graphique qui prend place à l’intérieur des Xbox 360.

Bien qu’elle ne soit pas une puce DirectX 10, la puce graphique de la Xbox 360 en reprenait certaines grandes lignes. A commencer par l’unification des shaders (les petits programmes exécutés par la carte graphique pour réaliser le rendu). Vous le savez, DirectX 10 propose deux nouveautés majeures sur ce point. La première est l’ajout d’un nouveau type de shaders, ceux dits de géométrie. Ils s’insèrent entre ceux de vertex (les coordonnées 3D) et ceux de pixels (les pixels rendus sur l’écran) et servent à gérer et générer de la géométrie.

L’autre grosse nouveauté concerne les programmeurs. Dans un souci de simplification, Microsoft a procédé à l’unification des langages de programmation de ces trois types de shaders. Ils sont donc désormais identiques. Au-delà des développeurs de jeux, cela impose aux constructeurs de cartes graphiques de gérer tous ces shaders de manière unifiée au niveau de leurs drivers. Par contre, Microsoft n’impose strictement rien au niveau du matériel.

Même si Microsoft n’impose rien, il conseille cependant fortement aux constructeurs de réaliser cette unification au niveau du matériel. Ce qui veut dire passer d’un modèle où l’on dispose d’unités dédiées respectivement à une seule tâche (vertex, géométrie et pixels) à un modèle unifié : un seul type d’unités pour gérer toutes les tâches. Cela permet un design plus simple et n’est pas sans conséquences sur les performances de la puce.

Selon les jeux, la charge graphique au niveau des shaders peut varier. Certains insisteront sur les tâches de géométrie alors que d’autres abuseront des pixels shaders. Du coup, les constructeurs doivent trouver un compromis sur le nombre d’unités, les dernières cartes DirectX 9 choisissant souvent un ratio de 1 : 3 entre les unités de vertex et de pixels. L’avantage de l’unification est que les unités peuvent se consacrer, selon les besoins, à tous les types de shaders. Le Xenos d’ATI était donc la première puce unifiée. Les Radeon X1800 avaient également fait un bon pas dans ce sens, sans pour autant être vraiment unifiées. Du côté de Nvidia, on a également choisi l’unification au niveau matériel. Cependant, les designers ont été un peu plus loin en décidant de découper encore plus les traitements.

Vecteurs, scalaires, co-issue



Avant d’aller plus loin, un petit point de définition. Un GPU travaille principalement sur des tableaux de données. Par exemple, pour un pixel, on va avoir ce que l’on appelle un tableau à une dimension comprenant quatre membres :

vecs
Quatre composantes dans un seul vecteur

Nous avons ici quatre composantes pour le rouge, le vert, le bleu et la couche alpha. Les unités de calcul des GPU sont capables d’appliquer un traitement identique à ces quatre composantes en une seule fois. On parle alors de traitement dit vectoriel. Ce n’est pas un concept unique au monde de la carte graphique, c’est également celui utilisé par les instructions de type SSE dans les processeurs d’AMD et d’Intel.

Le fait est que bien souvent, les instructions des shaders ne vont pas forcément concerner toutes les composantes. C’est pour cela que les GPU précédant DirectX 9 géraient ce que l’on appelle le co-issue : la capacité de décrire la manière dont deux instructions seront calculées en simultané. On pouvait, pour rester dans notre exemple des pixels, appliquer un traitement différent aux valeurs RGB (les trois ensemble, on parle de vec3) et à la couche alpha (on parle, plutôt que de vec1, d’opération scalaire c'est-à-dire sur une seule valeur). Depuis DirectX 9, la possibilité de le spécifier au niveau du langage de programmation a disparu : c’est le compilateur HLSL qui doit optimiser et gérer ces situations.

vecs
Un vecteur de trois composantes et une unité scalaire

Techniquement, les GeForce 7 et les X1900 utilisaient des unités que l’on pouvait qualifier de 3+1, une unité vectorielle capable de traiter trois valeurs, et une unité scalaire capable de traiter indépendamment la dernière. Avec le GeForce 8, Nvidia a été plus loin en proposant des unités dites totalement scalaires. Si l’on voulait conserver notre notation, on parlerait alors de 1+1+1+1.

vecs
Quatre unités scalaires séparées
Réagissez à cet article ICI
 
 
 

Actualités relatives