-
ALLGEMEINER
STAND DER TECHNIK
-
Die
vorliegende Erfindung betrifft Hochgeschwindigkeits-Eingabe-/Ausgabe-(E/A)-Steuervorrichtungen
und insbesondere ein Verfahren zum Behandeln von Unterbrechungen
unter Verwendung eines Unterbrechungsmitigationsverfahrens.
-
Wie
in der Technik wohlbekannt ist, ist die Funktion der E/A-Verarbeitung
zunehmend komplexer geworden. Benutzer von Computersystemen und Netzwerksystemen
konkurrieren gleichzeitig um Betriebsmittel. Diese Konkurrenz beruht
manchmal auf der Reihenfolge der Anfragen und manchmal auf der Grundlage
der Priorität.
Und bei all dem ist es die CPU-Funktion, welche die vorübergehende
Zuteilung der Betriebsmittel an einen spezifischen Benutzer entscheiden,
eine Synchronisation und Kontrolle der verschiedenen beteiligten
Vorrichtungen bereitstellen und die eigentliche Datenübermittelung
beobachten muss, so dass der Auftrag schließlich „wieder zusammengesetzt" werden kann und
so dass der Benutzer sich sicher sein kann, dass sein oder ihr Programm tatsächlich alle
Eingaben empfängt
und alle Ausgaben überträgt – jeweils
an den oder von dem richtigen Ort und in der richtigen Reihenfolge.
-
Wie
auch in der Technik bekannt ist, kann in normalen Arbeitsumgebungen
eine Zentraleinheit (CPU) mit einer oder mehrerer ihrer externen
Vorrichtungen (der gleichen oder unterschiedlicher Typen) gleichzeitig
kommunizieren, jedoch selten mit allen und gewöhnlich nicht in einem vorhersehbaren
Schema. Dies erfordert die Einrichtung von Zeitablauf- und Steuerungsprozeduren,
um eine saubere -Verbindung zu bewirken und um eine „vorübergehende Schnittstellensynchronisation" für individuelle
Nachrichtenimpulse bereitzustellen.
-
Für eine Kommunikation
(oder für Übertragungen),
welche von Vorrichtungen in Gang gesetzt werden, muss die Vorrichtung
dem Prozessor signalisieren, den Programmfluss zu unterbrechen,
und das Betriebssystem warnen, dass eine externe Vorrichtung Aufmerksamkeit
bedarf, ähnlich
dem Klingeln einer Türschelle
oder dem Signalisieren eines Telefons, dass jemand von außen mit
denen innen kommunizieren möchte.
In beiden Fällen
muss in einer zeitgerechten Weise gehandelt werden, um zu gewährleis ten,
dass kein Signal unbeabsichtigt missachtet wird und keine Daten
verloren gehen, eine klare Möglichkeit,
welche auftritt, wenn die CPU mit mehreren Hochgeschwindigkeitsvorrichtungen gleichzeitig
kommuniziert.
-
Eine
E/A-Steuervorrichtung, wie beispielsweise eine Platten-Steuervorrichtung
oder eine Netzwerk-Steuervorrichtung, bewegt typischerweise Daten
zwischen einem Platten-Subsystem oder einem Netzwerk-Subsystem und
anderen Einheiten eines Computersystems. Wenn ankommende Daten aus dem
Subsystem empfangen werden, übermittelt
die Steuervorrichtung die Daten typischerweise zu einer Hauptspeichereinheit,
um auf eine weitere Verarbeitung zu warten. Die Speichereinheit
kann mit einem System-Bus verbunden sein, welcher von anderen Einheiten
des Computers, welche damit verbunden sind, gemeinsam genutzt werden.
Ausgehende Daten, welche aus der Speichereinheit abgerufen wurden,
werden nachfolgend durch die Steuervorrichtung an das Subsystem übermittelt.
Eine Funktion für wahlfreien
Zugriff (DMA), welche auf der Steuervorrichtung angeordnet ist,
leitet die Datenbewegung durch die Steuervorrichtung.
-
Die
E/A-Steuervorrichtung verwaltet ihre Eingabe- und Ausgabedatenströme durch
Bewegen der Datenströme
aus/zu einem Speicher über
DMA. Die E/A-Steuervorrichtung berichtet ein Ereignis bei einer Beendigung
einer DMA-Operation durch ein Bekanntmachen einer Unterbrechung.
Beispielsweise kann das Ereignis die Beendigung des Übertragens eines
Datenpakets oder des Empfangens eines Datenpakets sein. Mit steigenden
Datengeschwindigkeiten, welche durch die E/A-Steuervorrichtung behandelt
werden, steigt die Anzahl von Unterbrechungen. Das Gesamtergebnis
kann ein Abbau des Systemleistungsvermögens sein.
-
Wie
auch bekannt ist, führt
die CPU, wenn sie eine Unterbrechung empfängt, eine Operation aus, welche „Programmumschaltung" genannt wird, bevor
sie ein Unterbrechungsbehandlungsprogramm ausführt oder die Unterbrechung
für ein
zukünftiges Verarbeiten
einplant. Die Programmumschaltungs-Operation ist zeitaufwändig, da
die CPU typischerweise alle Daten speichert, welche erforderlich sind,
um eine Ausführung
des Programms fortzusetzen, wenn sie einmal aus der Unterbrechungsroutine zurückgekehrt
ist. Im Ergebnis wird die CPU in einer weniger wirksamen Weise eingesetzt,
da der normale Programmfluss unterbrochen wird, wobei ein Auftreten
von Befehls-Cache-Fehlgriffen bewirkt wird.
-
Bei
einem System, welches E/A-Steuervorrichtungen um fasst, welche eine
hohe Unterbrechungsrate übertragen,
kann die CPU überflutet
werden, da sie einen hohen Prozentsatz ihrer Zeit für die Unterbrechungsbehandlung
verwendet. Das Ergebnis ist ein Abbau des gesamten Systemleistungsvermögens.
-
Ein
Beispiel eines Systems, bei welchem Unterbrechungen an die CPU begrenzt
sind, um den Abbau des Leistungsvermögens zu minimieren, wird in
US 5 301 275 beschrieben.
Das System umfasst einen oder mehrere Host-Adapter, welche mit einer Host-CPU
unter Verwendung eines ratenbasierten E/A-Übermittelungsprotokolls seriell
kommunizieren, welches Unterbrechungen reduziert, indem die Anzahl
der Male pro Sekunde begrenzt wird, bei welchen die CPU unterbrochen
werden kann. Host-Adapter verwenden zwei Systemparameter, um eine E/A-Latenz
und eine Speicherverwendung zu steuern, wobei der erste D_INTRPS
ist, welcher die Anzahl der Unterbrechungen pro Sekunde ist, und
der zweite D_IOSIZE ist, welcher feststellt, wie viele Daten für jede Unterbrechung übermittelt
werden können.
Zum Variieren der Anzahl der Unterbrechungen kann der Parameter
D_INTRPS zwischen 0 und maximal 20 pro Sekunde ausgewählt werden.
-
KURZFASSUNG
DER ERFINDUNG
-
Diese
Erfindung befindet sich in ihrer erweiterten Form in einem Verfahren
zum Reduzieren von Übertragungsunterbrechungen
in einer Zentraleinheit, wie in Anspruch 1 dargelegt. Ein anderer
Gesichtspunkt der Erfindung ist ein Verfahren zum Reduzieren von
Empfangsunterbrechungen, wie im unabhängigen Anspruch 6 dargelegt.
-
Gemäß einer
Ausführungsform
der vorliegenden Erfindung umfasst ein Verfahren zum Reduzieren
von Übertragungsunterbrechungen
die Schritte des Bereitstellens einer Zentraleinheit (CPU), des Bereitstellens
einer Eingabe/ Ausgabe-(E/A)-Vorrichtung, welche mit der CPU verbunden
ist, wobei die E/A-Vorrichtung eine System-Bus-Schnittstellenschaltung
zum Bereitstellen einer Verbindung zu einem System-Bus, eine Netzwerk-Schnittstellenschaltung
zum Bereitstellen einer Verbindung zu einem Netzwerksystem, einen
Pufferspeicher, welcher mit den Schnittstellenschaltungen verbunden
ist, zum Behandeln mehrerer Eingabe- und Ausgabedatenströme dazwischen
und eine Funktionsvorrichtung für
wahlfreien Zugriff (DMA) aufweist, welche mit den Schnittstellenschaltungen
und dem Pufferspeicher verbunden ist, welche in der DMA-Funktionsvorrichtung
Schritte implementieren, welche ein Setzen einer Übertragungszahl-Begrenzungsvariablen
auf eine Schwelle aufeinanderfolgend übertragener Pakete, welche übertragen
werden, bevor der CPU eine Übertragungsunterbrechung
bekanntgemacht wird, ein Setzen einer Übertragungsdauer-Begrenzungsvariablen
auf eine Zeitbegrenzungsdauer, bevor der CPU die Übertragungsunterbrechung
bekanntgemacht wird, ein Initialisieren eines Zählers der Übertragungszahl und eines Zählers der Übertragungsdauer
auf null, ein Warten auf eine Übertragung
eines Datenpakets, bei einer Übertragung
eines Datenpakets ein Warten auf ein Auftreten eines vorbestimmten
Ereignisses, welches dem entspricht, dass einer der Zähler gleich
der jeweils gesetzten Variablen ist, ein Feststellen, ob die Übertragungsunterbrechung der
CPU als Reaktion auf ein vorbestimmtes Ereignis bekanntgemacht werden
soll, und ein Zurückkehren zum
Schritt des Initialisierens, nachdem der CPU die Übertragungsunterbrechung
bekanntgemacht wurde, umfassen. Mit einem derartigen Verfahren wird die
Zeit, welche eine CPU bei einer Programmumschaltung als Ergebnis
von Unterbrechungen verschwendet, reduziert und ein gesamtes Systemleistungsvermögen verbessert.
-
Gemäß einer
anderen Ausführungsform
der vorliegenden Erfindung umfasst ein Verfahren zum Reduzieren
von Emp fangsunterbrechungen die Schritte für ein Bereitstellen einer Zentraleinheit (CPU),
ein Bereitstellen einer Eingabe/Ausgabe-(E/A)-Vorrichtung, welche
mit der CPU verbunden ist, wobei die E/A-Vorrichtung eine System-Bus-Schnittstellenschaltung
zum Bereitstellen einer Verbindung zu einem System-Bus, eine Netzwerk-Schnittstellenschaltung
zum Bereitstellen einer Verbindung zu einem Netzwerksystem, einen
Pufferspeicher, welcher mit den Schnittstellenschaltungen verbunden
ist, zum Behandeln mehrerer Eingabe- und Ausgabedatenströme dazwischen,
und eine Funktionsvorrichtung für
wahlfreien Zugriff (DMA) aufweist, welche mit den Schnittstellenschaltungen und
dem Pufferspeicher verbunden ist, wobei in der DMA-Funktionsvorrichtung
Schritte implementiert werden, welche ein Setzen einer Empfangszahl-Begrenzungsvariablen
auf eine Schwelle von Paketen, welche empfangen werden, bevor der
CPU eine Empfangsunterbrechung bekanntgemacht wird, ein Setzen einer
Empfangsdauer-Begrenzungsvariablen auf eine Zeitbegrenzungsdauer,
bevor der CPU die Empfangsunterbrechung bekanntgemacht wird, ein Initialisieren
eines Zählers
der Empfangszahl und eines Zählers
der Empfangsdauer auf null; ein Warten auf einen Empfang eines Datenpakets,
beim Empfang eines Datenpakets ein Warten auf ein Auftreten eines
vorbestimmten Ereignisses, welches dem entspricht, dass einer der
Zähler gleich
der jeweils gesetzten Variablen ist, ein Feststellen, ob die Empfangsunterbrechung
der CPU als Reaktion auf ein vorbestimmtes Ereignis bekanntgemacht
werden soll; und ein Zurückkehren
zum Schritt des Initialisierens, nachdem der CPU die Empfangsunterbrechung bekanntgemacht
wurde, umfassen.
-
Weitere
Ausführungsformen
der Erfindung werden in den abhängigen
Ansprüchen
spezifiziert.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Ein
detaillierteres Verständnis
der Erfindung kann aus der folgenden Beschreibung einer bevorzugten
Ausführungsform
entnommen werden, welche beispielhaft gegeben wird und in Verbindung
mit den begleitenden Zeichnungen verstanden werden muss, wobei:
-
1:
ein Blockdiagramm ist, welches ein Nahbereichsnetzwerk illustriert,
welches durch eine E/A-Steuervorrichtung mit einem System-Bus verbunden ist;
-
2:
ein Blockdiagramm der Steuervorrichtung der 1 ist; und
-
3A bis 3B:
Ablaufdiagramme sind, welche den Prozess, welcher von der Steuervorrichtung
gemäß einer
Ausführungsform
der Erfindung durchgeführt
wird, ausführlich
darstellen.
-
BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
1 illustriert
ein Subsystem, wie beispielsweise ein lokales Netzwerk 10,
welches mit einem Knoten 12 verbunden ist, welcher eine E/A-Steuervorrichtung 14,
einen Hauptspeicher 16, eine Zentraleinheit (CPU) 18 umfasst,
welche alle durch einen System-Bus 20 verbunden sind. Bei
der Ausführungsform
der 1 ist die E/A-Steuervorrichtung 14 durch
einen bidirektionalen Weg 22 mit dem System-Bus 20 verbunden
und durch einen bidirektionalen Weg 24 mit dem Netzwerk-Subsystem 10 verbunden.
-
Während einer
Empfangsoperation werden Daten aus dem Netzwerk-Subsystem 10 in
die E/A-Steuervorrichtung 14 übermittelt und schließlich zum
Hauptspeicher 16 übermittelt,
um auf das Verarbeiten zu warten. Daten, welche zwischen der E/A-Steuervorrichtung 14 und
dem Hauptspeicher 16 übermittelt
werden, werden gemäß einer Übermittelung
mit wahlfreiem Speicherzugriff (DMA) auf dem System-Bus 20 durchgeführt.
-
Während einer Übertragungsoperation
werden Daten, welche aus dem Hauptspeicher 16 abgerufen
werden, aus der E/A-Steuervorrichtung 14 zum Netzwerksystem 10 übermittelt.
-
Beim
Beenden der DMA-Operation, beispielsweise beim Beenden des Übertragens
eines Datenpakets oder des Empfangens eines Datenpakets, berichtet
die E/A-Steuervorrichtung 14 ein Ereignis, indem der CPU 18 eine
Unterbrechung bekanntgemacht wird. Wenn die CPU 18 die
Unterbrechung empfängt,
führt sie
eine Operation aus, welche Programmumschaltung genannt wird, bevor
sie ein Unterbrechungsbehandlungsprogramm ausführt oder die Unterbrechung
für ein
zukünftiges
Verarbeiten einplant. Während
der Programmumschaltung wird Zeit verbraucht, weil die CPU 18 alle
Daten speichert, welche erforderlich sind, um die Ausführung des
Programms fortzusetzen, wenn sie einmal aus der Unterbrechungsroutine
zurückkehrt,
und weil sie die Unterbrechungsroutine in ihren Befehls-Cache (nicht gezeigt)
lädt. Falls
der Befehls-Cache zu klein ist, kann es erforderlich sein, dass
die CPU 18 das aktuelle Programm aus dem Befehls-Cache
räumt und
beim Zurückkehren
aus der Unterbrechungsroutine zurücklädt.
-
Jetzt
unter Bezugnahme auf 2 wird die E/A-Steuervorrichtung 14 gezeigt,
welche einen Pufferspeicher 30, einen DMA-Funktionsblock 31,
eine System-Bus-Schnittstellenschaltung 32 und eine Netzwerk-Schnittstelle 34 umfasst.
Die System-Bus-Schnittstellenschaltung 32 gestattet Datenströmen, aus
dem Pufferspeicher 30 in den/ aus dem System-Bus 20 zu
fließen.
Die Netzwerk-Schnittstellenschaltung 34 gestattet Datenströmen, aus
dem Pufferspeicher 30 in das/aus dem Netzwerk-Subsystem 10 zu
fließen.
Die E/A-Steuervorrichtung 14 verwaltet die Eingabe- und
Ausgabe von Datenströmen, indem
sie sie über
DMA 31 in ihren/aus ihrem Pufferspeicher 30 bewegt.
Beim Beenden jeder DMA-Operation berichtet die E/A-Steuervorrichtung 14 das
Ereignis als eine Unterbrechung an die CPU 18.
-
Eine
Implementierung des vorliegenden Verfahrens befindet sich beispielsweise
in dem DMA-Funktionsblock 31 der E/A-Steuervorrichtungen 14.
Es kann auch in einem DMA-Funktionsblock eines
System-Bus-Adapters (nicht gezeigt) implementiert werden. Eine Aufgabe
der vorliegenden Erfindung ist es, die Rate der Unterbrechungen
durch die CPU 18 ohne jeden Verlust an Unterbrechungen zu
reduzieren. Die Erfindung verwendet zwei Parameter. Der erste Parameter
setzt die Ereignisschwelle, welche der maxima le Wert aufeinanderfolgender Ereignisse
ist, welchen aufzutreten gestattet ist, beispielsweise die maximale
Anzahl empfangener Datenpakete, bevor der CPU 18 eine Unterbrechung (beispielsweise
eine Empfangsunterbrechung) bekanntgemacht wird. Der zweite Parameter
setzt die Ereigniszeitbegrenzung, welche die maximale Zeit ist,
welche ein Ereignis warten kann, bevor der CPU 18 eine
Unterbrechung bekanntgemacht wird. Der zweite Parameter ist nötig, da
der Ereignisfluss im System unvorhersehbar ist und ohne die Zeitbegrenzung
ein Behandeln des Ereignisses unendlich verzögert werden kann. Wenn beispielsweise
nur ein Datenpaket empfangen wird und die Ereignisschwelle größer als
eins ist, wartet der E/A-Zähler 14 für die Zeit,
welche in dem Zeitbegrenzungsparameter spezifiziert ist, bevor der
CPU 18 eine Unterbrechung bekanntgemacht wird.
-
Der
Unterbrechungsmitigationsprozess, welcher von der E/A-Steuervorrichtung 14 gemäß der Erfindung
eingesetzt wird, kann aus den Ablaufdiagrammen der 3A bis 3B besser
verstanden werden, wobei die folgenden Variablen eingesetzt werden:
- • RCV_CNT_LIMIT:
der Parameter definiert die Schwelle (N1) vor dem Bekanntmachen
einer Empfangsunterbre chung (RI) aufeinanderfolgend empfangener
Pakete;
- • RCV_TIME_LIMIT:
der Parameter definiert die Zeitbegrenzung (N2), welche einem Empfang
vor dem Bekanntmachen einer Empfangsunterbrechung (RI) nachfolgt;
- • RCV_CNT:
Zähler,
welcher die Anzahl aufeinanderfolgender Pakete vor den Erteilen
einer RI zählt;
- • RCV_TIME:
Zähler,
welcher die Anzahl an Zeiteinheiten vor dem Erteilen einer RI zählt;
- • WAIT_RCV:
Status, in welchem das vorliegende Verfahren wartet, bis das erste
Paket nach einer RI oder einem Zurücksetzen empfangen wird;
- • WAIT_EVENT:
Status, in welchem das vorliegende Verfahren wartet, bis irgendein
Ereignis auftritt (Empfangen eines Pakets oder Ablaufen einer Zeiteinheit);
- • TX_CNT_LIMIT:
der Parameter definiert die Schwelle (N3) vor einen Bekanntmachen
einer Übertragungsunterbrechung
(TI) aufeinanderfolgend übertragener
Pakete;
- • TX_TIME_LIMIT:
der Parameter definiert eine Zeitbegrenzung (N4), welche einer Übertragung nachfolgt,
bevor eine TI bekanntgemacht wird;
- • TX_CNT:
Zähler,
welcher die Anzahl aufeinanderfolgender Pakete zählt, welche übertragen wurden,
be vor eine TI erteilt wird;
- • TX_TIME:
Zähler,
welcher die Anzahl an Zeiteinheiten zählt, welche nach einer Übertragung
eines Pakets abgelaufen sind, bevor eine TI erteilt wird;
- • WAIT_TRAN:
Status, in welchem das vorliegende Verfahren wartet, bis ein Paket übertragen wird,
nachdem eine TI oder ein Zurücksetzen
aufgetreten ist;
- • WAIT_EVENT:
Status, in welchem das vorliegende Verfahren wartet, bis irgendein
Ereignis auftritt (ein Paket übertragen
wird oder eine Zeiteinheit abgelaufen ist).
-
Unter
Bezugnahme auf 3A wird im Schritt 50 RCV_CNT_LIMIT
gleich N1 gesetzt, und RCV_TIME_LIMIT wird gleich N2 gesetzt. Im
Schritt 52 wird der RCV_CNT-Zähler auf null initialisiert.
Im Schritt 54 bewegt sich der Prozess in den WAIT_RCV-Status
und setzt das Warten fort, bis ein Datenpaket empfangen wird. Wenn
ein Datenpaket empfangen wird, fährt
der Prozess mit Schritt 56 zu dem WAIT_EVENT-Status fort,
wobei er im Schritt 58 RCV_CNT um eins inkrementiert. Wenn
im Schritt 60 der RCV_CNT-Wert nicht gleich dem Schwellenwert N1
ist, kehrt der Prozess zu Schritt 56 zurück. Wenn der
RCV_CNT-Wert gleich der Grenze N1 ist, wird im Schritt 62 eine
Unterbrechung bekanntgemacht, und der Prozess kehrt zu Schritt 52 zurück.
-
Falls
während
des WAIT_EVENT-Status im Schritt 56 eine spezifizierte
Zeiteinheit erreicht wird, inkrementiert der Prozess im Schritt 64 RCV_TIME um
eins. Falls im Schritt 66 der RCV_TIME-Wert nicht gleich
dem Schwellenwert N2 ist, kehrt der Prozess zu Schritt 56 zurück. Falls
der RCV_TIME-Wert gleich der Grenze N2 ist, wird im Schritt 62 eine
Unterbrechung bekanntgemacht, und der Prozess kehrt zu Schritt 52 zurück.
-
Jetzt
unter Bezugnahme auf 3B wird im Schritt 80 TX_CNT_LIMIT
gleich N3 gesetzt, und TX_TIME_LIMIT wird gleich N4 gesetzt. Im
Schritt 82 wird der TX_CNT-Zähler auf null initialisiert,
und der TX_TIME Zähler
wird auf null initialisiert. Im Schritt 84 bewegt sich
der Prozess in den WAIT_TRAN-Status und setzt das Warten fort, bis
ein Datenpaket übertragen
wird. Wenn ein Datenpaket übertragen
wird, fährt der
Prozess mit Schritt 86 in dem WAIT_EVENT-Status fort, wobei
er TX_CNT im Schritt 88 um eins inkrementiert, falls eine Übertragung
auftritt. Falls im Schritt 90 der TX_CNT-Wert gleich der
Grenze N3 ist, wird im Schritt 92 eine Unterbrechung bekanntgemacht,
und der Prozess kehrt zu Schritt 82 zurück.
-
Falls
während
des WAIT_EVENT-Status im Schritt 86 eine spezifizierte
Zeiteinheit erreicht wird, inkrementiert der Prozess im Schritt 94 TX_TIME
um eins. Falls im Schritt 96 der TX_TIME-Wert nicht gleich
dem Schwellenwert N4 ist, kehrt der Prozess zu Schritt 86 zurück. Falls
der TX_TIME-Wert gleich der Grenze N4 ist, wird im Schritt 92 eine
Unterbrechung bekanntgemacht, und der Prozess kehrt zu Schritt 82 zurück.
-
Nachdem
eine bevorzugte Ausführungsform der
Erfindung beschrieben wurde, wird es Durchschnittsfachleuten nun
offenkundig, dass die andere Ausführungsform, welche ihre Ideen
einbezieht, verwendet werden kann. Es ist deshalb nachzuvollziehen,
dass diese Ausführungsform
nicht auf die offenbarte Ausführungsform
eingeschränkt
werden soll.