HardWare.fr


Influence du PCI Express sur les GPU
Cartes Mères
Publié le Vendredi 10 Juin 2011 par Guillaume Louel

URL: /articles/836-1/influence-pci-express-gpu.html


Page 1 - Introduction

Les différentes plates-formes AMD et Intel proposant plus ou moins de lignes PCI Express, on se pose souvent la question de l'impact de ce bus sur les performances graphiques. Les modes PCI Express 2.0 x8 et x16 sont ils équivalents en termes de performances pour nos cartes 3D ? Quel est l'impact du mode x4, et quelles sont les différences entre des lignes reliées directement aux processeurs et celles qui passent par le southbridge ? Des interrogations auxquelles nous allons tenter de répondre dans cet article.

Le PCI Express en bref

Le bus PCI Express est résolument un bus à tout faire. Avec une implémentation physique relativement simple, ce bus série, point à point, est organisé sous forme de lignes. Chaque ligne est composée de deux paires de liens qui transmettent les données chacune dans un sens. Physiquement, le PCI Express est un bus série bidirectionnel. Pour augmenter la bande passante, plusieurs lignes peuvent être conjointement utilisées (bonding), jusque 32. Dans nos PC, l'implémentation la plus classique reste cependant la version 16 lignes, que l'on appelle x16.

Une des particularités du PCI Express est que le nombre de lignes utilisés se négocie automatiquement entre les deux périphériques. Un périphérique x16 comme une carte graphique sera toujours capable de fonctionner en mode x1. La taille d'un connecteur sur une carte mère n'indique donc strictement rien sur la vitesse à laquelle fonctionnera le périphérique que l'on y connecte. Un périphérique x1 dans un slot 16 fonctionnera logiquement en mode x1. A l'inverse, un périphérique 16 dans un slot "physiquement" x16 mais câblé électriquement en x4 fonctionnera en mode x4. Les manuels des cartes mères indiquent ainsi de quelle manière sont câblés les ports, ce qui dépend de plus en plus du processeur, et du chipset utilisé.

Avec une implémentation physique simple et flexible, le PCI Express est devenu la colonne vertébrale des cartes mères. Le bus DMI d'Intel utilisé pour connecter le processeur au southbridge de la carte mère est en réalité un lien PCI Express x4 (de type 2.0 sur les Sandy Bridge et les chipsets qui l'accompagne). Sur les portables, l'ExpressCard exporte une ligne PCI Express, et le récemment annoncé Thunderbolt d'Intel est lui aussi un câble d'extension basé directement sur le PCI Express. Un bus à tout faire.

En pratique

Nous avons choisis de regarder les performances des différents modes sur une carte mère basée sur le chipset Z68 d'Intel. La carte utilisée pour ce test est une MSI Z68A-GD80 B3 (à ne pas confondre avec la version G3 présentée au Computex) sur laquelle nous reviendrons en détail ultérieurement. Dédiée aux processeurs Intel Sandy Bridge, ces derniers disposent d'un contrôleur PCI Express 16 lignes directement intégré. Trois ports PCI Express x16 (en bleu sur la photo ci-dessous) sont cependant présents sur la carte.


Le premier slot en haut est câblé en mode x16. Le second slot n'est lui câblé qu'en mode x8. En pratique si l'on insère une carte dans ce slot, le premier slot passe lui aussi en mode x8. Quatre puces Pericom servent en effet de switch pour séparer les 16 lignes en deux groupes de 8. Le dernier slot en bas est lui relié au chipset par quatre lignes. Il partage donc le lien x4 qui relie le chipset au processeur avec le reste des périphériques (réseau, disques, etc) connectés au southbridge, un goulot d'étranglement supplémentaire éventuel sur le plan de la bande passante. Pour réaliser notre test nous avons utilisé deux GPU haut de gamme relativement équivalent sur le plan des performances en provenance de chez AMD et Nvidia, il s'agit de la Radeon HD 6970 et de la GeForce GTX 570. Nous remercions au passage le magasin Nicolas et Fils pour le prêt de certains produits.


Page 2 - Bande passante, mesures théoriques

Bande passante, mesures théoriques

Dans le cas de l'utilisation en jeu, les transactions sur le bus PCI Express se font principalement entre le CPU et le GPU. Certains chargements sont ponctuels, comme le chargement de textures ou de données sur la scène graphique, d'autres sont liées au calcul de chaque image (informations/instructions envoyées par les drivers). A moteur graphique égal, plus une carte graphique est capable de calculer d'images et plus le PCI Express peut avoir un impact, s'il en a un.

Mais avant de mesurer l'impact en pratique, nous avons tenus à mesurer la bande passante de manière plus théorique. Nous avons pour cela utilisé les tests de bande passante PCI Express inclus dans les kits de développement CUDA de Nvidia (le CUDA Toolkit 4.0 ) et APP d'AMD (la version 2.4 ). Nos scores ne sont donc pas directement comparables entre GeForce et Radeon. En pratique c'est surtout l'évolution d'un mode à l'autre qui nous intéresse ici plus qu'une comparaison entre les deux marques.

En parlant des modes, nous avons testés ceux-ci :
  • Mode x16 (carte graphique dans le slot 1)
  • Mode x8 (carte graphique dans le slot 2)
  • Mode x4 (carte graphique dans le slot 1 en désactivant les broches supplémentaires)
  • Mode x4 chipset (carte graphique dans le slot 3)

Bande passante théorique (mémoire non-paginable)


Pour rappel, la bande passante théorique du PCI Express 2.0 est de 5 GT/seconde et par ligne, codé sur 10 bits (pour 8 bits utiles). En pratique cela nous donne 4 GT/s, soit 500 Mo/s par ligne. On arrive donc à une bande passante théorique de 8 Go/sec pour 16 lignes, sans pour autant prendre en compte le cout du protocole de transaction.

En mode x16, on atteint environ les 75% d'efficacité, ce qui correspond aux normes admises. Chez Nvidia on colle d'ailleurs à ce schéma de prêt avec dans les modes inferieurs. Chez AMD, la taille des buffers différente rajoute un overhead plus important, ce qui explique que le mode x16 est plus de deux fois plus rapide que le mode x8.

Deux remarques d'importances cependant. La première est qu'assez généralement, le transfert GPU vers CPU est plus rapide qu'en sens inverse. La seconde est que si l'impact sur le transfert GPU vers CPU est léger entre le mode x4 chipset et le mode x4 processeur, l'impact est plus élevé entre le CPU et le GPU. Sachant qu'il s'agit du sens le plus utilisé en pratique dans les jeux, il va être intéressant de voir comment cela se traduit en pratique. Notez que la perte est quasiment double chez AMD dans ce sens, on perd 11% de performances entre le mode x4 southbridge et le mode x4 processeur, là ou l'on n'en perd que 5.5% chez Nvidia

Dernier point, pour atteindre ces vitesses, les outils réservent côté système des espaces mémoires non paginables, le système d'exploitation bloque les pages mémoires pour qu'elles ne puissent pas se retrouver en mémoire swap. En clair, on est sur à 100% que la mémoire sera en RAM. Si en théorie les performances devraient être identiques si l'on dispose de suffisamment de mémoire, en pratique le fait d'être certain que le bloc mémoire est en RAM permet aux pilotes Nvidia/AMD d'utiliser des algorithmes de copie plus efficaces.

Bande passante théorique (mémoire paginable)

Sachant qu'il n'est pas toujours possible aux développeurs d'utiliser de l'espace mémoire non paginable, nous avons réalisé un second test en réservant la mémoire côté système de manière classique. Nous avons utilisé cette fois ci OpenCL pour créer un test qui soit fonctionnel sur les deux cartes, via la bibliothèque Cloo (version 0.9 ). Notez à titre informatif que si les pilotes grand public AMD sont compatibles OpenCL 1.1, les pilotes grand public Nvidia sont encore limités à l'OpenCL 1.0. Un pilote 1.1 est disponible (depuis un an… ), mais uniquement pour les développeurs enregistrés.


Nous montons moins haut cette fois-ci, particulièrement en mode 16x, mais les tendances restent les mêmes. Le transfert GPU vers CPU reste plus rapide que l'inverse, et en mode 4x chipset, on retrouve toujours une baisse de bande passante plus notable sur le transfert CPU vers GPU.

Notez que nous avons également essayé de mesurer les latences, quelque chose qui s'est rêvelé impossible de manière logicielle. En effet, mesurer les différences de latences par exemple en mesurant le temps nécessaire à des transferts de données se heurte à des variances qui vont bien au-delà de la latence du bus en lui-même. Que ce soit la couche de transaction (le PCI Express fonctionne via un système de crédits entre les paires de périphériques) ou le pilote en lui-même, en pratique la variabilité reste très grande avec des écarts sur plusieurs centaines de tests qui peuvent dépasser les 100 microsecondes. C'est quelque chose que l'on retiendra, malgré une implémentation simple et une grande flexibilité, le bus PCI Express reste complexe à mesurer de manière purement logicielle, la faute au multiples couches logicielles qui imposent elles mêmes leurs couts, bien plus elevés que ceux de l'interface en elle-même.

Passons maintenant aux tests pratiques dans les jeux.


Page 3 - Crysis Warhead, FarCry 2, Metro 2033

Nous avons utilisé les derniers pilotes disponibles en date au moment de notre test à savoir les Catalyst 11.5 chez AMD et les pilotes GeForce 270.61 pour Nvidia. Nous avons retenus trois résolutions pour voir l'impact de celles-ci : 1280 par 1024, 1680 par 1050 et 1920 par 1200.

La configuration de test est comme suit :
  • Carte mère MSI Z68A-GD80 B3
  • 2x2 Go DDR3 1333 MHz
  • Intel Core i7 2600K
  • Nvidia GeForce GTX 570 / Radeon HD 6970
  • Windows 7 Ultimate 64 bit


Crysis Warhead

Nous utilisons la version 1.1 de Crysis en mode 64 bits.

Maintenez la souris sur le graphique pour voir l'indice de performances.


Les pilotes Nvidia et AMD peuvent avoir des comportements assez différents dans la manière dont ils gèrent leurs cartes. Car si le jeu est responsable des appels DirectX, c'est le driver qui a le dernier mot sur la manière dont ces appels et transferts sont exécutés. Ainsi si l'on voit une petite différence entre x16 et x8 chez AMD (autour de 2%), elle est légèrement plus élevée chez son concurrent (autour de 4%). Comme on le verra, ces tendances peuvent s'inverser d'un jeu à l'autre.

Si l'impact en mode x8 est léger, il commence à se faire sentir fortement en mode x4, et là encore avec disparités entre les deux marques. On perd 8% chez AMD et jusque 18% de performances en 1280 chez Nvidia. Sans surprise, les écarts sont les plus élevés lorsque le nombre d'images affiché à l'écran est élevé, le 1280 est donc le pire cas.

De manière intéressante, utiliser le port x4 du southbridge montre une tendance opposée. Là où l'on perd 2.5% de performances chez Nvidia entre le mode x4 CPU et le mode x4 southbridge, on dépasse les 5.5% chez AMD. Nous avions noté dans les tests théoriques que les transferts CPU vers GPU sur la plateforme AMD en mode non paginée enregistraient une dégradation de performances un peu plus forte sur le southbridge. Cela se retrouve en pratique ici.

FarCry 2

Nous utilisons la version 1.03 de Far Cry 2.

Maintenez la souris sur le graphique pour voir l'indice de performances.


Certaines tendances s'inversent puisque c'est ici les cartes de Nvidia qui sont les plus efficaces en mode PCI Express x8. La perte de performances est tout de même plus elevée que pour Crysis, du fait du framerate plus élevé, passant de 5.5% chez Nvidia à un peu plus de 7.5% chez AMD. La tendance de l'efficacité continue dans le même sens assez logiquement lorsque l'on passe en PCI Express x4, on perd jusque 12% de performances chez Nvidia dans ce mode et un peu plus de 16.5% chez AMD en 1280.

Il y a cependant une chose qui ne change pas, la différence d'efficacité entre le mode PCI Express x4 processeur et le mode southbridge. On ne perd que 4.5% de performances chez Nvidia, et plus de 8% chez AMD.

Metro 2033

Nous utilisons la dernière version en date de Metro 2033 (patch 2 via Steam) en mode DirectX 11 (AAA).

Maintenez la souris sur le graphique pour voir l'indice de performances.


Avec un nombre d'images par secondes réduit dans ce moteur graphique très gourmand, les écarts de performances sont moindres. Passer en mode 8x ne fait perdre que 2.5% de performances avec une tendance légèrement favorable à AMD qui se confirme en mode 4x ou là perte n'est "que" de 7% contre pratiquement 10% pour Nvidia.

Le mode x4 southbridge continue de préférer les cartes Nvidia avec une perte de performances de 3% contre un peu plus de 5.5% en face.


Page 4 - Moyenne

Moyenne

Nous avons calculé les moyennes en appliquant un indice 100 aux performances en mode x16.


Si nous avions noté que l'écart de performances était moindre chez Nvidia entre le mode x4 CPU et le mode x4 chipset, on obtient au final un écart identique chez Nvidia et AMD entre les modes x4 chipset et x16. On perd ainsi jusqu'à 19% sur les deux plateformes en 1280 par 1024. Le mode x4 CPU réussi légèrement mieux à AMD qu'à Nvidia.

Plus intéressant en pratique, le mode x8 affiche une perte semblable de 3.6/3.7% en 1900 par 1200 sur les deux cartes. Diminuer la résolution et donc augmenter le nombre d'images par secondes a un impact plus élevé chez Nvidia que chez AMD avec respectivement des pertes de 4.5 et 3.8% par rapport au mode x16.


Page 5 - Conclusion

Conclusion

Le PCI Express joue donc un rôle dans les performances en pratique sur les dernières cartes graphiques haut de gamme. Là ou nous nous attendions à ne pas arriver a mesurer réellement de différences de performances entre les modes PCI Express x16 et x8, nous avons trouvé en pratique dans les jeux des écarts qui peuvent aller dans le cas le plus extrême à 7.8%. Cet écart reste à relativiser puisqu'il intervient dans un contexte de framerate élevé plus propice à accepter une baisse de performance sans atteindre à la jouabilité. Avec des framerate plus faible, l'impact est plus réduit avec environ 3% sous Crysis et 1 à 2% sous Metro 2033 en 1920 par 1200.

Notez également que nous avons voulu tester l'impact éventuel des switch Pericom à travers desquels passent les lignes PCI Express du second port câblé en x8 en comparant les performances sur le second port et sur le premier en bridant la carte en mode x8. Dans ce cas, aucune différence à noter, les cartes ont des performances strictement identiques.

Le passage en mode x4 est plus dommageable pour les performances, avec une perte de variant entre 26.5 et 5.4% en x4 CPU et entre 32.5 et 8.7% en x4 chipset. Il faut donc éviter d'utiliser une carte graphique sur un tel slot, alors même que de nombreuses cartes mères proposent un second ou un troisième port PCI Express x16 câblé comme tel.

Ces tests nous auront permis de voir que d'un jeu à l'autre, l'impact du PCI Express n'est pas le même. C'est logique, tous les moteurs graphiques ne sont pas identiques et font un usage différent du bus PCI Express. De manière plus intéressante on aura vu également que malgré des cartes qui disposent de performances globalement proches, l'usage du PCI Express diffère d'une marque à l'autre. Les performances en mode x4 sont généralement un écho amplifié de ce qui se passe en mode x8.


Une Radeon HD 6970 castrée en mode 4x

L'impact des lignes PCI Express venant du chipset aura lui aussi été variable entre AMD et Nvidia, mais les résultats sont constants. Que ce soit dans nos tests théoriques de bande passante mémoire ou nos tests pratiques en jeux, l'écart de performances est plus sensible chez AMD. La manière dont le pilote d'AMD gère ses accès à la carte graphique semble en cause, ce qui est assez dommage alors même que seul AMD permet d'utiliser le CrossFire avec un tel port.

Si l'on a noté des écarts de performances entre les modes x16 et x8 en mode mono GPU, on peut penser que l'on verra des écarts au minimum équivalents en mode CrossFire et SLI selon que l'on utilise des ports x16/x16 ou x8/x8. Mais là encore le rôle essentiel des pilotes et leur manière de gérer leurs échanges de données entre système et carte graphiques, voir entre les cartes elle-même, fait qu'il est assez difficile de prédire précisément l'impact pratique. Nous reviendrons donc sur le sujet dans un article séparé afin de mesurer précisément l'impact de ces modes en CrossFire et SLI.


Copyright © 1997-2025 HardWare.fr. Tous droits réservés.