Prédicteur de prochaine ligne (NLP)

Vue globale

Table
Figure 1: Vue globale du NLP. À chaque cycle, le Front-End damande au NLP les informations sur le prochain PC. Si celui-ci correspond à des informations internes comme un saut ou un branchement pris, alors le NLP spécule sur le PC suivant.

objectif: simple implémentation, réponse dans le cycle

L’ensemble du code est disponible dans un répertoire du projet Aubrac sur GitHub.

Composants internes

En interne, le NLP est basé sur plusieurs composants. Chacun d’entre eux est spécifique à un type d’aléa: les sauts, les branchements conditionnels ou les appels de fonction.

Branch Target buffer (BTB)

Table
Figure 1: Fonctionnement du BTB Quand un saut ou un branchement est détecté, ses informations sont enregistrées dans le BTB. Plus tard, avant de récupérer l'instruction correspondant à un PC, le BTB est lu pour anticiper des changements du flot d'exécution.

Pour chaque saut ou branchement, le BTB enregistre plusieurs informations:

  • l’information est-elle valide ?
  • l’adresse de l’instruction.
  • l’adresse de destination.
  • l’instruction est-elle un saut ?
  • l’instruction est-elle un appel de fonction ?
  • l’instruction est-elle un retour de fonction ?

Branch History Table (BHT)

Table
Figure 2: Principe de la machine d'états finis du BHT Chaque nouveau branchement met à jour un compteur qui indique si les derniers branchements croisés étaient majoritairement pris ou non.
Table
Figure 3: Description du fonctionnement du BHT Les bits de poids faible de l'adresse de chaque branchement pointe vers un compteur particulier. Selon la valeur du bit de poids fort du compteur, le BHT peut ensuite indiquer si le branchement doit être pris ou non.

Return Stack Buffer (RSB)

Table
Figure 4: Description du fonctionnement d'un BHT. Quand un appel est détecté, le PC de l'instruction suivante (basiquement PC+4) est sauvegardé au sommet du RSB, et le pointeur de pile est incrémenté. Quand un retour est détecté, la dernière valeur sauvegardée dans le RSB est récupérée et le pointeur de pile décrémenté.

Mise à jour des informations