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
Top Related