Ausnahmeverarbeitung: Trap- und Interruptbehandlung, Programmunterbrechung, Unterbrechungsbedingungen, System- und Normalmodus

Unter Ausnahmeverarbeitung versteht man die Reaktion des Mikroprozessors aufUnterbrechungsanforderungen, wie Traps und Interrupts. Da diese Reaktion moglichst schnell erfolgen soll, wird sie bei den 16-Bit-Mikroprozessoren durch ein wirkungsvolles Unterbrechungssystem (interrupt system) als Teil der Prozessorhardware unterstutzt. Verbunden mit der Ausnahmeverarbeitung sind die Betriebsarten Normal- und Systemmodus, da Unterbrechungssituationen immer eine Umschaltung in den Systemmodus bewirken.

Trap- und Interruptbehandlung

Traps (Fallen) sind Programmunterbrechungen, die durch prozessorinterne Bedingungen synchron zur Prozessorverarbeitung ausgelost werden. Interrupts (Unterbrechungen) werden dagegen durch prozessorexterne Bedingungen, z.B. von peripheren Geraten, ausgelost; sie treten dementsprechend asynchron zur Prozessorverarbeitung auf. Beiden Arten gemeinsam ist die Unterbrechungsbehandlung durch die Prozessorhardware, die wir in diesem Abschnitt betrachten. Den Signalflu? bei Interrupts beschreiben wir in Abschnitt 4.4; Beispiele zur Interruptprogrammierung folgen in Kapitel 5.

Programmunterbrechung. Eine Unterbrechungsanforderung bewirkt, sofern ihr vom Prozessor stattgegeben wird, eine Unterbrechung des laufenden Programms. Dazu fuhrt der Prozessor einen festgelegten Ablauf zur Unterbrechungsbehandlung aus. Grob gesagt, rettet er zunachst den gegenwartigen Prozessorstatus, bestehend aus den Inhalten des Befehlszahlers und des Statusregisters, in den Systemstack. Anschlie?end verzweigt er zu einem der Unterbrechungsanforderung zugeordneten Unterbrechungsprogramm und fuhrt es aus.

Ausnahmeverarbeitung: Trap- und Interruptbehandlung, Programmunterbrechung, Unterbrechungsbedingungen, System- und Normalmodus

Bild 2.8. Programmunterbrechung. a) Unterbrechungsanforderung stattgegeben, b) nicht stattgegeben

Das Unterbrechungsprogramm wird mit dem RTE-Befehl abgeschlossen, der den ursprunglichen Prozessorstatus wieder ladt, wodurch das unterbrochene Programm an der Unterbrechungsstelle fortgesetzt wird. Bild 2.8 zeigt schematisch den Programmflu? bei einer Programmunterbrechung.

Unterbrechungsvektoren. Die Adressen samtlicher Unterbrechungsprogramme sind als sogenannte Unterbrechungsvektoren (Interruptvektoren, Trap-Vektoren) in einer Vektortabelle im Arbeitsspeicher ab Adresse 0 gespeichert. Jeder Vektor stellt eine 16-Bit-Adresse dar und belegt in diesem Speicherbereich ein Speicherwort. Die Adressen dieser Speicherworter werden Vektoradressen genannt.

Sie werden aus Vektornummern gebildet, die den Unterbrechungsanforderungen fest zugeordnet sind. Die Vektornummer wird – abhangig von der Art der Unterbrechungsanforderung – entweder vom Prozessor selbst erzeugt, oder sie wird dem Prozessor uber die niedrigerwertige Datenbushalfte von au?en zugefuhrt (s. Abschnitt 4.4.1). Bild 2.9 zeigt die fur die Anwahl eines Unterbrechungsprogramms erforderlichen Adressierungsvorgange.

Ausnahmeverarbeitung: Trap- und Interruptbehandlung, Programmunterbrechung, Unterbrechungsbedingungen, System- und Normalmodus

Bild 2.9. Anwahl von Unterbrechungsprogrammen

Ausnahmeverarbeitung: Trap- und Interruptbehandlung, Programmunterbrechung, Unterbrechungsbedingungen, System- und Normalmodus

Tabelle 2.16. Unterbrechungsbedingungen

In Tabelle 2.16 sind die Unterbrechungsbedingungen nach Vektornummern und Vektoradressen geordnet. Die entsprechenden Speicherworter werden in der Vektortabelle durch die Anfangsadressen der einzelnen Unterbrechungsprogramme belegt. Die Spalte intern/extern kennzeichnet mit i bzw. eden prozessorbezogenen Ausloseort einer Unterbrechungsanforderung. Ferner sind den Bedingungen Prioritaten (g,i) zugeordnet, die sich aus einer Gruppenprioritat g und einer gruppeninternen Prioritat i ergeben.

Hierbei bedeutet 0 die hochste und 3 die niedrigste Prioritat. Ein laufendes Unterbrechungsprogramm kann nur durch eine Unterbrechungsanforderung hoherer Prioritat unterbrochen werden. Bei den folgenden Erlauterungen der Tabelle 2.16 unterscheiden wir zwischen Traps und Interrupts mit speziellen Auslosebedingungen und Traps und Interrupts, die allgemein verwendbar sind.

Spezielle Traps und Interrupts. Die speziellen Traps und Interrupts werden durch Bedingungen ausgelost, die hauptsachlich der Initialisierung, dem Systemtest und der Fehlererkennung dienen. Sie haben die Vektornummern 0 bis 10 und sind in der Tabelle nach absteigenden Prioritaten geordnet.

  • Reset-Interrupt: wird uber den RESET-Steuereingang z.B. manuell ausgelost. Er fuhrt die Systeminitialisierung durch und hat dementsprechend die hochste Prioritat. In der Unterbrechungsbehandlung bildet er eine Ausnahme, indem er nicht nur den Befehlszahler mit der Startadresse des Unterbrechungsprogramms, sondern auch das System-Stackpointerregister mit einem Anfangswert aus der Vektortabelle ladt; zusatzlich setzt er die allgemeinen Prozessorregister auf Null. Das Reset-Unterbrechungsprogramm wird zur Initialisierung der am Systembus angeschlossenen Einheiten benutzt und bildet den Zugang zu den Systemprogrammen.
  • Bus-Error-Interrupt: wird uber den BERR-Signaleingang ausgelost, nachdem eine Einheit im System einen Busfehler festgestellt hat. Dies kann z.B. das Ausbleiben eines Quittungssignals (DT ACK) an den Prozessor sein.
  • Address-Error-Trap: wird durch einen Wort- oder Doppelwortzugriff mit ungerader Adresse ausgelost. In allen drei Fallen erfolgt die Unterbrechungsbehandlung sofort nach dem Erkennen der Bedingung, d.h. mit dem nachsten Maschinenzyklus.
  • Trace-Trap: Das Trace-Bit T im Statusregister ist gesetzt (Trace-Modus). Die Unterbrechung erfolgt nach der Befehlsverarbeitung. Das Trace-Programm wird zum Systemtest benutzt, indem mit ihm z.B. der Prozessorstatus ausgegeben wird.
  • Illegal-Instruction-Trap: Der Prozessor interpretiert einen nicht definierten Operationscode. Die Unterbrechung erfolgt unmittelbar im Anschlu? an die Interpretationsphase.
  • Privilege-Violation-Trap: Der Prozessor befindet sich im Normalmodus und interpretiert den Operationscode eines privilegierten Befehls. Die Unterbrechung erfolgt unmittelbar im Anschlu? an die Interpretationsphase.
  • Zero-Divide-Trap: Der Prozessor findet bei der Ausfuhrung des Divisionsbefehls einen Divisor mit dem Wert Null vor. Die Unterbrechung erfolgt wahrend der Befehlsverarbeitung.
  • TRAPV-Instruction-Trap: Eine Unterbrechung erfolgt mit der Ausfuhrung des TRAPV-Befehls, wenn das Overflowbit V als Folge einer vorangegangenen Operation gesetzt ist (Overflow-Trap).
  • OPC-Emulation-Traps: Der Prozessor interpretiert bestimmte Operationscodes nicht implementierter Befehle. Die Unterbrechung erfolgt unmittelbar im Anschlu0? an die Interpretationsphase; der Befehl wird im Trap-Programm simuliert.

Allgemeine Traps und Interrupts. Die allgemeinen Traps und Interrupts teilen sich auf in die TRAP-Instructions (Vektornummern 32 bis 47) und die Autovektor- und Vektor-Interrupts (Vektornummern 25 bis 31 bzw. 64 bis 255); beide Gruppen konnen mit beliebigen Funktionen belegt werden.

TRAP-Instruction-Unterbrechungen erfolgen mit Ausfuhrung des TRAP-Befehls. Durch einen 4-Bit-Zusatz im Befehl werden 16 Trap-Programme unterschieden. Sie werden fur den kontrollierten Ubergang vom Normalmodus (Anwenderprogramme) in den Systemmodus (Systemprogramme) verwendet.

Die allgemeinen Interrupts werden von externen Einheiten ausgelost und dem Prozessor durch einen 3-Bit-Interruptcode uber die Interrupteingange IL2 bis ILO ubermittelt. Der Prozessor benutzt den Code zur Unterscheidung von sieben Interruptebenen mit unterschiedlichen Prioritaten. Der Interruptcode 0 hat hierbei die hochste, der Interruptcode 6 die niedrigste Prioritat. Der Code 7 besagt, da? keine Interruptanforderung anliegt. Eine Programmunterbrechung erfolgt mit Ausnahme der Ebene 0 bei einer Interruptanforderung, die eine hohere Prioritat als das laufende Programm hat. Dessen Prioritat ist durch die 3-BitInterruptmaske (1M2 bis IMO) im Statusregister festgelegt; sie wird bei einer Programmunterbrechung gleich dem stattgegebenen Interruptcode gesetzt.

Interrupts der hochsten Prioritat (Ebene 0) werden durch Signalubergange (Flanken) ausgelost; ihnen wird immer stattgegeben, weshalb man sie als nichtmaskierbare Interrupts (non maskable interrupts) bezeichnet. Die anderen Interrupts (Ebenen 1 bis 6) wirken mit ihrem Signalpegel ; ihnen wird in Abhangigkeit von der Interruptmaske stattgegeben oder nicht. Man bezeichnet sie deshalb als maskierbare Interrupts (maskable interrupts).

Bei den Autovektor-Interrupts ist den sieben Unterbrechungsebenenje eine Vektornummer fest zugeordnet (25 bis 31), d.h. die Anwahl der Unterbrechungsvektoren hangt vom Interruptcode ab. Bei den Vektor-Interrrupts ubergibt dagegen die Interruptquelle dem Prozessor eine 8-Bit-Vektornummer (64 bis 255) auf dem Datenbus. Der Prozessor wahlt damit einen von 192 moglichen Unterbrechungsvektoren aus. Die Unterscheidung zwischen Autovektor- und VektorInterrupts trifft der Prozessor anhand des Eingangssignals A VEC. Es wird von den Interruptquellen mit 0 (Autovektor-Interrupts) bzw. mit 1 (Vektor-Interrupts) vorgegeben.

Einige Vektorpositionen sind in Tabelle 2.16 als unbenutzt bezeichnet. Sie konnen bei einem Ausbau des Mikroprozessors fur zusatzliche Funktionen herangezogen werden.

Beispiel 2.6. Eine externe Uhr (real time dock) lost in festen Zeitabstanden Programmunterbrechungen aus, die zum Hochzahlen einer Speicherzelle COUNT benutzt werden. Die Uhr besitzt dazu ein 3-Bit-Register CODE, das bei jedem Uhrimpuls mit dem Binarcode 001 geladen wird und dessen Ausgange als Interruptcode auf die lnterrupteingange IL2 bis ILO des Prozessors wirken. Der AVEC-Eingang des Prozessors liegt auf 1, so da? der Prozessor eine Interruptanforderung als Vektor-Interrupt erkennt. Hat er eine Anforderung akzeptiert, so bestatigt er dies durch ein Quittungssignal lACK (interrupt acknowledge; s. auch Abschnitt 4.4.1), worauf die Uhr dem Mikroprozessor die Vektornummer 64 auf dem Datenbus ubergibt. Der Prozessor ladt daraufhin den Befehlszahler mit dem unter der Vektoradresse 128 stehenden Interruptvektor. Dieser ist die Anfangsadresse des Interruptprogramms TIMER.

Das Interruptprogramm TIM ER zahlt den Inhalt der Speicherzelle COUNT um Eins hoch, ladt danach das Register CODE mit dem Wert 7 und setzt damit die Interruptanforderung zuruck. Wahrend der Ausfuhrung des Interruptprogramms ist eine weitere Anforderung der Ebene 1 ebenso wie Anforderungen der Ebenen 2 bis 6 durch die Interruptmaske im Statusregister blockiert.

Ausnahmeverarbeitung: Trap- und Interruptbehandlung, Programmunterbrechung, Unterbrechungsbedingungen, System- und Normalmodus

Bild 2.10. Anschlu einer Real-Time-Clock

Unterbrechungsbehandlung. Der Ablauf der Unterbrechungsbehandlung erfolgt in vier Schritten.

  1. Der Statusregisterinhalt wird zunachst in ein prozessorinternes Pufferregister kopiert. Danach wird der Status verandert, indem das SjN-Bit gesetzt (Umschaltung in den Systemmodus) und das T-Bit zuruckgesetzt wird (Unterdruckung der Trace-Funktion). Bei allgemeinen Interruptanforderungen wird zusatzlich die Interruptmaske gleich dem Interruptcode gesetzt; bei einem Reset-Interrupt wird sie auf Null gesetzt (hochste Prioritat). Nach diesem Schritt sind mit Ausnahme der Ebene 0 Unterbrechungen gleicher oder niedrigerer Prioritat nicht mehr moglich.
  2. Die Vektornummer wird ermittelt und daraus die Vektoradresse durch Multiplikation mit 2 gebildet.
  3. Der Prozessorstatus wird gerettet. Dazu werden der Befehlszahlerinhalt und der gepufferte Statusregisterinhalt auf den Systemstack geschrieben. (Dieser Schritt entfallt beim Reset-Interrupt).
  4. Der Befehlszahler wird mit dem Unterbrechungsvektor geladen und der Abruf des ersten Befehls des Unterbrechungsprogramms eingeleitet.

Ausnahmeverarbeitung: Trap- und Interruptbehandlung, Programmunterbrechung, Unterbrechungsbedingungen, System- und Normalmodus

System- und Normalmodus

Wie bereits beschrieben, arbeitet der Mikroprozessor in einer von zwei Betriebsarten, im Systemmodus oder im Normalmodus, deren Anwahl durch das SjNBit im Statusregister erfolgt. Der Systemmodus ist gegenuber dem Normalmodus bezuglich des Zugriffs auf die Hardware- und Software-Betriebsmittel des Gesamtsystems privilegiert. In ihm ist die Ausfuhrung der privilegierten Befehle, die im Normalmodus zu einer Programmunterbrechung fuhren (Privilege-Violation-Trap), erlaubt. Im einzelnen sind diese

  • der STOP-Befehl, der den Prozessor in seiner Verarbeitung stoppt (dieser Zustand kann nur uber eine externe Unterbrechungsanforderung verlassen werden),
  • der RESET-Befehl, der die Einheiten des Systembusses uber die RE SETSignallei tung ini tialisiert,
  • der MOVSR-Befehl (move status), mit dem der Inhalt des Statusregisters gelesen und verandert werden kann,
  • der MOVNSP-Befehl (move normal stack pointer), mit dem der Inhalt des Normal-Stackpointerregisters gelesen und verandert werden kann, und
  • der RTE-Befehl, der zur Ruckkehr aus dem Trap- oder Interruptprogramm dient.

Traps und Interrupts, die im Normalmodus auftreten, fuhren immer zu einem Ubergang in den Systemmodus. Fur Programme im Normalmodus sind Traps und Interrupts die einzigen Moglichkeiten, in den Systemmodus zu gelangen (kontrollierte Ubergange). Der Ubergang vom Systemmodus in den Normalmodus wird entweder durch einen RTE-Befehl ausgelost, sofern das unterbrochene Programm im Normalmodus ausgefuhrt wurde, oder der Ubergang erfolgt durch explizites Rucksetzen des SjN-Bits durch den statusverandernden privilegierten Befehl MOVSR.

Zugriffe auf den Stack erfolgen im Normalmodus uber den Normalstackpointer NSP in R 7 und im Systemmodus uber den Systemstackpointer SSP in R 7′. Im Systemmodus, in dem alle Betriebsmittel erreichbar sind, ist auch ein Zugriff auf den Normalstackpointer durch den privilegierten Befehl MOVNSP moglich. Das Retten des Prozessorstatus bei der Unterbrechungsbehandlung erfolgt generell auf dem Systemstack.

Die Einfuhrung von zwei Betriebsarten ist vor allem bei gro?eren Systemen nutzlich, in denen die Betriebsmittel, d.h. die Hardware- und die Softwarekomponenten des Systems, fur mehrere Anwendungen gemeinsam verwaltet werden. Diese Aufgabe obliegt dem Betriebssystem (operating system), das eine Reihe von ubergeordneten Funktionen ubernimmt: Ubersetzen und Laden von Programmen, Bereitstellen von Hilfsmitteln zum Testen von Programmen, Durchfuhren des Datenverkehrs mit den peripheren Geraten, Bereitstellen der Trapund Interruptvektoren usw. Um das Betriebssystem gegenuber den Programmaktivitaten der einzelnen Anwendungen zu schutzen, wird ihm der Systemmodus und den Anwenderprogrammen der Normalmodus zugeordnet. Die beiden Betriebsarten tragen damit wesentlich zur Systemsicherheit bei. Zum Aufbau und zur Wirkungsweise von Betriebssystemen fur Mikroprozessorsysteme siehe z.B. [11,12].

Like this post? Please share to your friends:
Schreibe einen Kommentar

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: