Perfs avec 2, 4, 6 et 8 cœurs : 4 jeux à la loupe
La capacité des jeux à tirer parti de nos processeurs a toujours été un sujet de débat, ce depuis l’apparition des premiers processeurs à 2 cœurs en 2005 (Athlon 64 X2 et Pentium D), voire durant la période pendant laquelle le bi-processeur était abordable (ABIT BP6 pour ceux qui s’en souviennent, en 1999).
En effet, si la course aux cœurs, qui suivait la course à la fréquence, à rapidement mené AMD comme Intel à proposer des modèles 2, 4 et même 8 cœurs pour le grand public, les jeux ont toujours eu du retard dans leur exploitation, au contraire d'autres applications lourdes dans le domaine de la création multimédia par exemple.
Il faut dire que la séparation de la charge d'un jeu en de multiples threads est un vrai casse-tête pour les développeurs, qui doivent jongler avec les impératifs du temps-réel tout en essayant d'implémenter diverses parties de leur moteur (intelligence artificielle, simulation, son...) dans des threads séparés (en devant gérer les problèmes d'interdépendances) voire de subdiviser une partie unique du moteur en de multiple threads (par exemple la préparation du rendu 3D) en devant gérer là aussi des problèmes de synchronisation.
Au-delà du moteur de jeu en lui-même se pose la problématique de l'API graphique, ou plus exactement des interactions du moteur avec l'API, la préparation des commandes graphiques se faisant historiquement de manière séquentielle dans un seul thread sous DirectX 9 et OpenGL. DirectX 11 avait introduit les Deffered Context afin d'autoriser, sous certaines conditions, d'envoyer des commandes à partir de multiples threads, mais en pratique les gains étaient limités ce qui entre autre poussé AMD, en collaboration avec DICE, à jeter un pavé dans la marre avec Mantle. Cette API de plus bas niveau permet à la fois de réduire le coût processeur des commandes de rendu mais aussi aux développeurs de mieux tirer parti des processeurs à multiple cœur, des améliorations qui vont être reprises par Microsoft pour DirectX 12.
Il restera bien entendu à voir ce que les développeurs feront de ces nouvelles fonctionnalités, l’hétérogénéité des configurations PC rendant l’optimisation bien plus complexe qu’elle ne l’est sur les consoles par exemple. Ces dernières profitent d’ailleurs déjà d’API de très bas niveaux, ainsi que d’un matériel fixe, et le passage de la dernière génération au x86 avec des processeurs multicoeurs assez modeste ne fait que renforcer la problématique des API présentes sur PC, qui sont certes pratiques et flexibles mais manque d’efficacité.
En attendant nous avons voulu revenir sur le scaling de 4 jeux issus de notre dernier protocole de test processeur en fonction des cœurs, c’est-à-dire leur propension à tirer parti de la présence de plus de cœurs pour augmenter le nombre d’images /s.
Pour ce test nous utilisons trois processeurs, un AMD FX-8350 (Vishera), un Core i7-4770K (Haswell) et un Core i7-5960X (Haswell-E) respectivement montés sur des ASUS Sabertooth 990FX R2.0, Z97-A et X99 Deluxe et associé à de la DDR3-1600 9-9-9 ou de la DDR4-2133 13-13-13, le tout sous Windows 8.1 avec une GTX 780 Ti et les pilotes 340.52. Au gré des tests nous activons 2, 4, 6 ou 8 cœurs, avec et sans HyperThreading chez Intel. Les processeurs sont configurés de la sorte :
- Vishera : Cœurs à 4.0 GHz, Northbridge à 2.2 GHz, L3 de 8 Mo
- Haswell : Cœurs à 3.5 GHz, Uncore à 3.5 GHz, L3 de 8 Mo
- Haswell-E : Cœurs à 3.5 GHz, Uncore à 3.0 GHz, L3 de 20 Mo
Certains auraient probablement aimé un test à fréquence égale, mais il nous a paru plus opportun de laisser un delta de fréquence entre Vishera et Haswell en faveur du premier comme c'est généralement le cas sur les modèles en vente ou après overclocking. Sur Haswell-E, on garde l'asynchronisme par défaut entre cœurs et uncore. Cette vitesse de l'Uncore moindre explique, combiné aux latences de la DDR4, qu'à nombre de cœurs équivalent Haswell-E est parfois un peu moins rapide qu'Haswell dans les benchs qui vont suivre. A noter que sur Vishera, l'activation des cœurs se fait par paire au sein d'un même module.
Arma III
Pour Arma III nous chargeons une sauvegarde lors d'un entrainement en hélicoptère dans laquelle nous survolons pendant 20s l'ile de Stratis. Les tests sont effectués en 1920*1080 Ultra, sans anti-aliasing.
Arma III est l'exemple même du jeu qui ne dispose pas d'un moteur apte à tirer profit d'un processeur moderne.
Sur Vishera, on note un gain de performance assez faible entre 2 et 4 cœurs (+15%) et les performances stagnent au-delà.
Sur Haswell le gain est à peine supérieur (+17,5%), et si l'activation de l'Hyperthreading permet de gagner un peu sur 2 cœurs (+7,6%) il fait baisser les performances sur 4 (-6,8%).
Logiquement sur Haswell-E les performances ne varient que dans la marge d'erreur de mesure entre 4, 6 et 8 cœurs, et l'Hyperthreading fait pour sa part perdre de 7 à 8% de performances.
Avec un tel moteur avoir un nombre important de cœur avec des performances unitaires moyennes est handicapant, un désavantage pour l'offre AMD face à la gamme Intel.
Total War : Rome II
Pour Total War : Rome II nous mesurons simplement le framerate lors de la première scène de jeu du prologue, en 1920*1080 Extreme mais en désactivant l'AA et le SSAO.
Cette fois les gains sont plus importants quand on passe de 2 à 4 cœurs sur Vishera avec 56% de mieux. Au-delà le gain est plus faible, avec 11,8% en passant de 4 à 8 cœurs.
Le gain entre 2 et 4 cœurs est moins important sur Haswell avec +33%, alors que le gain offert par l'Hyperthreading est très faible.
Comme sur Vishera, Haswell-E profite de léger gain en passant à 6 et 8 cœurs. Par contre l'Hyperthreading devient nettement contre-productif dans ces conditions !
Si Arma III se contente de 2 cœurs, pour Total War : Rome 2 la meilleure option se situe à 4 cœurs même si on note de légers gains au-delà. Dans les deux cas l'Hyperthreading est contre-productif au-delà de ces limites respectives. A nombre de cœurs équivalent Haswell est nettement plus véloce que Vishera, si bien que même sur l'entrée de gamme ou Intel ne propose que 2 cœurs AMD ne sera pas compétitif pour ce jeu.
Watch Dogs
Le framerate de Watch Dogs est pour sa part mesuré lors d'une course de 20s dans une partie assez chargée du jeu. Nous avons trouvé des scènes avec des framerate 10 à 20% inférieurs mais le système de sauvegarde automatique nous a empêché de les utiliser de manière très reproductible, tout comme l'environnement changeant. Les performances sont mesurées en 1920*1080 avec un niveau de qualité générale à Ultra mais sans anti-aliasing.
Sur AMD Vishera les performances sont doublées en passant de 2 à 4 cœurs, une configuration dans laquelle le jeu commence à être jouable aux réglages testés car au-delà du framerate bas on note de forts à-coups avec 2 cœurs. Le passage à 6 cœurs n'apporte par contre qu'un gain réduit, alors que bizarrement on gagne plus en passant à 8.
Avec un Haswell le gain est également important en passant de 2 à 4 cœurs, et l'Hyperthreading permet sur 2 cœurs d'avoir un gain substantiel de performances de 50%. Malgré un framerate plus élevé que chez AMD, avec 2 cœurs on a en sus du framerate moyen de nombreuses saccades. Sur 4 cœurs l'avantage de l'HT est plus réduit avec +16,8%.
Sur Haswell-E on note des résultats très proches sans HyperThreading avec 4 ou 6 cœurs, alors que le passage à 8 cœurs offre un gain de performance plus net comme c'était le cas sur Vishera. Une fois l'HT activé les performances avec 6/8 cœurs sont cette fois très proches, sans que nous soyons à titre informatif limité par les performances GPU.
Watch Dogs est un jeu dont le moteur récent permet d'exploiter les processeurs modernes disposant de multiples cœurs, malgré un comportement assez étrange en présence de 6 cœurs. Au-delà de 8 cœurs logiques l'avantage reste tout de même faible chez Intel, ce qui réduit l'intérêt d'un Haswell-E. L'AMD Vishera se montre donc logiquement sous un meilleur jour, mais la fenêtre de tir est réduite puisque Haswell s'en tire bien dès 2 cœurs avec Hyperthreading.
Crysis 3
Pour Crysis 3 nous utilisons une sauvegarde sur une zone particulièrement chargée du jeu dans laquelle nous avançons pendant 20s afin d'avoir un framerate moyen. Les tests sont effectués en 1920*1080 Very High, sans anti-aliasing.
Première chose, avec seulement 2 cœurs actifs sur l'AMD Vishera, le jeu plante lors du chargement d'un niveau sur notre configuration de test. Sur ce processeur les performances augmentent nettement en passant de 4 à 6 cœurs actifs, et encore sensiblement quand on passe à 8 cœurs.
Sur Haswell le jeu fonctionne avec 2 cœurs mais les performances sont mauvaises. Activer l'Hyperthreading pour passer à 4 "cœurs logiques" permet de gagner 50% de performances tout de même, mais ce n'est que le passage à 4 cœurs qui permet de dépasser les 30 fps sur la scène de test. Avec 4 cœurs physiques, l'activation de l'Hyperthreading ne fait plus gagner que 8,4% de fps sur Haswell.
Comme sur Vishera les gains sont importants en passant de 4 à 6 cœurs sur Haswell-E, avec un gain plus faible en passant à 8. L'Hyperthreading fait gagner 8.8% sur 4 cœurs et 10.4% sur 8, mais bizarrement sur 6 cœurs les performances augmentent plus nettement avec 27,6% de mieux. On est au même niveau de performances avec Hyperthreading que l'on soit sur 6 ou 8 cœurs, sans que les performances soient ici limitées par le GPU.
Crysis 3 est le titre qui profite le plus de la présence de multiples cœurs, notamment sur ce type de scène qui fait appel à beaucoup de végétations. Il permet du coup d'obtenir des gains intéressants sur Haswell-E par rapport à Haswell, mais aussi d'avoir des processeurs AMD bien positionnés face à l'offre Intel, notamment les FX-6 par rapport aux Core i3.
Impact des pilotes
Avant de clore ce dossier nous avons voulu vérifier l'impact éventuel des pilotes GPU sur l'augmentation des performances dans ces 4 jeux en fonction du nombre de cœurs. Comme nous l'indiquions dans notre focus dédié à l'impact des pilotes sur les performances en jeu en cas de limite CPU, les pilotes peuvent en effet essayer de paralléliser les traitements qui leur incombe, et ont également leur rôle à jouer pour le traitement dans la gestion des Deffered Context qui permettent depuis DirectX 11 d'envoyer des commandes de rendu dans de multiples threads.
Pour se faire en sus des tests précédents effectués avec une MSI GTX 780 Ti Gaming OC et les pilotes 340.52 nous avons mesuré les performances sur une Radeon R9 290X de référence configuré en mode "Uber" avec les pilotes 14.7 RC3 (pour information nous avons observé rapidement les performances avec les 14.9 et n'avons pas noté de différence notable). Ce ne sont pas les valeurs absolues qui nous intéressent le plus ici mais le gain obtenu en passant de 4 à 8 cœurs, que nous avons observé sur deux processeurs, un AMD Vishera et un Intel Haswell-E :
Sur Arma III et Total War : Rome 2 on ne note pas de différence de scaling entre 4 et 8 cœurs que l'on soit avec un GPU et les pilotes AMD ou avec un GPU et les pilotes Nvidia. Sous Watch Dogs par contre le gain lors du passage à 8 cœurs est notablement plus important avec les pilotes Nvidia, que ce soit sur Vishera (+31% vs +22%) ou sur Haswell-E (+28% vs +17%).
Enfin sous Crysis 3 les résultats sont variables puisque sur Vishera les gains sont comparables entre pilotes AMD et Nvidia, sur Haswell-E l'écart est en faveur de Nvidia (+64% vs +49%). Attention toutefois, c'est une exception dans notre protocole mais sous ce titre avec un Haswell-E 8 cœurs nous sommes très légèrement limités par le GPU R9 290X dans les conditions du test, si on fait sauter cette limite GPU en abaissant la résolution le gain lors du passage de 4 à 8 cœurs est toujours inférieur à celui observé avec Nvidia mais remonte à +55%.
On remarque au passage que sous Crysis 3 la hausse de performances entre 4 et 8 cœurs est notablement supérieure sur Vishera que sous Haswell-E. Les architectures sont toutefois très différentes ce qui ne permettra pas d’en conclure grand-chose, puisque pour rappel chez Intel tous les cœurs sont indépendants alors que chez AMD en sus de passer de 4 à 8 cœurs on passe de 2 à 4 modules, avec un partage de ressource pour 2 cœurs au sein de chaque module.
Les pilotes graphiques peuvent donc bien avoir un impact sur l'augmentation des performances qui va avec l'augmentation des cœurs, sans que ce soit systématique.
Conclusion
Ce n'est ni un secret ni une nouveauté, en fonction des jeux l'utilisation de plusieurs cœurs côté processeur est très variable. Ce panel de 4 jeux nous montre deux situations extrêmes, avec d'un côté Arma III qui ne tire guère partie de plus de 2 cœurs, et de l'autre Crysis 3 qui montre des gains même avec 8 cœurs. Au milieu on retrouve Total War : Rome 2 et Watch Dogs qui profitent dans une moindre mesure d'un passage à 8 cœurs. Une sortie en 2014 et un moteur tout neuf, comme c'est le cas de Watch Dogs, ne garantit donc pas une utilisation optimale de 8 cœurs.
Ce grand écart ne facilite clairement pas le choix d'un processeur pour le jeu alors qu'on a d'un côté un nombre plus important de cœurs et de l'autre des cœurs unitairement plus performants. Nous faisons bien entendu ici référence à l'offre AMD par rapport à l'offre Intel.
En effet si au-delà de 160 € notre préférence va aux Core i5 qui garantissent un bon niveau de performances quel que soit le moteur de jeu du fait de la présence de 4 cœurs ayant chacun de bonnes performances, sur l'entrée de gamme il faudra se contenter chez Intel de 2 cœurs avec les Celeron et Pentium (40-80 €), voire 2 cœurs avec Hyperthreading avec les Core i3 (105-140 €). A contrario en face AMD propose des Athlon X4 ou AMD FX à 4 cœurs en FM2+/AM3+ (65-100 €) et même des AMD FX 6 cœurs en AM3+ (95-105 €).
Si sur des titres tels qu'Arma III ou Total War : Rome 2 la balance penche clairement en faveur de la gamme Intel, sous Watch Dogs les Celeron et Pentium sont éliminés du fait de gros à-coups, ce qui laisse le champ libre aux processeurs AMD sur l'entrée de gamme, alors qu'avec Crysis 3 la bonne exploitation de 6 cœurs permettra à un FX-6 de tirer son épingle du jeu face à un Core i3. Un véritable casse-tête donc, car au-delà des jeux actuels comment savoir comment se comportera le jeu sur lequel on consacrera des heures et des heures dans quelques mois ?
Il n y a malheureusement pas de réponse certaine à cette question, et on ne peut se fier qu'à la tendance de fond qui est un meilleur usage d'un nombre plus importants de cœurs par les jeux, domaine dans lequel l'arrivée de Mantle ainsi que le futur DirectX 12 devrait aider. La balle restera toutefois dans le camp des développeurs, qui devront exploiter correctement ces nouvelles possibilités afin de tirer parti de toute la puissance de nos machines !
Contenus relatifs
- [+] 09/05: AMD Ryzen 7 2700, Ryzen 5 2600 et I...
- [+] 05/04: Pas de MAJ Microcode pour les Gulft...
- [+] 03/04: Intel lance la 2ème vague de sa 8èm...
- [+] 07/02: Windows 10, Meltdown et Spectre : q...
- [+] 05/10: Intel Core i7-8700K, Core i5-8600K,...
- [+] 12/09: Core i7-7820X : Un Skylake-X mieux ...
- [+] 07/09: Les Skylake en fin de vie chez Inte...
- [+] 23/08: Coffee Lake incompatible avec les L...
- [+] 13/08: Core i3-8350K et i3-8100 : 4 coeurs...
- [+] 29/06: Intel Core i9-7900X et Core i7-7740...