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