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



Like dokumenter
Forelesning Adresseringsmodi Kap 5.4

Forelesning Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B

Øving 1: Busser, adressemodi, multiplekser og styreord

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

Introduksjon til DARK assembly

Løsningsforslag eksamen TDT4160 høsten 2005

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

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

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

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

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

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

Dark load-store-maskin

Dark Stakkmaskin. Aritmetiske instruksjoner

INF1400 Kap4rest Kombinatorisk Logikk

NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

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

Forelesning Instruksjonstyper Kap 5.5

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

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

! Repetisjon: ! Forutsetinger: ! Ideelt sett gir en k-trinns pipeline en faktor k i hastighetsøkning. ! Benyttes derimot ekte pipelining, behøves

Forelesning 5. Diverse komponenter/større system

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

Prosessoren. Bakgrunnen Innhold LMC. Assemblerkode Oppsummering instruksjonene [Englander kap 6] Hva inneholder den? Hvordan utføres instruksjonene?

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Dagens tema. Datamaskinenes historie. De første moderne datamaskiner. Løsning. Menneskene har alltid prøvd å lage maskiner for å løse sine problemer.

INF2270. Datamaskin Arkitektur

INF2270. Datamaskin Arkitektur

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

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

Dagens tema. Rask-maskinen. Rasko-kode Raskas-kode. Litt datamaskinhistorie Registre og lagre Instruksjoner

En overikt. Dagens tema. Datamaskinenes historie. Rask-maskinen Litt datamaskinhistorie Registre og lagre Instruksjoner. Rasko-kode.

Forelesning Optimalisering av μark Kap 4.4

Dagens tema. Dagens tema er hentet fra kapittel 4.3 og 4.4. Mer om pipelining Ytelse Hasarder. Pipelining i Pentium-arkitekturen

TDT DESEMBER, 2008, 09:00 13:00

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

Forelesning ISA: IJVM Kap 4.2

Kjøresystemer. Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Parametre (2.7.7) Statiske språk (

NORGES TEKNISK- NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

Fakultet for informasjonsteknologi, Oppgave 1 Flervalgsspørsmål ( multiple choice ) 15 %

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

Kapittel 6. Høynivå møter lavnivå Fra C til assembly Fra assembly til maskinkode Linking og lasting

NORGES TEKNISK- NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

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

tema er hentet fra kapittel 4.3 og 4.4 om pipelining Mikroprogrammert Dagens temaer Hard-wired Mikrokode Hasarder Ytelse

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

Institiutt for informatikk og e-læring, NTNU Kontrollenheten Geir Ove Rosvold 4. januar 2016 Opphavsrett: Forfatter og Stiftelsen TISIP

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

Fakultet for informasjonsteknologi, Oppgave 1 Flervalgsspørsmål ( multiple choice ) 15 %

Datamaskinen LC-2. Dagens tema. Tall i datamaskiner Hvorfor kan LC-2 lagre tall i intervallet ? Hvorfor er det akkurat celler i lageret?

Dagens tema. Datamaskinen LC-2 En kort repetisjon. Binære tall Litt om tallsystemer generelt. Binære tall. Heksadesimale og oktale tall

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

INF mai 2014 Stein Krogdahl, Ifi, UiO

Maskinvaredelen av INF 103: oversikt og innhold (1)

TDT AUGUST, 2011, 09:00 13:00

INF3430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

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

Oppgave 1 - Linux kommandolinje (%)

ulike stegene utføres på egne hardware-enheter som ikke er instruksjon kan deles opp i sekvensielle steg som løses etterhverandre

Kap. 8 del 1 kodegenerering INF5110 Vår2007

befinner seg. Deretter leses instruksjonen fra i registerfilen ved ny stigende klokkepuls.

Runtime-omgivelser Kap 7 - I

INF3430/4431. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

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

INF2100. Dagens tema: Flink-maskinen Litt datamaskinhistorie. Registre og lagre. Instruksjoner. Flass-koden

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

TDT4160 AUGUST, 2008, 09:00 13:00

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

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

Oppgave 1 Flervalgsspørsmål ( multiple choice ) 15 %

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

Løsningsforslag til eksamen i IN 147(A)

TDT4160 DATAMASKINER GRUNNKURS EKSAMEN

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

Innhold. 2 Kompilatorer. 3 Datamaskiner og tallsystemer. 4 Oppsummering. 1 Skjerm (monitor) 2 Hovedkort (motherboard) 3 Prosessor (CPU)

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

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

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Datamaskinens oppbygning

Løsningsforslag til eksamen i IN 147(A)

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

Oversikt Kodegenerering Variable Setninger Uttrykk While-setningen Oppsummering

4/5 store parallelle maskiner /4 felles hukommelse in 147, våren 1999 parallelle datamaskiner 1. når tema pensum.

UNIVERSITETET I OSLO

PLS PC-øving nr. 2 Trening i programmering

Hovedansvarlig. Symbolgenerator. Tregenerator. Litt mer kompliserte setninger med betingelser

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Dagens tema: Enda mer MIPS maskinkode

Kapittel 4: Microarchitecture level

HØGSKOLEN I SØR-TRØNDELAG

Kompendium i Datamaskiner Grunnkurs. Kopiert fra AoC av Stian Mikelsen

Kap. 8 kodegenerering INF april, 2009

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

Oversikt Kodegenerering Variabler Setninger Uttrykk While-setningen

Litt om Javas class-filer og byte-kode

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

Transkript:

Løsningsforslag til øving 5 TFE4105 Digitalteknikk og Datamaskiner Høsten 2006 Oppgave 1 Papirsimulering av utførende enhet Styreordsekvens Registeroperasjon 011 011 001 0 0010 0 1 R3 R3 + R1 ; R3 = 01100111 100 100 001 0 1001 0 1 R4 R4 R1 ; R4 = 01110100 101 101 001 0 1010 0 1 R5 R5 R1 ; R5 = 01101100 001 001 000 0 1011 0 1 R1 R1 ; R1 = 11011111 001 001 000 0 0001 0 1 R1 R1 + 1 ; R1 = 11100000 110 110 001 0 0101 0 1 R6 R6 R1 1 ; R6 = 01100001 111 111 001 0 0101 0 1 R7 R7 R1 1 ; R7 = 01101001 000 111 000 0 0000 0 1 R0 R7 ; R0 = 01101001 Oppgave 2 Operand adressering X=(A+B)*(D-B)/(C-B) og n-adressemaskin (m = antall minnereferanser per instruksjon): n = 0 n = 1 n = 1½ n = 3 Assembler m Assembler m Assembler m Assembler m PUSH A 2 LD A 2 MOVE R0,D 2 ADD T1,A,B 4 PUSH B 2 ADD B 2 SUB R0,B 2 SUB T2,C,B 4 ADD 1 ST T1 2 MOVE R1,C 2 SUB T3,D,B 4 PUSH B 2 LD C 2 SUB R1,B 2 DIV T4,T2,T1 4 PUSH C 2 SUB B 2 DIV R0,R1 1 MUL X,T3,T4 4 SUB 1 ST T2 2 MOVE R1,A 2 PUSH B 2 LD D 2 ADD R1,B 2 PUSH D 2 SUB B 2 MUL R1,R0 1 SUB 1 DIV T2 2 MOVE X,R1 2 DIV 1 MUL T1 2 MUL 1 ST X 2 POP X 2 Tot m. ref 19 22 16 20 Oppgave 3 Adresseringsmodi 1) MOV R1,R0 R0 R1 0 0 Operanddel er register R0 (kodes 000) og register R1 (kodes 001). 2) MOV R1,VAR1 Adr Data 1

15 7 R1 Adr. VAR1 16 8 8 17 21 Operanddel er register R1 (kodes 001) og lageradresse VAR1 (16). 3) MOV R1,[R4] Adr Data R4 14 9 R1 15 15 7 7 16 8 Operanddel er register R1 (001) og register R4 (100). 4) MOV R1,[VAR2] Adr Data Start 7 233 adr. VAR2 8 15 9 17 14 9 R1 15 7 7 16 8 Operanddel er register R1 (001) og lageradresse VAR2 (8). 5) MOV R1,TABELL(R2) Adr Data 9 4 Startadr. 10 15 TABELL 11 17 12 12 13 17 14 9 R1 15 7 7 Her finnes verdien ved å ta utgangspunkt i starten av tabellen (adr 11) og plusse på R2 (=4), som gir adresse 15. Innholdet i adresse 15 overføres til R1. Operanddel er register R1 (001) og lageradresse TABELL (10). I tillegg må det oppgis hvilket indeksregister som brukes. Her er indeksregister R2 (010). 2

6) MOV R1,[VAR3](R3) Adr Data Startadr. 9 4 VAR3 10 15 11 17 17 21 R1 18 19 19 19 7 Her finner vi først adressen til var3 (adr 10). Til innholdet i adr 10, som er 15 adderes R3 (3). Dette gir adresse 18 og innholdet (19) overføres til R1. Operanddel er register R1 (001) og lageradresse VAR3 (10). Indeksregister er R3 (011). 7) MOV R1,[VAR3(R3)] Adr Data Startadr. 9 4 VAR3 10 15 11 17 12 12 Var3(R3) 13 17 14 9 15 7 16 8 R1 17 21 21 18 7 Her finner vi først Var3(R3), dvs. adressen til Var3 + R3, som gir adr. 13. Innholdet i adr. 13 (17) gir adressen til verdien vi ønsker. Operanddelen blir den samme som i forrige deloppgave. Det er bare opkoden som skiller denne fra foregående instruksjon. Oppgave 4 RISC og CISC a) Karakteristiske trekk ved RISC: Få instruksjoner og adresseringsmodi Fast lengde på instruksjonene enkel instruksjonsdekoding Mange registre Gjør ikke operasjoner direkte på hovedlager men bruker registrene, load/store arkitektur Styreenheten er ikke-programmert ( Hardwired control ) Instruksjoner utføres i løpet av en klokkesyklus Karakteristiske trekk ved CISC Mange instruksjoner og adresseringsmodi, ofte også noen sære typer som få bruker Variabel instruksjonslengde komplisert instruksjonsdekoding Færre registre enn RISC Gjør operasjonene direkte på data i hovedlager Styreenheten er ofte mikroprogrammert Det kreves flere klokkesykler for å utføre en instruksjon 3

b) Maskinkode laget for en RISC har som oftest flere instruksjoner enn en tilsvarende CISC kode, men vil oftest utføres hurtigere hvis det er snakk om heltallsberegninger. Hvis vi har et høyt antall komplekse operasjoner i et program kan vi få en situasjon der en tradisjonell CISC har bedre ytelse. Et eksempel kan være programmer for matematiske/vitenskapelige beregninger som bruker mye flyttallsaritmetikk. Oppgave 5 Assemblerprogram for RISC a) Merk at det finnes mange forskjellige løsninger som er riktige. Her er én mulig løsning: Merkelapp Kommentar ldi r0, 0 ; Trenger verdien 0 etterhvert sub r4, r0, r1 ; r4 = r0 r1 (blir altså negativ hvis X > 0) brn r4, and ; hopp til «and» hvis r4 er negativ (X > 0) sub r4, r3, r2 ; r4 = r3 r2 (blir altså negativ hvis Z < Y) brn r4, else ; hopp til «else» hvis r4 er negativ and: dec r4, r3 ; r4 = r3 1 (blir altså 0 hvis r3 er 1) brz r4, then ; hopp til «then» hvis r4 er 0 else: dec r3, r3 ; r3 = r3 1 ldi r1, 0 ; r1 = 0 brz r0, end then: inc r3, r3 ; r3 = r3 + 1 end: jmp r15 b) Mulig løsning: Merkelapp Kommentar ldi r0, 0 ; trenger verdien 0 etterhvert ldi r1, 0 ; sett indeks I til 0 mova r5, r14 ; r5 peker på gjeldende plass i lageret while: sub r4, r1, r12 ; r4 = r1 + r12 (blir altså negativ hvis I < N) brn r4, and ; hopp til «and» hvis r4 er negativ brz r0, if ; I >= N og vi skal hoppe ut and: load r4, r5 ; r4 = gjeldende tegn fra lageret inc r5 ; r5 oppdateres til å peke på neste tegn sub r4, r4, r13 ; r4 = r4 r13 (altså r4 = 0 hvis r4 == A) brz r4, if ; har funnet tegn, hopp ut 4

inc r1 ; øk indeks I brz r0, while if: sub r4, r12, r1 ; r4 = r12 r1 (blir altså negativ hvis I > N) brn end ; hopp ut hvis I > N ldi r1, 0 ; sett J = 0 ldi r5, r14 ; resett r5 til å peke på gjeldende plass i lageret for: sub r4, r1, r2 ; r4 = r1 r2 (blir altså null hvis I == J) brz r4, end ; hopp ut hvis I == J st r5, r0 ; null ut gjeldende tegn i lageret inc r5 ; r5 oppdateres til å peke på neste tegn inc r2 ; øk indeks J brz r0, for end: jmp r15 5