OBS!! Detta är DEL 2 av tentan. För att få ut denna måste du ha lämnat in del 1. Om du inte fått ut del 1 bör du meddela skrivningsvakten. OBS!!

Relevanta dokument
Exempelsamling Assemblerprogrammering

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik

Digitalteknik och Datorarkitektur

Tentamen Grundläggande programmering

Tentamen i EIT070 Datorteknik

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden?

Programmering, grundkurs, 8.0 hp HI1024, TEN1. Fredagen den 2 mars 2012

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH

Datorsystemteknik för E/D

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12

Stack och subrutiner Programmeringskonventionen

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Tentamen PC-teknik 5 p

Tentamen ges för: Tentamensdatum: Tid:

Tentamen den 18 mars svar Datorteknik, EIT070

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tentamen den 17 mars 2016 Datorteknik, EIT070

HI1024 Programmering, grundkurs TEN

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

Exempeltentamen Datorteknik, EIT070,

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

Programmering i C, 7,5 hp

Datorsystem. Tentamen

Tentamen i Grundläggande Programvaruutveckling, TDA548

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Datorsystemteknik DVGA03 Föreläsning 5

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Datorsystemteknik DVGA03 Föreläsning 8

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

OOP Tentamen

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Tentamen i Grundläggande Programvaruutveckling, TDA548

Tentamen. Datorteknik Y, TSEA28

Övning från förra gången: readword

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 19 oktober 2016, kl 14 18

Programmeringsteknik med C och Matlab

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

ÖH kod. ( en variant av koden används i dag till butikernas streck-kod ) William Sandqvist

Styrteknik: Binära tal, talsystem och koder D3:1

Hantering av textsträngar och talsträngar. William Sandqvist

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

TDDC74 Lab 04 Muterbara strukturer, omgivningar

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

HI1024 Programmering, grundkurs TEN

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Repetition C-programmering

Digitala System: Datorteknik ERIK LARSSON

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Tecken & Strängar. Kapitel 7

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12

En kort text om programmering i C.

Uppgifter till praktiska tentan, del A. (7 / 27)

Lösningar till uppgifterna sätts ut på kurssidan och på WebCT (Gamla Tentor) i dag kl 19. Tentamen i Programmering C, 5p, Distans, övriga,

Datalogi, grundkurs 1. Lösningsförslag till tentamen

CE_O3. Nios II. Inför lab nios2time

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Tentamen EDAF30 Programmering i C++

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Introduktion C-programmering

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Grundläggande datalogi - Övning 1

Tenta i Digitalteknik

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok

Tentamen i Matematik 2: M0030M.

Support Manual HoistLocatel Electronic Locks

Datorsystemteknik för D/E

Extra lab. Nu på fredag kl 8-12 Frivillig Enbart hjälp med projektuppgiften Ingen examination

Föreläsning 10. Pekare (Pointers)

Klassdeklaration. Metoddeklaration. Parameteröverföring

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

TDDC77 Objektorienterad Programmering

Dugga i Grundläggande programmering STS, åk

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Omtentamen i Programmering C, Fri, Kväll,

Tentamen *:58/ID100V Programmering i C Exempel 3

Transkript:

Sid 1 av 8 Datavetenskap Tentamen för DVG A03 Datorsystemteknik, 7,5 hp, del 2 fredag 2009-01-09 kl. 08.15-13.15 Tentamen del 2 består av 4 sidor. Ansvariga lärare: Tillåtna hjälpmedel: Kerstin Andersson och Nils Dåverhög Mats Brorsson Datorsystem och miniräknare. Betygsgränser: Tentamensgränser 3 = 30-39,5 poäng 4 = 40-49,5 poäng 5 = 50-60 poäng Ange alla antaganden! Uttryck dig i fullständiga meningar! Skriv tydligt! (Går inte skriften att läsa är det likställt med ett felaktigt svar.) Börja varje uppgift på ett NYTT papper! Skriv alla dina svar på skrivpapper, skriv INTE på tentan! OBS!! Detta är DEL 2 av tentan. För att få ut denna måste du ha lämnat in del 1. Om du inte fått ut del 1 bör du meddela skrivningsvakten. OBS!! LYCKA TILL! 1 Kodöversättning (5 p) Översätt följande C-satser till MIPS-assembler. a) int vek[50]; main() { int k = 24; } while (k >= 0) { vek[2 * k] = k * k; vek[2 * k + 1] = -k; k = k - 1; }

Sid 2 av 8 b) int tal = 7; main() { if (tal < 0) printf( Talet är negativt. ); else if (tal >= 0 && tal < 10) printf( Talet är ett ental. ); else printf( Talet är 10 eller större. ); } 2 Flyttal (6 p) Utför följande beräkning som flyttal i enkel precision: -76,375 + 10,7 OBS! Omvandla först talen till IEEE-flyttal med enkel precision. 3 Subrutiner (6 p) a) Skriv en rekursiv funktion i MIPS-assembler som beräknar där An = 2 * An-2 + An-1 A0 = 0 och A1 = 1. n som är ett positivt heltal skickas som parameter till funktionen. Skriv enbart funktionen. b) Beräkna A7 manuellt. 4 Cache och pipelining (15 p) a) En dator har en två-nivås cache. Anta att 80 % av minnesreferenserna träffar på första nivån, 15 % träffar på andra nivån och 5 % missar cachen. Accesstiden för cachen på andra nivån är 15 ns och accesstiden för primärminnet är 60 ns. Vad ska accesstiden för cachen på första nivån högst vara för att den procentuella minskningen av medelaccesstiden som cachesystemet ger upphov till relativt att bara använda primärminne ska bli åtminstone 82 %.

Sid 3 av 8 b) Antag en pipelinad maskin med sex exekveringssteg som tar 0,7 ns, 0,4 ns, 0,55 ns, 0,65 ns, 0,6 ns och 0,5 ns. För att klocka in och ut signaler så lägger vi till 0,05 ns. i. Bestäm funktionen Ti(N) som bestämmer hur lång tid det tar att exekvera N instruktioner i en icke-pipelinad maskin. ii. Bestäm funktionen Tp(N) som bestämmer hur lång tid det tar att exekvera N instruktioner i en pipelinad maskin. iii. Rita graferna för Ti och Tp i samma figur (1 <= N <= 20). Nämn några iakttagelser. c) Antag en dator med en cache som rymmer 64 byte. Blockstorleken i cacheminnet är 8 byte. Vilka av följande referenser kommer att träffa respektive missa cacheminnet om man använder direkt adressavbildning? Antag att cachen är tom när du börjar. 4, 16, 32, 22, 80, 70, 76, 22, 36, 44, 20,16, 178, 20, 24 36, 38 d) Rita en beroendegraf över följande kod. Inför nop instruktioner om det behövs för att koden skall fungera. Antag att systemet inte är återkopplat. addi t0,zero,11 addi t1,zero,22 addi t2,zero,18 lui s0,0x8002 ori s0,s0,0x0040 add t3,t0,t1 sub t3,t3,t2 sw t3,0(s0) Kan man ändra om ordningen på instruktionerna så att man slipper införa så många nop:ar men ändå få koden att fungera? 5 C-programmering (8 p) a) Rita figurer som visar hur minnesplatser allokeras och allt som är känt efter varje rad i programmet (0,5 poäng per rad, dvs max 2 p): int *hp1, *hp2, a, b; a = b = 10; hp1 = &a; hp2 = hp1; *hp2 = 15; hp1 = &b; *hp1 = 20; b) Vad skrivs ut av följande sats om den körs efter ovanstående rader (om inte alla data är kända får du istället förklara vad det är): printf( %p %p %p %d %d %d, &b, &hp2, hp2, a, b, *hp1); (3 p)

Sid 4 av 8 c) Skriv koden som gör att alla tal som finns i en array med 10 heltal summeras och summan skrivs ut. För att komma åt de olika talen och summera ska en pekare användas, indexanvändning är ej tillåten. Given kod: #include <stdio.h> #define ANTAL 10 { int main() int tal[antal], sum; /* Här finns kod som lägger in de 10 talen i arrayen. Den behöver du inte skriva*/ /* Men här kommer all kod som gör summeringen och skriver ut resultatet. Den är värd 3 p*/ } return 0;

Sid 5 av 8 Appendix Printf Formatted print to standard output (the console). a0 - address to format string a1..a3 - arguments 1..3 (sp+n) - arguments 4..n Switches: Linking a argument to the text is accompliced by inserting a %-sign followed by a character signifying the desired formate of the argument. Example of possible switches: d- argument is formated to a decimal string s- argument is interpreted as an address to an string. f- argument is formated to a float string "Number %d of %d" li a1, 12345 li a2, 67890 jal printf Will print the string "Number 12345 of 67890" to standard output. putchar Print a character to standard output (the console). a0 - character li a0, A jal putchar Will print character A on standard output. getchar Get a character from standard input (the keyboard).

Sid 6 av 8 v0 - character puts Print a null-terminated string to standard output (the console). a0 - address to string "MIPS is fun!" jal puts Will print the string "MIPS is fun!" to standard output. gets Get a string from standard input (the keyboard). a0 - address to string v0 - address to string.space 128 la jal a0, string1 gets. promstrcmp

Sid 7 av 8 Compare two null-terminated strings. a0 - address to string 1 (s) a1 - address to string 2 (t) v0 - result <0 if s<t, >0 if s>t, 0 if s=t string2: "I'm bigger than you are" "No, you aren't!" la a1, string2 jal promstrcmp Register v0 will have a value less than zero. promstrlen Determine the number of characters in a null-terminated string. a0 - address to string v0 - length of the string "How long am I?" jal promstrlen Register v0 will be 14. install_normal_int

Sid 8 av 8 Install user exception/interrupt handler. The interrupt handler should return non-zero if it processed the interrupt, otherwise it should return zero. The return value is set in register v0. a0 - address to interrupt handler my_handler: # check if interrupt is NOT for me, if so return 0 li v0, 0 j ra # otherwise do something useful and return non-zero li v0, 1 j ra la jal a0, my_handler install_normal_int fptodp Converts arguments from single precision floating-point to double precision. Needs to be called before passing a floating-point argument to printf. a0 - floating-point argument v0 - msb of double precision v1 - lsb of double precision "Number %f" li.s a0, 3.5 jal fptodp move a1, v0 move a2, v1 jal printf Will print the string "Number 3.5" to the standard output.