Rainbow-OS Architekturseminar

Transcription

Rainbow-OS Architekturseminar
Rainbow-OS Architekturseminar
Thema: Interrupt-Controller
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
Überblick
1. Einführung
2. Wichtige
Begriffe
3. Interrupts im
Einzelnen
• 2.1 Interrupt Request
• 2.2 Interrupt Vektor
• 2.3 Interrupt Service Routine
•
•
•
•
3.1 Software Interrupt
3.2 Hardware Interrupt
3.3 Exceptions
3.4 Intercepts
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
Überblick
4. InterruptController
5. InterruptController im
Rainbow-OS
• 4.1 Programmable Interrupt-Controller 8259A
• 4.2 Advanced Programmable InterruptController 82489DX
• 5.1 First-Level Interrupt Handler (FLIH) &
Second-Level Interrupt Handler (SLIH)
• 5.2 Identifikation von Interrupts und
Exceptions
6. Programmierbeispiel
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
1. Einführung

Polling
o

Interrupts
o

Abfrage der Hardwarekomponenten durch CPU,
ob neue Daten vorhanden sind
Aktivität der CPU nur bei entsprechendem „Signal“
Interrupt-Controller
o
Verwaltung und Koordination der Interrupts
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
2. Wichtige Begriffe

2.1 Interrupt-Request (IRQ)
o
o
o
Deutsch: Unterbrechungsanforderung
Unterbrechen des aktuellen Prozesses zur
Behandlung eines Interrupts
Beispiel: Taste drücken auf der Tastatur
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
2. Wichtige Begriffe

2.2 Interrupt-Vektor
o
o
Indexzeiger für Startadresse der InterruptService-Routine
Verwaltung der Vektoren in Interrupt-DeskriptorTabelle (IDT)




bei Intel-CPUs im Hauptspeicher
Ausnahme Reset-Vektor
ROM
Eintrag in Tabelle = Gate
Trap-Gate und Interrupt-Gate
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
2. Wichtige Begriffe
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
2. Wichtige Begriffe
o
Interrupt-Deskriptor-Table-Register in CPU


o
Basisadresse der Tabelle
Größe der Tabelle (Limiteintrag)
Berechnung des jeweiligen Gates der IDT

(Interrupt-Vektor * 8) + Basisadresse
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
2. Wichtige Begriffe

2.3 Interrupt-Service-Routine (ISR)
o
o
Deutsch: Unterbrechungsbehandlung
Aufgaben:


Entsprechende Reaktion auf jeweiligen Interrupt
Speicherung des Zustands des zuletzt ausgeführten
Programms
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
2. Wichtige Begriffe
o
Ablauf:





o
o
1. Setzen des Interrupt-Enable-Flag in CPU
2. Speichern von aktuellen Registerinhalten und
Prozessorzuständen
3. Interrupt-Behandlung
4. Absetzen des Interrupt-Return-Befehls an CPU
5. End-of-Interrupt-Befehl an Interrupt-Controller
„transparente Interrupts“
Prioritätsstrategie
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
3. Interrupt-Arten

3.1 Software-Interrupt
o
o
o
synchrone Unterbrechung zum Programmablauf
vom Programmierer gewollt
Ausgelöst durch expliziten Interruptbefehl INT
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
3. Interrupt-Arten
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
3. Interrupt-Arten

3.2 Hardware-Interrupts
o
o
Asynchrone Unterbrechungen zum
Programmablauf
Ausgelöst durch Komponenten außerhalb der
CPU
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
3. Interrupt-Arten
o
Maskable-Interrupt

o
Zur Ignorierung weiterer Hardware-Interrupts
Non-Maskable-Interrupt





Über NMI-Pin direkt zur CPU
Höchste Priorität aller Hardware-Interrupts
Ebenfalls maskierbar an Port 0x70
Rekursive Unterbrechung möglich
Bei schweren Hardwarefehlern, System-Debugging,
Reset
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
3. Interrupt-Arten

3.3 Exceptions
o
o
o
Deutsch: Ausnahmen
Synchrone, unerwartet zur Laufzeit auftretende
Unterbrechung
Unterarten:



Traps
Faults
Aborts
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
3. Interrupt-Arten

Traps:

Erkennung der Exception durch CPU erst nach
Ausführung des fehlerhaften Befehls
 Beispiel: Debug Breakpoint Exception

Fault:



Erkennung der Exception durch CPU vor Ausführung
des fehlerhaften Befehls
Beispiel: Page Fault
Abort:


Exception durch Aufruf der Interrupt-Service-Routine
Double Fault, Triple Fault
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
3. Interrupt-Arten
o
o
Fehlermeldung bei nicht abgefangener Exception
Unterschied zu Software-Interrupt


Behandlung wie Software-Interrupt
Aber: Angabe der Interruptnummer durch CPU selbst
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
3. Interrupt-Arten

3.4 Intercepts
o
o
Ebenfalls Untergruppe der Exceptions
Ausgelöst durch Ausnahmebedingungen in
Virtualisierungsfunktionen

o
o
Z.B. durch Kontextwechsel
Erkennung des Intercepts durch Hostsystem
Behandlung im Kernel-Modus durch InterceptHandler
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
4. Interrupt-Controller

4.1 Programmable Interrupt-Controller 8259A
o
o
o
Kurz: PIC8259A
Koordination und Verwaltung von Interrupts
Initialisierungskontrollwörter

o
Zur Konfiguration des Chips
Operationskontrollwörter

Zur Steuerung des PICs im Betrieb
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
4. Interrupt-Controller
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
4. Interrupt-Controller
o
o
Master/Slave Verbund für mehr Interrupts
Aber: nur 1 IRQ-Eingang bei der CPU



o
Kaskadierung
Verbinden von INT-Ausgang des Slaves mit
IR2-Eingang des Masters
Pins CAS0-CAS2
Problem: Nummerierung der Eingänge
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
4. Interrupt-Controller
o
Ablauf eines Interrupts bei einem PIC




1. Anhebung der Spannung bei einem Eingangspin
2. Speicherung der Eingangsleitung als Bit im IRR
3 .Senden der IRQ an CPU über INT-Ausgang
4. Falls IE-Flag gesetzt: Bestätigung des IRQ durch die
CPU über INTA-Leitung
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
4. Interrupt-Controller

5. Weiterleiten des Bits durch Prioritätsgeber an ISR


6. Zweiter INTA-Impuls der CPU an PIC



Abhängig von Priorität und evtl. Maskierung im IMR
Interrupt-Vektor über Pins D0-D7 auf Datenbus
7. Löschen des IE-Flag und Starten der InterruptRoutine
8. Nach Behandlung Löschen des Bit im ISR

Automatisch
 End-Of-Interrupt-Befehl
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
4. Interrupt-Controller
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
4. Interrupt-Controller
o
Ablauf eines Interrupts bei kaskadiertem PiC


Ankommen eines IRQs am Master: analog zu einem PIC
Ankommen eines IRQs am Slave:

1. Setzen des entsprechenden Bits im IRR des Slave und
Senden eines INT-Signals an den Master
 2. Dadurch Setzen des „Bit 2“ im IRR des Master
und Senden eines INT-Signals an die CPU
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
4. Interrupt-Controller

3. Falls IE-Flag gesetzt: Bestätigung des IRQ durch CPU
über INTA-Leitung
 4. Aktivierung der Leitungen CAS0-CAS2
 5. Zweiter INTA-Impuls an Slave durch CPU
 6. Ab dann wieder analog zu „Ablauf mit einem PIC“
o
Abbruch der aktuellen Interrupt-Behandlung
durch PIC bei neu ankommenden Interrupt mit
höher Priorität möglich
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
4. Interrupt-Controller
o
Nachteile:




Begrenzte Anzahl Eingänge
Langsam
Nur 8-Bit Register
Umständliche Programmierung
Einführung des APIC
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
4. Interrupt-Controller

4.2 Advanced Programmable InterruptController 82489DX
o
Vorteile gegenüber PIC8259A



Schneller
32-Bit Register
Unterstützung von Multiprozessorsystemen und
Message-Signaled-Interrupts
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
4. Interrupt-Controller
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
4. Interrupt-Controller
o
Aufgaben des I/O-APIC



o
Schnittstelle zur Peripherie
Empfangen von IRQs der Hardwarekomponenten
Verteilung der IRQs als Interrupt-Messages mittels
Redirection-Tabelle über ICC-Bus an Local-APICs
Aufgaben des Local-APIC



Lokale Interrupteinheit
Kommunikation mit jeweils zugeordneter CPU
Weiterleitung der Interrupt-Messages an CPU über Pins
PRST, PINIT und PNMI
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
4. Interrupt-Controller
o
o
Weiterleitung eines Interrupts an CPU mit
unwichtigsten Prozess
2 Verfahren

Fixed-Modus


IRQ an ausgewählte Local-APICs
Lowest-Priority-Modus

Suchen aller APICs nach derjenigen CPU mit Prozess von
niedrigster Priorität
 Task-Prioritätsregister
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
4. Interrupt-Controller
o
Ab Pentium IV

o
Aufgrund Kompatibilität

o
Kommunikation über normalen Systembus
Vorschalten eines PICs dem APIC
Zusammengefasst:

Interrupt-Controller als eine Art Multiplexer für
Hardware-Interrupts
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
5. Interrupt-Controller in Rainbow

5.1 First-/Second-Level Interrupt Handler

First-Level Interrupt Handler (FLIH)

Annahme aller Interrupts
 Entscheidung ob HW-Interrupt oder SW-Interrupt
 Bei HW-Interrupt: Weiterleiten an SLIH
 Sonst: Direkte Behandlung des Interrupts durch Aufruf
eines entsprechenden Handlers

Second-Level Interrupt Handler (SLIH)

Treibersuche im Treiber-Array
 Behandlung von HW-Interrupts
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
5. Interrupt-Controller in Rainbow
o
Eigenschaften des FLIH

Schnelle Behandlung der Interrupts




o
Sammeln von Daten über Interrupt-Controller & InterruptDeskriptor-Tabelle
Unterstützung von Shared-Interrupts
Automatische Erledigung des EOI-Befehls
Maskierung von Interrupts
Alle Aktionen im Ring 0
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
5. Interrupt-Controller in Rainbow

5.2 Identifikation von Interrupts bzw.
Exceptions
o
Zwei Möglichkeiten:


Rufen einer ISR für jeden Interrupt einzeln
Rufen von ein, zwei ISRs aus der Interrupt-DeskriptorTabelle in FLIH
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
5. Interrupt-Controller in Rainbow
o
1. Möglichkeit:




„Rufen einer ISR für jeden Interrupt einzeln“
Viele, sehr ähnliche Routinen
Interrupt-Behandlung mit maximaler Geschwindigkeit
Keine Unterscheidung zwischen Interrupts und
Exceptions nötig
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
5. Interrupt-Controller in Rainbow
o
2. Möglichkeit:





„Rufen von ein, zwei ISRs aus der Interrupt-DeskriptorTabelle in FLIH“
Steuerung der Interrupt-Controller im FLIH
Gruppierung ähnlicher Interrupts
Für jede Klasse Interrupts eine Interrupt-Service-Routine
Unterscheidung:

Zuordnung einer Codesegmentnummer jedem Interrupt
 Abfrage des Codesegmentregisters zur Bestimmung des
Interrupts
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
6. Programmierbeispiel

Abschalten des PIC8259A
o
o
o
o
Z.B. bei Benutzung eines APICs
Warten auf Abschluss aller laufender
Interruptbehandlungen
Vermeiden neuer Interrupts durch Maskierung
Rückgabe eines Bitmaps über alle maskierten
Interrupts vor der Deaktivierung


Niederwertigste Byte = Bitmap des Slave
Nächsthöheres Byte = Bitmap des Masters
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
6. Programmierbeispiel
public static int disable(Device master, Device slave) {
int bitmap, iflevel;
// remember the IMR situation
bitmap = (((int)master.readStatus8()&0xFF)<<8) | (((int)slave.readStatus8()&0xFF));
// mask all inputs - so from now on no NEW interrupts are reported from the PICs
master.writeControl8(0xFF); slave.writeControl8(0xFF);
// wait for all interrupts in service to be completed...
iflevel = Interrupts.forceSti();
slave.writeData8(READ_ISR); while(slave.readData8()!=(byte)0) {
slave.writeData8(READ_ISR); }
master.writeData8(READ_ISR); while(master.readData8()!=(byte)0) {
master.writeData8(READ_ISR); }
Interrupts.setIfLevel(iflevel);
return bitmap;
}
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
Rainbow-OS Architekturseminar
Vielen Dank für Ihre
Aufmerksamkeit!
Fragen?
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
Quellenangabe

Textuelle Quellen
(1)
(2)
(3)
(4)
Addison-Wesley 2003 PC Hardwarebuch – Aufbau,
Funktionsweise, Programmierung: S. 143-147, S. 355-357,
S. 555- 599 und S. 638-640
Tanenbaum, Andrew S. 2008 Computerarchitektur –
Strukturen, Konzepte, Grundlagen: S. 120, S. 208, S. 213,
S. 433-437
Skript 2008 Technische Informatik 2, Kapitel K1, Version
08, Thema: Gerätetreiber im Betriebssystem
Skript 2009 Verteilte Betriebssysteme, Kapitel C1, Version
24, Thema: Rainbow-Betriebssystem Fallstudie
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
Quellenangabe
(5)
(6)
(7)
(8)
http://www-vs.informatik.uniulm.de/teach/ss10/ti1/docs/Ti1_G1_21_Direkt.pdf
http://www4.informatik.unierlangen.de/Lehre/WS05/V_BS/oostubs/web/aufgaben/auf
gabe2/pic_info.shtml
http://download.intel.com/design/chipsets/datashts/290566
01.pdf
http://www-ivs.cs.unimagdeburg.de/bs/lehre/sose99/bs1/seminare/pic_info.sht
ml
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
Quellenangabe
(9)
(10)
(11)
(12)
(13)
http://www.ruhr-unibochum.de/nds/lehre/vorlesungen/computertechnik/ws05/k
ap8.pdf
http://www4.informatik.unierlangen.de/DE/Lehre/WS06/V_BS/uebungsmaterial/interr
uptbehandlung.pdf
http://www.bjoern-koester.de/iogrundlagen/
http://www.lrr.in.tum.de/~weidendo/lehre/VTWS06/200701-lrr-vt.pdf
http://www.tecchannel.de/server/prozessoren/402223/x86_
programmierung_und_betriebsarten_teil_4/index18.html
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
Quellenangabe
(14)
(15)
(16)
http://bochs.sourceforge.net/techspec/intel-8259apic.pdf.gz
http://www.itwissen.info/definition/lexikon/InterruptController-interrupt-controller.html
http://www.osdever.net/tutorials/pdf/apic.pdf
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller
Quellenangabe

Bildquellen
(1)
(2)
(3)
(4)
Addison-Wesley 2003 PC Hardwarebuch – Aufbau,
Funktionsweise, Programmierung: S.143, S. 163 und S.356
Skript 2008 Technische Informatik 2, Kapitel K1, Version
08, Thema: Gerätetreiber im Betriebssystem S. 13, S. 17
http://www.cpu-world.com/Support/8088.html
https://home.zhaw.ch/~kls/tin2/Interrupt.pdf S.5
© Michael Lindinger, SS 2010, Universität Ulm, "Rainbow-OS Architekturseminar", Thema: Interrupt-Controller

Documents pareils