Matériel et microprocesseur
Introduction
Les processeurs modernes offrent une batterie de compteurs (hardware events counters) permettant de collecter et capturer de toute une série d’informations et d’événements de profiling :
- Les instructions exécutés
- Les cache misses (data, instruction)
- Les branch mispredicted
- Les cycles CPU gaspillés (stalled)
- Beaucoup, beaucoup d’autres…
Comme ces informations sont collectées et stockées par le microprocesseur, elles offrent une solution avec un très faible impact sur les performances globales des applications.
Performance Monitor Unit (PMU)
PMU est le nom donné au composant permettant de gérer les compteurs d’événements d’un processeur
Chaque constructeur de processeurs propose un PMU différent, documenté généralement dans le manuel de l’architecture
- Les processeurs Intel1 intègrent depuis longtemps un PMU
- Les processeurs ARM2 intègrent un PMU dans l’architecture ARMv7/ARMv8
Le PMU fournit une interface pour activer les différents compteurs d’événements
- Des instructions permettent d’activer les compteurs
- Une fois le compteur activé, celui-ci commence à collecter les événements
- Il suffit ensuite de lire la valeur du compteur
- Sur ARM, le PMU s’accède et se configure via le coprocesseur CP15, donc avec
les instructions
MCR
/MRC
Outils
Il existe différents outils pour collecter des informations de profiling en utilisant les compteurs matériels
Intel fournit un outil Intel® VTune™ Amplifier (payant)
ARM n’a pas (encore) d’équivalent
Le noyau Linux intègre aussi des outils: perf
et oprofile
Ces outils fonctionnent pour les processeurs Intel, AMD et également ARM