Förstå förgreningsfördröjningslucka och förutsägelse av förgreningsgräns i instruktionsrörledning

Låt mig definiera:

  • Grenfördröjningslucka: Normalt ordnar monterare instruktioner för att flytta några instruktioner direkt efter greninstruktion, så att den flyttade instruktionen alltid kommer att utföras, oavsett om filial tas eller inte, utan att lämna systemet i inkonsekvent tillstånd.

  • Förutsägelse för grenförutsägelse: förutsäga vad som kommer att bli resultatet av förgreningstillståndet och sedan hämta instruktioner från den resulterande platsen, så att de omedelbart körs efter filialinstruktion.

Nu , låt oss överväga nedanför körningssekvensen (nedan, F: instruktionshämtning, D: instruktion avkoda, X: eXecute, M: Minnesåtkomst, W: Skriv tillbaka):

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

Vanligtvis utvärderas och körs grenvillkor i X-steg. I det här steget har INSTR1 och INSTR2 redan startat och det här är instruktionerna som kan påverkas av valet om du vill använda grenfördröjning slots eller förutbestämning av grenförutsägelse eller båda. Jag hittade ingen text för att diskutera detta tydligt. SÅ jag försökte gissa det som nedan:

  • När vi använder båda, så skulle instruktionssekvensen vara:

    BRANCH: branch-instruction INSTR1: branch-delay-slot INSTR2: branch-prediction-prefetch 
  • När vi endast använder grenförutsägelse, skulle instruktionssekvensen vara:

    BRANCH: branch-instruction INSTR1: branch-prediction-prefetch-1 INSTR2: branch-prediction-prefetch-2 
  • När vi endast använder grenfördröjningsfack, skulle instruktionssekvensen vara:

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

Är jag korrekt med det här? Är det hur detta faktiskt händer för olika fall? Eller finns det några fler detaljer?

Kommentarer

  • Jag don ' t grok " När vi bara använder gren " sekvens: hur kan den ha brach-delay-slots? Att visa den monteringsbit som du verkar ha i din rubrik skulle vara klargörande.
  • (1) " Jag don ' t grok " När vi bara använder gren " -sekvens: hur kan den ha brach-delay-slots? " – fixade meningen, jag lämnade den av misstag ofullständig. Hoppas det är vettigt nu. (2) Fick inte det här: " Att visa den monteringsbit du verkar ha i ditt sidhuvud skulle klargöras. " Gör menar du att säga, jag borde specificera monteraren jag jobbar med? Om ja: Jag läser pipelining-kapitel från boken " Computer Organization and Design " av Patterson. Så att hantera ren teori och lösa träningsproblem.

Svar

Ja, det kan vara vad som skulle hända, även om jag inte kommer ihåg någon arkitektur som kombinerade förutsägelse- och fördröjningsluckor: om du har förutsägelse kan den köras (uppslag i ett litet minne) parallellt med körningssteget, så inga fördröjningsluckor skulle behövas.

Kommentarer

  • tack för att bekräfta, eftersom sådana scenarier behandlas i träningsproblemen i Computer Architecture book av Patterson. Det ger direkta lösningar utan att ge någon förklaring. Varken kapitlet innehållet diskuterar detta.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *