AMD décide de désactiver le loop buffer de Zen 4
(chipsandcheese.com)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
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
Le loop buffer de Zen 4 montre que l’entreprise a les capacités d’ingénierie nécessaires pour expérimenter
J’utilise un 7950x3d et j’ai fait la mise à niveau depuis un 6700k Skylake
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
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
Sur le Cortex-A15, c’est une « fonctionnalité majeure de conception »
Je ne comprends pas combien d’espace le loop buffer occupe sur le die
Dans la section « énergie », il n’y a pas de division par le nombre d’instructions exécutées par seconde
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