Digitalteknik och Datorarkitektur Tentamen Tisdag 12 Januari 2010 Pollacksbackens skrivsal, klockan 08:00 13:00 Examinator: Karl Marklund 018 471 10 49 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. You may answer in swedish or english. Skrivningstid: 5 timmar Vid inlämning Efternamn: Förnamn: Personnummer (10 siffror): Kurs: Vid rättning Fråga Din poäng Maxpoäng 1 Digitalteknik 7 2 Aritmetik 4 3 MIPS-instruktioner 4 4 Minne 3 5 Cache 5 6 Datapath 5 7 MIPS-assembler 7 KandDv (1DT033) 8 Exceptions and Interrupts 5 IT (1DT038) EI (1DT016) Distans (1DT016) Äldre variant på IT (1IT050) 9 Input/Output 4 10 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 Digitalteknik En logisk funktion F av de fyra binära variablerna x, y, z och w definieras av sanningstabellen nedan. x y z w F 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 0 xy zw 00 01 11 10 00 01 11 10 Visa med hjälp av Karnough-mappen ovan till höger hur uttrycket för F kan förenklas till: F = Visa hur F kan implementeras genom att färdigställa kretsen nedan. Du får endast använda dig av ledningar och grindar av typ NOT, AND och OR. Sida 2 av 15
En multiplexer kan bland mycket annat användas för att lagra sanningstabeller. Visa hur F kan implementeras genom att använda endast en multiplexer. Du får inte använda några grindar, endast en multiplexer, inputs, outputs och ledningar. Rita din krets inom det markerade området nedan. (2p) Givet att du har tillgång till ett register och en adderare, visa hur du kan konstruera en krets som räknar upp från 0 till 7 för att sedan börja om från 0, dvs sekvensen 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4,... osv. Om du gör antaganden om komponenter mm skall du ange dessa. Rita din krets inom det markerade området nedan. (2p) Antaganden: Sida 3 av 15
2 Aritmetik Låt M10 = 2710 vara ett decimalt tal. Ange M10 = -2710 på 8 bitars binär två-komplementsform: -M2 = Låt T = 0xC5A9 vara ett hexadecimat tal. Ange talet T på binär form: T2 = För att representera flyttal i MIPS delas bitarna upp enligt IEEE 754 på följande sätt: 1 8 23 Sign Epxonent Fraction (aka mantissa) För att tolka bitarna som ett flyttal används följande formel: (-1) sign x (1.fraction) x 2 (exponent - 127) Nedan ges ett exempel på ett 32 bitars tal N. Tolka detta som ett flyttal enligt IEEE 754 (32 bitar) och ange på decimal form. Sign Exponent Fraction 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 N10 = (2p) Sida 4 av 15
3 MIPS-instruktioner Vad menas med att MIPS är en så kallad load-store architecture? Vad menas med att en instruktion är en så kallad pseudoinstruktion? 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 15
4 Minne Minnet i MIPS är uppdelat i ett stort antal celler. Hur stor är en sådan cell, dvs den minsta adresserbara enheten S? S = Antag att ordet T= 0xDEADBEEF lagrats i ett register. När innehållet i registret sedan skall skrivas till minnesadress M kan detta göras på två olika sätt. Ange (hexadecimalt) innehållet i minnet med start på address M efter skrivningen samt ange namnet på den metod som använts. Word at address M Method Name A) B) M M+1 M+2 M+3 M M+1 M+2 M+3 Sida 6 av 15
5 Cache Förklara begreppet locality och varför detta gör införandet av cache användbart. (2p) I diagrammet nedan visas mätdata för miss-rate i relation till block-storlek för olika storlek på cache (4K, 16K, 64K och 256K). Vilka slutsatser kan du dra från diagrammet - motivera. (3p) Sida 7 av 15
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 15
Vilket problem med en single-cycle-implementation försöker man lösa genom en multi-cylcleimplemenation av en datapath för MIPS. I bilden över en single cycle datapath för MIPS ovan återfinns en komponent märkt sing extension. Vad gör denna komponent och varför behövs den? Antag att ett bitmönster E finns lagrat. Om E tolkas utan tecken får vi på hexadecimal notation Eunsigned = 0xAB. E skall skickas på en 16-bitars bus med hjälp av sign extension. Vilket värde (på hexadecimal form) kommer att skickas på bussen? E = Sida 9 av 15
7 MIPS-assembler Vad säger register-konventionen om användandet av s-register? Ge två exempel på varför vi i MIPS behöver stacken. Exempel 1 Exempel 2 Sida 10 av 15
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, othterwise 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 11 av 15
8 Exceptions och Interrupts I kursboken gör man skillnad på exceptions och interrupts. Redogör för dessa skillnader. Exceptions: 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. Exception/Interrupt (2p) PC: RA: EPC: CAUSE: Subroutine calls PC: RA: EPC: CAUSE: Sida 12 av 15
9 Input/Output Vilken nackdel med pollad I/O löses med hjälp av interruptstyrd I/O?: Förklara hur REQUEST- och ACKNOWLEDGE-signaler används vid överföring av data på en buss som använder ett protokol med handskakning. (2p) Fördelen med hand-skakning är: Sida 13 av 15
10 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 14 av 15
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 15 av 15