DirectX 10 et GPUs

Publié le 07/07/2006 par
Imprimer
Les GPUs
Pour ATI et Nvidia, DirectX 10 est une évolution majeure et tous deux sont très enthousiastes par rapport aux nouvelles possibilités qui vont faire leur apparition. Nous avons pu avoir le point de vue des 2 fabricants et à une nuance près, ils sont identiques. Ils sont contents des optimisations internes à l’API qui réduisent la consommation CPU et vont permettre pour une utilisation CPU identique d’augmenter la complexité de la scène ainsi que de l’évolution du pipeline graphique qui était resté figé depuis très longtemps. Les geometry shaders et le stream output ouvrent de nouvelles portes. Point de divergence : l’unification de l’architecture du GPU au niveau des unités de calcul. Selon ATI c’est la meilleure solution, selon Nvidia ça ne l’est pas encore. Voici une représentation basique des architectures que nous nous attendons à retrouver chez Nvidia et chez ATI :


A gauche l’implémentation de Direct 3D 10 supposée des G8x, à droite l’implémentation de Direct 3D 10 supposée des R6xx.


Bien que les fabricants de GPU aiment bien parler d’architecture complètement nouvelle, développée à partir de zéro etc., il s’agit toujours d’évolutions. Développer un GPU est complexe et pour obtenir un bon rendement demande tout un tas de petites optimisations, destinées à arrondir les coins, à s’assurer que le flux de données et d’opérations ne soit pas interrompu. Cela demande une expertise très importante qu’ATI et Nvidia ont acquise au fil du temps et qui a manqué à de nombreux concurrents potentiels comme XGI, S3 et Matrox qui se sont cassé les dents sur le rendement de leurs GPUs. Pour ATI et Nvidia il est bien entendu hors de question d’abandonner cette expertise et donc d’avancer dans une direction qui représenterait une rupture complète avec les architectures précédentes.

Du côté d’ATI, passer à une architecture unifiée au niveau des unités d’exécution (= de traitement des shaders) est une évolution logique, dans la continuité des architectures précédentes et actuelles. Une architecture unifiée demande une gestion avancée des différents threads (tâches) or les Radeon X1000 en disposent déjà bien que cela soit limité aux pixel shaders. Une architecture unifiée permet de pouvoir attribuer les unités d’exécution aux tâches qui en ont besoin et de ne pas avoir d’unité qui se tourne les pouces. Autrement dit cela améliore le rendement par unité d’exécution. Notez qu’ATI dispose déjà d’une expérience avec une architecture unifiée puisque le GPU qui est au cœur de la Xbox 360 en est une.

Du côté de Nvidia, la situation est différente puisque l’efficacité du calcul des pixels provient d’un très long pipeline dans lequel l’accès aux textures est masqué. Passer directement d’une telle architecture à une architecture unifiée représenterait un gros risque qui pourrait amener à une baisse importante du rendement. Qui plus est, l’architecture actuelle de Nvidia est relativement économe au niveau de la taille de la puce alors que l’architecture actuelle d’ATI est très gourmande. Ne pas unifier son architecture avec les G8x permet donc à Nvidia d’assurer un bon rendement et de ne pas faire exploser dans de trop grandes proportions le nombre de transistors. Nous nous attendons donc à ce que les G8x et donc le G80 (anciennement NV50), son premier représentant, ne soit pas unifiée… tout du moins complètement.

Bien que Direct 3D 10 définisse un jeu d’opérations similaire pour tous les types de shaders, de légères différences subsistent (seuls les geometry shader peuvent créer des éléments par exemple) et chaque type de shader est amené à traiter des tâches qui ont un profil différents. Optimiser une même unité d’exécution pour un vertex shader ou pour un pixel shader mène dans des directions différentes. Ces directions ne sont cependant pas si différentes l’une de l’autre lorsqu’il s’agit de geometry shaders et de vertex shaders, ce qui nous amène à penser que Nvidia aurait mis en place une unification partielle de son architecture au niveau de leurs unités de traitement qu’ils partageraient donc. Les pixels shaders conserveraient pour leur part des unités dédiées, améliorées pour supporter les spécificités de DirectX 10. Avec ce compromis, Nvidia intègre le support de DirectX 10 en conservant un bon rendement par mm².
Quelle sera la meilleure solution ?
Il est encore trop tôt pour se prononcer bien entendu. Nvidia devrait sortir son G80 en premier lieu, alors que DirectX 10 ne devrait pas encore être utilisable d’autant plus que son support ne sera probablement pas activé directement dans les drivers. Du côté d’ATI, le R6xx arrivera vraisemblablement avec un support DirectX 10 puisque nous estimons qu’il sera très facile de montrer un avantage d’une architecture unifiée dans différents cas théoriques. ATI ne devrait donc pas s’en priver, avec raison d’ailleurs. Reste que ces cas théoriques ne représenteront peut-être pas la pratique, ou tout du moins pas avant un certain temps.

Dans les jeux DirectX 9 et les premiers jeux DirectX 10 (que Microsoft annonce pour l’arrivée de celui-ci) que feront tourner ces cartes, le G80 devrait se comporter comme un GeForce 7900 avec plus d’unités de calcul et le R6xx comme une Radeon X1900 plus efficace (ATI parle de 25% de gain dans certains jeux à nombre d’unités de calcul égal entre une architecture classique et unifiée), ce qui ne vous apprend rien en dehors du fait qu’il est trop tôt pour savoir qui des 2 l’emportera. Les fréquences auront comme à chaque fois leur mot à dire et Nvidia ne devrait pas laisser de côté une éventuelle double carte comme la GeForce 7950 GX2.

Les architectures d’ATI et Nvidia seront valables pour toute une gamme de GPUs et ce n’est pas parce qu’une architecture sera la plus efficace sur le haut de gamme que ce sera vrai sur l’entrée et le milieu de gamme.

Notez que lorsqu’on parle du rendement par mm² chez Nvidia il s’agit d’une grosse simplification, admise parce que la différence est énorme entre les puces ATI et Nvidia actuelles. En pratique la taille de la puce n’est qu’un des éléments qui définit le rendement par mm² (de wafer). La fréquence utilisée en est un autre. Si un fabricant est obligé d’utiliser une très haute fréquence pour concurrencer le concurrent, il réduit le nombre de puces qui sont utilisables et donc le rendement par mm² de wafer. Une architecture peut offrir plus d’opportunités qu’une autre pour y intégrer de la redondance, ce qui réduit le nombre de puces inutilisables et donc augmente le rendement par wafer. Une puce plus grosse peut ainsi au final offrir un meilleur rendement qu’une plus petite.

Vous l’aurez probablement compris, nous nous attendons à ce que Nvidia mette en avant la petite taille de sa puce (ainsi que la consommation) et qu’ATI fasse l’apologie d’une architecture unifiée. Comme d’habitude il s’agira de simplifications marketing et il faudra prendre un peu de recul pour se faire une opinion plus pertinente. Pour terminer, les développeurs auront eux aussi leur mot à dire puisque leurs choix technologiques pourront mettre en avant ou pas une certaine architecture.
Sommaire
3 - Les GPUs et DirectX 10
Vos réactions

Top articles