Was bedeuten die Begriffe "asynchron" und "synchron" in Bezug auf die Definition eines Interrupts?

Antworten:

11

Wenn dieser Wikipedia-Artikel einen asynchronen Interrupt erwähnt, verwenden sie die klassische getaktete vs. nicht getaktete Definition von (a) synchron, die für eine digitale Schaltung gilt.

Eine digitale Schaltung wird als synchron bezeichnet, wenn jeder Teil der Logik mit einem gemeinsamen Takt verbunden ist (wie in Ihrer CPU). Beim Anstieg oder Abfall jedes Taktzyklus wird der Zustand der Schaltung aktualisiert. Eine asynchrone digitale Schaltung wird dagegen nicht getaktet, sondern der nächste Zustand hängt vom aktuellen ab (und schaltet so schnell wie möglich um). Das Lesen von Logik von anderen Schaltkreisen, die nicht denselben gemeinsamen Takt verwenden, kann auch als asynchron definiert werden, jedoch in Bezug auf den anderen Schaltkreis .

Wenn ein asynchroner Interrupt ausgelöst wird, bedeutet dies, dass der Prozessor (höchstwahrscheinlich beim nächsten Taktzyklus) seine aktuelle Ausführungsumgebung speichert und die Interruptanforderung bearbeitet. Dies ist ein Beispiel für einen Hardware-Interrupt (einer, der durch eine externe Verbindung zum Prozessor ausgelöst wird). Alle Software-Interrupts sind, wie im Artikel erwähnt, technisch synchron, da sie von der CPU selbst ausgelöst werden - einer synchronen Schaltung.

Da keine externen Geräte dieselbe gemeinsame Uhr wie die CPU verwenden, können alle externen Interrupts als asynchron bezeichnet werden. Auch wenn das Gerät , das den Alarm ausgelöst kann eine synchrone Schaltung sein, von den CPU Point-of-View , werden diese Interrupts asynchron ausgelöst (da es nicht ein gemeinsames Taktsignal mit dem Gerät Sharing).


Das eigentliche externe Interrupt- Signal selbst ist asynchron, aber alle CPU-Interrupt-Handler sind synchron. Sie erkennen einen Interrupt erst beim nächsten Takt , da dies der Punkt eines synchronen Systems ist (damit sich der Systemstatus nur gemeinsam ändern kann). Wenn Sie neugierig sind, wie ein Prozessor mit Interrupts umgeht, lesen Sie diese großartige Ressource von Intel (insbesondere Band 3, Teil 1).

Durchbruch
quelle
Asynchron ist in diesem Fall nicht getaktet. Asynchrone Hardware-Interrupts werden beispielsweise getaktet, wenn APICs verwendet werden. Sie werden auf das APICCLK-Signal des APIC-Busses getaktet. Asynchron bedeutet nicht nicht getaktet. Es bedeutet lediglich, nicht mit dem relevanten Takt synchronisiert zu sein: dem Systembus-Schnittstellentakt der CPU.
JdeBP
Der APIC befindet sich nur zwischen der CPU-Logik und der Interrupt-Logik, aber das eigentliche Interrupt-Signal selbst ist immer noch asynchron. Der APIC hilft nur dabei, die CPU-Steuerung zu steuern, wenn es sich um mehrere physische Kerne handelt.
Durchbruch
1
@JdeBP Entschuldigung, nach dem Durchblättern des Intel-Architekturhandbuchs verarbeitet der APIC auch Software-Interrupts. Obwohl es in Phase mit dem Eingang getaktet ist, gilt es dennoch als Teil der CPU, und dies geschieht nur, um zu verhindern, dass sich die Logik während eines Taktsignals teilweise ändert. Der APIC hilft nur dabei, Interrupts zu priorisieren und Ressourcenkonflikte auf Hardwareebene zu vermeiden. Schließlich teilt der APIC in x86-Architekturen tatsächlich die CPU-Uhr.
Durchbruch
1
@JdeBP, von dem Intel - Architekturen Software-Entwicklerhandbuch ich oben verlinkt, Band 3A Teil 1, 10 heißt es, dass die Kapitel APIC tut Interrupts Griff Software: „Local APIC kann Interrupts aus den folgenden Quellen erhalten: [...] Inter-Prozessor Interrupts (IPIs) - Ein Intel 64- oder IA-32-Prozessor kann den IPI-Mechanismus verwenden, um einen anderen Prozessor oder eine Gruppe von Prozessoren auf dem Systembus zu unterbrechen. IPIs werden für Software-Selbstunterbrechungen, Interrupt-Weiterleitung oder präventive Planung verwendet. " Auch ich bereits gesagt , dass die APIC wurde mit dem CPU - Takt synchronisiert.
Durchbruch
1
Sie verbinden Software-Interrupts fälschlicherweise mit IPIs, nur weil ein Satz in einem Handbuch das Wort "Software" verwendet, um zu sagen, dass Software einen IPI auslösen kann. Sie und die Person, die Ihre Kommentare positiv bewertet, müssen diese Handbücher viel genauer lesen, insbesondere den Abschnitt mit dem Titel Software Interrupts .
JdeBP
3

Aus dem Etymologie-Wörterbuch für Synchronous,

1660er Jahre, "existierend oder gleichzeitig passend ",
von LL synchronus "simultan",
von Gk. Synchronos "passieren zur gleichen Zeit",
von syn - "zusammen" + khronos "Zeit".
Die Bedeutung "Wiederholung zu denselben aufeinanderfolgenden Zeitpunkten" wird ab 1670 bestätigt

asynchronous bedeutet "nicht synchron".

Jetzt lesen Sie das alles im Kontext von noch interruptseinmal.

Der asynchrone Interrupt steht nicht in direktem Zusammenhang mit der jeweiligen Aktivität. Stellen Sie sich vor, Sie lesen dies und hören plötzlich ein Geräusch hinter sich. Sie drehen sich um - das liegt daran, dass Sie dazu asynchron unterbrochen wurden:-)

Wenn Sie nun die Wikipedia-Seite nach Interrupts lesen und das Wort sehen asynchronous, schlagen Sie es nach (wie oben) - das ist ein synchroner Interrupt in Ihrem Gedankenfluss; Die Ursache für diese Unterbrechung war das, was Sie gelesen haben. Infolgedessen haben Sie aufgehört zu lesen, das Wort nachgeschlagen und sind schließlich zum Lesen zurückgekehrt.

nik
quelle
Vielen Dank! Ich frage mich, was und was bei asynchroner Unterbrechung nicht gleichzeitig passiert.
Tim
Unterscheiden sich ihre Bedeutungen im Interrupt-Kontext von denen im Wörterbuch?
Tim
+1 für viel klarer als meine Antwort.
Soandos
1
Nee. Er sagt es nur klarer. Synchronisieren bedeutet, dass Sie damit gerechnet haben. Async bedeutet, dass Sie nicht wussten, wann oder ob es passieren würde.
Soandos
1
@sonados Der Begriff synchron hat nichts damit zu tun, dass erwartet wird, dass etwas passiert. Er bezieht sich auf alles, was zusammen / in Phase getaktet wird. Kein Gerät "erwartet" einen synchronen Interrupt, ein Interrupt ist ein Interrupt - etwas, das die CPU zu diesem Zeitpunkt nicht erwartet hatte, synchron oder nicht. Das gleiche passiert, wenn ich einen Software-Interrupt aufrufe oder einen Hardware-Interrupt auf der CPU auslöse.
cp2141
1

Grundsätzlich ist dies eine Möglichkeit, die Aufmerksamkeit des Kernels oder eines Programms zu erregen.

Ein Beispiel: Nehmen wir an, ich habe ein Programm, das eine Datei herunterlädt. Ich möchte, dass mein Programm während des Herunterladens der Datei weiterhin reagiert, und ich muss meinem Programm mitteilen, dass ich fertig bin. In der Zwischenzeit sollte mein Programm jedoch so weitermachen, wie es will, bis es durch die Fertigstellung einer heruntergeladenen Datei ** unterbrochen ** wird. Es tut dann alles, was es tun muss. Es ist asynchron, da es nicht zu einem vordefinierten Zeitpunkt oder in einer vordefinierten Reihenfolge auftritt.

Synchronisieren bedeutet, dass Sie damit gerechnet haben. Async bedeutet, dass Sie nicht wussten, wann oder ob es passieren würde.

Soandos
quelle
Vielen Dank! Aber ich verstehe den Unterschied zwischen synchronen und asynchronen Interrupts nicht. "Synchroner Interrupt ist, wenn ein Programm eine Nachricht an das Betriebssystem sendet, dass es etwas benötigt oder dass etwas gerade beendet wurde."
Tim
Siehe überarbeitete Antwort.
Soandos