Introduction

Nous avons passé la semaine dernière à étudier l'outil d'optimisation binaire d'Intel, appelé Binary Optimization Tool (BOT). Cet outil modifie les séquences d'instructions dans les exécutables pour améliorer les performances, mais il ne peut être utilisé qu'avec un petit nombre d'applications, dont Geekbench 6. Nous avons décidé de nous pencher sur le fonctionnement de BOT et les optimisations qu'il applique à Geekbench.

Contexte Technique

Nous avons testé les versions 6.3 et 6.7 de Geekbench sur un ordinateur portable Panther Lake (MSI Prestige 16 AI+ avec un processeur Intel Core 9 386H) avec BOT activé et désactivé. Nous avons observé que l'activation de BOT entraîne un délai de démarrage de 40 secondes pour la première exécution de Geekbench 6.3, qui diminue à 2 secondes pour les exécutions suivantes. Pour Geekbench 6.7, le délai de démarrage est de 2 secondes pour toutes les exécutions avec BOT activé.

Nos tests ont également montré que les scores de Geekbench 6.3 augmentent lorsque BOT est activé, avec une augmentation de 5,5% pour les scores mono-cœur et multi-cœur. Certains scores de charge de travail de Geekbench 6.3 ont également augmenté, avec des scores pour deux charges de travail (Object Remover et HDR) augmentant jusqu'à 30% avec BOT activé.

Analyse et Implications

Nos résultats montrent que BOT n'optimise que des versions spécifiques de Geekbench. Nous avons examiné le travail effectué pendant le délai de démarrage et constaté que BOT calcule une somme de contrôle de l'exécutable Geekbench. Cela suggère que la somme de contrôle est utilisée pour identifier si le binaire est connu de BOT et si BOT peut optimiser le binaire.

Nous avons utilisé l'émulateur de développement logiciel d'Intel (SDE) pour voir quelles instructions sont exécutées (et combien de fois elles sont exécutées) pendant une exécution de Geekbench. Nous nous sommes concentrés sur la charge de travail HDR, qui a montré le gain le plus important sous BOT.

Nos analyses ont montré que BOT a effectué des changements importants dans le code de la charge de travail HDR, en réduisant le nombre total d'instructions de 14%. La plupart de cette réduction provient de la vectorisation de parties du code de la charge de travail par BOT, en convertissant des instructions qui opèrent sur une valeur en instructions qui opèrent sur huit valeurs.

Perspective

Les résultats de nos tests montrent que BOT donne un avantage injuste aux processeurs Intel en leur permettant d'exécuter des instructions vectorielles tandis que d'autres processeurs continuent d'exécuter des instructions scalaires. Il est important que les utilisateurs de Geekbench comprennent ce que BOT fait aux scores de Geekbench.

Nous allons continuer à signaler les résultats optimisés par BOT dans le navigateur Geekbench. Les optimisations de BOT sont mal documentées, agressives dans leur portée et nuisent à la comparabilité avec d'autres processeurs. La version 6.7 de Geekbench (disponible plus tard dans la semaine) inclura un moyen de vérifier si BOT est en cours d'exécution et de signaler les résultats lorsque BOT est détecté.