Computerarchitectuur en systeemsoftware: verschil tussen versies
Examenvragen CASS |
|||
Regel 7: | Regel 7: | ||
Zie ook (in examens en in de liefde is alles toegestaan) de VTK-site: https://www.vtk.be/examenvragen/vak.html?vakId=H1P5 | Zie ook (in examens en in de liefde is alles toegestaan) de VTK-site: https://www.vtk.be/examenvragen/vak.html?vakId=H1P5 | ||
= 17 januari 2008 = | |||
==Theorie== | |||
#Leg in detail uit hoe virtueel geheugen in elkaar zit. Wat heeft virtueel geheugen te maken met multiprogrammatie en met scheduling? Geef ook jouw definitie van multiprogrammatie en scheduling. | |||
#Leg uit (5 van de 6): ENIAC, frame pointer, 2-complement voorstelling, data hazard en SATA | |||
==Oefeningen== | |||
OEFENING 1: | |||
*Give the binary representation of the following numbers: 654,1024,47,1492 | |||
*Represent the following in 16 bits two's complement: 512, -256, 1238, 95, -96 en -321 | |||
*Represent the following number in IEEE 754, 32 bit precession: 203,15625 (10 %) | |||
OEFENING 2: | |||
*Consider a direct-mapped cache with a 5-words block size and a total size of 20 words that is initially empty. Consider the following sequence of addresses, given as word addresses: 0,7,2,3,25,8,26,26. Label each of these addresses as a hit or a miss. | |||
*Consider a 2-way set-associative cache with a 3-word block size and a total size of 24 words that is initially empty. The cache uses a LRU strategy. Consider the following sequence of addresses, given as word adresses: 0,13,2,7,12,8. Label each of these addresses as a hit or a miss. (10%) | |||
OEFENING 3: | |||
*Translate the following code to MIPS assembly. The alloc function allocates a chunk of memory of size byes in the heap. "void * " is the type of an address in memory. (10 %) | |||
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ | |||
void * top_heap = 0x10010000; | |||
void * alloc(unsigned int size) { | |||
void * temp = top_heap; | |||
top_heap += size; | |||
return temp; | |||
} | |||
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ | |||
OEFENING 4: | |||
*Typical translation of object file into a executable file (15 %) | |||
OEFENING 5: | |||
*Translate the following program into MIPS assembly (55 %) | |||
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ | |||
int random_seed = 10; | |||
int myRand(){ | |||
random_seed = random_seed * 1103515245 + 12345; | |||
return (unsigned int)(random_seed / 65536) % 32768; | |||
} | |||
int strlen(char * string){ | |||
int len = 0; | |||
while(string[len] != 0){ | |||
len++; | |||
} | |||
return len; | |||
} | |||
void mixName(char * name){ | |||
int i = 0; | |||
for(i=0; i < strlen(name); i++){ | |||
int dest = myRand() % strlen(name); | |||
char temp = name[dest]; | |||
name[dest] = name[i]; | |||
name[i] = temp; | |||
} | |||
} | |||
int main() { | |||
char name = "raymond"; | |||
mixName(name); | |||
printf("%s", name); | |||
return 0; | |||
} | |||
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ | |||
= 24 januari 2007, 13u = | = 24 januari 2007, 13u = |
Versie van 17 jan 2008 11:16
Inleiding
CASS is een vak dat gegeven wordt bij onze beste vrienden de Burgerlijk Ingenieurs, en dat dus zeer weinig winezen volgen. Het is een verplicht vak voor wiskunde en fysica afstudeerrichting informatica.
Het examen bestaat uit 2 delen: het eerste stuk is open boek en bestaat uit oefeningen, het tweede stuk is gesloten boek en is theorie.
Voor de oefeningen is er te weinig tijd. Werk dus door en stel uw prioriteiten. Voor de theorie is er veel schrijfwerk (reken op een 10 bladzijden tekst die je moet schrijven), en moet je alles uit de cursus kunnen combineren.
Zie ook (in examens en in de liefde is alles toegestaan) de VTK-site: https://www.vtk.be/examenvragen/vak.html?vakId=H1P5
17 januari 2008
Theorie
- Leg in detail uit hoe virtueel geheugen in elkaar zit. Wat heeft virtueel geheugen te maken met multiprogrammatie en met scheduling? Geef ook jouw definitie van multiprogrammatie en scheduling.
- Leg uit (5 van de 6): ENIAC, frame pointer, 2-complement voorstelling, data hazard en SATA
Oefeningen
OEFENING 1:
- Give the binary representation of the following numbers: 654,1024,47,1492
- Represent the following in 16 bits two's complement: 512, -256, 1238, 95, -96 en -321
- Represent the following number in IEEE 754, 32 bit precession: 203,15625 (10 %)
OEFENING 2:
- Consider a direct-mapped cache with a 5-words block size and a total size of 20 words that is initially empty. Consider the following sequence of addresses, given as word addresses: 0,7,2,3,25,8,26,26. Label each of these addresses as a hit or a miss.
- Consider a 2-way set-associative cache with a 3-word block size and a total size of 24 words that is initially empty. The cache uses a LRU strategy. Consider the following sequence of addresses, given as word adresses: 0,13,2,7,12,8. Label each of these addresses as a hit or a miss. (10%)
OEFENING 3:
- Translate the following code to MIPS assembly. The alloc function allocates a chunk of memory of size byes in the heap. "void * " is the type of an address in memory. (10 %)
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
void * top_heap = 0x10010000;
void * alloc(unsigned int size) {
void * temp = top_heap; top_heap += size; return temp;
} $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
OEFENING 4:
- Typical translation of object file into a executable file (15 %)
OEFENING 5:
- Translate the following program into MIPS assembly (55 %)
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
int random_seed = 10;
int myRand(){
random_seed = random_seed * 1103515245 + 12345; return (unsigned int)(random_seed / 65536) % 32768;
}
int strlen(char * string){
int len = 0; while(string[len] != 0){ len++; }
return len; }
void mixName(char * name){
int i = 0; for(i=0; i < strlen(name); i++){ int dest = myRand() % strlen(name); char temp = name[dest]; name[dest] = name[i]; name[i] = temp; }
}
int main() {
char name = "raymond";
mixName(name); printf("%s", name); return 0; }
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
24 januari 2007, 13u
Oefeningen
- Geef de toestand van de stack bij het begin van de volgende methodes. Er waren een aantal verschillende gevallen, zoals declaratie van lokale variabelen (int, char), character arrays, pointers naar globale character array, ...
- Zeg bij elk van volgende opeenvolging van memory reads of de cache een hit of een miss zal geven. Dit was opgesplitst in 3 stukken: een direct mapped cache met blokken van 1 word, een direct mapped cache met blokken van 2 words en een 3-way set associated cache met blocks van 2 words.
- Gegeven 2 object files (een main en een hulpmethode), vul in een tabel in met het uiteindelijke gelinkte programma. Analoog aan boek pagina 109, 'linking object files'.
- Een C methode (merge voor mergesort) is gegeven, zet om in MIPS. Dit was de grootste vraag en stond op de meeste punten.
- Gebruik de methode uit de vorige vraag om een volledige mergesort te schrijven (hierbij kwam dus nog eens recursiviteit kijken). De C code was gegeven.
Theorie
- Waarom is computerarchitectuur belangrijk voor een softwareontwerper? Geef uitgebreid antwoord, geef concrete voorbeelden, blabla, betrek heel de cursus in het antwoord.
- Verklaar 5 van de volgende 6 begrippen. Wees volledig: waar wordt het gebruikt, wanneer, voor-/nadelen, alternatieven, enz : lader, data hazards, interrupt, capacity miss bij caches, RAID 3, shortest job first.