Datorteknik. Föreläsning 4. Polling och avbrott. Institutionen för elektro- och informationsteknologi, LTH. Mål

Relevanta dokument
Institutionen för elektro- och informationsteknologi, LTH

Mål. Datorteknik. Introduktion. Innehåll. Verklig situation - pappaledighet. Introduktion (forts)

Polling (cyklisk avfrågning) Avbrott

Datorsystemteknik Föreläsning 7DAVA14

Institutionen för elektro- och informationsteknologi, LTH

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

Tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A

Lösningar till tentamen i EIT070 Datorteknik

Tentamen i EIT070 Datorteknik

Digital- och datorteknik

In- och Utenheter. Fö 3: In/Ut matning och kopplingsstruktur. Några exempel. Egenskaper. In- och Utenheter. Styrning.

Föreläsningsanteckningar 3. Mikroprogrammering II

3. Mikroprogrammering II

LABORATION. Datorteknik Y

F8: Undantagshantering

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

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

Stack och subrutiner Programmeringskonventionen

LABORATION. Datorteknik Y

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål

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

Institutionen för elektro- och informationsteknologi, LTH

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

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

F5: Högnivåprogrammering

F5: Högnivåprogrammering

Assemblerprogrammering del 3

Maskinorienterad programmering

Övningsuppgifter i Datorteknik, EIT070

Maskinorienterad programmering

Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK.

I DAG fo 4. Printerport v3 med READY o DAV. Avbrott. Hur bra blev det egentligen????

Maskinorienterad programmering

A-del motsvarande KS1

Datorsystemteknik DVGA03 Föreläsning 8

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

CE_O3. Nios II. Inför lab nios2time

Datorsystemteknik DVGA03 Föreläsning 5

Datorsystem Laboration 2: Minnesmappade bussar

Laboration 2 i Datorteknik- Assemblerprogrammering II

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

Datorteknik ERIK LARSSON

Datorsystemteknik DAVA14 Föreläsning 10

IT för personligt arbete F5

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: Tid: 14:00-18:00.

Tentamen den 18 mars svar Datorteknik, EIT070

Datakommunikation med IR-ljus.

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

Tentamen. Datorteknik Y, TSEA28

Övning2 Datorteknik, HH vt12 - Programmering

Digital- och datorteknik

Avbrottshantering. Övningsuppgifter

Digital- och datorteknik

Digital- och datorteknik

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

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

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

Pipelining i Intel Pentium II

Programallokering. Programtyper. Att placera program i flashrespektive. Program i FLASH-minne. Program i RAM-minne

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok.

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

Datorsystemteknik DAV A14 Föreläsning 1

Tentamen. Datorteknik Y, TSEA28

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.

Introduktion till programmering och Python Grundkurs i programmering med Python

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning

Processprogrammering och operativsystem Introduktion. Kursinformation. Varför operativsystem?

Avbrottshantering. Övningsuppgifter Lösningsförslag Uppgift (Reservation för diverse fel!)

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

Operativsystem ID2200 Tentamen TEN1 3.8 hp :00-18:00

Tentamen. Datorteknik Y, TSEA28

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Tentamen i Introduktion till programmering

In- och utenheter. Händelsebaserad programmering i GLUT. Interrupt-baserad interaktion. Sampling / polling. Händelsebaserad interaktion (forts.

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

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

LEU240 Mikrodatorsystem

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Instruktioner för uppdatering av enheter med ISP

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

Datorteknik. Tomas Nordström. Föreläsning 7 Avbrott. För utveckling av verksamhet, produkter och livskvalitet.

DatorsystemteknikDAVA14 Föreläsning 9

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

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

TSEA28 Datorteknik Y (och U)

Kort beskrivning av Sveriges första dator BESK

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

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

Föreläsningsanteckningar till Konstruktionsmetoder

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Övningsuppgifter i Mikrodatorteknik 4p/5p

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 2. Programmering i C och assembler MIPS instruktionsarkitektur. Institutionen för elektro- och informationsteknologi, LTH

Transkript:

Datorteknik Föreläsning 4 Polling och avbrott Mål Att känna till begreppet polling (cyklisk avfrågning) och hur det implementeras Att förstå varför avbrottstyrd exekvering är överlägset polling Att veta vilken information som krävs för att kunna implementera avbrott Att veta hur avbrottsrutiner programmeras i MIPS 1

Innehåll Exempel på polling och avbrott ur verkliga livet Hur implementeras polling som flödesschema? Vad kan avbrott användas till? Vad krävs för att implementera avbrott? Vilka strukturer finns i MIPS för avbrott? Hur skriver vi en avbrottsrutin i MIPS-systemet? Introduktion Ibland måste datorsystemet utföra operationer som beror på saker som händer i omgivningen. Exempel: Läsning av data från yttre enheter Datainsamling med jämna tidsintervall Oväntade situationer som måste tas om hand 2

Introduktion (forts) Det finns två fundamentalt olika tekniker för att respondera på omgivningen: - Polling (cyklisk avfrågning) - Avbrott Båda två har sitt berättigande. Ett exempel, taget ur en helt annan situation än datorvärlden: Verklig situation - pappaledighet Det var en gång en man som var pappaledig. Hans uppgifter var då att: Passa och leka med barnet Laga mat Städa Diska etc,etc,... 3

Pappaledig - Strategi 1 De första veckorna använde pappan följande strategi: Strategi 1 Barnet kräver uppmärksamhet Lek med barnet Vill barnet sova? Ja Lägg barnet Nej Laga mat, städa, diska Kolla om barnet sover Har det vaknat? Ja 4

Strategi 1 Problem: Mycket tid går åt till att leka med barnet Barnet måste somna först innan mat, städning etc kan göras Resultat i verkligheten: rörigt, odiskat. Strategi 2 Situationen blev snart ohållbar Strategi 2 utvecklades: Pappan håller på med husliga sysslor När barnet kallar på uppmärksamhet, släpper pappan det han har för händer och ser till barnet När barnet lugnat sig och leker självt, återupptar han det han höll på med 5

Strategi 2 Pappans verksamhet Barnets rop på pappa Gör så barnet kan leka Skala potatis Stek pannbiff Häll av potatisvatten * Duka Trösta Trösta Kan ej nu! Trösta Strategi 2 OBS att pappan inte kan gå ifrån till barnet när det heta potatisvattnet hälls av! Strategi 2 visade sig vara mycket effektivare än strategi 1. Barnet fick uppmärksamhet så snart det begärde det Sedan återupptogs bakgrundssysslorna 6

Pappaledig (forts) Ett par år senare upprepades det hela, nu med 2 barn Strategi 1 hade varit omöjlig I strategi 2 måste prioriteter införas, tex: Det mindre barnet måste ses till före det stora barnet, normalt sett, om båda gråter. Strategi 1 Ett exempel på polling Vi väntar på att en händelse ska inträffa (här: barnet somnar) innan vi går vidare 7

Strategi 2 Exempel på ett system med avbrottshantering Yttre händelser (gråtande barn) avbryter den normala exekveringen (matlagning) och något förutbestämt, en avbrottsrutin, (tröstning) utförs. Strategi 1 kontra Strategi 2 Allvarlig brist i strategi 1 - tar för mycket tid Strategi 2 är mer effektivt - vi kan ägna oss åt det viktiga när det verkligen behövs. 8

Strategi 2 Vissa problem kan uppstå, t ex: Ibland går det bra att bli avbruten, men inte vid vissa tillfällen Vi måste veta vilket barn som påkallar uppmärksamhet Kallar båda barnen samtidigt, måste vi veta i vilken ordning vi ska hjälpa dem Vi måste veta var vi blev avbrutna, så att vi kan fortsätta Strategierna i ett datorsystem Strategi 1: Polling. Ex: tangentbord med statusport och dataport. Läs statusport S-port=1? Ja Läs dataport Nej Returnera tecken 9

Strategi 2: Avbrott För att kunna använda oss av avbrott måste vi veta följande: När är det tillåtet att bli avbruten och av vad? Vad har orsakat avbrottet? Vad gjorde vi när vi blev avbrutna? Vilken prioritet har avbrotten relativt varandra? I MIPS finns specialregister för detta Hårdvarustöd för avbrott Status styr funktionen hos avbrottshanteringen Cause talar om för programmet vilken typ av avbrott som inträffat EPC Exception Program Counter, återhoppsadress 10

Avbrott i MIPS MIPS understödjer elva maskinvarudefinierade avbrott åtta användardefinierade avbrott En del avbrott är interna (exceptions) andra externa (interrupts) Exempel på maskinvarudefinierade avbrott: Reset omstart av datorn. Processorn startar på en fördefinierad adress. Externt. Aritmetiskt fel internt avbrott Systemanrop exekvering av instruktionen syscall. Internt. Odefinierad instruktion Internt avbrott. Användardefinierade avbrott Det finns sex externa och två interna användardefinierade avbrott Externa avbrott: Avbrottsingångar: int0, int1, int5 Interna avbrott: Två bitar i ett register som programmeraren kan använda för att generera ett avbrott Varje användardefinierat avbrott kan stängas av individuellt 11

Vad händer vid ett avbrott? 1. Programmet avbryts mitt i eller efter den instruktion som för närvarande exekverar 2. Om avbrottet inte får betjänas ska exekveringen fortsätta (gäller användardefinierade avbrott) 3. Stäng av avbrott och sätt processorn i privilegierat systemtillstånd 4. Cause-registret uppdateras med information om avbrottet 5. Lägg adressen till nästa instruktion i det avbrutna programmet i EPCregistret 6. Börja exekvera avbrottsrutin på adress 0x80000080 Hur använder man avbrott? Koppla en enhet till någon av de sex avbrottsingångarna (t.ex en knapp, eller en klocksignal för tidstillämpningar) Skriv en subrutin som ska köras när det blir avbrott lägg den på adress 0x80000080 i minnet använd EPC som återhoppsadress Tänk på att spara undan register! Initiera avbrottet i huvudprogrammet med hjälp av statusregistret (tillåt detta avbrott) Starta programmet När du t.ex. trycker på knappen körs subrutinen 12

Cause-registret BD 0 CE 0 IP[5..0] SW 0 ExcCode 0 IP [5..0] Interrupt pending. En bit för vardera int0, int1,, int5 SW [1..0] Software interrupt pending. Två bitar. ExcCode En kod som talar om vilken typ av avbrott som är aktuell. T.ex. 0 vid anv.def. avbrott. CE Co-processor error Status-registret CU 0 BEV div IntMask 0 Kuo IEo KUp Iep Kuc IEc IE Interrupt enable (current/previous/old) KU Kernel/User mode (current/previous/old) IntMask [7..0] individuell styrning av användardefinierade avbrott CU [3..0] Co-processor nr 0, 1, 2, 3 användbar? 13

Statusregistret När ett avbrott inträffar och accepteras sker följande: Ieo <- Iep, KUo <- Kup Iep <- Iec, Kup<- KUc Iec <- 0 (Hindra anv. def. avbrott), Kuc <- 0 (Priv. mode) Det gamla tillståndet sparas alltså EPC-registret EPC När ett avbrott sker sparar processorn adressen på den instruktion som ska exekveras efter avbrottet Vissa avbrott kräver att instruktionen ska exekveras om och då är EPC adressen till den instruktionen 14

Läsning och skrivning Status, Cause och EPC kan läsas med: mfc0 t0,c0_status mfc0 t1,c0_cause mfc0 t3,c0_epc OBS! Det tar en instruktionscykel innan värdet finns tillgängligt Status, Cause och EPC kan skrivas med: mtc0 t0,c0_status mtc0 t1,c0_cause mtc0 t3,c0_epc Programmering av avbrott int_routine: subu sp,sp,x # Allokera plats på stacken # spara register på stacken mfc0 k0,c0_cause # Läs Cause # Kolla vilket avbrott # Hoppa till rätt rutin # Återställ register addu sp,sp,x # återställ stack mfc0 k0,c0_epc.set noreorder jr k0 rfe # återställ statusregistret # rfe i hoppluckan efter jr.set reorder 15

Initiering av avbrott Kopiera avbrottsrutinen till adress 0x80000080 Sätt Interrupt mask i statusregistret som motsvarar de avbrott som ska användas Sätt Interrupt enable (IEc) i statusregistret till 1 Initiering av avbrott.set noreorder int_stub: j int_routine nop.set reorder Denna lilla rutin kopieras till 0x80000080 Den enda funktionen är att anropa den riktiga avbrottsrutinen (int_routine) 16

Kopiering av rutinen till rätt plats start: la t0,int_stub # int_stub s adress la t1,0x80000080 # avbrottsadress lw t2,0(t0) # Läs instr 1 sw t2,0(t1) # Skriv instr 1 lw t2,4(t0) # Läs instr 2 sw t2,4(t1) # Skriv instr 2 Initiera statusregistret mfc0 k0,c0_sr # hämta statusregister ori k0,k0,1 # sätt IEc-biten # sätt int3 och int4-bitarna ori k0,k0,ext_int3 EXT_INT4 mtc0 k0,c0_sr # uppdatera statusreg k0 och k1 får användas fritt i avbr-rutin. 17

Sammanfattning Vi har sett två strategier för hantering av yttre händelser, polling och avbrott Vi vet vad man måste känna till för att kunna implementera avbrottshantering Vi har sett hur avbrottsmekanismen implementeras i MIPS Vi har sett tre nya register, EPC, Status och Cause Vi kan initiera avbrottshantering i MIPS-assembler 18