UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 13. juni 2013 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 9 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 6 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 (nevn for eksempel dato og nummer på plansjen). Innhold 1 Konvertering (vekt 5%) side 1 2 Kombinatorisk logikk (vekt 25%) side 2 3 Sekvensiell logikk (vekt 5%) side 2 4 Datamaskinarkitektur (vekt 15%) side 2 5 Programmering (vekt 26%) side 3 6 Hva skjer? (vekt 24%) side 4 Oppgave 1 Konvertering (vekt 5%) Konverter følgende tall til binært. Vis utregning. a. (43) des b. (FFF) hex (Fortsettes på side 2.)
Eksamen i INF2270, 13. juni 2013 Side 2 Oppgave 2 Kombinatorisk logikk (vekt 25%) Gitt følgende funksjonsuttrykk: F(a, b, c, d) = a b c d + a b c d + a bc d + a bc d + a bcd+ ab cd + ab cd + abc d + abcd + abcd a. Skriv opp sannhetsverditabellen til uttrykket. b. Forenkle uttrykket ved regneregler; vis utregning. c. Forenkle uttrykket ved bruk av Karnaughdiagram. d. Tegn det forenklede uttrykket ved å bruke AND-, OR- og NOTporter. e. Implementer det forenklede uttrykket med kun 2-inputs NAND. Oppgave 3 Sekvensiell logikk (vekt 5%) En S-R-latch kan bli implementert med å krysskoble hvilke av følgende gater: a. AND eller OR b. XOR eller XNOR c. NOR eller NAND d. AND eller NOR Oppgave 4 Datamaskinarkitektur (vekt 15%) a. Hvilken av følgende er ikke en reell bus: 1. Data bus 2. Timer bus 3. Control bus 4. Address bus b. Hvilken operasjon utføres ikke av en ALU: 1. AND 2. OR 3. XOR 4. Addisjon 5. Multiplikasjon (Fortsettes på side 3.)
Eksamen i INF2270, 13. juni 2013 Side 3 c. Hvilket utsagn er korrekt: 1. DRAM er bygd opp av kun JK-flip-floper. 2. SRAM har lavere hastighet enn DRAM. 3. DRAM har behov for «refresh» av det lagrede signalet. 4. SRAM har behov for «refresh» av det lagrede signalet. 5. SRAM er bygd opp av kun kapasitanser. d. Hvilken av følgende er ikke sann: 1. I pipelining tar hver instruksjon like lang tid å utføre. 2. I pipelining utfører prosessoren flere instruksjoner samtidig. 3. Hver subinstruksjon i pipelining kan utføres uavhengig av de andre subinstruksjonene. 4. Ved å bruke pipelining oppnår vi alltid speedup = 1. 5. Hazarder skaper komplikasjoner for pipelining. e. Hvilken av følgende er sann: 1. Cache er større enn RAM. 2. Cache er raskere enn RAM. 3. Full-assosiative cache-strategi gjør at vi har økt cache miss. 4. Set-assosiative cache-strategi gjør at den har kortere søketid enn direktemappet. 5. Direktemappet cache-strategi har høy cache-hit. Oppgave 5 Programmering (vekt 26%) Funksjonen strcpy kopierer én tekst til et angitt sted. Du skal skrive funksjonen char *multistrcpy (char *res,...) som kan kopiere vilkårlig mange tekster til res; etter siste tekst kommer parameteren 0. Funksjonen skal skrives i x86-assemblerspråk. Eksempel Programmet #include <stdio.h> extern char *multistrcpy (char *res,...); char s[2048]; multistrcpy(s, "A", " ", "small t", "", "est.", 0); printf("the answer is: \"%s\"\n", s); urn 0; skriver ut sva The answer is: "A small test." (Fortsettes på side 4.)
Eksamen i INF2270, 13. juni 2013 Side 4 Oppgave 6 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. 6a extern unsigned int f1 (unsigned int a, unsigned int b, unsigned int c); unsigned int v = f1(0x12345678, 0x000000ff, 0x0000ff00); printf("test 1: 0x%08x\n", v);.globl f1 f1: pushl %esp, andl orl 8(),%eax 12(),%eax 16(),%eax 1. Test 1: 0x00000000 2. Test 1: 0x0000ff00 3. Test 1: 0x0000ff78 4. Test 1: 0x0000ffff 5. Test 1: 0x1234ff78 (Fortsettes på side 5.)
Eksamen i INF2270, 13. juni 2013 Side 5 6b extern int f2 (int a[], int n); int data[6] = 33, -2, 49, -88, 0, 13 ; int v = f2(data, 6); printf("test 2: %d\n", v);.globl f2 f2: pushl %esp, 8(),%edx 12(),%ecx (%edx),%eax f2_l: decl %ecx jz f2_x addl $4,%edx cmpl (%edx),%eax jge f2_l (%edx),%eax jmp f2_l f2_x: 1. Test 2: 88 2. Test 2: 0 3. Test 2: 13 4. Test 2: 33 5. Test 2: 49 (Fortsettes på side 6.)
Eksamen i INF2270, 13. juni 2013 Side 6 6c extern int f3 (char *a); char *txt = "En bitte liten test!"; int v = f3(txt+9); printf("test 3: %d\n", v);.globl f3 f3: pushl %esp, pushl %edi cld movb 8(),%edi $0xffffffff,%ecx $,%al repnz scasb subl $-2,%eax %ecx,%eax %edi 1. Test 3: 1 2. Test 3: 0 3. Test 3: 2 4. Test 3: 5 5. Test 3: 20 (Fortsettes på side 7.)
Eksamen i INF2270, 13. juni 2013 Side 7 6d extern int f4 (int a, int b); int v = f4(4,1); printf("test 4: %d\n", v);.globl f4 f4: pushl %esp, pushl pushl call 8(),%edx %edx 12(),%edx %edx sub %edx %edx sub: pushl %esp, subl 8(),%eax 12(),%eax 1. Test 4: 3 2. Test 4: 0 3. Test 4: 3 4. Test 4: 4 5. Test 4: 5 (Fortsettes på side 8.)
Eksamen i INF2270, 13. juni 2013 Side 8 6e extern float f5 (float a, float b, float c); float v = f5(1.0, 2.0, -1.0); printf("test 5: %f\n", v);.globl f5 f5: pushl %esp, flds flds flds faddp fsqrt faddp 8() 12() 16() 1. Test 5: 0.000000 2. Test 5: 0.732051 3. Test 5: 1.000000 4. Test 5: 1.414214 5. Test 5: 2.000000 (Fortsettes på side 9.)
Eksamen i INF2270, 13. juni 2013 Side 9 6f extern int f6 (int a[], int n); int data[6] = 2, 3, 5, 7, 11, 13 ; int v = f6(data,6); printf("test 6: %d\n", v);.globl f6 f6: pushl %esp, 8(),%edx 12(),%ecx $0,%eax f6_l: subl $1,%ecx js f6_x addl (%edx),%eax incl %edx jmp f6_l f6_x: 1. Test 6: 0 2. Test 6: 6 3. Test 6: 13 4. Test 6: 28 5. Test 6: 41