2.3.4 Interrupt-Controller

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
<p>
Der Interrupt-Controller ist ein weiterer Hardware-Baustein in der Architektur eines Computers. Seine Aufgabe besteht darin, Interrupt-Signale von verschiedenen Komponenten des Rechners entgegen zu nehmen, und die CPU über das Vorliegen von einem (oder mehreren) Interrupts zu informieren.
Der Interrupt-Controller ist ein weiterer Hardware-Baustein in der Architektur eines Computers. Seine Aufgabe besteht darin, Interrupt-Signale von verschiedenen Komponenten des Rechners entgegen zu nehmen, und die CPU über das Vorliegen von einem (oder mehreren) Interrupts zu informieren.
 
</p>
<p>
Die CPU ist dann für die Abarbeitung des Interrupts zuständig. Dies geschieht, indem eine sogenannte '''Interruptbehandlungsroutine''' (kurz: ISR, Interrupt Service Routine) aufgerufen wird.
Die CPU ist dann für die Abarbeitung des Interrupts zuständig. Dies geschieht, indem eine sogenannte '''Interruptbehandlungsroutine''' (kurz: ISR, Interrupt Service Routine) aufgerufen wird.
 
</p>
<p>
Die deutsche Übersetzung des englischen Begriffs "Interrupt" ist "Unterbrechung". Und genau diese Unterbrechung eines laufenden Prozesses passiert in dem Moment, wo sich die CPU entschließt, einen vom Interrupt-Controller angezeigten Interrupt zu bearbeiten.
Die deutsche Übersetzung des englischen Begriffs "Interrupt" ist "Unterbrechung". Und genau diese Unterbrechung eines laufenden Prozesses passiert in dem Moment, wo sich die CPU entschließt, einen vom Interrupt-Controller angezeigten Interrupt zu bearbeiten.
 
</p>
<p>
Den vereinfachten Ablauf zeigt das folgende Video:
Den vereinfachten Ablauf zeigt das folgende Video:
 
</p>
<p><loop_media type="video" title="Interrupt-Controller (01:30)" description="http://youtu.be/ML9mwQ5TyzI" copyright="CC-BY" index=true show_copyright=true>{{#ev:youtube|ML9mwQ5TyzI}}</loop_media></p>
<p>
 
<loop_media type="video" title="Interrupt-Controller (01:30)" description="http://youtu.be/ML9mwQ5TyzI" copyright="CC-BY" index=true show_copyright=true>{{#ev:youtube|ML9mwQ5TyzI}}</loop_media>
</p>
<p>
Im Video ist erkennbar, dass der Interrupt-Controller als eigenständige Hardware-Komponente über den Systembus mit anderen Komponenten und insbesondere mit der CPU kommuniziert.
Im Video ist erkennbar, dass der Interrupt-Controller als eigenständige Hardware-Komponente über den Systembus mit anderen Komponenten und insbesondere mit der CPU kommuniziert.
 
</p>
<p><loop_figure title="CPU mit Interrupt-Controller" description="" copyright="CC-BY" index=true show_copyright=true>[[Datei:Cpu13-interrupt-controller.jpg|650px]]</loop_figure></p>
<p>
 
<loop_figure title="CPU mit Interrupt-Controller" description="" copyright="CC-BY" index=true show_copyright=true>[[Datei:Cpu13-interrupt-controller.jpg|650px]]</loop_figure>
<br />
</p>
 
<p>
<p><loop_figure title="Interrupt-Controller im Gesamtbild" description="" copyright="CC-BY" index=true show_copyright=true>[[Datei:vnrgesamt2.jpg|650px]]</loop_figure></p>
<loop_figure title="Interrupt-Controller im Gesamtbild" description="" copyright="CC-BY" index=true show_copyright=true>[[Datei:vnrgesamt2.jpg|650px]]</loop_figure>
<br />
</p>
<loop_area type="notice">'''Weiterführende Literatur'''<br>
<p>
<cite>Wüst+2011</cite> erläutert in den Kapiteln 8.1 (Interrupts) und 8.2 (Ausnahmen) weitere Hintergründe zu den genannten Themen. Die Lektüre dieser Quelle sei ausdrücklich empfohlen.<br /><br /><small>Studierende sind oftmals berechtigt, eine PDF-Version dieses Buches ohne entstehende Kosten [[Hinweise für Studierende#Downloadbare Bücher von Springerlink|über ihre Hochschulen von Springerlink zu beziehen.]]</small>
<loop_area type="notice">'''Weiterführende Literatur'''
<p>
<cite>Wüst+2011</cite> erläutert in den Kapiteln 8.1 (Interrupts) und 8.2 (Ausnahmen) weitere Hintergründe zu den genannten Themen. Die Lektüre dieser Quelle sei ausdrücklich empfohlen.
</p>
<p>
<small>Studierende sind oftmals berechtigt, eine PDF-Version dieses Buches ohne entstehende Kosten [[Hinweise für Studierende#Downloadbare Bücher von Springerlink|über ihre Hochschulen von Springerlink zu beziehen.]]</small>
</p>
</loop_area>
</loop_area>
<br />
</p>
<p>
Es ist an dieser Stelle wichtig zu verstehen was genau passiert, wenn ein Interrupt auftritt und von der CPU bearbeitet wird. Die Beschreibung oben auf dieser Seite ist noch recht allgemein gehalten, weshalb jetzt einige entscheidende Details betrachtet werden sollen.
Es ist an dieser Stelle wichtig zu verstehen was genau passiert, wenn ein Interrupt auftritt und von der CPU bearbeitet wird. Die Beschreibung oben auf dieser Seite ist noch recht allgemein gehalten, weshalb jetzt einige entscheidende Details betrachtet werden sollen.
 
</p>
Ein entscheidendes Kriterium bei der Abarbeitung eines Interrupts durch die CPU ist, dass der durch den Interrupt unterbrochene Prozess später '''ohne negative Beeinträchtigung''' weiter ausgeführt werden kann. Das vom Prozess erarbeitete Ergebnis darf sich nicht unterscheiden, egal, ob während der Abarbeitung ein (oder mehrere) Interrupt(s) auftrat(en), oder nicht. Erreicht wird dieses durch sogenannte präzise Unterbrechungen.<br />
<p>
<br />
Ein entscheidendes Kriterium bei der Abarbeitung eines Interrupts durch die CPU ist, dass der durch den Interrupt unterbrochene Prozess später '''ohne negative Beeinträchtigung''' weiter ausgeführt werden kann. Das vom Prozess erarbeitete Ergebnis darf sich nicht unterscheiden, egal, ob während der Abarbeitung ein (oder mehrere) Interrupt(s) auftrat(en), oder nicht. Erreicht wird dieses durch eine präzise Unterbrechung.
<loop_area type="definition">'''Definition: Präzise Unterbrechung (Precise interrupt)'''<br />Einen Interrupt nennt man eine '''präzise Unterbrechung''', falls alle der folgenden Bedingungen erfüllt sind:
</p>
<p>
<loop_area type="definition">'''Definition: Präzise Unterbrechung (Precise interrupt)'''
<p>
Einen Interrupt nennt man eine '''präzise Unterbrechung''', falls alle der folgenden Bedingungen erfüllt sind:
# Der Programmzähler des unterbrochenen Prozesses wird an einer bekannten Stelle gesichert.
# Der Programmzähler des unterbrochenen Prozesses wird an einer bekannten Stelle gesichert.
# '''Alle''' Befehle des unterbrochenen Prozesses, die '''vor''' dem Befehl ausgeführt werden müssen, auf den der Programmzähler zeigt, sind vollständig abgearbeitet.
# '''Alle''' Befehle des unterbrochenen Prozesses, die '''vor''' dem Befehl ausgeführt werden müssen, auf den der Programmzähler zeigt, sind vollständig abgearbeitet.
# '''Kein''' Befehl des unterbrochenen Prozesses, der '''nach''' dem Befehl ausgeführt werden muss, auf den der Programmzähler zeigt, ist bereits abgearbeitet.
# '''Kein''' Befehl des unterbrochenen Prozesses, der '''nach''' dem Befehl ausgeführt werden muss, auf den der Programmzähler zeigt, ist bereits abgearbeitet.
# Der Ausführungszustand des Befehls des unterbrochen Prozesses, auf den der Programmzähler zeigt, ist bekannt.
# Der Ausführungszustand des Befehls des unterbrochen Prozesses, auf den der Programmzähler zeigt, ist bekannt.
</p>
</loop_area>
</loop_area>
<loop_area type="definition">'''Definition: Unpräzise Unterbrechung (Imprecise interrupt)'''<br />Einen Interrupt nennt man eine '''unpräzise Unterbrechung''', falls mindestens eine der für einen präzisen Interrupt genannten Bedingungen nicht erfüllt ist.
</p>
<p>
<loop_area type="definition">'''Definition: Unpräzise Unterbrechung (Imprecise interrupt)'''
<p>
Einen Interrupt nennt man eine '''unpräzise Unterbrechung''', falls mindestens eine der für einen präzisen Interrupt genannten Bedingungen nicht erfüllt ist.
</p>
</loop_area>
</loop_area>
</p>
<p>
Das folgende Video zeigt ein Beispiel, anhand dessen nachvollzogen werden kann, was genau bei einem Interrupt passiert, und ob die Bedingungen für eine präzise Unterbrechung erfüllt werden.
Das folgende Video zeigt ein Beispiel, anhand dessen nachvollzogen werden kann, was genau bei einem Interrupt passiert, und ob die Bedingungen für eine präzise Unterbrechung erfüllt werden.
<p><loop_media type="video" title="Was passiert bei einem Interrupt? (02:14)" description="http://youtu.be/_wVNpUW3kdM" copyright="CC-BY" index=true show_copyright=true>{{#ev:youtube|_wVNpUW3kdM}}</loop_media></p>
</p>
 
<p>
<loop_media type="video" title="Was passiert bei einem Interrupt? (02:14)" description="http://youtu.be/_wVNpUW3kdM" copyright="CC-BY" index=true show_copyright=true>{{#ev:youtube|_wVNpUW3kdM}}</loop_media>
</p>
<p>
Mit Hilfe dieses Videos ist es nun möglich, die folgenden Aufgaben zu bearbeiten:
Mit Hilfe dieses Videos ist es nun möglich, die folgenden Aufgaben zu bearbeiten:
<loop_area type="task">'''Aufgabe 1'''<br />
</p>
<p>
<loop_area type="task">'''Aufgabe 1'''
<p>
Prüfe für jede der vier Bedingungen einer präzisen Unterbrechung, ob diese '''tatsächlich erfüllt''' ist!
Prüfe für jede der vier Bedingungen einer präzisen Unterbrechung, ob diese '''tatsächlich erfüllt''' ist!
* Ist Bedingung 1 erfüllt? Erläutere warum!
* Ist Bedingung 1 erfüllt? Erläutere warum!
Zeile 43: Zeile 74:
* Ist Bedingung 3 erfüllt? Erläutere warum!
* Ist Bedingung 3 erfüllt? Erläutere warum!
* Ist Bedingung 4 erfüllt? Erläutere warum!
* Ist Bedingung 4 erfüllt? Erläutere warum!
</p>
</loop_area>
</loop_area>
<loop_area type="task">'''Aufgabe 2'''<br />
</p>
<p>
<loop_area type="task">'''Aufgabe 2'''
<p>
Beschreibe ein Szenario, bei dem jeweils eine der vier Bedingugen einer präzisen Unterbrechung '''nicht erfüllt''' ist.
Beschreibe ein Szenario, bei dem jeweils eine der vier Bedingugen einer präzisen Unterbrechung '''nicht erfüllt''' ist.
* Was sind die Folgen, wenn Bedingung 1 nicht erfüllt ist?
* Was sind die Folgen, wenn Bedingung 1 nicht erfüllt ist?
Zeile 50: Zeile 85:
* Was sind die Folgen, wenn Bedingung 3 nicht erfüllt ist?
* Was sind die Folgen, wenn Bedingung 3 nicht erfüllt ist?
* Was sind die Folgen, wenn Bedingung 4 nicht erfüllt ist?
* Was sind die Folgen, wenn Bedingung 4 nicht erfüllt ist?
</p>
</loop_area>
</loop_area>
<loop_area type="task">'''Aufgabe 3'''<br />
</p>
<p>
<loop_area type="task">'''Aufgabe 3'''
<p>
Im [http://youtu.be/_wVNpUW3kdM Video] wird gezeigt, wie der aktuelle Wert des Befehlszählers bei einer Unterbrechung in einem anderen Register gesichert wird. Alle weiteren Register oder die Statusflags werden hingegen nicht gesichert.
Im [http://youtu.be/_wVNpUW3kdM Video] wird gezeigt, wie der aktuelle Wert des Befehlszählers bei einer Unterbrechung in einem anderen Register gesichert wird. Alle weiteren Register oder die Statusflags werden hingegen nicht gesichert.
* Wenn das Steuerwerk nicht für die Sicherung dieser Werte zuständig ist, wer oder was ist es dann?<br /><small>(Auf vorangegangenen Seiten war die Antwort auf ''Wer-oder-was-Fragen'' stets ''"Das Betriebssystem"'', aber diese Antwort ist an dieser Stelle nicht zugelassen.)</small>
* Wenn das Steuerwerk nicht für die Sicherung dieser Werte zuständig ist, wer oder was ist es dann?<br /><small>(Auf vorangegangenen Seiten war die Antwort auf ''Wer-oder-was-Fragen'' stets ''"Das Betriebssystem"'', aber diese Antwort ist an dieser Stelle nicht zugelassen.)</small>
* Wo können diese Werte gesichert werden?
* Wo können diese Werte gesichert werden?
* Welche Vor- und/oder Nachteile hat diese Verfahrensweise?
* Welche Vor- und/oder Nachteile hat diese Verfahrensweise?
</p>
</loop_area>
</loop_area>
<loop_area type="task">'''Aufgabe 4'''<br />
</p>
<p>
<loop_area type="task">'''Aufgabe 4'''
<p>
Im Video werden in den Registern PC und IR jeweils Werte abgelegt, die aus vier Bit bestehen.
Im Video werden in den Registern PC und IR jeweils Werte abgelegt, die aus vier Bit bestehen.
* Wie realisitisch sind diese ''vier Bit''?
* Wie realisitisch sind diese ''vier Bit''?
* Wieviele Bit erwartest du hier bei deinem eigenen PC oder Laptop?
* Wieviele Bit erwartest du hier bei deinem eigenen PC oder Laptop?
</p>
</loop_area>
</loop_area>
</p>


<br />
==== Gründe für eine Interrupt-Auslösung ====
==== Gründe für eine Interrupt-Auslösung ====


<p>
Es gibt eine ganze Reihe an Gründen für eine Interrupt-Auslösung. Näher betrachtet werden hier die Folgenden:
Es gibt eine ganze Reihe an Gründen für eine Interrupt-Auslösung. Näher betrachtet werden hier die Folgenden:


Zeile 71: Zeile 116:
* Auslösung durch einen Hardware-Taktgeber zur Quasi-gleichzeitigen Ausführung mehrerer Prozesse.
* Auslösung durch einen Hardware-Taktgeber zur Quasi-gleichzeitigen Ausführung mehrerer Prozesse.
* Auslösung durch ein E/A-Gerät während der Kommunikation zwischen CPU und  E/A-Gerät.
* Auslösung durch ein E/A-Gerät während der Kommunikation zwischen CPU und  E/A-Gerät.
</p>
<p>
In den folgenden Unterkapiteln werden diese Punkte näher erläutert.<br />
</p>


In den folgenden Unterkapiteln werden diese Punkte näher erläutert.<br />
<br />
<br />
<hr />
<hr />
<sub>Diese Seite steht unter der [http://creativecommons.org/licenses/by/3.0/deed.de Creative Commons Namensnennung 3.0 Unported Lizenz] [http://creativecommons.org/licenses/by/3.0/deed.de http://i.creativecommons.org/l/by/3.0/80x15.png]
<sub>Diese Seite steht unter der [http://creativecommons.org/licenses/by/3.0/deed.de Creative Commons Namensnennung 3.0 Unported Lizenz] [http://creativecommons.org/licenses/by/3.0/deed.de http://i.creativecommons.org/l/by/3.0/80x15.png]
</sub>
</sub>

Version vom 20. September 2013, 21:05 Uhr

Der Interrupt-Controller ist ein weiterer Hardware-Baustein in der Architektur eines Computers. Seine Aufgabe besteht darin, Interrupt-Signale von verschiedenen Komponenten des Rechners entgegen zu nehmen, und die CPU über das Vorliegen von einem (oder mehreren) Interrupts zu informieren.

Die CPU ist dann für die Abarbeitung des Interrupts zuständig. Dies geschieht, indem eine sogenannte Interruptbehandlungsroutine (kurz: ISR, Interrupt Service Routine) aufgerufen wird.

Die deutsche Übersetzung des englischen Begriffs "Interrupt" ist "Unterbrechung". Und genau diese Unterbrechung eines laufenden Prozesses passiert in dem Moment, wo sich die CPU entschließt, einen vom Interrupt-Controller angezeigten Interrupt zu bearbeiten.

Den vereinfachten Ablauf zeigt das folgende Video:

Im Video ist erkennbar, dass der Interrupt-Controller als eigenständige Hardware-Komponente über den Systembus mit anderen Komponenten und insbesondere mit der CPU kommuniziert.

Cpu13-interrupt-controller.jpg

Vnrgesamt2.jpg

Hinweis

Weiterführende Literatur

erläutert in den Kapiteln 8.1 (Interrupts) und 8.2 (Ausnahmen) weitere Hintergründe zu den genannten Themen. Die Lektüre dieser Quelle sei ausdrücklich empfohlen.

Studierende sind oftmals berechtigt, eine PDF-Version dieses Buches ohne entstehende Kosten über ihre Hochschulen von Springerlink zu beziehen.

Es ist an dieser Stelle wichtig zu verstehen was genau passiert, wenn ein Interrupt auftritt und von der CPU bearbeitet wird. Die Beschreibung oben auf dieser Seite ist noch recht allgemein gehalten, weshalb jetzt einige entscheidende Details betrachtet werden sollen.

Ein entscheidendes Kriterium bei der Abarbeitung eines Interrupts durch die CPU ist, dass der durch den Interrupt unterbrochene Prozess später ohne negative Beeinträchtigung weiter ausgeführt werden kann. Das vom Prozess erarbeitete Ergebnis darf sich nicht unterscheiden, egal, ob während der Abarbeitung ein (oder mehrere) Interrupt(s) auftrat(en), oder nicht. Erreicht wird dieses durch eine präzise Unterbrechung.

Definition

Definition: Präzise Unterbrechung (Precise interrupt)

Einen Interrupt nennt man eine präzise Unterbrechung, falls alle der folgenden Bedingungen erfüllt sind:

  1. Der Programmzähler des unterbrochenen Prozesses wird an einer bekannten Stelle gesichert.
  2. Alle Befehle des unterbrochenen Prozesses, die vor dem Befehl ausgeführt werden müssen, auf den der Programmzähler zeigt, sind vollständig abgearbeitet.
  3. Kein Befehl des unterbrochenen Prozesses, der nach dem Befehl ausgeführt werden muss, auf den der Programmzähler zeigt, ist bereits abgearbeitet.
  4. Der Ausführungszustand des Befehls des unterbrochen Prozesses, auf den der Programmzähler zeigt, ist bekannt.

Definition

Definition: Unpräzise Unterbrechung (Imprecise interrupt)

Einen Interrupt nennt man eine unpräzise Unterbrechung, falls mindestens eine der für einen präzisen Interrupt genannten Bedingungen nicht erfüllt ist.

Das folgende Video zeigt ein Beispiel, anhand dessen nachvollzogen werden kann, was genau bei einem Interrupt passiert, und ob die Bedingungen für eine präzise Unterbrechung erfüllt werden.

Mit Hilfe dieses Videos ist es nun möglich, die folgenden Aufgaben zu bearbeiten:

Aufgabe

Aufgabe 1

Prüfe für jede der vier Bedingungen einer präzisen Unterbrechung, ob diese tatsächlich erfüllt ist!

  • Ist Bedingung 1 erfüllt? Erläutere warum!
  • Ist Bedingung 2 erfüllt? Erläutere warum!
  • Ist Bedingung 3 erfüllt? Erläutere warum!
  • Ist Bedingung 4 erfüllt? Erläutere warum!

Aufgabe

Aufgabe 2

Beschreibe ein Szenario, bei dem jeweils eine der vier Bedingugen einer präzisen Unterbrechung nicht erfüllt ist.

  • Was sind die Folgen, wenn Bedingung 1 nicht erfüllt ist?
  • Was sind die Folgen, wenn Bedingung 2 nicht erfüllt ist?
  • Was sind die Folgen, wenn Bedingung 3 nicht erfüllt ist?
  • Was sind die Folgen, wenn Bedingung 4 nicht erfüllt ist?

Aufgabe

Aufgabe 3

Im Video wird gezeigt, wie der aktuelle Wert des Befehlszählers bei einer Unterbrechung in einem anderen Register gesichert wird. Alle weiteren Register oder die Statusflags werden hingegen nicht gesichert.

  • Wenn das Steuerwerk nicht für die Sicherung dieser Werte zuständig ist, wer oder was ist es dann?
    (Auf vorangegangenen Seiten war die Antwort auf Wer-oder-was-Fragen stets "Das Betriebssystem", aber diese Antwort ist an dieser Stelle nicht zugelassen.)
  • Wo können diese Werte gesichert werden?
  • Welche Vor- und/oder Nachteile hat diese Verfahrensweise?

Aufgabe

Aufgabe 4

Im Video werden in den Registern PC und IR jeweils Werte abgelegt, die aus vier Bit bestehen.

  • Wie realisitisch sind diese vier Bit?
  • Wieviele Bit erwartest du hier bei deinem eigenen PC oder Laptop?

Gründe für eine Interrupt-Auslösung

Es gibt eine ganze Reihe an Gründen für eine Interrupt-Auslösung. Näher betrachtet werden hier die Folgenden:

  • Auslösung aufgrund einer Speicherschutzverletzung.
  • Auslösung durch einen Hardware-Taktgeber zur Quasi-gleichzeitigen Ausführung mehrerer Prozesse.
  • Auslösung durch ein E/A-Gerät während der Kommunikation zwischen CPU und E/A-Gerät.

In den folgenden Unterkapiteln werden diese Punkte näher erläutert.



Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png