Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen mandag den 23. juni 2003 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. 2 60 min. 3 60 min. 4 60 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. Det er tilladt at bruge blyant til besvarelsen, såfremt denne er tydelig.
Skriftlig eksamen mandag d. 23. juni 2003 i Datalogi 1E side 1 af 7 Opgave 1: Arkitektur (60 min.) Spørgsmål 1.1 (15 min.) En maskine, der har en ordlængde på 32 bit og benytter byte-addressering, anvender en 2-vejs sæt-associativ cache således, at hvert sæt-element er organiseret med en blokstørrelse på 16 ord (64 byte). Cachen kan ialt rumme 512 KB. a) Beskriv felterne i adresseformatet, og angiv felternes størrelse. b) Beregn hvor mange bit, det kræver at implementere cachen samt størrelsen af det absolutte overhead. Spørgsmål 1.2 (10 min.) En processor er forbundet med 4 ydre enheder, der hver kan afbryde processoren ved et interrupt (et højt signal - logisk 1) på en interruptlinie I i,i = 0..3. Da flere enheder samtidig kan signalere en afbrydelse, benyttes en interrupt-prioriteringsenhed, der som inddata tager signalerne I i, og producerer signalerne Int og (O 1 O 0 ). Signalet Int angiver, om mindst en enhed signalerer et interrupt. De to signaler O j koder (binært) indeks på den enhed med højeste prioritet, som ønsker betjening. Et signal på linien I i er højere prioriteret end et signal på linien I j hvis i < j. Hvis ingen enheder signalerer interrupt, er værdien af O 1 og O 0 ligegyldig (don t care). a) Angiv optimerede logiske udtryk for O 1 og O 0. Spørgsmål 1.3 (35 min.) Betragt decimaltallene A = 17, B = 11, og C = 1.75. a) Angiv bitmønstrene for angivelse af de tre tal A, B, og C ved brug af IEEE-754 standarden for flydende tal i 32 bit. b) Angiv bitmønstrene for tallene A og B, begge opfattet som heltal, ved 2-komplement repræsentation i 6 bit. c) Beskriv detaljeret hvorledes multiplikation af tallene A og B, begge opfattet som heltal og repræsenteret i 6 bits 2-komplement, foretages ved brug af Booths algoritme. Det anbefales at benytte et skema, hvor hver linie beskriver et trin i processen og bl.a. viser bitmønstrene for indholdet af de registre, der benyttes i metoden. Husk at kommentere hvert trin.
Skriftlig eksamen mandag d. 23. juni 2003 i Datalogi 1E side 2 af 7 Opgave 2: Grammatikker og automater (60 min.) Spørgsmål 2.1 (10 min.) a) Lav en DFA for følgende sprog: ikke-tomme bitfølger, hvor der maksimalt er tre ens bit efter hinanden. Spørgsmål 2.2 (50 min.) Vi betragter en simpel variant af XML hvor end-tags er stavet omvendt end de tilsvarende tags. F.eks. vil <cat> blive afsluttet med </tac>. Endvidere begrænser vi de bogstaver, man kan bruge i tags til sættet {a, c, g, t}. Et eksempel på en tekst i denne variant af XML er angivet herunder. Linieskift og blanktegn er indsat for læselighedens skyld og er ikke en del af teksten. <gattaca> <act><cc></cc><cc></cc></tca> <act><gag><cat></tac></gag></tca> </acattag> Følgende grammatik beskriver denne XML variant: X X X X X <T > T >X </ T at a T ct c T gt g T tt t Læg mærke til, at < / er to separate tegn. a) Vis at grammatikken er tvetydig, ved at angive to forskellige syntakstræer for den tomme tegnfølge. b) Omskriv grammatikken, så den er entydig. c) Er den nye grammatik LL(1)? Med andre ord, kan man vælge produktion entydigt ved at se på næste inddatategn?. Begrund svaret. Vink: På hvilke symboler vælges den tomme produktion for X?
Skriftlig eksamen mandag d. 23. juni 2003 i Datalogi 1E side 3 af 7 d) Hvis grammatikken ikke er LL(1), så omskriv den, så den bliver det. Vink: Del første produktion for T op i to ved at tage den del af højresiden, der starter med X over i en ny produktion. Omskriv derefter denne nye produktion. e) Vis LL(1) tabellen for den i delspørsgmål d omskrevne grammatik. Hvis ikke du har løst delspørgsmål d, så brug den entydige grammatik fra delspørgsmål b og påpeg eventuelle konflikter i tabellen.
Skriftlig eksamen mandag d. 23. juni 2003 i Datalogi 1E side 4 af 7 Opgave 3: Oversætterteknik (60 min.) Spørgsmål 3.1 (8 min.) Figur 5.2 i Basics of Compiler Design viser typecheck af simple udtryk. Vi ændrer nu sproget, så + operatoren også er defineret for argumenter af type bool. I givet fald skal begge argumenter være boolske værdier, og resulatet bliver da den logiske disjunktion (eller) mellem disse værdier. a) Vis hvordan Check Exp funktionen fra figur 5.2 skal ændres, så + virker både på heltal (som tidligere) og på boolske værdier (som beskrevet herover). Spørgsmål 3.2 (26 min.) I nogle processorer bruger aritmetiske instruktioner kun to registre, idet resulatet lægges i samme register, som indeholder det første argument til operationen. Eksempelvis kan kopi- og additionsinstruktionerne se ud som følger: MOV r d,r t r d := r t ADD r d,r t r d := r d + r t ADDI r d,k r d := r d + k Notationen er ækvivalent til den, der er brugt i figur 7.1 i Basics of Compiler Design. Ligesom på MIPS er register 0 (R0) konstant lig med 0. a) Tilføj mønstre til kodegenerering (i stil med figur 7.1) for hver af følgende mellemkodeinstruktioner: r d := k r d := r s + r t r d := r s + k hvor r d er forskellig fra r s og r t. Brug kun de ovenover viste kopi- og additionsinstruktioner. b) Foreslå metoder til at mindske antallet af ekstra kopiinstruktioner, som denne kodegenerering indfører. Vink: Dette kan ske i forskellige faser i oversættelsen.
Skriftlig eksamen mandag d. 23. juni 2003 i Datalogi 1E side 5 af 7 Spørgsmål 3.3 (26 min.) Det er kendt at logisk konjunktion er associativ, dvs. at: p (q r) = (p q) r. Afsnit 6.6.1 i Basic of Compiler Design omhandler såkaldte sekventielle logiske operatorer, hvor andet argument til operatoren ikke udregnes, hvis værdien af det første argument er tilstrækkeligt til at finde resultatet. F.eks. udregnes andet argument til && (sekventiel logisk konjunktion) ikke, hvis det første argument har værdien false, a) Argumenter uformelt for, at den sekventielle logiske konjunktionsoperator også er associativ, dvs. at p&&(q&&r) og (p&&q)&&r har samme betydning, inklusive hvorvidt deludtrykkene p, q og r bliver beregnet. b) Vis koden for p&&(q&&r) jvf. figur 6.8 i Basics of Compiler Design. I det yderste kald til Trans Cond har attributterne label t og label f værdierne l 1 og l 2. Kald til newlabel() giver l 3, l 4, l 5,... i nævnte rækkefølge. Udfold ikke kaldene til Trans Cond for p, q og r. c) Vis koden for (p&&q)&&r under samme forudsætninger som i delspørgsmål b. d) Sammenlign koden fra delspørgsmål b og c. Fremgår associativiteten klart?
Skriftlig eksamen mandag d. 23. juni 2003 i Datalogi 1E side 6 af 7 Opgave 4: Maskinsprog og ydelse (60 min.) Vi ønsker at forbedre ydelsen af et grafikprogram på en pipelinet maskine som den, der er beskrevet i Patterson & Hennessy, kap. 6.1 6.6 (maskinen er udvidet til også at kunne udføre addi ordrer). Vi er i den specielle situation, at kildekoden til grafikprogrammet er forsvundet, og vi har kun adgang til programmets maskinkode. Derfor kan vi kun foretage simple ændringer i selve maskinprogrammet, og overvejer derfor fortrinsvis at ændre selve maskinen for at opnå en bedre ydelse. Spørgsmål 4.1 (15 min.) Vores nuværende maskine kører med en klokfrekvens på 500 MHz. Maskinprogrammet udfører ialt 10 7 maskinordrer, heraf 3 10 6 hent/gem ordrer og 2 10 6 hopordrer. Hent/gem ordrerne har et CPI (Cycles Per Instruction) på 1.7, mens hopordrer tager 1 CPI plus et overhead til dårligt forudsagte (mispredicted) hop på ialt 500000 cykler. Alle andre ordrer har et CPI på 1.0. a) Hvor mange klokcykler udfører maskinprogrammet ialt? b) Hvad er udførelsestiden? c) Hvor stor forbedring i udførelsestid (i procent) kan en forbedret hopforudsigelse maksimalt give? Det antages at hardwaren til hopforudsigelse kan ændres ubegrænset, men klokfrekvensen og maskinprogrammet kan ikke ændres. Spørgsmål 4.2 (15 min.) En nærmere analyse af traces af maskinprogrammets kørsel afslører, at der ofte udføres ordresekvenser som og sw $t1, 0($t2) addi $t2, $t2, 4 lw $t1, 0($t2) addi $t2, $t2, 4 a) Hvad indikerer disse ofte forekommende sw/addi og lw/addi sekvenser at programmet laver? b) Vi overvejer at implementere to nye maskinordrer, der kan udføre hver af disse to typer ordresekvenser som en ordre. Beskriv kort hvad der taler for og imod en sådan ændring af arkitekturen.
Skriftlig eksamen mandag d. 23. juni 2003 i Datalogi 1E side 7 af 7 Spørgsmål 4.3 (30 min.) Det viser sig, at 70% af alle udførte hent/gem ordrer i maskinprogrammet bliver efterfulgt af en addi ordre, der udelukkende opererer på base-adresse registeret (som vist i spørgsmål 4.2). Vi beslutter os derfor først for at implementere følgende nye ordre: swaddi register1, value(register2) Denne ordre har samme layout som en almindelig sw ordre, men har følgende effekt: Værdien af register1 gemmes på adressen angivet ved register2. Herefter sættes register2 til at være lige med register2 + value, dvs. at konstanten value adderes til værdien af register2 og resultatet skrives tilbage til register2. a) Beskriv overordnet hvordan du ville implementere swaddi på datavejen. Benyt figur 6.30 i Patterson & Hennessy som udgangspunkt for din beskrivelse; ignorer eventuelle nye datahazards. b) Beskriv hvad en lignende ordre lwaddi ville udføre, og giv en overordnet beskrivelse af, hvordan du ville implementere denne ordre på datavejen. Angiv væsentlige forskelle i forhold til implementationen af swaddi. c) Efter at have implementeret disse to nye ordrer viser det sig, at klokfrekvensen falder til 450 MHz. Hvad bliver udførelsestiden for maskinprogrammet der benytter de nye ordrer? instruktionstal og CPI værdierne fra spørgsmål 4.1 antages at være uændret. Specielt kan det antages, at den nye ordre også har et CPI på 1.7. Antallet af maskinordrer fra spørgsmål 4.1 skal justeres svarende til brug af de nye ordrer.