Nvidia GeForce GF100 : la révolution géométrique ?

Tags : Fermi; GF100; Nvidia;
Publié le 18/01/2010 par
Imprimer
4 setup engines !
Avec le GF100, Nvidia est le premier concepteur de GPU à briser la limite d’un triangle par cycle. Par le passé nous avons vu les setup engines gagner en performance, en passant par exemple de 0.5 à 1 triangle par cycle, mais jamais être parallélisés. Le GF100 voit toute cette partie du pipeline graphique être dispersée et passer de la structure globale du GPU au GPC et au SM.

Toute la partie qui concerne le traitement des vertices/triangles prend place dans le Polymorph Engine qui prend place lui-même dans chaque SM. Globalement cela revient à placer une multitude de petites unités au lieu d’une plus grosse. Au niveau des débits théoriques du Polymorph Engine, nous ne savons pas s’il y a un gain par rapport à la solution précédente. Par contre cela permet de paralléliser ces tâches et plus particulièrement la tessellation qui fait son apparition dans ce Polymorph Engine. A ce sujet, Nvidia nous a précisé qu’elle était effectuée dans un bloc d’unités dédiées et non dans les unités d’exécutions globales du SM. Notez cependant que la tessellation en elle-même est une tâche très simple. La complexité repose plutôt dans les Hull et Domain Shader. Nous vous invitons à consulter notre explication détaillée du pipeline de Direct3D 11 et de la tessellation dans le test de la Radeon HD 5800.


Globalement le Polymorph Engine contrôle toutes les étapes successives du pipeline de traitement des vertices : vertex fetch, envoi des vertices dans le SM pour les vertex et hull shaders, tessellation, envoi dans le SM pour les domain et geometry shaders, correction de perspective et optionnellement le stream output qui permet d’enregistrer en mémoire les données géométriques traitées.

Notez que tous les Polymorph Engines sont connectés entre eux et que les primitives qu’ils créent peuvent se déplacer d’un à l’autre et donc d’un SM à l’autre, via le cache L2.


Une fois le traitement de la géométrie terminé, il reste à décomposer les primitives, en général des triangles, en pixels. Cela se passe dans les Raster Engine des GPCs qui prennent en charge, chacun, un triangle par cycle. Lors du setup les équations du triangle sont calculées et les triangles qui tournent le dos à la caméra sont éjectés. Le rasterizer utilise les équations des triangles pour le décomposer en pixels ou en samples si l’antialiasing est activé. Chaque rasterizer peut débiter jusqu’à 8 pixels par cycle ou 64 samples en antialiasing 8x. Ensuite chaque tile (groupe de pixels/samples) est testée pour vérifier si elle n’est pas masquée. Si elle l’est totalement, elle est éjectée par l’unité Z-Cull.

Les 4 Raster Engines sont connectés entre eux ce qui permet de synchroniser leur travail, probablement de partager les informations utilisées au niveau du Z-Cull et de faire découper les très gros triangles par les 4 rasterizers. Précisons à ce sujet que les pixels doivent rester dans le GPC qui contient le rasterizer dont ils sont issus.

Il est intéressant de noter que si le débit en triangle du GF100 est multiplié par 4, son débit au niveau de la rastérisation reste identique à celui du GT200 ou des Radeon HD 5800 : 32 pixels par cycle en tout ou 256 samples en antialiasing 4x. Si les triangles font plus de 8 pixels, ils seront rastérisés en plusieurs cycles. Cela revient au même donc ? Pas vraiment puisque le GF100 va être jusqu’à 4x plus rapide avec des petits triangles. Il disposera également automatiquement d’un Z-Cull plus efficace puisque de plus petits zones seront testées pour la visibilité.

Cette efficacité avec les petits triangles est importante quand la tessellation est utilisée. Cependant nous devons préciser qu’elle est surtout importante avec une implémentation basique de la tessellation qui produit de nombreux petits triangles inutiles. L’avantage bien que toujours présent sera probablement moins important avec des algorithmes adaptatifs qui éviteront justement de créer trop de petits triangles à l’arrière plan pour se concentrer d’ajouter des détails et donc des triangles moins petits à l’avant plan.
Vos réactions

Top articles