Datorarkitektur I Tentamen Lördag 10 April 2010 Ekonomikum, B:154, klockan 09:00 14:00 Examinator: Karl Marklund 0704 73 32 17 karl.marklund@it.uu.se Tillåtna hjälpmedel: Penna Radergummi Linjal Följande gäller: Du får endast skriva dina svar på avsedd plats i detta häfte (linjerat område). Observera att lösningar som inte uppfyller kravet ovan ej kommer att rättas. Du får ej skriva dina lösningar med röd färg. Lösningar som är skrivna med röd färg kommer inte att rättas. Skrivningstid: 5 timmar Vid inlämning Efternamn: Förnamn: Personnummer (10 siffror): Kurs: IT (1DT038) Distans (1DT016) Fristående (1DT016) Fråga Vid rättning Din poäng Maxpoäng 1 Grundläggande begrepp 11 2 Aritmetik 5 3 MIPS-instruktioner 4 4 Minne 5 5 Cache 6 6 Datapath 4 7 MIPS-assembler 5 8 Exceptions och Interrupts 4 9 Pipelining 6 Summa 50 Gräns för godkänt 25 Betyg Termin då jag först registrerades på kursen: Klockslag för inlämning: The question of whether computers can think is just like the question of whether submarines can swim. Edsger W. Dijkstra
1 Grundläggande begrepp En dator kan delas upp i olika funktionella enheter. Rita en figur där den inbördes relationen mellan de funktionella enheterna Register, ALU, CPU, Minne, Kontrollenhet och Cache framgår. Rita inom streckat område (5p) Förklara kortfattat funktionen hos följande enheter: Register: ALU: CPU: Sida 2 av 13
Minne (arbetsminne): Kontrollenhet: Cache: Sida 3 av 13
2 Aritmetik Låt A = 0010 10112 vara ett binärt tal. Ange talet A på decimal form: A10 = Ange talet A på hexadecimal form: A16 = Ange talet -A med hjälp av 8 bitars två-komplement: -A2 = Som ett steg vid representation av flyttal med IEEE 754 normaliseras talet. Förklara vad normalisering är och varför normalisering används: (2p) Sida 4 av 13
3 MIPS-instruktioner Vad menas med att MIPS är en så kallad RISC architecture? (2p) Ett exempel på en så kallad immediate instruktion i MIPS är: addi rd, rs, imm Ange två orakser till varför det i MIPS finns en gräns på hur stor immediatekonstanten imm kan vara? Orsak 1: Orsak 1: Sida 5 av 13
4 Minne Både data och instruktioner lagras som binära tal i minnet. I MIPS är minnet uppdelat i ett stort antal celler. Varje cell (minsta adresserbara enhet) rymmer N stycken bitar, hur många bitar rymmer varje cell. N = En samling av N bitar kallas för: I MIPS kallas en samling av 4xN bitar för: Redogör i text och figur för skillnaderna mellan little endian och big endian: (2p) Rita inom streckat område Sida 6 av 13
5 Cache Vid mappning av en adress till en plats i ett direktmappat cache delas adressen upp i index och tag. Vad menas med index: Vad menas med tag och varför behövs detta: Antag ett direktmappat cache med 8 olika platser, varje plats rymmer lika många bitar som den minsta adresserbara enheten (se fråga 4). Visa hur adressen A = 0x13C delas upp i index och tag: Index = Tag = Antag att vi ändrar så att varje plats i exemplet ovan kan rymma 4 gånger så många bitar som tidigare. Visar hur detta påverkar uppdelningen av index och tag. Index = Tag = Sida 7 av 13
6 Datapath I figuren nedan finns en schematisk bild av en datapath för MIPS. För att styra funktionen används bland annat fyra stycken multiplexrar (A, B, C och D). Förklara varför multiplexer A behövs? Förklara till vad ALUn används vid en load-instruktion? Sida 8 av 13
I bilden över en single cycle datapath för MIPS ovan återfinns förutom ALUn två stycken adderare. Varför kan inte ALUn användas för att utföra dessa additioner? Vilket problem med en single-cycle-implementation försöker man lösa genom en multi-cylcleimplemenation av en datapath för MIPS. Sida 9 av 13
7 MIPS-assembler Nedan återfinns kod för en subrutin i MIPS-assembler. På några ställen har dock text fallit bort. Färdigställ subrutinen genom att skriva på linjerna på raderna markerade med A, B, C och D. ############################################################################ # DESCRIPTION: Checks wether or not two integer arrays A and B are equal. # # INPUT: $a0 - Address to first element of array A. # # $a1 - Address to first element of array B. # # $a2 - Size of arrays, i.e. number of elements to compare. # # OUTPUT: $v0-1 if the arrays are equal, otherwise 0. # ############################################################################ array_equal: li $v0, 1 # Initialize result R = 1 = true/equal li $t0, 0 # Initialize element counter i = 0 for_all_elements: beq $t0, $a2 end_for_all_elements $t2, $t0, 2 # i*4 ### A ### add $t1, $a0, $t2 # A + i*4 $t3, # Element a = A[i] ### B ### add $t1, $a1, $t2 # B + i*4 $t4, # Element b = B[i] ### C ### $t3, $t4, # A[i] =?= B[i] ### D ### (2p) addi $t0, $t0, 1 # i++ j for_all_elements # Next element not_equal: li $v0, 0 # Result R = 0 (arrays not equal) end_for_all_elements: jr $ra # Return to caller Sida 10 av 13
8 Exceptions och Interrupts Beskriv kortfattat vad som sker vid ett exception/interrupt samt ett subrutinanrop genom att i förkekomande fall beskriva hur registren PC, RA, EPC och CAUSE används. Register Exception/Interrupt (2p) Subroutine Call (2p) PC RA EPC CAUSE Sida 11 av 13
9 Pipelining I samband med pipelining kan olika problem (hazards) uppstå. Ett sådant problem är en så kallad datahazard. Förklara vad detta innebär. Det finns flera andra typer av pipeline hazards. Namge ytterligare en hazard samt ge ett exempel på när detta inträffar. -hazard Exempel Sida 12 av 13
En datapath för MIPS med pipelining visas i figuren nedan. Pipelinen består av 5 steg: Instruction Fetch, Instruction Decode, Execution, Memory, Write-Back. 5 Olika instruktioner befinner sig i pipelinen. IF/ID, ID/EX, EX/MEM och MEM/WB betecknar hårdvara som inte återfinns i en single cycle datapath. Vad är detta för något och varför behövs denna hårdvara? (3p) Typ av hårdvara: Denna hårdvara behövs för att: (2p) Sida 13 av 13