Nvidia GeForce GTX 480 & 470

Publié le 26/03/2010 (Mise à jour le 21/04/2010) par
Imprimer
Tests théoriques
Nouvelle architecture oblige, nous avons exécuté quelques tests théoriques.


Performances texturing
Nous avons mesuré les performances lors de l'accès à des textures de différents formats en filtrage bilinéaire. Nous avons conservé les résultats en 32 bits classique (4x INT8), en 64 bits "HDR" (4x FP16) et en 128 bits (4x FP32). Nous avons ajouté pour information les performances en 32 bits RGB9E5, un nouveau format HDR introduit par DirectX 10 qui permet de stocker des textures HDR en 32 bits avec quelques compromis.


La Radeon HD 5870 se montre ici plus efficace que la Radeon HD 4890 qui était limitée par ses 32 interpolateurs et donc à 27.2 GTexels/s alors que ses unités de texturing sont capables de 34 GTexels/s. Cette limite disparait avec la Radeon HD 5870 puisqu'il n'utilise plus de tels interpolateurs fixes et charge le shader core de cette tâche qui en contrepartie occupe une petite partie de la puissance de calcul.

Les unités de texturing du GF100 affichent ici le même rendement que celles du GT200, à l'exception des textures qui contiennent les données de profondeur (D32F) dont l'accès gagne en performance. Vous remarquerez que les GeForce ne sont pas capables de traiter les textures RGB9E5 à pleine vitesse, contrairement aux Radeon.

Ce que ce test ne montre pas, c'est que sans filtrage, les unités de texturing peuvent débiter chacune 64 bits de données par cycle sur le GF100 contre seulement 32 bits sur le GT200, et ce quel que soit le format.


Performances ROPs
Tout d'abord, nous avons mesuré les performances en débit de données Z :


Les GeForce GTX 480 et 470 sont ici redoutables et rejoingnent les Radeon au niveau de l'efficacité face à la montée du niveau d'antialiasing.

Nous avons ensuite mesuré le fillrate sans et puis avec blending, et ce avec différents formats de données :


Si la Radeon HD 5870 double les débits par rapport à la Radeon HD 4890 en 32 bits, elle est limitée par sa bande passante mémoire en 64 et 128 bits. Vous remarquerez que contrairement aux GeForce, elle est capable de traiter le format HDR économe à base de FP10 à pleine vitesse.

Malgré ses 48 ROPs, la GeForce GTX 480 est limitée à 32 pixels par cycle, voire moins. Avec une fréquence supérieure, elle est étrangement en général un poil derrière la GeForce GTX 285, à 2 exceptions près. La première est avec une surface simple canal de 32 bits où le GF100 gagne en efficacité. La seconde concerne le blending en 128 bits, très gourmand en bande passante mémoire, qui est lui aussi plus efficace.

Etrangement, s'il est normal que les GeForce GTX 400 soient limitées en amont de leurs ROPs, cette limite est à un niveau plus bas que ce à quoi nous nous attendions. Qui plus est, elles sont également incapables de profiter de la totalité de leurs ROPs avec les formats de 64 et de 128 bits, ce que nous ne pouvons pas expliquer. Nous attendons des réponses de Nvidia à ce niveau.

Notez que pour une raison inconnue, les performances de la Radeon HD 5850 en blending avec une surface 4x INT8 sont fortement réduites. Il s'agit probablement d'un bug dans les pilotes d'AMD.


Performances branchements dans un PS
Les GPUs exécutent leurs instructions sur des groupes de threads, de 32 dans le cas des GeForce et de 64 dans celui des Radeon, ce qui est un problème pour les branchements. S'il y a une divergence au niveau de la branche empruntée parmi les threads d'un groupe, les deux branches doivent être calculées successivement, avec un masque pour appliquer le résultat uniquement aux threads qui les empruntent.

Pour mesurer les performances à ce niveau, nous avons développé un petit test qui nous permet de modifier la granularité du branchement dans un pixel shader, c'est-à-dire le nombre moyen, dans notre exemple, de pixels consécutifs qui vont prendre une même branche. Nous spécifions la branche à prendre par colonne virtuelle de pixels, une colonne sur 2 doit afficher un shader complexe et l'autre peut passer cette partie du rendu. Des triangles de taille moyenne en mouvement sont affichés à l'écran et traversent ces colonnes qui utilisent différentes branches, ce qui implique que tant les triangles et leur position que la taille de la colonne influent sur l'efficacité du branchement ce qui est proche d'une situation réelle.


Avec des colonnes étroites, les GPUs ne peuvent pas profiter du branchement pour éviter la partie complexe sur la moitié des pixels, mais par contre doivent traiter les instructions de branchement. Heureusement, tous ces GPUs disposent d'une unité dédiée aux branchements qui travaille en parallèle et masque le coût de ces instructions. Les Radeon semblent cependant les seules à masquer complètement la latence et les instructions des branchements.

Le GF100 de la GeForce GTX 480 gagne encore en efficacité et surpasse la GT200 dans ce test avec des colonnes de 4 pixels de large. La raison vient de ses 4 petits rasterizers qui travaillent sur des plus petits groupes de pixels et augmentent dans ce test la probabilité de former des groupes de 32 pixels qui ne divergent pas. Attention cependant, cette particularité de l'architecture peut également se retourner contre elle dans le cas de pixel shaders hyper optimisés pour tirer partie de la méthode de rastérisation du GT200 par exemple.
Vos réactions

Top articles