Prédicteur de cible de branchement
En architecture informatique, un prédicteur de cible de branchement est la partie d’un processeur qui prédit la cible, c’est-à-dire l’adresse de l’instruction qui est exécutée après une instruction de branchement conditionnel pris ou de branchement inconditionnel avant que la cible de l'instruction de branchement ne soit calculée par l’unité d’exécution du processeur.
La prédiction de cible de branchement n’est pas la même chose que la prédiction de branchement qui tente de deviner si un branchement conditionnel sera pris ou non (choix binaire).
Dans les conceptions de processeurs parallèles, à mesure que la latence du cache d'instructions s’allonge et que la largeur d’extraction s’élargit, l’extraction de cibles de branchement devient un goulot d’étranglement. La récurrence est la suivante :
- Le cache d’instructions récupère un bloc d’instructions
- Les instructions du bloc sont analysées pour identifier les branchements
- Le premier branchement pris prévu est identifié
- La cible de ce branchement est calculée
- La récupération des instructions redémarre au niveau du branchement cible
Dans les machines où cette récurrence prend deux cycles, la machine perd un cycle complet de récupération après chaque branchement pris prévu. Comme les branchements prédits se produisent toutes les 10 instructions environ, cela peut entraîner une baisse substantielle de la bande passante de récupération. Certaines machines avec des latences de cache d’instructions plus longues auraient une perte encore plus importante. Pour atténuer la perte, certaines machines implémentent la prédiction de cible de branchement : étant donnée l’adresse d’un branchement, elles prédisent la cible de ce branchement. Un raffinement de l’idée prédit le début d’une série séquentielle d’instructions à partir de l’adresse du début de la série séquentielle précédente d’instructions.
Ce prédicteur réduit la récurrence ci-dessus à :
- Hacher l’adresse de la première instruction d’une exécution
- Récupérer la prédiction pour les adresses des cibles de branchement dans cette série d’instructions
- Sélectionner l’adresse correspondant du branchement pris prévu
Comme la RAM du prédicteur peut représenter 5 à 10 % de la taille du cache d’instructions, la récupération se produit beaucoup plus rapidement que la récupération du cache d’instructions, et donc cette récurrence est beaucoup plus rapide. Si elle n’était pas assez rapide, elle pourrait être parallélisée, en prédisant les adresses cibles des branchements cibles.
Voir aussi
[modifier | modifier le code]Liens externes
[modifier | modifier le code]- (en) « Branch Target Buffers » (consulté le ) (EE461)
- (en) Agner Fog, « The microarchitecture of Intel, AMD and VIA CPUs » [PDF] (consulté le )