HardWare.fr


PCI Express 3.0 : impact sur les performances
Cartes Mères
Publié le Vendredi 20 Janvier 2012 par Guillaume Louel

URL: /articles/850-1/pci-express-3-0-impact-performances.html


Page 1 - Introduction

Suite à l'arrivée successive des plateformes LGA 2011 d'Intel et des Radeon HD 7970 d'AMD, le PCI Express 3.0 est devenu une réalité. Les augmentations de débit attendues sont elles présentes ? Ont-elles un impact sur les performances dans les jeux ? Quid de CrossfireX ? Tant de questions auxquels nous nous devons de répondre.

Version 3.0 ?

Comme nous l'avions déjà expliqué dans un précédent article sur le sujet, le PCI Express est un bus série, point à point, conçu pour être relativement peu couteux en termes d'implémentation et particulièrement modulaire.

Au-delà de l'implémentation physique qui permet de réaliser des périphériques allant de x1 à x32, PCI Express dispose de deux niveaux d'auto négociation entre un hote et un périphérique. D'abord sur la longueur du bus, pouvant varier indépendamment de l'implémentation physique (une carte graphique x16 peut fonctionner en mode x1 si nécessaire), mais aussi sur le débit de données (2.5 GT/s, 5 GT/s et 8 GT/s pour les normes 1.0, 2.0 et 3.0 respectivement). Des négociations qui s'effectuent en temps réel si nécessaire en ce qui concerne le débit : le système d'exploitation peut réduire le débit du bus lorsqu'il est inutilisé afin de maximiser l'économie d'énergie.

En termes pratiques, le PCI Express 3.0 offre un doublement de la bande passante par rapport au PCI Express 2.0, soit 16 Go/s théoriques par sens pour un périphérique en mode x16 au lieu de 8. Vous noterez cependant que l'on ne parle pas de mode 10 GT/s mais bien de 8 GT/s un peu plus haut. Cela s'explique par le fait que les premières versions du PCI Express encodent leurs données sur 10 bits, pour seulement 8 bits d'information (4.0 GT/s effectifs théoriques). Le PCI Express 3.0 change cela pour un encodage plus complexe sur 130 bits pour 128 effectifs qui maximise l'efficacité d'un lien 8 GT/s.

Pour l'heure, seule la plate-forme LGA 2011 basée sur le chipset LGA 2011 et les processeurs Sandy Bridge-E permet de profiter du PCI-Express 3.0. En avril prochain les Ivy Bridge LGA 1155 supporteront également cette norme. Rétro-compatibilité oblige, les cartes PCI-Express 3.0 fonctionnent bien entendu dans des ports 2.0 et 1.0, et vice-versa.
En pratique

Afin de réaliser notre test, nous avons utilisé une carte mère X79 fournie par Asus, il s'agit de la Maximus IV Gene au format Micro ATX. A compter de son dernier BIOS, elle permet de choisir de manière distincte la vitesse de fonctionnement des ports PCI Express, permettant de choisir entre 1.0, 2.0 et 3.0.


Les deux premiers slots de la carte mère sont câblés en mode x16 tandis que le troisième, bien que x16 physique n'est câblé qu'en x8. Nous avons exclusivement utilisé les deux premiers slots de la carte mère pour nos tests.

Côté cartes graphiques, nous avons utilisés deux Radeon HD 7970, seules cartes à l'heure actuelle compatibles PCI Express 3.0. La machine de test est complétée par un Core i7 3960X ainsi que 16 Go de mémoire DDR3 cadencée à 1600 MHz. Nos tests sont réalisés sous Windows 7 x64 SP1.


Page 2 - Bande passante, mesures théoriques


Bande passante, mesures théoriques

Avant de mesurer l'impact pratique, nous avons tenté de vérifier via des tests théoriques si le PCI Express 3.0 tient ses promesses en termes de débits. Nous utilisons ici un test de performance inclus dans le kit de développement APP d'AMD, disponible en version 2.6 .

Paginable, non paginable

Pour rappel ce premier test est assez particulier dans le sens ou il tente d'obtenir les taux de transferts les plus élevés possible en utilisant de la mémoire dite non paginable. En effet, côté système l'outil réserve ses pages mémoires de façon à ce qu'elles ne puissent pas être déplacées. En pratique, cela veut dire que l'on est certain à 100%, pour toute la durée d'exécution du programme, que les pages mémoires seront situées physiquement en RAM et jamais dans un fichier swap.

Si cela peut sembler anecdotique en théorie sur une machine de test équipée de 16 Go de RAM, en pratique cela ne l'est pas. Certes, les données transférées resteront toujours en mémoire physique, mais la simple possibilité que ce ne soit pas le cas réclame des vérifications supplémentaires en ce qui concerne les opérations de copie mémoire. Pour les modes non paginables, AMD ici (tout comme Nvidia dans CUDA) utilise des algorithmes optimisés pour tirer le meilleur parti du PCI Express.

Nous avons mesurés, pour ce test et les suivants, six cas distincts :
  • PCI Express 3.0 x16, x8 et x4
  • PCI Express 2.0 x16 et x8
  • PCI Express 1.0 x16

D'un point de vue théorique, certains modes disposent d'une bande passante équivalente :
  • PCI Express 3.0 x16
  • PCI Express 3.0 x8 et PCI Express 2.0 x16
  • PCI Express 3.0 x4, PCI Express 2.0 x8 et PCI Express 1.0 x16

Pour les jeux et les applications le permettant, nous indiquerons également les résultats dans chacun de ces cas en mode Crossfire.

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

Nous mesurons indépendamment le taux de transfert dans le sens CPU vers GPU (cas typique pour les jeux), ainsi que dans le sens inverse (également mis à contribution en OpenCL).



Passez la souris sur le graphique pour voir l'efficacité par rapport à la bande passante théorique

Plusieurs enseignements importants sont à noter. D'abord, si dans le sens GPU vers CPU on note bel et bien une augmentation de la bande passante de 77% entre le mode PCI Express 3.0 x16 et le 2.0 x16 (à comparer aux 89% entre 2.0 x16 et 1.0 x16), dans l'autre sens les gains sont beaucoup plus mesurés : seulement 50% de gain ! On reste ainsi sous la barre des 10 Go/s.

Autre enseignement intéressant, la comparaison entre PCI Express 3.0 x8 et PCI Express 2.0 x16, deux modes qui, théoriquement, disposent de bande passantes identiques. Si l'on note une baisse de 2.5% dans le sens CPU->GPU, on notera 5% de gains dans le sens inverse.

Les performances entre les modes PCI-E 3.0 x4, 2.0 x8 et 1.0 x16 sont globalement équivalentes.

Bande passante théorique (mémoire paginable)

Sachant qu'il n'est pas toujours possible pour les développeurs d'utiliser de l'espace mémoire non paginable, nous avons réalisé un second test via la bibliothèque Cloo (en version 0.9.1 ). Le pilote Open CL d'AMD est compatible avec la version 1.1 de la spécification.


A l'image de ce que l'on avait vu côté non-paginable, de nouveau les gains sont asymétriques lorsque l'on compare les gains apportés par le PCI-E 3.0 x16 par rapport au 2.0 x16 : 38 et 51% respectivement dans les sens CPU->GPU et GPU->CPU. Des scores qui restent malgré tout relativement élevés puisque l'on atteint presque (ou dépasse dans le second sens) les performances du PCI Express 2.0 x16 non-paginable.

En ce qui concerne la comparaison 3.0 x8 et 2.0 x16, on retrouve un score identique dans le sens de transfert conventionnel, et un gain de 4.2% dans le sens inverse. Les performances des modes PCIE-E 3.0 x4, 2.0 x8 et 1.0 x16 restent de leur côté quasi identiques.

Voyons comment tout cela se traduit côté applicatif !


Page 3 - OpenCL, DxO Optics Pro, AES, Luxmark


OpenCL, AES, Luxmark

Nous avons voulu regarder les performances relatives de diverses applications OpenCL. De son côté durant les présentations des Radeon HD 7970, AMD mettait en avant une version 16.5 de WinZip (!) qui utiliserait OpenCL pour accélérer le cryptage AES. Cette version n'est toujours pas disponible.

Nous nous sommes tournés vers trois tests OpenCL. D'abord un test de cryptage AES issu du SDK d'AMD. Le second est LuxMark, un benchmark tiré de LuxRender utilisant OpenCL.

MAJ le 23/01 Le dernier est DxO Optics Pro en version 7.1 dont nous testons les fonctionnalités d'export RAW, elles aussi pouvant utiliser OpenCL.


DxO Optics Pro 7

Nous avons ajouté le logiciel de traitement photo DxO Optics Pro 7.1 dans notre protocole. Nous utilisons la fonctionnalité de développement RAW vers JPEG sur 50 fichiers, une fonctionnalité qui a été portée en OpenCL depuis la version 7 du logiciel. Nous avons réalisé deux séries de tests, en autorisant au choix la conversion d'un ou deux fichiers en parallèle. Au-delà, les performances du processeur tendent à limiter les performances de la carte graphique. Nous avons ajouté à titre indicatif le temps de conversion obtenu en mode processeur pur.

S'il on peut noter un leger impact des différents modes, en pratique les écarts restent minces. On notera que les modes x16 sont systématiquement plus rapides - à bande passante égale - que les autres.

Chiffrement AES

AMD livre avec son APP SDK le code source d'une logiciel de chiffrement AES. Pour ce test nous utilisons une image de 190 Mo, transférée vers le GPU ou elle est transformée, puis renvoyée vers le CPU avant d'être écrite sur disque. Le test mesure le temps de transfert et le temps de calcul.


Les écarts sont ici excessivement faibles mais l'on peut noter un petit avantage pour le PCI Express 3.0 x16 de l'ordre d'un centième de seconde. Disposer de plus de bande passante n'apporte ici en pratique pas grand-chose.

Luxmark

Nous utilisons la version Windows 64 bits de LuxMark en mode 100% OpenCL. Le test supporte Crossfire.


Là encore les gains sont excessivement minces même si l'on peut noter qu'en pratique le mode 3.0 x16 reste devant le 2.0 x16 d'un cheveu. La bande passante additionnelle l'apporte que très peu de choses. On notera que le mode PCI Express 3.0 4x, s'il est le plus efficace des modes équivalents sans CrossFire ne l'est plus avec ou il perd sensiblement. Le PCI Express 3.0 x8 reste très légèrement supérieur au 2.0 x16 dans les deux cas.

Voyons maintenant si nous pouvons mesurer des écarts de performances plus importants dans les jeux !


Page 4 - Battlefield 3, Crysis 2, Civilization V


Battlefield 3, Crysis 2, Civilization V

Les jeux ont pour particularité d'utiliser principalement le sens de transfert CPU vers GPU. Voyons comment ils se comportent, nous avons effectués nos tests en 1920 par 1200.

Battlefield 3


Battlefield 3 utilise l'un des moteurs graphiques les plus avancés à ce jour, le Frostbite 2. Nous utilisons le mode de rendu Ultra en mesurant les performances via Fraps sur un parcours bien défini.


Les écarts sont ici extrêmement minces au point qu'il n'y a réellement qu'en PCI-E 1.0 x16 que l'on note une baisse significative de performances. De manière assez intéressante, le PCI-E 3.0 x4 tient mieux la charge. Le mini gain de latence apporté par le taux de transfert plus élevé joue probablement ici.

Une fois le Crossfire enclenché, a bande passante théorique égale, le PCI-E 3.0 s'en sort toujours gagnant.

Crysis 2


Crysis 2 utilise une évolution du moteur de Crysis Warhead. Nous utilisons la version 1.9 avec le patch DirectX 11 ainsi que les textures additionnelles. Nous testons en mode Ultra via Fraps sur un parcours prédéfini.


Une fois de plus à bande passante identique les déclinaisons PCI Express 3.0 ont l'avantage avec une seule carte. Le PCI Express 1.0 reste moins impacté que dans Battlefield 3 mais les écarts restent minuscules.

Une fois Crossfire enclenché les écarts sont un peu plus nets avec un avantage toujours pour les solutions 3.0.

Civilization V


Civilization V utilise un moteur DirectX 11 assez réussi. Nous utilisons le benchmark intégré avec tous les détails au maximum avec ombres et réflexions. Nous utilisons le MSAA 8x.


Si la version x16 du PCI Express 3.0 domine, pour la première fois dans les jeux on notera un léger avantage pour le PCI Express 2.0 x16 face au PCI-E 3.0 x8, une situation qui se confirme aussi bien avec une carte seule qu'en Crossfire, qui tient possiblement d'une utilisation différente du PCI-E pour ce benchmark relativement gourmand. Pour rappel le PCI-E 2.0 x16 dispose d'un très léger avantage dans nos mesures théoriques de bande passante par rapport au PCI-E 3.0 8x.


Page 5 - Conclusion


Conclusion

Lorsque l'on regarde les performances théoriques, on peut voir qu'une partie des promesses du PCI Express 3.0 sont tenues. D'abord l'augmentation de bande passante est belle et bien effective, particulièrement notable dans le sens de transfert GPU vers CPU, un peu moins dans le sens inverse même si l'on note des gains théoriques de (seulement) 50%. La raison de ce gain plus limité est difficile a mesurer pour l'instant sachant que nous ne disposons que d'une seule plateforme compatible PCI Express 3.0, le LGA 2011 d'Intel, et un seul modèle de carte graphique PCI-E 3.0, la Radeon HD 7970. Interface, plateforme ou carte, nous ne pouvons pas pour l'instant nous prononcer sur le ou les responsables.

En pratique les applications OpenCL que nous avons pu tester sont pour l'instant loin d'être limitées par la bande passante mémoire. En offrant déjà près de 7 Go/s, le PCI Express 2.0 x16 couvre la majorité des usages même si certaines applications professionnelles spécifiques sauront certainement tirer partie des gains théoriques.


Côté jeux, les améliorations de bande passante ne sont pas beaucoup plus utiles. Si l'on continue à noter une différence entre le PCI Express 2.0 x16 et la version x8 (une différence encore plus marqué avec le PCI Express 1.0 x16 en Crossfire), en pratique l'on reste autour d'un pourcent de différence entre le PCI Express 3.0 x16 et le mode x8 avec une seule carte, un écart qui passe sous le demi pourcent en mode Crossfire. Un point positif pour ceux qui souhaiteront utiliser Crossfire sur les futures plateformes Ivy Bridge, que ce soit avec deux cartes en x8/x8 mais aussi avec trois cartes en x8/x4/x4, le mode x4 en PCI-Express 3.0 n'étant pas non plus trop pénalisant.


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