-
HINTERGRUND
-
Die
Erfindung betrifft das Gebiet der Computernetze. Insbesondere betrifft
die vorliegende Erfindung ein System und Verfahren zum Modulieren
oder Unterdrücken
des Auftretens von Unterbrechungen von einer Kommunikationsvorrichtung
wie z.B. einer Netzschnittstellenschaltung (NIC).
-
Die
Schnittstelle zwischen einem Rechner und einem Netz ist häufig ein
Flaschenhals für
Datenübertragung,
die sich zwischen dem Rechner und einem Netz abspielt. Während die
Rechnerleistung (z.B. Prozessorgeschwindigkeit) mit den Jahren exponentiell
zugenommen hat und die Computernetz-Übertragungsgeschwindigkeiten ähnliche Zuwächse erfahren
haben, wurden Ineffizienzen in der Art und Weise, in der Netzschnittstellenschaltungen
die Datenübertragung
abwickeln, immer deutlicher. Mit jeder Zunahme der Rechner- oder
Netzgeschwindigkeit wird es noch offensichtlicher, dass die Schnittstelle
zwischen dem Rechner und dem Netz nicht Schritt halten kann. Diese
Ineffizienzen sind mit mehreren Grundproblemen in der Art und Weise
verknüpft,
in der die Datenübertragung
zwischen einem Netz und einem Rechner abgewickelt wird. Ähnliche Ineffizienzen
gibt es bei anderen Kommunikationsvorrichtungen und -leitungen,
einschließlich
Netzvorrichtungen wie z.B. Routern, Gateways, Schaltern und Ein-/Ausgabevorrichtungen
wie z.B. Controllern für
Medien (z.B. Plattenlaufwerk).
-
Die
heute verbreiteteste Form von Netz ist tendenziell paketbasiert.
Diese Typen von Netzen, einschließlich des Internets und vieler
lokaler Netze, senden Informationen in Form von Paketen. Jedes Paket
wird von einer Ursprungs-Datenstation separat erzeugt und gesendet
und wird von einer Ziel-Datenstation separat empfangen und verarbeitet.
Zusätzlich
kann jedes Paket, zum Beispiel in einem Netz mit Bus-Topologie,
von zahlreichen Stationen empfangen und verarbeitet werden, die
zwischen den Ursprungs- und
Ziel-Datenstationen liegen.
-
Ein
Grundproblem bei Paketnetzen ist, dass es möglicherweise viele Pakete braucht,
um eine gegebene Datenmenge von einer Datenstation zur anderen zu übertragen.
Sind die zwischen Stationen übertragenen
Daten länger
als eine bestimmte Minimallänge,
werden die Daten in mehrere Abschnitte unterteilt, und jeder Abschnitt
wird durch ein separates Paket übertragen.
Die Datenmenge, die ein Paket tragen kann, kann durch das Netz beschränkt sein, das
das Paket befördert,
und wird häufig
als maximale Übertragungseinheit
(MTU) bezeichnet. Die ursprüngliche
Ansammlung von Daten ist manchmal als "Datagramm" bekannt, und jedes Paket, das einen
Teil eines einzelnen Datagramms befördert, kann sehr ähnlich wie
die anderen Pakete des Datagramms verarbeitet werden.
-
Wenn
die zu übertragende
Datenmenge zunimmt, nimmt auch die Zahl der Pakete zu, die an eine
Ziel-Datenstation gesendet und davon verarbeitet werden müssen. Je
mehr Pakete verarbeitet werden müssen,
desto größer sind
natürlich
die an den Prozessor einer Datenstation und die diese Datenstationen
bedienende Netzschnittstelle gestellten Anforderungen. Die Zahl
der Pakete, die verarbeitet werden müssen, wird durch mehr Faktoren
als nur die in einem Datagramm gesendete Datenmenge beeinflusst.
Zum Beispiel, wenn die in einem Paket eingebundene Datenmenge zunimmt,
müssen
weniger Pakete gesendet werden. Wie oben dargelegt, kann ein Paket
jedoch eine maximale zulässige
Größe haben,
je nach dem verwendeten Netz (z.B. ist die maximale Übertragungseinheit
für Standard-Ethernet-Verkehr
ungefähr
1.500 Byte). Die Geschwindigkeit des Netzes beeinflusst auch die
Zahl der Pakete, die eine NIC in einer gegebenen Zeitspanne verarbeiten
kann. Zum Beispiel kann ein Gigabit-Ethernet-Netz, das mit Spitzengeschwindigkeit
arbeitet, eine NIC für
Empfang von ungefähr
1,48 Millionen Pakete pro Sekunde benötigen. Die Zahl der zu verarbeitenden
Pakete kann den Prozessor eines Rechners somit erheblich belasten.
Die Situation wird durch die Notwendigkeit verschlimmert, jedes
Paket separat zu verarbeiten, obwohl jedes Paket auf eine im wesentlichen ähnliche
Weise verarbeitet wird.
-
Ein
weiteres Hindernis für
effiziente Wechselwirkung von Netzschnittstellenschaltungen und Hauptrechnern
oder anderen Datenübertragungsvorrichtungen
ergibt sich aus der verminderten Ausnutzung des Hauptprozessors,
die resultiert, wenn eine Netzschnittstellenschaltung zahlreiche
Unterbrechungen ausgibt. Insbesondere kann bei vielen gegenwärtigen Netzschnittstellenschaltungen
für jedes von
einem Netz an einen Hauptrechner übertragene Paket eine Unterbrechung
an einen Hauptprozessor ausgegeben werden. Wenn die Geschwindigkeit
des Netzverkehrs zunimmt, nimmt die Geschwindigkeit der Unterbrechungserzeugung
in gleichem Umfang zu. Je mehr Pakete an einer Netzschnittstellenschaltung
ankommen, desto mehr Zeit muss der Prozessor daher für Kontext-Schaltungen
und Verarbeitung der Unterbrechung aufwenden, und desto niedriger ist
die effektive Ausnutzung des Prozessors.
-
Wenn
die Leistung einer Netzschnittstellenschaltung zunimmt und Pakete
mit immer größerer Geschwindigkeit
an einen Hauptprozessor übertragen
werden, kann die Geschwindigkeit der Unterbrechungserzeugung einen
Pegel erreichen, der bei der Zeit, die der Prozessor zur Verarbeitung
einer Unterbrechung benötigt,
die Prozessornutzung in Beschlag nimmt. Unter Umständen kann
ein Prozessor im Stande sein, während
einer Unterbrechungs-Dienstroutine mehrere Pakete zu verarbeiten,
dies wird aber möglicherweise
durch die hohe Paketankunftsgeschwindigkeit ausgeglichen. Ohne einen
Mechanismus zum Unterdrücken
oder Modulieren der Geschwindigkeit, mit der Unterbrechungen von
einer Netzschnittstelle erzeugt werden, kann eine zu hoher Leistung
fähige
Netzschnittstelle einen Hauptprozessor überfordern. Die Ankunftsgeschwindigkeit
von Paketen an einer Netzschnittstellenschaltung kann so hoch werden,
dass der Prozessor übermäßig viel
Zeit aufwenden muss, nur um die Unterbrechungen zu bedienen und
die zwischen Unterbrechungen empfangenen Pakete zu verarbeiten,
was seine Fähigkeit,
andere Aufgaben durchzuführen, stark
herabsetzt.
-
Ein
anderes Verfahren, durch das ein Hauptprozessor den Empfang von
Netzverkehr erfahren kann, ist Abfragen (Polling). Eine Datenstation
kann zum Beispiel eine Netzschnittstellenschaltung auffordern, zu
ermitteln, ob es zu verarbeitende Pakete gibt. Abfragen ist jedoch
ineffizient, wenn nicht der Pegel des Netzverkehrs relativ hoch
ist. Außerdem, sollte
in vorhandenen Realisierungen Abfragen blockiert oder auf andere
Weise unfähig
werden, den Betrieb fortzusetzen, kann der Netzverkehr zum Stillstand
gebracht werden.
-
Daher
können
viele gegenwärtige
Verfahren, Hauptprozessoren den Empfang von Netzverkehr zu signalisieren,
häufig
keine angemessene Leistung zur Verbindung von heutigen Hochleistungs-Rechnersystemen
und Hochgeschwindigkeitsnetzen bereitstellen. Eine Netzschnittstellenschaltung,
die auf einen überforderten
Hauptrechner keine Rücksicht nehmen
kann, kann die Leistung des Rechners ernstlich verschlechtern. Insbesondere
kann die Verwendung von Unterbrechungen die Leistung eines Hauptrechners
während
eines hohen Verkehrspegels verschlechtern, und Abfragen kann für niedrigere
Verkehrspegel ungeeignet sein.
-
Die
US-A-5309567 offenbart
einen Aufbau und ein Verfahren für
asynchrone Datenübertragung zwischen
leitenden und untergeordneten Prozessoren. Eine Busschnittstelleneinheit übersetzt
die Signale jedes Prozessors, um es so aussehen zu lassen, dass
der untergeordnete Prozessor den leitenden Prozessor abfragt und
dass der leitende Prozessor Unterbrechungen an den untergeordneten
Prozessor ausgibt.
-
ZUSAMMENFASSUNG
-
Die
vorliegende Erfindung stellt ein Verfahren zum Steuern der Erzeugung
von Unterbrechungen von einer Kommunikationsvorrichtung, einen Unterbrechungs-Modulator
und Software gemäß den unabhängigen Ansprüchen 1,
21 bzw. 34 bereit. In einer Ausführungsform
der Erfindung werden ein System und ein Verfahren zum Abfragen einer
Netzschnittstelle bereitgestellt. In dieser Ausführungsform wird eine Unterbrechung,
die normalerweise einem Hauptprozessor die Ankunft eines Netzpakets
signalisieren würde,
während
einer Abfrage-Betriebsart ausgesetzt. Jedes Mal, wenn die Netzschnittstelle abgefragt
wird, werden wartende Pakete verarbeitet. Wird eine Schwellen-Zeitspanne
oder eine Schwellen-Paketzahl empfangen, ohne verarbeitet zu werden,
können
jedoch Unterbrechungen freigegeben werden, um sicherzustellen, dass
die Pakete bedient werden. Somit kann in einer Ausführungsform
der Erfindung eine Abfrage-Betriebsart mit Unterbrechungs-Modulation
kombiniert werden.
-
Eine
Netzschnittstelle empfängt
Pakete von einem Netz für Übertragung
an einen Hauptrechner. Wird vor Beginn des Abfragens ein Paket von
der Netzschnittstelle empfangen und an den Hauptrechner übertragen,
kann eine Unterbrechung erzeugt werden um einen Hauptprozessor in
Bereitschaft zu versetzen. Die Verarbeitung von Unterbrechungen kann
jedoch erheblichen Aufwand für
den Prozessor verursachen, je nach dem an der Netzschnittstelle empfangenen
Verkehrspegel. Daher sind eine oder mehrere Ausführungsformen der vorliegenden
Erfindung konfiguriert, die Zahl der als Antwort auf die Übertragung
von Netzpaketen erzeugten Unterbrechungen zu vermindern, ohne zu
verhindern, dass die Pakete rechtzeitig verarbeitet werden. Insbesondere
wird die Erzeugung von Unterbrechungen während einer Abfrage-Betriebsart
ausgesetzt. Jedes Mal, wenn die Netzschnittstelle abgefragt wird,
können
empfangene Pakete verarbeitet werden, ohne auf eine Unterbrechung
warten zu müssen.
Somit werden in einer Ausführungsform
der Erfindung während
einer Abfrage-Betriebsart keine Unterbrechungen erzeugt.
-
Sollte
Abfragen versagen oder blockiert werden, kann jedoch die Erzeugung
von Unterbrechungen freigegeben werden. Die Geschwindigkeit, mit der
dann Unterbrechungen an den Hauptrechner ausgegeben werden können, kann
moduliert werden, um sicherzustellen, dass der Hauptrechner Zeit
hat, andere Funktionen durchzuführen.
Insbesondere wird in einer Ausführungsform
keine Unterbrechung für
ein empfangenes Paket ausgegeben, wenn nicht eine minimale Zeitspanne
verstrichen ist oder eine minimale Zahl von Paketen empfangen worden
sind, seit eine frühere
Abfrage der Netzschnittstelle oder eine frühere Unterbrechung verarbeitet
wurde.
-
Jedes
Mal, wenn die Netzschnittstelle abgefragt wird, und nach Vervollständigung
der Verarbeitung einer Unterbrechung durch einen Hauptprozessor,
werden ein Zeitzähler
und/oder ein Paketzähler initialisiert.
Anschaulich werden die Zähler
auf programmierbare Schwellenwerte gesetzt, die eine maximale Zeitspanne,
die verstreichen darf, und eine maximale Zahl von Paketen darstellen,
die empfangen werden können,
bevor eine weitere Unterbrechung ausgegeben wird. Nach Initialisierung
beginnt der Zähler
auf programmierbare Endwerte (z.B. null) herunterzuzählen. So
lange in dieser Ausführungsform
das Abfragen weitergeht, werden die Zähler wiederholt neu initialisiert
und werden daher nie ablaufen und werden keine Unterbrechungen erzeugt. In
einer alternativen Ausführungsform
werden die Zähler
auf Anfangswerte initialisiert und zählen danach auf Schwellenwerte
hoch.
-
In
einer Ausführungsform
der Erfindung fragt ein Abfrageprozess oder Softwaremodul, das auf
einem Hauptrechner arbeitet, die Netzschnittstelle ab, indem ein
virtuelles oder "Alias"-Register geprüft wird,
das das Zustandsregister der Netzschnittstelle spiegelt. So ein
Aliasregister dient als ein alternativer Weg (z.B. Adresse), auf
dem das Zustandsregister zu lesen ist. Wenn daher ein Anzeiger im
Zustandsregister den Zustand ändert,
um ein bestimmtes Ereignis oder eine bestimmte Bedingung in der
Netzschnittstelle anzuzeigen, ändert
sich auch der entsprechende Anzeiger im Aliasregister. Wird die
Netzschnittstelle abgefragt, wenn ein Anzeiger im Aliasregister
in einen Zustand versetzt ist, der die Übertragung eines Pakets anzeigt,
verarbeitet das Abfragemodul das oder die wartenden Paket(e). Da
das Abfragemodul das Aliasregister statt des Zustandsregisters liest,
wird das Aliasregister jedes Mal gelöscht, wenn das Abfrage modul
die Netzschnittstelle abfragt. Wird das Aliasregister gelöscht, können außerdem ein
oder mehrere Anzeiger im Zustandsregister gelöscht werden, wie durch eine
programmierbare Maske festgelegt. Anschaulich enthält die Maske
eine Anzahl von Einträgen,
die jeder sowohl einem Anzeiger im Zustandsregister als auch einem
passenden Anzeiger im Aliasregister entsprechen. Der Wert in jeder
Maske legt fest, ob ein zugeordneter Zustandsregister-Anzeiger gelöscht wird,
wenn ein entsprechender Aliasregister-Anzeiger gelöscht wird.
-
In
einer anderen Ausführungsform
der Erfindung wird dem Zustandsregister der Netzschnittstelle ein
Rückmeldungsanzeiger
hinzugefügt
oder zugeordnet. Der Rückmeldungsanzeiger
hilft ein Unterbrechungsbeanspruchungsproblem zu vermeiden, das
andernfalls auftreten kann, wenn das Abfragemodul das Zustandsregister
löscht,
bevor ein Unterbrechungssteuerprogramm, das auf eine Unterbrechung
reagiert, das Zustandsregister prüfen und ermitteln kann, weshalb
es aufgerufen wurde. Insbesondere, wenn eine Unterbrechung erzeugt
wird, weil ein Zustandsregister-Anzeiger (außer dem Rückmeldungsanzeiger) seinen
Zustand ändert,
wird der Rückmeldungsanzeiger
in einen Zustand versetzt, der anzeigt, dass eine Unterbrechung
erzeugt wurde. Danach, obwohl der Rest des Zustandsregisters möglicherweise
vom Abfragemodul gelöscht
wird, wenn das Unterbrechungssteuerprogramm das Register liest,
offenbart der Rückmeldungsanzeiger, dass
eine gültige
Unterbrechung ausgegeben wurde. Ohne den Rückmeldungsanzeiger wird möglicherweise
eine Fehlerbeseitigungsprozedur gestartet werden, was den Betrieb
der Netzschnittstelle behindert, wenn das Unterbrechungssteuerprogramm nicht
ermitteln kann, weshalb es aufgerufen wurde. In dieser Ausführungsform
kann die Abfragesoftware das Zustandsregister während jeder Abfrage direkt prüfen, oder
es kann ein Aliasregister wie oben beschrieben verwendet werden.
Wird ein Aliasregister verwendet, wird die oben erörterte Maske
so konfiguriert, dass der Rückmeldungsanzeiger
nicht gelöscht wird,
wenn das Aliasregister gelöscht
wird.
-
KURZE BESCHREIBUNG
DER FIGUREN
-
1 ist ein Unterbrechungs-Modulator
zum Modulieren von Unterbrechungen, die von einer Netzschnittstellenschaltung
erzeugt werden, gemäß einer
Ausführungsform
der Erfindung.
-
2 ist ein Zustandsdiagramm,
das die Aktivität
des Unterbrechungs-Modulators von 1 zeigt,
wenn er Unterbrechungen freigibt und sperrt, gemäß einer Ausführungsform
der Erfindung.
-
3 ist ein Flussdiagramm,
das ein Verfahren zum Betrieb des Unterbrechungs-Modulators von 1 gemäß einer
Ausführungsform
der Erfindung zeigt.
-
4 ist ein Zustandsdiagramm,
das die Verwendung von Abfrage und Unterbrechungs-Modulation zeigt,
um die Zahl der von einem Hauptrechner verarbeiteten Unterbrechungen
zu vermindern, gemäß einer
Ausführungsform
der Erfindung.
-
5 ist eine Skizze eines
Netzschnittstellen-Zustandsregisters zum Anzeigen der Erzeugung einer
Unterbrechung gemäß einer
Ausführungsform der
Erfindung.
-
6 ist eine Skizze eines
Aliasregisters und einer Maske zur Verwendung mit einem Netzschnittstellen-Zustandsregister,
um die Zahl der von einem Hauptrechner verarbeiteten Unterbrechungen zu
vermindern, gemäß einer
Ausführungsform
der Erfindung.
-
7 ist ein Flussdiagramm,
das ein Verfahren zum Vermindern der Zahl der von einem Hauptrechner
verarbeiteten Paketübertragungs-Unterbrechungen
durch Abfragen und Unterbrechungs-Modulation gemäß einer Ausführungsform
der Erfindung zeigt.
-
DETAILLIERTE
BESCHREIBUNG
-
Die
folgende Beschreibung wird dem Fachmann gegeben, um die Erfindung
zu realisieren und zu verwenden, und wird im Kontext besonderer
Anwendungen der Erfindung und ihrer Erfordernisse gegeben. Für den Fachmann
ergeben sich leicht zahlreiche Modifikationen der offenbarten Ausführungsformen,
und die hierin definierten allgemeinen Prinzipien können auf
andere Ausführungsformen
und Anwendungen angewendet werden, ohne den Schutzbereich der vorliegenden
Erfindung zu verlassen. Daher soll die vorliegende Erfindung nicht
auf die gezeigten Ausführungsformen
beschränkt
sein, sondern ist mit dem breitesten Schutzumfang in Einklang zu
bringen, der mit den hierin offenbarten Prinzipien und Merkmalen
verträglich
ist.
-
Insbesondere
werden nachfolgend Ausführungsformen
der Erfindung in Form einer Netzschnittstellenschaltung (NIC) beschrieben,
die Datenübertragungspakete
empfängt,
die in Übereinstimmung mit
bestimmten Datenübertragungsprotokollen
formatiert sind, die mit dem Internet kompatibel sind. Der Fachmann
erkennt jedoch, dass die vorliegende Erfindung nicht auf mit dem
Internet kompatible Datenübertragungsprotokolle
beschränkt
ist und leicht für
Verwendung mit anderen Protokollen und in anderen Kommunikationsvorrichtungen
als einer NIC angepasst werden kann.
-
Die
Programmumgebung, in der eine vorliegende Ausführungsform der Erfindung ausgeführt wird,
enthält
anschaulich einen Universalrechner oder ein Spezialgerät wie z.B.
einen tragbaren Rechner. Die Einzelheiten solcher Vorrichtungen
(z.B. Prozessor, Speicher, Datenspeicher, Ein-/Ausgabeports und
Anzeige) sind bekannt und werden der Übersichtlichkeit halber weggelassen.
-
Außerdem versteht
sich, dass die Techniken der vorliegenden Erfindung unter Verwendung
mannigfacher Technologien realisiert werden können. Zum Beispiel können die
hierin beschriebenen Verfahren in Software realisiert werden, die
auf einem programmierbaren Mikroprozessor läuft, oder unter Verwendung
einer Kombination von Mikroprozessoren oder anderen speziell gestalteten
anwendungsspezifischen integrierten Schaltungen, programmierbaren
Logikvorrichtungen oder verschiedenen Kombinationen davon in Hardware
realisiert werden. Insbesondere können die hierin beschriebenen
Verfahren durch eine Folge von computerausführbaren Anweisungen realisiert
werden, die sich auf einem Speichermedium wie z.B. einer Trägerwelle,
einem Plattenlaufwerk oder einem anderen computerlesbaren Medium
befinden können.
-
Einleitung
-
In
einer Ausführungsform
der vorliegenden Erfindung ist eine Netzschnittstellenschaltung
(NIC) konfiguriert, Datenübertragungspakete
zu empfangen und zu verarbeiten, die zwischen einem Hauptrechnersystem
und einem Netz wie z.B. dem Internet ausgetauscht werden. Insbesondere
ist die NIC konfiguriert, Pakete zu empfangen und zu verarbeiten, die
in Übereinstimmung
mit einem Protokollstapel (z.B. einer Kombination von Datenübertragungsprotokollen)
formatiert sind, die von einem mit der NIC verbundenen Netz unterstützt werden.
-
Ein
Protokollstapel kann unter Bezugnahme auf die siebenschichtige Grundmodellstruktur ISO-OSI
(International Standards Organization – Open Systems Interconnection)
beschrieben werden. Somit enthält
ein Beispiels-Protokollstapel das Transportsteuerprotokoll (TCP)
in Schicht vier, Internet-Protokoll in Schicht drei und Ethernet
in Schicht zwei. Zu Zwecken der Erörterung kann der Ausdruck "Ethernet" hierin verwendet
werden, um die standardisierte Spezifikation 802.3 des IEEE (Institute
of Electrical and Electronics Engineers) und auch die Version zwei
der nicht standardisierten Form des Protokolls gemeinsam zu bezeichnen.
Wo verschiedene Formen des Protokolls unterschieden werden müssen, kann
die Standardform durch Einschluss der Bezeichnung "802.3" gekennzeichnet werden.
-
Andere
Ausführungsformen
der Erfindung sind konfiguriert, mit Datenübertragungen zu arbeiten, die
sich an andere Protokolle klammern, die gegenwärtig bekannt (z.B. Appletalk,
IPX (Internetwork Packet Exchange), ATM (Asynchronous Transfer Mode)
usw.) oder unbekannt sind. Der Fachmann erkennt, dass die durch
diese Erfindung bereitgestellten Verfahren leicht an neue Datenübertragungsprotokolle
anpassbar sind.
-
Außerdem können die
Verarbeitung von Paketen, Modulation von Unterbrechungen und Abfrageoperationen,
wie nachfolgend beschrieben, auf anderen Kommunikationsvorrichtungen
als einer NIC durchgeführt
werden. Zum Beispiel kann ein Modem, Schalter, Router oder anderer
Datenübertragungs-Port
(z.B. seriell, parallel, USB, SCSI) oder anderes Gerät ähnlich konfiguriert
und betrieben werden. Obwohl in einer oder mehreren nachfolgend
beschriebenen Ausführungsformen
der Erfindung Informationen in Paketform übertragen werden, können in anderen
Ausführungsformen "Pakete" andere Ansammlungen
von Daten oder Informationen aufweisen. Zum Beispiel kann eine nachfolgend
erörterte Ausführungsform
auf einen Plattencontroller (z.B. für eine magnetische oder optische
Platte) oder einen anderen Mediencontroller anwendbar sein, der
Daten in anderen Einheiten als Paketen empfängt oder verarbeitet.
-
In
früheren
Realisierungen von Netzschnittstellenschaltungen kann für jedes
oder fast jedes von der NIC an einen Hauptrechner übertragene
Paket eine Unterbrechung von der NIC erzeugt werden. Wenn bei so
einer NIC der von einem Netz empfangene Verkehrspegel zunimmt, wird
ein für
den Prozessnetzverkehr verantwortlicher Prozessor durch die Verarbeitungsanforderungen
so vieler Unterbrechungen möglicherweise übermäßig belastet.
Daher stellen verschiedene nachfolgend erörterte Ausführungsformen der Erfindung
Verfahren bereit, die Ausgabe von Unterbrechungen an ein Hauptrechnersystem
als Antwort auf den Empfang von Paketen von einem Netz zu modulieren,
zu begrenzen oder zu unterdrücken.
-
Anschaulich
sind verschiedene Ausführungsformen
der Erfindung auf verschiedene Netzverkehrspegel gerichtet. Insbesondere,
wenn der Netzverkehr zunimmt, müssen
möglicherweise
immer mehr Unterbrechungen unterdrückt werden. Wenn dies geschieht,
stößt ein Hauptprozessor
jedoch möglicherweise
auf immer mehr Pakete, die während
jeder Unterbrechung verarbeitet werden müssen. Für noch höhere Netzverkehrspegel kann daher
eine Abfrage-Betriebsart gestartet werden, um die Notwendigkeit
für Unterbrechungen
ganz zu beseitigen.
-
In
einer Abfrage-Betriebsart können
Unterbrechungen vollständig
unterdrückt
werden, so lange das Abfragemodul (z.B. Software, die auf einem Hauptrechner
arbeitet) weiter mit der gewünschten Frequenz
arbeitet. Wenn das Abfragemodul blockiert ist oder anders zu funktionieren
aufhört,
können
Unterbrechungen wieder freigegeben werden, mit oder ohne Modulation.
-
Ein Unterbrechungs-Modulator
für mäßigen Netzverkehr
-
In
einer Ausführungsform
der Erfindung wird ein Unterbrechungs-Modulator bereitgestellt,
der dazu dient, die Geschwindigkeit zu modulieren, mit der als Antwort
auf die Übertragung
von Paketen durch eine Netzschnittstellenschaltung (NIC) Unterbrechungen
an einen Hauptrechner ausgegeben werden. In diesem Abschnitt werden
ein Unterbrechungs-Modulator und Modulationsverfahren beschrieben,
die besonders für
mäßige Verkehrspegel und
darüber
geeignet sind.
-
Den
Umfang eines bestimmten Verkehrspegels zu definieren, ob "schwach", "mäßig", "stark" oder anders, ist
notwendigerweise unpräzise.
Jedoch kann eine Methode, einen Verkehrspegel zu klassifizieren,
sowohl die Zahl der an der Netzschnittstelle empfangenen Pakete
als auch die Leistung oder das Leistungsvermögen eines Prozessors, der die
Pakete verarbeitet, berücksichtigen.
Diese Methode berücksichtigt
die Tatsache, dass ein schnellerer oder leistungsfähigerer
Prozessor im Stande sein kann, in einer gegebenen Zeitspanne eine
größere Zahl
von Paketen zu verarbeiten als ein langsamerer oder weniger leistungsfähiger Prozessor.
Mit anderen Worten, eine Million Pakete pro Sekunde und eine Unterbrechung
für jedes
Paket zu empfangen, kann dem einen Prozessor als eine starke Belastung
vorkommen, aber einen schnelleren Prozessor wenig belasten.
-
Um
sowohl die Geschwindigkeit der Paketübertragungen an einen Hauptrechner
als auch die Geschwindigkeit eines Hauptprozessors zu berücksichtigen,
kann der im Netzverkehr empfangene Verkehrspegel durch die Zahl
der Pakete gemessen werden, die jedes Mal verarbeitet werden, wenn
eine Unterbrechung von der Netzschnittstelle bedient wird. Typischerweise
gibt eine Netzschnittstellenschaltung eine Unterbrechung an einen
Hauptprozessor aus, wenn ein Paket von einem Netz ankommt und an
den Hauptrechner übertragen
wird. Je nach der Geschwindigkeit oder Konfiguration des Prozessors
ist er möglicherweise
nicht im Stande, die notwendige Unterbrechungsverarbeitung durchzuführen, bevor ein
weiteres Paket empfangen wird und eine weitere Unterbrechung ausgegeben
wird. In dem Zeitpunkt, in dem der Prozessor tatsächlich auf
die erste Unterbrechung antwortet, landet er daher möglicherweise bei
der Verarbeitung einer Zahl von Paketen, die bald nach dem ersten
ankommen. Ist andererseits der Prozessor sehr schnell, ist er möglicherweise
im Stande, auf jede einzelne Unterbrechung so rechtzeitig zu antworten,
dass er selten, wenn überhaupt
jemals, mehr als ein Paket auf einmal verarbeitet.
-
Zwecks
Beschreibung des an einer Netzschnittstellenschaltung empfangenen
Verkehrspegels in einer gegenwärtigen
Ausführungsform
der Erfindung kann daher angenommen werden, dass eine mäßige Belastung
herrscht, wenn ein Hauptprozessor während einer Unterbrechung ungefähr zehn
Pakete verarbeitet. Werden bei einer Unterbrechung weniger als zehn
Pakete verarbeitet, kann der Verkehrspegel als schwach angesehen
werden. Und eine starke Belastung kann durch die Verarbeitung von
ungefähr
fünfzig
Paketen während
einer Unterbrechungs-Dienstroutine charakterisiert sein. Diese Paketmaße können Durchschnitts-
oder Mittelwerte über
eine gegebene Zeitspanne sein oder können während der Verarbeitung einer
einzelnen Unterbrechung vorgenommene Augenblicksmessungen sein. Außerdem sind
diese Zahlen nicht fest und können
in Übereinstimmung
mit Faktoren wie z.B. Größe und Typen
von Paketen (z.B. protokollmäßig) geändert werden.
-
In
diesem Abschnitt wird ein Verfahren zum Modulieren von als Antwort
auf den Empfang eines mäßigen Verkehrspegels
erzeugten Unterbrechungen beschrieben. Der folgende Abschnitt beschreibt ein
Verfahren zum Modulieren oder Unterdrücken von Unterbrechungen in
einer Umgebung mit starkem Verkehr. Die in diesen Abschnitten beschriebenen
Unterbrechungs-Modulatoren und Verfahren zum Modulieren von Unterbrechungen
können
auch angewendet werden, um die Geschwindigkeit von als Antwort auf
die Übertragung
von Paketen von der Netzschnittstellenschaltung an ein Netz ausgegebenen
Unterbrechungen zu modulieren.
-
Wie
schon beschrieben, kann bei manchen Netzschnittstellenschaltungen
für jedes
von einem Netz empfangene oder an den Hauptrechner übertragene
Paket eine Unterbrechung an einen Hauptrechner ausgegeben werden.
Je größer die
Geschwindigkeit, mit der Pakete übertragen
werden, desto mehr Zeit muss ein Hauptprozessor aufwenden, Unterbrechungen
in Verbindung mit dem Netzverkehr abzuwickeln, und desto weniger
Zeit kann der Prozessor für andere
Aufgaben aufwenden. Durch Modulieren der Geschwindigkeit, mit der
Unterbrechungen von einer Kommunikationsvorrichtung wie z.B. einer
Netzschnittstellenschaltung an einen Hauptrechner ausgegeben werden,
kann das Verhältnis
von Unterbrechungen zu Paketen von 1:1 auf 1:N, wobei N>1, herabgesetzt werden.
Die Zahl der Netzschnittstellenunterbrechungen herabzusetzen, auf
die ein Hauptrechner reagieren muss, erlaubt es ihm, eher auf andere
Aufgaben (z.B. Benutzeraktivität)
zu reagieren, und kann die zur Verarbeitung des Netzverkehrs genutzte
Prozessorzeit vermindern. Insbesondere, wenn der Netzverkehr auf
das ansteigt, was als mäßiger Pegel
angesehen werden kann, wird ein Hauptprozessor wahrscheinlich von
einer Verminderung der Zahl der Unterbrechungen profitieren, die
abgewickelt werden müssen.
-
In
einer Ausführungsform
der Erfindung werden Unterbrechungen, die normalerweise erzeugt werden,
wenn Pakete von einer NIC empfangen und an einen Hauptrechner übertragen
werden, abwechselnd gesperrt und freigegeben. Insbesondere, nachdem
eine Unterbrechung an einen Hauptprozessor ausgegeben und davon
bedient wurde, wird keine weitere Unterbrechung erzeugt, bis eine
vorbestimmte Zeitspanne verstrichen ist oder eine spezifizierte Menge
Netzverkehr an das Hauptrechnersystem gesendet worden ist. In dieser
Ausführungsform
kann ein Zeitzähler
verwendet werden, um den Gang der Zeit (z.B. wie durch ein Taktsignal
angezeigt) zu verfolgen, und/oder es kann ein Paketzähler verwendet werden,
um die Übertragung
von Paketen an den Hauptrechner zu verfolgen. In einer alternativen
Ausführungsform
der Erfindung kann ein Inhaltszähler verwendet
werden, um die an den Hauptrechner gesendete Verkehrsmenge in anderen
Einheiten als Paketen zu verfolgen (z.B. Bytes, Datagrammen).
-
Anschaulich
werden der Zeitzähler
und Paketzähler
auf Schwellenwerte gesetzt, nachdem ein Hauptrechner eine Unterbrechung
verarbeitet hat. Geeignete Schwellenwerte, die in programmierbaren Registern
oder anderen Datenstrukturen gespeichert sein können, sind zwanzig Mikrosekunden
Zeit und sieben Pakete für
einen mäßigen Verkehrspegel.
Danach zählt
der Zeitzähler
als Antwort auf ein Taktsignal oder andere Mittel zum Kennzeichnen
des Verstreichens der Zeit herunter (z.B. zählt er auf null herunter) und
der Paketzähler
zählt als
Antwort auf ein Paketübertragungssignal
oder einen anderen Anzeiger, dass ein Paket an den Hauptrechner übertragen wurde,
herunter. Ein Paketübertragungssignal
kann zum Beispiel von einem NIC-Modul erzeugt werden, das dafür verantwortlich
ist, ein Paket in einen Hauptspeicher zu kopieren. Bis der Zeitzähler oder
der Paketzähler
null oder einen anderen Endwert erreicht, der in einem Register
oder einer anderen programmierbaren Datenspeichereinheit gespeichert
sein kann, wird als Antwort auf die Übertragung eines Pakets keine
Unterbrechung erzeugt. Nachdem ein Endwert erreicht ist, kann eine
Unterbrechung für
ein übertragenes
Paket erzeugt werden, nachdem die letzte Unterbrechung vom Hauptrechner
verarbeitet worden ist.
-
In
einer Ausführungsform
der Erfindung können
die programmierbaren Schwellenzeit- und -paketwerte erhöht werden, wenn die Geschwindigkeit der
an der Netzschnittstelle ankommenden Pakete größer wird oder die Zahl der
während
jeder Unterbrechung verarbeiteten Pakete größer wird. Und obwohl die Zähler in
dieser Ausführungsform
von Schwellenwerten auf Endwerte (z.B. null) herunterzählen, können sie
in einer alternativen Ausführungsform
auf Anfangswerte (z.B. null) gesetzt und danach auf ihre Schwellenwerte
hochzählen
gelassen werden.
-
Das
US-Patent
5,659,758 (das "Patent '758"), erteilt am 19.
August 1997, beschreibt einen Unterbrechungs-Modulator zum Empfang
von stoßweisem
Hochgeschwindigkeits-Netzverkehr. Das Patent'758 beschreibt die Verwendung von Zählern, die bei
Ausgabe einer Unterbrechung an einen Hauptrechner zurückgesetzt
werden. Mit anderen Worten, im Patent '758 wird ein Zeit- oder Paketzähler in
dem Zeitpunkt zurückgesetzt,
in dem eine Unterbrechung von einer Netzschnittstelle erzeugt wird,
und er zählt danach
hoch – sogar
während
der Bedienung der Unterbrechung.
-
Unterbrechungs-Modulation
gemäß der vorliegenden
Erfindung unterscheidet sich von jener des Patents '758 darin, wie die
Zeit- oder Paketzähler
zurückgesetzt
werden. Insbesondere, statt in dem Zeitpunkt zurückgesetzt zu werden, in dem
die Unterbrechung ausgegeben wird, werden in einer bevorzugten Ausführungsform
der Erfindung die Zähler
nicht zurückgesetzt,
nachdem der Prozessor eine Unterbrechung verarbeitet hat. Wie oben
beschrieben, wird in einer Ausführungsform
der Erfindung keine zweite Unterbrechung von einer Netzschnittstelle
gestartet, bis eine minimale Zeitspanne verstrichen oder eine spezifizierte
Zahl von Paketen empfangen worden ist, nachdem ein Hauptprozessor
die Bedienung einer ersten Unterbrechung abgeschlossen hat. Der
Fachmann erkennt, dass das gegenwärtige Schema zusätzliche
Zeittrennung zwischen aufeinander folgenden Unterbrechungen bereitstellt
und somit die Hauptprozessorzeit verringert, die zur Bedienung von
Unterbrechungen von der Netzschnittstelle aufgewendet wird. Wenn
unter dem Patent '758 ein
Hauptprozessor nahezu eine volle Zeitschwelle (z.B. zwanzig Mikrosekunden)
benötigt,
um seine Verarbeitung einer Unterbrechung zu beenden, können Unterbrechungen
freigegeben werden und wird eine kurz nach der ersten Unterbrechung
ausgegebene Unterbrechung bedient.
-
1 ist eine Skizze eines
Unterbrechungs-Modulators für
eine NIC gemäß einer
Ausführungsform
der Erfindung. In dieser Ausführungsform
werden Zeit- und Paketzähler
auf ihre Schwellenwerte (z.B. zwanzig Mikrosekunden bzw. sieben Pakete)
gesetzt, nachdem eine Unterbrechung durch einen Hauptrechner verarbeitet
worden ist, und dann in Übereinstimmung
mit dem Gang der Zeit und der Übertragung
von Paketen heruntergezählt.
Ein Zähler
läuft ab,
wenn er einen Endwert (z.B. null) erreicht, in welchem Zeitpunkt
eine weitere Unterbrechung erzeugt werden kann. In den nachfolgend
erörterten Ausführungsformen
werden zwar Schwellenwerte von ungefähr zwanzig Mikrosekunden und
ungefähr sieben
Paketen verwendet, in alternativen Ausführungsformen wird aber ein
weiter Bereich von Schwellenwerten geeignet sein. Insbesondere verwendet
eine Netzumgebung, in der eine Ausführungsform der vorliegenden
Erfindung realisiert werden kann (wie z.B. das Internet), Ethernet-,
IP- und TCP-Protokolle in den Schichten zwei, drei bzw. vier eines
zugeordneten Protokollstapels. In dieser Um gebung kann ein Bereich
von zwanzig bis fünfzig
Mikrosekunden für
einen Zeitzähler
geeignet sein und kann ein Bereich von vier bis zehn Paketen für einen Paketzähler geeignet
sein.
-
Geeignete
Schwellen können
in Übereinstimmung
mit den Protokollen, denen an der bestimmten NIC empfangene Pakete
entsprechen, oder manchen anderen Kenngrößen einer bestimmten Netzumgebung
festgelegt werden. Manche Protokolle können selbst dann im Stande
sein, richtig zu funktionieren, wenn die Verarbeitung von Paketen und
Unterbrechungen länger
als sieben Pakete oder zwanzig Mikrosekunden verzögert wird.
Zum Beispiel kann das Protokoll "Network
File System" (NFS)
im Stande sein, eine Zeitschwelle von ungefähr einer Millisekunde und eine
Paketschwelle von ungefähr fünfzig zu
verwenden.
-
In
der gezeigten Ausführungsform
der Erfindung werden Unterbrechungen durch einen PCI-Bus (PCI =
Peripheral Component Interconnect) an einen Hauptprozessor übertragen
werden. Insbesondere entspricht die ausgegebene Unterbrechung dem
Signal PCI INTA, das als Antwort auf die Übertragung eines Pakets von
einer Netzschnittstelle an einen Hauptrechner erzeugt werden kann.
-
In 1 enthält ein Unterbrechungs-Modulator 100 einen
Zeitzähler 102 und
einen Paketzähler 106.
Dem Zeitzähler 102 sind
ein oder mehrere Zeitschwellenregister (z.B. Schwellenregister 104a, 104b)
zugeordnet, die Schwellenzeitzählungen
speichern, auf die der Zeitzähler 102 gesetzt
werden kann, wenn er initialisiert oder neu initialisiert wird. Dem
Paketzähler 106 sind
ein oder mehrere Paketschwellenregister (z.B. Schwellenregister 108a, 108b)
zugeordnet, die Schwellenpaketzählungen speichern,
auf die der Paketzähler 106 gesetzt
werden kann, wenn er initialisiert oder neu initialisiert wird.
-
Die
in 1 gezeigten Zeitschwellenregister und
Paketschwellenregister sind in programmierbarem Speicher realisiert
(z.B. Register, RAM, Flash-Speicher). Daher können sie durch Software (z.B.
einen Gerätetreiber),
die auf einem Hauptrechner arbeitet, gesetzt oder modifiziert werden.
Wie in 1 gezeigt, können mehrere
Schwellenwertregister mit einem Zeit- und/oder Paketzähler verbunden sein,
damit die Zähler
je nach dem Netzverkehrspegel auf verschiedene Werte zurückgesetzt
werden können.
Insbesondere können
verschiedene Schwellenwerte erwünscht
sein, je nach dem an der NIC empfangenen oder von einem Hauptprozessor
verarbeiteten Verkehrspegel. Die Zeit- und Paketzähler können daher
auf verschiedene Schwellenwerte neu initialisiert werden, wenn der
Verkehr schwankt. Ein Unterbrechungs-Modulator ist nicht auf eine
bestimmte Zahl von Schwellenregistern beschränkt und kann irgendeine Zahl
davon größer als
oder gleich eins umfassen. In einer anderen, alternativen Ausführungsform
werden Schwellenzeit- und/oder -Paketzählungen in Nur-Lese-Speicher
gespeichert.
-
Der
Zeitzähler 102 und
Paketzähler 106 können bei
Initialisierung (z.B. beim Einschalten) der NIC auf die Werte in
einem Zeitschwellenregister und Paketschwellenregister zurückgesetzt
(z.B. initialisiert) werden. Sie können außerdem zurückgesetzt werden, wenn ein
von der NIC bedienter Hauptrechner eine Unterbrechung beendet, wie
nachfolgend beschrieben.
-
Ein
Taktsignal 110 ist mit dem Zeitzähler 102 verbunden
und kann zu Timingzwecken benutzt werden. Der Zeitzähler 102 kann
für jeden
Taktzyklus oder für
eine Kombination von Taktzyklen, die das Taktsignal 110 trägt, heruntergezählt oder
hochgezählt
werden. In der vorliegend beschriebenen Ausführungsform wird der Zeitzähler 102 für jede Zeiteinheit
(z.B. Mikrosekunde) heruntergezählt,
die vom Taktsignal 102 signalisiert oder angezeigt wird.
-
Ein
Paketübertragungssignal 112 signalisiert einem
Hauptrechner die Übertragung
eines Pakets von der Netzschnittstelle. Das Paketübertragungssignal 112 ist
somit mit dem Paketzähler 106 und
einem Zustandsregister 114 verbunden. Das Paketübertragungssignal 112 kann
von dem NIC-Modul erzeugt werden, das das Paket in den Hauptspeicher oder
ein anderes Modul überträgt.
-
Anschaulich
besteht das Zustandsregister 114 aus einem oder mehreren
Zustandsanzeigern. In einer Ausführungsform
der Erfindung kann ein Zustandsanzeiger als Antwort auf eine Aktion,
ein Ereignis oder einen Fehler in der NIC gesetzt werden. Wie der
Fachmann erkennt, kann in einer früheren Netzschnittstellenschaltung
eine PCI-INTA-Unterbrechung
jedes Mal erzeugt werden, wenn ein Zustandsregisteranzeiger gesetzt
wird (z.B. einen Wert von eins speichert). Wie hierin beschrieben,
ist der Unterbrechungs-Modulator 100 jedoch gestaltet,
diese mit dem Empfang und/oder der Übertragung verbundenen Unterbrechungen
eines Netzpakets durch den Hauptrechner zu modulieren. Mit anderen
Worten, durch die Übertragung
von Paketen von einem Netz an einen Hauptrechner verursachte Unterbrechungen
können
unterdrückt
werden, bis ein Zeit- oder Paketzähler einen vorbestimmten Wert übersteigt,
jedoch werden andere Typen von Unterbrechungen möglicherweise nicht unterdrückt. Insbesondere kann
einer oder mehrere Fehlerbedingungen (z.B. unvollständiges Paket,
defektes Paket, Zählerüberlauf)
erlaubt werden, wie üblich
Unterbrechungen zu erzeugen.
-
Ein
End-Zeitregister 116 und ein End-Paketregister 122 speichern
Endwerte (z.B. null) zum Vergleich mit dem Zeitzähler 102 und Paketzähler 106 und
zur Bestimmung, wann Unterbrechungen freizugeben oder wieder freizugeben
sind. In der gezeigten Ausführungsform
der Erfindung sind diese Register programmierbare Datenspeichereinheiten
(z.B. RAM, Flash-Speicher).
-
Bei
Initialisierung wird der Zeitzähler 102 auf den
im Zeitschwellenregister 104a (z.B., oder einem alternativen
Zeitschwellenregister wie z.B. einem Register 104b) gespeicherten
Zeitschwellenwert gesetzt. Wird der Zeitzähler als Antwort auf das Taktsignal 110 heruntergezählt, wird
er durch einen Vergleicher 118 mit dem Wert im End-Zeitregister 116 verglichen.
Wird der Zeitzähler 102 auf
den oder weiter als der Wert im End-Zeitregister 116 heruntergezählt (was
z.B. das Verstreichen von mindestens zwanzig Millisekunden Zeit
anzeigt), wird ein Zeit-Abgelaufen-Signal 120 aktiviert.
Der im Zeitschwellenregister 104a gespeicherte Wert kann
modifiziert (z.B. vergrößert) werden,
wenn die Empfangsgeschwindigkeit des Netzverkehrs zunimmt. Oder
es kann, wie in 1 gezeigt,
ein anderer Schwellenwert aus einem anderen Zeitschwellenregister
geladen werden, je nach dem Verkehrspegel (z.B. der Zahl von Paketen, die
in einer Unterbrechung verarbeitet werden, der Zahl von Paketen,
die in einer gegebenen Zeitspanne empfangen werden). Die Festlegung,
welcher Zeitschwellenregister-Wert zur Initialisierung des Zeitzählers 102 zu
verwenden ist, kann auf Basis der gerade an den Hauptrechner übertragenen
Verkehrsmenge getroffen werden. Der Wert im End-Zeitregister 116 kann ebenfalls
geändert
werden.
-
Ähnlich,
wenn der Paketzähler 106 initialisiert
wird, wird er auf den im Paketschwellenregister 108a (oder
einem alternativen Paketschwellenregister wie z.B. einem Register 108b)
gespeicherten Paketschwellenwert gesetzt. Wird der Paketzähler als Antwort
auf das Paketübertragungssignal 112 herunterzählen gelassen,
wird er durch einen Vergleicher 124 mit dem Wert im End-Paketregister 122 verglichen.
Wird der Paketzähler 106 auf
den oder weiter als der Wert im End-Paketregister 122 heruntergezählt, wird
ein Pakete-Überschritten-Signal 126 aktiviert.
Der im Paketschwellenregister 108a gespeicherte Wert kann
modifiziert (z.B. vergrößert) werden,
wenn die Empfangsgeschwindigkeit des Netzverkehrs zunimmt. Oder
es kann, wie in 1 gezeigt,
ein anderer Schwellenwert aus einem anderen Paketschwellenregister
geladen werden, je nach dem Verkehrspegel (z.B. der Zahl von Paketen,
die in einer Unterbrechung verarbeitet werden, der Zahl von Paketen,
die in einer gegebenen Zeitspanne empfangen werden). Der Wert im
End-Paketregister 122 kann ebenfalls geändert werden.
-
Wenn
entweder das Zeit-Abgelaufen-Signal 120 oder das Pakete-Überschritten-Signal 126 aktiviert
werden, wird ein ODER-Glied 128 freigegeben und wird ein
Unterbrechung-Freigegeben-Signal 130 eines UND-Gliedes 132 aktiviert.
Der andere Eingang in das UND-Glied 132 wird vom Zustandsregister 114 versorgt
und wird aktiviert, wenn als Antwort auf das Paketübertragungssignal 112 ein
Zustandsbit gesetzt wird. Daher wird ein Unterbrechungssignal 134 (z.B.
PCI INTA) nur aktiviert, wenn ein Paket übertragen wird und Unterbrechungen
wegen des Ablaufens des Zeitzählers 102 oder
Paketzählers 106 freigegeben
sind.
-
In
einer alternativen Ausführungsform
der Erfindung können
die Anfangs- und End-Zeit- oder Paketwerte
getauscht werden. Mit anderen Worten, die Zeitschwellenregister
und Paketschwellenregister in 1 können gegen
das End-Zeitregister 116 und das End-Paketregister 122 ausgetauscht
werden. In dieser Ausführungsform
wird somit ein Zeit- und/oder
Paketzähler
auf einen Anfangswert (z.B. nuLL) initialisiert und dann auf einen
Schwellenwert hochgezählt.
-
In
der gezeigten Ausführungsform
wird das Unterbrechungssignal 134 von einem Prozessor (z.B.
einem SPARCTM-Prozessor von der Fa. Sun
Microsystems) in einem Hauptrechner empfangen. Wie der Fachmann
erkennt, wird das Zustandsregister 114 (z.B. ein Zustandsregister-Anzeiger
entsprechend dem Paketübertragungssignal 112)
durch den Hauptprozessor gelöscht,
wenn er die Verarbeitung des Unterbrechungssignals beendet. Als
Antwort auf das Löschen
des Zustandsanzeigers werden der Zeitzähler 102 und Paketzähler 106 neu
initialisiert.
-
Das
Zurücksetzen
der Zeit- und Paketzähler nach
Verarbeitung einer Unterbrechung durch einen Hauptprozessor erlaubt
es dem Hauptprozessor, andere Funktionen und Pflichten durchzuführen, für die eine
wesentliche Zeitspanne zur Verfügung
stehen kann, bevor er eine andere Unterbrechung verarbeiten muss,
die mit der Übertragung
eines Pakets verbunden ist. Insbesondere müssen in dieser Ausführungsform
ungefähr
zwanzig Mikrosekunden verstreichen oder müssen ungefähr sieben Pakete von der NIC
empfangen werden, bevor eine weitere paketübertragene Unterbrechung an
den Hauptprozessor gesendet wird.
-
Der
Fachmann erkennt, dass die in diesem Abschnitt beschriebenen Mechanismen
und Verfahren zur Unterbrechungs-Modulation in anderen Kommunikationsvorrichtungen
als einer Netzschnittstellenschaltung angewendet werden können. Insbesondere
können
die Mechanismen und Verfahren in Gateways, Routern, Bridges, Modems
und anderen Kommunikationsvorrichtungen realisiert werden, die Pakete
empfangen. Eingabe- und Ausgabevorrichtungen wie z.B. Mediencontroller
können
ebenfalls von den offenbarten Techniken zur Unterbrechungs-Modulation
profitieren.
-
2 ist ein Zustandsdiagramm,
das einen Satz von Zuständen
und Übergängen zwischen
solchen Zuständen
zeigt, die in der in 1 gezeigten Ausführungsform
der Erfindung verwendet werden können.
Wie oben beschrieben, können
mit der Übertragung
von Paketen von einer Netzschnittstelle verbundene Unterbrechungen
durch den Unterbrechungs-Modulator 100 entweder freigegeben
oder gesperrt werden. Somit gibt es in 2 zwei primäre Zustände – Zustand Unterbrechung gesperrt 202 und Zustand
Unterbrechung freigegeben 204. Anschaulich wird im Zustand
Unterbrechung gesperrt 202 eine Unterbrechung unterdrückt, die
sonst möglicherweise
als Antwort auf die Übertragung
eines Pakets erzeugt wird. Im Zustand Unterbrechung freigegeben 204 wird
eine Unterbrechung, die möglicherweise
als Antwort auf die Übertragung
eines Pakets erzeugt wird, nicht unterdrückt.
-
Im
Zustand Unterbrechung gesperrt 202 kann der Unterbrechungs-Modulator 100 entweder
in einem Zählerinitialisierungszustand 206 oder
einem Zählerherunterzählzustand 208 sein.
Insbesondere wird im Zustand 206 ein Zähler (z.B. Zeitzähler 202 und/oder
Paketzähler 206 aus 1) auf einen Anfangs- oder
Schwellenwert initialisiert. Im Zählerherunterzählzustand 208 zählt ein
Zeitzähler,
Paketzähler
oder anderer Zähler
herunter. Zum Beispiel kann ein Zeitzähler als Antwort auf ein Taktsignal
herunterzählen
oder kann ein Paketzähler
als Antwort auf die Ankunft oder Übertragung eines Pakets herunterzählen. In
einer alternativen Ausführungsform
der Erfindung, bei der Zähler
auf Schwellenwerte hochzählen statt
von ihnen herunterzuzählen,
ist der Zustand 208 ein Zählerhochzählzustand.
-
In
der gezeigten Ausführungsform
wechselt der Unterbrechungs-Modulator 100 auf das Speichern
eines Anfangswertes in einem Zähler
hin automatisch über
einen Übergang 210 von
einem Zählerinitialisierungszustand
in einen Zählerherunterzählzustand.
-
Alternativ
kann dieser Übergang
als Antwort auf den Empfang eines Zeitsignals oder Empfang eines
Paketsignals stattfinden.
-
Während er
im Zählerherunterzählzustand ist,
kann der Unterbrechungs-Modulator über einen Übergang 212 in den
Zustand Unterbrechung freigegeben 204 übergehen. In einer vorliegenden
Ausführungsform
der Erfindung wird der Übergang 212 gestartet,
wenn ein Zähler
einen Endwert erreicht, wie oben in Verbindung mit 1 beschrieben.
-
Ein Übergang 214 vom
Zustand Unterbrechung freigegeben 204 in den Zählerinitialisierungszustand 206 kann
gestartet werden, wenn ein Hauptprozessor die Verarbeitung einer
während
des Zustands Unterbrechung freigegeben 204 erzeugten Unterbrechung
vollendet. In der vorliegend beschriebenen Ausführungsform der Erfindung kann
die Vervollständigung
einer Unterbrechungsverarbeitung durch das Löschen eines oder mehrerer Zustandsanzeiger
in einem Zustandsregister angezeigt werden.
-
Schließlich kann
in einer alternativen Ausführungsform
der. Erfindung ein Unterbrechungs-Modulator über einen Übergang 216 vom Zählerherunterzählzustand 208 in
den Zählerinitialisierungszustand 206 übergehen.
Der Übergang 216 kann
anzeigen, dass das Zustandsregister gelesen wurde (z.B. wegen einer
Unterbrechung in Verbindung mit einem anderen Ereignis als dem Empfang
eines Pakets von einem Netz). Insbesondere kann wegen einer Fehlerbedingung
eine Unterbrechung von der NIC erzeugt werden. Sodann kann eine
Unterbrechungs-Dienstroutine aufgerufen werden, um den gemeldeten
Fehler abzuwickeln, und sie kann außerdem Pakete verarbeiten,
die seit der letzten Unterbrechung empfangen wurden. Bei Verarbeitung
von wartenden Paketen ist die Situation nach der Verarbeitung einer
Unterbrechung in Verbindung mit einer Fehlerbedingung der Situation ähnlich,
die da ist, nachdem ein Hauptprozessor die Verarbeitung einer Unterbrechung
in Verbindung mit einer Paketübertragung
beendet hat. Daher können
der oder die von der NIC unterhaltenen Zähler neu initialisiert werden,
als ob gerade eine Unterbrechung in Verbindung mit einer normalen Übertragung
eines Pakets verarbeitet wurde.
-
3 ist ein Flussdiagramm,
das ein Verfahren zum Modulieren von Unterbrechungen mit dem Unterbrechungs-Modulator 100 zeigt.
Der Zustand 300 ist ein Startzustand, der dem Einschalten
einer Netzschnittstelle entspricht, die den Unterbrechungs-Modulator 100 enthält. Der
Startzustand 300 kann alternativ die Verarbeitung einer
als Antwort auf die Übertragung
eines Pakets durch die Netzschnittstelle erzeugten Unterbrechung
umfassen.
-
Im
Zustand 302 werden als Antwort auf eine Einschaltbedingung
oder die Vollendung der Verarbeitung einer Unterbrechung durch einen
Hauptprozessor Zeit- und Paketzähler
initialisiert. Anschaulich wird ein Zeitzähler auf zwanzig Mikrosekunden
(oder eine andere geeignete programmierbare Zeitspanne) gesetzt
und wird ein Paketzähler
auf sieben Pakete (oder eine andere geeignete programmierbare Zahl von
Paketen) gesetzt. Nach Initialisierung, und wie nachfolgend beschrieben,
zählen
die Zeit- und Paketzähler
auf programmierbare Endwerte herunter (z.B. null Mikrosekunden bzw.
null Pakete). In einer alternativen Ausführungsform der Erfindung werden Zeit-
und Paketzähler
im Zustand 302 auf null oder andere Anfangswerte gesetzt
und dann nachfolgend von diesen Werten auf ihre Schwellenwerte hochzählen gelassen.
-
Im
Zustand 304 werden Unterbrechungen in Verbindung mit der Übertragung
von Paketen von einer Netzschnittstelle vorübergehend gesperrt. Als Antwort
auf die Übertragung
eines Pakets können noch
bestimmte Schritte in Richtung auf die Ausgabe einer Unterbrechung
durchgeführt
werden, wie z.B. das Setzen eines Anzeigers in einem Zustandsregister.
Wie nachfolgend beschrieben, wird jedoch keine Paketübertragungsunterbrechung
an einen Hauptprozessor gesendet, bis entweder der Zeit- oder der Paketzähler seinen
Schwellenwert erreicht.
-
Im
Zustand 306 zählen
einer der Zeit- und Paketzähler
oder beide herunter (z.B. zählen
sie negativ oder auf null hoch). Insbesondere wird der Zeitzähler im
Allgemeinen von dem Zeitpunkt, in dem er initialisiert wird, bis
er neu initialisiert wird kontinuierlich herunterzählen. Er
kann jedoch angehalten oder ausgesetzt werden (z.B. aufhören, herunterzuzählen), wenn
Unterbrechungen freigegeben werden. Nach Verarbeitung einer Unterbrechung
wird der Zeitzähler
auf einen Schwellenwert neu initialisiert und beginnt wieder herunterzuzählen. Ein
Paketzähler
jedoch zählt
als Antwort auf ein Ereignis herunter, das weniger gewiss als der
Gang der Zeit ist – die Übertragung
eines Pakets von der Netzschnittstelle. Anschaulich zählt der
Paketzähler
für jedes
von der Netzschnittstelle an einen Hauptrechner übertragene Paket um eins herunter.
-
Im
Zustand 308 wird ermittelt, ob einer der Zeit- und Paketzähler oder
beide ihre Endwerte erreicht haben. So lange keiner der Zähler seinen
Endwert erreicht hat, kehrt die dargestellte Prozedur zum Zustand 306 zurück, um das
Herunterzählen
der Zähler
fortzusetzen. Sobald ein Zähler
seinen Schwellenwert erreicht hat, geht die Prozedur jedoch im Zustand 310 weiter.
-
Im
Zustand 310 werden Unterbrechungen in Verbindung mit der Übertragung
von Netzpaketen freigegeben, da einer der Zeit- und Paketzähler oder beide
ihre Schwellenwerte erreicht haben. Anschaulich führt das
nächste
Paket, das an den Hauptrechner übertragen
wird, zur Übertragung
einer Unterbrechung zum Hauptprozessor. Alternativ, wenn seit der letzten
Unterbrechung ein oder mehr Pakete an der Netzschnittstelle empfangen
wurden (z.B. zur Übertragung
an den Hauptrechner), kann zeitnah zum Beginn des Zustands 310 eine
Unterbrechung ausgegeben werden.
-
Nach
Ausgabe einer Unterbrechung während
des Zustands 310 oder im Anschluss daran erkennt der Unterbrechungs-Modulator 100 die
Vollendung einer Unterbrechungsverarbeitung (z.B. durch Erkennen
des Löschens
des Zustandsregister-Anzeigers, der gesetzt wurde, wenn ein Paket übertragen wurde).
In diesem Zeitpunkt werden die Zähler
neu initialisiert, und die Prozedur geht wie oben angezeigt weiter.
Die dargestellte Prozedur endet im Endzustand 312.
-
In
der oben beschrieben Prozedur werden Unterbrechungen von der Netzschnittstelle,
die mit der Übertragung
von Paketen zu oder von einem Netz verbunden sind, moduliert. Andere
Unterbrechungen, wie z.B. jede, die eine Fehlerbedingung innerhalb
der Netzschnittstelle oder ein ungültiges Paket anzeigen, können noch
normal ausgegeben werden. In einer anderen Ausführungsform der Erfindung werden
jedoch auch andere Unterbrechungen als Paketankunftsunterbrechungen
moduliert.
-
Unterdrückung von
Unterbrechungen während
starkem Netzverkehr
-
Im
vorhergehenden Abschnitt wurden ein Unterbrechungs-Modulator und
Verfahren zum Modulieren von Unterbrechungen für während mäßiger oder vergleichbarer Verkehrspegel
von einer Netzschnittstelle übertragene
Pakete vorgestellt. So ein Unterbrechungs-Modulator kann einen Zeitzähler und/oder
einen Paketzähler
verwenden, um die Erzeugung von Unterbrechungen von der Netzschnittstelle
zu einem Hauptrechnerprozessor vorübergehend zu sperren und freizugeben.
Als Folge kann die Zahl der Unterbrechungen, die vom Unterbrechungs-Modulator
erzeugt werden und die vom Hauptprozessor bedient werden müssen, wesentlich herabgesetzt
werden. Indem weniger Zeit für
die Bedienung von Unterbrechungen aufgewendet wird, kann der Hauptprozessor
eher für
wesentliche Aufgaben ansprechbar sein. Obwohl eine Unterbrechung,
die dafür
eingerichtet ist, die Ankunft eines Pakets von einer Netzschnittstelle
an einem Hauptrechner zu signalisieren, vorübergehend unterdrückt werden
kann, stellt das Modulationsschema vorteilhaft sicher, dass Pakete
rechtzeitig verarbeitet werden.
-
Wenn
jedoch die Paketankunftsgeschwindigkeit zunimmt, müssen möglicherweise
immer mehr Pakete verarbeitet werden, immer wenn der Prozessor auf
eine Unterbrechung antwortet. Oder die Paketankunftsgeschwindigkeit
am Hauptrechner ist möglicherweise
so hoch, dass trotz der Verwendung eines Zeit- oder Paketzählers zahlreiche
Unterbrechungen erzeugt werden. In beiden Fällen sind die Vorzüge der Unterbrechungs-Modulation
in einer Umgebung mit starkem Netzverkehr möglicherweise etwas vermindert.
Wie vorher beschrieben, umfasst in einer Ausführungsform der Erfindung eine
Umgebung mit starkem Netzverkehr an einer Netzschnittstellenschaltung
möglicherweise
Situationen, in denen ein Hauptprozessor jedes Mal, wenn er auf
eine als Antwort auf den Empfang eines Pakets ausgegebene Unterbrechung
antwortet, ungefähr
fünfzig
Pakete verarbeitet.
-
Werden
Pakete mit sehr hoher Geschwindigkeit von einer Netzschnittstelle übertragen,
wird die Schwelle eines Paketzählers
möglicherweise
schnell überstiegen,
immer wenn er zurückgesetzt
wird. Immer wenn die Schwelle überstiegen
wird, würde
dann eine andre Unterbrechung an einen Hauptprozessor erzeugt werden.
Natürlich
kann als Antwort die Paketzählerschwelle
auf einen relativ hohen Wert gesetzt werden (z.B. durch Laden eines
Schwellenwertes aus einem anderen Paketschwellenregister), doch
wenn die Übertragungsgeschwindigkeit
sehr hoch bleibt, braucht es möglicherweise
jedes Mal, wenn der Prozessor eine Unterbrechung empfängt, unmäßig viel
Zeit, eine große
Zahl von Paketen zu verarbeiten. Manche Kommunikationsprotokolle
können
in so einer Umgebung möglicherweise
nicht angemessen arbeiten. Oder, wenn die Paketankunftsgeschwindigkeit
am Hauptrechner jäh
sinkt, nachdem die Paketzählerschwelle
vergrößert wurde,
werden möglicherweise
die nächste
Unterbrechung und die nachfolgende Verarbeitung von einem oder mehreren
Paketen verzögert.
-
Auch
die Verwendung eines Zeitzählers kann
die Probleme in Verbindung mit starken Verkehrspegeln nicht lindern.
Insbesondere, wenn der Zeitzähler
eine relativ hohe Zeitschwelle hat, verlangt die Zahl der Pakete,
die von einer Netzschnittstelle übertragen
werden, bevor die Schwelle überstiegen wird,
möglicherweise,
dass der Prozessor erneut eine wesentliche Zeitspanne aufwenden
muss, um die Pakete zu verarbeiten, wenn eine Unterbrechung erzeugt
wird. Wenn die Zeitschwelle auf einen niedrigen Wert gesetzt wird
(z.B. durch Verwendung eines anderen Zeitschwellenregisters), wird
der Prozessor möglicherweise
mit Unterbrechungen überlastet – ähnlich der
Folge davon, eine niedrige Paketzählerschwelle zu verwenden).
-
Bei
starkem Verkehr kann die Zeit, die ein Hauptprozessor möglicherweise
aufwendet, um Pakete oder Unterbrechungen zu verarbeiten, die Ansprechbarkeit
eines Hauptrechners für
andere Aufgaben verschlechtern. Wenn die an einer Netzschnittstelle
oder anderen Kommunikationsvorrichtung empfangene Menge Netzverkehr
(z.B. Pakete) einen hohen Pegel erreicht, ist ein Mechanismus, einem Hauptrechner
die Übertragung
von anderen Paketen als Unterbrechungen zu signalisieren, möglicherweise
effizienter.
-
In
einer Ausführungsform
der Erfindung wird daher eine Abfrage-Betriebsart für eine Netzschnittstelle
oder andere Kommunikationsvorrichtung freigegeben, die eine große Menge
Verkehr (z.B. Pakete) empfängt.
In dieser Ausführungsform
wird die Netzschnittstelle regelmäßig abgefragt, um zu ermitteln,
ob Pakete an einen Hauptrechner übertragen wurden
oder zur Verarbeitung durch einen Hauptprozessor bereit sind.
-
Wenn
ja, können
die Pakete dann verarbeitet werden, ohne den Aufwand in Verbindung
mit der Abfertigung einer Unterbrechung auf sich zu laden. Die Verwendung
von Abfragen kann jedoch durch Unterbrechungs-Modulation ergänzt werden.
Insbesondere kann ein Unterbrechungs-Modulator Unterbrechungen unterdrücken, so
lange die Netzschnittstelle auf einer wiederkehrenden Basis abgefragt
wird. Werden jedoch Abfrageoperationen verzögert oder blockiert, kann ein
Unterbrechungs-Modulator sicherstellen, dass Unterbrechungen periodisch
erzeugt werden, so dass sich der Hauptprozessor rechtzeitig um empfangene
Pakete kümmert.
-
Dieser
Abschnitt ist daher im Lichte eines Unterbrechungs-Modulators und
von Verfahren zum Modulieren von Unterbrechungen zu verstehen, wie im
vorhergehenden Abschnitt beschrieben. Ebenso können in diesem Abschnitt eingeführte Konzepte ganz
oder teilweise auf das System und die Verfahren zur Unterbrechungs-Modulation
angewendet werden, die im vorhergehenden Abschnitt erörtert wurden.
-
Wie
vorher erörtert,
können
Verkehrspegel in dieser Ausführungsform
durch die Zahl der Pakete definiert werden, die jedes Mal verarbeitet
werden, wenn ein Hauptprozessor auf eine Unterbrechung antwortet.
Insbesondere, wenn ungefähr
fünfzig
Pakete während
einer Unterbrechung verarbeitet werden, kann der Verkehr als stark
angesehen werden. In einer anderen Ausführungsform der Erfindung berücksichtigt
ein Maß für den Netzverkehr
die Größe und/oder
den Typ von Paketen, nicht nur die Zahl der Pakete.
-
In
einer Ausführungsform
der Erfindung wird eine Netzschnittstelle wiederholt durch Software
abgefragt, die auf einem Hauptrechner arbeitet (z.B. ein Programmodul
oder eine andere Folge von computerausführbaren Anweisungen). Die Abfragefrequenz kann
in der Größenordnung
von ein Mal alle 500 bis 1000 Mikrosekunden sein. Die Abfragesoftware
kann zum Beispiel einen Teil eines Gerätetreibers für die Netzschnittstelle
umfassen. Weiterhin kann sie als ein gekettetes Programm auf einem
Prozessor wie z.B. einem SPARCTM-Prozessor
von der Fa. Sun Microsystems laufen. Wie der Fachmann erkennt, kann ein
ausführbares
gekettetes Programm zwischen Abfrageoperationen auf einer Bedingungsvariablen
blockiert werden.
-
In
einer Ausführungsform
kann die Abfragesoftware die Übertragung
eines Pakets erkennen, indem sie ein Zustandsregister der Netzschnittstelle oder
einen Anzeiger (z.B. ein Bit) im Zustandsregister prüft. Anschaulich
wird der Anzeiger, der geprüft
wird, als Antwort auf die Übertragung
eines Pakets von einem ersten Zustand in einen zweiten Zustand geändert und
wird nach der Abfrage in den ersten Zustand zurückversetzt.
-
In
einer Ausführungsform
der Erfindung, in der das Abfragen durch Unterbrechungs-Modulation ergänzt wird,
wird jedes Mal, wenn die Software die Netzschnittstelle abfragt,
ein Unterbrechungs-Modulator neu initialisiert (z.B. werden seine
Zeit- und/oder Paketzähler
auf Schwellenwerte zurückgesetzt).
So lange das Abfragen weitergeht, werden daher die Zähler wiederholt
neu initialisiert und wird Unterbrechungen, die sonst wegen des
Empfangs von Netzpaketen möglicherweise
erzeugt werden, zuvorgekommen.
-
Insbesondere,
wenn das Abfragemodul blockiert ist, erreicht ein Zeitzähler oder
ein Paketzähler innerhalb
des Unterbrechungs-Modulators möglicherweise
seinen Endwert. Es wird dann eine Unterbrechung erzeugt, wenn seit
der letzten Abfrageoperation oder Unterbrechung irgendwelche Pakete übertragen
wurden. Die Schwellenwerte für
die Zähler
in dieser Ausführungsform
können
höher sein
als die Schwellenwerte, die für
die in Verbindung mit 1 bis 3 erörterten Ausführungsformen
der Erfindung beschrieben wurden. Zum Beispiel in einer Netzumgebung
wie dem Internet, in der Pakete den Protokollen Ethernet, IP und
TCP entsprechen, ist ein geeigneter Bereich von Zeitschwellen ein
bis fünf
Millisekunden und ist ein geeigneter Bereich von Paketschwellen
500 bis 2500 Pakete. Insbesondere kann in einer Ausführungsform
der Erfindung eine Zeitzählerschwelle
ungefähr
zwei Millisekunden sein und kann eine Paketzählerschwelle ungefähr eintausend
sein.
-
In
anderen Ausführungsformen
der Erfindung und in anderen Netz- oder Betriebsumgebungen können andere
Werte geeignet sein. Und Schwellenwerte können reguliert werden, wenn
die von einem Netz empfangene Verkehrsmenge schwankt. Wie vorher
beschrieben, können
verschiedene Schwellenregister verschiedene Schwellenwerte für Neuinitialisierung
von Zeit- und/oder Paketzählern
während
verschiedener Verkehrspegel speichern.
-
Wie
oben beschrieben, kann eine Abfrageoperation durch ein gekettetes
oder anderes Ausführungsmodul
in einer Umgebung mit gleichzeitigem Ablauf mehrerer Programme durchgeführt werden. Ein
gekettetes Programm kann zum Beispiel auf eine Bedingungsvariable
blockiert werden, wenn nicht abgefragt wird. Das gekettete Programm
kann jedoch zur Ausführung
mit einer vorbestimmten oder veränderlichen
(z.B. programmierbaren) Frequenz wie z.B. 1000 bis 2000 Mal pro
Sekunde ausgelöst
werden. Das Timing jeder Abfrageoperation kann durch den Gang der
Zeit bestimmt werden, der von einem Zeitzähler des Unterbrechungs-Modulators
oder einem separaten, von der Abfragesoftware oder dem Hauptrechner
unterhaltenen Zeitgeber widergespiegelt wird. Vorteilhaft vermeidet
die Verwendung eines geketteten oder anderen Prozesses oder Moduls, das
zwischen Abfrageoperationen ruhend bleiben kann, den Verarbeitungsaufwand
(z.B. Laden, Initialisierung, Kontextumschalten) in Verbindung mit
einem Modul, das jedes Mal, wenn es auszuführen ist, in einen Speicher
geladen werden muss. In einer alternativen Ausführungsform bildet die Abfragesoftware
jedoch eine Folge von programmierbaren Anweisungen, die jedes Mal,
wenn die Netzschnittstelle abzufragen ist, geladen und ausgeführt werden.
Mit anderen Worten, in dieser alternativen Ausführungsform endet die Abfragesoftware
nach jeder Abfrageoperation, statt einfach einen ausgesetzten Zustand zu
betreten.
-
Das
Abfragen kann beginnen, wenn ein bestimmter Netzverkehrspegel erkannt
wird (z.B. es werden fünfzig
Pakete in einer einzigen Unterbrechungsbedienung verarbeitet). Als
eine Alternative kann das Abfragen beginnen, wenn die Belastung
eines Hauptrechnerprozessors einen bestimmten Pegel erreicht (z.B.
neunzig Prozent Ausnutzung).
-
Wie
oben beschrieben, kann die Abfragesoftware von der Ausführung oder
Vollendung der Ausführung
abgehalten werden. Wenn ein Zähler
eines Unterbrechungs-Modulators seinen Endwert erreicht, bevor die
Abfragesoftwore fertig werden und den Zähler zurücksetzen kann, können Unterbrechungen
freigegeben werden. Unterbrechungen können dann wiederholt gesperrt
und freigegeben werden (wie im vorhergehenden Abschnitt beschrieben), wenn
die Abfragesoftware unfähig
zur Ausführung bleibt.
Wenn die Abfragesoftware wieder anläuft, kann sie das Abfragen
wieder aufnehmen – insbesondere
wenn der Netzverkehrspegel noch stark ist. Alternativ kann die Netzschnittstelle
von einer Abfrage-Betriebsart auf Unterbrechungs-Modulation übergehen,
wenn der Netzverkehrspegel gefallen ist. Dieser Übergang kann immer dann stattfinden, wenn
der Verkehrspegel fällt,
nicht nur nachdem die Abfragesoftware blockiert ist. Alternativ
kann ein Übergang von
Abfrage-Betriebsart zurück
auf Unterbrechungs-Modulation
stattfinden, wenn die Software eine vorbestimmte Anzahl von Malen
abfragt, ohne Pakete (oder weniger als eine Schwellenzahl von Paketen)
wiederzugewinnen. Als Teil eines Übergangs zwischen verschiedenen
Betriebsarten können
verschiedene Zeit- und/oder Paketschwellen aus verschiedenen Schwellenregistern
verwendet werden, um die Zeit- und Paketzähler zu initialisieren.
-
4 ist ein Zustandsdiagramm,
das den Betrieb einer Ausführungsform
der Erfindung zur Durchführung
von Abfrageoperationen mit oder ohne Unterbrechungs-Modulation zeigt.
In 4 sind zwei primäre Zustände dargestellt – Zustand
Unterbrechung gesperrt 402 und Zustand Unterbrechung freigegeben 404.
Es ist beabsichtigt, dass der Zustand gesperrt 402 der
Grundzustand für
eine Netzschnittstelle ist, die eine sehr hohe Zahl von Paketen
empfängt.
-
Innerhalb
des Zustands Unterbrechung gesperrt 402 gibt es drei Teilzustände, Abfragezustand 406,
Zählerinitialisierungszustand 408 und
Zählerherunterzählzustand 410.
Während
des Abfragezustands 406 wird eine Netzschnittstelle abgefragt,
um zu ermitteln, ob seit der vorhergehenden Abfrage (oder Unterbrechung)
Pakete übertragen
wurden. In einem weiter unten detailliert beschriebenen Verfahren
wird ein Zustandsregister der Netzschnittstelle durch ein auf einem
Hauptrechner arbeitendes Abfragemodul geprüft. Anschaulich weist das Zustandsregister
einen oder mehrere Anzeiger auf, die in Abhängigkeit von einem Ereignis
oder einer Bedingung innerhalb der Netzschnittstelle ihren Zustand ändern. Einer
dieser Anzeiger kann die Übertragung
eines Pakets widerspiegeln.
-
Im
Zählerinitialisierungszustand 408 werden ein
oder mehrere Zähler
initialisiert (z.B. auf ihre Schwellen- oder anderen Anfangswerte
gesetzt). Wie vorher beschrieben, kann der Unterbrechungs-Modulator
einen Zeitzähler
und/oder einen Paketzähler
verwenden, um zu ermitteln, wann Unterbrechungen freizugeben sind
(z.B. im Falle, dass Abfragen blockiert ist). Außerdem kann die Abfragesoftware
oder ein Hauptrechner einen separaten Abfragezeitgeber unterhalten,
um zu ermitteln, wann die Netzschnittstelle abzufragen ist.
-
Im
Zählerherunterzählzustand 410 werden ein
Zeit- und/oder Paketzähler
auf null herunterzählen
gelassen. Zusätzlich
kann ein oben beschriebener Abfragezeitgeber für das Timing jeder Abfrageoperation
hochzählen
oder herumerzählen
gelassen werden (z.B. je nachdem, ob er auf einen Schwellenwert
oder einen Anfangswert wie z.B. null gesetzt ist). In der vorliegend
beschriebenen Ausführungsform werden
Zeit- und Paketzähler
zwar als herunterzählend
(z.B. in einer negativen Richtung von einem Schwellenwert auf null
hochzählend)
beschrieben, in einer alternativen Realisierung werden die Zähler aber
auf Anfangswerte (z.B. null) gesetzt und auf ihre Schwellenwerte
hochzählen
gelassen.
-
In 4 sind eine Anzahl von Übergängen zum
Wechseln von einem Zustand zum anderen gezeigt. Ein Übergang 412 von
Abfragezustand 406 zum Zählerinitialisierungszustand 408 kann
stattfinden, nachdem die Netzschnittstelle abgefragt wurde. Der Übergang 412 kann
auch gestartet werden, wenn ein Abfragemodul während einer Abfrage einen Zähler rücksetzen
muss. Zum Beispiel muss während
einer Abfrage möglicherweise
eine große
Zahl von Paketen verarbeitet werden, was relativ viel Prozessorzeit
benötigt.
Zur Abwehr einer Unterbrechung, die nach Ablauf eines Zählers ausgegeben würde, kann
das Abfragemodul seinen Betrieb lange genug aussetzen, um einen
oder mehrere Zähler
neu zu initialisieren.
-
Nach
Rücksetzen
eines Zählers
wird über
einen Übergang 414 der
Zählerherunterzählzustand 410 betreten.
Der Übergang 414 kann
ein Ereignis (z.B. Empfang eines Pakets) darstellen, das die Notwendigkeit
signalisiert, mit der Zählung
von Zeit oder Paketen zu beginnen, um entweder Unterbrechungen freizugeben
oder die Netzschnittstelle erneut abzufragen. Anschaulich findet
der Übergang 414 jedoch
bei der Neuinitialisierung der Zähler
automatisch statt.
-
Vom
Zählerherunterzählzustand 410 kann der
Abfragezustand 406 betreten werden, da der Schwellenwert
eines Abfragezeitgeber abläuft
oder dieser seinen Schwellenwert erreicht, wie durch den Übergang 416 dargestellt.
Die Schwelle eines Abfragezeitgebers ist vorzugsweise niedriger
als die Schwelle eines Zeitgebers des Unterbrechungs-Modulators, um den
Vorrang einer Abfrageoperation gegenüber der Erzeugung einer Unterbrechung
widerzuspiegeln. Wenn jedoch der Zeitzähler abläuft oder seinen Endwert erreicht,
bevor eine Abfrageoperation vollendet werden kann (wonach der Zeitzähler neu
initialisiert wird), stellt ein Übergang 418 den
Eintritt in einen Zustand Unterbrechung freigegeben 418 vom
Zählerherunterzählzustand 410 aus
dar. Der Übergang 418 kann
auch durch den Empfang einer Schwellen-Paketzahl gestartet werden.
Vom Zustand Unterbrechung freigegeben 404 wird der Zählerinitialisierungszustand 408 betreten,
nachdem eine Unterbrechung von einem Hauptprozessor bedient wurde, wie
durch einen Übergang 420 angezeigt.
-
Der
Abfragezustand 406 kann über einen Übergang direkt zum Zustand
Unterbrechung freigegeben 404 weitergehen, wenn die Abfragesoftware blockiert
oder anders verhindert ist, ihre Ausführung zu vollenden. Um diesen Übergang
freizugeben, können
die von einem Unterbrechungs-Modulator verwendeten Zeit- und/oder
Paketzähler
das Herunterzählen
während
des Abfragezustands 406 fortsetzen. Der Übergang 422 kann
dem Übergang 418 daher
sehr ähnlich
sein, außer
für den
Zustand, von dem aus der Übergang
stattfindet.
-
Schließlich kann
in einer Ausführungsform der
Erfindung aufgrund der Ausgabe einer Unterbrechung in Verbindung
mit einem anderen Ereignis als dem Empfang eines Pakets von einem
Netz (wie z.B. einem Fehler) ein Übergang 424 vom Zählerherunterzählzustand 410 zum
Zählerinitialisierungszustand 408 stattfinden.
-
In
einer Ausführungsform
der vorliegenden Erfindung umfasst eine Abfrageoperation eine Prüfung eines
Zustandsregisters einer Netzschnittstelle. Wie oben erwähnt und
wie dem Fachmann bekannt, kann eine Netzschnittstelle ein Zustandsregister
oder eine andere Datenstruktur verwenden, um einen Zustand oder
eine Aktion innerhalb der Schnittstelle zu signalisieren. Ein Zustandsregister
kann zum Beispiel eine Anzahl von Zustandsbits oder Anzeigern in Bezug
auf den Empfang und/oder die Übertragung von
Paketen durch die Netzschnittstelle umfassen. Beispielhafte Anzeiger
in Bezug auf Paketempfang umfassen einen Paketübertragungsanzeiger, einen Überlaufanzeiger
(z.B. um anzuzeigen, dass ein Paket fallengelassen wurde), einen
oder mehrere Überschlaganzeiger
(z.B. um das Überschlagen
von Zählern
anzuzeigen, die Ereignisse wie z.B. Paketempfang, CRC-Fehler und
Längenfehler
verfolgen), usw. Beispielhafte Anzeiger in Bezug auf Paketübertragung
umfassen einen Paketsendeanzeiger, einen Unterlaufanzeiger (z.B.
um anzuzeigen, dass ein unvollständiges
Paket fallengelassen wurde), einen Paketübergrößeanzeiger und einen oder mehrere Überschlaganzeiger (z.B.
um das Überschlagen
von Zählern
anzuzeigen, die Sendefehler verfolgen). Jeder Anzeiger ist im Allgemeinen
unter normalen Umständen
und während
Inaktivität
der NICs in einem ersten Zustand (z.B. speichert er einen ersten
Wert wie z.B. null) und kann bei Initialisierung der Netzschnittstelle oder
einem anderen Ereignis in den ersten Zustand zurückversetzt werden. Ein Anzeiger
kann als Antwort auf ein bestimmtes Ereignis oder eine bestimmte
Bedingung in Verbindung mit dem Anzeiger in einen zweiten Zustand
versetzt werden (z.B. Speichern eines zweiten Wertes wie z.B. eins).
-
Zum
Beispiel kann ein Paketübertragungsanzeiger
in seinen zweiten Zustand versetzt werden, wenn ein Paket von einem
Netz empfangen wird und an einen Hauptrechner übertragen wird. Ein Paketsendeanzeiger
kann in einen zweiten Zustand versetzt werden, wenn ein Paket von
der Netzschnittstelle an das Netz gesendet wird. Noch ein Bit oder Anzeiger
kann als Antwort auf eine Fehlerbedingung (z.B. Empfang eines defekten
Pakets, Fehler beim Empfang eines Pakets) in seinen zweiten Zustand versetzt
werden.
-
Wenn
ein Anzeiger in einem Zustandsregister in seinen zweiten Zustand
versetzt wird, kann eine Unterbrechung automatisch an einen Hauptprozessor
ausgegeben werden. Danach wird vom Hauptprozessor eine Unterbrechungs-Dienströutine (ISR) ausgeführt, um
die Ursache der Unterbrechung zu ermitteln (z.B. Paketübertragung,
Paketsendung, Fehler). Die ISR kann dann als Antwort auf die Unterbrechung
eine Aufgabe durchführen
(z.B. verarbeite ein empfangenes Paket über ihren Protokollstapel,
führe eine
Fehlerbeseitigungsprozedur durch). In einer typischen Realisierung
eines Zustandsregisters wird ein Anzeiger, der die Erzeugung einer
Unterbrechung verursacht, durch die Unterbrechungs-Dienstroutine in
seinen ersten Zustand zurückversetzt.
Weiterhin werden alle Zustandsanzeiger, nicht nur der, der die Unterbrechung
verursacht hat, im Allgemeinen gelöscht (z.B. in ihren ersten
Zustand zurückversetzt), wenn
die ISR das Zustandsregister liest.
-
Für eine Netzschnittstelle,
die in einer Umgebung mit starkem Verkehr arbeitet, kann ein Problem in
Verbindung mit der Beanspruchung von Unterbrechungen auftauchen.
Speziell kann eine als Antwort auf eine Unterbrechung (z.B. Signalisierung
der Übertragung
eines Pakets) aufgerufene Unterbrechungs-Dienstroutine finden, dass
das Zustandsregister bereits gelöscht
wurde. Die ISR kann somit nicht ermitteln, weshalb die Unterbrechung
ausgegeben wurde. Als Folge kann es scheinen, dass die ISR fehlerhaft
aufgerufen wurde, und dies kann als ein schwerwiegender Fehler im
Betrieb der Netzschnittstelle interpretiert werden. Die Netzschnittstelle
kann dann eine Neuinitialisierung oder eine Diagnose-Routine erfahren,
in der Hoffnung, das angenommene Problem zu erledigen. Dies hat
natürlich
eine schädliche
Wirkung auf die Verarbeitung von Netzverkehr und den Betrieb der
Netzschnittstelle.
-
Eine
Ausführungsform
der vorliegenden Erfindung, die Abfragen verwendet, ist möglicherweise nicht
gegen dieses Problem immun. Insbesondere sieht die Abfragesoftware
in einer vorliegenden Ausführungsform
nach der Übertragung
eines Pakets, indem sie einen Paketübertragungsanzeiger eines Zustandsregisters
prüft.
Da die Abfragesoftware das Zustandsregister oder den Paketübertragungsanzeiger
in Verbindung mit dieser Prüfung
löschen
kann, ist eine als Antwort auf eine durch die Übertragung des Pakets verursachte
Unterbrechung aufgerufene ISR möglicherweise
zu spät
dran, um die Ursache der Unterbrechung zu ermitteln, was zu irgendeiner Form
von Fehlerbeseitigung führt.
-
In
einer Ausführungsform
der Erfindung kann dieses Problem mit "Unterbrechungsbeanspruchung" angegangen werden,
indem dem Zustandsregister ein zusätzliches Bit oder anderer Anzeiger (z.B.
ein Rückmeldungsanzeiger)
hinzugefügt
wird. 5 zeigt ein zur
Realisierung in dieser Ausführungsform
geeignetes Zustandsregister.
-
In 5 enthält das Zustandsregister 502 einer
Netzschnittstelle einen Paketübertragungsanzeiger 504,
einen Paketsendeanzeiger 506, einen ersten Fehleranzeiger 508 und
einen ISR-Anzeiger 514. Andere unbenannte Anzeiger im Zustandsregister 502 entsprechen
anderen Bedingungen oder Ereignissen, auf die die Netzschnittstelle
trifft. Anschaulich wird jeder Anzeiger (außer möglicherweise der ISR-Anzeiger 514)
bei Initialisierung und nach jeder Abfrageoperation in einen ersten
Zustand (z.B. durch den Wert null gekennzeichnet) versetzt und kann
als Antwort auf deren entsprechende Aktion oder Bedingung in einen
zweiten Zustand versetzt werden. Jeder Anzeiger im Zustandsregister
(außer
dem Anzeiger 514) ist mit dem Eingangsende eines ODER-Gliedes 510 verbunden.
Anschaulich, wenn einer der mit dem ODER-Glied 510 verbunden
Anzeiger in einen zweiten Zustand (z.B. durch den Wert eins gekennzeichnet)
eintritt, wird eine Unterbrechung auf der Unterbrechungsleitung 512 erzeugt und
an einen Hauptprozessor oder ein Unterbrechungssteuerprogramm gesendet.
-
Wie
oben beschrieben, wird eine als Antwort auf eine Unterbrechung aufgerufene
ISR versuchen, das Zustandsregister 502 zu lesen, um den
Grund für die
Unterbrechung zu ermitteln. Jedoch löscht ein auf einem Hauptrechner
arbeitendes Abfragemodul möglicherweise
das Zustandsregister in Verbindung mit einer Abfrageoperation. Wenn
das Abfragemodul das Zustandsregister löscht, bevor die ISR das Zustandsregister
lesen und ermitteln kann, weshalb eine Unterbrechung ausgegeben
wurde, wird möglicherweise
eine zeitaufwändige
Fehlerbeseitigungsprozedur aufgerufen.
-
In
der gezeigten Ausführungsform
wurde daher der ISR-Anzeiger 514 dem Zustandsregister 502 hinzugefügt und mit
der Unterbrechungsleitung 512 verbunden. Anschaulich bleibt
der ISR-Anzeiger 514 in einem ersten Zustand (z.B. durch
den Wert null gekennzeichnet), bis eine Unterbrechung auf der Unterbrechungsleitung 512 ausgeben
wird. In diesem Zeitpunkt wechselt der ISR-Anzeiger 514 in
einen zweiten Zustand (z.B. durch den Wert eins gekennzeichnet).
Ein ISR-Anzeiger kann somit als ein Rückmeldungsanzeiger oder summarischer
Anzeiger angesehen werden, um widerzuspiegeln, wann eine Unterbrechung
aufgrund einer Zustandsänderung
einer Komponente des Zustandsregisters 502 erzeugt worden
ist. Bedeutsam ist jedoch, dass das ODER-Glied 510 nicht
aktiviert wird, wenn der ISR-Anzeiger in seinen zweiten Zustand
eintritt.
-
Während des
Abfragens in der vorliegend beschriebenen Ausführungsform der Erfindung wird das
Zustandsregister 502 durch ein Abfragemodul geprüft, um zu
ermitteln, ob ein Paket von der Netzschnittstelle übertragen
worden ist. Wenn die Software das Register prüft, kann sie ein oder mehrere
Zustandsregister löschen
oder auf Null stellen (z.B. in ihren ersten Zustand zurückbringen),
genau wie es eine ISR tun würde.
Falls eine Unterbrechung erzeugt wurde (z.B. wegen einer durch den
Fehleranzeiger 508 angezeigten Fehlerbedingung), kurz bevor
die Schnittstelle abgefragt wird, kann die Abfragesoftware das Zustandsregister
löschen,
bevor ein Unterbrechungssteuerprogramm den Grund für seinen
Aufruf ermitteln kann. In der gezeigten Ausführungsform der Erfindung kann
das Unterbrechungssteuerprogramm daher den ISR-Anzeiger 514 prüfen und
somit ermitteln, dass es eine gültige
Unterbrechung gab und dass es die Netzschnittstelle nicht neu initialisieren
muss oder eine Fehlerbeseitigungsprozedur durchführen muss. Nach Prüfung des
Registers wird die ISR typischerweise das Zustandsregister löschen, möglicherweise
einschließlich
des ISR-Anzeigers 514.
-
In
einer Ausführungsform
der Erfindung ist das Abfragemodul speziell konfiguriert, das Löschen des
ISR-Anzeigers 514 (z.B. ihn auf null zurückzubringen)
beim Abfragen des Zustandsregisters 502 zu vermeiden. Anschaulich
wird der ISR-Anzeiger 514 über einen Schreibbetrieb vom
Hauptrechner gelöscht,
der als Antwort auf ein bestimmtes Ereignis durchgeführt werden
kann, wie z.B. den Aufruf einer Unterbrechungs-Dienstroutine als
Antwort auf eine Unterbrechung. Das Abfragemodul kann somit andere
Anzeiger im Zustandsregister während
einer Abfrage löschen,
der ISR-Anzeiger wird aber separat gelöscht. In einer anderen Ausführungsform
des Betriebs, die unmittelbar nachfolgend in Verbindung mit 6 erörtert wird, werden Anzeiger
innerhalb des Zustandsregisters 502 durch Verwendung eines
virtuellen- oder Alias-Zustandsregisters selektiv gelöscht. In
dieser Realisierung ist eine separate Schreiboperation zum Löschen eines
ISR-Anzeigers unnötig.
-
6 zeigt eine Verbesserung
der in 5 gezeigten Ausführungsform
der Erfindung. In dieser Verbesserung ist dem Zustandsregister ein
Aliasregister zugeordnet. Das Aliasregister in der gezeigten Ausführungsform
ist im wesentlichen das Zustandsregister, es wird aber über eine
andere Adresse darauf zugegriffen. Somit spiegelt das Aliasregister
das Zustandsregister oder ahmt es nach, indem jedes Mal, wenn ein
Bit oder Anzeiger im Zustandsregister gesetzt oder gelöscht wird,
das entsprechende Bit oder der entsprechende Anzeiger im Aliasregister
in denselben Zustand versetzt wird. Das. Löschen eines Anzeigers im Aliasregister
(z.B. durch Löschen des
Aliasregisters) löscht
jedoch nicht notwendigerweise den entsprechenden Zustandsregister-Anzeiger.
Statt dessen wird eine Maske benutzt, damit Zustandsregister-Anzeiger
selektiv gelöscht
werden können.
Somit ist in einer besonderen Ausführungsform der Erfindung das
Aliasregister ein "virtuelles" Register, das einen
alternativen, doch verfolgbaren Pfad zum Zustandsregister bereitstellt.
-
Statt
das Zustandsregister zu prüfen
(z.B. zu lesen), um zu ermitteln, ob ein Paket angekommen, ist,
prüft in
der gezeigten Ausführungsform
der Erfindung die Abfragesoftware das Aliasregister. Jedes Mal,
wenn das Aliasregister von der Abfragesoftware geprüft wird,
können
ein oder mehrere Aliasregister-Anzeiger in ihren ersten Zustand
zurückversetzt werden
(z.B. wird das Aliasregister gelöscht,
wenn es gelesen wird).
-
Zusätzlich wird
eine Maske angewendet, um zu ermitteln, welche Zustandsregister-Anzeiger gelöscht werden,
wenn das Aliasregister gelöscht
wird. Anschaulich hat die Maske einen Eintrag für jedes Bit oder jeden Anzeiger
des Zustandsregisters – und
hat somit auch einen Eintrag für
jeden Anzeiger im Aliasregister. Der in jedem Maskeneintrag gespeicherte Wert
zeigt an, ob der entsprechende Zustandsregister-Anzeiger zu löschen ist
(z.B. auf den Wert null zurückzubringen
ist) oder nicht, wenn das zugeordnete Aliasregister gelöscht wird.
Ein erster Wert (z.B. eins) in einem Maskeneintrag zeigt an, dass
das entsprechende Zustandsregister-Bit zu löschen ist; ein zweiter Wert
(z.B. null) zeigt an, dass es nicht zu löschen ist.
-
Der
Fachmann erkennt den Vorzug, ein Aliasregister zu verwenden und
es von dem Zustandsregister zu maskieren. Insbesondere muss die
Abfragesoftware, die das Aliasregister liest, als Folge dieser Konfiguration
nur konfiguriert sein, Ereignisse in Verbindung mit den Zustandsregister-Anzeigern
zu verarbeiten, die sie löscht.
Wenn zum Beispiel die Abfragesoftware nur Paketübertragungsereignisse verarbeitet
und daher nur einen Paketübertragungs-Anzeiger
im Zustandsregister löscht,
muss die Software nicht konfiguriert sein, andere Ereignisse oder
Bedingungen zu verarbeiten. Im Gegensatz dazu wird in einer Ausführungsform
der Erfindung ohne ein Aliasregister die Abfragesoftware alle Zustandsregister-Anzeiger
löschen
und muss daher möglicherweise
im Stande sein, alle durch diese Anzeiger gemeldeten zugeordneten
Fehler oder Bedingungen zu verarbeiten.
-
In 6, auf die nun Bezug genommen
wird, ist das Zustandsregister 520 konfiguriert wie in
Verbindung mit 5 beschrieben.
Der ISR-Anzeiger 514 ist in der vorliegend gezeigten Ausführungsform jedoch
optional.
-
Ein
Aliasregister 602 ist dem Zustandsregister 502 größenmäßig äquivalent,
mit der möglichen Ausnahme,
dass ein Alias-ISR-Anzeiger 614, ein Gegenstück zum ISR-Anzeiger 514,
weggelassen werden kann. Somit entsprechen ein Paketübertragungsanzeiger 604,
ein Paketsendeanzeiger 606 und ein erster Fehleranzeiger 608 im
Aliasregister 602 ähnlichen
Einträgen
im Zustandsregister 502.
-
Obwohl
jeder Anzeiger im Aliasregister 602 immer dann, wenn sich
sein Gegenstück
im Zustandsregister 502 ändert, seinen Zustand ändert, um
zu dem Gegenstück
zu pas sen, filtert eine Maske 610 die umgekehrte Aktion,
wenn das Aliasregister 602 gelöscht wird. Insbesondere, wenn
ein oder mehrere Aliasanzeiger im Aliasregister 602 gelöscht werden
(z.B. als Antwort darauf, abgefragt zu werden), werden nur die spezifizierten
Anzeiger im Zustandsregister 502 gelöscht. In der gezeigten Realisierung
speichert die Maske 610 eine eins für jeden Anzeiger im Zustandsregister,
der mit dem Aliasregister löscht.
Wenn somit in 6 das
Aliasregister 602 gelöscht
wird (z.B. wenn es vom Abfragemodul gelesen wird), werden nur der
Paketübertragungsanzeiger 504 und
der Paketsendeanzeiger 506 im Zustandsregister 502 gelöscht. Die übrigen Anzeiger behalten
ihre gegenwärtigen
Zustände.
-
In
einer Ausführungsform,
in der ein ISR-Anzeiger zusätzlich
zu einem Aliasregister und einer Maske benutzt wird, wird der dem
ISR-Anzeiger entsprechende Maskeneintrag einen Wert (z.B. null) speichern,
der anzeigt, dass der ISR-Anzeiger im Zustandsregister nicht zu
löschen
ist, wenn das Aliasregister gelöscht
wird.
-
Die
programmierbare Maske (die in einem Register oder einer anderen
Datenstruktur realisiert sein kann) kann mittels Software konfiguriert
sein, die auf dem Hauptrechner arbeitet. Insbesondere kann das Setzen
jedes Maskeneintrags in Übereinstimmung
mit den von der Software verarbeiten Aktionen ermittelt werden.
Zum Beispiel in einer Ausführungsform,
in der die Software nur "normale" Ereignisse – wie z.B.
die Übertragung
oder das Senden eines Pakets – verarbeitet,
kann die Maske konfiguriert sein, nur den oder die entsprechenden
Anzeiger in einem Zustandsregister zu löschen, wenn das Aliasregister gelesen
wird. In alternativen Ausführungsformen kann
die Abfragesoftware eigentlich jede Bedingung oder jedes Ereignis
in Verbindung mit einem Zustandsregister-Anzeiger verarbeiten.
-
Obwohl
in der gezeigten Ausführungsform das
Aliasregister 602 in 6 ein
virtuelles Register für
Zugriff auf das Zustandsregister 502 ist, kann beim Lesen
des Zustandsregisters ermittelt werden, ob direkt auf das Zustandsregister
zugegriffen wurde (d.h. als Zustandsregister 502) oder
indirekt (d.h. über
das Aliasregister 602). Wie der Fachmann erkennt, verrät die Prüfung der
dem Zugriff zugeordneten Adresse, ob direkt oder über seinen
Alias auf das Zustandsregister zugegriffen wird.
-
Anschaulich
wird während
starken Netzverkehrspegeln (z.B. wenn eine Abfrage- Betriebsart aktiv
ist) über
ein Aliasregister (z.B. Aliasadresse) auf das Zustandsregister zugegriffen.
Ansonsten kann direkt auf das Zustandsregister zugegriffen werden. Außerdem wurde
oben beschrieben, dass für
verschiedene Verkehrspegel verschiedene Schwellenwerte für Zeit-
und/oder Paketzähler
in einem Unterbrechungs-Modulator wünschenswert sein können. In
einer Ausführungsform
der Erfindung, in der ein Unterbrechungs-Modulator mehrere Zeit-
und/oder Paketschwellenwerte speichert (z.B. in separaten Schwellenregistern),
kann daher der Schwellenwert, der in einen Zähler geladen wird, danach ermittelt werden,
wie auf das Zustandsregister zugegriffen wird.
-
Insbesondere
kann während
eines weniger als starken Verkehrspegels (z.B. wenn weniger als ungefähr fünfzig Pakete
während
einer Unterbrechung verarbeitet werden) direkt auf das Zustandsregister 502 zugegriffen
werden. Jedes Mal, wenn es gelöscht
wird, wird ein erster Zeitschwellenwert und/oder Paketschwellenwert
in die Zeit- und Paketzähler
geladen. Wenn der Verkehr stark wird und ein Aliasregister realisiert
ist, wird jedes Mal, wenn das Aliasregister gelöscht wird, ein zweiter Zeitschwellenwert
und/oder Paketschwellenwert in die Zeit- und Paketzähler geladen.
-
7 ist ein Flussdiagramm,
das ein Verfahren zur Verwendung von Abfragen und Unterbrechungs-Modulation
zeigt, um die Erzeugung von Unterbrechungen durch eine Netzschnittstelle
zu unterdrücken,
ohne die Verarbeitung der von einem Netz empfangenen Pakete wesentlich
zu verzögern.
In der gezeigten Prozedur wechselt eine Netzschnittstelle von einer
Unterbrechungs-Betriebsart in eine Abfrage-Betriebsart. Ein Zustand 700 ist
ein Startzustand.
-
Im
Zustand 702 ist eine Unterbrechungs-Betriebsart aktiv.
In dieser Betriebsart werden Pakete von einem Netz als Antwort auf
von der Netzschnittstelle erzeugte Unterbrechungen von einem Hauptrechnerprozessor
verarbeitet. Die Geschwindigkeit, mit der Unterbrechungen erzeugt
werden, kann jedoch wie oben beschrieben moduliert werden. Wenn zum
Beispiel ein mäßiger Verkehrspegel
an der Netzschnittstelle empfangen wird, kann ein im vorhergehenden
Abschnitt beschriebenes Verfahren zur Unterbrechungs-Modulation
verwendet werden.
-
Im
Zustand 704 wird ermittelt, ob der Verkehrspegel oder die
Geschwindigkeit von Unterbrechungen oder ein anderes Verkehrsmaß anzeigt, dass
es effizienter wäre,
eine Abfrage-Betriebsart zu realisieren. Es kann zum Beispiel ermittelt
werden, dass die während
einer Unterbrechung verarbeitete Zahl von Paketen eine programmierbare
Schwelle (z.B. fünfzig) übersteigt.
Andere Kriterien, diese Ermittlung vorzunehmen, umfassen die Geschwindigkeit,
mit der Unterbrechungen von der Netzschnittstelle für zum Hauptprozessor übertragene
Pakete ausgegeben werden (z.B. ungefähr 10.000 pro Sekunde) oder
den Pegel der Prozessorausnutzung (z.B. ungefähr neunzig Prozent). Diese
Schwellen können
auf einer Echtzeit- oder Augenblicksbasis gemessen werden oder können über eine
Zeitspanne oder eine Zahl von Unterbrechungen gemittelt oder anders
kombiniert werden. Die gezeigte Prozedur kehrt zum Zustand 702 zurück, wenn
keine anwendbare Schwelle angetroffen wird.
-
Im
Zustand 706 wird eine Abfrage-Betriebsart gestartet. In
einer Ausführungsform
der Erfindung wird ein Abfragemodul durch einen Hauptrechnerprozessor
aktiviert oder zur Ausführung
geladen. Anschaulich befindet sich das Abfragemodul oder gekettete
Programm im Hauptrechnerspeicher und wird, wie nachfolgend beschrieben,
periodisch aktiviert, um die Netzschnittstelle abzufragen, um zu
ermitteln, ob Pakete von der Netzschnittstelle empfangen worden
sind. Wenn ja, verarbeitet das Modul die Pakete, bevor es in eine
Aussetz-Betriebsart zurückkehrt.
-
Im
Zustand 708 werden Schwellen für einen oder mehrere Unterbrechungs-Modulator-Zähler (z.B. einen Zeit- und/oder
Paketzähler)
gesetzt oder von niedrigeren Werten aus vergrößert, die während Unterbrechungs-Modulation
verwendet werden. Die Zähler
werden aktiviert und zählen
dann herunter oder hoch, wie vorher beschrieben. Durch Vergrößern der
Schwellen werden Unterbrechungen, die möglicherweise vom Unterbrechungs-Modulator
ausgegeben werden, mit geringerer Frequenz ausgegeben, wenn überhaupt.
Verzögern
von Unterbrechungen erlaubt es dem Abfragemodul, seine Abfrage und Paketverarbeitung
durchzuführen,
und erlaubt es einem Hauptprozessor, den mit der Bedienung einer Unterbrechung
verbundenen Aufwand zu vermeiden.
-
In
dieser Ausführungsform
kann ein Unterbrechungs-Modulator mehrere Schwellenwerte in mehreren
Registern für
einen Zeit- und/oder Paketzähler
speichern, um die Modifizierung von Zählerschwellen zu erleichtern.
Mit mehreren Schwellenregistern können die Zähler leicht neu initialisiert
oder umgeschaltet werden, um verschiedene Schwellenwerte zu verwenden.
Insbesondere, im Betrieb bei mäßigem Netzverkehrs pegel
(z.B. ohne Verwendung eines Aliasregisters) kann ein Paket- oder
Zeitzähler jedes
Mal, wenn ein Zustandsregister gelöscht wird (z.B. wegen einer
Unterbrechung), auf eine erste Schwelle neu initialisiert werden.
Bei Betrieb in einer Umgebung mit stärkerem Verkehr, gekennzeichnet durch
die Verwendung von Abfragen und möglicherweise eines Aliasregisters,
kann ein Zähler
jedoch auf eine zweite Schwelle neu initialisiert werden, wenn das
Aliasregister von der Abfragesoftware gelesen wird.
-
Im
Zustand 710 wird ein Zeit- oder Paketzähler geprüft, um zu ermitteln, ob er
abgelaufen ist oder seine Grenze (z.B. null) erreicht hat. Wenn
ja, wird im Zustand 712 eine Unterbrechung ausgegeben,
um einen Hauptprozessor zu informieren, dass ein Paket seine Aufmerksamkeit
erwartet, falls seit der letzten Abfrage oder Unterbrechung ein
Paket übertragen wurde.
Die gezeigte Prozedur endet mit einem Endzustand 718.
-
Ist
im Zustand 710 kein Zähler
abgelaufen, wird im Zustand 714 ein Abfragezeitgeber geprüft. Falls
der Abfragezeitgeber abgelaufen ist oder anzeigt, dass es Zeit für eine Abfrageoperation
ist, fragt das Abfragemodul im Zustand 716 die Netzschnittstelle
ab und verarbeitet wartende Pakete. Der Abfragezeitgeber kann von
dem Zeitzähler
eines Unterbrechungs-Modulators getrennt oder nicht getrennt sein.
-
Ein
Zustand 710 zeigt, dass, falls ein Unterbrechungs-Modulator
einen Schwellenwert erreicht, die Netzschnittstelle nicht weiter
auf eine Abfrageoperation wartet. In einer alternativen Ausführungsform
kann ein Abfragezeitgeber häufiger
als ein Paket- oder Zeitzähler
geprüft
werden. Mit anderen Worten, die Zustände 710 bis 712 und 714 bis 716 können umgekehrt
werden, so dass die Zähler
des Unterbrechungs-Modulators nur geprüft werden, wenn ermittelt wird,
dass es nicht Zeit für
eine Abfrageoperation ist.
-
Nach
dem Zustand 712 oder Zustand 716 endet die dargestellte
Prozedur im Zustand 718. Die dargestellte Prozedur zeigt
somit nur eine Abfrage oder Unterbrechung. In einer Ausführungsform
der Erfindung wird jedoch der Endzustand 718 durch eine
Prüfung
ersetzt, ob eine Unterbrechungs-Betriebsart wieder aufzunehmen ist.
Wenn ja, können Zählerschwellen
zurückgesetzt
werden (z.B. vermindert – möglicherweise
auf in verschiedenen Schwellenregistern festgehaltene Werte) und
kann die Prozedur in den Zustand 702 zurückversetzt
werden. Wenn nein, kehrt die Prozedur zum Zustand 710 oder,
wenn ein Zähler
reguliert werden muss, zum Zustand 708 zurück. Wie
oben beschrieben, kann die Prüfung,
um zu ermitteln, ob eine Unterbrechungs-Betriebsart wieder aufzunehmen
ist, mit sich bringen, den Netzverkehrspegel, die Geschwindigkeit
von Paketankunft oder -übertragung,
die Zahl der während
einer Unterbrechung verarbeiteten Pakete, den Pegel der Prozessorausnutzung
oder ein anderes Maß zu
prüfen.
Insbesondere, wenn die Netzschnittstelle eine vorbestimmte Anzahl
von Malen abgefragt wird, ohne die Übertragung eines Pakets zu erkennen,
kann eine Unterbrechungs-Betriebsart angenommen werden.
-
Zur
Realisierung der oben beschriebenen Ausführungsformen erfordert die
auf einem Hauptrechner arbeitende Software (z.B. ein Gerätetreiber) möglicherweise
eine Modifizierung. Insbesondere kann die Software geändert werden,
einen Zeitgeber zu unterhalten, um zu ermitteln, wann die Software die
Netzschnittstelle abzufragen hat. Zusätzlich kann die Software modifiziert
werden, ein Aliasregister statt eines Zustandsregisters zu prüfen (und
zu löschen).
-
Beim
Abfragen in einer Umgebung mit starkem Netzverkehr hat die Software
möglicherweise
jedes Mal, wenn sie das Zustandsregister oder Aliasregister einer
Netzschnittstelle prüft,
viele Pakete zu verarbeiten. Um zu verhindern, dass der Zähler eines Unterbrechungs-Modulators
während
der Verarbeitung der Pakete seine Schwelle erreicht, kann die Abfragesoftware
den Betrieb vorübergehend
innehalten, aussetzen oder unterbrechen, um den oder die Zähler neu
zu initialisieren. Zum Beispiel, wenn ein Zeitzähler eines Unterbrechungs-Modulators
auf eine Millisekunde gesetzt ist, wird die Abfragesoftware sicherzustellen
versuchen, dass sie den Zeitzähler weniger
als eine Millisekunde nachdem er zuletzt neu initialisiert wurde
neu initialisiert. Die Abfragesoftware kann den Zeitzähler, ihren
eigenen Zähler
oder einen anderen Zähler
oder ein Taktsignal prüfen,
um zu ermitteln, wann sie einen Zähler neu zu initialisieren hat.
-
Anschaulich
wird die Schwelle für
einen Zeitzähler
eines Unterbrechungs-Modulators zumindest zum Teil durch die Zeit
ermittelt, die die Abfragesoftware erwartungsgemäß braucht, um eine erwartete Verkehrsmenge
zu verarbeiten. Die Zeitzählerschwelle
und die Frequenz des Abfragens können auch
durch die Geschwindigkeit eines Hauptrechnerprozessors beeinflusst
sein.
-
In
einer Ausführungsform
der Erfindung, in der ein Unterbrechungs-Modulator benutzt wird,
um die Zahl der an einen Hauptprozessor ausgegebenen Unterbrechungen
zu steuern, kann dem Zustandsregister eine Unterbrechungsmaske zugeordnet
sein. Eine Unterbrechungsmaske unterscheidet sich von der vorher
beschriebenen Aliasregister-Maske.
Insbesondere kann eine Unterbrechungsmaske einen Eintrag für jeden
Zustandsregister-Anzeiger enthalten, und der Wert jedes Eintrags
zeigt an, ob eine Unterbrechung erzeugt wird oder nicht, wenn der
Anzeiger von einem ersten Zustand in einen zweiten Zustand wechselt.
Daher kann man sich eine Unterbrechungsmaske logisch an einer Stelle
zwischen dem Zustandsregister 502 und der ODER-Glied 510 in 5 vorstellen. Je nach der
bestimmten Betriebsumgebung kann in den oben beschriebenen Ausführungsformen
der Erfindung eine Unterbrechungsmaske verwendet werden oder nicht.
-
Sun,
Sun Microsystems, SPARC und Solarris sind Marken oder eingetragene
Marken der Fa. Sun Microsystems in den Vereinigten Saaten und anderen
Ländern.
-
Die
vorhergehenden Beschreibungen von Ausführungsformen der Erfindung
wurden nur zu Zwecken der Darstellung und Beschreibung gegeben.
Sie sollen nicht erschöpfend
sein oder die Erfindung auf die offenbarten Formen beschränken. Für den Fachmann
sind viele Modifizierungen und Veränderungen ersichtlich. Dementsprechend
soll die obige Offenbarung die Erfindung nicht beschränken; der Schutzbereich
der Erfindung wird durch die beigefügten Ansprüche definiert.