Comprendre le créneau de retard de branche et la prédiction de la prédiction de branche dans le pipelining dinstructions

Permettez-moi de définir:

  • Emplacement de délai de branchement: Généralement, les assembleurs réorganisent les instructions pour déplacer certaines instructions immédiatement après linstruction de branchement, de sorte que linstruction déplacée sera toujours exécutée, indépendamment du branchement est prise ou non, sans laisser le système dans un état incohérent.

  • Prélecture de prédiction de branche: prédire quel sera le résultat de la condition de branchement, puis pré-lire les instructions à partir de lemplacement résultant, afin quelles soient immédiatement exécutées après linstruction de branchement.

Maintenant , considérons la séquence dexécution ci-dessous (ci-dessous, F: instruction Fetch, D: instruction Decode, X: eXecute, M: accès mémoire, W: réécriture):

BRANCH F D X M W INSTR1 F D X M W INSTR2 F D X M W INSTR3 F D X M W 

Généralement, la condition de branchement est évaluée et exécutée au stade X. À ce stade, INSTR1 et INSTR2 sont déjà démarrés et ce sont les instructions qui peuvent être affectées par le choix dutiliser ou non le délai de branchement prélecture de prédiction demplacements ou de branches, ou les deux. Je nai trouvé aucun texte pour en discuter clairement. Donc jai essayé de le deviner comme ci-dessous:

  • Lorsque nous utilisons les deux, la séquence dinstructions serait:

    BRANCH: branch-instruction INSTR1: branch-delay-slot INSTR2: branch-prediction-prefetch 
  • Lorsque nous utilisons uniquement la prédiction de branche, la séquence dinstructions serait:

    BRANCH: branch-instruction INSTR1: branch-prediction-prefetch-1 INSTR2: branch-prediction-prefetch-2 
  • Lorsque nous nutilisons que des créneaux de délai de branchement, la séquence dinstructions serait:

    BRANCH: branch-instruction INSTR1: branch-delay-slot-1 INSTR2: branch-delay-slot-2 

Suis-je correct avec cela? Est-ce ainsi que cela se produit dans différents cas? Ou il y a plus de détails?

Commentaires

  • Je ne ' t grok the " Lorsque nous nutilisons que la séquence de branche ": comment peut-elle avoir des brach-delay-slots? De plus, montrer le morceau dassembleur que vous semblez avoir dans votre en-tête serait une clarification.
  • (1) " I don ' t grok the " Quand nous nutilisons que la séquence de branche ": comment peut-il avoir des brach-delay-slots? " – a corrigé la phrase, je lai accidentellement laissée incomplète. Jespère que cela a du sens maintenant. (2) Je nai pas compris ceci: " De plus, montrer le morceau dassembleur que vous semblez avoir dans votre en-tête clarifierait. " Faites vous voulez dire, je devrais spécifier lassembleur avec lequel je travaille? Si oui: je lis le chapitre sur le pipelining du livre " Computer Organization and Design " de Patterson. Donc traiter de la théorie pure et résoudre des problèmes dexercice.

Réponse

Oui, cela pourrait être ce qui se passerait, bien que je ne me souvienne daucune architecture combinant des créneaux de prédiction et de délai: si vous avez une prédiction, il peut sexécuter (recherche dans une petite mémoire) en parallèle avec létape dexécution, donc aucun créneau de délai ne serait nécessaire.

Commentaires

  • merci de confirmer, car de tels scénarios sont traités dans lexercice Problèmes du livre Computer Architecture de Patterson. Il donne des solutions directes sans donner aucune explication. Ni le chapitre le contenu en parle.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *