Aller au contenu

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