Lösningsförslag till tentamen i IS1500 Datorteknik

Storlek: px
Starta visningen från sidan:

Download "Lösningsförslag till tentamen i IS1500 Datorteknik"

Transkript

1 Lösningsförslag till tentamen i IS1500 Datorteknik Obs! Dessa lösningsförlag kan vara felakktiga och/eller ofullständ Uppgift 1. Maskinartmetik a) Flyttalet X lagras som Första nollan anger att talet är positivt. Exponentkoden är vilket motsvarar +4 i excess-127-kod =131 Lagrade mantissabitar är ; vi måste lägga till "1," före och får då talet +1, två 2 4 = , två 2 0 = +17,125 b) Z = 8X får samma flyttalskod som X fast exponentkoden ska ökas med 3 eftersom Z är 2 upphöjt till 3 gånger större än X. Hela koden blir då c) Talet Y = 22,250 = ,01 två 2 0 ; Talet måste normaliseras så att det börjar med "1," och då får vi Y = +1, två 2 4 Exponenten 4 lagras i excess-127-kod som , och "1," lagras inte, så hela talet blir d) +22 = två 22 får med negering: invertera alla bitar och addera 1 i minst signifikant position. Resultat: två e) Exponenten 4 ska nu lagras i excess-1023-kod, som = 1027, vilket blir De lagrade mantissabitarna ska ha ytterligare 29 nollor längst till höger. Svar: (där står för 29 ytterligare nollor). Uppgift 2. Assemblerprogrammering för Nios II a) isbcdigit: # 4 bitar i r4 andi r4,r4,0xf # maska fram 4 LSBits cmplti r2,r4,10 # jämför med 10 ret # returhopp från subrutin Man kan såklart göra på andra sätt, t.ex. med villkorligt hopp. b) pointstovalid8bcd: # adress i r4 PUSH r31 # pusha returadressen innan call ldw r4,0(r4) # hämta värdet till r4 call isvalid8bcd # anropa anbefalld funktion POP r31 # återställ sparad returadress ret # returhopp från subrutin Lösningsförslag IS1500 (och IS1200/2G1518) sida 1

2 c) antalvalid8bcd: # adress till vektor i r4, längd i r5 movi r2, 0 # returvärde för tom vektor beq r5,r0,klar # om tom vektor PUSH ra # för att kunna anropa subrutin PUSH r16 # för adress till vektor PUSH r17 # för antalsräknare PUSH r18 # för delresultat mov r16, r4 # kopiera vektoradress mov r17, r5 # kopiera antalsräknare mov r18, 0 # noll hittills loop: mov r4, r16 # kopiera adress till element call pointstovalid8bcd add r18,r18,r2 # räkna upp delresultat addi r16,r16,4 # räkna upp adress subi r17, r17, 1 # räkna ner antalsräknare bgt r17,r0,loop # fortsätt om det finns fler element mov r2, r18 # delresultatet är nu slutresultat POP r18 # återställ sparade register POP r17 POP r16 POP ra klar: ret # returhoppet Uppgift 3. In- och utmatning och avbrott a) ReceiveWord: movia r8,para0 # adress till parallellport ldwio r9,12(r8) # läs Edge Capture Register beq r9,r0,receiveword # om inget nytt, gör om stwio r0,12(r8) # nollställ Edge Capture Register ldwio r2,0(r8) # läs datain-registret ret # returhopp från subrutin b) ReceiveWordNonBlocking: movi r2,-1 # förbered returvärde för ena fallet movia r8,para0 # adress till parallellport ldwio r9,12(r8) # läs Edge Capture Register beq r9,r0,fin # om inget nytt, returnera med förberett värde stwio r0,12(r8) # nollställ Edge Capture Register ldwio r9,0(r8) # läs datain-registret stw r9,0(r4) # spara på angiven plats i minnet movi r2,0 # detta är andra fallet, byt returvärde fin: ret # returhopp från subrutin c) ReceiveInt: PUSHALL # spara alla register som subrutiner får ändra call ReceiveWord # läs indata mov r4,r2 # flytta returvärde till rätt register för inparameter call SaveWord # anropa anbefalld rutin POPALL # återställ sparade register eret # returhopp från avbrottsrutin, alltid med eret Lösningsförslag IS1500 (och IS1200/2G1518) sida 2

3 Uppgift 4. Cacheminnen a) Tidslokalitet innebär att en och samma minnescell läses och/eller skrivs mer än en gång med kort tidsmellanrum. Det finns ingen tidslokalitet (re-use) för läsning/skrivning av data i programmet, eftersom varje element i varje array bara läses eller skrivs en gång och sen aldrig mer. Rumslokalitet innebär att minnesceller med näraliggande adresser läses och/eller skrivs med kort tidsmellanrum. Det finns rumslokalitet (locality) för data i programmet eftersom loopen går igenom alla element i arrayerna x, y och z i tur och ordning och elementen i respektive array är lagrade i rad intill varandra. Arrayelement med näraliggande nummer och följaktligen näraliggande adresser kommer refereras med kort tidsmellanrum. b) Cacheminnet har följande utseende. Cacheminnet har två set med vardera 16 ord. Varje set har 2 rader, och varje rad i ett set innehåller ett block på 8 ord. Avstånd mellan element i x och y med samma arrayindex är 16 ord, vilket är 1 gånger storleken på ett set i cacheminnet. Eftersom 1 är ett heltal, så placeras x[0] och y[0] på Avstånd mellan element i y och z med samma arrayindex är 16 ord, vilket är 1 gånger storleken på ett set i cacheminnet. Eftersom 1 är ett heltal, så placeras y[0] och z[0] på Avstånd mellan element i x och z med samma arrayindex är 32 ord, vilket är 2 gånger storleken på ett set i cacheminnet. Eftersom 2 är ett heltal så kommer x[0] och z[0] att placeras på Läsning av x[0] ger miss; cacheminnet hämtar x[0] till x[7] som placeras på en viss rad i ena cachehalvan. Index-fältet i adressen anger vilken rad, och vi kan anta vänstra cachehalvan eftersom hela cacheminnet är tomt. Läsning av y[0] ger miss; cacheminnet hämtar y[0] till y[7] som placeras på samma rad som x[0], men i ett annat set. rad. Det blir högra cachehalvan, eftersom den vänstra halvan av raden är upptagen av x[0] till x[7]. Skrivning av z[0] ger miss; cacheminnet hämtar z[0] till z[7] som placeras på samma rad som x[0] och y[0]. Nu är det fullt på raden och utbytesalgoritmen LRU används. Blocket med x[0] till x[7] har legat oanvänt längst tid och byts ut mot z[0] till z[7]. Läsning av x[1] ger miss; cacheminnet hämtar x[0] till x[7] som placeras på samma rad som förra gången. Nu är det fullt på raden och utbytesalgoritmen LRU används. Blocket med y[0] till y[7] har legat oanvänt längst tid och byts ut mot x[0] till x[7]. Läsning av y[1] ger miss, LRU används och nu har blocket med z[0] till z[7] legat oanvänt längst tid, så det byts ut. Skrivning av z[1] ger miss, LRU byter ut blocket med x[0] till x[7]. Läsning av x[2] ger miss, LRU byter ut blocket med y[0] till y[7] och så vidare. Vi får inga träffar alls, och hitrate = 0% Lösningsförslag IS1500 (och IS1200/2G1518) sida 3

4 c) Ändrad associativitet till direktmappad (associativitet = 1). Cacheminnet får följande utseende. Antalet rader fördubblas till 4. Det enda set som nu finns i cacheminnet är 32 ord stort. Avstånd mellan element i x och y med samma arrayindex är 16 ord, vilket är 0,5 gånger storleken på ett set i cacheminnet. Eftersom 0,5 inte är något heltal, så placeras x[0] och y[0] på olika rader i cacheminnet, och så vidare för andra arrayindex. Avstånd mellan element i y och z med samma arrayindex är 16 ord, vilket är 0,5 gånger storleken på ett set i cacheminnet. Eftersom 0,5 inte är något heltal, så placeras y[0] och z[0] på olika rader i cacheminnet, och så vidare för andra arrayindex. Avstånd mellan element i x och z med samma arrayindex är 32 ord, vilket är 1 gånger storleken på ett set i cacheminnet. Eftersom 1 är ett heltal, så placeras x[0] och z[0] på Läsning av x[0] ger miss; cacheminnet hämtar x[0] till x[7] som placeras på en viss rad. Index-fältet i adressen anger vilken rad. Läsning av y[0] ger miss; cacheminnet hämtar y[0] till y[7] som placeras på en annan rad än x[0]. Skrivning av z[0] ger miss; cacheminnet hämtar z[0] till z[7] som placeras på samma rad som x[0]. Eftersom cacheminnet är direktmappat så betyder det att x[0] till x[7] tas bort från cacheminnet. Läsning av x[1] ger miss; x[0] x[7] hämtas igen och placeras på samma rad som förut. Då tas z[0] z[7] bort från cacheminnet. Skrivning av z[1] ger miss; cacheminnet hämtar om z[0] till z[7] som placeras på samma rad som förut. Eftersom cacheminnet är direktmappat så betyder det att x[0] till x[7] tas bort från cacheminnet. Läsning av y[2] ger träff. Skrivning av z[2] ger miss. Läsning av x[3] ger miss. Läsning av y[3] ger träff. Skrivning av z[3] ger miss. Läsning av x[4] ger miss. Läsning av y[4] ger träff. Skrivning av z[4] ger miss. Läsning av x[5] ger miss. Läsning av y[5] ger träff. Skrivning av z[5] ger miss. Läsning av x[6] ger miss. Läsning av y[6] ger träff. Skrivning av z[6] ger miss. Läsning av x[7] ger miss. Läsning av y[7] ger träff. Skrivning av z[7] ger miss. Läsning av x[8] ger miss, för nu är blocket slut. Cacheminnet hämtar in x[8] till x[15], som placeras på raden efter x[0] x[7]. På samma sätt ger läsning av y[8] miss, och cacheminnet hämtar y[8] y[15]. Skrivning av z[8] ger miss, och cacheminnet hämtar z[8] z[15] som ska in på samma rad som x[8] x[15]. Mönstret upprepas. Träffmönstret blir: MMM MTM MTM MTM MTM MTM MTM MTM, MMM MTM MTM... Lösningsförslag IS1500 (och IS1200/2G1518) sida 4

5 Hitrate blir 7/24 30% Ändrad associativitet till 4-vägs associativitet. Cacheminnet får följande utseende. Antalet rader halveras, till 1 rad, så att cacheminnet är fullt associativt. Ett set i cacheminnet är nu 8 ord stort. Ett fullt associativt cacheminne behöver ingen analys av avstånd mellan olika minnesceller för att avgöra om det finns konflikter. Läsning av x[0] ger miss; cacheminnet hämtar x[0] till x[7] som placeras i något set. Läsning av y[0] ger miss; cacheminnet hämtar y[0] till y[7] som placeras i något annat set, för det finns lediga platser. Skrivning av z[0] ger miss; cacheminnet hämtar z[0] z[7] som placeras i ett tredje set. Läsning av x[1] ger träff. Läsning av y[1] ger träff. Skrivning av z[1] ger träff. Läsning av x[2] ger träff. Läsning av y[2] ger träff. Skrivning av z[2] ger träff. Läsning av x[3] ger träff. Läsning av y[3] ger träff. Skrivning av z[3] ger träff. Läsning av x[4] ger träff. Läsning av y[4] ger träff. Skrivning av z[4] ger träff. Läsning av x[5] ger träff. Läsning av y[5] ger träff. Skrivning av z[5] ger träff. Läsning av x[6] ger träff. Läsning av y[6] ger träff. Skrivning av z[6] ger träff. Läsning av x[7] ger träff. Läsning av y[7] ger träff. Skrivning av z[7] ger träff. Läsning av x[8] ger miss, för nu är blocket slut. Cacheminnet hämtar in x[8] till x[15], som placeras i cacheminnets sista lediga set. Läsning av y[8] ger miss, och nu är cacheminnet fullt. LRU används; det är blocket med x[0] x[7] som har legat oanvänt längst tid. Det blocket tas bort från cacheminnet, men det gör ju inte så mycket eftersom funktionen calc inte kommer att använda de matriselementen mer. Skrivningen av z[8] ger miss; cacheminnet hämtar z[8] z[15]. LRU används, och det är blocket med y[0] y[7] som har legat oanvänt längst tid. Det blocket tas bort från cacheminnet, men det gör inget för de matriselementen behövs inte längre. Läsning av x[9] ger träff. Läsning av y[9] ger träff. Skrivning av z[9] ger träff, och så vidare. Vi får följande träffmönster: MMM TTT TTT TTT TTT TTT TTT TTT MMM TTT TTT TTT TTT TTT TTT TTT Hittrate = 42/48 = 21/24 = 7/8 = 87,5% d) Halverad storlek till 16 ord. Cacheminnet får följande utseende. Antalet rader halveras, till 1 rad, så att cacheminnet är fullt associativt. Ett set i cacheminnet är nu 8 ord stort. Läsning av x[0] ger miss; cacheminnet hämtar x[0] till x[7]. Läsning av y[0] ger miss; cacheminnet hämtar y[0] till y[7]. Skrivning av z[0] ger miss; LRU används och nu har blocket med x[0] till x[7] legat oanvänt längst tid och byts ut. Lösningsförslag IS1500 (och IS1200/2G1518) sida 5

6 Läsning av x[1] ger miss; LRU används och nu har blocket med y[0] till y[7] legat oanvänt längst tid och byts ut. Läsning av y[1] ger miss, LRU byter ut blocket med z[0] till z[7] och så vidare. Vi får inga träffar alls, och hitrate = 0% Fördubblad cacheminnesstorlek. Cacheminnet får följande utseende. Antalet rader fördubblas till 4 rader. Ett set i cacheminnet är nu 32 ord stort. Avstånd mellan element i x och y med samma arrayindex är 16 ord, vilket är 0,5 gånger storleken på ett set i cacheminnet. Eftersom 0,5 inte är något heltal, så placeras x[0] och y[0] på olika rader i cacheminnet, och så vidare för andra arrayindex. Avstånd mellan element i y och z med samma arrayindex är 16 ord, vilket är 0,5 gånger storleken på ett set i cacheminnet. Eftersom 0,5 inte är något heltal, så placeras y[0] och z[0] på olika rader i cacheminnet, och så vidare för andra arrayindex. Avstånd mellan element i x och z med samma arrayindex är 32 ord, vilket är 1 gånger storleken på ett set i cacheminnet. Eftersom 1 är ett heltal, så placeras x[0] och z[0] på Läsning av x[0] ger miss; cacheminnet hämtar x[0] till x[7] som placeras på en viss rad i ena cachehalvan. Index-fältet i adressen anger vilken rad, och vi kan anta vänstra cachehalvan eftersom hela cacheminnet är tomt. Läsning av y[0] ger miss; cacheminnet hämtar y[0] till y[7] som placeras på en annan rad än x[0]. Skrivning av z[0] ger miss; cacheminnet hämtar z[0] till z[7] som placeras på samma rad som x[0]. men i ett annat set. Det blir högra cachehalvan, eftersom den vänstra halvan av raden är upptagen av x[0] till x[7]. Läsning av x[1] ger träff. Läsning av y[1] ger träff. Skrivning av z[1] ger träff. Läsning av x[2] ger träff. Läsning av y[2] ger träff. Skrivning av z[2] ger träff. Läsning av x[3] ger träff. Läsning av y[3] ger träff. Skrivning av z[3] ger träff. Läsning av x[4] ger träff. Läsning av y[4] ger träff. Skrivning av z[4] ger träff. Läsning av x[5] ger träff. Läsning av y[5] ger träff. Skrivning av z[5] ger träff. Läsning av x[6] ger träff. Läsning av y[6] ger träff. Skrivning av z[6] ger träff. Läsning av x[7] ger träff. Läsning av y[7] ger träff. Skrivning av z[7] ger träff. Läsning av x[8] ger miss, för nu är blocket slut. Cacheminnet hämtar in x[8] till x[15], som placeras på raden efter x[0] x[7]. På samma sätt ger läsning av y[8] miss, och cacheminnet hämtar y[8] y[15]. Skrivning av z[8] ger miss, och cacheminnet hämtar z[8] z[15]. Därefter får vi träffar tills loopen är slut. Träffmönstret blir: MMM TTT TTT TTT TTT TTT TTT TTT, MMM TTT TTT... Hitrate blir 21/24 = 7/8 = 87,5% Lösningsförslag IS1500 (och IS1200/2G1518) sida 6

7 e) Ändrad arraystorlek från 16 ord till 24 ord. Samma figur som i uppgift b) Cacheminnet har två set med vardera 16 ord. Varje set har 2 rader, och varje rad i ett set innehåller ett block på 8 ord. Avstånd mellan element i x och y med samma arrayindex är 24 ord, vilket är 1,5 gånger storleken på ett set i cacheminnet. Eftersom 1,5 inte är något heltal, så placeras x[0] och y[0] på olika rader i cacheminnet, och så vidare för andra arrayindex. Avstånd mellan element i y och z med samma arrayindex är 16 ord, vilket är 1,5 gånger storleken på ett set i cacheminnet. Eftersom 1,5 inte är något heltal, så placeras y[0] och z[0] på olika rader i cacheminnet, och så vidare för andra arrayindex. Avstånd mellan element i x och z med samma arrayindex är 48 ord, vilket är 3 gånger storleken på ett set i cacheminnet. Eftersom 3 är ett heltal, så placeras x[0] och z[0] på Läsning av x[0] ger miss; cacheminnet hämtar x[0] till x[7] som placeras på en viss rad i ena cachehalvan. Index-fältet i adressen anger vilken rad, och vi kan anta vänstra cachehalvan eftersom hela cacheminnet är tomt. Läsning av y[0] ger miss; cacheminnet hämtar y[0] till y[7] som placeras på en annan rad än x[0]. Skrivning av z[0] ger miss; cacheminnet hämtar z[0] till z[7] som placeras på samma rad som x[0]. men i ett annat set. Det blir högra cachehalvan, eftersom den vänstra halvan av raden är upptagen av x[0] till x[7]. Läsning av x[1] ger träff. Läsning av y[1] ger träff. Skrivning av z[1] ger träff. Läsning av x[2] ger träff. Läsning av y[2] ger träff. Skrivning av z[2] ger träff. Läsning av x[3] ger träff. Läsning av y[3] ger träff. Skrivning av z[3] ger träff. Läsning av x[4] ger träff. Läsning av y[4] ger träff. Skrivning av z[4] ger träff. Läsning av x[5] ger träff. Läsning av y[5] ger träff. Skrivning av z[5] ger träff. Läsning av x[6] ger träff. Läsning av y[6] ger träff. Skrivning av z[6] ger träff. Läsning av x[7] ger träff. Läsning av y[7] ger träff. Skrivning av z[7] ger träff. Läsning av x[8] ger miss, för nu är blocket slut. Cacheminnet hämtar in x[8] till x[15], som placeras på raden efter x[0] x[7]. På samma sätt ger läsning av y[8] miss, och cacheminnet hämtar y[8] y[15]. Skrivning av z[8] ger miss, och cacheminnet hämtar z[8] z[15]. Därefter får vi träffar tills loopen är slut. Läsning av z[0] ger miss; cacheminnet hämtar z[0] till z[1] som placeras på en viss rad i vänstra cachehalvan. (Index-fältet i adressen anger vilken rad) Läsning av y[0] ger miss; cacheminnet hämtar y[0] till y[1] som placeras på samma rad som z[0] till z[1] men nu i högra cacherutan som ju är tom. Mönstret från sekvensen här ovanför upprepar sig inom varje block MMM TTT TTT TTT TTT TTT TTT TTT MMM TTT TTT TTT TTT TTT TTT TTT Hit rate = 21/24 = 7/8 = 87,5%. Lösningsförslag IS1500 (och IS1200/2G1518) sida 7

8 Uppgift 5. Processorkonstruktion a) Delayed branch kräver en NOP efter rad nummer 2, 5, 9, 10. Det går att ta bort NOP efter rad 2; om load-instruktionen hämtar ett extra värde efter sista varvet så ändras bara r8, och eftersom XXL är en subrutin så får r8 ändras. Avancerat: I många datorer är det förbjudet att utföra en load-instruktion i onödan; det kan medföra exception om adressen är utanför ett tillåtet område. I den här kursen bortser vi från det problemet. Det går inte att ta bort NOP efter rad 5, för då görs felaktig uppdatering av r2. Det går inte att ta bort NOP efter rad 9, för då görs felaktig retur. Det går inte att ta bort NOP efter rad 10 för då ändras returvärdet i r2 innan returen. b) Utan data forwarding så krävs 2 NOP eller andra oberoende instruktioner mellan RAW-beroende instruktioner. Mellan rad 3 och 4 behövs 2 NOP på grund av RAW-beroende (r8). Mellan rad 4 och 5 behövs 2 NOP på grund av RAW-beroende (r9). c) Med 5-stegs pipeline så behövs en oberoende instruktion efter Load. Rad 3 är en Load-instruktion, och rad 4 använder det laddade värdet. En NOP måste in mellan rad 3 och rad 4. d) Samma som i a) och c) (både Branch Delay och Load Delay). e) Beräkning av CPI (Clocks Per Instruction). Summering av antalet cykler och instruktioner. Före loop: rad 1 tar 1 cykel för 1 instruktion. Loop, varv 1: rad 2 4 och 7-8 tar 1 cykel var, men rad 9 tar 2 cykler. Om vi antar att r9 = 0 på rad 5 så tar ett varv i loopen 9 cykler för 7 instruktioner. Loop, varv 2: som varv 1, 9 cykler till och 8 instruktioner till. Loop, varv 3: som varv 2, 9 cykler till och 8 instruktioner till. Efter sista varvet utförs rad 2 som hoppar till FOO, vilket tar 2 cykler för 1 instruktion. Vid läget FOO utförs ret vilket tar 2 cykler för 1 instruktion. Totalsumma 32 cykler för 24 instruktioner. CPI = 32/24 = 4/3 1,3 Uppgift 6. Trådar och synkronisering a) Time-slice nr 1: P1 producerar 5 heltal och lägger 5 i Fifo-kön. Time-slice nr 2: P2 producerar 6 heltal och lägger 5 av dem i Fifo-kön. Sen är det fullt. Orsaken till att P2 producerar 6 heltal är att produktionen sker innan tråden försöker lägga in heltalet i Fifo-kön. Det sista heltalet kommer inte in i kön, utan ligger kvar i en lokal variabel i P2. Time-slice nr 3: C3 konsumerar 10 heltal 5 från P1 och 5 från P2. Time-slice nr 4: C4 konsumerar inga heltal, Fifo-kön är tom. Time-slice nr 5: P1 producerar 5 heltal och lägger 5 i Fifo-kön. Time-slice nr 6: P2 har kvar ett heltal som inte fick plats i Fifo-kön förra gången. Nu lägger P2 det talet i Fifo-kön. Därefter producerar P2 5 heltal till och lägger 4 av dem i Fifo-kön. Sen är det fullt. Time-slice nr 7: C3 konsumerar 10 heltal 5 från P1 och 5 från P2. Time-slice nr 8: C4 konsumerar inga heltal, Fifo-kön är tom. Summering: 10 heltal från P1 och 10 heltal från P2 konsumerades på 8 time-slices. Lösningsförslag IS1500 (och IS1200/2G1518) sida 8

9 b) Time-slice nr 1: P2 producerar 10 heltal och lägger 10 i Fifo-kön. Time-slice nr 2: P1 producerar 1 heltal men Fifo-kön är full, så talet får inte plats utan ligger kvar i en lokal variabel i P1. Time-slice nr 3: C4 konsumerar 10 heltal varav 10 från P2 och inget från P1. Time-slice nr 4: C3 konsumerar inga heltal, Fifo-kön är tom. Time-slice nr 5: P2 producerar och skriver 10 tal. Time-slice nr 6: P1 har ett heltal i en lokal variabel; det heltalet producerades under time-slice nr 2. Men kön är full, så talet ligger kvar i den lokala variabeln i P1. Time-slice nr 7: C4 konsumerar 10 heltal, alla från P2. Time-slice nr 8: C3 konsumerar inga heltal, Fifo-kön är tom. Summering: 20 heltal från P2 och inga heltal från P1 konsumerades på 8 timeslices. c) Fel i funktionen Signal. Rad 3: det ska inte finnas någon if-sats, ökning av semaforvariabeln ska alltid utföras när Signal anropats. d) Förklaring av funktionen Wait. Rad 10 funktionsdefinition, rad 11 inleder ett block. Rad 12 hindrar avbrott och därmed trådbyte så att kontroll och ändring av semaforvariabelns värde görs odelbart (atomärt). Om trådbyts skulle tillåtas emellan, så skulle någon annan tråd kunna ändra semafor-variabeln mellan testet och uppdateringen. Rad 13 utför testet och börjar en vänteloop om semaforens värde är noll eller negativt. Rad 14 inleder ett block. Rad 15 tillåter avbrott och alltså trådbyte medan den aktuella tråden väntar. Det är viktigt, annars stoppas timer-avbrotten på obestämd tid. Rad 16 ger upp resten av den aktuella trådens time-slice, eftersom tråden väntar på att en annan tråd ska anropa Signal. Det kommer att hända fortare om den väntande lämnar över processorn till nästa tråd. Rad 17 förbjuder avbrott igen. Detta kommer att utföras när körningen återvänder till den väntande tråden. Avbrott måste vara förbjudna eftersom tråden nu än en gång ska utföra testet (och kanske uppdateringen) av semafor-variabeln. Rad 18 avslutar det block som utgör kroppen (body) i while-loopen. Rad 19 utförs om semafor-variabeln var positiv: variabelns värde minskas med 1. Rad 20 tillåter avbrott igen (förklaringar här ovanför). Rad 21 avslutar funktionen. e) Vid läget L1: ea innehåller sparat programräknarvärde för den avbrutna tråden, och sp innehåller stackpekaren för samma tråd. Som exempel antar vi att det är tråd 0. Mellan lägena L1 och L2 körs oslab_internal_threadswitch, som sparar stackpekaren för den avbrutna tråden (tråd 0 i vårt exempel) och returnerar stackpekaren för nästa tråd som ska köras (tråd 1 i vårt exempel). Efter retur från funktionen så används den nya stackpekaren för att hämta upp registervärden, inklusive innehåll i ea, från trådens stack (stacken för tråd 1). Vid läget L2: ea innehåller sparat programräknarvärde för den tråd som ska startas, och sp innehåller stackpekaren för samma tråd (tråd 1 i vårt exempel). Lösningsförslag IS1500 (och IS1200/2G1518) sida 9

CE_O5. Cacheminne. Hemlaboration 2.

CE_O5. Cacheminne. Hemlaboration 2. IS1500 Exempelsamling till övning CE_O5, 2014 CE_O5. Cacheminne. Hemlaboration 2. 5.1. Medeltidshistoria Diskutera förloppet då CPU:n gör en läsreferens i huvudminnet dvs information kopieras från huvudminne

Läs mer

Tentamen i IS1500/IS1200/2G1518 Datorteknik fredagen den 19 augusti 2011 kl

Tentamen i IS1500/IS1200/2G1518 Datorteknik fredagen den 19 augusti 2011 kl Tentamen i IS1500/IS1200/2G1518 Datorteknik fredagen den 19 augusti 2011 kl 14.00 19.00 Examinator: Fredrik Lundevall (IS1500), Johan Wennlund (IS1200, 2G1518). Jourhavande lärare: Johan Wennlund. Tentamensuppgifterna

Läs mer

Lösningsförslag till tentamen i Datorteknik 2011-05-28

Lösningsförslag till tentamen i Datorteknik 2011-05-28 Lösningsförslag till tentamen i Datorteknik 2011-05-28 Varning: dessa lösningsförslag kan vara felakktiga och/eller ofullstän Uppgift 1. Maskinaritmetik a) Flyttalet X lagras som 1 1000 0110 000 1100 0000

Läs mer

CE_O8. Cacheminne. Hemlaboration 2.

CE_O8. Cacheminne. Hemlaboration 2. IS1200 Lösningsförslag till övning CE_O8, 2015 CE_O8. Cacheminne. Hemlaboration 2. 8.1. Medeltidshistoria Diskutera förloppet då CPU:n gör en läsreferens i huvudminnet dvs information kopieras från huvudminne

Läs mer

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 13 mars 2013, klockan 14:00 19:00 i Vic 2 A-D, 3 A-C. Tillåtna hjälpmedel: på tentan utdelad

Läs mer

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Torsdagen den 13 mars 2014, klockan 14:00 19:00 i MA:10. Tillåtna hjälpmedel: på tentan utdelad formelsamling,

Läs mer

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621 Lunds Universitet LTH Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621 Skrivtid: 8.00-13.00 Inga tillåtna hjälpmedel Uppgifterna i tentamen ger maximalt 60 poäng. Uppgifterna är

Läs mer

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte CT3760 Mikrodatorteknik Föreläsning 4 Tisdag 2005-09-06 Stacken I datasammmanhang är en stack ett minnesområde. Det är processorn som använder stacken. För att skapa en stack anger man en adress i stackpekarregistret.

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #17 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Tallriksmodellen Stackoperationer Element kan endast

Läs mer

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng Lunds Universitet LTH Ingenjörshögskolan, Helsingborg Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng Skrivtid: 08.00-13.00 Tillåtna hjälpmedel: Inga. Maximalt

Läs mer

Datorsystemteknik för E/D

Datorsystemteknik för E/D Tentamen i kursen Datorsystemteknik (EDA330 för D och EDA370 för E) 19/8 2000 1(8) Tentamen i kursen Datorsystemteknik (EDA330 för D och EDA370 för E) Datorsystemteknik för E/D 19/8 2000 Tentamensdatum:

Läs mer

Tentamen den 18 mars svar Datorteknik, EIT070

Tentamen den 18 mars svar Datorteknik, EIT070 Lunds Universitet LTH Tentamen den 18 mars 2015 - svar Datorteknik, EIT070 Skrivtid: 14.00-19.00 Tillåtna hjälpmedel: Inga. Maximalt antal poäng: 50 poäng För betyg 3 krävs 20 poäng För betyg 4 krävs 30

Läs mer

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013 Rahim Rahmani (rahim@dsv.su.se) Division of SAS Department of Computer and Systems Sciences Stockholm University SVAR TILL TENTAMEN I DATORSYSTEM, HT2013 Tentamensdatum: 2013-10-30 Tentamen består av totalt

Läs mer

Tentamen den 17 mars 2016 Datorteknik, EIT070

Tentamen den 17 mars 2016 Datorteknik, EIT070 Lunds Universitet LTH Tentamen den 17 mars 2016 Datorteknik, EIT070 Skrivtid: 14.00-19.00 Tillåtna hjälpmedel: Inga. Maximalt antal poäng: 50 poäng För betyg 3 krävs 20 poäng För betyg 4 krävs 30 poäng

Läs mer

Datorsystem. Tentamen 2011-10-29

Datorsystem. Tentamen 2011-10-29 Datorsystem Tentamen 2011-10-29 Instruktioner Samtliga svar skall vara motiverade och läsbara. Eventuella tabeller och beräkningar som används för att nå svaret ska också finnas med i lösningen. Ett svar

Läs mer

CE_O2. Nios II. Subrutiner med mera.

CE_O2. Nios II. Subrutiner med mera. IS1500 Lösningsförslag till övning CE_O2 2014 CE_O2. Nios II. Subrutiner med mera. 2.1. Binära lagringsformat R-type: (Register-format) ra (5 bit) rb (5 bit) rc (5 bit) operationskod (17 bit) Detta format

Läs mer

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion. F5 Föreläsning i Mikrodatorteknink 2006-09-05 Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion. Programräknaren

Läs mer

Laboration 2 i Datorteknik- Assemblerprogrammering II

Laboration 2 i Datorteknik- Assemblerprogrammering II Högskolan i Halmstad 1 (8) - Assemblerprogrammering II Målet med laborationen är att få begrepp om Subrutiner. in/utparametrar. Lokala variabler Maska in bitar till ett register Konstruktion av subrutiner

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2016-05-31 Lokal Kåra, T1, T2, U1, U15 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal

Läs mer

Föreläsningsanteckningar 5. Cacheminnen

Föreläsningsanteckningar 5. Cacheminnen Föreläsningsanteckningar 5. Cacheminnen Olle Seger 2012 Anders Nilsson 2016 1 Inledning Bakgrunden till att cacheminnen behövs för nästan alla datorer är enkel. Vi kan kallt räkna med att processorn är

Läs mer

Institutionen för elektro- och informationsteknologi, LTH

Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 3 Assembler, stack och subrutiner, programmeringskonventionen Mål Att veta hur maskinkoden för ett program byggs upp Att börja programmera i assembler på riktigt Att kunna skriva

Läs mer

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

Datorteknik. Föreläsning 3. Assembler, stack och subrutiner, programmeringskonventionen. Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 3 Assembler, stack och subrutiner, programmeringskonventionen Mål Att veta hur maskinkoden för ett program byggs upp Att börja programmera i assembler på riktigt Att kunna skriva

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2016-10-18 Lokal TER1 Tid 8-12 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 7 Antal sidor (inklusive

Läs mer

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

Mål. Datorteknik. Innehåll. Innehåll (forts) Hur ser ett program ut? Hur skapas maskinkoden? Mål Datorteknik Föreläsning 3 Att veta hur maskinkoden för ett program byggs upp Att börja programmera i på riktigt Att kunna skriva och anropa subrutiner i Att förstå hur stacken fungerar Att veta vad

Läs mer

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte "ARM-instruktioner", A4-format, 17 sidor. Maxpoäng:

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte ARM-instruktioner, A4-format, 17 sidor. Maxpoäng: TENTAMEN D1/E1/Mek1/Ö1 1400-1800 Hjälpmedel: Häfte "ARM-instruktioner", A4-format, 17 sidor Maxpoäng: Betyg 3 Betyg 4 Betyg 5 60p 24p 36p 48p Frågor under tentamen: Börje Delistrand tel. +46702986358 Bilaga

Läs mer

Datorsystemteknik D. Lösningar till tentamen i kursen EDA330 14/1 2000

Datorsystemteknik D. Lösningar till tentamen i kursen EDA330 14/1 2000 1(6) Lösningar till tentamen i kursen EDA330 Datorsystemteknik D 14/1 2000 Följande är skisser till lösningar av uppgifterna. Full poäng på en uppgift kräver i de flesta fall en något fylligare motivering.

Läs mer

Övning2 Datorteknik, HH vt12 - Programmering

Övning2 Datorteknik, HH vt12 - Programmering Övning2 Datorteknik, HH vt12 - Programmering För denna övning behöver man adresskarta och beskrivning av laborationsplattform. Finns bland föreläsningsanteckning samt i bilaga l till Lab l. Använd även

Läs mer

Övning 6. Parallellport, timer

Övning 6. Parallellport, timer Övning 6 Parallellport, timer 6.1 de2_pio_toggles18 Memory-Mapped addresses LEDG8 LEDR17 LEDR16 LEDR15 LEDR14 LEDR13 LEDR12 LEDR11 LEDR10 LEDR9 LEDR8 LEDR7 LEDR6 LEDR5 LEDR4 LEDR3 LEDR2 LEDR1 LEDR0 LEDG7

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2015-06-01 Lokal Tid 14-18 Kurskod Provkod Kursnamn Provnamn Institution Antal frågor 6 Antal sidor (inklusive denna sida) 6 Kursansvarig Lärare som besöker skrivsalen

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2015-08-18 Lokal TERE, TER4 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 7 Antal sidor (inklusive

Läs mer

Lösningar till övning CE_O CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io.

Lösningar till övning CE_O CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io. ösningar till övning CE_O6 2014 CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io. 6.1. äs in data från IN-port ( skjutomkopplare TOGGES18) a) ösningsförslag i Nios-II-assembler..equ

Läs mer

IS1500 Lösningar övning CE_O7 2014. CE_O7. Programmerad in/utmatning. Serieport. Förberedelser till nios2io.

IS1500 Lösningar övning CE_O7 2014. CE_O7. Programmerad in/utmatning. Serieport. Förberedelser till nios2io. IS1500 ösningar övning CE_O7 2014 CE_O7. Programmerad in/utmatning. Serieport. Förberedelser till nios2io. 6.1. Vad är seriell kommunikation? a) Vad är skillnaden mellan seriell och parallell kommunikation?

Läs mer

CE_O3. Nios II. Inför lab nios2time

CE_O3. Nios II. Inför lab nios2time IS1200 Exempelsamling till övning CE_O3, 2015 CE_O3. Nios II. Inför lab nios2time 3.1. Logiska operationer (se uppgift 1.2 c) Repetera (eller lär dig) innebörden av de logiska operationerna "bitvis AND",

Läs mer

Institutionen för elektro- och informationsteknologi, LTH

Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 5 Realtidssystem och realtidsprogrammering Mål Att du ska förstå hur avbrott används för - Mätning - Styrning - Stöd för körning av flera processer Att du ska förstå begreppet tråd

Läs mer

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH. Datorteknik Föreläsning 5 Realtidssystem och realtidsprogrammering Mål Att du ska förstå hur avbrott används för - Mätning - Styrning - Stöd för körning av flera processer Att du ska förstå begreppet tråd

Läs mer

CE_O1. Nios II. Enkla assembler-instruktioner.

CE_O1. Nios II. Enkla assembler-instruktioner. IS1500 ösningsförslag till övning CE_O1 2014 CE_O1. Nios II. Enkla assembler-instruktioner. 1.1. Datorarkitektur för Nios II a) Tabell 3 1 i Nios II Processor Reference Handbook visar processorns register:

Läs mer

IS1200 Datorteknik. Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1

IS1200 Datorteknik. Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1 IS1200 Datorteknik Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1 1 4.1 Little och big endian 2 Nios II? Nios II är Little-endian (men eftersom det är en soft-processor

Läs mer

Assemblerprogrammering, ARM-Cortex M4 del 3

Assemblerprogrammering, ARM-Cortex M4 del 3 Assemblerprogrammering, ARM-Cortex M4 del 3 Ur innehållet: Fler pekartyper Användning av stacken Lagringsklasser, synlighet - lokala variabler Funktioner - returvärden och parametrar Läsanvisningar: Arbetsbok

Läs mer

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 7 mars 2012, klockan 14:00 19:00 i Vic 2, 3. Tillåtna hjälpmedel: på tentan utdelad formelsamling,

Läs mer

Hantering av hazards i pipelines

Hantering av hazards i pipelines Datorarkitektur med operativsystem Hantering av hazards i pipelines Lisa Arvidsson IDA2 Inlämningsdatum: 2018-12-05 Abstract En processor som använder pipelining kan exekvera ett flertal instruktioner

Läs mer

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U) TSEA28 Datorteknik Y (och U), föreläsning 2, Kent Palmkvist 2018-01-16 3 TSEA28 Datorteknik Y (och U) Föreläsning 2 Kent Palmkvist, ISY Praktiska kommentarer Mail kommer skickas ut när labanmälan är möjlig

Läs mer

Datorsystem. Tentamen

Datorsystem. Tentamen Datorsystem Tentamen 2012-03-17 Instruktioner Samtliga svar skall vara motiverade och läsbara. Eventuella tabeller, illustrationer och beräkningar som används för att nå svaret ska också finnas med i lösningen.

Läs mer

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60) Lunds Universitet LTH Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60) Skrivtid: 08.00-13.00 Tillåtna hjälpmedel: Inga. Maximalt antal poäng: 50 poäng För betyg 3 krävs 20 poäng

Läs mer

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013 Rahim Rahmani (rahim@dsv.su.se) Division of ACT Department of Computer and Systems Sciences Stockholm University SVAR TILL TENTAMEN I DATORSYSTEM, VT2013 Tentamensdatum: 2013-03-21 Tentamen består av totalt

Läs mer

Stack och subrutiner Programmeringskonventionen

Stack och subrutiner Programmeringskonventionen Stack och subrutiner Programmeringskonventionen Du ska förstå hur en instruktion behandlas i processorn Du ska känna till några fler instruktioner Du ska veta hur maskinkoden för ett program byggs upp

Läs mer

Assemblerprogrammering - fördjupning

Assemblerprogrammering - fördjupning Assemblerprogrammering - fördjupning Ur innehållet: Trampoliner tabellerade funktionsadresser Aktiveringspost med ARM Cortex M4 Mer om parameteröverföring Registerspill Kodgenerering - ISA "Kodoptimering"

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2015-10-20 Lokal TERE, TER2 Tid 8-12 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal sidor (inklusive

Läs mer

A-del motsvarande KS1

A-del motsvarande KS1 MÄLARDALENS HÖGSKOLA Institutionen för elektroteknik Tentamen Mikrodatorteknik CT3760 Datum 2005-10-28 Tid 08.30 12.30 Svar till A- och B-del A-del motsvarande KS1 Uppgift A1. Vad blir resultatet då instruktionen

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2017-08-15 Lokal TER4 Tid 14-18 Kurskod Provkod Kursnamn Provnamn Institution Antal frågor 6 Antal sidor (inklusive denna sida) 6 Kursansvarig Lärare som besöker skrivsalen

Läs mer

Datorsystem Laboration 2: Minnesmappade bussar

Datorsystem Laboration 2: Minnesmappade bussar Datorsystem Laboration 2: Minnesmappade bussar Senast uppdaterad: 14 oktober 2012 Version 1.2 Student: Lärare: Underskrift: Underskrift: Datum: Datorsystem Laboration 2 1 Innehåll 1 Inledning 2 1.1 Introduktion..................................

Läs mer

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin. 1(5) Övningstentamen i Mikrodatorer och assemblerprogrammering, ELGA05 Hjälpmedel: Bifogad lista med memokoder för MC68xxx. Samtliga programmeringsuppgifter ska innehålla flödesschema med förklaringar

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2017-10-26 Lokal TER1, TER3 Tid 8-12 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal sidor (inklusive

Läs mer

Datorteknik 2 (AVR 2)

Datorteknik 2 (AVR 2) Namn: Laborationen godkänd: Digitala system 15 hp Datorteknik 2 (AVR 2) LTH Ingenjörshögskolan vid Campus Helsingborg Enkel in- och utmatning. Drivrutiner. Bithantering. I denna laboration ska vi förbättra

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2016-08-16 Lokal TER2, TER4 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal sidor (inklusive

Läs mer

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U) TSEA28 Datorteknik Y (och U), föreläsning 2, Kent Palmkvist 2019-01-22 3 TSEA28 Datorteknik Y (och U) Föreläsning 2 Kent Palmkvist, ISY Praktiska kommentarer Labanmälan öppnar måndag 28/1 kl 12.30 Anmälningssystemet

Läs mer

CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io.

CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io. IS1200 Exempelsamling till övning CE_O6, 2015 CE_O6. Parallell in/utmatning (I/O). Förberedelser till laboration nios2io. 6.1. Läs in data från IN-port (skjutomkopplare TOGGLES18) Skriv en subrutin, Get_Data

Läs mer

Minnet från processorns sida Datorteknik

Minnet från processorns sida Datorteknik Minnet från processorns sida Datorteknik ERIK LARSSON Processorn ger kommandon/instruktioner med en adress och förväntar sig data. Exempel: READ(ADR) -> DATA Fysisk adress Logisk adress READ 00001000 READ

Läs mer

F4: Assemblerprogrammering

F4: Assemblerprogrammering F4: Assemblerprogrammering Hoppinstruktioner Branch Jump Med vilkor IF satser Loopar while-loopar do-while- loopar for-loopar Stackhantering Underprogram 1 BRA rel_adr Branch Always Relativadressering

Läs mer

Tentamen Datorteknik Y, TSEA28 Datum 2012-08-14

Tentamen Datorteknik Y, TSEA28 Datum 2012-08-14 Tentamen Datorteknik Y, TSEA28 Datum 2012-08-14 Lokal TER2 Tid 8-12 Kurskod TSEA28 Provkod TEN1 Kursnamn Datorteknik Y Institution ISY Antal frågor 6 Antal sidor (inklusive denna sida) 7 Kursansvarig Andreas

Läs mer

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Fö 5+6 TSEA81. Real-time kernel + Real-time OS Fö 5+6 TSEA81 Real-time kernel + Real-time OS Stackens användningsområde * JSR / RTS : returadress * Temporärdata (push / pop) void myfunc(void) { int i; // hamnar nog i register int test[10]; // hamnar

Läs mer

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U) TSEA28 Datorteknik Y (och U) Föreläsning 2 Kent Palmkvist, ISY TSEA28 Datorteknik Y (och U), föreläsning 2, Kent Palmkvist 2017-01-17 2 Dagens föreläsning Kort repetition Större programmeringsexempel Subrutiner

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #17 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola F-36 FLEX- och FLIS-datorn Ext-8 Tallriksmodellen Stackoperationer

Läs mer

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U) Praktiska kommentarer TSEA8 Datorteknik Y (och U) Föreläsning Kent Palmkvist, ISY Dagens föreläsning RISC Mer information om hur arkitekturen fungerar Begränsningar Lab extra tillfälle för redovisning

Läs mer

Hemlaboration Cache Cacheminnen

Hemlaboration Cache Cacheminnen IS1200 Datorteknik IS1500 Datorteknik och komponenter Hemlaboration Cache Cacheminnen 2014-12-15 Kursdeltagarens namn:.. Datum: Godkänd av (assistentens signatur):.. IS1200/IS1500 Hemlab cache: Cacheminnen

Läs mer

Exempeltentamen Datorteknik, EIT070,

Exempeltentamen Datorteknik, EIT070, Lunds Universitet LTH Exempeltentamen Datorteknik, EIT070, Skrivtid: xx.00-xx.00 Tillåtna hjälpmedel: Inga. Maximalt antal poäng: 50 poäng För betyg 3 krävs 20 poäng För betyg 4 krävs 30 poäng För betyg

Läs mer

Datorsystemteknik Föreläsning 7DAVA14

Datorsystemteknik Föreläsning 7DAVA14 Datorsystemteknik Föreläsning 7DAVA14 Innehåll Introduktion (forts) Polling (cyklisk avfrågning) Större delen av materialet framtaget av :Jan Eric Larsson, Mats Brorsson och Mirec Novak IT-inst LTH Exempel

Läs mer

Tentamen Datorteknik D del 2, TSEA49

Tentamen Datorteknik D del 2, TSEA49 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

Läs mer

4. Maskinnära programmering i C. Förberedelser till hemlaboration 1.

4. Maskinnära programmering i C. Förberedelser till hemlaboration 1. IS1200 ösningar till exempel, övning 4, 2015 4. Maskinnära programmering i C. Förberedelser till hemlaboration 1. 4.1. Big-endian och little-endian När heltal, flyttal och adresser ska lagras i datorns

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2017-06-02 Lokal G35, TER2, TER4 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal sidor

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via

Läs mer

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

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647 Lågnivåprogrammering Föreläsning 2 Lågnivåprogrammering Förberedelse inför laboration 2. Maskinspråk, assemblerspråk Talrepresentation En enkel dator, komponenter Instruktionsformat, instruktionscykel

Läs mer

Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704

Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704 Kontrollskrivning Mikrodatorteknik CDT209 2007-09-20 S2-704 Svar Svar till uppgifterna lämnas på separat papper. En poäng per uppgift. Max 30 poäng. Bonuspoäng beräknas enligt följande tabell: 6-10 poäng

Läs mer

Uppgift 1: a) u= a c + a bc+ ab d +b cd

Uppgift 1: a) u= a c + a bc+ ab d +b cd Uppgift 1: a) u= a c a bc ab d b cd b) a b c d u 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1 0 0 1 0 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

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering 1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data

Läs mer

Tentamen (Exempel) Datorteknik Y, TSEA28

Tentamen (Exempel) Datorteknik Y, TSEA28 Tentamen (Exempel) Datorteknik Y, TSEA28 Datum 2018-08-21 Lokal TER4 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal sidor

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #16 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Behovet av ändring av programflödet För att kunna skriva

Läs mer

Polling (cyklisk avfrågning) Avbrott

Polling (cyklisk avfrågning) Avbrott Polling (cyklisk avfrågning) Avbrott Större delen av materialet framtaget av :Jan Eric Larsson, Mats Brorsson och Mirec Novak IT-inst LTH Att känna till begreppet polling (cyklisk avfrågning) och hur det

Läs mer

Digital- och datorteknik

Digital- och datorteknik Digital- och datorteknik Föreläsning #16 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Behovet av ändring av programflödet För att kunna skriva

Läs mer

Digitalteknik och Datorarkitektur 5hp

Digitalteknik och Datorarkitektur 5hp Digitalteknik och Datorarkitektur 5hp Minnes-hierarkier och Cache 12 maj 2008 karl.marklund@it.uu.se issa saker använder vi ofta Dessa saker vill vi ha nära till hands Storleken har betydelse Litet är

Läs mer

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1 Halmstad University School of Information Science, Computer and Electrical Engineering Tomas Nordström, CC-lab TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1 Datum: 2012-05- 23 Tid och plats: 9:00 13:00 i

Läs mer

Föreläsningsanteckningar 4. Pipelining

Föreläsningsanteckningar 4. Pipelining Föreläsningsanteckningar 4. Pipelining Olle Seger 2012, olles@isy.liu.se 21 januari 2013 1 Inledning Denna föreläsning handlar om pipelining, som är den helt dominerande processorarkitekturen i dag. Man

Läs mer

Institutionen för datavetenskap 2014/15

Institutionen för datavetenskap 2014/15 LUNDS TEKNISKA HÖGSKOLA Datorer och datoranvändning Institutionen för datavetenskap 2014/15 ME en dator 1 Inledning ME är en påhittad dator, men den har likheter med riktiga datorer: det finns ett maskinspråk

Läs mer

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

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga 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

Läs mer

Programexempel för FLEX

Programexempel för FLEX Aktivera Kursens mål: Konstruera en dator mha grindar och programmera denna Aktivera Förra veckans mål: Konstruera styrenheten. genom att. implementera olika maskininstruktioner i styrenheten. Kunna använda

Läs mer

Pipelining i Intel Pentium II

Pipelining i Intel Pentium II Pipelining i Intel Pentium II John Abdulnoor Lund Universitet 04/12/2017 Abstract För att en processor ska fungera måste alla komponenter inuti den samarbeta för att nå en acceptabel nivå av prestanda.

Läs mer

Datorarkitekturer med Operativsystem

Datorarkitekturer med Operativsystem Lunds Tekniska Högskola Campus Helsingborg Datorarkitekturer med Operativsystem EDT621 Rapport Cacheminneshantering för ARM3-processorer 7 december 2015 Pierre Aupeix dat11pau@student.lu.se 1 Abstract

Läs mer

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler Talsystem Talsystem - binära tal F1.1) 2 n stycken tal från 0 till 2 n 1 F1.2) 9 bitar (512 kombinationer) Talsystem - 2-

Läs mer

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP. Övningsuppgifter Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP. F.2 Ett antal på varandra följande minnesord har

Läs mer

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte" ARM-instruktioner", A4-format, 17 sidor. Maxpoäng: 60p

TENTAMEN. Datorteknik. D1/E1/Mek1/Ö Hjälpmedel: Häfte ARM-instruktioner, A4-format, 17 sidor. Maxpoäng: 60p TENTAMEN D1/E1/Mek1/Ö1 0900-1300 Hjälpmedel: Häfte" ARM-instruktioner", A4-format, 17 sidor Maxpoäng: Betyg 3 Betyg 4 Betyg 5 60p 24p 36p 48p Frågor under tentamen: Bör j e Delistrand tel. 16 7122 alt.

Läs mer

Datorarkitekturer med operativsystem ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON Datorarkitekturer med operativsystem ERIK LARSSON Semantic gap Alltmer avancerade programmeringsspråk tas fram för att göra programvaruutveckling mer kraftfull Dessa programmeringsspråk (Ada, C++, Java)

Läs mer

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

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär: Lösningsförslag för 725G45-tentan 3/11-10 1. Vad menas med Von Neumann-arkitektur? (2p) En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär: Data och instruktioner lagras i samma

Läs mer

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION Laborationsansvarig: Anders Arvidsson Utskriftsdatum: 2005-08-31 Laborant(er): 1 Syfte Laborationen ska ge studenten möjlighet att genom assemblerinlägg

Läs mer

TSEA28 Datorteknik Y (och U)

TSEA28 Datorteknik Y (och U) Praktiska kommentarer TSEA8 Datorteknik Y (och U) Föreläsning Kent Palmkvist, ISY Dagens föreläsning Latens/genomströmning Pipelining Laboration tips Sorteringsalgoritm använder A > B i flödesschemat Exemplet

Läs mer

CE_O3. Nios II. Stackhantering och förberedelse för lab nios2time

CE_O3. Nios II. Stackhantering och förberedelse för lab nios2time IS1200 ösningsförslag till övning CE_O3 2015 CE_O3. Nios II. Stackhantering och förberedelse för lab nios2time 3.1. ogiska operationer Nios II kan utföra de logiska operationerna AND, OR, XOR och NOR.

Läs mer

LABORATION. Datorteknik Y

LABORATION. Datorteknik Y LABORATION Datorteknik Y Avbrottsprogrammering på Darma Version 4.03 Februari 2019 (OA, KP) Namn och personnummer Godkänd 1 1 Inledning Syftet med laborationen är först att ge övning i avbrottsprogrammering

Läs mer

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

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre Lågnivåprogrammering Föreläsning 2 Lågnivåprogrammering Förberedelse inför laboration 2. Maskinspråk, assemblerspråk Talrepresentation En enkel dator, komponenter Instruktionsformat, instruktionscykel

Läs mer

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers Avbrott generellt F7.1. Avbrott sköts med hårdvara i processorn, man läser av hårdvarumässigt. Polling är en enklare princip för I/O- hantering.

Läs mer

Att använda pekare i. C-kod

Att använda pekare i. C-kod Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare

Läs mer

Assemblerprogrammering för ARM del 2

Assemblerprogrammering för ARM del 2 Assemblerprogrammering för ARM del 2 Ur innehållet Programflöde Subrutiner, parametrar och returvärden Tillfälliga (lokala) variabler Läsanvisningar: Arbetsbok kap 2 Quick-guide, instruktionslistan Assemblerprogrammering

Läs mer