T2.1 / T2.2 / T2.3 / T3.1 Instruksjoner Flashcards

1
Q

Hva er de tre designprinsippene for instruksjonssettdesign?

A
  1. Regelmessighet forenkler
  2. Mindre er raskere
  3. Gode løsninger krever gode kompromiss
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q
  • Instruksjonssett
A

Vokabulær av kommandoer forstått av en gitt arkitektur, vi bruker RISC-V

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Regelmessighet forenkler; Hva er motivasjonen for dette prinsippet?

A
  • Registere har en fast størrelse, og er typisk et begrenset antall.
  • Jo flere man har, jo lengre tid tar de å aksessere
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q
  • Register
A
  • Et lagringselement
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Mindre er raskere; Hva er motivasjonen for dette prinsippet?

A
  • Registre er raskere å aksessere, har høyere gjennomstrømning og bruker mindre energi enn minnet
  • Mange programmer har flere variabler enn datamaskiner har register - derfor brukes spilling
  • Små konstanter er vanlige, vi har derfor varianter av instruksjoner der en av operandene er en konstant
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
  • Spilling
A

Å putte mindre brukte variabler, eller de som trengs senere, i minnet istedenfor i registre

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q
  • Minne
A

En tabell med registerverdier - typisk adresserbar

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q
  • Minneinstruksjoner / Data overførings instruksjoner
A

En kommando som overfører data mellom minnet og registre

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
  • Load instruksjoner
A

En minneinstruksjon som kopierer verdier fra minnet til registre

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q
  • Store instruksjoner
A

En minneinstruksjon som kopierer verdier fra registre til minnet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q
  • Instruksjon
A

En streng med 1ere og 0ere

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q
  • Maskinkode
A

Den numeriske versjonen av en instruksjon

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q
  • Felt
A

Hvert segment med instruksjoner

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Gode løsninger krever gode kompromiss; Hva er motivasjonen for dette prinsippet?

A
  • Man har flere instruksjonsformat, som er likest mulig
  • Skiller mellom instruksjonsformat i RISC-V ved å se på verdiene i opcode feltet
  • R-type instruksjoner har ikke plass til konstanter og instruksjoner blir enkle å dekode hvis alle instruksjoner er like lange og har samme format –> Løsning: flere instruksjonsformat
  • Instruksjoner og Iron Law: Jo likere formatene er, jo enklere blir det for maskinen å dekode instruksjonene… Men blir formatene for begrensende må vi bruke mange instruksjoner til å uttrykke programmet
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hva er instruksjonsformatene i RISC-V?

A
  • R-format: Brukes for aritmetiske og logiske operasjoner med to registre som operander. Inkluderer felter for opcode, to kilde- og ett målregister. F.eks. add
  • I-format: Brukes for instruksjoner med én operand fra et register og en umiddelbar verdi (konstant). Typisk for lastinstruksjoner og instruksjoner som legger en konstant til et register. F.eks. addi og lw
  • S-format: Brukes for lagringsinstruksjoner, der en verdi i et register lagres til minne. Har felt for baseadresse (fra et register) og offset. F.eks. sw
  • B-format: Brukes for betingede hoppinstruksjoner. Inkluderer registre som sammenlignes, samt en forskyvning (offset) for måladressen.
  • U-format: Brukes for instruksjoner med store umiddelbare verdier, som last av umiddelbare verdier til register. Typisk for instruksjoner som setter høyere biter i et register.
  • J-format: Brukes for ubetingede hoppinstruksjoner, med en stor forskyvning for måladresse.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Hvorfor er instruksjonsformatene i RISC-V definert slik som de er?

A
  • Enkelhet
  • Effektivitet: De ulike formatene er optimalisert for spesifikke typer operasjoner, gir raskere behandling og mindre kompleksitet i dekoding av instruksjoner.
  • Parallellisering: RISC-V-formatene tillater enklere parallellisering av instruksjoner, noe som bidrar til høyere ytelse i moderne prosessorer.
  • Fleksibilitet: Arkitekturen er utformet for å være modulær, slik at nye funksjoner kan legges til ved å definere nye instruksjoner uten å forstyrre eksisterende systemer.
  • Redusert kodestørrelse: Ved å bruke umiddelbare verdier og direkte adressering i formatene, kan instruksjoner være mer kompakte, noe som reduserer minnebruken og øker hastigheten på instruksjonslasten.
17
Q

Hvordan lagres instruksjoner i minnet?

A

Vi vil at maskinen skal kunne beregne alle beregnbare funksjoner, da trenger vi:
- Aritmetiske instruksjner
- Minneinstruksjoner
- Instruksjoner som tar beslutninger

18
Q
  • Overflyt
A

Når resultatene av en operasjonen er større enn det som kan representeres i et register

19
Q

Hvordan utnytter man hvordan instruksjoner lagres i minnet til å implementere kontrollflyt?

A

Instruksjoner for beslutninger og forgreininger (branch instructions) brukes for å endre programflyten basert på spesifikke verdier. En forgreiningsinstruksjon tester en verdi og, avhengig av testens resultat, kan programmet hente neste instruksjon fra en ny adresse i stedet for den neste linjen. Dette kan for eksempel gjøres med betingede hopp som beq (branch if equal) eller ubetingede hopp som jal (jump and link).

Programtelleren (PC, Program Counter) holder styr på adressen til nåværende instruksjon. PC oppdateres normalt til å peke på neste instruksjon (adresse + 4), men kan i forgreiningsinstruksjoner endres til en annen adresse. Dette gjør at programmet kan hoppe frem til en annen del av koden når spesifikke betingelser er oppfylt.

Basic blocks er sekvenser uten interne forgreininger og med en startadresse. Disse gir struktur til koden mellom forgreninger, og forgreiningene selv sørger for kontrollflyt som endres avhengig av betingelser.

20
Q
  • Forgreining
A

En instruksjon som tester en verdi og legger til rette for en subsekvent overføring av kontroll til en ny adresse i programmet basert på testens resultat

21
Q

*Basic block

A

En sekvens av instruksjoner uten forgreininger, bortsett fra til slutt, og uten forgreiningsmål eller “label”, bortsett fra helt på begynnelsen

22
Q
  • Programteller
A

Et spesielt register til å holde styr på adressen til den nåværende instruksjonen