T8.4/T9.1 Prosessorer med høyere ytelse Flashcards
Multiple issue
Når flere instruksjoner blir igangsatt i en klokkesykel
⭐️ Static multiple issue
En implementasjon av en multiple-issue prosessor der flere valg blir tatt av kompilereren før utføring
Dynamic multiple issue
En implementasjon av en multiple-issue prosessor der flere valg blir tatt imens utføringen av instruksjoner foregår
Issue slots
Posisjoner der instruksjoner kommer fra i en gitt klokkesykel
Hvordan utnytter en prosessor parallellitet i tid?
- Hvert steg jobber med ulike instruksjoner
- Vi kan oppnå høyere ytelse gjennom å gjøre samlebåndet dypere
- Krever lite ekstra maskinvare
Hvordan utnytter prosessoren parallellitet i rom?
- Et skritt jobber med flere instruksjoner samtidig
- Krever mye ekstra maskinvare
Superskalare samlebånd utnytter
parallellitet i tid og rom
Superskalar prosessor
En avansert samlebånds teknikk som gjør det mulig for prosessoren å utføre mer enn en instruksjon per klokkesykel ved å velge de ila. kjøretiden
Dynamic pipline scheduling
Maskinvare støtte for reorganisering av rekkefølgen av utførelsen av instruksjoner for å unngå stalls/stans
⭐️ Speculation
Prosessoren utfører instruksjoner som den ikke er sikker på at den skal utføre
⭐️ Sanne dataavhengigheter
En instruksjon leser det en annen skriver
⭐️ RAW (Read-After-Write) farer
Gitt av sanne datavhengigheter
⭐️ Ut-avhengigheter
Avhengigheter der den opprinnelige rekkefølgen som instruksjoner blir utført i må ivaretas for at riktig verdi skal skrives
⭐️ Hva er fellesbetegnelsen for ut- og anti-avhengigheter?
Navneavhengigheter
⭐️ WAW (“Write-After-Write”) farer
Gitt av ut-avhengigheter
⭐️ Anti-avhengigheter
Avhengigheter der rekkefølgen mellom instruksjoner må ivaretas for å sikre at riktig verdi korresponderer til riktig instruksjon
⭐️ WAR (“Write-After-Read”) farer
Gitt av anti-avhengigheter
⭐️ Register renaming
Hver instruksjon får et nytt fysisk målregister
⭐️ Hvorfor oppstår navneavhengigheter / utløses WAW and WAR farer?
Fordi vi har et begrenset antall registre
⭐️ Hvordan fjerner register renaming WAW or WAR farer?
Tilordner ett fysisk målregister til hver instruksjon slik at navneavhengigheter fjernes.
Instruksjonspakke
Alle instruksjoner i samme pakke kan utføres samtidig
VLIW
En instruksjonssett arkitektur som setter igang flere operasjoner som er definert til å være selvstendige i en enkel-bred instruksjoner - en form for static multiple issue
Hvordan kan en kompilator anvends på en static multiple issue prosessor?
Å generere programmer på en måte som forteller prosessoren om instruksjonene kan utføres samtidig
⭐️ Hva er fordeler med med static multiple issue prosessorer?
Maskinvaren blir enklere
⭐️ Hva er ulemper med static multiple issue prosessorer?
- Kompilatoren må jobbe hardt for å utnytte instruksjonspakkene godt
- Det er en del parallellitet som kun oppstår i kjøretid
- Mindre fleksible ved kjøretid, da de ikke kan tilpasse seg dynamiske endringer i programflyten
Hvorfor er det en begrensning å utføre instruksjoner i den rekkefølgen de står i, i et program?
Når en instruksjon må stoppe, stopper alle instruksjoner også, og jo lengre tid det tar å utføre en instruksjon, jo mer kunne man fått gjort i mellomtiden
⭐️ Hvordan implementeres prosessorer som utfører instruksjoner ut-av-rekkefølge?
- Bruke register renaming til å fjerne alle WAR og WAW farer
- Forutsetter dynamic issue
- Ut-av-rekkefølge utføring
⭐️ Ut-av-rekkefølge utføring
En situasjon i samlebånds utføring der en instruksjon som er blokkert fra å utføres ikke fører til at de andre instruksjonene må vente
In order commit
En commit der resultatene til en samlebånds utførelse blir skrevet til programmereren i den samme rekkefølgen som de ble hentet
⭐️ Data flow limit
Det antallet instruksjoner vi kan utføre samtidig når vi kun tar hensyn til sanne dataavhengigheter
⭐️ Når når ut-av-rekkefølge prosessorer “data flow limit”?
Når de ikke har nok maskinvareressurser tilgjengelig