Accueil » Dossier » GPU haut de gamme : ATI VS nVidia » Page 7

GPU haut de gamme : ATI VS nVidia

1 : Introduction 2 : Architectures 3 : Architectures (suite) 4 : Filtrage des textures 5 : AntiAliasing 6 : Le test 8 : Tests pratiques 9 : Tests pratiques (suite) 10 : Cartes Asus, bruit, overclocking 11 : Bilan, conclusion

Performances synthétiques

GPU6800 Ultra6800 GTX800XTR9700 Pro
Fréquence GPU425 MHz (Asus)350 MHz520 MHz325 MHz
Fréquence mémoire550 MHz500 MHz560 MHz310 MHz
Largeur bus mémoire256 bits256 bits256 bits256 bits
Type de mémoireGDDR3GDDR3GDDR3DDR1
Nombre de Pixel Pipelines1616168
Nombre d’unités de Texture Sampling1111
Nombre de processeurs de vertex6664
Fillrate théorique6800 MPixels5600 Mpixels8320 MPixels2600 MPixels
Bande passante mémoire35,2 Go/s32 Go/s35,8 Go/s19 Go/s
Ratio fillrate / bande passante mémoire 182175232137
Nombre de transistors222 millions222 millions160 millions107 millions
Process0.13µ0.13µ0.13µ low-k0.15µ

Une constatation s’impose déjà à la vue de ce tableau : les nouvelles génération de GPU progressent bien plus au niveau de la puissance du GPU que de la bande passante mémoire. C’est une évolution logique maintenant que la bande passante mémoire ne constitue plus vraiment un goulet d’étranglement ; d’ailleurs Samsung est officiellement capable de produire des puces mémoires GDDR3 allant jusqu’à 800 MHz.

La X800XT est particulièrement impressionnante à ce titre, puisqu’elle double le nombre de pipelines par rapport à l’ancienne génération R3X0, tout en augmentant encore la fréquence GPU. Chez nVidia, le fillrate est un peu moins élevé du fait d’une fréquence GPU plus faible (222 millions de transistors…). Gardez cependant en tête que le fillrate ne fait pas tout. On notera que la 6800 GT est plus bridée par la fréquence mémoire que par celle du GPU, avec un ratio 4 % moins important que la 6800 Ultra

Fillrate

Commençons par mesurer le fillrate et observer un éventuel écart avec le fillrate théorique présenté.

Pas de surprise à ce niveau, la X800 XT confirme qu’elle possède un fillrate pur énorme.

Ce test met clairement en avant une des spécificités de l’architecture des nv3x/nv4x : la possibilité de doubler le fillrate lorsque les écritures dans le color buffer sont désactivées (d’où l’écriture de la configuration des pipes en « 32 x 0 »). Cette possibilité s’averera particulièrement utile dans les passes de rendu se chargeant du remplissage du ZBuffer et du stencil buffer. Les cartes ATI conservent quand à elles leur fillrate.

Ici, il faut noter la très bonne optimisation du 6800 Ultra, qui malgré un fillrate théorique inférieur à la X800 XT, parvient à rester au-dessus de celle-ci lors de l’application de textures. Notez que c’est ici l’unité de T&L qui est utilisée.

Pixel Shaders

Des choses très intéressantes sont à noter ici. Premièrement, sur des pixel shaders simples (à la fois en terme de technologie avec les PS 1.1 et 1.4, qu’en terme de nombre d’instructions), la X800 XT fait très fort avec 4000 MPixels/s. Pourtant, ce résultat était complètement prévisible. En fait, chez ATI les shaders de ces 4 tests s’exécutent en 2 cycles. Du coup le résultat correpond au fillrate divisé par deux, aussi bien avec la 9700 Pro qu’avec la X800 XT.

Sur les NV40, les résultats sont plus compliqués. Ici, seuls les deux tests « PS 1.4 » et « PS 2.0 » s’exécutent en 2 cycles. Les performances chutent au 2/3 avec un Pixel Shader de génération DirectX 8.0 (PS 1.1), et ce résultat est logique. En effet, ceux-ci étaient auparavant traités par les Registers Combiners qui sont désormais émulés à partir d’une unité flottante. Mais on note la même perte de performance avec les Pixel Shader 2.0 en précision partielle (16 bits), test prévu pour l’ancienne architecture nv3x. Soyons clair : cette perte n’a absolument aucun sens ; vu l’architecture du NV40 il est clair que la vitesse de traitement des PS 2.0 en précision partielle devrait être équivalente à celle des PS 2.0. On ne peut donc que mettre en cause les drivers sur ce point. Il faut noter que nVidia a réalisé des progrès à ce niveau, puisque initialement les PS 1.4 ne s’exécutaient pas plus rapidement que les PS 1.1. Gageons que les drivers continuent à améliorer ce point faible.

Avec des Pixel Shader 2.0 longs, les performances baissent puisque ces shaders nécessitent 4 cycles pour tous les GPU. En activant un éclairage par pixel, la hiérarchie reste identique. Par contre, les 6800 sont capables de bien améliorer le temps d’exécution quand on repasse à une précision partielle, ce qui est un héritage de la génération NV3x. Ce résultat reste surprenant quand on voit que sans éclairage par pixel, les 6800 perdent au contraire des performances en repassant en 64 bits.

Vertex Shaders

Ici, nous avons utilisé une scène assez chargée, avec un profil géométrique complexe et un éclairage Diffuse + Specular avec trois sources lumineuses.

En mode Fixed Function, c’est l’unité de T&L qui est utilisée. Rappelons que cette ancêtre des shaders n’est aujourd’hui plus câblée en hardware sur les GPU, mais qu’elle est émulée par les unités de Vertex Shaders. Et à ce petit jeu, la 6800 Ultra est clairement devant même si cela ne se remarque pas tellement ici, comparativement à la différence que l’on observe avec un profil moins complexe (la 6800 Ultra peut alors s’avérer presque deux fois plus performante que la X800 XT).

Dès que l’on utilise le branchement, les performances restent identiques sur l’architecture ATI, que l’on parle des Vertex Shaders de DirectX 8.0 (VS 1.1), DirectX 8.1 (VS 1.4) ou DirectX 9 (VS 2.0). Cela confirme la grande stabilité de l’architecture des unités de shaders, simple et sans surprise, comme nous le constations aussi avec les pixels shaders. On note même un très léger gain de performance en passant aux VS 2.0 ou aux VS 2.0 + PS 2.0.

Chez nVidia, seul le traitement des branchements statiques en VS 1.1 permet d’obtenir les pleines performances. Etrangement, le traitement des PS 1.1 ne pose plus de problème, mais ce sont cette fois les VS 2.0 qui ne s’exécutent qu’au 2/3 de la performance des PS 1.1 et 1.4. Notre hypothèse sur ce point est que notre scène de test utilise en réalité les VS 2.0 en flux de contrôle statique ou dynamique, qui s’exécutent effectivement au 2/3 des performance des VS 2.0 et des VS 1.1 sur NV40.

Bilan

En résumé, en matière de Pixel Shaders, la X800 XT est presque toujours en tête, sauf lorsque l’on active l’éclairage par pixel en précision partielle. Du côté des Vertex Shaders, les drivers ont bien améliorés les choses et les deux cartes sont désormais au coude à coude, avec un net avantage à nVidia concernant le T&L, mais un net désavantage avec certains VS 2.0 ! Nos résultats parfois légèrement contradictoires sur 6800, bien que parfaitement reproductibles, prouvent en tout cas que son architecture n’est pas encore totalement domptée. Soulignons toutefois que les progrès réalisés par rapport aux NV3X sont gigantesques, grâce au changement d’architecture. Nos tests sur ShaderMark 2.0 nous ont également montrés que dans de rares cas (2/23), la 6800 Ultra pouvait être plus rapide que la X800 XT.

HSR, Overdraw, Point Sprites, Procedural Texturing

Voyons maintenant le test HSR. Pour rappel, le Hidden Surface Removal est une fonctionnalité visant à économiser des cycles GPU en ne lui faisant pas effectuer le rendu des pixels qui seront cachés par d’autres pixels au premier plan.

Evidemment, l’architecture similaire du R300 et du R420 fait que la X800 XT ne peut compter que sur l’augmentation de sa fréquence pour bénéficier d’un meilleur framerate. Sa gestion du HSR n’a pas évoluée. En revanche les 6800 sont particulièrement efficaces sur ce plan.

Observons maintenant ce qui se passe en ce qui concerne la gestion de l’overdraw, avec VillageMark. VillageMark est une démonstration technologique mise au point par PowerVR afin de mettre en avant l’efficacité du Tile Rendering propres aux GPU PowerVR en la matière. Pourquoi plaçons nous ce test après le test HSR ? Parce que l’overdraw représente le nombre de fois où un même pixel va être écrit dans le frame buffer, là où le HSR mesure la faculté de rejeter ces pixels avant de les écrire dans le frame buffer. Plus le HSR est efficace, plus il permet de limiter l’overdraw, vu qu’il rejettera les pixels plus tôt dans le pipe et donc ne les écrira pas dans le frame buffer.

Ce test prouve donc l’écart entre la théorie et la pratique puisque les résultats vont dans le sens contraire du test HSR (comment ça on se la joue professeur ?). Cela dit, vu qu’on est ici en présence d’un test PowerVR, il est probable qu’il utilise un rendu ‘back to front’ pour justement maximiser l’overdraw, ce qui du même coup rendrait le HSR inopérant. Les résultats se joueraient donc plus au niveau du contrôleur mémoire, compression, etc.

Ironiquement, avec le même test en OpenGL les 6800 sont moins performantes alors que les GPU d’ATI restent au même niveau. Bref, ne cherchez pas l’explication du côté de l’efficacité des drivers OpenGL vis-à-vis de Direct3D…

Parlons maintenant des Point Sprites. Que sont ils ? Un type de primitive particulier. En ne spécifiant qu’un seul vertex (sommet), il permet de générer un quad (carré) centré sur ce sommet, ce qui permet d’économiser de la bande passante (un seul point est nécessaire au lieu de quatre !).

Pas de problème pour ATI ici, en fait les résultats sont clairement en rapport avec le fillrate de chaque carte. Encore fallait-il le vérifier…

Enfin, étudions les résultats dans des tests procéduraux.

Ici, la 6800 Ultra reste en tête : elle peut en effet utiliser ses deux unités ALU, alors que la X800 XT n’en a qu’une.

Antialiasing, filtrage anisotropique

Après avoir vu l’aspect qualitatif dans les sections dédiées, nous nous sommes ici attachés à observer la contrepartie quantitative que provoquait l’activation de l’antialiasing et du filtrage anisotropique sur chacune des cartes. Pour ce faire, nous avons ramené à 100 % la performance de chaque carte hors AA + aniso. La scène de test est la Vallée du Jaguar de Serious Sam : Second Contact, et la résolution est fixée à 1920 x 1440. Pour cette raison, nous avons exclu la 9700 Pro qui était surtout limitée par ses 128 Mo de mémoire. Notez que l’antialiasing et l’anisotropie ont été activés à partir des drivers, comme pour l’ensemble des jeux.

On le voit ici, l’algorithme d’ATI est bien plus efficace en terme de performances, puisqu’un antialiasing 4X s’effectue à 76 % du framerate, contre seulement 60,4 % pour la 6800 Ultra. La 6800 GT, du fait de sa puissance moindre, a encore un peu plus de mal à encaisser.

Le filtrage anisotropique est moins gourmand sur les performances, mais là encore ATI est en tête, ce qui est logique vu que son filtrage effectue moins de calculs.

Et le résultat final est logique, et correspond simplement à l’addition des deux résultats du dessus. Les écarts sont loin d’être négligeables ! Cela dit il convient de remarquer une chose : le filtage anisotropique d’ATI n’est qu’à peine plus rapide que celui de nVidia, alors que la contrepartie qualitative est réelle. En revanche, c’est surtout sur l’antialiasing qu’ATI creuse l’écart, alors que de ce côté il est bien plus difficile de trancher sur le plan qualitatif.

Sommaire :

  1. Introduction
  2. Architectures
  3. Architectures (suite)
  4. Filtrage des textures
  5. AntiAliasing
  6. Le test
  7. Performances synthétiques
  8. Tests pratiques
  9. Tests pratiques (suite)
  10. Cartes Asus, bruit, overclocking
  11. Bilan, conclusion