Analyse des performances

Les compteurs de performance révèlent un très grand nombre d'erreurs de prédiction de branchement. Quelle méthode d'amélioration convient ?

  1. AAjouter davantage de branchements dans la boucle
  2. BTrier les données pour rendre l'issue des branchements plus prévisible, ou supprimer les branchements eux-mêmes par sélection conditionnelle ou calcul
  3. CRéduire la capacité du cache
Afficher la réponse et l'explication

Réponse : B. Trier les données pour rendre l'issue des branchements plus prévisible, ou supprimer les branchements eux-mêmes par sélection conditionnelle ou calcul

En cas d'erreur de prédiction de branchement, le CPU abandonne les instructions exécutées de manière spéculative et recommence, perdant à chaque fois une dizaine de cycles ou plus. Avec des données aléatoires, l'issue d'un branchement du type « si la valeur est supérieure ou égale à 128 » est imprévisible. Trier les données au préalable regroupe les issues et rend la prédiction juste, tandis qu'une écriture avec instructions de sélection conditionnelle ou opérations bit à bit supprime le branchement. On peut aussi inciter le compilateur à effectuer ces transformations.

S'entraîner sur ce thème Retour au thème

Autres questions sur Analyse des performances

  1. Dans l'analyse descendante (Top-down Microarchitecture Analysis) fondée sur les compteurs de performance, quelle grande classification de l'utilisation des slots de traitement d'instructions du CPU est correcte ?
  2. Un programme est lent alors que l'utilisation du CPU n'est que d'environ 20 %. Quelle est la cause la plus probable ?
  3. Pour déterminer si un programme est limité par le calcul ou par la mémoire, on mesure le temps d'exécution en faisant varier la fréquence du CPU. Quel résultat obtient-on en général si le programme est limité par la mémoire ?
  4. Dans le modèle Roofline, lorsqu'un traitement se situe dans la région limitée par la bande passante mémoire, quelle orientation est correcte pour améliorer les performances ?
  5. Que mesure principalement le benchmark STREAM ?

Comparatifs sur ce thème