DE60009882T2 - Unterbrechungsmodulator und Verfahren zum Steuern der Erzeugung von Unterbrechungen - Google Patents

Unterbrechungsmodulator und Verfahren zum Steuern der Erzeugung von Unterbrechungen Download PDF

Info

Publication number
DE60009882T2
DE60009882T2 DE60009882T DE60009882T DE60009882T2 DE 60009882 T2 DE60009882 T2 DE 60009882T2 DE 60009882 T DE60009882 T DE 60009882T DE 60009882 T DE60009882 T DE 60009882T DE 60009882 T2 DE60009882 T2 DE 60009882T2
Authority
DE
Germany
Prior art keywords
state
packet
interrupt
indicator
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60009882T
Other languages
English (en)
Other versions
DE60009882D1 (de
Inventor
Denton Gentry
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE60009882D1 publication Critical patent/DE60009882D1/de
Publication of DE60009882T2 publication Critical patent/DE60009882T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet

Description

  • 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.

Claims (35)

  1. Verfahren zum Steuern der Erzeugung von Unterbrechungen von einer Kommunikationsvorrichtung, bei dem eine Kommunikationsvorrichtung in einer Unterbrechungs-Betriebsart betrieben (702) wird, bis eine Informationsübertragungsgeschwindigkeit von der Kommunikationsvorrichtung einen ersten Pegel erreicht, wobei ein Hauptrechner eine Übertragung eines ersten Informationspakets in der Unterbrechungs-Betriebsart durch Empfang einer von der Kommunikationsvorrichtung erzeugten Unterbrechung identifiziert, die Kommunikationsvorrichtung in einer Abfrage-Betriebsart betrieben (706) wird, nachdem der erste Informationsübertragungspegel erkannt ist, wobei der Hauptrechner eine Übertragung eines zweiten Informationspakets in der Abfrage-Betriebsart durch Abfragen der Kommunikationsvorrichtung identifiziert, und die Kommunikationsvorrichtung in die Unterbrechungs-Betriebsart zurückgebracht wird, wenn sich eine Informationsübertragungsgeschwindigkeit auf einen zweiten Pegel vermindert.
  2. Verfahren nach Anspruch 1, das weiterhin umfasst, die Kommunikationsvorrichtung in die Unterbrechungs-Betriebsart zurückzubringen, wenn eine vorbestimmte Zeit verstreicht, ohne dass die Kommunikationsvorrichtung eine Abfrage von dem Hauptrechner empfängt.
  3. Verfahren nach Anspruch 1, das weiterhin umfasst, die Kommunikationsvorrichtung in die Unterbrechungs-Betriebsart zurückzubringen, wenn eine vorbestimmte Informationsmenge von der Kommunikationsvorrichtung übertragen wird, ohne dass die Kommunikationsvorrichtung eine Abfrage von dem Hauptrechner empfängt.
  4. Verfahren nach Anspruch 1, das weiterhin umfasst, die Kommunikationsvorrichtung in die Unterbrechungs-Betriebsart zurückzubringen, wenn die Kommunikationsvorrichtung eine vorbestimmte Anzahl von Abfragen empfängt, ohne die Übertragung eines Informationspakets zu erkennen.
  5. Verfahren nach Anspruch 1, bei dem der Betrieb (702) einer Kommunikationsvorrich tung in einer Unterbrechungs-Betriebsart umfasst, ein erstes Informationspaket von der Kommunikationsvorrichtung zu übertragen, eine erste paketübertragene Unterbrechung von der Kommunikationsvorrichtung an einen Hauptrechner zu übertragen, als Antwort auf eine Vervollständigung der Verarbeitung der ersten packetübertragenen Unterbrechung durch den Hauptrechner einen Zeitzähler (102) zu initialisieren (302), wobei der Zeitzähler konfiguriert ist, nach der Initialisierung über einen ersten Bereich von Zeitzählungen hochzuzählen, als Antwort auf die Vervollständigung der Verarbeitung der ersten paketübertragenen Unterbrechung durch den Hauptrechner einen Paketzähler (106) zu initialisieren (302), wobei der Paketzähler konfiguriert ist, nach der Initialisierung über einen ersten Bereich von Paketzählungen hochzuzählen, und, wenn entweder der Zeitzähler auf eine erste End-Zeitzählung hochgezählt hat oder der Paketzähler auf eine erste End-Paketzählung hochgezählt hat, als Antwort auf die Übertragung eines weiteren Pakets eine weitere paketübertragene Unterbrechung an den Hauptrechner auszugeben.
  6. Verfahren nach Anspruch 5, bei dem die Initialisierung (302) eines Zeitzählers (102) umfasst, den Zeitzähler auf eine erste Anfangs-Zeitzählung zu setzen.
  7. Verfahren nach Anspruch 6, bei dem die Initialisierung (302) eines Paketzählers (106) umfasst, den Paketzähler auf eine erste Anfangs-Paketzählung zu setzen.
  8. Verfahren nach Anspruch 5, bei dem der Betrieb (706) einer Kommunikationsvorrichtung in einer Abfrage-Betriebsart umfasst, ein oder mehrere von der Kommunikationsvorrichtung übertragene Pakete zu verarbeiten, und die Verarbeitung vor Vervollständigung der Verarbeitung einer Anzahl von seit einer früheren Abfrage von der Kommunikationsvorrichtung übertragenen Paketen auszusetzen, wobei die Aussetzung der Verarbeitung verhindert, dass der Zeitzähler auf die erste End-Zeitzählung hochzählt.
  9. Verfahren nach Anspruch 8, bei dem der Betrieb (706) einer Kommunikationsvorrich tung in einer Abfrage-Betriebsart weiterhin umfasst, den Zeitzähler neu zu initialisieren, bevor der Zeitzähler auf die erste End-Zeitzählung hochzählt.
  10. Verfahren nach Anspruch 5, bei dem der Betrieb (706) der Kommunikationsvorrichtung in einer Abfrage-Betriebsart umfasst, eine Abfrage von einem Abfragemodul zu empfangen, das auf dem Hauptrechner arbeitet, wobei die Abfrage eine Prüfung der Kommunikationsvorrichtung umfasst, um zu ermitteln, ob ein Informationspaket von der Kommunikationsvorrichtung übertragen worden ist, den Zeitzähler als Antwort auf die Abfrage neu zu initialisieren, wobei der Zeitzähler konfiguriert ist, nach der Neuinitialisierung über einen zweiten Bereich von Zeitzählungen hochzuzählen, und den Paketzähler als Antwort auf die Abfrage neu zu initialisieren, wobei der Paketzähler konfiguriert ist, nach der Neuinitialisierung über einen zweiten Bereich von Paketzählungen hochzuzählen.
  11. Verfahren nach Anspruch 10, bei dem der Betrieb (706) einer Kommunikationsvorrichtung in einer Abfrage-Betriebsart weiterhin umfasst, ein zweites Paket zu übertragen und, wenn entweder der Zeitzähler auf eine zweite End-Zeitzählung hochgezählt hat oder der Paketzähler auf eine zweite End-Paketzählung hochgezählt hat, als Antwort auf die Übertragung des zweiten Pakets eine zweite paketübertragene Unterbrechung an den Hauptrechner auszugeben.
  12. Verfahren nach Anspruch 10, bei dem die Initialisierung (302) des Zeitzählers (102) als Antwort auf die Abfrage umfasst, den Zeitzähler auf eine zweite Anfangs-Zeitzählung zu setzen.
  13. Verfahren nach Anspruch 12, bei dem die Initialisierung (302) des Paketzählers (106) als Antwort auf die Abfrage umfasst, den Paketzähler auf eine zweite Anfangs-Paketzählung zu setzen.
  14. Verfahren nach Anspruch 13, das weiterhin umfasst, die erste Anfangs-Zeitzählung in einer ersten Zeitschwellen-Speichervorrichtung (104a) zu speichern, die zweite Anfangs-Zeitzählung in einer zweiten Zeitschwellen-Speichervorrichtung (104b) zu speichern, die erste Anfangs-Paketzählung in einer ersten Paketschwellen-Speichervorrichtung (108a) zu speichern und die zweite Anfangs-Paketzählung in einer zweiten Paketschwellen-Speichervorrichtung (108b) zu speichern.
  15. Verfahren nach Anspruch 10, bei dem der zweite Bereich von Zeitzählungen größer als der erste Bereich von Zeitzählungen ist und der zweite Bereich von Paketzählungen größer als der erste Bereich von Zeitzählungen ist.
  16. Verfahren nach Anspruch 1, bei dem der Betrieb (706) der Kommunikationsvorrichtung in einer Abfrage-Betriebsart umfasst, einen Satz von Aliasanzeigern (602) in der Kommunikationsvorrichtung zu prüfen, wobei jeder der Aliasanzeiger (604, 606, 608) konfiguriert ist, in Verbindung mit einem entsprechenden Zustandsanzeiger (504, 506, 508) in einem Satz von Zustandsanzeigern (502) von einem ersten Zustand in einen zweiten Zustand zu wechseln, einen oder mehrere der Aliasanzeiger von dem zweiten Zustand in den ersten Zustand zu ändern und einen oder mehrere der Zustandsanzeiger selektiv von dem zweiten Zustand in den ersten Zustand zu ändern.
  17. Verfahren nach Anspruch 16, bei dem der Satz von Zustandsanzeigern einen paketübertragenen Anzeiger (504) enthält, der konfiguriert ist, als Antwort auf die Übertragung des zweiten Pakets von der Kommunikationsvorrichtung von dem ersten Zustand in den zweiten Zustand zu wechseln.
  18. Verfahren nach Anspruch 1, bei dem das Abfragen umfasst, einen Aliasanzeiger (604) einer Kommunikationsvorrichtung zu prüfen, um zu ermitteln, ob der Aliasanzeiger in einem zweiten Zustand ist, wobei der Aliasanzeiger von einem ersten Zustand in den zweiten Zustand eintritt, wenn als Antwort auf eine Übertragung eines Pakets von der Kommunikationsvorrichtung ein paketübertragener Anzeiger (504) in der Kommunikationsvorrichtung von dem ersten Zustand in den zweiten Zustand wechselt, den Aliasanzeiger von dem zweiten Zustand in den ersten Zustand zurückzubringen und den paketübertragenen Anzeiger selektiv von dem zweiten Zustand in den ersten Zustand zurückzubringen.
  19. Verfahren nach Anspruch 1, das weiterhin umfasst, einen Rückmeldungsanzeiger (514) in der Kommunikationsvorrichtung zu setzen, wenn die Unterbrechung erzeugt wird, wobei der Rückmeldungsanzeiger als Antwort auf ein Unterbrechungs-Dienstprogramm gelöscht wird, aber als Antwort auf das Abfragen nicht gelöscht wird.
  20. Verfahren nach Anspruch 1, bei dem die Kommunikationsvorrichtung eine Netz-Schnittstelle ist.
  21. Unterbrechungs-Modulator (100) zum Steuern der Erzeugung von Unterbrechungen von einer Kommunikationsvorrichtung, mit einem Anzeiger, der konfiguriert ist, die Übertragung eines Pakets von einer Kommunikationsvorrichtung anzuzeigen, wobei der Anzeiger als Antwort auf die Übertragung des Pakets von einem ersten Zustand in einen zweiten Zustand gesetzt wird und in den ersten Zustand zurückgesetzt wird, wenn eine Abfrage empfangen wird, einer ersten Zeitschwellen-Speichervorrichtung (104a), die konfiguriert ist, eine erste Anfangs-Zeitzählung zu speichern, einer zweiten Zeitschwellen-Speichervorrichtung (104b), die konfiguriert ist, eine zweite Anfangs-Zeitzählung zu speichern, einem Zeitzähler (102), der konfiguriert ist, eine Zeitzählung zu speichern, wobei die Zeitzählung als Antwort auf ein Taktsignal (110) hochzählbar ist, und einem Unterbrechungs-Generator, der konfiguriert ist, als Antwort auf die Übertragung eines Pakets eine Unterbrechung zu erzeugen, wenn die Zeitzählung eine End-Zeitzählung erreicht, wobei die Zeitzählung als Antwort auf die Abfrage oder eine Beendigung der Verarbeitung der Unterbrechung entweder auf die erste Anfangs-Zeitzählung oder die zweite Anfangs-Zeitzählung zurückgesetzt wird.
  22. Unterbrechungs-Modulator nach Anspruch 21, weiterhin mit einer ersten Paketschwellen-Speichervorrichtung (108a), die konfiguriert ist, eine erste Anfangs-Paketzählung zu speichern, einer zweiten Paketschwellen-Speichervorrichtung (108b), die konfiguriert ist, eine zweite Anfangs-Paketzählung zu speichern, und einem Paketzähler (106), der konfiguriert ist, eine Paketzählung festzuhalten, wobei die Paketzählung als Antwort auf die Übertragung von Paketen hochgezählt werden kann, wobei der Unterbrechungs-Generator weiterhin konfiguriert ist, als Antwort auf die Übertragung des Pakets eine Unterbrechung zu erzeugen, wenn die Paketzählung eine End-Paketzählung erreicht, und wobei die Paketzählung als Antwort auf die Abfrage oder die Beendigung der Verarbeitung der Unterbrechung entweder auf die erste Anfangs-Paketzählung oder die zweite Anfangs-Paketzählung zurückgesetzt wird.
  23. Unterbrechungs-Modulator nach Anspruch 21, bei dem der Anzeiger einen paketübertragenen Anzeiger (504) eines Zustandsmoduls (502) aufweist, wobei das Zustandsmodul einen Satz von Anzeigern (506, 508) aufweist, die konfiguriert sind, als Antwort auf vorbestimmte Ereignisse von dem ersten Zustand in den zweiten Zustand zu wechseln.
  24. Unterbrechungs-Modulator nach Anspruch 21, bei dem der Anzeiger ein Zustandsmodul (114, 502) ist, das einen paketübertragenen Anzeiger (504) aufweist, der konfiguriert ist, als Antwort auf die Übertragung eines Pakets von einem ersten Zustand in einen zweiten Zustand einzutreten.
  25. Unterbrechungs-Modulator nach Anspruch 21, bei dem der Anzeiger einen paketübertragenen Aliasanzeiger (604) eines Aliasmoduls (602) aufweist, wobei das Aliasmodul einen Satz von virtuellen Anzeigern (606, 608) aufweist, die konfiguriert sind, von dem ersten Zustand in den zweiten Zustand zu wechseln, wenn entsprechende Anzeiger (506, 508) in einem Zustandsmodul (114, 502) von dem ersten Zustand in den zweiten Zustand wechseln.
  26. Unterbrechungs-Modulator nach Anspruch 21, bei dem der Anzeiger ein Aliasmodul (602) ist, das einen paketübertragenen Aliasanzeiger (604) aufweist, der konfiguriert ist, von dem ersten Zustand in den zweiten Zustand zu wechseln, wenn ein paketübertragener Anzeiger (504) eines Satzes von Zustandsanzeigern (502) von dem ersten Zustand in den zweiten Zustand wechselt.
  27. Unterbrechungs-Modulator nach Anspruch 21, der weiterhin eine Maske (610) aufweist, welche Maske einen Satz von Einträgen aufweist, die den virtuellen Anzeigern und den Zustandsmodul-Anzeigern entsprechen, und bei dem ein Zustandsmodul-Anzeiger den Zustand ändert, wenn ein entsprechender virtueller Anzeiger den Zustand ändert, falls der entsprechende Maskeneintrag auf einen vorbestimmten Wert gesetzt ist.
  28. Unterbrechungs-Modulator nach Anspruch 21, weiterhin mit einem Satz (502) von Zustandsanzeigern (504, 506, 508), die konfiguriert sind, als Antwort auf vorbestimmte Bedingungen in der Kommunikationsvorrichtung von einem ersten Zustand in einen zweiten Zustand zu wechseln, wobei der Satz von Zustandsanzeigern den Anzeiger enthält, einem Satz (602) von virtuellen Zustandsanzeigern, wobei jeder virtuelle Zustandsanzeiger konfiguriert ist, von dem ersten Zustand in den zweiten Zustand zu wechseln, wenn ein entsprechender Zustandsanzeiger in dem Satz von Zustandsanzeigern von dem ersten Zustand in den zweiten Zustand wechselt, und einem Satz (610) von Rückkehranzeigern, wobei jeder Rückkehranzeiger konfiguriert ist, selektiv anzuzeigen, ob ein vorbestimmter Zustandsanzeiger in dem Satz von Zustandsanzeigern in den ersten Zustand zurückzubringen ist, wenn ein entsprechender virtueller Zustandsanzeiger in dem Satz von virtuellen Zustandsanzeigern in den ersten Zustand zurückkehrt, wobei einer oder mehrere der virtuellen Zustandsanzeiger von dem zweiten Zustand in den ersten Zustand zurückgebracht werden, wenn die Abfrage empfangen wird.
  29. Unterbrechungs-Modulator nach Anspruch 21, bei dem die Abfrage von einem Abfragemodul eines Hauptrechners empfangen wird.
  30. Unterbrechungs-Modulator nach Anspruch 21, bei dem die Kommunikationsvorrichtung eine Netz-Schnittstelle ist.
  31. Unterbrechungs-Modulator nach Anspruch 21, bei dem der Anzeiger ein erster Anzeiger (504) eines Zustandsmoduls (502) ist, das einen Satz von Anzeigern aufweist, die als Antwort auf vorbestimmte Ereignisse von dem ersten Zustand in den zweiten Zustand wechseln.
  32. Unterbrechungs-Modulator nach Anspruch 31, weiterhin mit einer Unterbrechungsmaske, die einen Satz von Anzeigern aufweist, die den Zustandsmodul-Anzeigern entsprechen, wobei jeder Unterbrechungsmaske-Anzeiger konfiguriert ist, anzuzeigen, ob eine Unterbrechung ausgegeben werden kann, wenn der entsprechende Zustandsmodul-Anzeiger von dem ersten Zustand in den zweiten Zustand wechselt.
  33. Unterbrechungs-Modulator nach Anspruch 21, weiterhin mit einem Rückmeldungsanzeiger (514), der konfiguriert ist, als Antwort auf die Unterbrechung von einem ersten Zustand in einen zweiten Zustand zu wechseln, wobei der Rückmeldungsanzeiger konfiguriert ist, in Verbindung mit der Unterbrechungsverarbeitung, aber nicht als Antwort auf die Abfrage, in den ersten Zustand zurückgebracht zu werden.
  34. Computerprogramm, das einen Computer, auf dem es ausgeführt wird, das Verfahren nach einem der Ansprüche 1 bis 20 durchführen lässt.
  35. Computerprogramm nach Anspruch 34, verkörpert in einem computerlesbaren Speichermedium.
DE60009882T 1999-03-01 2000-02-29 Unterbrechungsmodulator und Verfahren zum Steuern der Erzeugung von Unterbrechungen Expired - Lifetime DE60009882T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/260,367 US6434651B1 (en) 1999-03-01 1999-03-01 Method and apparatus for suppressing interrupts in a high-speed network environment
US260367 1999-03-01
PCT/US2000/005243 WO2000052895A2 (en) 1999-03-01 2000-02-29 Method and apparatus for interrupt handling

Publications (2)

Publication Number Publication Date
DE60009882D1 DE60009882D1 (de) 2004-05-19
DE60009882T2 true DE60009882T2 (de) 2005-04-07

Family

ID=22988881

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60009882T Expired - Lifetime DE60009882T2 (de) 1999-03-01 2000-02-29 Unterbrechungsmodulator und Verfahren zum Steuern der Erzeugung von Unterbrechungen

Country Status (6)

Country Link
US (1) US6434651B1 (de)
EP (2) EP1159810B1 (de)
JP (1) JP2002538729A (de)
AU (1) AU3248100A (de)
DE (1) DE60009882T2 (de)
WO (1) WO2000052895A2 (de)

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6757746B2 (en) 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US7042898B2 (en) 1997-10-14 2006-05-09 Alacritech, Inc. Reducing delays associated with inserting a checksum into a network message
US6807581B1 (en) 2000-09-29 2004-10-19 Alacritech, Inc. Intelligent network storage interface system
US6658480B2 (en) 1997-10-14 2003-12-02 Alacritech, Inc. Intelligent network interface system and method for accelerated protocol processing
US6687758B2 (en) 2001-03-07 2004-02-03 Alacritech, Inc. Port aggregation for network connections that are offloaded to network interface devices
US6697868B2 (en) 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US7089326B2 (en) * 1997-10-14 2006-08-08 Alacritech, Inc. Fast-path processing for receiving data on TCP connection offload devices
US7167927B2 (en) 1997-10-14 2007-01-23 Alacritech, Inc. TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism
US8621101B1 (en) 2000-09-29 2013-12-31 Alacritech, Inc. Intelligent network storage interface device
US7076568B2 (en) * 1997-10-14 2006-07-11 Alacritech, Inc. Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket
US8782199B2 (en) 1997-10-14 2014-07-15 A-Tech Llc Parsing a packet header
US8539112B2 (en) 1997-10-14 2013-09-17 Alacritech, Inc. TCP/IP offload device
US7174393B2 (en) 2000-12-26 2007-02-06 Alacritech, Inc. TCP/IP offload network interface device
US7237036B2 (en) 1997-10-14 2007-06-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding a TCP connection
US7664883B2 (en) 1998-08-28 2010-02-16 Alacritech, Inc. Network interface device that fast-path processes solicited session layer read commands
US6741594B1 (en) * 2000-06-15 2004-05-25 Advanced Micro Devices, Inc. Arrangement for identifying data packet types from multiple protocol formats on a network switch port
US6715005B1 (en) * 2000-06-29 2004-03-30 International Business Machines Corporation Method and system for reducing latency in message passing systems
US6754755B1 (en) * 2000-08-10 2004-06-22 Hewlett-Packard Development Company, L.P. Service request system using an activity indicator to reduce processing overhead
DE50114481D1 (de) 2000-09-22 2008-12-24 Infineon Technologies Ag Vorrichtung zur Auswahl und Weiterleitung von empfangenen Unterbrechungsanfragen gemäss konfigurierbarer Konditionen
US8019901B2 (en) 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
US6720074B2 (en) * 2000-10-26 2004-04-13 Inframat Corporation Insulator coated magnetic nanoparticulate composites with reduced core loss and method of manufacture thereof
US6865631B2 (en) * 2000-12-14 2005-03-08 International Business Machines Corporation Reduction of interrupts in remote procedure calls
US20020188749A1 (en) * 2001-06-06 2002-12-12 Gaur Daniel R. Receive performance of a network adapter by dynamically tuning its interrupt delay
US7299470B2 (en) * 2001-09-13 2007-11-20 International Business Machines Corporation Method and system for regulating communication traffic using a limiter thread
US6868466B2 (en) * 2001-09-27 2005-03-15 Intel Corporation Apparatus and method for packet ingress interrupt moderation
JP2003196166A (ja) * 2001-10-19 2003-07-11 Kawasaki Microelectronics Kk データ転送装置
US8856416B2 (en) * 2001-12-06 2014-10-07 Intel Corporation Method and apparatus for processing latency sensitive electronic data with interrupt moderation
EP1454472B1 (de) * 2001-12-13 2006-05-03 Matsushita Electric Industrial Co., Ltd. Kommunikationsgerät, empfangprozessausführungs- verfahren und -program, und rechnerlesbares medium auf dem dieses program gespeichert ist
US20030121835A1 (en) * 2001-12-31 2003-07-03 Peter Quartararo Apparatus for and method of sieving biocompatible adsorbent beaded polymers
US7543087B2 (en) 2002-04-22 2009-06-02 Alacritech, Inc. Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device
US7398291B2 (en) * 2003-06-26 2008-07-08 International Business Machines Corporation Method, system and program product for providing a status of a transaction with an application on a server
US20050097226A1 (en) * 2003-10-31 2005-05-05 Sun Microsystems, Inc. Methods and apparatus for dynamically switching between polling and interrupt to handle network traffic
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
US7363981B2 (en) 2003-12-30 2008-04-29 Weatherford/Lamb, Inc. Seal stack for sliding sleeve
US7921240B2 (en) * 2004-03-10 2011-04-05 Broadcom Corporation Method and system for supporting hardware acceleration for iSCSI read and write operations and iSCSI chimney
US7937499B1 (en) * 2004-07-09 2011-05-03 Oracle America, Inc. Methods and apparatus for dynamically switching between polling and interrupt mode for a ring buffer of a network interface card
US8248939B1 (en) 2004-10-08 2012-08-21 Alacritech, Inc. Transferring control of TCP connections between hierarchy of processing mechanisms
DE102004057756B4 (de) * 2004-11-30 2009-08-06 Advanced Micro Devices Inc., Sunnyvale USB-Steuerungseinrichtung mit OTG-Steuerungseinheit
US7779178B2 (en) * 2005-06-29 2010-08-17 Intel Corporation Method and apparatus for application/OS triggered low-latency network communications
US8521955B2 (en) 2005-09-13 2013-08-27 Lsi Corporation Aligned data storage for network attached media streaming systems
US7912060B1 (en) * 2006-03-20 2011-03-22 Agere Systems Inc. Protocol accelerator and method of using same
US8218770B2 (en) * 2005-09-13 2012-07-10 Agere Systems Inc. Method and apparatus for secure key management and protection
US7738500B1 (en) 2005-12-14 2010-06-15 Alacritech, Inc. TCP timestamp synchronization for network connections that are offloaded to network interface devices
US20080059677A1 (en) * 2006-08-31 2008-03-06 Charles Jens Archer Fast interrupt disabling and processing in a parallel computing environment
US20080059676A1 (en) * 2006-08-31 2008-03-06 Charles Jens Archer Efficient deferred interrupt handling in a parallel computing environment
US8645668B2 (en) * 2007-01-11 2014-02-04 Sony Corporation Information processing apparatus, information processing method and computer program
TW200904072A (en) * 2007-07-05 2009-01-16 Ic Plus Corp System and method for generating interrupt
JP4952542B2 (ja) * 2007-11-28 2012-06-13 富士通株式会社 通信プログラム、通信装置および通信方法
JP5349816B2 (ja) * 2008-03-18 2013-11-20 富士通株式会社 回線監視装置及び回線監視方法
US8539513B1 (en) 2008-04-01 2013-09-17 Alacritech, Inc. Accelerating data transfer in a virtual computer system with tightly coupled TCP connections
US8341286B1 (en) 2008-07-31 2012-12-25 Alacritech, Inc. TCP offload send optimization
US9306793B1 (en) 2008-10-22 2016-04-05 Alacritech, Inc. TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies
JP2010224917A (ja) * 2009-03-24 2010-10-07 Fuji Xerox Co Ltd 割り込み制御装置及び画像形成装置
US8510403B2 (en) 2010-06-30 2013-08-13 Juniper Networks, Inc. Self clocking interrupt generation in a network interface card
US8478923B2 (en) * 2010-09-25 2013-07-02 International Business Machines Corporation Interrupt suppression by processing just first interrupt of a same type
US8657010B2 (en) 2010-10-26 2014-02-25 Weatherford/Lamb, Inc. Downhole flow device with erosion resistant and pressure assisted metal seal
WO2012081085A1 (ja) * 2010-12-14 2012-06-21 三菱電機株式会社 割込み要因管理装置及び割込み処理システム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317692A (en) * 1991-01-23 1994-05-31 International Business Machines Corporation Method and apparatus for buffer chaining in a communications controller
US5412782A (en) 1992-07-02 1995-05-02 3Com Corporation Programmed I/O ethernet adapter with early interrupts for accelerating data transfer
US5319752A (en) 1992-09-18 1994-06-07 3Com Corporation Device with host indication combination
SG47794A1 (en) 1993-09-30 1998-04-17 Intel Corp Buffer memory management for a computer network node
US5797037A (en) 1995-03-31 1998-08-18 Cirrus Logic, Inc. Interrupt request control logic reducing the number of interrupts required for I/O data transfer
US5659758A (en) 1995-07-07 1997-08-19 Sun Microsystems, Inc. Interrupt modular for receiving bursty high speed network traffic
US5943479A (en) 1997-01-02 1999-08-24 Digital Equipment Corporation Method for reducing the rate of interrupts in a high speed I/O controller
US6256660B1 (en) * 1997-04-08 2001-07-03 International Business Machines Corporation Method and program product for allowing application programs to avoid unnecessary packet arrival interrupts
US6065073A (en) * 1998-08-17 2000-05-16 Jato Technologies, Inc. Auto-polling unit for interrupt generation in a network interface device
US6105102A (en) * 1998-10-16 2000-08-15 Advanced Micro Devices, Inc. Mechanism for minimizing overhead usage of a host system by polling for subsequent interrupts after service of a prior interrupt

Also Published As

Publication number Publication date
EP1347615A2 (de) 2003-09-24
EP1159810A2 (de) 2001-12-05
AU3248100A (en) 2000-09-21
WO2000052895A2 (en) 2000-09-08
US6434651B1 (en) 2002-08-13
JP2002538729A (ja) 2002-11-12
EP1159810B1 (de) 2004-04-14
DE60009882D1 (de) 2004-05-19
WO2000052895A3 (en) 2000-12-14

Similar Documents

Publication Publication Date Title
DE60009882T2 (de) Unterbrechungsmodulator und Verfahren zum Steuern der Erzeugung von Unterbrechungen
DE69636029T2 (de) Verfahren und Vorrichtung zur Datenübertragung
DE60036465T2 (de) Rechneradapterkarte für die kombinierung von eingang-/ausgangfertigstellungsberichten und verwendung derselben
DE69633821T2 (de) Verfahren und vorrichtung in einem netzadapter zur automatischen sendewiederholung von paketen
DE69816213T2 (de) Kommunikationsverfahren und Datenkommunikationsendgerät mit Datenkommunikationsprotokoll zur Zwischenschichtflusssteuerung
DE112020002484T5 (de) System und verfahren zur erleichterung der feinkörnigen flusssteuerung in einer netzwerkschnittstellensteuerung (nic)
DE69634983T2 (de) Verfahren und vorrichtung für ein hybrides wettbewerbs- und abfrageprotokoll
DE602004004706T2 (de) Verfahren und System zur Kommunikationssteuerung
DE202018104604U1 (de) Überlastungsvermeidung in einer Netzwerk-Switch-Vorrichtung
JP2003524312A (ja) ネットワークインターフェースにおいて割込みを示す方法および装置
DE69628798T2 (de) Verfahren zur Übertragung von Multimediadaten
DE3331233C2 (de) Datensteuereinrichtung in lokalen Verbindungsnetzen
US20030226056A1 (en) Method and system for a process manager
DE602004012563T2 (de) Mehrfädiges DMA
DE19900369A9 (de) Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial Bus
DE102005048037A1 (de) Verfahren zur Steuerung/Regelung wenigstens einer Task
DE60111153T2 (de) Funkkommunikationssystem mit Zeitüberschreitungssteuerung und flexible Intervalleinstellung
DE19733151A1 (de) System und Verfahren für einen virtuellen Gerätezugriff in einem Computersystem
DE202016009092U1 (de) System zum Ausgleichen von Speicherdatenverkehr in konvergierten Netzwerken
DE102020105776A1 (de) Kostengünstige Überlastungsisolierung für verlustfreies Ethernet
DE102004052412A1 (de) Verfahren und Vorrichtung zum dynamischen Umschalten zwischen Abfragen und Interrupt, um Netzverkehr zu handhaben
DE112006002912T5 (de) Verwaltung von On-Chip-Warteschleifen in geschalteten Netzwerken
DE112019001647T5 (de) Netzwerk-Überlastungsverwaltung
DE60310146T2 (de) System und Methode zur Überwachung, mit geringer Zusatzinformation, des Leerzustandes der Senderwarteschlange
DE102022121268A1 (de) Überlastungssteuerung auf basis von netzwerktelemetrie

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition