Pourquoi les comparaisons Apple M1 Single “Core” sont fondamentalement défectueuses (avec des indices de référence)

  • FrançaisFrançais


  • J’ai quelque chose d’assez excitant pour nos lecteurs aujourd’hui; quelque chose que presque tout le monde semble avoir manqué dans la clameur des comparaisons de référence Apple M1. Et si je vous disais que la quasi-totalité des comparaisons de référence monocœur entre l’Apple M1 et les processeurs x86 modernes que vous voyez en ligne sont fondamentalement défectueuses (en supposant que l’intention est de voir quel cœur est le plus rapide)? Parce que vous voyez, la plupart des benchmarks «core» uniques ne saturent pas complètement un cœur x86 moderne – mais ils saturent probablement le M1.

    Pourquoi les benchmarks x86 «single-core» n’indiquent pas les performances réelles d’un seul cœur par rapport à une architecture non SMT comme l’Apple M1

    Notre histoire commence avec une industrie dominée par les processeurs x86. Presque tous les processeurs x86 sur le marché aujourd’hui (à l’exception de certaines anciennes familles dont la fonctionnalité est délibérément désactivée) utiliseraient une implémentation SMT dans leur architecture. Les amateurs sauraient cette fonctionnalité par HyperThreading (dans les processeurs Intel) bien qu’AMD ait également sa propre implémentation SMT. Vous voyez, les cœurs x86 modernes sont très larges et un seul thread dans Windows ne suffit généralement pas à saturer le cœur et à utiliser toutes ses ressources. C’est pourquoi chaque cœur se voit attribuer en fait deux threads à partir desquels il reçoit sa charge de travail. Voici une explication technique:

    Il est à noter que la philosophie SMT est intégrée dans la conception. Le décodage vers uOP, et les optimisations ultérieures pour la planification jusqu’à la retraite (y compris les dépendances d’instructions des problèmes intermédiaires, les bulles de pipeline et le rinçage, etc.), expliquent en grande partie pourquoi x86 a adopté SMT. Les architectures de chargement / stockage RISC ont simplement moins de complexité de décodage front-end, par rapport au CISC découplé, et sont donc capables d’obtenir une meilleure instruction par thread, par horloge. C’est pourquoi la distribution de plusieurs threads est nécessaire pour maximiser les performances d’un seul cœur (en x86).

    -Un architecte sympathique qui souhaite ne pas être nommé.

    L’option “single-core” dans Cinebench (et à peu près tous les autres benchmarks) est plus précisément une configuration “single thread”.

    Voici maintenant où la partie industrielle dominée par x86 entre en jeu. Benchmarks modernes, lorsqu’ils sont exécutés en mode “monocœur” en fait mettre toute la charge sur un seul thread. Puisque tu es d’habitude en comparant les architectures basées sur SMT, c’est une comparaison de pommes à pommes (ahem) parce que les deux noyaux sont également handicapés. Cependant, lorsque vous parlez d’une architecture complètement différente, non basée sur SMT, cela devient une tout autre histoire. Contrairement à x86, le M1 d’Apple n’est pas basé sur SMT et n’a besoin que d’un seul thread pour saturer le noyau (ou du moins c’est ce que pense Apple en vertu de sa philosophie de conception).

    À présent, nos lecteurs réguliers auraient commencé à voir le problème. Lorsque vous exécutez un benchmark “single core” sur un Apple M1 – il utilise tous les threads associés au core – mais lorsque vous l’exécutez sur un CPU x86 moderne – il n’utilise que la moitié des fils associés au noyau. Gardez à l’esprit, cependant, que le nombre «demi» est un peu trompeur car la vitesse SMT est généralement comprise entre 20 et 30%. Il existe maintenant deux façons possibles de résoudre ce problème et d’obtenir des résultats plus équitables.

    La première méthode consisterait à désactiver SMT afin que chaque cœur ne soit associé qu’à un seul thread, tout comme Apple. Malheureusement, cela serait injuste pour ledit processeur car les processeurs x86 modernes sont fondamentalement conçus pour être utilisés avec SMT. En fait, il n’y a pratiquement aucune différence entre les résultats à thread unique avec HT activé et HT désactivé.

    La deuxième méthode consisterait alors à permettre au benchmark d’utiliser les deux threads associés à un seul cœur. Pour les besoins de nos tests, nous avons utilisé Thread 0 et 1 (tous deux rapportés au Core 0) et configuré Cinebench pour n’utiliser que deux threads en mode multicœur tout en appliquant simultanément l’affinité susmentionnée via le gestionnaire de tâches. Les résultats ont été pour le moins instructifs.

    Nous avons exécuté des échantillons Intel et AMD pour vérifier rapidement notre théorie.

    Nous avons vu entre 20% et 30% d’amélioration des résultats «monocœur» tout en permettant aux processeurs x86 SMT d’utiliser le deuxième thread associé au même cœur. Pour les personnes intéressées, Geekbench a également constaté une amélioration moyenne de 20 à 25% avec la même technique. Vous pouvez consulter notre comparaison vérifiée du 9980XE ici. Un grand cri à Joel Hruska chez Extremetech pour avoir utilisé le benchmark Ryzen 4800U pour nous tout en étant en vacances! Sur la base de notre échantillon limité, à peu près tous les processeurs x86 haute efficacité de la génération actuelle (mobilité de lecture) battraient le score original à un seul cœur / thread unique de l’Apple M1. Nous avons également ajouté un ancien processeur de bureau 9980XE pour faire bonne mesure – qui a enregistré des gains similaires.

    Marche à suivre: les fournisseurs de référence doivent passer aux tests monocœur SMT pour garantir une meilleure saturation des cœurs x86 lors de la comparaison entre les architectures

    L’accélération semble être fonction du comportement d’accélération du noyau avec une quantité minimale d’accélération qui est due à l’utilisation de toutes les ressources du noyau. La vitesse d’horloge est l’un des principaux avantages de x86 par rapport aux processeurs ARM: la prise en charge SMT devient d’autant plus importante pour fournir une image beaucoup plus claire des performances réelles du cœur. Il va sans dire que cette faille n’a pas d’impact sur les résultats multicœurs. Ceux-ci sont toujours valides car Cinebench (et à peu près tous les autres fournisseurs) utilisent tous les threads disponibles pour ceux-ci.

    Voici maintenant le moment de vérité que vous attendiez tous. Si vous vous souvenez de notre comparaison de référence d’origine, nous vous avons montré comment la plate-forme Intel Tiger Lake surpassait en réalité l’Apple M1 en termes de résultats monocœur / thread unique. Nous étions ravis de voir ce qui se passerait une fois que nous aurions autorisé le processeur à utiliser deux threads et, sans surprise, c’était dans une ligue à part. Par rapport à son score initial de 1510, il a connu une accélération de 19%, ce qui le place confortablement sur l’Apple M1 par une très large marge.

    Considérant que nous avions vu des accélérations comprises entre 20% et 30%, nous avons utilisé une accélération moyenne (dans le pire des cas) de 20% pour estimer les performances approximatives des processeurs que nous n’avions pas. Attention cependant, pour les scores marqués d’un astérisque, vous devriez presque certainement attendre les scores vérifiés et ceux-ci sont inclus juste pour vous donner une idée approximative de la position qu’ils occuperont.

    Conclusion: une chose est claire cependant, les fournisseurs de référence, à tout le moins, doivent ajouter un mode de test qui permet aux deux threads associés à un seul cœur d’être utilisés. Ceci est très important pour garantir une saturation complète du cœur et une comparaison plus uniforme entre les architectures SMT et non SMT. Étant donné que les cœurs x86 ne sont pas entièrement saturés avec un seul thread, la comparaison entre les architectures non SMT ne serait pas une comparaison de pommes à pommes.

    Nous avons dû lutter avec notre programme Cinebench R23 pour qu’il accepte la charge (threads verrouillés sur 2, l’affinité devait être définie après le lancement de l’analyse mais avant que le test de performance ne démarre réellement et qu’il soit nécessaire de le réappliquer après le premier passage) et un nettoyeur l’exécution serait presque certainement la bienvenue. Cela nous permettrait également de tester des cœurs fonctionnant à leur plein potentiel. Un dernier cri à l’ingénieur logiciel qjvar pour m’avoir aidé avec cette pièce et confirmé notre hypothèse au niveau architectural.

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *