Woher weiß die CPU, wenn ein Interrupt auftritt?

1193
IamCarbonMan

Ich schreibe einen Emulator und kann anscheinend keine Informationen dazu finden. Ich weiß, dass Geräte einen Impuls auf der IRQ-Leitung auslösen. Die Online-Erklärungen enthalten jedoch nicht, wie die CPU damit umgeht. Führt ein Interrupt buchstäblich dazu, dass die CPU alles fallen lässt und sich darum kümmert? Oder prüft die CPU während jedes Zyklus den Zustand des IRQ? Wie sieht es mit anderen Arten der Behandlung von Interrupts aus? Beispielsweise verwendet der Nintendo Game Boy anscheinend einen reservierten Speicherplatz im Speicher als Interrupt-Flag, das der CPU mitteilt, wo sie eine Subroutine zur Behandlung dieses Interrupts aufrufen muss (meine beste Vermutung ist, dass dieses Flag von DMA geschrieben wird). Ist dies bei älteren Systemen üblich oder standard?

0

1 Antwort auf die Frage

1
sawdust

Ich weiß, dass Geräte einen Impuls auf der IRQ-Leitung auslösen.

Vielleicht wird ein Puls, aber häufiger ein Pegel behauptet.
Erst nachdem der Interrupt bestätigt wurde, wird die Anforderungszeile deaktiviert.

Führt ein Interrupt buchstäblich dazu, dass die CPU alles fallen lässt und sich darum kümmert?

Ja, auf eine ordentliche Weise. Deshalb wird es "Interrupt" genannt.

Oder prüft die CPU während jedes Zyklus den Zustand des IRQ?

Nein, die CPU wird buchstäblich unterbrochen (bei Beendigung eines Befehls).
Wenn Sie jedoch genauer hinschauen, dh wie die CPU selbst arbeitet, gibt es eine Zustandsmaschine, die die IRQ-Leitung untersucht.

Beispielsweise verwendet der Nintendo Game Boy anscheinend eine reservierte Stelle im Speicher als Interrupt-Flag, die der CPU mitteilt, wo sie eine Subroutine zur Behandlung dieses Interrupts aufrufen muss

Das klingt vage nach einem Interrupt-Vektor, der in vielen CPU-Architekturen verwendet wird. Es wird jedoch nicht als "Interrupt-Flag" verwendet.

Ihre Fragen deuten darauf hin, dass Sie ein schwaches Verständnis dafür haben, dass es sich außerhalb einer CPU befindet und was sich in einer CPU befindet. Beispielsweise führt die CPU aus dem Speicher abgerufene Maschinenbefehle aus. In der CPU befindet sich ein Anweisungsdecoder. Wenn Sie diese interne Operation als "die CPU decodiert die Anweisung" beschreiben, haben Sie ein Problem geschaffen, bei dem externe Operationen von internen Operationen (Low-Level-Operationen) unterschieden werden.