Il y a quelques semaines, UL (anciennement Futuremark) a publié le dernier test de sa suite de benchmarks de jeux 3DMark en cours, CPU Profile. La prémisse derrière ce nouveau test spécifique au processeur est une simulation pour mesurer comment les performances du processeur évoluent avec les cœurs et les threads. Normalement, les tests 3DMark sont conçus pour mesurer les performances de jeu globales – et sont donc en grande partie une référence GPU – mais celui-ci est un peu différent car il se concentre plus spécifiquement sur les performances du processeur. Nous voulions donc jeter un coup d’œil au dernier test d’UL pour avoir une meilleure idée de ce qu’il teste exactement, de ce qu’il essaie d’accomplir exactement et de son utilité.

3DMark d’UL et le nouveau test

Le logiciel 3DMark (avec le slogan « The Gamer’s Benchmark ») a été un incontournable de la communauté des analyses comparatives synthétiques pour sa variété de tests conçus pour émuler différents niveaux de complexité de jeu. D’une interface singulière, les utilisateurs peuvent exécuter des tests simples visant les performances graphiques mobiles et intégrées, aux jeux de niveau intermédiaire avec des résolutions et des détails raisonnables, jusqu’à des tests surdimensionnés pour des systèmes qui n’existent pas encore. Chacun des tests fournit un ensemble de base de calculs graphiques conçus pour émuler les performances des jeux vidéo et produit un nombre composite pour représenter ces performances pour ce marché. Si vous avez déjà entendu parler de Time Spy ou Fire Strike, deux tests d’analyse comparative populaires en particulier pour les overclockeurs, alors 3DMark est l’endroit d’où il vient.

3DMark sert également de véhicule pour les tests de nouvelles fonctionnalités. Au fil des ans, UL a introduit des tests spécifiques distincts pour trouver les limitations des appels de dessin, les performances de traitement DirectX Raytracing, les performances VRS (Variable Rate Shading), les tests PCIe 4.0 et les performances NVIDIA DLSS. Le test le plus récent de ce portefeuille est le profil CPU, le point de cet article.

Qu’est-ce que la mesure du test du processeur

Le test CPU Profile présente une scène simple à basse résolution dérivée de l’imagerie des derniers tests de jeu. Le limiteur de débit de cette scène réside dans les calculs bruts du processeur en arrière-plan – le test exécute 150 images d’images, mais chaque image implique un cadre de calcul parallèle basé sur le vol d’oiseaux.

Le flocage d’oiseaux, également connu en simulation sous le nom de boids (objet oiseau-oid, pas une chose d’accent), implique l’interaction d’un grand nombre d’objets en mouvement les uns avec les autres en fonction de petits mouvements aléatoires et de règles concernant la séparation, l’alignement et la cohésion. Chaque boid doit :

  • méfiez-vous de sa distance avec les autres boids dans un pack (séparation),
  • le sens de déplacement par rapport aux autres (alignement), et
  • le désir d’aller vers une position moyenne dans la ligne de mire (cohésion)

Nous avons tous vu comment les oiseaux se déplacent en masse ou pêchent en bancs, et il existe de véritables modèles mathématiques qui peuvent être utilisés pour le simuler. Un ajustement mineur dans la séparation, l’alignement et la cohésion peut ajuster exactement la façon dont ils interagissent et se déplacent.

Du point de vue de la simulation, chaque boid est indépendant dans ses mouvements de sorte qu’il peut être calculé en parallèle aux autres, cependant chaque boid doit avoir une connaissance de son environnement local et des positions et directions des autres boids à l’intérieur de cet environnement. Plus il y a de boids dans l’environnement local, plus la table de recherche pour cet individu doit être grande – la taille de cette table de recherche à chaque pas de temps est souvent un mélange entre la distance de séparation et la ligne de vue : plus un individu peut voir d’objets/ interagit avec à la fois, plus ce calcul est important. Les données de cette table de recherche doivent être interrogées à partir de nombreux endroits différents dans le cache et la mémoire, presque au hasard, et pour une simulation parfaite, à chaque pas de temps également.

Pour tous ceux qui souhaitent jouer avec une simulation 100 boid dans leur navigateur, Ben Eater en a une bonne, ou les utilisateurs peuvent jouer avec le code Github ici avec une version Javascript. Il s’agit d’une conception à thread unique, et peut facilement évoluer jusqu’à quelques milliers sur un seul cœur sans aucun code optimisé.


Boïdes avec des conditions aux limites de bord simples

Au-delà de cela, la simulation boid n’est généralement pas exécutée sur les cœurs de processeur de toute façon. Les utilisateurs peuvent interagir avec une version GPU dans leur navigateur aujourd’hui, avec plus de 65 000 boids fonctionnant très bien.

Donc, avec toutes ces discussions sur les boids, le test de profil CPU dans 3DMark fait exactement cette simulation exclusivement*. La charge de travail décrite sur les états de 3DMark qu’ils ont une simulation simple et hautement optimisée des boids divisés en deux parties.

  • Un : la moitié des boids utilisent des instructions optimisées SSSE3
  • Deux : la moitié des boids utilisent des instructions optimisées AVX2, sinon SSSE3

Le benchmark effectue six sous-tests séparés en fonction du nombre de threads : 1, 2, 4, 8, 16, max. Plutôt que de donner une note globale, le test attribue à l’utilisateur six notes différentes, basées sur un calcul simple :

  • Score = 350 000 / temps de trame moyen

La simulation dure 150 trames fixes, donc chaque sous-test a la même simulation de calcul fixe (et nous supposons les mêmes graines fixes pour RNG). Sur les processeurs les plus rapides, la section max threads peut prendre moins de 10 secondes, ce qui permet à la simulation de s’exécuter avec des processeurs fonctionnant entièrement à des vitesses d’horloge turbo (nous reviendrons sur la raison pour laquelle cela est important plus tard), tandis que la section single thread sur les processeurs les plus lents peut prendre cinq minutes environ.

La page des résultats finaux ressemble à ceci :

Le test vous donne six résultats différents ainsi qu’un suivi des informations système s’il a été activé.

Le but ultime du test est de comparer les performances du processeur à plusieurs nombres de threads différents, en faisant un test qui peut évoluer pour utiliser tous les threads qu’un processeur grand public peut fournir, mais offre également un aperçu des performances avec un nombre de threads inférieur, ce qui est où se trouvent de nombreux jeux aujourd’hui. En d’autres termes, pour décider d’avoir un test de jeu monothread ou multithread, UL a décidé de faire les deux en testant avec plusieurs threads.

*Au lancement, le site Web d’UL a indiqué que le test était en deux parties avec un moteur physique, mais UL nous a précisé par e-mail qu’il s’agissait d’une erreur de copier/coller d’un test précédent. Le site internet a depuis été mis à jour.

Discussion du test

Normalement, lorsque vous testez un nouveau test pour notre suite de tests de performances, il est utile de jeter un œil critique sur ce que le test mesure exactement et comment il se rapporte au monde réel. Chaque référence a sa place dans une liste d’évaluation, bien qu’il soit toujours important de quantifier où elle devrait être et quel poids devrait être accordé aux résultats. Par exemple, nous avons des tests du monde réel qui aident à améliorer les performances de ce logiciel, mais nous avons également un mélange de tests synthétiques pour la perception globale des performances. Habituellement, nous nous concentrons davantage sur les tests du monde réel pour l’analyse et la recommandation, mais la petite partie des synthétiques aide à maintenir les lignes de base et pour ceux qui veulent les voir.

Normalement, nous filtrons les tests de jeu de 3DMark dans cette dernière partie des tests synthétiques. Avec la même version du programme et les mêmes pilotes vidéo, nous pouvons voir comment différents processeurs et cartes graphiques évoluent à la lumière de la charge de travail synthétique, même si la charge de travail synthétique essaie d’imiter une expérience de jeu moyenne. UL a été assez clair sur le fait que l’objectif des tests de jeu de 3DMark est de faire exactement cela – émuler les performances du monde réel.

Malheureusement, le commentaire sur le test du profil CPU n’est pas clair. On vous pardonnera peut-être que le test est conçu pour montrer où un processeur peut être limité dans le jeu, après tout le test est expédié avec une demi-douzaine d’autres tests de jeu GPU et pendant le test lui-même, nous avons droit à un jeu très précis. à la recherche d’images.


Les flèches sur la gauche semblent être des boids (300 ?), mais ne savent pas si elles sont liées à la simulation.

Dans la pratique, il n’est pas clair si les images affichées à l’écran ont quelque chose à voir avec la simulation en cours (bien qu’UL ait répondu à quelques e-mails, ils n’ont pas encore répondu directement). On ne voit qu’environ 300 boids à l’écran, et pourtant une simple simulation sur un seul core d’un Core i7-6950X peut facilement en faire quelques milliers.

Si nous entrons dans le communiqué de presse d’UL pour le test, le titre de la page est « Nouveaux benchmarks CPU pour les joueurs et les overclockeurs », la page décrit qu’elle exécute une simulation CPU sur 1,2,4,8,16, threads max. Pour chacun de ces sous-tests, il donne également une brève indication de l’utilité du test. Voici notre résumé du communiqué de presse d’UL sur les sous-tests :

  • 1 fil : performances brutes du processeur, mais d’autres scores sont de meilleurs indicateurs de jeu.
  • 2 fils de discussion : idéal pour les jeux DX9 tels que DOTA2, League et CS:GO
  • 4 fils : Idéal pour les jeux DX9 tels que DOTA2, League et CS:GO
  • 8 fils de discussion : jeux DX12 modernes, en corrélation avec 3DMark TimeSpy
  • 16 fils de discussion : tâches de calcul, moins pertinentes pour les jeux
  • Max Threads : Performances complètes, non pertinent pour les jeux

Dans les charges de travail de jeu, nous serions généralement d’accord avec cela. Cependant, la charge de travail sous-jacente utilisée dans CPU Profile n’est pas une charge de travail de jeu. C’est là que la confusion entre en jeu. UL dit que sa simulation boid s’apparente à des situations similaires dans les jeux, même au point où utiliser à moitié SSSE3 et à moitié AVX2 s’apparente davantage à des moteurs de jeu utilisant différentes optimisations ; Cependant, il ignore complètement le fait que dans chacun de ses sous-tests, le « jeu » est limité en CPU, même à 8 threads et à 16 threads. C’est bien pour un test spécifique au processeur, mais il est naïf de la façon dont la plupart des jeux fonctionnent sur du matériel haut de gamme.

Comme mentionné ci-dessus, UL n’a pas indiqué à quel point sa simulation de boid est dense, ni comment elle évolue ; par AnandTech estime que vous avez besoin d’au moins 2000+ pour saturer un seul thread avec du code non optimisé, donc avec un code optimisé mis à l’échelle sur 8 threads ou 16 threads, nous devons examiner 50000 ou 100000 objets de flocage dans un espace de simulation. Pour les jeux qui présentent des environnements de flocage boid, la plupart d’entre eux utilisent une physique secondaire, c’est-à-dire qu’ils ne peuvent pas être influencés par le personnage, mais ceux qui ont une physique en interaction, il est peu probable qu’ils simulent à cette échelle. De plus, rien ne dit qu’un moteur de jeu ne se contentera pas d’augmenter/diminuer les boids dans la simulation en fonction des performances.

La durée du test est orthogonale à tout cela. Étant donné que le test est de 150 images fixes quel que soit le nombre de threads qui fonctionnent, cela signifie que les meilleurs processeurs peuvent parcourir le maximum de threads en quelques secondes, tandis que les processeurs les plus lents prennent plusieurs minutes en mode 1T. Le point de discussion ici est de savoir comment chaque processeur induit ses modes Turbo.

À divers moments au cours de la dernière décennie, Intel et AMD ont exprimé en privé leur inquiétude concernant les charges de travail de thread maximales volumineuses qui ne prennent que quelques secondes – généralement, les charges de travail de thread maximales nécessitent suffisamment de temps pour qu’un processeur atteigne une fréquence d’état stable, et se termine donc dans les la fenêtre turbo fait du test une métrique non représentative. Prenez, par exemple, CineBench R20 qui peut se terminer en 5 secondes avec une moyenne de pixels par seconde plus élevée qu’un test Cinema4D qui peut prendre quelques heures. De plus, le jeu est une course de résultats turbo, et non une charge de travail fixe constamment au turbo. Si Intel et AMD ont précédemment déclaré que ces types de tests de threads in-turbo max ne sont pas pertinents pour les comparaisons de performances, alors le nouveau test de profil de processeur connaîtrait le même sort.

Nous avons approché UL avec cela, avec l’idée que la simulation du profil CPU devrait être un temps fixe au lieu d’un ensemble fixe de trames, mais à la fin UL n’était pas d’accord. L’un des objectifs du test était apparemment d’avoir une courte durée de test. Ils voulaient que le résultat de 8 threads soit en corrélation avec les résultats de Time Spy Extreme, ce qui signifiait que trouver un temps qui fonctionnait tout en étant court était un objectif du projet. UL a également déclaré qu’un test de trame fixe de 150 entraîne une quantité de travail fixe et a suggéré que les systèmes plus lents traiteraient moins avec des pas de temps fixes – je dois souligner que cela n’a pas d’importance si vous prenez une moyenne lorsque des pas de temps fixes sont dans endroit. Sur 150 images, UL a déclaré pouvoir garantir une charge de travail équilibrée sur tous les threads (ce qui n’arrive pas dans les jeux), et au-delà, la cohérence du test divergerait dans ses résultats.

En fin de compte, je ne suis pas d’accord avec certains des choix d’UL ici, et je trouve que beaucoup de ces arguments semblent au mieux arbitraires – surtout compte tenu de ma propre expérience dans la construction de nos tests internes tels que 3DPM (qui fait incidemment un temps fixe, pas un calcul fixe ). Cela signifie également que j’ai du mal à corréler ce que fait cette référence à la façon dont un utilisateur peut interpréter les résultats pour une charge de travail de jeu. Ce que UL a fait ici, c’est avant tout créer un benchmark CPU, et il semble que le simple fait d’utiliser un mécanisme de simulation « qui peut être utilisé dans les jeux » soit décrit comme un outil pour aider à identifier les performances de jeu. À ce stade, avec les connaissances dont je dispose, je ne suis toujours pas convaincu que la charge de travail soit pertinente pour le jeu.

Résultats

Typique pour un benchmark UL, CPU Profile génère une série de scores sans dimension. Ces scores sont directement corrélés à l’indice de référence sous-jacent, mais ils ne constituent pas une mesure spécifique en eux-mêmes. Pour compliquer un peu les choses pour le profil du processeur, le benchmark génère une demi-douzaine de scores – donc à moins que vous ne lisiez la documentation, les données peuvent apparaître comme une surabondance de chiffres sans contexte.


Exemple du site Web d’UL

En regardant ces chiffres, UL indique sur son site Web que les résultats aident à mettre en valeur le résultat par rapport aux autres, mais aussi le potentiel d’overclocking de votre processeur. C’est un indice que cette référence est en fait meilleure pour les overclockeurs que n’importe qui d’autre, car avoir six numéros de résultats différents et six recommandations différentes pour l’overclocking du processeur n’aide pas beaucoup à interpréter le jeu, d’autant plus que la barre montrant le score est assez petite et n’offrant aucun contexte supplémentaire.


Résultats de l’un de nos processeurs, difficile de voir ces barres

Il y a aussi la question de présenter le résultat sous forme de score. Tous les tests d’UL donnent un score à la fin, et comme nous l’avons montré ci-dessus les résultats de ce test, un calcul d’un nombre arbitraire (350000) divisé par le temps de trame moyen (en millisecondes). La raison pour laquelle les résultats ne sont pas donnés sous forme de temps de trame brut est une simple psychologie – les plus grands nombres sont plus beaux sur les graphiques et sont plus faciles à interpréter. Ainsi, en divisant un nombre par le temps de trame moyen, tout obtient une échelle. Cela permet également de réduire la confusion en supprimant les unités du résultat. L’inconvénient ici est que le nombre initial est très arbitraire.

Sur le site Web, UL l’appelle une valeur de référence en utilisant «une constante de temps définie sur 70 multipliée par une constante de score définie sur 5000», ce qui revient à 350000. Il n’y a aucune explication sur la raison pour laquelle ces nombres existent, bien que nous puissions interpréter que 70 censé être de 70 millisecondes, et si un score atteint 70 millisecondes (notez que vous avez besoin d’un processeur à 8 cœurs pour l’obtenir), le résultat final est de 5000 points. Presque tous les processeurs de tous les sous-tests obtiendront un score en vertu de cela, ce qui montre que le pivot pour la mise à l’échelle des résultats est en fait plus élevé que la plupart des processeurs.

Avec les données, UL aurait pu simplement représenter les données sous la forme d’une fréquence d’images moyenne. Par exemple, voici quelques résultats pour le Ryzen 7 2700X, un processeur 8 cœurs/16 threads, fonctionnant en stock avec la mémoire JEDEC. Le tableau présente le temps de trame moyen brut, le score d’UL et une métrique de fréquence d’images moyenne.

Profil de processeur 3DMark
AMD Ryzen 7 2700X
AnandTech Moyenne
Temps de trame (millisecondes)
Score du processeur 3DMark Moyenne
Images par seconde
1T 660,9 ms 530 1,5 ips
2T 380,8 ms 919 2,6 ips
4T 217,3 ms 1611 4,6 ips
8T 121,5 ms 2881 8,2 ips
16T 78,6 ms 4453 12,7 ips
NT 78,0 ms 4487 12,8 ips

Notez que si votre jeu fonctionne à 12 images par seconde sur un Ryzen 7 2700X, alors quelque chose est réglé trop haut de toute façon.

Mais lorsque nous commençons à répertorier plusieurs processeurs, ces données deviennent très rapidement excessives et denses.

Profil de processeur 3DMark
Résultats donnés en FPS moyen
AnandTech R9
5950X
R9
3950X
R7
2700X
i9
11900K
i9
9900KS
1T 2.7 2.2 1.5 3.1 2.3
2T 5.1 4.0 2.6 6.2 4.7
4T 8.4 6.4 4.6 11.7 9.2
8T 14.1 11,0 8.2 20.7 17.2
16T 22,4 19.1 12,7 24,8 20.7
NT 31.1 28,6 12.8 24,8 20.7

Comment doit-on commander cette table ? Doit-il être classé par résultats 1T ou par résultats de threads max ? Si nous nous concentrons sur les jeux, nous devrions peut-être commander par 2T/4T ou 8T à la place, ce qui rend les autres résultats des données supplémentaires que nous écartons pour ne pas être pertinents ou les rendre trop complexes. Comme c’est généralement le cas, l’inconvénient d’offrir des données multidimensionnelles – dans ce cas, des résultats avec plusieurs quantités de threads – est qu’il devient beaucoup plus difficile de les présenter de manière simple.

À ce jour, j’ai effectué le test sur 24 processeurs, d’un Threadripper à 64 cœurs à un Apollo Lake à double cœur. Plutôt qu’un tableau de résultats, ces résultats sont classés selon le processeur qui obtient le score le plus élevé pour chacun des sous-tests. Il y a même un pont Sandy et Ivy à l’intérieur.

Le graphique résultant est assez bruyant, d’autant plus que les processeurs à nombre de threads élevé les plus rapides ne sont pas les processeurs à faible nombre de threads les plus rapides (et vice versa). En fin de compte, un graphique comme celui-ci pourrait mieux paraître avec seulement quelques éléments, comme ici :

Cela montre que le Core i9-11900K obtient les meilleurs résultats à ce test, jusqu’à ce qu’il atteigne 16 threads lorsque la bande passante mémoire supplémentaire du 3990X prend le relais. Il convient de noter que Tiger Lake fait catastrophique sur ce test, juste derrière le R9 3950X en 1T et derrière le i3-9100F en threads max, car les limites de puissance du processeur mobile importent plus que les threads supplémentaires. Je devrai vérifier avec un AMD de la série U pour voir quelle est la différence ici.

Dans l’ensemble, lorsque nous évoluons vers plus de threads, nous voyons qu’avoir un système plus complet aide sur ce test, cependant dans le mode monothread, tout ne semble pas concerner l’IPC, ce qui est peut-être l’une des limites de la simulation de boid. En fait, nous pouvons voir que le Core i3 fonctionne mieux en 2T/4T par rapport au Ryzen 9 3950X, peut-être en raison du fait que les discussions croisées sur les puces sont plus préoccupantes.


L’indice de référence dans son intégralité : je ne sais pas si tout cela se rapporte à ce qui est réellement calculé…

Comment tout cela se rapporte au jeu est une question laissée sans réponse. C’est un test CPU puissant et, en tant que simulation du comportement de flocage, il contient les bons éléments pour une charge de travail scientifique qui mérite d’être examinée. Cependant, interpréter l’échelle des performances en fonction des performances de jeu avec une charge de travail limitée au processeur n’est pas vraiment pertinent ici, je pense – du moins pas sans plus d’informations de la part d’UL sur la façon dont ils interprètent ce test. Nous avons échangé des e-mails avec UL pour comprendre le test, et nous attendons de voir si d’autres informations seront disponibles. Le fait est que la plupart des jeux qui sont limités en CPU, en particulier les titres d’esports DX9, obstruent les appels de tirage du processeur vers le GPU et n’attendent pas le calcul du CPU, sauf dans quelques scénarios fractionnaires. Cela rend le test du profil du processeur plus adapté aux overclockeurs extrêmes à cet égard, en essayant d’améliorer les performances du processeur et de la mémoire.