UNIVERSITETET I OSLO

Like dokumenter
UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Løsningsforslag til eksamen i INF2270

Seksjon 1. INF2270-V16 Forside. Eksamen INF2270. Dato 1. juni 2016 Tid Alle trykte og skrevne hjelpemidler, og en kalkulator, er tillatt.

En oppsummering. Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Eksamen. Programmeringsoppgaver Flervalgsoppgaver

Løsningsforslag til eksamen i INF2270

Oppgave 1 JK-flip-flop (Total vekt 20%)

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

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

Den siste dagen. Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Veien videre... Eksamen

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

Dagens tema. Er maskinen big endian? Denne funksjonen tester det: INF1070 INF1070 INF1070 INF1070

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Dagens tema Programmering av x86 Flytting av data Endring av størrelse

Oppgave 2 Maskinkode (vekt 12%)

Dagens tema. Raskere kode [REB&DRO H kap 5]

En oppsummering (og litt som står igjen)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Intel Core i7. Omid Mirmotahari 4

IN1020. Datamaskinarkitektur

Dagens tema. Minnestrukturen Grovt sett ser minnet for hver process slik ut: Flytting av data. Programmering av x86

UNIVERSITETET I OSLO

Løsningsforslag til eksamen i INF2270

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

Innhold. Oppgave 1 Oversettelse (vekt 15%)

EKSAMENSOPPGAVE, INF-2200

UNIVERSITETET I OSLO

Det matematisk-naturvitenskapelige fakultet

INF1400. Tilstandsmaskin

MAX MIN RESET. 7 Data Inn Data Ut. Load

Oppgave 1 Oversettelse (vekt 16%)

Emne: Datamaskinarkitektur Emnekode:lO 134A Faglig veileder: Lars Kristiansen

Dagens tema. Representasjon av mantissen En desimalbrøk: 1 1, INF1070 INF1070 INF1070 INF1070

Tema for siste forelesning:

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

UNIVERSITETET I OSLO

Notater: INF2270 Assembler

INF2270. Datamaskin Arkitektur

Forhistorien Menneskene har alltid prøvd å lage maskiner for å løse sine problemer. Dagens tema

Datamaskinenes historie Når, hvor og hvorfor ble de første datamaskiner laget? Hvordan har utviklingen gått? Hva inneholder en datamaskin?

UNIVERSITETET I OSLO

INF1400. Tilstandsmaskin

Programmeringsspråket C

UNIVERSITETET I OSLO

Programmeringsspråket C

Tema for siste forelesning:

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

Del 1 En oversikt over C-programmering

Forelesning 7. Tilstandsmaskin

Eksamen i emne TFE4110 DIGITALTEKNIKK MED KRETSTEKNIKK

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Teorifagb, hus 3, og og Adm.bygget, Aud.max og B.

Løsningsforslag INF1400 H04

Programmeringsspråket C

UNIVERSITETET I OSLO

EKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.

Transkript:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: Eksamensdag: 12. juni 2015 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 11 sider. Vedlegg: Tillatte hjelpemidler: INF2270 Datamaskinarkitektur Ingen Kalkulator og alle trykte og skrevne hjelpemidler Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. Dette oppgavesettet består av 10 oppgaver som kan løses uavhengig av hverandre. Dersom du synes noe i oppgaveteksten er uklart, må du gjøre dine egne forutsetninger; sørg bare for at disse er tydelig angitt. Programmering skal være slik at koden fungerer med kommandoen gcc m32 på Ifis Linux-maskiner. Du kan referere til funksjoner og programkode vist på forelesningene uten å gjenta koden; sørg for at referansene er tydelige. Innhold 1 Konvertering (vekt 2½%) side 1 2 Registerkode (vekt 5%) side 2 3 Pipeline data-hazard (vekt 5%) side 2 4 Datamaskinarkitektur (vekt 7½%) side 2 5 Minnehierarki (vekt 2½%) side 3 6 Endelig tilstandsmaskin 1 (vekt 5%) side 3 7 Endelig tilstandsmaskin 2 (vekt 17½%) side 3 8 ALU (vekt 5%) side 4 9 Programmering (vekt 26%) side 5 10 Hva skjer? (vekt 24%) side 6 Oppgave 1 Konvertering (vekt 2½%) Konverter følgende tall til binært. Vis utregningen. a. (61)des b. (101)hex (Fortsettes på side 2.)

Eksamen i INF2270, 12. juni 2015 Side 2 Oppgave 2 Registerkode (vekt 5%) Gitt følgende minneoversikt: Memadr Innhold 0 Stop 1 Add 2 2 2 3 0...... Skriv RTL for de ulike trinnene. Anta at [PC] = 0. Oppgave 3 Pipeline data-hazard (vekt 5%) Det er kommet opp et forslag om en forbedring av pipeline i forhold til slik den er gjennomgått i kurset. Det er i forelesningsnotatene nevnt tre kjente løsninger: (1) Detektere avhengigheten i IF-stadiet, (2) Snu rekkefølgen av instruksjoner og (3) Ha en snarvei (forwarding). Det nye forslaget er å utvide pipelinen til å ha 5 trinn, altså følgende: IF DE (a): DE (b): EX: WB: decode instruction load from register execute write back Diskuter fordeler og ulemper med denne løsningen. Hint! Lese- og skrivestrategi til register. Oppgave 4 Datamaskinarkitektur (vekt 7½%) Tidligere var datamaskiner (32-bit) som hadde magnetisk disk, tregere for store programmer. a. Er du enig eller uenig? Gi en redegjørelse for ditt syn. En løsning som man ofte anbefalte tidligere når man hadde magnetisk disk, var å øke RAM. b. Er du enig eller uenig? Gi en redegjørelse for ditt syn. Datamaskiner med 32-bits instruksjonssett kan ha like mye RAM som datamaskiner med 64-bits instruksjonssett. c. Er du enig eller uenig? Gi en redegjørelse for ditt syn. Alle de overnevnte punktene er uaktuelle i dag siden vi har harddisker som er basert på flash (SSD) og dermed er like raske som RAM, slik at vi har ubegrenset mengde med RAM. d. Er du enig eller uenig? Gi en redegjørelse for ditt syn. (Fortsettes på side 3.)

Eksamen i INF2270, 12. juni 2015 Side 3 Oppgave 5 Minnehierarki (vekt 2½%) Gi på stikkordsform argumenter for og imot i en diskusjon om det å ha mer cache fremfor flere kjerner når areal på en chip er kritisk. Oppgave 6 Endelig tilstandsmaskin 1 (vekt 5%) a. Implementer dette tilstandsdiagrammet ved hjelp av D-flip-floper og logiske porter som AND, OR og NOT. b. Er det mulig å redusere antall tilstander? Om så, forklar. c. Hva slags ks er dette? Oppgave 7 Endelig tilstandsmaskin 2 (vekt 17½%) Lag en tilstandsmaskin for følgende brusautomat: Brus koster 15 kr. Maskinen tar kun imot mynter på 5 kr og 10 kr. For enkelhets skyld kan du se bort fra å gi tilbake rest eller ur av mynter. Anta også at det går én sykel for hver mynt, altså ingen mynt ingen endring i tilstand. Hint! Tilstandsmaskinen har grensesnitt mot en myntsensor (input) og en mekanisk utløser (output). a. Definer tilstandene, inngangene og utgangene. b. Tegn tilstandsdiagrammet. c. Skriv tilstandstabellen. d. Finn de kombinatoriske funksjonene ved å forenkle uttrykkene ved regning. e. Forenkle uttrykket ved bruk av karnaughdiagram. f. Tegn ksen. (Fortsettes på side 4.)

Eksamen i INF2270, 12. juni 2015 Side 4 Oppgave 8 ALU (vekt 5%) Gitt følgende ALU: Inst Computation 000 a b 001 a b 010 a OR b 011 a OR b 100 a b 101 a b 110 a ADD b 111 a ADD b a. Hvordan kan man få til å subtrahere a fra b, altså a SUB b? b. Vis hvordan man kan gjøre enkle endringer for å utvide denne ALU-en til å håndtere følgende funksjoner utover de oppgitte: a b a b a OR b a OR b a ADD b a ADD b a b a b c. Anta at du kan bruke den oppgitte ALU-en i et 32-bits instruksjonssett. i. Hvordan vil du sette den sammen? Hint! Bruk gjerne et symbol for en 1-bits ALU. ii. Hvordan vil du håndtere overflow? Hint! Hvor oppstår overflow? Signed eller unsigned spiller ingen rolle. (Fortsettes på side 5.)

Eksamen i INF2270, 12. juni 2015 Side 5 Oppgave 9 Programmering (vekt 26%) Skriv en funksjon strcombine som setter sammen flere tekster. Funksjonen har signaturen int strcombine (char *res, char *src,...); Teksten src skal kopieres til res, men hver * i src skal erstattes av en tekst som kommer senere i parameterlisten; første * skal erstattes av parameter nr 3, andre * av parameter nr 4 osv. Funksjonen skal urnere antall * -er som ble erstattet. Funksjonen skal skrives i x86- assemblerspråk. Eksempel Testprogrammet #include <stdio.h> extern int strcombine (char *res, char *src,...); int main (void) char s[200]; int n; n = strcombine(s, ""); printf("test 1: \"%s\", n=%d\n", s, n); n = strcombine(s, "Abc"); printf("test 2: \"%s\", n=%d\n", s, n); n = strcombine(s, "Abcd*", "efghij"); printf("test 3: \"%s\", n=%d\n", s, n); n = strcombine(s, "*mno*", "jkl", "pqr"); printf("test 4: \"%s\", n=%d\n", s, n); n = strcombine(s, "*****", "Abc", "*", "*", "*", "xyz"); printf("test 5: \"%s\", n=%d\n", s, n); skal skrive ut sva Test 1: "", n=0 Test 2: "Abc", n=0 Test 3: "Abcdefghij", n=1 Test 4: "jklmnopqr", n=2 Test 5: "Abc***xyz", n=5 (Fortsettes på side 6.)

Eksamen i INF2270, 12. juni 2015 Side 6 Oppgave 10 Hva skjer? (vekt 24%) I denne oppgaven har hvert delspørsmål syv alternativer der bare ett er korrekt. Du skal bare svare ved å angi det alternativet du tror er riktig; ingen forklaring er nødvendig. Du får 4 poeng for et korrekt valg og 1 poeng for et galt, så du kan, om du vil, angi mer enn ett alternativ som svar. Du vil aldri få et negativt antall poeng. 10a extern unsigned int f1 (unsigned int a, unsigned int b); int main (void) unsigned int v = f1(0x12345678, 0x000000ff); printf("test 1: 0x%08x\n", v);.globl f1 f1: pushl %ebp xorl orl xorl popl 8(%ebp),%eax 12(%ebp),%eax $0x80808080,%eax 12(%ebp),%eax %ebp 1. Test 1: 0x12345600 2. Test 1: 0x123456ff 3. Test 1: 0x80808080 4. Test 1: 0x92b4d678 5. Test 1: 0x92b4d6f8 (Fortsettes på side 7.)

Eksamen i INF2270, 12. juni 2015 Side 7 10b extern float f2 (float a, float b, float c); int main (void) float v = f2(1.5, 2.0, 7.0); printf("test 2: %f\n", v);.globl f2 f2: pushl %ebp flds flds flds faddp fmulp popl 8(%ebp) 12(%ebp) 16(%ebp) %ebp 1. Test 2: 0.000000 2. Test 2: 10.500000 3. Test 2: 13.500000 4. Test 2: 21.000000 5. Test 2: 24.500000 (Fortsettes på side 8.)

Eksamen i INF2270, 12. juni 2015 Side 8 10c typedef unsigned int uint; extern uint f3(uint v); int main(void) int res = f3(0x01234567); printf("test 3: 0x%08x\n", res);.globl f3 f3: pushl %ebp movb addb roll addb addb popl $0,%eax 8(%ebp),%edx %dl,%al %dh,%al $16,%edx %dl,%al %dh,%al %ebp 1. Test 3: 0x00000000 2. Test 3: 0x000000d0 3. Test 3: 0x00000067 4. Test 3: 0x0000468a 5. Test 3: 0x01234567 (Fortsettes på side 9.)

Eksamen i INF2270, 12. juni 2015 Side 9 10d extern void f4(int a, int b); int main (void) printf("test 4: "); f4(1, 4); printf("\n");.globl f4.extern printf f4: pushl %ebp pushl pushl leal pushl call addl popl.data format:.asciz 8(%ebp),%edx %edx 12(%ebp),%edx %edx format,%ecx %ecx printf $12,%esp %ebp "Fra %d til %d" 1. Test 4: Fra 0 til 0 2. Test 4: Fra 1 til 4 3. Test 4: Fra 4 til 1 4. Test 4: Fra 6678432 til 6678436 5. Test 4: Fra %d til %d (Fortsettes på side 10.)

Eksamen i INF2270, 12. juni 2015 Side 10 10e extern int f5(int a, int b, int c, int d); int main (void) int res = f5(1000, 1000, 1000, 3); printf("test 5: %d\n", res);.globl f5 f5: pushl %ebp imull imull imull popl 8(%ebp),%eax 12(%ebp),%eax 16(%ebp),%eax 20(%ebp),%eax %ebp 1. Test 5: 0 2. Test 5: 3 3. Test 5: 3000 4. Test 5: 3000000 5. Test 5: 3000000000 (Fortsettes på side 11.)

Eksamen i INF2270, 12. juni 2015 Side 11 10f extern int f6 (char *s, char a, char b); int main (void) int res = f6("abcdefghijklmnopqrstuvwxyz", t, j ); printf("test 6: %d\n", res);.globl f6 f6: pushl %ebp pushl %esi 8(%ebp),%esi $0,%eax f6_l: movb 0(%esi,%eax,1),%dl cmpb 12(%ebp),%dl je f6_x cmpb 16(%ebp),%dl je f6_x incl %eax jmp f6_l f6_x: popl %esi popl %ebp 1. Test 6: 0 2. Test 6: 9 3. Test 6: 19 4. Test 6: 25 5. Test 6: 26