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



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

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

Oversættere / Datalogi 1E

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

MIPS, registerallokering og MARS

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

Maskinsprog. Martin Zachariasen, DIKU. Programmer og ordrer. Ordretyper. Operander og deres placering. Ordreformat. Procedurekald. Andre arkitekturer

Skriftlig eksamen i Datalogi

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

DM13-1. Obligatoriske Opgave - Kredsløbs design

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse.

Et udtryk på formena n kaldes en potens med grundtal a og eksponent n. Vi vil kun betragte potenser hvor grundtallet er positivt, altså a>0.

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

Repræsentation af tal

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Fagets IT Introduktion til MATLAB

Repræsentation af tal

Øvelse 10. Tobias Markeprand. 11. november 2008

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

Eksamen dcomnet 2012Q4. Årskortsnummer Navn

Danmarks Tekniske Universitet

Dat1E K1-1 - En pipelinet mikroarkitektur. Espen Højsgaard Rune Højsgaard Christian Iversen

Repræsentation af tal

Eksamensopgaver datalogi, dlc 2011 side 1/5. 1. Lodtrækningssystem

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

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

Med TI-89 / TI-92 Plus kan du også sammenligne eller manipulere binære tal bit for bit.

DM507 Algoritmer og datastrukturer

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Abstrakte datatyper C#-version

Skriftlig Eksamen Beregnelighed (DM517)

DM507 Algoritmer og datastrukturer

BASE. Besvarelse til individuel skriftlig test

Grundlæggende køretidsanalyse af algoritmer

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

Algoritmer og Datastrukturer 1

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

CPUer og maskinkode DM534. Rolf Fagerberg

Københavns Universitet, Det naturvidenskabelige Fakultet. Afleveringsopgave 1

DM507 Algoritmer og datastrukturer

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

Computerarkitektur Eksamen 2014Q3. Niels Olof Bouvin. Studienummer Navn

Eksamen dcomnet Q2/2010. Navn

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

Eksamen Computerarkitektur 2013Q4. Niels Olof Bouvin. Studienummer Navn

Programmering i C. Lektion december 2008

Programmering for begyndere Lektion 2. Opsamling mm

Eksamensopgaver i DM17, Januar 2003

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Eksamensopgaver datalogi, dl/vf 2010 side 1/5. 1. Lodtrækningssystem

Boolesk Algebra og det binære talsystem - temahæfte informatik. Oprindelse.

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Transkript:

Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen torsdag den 3. juni 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. 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 torsdag d. 3. juni 2004 i Datalogi 1E side 1 af 7 Opgave 1: Arkitektur (60 min.) Spørgsmål 1.1 (25 min.) En rumbelysning L er udstyret med en lysføler M (for mørke) og en bevægelsesdetektor F (for føler) samt elektronik, der bl.a. indeholder et 2-bit register R = (R1, R0). Med et vist tidsinterval opdateres registerværdien og lyset tændes (L = 1) eller slukkes (L = 0). Hvis der ikke er mørkt (M = 0) skal lyset være slukket. Hvis der er mørkt (M = 1) og der registreres en bevægelse (F=1) så tændes lyset og registeret initialiseres til værdien R = (0, 0). Registeret angiver hvor mange tidsenheder, der er gået uden detektion af bevægelse, siden lyset sidst blev tændt. Når registerværdien bliver 3 (R = (1,1)) slukkes lyset. a) Opstil sandhedstabellen for L, R1 og R0 som funktion af M, F, R1 og R0. b) Angiv optimerede logiske udtryk for for de 3 værdier L, R1, og R0. Spørgsmål 1.2 (15 min.) En sædvanlig klokstyret S-R flip-flop (se figur) giver en udefineret logisk værdi hvis både S (Set) og R (Reset) -signalerne er høje (logisk 1). I lærebogen (se evt. Hennesey og Patterson side B22-24) beskrives en D flip-flop, der ikke har samme problem. Et alternativ er en såkaldt J-K flip-flop (se figur). R Q Clock S Q Klokstyret S R flip flop K Q Clock J Q Klokstyret J K flip flop

Skriftlig eksamen torsdag d. 3. juni 2004 i Datalogi 1E side 2 af 7 a) Opskriv sandhedstabellen for en J-K flip-flop og redegør for funktionsmåden i forhold til en S-R flip-flop. Spørgsmål 1.3 (20 min.) Betragt følgende to bitmønstre (7 bit): A: 0110110 B: 1001011 Angiv de decimale værdier af A og B hvis disse repræsenterer: a) Heltal uden fortegn. b) Heltal i 2-komplement. c) Heltal i bias-63 notation. Betragt nu de to decimaltal: C: 12.5 D: 0.0625 d) Angiv det bitmønster hvormed tallene C og D repræsenteres i IEEE 754- standarden for 32-bit flydende tal. e) Beskriv trinene ved addition af repræsentationerne af C og D, og angiv bitmønsteret for resultatet.

Skriftlig eksamen torsdag d. 3. juni 2004 i Datalogi 1E side 3 af 7 Opgave 2: Grammatikker og automater (60 min.) Spørgsmål 2.1 (17 min.) Vi betragter talord for heltal i firetalssystemet. De kan beskrives med det regulære udtryk [0 3] +. Bemærk at den tomme tegnfølge ikke er et talord. Vi vil nu se på delmængder af disse talord: a) Skriv et regulært udtryk eller en NFA (eget valg), der beskriver talord i firetalssystemet, hvor cifrene kommer i strengt aftagende orden, dvs. at hvert ciffer er strengt mindre end det foregående. Vink: Husk at udelade den tomme tegnfølge. b) Skriv et regulært udtryk eller en NFA (eget valg), der beskriver talord i firetalssystemet, hvor cifrene kommer i svagt aftagende orden, dvs. at hvert ciffer er mindre end eller lig med det foregående. Vink: Husk at udelade den tomme tegnfølge. Spørgsmål 2.2 (43 min.) Betragt følgende grammatik over alfabetet {a}: A a A aaa a) Beskriv i ord det sprog, som genereres af grammatikken. b) Påpeg tvetydighed i grammatikken ved at angive en tegnfølge, der har mere end et syntakstræ. c) Lav en SLR syntaksanalysetabel for grammatikken. d) Da grammatikken er tvetydig, er der konflikter i tabellen. Kan man resolvere disse konflikter ved at fjerne aktioner (som ved operatorprecedenserklæringer) uden at man dermed ændrer det genkendte sprog? Begrund svaret.

Skriftlig eksamen torsdag d. 3. juni 2004 i Datalogi 1E side 4 af 7 Opgave 3: Oversætterteknik (60 min.) Spørgsmål 3.1 (23 min.) Figur 7.1 i Basics of Compiler Design viser kodegenerering for IF-THEN-ELSE instruktioner, hvor sammenligningsoperatoren er = eller <. a) Tilføj kodegenerering for hver af instruktionerne IF r s r t THEN label t ELSE label f IF r s > r t THEN label t ELSE label f IF r s r t THEN label t ELSE label f Du må bruge MIPS instruktionerne add, addi, beq, bne, slt, slti og j (men du behøver ikke at bruge dem allesammen). Lav kun kode for det generelle tilfælde, hvor ingen af de to labels efterfølger IF-THEN-ELSE instruktionen. b) Mellemkoden tillader også sammenligning mellem en variable og en konstant. Lav på samme måde som i delspørgsmål a kode for hver af instruktionerne Spørgsmål 3.2 (15 min.) IF r s = k THEN label t ELSE label f IF r s k THEN label t ELSE label f IF r s < k THEN label t ELSE label f IF r s > k THEN label t ELSE label f IF r s k THEN label t ELSE label f IF r s k THEN label t ELSE label f Figur 9.7 i Basics of Compiler Design viser en opdeling af 16 registre i caller-saves og callee-saves. Denne opdeling er tænkt at være den samme for alle funktioner. a) Beskriv kort potentielle problemer ved at bruge en opdeling, der varierer fra funktion til funktion, i stedet for at bruge den samme opdeling for alle funktioner.

Skriftlig eksamen torsdag d. 3. juni 2004 i Datalogi 1E side 5 af 7 Spørgsmål 3.3 (22 min.) Afsnit 6.8.2 i Basics of Compiler Design viser en metode til oversættelse af flerdimensionale tabeller af 32-bit heltal, hvor tabellen bliver lagt rækkevis eller søjlevis ud i lageret og man beregner adressen for et index med multiplikation og addition. En alternativ metode til oversættelse af flerdimensionale tabeller er at lave tabeller af tabeller. F.eks. vil en todimensional M N tabel implementeres som en en-dimensional tabel med pegepinde til M forskellige en-dimensionale tabeller af størrelse N. a) Vis mellemkode for sætningen x := a[i][j] ved brug af denne metode (hvor a er en tabel af 32-bit heltal). Antag at x, i og j ligger i mellemkodevariabler med samme navn, og at mellemkodevariablen a indeholder baseadressen for første dimension af tabellen a. Brug evt. ekstra mellemkodevariabler. b) Angiv oversætterskema for Trans Index ved brug af denne metode. Antag at symboltabellens værdi for en tabelvariabel er baseadressen for første dimension (størrelserne af dimensionerne er ikke nødvendige, medmindre man skal lave indekscheck). Index er ligesom i bogen givet ved grammatikken Index id[exp] Index Index[Exp] og Trans Index skal (ligesom i den oprindelige version) returnere et par af kode til beregning af adressen for et element samt en mellemkodevariabel, der indeholder den beregnede adresse. Elementerne i tabellen er 32-bit heltal.

Skriftlig eksamen torsdag d. 3. juni 2004 i Datalogi 1E side 6 af 7 Opgave 4: Datavej og kontrol (60 min.) Denne opgave omhandler simulation, implementation og anvendelse af variable venstre-skift i MIPS. Et (binært) tal venstre-skiftes k pladser ved at flytte alle bit k pladser til venstre, og derefter indsætte k nuller på de tomme pladser til højre for tallet. Eksempel: Venstre-skift af 1001 med 3 pladser giver resultatet 1001000. Variabelt venstre-skift understøttes af følgende MIPS-ordre: sllv $rd, $rt, $rs Denne ordre tager indholdet af register $rt, og venstre-skifter dette tal det antal pladser som er angivet ved register $rs (det antages at $rs indeholder et tal imellem 0 og 31). Resultatet gemmes i register $rd. Ordren er en R-type ordre med opcode=0 og function=000100 (binært). I det følgende tager vi udgangspunkt i enkelt-cyklus datavejen, som er beskrevet i Patterson & Hennessy, kap. 5.3. Specielt vil figur 5.29 blive benyttet som reference i det efterfølgende. Bemærk at den i figur 5.29 givne datavej ikke understøtter ordren sllv. Spørgsmål 4.1 (20 min.) Vi ønsker først at simulere variabelt venstre-skift ved anvendelse af datavejen i figur 5.29, med den antagelse at datavejen er udvidet til at understøtte addi. Antag at vi ønsker venstre-skifte register $s0 et antal pladser som er angivet ved register $s1. Resultatet skal placeres i register $s2. a) Skriv et stykke assembler-kode, der udfører det ønskede; registrene $s0 og $s1 må ikke ændres, men det er tilladt at benytte register $t0 som temporært register. b) Vi overvejer nu at udvide datavejen i figur 5.29, således at den understøtter sllv ordren. Angiv fordele og ulemper ved hhv. simulation af ordren (som ovenfor) og implementation i hardware. Spørgsmål 4.2 (20 min.) Vi skal nu udvide datavejen i figur 5.29, således at den understøtter sllv-ordren. Dette gøres ved først at udvide ALUen til også at kunne understøtte variable venstre-skift operationer. a) Hvorfor er en udvidelse af ALUen den oplagte løsning? b) Beskriv kort et kredsløb, der kan udføre den variable venstre-skift operation i hardware, dvs. et kredsløb, der tager et 32-bit tal og et 5-bit tal, og

Skriftlig eksamen torsdag d. 3. juni 2004 i Datalogi 1E side 7 af 7 venstre-skifter 32-bit tallet det antal positioner, som er angivet ved 5-bit tallet. Output skal være et 32-bit tal. (Bemærk at det ikke er nødvendigt at angive kredsløbets integration med ALUen iøvrigt.) c) Lad os nu antage, at vi har udvidet ALUen, således at input 100 (binært) til dens ALU kontrol resulterer i udførelse af et variabelt venstre-skift. Angiv overordnet hvordan datavejen i figur 5.29 skal ændres for at understøtte sllv. Spørgsmål 4.3 (20 min.) Variable venstre-skift kan benyttes til at understøtte 2-dimensionelle arrays (eller matricer). En n m matrice A består af n rækker og m søjler. Elementet i række i og søjle j angives ved A[i, j], hvor i {0,1,...,n 1} og j {0,1,...,m 1}. Lad os antage at en matrice A med 32-bit heltal gemmes i lageret som en almindelig array. Det følgende er en funktion, der givet adressen på det første element i matricen (parameter $a0), matricens størrelse k (parameter $a1), rækkenummer i (parameter $a2) og søjlenummer j (parameter $a3), returnerer adressen på elementet A[i, j] via register $v0: madr: sllv $v0, $a2, $a1 add $v0, $v0, $a3 add $v0, $v0, $v0 add $v0, $v0, $v0 add $v0, $v0, $a0 jr $ra a) Kommenter funktionen detaljeret, og forklar, hvordan størrelsen k (parameter $a1) relaterer sig til antallet af rækker n og søjler m i A. b) Vi ønsker nu at foretage hhv. rækkevis og søjlevis iteration over elementerne i A. Angiv hvordan man mere effektivt end ved at anvende ovenstående funktion kan tilgå matricens elementer hhv. ved en rækkevis eller søjlevis iteration.