4 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Övning 10
IS1200 Datorteknik 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 4 August IS1200 Datorteknik föreläsning CE - F9
4 August 2015 IS1500 Datorteknik o k, föreläsning CE - F103 Tentamen innehåller 1.Maskinaritmetik med mera 2.Assemblerprogrammering,subrutiner 3.Assemblerprogrammering pollning/avbrott 4.Cache-minnen 5.Processorkonstruktion 6.CPU scheduling och semaforer 4 August 2015 IS1200 Datorteknik föreläsning CE - F93
4 August 2015 IS1200 Datorteknik föreläsning CE - F94 CPU-scheduling Round Robin OS Tråd 1 Tråd 2 Tråd 3 time-slice time-out context switches...
4 August 2015 IS1200 Datorteknik föreläsning CE - F95 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..
4 August 2015 IS1200 Datorteknik föreläsning CE - F96 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 !
4 August 2015 IS1200 Datorteknik föreläsning CE - F97 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
4 August 2015 IS1200 Datorteknik föreläsning CE - F98 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 !
4 August 2015 IS1200 Datorteknik föreläsning CE - F99 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
4 August 2015 IS1200 Datorteknik föreläsning CE - F910 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
4 August 2015 IS1200 Datorteknik föreläsning CE - F911 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
4 August 2015 IS1200 Datorteknik föreläsning CE - F912 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
4 August 2015 IS1200 Datorteknik föreläsning CE - F913 Samverkande processer Användning av semaforer vid Synkronisering Ömsesidig uteslutning
4 August 2015 IS1200 Datorteknik föreläsning CE - F914 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
4 August 2015 IS1200 Datorteknik föreläsning CE - F915 Semafor korgbollsanalogi KORG BOLL
4 August 2015 IS1200 Datorteknik föreläsning CE - F916 anrop … wait … wait … wrfifo … signal … signal … retur PUT-FIFO nrempty wrmut nrfull
4 August 2015 IS1200 Datorteknik föreläsning CE - F917 GET-FIFO nrempty rdmut nrfull retur … signal … signal … rdfifo … wait … wait … anrop
4 August 2015 IS1200 Datorteknik föreläsning CE - F918 CPU-scheduling OS Prod 1 Prod 2 Prod 3 Cons 1 Cons 2 time-slice
4 August 2015 IS1200 Datorteknik föreläsning CE - F919 function: Signal med C-kod inparameter: pekare till semafor void Signal ( int * sem) { oslab_begin_critical_region() ; *sem = *sem + 1 ; oslab_end_critical_region() ; }
4 August 2015 IS1200 Datorteknik föreläsning CE - F920 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() ; }
4 August 2015 IS1200 Datorteknik föreläsning CE - F921 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
4 August 2015 IS1200 Datorteknik föreläsning CE - F922 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
4 August 2015 IS1200 Datorteknik föreläsning CE - F923 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
4 August 2015 IS1200 Datorteknik föreläsning CE - F924 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
4 August 2015 IS1200 Datorteknik föreläsning CE - F925 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)
4 August 2015 IS1200 Datorteknik föreläsning CE - F926 Med time-slice 10 millisekunder Hur många instruktioner? $Antag 1 GHz processor $Antag 1 instruktion per CPU-cykel $ instruktioner per sekund $ instruktioner per millisekund $ instruktioner per time slice
4 August 2015 IS1200 Datorteknik föreläsning CE - F927 Windows OS ctrl-alt-del öppnar Windows Task Manager Klicka på Processes och studera längst ner:... System Idle Process SYSTEM många %
4 August 2015 IS1200 Datorteknik föreläsning CE - F928 OS Idle P1 P2 P3 C1 C2 Round Robin Exempel på figur Exempelsamling del 9 time-slice
4 August 2015 IS1200 Datorteknik föreläsning CE - F929 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
Viktiga delar i en dator CPU MEM BUS I/O program data 4 August IS1200 Datorteknik föreläsning CE – F2 4 August 2015 IS1200 Datorteknik föreläsning CE - F930
Programexekvering i två steg (decode) EXECUTE FETCH (update PC) 4 August IS1200 Datorteknik föreläsning CE – F2 4 August 2015 IS1200 Datorteknik föreläsning CE - F931
September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F232 Fenomen pga PIPE-LINE 1. Data Dependency 2. Delayed Branch 3. Load Delay 4. Structural Hazard 4 August 2015 IS1200 Datorteknik föreläsning CE - F932
Program Memory m x 8 ALU ADD IR0 IR1 IR2 RWM CPU med 4 stegs PIPE-LINE Register File 32 x 32 Register File 32 x 32 PC+ Imm PC+ 4 PC (Vissa register är “dubletter” !) 4 August IS1200 Datorteknik föreläsning CE – F2 4 August 2015 IS1200 Datorteknik föreläsning CE - F933
September 15, 2010 IS1500 Datorteknik o k, föreläsning CE - F234 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 4 August 2015 IS1200 Datorteknik föreläsning CE - F934
2.Branch Delay Slot (Fenomen pga PIPE-LINE) Instruktionen i minnespositionen närmast efter en hoppinstruktion kommer hämtas och utföras innan hoppet verkställs Programexempel 16: BRA 64 20: ADD …# hämtas och utförs 24: … … 84: SUB... 4 August IS1200 Datorteknik föreläsning CE – F2
Efter FI av 16: BRA 64 Execute Fetch Operand Write Back Fetch Instruction 16: BRA 64 20: ADD … ALU ADD IR0 IR1 IR2 20 BRA : BRA 64 20: ADD … 24: … … 84: SUB … 88:... Register File 32 x 32 Register File 32 x 32 PC PC+ Imm PC August IS1200 Datorteknik föreläsning CE – F2 84
Efter FI av 20: ADD Execute Fetch Operand Write Back Fetch Instruction ALU ADD IR0 IR1 IR2 ADD BRA 64 80: … 84: SUB … 84 Register File 32 x 32 Register File 32 x 32 PC 16: BRA 64 20: ADD … 24: … … 84: SUB … 88: August IS1200 Datorteknik föreläsning CE – F PC+ Imm PC+ 4
Efter FO av 20: ADD Execute Fetch Operand Write Back Fetch Instruction ALU ADD IR0 IR1 IR2 SUB BRA ADD Register File 32 x 32 Register File 32 x 32 PC 16: BRA 64 20: ADD … 24: … … 84: SUB … 88: August IS1200 Datorteknik föreläsning CE – F2 4 84: SUB … 88: … PC+ Imm PC+ 4
FIFO EXEWB 4 Avkoda instruktion samt leta fram operander 2 Leta fram instruktion ur Program Memory 5 Skriv nytt värde till Program Counter = hoppa 3 Skriv instruktion till Instruction Register 1 Skriv nytt värde till Program Counter clock Skrivning utförs vid positiv flank på clock, samtidigt till varje vippa/register/minne Ovillkorliga hopp (BRA/JUMP) när kan hoppet tidigast utföras ? (Ledig tid: ”Kislet kallnar” eller... ) (Skriv till R0 eller inte alls) (Skriv till tmp-reg eller inte alls) 4 August IS1200 Datorteknik föreläsning CE – F2
Viktiga delar i en dator CPU MEM BUS I/O program data 4 August IS1200 Datorteknik föreläsning CE – F2 I$ D$D$ 4 August 2015 IS1200 Datorteknik föreläsning CE - F940
Level 1 cache – L1$ CPU 4 August IS1200 Datorteknik föreläsning CE – F2 I$ D$D$ MEM program data L1 – Level 1 Cache 4 August 2015 IS1200 Datorteknik föreläsning CE - F941
CPU 4 August 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 4 August 2015 IS1200 Datorteknik föreläsning CE - F942
CPU 4 August 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 4 August 2015 IS1200 Datorteknik föreläsning CE - F943
4 August 2015 IS1500 Datorteknik o k, föreläsning CE - F144 Dual-core / Multi-core / Many-core CPU MEM BUS I/O CPU... 4 August 2015 IS1200 Datorteknik föreläsning CE - F944
4 August 2015 IS1500 Datorteknik o k, föreläsning CE - F145 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$ 4 August 2015 IS1200 Datorteknik föreläsning CE - F945