DATALOGI 1E. Skriftlig eksamen fredag d. 16. januar 2004

Størrelse: px
Starte visningen fra side:

Download "DATALOGI 1E. Skriftlig eksamen fredag d. 16. januar 2004"

Transkript

1 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen fredag d. 16. januar 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes som en helhed. Vægtningen af de enkelte spørgsmål i en opgave vil ikke være præcist proportional med tidsangivelserne, som altså kun er vejledende. Opgave Tid 1 60 min min min min. Alle de sædvanlige hjælpemidler må benyttes, herunder også lydløse elektroniske lommeregnere og PDA ere (f.eks. Palm Pilot), dog ikke hvis disse har trådløs netadgang eller telefoni. En almindelig bærbar PC vil ikke være tilstrækkelig lydløs p.g.a. blæser, harddisk og støjende tastatur. I tvivlstilfælde gælder eksamensvagtens afgørelse. Det er tilladt at bruge blyant til besvarelsen, såfremt denne er tydeligt læselig.

2 Skriftlig eksamen fredag d. 16. januar 2004 i Datalogi 1E side 1 af 9 Opgave 1: Arkitektur (60 min.) Spørgsmål 1.1 (15 min.) Lad y = f (x) være en logisk funktion, hvor x og y begge er ikke-negative heltal, mindre end 8, og repræsenteret diskret ved 3 bit x 2 x 1 x 0 og y 2 y 1 y 0. Funktionen f er defineret ved: f (x) = 8 2x hvis x er ulige og mindre end 4 2x 8 hvis x er ulige og større end 4 x 1 hvis x er lige og større end 0 don t care hvis x = 0 a) Angiv optimerede logiske udtryk for for de 3 værdier y 2, y 1, og y 0. Spørgsmål 1.2 (15 min.) En maskine, der har en ordlængde på 16 bit benytter en repræsentation af flydende tal, der er identisk med IEEE 754-standarden for normaliserede tal, bortset fra at der kun er afsat 5 bit til eksponenten og 10 bit til mantissen. a) Angiv den decimale værdi af den bias, der benyttes ved repræsentation af eksponentdelen. b) Angiv den binære repræsentation af decimalværdien c) Angiv den uforkortelige brøk der svarer til den binære repræsentation Spørgsmål 1.3 (15 min.) Beskriv kort hvad der forstås ved afbrydelses-styret (eng. interrupt driven) dataoverførsel og DMA-overførsel (eng. Direct Memory Access), samt hvad fordelene og ulemperne ved de to metoder er. Spørgsmål 1.4 (15 min.) En maskine med 1 MB fysisk adresserum og 2 MB virtuelt adresserum benytter paging med en sidestørrelse på 4 KB. Maskinen er udstyret med en TLB på 4 pladser. a) Beskriv hvilke bit der indgår ved oversættelse fra virtuelle til fysiske adresser.

3 Skriftlig eksamen fredag d. 16. januar 2004 i Datalogi 1E side 2 af 9 En given proces omfatter ialt 8 sider hvorfor sidetabellen for processen har 8 indgange. På et givet tidspunkt har sidetabellen nedenstående indhold (hvor lageradresserne er skrevet på hexadecimal form): index valid adresse disk.page.ref.a 3 1 0A 4 0 disk.page.ref.b 5 0 disk.page.ref.c 6 0 disk.page.ref.d TLB en har på samme tidspunkt udseendet: index valid tag adresse A B Nedenstående angives fire lagerreferencer (skrevet hexadecimalt). ref. adresse 0 003A BC 2 007A A b) Angiv for hver reference om denne vil medføre et TLB-hit, et TLB-fault, og/eller en page-fault. Referencerne skal betragtes isoleret uden hensyn til den rækkefølge som de er opskrevet i.

4 Skriftlig eksamen fredag d. 16. januar 2004 i Datalogi 1E side 3 af 9 Opgave 2: Grammatikker og automater (60 min.) Spørgsmål 2.1 (20 min.) Følgende grammatik beskriver regneudtryk, hvor der er parenteser om hver brug af en operator: E id E ( E ) E (E + E ) E (E E ) a) Lav venstrefaktorisering (left factorisation) på denne grammatik. b) Udvid den venstrefaktoriserede grammatik med en ekstra startproduktion til håndtering af $, og beregn FIRST for hver produktion i den udvidede grammatik. Vink: Der er ikke Nullable produktioner i grammatikken. c) Lav en LL(1) syntaksanalysetabel for den udvidede grammatik. Vink: Der er ikke Nullable produktioner i grammatikken, så det er unødvendigt at beregne FOLLOW. d) Er grammatikken entydig? Begrund svaret. Spørgsmål 2.2 (40 min.) Vi definerer to funktioner even og odd over regulære udtryk: Givet et regulært udtryk r er even(r) et regulært udtryk, som genkender alle de tegnfølger i L(r), som har et lige antal tegn og odd(r) et regulært udtryk, som genkender alle de tegnfølger i L(r), som har et ulige antal tegn. Da der muligvis slet ikke findes nogle tegnfølger af lige/ulige længde, bliver vi nødt til at have et regulært udtryk φ, der genkender den tomme mængde af tegnfølger, jvf. opgave 2.10 i Basics of Compiler Design. F.eks. er odd(ε) = φ, da den tomme tegnfølge har længden 0 (som er lige). Andre eksempler er: even(ab) = ab odd(ab) = φ even(a ) = (aa) odd(a ) = a(aa) even((a bb) ) = (bb a(bb) a) Det bemærkes, at even(s) er defineret modulo ækvivalens af regulære udtryk, så for eksempel vil ethvert regulært udtryk ækvivalent med a(aa) være en korrekt værdi for odd(s). Det gælder bl.a. (aa) a og a(aa) + a.

5 Skriftlig eksamen fredag d. 16. januar 2004 i Datalogi 1E side 4 af 9 a) Find regulære udtryk for følgende: even((a ε)) odd((a ε)) even((a ε)(b ε)) odd((a ε)(b ε)) even(a b ) odd(a b ) b) Herunder er en ukomplet definition af even og odd som gensidigt rekursive funktioner. a repræsenterer et vilkårligt alfabetsymbol. even(ε) =??? even(a) =??? even(s t) =??? even(st) =??? even(s ) = (even(s) odd(s)(even(s)) odd(s)) odd(ε) = φ odd(a) = a odd(s t) =??? odd(st) =??? odd(s ) = even(s )odd(s)even(s ) Gør definitionen færdig ved at erstatte forekomsterne af??? med regulære udtryk, der kan indeholde even(s), even(t), odd(s) og odd(t) som deludtryk. Vink: Tænk på de mængder af tegnfølger, de forskellige regulære udtryk definerer, og hvordan man kan beskrive delmængder med lige/ulige antal tegn. c) Brug den rekursive definition til at beregne even((a ε)(b ε)(c ε)), og vis det resulterende regulære udtryk inklusive evt. mellemregninger. Brug evt. de algebraiske regler fra figur 2.2 og opgave 2.10 i Basics of Compiler Design til at reducere udtrykkene undervejs.

6 Skriftlig eksamen fredag d. 16. januar 2004 i Datalogi 1E side 5 af 9 Opgave 3: Oversætterteknik (60 min.) Spørgsmål 3.1 (15 min.) Definitionen af interferens (definition 8.2 i Basics of Compiler Design) er: A variable x interferes with a variable y if x is at the left-hand side of an assignment-instruction i, where y out[i] and the assignment isn t of the form x := y. a) Argumenter for at følgende definition er ækvivalent: A variable x interferes with a variable y if there is an instruction i, where x kill[i], y out[i] and the instruction i isn t of the form x := y. b) I afsnit 9.6 i Basics of Compiler Design (s. 193 i 2003-udgaven) nævnes det, at man kan sikre at variabler, der er levende henover funktionskald, bliver allokeret til callee-saves registre ved at lade disse variabler interferere med alle caller-saves registre. Beskriv en nem måde at sørge for at variabler, der er levende henover funktionskald, interfererer med alle caller-saves registre. Vink: Man kan med fordel bruge den modificerede interferensdefinition herover. Spørgsmål 3.2 (25 min.) Vi modificerer sætningssproget fra Grammar 6.4 i Basics of Compiler design sådan at produktionen erstattes med produktionen Stat id := Exp Stat Ids := Exps hvor Exps er beskrevet i Grammar 6.2 og Ids er defineret ved produktionerne Ids id Ids id, Ids Semantikken af den nye tildelingssætning er, at alle udtrykkene beregnes fra venstre mod højre, hvorefter alle variablerne tildeles de tilsvarende værdier. For eksempel vil sætningen x, y := y, x bytte om på indholdet af variablerne x og y, og sætningen x, y, n := x + y, x, n 1 vil kunne bruges i en løkke til beregning af fibonacci-tal.

7 Skriftlig eksamen fredag d. 16. januar 2004 i Datalogi 1E side 6 af 9 a) Givet at Exps bliver oversat med funktionen Trans Exps fra figur 6.3, modificer da Trans Stat fra figur 6.5 til at oversætte den nye tildelingssætning (vis kun den ændrede del af funktionen). Vink: Definer og brug en funktion Trans Ids. b) Vis koden for x, y, n := x + y, x, n 1 givet at vtable binder variablerne til mellemkodevariabler af samme navn. Spørgsmål 3.3 (20 min.) Vi vil generere kode til en 32-bit processor HYP, der bruger aritmetiske flag. Et flag er et et-bits register, der sættes ved aritmetiske operationer og læses ved betingede hop. En addition eller subtraktion af 32-bit tokomplementtal vil sætte flagene Z,N,V ud fra følgende regler: Z sættes til 1, hvis resultatet af additionen/subtraktionen er lig med 0, og sættes til 0 ellers. N er en kopi af bit 31 af resultatet af additionen/subtraktionen. V sættes til 1, hvis additionen/subtraktionen gav aritmetisk overflow (se COD s. 222), og sættes til 0 ellers. Indholdet af flagene bevares indtil næste aritmetiske operation. De aritmetiske instruktioner er: ADD a, b, c udfører a := b + c. SUB a, b, c udfører a := b c. Betingede hop i HYP tester kombinationer af flagværdier: B l hopper ubetinget til l. BEQ l hopper til l, hvis Z = 1. BLT l hopper til l, hvis N V. a) Lav kodesekvenser i HYP for hver af følgende mellemkodeinstruktioner: IF a = b THEN label t ELSE label f IF a b THEN label t ELSE label f IF a < b THEN label t ELSE label f Brug evt. et ekstra register t. Opskriv sekvenserne i en tabel i stil med figur 7.1 i Basics of Compiler Design.

8 Skriftlig eksamen fredag d. 16. januar 2004 i Datalogi 1E side 7 af 9 b) Find korte sekvenser af mellemkode, hvor man kan generere kortere HYP kode end den man får ved at generere kode for hver mellemkodeinstruktion for sig. Beskriv oversættelsen af disse sekvenser i en tabel i stil med figur 7.1 i Basics of Compiler Design. Fokuser på sekvenser, der indeholder mellemkodeinstruktionerne fra delspørgsmål a.

9 Skriftlig eksamen fredag d. 16. januar 2004 i Datalogi 1E side 8 af 9 Opgave 4: Maskinsprog og ydelse (60 min.) Spørgsmål 4.1 (25 min.) Vi har fået udleveret en assembler-procedure, der kan tælle antallet af nuller i et array med heltaller. Arrayet ligger fortløbende i arbejdslageret, og hvert element fylder 4 bytes. Input til proceduren er adressen på første element i arrayet samt antallet af elementer i arrayet ialt. Det følgende er en ufuldstændig og ikkekommenteret udgave af assembler-proceduren. 1 zerocount: add $t0, $a0, $zero 2 add $t1, $a1, $zero 3 add $v0, $zero, $zero 4 loop: beq $t1, $zero,?? 5 lw $t2, 0($t0) 6 bne $t2, $zero,?? 7 addi $v0, $v0, 1 8 continue: addi $t0, $t0, 4 9 subi $t1, $t1, 1 10 j loop 11 end: jr $ra a) De to betingede hop i hhv. linje 4 og 6 mangler en label. Angiv hvad de rigtige labels er. Argumenter for dit valg. b) Proceduren benytter en række forskellige registre. Beskriv detaljeret hvilken funktion de enkelte registre har i proceduren. c) Skriv en procedure i et højniveausprog (f.eks. Java eller C/C++), der udfører samme funktion som assembler-proceduren. Proceduren skal så vidt muligt foretage det samme som assembler-proceduren. Spørgsmål 4.2 (20 min.) Assembler-proceduren zerocount fra opgave 4.1 udføres på en pipelinet maskine M 1 med en klokfrekvens på 2 GHz. Det vides at arrayet indeholder 5 millioner elementer. Desuden vides, at det gennemsnitlige CPI (Cycles Per Instruction) ved udførelsen af proceduren er 1.5. a) Er det muligt at beregne den samlede udførelsestid på baggrund af disse oplysninger? Begrund svaret.

10 Skriftlig eksamen fredag d. 16. januar 2004 i Datalogi 1E side 9 af 9 b) Det oplyses nu at 70% af elementerne i arrayet er nuller. Hvad bliver udførelsestiden? (Det er ikke nødvendigt at tælle ordrer, som kun bliver udført en gang.) c) Proceduren udføres nu med samme input på en anden maskine M 2 (med samme ordresæt), der har en klokfrekvens på 2.5 GHz. Maskinen M 2 har et dårligt ydende lagerhierarki, hvilket betyder at CPI for hent-ordren i gennemsnit er 3.2. Dette CPI er dobbelt så højt som CPI for hent-ordren ved udførelse på maskinen M 1. CPI for alle andre ordrer er uændrede. Hvad bliver udførelsestiden af proceduren på maskinen M 2? Spørgsmål 4.3 (15 min.) Vi ønsker nu at forbedre ydelsen af assembler-proceduren zerocount fra opgave 4.1. a) Beskriv hvordan vi helt kan slippe for at anvende register $t1, således at det kun er register $t0, der inkrementeres i hver eneste iteration af løkken. b) Det viser sig nu at alle arrays der skal behandles af zerocount kun indeholder elementerne 0 og 1. Angiv hvordan man i dette tilfælde yderligere kan forbedre udførelsestiden for proceduren.