Nous l’avons vu sur la page précédente, parmi les nouveautés introduites par DirectX 10, les plus importantes sont sans nul doute l’unification des shader ainsi que l’arrivée des geometry shader et du stream output qui contribuent toutes à accroître les performances du GPU tout en sollicitant moins le processeur central. Â
Quand les ingénieurs d’NVIDIA ont commencé à concevoir l’architecture du G80 en été 2002, ils ont déterminé un certain nombre d’objectifs importants pour la conception de ce qui allait devenir la série des GeForce 8800. Parmi ces objectifs, on peut le comprendre au vu des caractéristiques de DirectX 10, ce nouveau GPU devait:
- Intégrer un nouveau pipeline nativement compatible avec DirectX 10 (geometry shader, stream output, shaders unifiés ...)
- Etre significativement plus puissant que les générations passées tout en améliorant de façon considérable la qualité d’image.
Pour rendre leur GPU nativement compatible avec DirectX 10, les ingénieurs d’NVIDIA ont fait le même choix que ceux de Microsoft, ils sont eux aussi repartis d’une feuille blanche ou presque...
L’architecture des GPUÂ avant DirectX 10:
Pour mieux comprendre l’intérêt d’un GPU dont l’architecture est unifié comme celui du GeForce 8800, expliquons tout d’abord comment fonctionne le pipeline d’un GPU classique comme ceux que nous avons connus ces vingt dernières années.
Les données destinées à l’affichage 3D sont envoyées par le processeur central et sont traitées étape par étape dans le pipeline ( Voir Schéma ci-dessus).Â
- La première étape de ce pipeline prend tout son sens avec l’arrivée de DirectX 7 et de la GeForce 256 en 1999. Elle servait alors uniquement à traiter le T&L (Transform and Lighting). Par la suite, avec l’avènement de DirectX 8, cette même étape permettait traiter les Vertex Shaders devenus programmables avec l’arrivée des GeForces 3. Pour rappel, les Vertex Shaders permettent de manipuler les vertices (un vertex = des vertices) afin de déformer un objet pour, par exemple, créer un sourire sur un visage ou encore faire bouger de l’herbe avec le souffle du vent. Â
Test des Vertex Shaders complèxe dans 3DMark06Â
- La seconde étape du pipeline permet de créer des points, lignes ou triangles globalement appelés primitives à partir des vertices qui sont aussi des sommets de triangle. On forme ici l’objet sans textures ni effet. Si le rendu 3D s’arrêtait ici, nous aurions un genre de  3D "fil de fer".
- Ensuite, on passe par le Pixel Pipeline (Pixel Shaders) qui permet de traiter les primitives obtenues en deuxième étape pour créer des fragments de pixel. Introduit par DirectX 8, les Pixels Shaders permettent d’obtenir des effets réalistes en temps réel sur les Pixels. A ce stade, ce ne sont d’ailleurs pas vraiment des pixels mais plutôt les valeurs de certaines informations concernant ces pixels. Pour donner un exemple concret et simple, le Flat Shading (voir schéma ci-dessus) assignent une couleur à un polygone ce qui permet de voir les facettes de l’objet 3D et donc d’attribuer une couleur à chaque fragment de pixel.
- En quatrième étape, le ROP permet de pousser le traitement de nos fragments de pixel encore plus loin. Pour citer quelques exemples, le Z-Buffering (voir schéma ci dessus) permet notamment d’éliminer les partie non visibles de l’objet 3D alors que l’Antialiasing (voir schéma ci-dessus) permet d’éviter l’effet de crénelage couramment appelé effet d’escalier.
- Les fragments de pixels sont considérés comme des pixels à part entière lorsqu’ils sont finalisés et expédiés vers la mémoire vidéo juste avant d’être affichés.
Les pipelines des GPU, même si ils ont été améliorés durant ces 20 dernières années ont toujours fonctionné en traitant les données de manière linéaire sans pouvoir contourner une étape qui ne serait pas nécessaire. Par exemple, ce type d’architecture ne permettait pas de mettre en mémoire les données juste après leur passage dans les unités de traitement des Vertex Shaders pour pouvoir les traiter en plusieurs passes.
Le G80: tout est dans l’unification
Avec l’architecture unifiée voulue par Microsoft et DirectX 10, la donne a considérablement changée. NVIDIA a donc intégré dans son G80 une multitude de petites unités de traitements polyvalentes capables de réaliser des opérations de Vertex Shading, de Pixel Shading, Geometry Shading etc... Au lieu d’être dédiées à une tâche spécifique, ces unités de traitement que l’on appelle ici des Streaming Processors sont programmables et se font attribuer dynamiquement leurs tâches en fonction du besoin de l’application 3D.Â
Exemple d’applications 3D avec (à droite)  et sans Architecture Unifiée (à gauche)Â
De cette manière, comme on le voit dans l’exemple ci-dessus à droite, les unités de traitement sont toutes exploitées à 100% quel que soit la tâche demandée.
L’architecture du G80: Streaming Processors, GigaThread, Texture Units, ROPs et beaucoup de transistors. Â
Dans les paragraphes précédents, nous avons évoqué une architecture unifiée et programmable, capable de traiter des données en plusieurs passes, le tout avec des unités de traitement polyvalentes appelées streaming processors qui réalisent des opérations de Vertex Shading, de Pixel Shading ou encore de Geometry Shading selon les besoin de l’application 3D. Voyons maintenant comment tout cela prend forme dans le G80... C’est la version GTX de la GeForce 8800 qui sera étudiée ici. Â
Architecture du G80 qui équipe les GeForce 8800
La première chose qui saute aux yeux, c’est la complexité apparente de cette architecture par rapport aux modèles de pipeline que nous avons connus jusqu’à aujourd’hui.Â
Â
GigaThread & 128 Streaming Processors Â
Nous l’avons déjà vu plus haut, les streaming processors (processeurs de flux) sont capables de traiter en parallèle toutes sortes d’opérations de shading (pixel, geometry, vertex). Au nombre de 128, les Streaming Processors (représentés en vert sur le schéma ci-dessus) sont de type scalaire et sont cadencés à 1,35 GHz, soit 2,34 fois plus rapidement que le GPU lui même dont la fréquence atteind 575 MHz. Lorsqu’une opération de shading est demandée par l’application, le G80 décompose la tâche à exécuter en flux qui sont aussitôt prix en charge par les streaming processors. Chaque streaming processor peut reprendre un flux déjà traité par un autre processeur de flux grâce au GigaThread (Voir la flèche verte sur le schéma ci-dessus). Il s’agit là encore de coller au cahier des charge de DirectX 10 et la fonction Stream Outpout. On constate aussi que Streaming Processors ont été regroupés par 8 dans des blocs assemblés par 2 soit un total de 16 Streaming Processors. Passons maintenant à l’étude un peu plus détaillée de ces blocs.
Texture Filtering Units & Texture adresses Units
Comme vous l’aurez peut-être remarqué sur le schéma ci-dessus, les blocs de 8 processeurs de flux sont épaulés par 2 unités d’adressage des textures et 4 unités de filtrage des textures (voir schéma ci-dessous), ce qui porte à 64 le nombre d’unité de filtrage des textures et donc le nombre pixels traités par cycle. Le G80 sera donc environ 2,6 fois plus rapide qu’une GeForce 7900 qui traite 24 pixels par cycle.Â
Contrairement aux processeurs de flux, les unités de texture sont cadencées à 575MHz comme le GPU dans sa version GTX. Les unités de texture sont donc découplées des processeurs de flux ce qui permet au G80 de filtrer et d’adresser les textures tout en travaillant sur les shaders (Voir schéma ci-dessous). Il s’agit là encore de traiter les informations simultanément sans les latences induites par les anciens pipelines comme celui que nous vous avons décrit plus haut.
ROP (rasterization), Filtrage (moteur Lumenex) et Mémoire.
Sur le schéma de l’architecture du G80 vu plus haut, les ROP sont situés juste à  gauche du cache L2. Ils ne sont logiquement pas intégrés dans les blocs constitués par les processeurs de flux et les unités de texture.Â
Leur rôle est assez identique à celui qui leur était attribué dans les anciens pipelines.  Les 6 blocs de ROP présents dans le G80 permettent de placer 24 pixels finalisés par cycle en mémoire (16 sous pixels, soit 4 pixels complets par unité, soit 6*4 = 24 pour le GPU complet) contre 16 pour un G71 (GeForce 7900).
Comme nous l’avons vu plus haut en étudiant la structure des anciens pipelines, le ROP gère aussi un certain nombre d’effet de filtrage comme le Z-buffering, l’antialiasing etc...  Le G80 apporte aussi de nombreuses améliorations à ces modes de filtrage. NVIDIA en a d’ailleurs profité pour les regrouper sous une nouvelle appellation : le moteur Lumenex. Sans rentrer dans le détail, on trouve ainsi un nouveau type de filtrage appelé coverage sample anti aliasing (CSAA) qui améliore la précision de l’antialiasing avec les modes (8x, 8xQ, 16x, 16xQ), l’anti-crénelage est dorénavant utilisable en même temps que les effets de rendu HDR et enfin le filtrage anisotropique a considérablement été amélioré (Voir ci-dessous).Â
Filtrage anisotropique d’une geforce 7 (à gauche) opposé à celui d’une GeForce 8 (à droite).
Terminons ce chapitre par le contrôleur mémoire qui a logiquement évolué avec les unités de ROP. Chacun des 6 blocs de ROP sont interfacés sur 64 bits, ce qui fait que notre mémoire est interfacée sur 6*64 bits, soit sur 384 bits.
Quelques chiffres et beaucoup de transistors
Pour concevoir une telle puce, NVIDIA a utilisé un nombre de transistor complètement effarant puisque la version GTX de la GeForce 8800 n’intègre pas moins de 681 millions de transistors. Avec 278 millions de transistors seulement, la geforce 7900 GTX fait pâle figure à côté d’un tel monstre de technologie. Même le processeur Intel QX6700 n’arrive pas à faire mieux avec 560 millions de transistors environ. Avec autant de transistor, le GPU gravé en 90 nm est tout simplement énorme et consomme plus qu’une GeForce 7950 GX2 qui rappelons-le est composé de deux GPU ! NVIDIA conseille d’ailleurs une alimentation de 450 watts pourvue de 2 connecteurs d’alimentation PCI-Express.Â
Les déclinaisons de la GeForce 8800 GTX.Â
Ce GPU a été décliné sur trois carte graphiques : la GeForce 8800 GTX, la GeForce 8800 GTS 640 Mo et enfin la petite dernière la GeForce 8800 GTS 320 Mo.
NVIDIA a proposé deux versions du G80 dès la sortie de ses nouvelles cartes graphiques. La GeForce 8800 GTX que nous avons largement détaillée tout au long de cette page et la GeForce 8800 GTS 640 Mo qui intègre le même GPU mais avec quelques fonctions désactivées.Â
Si la GeForce 8800 GTX comporte 128 processeurs de flux, la GeForce 8800 GTS en compte seulement 96. Les untités de ROPS sont donc logiquement revues à la baisse avec 20 unités au lieu de 24. Avec un nombre de ROPS plus bas, la GeForce 8800 GTS n’a pas la capacité de générer autant de pixels que sa grande soeur la GeForce 8800 GTX. De ce fait, il n’y a pas besoin d’autant de mémoire et la carte est pourvue de 640 Mo au lieu de 768. Pour finir les fréquences du GPU et de la mémoire ont aussi été revues à la baisse. Le GPU est cadencé à 500 MHz au lieu de 575 alors que la mémoire est cadencée 800 MHz au lieu de 900.
Enfin, la GeForce 8800 GTS 320 Mo qui vient de sortir, reprend exactement les mêmes caractéristiques que sa grande soeur, la GeForce 8800 GTS 640 Mo. La différence entre les deux modèles se tient donc uniquement dans la mémoire qui passe du simple au double. Les deux cartes devraient donc avoir des performances très proches dans les basses résolutions et la différence devrait se faire sentir avec de hautes résolutions et/ou de jeux gourmands en texture. Des effets comme l’antialiasing devraient contribuer à creuser un peu plus l’écart.  Â
Vous trouverez ci-dessous un récapitulatif des caractéristiques des trois modèles disponibles aujourd’hui.
Caractéristiques | NVIDIA 8800 GTX | NVIDIA 8800 GTS 640 Mo | NVIDIA 8800 GTS 320Mo |
Interface | PCI-E 16x | PCI-E 16x | PCI-E 16x |
Compatibilité | DirectX 10 | DirectX 10 | DirectX 10 |
Gravure | 90 Nm | 90 Nm | 90 Nm |
Transistors | 681 millions | 681 millions | 681 millions |
Fréquence GPU | 575 MHz | 500 MHz | 500 MHz |
Fréquence Streaming Processors | 1350 MHz | 1200 MHz | 1200 MHz |
Pixels pipelines | 128 | 96 | 96 |
Vertex Pipelines |
ROPs | 24 | 20 | 20 |
Mémoire embarquée | 768 Mo | 640 Mo | 320 Mo |
Interface mémoire | 384 bits | 320 bits | 320 bits |
Fréquence mémoire | 900 MHz | 800 MHz | 800 MHz |
Prix Moyens Constatés | 525 € | 420 € | 319 € |