Presentation laddar. Vänta.

Presentation laddar. Vänta.

1 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Föreläsning 9 zDel 1. CPU-scheduling zDel 2. Semaforer zInför föreläsning 10 zSammanfatting.

Liknande presentationer


En presentation över ämnet: "1 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Föreläsning 9 zDel 1. CPU-scheduling zDel 2. Semaforer zInför föreläsning 10 zSammanfatting."— Presentationens avskrift:

1 1 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Föreläsning 9 zDel 1. CPU-scheduling zDel 2. Semaforer zInför föreläsning 10 zSammanfatting

2 IS1200 Datorteknik http://www.ict.kth.se/courses/IS1200 Assemblerprogram C In- och utmatning Avbrott och "trap" Cacheminnen Trådar, synkronisering CE F1 CE F3 CE F4 CE F5 CE F6 CE F7 CE F8 CE F9 CE F2 CE Ö4 CE Ö1 CE Ö2 CE Ö3 CE Ö7 CE Ö8 CE Ö9 CE Ö5CE Ö6 lab nios2time hemlab C lab nios2io lab nios2int hemlab cache (hemlab trådar) CE F10CE Ö10 tentamen 1 August 20152 IS1200 Datorteknik föreläsning CE - F9

3 Hemlaboration 3 (om trådar och synkronisering) Redovisning av hemlab 3 utgår för dig som under våren 2013 har blivit godkänd på zminst en Nios-II-lab, och zminst en hemlab. Du som uppfyller villkoren behöver inte redovisa hemlab 3. 1 August 2015 IS1200 Datorteknik föreläsning CE - F93

4 Föreläsning 10 Föreläsning 10, måndag 25 feb kl. 08-10 Mats Brorsson Professor of Computer Architecture zProcessorkonstruktion för låg energiförbrukning. zMaskinvara för parallell exekvering 1 August 2015 IS1200 Datorteknik föreläsning CE - F94

5 1 August 2015 IS1200 Datorteknik föreläsning CE - F95 IS1200 Datorteknik Föreläsning 9 Del 1. CPU-scheduling Fördelning av processortid (förberedelse till hemlab 3)

6 1 August 2015 IS1200 Datorteknik föreläsning CE - F96 Realtidskärna Viktiga begrepp (en del)  CPU - scheduling  Time Slice  Timer Interrupt  Context Switch (process/thread switch)  Process Control Block / Thread Control Block  Ready Queue  Round Robin

7 1 August 2015 IS1200 Datorteknik föreläsning CE - F97 CPU-scheduling Round Robin OS Tråd 1 Tråd 2 Tråd 3 time-slice time-out context switches...

8 1 August 2015 IS1200 Datorteknik föreläsning CE - F98 Åtgärder vid Context Switch  Save TCB: Spara undan viktig information, dvs allt som behövs för att kunna fortsätta exekvering vid senare tidpunkt. (TCB – Thread Control Block)  Put in RQ: Placera processen/tråden i Ready-Queue  Get from RQ: Välj en ny, viktig, process/tråd ur Ready- Queue  Unsave TCB: Kopiera in dess TCB till processorn  Return: Starta/fortsätt exekvering av den nyhämtade processen/tråden

9 1 August 2015 IS1200 Datorteknik föreläsning CE - F99 Kartbild av fysiska minnet varje tråd har egna platser adress ? 7 0.data.text heap stack (fetch-execute) (malloc-free) (push-pop) (load-store) SP PC +n.bss adress ? 7 0.data.text heap stack (fetch-execute) (malloc-free) (push-pop) (load-store) SP PC +n.bss..

10 1 August 2015 IS1200 Datorteknik föreläsning CE - F910 Program-Kod för context switch context_switch: # TCBSAVE och TCBUNSAVE kan skrivas som makron, se senare TCBSAVE # spara TCB i minnet (på lokal stack) move r4, sp# kopiera sp till r4 call RQPUT# skriv sp i Ready Queue # här görs ”språnget” mellan 2 processer/trådar call RQGET # läs ny sp från Ready Queue move sp, r2# kopiera r2 till sp TCBUNSAVE # kopiera TCB till processor... cswret: eret# tillbaks till utvald tråd/process

11 1 August 2015 IS1200 Datorteknik föreläsning CE - F911 Program-Kod för context switch (mer som i labprogramvaran) oslab_time_to_switch:... oslab_trap_handler: # TCBSAVE och TCBUNSAVE kan skrivas som makron, se senare TCBSAVE # spara TCB i minnet (på lokal stack) move r4, sp# kopiera sp till r4 # här görs ”språnget” mellan 2 processer/trådar call oslab_internal_threadswitch move sp, r2# kopiera r2 till sp TCBUNSAVE # kopiera TCB till processorn... cswret: eret# tillbaks till utvald tråd/process

12 1 August 2015 IS1200 Datorteknik föreläsning CE - F912 Nios-II Process Control Block - PCB Thread Control Block - TCB r1—r23 r26 (gp) r28 (fp) sp r31 #returadress r29 (ea) 27 register 108 bytes Varje register som en tråd använder ska sparas/skyddas

13 1 August 2015 IS1200 Datorteknik föreläsning CE - F913 Ready Queue Current Thread and PCB:s TCB2 Process Control Block TCB4 Process Control Block TCB5 Process Control Block TCB0 Process Control Block Ready Queue innehåller (stack-) pekare till PCB:er sp1 1 Idle 0 sp2 2 sp3 3 sp4 4 sp5 5 running_thread TCB1 Process Control Block

14 1 August 2015 IS1200 Datorteknik föreläsning CE - F914 oslab_thread_info_array before idle runs oslab_thread_info_array[0] 0 ledig upptagen oslab_currently_running_thread oslab_current_thread_count = 1 oslab_next_available_thread_id = 1 MAX_THREADS = 17 oslab_thread_info_array[16] Idle-thread

15 1 August 2015 IS1200 Datorteknik föreläsning CE - F915 oslab_thread_info_array idle and 5 threads sp1 1 0 sp2 2 sp3 3 sp4 4 sp5 5 ledig upptagen First created thread Second created thread... oslab_currently_running_thread oslab_current_thread_count = 6 oslab_next_available_thread_id = 6 MAX_THREADS = 17 oslab_thread_info_array[16] Idle-thread

16 1 August 2015 IS1200 Datorteknik föreläsning CE - F916 Realtidskärna Viktiga begrepp (igen)  Time-Slice#10-100 millisekunder  TCB Save # spara undan Process Control Block  RQ Put# pekare till tråd läggs i Ready Queue  RQ Get# pekare till tråd tas ur Ready Queue  TCB Unsave # återställ Process Control Block  Exit# avsluta en tråd  CreateThread (Addr, SP, PRIO,...) # initiera ett Process Control Block  Yield# släpp resten av en Time-Slice  (Sleep# ”sov en stund” (inte nu!) )

17 1 August 2015 IS1200 Datorteknik föreläsning CE - F917 CPU-scheduling Exit (System Call) OS Tråd 1 Tråd 2 Tråd 3 time-slice time-out exit time-out Round Robin Tråd 2 borta ur RQ !

18 1 August 2015 IS1200 Datorteknik föreläsning CE - F918 OS Tråd 1 Tråd 2 Tråd 3 Tråd 4 time-slice time-out Round Robin CPU-scheduling Create (System Call) create Tråd 4 tillkom i RQ ! time-out

19 1 August 2015 IS1200 Datorteknik föreläsning CE - F919 OS Tråd 1 Tråd 2 Tråd 3 time-slice time-out Sound Robin CPU-scheduling Yield (System Call) yield < time-slice Tråd 2 vilar i RQ !

20 1 August 2015 IS1200 Datorteknik föreläsning CE - F920 Program-Kod för context switch (repris) contextswitch: TCBSAVE# spara TCB på lokal stack move r4, sp# kopiera sp till r4 call RQPUT# skriv sp i Ready Queue # här görs ”språnget” mellan 2 processer/trådar call RQGET # läs ny sp från Ready Queue move sp, r2# kopiera r2 till sp TCBUNSAVE # kopiera TCB till processorn... cswret: eret# tillbaks till utvald tråd/process

21 1 August 2015 IS1200 Datorteknik föreläsning CE - F921 Kod för context switch mer liknande lab-PM contextswitch: TCBSAVE# spara TCB på lokal stack move r4, sp# kopiera sp till r4 call oslab_internal_threadswitch # RQPUT och RQGET i C-kod move sp, r2# kopiera r2 till sp TCBUNSAVE # kopiera TCB till processorn cswret: eret# tillbaks till utvald tråd/process

22 1 August 2015 IS1200 Datorteknik föreläsning CE - F922 Nios-II (repris) Process Control Block - PCB Thread Control Block - TCB r1—r23 r26 (gp) r28 (fp) sp r31 #returadress r29 (ea) 27 register 108 bytes Varje register som en tråd använder ska sparas/skyddas

23 1 August 2015 IS1200 Datorteknik föreläsning CE - F923 Nios-II: Macro för att pusha register på stacken.macroTCBSAVE# r31, r28, r26, r23-r1, r29 pushr31# returadress pushr28# fp pushr26# gp pushr23... pushr2 pushr1 pushr29# ea.endm

24 1 August 2015 IS1200 Datorteknik föreläsning CE - F924 Nios-II: Macro för att poppa register på stacken.macroTCBUNSAVE#r29, r1-r23, r26, r28, r31 popr29# ea popr1 popr2... popr23 popr26# gp popr28# fp popr31# returadress.endm

25 1 August 2015 IS1200 Datorteknik föreläsning CE - F925 Nios-II: Macro för att lagra register till stacken.macroTCBSAVE # r29, r1-r23, r26, r28, r31 subisp, sp, 27*4 # reservera 27 platser stwea, 4*0(sp) # r29 = ea stwr1, 4*1(sp) stwr2, 4*2(sp)... stw r23, 4*23(sp) stwr26, 4*24 (sp) # r24 = gp stwr28, 4*25 (sp) # r26 = fp stwr31, 4*26 (sp) # r31 = ra.endm

26 1 August 2015 IS1200 Datorteknik föreläsning CE - F926 Nios-II: Macro för att ladda register från stacken.macroTCBUNSAVE #r1-r23, r26, r28, r31, r29 ldwr1, 4*1(sp) ldwr2, 4*2(sp)... ldw r23, 4*23(sp) ldwr26, 4*24(sp) ldwr28, 4*25(sp) ldwr31, 4*26(sp) ldwea, 4*0(sp) # r29 = ea addisp, sp, 27*4 # återlämna 27 platser.endm

27 1 August 2015 IS1200 Datorteknik föreläsning CE - F927 Exceptions in Nios-II Suggested software structure trap 0x800020:”jmp ExcHand” Int ?Trap ? ExcHand: ElseHand Yes No NoInt: IRQ00IRQ10 IRQ31 error IntHand: No irq00Hand Yes irq10Hand Yes irq31Hand Yes subi r29, r29, 4 eret No trap0 trap1 trapn error TrapHand: No trap0Hand Yes trap1Hand Yes trapnHand Yes eret No instr int No

28 1 August 2015 IS1200 Datorteknik föreläsning CE - F928 Hemlaboration 3 Suggested software structure trap 0x800020:”jmp ExcHand” Int ?Trap ? ExcHand: ElseHand Yes No NoInt: IRQ10 error IntHand: Yes subi r29, r29, 4 instr int No TimerIntHand: Context Switch 100? Yes eret No

29 1 August 2015 IS1200 Datorteknik föreläsning CE - F929 OS Tråd 1 Tråd 2 Tråd 3 Tråd 4 time-slice time-out Round Robin CPU-scheduling Create (System Call) create Tråd 4 tillkom i RQ ! time-out

30 1 August 2015 IS1200 Datorteknik föreläsning CE - F930 oslab_thread_info_array idle and 5 threads sp1 1 Idle 0 sp2 2 sp3 3 sp4 4 sp5 5 ledig upptagen First created thread Second created thread... oslab_currently_running_thread oslab_current_thread_count = 6 oslab_next_available_thread_id = 6 MAX_THREADS = 17 oslab_thread_info_array[16] Idle-thread R

31 1 August 2015 IS1200 Datorteknik föreläsning CE - F931 oslab_thread_info_array create next thread #6 oslab_thread_info_array[0] sp1 1 Idle 0 sp2 2 sp3 3 sp4 4 sp5 5 oslab_current_thread_count = 7 oslab_next_available_thread_id = 7 oslab_thread_info_array[16] Idle-thread sp6 6

32 1 August 2015 IS1200 Datorteknik föreläsning CE - F932 Hemlab 3 TCB efter Create_Thread r1—r23 r26 (gp) r28 (fp) sp r31 #returadress r29 (ea) programkod ret ”Object”: inparam r4

33 1 August 2015 IS1200 Datorteknik föreläsning CE - F933 oslab_thread_info_array exit thread, #2 and #5 oslab_thread_info_array[0] sp1 1 Idle 0 sp3 3 sp4 4 sp6 6 oslab_thread_info_array[16] oslab_next_available_thread_id = 7 oslab_current_thread_count = 5 Idle-thread

34 1 August 2015 IS1200 Datorteknik föreläsning CE - F934 oslab_thread_info_array create next thread #7 oslab_thread_info_array[0] sp1 1 Idle 0 sp3 3 sp4 4 sp6 6 Idle-thread oslab_thread_info_array[16] sp7 7 oslab_current_thread_count (6) oslab_next_available_thread_id = 8

35 1 August 2015 IS1200 Datorteknik föreläsning CE - F935 PAUS-RUTA  Snart kommer nästa portion

36 1 August 2015 IS1200 Datorteknik föreläsning CE - F936 IS1200 Datorteknik Föreläsning 9 Del 2. Semaforer (förberedelse till hemlab 3)

37 1 August 2015 IS1200 Datorteknik föreläsning CE - F937 Samverkande processer Användning av semaforer vid  Synkronisering  Ömsesidig uteslutning

38 1 August 2015 IS1200 Datorteknik föreläsning CE - F938 Semafor, vad är det  En heltalsvariabel (0, 1, 2, 3 … -1, -2 ??)  (men med) Speciella egenskaper  Operationer (atomära - odelbara)  signal (sem) ~ öka med 1  wait (sem) ~ minska med 1 om det går (annars ”vänta” tills det går)  Binär semafor, kan anta värde 0 eller 1

39 1 August 2015 IS1200 Datorteknik föreläsning CE - F939 Semafor korgbollsanalogi KORG BOLL

40 1 August 2015 IS1200 Datorteknik föreläsning CE - F940 Semafor korgbollsanalogi KORG BOLL SIGNAL är ungefär: Lägg en till boll i korgen (och fortsätt sedan…)

41 1 August 2015 IS1200 Datorteknik föreläsning CE - F941 Semafor korgbollsanalogi KORG BOLL WAIT är ungefär: Vänta (vid behov) tills det finns minst en boll i korgen Ta en boll ur korgen (och fortsätt sedan …)

42 1 August 2015 IS1200 Datorteknik föreläsning CE - F942 Dijkstra  Signal - Verhogen; V(sem)  Wait - Proberen; P(sem) Egentligen prolaag, short for probeer te verlagen “Försök att minska” Edsger Wybe Dijkstra (May 11, 1930 – August 6, 2002; was a Dutch computer scientist.Dutch computer scientist

43 1 August 2015 IS1200 Datorteknik föreläsning CE - F943 Samverkan mellan processer med hjälp av semaforer  Synkronisering  Ömsesidig uteslutning (Mutual Exclusion)  Rendez Vous (dubbel synkronisering)

44 1 August 2015 IS1200 Datorteknik föreläsning CE - F944 Synkronisering: P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

45 1 August 2015 IS1200 Datorteknik föreläsning CE - F945 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

46 1 August 2015 IS1200 Datorteknik föreläsning CE - F946 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

47 1 August 2015 IS1200 Datorteknik föreläsning CE - F947 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

48 1 August 2015 IS1200 Datorteknik föreläsning CE - F948 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

49 1 August 2015 IS1200 Datorteknik föreläsning CE - F949 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

50 1 August 2015 IS1200 Datorteknik föreläsning CE - F950 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

51 1 August 2015 IS1200 Datorteknik föreläsning CE - F951 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

52 1 August 2015 IS1200 Datorteknik föreläsning CE - F952 Synkronisering P1 i T1 krävs före P2 i T2 … P1: … signal … wait P2: … T1: T2:

53 1 August 2015 IS1200 Datorteknik föreläsning CE - F953 Ömsesidig uteslutning: P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 och P2 får inte exekveras ”samtidigt”

54 1 August 2015 IS1200 Datorteknik föreläsning CE - F954 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

55 1 August 2015 IS1200 Datorteknik föreläsning CE - F955 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

56 1 August 2015 IS1200 Datorteknik föreläsning CE - F956 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

57 1 August 2015 IS1200 Datorteknik föreläsning CE - F957 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

58 1 August 2015 IS1200 Datorteknik föreläsning CE - F958 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

59 1 August 2015 IS1200 Datorteknik föreläsning CE - F959 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

60 1 August 2015 IS1200 Datorteknik föreläsning CE - F960 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

61 1 August 2015 IS1200 Datorteknik föreläsning CE - F961 Ömsesidig uteslutning P1 i T1 kritisk liksom P2 i T2 … wait P1: … signal … wait P2: signal … T1: T2: P1 Och P2 får inte exekveras ”samtidigt”

62 1 August 2015 IS1200 Datorteknik föreläsning CE - F962 Rendez Vous T1 och T2 inväntar varandra innan S1 och S2 exekverar … P1: … signal wait S1 … P2: … signal wait S2 T1: T2:

63 1 August 2015 IS1200 Datorteknik föreläsning CE - F963 Testprogram (hem-laboration 3)  Producers, p stycken, producerar primtal och skriver till  Buffert (FIFO) med x platser för primtal som sedan läses av  Consumers, c stycken, som konsumerar primtal

64 1 August 2015 IS1200 Datorteknik föreläsning CE - F964 Producer init:tal := start ploop:räkna ut nästa primtal, tal anropa PUT-FIFO (tal) br ploop

65 1 August 2015 IS1200 Datorteknik föreläsning CE - F965 Producer ”NiosII-kod” / makron prod:moviar4, start ploop:callNextPrime# subrutin PUTFIFO# macro # yield()??? brploop

66 1 August 2015 IS1200 Datorteknik föreläsning CE - F966 Producer C-kod enligt hemlab 3 Void Producer ( … ) next = ”startvalue from inparam” while (1) { next = NextPrime(next)// function PutFifo(next)// function //yield()// maybe ? }

67 1 August 2015 IS1200 Datorteknik föreläsning CE - F967 Consumer ”NiosII-kod” / makron init:vid behov ? cloop:anropa GET-FIFO (tal) konsumera primtalet (skriv ut tal) brcloop

68 1 August 2015 IS1200 Datorteknik föreläsning CE - F968 Consumer C-kod enligt hemlab 3 Void Consumer ( … ) while (1) { next = GetFifo() // function ”consume” (next)// function //yield()// maybe ? }

69 1 August 2015 IS1200 Datorteknik föreläsning CE - F969 PUT-FIFO  Skriv data till FIFO-buffert  på ett säkert sätt  Det måste finnas minst en ledig plats  ”Samtidig” skrivning är kritisk Fråga: Vad är det som är kritiskt ? Svar: Hantering av skrivpekaren wraddr !

70 1 August 2015 IS1200 Datorteknik föreläsning CE - F970 FIFO Queue, Data Structure (jfr med RQ!) wraddr: rdaddr: FifoEnd: Fifo: ledig upptagen

71 1 August 2015 IS1200 Datorteknik föreläsning CE - F971 FIFO Queue, Data Structure #defineFifo_Size16 intFifo[Fifo_Size] ; intwraddr = 0 ; intrdaddr = 0 ;

72 1 August 2015 IS1200 Datorteknik föreläsning CE - F972 C-code: skriv tal till Fifo-buffert C-code: läs till tmp från Fifo-buffert /*skriv tal*/ Fifo[wraddr] = tal; wraddr = wraddr + 1; if (wraddr == Fifo_Size) wraddr = 0; /*läs tal till retval*/ retval = Fifo[rdaddr] ; rdaddr = rdaddr + 1; if (rdaddr == Fifo_Size) rdaddr = 0;

73 1 August 2015 IS1200 Datorteknik föreläsning CE - F973 anrop … wait … wait … wrfifo … signal … signal … retur PUT-FIFO nrempty wrmut nrfull

74 1 August 2015 IS1200 Datorteknik föreläsning CE - F974 ”Nios-kod” för PUTFIFO (macron eller subrutinanrop) PUTFIFO:WAITnrempty WAITwrmut callwrfifo SIGNALwrmut SIGNALnrfull RETURN

75 1 August 2015 IS1200 Datorteknik föreläsning CE - F975 Nios-II-kod Macro för System Call.macroSysCallindex moviar4, \index trap.endm

76 1 August 2015 IS1200 Datorteknik föreläsning CE - F976 Nios-II-kod Macro för Signal och Wait.macroSIGNALsem moviar5, \sem SysCall6# trap med 6 i r4.endm.macroWAITsem moviar5, \sem SysCall7# trap med 7 i r4.endm

77 1 August 2015 IS1200 Datorteknik föreläsning CE - F977 GET-FIFO  Läs data från FIFO-buffert  på ett säkert sätt  Det måste finnas minst en upptagen plats  Samtidig läsning är kritisk Fråga: Vad är det som är kritiskt ? Svar: Hantering av läspekaren rdaddr !

78 1 August 2015 IS1200 Datorteknik föreläsning CE - F978 GET-FIFO nrempty rdmut nrfull retur … signal … signal … rdfifo … wait … wait … anrop

79 1 August 2015 IS1200 Datorteknik föreläsning CE - F979 Nios-kod för GETFIFO (macron eller subrutiner) GETFIFO:WAITnrfull WAITrdmut callrdfifo SIGNALrdmut SIGNALnrempty RETURN

80 1 August 2015 IS1200 Datorteknik föreläsning CE - F980 CPU-scheduling OS Prod 1 Prod 2 Prod 3 Cons 1 Cons 2 time-slice

81 1 August 2015 IS1200 Datorteknik föreläsning CE - F981 En process kan göra yield  Lämna bort resten av sin time-slice  Speciellt vid wait-operation på semafor  Nästa thread bör få en hel time-slice  Vid en semafor finns ”väntande threads”  En signal kan flytta en thread till RQ  Det finns olika varianter vid signal (vilken tråd ska fortsätta efter signal ?)

82 1 August 2015 IS1200 Datorteknik föreläsning CE - F982 Några sidor om  SIGNAL som System Call med TRAP 6  WAIT som System Call med TRAP 7  YIELD som System Call med TRAP 8  EXIT som System Call med TRAP 9  Nios-II-kod för signal, wait och yield ...

83 1 August 2015 IS1200 Datorteknik föreläsning CE - F983 Signal med Nios-II-kod pekare till semafor i r5 # Om anrop görs med SysCall 6 är PIE redan= 0 #DI# enter critical trap6:ldwr24, 0(r5)# hämta värde addir24, r24, 1# lägg till en boll stwr24, 0(r5)# skriv värde #EI# NEJ ! eret# medför även EI

84 1 August 2015 IS1200 Datorteknik föreläsning CE - F984 function: Signal med C-kod inparameter: pekare till semafor void Signal ( int * sem) { oslab_begin_critical_region() ; *sem = *sem + 1 ; oslab_end_critical_region() ; }

85 1 August 2015 IS1200 Datorteknik föreläsning CE - F985 Wait med Nios-II-kod pekare till semafor i r5  Om anrop görs med TRAP7 är PIE redan =0 trap7: ldwr24, 0(r5)# läs nytt semaforvärde bgtr24, r0, ball# hopp om minst en boll noball:PUSHCTL 1# skydda estatus PUSHr29# skydda ea EI# släpp in TimerInt, OBS OBS ! # YIELD# om så önskas med SysCall 8 DI# hindra TimerInt POPr29# återställ ea POPCTL 1# återställ estatus brtrap7# och leta boll igen ball:subir24, r24, 1# ta en boll stwr24, 0(r5)# semaforvärde skrivs tillbaks eret# medför även EI

86 1 August 2015 IS1200 Datorteknik föreläsning CE - F986 function: Wait med C-kod inparameter: pekare till semafor void Wait (int * sem) { oslab_begin_critical_region() ; while ( *sem <= 0) { oslab_end_critical_region() ; /*os_lab_yield();*/ oslab_begin_critical_region() ; } *sem = *sem -1 ; oslab_end_critical_region() ; }

87 1 August 2015 IS1200 Datorteknik föreläsning CE - F987 Program-Kod för context switch (uppdaterad repris) contextswitch: TCBSAVE# spara TCB på lokal stack move r4, sp# kopiera sp till r4 call RQPUT# skriv sp i Ready Queue # här görs ”språnget” mellan 2 processer/trådar exit:call RQGET # läs ny sp från Ready Queue move sp, r2# kopiera r2 till sp TCBUNSAVE # kopiera TCB till processorn... cswret: eret# tillbaks till utvald tråd/process

88 1 August 2015 IS1200 Datorteknik föreläsning CE - F988 Yield med Nios-kod  YIELD-anrop görs med TRAP 8  TRAP 8 görs med SysCall 8 Fråga: Vad ska utföras av YIELD ? Svar: Samma sak som context switch !

89 1 August 2015 IS1200 Datorteknik föreläsning CE - F989 Kod för YIELD Hit kommer man efter YIELD-anrop och det ska göras Context Switch (Timern ska justeras till hel time-slice …) trap8: brcontextswitch

90 1 August 2015 IS1200 Datorteknik föreläsning CE - F990 EXIT med Nios-kod  EXIT-anrop görs med TRAP (t.ex TRAP9)  TRAP 9 görs med SysCall 9 Fråga: Vad ska utföras av EXIT ? Svar: Tråden ska ej placeras i RQ !

91 1 August 2015 IS1200 Datorteknik föreläsning CE - F991 Kod för EXIT Hit kommer man efter EXIT-anrop och det ska göras Context Switch ( Timern ska justeras till hel time-slice …) trap9: brexit

92 1 August 2015 IS1200 Datorteknik föreläsning CE - F992 Hem-laboration 3  En uppgift på tentamen (se extentor)  Lab-PM finns på hemsidan  Labben körs på NiosII-simulatorn !  (Labben ska redovisas muntligt)  (Ensam eller i grupp om 2)

93 1 August 2015 IS1200 Datorteknik föreläsning CE - F993 Hem-laboration 3 CPU-scheduling / semaforer  Idle-tråd kan göra Yield  Producer skriver primtal till FIFO  Consumer läser primtal från FIFO  Antal Producers varieras  Antal Consumers varieras  Antal platser i FIFO varieras  Beteende vid WAIT varieras

94 1 August 2015 IS1200 Datorteknik föreläsning CE - F994 OS Idle (gör inte yield) Prod 1 time-slice Round Robin CPU-scheduling Idle-tråd och en Producer Idle tar cirka 50% av tiden Prod 1 får cirka 50% av tiden

95 1 August 2015 IS1200 Datorteknik föreläsning CE - F995 OS Idle (Idle gör yield) Prod 1 time-slice Round Robin CPU-scheduling Idle-tråd och en Producer Idle tar cirka 0% av tiden Prod 1 får nästan 100% av tiden

96 1 August 2015 IS1200 Datorteknik föreläsning CE - F996 OS Idle (Idle gör yield) Proc 1 Proc 2 Proc 3 time-slice Round Robin CPU-scheduling Idle-tråd och tre Processer Proc 1 får cirka 33% av tiden

97 1 August 2015 IS1200 Datorteknik föreläsning CE - F997 OS Idle Proc 1 Proc 2 Proc 3 Proc 4 Proc 5 time-slice Round Robin CPU-scheduling Idle-tråd och fem Processer Proc 1 får cirka 20% av tiden

98 1 August 2015 IS1200 Datorteknik föreläsning CE - F998 CPU-scheduling endast Idle-tråd som yieldar OS Idle gör yield time-slice Robin Hood Idle får cirka 100% av tiden (bränner/slösar)

99 1 August 2015 IS1200 Datorteknik föreläsning CE - F999 Med time-slice 10 millisekunder Hur många instruktioner? $Antag 1 GHz processor $Antag 1 instruktion per CPU-cykel $1 000 000 000 instruktioner per sekund $1 000 000 instruktioner per millisekund $10 000 000 instruktioner per time slice

100 1 August 2015 IS1200 Datorteknik föreläsning CE - F9100 Windows OS ctrl-alt-del öppnar Windows Task Manager Klicka på Processes och studera längst ner:... System Idle Process SYSTEM många %

101 1 August 2015 IS1200 Datorteknik föreläsning CE - F9101 OS Idle P1 P2 P3 C1 C2 Round Robin Exempel på figur Exempelsamling del 9 time-slice

102 1 August 2015 IS1200 Datorteknik föreläsning CE - F9102 OS Idle Prod 1 Prod 2 Prod 3 Cons 1 Cons 2 time-slice Round Robin Hemlab 3, figurexempel yield i Consumer och i Wait() Första varvetvarv 3 och senare

103 Föreläsning 10 Föreläsning 10, måndag 25 feb kl. 08-10 Mats Brorsson Professor of Computer Architecture zProcessorkonstruktion för låg energiförbrukning. zMaskinvara för parallell exekvering 1 August 2015 IS1200 Datorteknik föreläsning CE - F9103

104 Viktiga delar i en dator CPU MEM BUS I/O program data 1 August 2015104 IS1200 Datorteknik föreläsning CE – F2 1 August 2015 IS1200 Datorteknik föreläsning CE - F9104

105 Programexekvering i två steg (decode) EXECUTE FETCH (update PC) 1 August 2015105 IS1200 Datorteknik föreläsning CE – F2 1 August 2015 IS1200 Datorteknik föreläsning CE - F9105

106 Program Memory m x 8 ALU ADD IR0 IR1 IR2 RWM LOAD och STORE med data forward Register File 32 x 32 Register File 32 x 32 PC+ Imm PC+ 4 PC (Vissa register är “dubletter” !) 1 August 2015106 IS1200 Datorteknik föreläsning CE – F2 1 August 2015 IS1200 Datorteknik föreläsning CE - F9106

107 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2107 CPU med 5 stegs PIPE-LINE Register File 32 x 32 Program Memory n x 16 ALU PC ADD IR0 IR1 IR2 IR3 +2 Register File 32 x 32 RWM PC+n PC+Imm ALU/EXE FO MEM FI WB NYTT 1 August 2015 IS1200 Datorteknik föreläsning CE - F9107

108 September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F2108 Fenomen pga PIPE-LINE 1. Data Dependency 2. Delayed Branch 3. Load Delay 4. Structural Hazard 1 August 2015 IS1200 Datorteknik föreläsning CE - F9108

109 Viktiga delar i en dator CPU MEM BUS I/O program data 1 August 2015109 IS1200 Datorteknik föreläsning CE – F2 I$ D$D$ 1 August 2015 IS1200 Datorteknik föreläsning CE - F9109

110 Level 1 cache – L1$ CPU 1 August 2015110 IS1200 Datorteknik föreläsning CE – F2 I$ D$D$ MEM program data L1 – Level 1 Cache 1 August 2015 IS1200 Datorteknik föreläsning CE - F9110

111 CPU 1 August 2015111 IS1200 Datorteknik föreläsning CE – F2 I$ D$D$ MEM program data L1 – Level 1 Cache L2 cache L2 – Level 2 Cache Register File 4 Gbyte 2 Mbyte 2 * 32 Kbyte 32 x 4 byte 1 August 2015 IS1200 Datorteknik föreläsning CE - F9111

112 CPU 1 August 2015112 IS1200 Datorteknik föreläsning CE – F2 I$ D$D$ MEM program data L1 – Level 1 Cache L2 cache L2 – Level 2 Cache L3 cache L3 – Level 3 Cache Register File 4 Gbyte 256 Kbyte 2 * 32 Kbyte 32 x 4 byte 6 Mbyte 1 August 2015 IS1200 Datorteknik föreläsning CE - F9112

113 1 August 2015 IS1500 Datorteknik o k, föreläsning CE - F1113 Dual-core / Multi-core / Many-core CPU MEM BUS I/O CPU... 1 August 2015 IS1200 Datorteknik föreläsning CE - F9113

114 1 August 2015 IS1500 Datorteknik o k, föreläsning CE - F1114 Dual-core / Multi-core / Many-core Cache Coherence MEM BUS I/O CPU... L3$ L2$ L1-I$L1-D$ CPU L3$ L2$ L1-I$L1-D$ 1 August 2015 IS1200 Datorteknik föreläsning CE - F9114

115 1 August 2015 IS1500 Datorteknik o k, föreläsning CE - F10115 IS1200 Datorteknik allmän kurs Föreläsning 9 Repetition Sammanfattning Lite till 1 August 2015 IS1200 Datorteknik föreläsning CE - F9115

116 1 August 2015 IS1500 Datorteknik o k, föreläsning CE - F10116 IS1200 Dator- teknik IS1200 Datorteknik Digitala kretsar Data- logi Datorsystem- arkitektur Datorkomm. och datornät Operativ- system Compilers... Concurrent Programming Embedded Systems Embedded Software System-on-Chip Architectures 1 August 2015 IS1200 Datorteknik föreläsning CE - F9116

117 1 August 2015 IS1500 Datorteknik o k, föreläsning CE - F10117 IS1200 Datorteknik Datorns funktion på olika nivåer från JAVA/C-kod till NAND-grind zProgramexempel: sum = 0 ; for (i=1; i<1=7; i=i+1) sum = sum + i; zExempel på digitala komponenter: 1 August 2015 IS1200 Datorteknik föreläsning CE - F9117

118 1 August 2015 IS1500 Datorteknik o k, föreläsning CE - F10118 Hur datorer fungerar Detta har ni lärt er !  Kopplingen mellan  Program i C-kod (pascal, java, …)  Program i Assembler (Nios, MIPS, …)  Maskinkod (binärkod, hexkod)  Exekvering av program i binärkod - i CPU med PIPE-LINE  CPU byggs av logiska kretsar och minnen 1 August 2015 IS1200 Datorteknik föreläsning CE - F9118

119 1 August 2015 IS1500 Datorteknik o k, föreläsning CE - F10119 Hur datorer fungerar Dessutom har ni lärt er !  Cache-minne orsak till införsel funktion, parametrar prestandavinster med cache  Fördelning av processortid görs av OS  Samverkan mellan processer synkronisering, ömsesidig uteslutning 1 August 2015 IS1200 Datorteknik föreläsning CE - F9119

120 1 August 2015 IS1500 Datorteknik o k, föreläsning CE - F10120 Tentamen innehåller 1.Maskinaritmetik med mera 2.Assemblerprogrammering,subrutiner 3.Assemblerprogrammering pollning/avbrott 4.Cache-minnen 5.Processorkonstruktion 6.CPU scheduling och semaforer 1 August 2015 IS1200 Datorteknik föreläsning CE - F9120

121 1 August 2015 IS1500 Datorteknik o k, föreläsning CE - F10121 IS1200 Datorteknik... nu vet ni... ”Hur datorer fungerar” http://www.ict.kth.se/courses/IS1200 1 August 2015 IS1200 Datorteknik föreläsning CE - F9121

122 1 August 2015 IS1500 Datorteknik o k, föreläsning CE - F10122 Välkommen till andra kurser – några exempel yDatorsystemarkitektur yCompilers and Execution Environments yOperating Systems yConcurrent Programming yNetwork Programming with Java yEmbedded Systems ySystem-on-Chip Architectures yEmbedded Software y… 1 August 2015 IS1200 Datorteknik föreläsning CE - F9122

123 1 August 2015 IS1500 Datorteknik o k, föreläsning CE - F10123 Embedded Systems Embedded systems are an integral part of daily life Embedded systems must meet versatile requirements high performance, low power, safety-critical and low cost Follow-Up Courses: System-on-Chip Architectures Embedded Software Hearing Aid Mobile Phone Airbag Control Course webpage: www.ict.kth.se/courses/IL2206 Contact: Ingo Sander (ingo@kth.se) Microcontroller and DSP processor as central components Design for performance and low power Introduction to Real-Time Operating Systems Laboratories supporting the theory 1 August 2015 IS1200 Datorteknik föreläsning CE - F9123

124 1 August 2015 IS1500 Datorteknik o k, föreläsning CE - F10124 Datorsystemarkitektur ● Konsten att få CPUn snabb ● Hårdvara som kör flera instruktioner per klockcykel ● Flera CPUer på ett chipp ● Kompilatorteknik för att utnyttja hårdvaran väl 1 August 2015 IS1200 Datorteknik föreläsning CE - F9124

125 1 August 2015 IS1500 Datorteknik o k, föreläsning CE - F10125 IS1200 Datorteknik Tentamen Ons 13 mars kl 14.00--19.00 KTH Kista: Forumhuset (anmälan via Daisy) LYCKA TILL ! Omtentamina t.ex. Efter period 4 VT2013 ”Septemberperioden” 2013 1 August 2015 IS1200 Datorteknik föreläsning CE - F9125


Ladda ner ppt "1 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Föreläsning 9 zDel 1. CPU-scheduling zDel 2. Semaforer zInför föreläsning 10 zSammanfatting."

Liknande presentationer


Google-annonser