Forelesning Mikroprogram for IJVM Kap 4.3

Like dokumenter
Forelesning ISA: IJVM Kap 4.2

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Fortsetelse Microarchitecture level

Forelesning Optimalisering av μark Kap 4.4

1 TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Fortsetelse Microarchitecture level

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Fortsetelse Microarchitecture level

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Forelesning Adresseringsmodi Kap 5.4

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

1 TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

Kapittel 4: Microarchitecture level

TDT AUGUST, 2011, 09:00 13:00

Løsningsforslag eksamen TDT4160 høsten 2005

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

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

Forelesning Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B

TDT DESEMBER, 2009, 09:00 13:00

TDT DESEMBER, 2011, 09:00 13:00

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

TDT DESEMBER, 2008, 09:00 13:00

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

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

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

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

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

Dagems temaer. kapittel 4 i Computer Organisation and Architecture. av CPU: von Neuman-modellen. Transfer Language (RTL) om hurtigminne (RAM)

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

INF2270. Datamaskin Arkitektur

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)

Forelesning Hurtigbuffer Kap 4.5

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

Forelesning Instruksjonstyper Kap 5.5

TDT4160 AUGUST, 2008, 09:00 13:00

TDT DESEMBER, 2009, 09:00 13:00

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

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

TDT AUGUST, 2009, 09:00 13:00

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

ANSWER KEY FOR THE EXAM

Kap. 8 del 1 kodegenerering INF5110 Vår2007

Dagems temaer INF ! Fra kapittel 4 i Computer Organisation and Architecture. ! Kort om hurtigminne (RAM)

Litt om Javas class-filer og byte-kode

hvor mye hurtigminne (RAM) CPU en kan nyttiggjøre seg av. mens bit ene betraktet under ett kalles vanligvis et ord.

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

TDT4160 OG IT2201 DATAMASKINER GRUNNKURS EKSAMEN

Overordnet maskinarkitektur. Maskinarkitektur zoomet inn. I CPU: Kontrollenheten (CU) IT1101 Informatikk basisfag, dobbeltime 11/9

TDT4160 DATAMASKINER GRUNNKURS EKSAMEN

ANSWER KEY FOR THE EXAM

MAT1030 Forelesning 21

TDT4160 DATAMASKINER GRUNNKURS EKSAMEN

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

Del 4 Noen spesielle C-elementer

Forelesning ISA-nivået Kap 5.1

Eksamensoppgåve i TDT4160 datamaskiner og digitalteknikk

Maskinvaredelen av INF 103: oversikt og innhold (1)

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

Forelesning 20. Kombinatorikk. Roger Antonsen - 7. april 2008

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

INF2270. Datamaskin Arkitektur

Plan. MAT1030 Diskret matematikk. Eksamen 12/6-06 Oppgave 2. Noen tips til eksamen

TDT4160 DATAMASKINER GRUNNKURS EKSAMEN

TDT4160 DATAMASKINER GRUNNKURS EKSAMEN

Tema for denne forelesningen: tilpassing til pipeline. forwarding. eliminere NOP. faktisk MIPS. in 147, våren 1999 pipelining 1 9

MAT1030 Forelesning 21

INF1400 Kap4rest Kombinatorisk Logikk

Kapittel 9: Mer kombinatorikk

TDT4160 Datamaskiner grunnkurs Oppsummering. Vegard Aas, 2005

MAT1030 Forelesning 16

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Rekursjon og induksjon. MAT1030 Diskret matematikk. Induksjonsbevis. Induksjonsbevis. Eksempel (Fortsatt) Eksempel

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

Kap. 8 del 1 kodegenerering INF april, 2008

TDT4258 Eksamen vår 2013

4/2 enkel pipelining in 147, våren 1997 pipelining 1. Pipelining. når tema læreboka. 11/3 problemer

Forelesning 5. Diverse komponenter/større system

Kapittel 3: Digital logic level

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

ytelsen til hukommelseshierarkier

TDT ITGK - Hardware. Kapittel 9: Følge Instruksjoner - Prinsipper for Datamaskinens Virkemåte. Terje Rydland - IDI/NTNU

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

Førsteordens lineære differensiallikninger

Introduksjon til DARK assembly

! Sentrale begreper er adresserbarhet og adresserom. ! Adresserbarhet: Antall bit som prosessoren kan tak samtidig i én operasjon

Hvordan en prosessor arbeider, del 1

Dark load-store-maskin

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

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

Generell informasjon

dynamiske data dynamiske data statiske data program dynamiske data statiske data reservert program dynamiske data statiske data reservert program

Dagens tema INF2270. Cs preprosessor. Separat kompilering av C funksjoner. C og minnet. Dag Langmyhr,Ifi,UiO: Forelesning 5. februar 2007 Ark 1 av 15

STK1100 våren Betinget sannsynlighet og uavhengighet. Vi trenger en definisjon av betinget sannsynlighet! Eksempel 1

NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

En oppsummering (og litt som står igjen)

ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

INF og 13. april, Stein Krogdahl, Ifi UiO

Kap. 8 kodegenerering INF april, 2009

Transkript:

TDT4160 Datamasiner Grunnurs Forelesning 31.10 Miroprogram for IJVM Kap 4.3

Dagens tema Repetison: IJVM Miroaritetur IJVM-Instrusoner Registerbru Miroprogram for IJVM (4.3) Micro Assembly Language (MAL) Stort esempel WIDE GOTO

ISA vs. miroaritetur ILOAD ILOAD IADD ISA-instr. ISTORE i ILOAD i BIPUSH 3 Miroprogram: Sevens av

Mic-1

Registerbru CPP, LV, SP holder peerverdier PC adresse til neste byte med programode MBR siste byte lest fra programode MAR/MDR adresse til data / data TOS sal alltid inneholde ord på topp av sta OPC register til fritt bru

Timingdiagram

IJVM: Instrusoner

Miroprogram for IJVM Hvor er vi nå? Vet hvordan IJVM sal fungere Vet hvilen masinvare vi har Hva mangler? Miroprogram for å implementere IJVM Må mao. srive en sevens av miroinstrusoner for hver IJVM-instruson Miroinstrusoner lagres (selvsagt) binært, men symbols notason gør den mer leselig

Symbols notason En mulig notason: ReadRegister = SP, ALU = INC, WSP, Read, NEXT_ADDRESS = 122 (der WSP = Write SP register) Tungvint!

MAL: Micro Assembly Language Symbols språ for IJVM miroaritetur Hver line tilsvarer det som sal se i en loesylus Esempler: SP = SP + 1; rd MDR = SP MDR = H + SP SP = MDR = SP + 1 Bruer assembler til å oversette til binær form

MAL: Lovlige operasoner Ie alle MAL-instrusoner lar seg utføre i vår aritetur Esempler: MDR = SP + MDR H = H - MDR

MAL: Asess av hovedlager Tre måter: rd les ord (MAR / MDR) wr sriv ord (MAR / MDR) fetch les byte (PC / MBR) Må være obs på timing: MAR = SP; rd MDR = H Hvorfor går ie dette bra?

MAL: NEXT_ADDRESS (1/2) Må oppgi NEXT_ADDRESS, JMPC, JAMN, JAMZ Dette er tungvint; lar heller assembler gøre obben For to etterfølgende MAL-liner (=miroinstr.) Assembler bestemmer hvor i styrelager de sal ligge Assembler setter NEXT_ADDRESS i første til å pee på andre Unnta: Hoppinstrusoner GOTO, IFEQ, IFLT, IF_ICMPEQ

MAL: NEXT_ADDRESS (2/2) Ubetinget: goto label Betinget: Må få satt N- og Z-registrene Sender TOS (Top Of Stac) gennom ALU uten å srive til register MAL-syntas: Z = TOS; if (Z) goto L1; else goto L2 Assemblers ansvar å passe på at miroinstrusonene blir lagt sli at dette er mulig Hopp basert på JMPC: goto (MBR)

Valg av neste miroinstruson Styrelager inneholder 512 miroinstrusoner Trenger 9 bits adresse Hva med forgreninger? JAM JAMZ: Ta hensyn til Z (siste svar = 0) JAMN: Ta hensyn til N (siste svar negativt) MPC[8] = (JAMZ AND Z) OR (JAMN AND N) OR NEXT_ADDRESS[8] JMPC: Ta hensyn til MBR MPC[0:7] = MBR[0:7] OR NEXT_ADDRESS[0:7] (Typis NEXT_ADDRESS = 0 sli at MPC = MBR)

Registerbru CPP, LV, SP holder peerverdier PC adresse til neste byte med programode MBR siste byte lest fra programode MAR/MDR adresse til data / data TOS sal alltid inneholde ord på topp av sta OPC register til fritt bru

Hovedløe Main1: PC = PC + 1; fetch; goto (MBR) MBR inneholder allerede opode Oppdater PC til å pee på neste byte i den ompilerte programoden Kan være neste opode eller operand Hent neste byte Hopp til miroode for IJVM-instruson Adresse = opode

Esempel: IADD Pop two words from stac; push their sum iadd1 iadd2 MAR = SP = SP 1; rd En operand ligger i TOS, hent den andre Adresse er SP 1; oppdater samtidig SP H = TOS Flytt den første over til H (Hvorfor?) iadd3 MDR = TOS = MDR + H; wr; goto Main 1 Utfør addison og sriv til sta (hovedlager) Oppdater samtidig TOS Gå tilbae til hovedløe

Stort esempel: i = + Sal nå vise i detal hva som ser når denne oden blir utført Legg spesielt mere til Forsellen på PC og MPC Forsellen på styrelager og Method Area Når leseoperasoner fra hovedlager blir ferdig Hvor i styrelageret miroprogrammene ligger

Før 1. loesylus 212 PC Hovedlager SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR Miroaritetur 112 MAR MPC Main1 108 MBR 0x15 Styrelager i TOS LV H MIR PC =PC +1; fetch; goto (MBR)

Etter 1. loesylus 212 PC Hovedlager SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR Miroaritetur 112 MAR MPC iload1 108 MBR 0x15 Styrelager i TOS LV H MIR PC =PC +1; fetch; goto (MBR)

Etter 2. loesylus 212 PC Hovedlager SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR Miroaritetur 112 MAR MPC iload2 108 MBR 0x02 Styrelager i TOS LV H MIR H =LV

Etter 3. loesylus 212 PC Hovedlager SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR Miroaritetur 112 MAR 108 MPC iload3 108 MBR 0x02 Styrelager i TOS LV H MIR MAR =MBRU +H; rd

Etter 4. loesylus 212 PC Hovedlager SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR Miroaritetur 112 MAR MPC iload4 108 MBR 0x02 Styrelager i TOS LV H MIR MAR =SP =SP +1

Etter 5. loesylus 212 PC Hovedlager SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR Miroaritetur 112 MAR MPC iload5 108 MBR 0x02 Styrelager i TOS LV H MIR PC =PC +1; fetch; wr

Etter 6. loesylus 212 PC Hovedlager SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR Miroaritetur 112 MAR MPC Main1 108 MBR 0x15 Styrelager i TOS LV H MIR TOS =MDR; goto Main1

Etter 12. loesylus 212 PC Hovedlager SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR Miroaritetur 112 MAR MPC Main1 108 MBR 0x60 Styrelager i TOS LV H MIR TOS =MDR; goto Main1

Etter 13. loesylus 212 PC Hovedlager SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR Miroaritetur 112 MAR MPC iadd1 108 MBR 0x60 Styrelager i TOS LV H MIR PC =PC +1; fetch; goto (MBR)

Etter 14. loesylus 212 PC Hovedlager SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR Miroaritetur 112 MAR MPC iadd2 108 MBR 0x36 Styrelager i TOS LV H MIR MAR =SP =SP -1; rd

Etter 15. loesylus 212 PC Hovedlager SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR Miroaritetur 112 MAR MPC iadd3 108 MBR 0x36 Styrelager i TOS LV H MIR H =TOS

Etter 16. loesylus 212 PC Hovedlager SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR + Miroaritetur 112 MAR MPC Main1 108 MBR 0x36 Styrelager i TOS + LV H MIR MDR =TOS =MDR +H; wr; goto Main1

Etter 17. loesylus 212 PC Hovedlager + SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR + Miroaritetur 112 MAR MPC istore1 108 MBR 0x36 Styrelager i TOS + LV H MIR PC =PC +1; fetch; goto (MDR)

Etter 18. loesylus 212 PC Hovedlager + SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR + Miroaritetur 112 MAR MPC istore2 108 MBR 0x01 Styrelager i TOS + LV H MIR H =LV

Etter 19. loesylus 212 PC Hovedlager + SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR + Miroaritetur 112 MAR MPC istore3 108 MBR 0x01 Styrelager i TOS + LV H MIR MAR =MBRU +H

Etter 20. loesylus 212 PC Hovedlager + SP 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i MDR + Miroaritetur 112 MAR MPC istore4 108 MBR 0x01 Styrelager i TOS + LV H MIR MDR =TOS; wr

Etter 21. loesylus 212 PC Hovedlager + 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i SP MDR + Miroaritetur 112 MAR MPC istore5 108 MBR 0x01 Styrelager i: + TOS + LV H MIR SP =MAR =SP 1; rd

Etter 22. loesylus 212 PC Hovedlager + 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i SP MDR (gammel TOS-verdi) Miroaritetur 112 MAR MPC istore6 108 MBR 0x01 Styrelager i: + TOS + LV H MIR PC =PC +1; fetch

Etter 23. loesylus 212 PC Hovedlager + 0x15 0x02 0x15 0x03 0x60 0x36 0x01 ILOAD ILOAD IADD ISTORE i SP MDR (gammel TOS-verdi) Miroaritetur 112 MAR MPC Main1 108 MBR (neste instrbyte) Styrelager i: + TOS (gammel TOS-verdi) LV H MIR TOS =MDR; goto Main1

Dagens oppgave (1/2) Gitt følgende situason etter en loesylus. Hva er innholdet i de forsellige bosene etter at ILOAD og BIPUSH er utført? 212 PC Hovedlager 0x15 0x01 0x10 0x03 ILOAD i BIPUSH 3 SP MDR Miroaritetur 112 MAR MPC iload1 108 MBR 0x15 Styrelager i TOS LV H MIR PC =PC +1; fetch; goto (MBR)

Dagens oppgave (2/2)

WIDE (1/2) Normal ILOAD/ISTORE har en variabelindes på en byte Kun 256 loale variable mulig Dette holder som regel, men det an bli for lite Løsning: WIDE prefix byte Sier ifra at etterfølgende ILOAD/ISTORE har en indes på to bytes Krever estra miroprogram for WIDE ILOAD/ISTORE

WIDE (2/2) Ny indes er 2 byte Må leses i to omganger PC/MBR leser bare 1 Første byte er 8 mest signifiante bits Andre byte 8 minst signifiante bits Derfor: Shift på første 8 + OR Etterpå an vanlige ILOAD-μInstr. brues

GOTO Ubetinget hopp Ny PC = Gammel PC + offset Må derfor ta vare på gammel PC i OPCreg. Sett sammen 2 bytes offset (som WIDE)