T7.2/T7.3/T8.1/T8.2 Samlebåndsprosessor med 5 steg Flashcards
Hvorfor har flersykelprosessoren dårlig ytelse?
Viktigste grunnen: Bruker flere klokkesykler på hver instruksjon
Hvordan kan man få flersykelprosessoren til å ha bedre ytelse
Utnytte parallellitet
Hva går samlebåndsprinsippet ut på
En implementeringsteknikk der flere instruksjoner blir utført overlappende
Hva er fordelene og ulempene med en enkeltsykelprosessor?
CPI: Lav
Sykeltid: Høy
Areal: Lav
Kompleksitet: Lav
Hva er fordelene og ulempene med en flersykelprosessor?
CPI: Høy
Sykeltid: Lav
Areal: Lavere
Kompleksitet: Litt høyere
Hva er fordelene og ulempene med en samlebåndsprosessor?
CPI: Lav til lavere
Sykeltid: Lav til lavere
Areal: Lav til høy
Kompleksitet: Middels til høy
Hva er fordelene ved samlebåndsprosessoren sammenliknet med flersykelprosessoren og enkeltsykelprosessoren?
Økt ytelse: kan utnytte parallellitet og dermed øke gjennomstrømningen av instruksjoner
Bedre ressursutnyttelse: Bruk av samlebånd gjør det mulig å bruke flere enheter samtidig
Redusert klokkesykeltid
Høy skalerbarhet: Samlebåndsprosessorer kan enklere skaleres ved å legge til flere trinn i samlebåndet
Forbedret instruksjonsgjennomstrømning
Hva er ulempene ved samlebåndsprosessoren sammenliknet med flersykelprosessoren og enkeltsykelprosessoren?
Høy design kompleksitet
Må håndtere stall og hazards
Har en øvre grense for ytelsesforbedring
Økt strømforbruk
Mer krevende feilhåndtering
Hva er stegene i samlebåndet?
- Instruksjonshenting (IF)
- Instruksjonsdekoding og registerlesing (ID)
- Utføring (EX)
- Minneaksess (MEM)
- Tilbakeskriving (WB)
Oppstartskostnad
Det tar n-1 klokkesykler å fylle et n-stegs samlebånd
Hva vil balanse i et samlebånd si?
Hvor godt vi lykkes med å fordele tiden mellom stegene i samlebåndet
Hvordan påvirker oppstartskostnad i samlebåndet ytelse?
Høy oppstartskostnad reduserer ytelsen
Hvordan påvirker balanse mellom steg i samlebåndet ytelse?
For optimal ytelse bør hvert steg i samlebåndet ta omtrent like lang tid å fullføre. Dersom ett steg tar betydelig lengre tid enn de andre - flaskehals - redusert total gjennomstrømning.
- Farer (Hazards)
Programmet kan ikke utføres fordi det mangler noe
- Strukturfare
En enhet instruksjon trenger er ikke tilgjengelig
- Datafare
Instruksjonen kan ikke utføres forid data ikke er tilgjengelig
Hvordan kan datafarer unngås?
Med forwarding
Load-use datafare
En spesifikk form for datafare der hvor data som blir lastet opp av en load instruksjon ikke har blitt tilgjengelig enda fordi de trengs av en annen instruksjon
Hva kan en load-use datafare føre til?
Samlebånds stopp / boble
Samlebåndsstopp / boble
Et stopp som initieres for å løse en fare
- Kontrollfare (forgreiningsfare)
Vi vet ikke hvilken instruksjon som skal utføres
- Avhengighet
En egenskap ved programmet
- Fare
En avhengighet som påvirker utføringen av programmet på en gitt maskin
- Hva er forskjellen mellom avhengigheter og farer?
En avhengighet er en egenskap ved programmet, imens en fare er en avhengighet som påvirker utføring av et program på en gitt datamaskin
- Hva går unngåelse strategien for å håndtere farer ut på?
Unngå ressurskonflikter ved å ta gode arkitekturvalg
- Hva går videresending strategien for å håndtere farer ut på?
En metod der man løser en datafare ved å hente det manglende dataelementet fra en interne buffer istedenfor å vente på at den skal komme fra registre eller minnet
Går ut op at man legger til ekstra maskinvare som sender data direkte til instruksjonen som trenger dem
- Hva går stans strategien for å håndtere farer ut på?
- Sette inn bobler: Innføre “bobler” i samlebåndet, som er tomme klokkesykluser, for å gi tid til at dataavhengigheter blir løst.
- Stoppe instruksjoner: Midlertidig stoppe instruksjoner som er i ferd med å bli utført, slik at nødvendige data kan bli tilgjengelige før instruksjonen fortsetter.
- Hva går prediksjonsstrategien for å håndtere farer ut på?
En metode som antar at gitt utfall for en instruksjon også jobber utifra den antagelsen istedenfor å vente og se hva det faktiske utfallet blir
Hvordan implementeres kontroll i 5-stegs samlebåndsprosessoren?
Ved å plassere kontrollenheten i instruksjonsdekodingsteget og la kontrollordet følge instruksjonen gjennom samlebåndsregistrene.
Hvordan implementeres kontroll i instruction fetch steget i samlebåndet?
Kontrollsignalene for å lese instruksjonsminnet og skrive til programtelleren (PC) er alltid aktivert, så det er ingen spesielle kontrollsignaler som må settes i dette steget.
Hvordan implementeres kontroll i instruction decode steget i samblebåndet?
De to kilde registrene er alltid på samme plass i RISC-V instruksjonsformatet, så det er ingen spesielle kontrollsignaler som må settes i dette steget.
Hvordan implementeres kontroll i execution/address calculation steget i samlebåndet?
Kontrollsignalene som settes her er ALUOp og ALUSrc. Disse signalene velger ALU-operasjonen og om ALU skal bruke data fra registeret eller en tegn-utvidet immediate-verdi som input.
Hvordan implementeres kontroll i memory access steget i samblebåndet?
Kontrollsignalene som settes i dette steget er Branch, MemRead og MemWrite. Disse signalene aktiveres avhengig av om instruksjonen er en gren, load eller store.
Hvordan implementeres kontroll i tilbakeskrivnings steget i samblebåndet?
Kontrollsignalene MemtoReg og RegWrite bestemmer om ALU-resultatet eller minneverdien skal skrives tilbake til registerfilen, og aktiverer skrivingen av den valgte verdien.
Hvordan kan videresending brukes til å håndtere datafarer?
Legger til maskinvare som bytter ut verdien lest fra registerfilen med den oppdaterte verdien - unngår at en instruksjon ikke får tak i data produsert av en tidligere instruksjon
Hvordan implementerer man videresending?
- Lagrer registernumrene i samlebåndsregistre
- Legger til en videresendingsenhet som velger den riktige verdien
- Utvider multiplekserne på ALU-inngangene slik at de kan ta imot verdier fra EX/MEM og MEM/WB
Hvordan kan stopping brukes til å håndtere datafarer - spesielt les-bruk (“load-use hazards”)?
Man legger til maskinvare for å “holde igjen” verdien. Denne maskinvare lager et hull/”bubble” i samlebåndet og holder samme verdi i PC og IF/ID
Hvordan lager man et hull/”bubble” i samlebåndet?
Ved å sette nødvendige kontrollsignaler til 0
Hvordan påvirker videresending prosessorens ytelse?
Man bruker videresending så mye som mulig for å unngå ytelsestap
Hvordan påvirker stopping prosessorens ytelse?
Vi bruker stopping når vi må, men for ytelse lønner det seg å ikke generere kode med les-bruk farer som utløser behovet for stopping
- Kontrollfarer
Oppstår ved betingede forgreiningsinstruksjoner fordi vi ikke vet om vi skal utføre neste instruksjon eller den instruksjonen etter vi hopper til før etter EX-steget
Hvordan kan kontrollfarer håndteres med stans?
Ved å stoppe på alle betingede forgreiningsinstruksjoner
- Hvordan påvirker stans av kontrollfarer prosessorens ytelse?
Det gir en uakseptabel ytelsesreduksjon - vi mister 2 klokkesykler per forgreiningsinstruksjon og forgreiningsinstruksjoner er vanlige
Hvordan kan kontrollfarer håndteres med prediksjon?
- Man tar sjansen på at forgreiningsinstruksjonen ikke gir hopp - og henter neste instruksjon slik vi vanligvis gjør
- Hvis vi tar feil, fjerner vi instruksjonene som ikke skal utføres fra samlebåndet ved å sette kontrollsignalene til 0 i samlebåndsregistrene
- Man må gjøre dette for IF, ID, og EX når grenen når MEM stadiet
Hvordan påvirker prediksjon av kontrollfarer prosessorens ytelse?
- Øker belastningen på prosessoren.
- Riktig prediksjon kan forhindre feil og redusere behovet for kostbare feilrettinger og forbedre ytelse
- Kan gjøre systemet mer komplekst og påvirke ytelsen negativt
I hvilket tilfelle er det forgreiningsprediksjon sparer tid?
Dersom forgreiningsinstruksjonen ikke gir hopp
Hvordan flusher man IF?
Legger til ett kontrollsignal, kalt IF.Flush, som setter instruksjonsregisteret IF/ID til 0, dermed blir den hentede instruksjonen gjort om til en nop
Hvordan detekterer man forgreining tidlig?
Utfører beq i ID ved å:
- Regne ut måladressen
- Sjekke om registerverdiene er like
Dynamisk forgreiningsprediksjon
Prediksjon av grener ila. kjøretid vha. kjøretidsinformasjon