Kap.2 Befehlsschnittstelle - Uni · PDF fileTrap oder Interrupt Hardware- intern/extern Fehlfunktion I/O-Request extern Interrupt undefinierter intern Trap Opcode arithmetischer intern

  • Upload
    hacong

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

  • Kap.2Befehlsschnittstelle

    Prozessoren,externe Sicht

  • z2.1 elementare Datentypen, Operationenz2.2 logische Speicherorganisationz2.3 Maschinenbefehlssatzz2.4 Klassifikation von Befehlsstzenz2.5 Ausnahmesituationen bzw. Exceptionsz2.6 Prozesse

  • 2.5 Ausnahmesituationen bzw. Exceptions

    zSituationen whrend der Bearbeitung von Programmen, die besondere Behandlung erfordernzFolgende Mechanismen lassen sich unter

    dem Begriff Exceptions zusammenfassen:ySoftwareinterruptsyTrapsy(Hardware-)Interrupts

  • Prozessorinterne Exceptionszz DefinitionDefinition

    Ein prozessorinternes Ereignis, welches den normalen Programmablauf unterbricht, heit prozessorinterneprozessorinterneExceptionException..

    z Man unterscheidet verschiedene Arten von prozessorinternen Exceptions:ySoftwareinterrupts: ber Softwareinterrupts lassen sich (z.B.

    auch im User-Modus) Betriebssystemroutinen aufrufen. In ihrer Wirkung entsprechen sie Unterprogrammaufrufen. Der aufgerufene Softwareinterrupt wird nicht direkt durch Angabe der Adresse des Programmcodes, sondern durch eineInterruptnummer spezifiziert.

    yTraps: Ausnahmesituationen, die durch prozessorinterne Fehler hervorgerufen werden.

  • Trapsz Beispiele:

    y arithmetischer berlaufyDivision durch Nully ungltiger Befehlscodey Seitenfehler beim Speicherzugriff eines mit Paging arbeitenden

    Prozessorsy ...

    z Ablauf:y Schreibe Rcksprungadresse auf Stack oder in dafr vorgesehenes

    Registery Schreibe Registerinhalte auf Stacky Rufe Betriebssystemroutine zur Fehlerbehandlung auf, diedas aktuelle User-Programm mit Fehlermeldung abbricht (z.B. bei

    Division durch Null), d.h. nicht mehr zurckspringt, oderdie Fehlersituation behandelt (bei Seitenfehler z.B. Laden einer

    neuen Seite in den Hauptspeicher oder Fehlermeldung bei Overflow), die Registerinhalte wieder rekonstruiert und zurckspringt

  • Alternativen zu Traps

    z Je nach Prozessor werden nicht bei allen prozessorinternen Fehlersituationen Traps ausgelst.

    z Z.B. bei arithmetischen berlufen wird hufig auch wie folgt vorgegangen:yEin bestimmtes Flag im Condition-Code-Register wird gesetzt.yDer Programmierer muss selbst den Inhalt des Flags im

    folgenden Programm auswerten und entsprechend reagieren.

  • Interrupts (1)

    DefinitionDefinitionEin Ein prozessorprozessorexternes Ereignis, welches den normalen Programmablauf unterbricht, heit Hardwareinterrupt Hardwareinterrupt oder kurzInterrupt.Interrupt.Interrupts werden durch asynchron zum Prozessor laufende externe Gerte erzeugt und dienen zur Kommunikation mit dem Prozessor.

    . BeispieleBeispiele: Eingabe ber Tastatur/Maus Diskettenlaufwerk / Festplatte meldet, da Eingabedaten vorhanden

    sind (die vorher durch ein Kommando an das externe Gert angefordert wurden).

    Externes Gert (Festplatte,Netzwerk) meldet, da Datenbertragungbeendet.

    Externes Gert meldet Fehler bei Datenbertragung.

  • Interrupts (2)

    Interrupts werden mit densselben Mechanismen behandelt wieprozessorinterne Exceptions.

    BeispielBeispielDer Nutzer drckt eine Taste der Tastaturz CPU unterbricht aktuelles Programmz Schreibe Rcksprungadresse auf Stack oder in dafr

    vorgesehenes Registerz Schreibe Registerinhalte auf Stackz Rufe Betriebssystemroutine auf, die folgendes tut:zTastaturcode wird berprftzweitere Aktionen (z.B. nach Ctrl-Alt-Del) oder Speicherung im

    Tastaturpufferz Ttigkeit wird an unterbrochener Stelle im alten Zustand

    fortgesetzt

  • Exkurs: Alternativen zu Interrupt-driven IOz Alternative 1: PollingyUm anliegende Eingaben oder Rckmeldungen externer Gerte

    zu erkennen, fhrt der Prozessor in regelmigen Abstnden Softwareinterrupts aus, um den Status der externen Gerte der Reihe nach abzufragen.

    yNachteil: Hoher Overhead durch unntige Abfragen

    z Alternative 2: DMA = Direct Memory AccessyKommunikation direkt zwischen Hauptspeicher und externem

    Gert.yVorteil: Entlastung des Prozessors, speziell bei blockweiser

    DatenbertragungyKommunikation ausschlielich ber einen DMA-ControlleryDMA-Controller bernimmt Datenbertragung zwischen Speicher

    und externem Gert, bentigt dabei den Systembus.yCPU kann whrend der bertragung weiterarbeiten, solange der

    Systembus nicht bentigt wird.

  • Prozessorinterne Exceptions und Interrupts (1)

    Trap oder Interrupt

    intern/externHardware-Fehlfunktion

    InterruptexternI/O-Request

    Trapinternundefinierter Opcode

    Trapinternarithmetischer berlauf

    BezeichnungausgelstEreignis

  • Prozessorinterne Exceptions und Interrupts (2)

    Wesentlicher UnterschiedWesentlicher Unterschied

    yProzessorinterne Exceptions sind synchronsynchron zum ausgefhrten Programm,yInterrupts hingegen asynchronasynchron

    Prozessorinterne Exceptions sind reproduzierbar, indem bei gleichem Systemstatus das Programm mit den gleichen Eingaben wiederholt gestartet wird.

  • 1. Mglichkeit zur Behandlung von Exceptions

    z Bei der Behandlung von Exceptions mu zunchst die Ursache derException bestimmt werden.

    zz 1. 1. MglichkeitMglichkeit::y Es wird eine spezielle Ausnahmeroutine, die

    UnterbrechungsbehandlungsroutineUnterbrechungsbehandlungsroutine oder auch InterrupthandlerInterrupthandlergenannt, aufgerufen.

    y Rcksprungadresse und Registerinhalte werden wie schon erwhnt gesichert.

    y Bei Auftreten einer Exception wurde ein bestimmtes Bit (Flag) imCauseregister gesetzt. Dieses kann vom Handler abgefragt werden.

    yDer Interrupthandler springt aufgrund der festgestellten Ursache zu dem entsprechenden Code, der die Exception behandelt.

    yWenn User-Programm nicht vom Interrupthandler abgebrochen: Rekonstruktion der Registerinhalte und Rcksprung (RTIRTI (RReturn-ffrom-IInterrupt))

  • 2. Mglichkeit zur Behandlung von Exceptions

    zz 2. 2. MglichkeitMglichkeit (Vectored Interrupt):(Vectored Interrupt):yDie Ursache der Exception wird der CPU von der Hardware (von einem

    externen Gert bei Interrupt, von der CPU-Steuereinheit bei Trap) alsIndex einer InterrupttabelleInterrupttabelle bereitgestellt.

    yDie Indizes werden als IInterrupt-VVektornnummern (IVNIVN)bezeichnet.

    yDie Tabelle liegt oftmals auf den ersten Adressen des Hauptspeichers

    y In dieser InterrupttabelleInterrupttabelle sind die Adressen fr die zu speziellenInterrupts gehrenden Routinen (ISRISR: IInterrupt-SService-RRoutine) gespeichert.

    y Es wird die entsprechende Spezialroutine aufgerufen.

  • MIPS:Exception-Codes im Cause-Registerz CPU verfgt ber spezielle Register fr die Ausnahmebehandlung

    Im Falle einer Exception erfolgt ein Sprung an eine fest definierte Adresse, an der der Interrupthandler steht. Der Exception Code dient zur Feststellung der Ursache der Exception und kann nun demCause-Register entnommen werden (Bit 5-2).

    Adresse des Befehls, der die Exception auslste

    14EPC

    Exception Type13Cause

    Interrupt Maske und Enable Bits12Status

    ErluterungErluterungNr.Nr.RegisterRegister

  • IBM PC Interrupt-Tabelle

    IDE1 Festplatte / CDROM / ...FIDE0 Festplatte / CDROM / ...ENumeric Coprocessor ErrorDPS2 MausportCReal Time Clock (CMOS Clock)8LPT1 (paralleler Port)7Floppy Disk6LPT2 (paralleler Port)5COM1 and COM3 (serieller Port)4COM2 and COM4 (serieller Port)3Keyboard1Timer (55 ms Intervall)0Function Function INTINT

    (Hier nur Indizes fr (Hardware-)Interrupt angegeben!)

  • Maskierbare / Nichtmaskierbare Interrupts

    Prozessoren unterscheiden zwischenmaskierbarenmaskierbaren und nichtmaskierbarennichtmaskierbaren InterruptsInterrupts:

    zz maskierbarermaskierbarer InterruptInterrupt:

    z wird nur dann ausgefhrt, wenn das IInterrupt EEnable Bit (IEIE) in einem dafr vorgesehenen Register gesetzt ist. (MIPS: Bits 8-15 im Status-Register)

    z Der Nutzer kann den Registerinhalt ndern.

    zz nichtmaskierbarernichtmaskierbarer Interrupt (NMI):Interrupt (NMI):

    z wird auf jeden Fall ausgefhrt. Bei NMI handelt es sich blicherweiseum Ausnahmesituationen, die die Funktionalitt des Systems gefhrden(Bsp.: Notprogramm bei Zusammenbruch der Betriebsspannung).

  • Interrupt in Interrupt-Service-Routine

    SzenarioSzenarioEs besteht eine gewisse Wahrscheinlichkeit, da innerhalb einer ISR (z.B. durch ein I/O-Device verursacht) ein weiteres I/O-Device seinen Interrupt auslst!

    Mgliche LsungenMgliche Lsungenz Erster Befehl in der ISR ist Ausmaskierung aller Interrupts

    keine weiteren Interrupts mglich

    z Vergabe von Interruptprioritten derart, da ein kritisches I/O-Device eine hhere Prioritt, als ein weniger kritisches Device hat.

  • Interrupt-Priorittz Falls ein Device mit Prioritt n einen Interrupt auslst, so startet die

    ISR mit Prioritt n . Wird ein Interrupt mit einer Prioritt m>n ausgelst, so wird die aktuelle ISR unterbrochen und eine neue ISR der Prioritt m sofort gestartet.

    z Der Versuch eines Gertes mit einer niedrigeren Prioritt als n die ISR zu unterbrechen, wird ignoriert und der Interruptcode wird zur spteren Ausfhrung zwischengespeichert (pending Interruptpending Interrupt).

    z Nach Abarbeitung der ISR geht das System auf die user-Prioritt (userpriorityuserpriority 00) zurck.

  • Interrupt-Prioritten: Illustration

    user user

    printer

    user

    printer

    RS232

    user

    printer

    Disk

    user

    printer ff

    Interruptprinter

    InterruptRS232

    InterruptDisk (priority 4)

    pending

    time

    Belegung des Belegung des StacksStacks time

    Prioritt

    5

    4

    3

    2

    1

    0

    BearbeitungBearbeitung

  • Interrupt-Prioritten

    z Prozessoren mit nur einem Interrupt