Maybaygiare.org

Blog Network

Interrupt

Interrupts können in Hardware als eigenständige Komponente mit Steuerleitungen implementiert oder in das Speichersubsystem integriert sein.Wenn sie in Hardware als eigenständige Komponente implementiert ist, kann eine Interrupt-Controller-Schaltung wie der programmierbare Interrupt-Controller (PIC) des IBM-PCS zwischen die Unterbrechungsvorrichtung und den Interrupt-Pin des Prozessors geschaltet werden, um mehrere Interruptquellen auf die eine oder zwei typischerweise verfügbaren CPU-Leitungen zu multiplexen. Wenn sie als Teil des Speichercontrollers implementiert sind, werden Interrupts in den Speicheradressraum des Systems abgebildet.

Shared IRQsEdit

Mehrere Geräte können sich eine flankengesteuerte Interruptleitung teilen, wenn sie dafür ausgelegt sind. Die Interruptleitung muss einen Pull-Down- oder Pull-Up-Widerstand haben, damit sie, wenn sie nicht aktiv angesteuert wird, in ihren inaktiven Zustand übergeht, der der Standardzustand ist. Geräte signalisieren einen Interrupt, indem sie die Leitung kurz in ihren nicht standardmäßigen Zustand versetzen und die Leitung schweben lassen (nicht aktiv ansteuern), wenn sie keinen Interrupt signalisieren. Diese Art der Verbindung wird auch als Open Collector bezeichnet. Die Leitung führt dann alle von allen Geräten erzeugten Impulse. (Dies ist analog zu der Zugschnur in einigen Bussen und Trolleys, an der jeder Passagier ziehen kann, um dem Fahrer zu signalisieren, dass er einen Stopp anfordert.) Interruptimpulse von verschiedenen Geräten können jedoch verschmelzen, wenn sie zeitlich nahe beieinander liegen. Um zu vermeiden, dass Interrupts verloren gehen, muss die CPU an der Hinterflanke des Impulses auslösen (z. B. die steigende Flanke, wenn die Leitung hochgezogen und niedrig gefahren wird). Nach dem Erkennen eines Interrupts muss die CPU alle Geräte auf Serviceanforderungen überprüfen.

Flankengesteuerte Interrupts haben nicht die Probleme, die pegelgesteuerte Interrupts beim Teilen haben. Der Service eines Geräts mit niedriger Priorität kann beliebig verschoben werden, während Interrupts von Geräten mit hoher Priorität weiterhin empfangen und gewartet werden. Wenn es ein Gerät gibt, das die CPU nicht warten kann, was zu falschen Interrupts führen kann, wird die Interrupt-Signalisierung anderer Geräte nicht beeinträchtigt. Es ist jedoch leicht, dass ein flankengesteuerter Interrupt übersehen wird – zum Beispiel, wenn Interrupts für einen Zeitraum maskiert werden – und es sei denn, es gibt eine Art von Hardware-Latch, der das Ereignis aufzeichnet, ist es unmöglich, es wiederherzustellen. Dieses Problem verursachte viele „Lockups“ in der frühen Computerhardware, weil der Prozessor nicht wusste, dass er etwas tun sollte. Modernere Hardware hat oft ein oder mehrere Interrupt-Statusregister, die Interrupts Anfragen verriegeln; Gut geschriebener flankengesteuerter Interrupt-Handling-Code kann diese Register überprüfen, um sicherzustellen, dass keine Ereignisse verpasst werden.

Der ältere ISA-Bus (Industry Standard Architecture) verwendet flankengesteuerte Interrupts, ohne dass Geräte IRQ-Leitungen gemeinsam nutzen können, aber alle Mainstream-ISA-Motherboards enthalten Pull-up-Widerstände auf ihren IRQ-Leitungen. Der parallele Port verwendet auch flankengetriggerte Interrupts. Viele ältere Geräte gehen davon aus, dass sie ausschließlich IRQ-Leitungen verwenden, Dies macht es elektrisch unsicher, sie gemeinsam zu nutzen.

Es gibt 3 Möglichkeiten, wie mehrere Geräte, die sich „dieselbe Leitung teilen“, angehoben werden können. Erstens durch ausschließliche Leitung (Schalten) oder ausschließliche Verbindung (zu Stiften). Als nächstes ist mit dem Bus (alle auf der gleichen Linie verbunden hören): Karten auf einem Bus müssen wissen, wann sie sprechen und nicht sprechen (dh der ISA-Bus). Das Sprechen kann auf zwei Arten ausgelöst werden: durch Akkumulationsverriegelung oder durch Logikgatter. Logikgatter erwarten einen kontinuierlichen Datenfluss, der auf Schlüsselsignale überwacht wird. Akkumulatoren nur auslösen, wenn die remote seite regt die tor über eine schwelle, so keine ausgehandelt geschwindigkeit ist erforderlich. Jeder hat seine Geschwindigkeit gegenüber Distanz Vorteile. Ein Auslöser ist im Allgemeinen die Methode, in der Anregung ermittelt wird: steigende Flanke, fallende Flanke, Schwelle (Oszilloskop kann eine große Vielfalt von Formen und von bedingungen auslösen).

Das Auslösen von Software-Interrupts muss in die Software integriert sein (sowohl im Betriebssystem als auch in der App). Eine ‚C‘ -App hat eine Triggertabelle (eine Funktionstabelle) in der Kopfzeile, die sowohl die App als auch das Betriebssystem kennen und entsprechend verwenden, was nicht mit der Hardware zusammenhängt. Verwechseln Sie dies jedoch nicht mit Hardware-Interrupts, die der CPU signalisieren (die CPU führt Software aus einer Funktionstabelle aus, ähnlich wie Software-Interrupts).

Schwierigkeiten bei der gemeinsamen Nutzung von Interrupt-Leitungen

Mehrere Geräte, die sich eine Interrupt-Leitung teilen (beliebiger Auslösestil), fungieren alle als falsche Interrupt-Quellen in Bezug aufeinander. Bei vielen Geräten auf einer Leitung wächst die Arbeitsbelastung bei der Wartung von Interrupts proportional zum Quadrat der Anzahl der Geräte. Es ist daher bevorzugt, Geräte gleichmäßig über die verfügbaren Interruptleitungen zu verteilen. Der Mangel an Unterbrechungsleitungen ist ein Problem bei älteren Systemdesigns, bei denen die Unterbrechungsleitungen unterschiedliche physikalische Leiter sind. Nachrichtensignalisierte Interrupts, bei denen die Interruptleitung virtuell ist, werden in neuen Systemarchitekturen (wie PCI Express) bevorzugt und entlasten dieses Problem in erheblichem Maße.

Einige Geräte mit einer schlecht gestalteten Programmierschnittstelle bieten keine Möglichkeit festzustellen, ob sie einen Dienst angefordert haben. Sie können einsperren oder sich anderweitig schlecht benehmen, wenn sie gewartet werden, wenn sie es nicht wollen. Solche Geräte können keine unechten Interrupts tolerieren und daher auch keine gemeinsame Nutzung einer Interruptleitung tolerieren. ISA-Karten sind aufgrund ihres oft billigen Designs und ihrer Konstruktion für dieses Problem berüchtigt. Solche Geräte werden immer seltener, da die Hardwarelogik billiger wird und neue Systemarchitekturen gemeinsam nutzbare Interrupts erfordern.

HybridEdit

Einige Systeme verwenden eine Mischung aus pegelgesteuerter und flankengesteuerter Signalisierung. Die Hardware sucht nicht nur nach einer Flanke, sondern überprüft auch, ob das Interrupt-Signal für eine bestimmte Zeit aktiv bleibt.

Ein Hybrid-Interrupt wird häufig für den NMI-Eingang (Non-maskable Interrupt) verwendet. Da NMIs im Allgemeinen größere – oder sogar katastrophale – Systemereignisse signalisieren, versucht eine gute Implementierung dieses Signals sicherzustellen, dass der Interrupt gültig ist, indem überprüft wird, ob er für einen bestimmten Zeitraum aktiv bleibt. Dieser 2-stufige Ansatz hilft, falsche Interrupts zu vermeiden, die das System beeinflussen.

Message-signaledEdit

Hauptartikel: Message Signaled Interrupts

Ein message-signaled Interrupt verwendet keine physikalische Interruptleitung. Stattdessen signalisiert ein Gerät seine Dienstanforderung, indem es eine kurze Nachricht über ein Kommunikationsmedium sendet, typischerweise einen Computerbus. Die Nachricht kann von einem Typ sein, der für Interrupts reserviert ist, oder von einem bereits vorhandenen Typ, z. B. einem Speicherschreibvorgang.

Nachrichtensignalisierte Interrupts verhalten sich sehr ähnlich wie flankengetriggerte Interrupts, da der Interrupt eher ein momentanes Signal als ein kontinuierlicher Zustand ist. Interrupt-Handling-Software behandelt die beiden auf die gleiche Weise. In der Regel dürfen mehrere ausstehende nachrichtensignalisierte Interrupts mit derselben Nachricht (derselben virtuellen Interruptleitung) zusammengeführt werden, ebenso wie eng beieinander liegende flankengesteuerte Interrupts zusammengeführt werden können.

nachrichtensignalisierte Interruptvektoren können geteilt werden, soweit das zugrunde liegende Kommunikationsmedium geteilt werden kann. Es ist kein zusätzlicher Aufwand erforderlich.Da die Identität des Interrupts durch ein Muster von Datenbits angezeigt wird, für das kein separater physikalischer Leiter erforderlich ist, können viele weitere unterschiedliche Interrupts effizient behandelt werden. Dies reduziert die Notwendigkeit des Teilens. Interrupt-Nachrichten können auch über einen seriellen Bus geleitet werden, ohne dass zusätzliche Leitungen erforderlich sind.

PCI Express, ein serieller Computerbus, verwendet ausschließlich nachrichtensignalisierte Interrupts.

DoorbellEdit

Dieser Abschnitt zitiert keine Quellen. Bitte helfen Sie, diesen Abschnitt zu verbessern, indem Sie Zitate zu zuverlässigen Quellen hinzufügen. Unsourced Material kann in Frage gestellt und entfernt werden. (Dezember 2020) (Erfahren Sie, wie und wann Sie diese Vorlagennachricht entfernen können)

In einer Analogie zu Drucktasten, die auf Computersysteme angewendet wird, wird der Begriff Türklingel oder Türklingel-Interrupt häufig verwendet, um einen Mechanismus zu beschreiben, mit dem ein Softwaresystem einem Computerhardwaregerät signalisieren oder benachrichtigen kann, dass etwas zu tun ist. Typischerweise wird das Softwaresystem Daten in einigen bekannten und gegenseitig vereinbarten Speicherorten ablegen und „klingeln“, indem es in einen anderen Speicherort schreibt. Dieser unterschiedliche Speicherort wird oft als Klingelbereich bezeichnet, und es können sogar mehrere Türklingeln vorhanden sein, die in diesem Bereich unterschiedlichen Zwecken dienen. Es ist dieser Akt des Schreibens in den Klingelbereich des Speichers, der „klingelt“ und das Hardwaregerät benachrichtigt, dass die Daten bereit sind und warten. Das Hardwaregerät würde nun wissen, dass die Daten gültig sind und darauf reagiert werden kann. In der Regel werden die Daten auf eine Festplatte geschrieben oder über ein Netzwerk gesendet oder verschlüsselt usw.

Der Begriff Türklingel Interrupt ist in der Regel eine falsche Bezeichnung. Es ähnelt einem Interrupt, da es bewirkt, dass einige Arbeiten von dem Gerät ausgeführt werden; Der Klingelbereich wird jedoch manchmal als abgefragter Bereich implementiert, manchmal schreibt der Klingelbereich in physikalische Geräteregister und manchmal ist der Klingelbereich direkt mit physikalischen Geräteregistern fest verdrahtet. Wenn Sie entweder durch oder direkt in physikalische Geräteregister schreiben, kann dies dazu führen, dass ein echter Interrupt an der zentralen Prozessoreinheit (CPU) des Geräts auftritt, falls vorhanden.

Türklingel-Interrupts können mit nachrichtensignalisierten Interrupts verglichen werden, da sie einige Ähnlichkeiten aufweisen.

Multiprocessor IPIEdit

In multiprocessor systems, a processor may send an interrupt request to another processor via inter-processor interrupts (IPI).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.