DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen mandag den 23. juni 2003



Relaterede dokumenter
DATALOGI 1E. Skriftlig eksamen mandag den 23. juni 2003

DATALOGI 1E. Skriftlig eksamen fredag den 7. juni 2002

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen fredag den 7. juni 2002

Oversættere Skriftlig eksamen onsdag d. 24. januar 2007

Oversættere Skriftlig eksamen onsdag d. 19. april 2006

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 20. april 2005

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 18. april 2007

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

Oversættere Skriftlig eksamen onsdag d. 20. april 2005

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen mandag den 28. maj min min min min.

Oversættere Vejledende løsninger til Skriftlig eksamen onsdag d. 24. januar 2007

Oversættere / Datalogi 1E

Oversættere Skriftlig eksamen onsdag d. 25. januar 2006

DATALOGI MASKINARKITEKTUR Blok 2 samt Reeksamination i DATALOGI MASKINARKITEKTUR Blok 1 og arkitekturdelen af DATALOGI 1E

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen torsdag den 16. januar 2003

DATALOGI MASKINARKITEKTUR

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet)

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter Abstract

Sproget Rascal (v. 2)

Repræsentation af tal

Sproget Limba. Til brug i G1 og K1. Dat1E 2003

To mikroarkitekturer til MIPS Karakteropgave på Maskinarkitektur 1B

Repræsentation af tal

Repræsentation af tal

Oversættere. Vejledende løsninger til Skriftlig eksamen onsdag d. 25. januar 2006

DATALOGI 1E. Vejledende løsninger til Skriftlig eksamen fredag d. 16. januar 2004

MIPS, registerallokering og MARS

Yderligere udvidelser af oversætter for Minimal

Repræsentation af tal

Processoren: Enkelt-cyklus implementation

Indhold. Maskinstruktur Kapitel 1. Assemblersprog Indledning Hop-instruktioner Input og output...

MIPS modulet og registerallokatoren

Sider og segmenter. dopsys 1

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Åben uddannelse, Efterår 1996, Oversættere og køretidsomgivelser

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer

CPUer og maskinkode DM534. Rolf Fagerberg

Skriftlig eksamen, Programmer som Data januar 2014

Danmarks Tekniske Universitet

Forelæsning Uge 2 Torsdag

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Sider og segmenter. dopsys 1

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Iteration af et endomorft kryptosystem. Substitutions-permutations-net (SPN) og inversion. Eksklusiv disjunktion og dens egenskaber

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Eksamensopgaver i DM17, Januar 2003

Lageradministration. dopsys

Computerarkitektur. - en introduktion til computerarkitektur med LINDA

Noter til C# Programmering Selektion

Eksamen dcomnet 2012Q4. Årskortsnummer Navn

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Udsagnslogik. Anker Mørk Thomsen. 6. december 2013

Programmering for begyndere Lektion 2. Opsamling mm

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Danmarks Tekniske Universitet

Baggrundsnote om logiske operatorer

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

DM13-1. Obligatorisk opgave E.05. Jacob Aae Mikkelsen

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Processoren: Fler-cyklus implementation

Danmarks Tekniske Universitet

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Science and Technology EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET

De rigtige reelle tal

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Københavns Universitet, Det naturvidenskabelige Fakultet. Afleveringsopgave 1

Grundlæggende køretidsanalyse af algoritmer

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Skriftlig eksamen, Programmer som Data Onsdag 6. januar Spørgsmål 1 (20 %): Regulære udtryk og automater

Skriftlig eksamen i Datalogi

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Algorithms & Architectures II

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Lagervisning. Dina Friis, og Niels Boldt,

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode

Skriftlig Eksamen Beregnelighed (DM517)

DM507 Algoritmer og datastrukturer

dcomnet-nr. 6 Talrepræsentation Computere og Netværk (dcomnet)

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen

Kapitel 3 Betinget logik i C#

Integralregning med TI-Interactive! Stamfunktioner Integraler Arealer Jan Leffers (2005)

DM507 Algoritmer og datastrukturer

Et udtryk er (som bekendt?) lineært hvis den differentierede er en konstant funktion, dvs. at den ikke afhænger af x. Betragt f lgende værdiprocedurer

AVR MP Ingeniørhøjskolen i Århus Michael Kaalund

Niveauer af abstrakte maskiner

Skriftlig Eksamen Algoritmer og sandsynlighed (DM538)

Bits DM534. Rolf Fagerberg, 2012

DATALOGI 1F. Skriftlig eksamen tirsdag den 10. juni % 2 10 % 3 25 % 4 10 % 5 30 %

Transkript:

Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Vejledende løsninger til 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.

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 1 af 17 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. Adresseformatet består af 4 felter: Felt antal bit bit Tag 14 18-31 Index 12 6-17 Block offset 4 2-5 Byte offset 2 0-1 Byte offset er på 2 bit da 4 byte pr. ord. Block offset er på 4 bit da 16 ord pr. blok. Der er 16*4= 64 byte pr. blok og 2 blokke pr. index (da 2-vejs set-associativ). Antal cache indgange er derfor 512KB/128B eller 4K. For at adressere 4K må index-feltet være 12 bit. Tag-feltet bliver derfor 32-12-4-2 = 14 bit. Antal bit i implementationen bliver 2 12 2 (1+14+16 32) eller 527 2 13 bit lig 527 Kbyte. Det absolutte overhead er derfor 527 Kbyte - 512 Kbyte = 15 Kbyte. 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 interruptprioriteringsenhed, 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

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 2 af 17 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. Karnaughkortet for (O 1, O 0 ) er: De optimerede udtryk bliver: (I 0 I 1 ) O 1 O 0 00 01 11 10 00 xx 01 00 00 (I 2 I 3 ) 01 11 01 00 00 11 10 01 00 00 10 10 01 00 00 O 0 = Ī0I 1 + Ī0Ī2 O 1 = Ī0Ī1 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.

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 3 af 17 Skrives R =(f,m,e) for (fortegn, mantisse-1, eksponent+127) fås: R A = (1, 1/16, 131), R B = (0, 3/8, 130), R A = (1, 3/4, 127). Bitmønstrene bliver: B A = 1 10000011 000100 0 B B = 0 10000010 011000 0 B C = 1 01111111 110000 0 6-bits repræsentation i 2-komplement af A og B bliver: C A = 101111 og C B = 001011. Booths algoritme benytter to registre: Et 6-bits multiplikantregister der konstant har værdien af multiplikanten, der her vælges lig B = 001011, og et 12-bits produktregister, hvis venstre 6 bit er initialiseret med 0 og hvis 6 højre bit er initialiseret med A = 101111. Produktregisteret indeholder desuden en bit (til højre for den mindst betydende bit af A), initialiseret med værdien 0. Efter initialisering har algoritmen 6 trin (iterationer). Værdien af de to mindst betydende bit i det udvidede produktregister benyttes i hvert trin til at foretage en operation efter skemaet: Bitmønster Operation 00 Ingen operation 01 Adder B til venstre halvdel af register 10 Subtraher B fra venstre halvdel af register 11 Ingen operation Efter hver aktion jvf. ovenstående skema skiftes produktregisteret en position til højre. Skiftet foretages med fortegnsbevarelse. Nedenstående skema viser indholdet af produktregisteret for hvert af de 6 trin samt en kommentar til hvad der er sket i trinet. Bemærk at vi under tiden skal subtrahere B svarende til at addere B = 110101.

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 4 af 17 Trin Produktregister Kommentar 0 000000 101111 0 Initiel værdi 1 110101 101111 0 Subtraher B 111010 110111 1 Skift 2 111010 110111 1 Ingen operation 111101 011011 1 Skift 3 111101 011011 1 Ingen Operation 111110 101101 1 Skift 4 111110 101101 1 Ingen operation 111111 010110 1 Skift 5 001010 010110 1 Adder B 000101 001011 0 Skift 6 111010 001011 0 Subtraher B 111101 000101 1 Skift Værdien af multiplikationen fås af produktregisteret som -(000010 111011) = -187 (= -11*17).

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 5 af 17 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. 0 0 0 1 1 0 1 1 0 0 1 1 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 a T a T c T c T g T g T t T t

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 6 af 17 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. X ɛ X X X ɛ ɛ b) Omskriv grammatikken, så den er entydig. Vi omskriver X, så der ikke er både venstre- og højrerekursion: T er uændret. X X < T > X 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? På grund af den første produktion for T ligger < i F OLLOW (X), så både den tomme produktion for X og den produktion, hvis højreside starter med <, kan vælges ved dette symbol. 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.

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 7 af 17 Vi skal omskrive den første produktion for T, så vi undgår at < ligger i F OLLOW (X). Vi starter med at dele produktionen op før X et: T > T T X < / Dernæst indsætter vi i T de to muligheder for X og laver venstrefaktorisering: T < T T / T T > X < / Vi ser nu, at den sidste del af sidste produktion er identisk med den oprindelige produktion for T, så vi erstatter dette med T : T / T T > T Tilsidst sættes den ekstra startproduktion ind. Den samlede grammatik bliver X X $ X X < T > X T > T T a T a T c T c T g T g T t T t T < T T / T T > T 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.

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 8 af 17 Af pladshensyn vises kun højresiderne af produktionerne i tabellen. Venstresiderne fremgår af rækken. Læg mærke til at den tomme produktion nu er angivet med ɛ for at undgå forveksling med tomme indgange i tabellen. a c g t < > / $ X X$ X$ X <T >X ɛ T at a ct c gt g tt t >T T <T T T >T T >T T >T T >T T >T /

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 9 af 17 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). Vi modificerer indgangen for +: Check Exp (Exp, vtable, ftable) = case Exp of Exp 1 + Exp 2 t 1 = Check Exp (Exp 1, vtable, ftable) t 2 = Check Exp (Exp 2, vtable, ftable) if t 1 = t 2 then t 1 else error(); t 1 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:

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 10 af 17 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. MOV r d, R0 r d := k ADDI r d, k MOV r d, r s r d := r s + r t ADD r d, r t MOV r d, r s r d := r s + k ADDI r d, k 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. Genereringen af mellemkode kan prøve at lade additionsoperationer bruge samme register til argument og resultat. I figur 6.3 i Basics of Compiler Design betyder det at man i reglerne for unop og binop ikke genererer en ny mellemkodevariabel (place 1 ) for første argument, men i stedet genbruger den nedarvede (place). Dette kræver dog en modifikation af genereringen af tildelingssætninger i figur 6.5, da man ikke kan bruge destinationsvariablen som place, da place med ovennævnte modifikation kan overskrives inden en brug af variablen i udtrykket. I stedet skal en ny place genereres, og værdien i denne kopieres over i variablen til sidst. Dette giver så en ekstra kopiinstruktion ved tildelinger, så man kan evt. bruge den oprindelige oversættelse i de situationer, hvor venstresidevariablen ikke forekommer på højresiden. Alternativt kan man lade registerallokatoren forsøge at allokere samme register til de variabler, der bruges som resultat og første argument til en additionsoperation. Dette kan gøres med biased colouring, som

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 11 af 17 omtalt i afsnit 8.7.1 i Basics of Compiler Design. Hvis registerallokering sker på det symbolske maskinsprog (assemblerkoden), kan biased colouring bruges til at fjerne overflødige kopiinstruktioner efter, at de er genereret. 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. Vi ser på de forskellige mulige tilfælde: Hvis p er falsk i p && (q && r) udregnes (q && r) ikke. I (p && q) && r udregnes q ikke, og (p && q) giver værdien false. Dermed udregnes heller ikke r. Hvis p er sand i p && (q && r), udregnes (q && r). Hvis q er falsk, udregnes r ikke. Hvis p er sand og q er falsk, giver (p && q) værdien false. Dermed udregnes r heller ikke i (p && q) && r. Hvis både p og q er sande, udregnes r i begge tilfælde, og værdien af r er hele udtrykkets værdi. b) Vis koden for p && (q && r) jvf. figur 6.8 i Basics of Compiler Design. I det yderste kald til T rans 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 T rans Cond for p, q og r.

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 12 af 17 T rans Cond (p, l 3, l 2, vtable, ftable) ++[LABEL l 3 ]++ T rans Cond (p, l 4, l 2, vtable, ftable) ++[LABEL l 4 ]++ T rans Cond (p, l 1, l 2, vtable, ftable) c) Vis koden for (p && q) && r under samme forudsætninger som i delspørgsmål b. T rans Cond (p, l 4, l 2, vtable, ftable) ++[LABEL l 4 ]++ T rans Cond (p, l 3, l 2, vtable, ftable) ++[LABEL l 3 ]++ T rans Cond (p, l 1, l 2, vtable, ftable) d) Sammenlign koden fra delspørgsmål b og c. Fremgår associativiteten klart? Koden er ens pånær navngivning af labels, så associativiteten fremgår ret tydeligt.

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 13 af 17 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? Antal klokcykler: Hent/gem ordrer: 3 10 6 1.7 = 5.1 10 6 Hopordrer: 2 10 6 + 500000 = 2.5 10 6 Andre ordrer: 10 7 3 10 6 2 10 6 = 5.0 10 6 Antal klokcykler ialt: (5.1 + 2.5 + 5.0) 10 6 = 12.6 10 6 (eller 12.6 mio. klokcykler). b) Hvad er udførelsestiden? Udførelsestiden er 12.6 10 6 /500 10 6 = 12.6/500 = 0.0252s = 25.2ms. 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.

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 14 af 17 I bedste tilfælde kan alle hoporder komme ned på et CPI på 1.0, dvs. at der ikke bliver tabt nogen klokcykler i forbindelse med hop. Det samlede antal udførte klokcykler bliver derfor 12.6 0.5 = 12.1 mio. klokcyckler eller en besparelse på 0.5/12.6 3.97%. 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? Disse sekvenser kunne tyde på, at programmet ofte læser og skriver større blokke fra lageret ad gangen. Dette kan ses af ovenstående ved at adressen går et ord frem efter hver hent/gem ordre. 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. Fordele: En udførelse af to ordrer som en ordre giver mulighed for en bedre ydelse, idet de to ordrer (teoretisk) kan udføres i løbet af en klokcyklus. Ulemper: Tilføjelse af ordrer til arkitekturen kan give problemer med at holde klokfrekvensen oppe. Man kan altså risikere, at klokfrekvensen falder, hvilket kan resultere i lavere ydelse generelt. Desuden er det principielt og erfaringsmæssigt forkert på moderne arkitekturer at implementere komplekse ordrer, der kan simuleres ved en eller flere simplere ordrer. Man bryder altså med det som hele RISC arkitekturen som den beskrevne arkitektur netop er et godt eksempel på er bygget over, nemlig et simpelt og enkelt ordresæt.

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 15 af 17 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. De væsentlige ændringer i forhold til en sw ordre er som følger: IF Ingen ændringer. DE Der vælges en indkodning af den nye ordre og denne afkodes i kontrol-muxen. De to registre, register1 og register2, udlæses som sædvanligt fra registerbanken. EX ALUen beregner register2 + value ligesom for en sw ordre. Desuden videreføres register2 også udenom ALUen til EX/MEM pipeline registret. MEM Adressen angivet ved register2 benyttes ved skrivning af register1 til lageret. WB Resultatet af register2 + value skrives tilbage til register2. 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.

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 16 af 17 En lignende lwaddi skulle udføre dette: Ordet på adressen angivet ved register2 indlæses og skrives til register1. 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. De væsentlige ændringer i forhold til en lw ordre er som følger: IF Ingen ændringer. DE Der vælges en indkodning af den nye ordre og denne afkodes i kontrol-muxen. Register register2 udlæses som sædvanligt fra registerbanken. EX ALUen beregner register2 + value ligesom for en lw ordre. Desuden videreføres register2 også udenom ALUen til EX/MEM pipeline registret. MEM Ordet på adressen angivet ved register2 hentes fra lageret. WB Resultatet af indlæsningen fra lageret skrives tilbage til register1 samtidig med at register2 + value skrives tilbage til register2. Det bemærkes, at dette kræver en ekstra skriveport til registerbanken, hvilket er en væsentlig ændring, også i forhold til swaddi som ikke kræver dette. 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.

Vejledende løsning til skriftlig eksamen juni 2003 i Datalogi 1E side 17 af 17 I forhold til opgave 4.1 er 0.7 3 10 6 = 2.1 10 6 addi ordrer, hver med et CPI på 1.0 blevet fjernet helt. Altså har vi sparet det samme antal klokcykler. Derfor bliver udførelsestiden: (12.6 2.1)/450 0.0233s = 23.3ms.