Fünf Phasen des Interrupt-Verarbeitungsprozesses: 1. Interrupt-Anforderungsphase 2. Interrupt-Arbitrierungsphase, es gibt zwei Methoden der Hardware-Arbitrierung und der Software-Arbitrierung 3. Interrupt-Antwortphase, die CPU sendet ein Interrupt-Antwortsignal an die Interrupt-Quelle 4. Unterbrechen Sie die Servicephase. 5. Unterbrechen Sie die Rückkehrphase, kehren Sie zum Haltepunkt des ursprünglichen Programms zurück, stellen Sie die Hardware-Site wieder her und führen Sie die Ausführung des ursprünglichen Programms fort.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, Dell G3-Computer.
Der grundlegende Prozess der Interrupt-Verarbeitung umfasst fünf Phasen, darunter Interrupt-Anfrage, Interrupt-Schiedsgerichtsbarkeit, Interrupt-Antwort, Interrupt-Dienst und Interrupt-Rückgabe.
1) Interrupts, die innerhalb der CPU auftreten (interner Interrupt), erfordern keine Interrupt-Anforderungen und die Interrupt-Steuerlogik in der CPU empfängt und verarbeitet sie direkt.
2) Externer Interrupt Die Anforderung wird von der Interrupt-Quelle gestellt. Die externe Interrupt-Quelle verwendet den Interrupt-Eingangspin der CPU, um ein Interrupt-Anforderungssignal einzugeben. Im Allgemeinen verfügt die CPU über zwei Interrupt-Anforderungseingangspins: einen maskierbaren Interrupt-Anforderungseingangspin und einen nicht maskierbaren Interrupt-Anforderungseingangspin.
Der Zeitpunkt, zu dem jede Interrupt-Quelle ein Interrupt-Anforderungssignal sendet, ist ungewiss, und auch der Zeitpunkt, zu dem die CPU auf den Interrupt reagiert, ist ungewiss. Daher verfügt jede Interrupt-Quelle über ein Interrupt-Anforderungs-Flip-Flop, das sein eigenes Interrupt-Anforderungssignal zwischenspeichert und hält, bis die CPU auf die Interrupt-Anforderung antwortet, bevor sie sie löscht.
Es gibt ein Interrupt-Freigabe-Flip-Flop in der CPU. Wenn es „1“ ist, darf die CPU auf Interrupts reagieren, was als „on interrupt“ bezeichnet wird. Wenn es „0“ ist, darf die CPU nicht auf Interrupts reagieren und die Interrupts werden blockiert, was als „Off-Interrupts“ bezeichnet wird. %%Normalerweise wird beim Zurücksetzen der CPU auch das Interrupt-Freigabe-Flip-Flop auf „0“ zurückgesetzt, was bedeutet, dass Interrupts ausgeschaltet sind. Wenn der CPU-Interrupt reagiert, schaltet die CPU den Interrupt automatisch aus und darf keinen weiteren neuen Interrupt akzeptieren. %%Der Status des Interrupt-Aktivierungstriggers kann mithilfe der Interrupt-Ein- oder Aus-Anweisung festgelegt werden.
2. Interrupt-Vermittlungsphase
2.1 Software-Schiedsgerichtsbarkeit
Angenommen, die Eingangsportadresse im obigen Bild ist 87FFH. Es gibt das folgende Abfrageprogramm:
MOV DX, 87FFH
IN AL, DX; Inhalt des Interrupt-Request-Registers lesen
SHR AL, 1
SHR AL, 1
JC IR1; IRQ1 hat eine Anfrage, Weitergabe an IR1
SHR AL,1
JC IRQ2 hat eine Anfrage, Weitergabe an IR2
...
Die Software-Entscheidungsfindung dauert lange. Wenn es viele Interrupt-Quellen gibt, ist die Echtzeitleistung der Interrupts schlecht, aber die Software-Prioritätsanordnung ist flexibel.
2.2 Hardware-Arbitrierung
2.2.1 Daisy-Chain-Arbitrierungsschaltung
Implementierungsprozess:
Die CPU empfängt eine Interrupt-Anfrage. Wenn der Interrupt zulässig ist, sendet die CPU ein Interrupt-Antwortsignal. Das Interrupt-Antwortsignal erreicht zuerst das vordere Ende der Daisy-Chain. Wenn Interrupt-Quelle 1 eine Interrupt-Anfrage stellt, fängt sie das Interrupt-Antwortsignal ab und blockiert es, sodass es nicht an die nächste Interrupt-Quelle übertragen werden kann. Unabhängig davon, ob die folgenden Interrupt-Quellen Interrupt-Anfragen ausgelöst haben, ist es unmöglich, Interrupt-Antwortsignale zu empfangen, sodass auf ihre Interrupt-Anfragen nicht reagiert werden kann.
2.2.2 Interrupt-Controller-Arbitrierung
Nach der Interrupt-Arbitrierung tritt die Interrupt-Verarbeitung in die Interrupt-Antwortphase ein. Bei der Reaktion auf einen Interrupt sendet die CPU ein Interrupt-Antwortsignal an die Interrupt-Quelle und
① schützt die Hardware-Site;
③ schützt Breakpoints; Adresse des Interrupt-Service-Programms.
4. Unterbrechungsdienstphase
Ordnen Sie am Anfang der Interrupt-Serviceroutine mehrere Push-Anweisungen an, um den Inhalt jedes Registers zur Speicherung auf den Stapel zu verschieben.
2)Unterbrechung aktivieren. Während der Ausführung der Interrupt-Serviceroutine dürfen Interrupt-Anforderungen höherer Ebenen die aktuelle Interrupt-Serviceroutine unterbrechen, um eine Interrupt-Verschachtelung zu erreichen.
3)Dienstunterbrechung. Vervollständigen Sie die spezifischen Anforderungen für Interrupt-Quellen.
4)Stellen Sie die Szene wieder her. Bevor die Interrupt-Serviceroutine endet, muss die Interrupt-Szene des Hauptprogramms wiederhergestellt werden. Normalerweise werden die im Stapel gespeicherten lokalen Informationen in das Originalregister eingefügt.
5)Rückkehr unterbrechen. Kehren Sie zum Haltepunkt des Originalprogramms zurück und fahren Sie mit der Ausführung des Originalprogramms fort.
5. Rückkehrphase unterbrechen
Weitere Programmierkenntnisse finden Sie unter: Programmiervideo
! !
Das obige ist der detaillierte Inhalt vonWas sind die fünf Phasen der Interrupt-Behandlung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!