1 / 84

IS1200 Datorteknik

IS1200 Datorteknik. Föreläsning 7 Exceptions ht 2009 – vt 2010 (period 2-3) för D-2. Ö10. F10. Hemlab-2. Hemlab-3. Hemlab-1. Ö1. Ö2. Ö4. Ö3. Ö7. Ö8. Ö9. Ö5. Ö6. F7. F9. F8. F3. F5. F4. F2. F6. F1. Tentamen. LAB-3. LAB-1. LAB-2.

gerry
Télécharger la présentation

IS1200 Datorteknik

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IS1200 Datorteknik Föreläsning 7 Exceptions ht 2009 – vt 2010 (period 2-3) för D-2 IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  2. Ö10 F10 Hemlab-2 Hemlab-3 Hemlab-1 Ö1 Ö2 Ö4 Ö3 Ö7 Ö8 Ö9 Ö5 Ö6 F7 F9 F8 F3 F5 F4 F2 F6 F1 Tentamen LAB-3 LAB-1 LAB-2 IS1200 Datorteknikhttp://www.ict.kth.se/courses/IS1200 Assemblerkod 4 stegs pipeline Nios2time C-kod Nios2io Nios2int Cache-minnen CPU-scheduling Hösten 2009 Våren 2010 22 jan 2010 5 feb ...2010 17 feb 2010 22 feb 2010 20 mars 2010 3 mars 2010 IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  3. Litteraturhänvisningar • Kursboken, kapitel 5.2 Avbrott, principer (ej MIPS) • Nios-2-manualen, chap 3 (October 2007) • Exempelsamling del 7 med lösningar • Lab-PM för laboration 3, nios2int IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  4. Viktiga delar i en dator CPU BUS program I/O MEM data IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  5. FETCH (update PC) (decode) EXECUTE Programexekveringi två steg, normalfall IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  6. Exceptions”Undantag” / ”Särfall” Under den normala programexekveringen kan det inträffa ”speciella händelser” av olika slag som hanteras på likartat sätt 1. Interrupts, externa ”händelser”, avbrottssignaler (hardware interrupt) 2. TRAP-instruktioner (software exception) 3. Andra undantag, interna IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  7. Hantering av Exception Då ett exception inträffar avbryts pågående program och exekvering ”hoppar” till en annan programdel som kallas Exception Handler Programkoden i Exception Handler åtgärdar undantaget och därefter sker ”returhopp” till det avbrutna programmet IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  8. Exception Handler Huvudprogram ExceptionHandler exception ”hopp vid exception” intruction retur-adress ”hopp vid retur” returhopp Var placeras koden för ExceptionHandler ? Hur utförs hopp till ExceptionHandler ? Hur utförs hopp till returadressen ? IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  9. 1. Asynchronous ExceptionsExternal Hardware Interrupts • Yttre händelser orsaker avbrott (External)Elektrisk signal till CPU-chippet. • Avbrott kan komma när som helst i förhållande till det program som körs (Asynchronous) • Det måste finnas minst en insignal/pinne (Hardware) på CPU-chippet med funktionenIRQ - Interrupt ReQuest,troligen flera insignaler/pinnar • Nios II har 32, IRQ31—IRQ00 IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  10. Viktiga delar i en datorIRQ-signaler, Interrupt ReQuest CPU IRQ (t.ex.IRQ31—IRQ00) BUS program I/O MEM data IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  11. exc00Hand exc01Hand excNNHand Exceptions in many CPU:sException Vector Table 0 1 2 3 NN Mjukvara eller Hårdvara som automatiskt gör hopp till rätt Exception-Handler samt lite till nämligen ... Exception . . . . . . instr null Exception Vector Table IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  12. Nios-II Exceptions Control Registers Det finns ”fem” Control Registers 0. status - ctl0, read/write (status) • estatus - ctl1, read/write (exception status) • bstatus - ctl2, read/write (break status) • ienable - ctl3, read/write (interrrupt enable) • ipending - ctl4, read (interrupt pending) • . . . (det finns ev. fler men de diskuteras ej här) IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  13. Nios-II control register 0status, ctl0 PIE U 31 2 1 0 Endast en (två) bit(ar) används: PIE = Processor Interrupt Enable (1=enable, 0=disable) (U = User Mode, 1=User Mode, 0=Supervisor Mode) (User och Supervisor mode är INTE implementerat i vår utrustning!) IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  14. Nios-II control-register 0status, ctl0 • Bit med index 0 i status-register betecknas PIE – Processor Interrupt Enable • PIE = 0 förbjuder interrupt (disable interrupts) • PIE = 1 tillåter interrupt (enable interrupts) IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  15. Nios-II instruktioner för attläsa och skriva ctl-regs • Läsning, kopiera från ctli till rj RDCTL rj, ctli • Skrivning, kopiera till ctli från rj WRCTL ctli, rj (RDCTL och WRCTL kan bara exekveras i supervisor mode. Ger access-violation exception i user mode. Vi använder alltid supervisor mode i våra labbar) IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  16. Nios-II control register 1 estatus, ctl1 (exception status) • Då en exception accepteras, kopieras status till estatus så att ”gamla” status-värden kan läsas/skrivas av koden i Exception Handler • Vid retur från Exception Handler, med instruktionen eret, kopieras estatus tillbaks till status IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  17. Nios-II control register 3ienable, ctl3 (interrupt enable) ctl3 är ett 32 bitars register (32 vippor) För var och en av de 32 IRQ-signalerna finns en maskbit vars • värde 0 förbjuder avbrott (disable) • värde 1 tillåter avbrott (enable) • Se figur 3-1 i manualen (October 2007) IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  18. ctl3 Flip-Flops ! No Flip-Flops ! ctl4 Signal Levels ! ctl0 bit 0 EI / DI IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  19. Nios-II control register 4ipending, ctl4 (interrupt pending) ctl4 är 32 avläsbara signaler (inga vippor) För var och en av de 32 IRQ-signalerna finns en bit som programvaran kan läsa och som anger • värde 0 inget avbrott begärs eller är förbjudet • värde 1 avbrott begärs och är tillåtet • Se figur 3-1 i manualen (October 2007) IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  20. ExceptionsNios-II: Alltid ”hopp” till 0x800020 huvudprogram Fast adress exception 0x800020: jmp ExcHandler ”hopp vid anrop” instruction returadress IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  21. Exception-HandlerNios-II: orsak till exception ? huvudprogram ExcHandler valbar adress fast adress ? exception 0x800020: valbar adress jmp ExcHandler IntHandler ”hopp vid anrop” OPCODE reg ? returadress valbar adress TrapHandler ? valbar adress ElseHandler IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  22. IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  23. Interrupt or Trap ?figur 3-2 i manualen ExcHandler: # r24/et = exception temporary rdctl r24, ctl1 # copy ctl1/estatusandi r24, r24, 0b1 # select index 0beq r24, r0, NoInt # if EPIE == 0 rdctl r24, ctl4 # copy ctl4/ipendingbeq r24, r0, NoInt # if ctl4 == 0 IntHandler: ... # Interrupt Handler ... NoInt: ... # code see below IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  24. Interrupt-Handlerletar fram aktuell IRQ-handler valbara adresser irq00-int IntHandler valbar adress retur IRQ-00? IRQ-01? IRQ-02? . IRQ-04? . . . IRQ-31? ??? irq04-int retur irq31-int retur IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  25. Vilken Interrupt ?figur 3-2 i manualen IntHandler:subi r29, r29, 4 # justera ea/returadress rdctl r24, ctl4 # läs ipendingandi r24, r24, 0b1 # IRQ-00?bne r24, r0, irq00-int # int on IRQ-00 rdctl r24, ctl4 # läs ipendingandi r24, r24, 0b10 # IRQ-01?bne r24, r0, irq01-int # int on IRQ-01 . . . # ytterligare upp till IRQ-15 och sedan 16-31rdctl r24, ctl4 # läs ipendingandhi r24, r24, 0x0001 # IRQ-16? !!!bne r24, r0, irq16-int # int on IRQ-16. . . IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  26. 2. Synchronous ExceptionsTRAP instruction • Exception med hjälp av TRAP-instruktion • Placeras av programmeraren på önskad och känd plats (Synchronous)Används t.ex. för OS System Call (SysCall) • Nios-2: TRAP erbjuder en enda TRAP till den enda fasta adressen = 0x800020 • Parameter (i r4) möjliggör olika SysCall IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  27. Exception-HandlerInterrupt eller Trap ? huvudprogram valbar adress ExcHandler fast adress ? exception 0x800020: valbar adress jmp ExcHandler IntHandler ”hopp vid anrop” OPCODE reg ? returadress valbar adress TrapHandler ? valbar adress ElseHandler REPRIS IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  28. Interrupt or Trap ? (cont.)figur 3-2 i manualen REPRIS ExcHandler: # r24/et = exception temporary rdctl r24, ctl1 # copy ctl1/estatusandi r24, r24, 0b1 # select index 0beq r24, r0, NoInt # if PIE == 0 rdctl r24, ctl4 # copy ctl4/ipendingbeq r24, r0, NoInt # if ctl4 == 0 IntHandler: ... # Interrupt Handler ... NoInt: ... # code see below IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  29. REPRIS IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  30. Interrupt or Trapfigur 3-2 i manualen . . . NoInt: # Alternativ 1 push r8 # skydda/låna r8 ldw r24, -4(r29) # kopiera instruktion movia r8, trapcode # kopiera TRAP code beq r8, r24, TrapHandler # yes, TRAP pop r8 # återställ/återlämna r8 NoTrap: . . . .equ trapcode, 0x003B683A # op-code of TRAP OBS r1 kan inte användas! (kan ju innehålla värdefull information) Lösning: Använd stacken för att skydda t.ex. r8 IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  31. Interrupt or Trapfigur 3-2 i manualen . . . NoInt: # Alternativ 2push r8 # skydda/låna r8 ldw r24, -4(r29) # kopiera instruktion movia r8, trapdum # kopiera TRAP code ldw r8, 0(r8) # till r1 beq r8, r24, TrapHandler # yes, TRAPpop r8 # återställ/återlämna r8 NoTrap: . . . .data # eller i .text .align 2 # på adress delbar med 4 trapdum: trap # op-code of TRAP IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  32. Vilken TRAPSystem Call med TRAP TrapHandler:pop r8 # återställ r8 movi r24, 0 # konstant 0 till r1 beq r4, r24, SysCall-0 # javisst movi r24, 1 # konstant 1 till r1 beq r4, r24, SysCall-1 # javisst . . . # och så vidare IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  33. TrapHand: IntHand: subi r29, r29, 4 Yes Yes No No Yes Yes No No Yes Yes IRQ00 IRQ31 IRQ01 Trap ? trap0 trapn trap1 Int ? No No trap0Hand trap1Hand irq00Hand irq01Hand ElseHand irq31Hand trapnHand error error eret eret Exceptions in Nios-IISuggested software structure ExcHand: Yes No Yes No int instr 0x800020:”jmp ExcHand” trap IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  34. irq00Hand irq01Hand irq31Hand Interrupts in many CPU:sInterrupt Vector Table NästanREPRIS 0 1 2 3 31 Mjukvara eller Hårdvara som automatiskt gör hopp till rätt Interrupt Handler samt lite till nämligen ... Interrupt instr null Interrupt Vector Table IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  35. trap0Hand trap1Hand trapnHand Traps in many CPU:sTrap Vector Table 0 1 2 3 n Mjukvara eller Hårdvara som automatiskt gör hopp till rätt TrapHandler Exception TRAP null Trap Vector Table IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  36. Registrera en Interrupt Handlervad menas med det ? Koppla ihop en Interrupt Handler kodmed en avbrottssignal med ett visst index dvs Skriv in startadress på rätt plats i avbrottsvektortabellen Kallas ibland ”register an interrupt” Nios-II: Det finns en C-function för detta: retval = alt_irq_register(3 parameters); IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  37. Initiera för avbrottflera steg i Nios-II • Kopiera ”stubbe” till adress 0x800020 • För varje avbrottskällaSkriv kod för en Interrupt Handler och registrera i avbrottsvektortabellen, • Initiera IO-enhet, olika för varje IO-enhet • Initiera bitar i IENABLE / ctl3 • Initiera PIE-biten i STATUS / ctl0 IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  38. 3. Synchronous ExceptionsInternal Exceptions ”Inre” händelser kan orsaka exception (Internal Synchronous Exception) ”Upptäcks” av hårdvara internt i CPU:n Exempel (olika typ av ”error”) Unimplemented/Illegal instructions Overflow (arithmetic/logic operation) Misaligned Memory Reference Divide by zero Access violation (in User Mode ...) ... IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  39. Exceptions i Nios-IIInterrupt Vector Table ? • Programräknaren får ett nytt värde som anges av hårdvaran till 0x800020 • Avbrottsvektortabell används EJ av hårdvaran i Nios-II • Returadress sparas på lämplig plats (ea/r29) • Mjukvaran kan administreras i tabell-form som liknar en avbrottsvektortabell IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  40. Priority - prioritetViktiga frågor • Exekverar processorn på en viss prioritet ?Var finns information om CPU-priority ? • Har varje exception olika prioritet ? • Prioritet för en external interrupt ? • Prioritet för en TRAP-instruktion ? • Prioritet för en internal exception ? IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  41. Nios-II Priority • Interrupt har en viss prioritet, 31—00 (hur avgörs prioritet ?) • TRAP-instruktion, är ohejdbar (non-maskable) varför? • Internal exception, är ohejdbar (non-maskable) varför? IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  42. Nios-II Exceptions Enable/Disable Exception • Globally Enable/Disable Interrupt by PIE-bit in ctl0 / status control register • Selectively Enable/Disable Interrrupt by bits in ctl3 / ienable control register • TRAP instructions can not be disabled (non-maskable) • Internal exceptions can not be disabled (non-maskable) • Selectively Enable/Disable each I/O (lab3) • Acknowledge interrupt signals from I/O”clear/reset” interrupt hardware signal IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  43. Nios-II ExceptionsException Processing Sequenceperformed by hardware 1. Copy status into estatus (ctl0 into ctl1) 2. Set PIE to 0, disabling all interrupts (in ctl0) (3. Set U to 0, execute in supervisor mode, in ctl0) 4. Save returnaddress in ea=r29 5. Set PC to predefined value (0x800020) 6. Continue fetch-execute (Remark: return address must be decremented by 4 before executing eret in interrupt handlerbut not in trap handler, why?) IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  44. Nios II: eretexception return-instruction performed by hardware eret #return from exception using #content of r29 as return address 1. status  estatus copy ctl1 back to ctl0 2. PC  ea / r29 3. Continue fetch-execute IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  45. Ändra i ctl-registerRead – Modify - Write Exempel på användbara instruktioner • RDCTL ri, ctlj # läs/kopiera ctlj till ri • WRCTL ctlj,ri # skriv/kopiera ri till ctlj • ANDI ri, rj, ”mask” # ”nollställ” bitvis # ”maska fram” • ORI ri, rj, ”mask” # ”ettställ” bitvis • XORI ri, rj, ”mask” # ”invertera” bitvis IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  46. IS1200 Datorteknik Laboration 3 Ny/ändrad from våren 2010 tips om I/O-interrupts IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  47. CPU I/O I/O I/O I/O I/O MEM Nios-2 Interrupt signals IRQ31--00 bus logic BUS TIMER_1IRQ10 KEYS-4IRQ2 TOGGLES-18IRQ3 Uart_0IRQ4 Uart_1IRQ5 IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  48. Nios-2 Interrupt signals • 32 separata IRQ som kan aktiveras av extern hårdvara • Aktiva IRQ kan pollas av program • Figur 3-1 i manualen IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  49. Laboration 3: ExceptionsBakgrundsprogram • Bakgrundsprogram beräknar och skriver ut primtal Main: 471137 is prime Main: 471139 is prime Main: 471161 is prime . . . IS1200 Datorteknik ht2009, föreläsning 7, (D2)

  50. Laboration 3: HA1 Exceptions med nios II-kod Home Assignment – HA HA1: lägger till avbrott från timer_1 som (dessutom) varje sekund ger utskrift av tid 59:57 59:58 59:59 Main: 471137 is prime 00:00 00:01 00:02 Main: 471139 is prime 00:03 00:04 00:05 00:06 Main: 471161 is prime 00:07 00:08 00:09 IS1200 Datorteknik ht2009, föreläsning 7, (D2)

More Related