NVIDIA G80 : Au-delà des Streaming Processors…
Bien sûr l'architecture du G80 ne se résume pas aux seuls Streaming Processors, chacun des blocs regroupant les « Streaming Processor » comportant également quatre unités de texture. Totalement découplées des
Processeurs de flux, et fonctionnant à 575 MHz sur le GeForce 8800 GTX, les unités de texture bilinéaire sont au nombre total de 64 et sont en réalité groupées deux par deux. Ce nombre impressionnant d'unités de texture permet à NVIDIA de revendiquer la possibilité de traiter 64 pixels par cycle d'horloge pour le filtrage des textures ou encore 32 pixels par cycle d'horloge pour l'adressage des textures. Ces chiffres sont à mettre en rapport avec la capacité du GeForce 7900 à traiter 24 pixels par d'horloge pour le simple filtrage. Nous le mentionnons un peu plus haut, les unités de textures sont découplées des processeurs de flux. Ce détail n'est pas anodin puisqu'il permet de sauvegarder des cycles GPU lors des opérations d'adressage des textures ou encore lors des opérations de filtrage, par exemple. Avec une puce graphique classique comme le GeForce 7, un calcul pour adresser une texture s'intercalait en général avec les opérations de traitement arithmétique des shaders empêchant ainsi l'utilisation d'un processeur de shader avant que les textures ne soient rappatriées. Grâce au fonctionnement découplé des unités de texture et des « Streaming Processsor », le GeForce 8 peut masquer de manière plutôt efficace les temps de latence induits par l'accès aux textures.
Aperçu d'un bloc de calcul du G80 et fonctionnement découplé des unités de texture
Continuons notre tour d'horizon de l'architecture G80 en évoquant les ROP. Séparées des blocs de calcul comportant les fameux processeurs de flux, les partitions ROP (Raster Operation) sont au nombre de six et leur rôle consiste toujours à écrire les pixels en mémoire, autrement dit la dernière opération requise pour générer une image. Du côté des caractéristiques, NVIDIA indique que les six unités ROP du G80 peuvent traiter 4 pixels chacune pour un total de 24 pixels par cycle d'horloge lors du traitement de pixels complets (couleurs et Z). Au cas où seul le traitement Z est appliqué, les ROP du GeForce 8800 peuvent débiter 192 pixels par cycle d'horloge avec un échantillon par pixel. Rappelons que face aux 24 ROP du GeForce 8, le GeForce 7 disposait de 16 unités.
En plus de l'Early-Z précédemment évoqué, NVIDIA a également apporté des améliorations au traditionnel Z-Culling qui reste d'actualité, puisqu'aucune des deux méthodes ne peut déterminer toutes les situations d'occlusion au niveau d'un pixel individuel. La firme au caméléon revendique une vitesse de traitement quatre fois supérieure face au GeForce 7900 GTX pour tester la visibilité des pixels. Le but étant toujours de vérifier si un pixel n'est pas caché par un autre afin d'éviter de gaspiller inutilement des ressources GPU pour l'affichage d'un pixel qui sera finalement invisible à l'œil. Le sous-système ROP du G80 gère naturellement les fonctions d'anticrénelage en multi-échantillonnage (MSAA) ou super-échantillonnage (SSAA) sans oublier l'anticrénelage de transparence. Pour le rendu HDR, les mélanges des render targets en FP16 et FP32 sont logiquement pris en charge par les ROP et, comme les spécifications DirectX 10 l'imposent, 8 cibles de rendu (MRT ou Multiple Render Targets) peuvent être utilisées.
Enfin, la notion de contrôleur mémoire évolue également avec le GeForce 8, puisque la puce, dans sa version GTX, comporte six partitions mémoire en corrélation avec les six partitions ROP. Chacune des partitions dispose d'une interface 64 bits faisant du GeForce 8800 GTX une puce dont le contrôleur mémoire est finalement interfacé sur 384 bits. Si NVIDIA ne franchit pas (encore ?) le pas du contrôleur mémoire Ring Bus, cela permet à la firme de doter la carte haut de gamme de 768 Mo de mémoire GDDR3. NVIDIA n'a en effet pas non plus sauté le pas vers la GDDR4 même si cette mémoire est dores et déjà gérée par la puce.