datorteknik...1 institutionen för elektro- och informationsteknologi, lth datorteknik föreläsning...

18
1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH 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

Upload: others

Post on 01-Mar-2021

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

1

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik

Föreläsning 4

Polling och avbrott

Institutionen för elektro- och informationsteknologi, LTH

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

Page 2: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

2

Institutionen för elektro- och informationsteknologi, LTH

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?

Institutionen för elektro- och informationsteknologi, LTH

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

Page 3: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

3

Institutionen för elektro- och informationsteknologi, LTH

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:

Institutionen för elektro- och informationsteknologi, LTH

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,...

Page 4: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

4

Institutionen för elektro- och informationsteknologi, LTH

Pappaledig - Strategi 1

De första veckorna använde pappan följande strategi:

Institutionen för elektro- och informationsteknologi, LTH

Strategi 1

Nej

Lek med barnet

Vill barnet sova?

Lägg barnet

Laga mat, städa, diska

Kolla om barnet sover

Har det vaknat?

Barnet kräver uppmärksamhet

Nej

Ja

Ja

Page 5: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

5

Institutionen för elektro- och informationsteknologi, LTH

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.

Institutionen för elektro- och informationsteknologi, LTH

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

Page 6: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

6

Institutionen för elektro- och informationsteknologi, LTH

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

Trösta

Kan ej nu!

Institutionen för elektro- och informationsteknologi, LTH

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

Page 7: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

7

Institutionen för elektro- och informationsteknologi, LTH

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.

Institutionen för elektro- och informationsteknologi, LTH

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

Page 8: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

8

Institutionen för elektro- och informationsteknologi, LTH

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.

Institutionen för elektro- och informationsteknologi, LTH

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.

Page 9: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

9

Institutionen för elektro- och informationsteknologi, LTH

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

Institutionen för elektro- och informationsteknologi, LTH

Strategierna i ett datorsystem

• Strategi 1: Polling. Ex: tangentbord med statusport och dataport.

Läs statusport

Läs dataport

Returnera tecken

S-port=1?Ja

Nej

Page 10: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

10

Institutionen för elektro- och informationsteknologi, LTH

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

Institutionen för elektro- och informationsteknologi, LTH

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

Page 11: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

11

Institutionen för elektro- och informationsteknologi, LTH

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.

Institutionen för elektro- och informationsteknologi, LTH

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

Page 12: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

12

Institutionen för elektro- och informationsteknologi, LTH

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 EPC-

registret

• 6. Börja exekvera avbrottsrutin på adress 0x80000080

Institutionen för elektro- och informationsteknologi, LTH

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

Page 13: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

13

Institutionen för elektro- och informationsteknologi, LTH

Cause-registret

– 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

BD 0 CE 0 IP[5..0] SW 0 ExcCode 0

Institutionen för elektro- och informationsteknologi, LTH

Status-registret

– 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?

CU 0 BEV div IntMask 0 Kuo IEo KUp Iep Kuc IEc

Page 14: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

14

Institutionen för elektro- och informationsteknologi, LTH

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å

Institutionen för elektro- och informationsteknologi, LTH

EPC-registret

– 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

EPC

Page 15: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

15

Institutionen för elektro- och informationsteknologi, LTH

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

Institutionen för elektro- och informationsteknologi, LTH

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

Page 16: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

16

Institutionen för elektro- och informationsteknologi, LTH

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

Institutionen för elektro- och informationsteknologi, LTH

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)

Page 17: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

17

Institutionen för elektro- och informationsteknologi, LTH

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

Institutionen för elektro- och informationsteknologi, LTH

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.

Page 18: Datorteknik...1 Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 4 Polling och avbrott Institutionen för elektro- och informationsteknologi, LTH

18

Institutionen för elektro- och informationsteknologi, LTH

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