Question Comment un processeur peut-il être rendu plus rapide avec une mise à jour "logicielle"?


Les nouveaux processeurs AMD Ryzen sont sortis sur le marché et ils semblent malheureusement manquer de jeux. Les processeurs Intel sont évidemment encore plus rapides pour les jeux. Bien sûr, les gens n’y étaient pas favorables et AMD a déclaré qu’ils mettaient à jour le micrologiciel ou le logiciel pour accélérer Ryzen pour les jeux.

Corrigez-moi si je me trompe mais le processeur doit avoir un firmware statique pour être compatible avec la norme x64? Si oui, AMD ne devrait-il pas optimiser les jeux (logiciels) pour ses processeurs, ce qui est évidemment impossible? Que se passe-t-il 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'accélérer un processeur sans changer le matériel sous-jacent? Si c'est possible, comment cela se passe-t-il? Existe-t-il un logiciel à côté du micrologiciel pour le processeur? 


118
2018-03-07 21:45


origine


Vous pouvez vouloir google le terme "microcode". - PlasmaHH
déjà sur SO: stackoverflow.com/questions/4366837/what-is-intel-microcode - szulat
Le micrologiciel peut être bon ou mauvais, ou simplement "pas adapté à l'application". x86 ne définit pas la synchronisation des instructions, la mise à jour du microprogramme (microcode) pour améliorer la synchronisation des instructions ne rompt pas la compatibilité x86. Il y a quelques raisons possibles pour lesquelles cela est réalisable et pourrait être nécessaire: 1) le microcode initial est un travail rapide et n'est pas optimal; 2) le microcode initial fonctionne bien lorsque le programme est compilé pour Ryzen, mais pas si le programme est compilé pour un processeur x86 générique ou pour Intel, qui est la majorité des logiciels existants. - user3528438
Une mise à jour de microcode peut améliorer les temps d'instruction, mais il y en a beaucoup plus. Les processeurs modernes effectuent des tâches telles que la prédiction de la branche, l’exécution spéculative, l’exécution dans le désordre, etc., ce qui peut améliorer considérablement les performances. Tout cela est contrôlé par un microcode. L'optimisation des microcodes prend du temps et ce produit est souvent rare dans une entreprise concurrentielle. - LMiller7
Imaginez que vous courez et pour une raison quelconque, vous refusez de plier votre jambe gauche. Cela vous rendra maladroit et lent - vous pouvez facilement augmenter votre vitesse de course en utilisant plus efficacement le "même matériel" de votre jambe et en le pliant plus efficacement. Changer les instructions "cerveau" à la jambe augmente considérablement les performances. - Elysian Fields


Réponses:


Les processeurs modernes sont beaucoup plus compliqués qu'on pourrait le penser. Ils sont incroyablement compliqués, presque 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:

  1. Pour commencer, presque tout le matériel interne est configurable dans une large mesure. Il y a des milliers et des milliers de registres de configuration avec des zillions de bits individuels qui doivent être définis pour qu'un processeur fonctionne. Toutes les couches de l'interaction CPU-cache ont des pipelines configurables, et divers délais de synchronisation ont évidemment un effet sur les performances globales.

  2. Des centaines de fonctionnalités avancées mises en place par les architectes ont démontré que l’ingénierie n’avait pas le temps de valider, de sorte que des centaines de fonctionnalités sont désactivées ou placées dans une configuration de sécurité avec: "morceaux de poulet". Mais elles peuvent être optimisées et activées si elles sont jugées fonctionnelles et utiles. Ces fonctionnalités d’amélioration sont généralement validées en profondeur au fil du temps et peuvent être progressivement activées sur la durée de vie d’un processeur grâce aux différents patchs de microcode.

  3. Tous les processeurs récents possèdent plusieurs unités internes contrôlées par des microprocesseurs indépendants intégrés à la puce du processeur x86. L'unité publique est la P-Unit. Les processeurs modernes ne peuvent pas fonctionner sans une gestion de l'alimentation agressive, ou ils vont fondre. Cependant, la gestion approfondie de l’alimentation est en contradiction avec une politique agressive d’horloge / tension d’entrée-sortie, et les modifications de la politique 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 / ajustés en chargeant un autre patch de microcode, comme répondu ici.

  4. 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 a accès à ces ressources de configuration.

En bref, alors que le matériel du processeur est effectivement câblé, la configuration dudit matériel définit à peu près ses performances et peut être optimisée pour une meilleure performance du système grâce à des mises à jour du BIOS et à des correctifs de microcode intégrés.


120
2018-03-07 23:58



Je ne sais pas quelle réponse je devrais accepter. La réponse de @ bwDraco est correcte mais la vôtre correspond à la réponse même plus difficile, sa réponse fournit des informations spécifiques au problème. - Arthur P. R.
Eh bien, vous devriez accepter ce répondre. Vous venez d'un milieu de l'électronique, donc vous semblez être intéressé par le Firmware du CPU (pas un changement de Windows). @ ArthurP.R. - AnoE
@ ArthurP.R. Si les utilisateurs de benchmarking ont constaté que Windows ne planifiait pas correctement les tâches sur les processeurs multithread (traite les threads comme des cœurs indépendants), cela signifie que AMD a en quelque sorte foiré les descripteurs de processeurs / peu importe. Si les descripteurs peuvent être corrigés selon les normes Microsoft par un mécanisme de mise à jour, ce serait un correctif de premier ordre simple. Et vous avez posé une question générale, donc cela répond. :-) - Ali Chen
C'est pourquoi j'ai accepté votre réponse même si la réponse de @bwDraco correspond aussi ici - Arthur P. R.


Divers problèmes logiciels, tant au niveau du système d'exploitation que des niveaux d'application, entraînent des performances sous-optimales.

Les processeurs Ryzen à huit cœurs sont composés de deux complexes centraux (CCX) dotés chacun de quatre cœurs et de 8 Mo de cache L3. L'accès au cache L3 sur un CCX différent est plus lent en raison de la nécessité de déplacer les données plus loin le long de l'Infinity Fabric (interconnexion cohérente cache-cache d'AMD). performance réduite. Cette pénalité rappelle ce qui se passerait sur un serveur multi-socket exécutant un système d'exploitation qui n'est pas NUMA-conscient.

Il semble Windows a 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 placer des threads sur différents CCX même si cela n'est pas nécessaire, réduisant les performances.

Testeur allemand PC Games Hardware a testé un Ryzen 7 1800X avec un nombre variable de cœurs désactivés et a constaté que d'avoir deux CCX avec deux cœurs activés sur chacun produit des performances plus lentes que d'avoir un CCX activé avec tous ses cœurs intacts:

PC Games Hardware benchmark result: Battlefield 1

Ceci en dépit du fait que le fait d’avoir un seul CCX activé signifie que seuls 8 Mo de cache L3 sont disponibles, au lieu des 16 Mo complets. À partir de l'article PC Games Hardware, via Google Translate (emphase ajoutée):

[...] Il est beaucoup plus intéressant de reconnaître que les transferts de données CCX interfèrent les uns avec les autres, parfois plus, parfois moins clairement. Les avantages de la plus grande mémoire cache L3 (configuration 2 + 2) ne figurent nulle part dans cette série de mesures.

Cet article PC Perspective montre qu'il existe une latence de communication importante entre les cœurs sur différents CCX, mais très peu de latence lors de la communication avec les cœurs sur le même CCX. Notez que cet article suggère que Windows est conscient de la conception de CCX et évite la planification des threads sur différents CCX, mais des résultats contradictoires ont été trouvés par les membres de la communauté.


De nombreux (mais pas tous) benchmarks de jeux montrent augmenté performance lorsque SMT est désactivé. cependant, les rumeurs qui affirment que Windows planifie incorrectement comme si chaque thread matériel en tant que son propre noyau est incorrect. Selon AMD, cela est dû au fait que de nombreuses applications sont optimisées uniquement pour les processeurs Intel (ce qui n’est pas inattendu étant donné qu’AMD a été commercialisé depuis environ cinq ans sur le marché des processeurs haut de gamme). AMD dit 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 de Windows peut encore aider en réglant plus finement le planificateur pour les caractéristiques du Zen architecture.

Le suivant exemple de Tom's Hardware démontre des performances dégradées avec SMT activé:

Tom's Hardware benchmark result: Ashes of the Singularity

TechSpot a effectué une analyse approfondie des performances de jeu avec SMT activé et désactivé et est venu avec des résultats très similaires:

TechSpot benchmark result: Deus Ex: Mankind Divided


Il y a aussi problèmes de gestion de l'alimentation impliqué dans ces tests. La même déclaration d'AMD indique que Windows n'est pas totalement au courant des nouvelles fonctionnalités de Ryzen, telles que le stationnement de base et la commutation rapide des fréquences d'horloge. Ceci est cohérent avec les améliorations de performances signalées par le matériel de Tom lors de l'utilisation du plan d'alimentation haute performance (voir le tableau ci-dessus, HP = High Performance). Une mise à jour de Windows peut prendre en charge ces fonctionnalités et améliorer les performances.


102
2018-03-08 00:09



Je ne suis pas sûr de suivre. L'OP indique explicitement que l'optimisation des jeux pour Ryzen est hors de question à ce stade et que les bogues de Windows sont encore plus anciens. - Ali Chen
Il dit essentiellement que Windows gâche totalement la manière / où son attribution de threads - causant des problèmes de performance. - Journeyman Geek♦
@JourneymanGeek, tout Windows décent (je ne suis pas sûr que W10 soit qualifié) a toujours un contrôle explicite de l'affinité de base sur un processus, et se moquer des affinités a toujours été le premier outil d'analyse comparative. Quoi de neuf alors? - Ali Chen
Malheureusement oui, mais les mises à jour du noyau sont en cours. Vous devrez probablement attendre le noyau 4.12; 4.11 apporte quelques correctifs mais ce n’est pas tout à fait là. phoronix.com/scan.php?page=news_item&px=Ryzen-7-Linux-4.11 - bwDraco
@Crouchingkitten AMD ne peut délivrer que des pilotes et non des mises à jour du système d'exploitation. Ce genre de choses n'est pas dans le pool de tâches AMDS. - Arthur P. R.


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   des fonctionnalités sans rapport désactivaient les cœurs. Réglage de l'overclocking de la mémoire   certaines cartes mères désactivaient le boost. Certaines révisions du BIOS seraient claires   produire une performance universellement supprimée.

2) Ryzen bénéficie de la désactivation des minuteries d’événement de haute précision (HPET).   La résolution de minuterie de HPET peut provoquer un effet d'observateur qui peut   soustraire la performance. Ceci est une option du BIOS, ou une fonction qui peut être   désactivé à partir du shell de commande Windows.

3) Ryzen profite de l'activation du profil de puissance haute performance.   Cela remplace le stationnement de base. Finalement, nous aurons un pilote qui   permet aux gens de rester en équilibre et de désactiver le stationnement de base de toute façon.   Les joueurs le font aussi depuis un moment. Je me suis mal exprimé, ici. je veux   pour clarifier l'avantage: le mode haute performance permet au processeur de se mettre à jour   sa tension / vitesse d'horloge en 1ms, contre les 30ms qu'il faut équilibrer   mode. C'est ce que notre chauffeur va accomplir. Excuses pour le   confusion!

Donc, la vraie question n'est pas comment une mise à jour BIOS / firmware peut-elle rendre un processeur plus rapide (il peut le faire, optimisation du microcode, etc.) c'est plus ... à quel point un CPU / BIOS est bogué


9
2018-03-07 22:00



Je suis désolé de poser la mauvaise question. Je pensais que cela conviendrait particulièrement parce que je m'intéresse aussi aux informations non triviales.
np, peut-être assez abstrait pour rester. Je suis Ryzen comme je planifie une reconstruction majeure, donc je suis tous les problèmes de démarrage. En tant qu'utilisateur Linux, je suis également confronté à des problèmes spécifiques à Linux. Une chose à considérer avec Ryzen (et le noyau zen) est la suivante: le premier SMT d'AMD et les indications initiales indiquent qu'il diffère des cœurs logiques par rapport à Intel et que BIOS / Windows tenterait d'utiliser tous les cœurs noyaux. Cela affecterait de manière significative la performance - Naib
Je pense que les réponses, les commentaires et les réflexions sur cette question sont très importants car les gens ont besoin de savoir si les choses peuvent s’améliorer et jusqu’à présent, je peux espérer à nouveau. BTW l'article est très très bon!
Pour plus de Ryzen spécifiques ... forums.gentoo.org/viewtopic-t-1057910.html Un groupe d'entre nous sur le forum gentoo post et discutons quand nous obtenons des informations. En ce moment, pour Linux, les pilotes audio mobo sont uniquement en version git, de même que les moniteurs thermiques n'existent pas ... Le HPET et les problèmes principaux sont une préoccupation immédiate. En ce moment, AMD fait complètement sauter Intel pour un calcul pur - Naib
dans une certaine mesure oui. Je maintiens mon affirmation selon laquelle le Ryzen est paralysé pour que le BIOS / les pilotes "accélèrent" - Naib


BIOS est généralement considéré comme un firmware. Le BIOS peut transformer toutes sortes de bits dans le matériel pour modifier le fonctionnement du système

Donc, oui, il est tout à fait possible pour eux de mettre au point de nouveaux microprogrammes et pour des choses telles que les vitesses d'horloge, si les pré-tests sont activés ou si un certain core ou IIO peut obtenir certaines préférences sur le cache. à la plupart des jeux étant conçus de manière mono-thread.


6
2018-03-07 21:53



Cela semble intéressant, est-il possible de trouver des références pour cela? Ce serait très bien d'avoir certains d'entre eux pour le prouver aux gens :)
@ ArthurP.R. Entre pcode, ucode (microcode) et bios, les performances et les fonctionnalités d'une puce peuvent être considérablement modifiées. Ce sont tous des logiciels / micrologiciels. En ce qui concerne la source, non, je ne peux pas vous donner de sources externes pour ces informations (car elles sont toutes internes). - horta
Quelle bêtise @horta mais merci beaucoup pour cette information. N'hésitez pas à ajuster votre réponse pour inclure ces informations également. Il vaut la peine!


Ce n'est pas tellement que les mises à jour logicielles rendront le processeur plus rapide. Tout le monde s'attend à ce que les mises à jour logicielles rendent le logiciel plus adapté à l’architecture de Ryzen et permettent de mieux exploiter ses performances.

Corrigez-moi si je me trompe mais le processeur doit avoir un firmware statique pour être compatible avec la norme x64?

Presque. Il y a un logiciel dans le CPU (microcode, comme mentionné ci-dessus) et cela peut influencer les performances. Fondamentalement, X86 spécifie uniquement les résultats des opérations, le problème que rencontrent les ingénieurs est la façon dont le processeur atteint ces résultats. Les probabilités que les modifications du microcode jouent un rôle majeur avec Ryzen sont minces, car l'écart de performance semble s'appliquer principalement aux jeux, ce qui suggère que le processeur fonctionne bien, mais certains jeux en particulier ne le tirent pas bien.

Le système d'exploitation est chargé d'essayer de s'assurer que les programmes sont répartis de manière efficace sur le processeur, ce qui peut avoir un impact sur les performances. La plupart des améliorations de performances dans des cas comme celui-ci résultent de l'écriture de code mieux adaptée à la nouvelle architecture. Cela n'a pas tendance à se produire entre les générations de processeurs Intel car les modifications de conception ne sont pas extrêmement importantes, de sorte que ce qui fonctionne bien sur l'un fonctionnera probablement bien sur un autre.

Ryzen est cependant un nouveau design, donc tout ce qui a été écrit pour convenir à d'autres CPU n'a pas été écrit pour convenir à Ryzen.

Pour simplifier massivement la situation, imaginez deux processeurs:

  • Processor One a été mis sur le marché depuis un certain temps et est (pour une raison quelconque) très rapide à ajouter des chiffres. Le logiciel est conçu pour essayer et utiliser autant que possible l'addition, pour tirer parti de cette capacité.

  • Un transformateur concurrent arrive sur le marché et est plus faible, mais plus fort lors de la multiplication. Tous les logiciels optimisés pour utiliser davantage d'instructions additionnelles sont mal exécutés sur le nouveau processeur, mais les logiciels qui n'ont pas été conçus pour utiliser des ajouts de lots ont des performances plus ou moins similaires. Certains logiciels peuvent déjà faire beaucoup de multiplication et feront mieux sur les nouveaux processeurs que sur Processor One, même le jour du lancement.

Quelque temps après le lancement, les développeurs commenceront à s’adapter, en utilisant plus de multiplication dans leur logiciel, ou même en concevant leur logiciel pour basculer entre des chemins de code d’addition et des multiplications importantes en fonction de l’architecture utilisée.

C'est ce qui se passe avec Ryzen - c'est une nouvelle architecture que les développeurs de logiciels n'ont pas optimisée pour répondre aux caractéristiques du moment. Avec le temps, les développeurs commenceront à peaufiner leurs logiciels pour améliorer leur performance. Comme la plupart des logiciels sont déjà conçus pour fonctionner correctement sur les processeurs Intel (ils sont assez populaires après tout!), Ils ne vont probablement pas beaucoup bénéficier de ces changements.

Il y a certaines charges de travail qu'Intel restera simplement plus rapide, et certaines que Ryzen est déjà plus rapide (et deviendra plus rapide) en fonction du comportement sous-jacent. Dans la situation que j'ai évoquée ci-dessus, un logiciel qui n'a qu'à ajouter des éléments fonctionnera toujours mieux sur le premier processeur, et les logiciels qui doivent simplement se multiplier seront toujours plus performants sur le second - mais la plupart des logiciels sont complexes et complexes. ces différences se stabiliseront quelque peu.

Si oui, AMD ne devrait-il pas optimiser les jeux (logiciels) pour ses processeurs, ce qui est évidemment impossible?

Il est également intéressant de noter que ce que AMD a réellement dit à propos des performances des jeux 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 à l'état sauvage et ils visent 1000 d'ici la fin de l'année) et discutent avec ceux dont les jeux fonctionnent mal pour résoudre le problème. Autant que je sache, aucune déclaration n’a été faite selon laquelle AMD optimise les jeux eux-mêmes.

Dans ce cas particulier, Windows est également retenu dans certaines circonstances par Windows qui prend de mauvaises décisions sur les cœurs à charger avec le travail, 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 tous les écarts de performance, car il existe déjà des charges de travail sur lesquelles Ryzen surpasse Intel de manière convaincante, ce qui suggère que le problème est au moins en partie le système d'exploitation ou le BIOS dans son ensemble.


4
2018-03-09 14:48



Cette réponse est également intéressante et ni e. Merci. - Arthur P. R.


Bien sûr, les logiciels peuvent améliorer les performances du processeur ou même du GPU.

Une manière est certainement l'overclocking ou un autre type de mécanisme de modification d'horloge. Deuxièmement, il peut y avoir des optimisations de pilotes. Celles-ci incluent de meilleures méthodes de compression de données, des algorithmes de décodage plus rapides, etc. essentiellement des caractéristiques qui aident à mieux utiliser le matériel. Ces fonctionnalités peuvent également être mises à jour par des mises à jour du micrologiciel, ce qui n’est pas vraiment un logiciel (standard). Ensuite, il existe un logiciel capable de contrôler la solution de refroidissement de votre ordinateur. C'est très utile pour les processeurs et les processeurs graphiques qui utilisent des technologies qui améliorent les performances, telles que le Turbo Boost d'Intel et le gain de GPU de Nvidia. Un matériel comme celui-ci présente certaines limitations de température, ce qui réduit ses performances, lorsqu'il est trop chaud et dynamiquement overclocké, lorsque les applications requièrent une puissance de calcul supérieure, tant qu'elles n'ont pas atteint leur consommation maximale et qu'elles sont assez fraîches. .

Il existe également d'autres options, mais celles-ci le couvrent principalement. Fondamentalement, tant que vous connaissez le problème et que vous pouvez manipuler par programme la manière dont les données sont traitées (par exemple, introduire un algorithme de décodage intelligent qui remplace une solution "brutale") ou manipuler les réactions du processeur à différents facteurs clés (comme augmenter le refroidissement de manière plus agressive en cas de surchauffe ou de surveillance des besoins en ressources des applications et d’overclocking dynamique lorsque davantage de puissance de traitement est nécessaire), vous pouvez 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 renforcement ou de sa solution de refroidissement. L'un ou les deux ont probablement été modifiés pour réagir de manière plus agressive à l'augmentation de la charge ou de la température.

TL; DR: Oui, le logiciel peut améliorer les performances d'un processeur. Il existe de nombreuses façons de procéder, comme les optimisations de pilotes et de micrologiciels, les overclocks, etc. Toute modification de logiciel préparant des données de manière à faciliter le traitement ou la réaction du matériel à la charge ou à ses limitations entraînera probablement de meilleures performances.


1
2018-03-07 23:53





Les mises à jour logicielles peuvent certainement accélérer le système (y compris le processeur).

Les grands ordinateurs centraux IBM en sont un exemple extrême: vous pouvez acheter plus de temps processeur en ligne et tout ce que vous obtenez est une clé de licence que vous devez entrer dans votre système d'exploitation, et que votre système fonctionne plus rapidement. L'astuce est simple: le programmateur du système d'exploitation refuse parfois de planifier des tâches et demande au processeur de s'endormir ou même d'exécuter une boucle NO-OP pendant un court laps de temps pour obtenir un débit moyen global. Si vous payez pour une licence plus chère, le planificateur supprime alors ces NO-OP.

Ou encore plus radicalement: si vous achetez un système avec seulement 4 ou 6 ou 8 processeurs, il y en aura généralement entre 16 et 32 ​​actuellement installés. Le système d'exploitation arrête simplement certains d'entre eux, et en entrant une clé de licence, vous pouvez les activer.

De même, les mainframes IBM distinguent différents types de processeurs: processeurs Linux, processeurs Java, processeurs de transactions, etc. Ils sont en fait tous du même processeur, mais le planificateur du système d'exploitation refuse de planifier les tâches de transaction (les plus importantes). Processeur Java ou Linux. Seules les machines virtuelles Java seront planifiées sur les processeurs Java et seules les machines virtuelles Linux seront planifiées sur les processeurs Linux. Si vous souhaitez obtenir des performances de transaction plus élevées, vous devez acheter des licences pour davantage de processeurs Transaction: là encore, ce sont exactement les mêmes processeurs, la seule différence est un indicateur de configuration dans le planificateur qui dit: ".

Les différentes éditions de Windows constituent un autre exemple, pas si extrême. Différentes éditions de Windows prennent en charge un nombre différent de cœurs de processeur et différentes quantités de mémoire. Si vous avez une grande mémoire et un grand nombre de processeurs, vous pouvez rendre votre système plus rapide, simplement en effectuant une mise à niveau vers une édition "plus grande" de Windows. Notez que les éditions ont exactement le même code; il y a juste un commutateur de configuration quelque part qui dit "vous êtes une édition Home, vous ne supportez que 1 CPU et 128 GiByte".


-1
2018-03-11 01:03