Vektorisierte Interrupts
- Geräten, die vektorisierte Interrupts verwenden, wird ein Interrupt-Vektor zugewiesen. Dies ist eine Zahl, die einen bestimmten Interrupt-Handler identifiziert. Die ISR-Adresse dieser Interrupts ist fest und der CPU bekannt.
- Wenn das Gerät unterbricht, verzweigt die CPU zu dem jeweiligen ESR.
- Der Mikroprozessor springt zur jeweiligen Serviceroutine.
- Wenn der Mikroprozessor den Aufrufbefehl ausführt, speichert er die Adresse des nächsten Befehls auf dem Stapel.
- Am Ende der Serviceroutine führt der RET-Befehl die Ausführung dorthin zurück, wo das Programm unterbrochen wurde.
- Alle 8051-Interrupts sind vektorisierte Interrupts.
Nicht vektorieller Interrupt
- Ein nicht vektorisierter Interrupt ist ein Interrupt mit einem gemeinsamen ISR, der allen nicht vektorisierten Interrupts im System gemeinsam ist. Die Adresse dieses gemeinsamen ISR ist der CPU bekannt.
- Die Interrupts, die keinen festen Speicherplatz für die Übertragung der Kontrolle von der normalen Ausführung haben.
- Die Adresse des Speichers wird zusammen mit dem Interrupt gesendet.
- Die CPU weiß entscheidend nicht, welches Gerät den Interrupt verursacht hat, ohne jede I/O-Schnittstelle in einer Schleife abzufragen.
- Sobald die Unterbrechung auftritt, muss das System feststellen, welches Gerät von allen zugeordneten Geräten tatsächlich unterbrochen wurde.
Der Unterschied
Bei einem vektorisierten Interrupt kennt die CPU die Adresse der Interrupt-Serviceroutine im Voraus. Alles, was es braucht, ist, dass das unterbrechende Gerät seinen eindeutigen Vektor über einen Datenbus und über seine E/A-Schnittstelle an die CPU sendet. Die CPU nimmt diesen Vektor, überprüft eine Interrupt-Tabelle im Speicher und führt dann die korrekte ISR für dieses Gerät aus. Daher ermöglicht der vektorisierte Interrupt der CPU, zu wissen, dass ISR in der Software (Speicher) ausgeführt werden soll.
Ein nicht – vektorisierte Interrupt ist , wo die Unterbrechungseinrichtung nie einen Interruptvektor sendet. Ein Interrupt wird von der CPU empfangen und springt den Programmzähler auf eine feste Adresse in der Hardware. Dies ist typischerweise ein fest codierter ISR, der geräteunabhängig ist. Die CPU weiß im Wesentlichen nicht, welches Gerät den Interrupt verursacht hat, ohne jede O/I-Schnittstelle in einer Schleife abzufragen und das Statusregister jeder I/O-Schnittstelle zu überprüfen, um dasjenige mit dem Status „Interrupt erstellt“ zu finden.
Lesen Sie auch: Unterschied zwischen Software- und Hardware-Interrupts