Forelesning Adresseringsmodi Kap 5.4

Like dokumenter
Forelesning Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B

Forelesning ISA: IJVM Kap 4.2

Løsningsforslag til øving 5 TFE4105 Digitalteknikk og Datamaskiner Høsten 2006

EKSAMENSOPPGAVE I FAG TDT4160 DATAMASKINER GRUNNKURS. D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Forelesning Instruksjonstyper Kap 5.5

NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

Maskinvaredelen av INF 103: oversikt og innhold (1)

Forelesning Forgreningspredikering Kap 4.5 Superskalaritet Kap 4.5 Spekulativ utføring Kap 4.5

Forelesning Mikroprogram for IJVM Kap 4.3

Mer kodegenerering: Tilleggsnotat fra AHU Om Javas Byte-kode INF april 2009

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Øving 1: Busser, adressemodi, multiplekser og styreord

NORGES TEKNISK- NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

Dagens temaer. Mer om adresseringsmodi. Indeksert adressering med offset og auto-inkrement eller dekrement. Register-indirekte adressering

Dagens temaer. Dagens emner er hentet fra Englander kapittel 10 (side ) Mer om adresseringsmodi. RISC og CISC-prosessorer.

AVSLUTTENDE EKSAMEN I. TDT4160 Datamaskiner Grunnkurs Løsningsforslag. Torsdag 29. November 2007 Kl

Forelesning Optimalisering av μark Kap 4.4

Oppgaver til kodegenerering etc. INF-5110, 12. mai, 2015

Mer kodegenerering: Tilleggsnotat fra AHU. INF mai Stein Krogdahl,

Kodegenerering, del 2: Resten av Kap. 8 pluss tilleggsnotat (fra kap. 9 i ASU ) INF5110 V2007

INF mai 2014 Stein Krogdahl, Ifi, UiO

Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Pensumoversikt - kodegenerering. Kap. 8 del 1 kodegenerering INF5110 v2006. Hvordan er instruksjonene i en virkelig CPU? Arne Maus, Ifi UiO

NORGES TEKNISK- NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

AVSLUTTENDE EKSAMEN I. TDT4160 Datamaskiner Grunnkurs. Torsdag 29. November 2007 Kl

Forelesning ISA-nivået Kap 5.1

Dette er foiler til: 1. Tilleggsnotat fra bok av Aho, Sethi og Ullman Notatet legges ut på undervisnings-planen. Beklager dårlig kopi!

TDT DESEMBER, 2008, 09:00 13:00

Oppgaver til kodegenerering etc. INF-5110, 16. mai, 2014

Stack. En enkel, lineær datastruktur

Kodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007. Stein Krogdahl, Ifi UiO

Bakgrunnen for INF2100. Velkommen til INF2100. Prosjektet. Hva gjør en kompilator?

TDT AUGUST, 2013, 09:00 13:00. Norwegian University of Science and Technology Engineering The Department of Computer and Information Science

TDT DESEMBER, 2012, 09:00 13:00. Norwegian University of Science and Technology Engineering The Department of Computer and Information Science

Velkommen til INF2100

TDT4160 AUGUST, 2008, 09:00 13:00

Kap. 8 del 1 kodegenerering INF5110 Vår2007

Dagens tema. Mer MIPS maskinkode. Maske-operasjoner Skift-operasjoner Lesing og skriving Pseudo-instruksjoner Mer om funksjonskall Registeroversikt

INF1400 Kap4rest Kombinatorisk Logikk

Dagens tema. LC-2 LC-2 er en «ekstrem-risc»; den har 16 instruksjoner og 3 adresseringsmåter.

TDT DESEMBER, 2014, 09:00 13:00. Norwegian University of Science and Technology Engineering The Department of Computer and Information Science

Velkommen til INF2100 Jeg er Dag Langmyhr

Del 4 Noen spesielle C-elementer

Faglig kontakt under eksamen: Institutt for datateknikk og informasjonsvitenskap, Gløshaugen Steinar Line /

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

MAT1030 Plenumsregning 1

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

Løsningsforslag eksamen TDT4160 høsten 2005

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Runtimesystemer Kap 7 - I

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

SIE 4005, 9/10 (4. Forelesn.)

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

MAT1030 Diskret Matematikk

Dagens temaer. tema er hentet fra kapittel 4.3 og 4.4 om pipelining. til neste ukes forelesning (hvis tid) INF ! Mikrokode. !

INF3430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Dagens tema: Maskinkode. Litt datamaskinhistorie Hva er maskin- og assemblerkode? x86-prosessoren Programkode og variabler

Dagens temaer. Fra kapittel 4 i Computer Organisation and Architecture. Kort om hurtigminne (RAM) Organisering av CPU: von Neuman-modellen

MAT1030 Diskret matematikk

TDT4160 DATAMASKINER GRUNNKURS EKSAMEN

MAT1030 Plenumsregning 3

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Forelesning Hurtigbuffer Kap 4.5

Oversikt Kodegenerering Variable Setninger Uttrykk While-setningen Oppsummering

Oversikt Kodegenerering Variabler Setninger Uttrykk While-setningen

1 TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

TDT DESEMBER, 2013, 09:00 13:00. Norwegian University of Science and Technology Engineering The Department of Computer and Information Science

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

INF-5110 Oppgaver kodegenerering etc. INF-5110, vår 2011

Dagens temaer. Intern hukommelse (1) Maskinvaredelen av INF 103: oversikt og innhold (2) Maskinvaredelen av INF 103: oversikt og innhold (1)

Hvordan skrive Flok og Flass kode? I mange tilfelle er det svært enkelt:

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

Velkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel

Dagens tema: Enda mer MIPS maskinkode

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

TDT AUGUST, 2011, 09:00 13:00

Runtime-omgivelser Kap 7 - I

Runtimesystemer Kap 7 - I

INF3430/4431. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

En oppsummering (og litt som står igjen)

Dark Stakkmaskin. Aritmetiske instruksjoner

Dagens temaer. Dagens temaer er hentet fra Englander kapittel 12 side (2. utgave), side (3. utgave)

Debugging. Tore Berg Hansen, TISIP

156C. Algoritmer og maskinspråk. IT1101 Informatikk basisfag. Maskinspråk: det maskinen forstår. Assembler / assemblerspråk

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Forelesning 5. Diverse komponenter/større system

TDT4258 Eksamen vår 2013

MAT1030 Diskret matematikk

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Kapittel 4: Microarchitecture level

Introduksjon til DARK assembly

INF2270. Datamaskin Arkitektur

MAT1030 Diskret matematikk

Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Transkript:

TDT4160 Datamaskiner Grunnkurs Forelesning 21.11 Adresseringsmodi Kap 5.4

Dagens tema Adresseringsmodi (5.4) Hva? Gjennomgang av 6 forskjellige modi Bruk av stakk Eksempler

Repetisjon: Instruksjonsformat Assembler: ADD R1, R2, R3 Maskinkode: 101010111001011010100. Instruksjonsformatet forteller hvilke bits som tilsvarer hva Generelt: Opkode + Adresser til operander Hvor mange operander er eksplisitt? Implisitt: Gitt av opkode eller annen operand Operander kan være registre eller hovedlageradr. Hvor mange kan være hovedlageradresser?

Adresseringsmodi Hvordan skal vi oppgi en operand? Adresseringsmodus Regel for tolking av adressefelt Mål: Effektiv adresse Peker på operand Spesifiseres av opkode eller eget modus-felt i instruksjonen Forskjellige operander i samme instruksjon kan ha forskjellig adresseringsmodus

Immediate adressering Operanden ligger direkte i instruksjonen Er dermed tilgjengelig uten videre Størrelse på operand begrenset av feltlengde Kan bare brukes til konstanter verdi bestemmes ved kompilering R0 R1 R2 R3 Opkode ALU 0 1 2 4 5 6 8 9 10 12 13 14 3 7 11 15

Direkte adressering Instruksjonsfelt inneholder hovedlageradresse Feltlengde begrenser adresseområde R0 R1 R2 Opkode 0 1 2 4 5 6 8 9 10 3 7 11 Adresse bestemt ved kompilering lite fleksibelt Kan f.eks. bli brukt for globale variable R3 ALU 12 13 14 15

Registeradressering Instruksjonsfelt inneholder registernummer Veldig mye brukt R0 Opkode 0 1 2 3 RISC-ark. bruker nesten bare registeradressering Feltlengde begrenser antall registre R1 R2 R3 ALU 4 5 6 8 9 10 12 13 14 7 11 15

Register-indirekte adressering Instruksjonsfelt inneholder registernummer Register inneholder hovedlageradresse Kalles peker Registernummer krever færre bit enn hovedlageradresse Fleksibelt R0 R1 R2 R3 Opkode ALU 0 1 2 4 5 6 8 9 10 12 13 14 3 7 11 15

Eksempel: Registerindirekte Bruker ( P4 Instr): Immediate MOV R1, #0 Registeradressering MOV R1, #0 Register-indirekte ADD R1, (R2)

Indeksert adressering Instruksjonsfelt inneholder registernummer Register inneholder adresse1 Instruksjonsfelt inneholder adresse2 adresse1 + adresse2 = hovedlageradresse Tilsvarende som for lokale variable i Mic-ark (LV + variabelnummer) R0 R1 R2 R3 Opkode + ALU 0 1 2 4 5 6 8 9 10 12 13 14 3 7 11 15

Eksempel: Indeksert adresser. Har to array, A og B, på 1024 ord hver Skal beregne A i AND B i for alle par Skal dessuten bruke OR mellom alle resultat

Baseindeksert adressering Instruksjon inneholder to registernummer Hovedlageradresse er summen av innholdet i disse to registrene Kan ha offset i tillegg Eksempel MOV R4,(R2+R5) R0 R1 R2 R3 Opkode + ALU 0 1 2 4 5 6 8 9 10 12 13 14 3 7 11 15

Dagens oppgave Hovedlager Adresse Verdi 0 71 1 54 2 12 3 86 4 28 5 56 6 3 7 8 8 13 9 7 10 45 11 82 Registre Registernr Verdi R0 5 R1 15 R2 8 R3 7 R4 8 R5 55 R6 9 R7 35 Følgende instruksjoner skal utføres etter hverandre. Skriv ned hvilke registre hver enkelt instruksjon endrer og hva sluttverdiene til R4, R5, R6 og R7 vil være. Antall er en variabel med verdi 4. I1 PUSH R4 I2 MOV R5, #antall I3 MOV R7, (R5) I4 POP R5 I5 MOV R6, 1(R5) I6 MOV R7, 10 (Tips: I6 bruker bl.a. direkte adr.)

Stakkadressering Har sett: Kort instruksjonsformat er bra Optimalt i så måte er 0-adresseinstruksjoner Dvs. bruk av stakk (Stakk ligger i hovedlager og derfor litt tregt) Bruk av stakk krever omforming av uttrykk Normalt: Infix 2 + 3 Stakk: Postfix 2 3 + Kode: Push 2, Push 3, Add

Infix vs. Omvendt polsk notasjon (RPN) Trenger ikke operator-presedens Trenger ikke parenteser

Infix til postfix (Dijkstra) 1. Examine the next element in the input. 2. If it is an operand, output it. 3. If it is an opening parenthesis, push it onto the stack. 4. If it is an operator, then If the top of the stack is an opening parenthesis, then push the operator. If it has higher priority than the top of the stack, then push the operator. Else, pop operation from stack to output, and repeat step 4. 5. If it is a closing parenthesis, pop operators to the output until an opening parenthesis is encountered. Pop and discard the opening parenthesis. 6. If there is more input, go to step 1. 7. If there is no more input, unstack the remaining operands. (Stallings 5 th ed, 2000)

RPN og stakk

Adresseringsmodi og hoppinstruksjoner Må kunne oppgi hvor man (evt.) skal hoppe Dvs. hovedlageradressen til målinstruksjonen Hvilke modi kan brukes? Direkte, men 32-bits adresser krever stort format Register-indirekte Indeksert Mest vanlig: PC-relativ. Indeksert med basen implisitt gitt av PC. Trenger dermed bare offset i adresse. Tilsvarer hopp tilbake 20 instruksjoner o.l.

Opkoder/adr.modi (1/2) Få instruksjonsformat, fast lengde Alle instruksjoner tillater alle adresseringsmodi Alle registre kan brukes i register-relaterte adresseringsmodi Gjør jobben enklere for kompilator

Opkoder/adr.modi (2/2) Direkte adressering: Hovedlageradr. i instruksjon Eksempel: 2-adresseinstruksjon der begge operander kan bruke direkte adressering MODE bestemmer adresseringsmodus REG og OFFSET brukes bare i visse modi Variabel instruksjonslengde alt etter om 0, 1 eller 2 operander bruker direkte adressering

Eksempel: Pentium 4 Mange adresseringsmodi Men: Alle modi kan ikke brukes til alle instruksjoner Bare visse register kan brukes til visse modi

P4: MOD- og R/M-felt Å skrive en kompilator som til enhver tid bruker det mest optimale adresseringsmodi, er ikke helt enkelt

Eksempel: UltraSPARC III Alle instruksjoner bruker immediate eller registeradressering Register: 5 bit gir registernummer Immediate : 13 bits konstant i instruksjon Unntak: LOAD/STORE (+ en spesialinstr.) Indeksert, 13 bits offset Baseindeksert, sum av to registerverdier