Datorsystemteknik Föreläsning 7DAVA14



Relevanta dokument
Polling (cyklisk avfrågning) Avbrott

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

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

Institutionen för elektro- och informationsteknologi, LTH

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

Stack och subrutiner Programmeringskonventionen

Lösningar till tentamen i EIT070 Datorteknik

Datorsystemteknik DVGA03 Föreläsning 5

Datorsystemteknik DVG A03 Föreläsning 3

Datorsystemteknik DVGA03 Föreläsning 8

Tentamen i EIT070 Datorteknik

Datorsystemteknik DAV A14 Föreläsning 1

Digital- och datorteknik

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

F8: Undantagshantering

Föreläsningsanteckningar 3. Mikroprogrammering II

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

Datorsystemteknik DAV A14 Föreläsning 1

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

3. Mikroprogrammering II

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

Institutionen för elektro- och informationsteknologi, LTH

DatorsystemteknikDAVA14 Föreläsning 9

LABORATION. Datorteknik Y

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

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

Assemblerprogrammering del 3

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

Datorsystemteknik DAVA14 Föreläsning 10

LABORATION. Datorteknik Y

Maskinorienterad programmering

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

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.

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

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

Tentamen den 18 mars svar Datorteknik, EIT070

Maskinorienterad programmering

Datakommunikation med IR-ljus.

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

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

Laboration 2 i Datorteknik- Assemblerprogrammering II

Föreläsningsanteckningar till Konstruktionsmetoder

Övningsuppgifter i Datorteknik, EIT070

Digital- och datorteknik

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

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

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28

A-del motsvarande KS1

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

Tentamen. Datorteknik Y, TSEA28

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

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

Avbrottshantering. Övningsuppgifter

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

Digital- och datorteknik

Digital- och datorteknik

Datorsystem Laboration 2: Minnesmappade bussar

Datorteknik ERIK LARSSON

Maskinorienterad programmering

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

Mål. Datorteknik. Innehåll. Vad händer med en add-instruktion? Vad händer med en add-instruktion. Instruktioner som bitmönster i minnet

F5: Högnivåprogrammering

F5: Högnivåprogrammering

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

Övning2 Datorteknik, HH vt12 - Programmering

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

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

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

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

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

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

TSEA28 Datorteknik Y (och U)

Pipelining i Intel Pentium II

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

Hannes Larsson - IDA 2, LTH Campus Helsingborg. NEC V R 4300i. Interlock-handling EDT621

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

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

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

Datorsystemteknik D. Lösningar till tentamen i kursen EDA330 14/1 2000

IT för personligt arbete F5

Tentamen. Datorteknik Y, TSEA28

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

CE_O3. Nios II. Inför lab nios2time

Tentamen. Datorteknik Y, TSEA28

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

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

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

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

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

Digital- och datorteknik

TSEA28 Datorteknik Y (och U)

Transkript:

Datorsystemteknik Föreläsning 7DAVA14 Innehåll Introduktion (forts) Polling (cyklisk avfrågning) Större delen av materialet framtaget av :Jan Eric Larsson, Mats Brorsson och Mirec Novak IT-inst LTH 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? Det finns två fundamentalt olika tekniker för att respondera på omgivningen: - Polling (cyklisk avfrågning) - Båda två har sitt berättigande Ett exempel, taget ur en helt annan situation än datorvärlden: Mål Att känna till begreppet polling (cyklisk avfrågning) och hur det implementeras Introduktion 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 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 Situation 1 Du ringer till CSN för att be dem betala ut ditt studiemedel Du hör var god dröj och hänger kvar i luren eftersom det är viktigt Först när en person svarar, uträttar du ditt ärende Fördelar och nackdelar? 1

Situation 2 Polling Situation Du ringer till CSN++ Du ombedes knappa in ditt telefonnr Du börjar arbeta Situation med gruppuppgifter 2 i datorteknik med din grupp Mitt i arbetet ringer telefonen det är CSN++ Du uträttar ditt ärende Du fortsätter med gruppuppgifterna Fördelar och nackdelar? Vi förbereder oss på att kunna bli Polling avbrutna Sedan arbetar vi med något datorsystem ochavbrotti ett annat När vi blir avbrutna, lägger vi arbetet åt sidan, kommer ihåg var vi var och tar hand om avbrottet Då detta är klart återupptar vi arbetet Polling Ex: tangentbord med statusport och dataport Läs statusport S-port=1? Ja Läs dataport Returnera tecken Nej 1 Vi lyssnar om och om igen på meddelandet du är fortfarande placerad i Vad kö, händer ända tills en om person svarar! I datortermer: läs en inport ända tills ett villkor uppfyllt! Vi vill ringa till både CSN och Julius? Polling först CSN, sedan Julius Tidskrävande! vi kan jobba med uppgiften och vänta på att telefonen ringer - Vi måste veta vem som ringer, och vad vi ska säga då - Vi måste veta vad vi gjorde när vi blev avbrutna - Vi måste tillåta att något avbryter oss - Vad händer om båda ringer samtidigt? Prioritet! 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 2

Hårdvarustödföravbrotti MIPS $0 Användardefinieradeavbrott Generella register $1 $2 $3 $30 $31 Programräknare Status styr funktionen hos avbrottshanteringen Cause talar om för programmet vilken typ av avbrott som inträffat EPC Exception Program Counter, återhoppsadress PC Specialregister HI LO Status Cause EPC i MIPS MIPS understödjer elva maskinvarudefinierade avbrott åtta användardefinierade avbrott Vadhändervidettavbrott? 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 Det finns sex externa och två interna användardefinierade avbrott Huranvänderman Externa avbrott: avbrott? singå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 1 Programmet avbryts mitt i eller efter den instruktion Cause-registret: som för närvarande exekverar 2 avbrottet? Vadharorsakat Om avbrottet inte får betjänas ska exekveringen fortsätta (gäller användardefinierade avbrott) 3 Stäng och sätt processorn i privilegierat systemtillstånd 4 uppdateras med information om 5 Lägg adressen till nästa instruktion i det avbrutna programmet i EPC-registret 6 Börja exekvera avbrottsrutin på adress 0x80000080 Koppla en enhet till någon av de sex avbrottsingångarna (tex 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 tex trycker på knappen körs subrutinen BD 0 CE 0 IP[50] SW 0 ExcCode 0 IP [50] Interrupt pending En bit för vardera int0, int1,, int5 SW [10] Software interrupt pending Två bitar ExcCode En kod som talar om vilken typ av avbrott som är aktuell Tex 0 vid anvdef avbrott CE Co-processor error 3

Statusregistret Statusregistret CU 0 BEV div IntMask 0 Kuo IEo KUp Iep Kuc IEc EPC: avbrottet? Vartskavi återvändaefter Hurläserochskrivervi IE Interrupt enable (current/previous/old) avbrottsregistren? KU Kernel/User mode (current/previous/old) IntMask [70] individuell styrning av användardefinierade avbrott CU [30] Co-processor nr 0, 1, 2, 3 användbar? 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 Programmeringavavbrott 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 Allokera plats på stacken spara register på stacken int_routine: subu sp,sp,x mfc0 k0,c0_cause jal DO_IT_NOW addu sp,sp,x mfc0 k0,c0_epc set noreorder jr k0 rfe set reorder Läs Cause Kolla vilket avbrott Hoppa till rätt rutin Återställ register återställ stack återställ statusregistret rfe i hoppluckan efter jr Status, Cause och EPC kan läsas med: mfc0 t0,c0_status Initieringavavbrottshantering 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 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 4

Initieringavavbrott set noreorder Initierastatusregistret 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) Kopieraminirutinenint_stubtill adress0x80000080 Sammanfattning start: la t0,int_stub la t1,0x80000080 int_stub s adress 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 mfc0 k0,c0_sr ori k0,k0,1 sätt IEc-biten hämta statusregister 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 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 MIPSassembler 5