Forståelse av grenforsinkelsesspor og forutsigelse av grenforutsigelse i instruksjonsrørledning

La meg definere:

  • Forsinkelsesspor for gren: Normalt bestiller monterere instruksjoner for å flytte noen instruksjoner umiddelbart etter greninstruksjon, slik at den flyttede instruksjonen alltid vil bli utført, uansett om gren tas eller ikke, uten å la systemet være i inkonsekvent tilstand.

  • Forhåndsavhenting av filialforutsigelse: forutsi hva som vil være resultatet av forgreningsbetingelsen og deretter forhåndshente instruksjoner fra den resulterende plasseringen, slik at de blir kjørt umiddelbart etter greninstruksjon.

Nå , kan vi vurdere nedenfor eksekveringssekvens (under, F: instruksjon Hent, D: instruksjon Decode, X: eXecute, M: Minnetilgang, W: Skriv tilbake):

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

Vanligvis blir grentilstand evaluert og utført i X-fase. På dette trinnet er INSTR1 og INSTR2 allerede startet, og dette er instruksjonene som kan påvirkes av valget om du vil bruke grenforsinkelse spor eller forutsigelse av forutsigelse av grenen eller begge deler. Jeg fant ingen tekst for å diskutere dette tydelig. Så jeg prøvde å gjette det som nedenfor:

  • Når vi bruker begge deler, vil instruksjonsrekkefølgen være:

    BRANCH: branch-instruction INSTR1: branch-delay-slot INSTR2: branch-prediction-prefetch 
  • Når vi bare bruker grenforutsigelse, vil instruksjonsrekkefølgen være:

    BRANCH: branch-instruction INSTR1: branch-prediction-prefetch-1 INSTR2: branch-prediction-prefetch-2 
  • Når vi bare bruker grenforsinkelsesspor, vil instruksjonsrekkefølgen være:

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

Er jeg riktig med dette? Er det slik dette faktisk skjer i forskjellige tilfeller? Eller er det noen flere detaljer?

Kommentarer

  • Jeg don ' t grok " Når vi bare bruker gren " sekvens: hvordan kan den ha brach-delay-slots? Å vise det samlestykket du ser ut til å ha i overskriften din, ville også være avklarende.
  • (1) " Jeg don ' t grok " Når vi bare bruker grenen " sekvens: hvordan kan den ha forsinkelsesspor? " – fikset setningen, jeg la den ved et uhell være ufullstendig. Håper det gir mening nå. (2) Fikk ikke dette: " Det ville også være tydeligere å vise monteringsstykket du ser ut til å ha i toppteksten. " Gjør du mener å si, jeg burde spesifisere montøren jeg jobber med? Hvis ja: Jeg leser pipelining-kapittel fra boka " Computer Organization and Design " av Patterson. Så å håndtere ren teori og løse treningsproblemer.

Svar

Ja, det kan være det som ville skje, selv om jeg ikke husker noen arkitektur som kombinerte spådommer og forsinkelsesspor: hvis du har spådommer, kan den kjøre (oppslag i et lite minne) parallelt med utførelsestrinnet, så det er ikke behov for forsinkelsesspor.

h3> Kommentarer

  • takk for å bekrefte, fordi slike scenarier er dekket i øvelsesproblemene til Computer Architecture book av Patterson. Det gir direkte løsninger uten å gi noen forklaring. Verken kapitlet innholdet diskuterer dette.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *