Tentamen Datorteknik D del 2, TSEA49 Datum 2012-05-24 Lokal TER2 Tid 8-12 Kurskod TSEA49 Provkod TEN1 Kursnamn Datorteknik D del 2 Institution ISY Antal frågor 6 Antal sidor (inklusive denna 10 sida) Kursansvarig Olle Seger Lärare som besöker Olle Seger skrivsalen Telefon under skrivtiden 073-0549145 Besöker skrivsalen Cirka 9 och 11 Kursadministratör Ylva Jernling Tillåtna hjälpmedel Inga Poäng Betyg 41-50 5 Betygsgränser 31-40 4 21-30 3 0-20 U Viktig information För de uppgifter där du måste göra uträkningar är det viktigt att du redovisar alla relevanta mellansteg. Om du i en viss uppgift ska förklara något, tänk på att du gärna får rita figurer för att göra din förklaring tydligare. Uppgifterna i tentan är inte ordnade efter svårighetsgrad. Skriv inga svar i detta häfte! Lycka till!
Fråga 1: Fyra små frågor(13p) (a) (4p) Antag att vi har ett system baserat på processorn 68008. Vid ett tillfälle avläses följande register- och minnesinnehåll: D0 = 12345678 A0 = 00002002 $F0F0 = 56 D1 = 00000002 A1 = 0000F0F0 $F0F1 = BA D2 = 19283746 A2 = 0000F0F2 $F0F2 = 18 D3 = FAAFAA28 A3 = 89410604 $F0F3 = 32 D4 = 55AAAA55 A4 = 78406408 $F0F4 = EE D5 = 12457896 A5 = 11202202 $F0F5 = F1 D6 = BAFF080A A6 = FFFFFFFF $F0F6 = 2C D7 = 00180018 A7 = 00000000 $F0F7 = 20 Vad blir innehållet i destinationsregistret efter att instruktionerna 1) 4) exekverats? 1. MOVE.L #$F0F0,D6 2. MOVE.L $F0F0,D3 3. MOVE.B (A2),D2 4. MOVE.L $2(A1,D1.L),D5 (b) (3p) En Digital SignalProcessor används ofta för att implementera ett digitalt filter enligt formeln: y n = 7 h i x n i, (1) i=0 där x n och y n är in- respektive utsignaler. Talen x n kommer in till DSP:n med takten 44100 Hz och utsignalen y n matas ut med samma takt. Konstanterna h i är filterkoefficienter. Formeln (1) beräknas alltså 44100 gånger i sekunden. Beskriv kortfattat 3 hårdvarutillägg för att snabba upp denna beräkning. (c) (3p) Vad är skillnaden mellan DRAM och SRAM? Nämn minst en bra anledning till att använda DRAM istället för SRAM. Nämn minst en bra anledning till att använda SRAM istället för DRAM. (d) (3p) En dator har tre yttre enheter som begär avbrott på olika avbrottsnivåer. Enhet A begär avbrott på nivå 2, enhet B på nivå 4 och enhet C på nivå 6. Avbrottsrutinen för enhet A tar 2 ms att utföra, avbrottsrutinen för enhet B tar 3 ms och den för enhet C tar 4 ms. Under exekvering av bakgrundsprogrammet ( avbrottsnivå 0 ) kommer vid tidpunkten t = 0 en avbrottsbegäran från enhet A. En millisekund senare (t = 1 ms) begär enhet C avbrott, vid t = 3 ms begär enhet B avbrott och vid t = 6 ms begär enhet C avbrott. Redovisa händelseförloppet i ett tidsschema. Rita tidsschemat på eget papper. (3p)
Solution: (a) 1.D6.L = 0000F0F0 2.D3.L = M(F0F0).L = 56BA1832 3.D2.B = M(F0F2).B = 18 => D2.L = 19283718 4.D5.L = M(F0F4).L = EEF12C20, (b) Man kan säga att formeln är en skalärprodukt, där den ena vektorn är konstant men den andra vektorn får nya värden. Här är några typiska DSP-tillägg: 1. En enhet som multiplicerar och ackumulerar. (MAC) 2. Flera dataminnen, så att två tal kan hämtas i samma klockcykel. Det behövs ju i en skalärprodukt. 3. En speciell loopinstruktion. Vi behöver inte testa i slutet av loopen. 4. Adresseringsmoden postinkrement modulo N, för att hantera en ringbuffert. (c) Förenklat kan man säga att minneselementet i ett SRAM är en transistorlatch, oftast uppbyggd av 6 transistorer. I ett DRAM, däremot, är minneselementet en kapacitans. Endast 1 transistor behövs per minnescell. Det säger sig självt att DRAM kan byggas större än SRAM. DRAM är det helt dominerande primärminnet i datorer i dag. SRAM är snabbare och enklare än DRAM. En bra tillämpning för SRAM är cacheminnen. DRAM kräver en ganska komplicerad controller och kommer till sin rätt bara vid burstacesser (konsekutiva läsningar/skrivningar). (d) t [ms] Nivå 0 2 1 6 5 4 6 6 10 4 12 2 13 0 Fråga 2: Aritmetik(5p) (a) (3p) Konstruera en ALU med hjälp av heladderare, valfria grindar och register. ALU:n ska kunna addera, A + B, och subtrahera, A B, två tvåkomplements fyrabitarstal, A =< a 3 a 2 a 1 a 0 > och B =< b 3 b 2 b 1b 0 >, och ge ifrån sig statussignalerna C, N, Z och V. Noggrant schema krävs för full poäng! (b) (2p) Antag att subtraktionen A B har satt flaggorna. Vilket Booleskt uttryck av en eller flera flaggor avgör om A < B?
Solution: (a) FA = full adder, heladderare. A = a 3 a 2 a 1 a 0 och B = b 3 b 2 b 1 b 0. Genom att sätta ADD/SUB = 0 fås addition A+B. ADD/SUB = 1 ger subtraktion A+( B). Statussignaler N = s 3 Z = s 3 + s 2 + s 1 + s 0 C = c 4 V = c 4 c 3 (b) Enligt uppgiften rör det sig om 2-komplementstal. Det finns då två fall: det blir overflow eller inte: A < B = NV + NV. Observera att bara N inte är korrekt. Fråga 3: Assembler(10p) Nedanstående subrutin utförs av en 68008-processor. START: A: B: C: move.l #0,a0 clr.l d0 clr.l d3 move.w $900,a0 move.b $902,d3 move.l #$1f,d2 move.l (a0)+,d1 btst.l d2,d1 ; bit test. Bit number in d2. beq C addq.l #1,d0 subq.b #1,d2 bpl B ; Branch on PLus subq.b #1,d3 bne A
rts (a) (3p) Vad gör subrutinen? Ange speciellt var in- och utdata finns. (b) (2p) Vad innehåller hela a0 då programmet körts om hexadecimala minnesinnehållet vid subrutinens start är: $900: 09 $901: 10 $902: 03 $903: 06 $904: 99 (c) (2p) Vad innehåller hela d2 och d3 då rutinen körts med indata enligt ovan? (d) (2p) Ange det största värde som kan erhållas i register d0? (e) (1p) En instruktion är onödig och kan tas bort. Vilken? Solution: (a) Programmet räknar antalet ettor i minnessecellerna M(0x910).l, M(0x914).l och M(0x918).l och returnerar summan i d0. (b) a0.l = 0x0000091c. Postinkrement på långord blir uppräkning med 4. (c) d2.b=-1 men d2.l = 0x000000ff och d3.l = 0x00000000. (d) 3 32 = 96 (e) clr.l d3 Fråga 4: Mikroprogrammering(11p) Figuren, på nästa sida, visar uppbyggnaden av en mikroprogrammerbar dator, den välbekanta Olle Roos-datorn. Inom ett klockpulsintervall kan en överföring göras på bussen, t. ex. DR T R En läsning eller skrivning till primärminnet kan genomföras inom ett klockpulsintervall liksom även en operation i ALU:n. En instruktion består av maximalt två minnesord: OP M A där OP-fältet anger typ av operation, M-fältet adresseringsmod och A är ett adressfält eller en konstant. Vissa instruktioner använder enbart det första ordet. M-fältet innehåller tre bitar som markerar adresseringsmod enligt
M Adresseringsmod 000 Absolut 001 Indirekt 010 Indexering med indexregistret XR 011 PC-relativ 100 Omedelbar 101 Underförstådd Adressbuss 2 ADR 1 8 IR OP M 0 1 2 3 4 5 6 7 Databuss +1 1 N Z 15 16 17 PC +1 3 Read 4 Write XR 22 SP 23 DR 5 6 TR ALU K3 14 27 13 19 21 25 28 29 30 31 32 AR+1 AR 1 ADD SUB LOAD 18 20 24 7 26 0 1 2 3 4 5 6 27 28 30 31 32 33 K1 K2 MPC 9 10 12 0 +1 11 Mikrominne AR 39 HR 33 38 SR 34 35 N Z 36 37 36 37 38 39 1 39 I samband med adressmodsfasen beräknas som vi vet effektiv adress, EA. EA placeras i ADR. Hoppinstruktioner placerar dock EA i TR. (a) (5p) Skriv all mikrokod, som behövs för instruktionen JMP d ; PC+2+d -> PC Använd symboler enligt DR TR och siffror. (b) (2p) Figuren visar de tillägg, som måste göras i hårdvaran för att få avbrott att fungera. Beskriv innehållet i nätet K5 mha en sanningstabell.
(c) (3p) Skriv mikroprogram för avbrottsuthoppet, alltså innehållet på adress 60 och framåt i mikrominnet. SP pekar på ledigt utrymme. (d) (1p) Antag att: PC=10,TR=20,AR=30 och HR=40. Vad blir inehållet i dessa register om följande rad i mikroprogrammet exekveras? 17,18,25,27,30,33,38 Solution: (a) Hämtfas. PC pekar på instruktionen. PC->ADR,PC++,MPC++ ; 18,1,17,11 MEM->DR,MPC++ ; 2,3,5,11 DR->IR,MPC++ ; 7,8,11 K2->MPC ; 10 Adresseringsmodfas. PC pekar på byten (=d), som ska adderas till PC. PC->ADR,PC++,MPC++ ; 17,18,1,11 PC->TR,MEM->DR,MPC++ ; 18,25,2,3,5,11 DR->TR,TR->AR,AR->HR,MPC++ ; 7,25,27,32,33,38,11 AR+TR->AR,MPC++ ; 27,30,33,11 HR->AR,AR->TR,K1->MPC ; 39,37,25,9 Exekveringsfas. Hoppadressen finns i TR TR->PC,0->MPC ; 26,13,12 (b) Hopp till mikrokod för uthoppet fås om signalerna avbrott och 12 båda är 1. Alltså avbrott accepteras bara mellan två instruktioner. Signalerna 9,10,11,12 styrs av mikroprogrammeraren. Endast en av dem är 1 åt gången. Nätet K5 har 5 ingångar: Övriga fall kan ha ut=don t care. 9 10 11 12 Avbrott ut 1 0 0 0-2 0 1 0 0-3 0 0 1 0-0 0 0 0 1 0 1 0 0 0 1 1 4 (c) Stacken är av typen postdekrement och för säkerhets skull stackar vi rubbet.
SP->ADR,SP--,MPC++ PC->DR,MPC++ DR->MEM,MPC++ SP->ADR,SP--,MPC++ SR->DR,MPC++ DR->MEM,MPC++ SP->ADR,SP--,MPC++ AR->DR,MPC++ DR->MEM,MPC++ SP->ADR,SP--,MPC++ XR->DR,MPC++ DR->MEM,MPC++ ; push PC ; push SR ; push AR ; push XR ;spärra för fler avbrott,påbörja nästa hämtfas SEI, avbrottsrutinadr.->pc,0->mpc Mikrokoden går att trycka ihop för att spara tid. Vad som ska stackas kan diskuteras. PC och SR måste stackas, självklart. Eftersom OR är en ackumulatormaskin, måste också AR stackas. Det går ju inte att göra någonting utan att använda AR. Programmeraren kan förstås göra det, men får inte glömma bort det. När det gäller XR är det kanske bättre att abrottsrutinen stackar XR, såvida XR används. (d) Alla register klockas samtidigt. PC=11. TR=10. AR=50. HR=30 Fråga 5: Pipelining(6p) Vi är väl förtrogna med processorer med 5-stegs pipeline. Pipelinestegen brukar se ut så här: 1. Hämta instruktion. 2. Läs ut register. 3. Exekvera 4. Accessa minnet/ingenting 5. Skriv tillbaka register Enklare processorer, typ microcontroller, brukar ha en kortare pipeline: 1. Hämta instruktion. 2. Avkoda instruktion. 3. Läs ut register, Exekvera/Accessa minnet, Skriv tillbaka register Eventuellt får du göra egna antaganden om denna pipeline. Kan du snabbt och övertygande reda ut följande frågeställningar:
(a) (2p) Vad medför förkortningen av pipelinen för de villkorliga hoppen? (b) (2p) Vad medför förkortningen av pipelinen för data forwarding? (c) (2p) Det är lockande att också plocka bort avkodningssteget. Vad medför detta? Solution: De två fallen visas i figuren: PC Next PC PC Next PC PM PM IR1 IR1 DECODE DECODE IR2 styr styr REGS REGS ALU ALU IR3 3 steg IR2 2 steg (a) Vi testar med ett pipeline-diagram: PC IR1 IR2 IR3 0 4 ADD 8 JMPN ADD 12 XXX JMPN ADD 20 NOP XXX JMPN 24 SUB NOP XXX Jämfört med lab-datorn funkar den här datorn likadant när det gäller hopp. Instruktionen efter hoppet exekveras och tas hoppet bestraffas vi med en NOP. (b) Eftersom det nya värdet skrivs tillbaka till ett register i samma klockcykel, bortfaller hela problematiken med data forwarding! (c) Se högra halvan av figuren. Detta är arkitekturen för en enkel controller, t ex Atmel AVR. Kritiska vägen för det andra pipelinesteget blir ganska lång, instruktionsavkodning i serie med ALU+register. Den funkar så här (exempelvis): PC IR1 IR2 0 4 ADD 8 JMPN ADD 20 NOP JMPN 24 SUB NOP
Alltså, tagna hopp medför en extra NOP. Fråga 6: Branch Prediction(5p) Föregående uppgift aktualiserar Branch Prediction. Skriv en kortfattad redogörelse för denna teknik. Du bör få med Vad lagras i en Branch Prediction Table? Med vilken teknik implementeras en BPT? Var kopplas BPT:n in? Nämn en situation som är lätt att förutsäga. Solution: 1. I en BPT lagras hoppinstruktionens adress, hoppadressen och hoppstatistik. 2. Lämpligtvis som ett associativt minne. 3. Vid muxen framför PC. Med PC som insignal ger BPT:n ifrån sig nästa PC. 4. Bakåthopp är oftast loopar och vi förutspår att hoppen tas. o-o-o