Forståelse af grenforsinkelsesslot og forudspilning af grenforudsigelse i instruktionsrørledning

Lad mig definere:

  • Branch forsinkelsesslot: Typisk arrangerer assemblere instruktioner for at flytte nogle instruktioner umiddelbart efter greninstruktion, således at den flyttede instruktion altid udføres, uanset om gren tages eller ej, uden at systemet efterlades i inkonsekvent tilstand.

  • Forudsigelse for grenforudsigelse: forudsigelse af, hvad der vil være resultatet af forgreningstilstand, og derefter forudhente instruktioner fra den resulterende placering, så de straks udføres efter filialinstruktion.

Nu , lad os overveje nedenstående eksekveringssekvens (nedenfor, F: instruktion Hent, D: instruktion Afkode, X: eXecute, M: Adgang til hukommelse, W: Skriv tilbage):

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

Normalt evalueres og udføres grenbetingelse i X-fase. På dette trin er INSTR1 og INSTR2 allerede startet, og dette er instruktionerne, som kan påvirkes af vores valg af om grenforsinkelse skal bruges slots eller forudbestilling af grenforudsigelse eller begge dele. Jeg fandt ingen tekst til at diskutere dette tydeligt. SÅ jeg forsøgte at gætte det som nedenfor:

  • Når vi bruger begge dele, ville instruktionssekvensen være:

    BRANCH: branch-instruction INSTR1: branch-delay-slot INSTR2: branch-prediction-prefetch 
  • Når vi kun bruger grenforudsigelse, ville instruktionssekvensen være:

    BRANCH: branch-instruction INSTR1: branch-prediction-prefetch-1 INSTR2: branch-prediction-prefetch-2 
  • Når vi kun bruger grenforsinkelsesslots, ville instruktionssekvensen være:

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

Er jeg korrekt med dette? Er det sådan, det faktisk sker i forskellige tilfælde? Eller er der nogle flere detaljer?

Kommentarer

  • Jeg don ' t grok " Når vi kun bruger branch " sekvens: hvordan kan den have brach-delay-slots? At vise det stykke samler, du ser ud til at have i din overskrift, ville også være afklaret.
  • (1) " Jeg don ' t grok " Når vi kun bruger gren " sekvens: hvordan kan den have brach-delay-slots? " – fikset sætningen, jeg lod den ved et uheld være ufuldstændig. Håber det giver mening nu. (2) Fik ikke dette: " At vise det stykke samler, du ser ud til at have i din overskrift, ville også være afklarende. " Gør mener du at sige, jeg skal specificere den samler, jeg arbejder med? Hvis ja: Jeg læser pipelining-kapitel fra bogen " Computer Organization and Design " af Patterson. Så at håndtere ren teori og løse træningsproblemer.

Svar

Ja, det kunne være, hvad der ville ske, selvom jeg ikke kan huske nogen arkitektur, der kombinerede forudsigelses- og forsinkelsesslots: Hvis du har forudsigelse, kan den køre (opslag i en lille hukommelse) parallelt med udførelsestrinet, så der er ikke behov for forsinkelsesslots.

Kommentarer

  • tak for at bekræfte, fordi sådanne scenarier er dækket i træningsproblemerne i Computer Architecture book af Patterson. Det giver direkte løsninger uden at give nogen forklaring. Hverken kapitlet indhold diskuterer dette.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *