Prozessor-Architektur: Interrupts, DMA und Systemsteuerung
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 6,46 KB
Grundlagen der Befehlsausführung und Register
Der normale Ablauf des Prozessors wird durch spezielle Register gesteuert:
- Program Counter (PC): Enthält die Adresse des nächsten auszuführenden Befehls.
- Instruction Register (IR): Enthält den zuletzt gelesenen Befehl.
Interrupts (Unterbrechungen)
Interrupts unterbrechen den normalen Ablauf des Prozessors und dienen primär der Verbesserung der Verarbeitungseffizienz.
Arten von Interrupts
Interrupts können durch verschiedene Ereignisse ausgelöst werden:
- Software-Interrupts
- Timer/Uhr-Interrupts
- E/A-Interrupts (Ein-/Ausgabe)
- Hardware-Fehler (z. B. Speicherfehler)
Interrupt-Steuerung
Wenn ein Interrupt deaktiviert ist, ignoriert der Prozessor das Interrupt-Signal. Tritt während dieser Zeit eine Unterbrechung auf, bleibt das Signal in der Regel bestehen und wird verarbeitet, sobald der Prozessor die Interrupt-Steuerung wieder aktiviert.
Klassifizierung von Prozessoraktionen
Wenn der Prozessor Befehle interpretiert und Aktionen ausführt, können diese in vier Hauptkategorien eingeteilt werden:
- Prozessor-Speicher: Datenübertragung zwischen Prozessor und Hauptspeicher.
- Prozessor-E/A (Ein-/Ausgabe): Datenübertragung zu oder von einem peripheren Gerät (zwischen Prozessor-Modul und E/A-Modul).
- Datenverarbeitung: Der Prozessor führt arithmetische oder logische Operationen auf Daten durch.
- Kontrolle/Steuerung: Befehle, die eine Änderung der Ausführungsreihenfolge erfordern (z. B. Sprünge).
Routine zur Interrupt-Behandlung (ISR)
Wenn ein E/A-Gerät bereit ist, weitere Daten vom Prozessor zu empfangen oder an diesen zu senden, sendet das E/A-Modul einen Interrupt-Anforderungs-Antrag an den Prozessor.
Der Prozessor unterbricht daraufhin die Ausführung des laufenden Programms und springt zu einem speziellen Programm, das dem E/A-Gerät dient. Dieses Programm ist bekannt als Interrupt Service Routine (ISR) oder Routine zur Interrupt-Behandlung. Nach Abschluss der ISR wird die Ausführung des ursprünglichen Programms fortgesetzt.
Multiprogramming zur Effizienzsteigerung
Selbst bei der Verwendung von Interrupts kann die Prozessorauslastung ineffizient sein, insbesondere wenn die Zeit für eine E/A-Operation viel länger ist als die Ausführungszeit des Benutzer-Codes zwischen den E/A-Aufrufen. Der Prozessor würde in diesem Fall lange Zeit im Leerlauf verbringen.
Lösung: Durch Multiprogramming werden mehrere Benutzerprogramme gleichzeitig aktiv geplant, sodass der Prozessor während der Wartezeit eines Programms auf E/A mit der Arbeit an einem anderen Programm fortfahren kann.
Programmed I/O (Polling)
Der Prozessor sendet einen E/A-Befehl an das entsprechende E/A-Modul. Der Prozessor spielt eine aktive Rolle, indem er periodisch den Status des E/A-Moduls abfragt (Polling), bis er feststellt, dass der Vorgang abgeschlossen ist.
Problem des Programmed I/O
Der Prozessor verbringt viel Zeit mit Warten auf den Abschluss des E/A-Moduls, was die Systemleistung stark degradiert.
Lösung (Ansatz 1: Interrupts)
Während der Wartezeit auf das E/A-Modul kann der Prozessor mit nützlicher Arbeit fortfahren.
Interrupt-Driven I/O
Hierbei stört ein externes Ereignis (der Abschluss der E/A-Operation) den normalen Ausführungsablauf des Prozessors. Dies ist ein asynchrones Ereignis.
Direct Memory Access (DMA)
Problem bei großen Transfers
Große Datenübertragungen zwischen Geräten und Speicher (oder umgekehrt) führen zu einer übermäßigen Auslastung des Prozessors, wenn dieser jeden Byte-Transfer selbst steuern muss.
Lösung: DMA
DMA ermöglicht die Übertragung großer Datenblöcke zwischen dem Speicher und einem E/A-Gerät, ohne dass der Prozessor jeden einzelnen Schritt steuern muss. In einem einzigen Befehl wird alles Notwendige für die Übertragung generiert.
Die DMA-Übertragung erfolgt über ein separates Modul, das entweder direkt an den Systembus angeschlossen oder in das E/A-Modul integriert ist. DMA ist besonders nützlich, wenn der Prozessor einen Datenblock lesen oder schreiben möchte.
Ausnahmen (Exceptions)
Eine Ausnahme ist ein unerwartetes Ereignis, das während der Ausführung eines Befehls aufgrund eines bestimmten Zustands auftritt. Beispiele hierfür sind:
- Arithmetischer Überlauf
- Ungültige Speicheradresse
- Versuch, eine privilegierte Anweisung auszuführen
Im Gegensatz zu Interrupts, die asynchron sind, ist eine Ausnahme ein synchrones Ereignis, da sie direkt durch die Ausführung eines bestimmten Befehls ausgelöst wird.
Dual-Mode-Betrieb und Systemsicherheit
Was passiert, wenn ein Benutzerprogramm auf den Speicher zugreift, in dem die Interrupt-Vektoren gespeichert sind, und diese verändert?
Lösung: Der Prozessor verfügt über verschiedene Modi der Befehlsausführung, um die Systemsicherheit zu gewährleisten:
- Privilegierte Anweisungen (Supervisor/Kernel-Modus): Diese Befehle können die Ausführung anderer Programme oder des Betriebssystems (OS) beeinflussen (z. B. Schreiben an einen Geräte-Port). Ihre Ausführung ist nur dem Betriebssystem gestattet.
- Nicht-privilegierte Anweisungen (User-Modus): Diese Befehle stellen kein Sicherheitsproblem für andere Programme dar (z. B. das Inkrementieren eines Zählers).
Stack (Stapel) und Prozeduraufrufe
Der Stack (Stapel) wird verwendet, um die Kontrolle bei Prozeduraufrufen und Rücksprüngen wiederherzustellen. Der Stapel ist ein Speicherbereich, auf den über das LIFO-Prinzip (Last In, First Out) zugegriffen wird.
Ein gängiges Verfahren zur Behandlung von Prozeduraufrufen und Rücksprüngen basiert auf der Verwendung des Stapels:
- Wenn der Prozessor einen Prozeduraufruf ausführt, legt er die Rücksprungadresse auf dem Stapel ab.
- Wenn der Prozessor einen Rücksprung ausführt, verwendet er die Adresse, die sich an der Spitze des Stapels befindet.