1 points par GN⁺ 2024-12-02 | 1 commentaires | Partager sur WhatsApp

AMD désactive le loop buffer de Zen 4

  • Rôle du loop buffer : situé dans le frontend du CPU, il stocke les instructions précédemment récupérées. Les petites boucles peuvent tenir dans le loop buffer, ce qui permet de désactiver certaines étapes du frontend afin d’économiser de l’énergie et d’améliorer les performances. Il s’agit d’une technologie ancienne utilisée dans les cœurs Intel, Arm et AMD.

  • Le loop buffer de Zen 4 : Zen 4 est le seul cœur hautes performances d’AMD à inclure un loop buffer. D’après des expériences avec les compteurs de performances, il dispose de 144 entrées lorsque le cœur s’exécute avec un seul thread. Lorsque deux threads SMT sont actifs, 72 entrées sont allouées à chaque thread. Si des appels et des retours se produisent dans la boucle, celle-ci n’est pas capturée par le loop buffer.

  • Changements après une mise à jour du BIOS : après la mise à jour de l’ASRock B650 PG Lightning vers le BIOS version 3.10, la surveillance matérielle des performances montre que le frontend n’envoie plus de micro-ops depuis le loop buffer. En revenant au BIOS version 1.21, le loop buffer est de nouveau activé. AMD semble avoir désactivé le loop buffer entre le BIOS 1.21 (AGESA version 1.0.0.6) et le BIOS 3.10 (AGESA version 1.2.0.2a).

SPEC CPU2017 : trouver les différences

  • Impact sur les performances : les scores SPEC CPU2017 montrent qu’il n’y a pas de différence notable selon que le loop buffer est activé ou non. Les scores totaux des suites en nombres entiers et en virgule flottante présentent moins de 1 % d’écart. Le gain de performances du SMT n’est pas affecté non plus.

  • Rôle du loop buffer : le loop buffer n’a pas pour objectif principal d’améliorer les performances, mais de permettre au cœur de désactiver une grande partie du frontend. Selon la référence de programmation processeur de Zen 4, les compteurs de performances peuvent être programmés pour s’incrémenter de 1 chaque fois que le nombre d’événements dépasse un seuil.

Cyberpunk 2077

  • Test de performances en jeu : le benchmark intégré de Cyberpunk 2077 a été utilisé pour vérifier l’impact de la désactivation du loop buffer sur les performances en jeu. Il en ressort qu’elle a très peu d’effet sur les performances du jeu.

Tentative de vérification de la consommation électrique

  • Efficacité énergétique : une tentative a été faite pour vérifier si le loop buffer améliore l’efficacité énergétique à l’aide des compteurs de puissance des cœurs Zen 4, mais les résultats ne sont pas cohérents. Le nouveau BIOS ne permet pas de tester le loop buffer.

Conclusion

  • Pourquoi désactiver le loop buffer ? : la raison pour laquelle AMD a désactivé le loop buffer de Zen 4 n’est pas claire. Une fonctionnalité CPU peut être désactivée en raison d’un bug matériel. Zen 4 est le premier cas où AMD a introduit un loop buffer dans ses CPU hautes performances. L’impact sur les performances est presque nul, et l’on suppose que l’effet sur la consommation électrique est lui aussi minime.

1 commentaires

 
GN⁺ 2024-12-02
Avis sur Hacker News
  • Il est possible que la fonctionnalité ait été désactivée pour prévenir une vulnérabilité matérielle. Cela laisse entendre que le loop buffer n’apportait ni gain de performances ni avantage énergétique

    • Il se peut que l’équipe d’ingénierie ait passé des mois à développer une nouvelle fonctionnalité qui, en pratique, n’apportait aucun bénéfice, et qu’elle ait tout de même été livrée pour sauver la face
    • Dans les équipes logicielles aussi, on réécrit parfois toute une base de code pour améliorer les performances, puis, une fois le projet terminé, on se retrouve avec plus de code et de moins bonnes performances
    • Dans les deux cas, le projet n’aurait pas dû être mis en production
  • Le loop buffer de Zen 4 montre que l’entreprise a les capacités d’ingénierie nécessaires pour expérimenter

    • Cette fois-ci, cela n’a rien donné, mais laisser les ingénieurs expérimenter sur des fonctionnalités à faible risque et à faible impact est un bon moyen de renforcer leur confiance
    • On peut espérer davantage d’assurance à l’avenir
  • J’utilise un 7950x3d et j’ai fait la mise à niveau depuis un 6700k Skylake

    • J’ai l’air d’être inconsciemment attiré par les puces dont le loop buffer matériel est désactivé par logiciel
  • Dans les jeux, la désactivation du loop buffer entraîne une baisse de performance de 5 % lorsqu’on est limité au die sans cache

    • Des mesures de consommation plus détaillées permettraient de vérifier si cela est lié au budget thermique/énergétique
    • On dirait que cette fonctionnalité sert à économiser de l’énergie
  • Le loop buffer était peut-être assez petit pour ne faire une différence que dans des scénarios spécifiques, et un buffer plus grand aurait probablement offert trop peu d’avantages au regard de son coût

    • Il peut y avoir une légère baisse de performances sur certaines charges de travail, mais AMD a obtenu quelques petits gains de performances depuis la sortie
    • Cela aurait dû être proposé comme option BIOS sur Zen 4. Le fait que ce ne soit pas le cas suggère un bug ou un problème de sécurité
  • Sur le Cortex-A15, c’est une « fonctionnalité majeure de conception »

    • Je me demande s’il existe des chiffres sur l’impact que cela a sur d’autres puces
    • Sur des conceptions utilisées à long terme (comme les consoles), cela pourrait devenir une cible d’optimisation
  • Je ne comprends pas combien d’espace le loop buffer occupe sur le die

    • S’il est supprimé, je me demande si cet espace pourrait être utilisé dans de futures puces pour quelque chose de plus utile, comme davantage de cache L2
  • Dans la section « énergie », il n’y a pas de division par le nombre d’instructions exécutées par seconde

    • La métrique à considérer pour voir l’intérêt du loop buffer n’est pas l’énergie par seconde, mais la consommation d’énergie par instruction
  • L’une des différences entre le 68000 de 1979 et le 68010 de 1982 était l’ajout d’un « mode boucle », un loop buffer de 6 octets