T2.1 / T2.2 / T2.3 / T3.1 Instruksjoner Flashcards
Hva er de tre designprinsippene for instruksjonssettdesign?
- Regelmessighet forenkler
- Mindre er raskere
- Gode løsninger krever gode kompromiss
- Instruksjonssett
Vokabulær av kommandoer forstått av en gitt arkitektur, vi bruker RISC-V
Regelmessighet forenkler; Hva er motivasjonen for dette prinsippet?
- Registere har en fast størrelse, og er typisk et begrenset antall.
- Jo flere man har, jo lengre tid tar de å aksessere
- Register
- Et lagringselement
Mindre er raskere; Hva er motivasjonen for dette prinsippet?
- 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
- Spilling
Å putte mindre brukte variabler, eller de som trengs senere, i minnet istedenfor i registre
- Minne
En tabell med registerverdier - typisk adresserbar
- Minneinstruksjoner / Data overførings instruksjoner
En kommando som overfører data mellom minnet og registre
- Load instruksjoner
En minneinstruksjon som kopierer verdier fra minnet til registre
- Store instruksjoner
En minneinstruksjon som kopierer verdier fra registre til minnet
- Instruksjon
En streng med 1ere og 0ere
- Maskinkode
Den numeriske versjonen av en instruksjon
- Felt
Hvert segment med instruksjoner
Gode løsninger krever gode kompromiss; Hva er motivasjonen for dette prinsippet?
- 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
Hva er instruksjonsformatene i RISC-V?
- 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.