Les nouveaux processeurs AMD Ryzen sont sur le marché et, malheureusement, ils semblent manquer de jeu. Les processeurs Intel sont évidemment encore plus rapides pour les jeux. Bien entendu, les gens n'étaient pas favorables à cela et AMD a déclaré qu'ils mettaient à jour le micrologiciel ou le logiciel permettant d'accélérer l'utilisation de Ryzen pour les jeux.
Corrigez-moi si je me trompe, mais le processeur doit disposer d'un firmware statique pour être compatible avec la norme x64? Si tel est le cas, AMD n'aurait-il pas à optimiser les jeux (logiciels) pour leurs processeurs, ce qui est évidemment impossible? Qu'est-ce qui se passe là-bas pour dire de telles choses s'il semble impossible de voir les conditions sous-jacentes?
Mais je peux me tromper (je l’espère) alors la question est:
Est-il possible d'obtenir une accélération pour un processeur sans changer le matériel sous-jacent? Si c'est possible, comment cela se fait-il? Existe-t-il un logiciel à côté du microprogramme pour le processeur?
Les processeurs modernes sont beaucoup plus compliqués qu'on pourrait le penser. Ils sont incroyablement compliqués, au-delà de la compréhension d'une seule personne. En développant une courte remarque de "horta", on pourrait avoir tout ce qui suit:
Pour commencer, presque tout le matériel interne est configurable dans une large mesure. Il existe des milliers et des milliers de registres de configuration avec des zillions de bits individuels qui doivent être définis pour qu'un processeur puisse fonctionner. Toutes les couches d’interaction entre le processeur et le cache ont des pipelines configurables et divers retards de synchronisation ont évidemment une incidence sur les performances globales.
Il y a des centaines de fonctionnalités avancées proposées par les architectes que l'ingénierie n'a pas eu le temps de valider. Des centaines de fonctionnalités sont donc désactivées ou configurées en mode de sécurité avec "chicken bits" . Mais ils peuvent être ajustés et activés s’ils sont jugés fonctionnels et utiles. Ces fonctionnalités améliorées sont généralement validées en profondeur dans le temps et peuvent être progressivement activées tout au long de la vie d’un processeur par divers correctifs de microcode.
Toutes les UC récentes disposent de plusieurs unités internes contrôlées par des microprocesseurs indépendants intégrés à la puce CPU x86. L'unité apparue publiquement est l'unité centrale. Les processeurs modernes ne peuvent pas fonctionner sans une gestion de puissance agressive, sinon ils vont fondre. Cependant, la gestion de l'alimentation en profondeur est en contradiction avec une stratégie agressive entrée/sortie horloge/tension, et les modifications apportées à la stratégie affectent fortement les performances globales du système. Tous les détails sont contrôlés par l'unité P et peuvent être optimisés/réglés en chargeant un autre correctif de microcode, comme expliqué ici.
De nombreux autres aspects de l'interconnexion interne sont contrôlés par divers processeurs intégrés supplémentaires, qui peuvent être corrigés en y chargeant des correctifs de microcode ou en mettant à niveau le BIOS s'il dispose d'un accès à ces ressources de configuration.
En résumé, bien que le matériel de la CPU soit effectivement câblé, la configuration de ce dernier définit en grande partie ses performances et peut être optimisée pour améliorer les performances du système au moyen de mises à jour du BIOS et de correctifs de microcode intégrés.
Les processeurs Ryzen à huit cœurs sont constitués de deux complexes principaux (CCX) dotés chacun de quatre cœurs et de 8 Mo de cache L3. L'accès au cache L3 sur un autre CCX est plus lent en raison de la nécessité de déplacer les données plus loin le long de la structure Infinity Fabric (interconnexion propriétaire cohérente du cache d'AMD), ce qui signifie que performance réduite. Cette pénalité rappelle ce qui se produirait sur un serveur multi-socket exécutant un système d'exploitation non conscient de NUMA .
Il semble que Windows ait tendance à déplacer simplement les processus autour de différents cœurs et ne reconnaît pas la pénalité de communication inter-CCX . Cela signifie que Windows peut mettre des threads sur différents CCX même si cela n'est pas nécessaire , ce qui réduit les performances.
Le lecteur allemand PC Games Hardware a testé un Ryzen 7 1800X avec un nombre variable de cœurs désactivés et a constaté qu'avoir deux CCX avec deux cœurs activés produit des performances plus lentes que si un CCX était activé avec tous ses cœurs intacts:
Ceci malgré le fait qu’un seul CCX activé signifie que seulement 8 Mo de cache N3 sont disponibles, au lieu des 16 Mo complets. De l'article sur le matériel relatif aux jeux pour PC via Google Translate (caractères gras ajoutés):
[...] Il est beaucoup plus excitant de reconnaître le fait que les transferts de données CCX interfèrent les uns avec les autres dans tous les cas - parfois plus, parfois moins clairement. Les avantages du plus grand cache L3 (configuration 2 + 2) ne sont nulle part dans cette série de mesures.
Cet article de PC Perspective montre qu'il existe une latence de communication importante entre les cœurs de différents CCX, mais très peu de latence lors de la communication avec des cœurs du même CCX. Notez que cet article suggère que Windows est au courant de la conception de CCX et évite la planification de threads sur différents CCX, mais des résultats contradictoires ont été détectés par les membres de la communauté.
De nombreux benchmarks de jeu (mais pas tous) montrent des performances de augmentées lorsque SMT est désactivé. Cependant, les rumeurs qui indiquent que Windows ne planifie pas correctement comme si chaque thread matériel en tant que son propre noyau sont incorrects . Selon AMD, cela est dû au fait que de nombreuses applications sont optimisées uniquement pour les processeurs Intel (ce qui n’est pas surprenant étant donné que AMD est MIA depuis cinq ans sur le marché des processeurs haut de gamme). AMD affirme travailler avec des centaines de développeurs de jeux pour améliorer les performances des processeurs Ryzen. Cependant, je soupçonne qu'une mise à jour Windows peut toujours aider en ajustant plus finement le planificateur en fonction des caractéristiques de l'architecture Zen.
Le exemple suivant de Tom's Hardware illustre des performances dégradées avec le protocole SMT activé:
TechSpot a effectué une analyse approfondie des performances de jeu avec SMT activé et désactivé et a abouti à des résultats très similaires:
Il existe également des problèmes de gestion de l'alimentation impliqués dans ces tests. La même déclaration d'AMD indique que Windows n'est pas pleinement au courant des nouvelles fonctionnalités de Ryzen, telles que le stationnement de base et la commutation rapide de fréquence d'horloge. Cela correspond aux améliorations de performances signalées par Tom's Hardware lors de l'utilisation du plan d'alimentation hautes performances (voir le tableau ci-dessus, HP = hautes performances). Une mise à jour vers Windows peut ajouter la prise en charge de ces fonctionnalités et améliorer les performances.
http://wccftech.com/AMD-ryzen-launch-aftermath-gaming-performance-AMD-response/
1) Les premiers BIOS de la carte mère étaient certainement perturbés: la désactivation de fonctionnalités non liées éteindrait les cœurs. La configuration de l’overclocking de la mémoire sur certaines cartes mères désactiverait le boost. Certaines révisions du BIOS produiraient simplement des performances universellement supprimées.
2) Ryzen bénéficie de la désactivation des temporisateurs d’événements de haute précision (HPET). La résolution de la minuterie de HPET peut entraîner un effet d'observateur qui peut réduire les performances. Il s’agit d’une option du BIOS ou d’une fonction pouvant être désactivée à partir de la commande Windows Shell.
3) Ryzen bénéficie de l’activation du profil de puissance haute performance. Cela annule le stationnement de base. Nous aurons éventuellement un pilote qui permettra aux gens de rester en équilibre et de désactiver le parking principal de toute façon. Les joueurs le font aussi depuis un moment. Je me suis mal exprimé, ici. Je souhaite clarifier l’avantage: le mode hautes performances permet au processeur de mettre à jour sa tension/vitesse d’horloge en 1 ms, contre 30 ms pour le mode équilibré. C'est ce que notre chauffeur va accomplir. Toutes mes excuses pour la confusion!
La vraie question n'est donc pas de savoir comment une mise à jour du BIOS/du micrologiciel peut accélérer le traitement d'un processeur (possibilité de le faire, optimisation du microcode, etc.), mais plus… comment un CPU paralysé par un BIOS/micrologiciel défectueux
BIOS est généralement considéré comme un firmware. Le BIOS peut transformer toutes sortes de bits dans le matériel pour changer le fonctionnement du système
Donc, oui, il est tout à fait possible pour eux de sortir un nouveau micrologiciel et des choses comme les vitesses d'horloge, ou si les prélèvements sont activés, ou si un certain noyau - ou IIO - peut obtenir certaines préférences dans le cache qui pourraient potentiellement améliorer les performances de jeu grâce à à la plupart des jeux conçus de manière mono-thread.
Ce n'est pas tellement que les mises à jour logicielles vont accélérer le processeur. Tout le monde s’attend à ce que les mises à jour logicielles rendent le logiciel plus adapté à l’architecture de Ryzen et lui permettent de mieux exploiter ses performances.
Corrigez-moi si je me trompe, mais le processeur doit disposer d'un firmware statique pour être compatible avec la norme x64?
Presque. Il y a un logiciel dans la CPU (le microcode, comme mentionné ci-dessus) et cela peut influer sur les performances. Fondamentalement, X86 ne spécifie que les résultats des opérations. Le problème des ingénieurs est précisément ce que la CPU obtient pour obtenir ces résultats. Les chances que les ajustements de microcode jouant un rôle majeur avec Ryzen soient minces sont minces, car l’écart de performances semble s’appliquer principalement aux jeux, ce qui suggère que les processeurs fonctionnent bien, mais certains jeux en particulier ne les exploitent pas bien.
Le système d’exploitation est chargé d’essayer de s’assurer que les programmes sont bien répartis sur l’unité centrale, ce qui peut avoir une incidence sur les performances, mais dans l’ensemble, aucun de ces facteurs n’est le principal problème d’une nouvelle architecture. La plupart des améliorations de performances dans de tels cas résultent de l'écriture par les développeurs d'un code mieux adapté à la nouvelle architecture. Cela ne se produit généralement pas entre les générations de processeurs Intel car les modifications apportées à la conception ne sont pas extrêmement importantes. Par conséquent, ce qui fonctionne bien sur l'un fonctionnera probablement sur d'autres.
Cependant, Ryzen est un nouveau design novateur, de sorte que tout ce qui a été écrit pour convenir à d'autres processeurs, par définition, ne l'a pas été.
Pour simplifier excessivement la situation, imaginez deux processeurs:
Processor One est sur le marché depuis quelque temps et est (pour une raison quelconque) très très rapide pour ajouter des chiffres. Le logiciel est conçu pour utiliser autant que possible l'addition, afin de tirer parti de cette capacité.
Un processeur concurrent débarque sur le marché et est plus faible en addition, mais plus fort en multiplication. Tous les logiciels optimisés pour utiliser des instructions plus lourdes d'ajout fonctionnent mal sur le nouveau processeur, mais les logiciels qui n'ont pas été conçus pour utiliser l'addition de lots fonctionnent plus ou moins de la même manière. Certains logiciels peuvent déjà faire beaucoup de multiplication et feront mieux sur les nouveaux processeurs qu'ils ne le feraient sur Processor One, même le jour du lancement.
Quelque temps après leur lancement, les développeurs vont commencer à s’adapter, en utilisant davantage de logiciels de multiplication, voire en concevant des logiciels conçus pour basculer entre des chemins de code très lourds en additions et des chemins de code en multiplication, en fonction de l’architecture de la CPU utilisée.
C'est un peu ce qui se passe avec Ryzen - c'est une nouvelle architecture que les développeurs de logiciels n'ont pas encore optimisée pour s'adapter à leurs caractéristiques. Avec le temps, les développeurs vont commencer à peaufiner leurs logiciels pour améliorer leurs performances. Comme la plupart des logiciels sont déjà conçus pour fonctionner correctement sur les processeurs Intel (ils sont très populaires, après tout!), Ils ne bénéficieront probablement pas beaucoup de ces modifications.
Il existe certaines charges de travail pour lesquelles Intel restera simplement plus rapide, et certaines pour lesquelles Ryzen est déjà plus rapide (et deviendra encore plus rapide) en fonction du comportement sous-jacent. Dans la situation que j'ai décrite ci-dessus, un logiciel qui n'a besoin que d'ajouter des éléments fonctionnera toujours mieux avec le premier processeur, et un logiciel devant multiplier les performances fonctionnera toujours mieux avec le second processeur - mais dans la plupart des cas, le logiciel est complexe et complexe. ces différences se résorberont quelque peu.
Si tel est le cas, AMD n'aurait-il pas à optimiser les jeux (logiciels) pour leurs processeurs, ce qui est évidemment impossible?
Il est également intéressant de noter que ce qu'AMD a réellement dit à propos des performances de jeu, c'est qu'ils travaillent avec les développeurs pour optimiser les jeux. Ils envoient des systèmes de développement aux entreprises (il y en a actuellement 300 dans la nature, et ils envisagent d'en installer 1 000 d'ici la fin de l'année) et parlent à ceux dont les jeux fonctionnent mal pour résoudre le problème. À ma connaissance, aucune déclaration n'a été faite selon laquelle AMD optimise les jeux eux-mêmes.
Dans ce cas particulier, Ryzen empêche également Windows de prendre de mauvaises décisions quant aux cœurs à charger, et les BIOS actuels posent problème pour des raisons que je ne prétends tout simplement pas connaître. Cependant, ces problèmes ne peuvent pas être à l'origine de tout l'écart de performances, car il existe des charges de travail dans lesquelles Ryzen surpasse déjà de manière convaincante la performance d'Intel, ce qui suggère que le problème est au moins en partie (sinon la plupart) affecté aux programmes particuliers exécutés, plutôt que par la suite. le système d'exploitation ou le BIOS dans son ensemble.
Bien entendu, les logiciels peuvent améliorer les performances du processeur ou même du processeur graphique.
L'un des moyens est l'overclocking ou un autre mécanisme de modification de l'horloge. Deuxièmement, les optimisations de pilote peuvent être. Celles-ci incluent de meilleures méthodes de compression des données, des algorithmes de décodage plus rapides, etc.… en gros des fonctionnalités qui permettent de mieux utiliser davantage de matériel. Ces fonctionnalités peuvent également être mises à jour par des mises à jour de micrologiciels, qui ne sont pas vraiment des logiciels (normaux). Il existe ensuite un logiciel capable de contrôler la solution de refroidissement de votre ordinateur. Ceci est très utile pour les processeurs et les GPU qui utilisent des technologies d'augmentation de performances telles que le Turbo boost d'Intel et le boost de GPU de Nvidia. Un tel matériel a certaines limites de température, de sorte qu'il diminue ses performances lorsqu'il est trop chaud et trop overclocké dynamiquement, lorsque les applications nécessitent une puissance de calcul supérieure, tant qu'elles n'ont pas atteint sa consommation de puissance maximale et qu'elles sont suffisamment cool .
Il y a aussi d'autres options, mais celles-ci couvrent la plupart du temps. Fondamentalement, tant que vous connaissez le problème et que vous pouvez manipuler de manière programmée la manière dont les données sont traitées (comme l'introduction d'un algorithme de décodage intelligent qui remplace une solution du type "force brute") ou manipuler les réactions du processeur face aux différents facteurs clés de sa performance. (par exemple, augmenter le refroidissement de manière plus agressive en cas de surchauffe ou surveiller les demandes de ressources des applications et s'overclocker de manière dynamique lorsque davantage de puissance de traitement est nécessaire), vous pouvez faire beaucoup pour améliorer (ou aggraver) les performances d'une unité de traitement.
Dans le cas d’AMD, il s’agit probablement d’une optimisation de son mécanisme de boosting ou de sa solution de refroidissement. L'un ou les deux ont probablement été modifiés pour réagir plus agressivement à l'augmentation de la charge ou de la température.
TL; DR: Oui, un logiciel peut améliorer les performances d'un processeur. Il existe de nombreuses façons de procéder, telles que l'optimisation des pilotes et des microprogrammes, l'overclocking, etc. Toute modification de logiciel préparant les données de manière à faciliter le traitement ou à mieux faire réagir le matériel à la charge, sans quoi ses limitations entraîneraient très probablement des performances accrues.