-
HINTERGRUND
DER ERFINDUNG
-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich auf eine Paketverarbeitungsvorrichtung
und ein Paketverarbeitungsverfahren zum Ausführen einer Paketverarbeitung.
-
BESCHREIBUNG
DES VERWANDTEN SACHSTANDES
-
In
den vergangenen Jahren sind in Verbindung mit dem drastischen Ansteigen
des Internetverkehrs ansteigende Bedürfnisse für eine Vorrichtung entstanden,
die in der Lage ist eine schnelle Verarbeitung von Paketen zu ermöglichen,
die Information über
das Internet übertragen.
Die Paketverarbeitung wird realisiert durch Bezugnehmen auf ein
Kopfteil eines Paketes, der von außerhalb eingegeben wird, und
Ausführen
einer gewünschten
Verarbeitung gemäß einer
in diesem Kopfteil beschriebenen Information.
-
Hier
kann die gewünschte
Verarbeitung von jeder der verschiedenen Verarbeitungen sein, einschließlich zum
Beispiel der folgenden.
- (1) Eine Verarbeitung
zum Übertragen
eines Paketes an eine spezifische Ausgabeverknüpfung durch Bezugnehmen auf
eine Bestimmungsadresse, die in dem Kopfteil des Paketes enthalten ist.
- (2) Eine Verarbeitung zum Steuern einer Paketübertragungszeiteinstellung
an jeder Eingabeverknüpfung
durch Bezugnehmen auf eine Prioritätsebeneninformation oder Information,
die Attribute einer Anwendung anzeigt, die Kommunikationen unter
Verwenden des Paketes ausführt,
die in dem Kopfteil dieses Paketes enthalten ist, derart, dass die Übertragung
dieses Paketes unterbrochen wird, wenn ein Paket mit einer höheren Prioritätsebene
an eine Ausgabeverknüpfung übertragen
wird, zu der dieses Paket beispielsweise übertragen werden soll.
- (3) Eine Verarbeitung zum Teilen des Paketes gemäß eines
vorbeschriebenen Verfahrens in dem Fall, in dem seine Paketlänge eine
an einem spezifischen Ausgabeport erlaubten maximale Paketlänge überschreitet.
- (4) Eine Verarbeitung zum Erhöhen einer spezifischen Information
auf dem Paket und Fallenlassen des Paketes, wenn diese spezifische
Information einen vorbeschriebenen Wert erreicht.
- (5) Eine Verarbeitung zum Wiederschreiben eines Wertes einer
Bestimmungsadresse oder einer Quelladresse gemäß einem vorgeschriebenen Verfahren
gemäß Notwendigkeit.
- (6) Eine Verarbeitung zum Berechnen von Fehlerkorrekturcodes
des Paketes gemäß der Notwendigkeit.
-
Historisch
gesprochen ist eine Vorrichtung zum Verarbeiten von Paketen durch
eine Informationsverarbeitungsvorrichtung realisiert worden, wie einem
Minicomputer oder einem Mikroprozessor. In diesem Fall ist die auszuführende spezifische
Verarbeitung für
jedes Paket, wie oben beschrieben, realisiert worden durch Ausführen einer
spezifischen Anweisungssequenz auf dem Minicomputer oder dem Mikroprozessor.
Jedoch ist es in diesem Schema schwierig gewesen die schnelle Paketverarbeitung zu
realisieren. Aus diesem Grund ist es in vergangenen Jahren üblich gewesen
die schnelle Paketverarbeitung durch Implementieren der Paketverarbeitung unter
Verwenden von Hardware zu realisieren.
-
Jedoch
hat das Internetprotokoll eine Charakteristik kontinuierlich verändert zu
werden. Zum Beispiel ist die Bestimmungsadresse und die Quelladresse
in dem Paket keinem Wiederschreiben innerhalb des Internets unterworfen
gewesen, bis wenige Jahre zuvor, aber da eine Auflösung der
Kürze der IP-Adresse
infolge des Internetbooms der vergangenen Jahre aufgetreten ist,
ist es in den letzten zwei oder drei Jahren üblich geworden, die Bestimmungsadresse
oder die Quelladresse innerhalb des Internets wieder zu schreiben.
-
Als
solches wird das Internet auf eine derartige Weise betrieben, dass
wann immer ein Problem während
eines Betreibens des Netzwerkes auftritt, ein Protokoll geändert wird,
um das Problem zu lösen.
Als ein Ergebnis wird sich das Internetprotokoll fortlaufend verändern. Folglicherweise
hat das oben beschriebene Schema zum Realisieren der schnellen Paketverarbeitung
des Implementierens der Protokollverarbeitung unter Verwenden von
Hardware ein Problem, dass es unmöglich wird die Verarbeitung
durch diese Hardware auszuführen,
selbst wenn nur geringfügige Änderungen
in dem Protokoll vorliegen, und es daher notwendig wird, die Paketverarbeitungsvorrichtung
sehr häufig
zu ersetzen.
-
Es
haben auch verschiedene Vorschläge
für Schemen
vorgelegen, um Funktionen zu realisieren, die für die Paketverarbeitung erforderlich
waren, wie eine Verarbeitung zum Analysieren der Bestimmungsadresse
in dem Kopf des IP-Paketes, beispielsweise, aber hinsichtlich verschiedener
Vorteile von verschiedenen Funktionsrealisierungsschemata, wobei
jedes Funktionsrealisierungsverfahren sein bevorzugtes Gebiet für seine
Anwendung aufweist. Jedoch ist die Paketverarbeitungsvorrichtung
gemäß dem Stand
der Technik nicht mit einer Möglichkeit
bereitgestellt worden, ein geeignetes Schema aus dieser Mehrzahl
von Funktionsrealisierungsschemata leicht auszuwählen, und es ist nur ein besonderes aus
den verschiedenen Paketverarbeitungsschemata ausgewähltes Schema
in der Paketverarbeitungsvorrichtung gemäß dem Stand der Technik implementiert
worden. Als ein Ergebnis ist es unmöglich gewesen, das optimale
Schema in Abhängigkeit
von der Netzwerkumgebung auszuwählen,
wie eine Mischungsrate von verschiedenen Pakettypen zum Beispiel,
so dass es unmöglich
gewesen ist, die Paketverarbeitung effizient auszuführen.
-
Wie
beschrieben, ist die Paketverarbeitungsvorrichtung gemäß dem Stand
der Technik mit den Problemen behaftet einschließlich: (1) dass es schwierig
ist die schnelle Verarbeitung zu realisieren, wenn die Vorrichtung
durch Ausführen
einer spezifischen Anweisungssequenz auf dem Minicomputer oder dem
Mikroprozessor realisiert wird; (2) dass sie nicht flexibel die
Protokollveränderung
handhaben kann, wenn die Vorrichtung durch Implementieren der Paketverarbeitung
unter Verwenden der Hardware realisiert wird; und (3) dass sie kein
optimales Funktionsrealisierungsschema in Abhängigkeit von der Netzwerkumgebung
auswählen
kann.
-
US-Patent
5,598,410 offenbart eine beschleunigte Paketverarbeitung, wie in
dem Oberbegriff von Anspruch 1, und WO 91/15088 A offenbart ein
Hochgeschwindigkeitsvermittlungsgerät unter Verwenden eines Cachespeichers
und einem Vor-Holen (Prefetch) von Daten.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
Erfindung stellt eine Paketverarbeitungsvorrichtung und ein Verfahren
wie in Ansprüchen
1 und 15 definiert bereit. Das macht es möglich eine schnelle Paketverarbeitung,
eine hohe Adaptierbarkeit unter Berücksichtigung der Protokollveränderung und
eine Möglichkeit
zum Auswählen
eines optimalen Funktionsrealisierungsschemas gemäß der Netzwerkumgebung
bereitzustellen.
-
Weiter
Ausführungsformen
der Erfindung sind in den abhängigen
Ansprüchen
ausgeführt.
-
Andere
Merkmale und Vorteile der vorliegenden Erfindung werden aus der
folgenden Beschreibung im Zusammenhang mit den beigefügten Zeichnungen
deutlich.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
1 ist
ein Blockdiagramm, das eine beispielhafte Konfiguration einer Paketverarbeitungsvorrichtung
gemäß der ersten
Ausführungsform
der vorliegenden Erfindung zeigt.
-
2 ist
ein Blockdiagramm, das eine beispielhafte Konfiguration einer Auswahlerzeugungseinheit
in der Paketverarbeitungsvorrichtung von 1 zeigt.
-
3 ist
ein Diagramm, das beispielhafte Felder zeigt, die durch eine Kopfinformationsextrahierungseinheit
in der Auswahlerzeugungseinheit von 2 extrahiert
werden sollen.
-
4 ist
ein Blockdiagramm, das eine andere beispielhafte Konfiguration einer
Paketverarbeitungsvorrichtung gemäß der ersten Ausführungsform der
vorliegenden Erfindung zeigt.
-
5 ist
ein Blockdiagramm, das eine beispielhafte Konfiguration einer Paketverarbeitungseinheit
in der Paketverarbeitungsvorrichtung von 1 zeigt.
-
6 ist
ein Blockdiagramm, das eine andere beispielhafte Konfiguration einer
Paketverarbeitungsvorrichtung gemäß der ersten Ausführungsform der
vorliegenden Erfindung zeigt.
-
7 ist
ein Blockdiagramm, das eine andere beispielhafte Konfiguration einer
Paketverarbeitungsvorrichtung gemäß der ersten Ausführungsform der
vorliegenden Erfindung zeigt.
-
8 ist
ein Blockdiagramm, das eine andere beispielhafte Konfiguration einer
Paketverarbeitungsvorrichtung gemäß der ersten Ausführungsform der
vorliegenden Erfindung zeigt.
-
9 ist
ein Blockdiagramm, das eine beispielhafte Konfiguration einer Paketverarbeitungsvorrichtung
gemäß der zweiten
Ausführungsform
der vorliegenden Erfindung zeigt.
-
10 ist
ein Diagramm, das eine beispielhafte Konfiguration einer Mikroanweisungssequenztafel
in der Paketverarbeitungsvorrichtung von 9 zeigt.
-
11 ist
ein Blockdiagramm, das eine andere beispielhafte Konfiguration einer
Paketverarbeitungsvorrichtung gemäß der zweiten Ausführungsform
der vorliegenden Erfindung zeigt.
-
12 ist
ein Diagramm, das eine beispielhafte Konfiguration einer Makroanweisungssequenztafel
in der Paketverarbeitungsvorrichtung von 11 zeigt.
-
13 ist
ein Diagramm, das eine beispielhafte Konfiguration einer Mikroanweisungssequenztafel
in der Paketverarbeitungsvorrichtung von 11 zeigt.
-
DEATLLIERTE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Bezugnehmend
nun auf 1 bis 8 wird die
erste Ausführungsform
einer Paketverarbeitungsvorrichtung und eines Paketverarbeitungsverfahrens gemäß der vorliegenden
Erfindung im Detail beschrieben.
-
1 zeigt
eine beispielhafte Konfiguration einer Paketverarbeitungsvorrichtung
(oder Nachrichtverarbeitungsvorrichtung) gemäß der ersten Ausführungsform
der vorliegenden Erfindung.
-
Wie
in 1 gezeigt, umfasst die Paketverarbeitungsvorrichtung
der ersten Ausführungsform eine
Auswahlerzeugungseinheit 101, eine Paketverarbeitungseinheit
(Paketweiterleiter) 102 und eine Paketübermittlungseinheit 103.
-
Ein
Paket, das an dieser Paketverarbeitungsvorrichtung angekommen ist,
wird in die Auswahlerzeugungseinheit 101 eingegeben.
-
Die
Auswahlerzeugungseinheit 101 bezieht sich auf einen Kopfteil
des eingegebenen Paketes, extrahiert eine vorgeschrieben Mehrzahl
von Bitsequenzen (wobei eine Bitsequenz nur 1 Bit enthalten kann)
aus dem Kopfteil und führt
eine Verarbeitung zum Erzeugen einer Auswahlinformation dieses Paketes
durch Anwenden einer Musteranpassung, logischer Berechnungen, etc.
aus, auf die extrahierte Mehrzahl von Bitsequenzen.
-
Hier
steht die „Bitsequenz" für einen
Teil oder die Gesamtheit eines Feldes innerhalb des Paketkopfes,
der zum Beispiel durch die Protokollspezifizierung definiert ist.
-
Wie
oben beschrieben, ist die Auswahlinformation Information, die Pakettypen
anzeigt, der durch Bezugnehmen auf eine vorgeschrieben Position
in dem Kopfteil jedes Paketes erhalten wird, und um spezifisch zu
sein, dass durch jeden der folgenden vier Typen beispielsweise gegeben
sein kann:
- (1) IPv4-Paket vom Ethernet-Rahmen,
UDP;
- (2) IPv4-Paket vom Ethernet-Rahmen, TCP SYN/FIN-Nachricht;
- (3) IPv4-Paket vom Ethernet-Rahmen, ICMP-Nachricht; und
- (4) Andere.
-
Man
bemerke, dass die Auswahlinformation zwei Bitdaten sein kann, wenn
die Auswahlinformation in vier Typen gegeben ist.
-
Es
ist natürlich
auch möglich
verschiedene andere Detailkonfigurierungen für die Auswahlinformation zu
betrachten, die durch die Auswahlerzeugungseinheit 101 neben
den obig beschriebenen erzeugt wird. Zum Beispiel ist es auch möglich die
Auswahlinformation gemäß einer
Klassifizierung des eingegebenen Ethernet-Rahmen oder IP-Paketes
zu konfigurieren, wie das zum Broadcast, Multicast, oder Unicast,
oder einer Klassifizierung des in dem eingegebenen IP-Paket vorangenommenen
Transportprotokoll, wie UDP oder TCP. Jedoch wird im folgenden Fall
der Einfachheit halber beschrieben, in dem die Auswahlinformation
in den oben beschriebenen vier Typen gegeben ist.
-
Man
bemerke auch, dass es auch möglich
ist für
die Auswahlinformation von der Bestimmungsadresse erstellte Information
eines Paketes für
den Zweck eines Auswählens
eines optimalen Suchalgorithmus für eine Routingtafel, oder Information
einzuschließen,
die eine Prioritätsreihenfolge
eines Paketes für
den Zweck zum Bereitstellen von QoS (Quality of Service bzw. Qualität eines
Dienstes) anzuzeigen, neben Information, die einen Pakettyp anzeigt,
wie in dieser Ausführungsform
beschrieben. Derartig verschiedene Modifizierungen hinsichtlich
der Auswahlinformation werden unten im weiteren Detail beschrieben.
-
Im
Folgenden werden auch die oben beschriebenen vier Typen der Auswahlinformation durch „00", „01", „10" bzw. „11" beispielhaft angezeigt.
-
Wenn
nun die Auswahlinformation erzeugt wird, überträgt die Auswahlerzeugungseinheit 101 diese
Auswahlinformation zusammen mit dem entsprechenden Paket zu der
Paketverarbeitungseinheit 102.
-
Die
Paketverarbeitungseinheit 102 verarbeitet dieses Paket
und gibt es aus durch Verwenden der Auswahlinformation, die mit
dem Paket bereitgestellt wird.
-
Zum
Beispiel wird, wenn die Auswahlinformation „00" ist, dieses Paket durch Aktivieren
einer UDP-Verarbeitungsroutine verarbeitet, die im Voraus bereitgestellt
wird (oder durch Erzeugen und Aktivieren einer UDP-Verarbeitungsroutine
zu diesem Punkt). Der Fall, in dem die Auswahlinformation „01" oder „10" ist, wird ähnlich gehandhabt.
Wenn die Auswahlinformation „11" ist, ist es ein
als „anderes" klassifiziertes
Paket, so dass das Paket verarbeitet wird, während die Pakettypen wie gewöhnlich klassifiziert
werden, durch Aktivieren eines allgemeinen Paketverarbeitungsroutings.
-
Auch
die Paketverarbeitungseinheit 102 führt eine Verarbeitung zum Erzeugen
und Ausgeben von Übertragungssteuerungsinformation
einschließlich
Information aus, die ein Ausgabeendgerät (Ausgabeschnittstelle) spezifiziert,
an die dieses Paket ausgegeben werden sollte, und Information, die
eine Prioritätsebene
zum Übermitteln dieses
Paketes spezifiziert, in der oben beschriebenen Verarbeitung (oder
in der Verarbeitung, die separat aus der oben beschriebenen Verarbeitung
aktiviert wird). Das Paket mit der daran angehangenen Übertragungssteuerungsinformation
wird dann in die Paketübermittlungseinheit 103 eingegeben.
-
Die
Paketübermittlungseinheit 103 führt eine Verarbeitung
zum Ausgeben des eingegebenen Paketes aus durch Auswählen eines
spezifischen Ausgabeendgerätes
gemäß der Übertragungssteuerungsinformation,
die an dieses Paket angehangen ist.
-
2 zeigt
eine beispielhafte Konfiguration dieser Auswahlerzeugungseinheit 101.
-
Die
Auswahlerzeugungseinheit 101 umfasst eine Kopfinformationsextrahierungseinheit 201 zum Extrahieren
vorgeschriebener Abschnitte in dem Kopfteil des eingegebenen Paketes,
und eine Musteranpassungseinheit 202 zum Erzeugen der Auswahlinformation
zum Beurteilen, ob die durch die Kopfinformationsextrahierungseinheit 201 extrahierte
Information in einem vorgeschriebenen Bitmuster ist oder nicht.
-
In
dem konkreten Beispiel, das in dieser Ausführungsform verwendet wird,
extrahiert die Kopfinformationsextrahierungseinheit 201 die
Abschnitte, wie in 3 gezeigt, das bedeutet die
folgenden Abschnitte:
- * ein Protokolltypfeld
(301) in dem Ethernetkopf;
- * ein Versionsfeld (302) in dem IP-Kopf;
- * ein Protokollfeld (303) in dem IP-Kopf;
- * ein SYN-Flag (304) in dem TCP-Kopf; und
- * ein FIN-Flag (305) in dem TCP-Kopf.
-
Die
Musteranpassungseinheit 202 beurteilt einen Typ der auszugebenen
Auswahlinformation aus den oben beschriebenen vier Typen durch Prüfen der
Werte dieser extrahierten Felder.
-
Zum
Beispiel wird sie als eine TCP SYN/FIN-Nachricht beurteilt, wenn
das Protokolltypfeld in dem Ethernetkopf einen Wert von „0800" aufweist, das Versionsfeld
in dem IP-Kopf einen Wert „4", das Protokolltypfeld
in dem IP-Kopf einen Wert „6" und das SYN-Flag
oder das FIN-Flag in dem TCP-Kopf AN ist.
-
Man
bemerke, dass die Auswahlinformation durch Ausführen der Musteranpassung in
der Musteranpassungseinheit 202 in der beispielhaften Konfiguration
von 2 ausgeführt
wird, aber anstelle dessen ist es auch möglich die Auswahlinformation durch
Ausführen
logischer Berechnungen zum Ausgeben der Auswahlinformation unter
Verwenden des Bitmusters zu erhalten, das aus der Kopfinformationsextrahierungseinheit 201 als
eine Eingabe gegeben ist.
-
Man
bemerke auch, dass die Auswahlerzeugungseinheit 101, die
Mehrzahl von zu extrahierenden Bitsequenzen und das in der Musteranpassung verwendete
Bitmuster in dem Fall eines Verwendens der Musteranpassung oder
des Inhaltes der logischen Berechnungen in dem Fall vom Verwenden der
logischen Berechnungen vorzugsweise von außen veränderbar sein sollte. Auf diese
Weise wird es möglich
die Protokollspezifizierungsveränderung
flexibel zu behandeln und die Auswahlinformation gemäß einer
Mischungsrate der Pakettypen in der Umgebung zu optimieren, auf
die diese Paketverarbeitungsvorrichtung angewendet wird durch Verändern der
detaillierten Konfiguration der Auswahlinformation.
-
Wie
in 4 gezeigt, ist es auch möglich für die Auswahlerzeugungseinheit 101,
eine vorgeschriebene Information zu geben, die aus dem Eingabepaket
extrahiert wird (oder eine Information, die durch Verarbeiten einer
derartig vorgeschriebenen Information erhalten wird) als zusätzliche
Information (Parameter) an die Paketverarbeitungseinheit 102 zusammen
mit der Auswahlinformation. Durch Verwenden der empfangenen Parameter
kann die Paketverarbeitungseinheit 102 eine schnelle Verarbeitung
realisieren.
-
5 zeigt
eine beispielhafte Konfiguration der Paketverarbeitungseinheit 102.
-
Diese
Paketverarbeitungseinheit 102 hat einen Programmspeicher 401,
einen Prozessor 402, einen Paketpuffer 403 und
einen Eingabe-/Ausgabeport 404.
-
Der
Programmspeicher 401 speichert die Verarbeitungsroutinen
entsprechend der verschiedenen Typen der Auswahlinformation.
-
Im
Fall des konkreten Beispieles, das in dieser Ausführungsform
verwendet wird, speichert der Programmspeicher 401 das
folgende:
- (1) eine UDP-Verarbeitungsroutine
(4011);
- (2) eine TCP SYN/FIN-Verarbeitungsroutine (4012);
- (3) eine ICMP-Verarbeitungsroutine (4013); und
- (4) eine allgemeine Paketverarbeitungsroutine (4014);
zugehörig zu: - (1) IPv4-Paket vom Ethernet-Rahmen, UDP;
- (2) IPv4-Paket vom Ethernet-Rahmen, TCP SYN/FIN-Nachricht;
- (3) IPv4-Paket vom Ethernet-Rahmen, ICMP-Nachricht; und
- (4) Andere.
-
Ein
von der Auswahlerzeugungseinheit 104 eingegebenes Paket
wird in dem Paketpuffer 403 geschrieben. Die Auswahlinformation,
die zusammen mit diesem Paket gegeben wird, wird an den Prozessor 402 als
ein Unterbrechungssignal gegeben. Der Prozessor 402 aktiviert
das zugehörige
Verarbeitungsrouting gemäß der Auswahlinformation,
verarbeitet dieses Paket und gibt dieses Paket and die Paketübermittlungseinheit 103 zusammen
mit der Übertragungssteuerungsinformation
durch den Eingabe-/Ausgabeport 404 aus.
-
Man
bemerke, dass es auch möglich
ist (nicht ausführbare)
Programme bereitzustellen, aus denen die ausführbare Verarbeitungsroutinen
erzeugt werden können,
und die ausführbare
Verarbeitungsroutine aus dem zugehörigen Programm zu erzeugen,
zu der Zeit eines Empfangens der Auswahlinformation, anstelle eines
Bereitstellens der ausführbaren
Verarbeitungsroutinen im Voraus. Dies kann zum Beispiel realisiert
werden durch Einbetten von Bitsequenzen, die gemäß der zusätzlichen Information erzeugt
werden, die in 4 gezeigt ist, an vorgeschriebenen
Teilen der Programme, aus denen die ausführbaren Verarbeitungsroutinen
erzeugt werden können,
die als binäre
Daten aufrecht erhalten werden.
-
Hier
werden die Attribute jedes Paketes durch die Auswahlerzeugungseinheit 101 im
Voraus unterschieden und die Verarbeitungsroutine gemäß dieser
Attribute wird aktiviert, so dass es möglich ist die Anzahl von Ästen innerhalb
der Verarbeitungsroutine zu vermindern im Vergleich mit dem Fall
zum Ausführen
der allgemeinen Paketverarbeitungsroutine für alle Pakete. Folglicherweise
ist es möglich
die Störungen
auf die Pipeline innerhalb des Prozessors zu vermindern und die
Optimierung auf die Verarbeitungsroutine gemäß dieser Attribute anzuwenden,
so dass es möglich
ist den Durchsatz der Paketverarbeitungsvorrichtung zu verbessern.
-
Im
folgenden werden verschiedene Variationen einer detaillierteren
beispielhaften Konfiguration beschrieben.
-
Als
erstes wird der Fall zum Ausführen
der Auswahlerzeugungseinheit 101 und der Paketverarbeitungseinheit 102 unabhängig beschrieben.
-
Wie
oben beschrieben, ist die konventionelle Weise zum Verarbeiten von
Paketen während
einem Klassifizieren der Pakettypen mit einem Problem behaftet,
dass es viele Äste
involviert und es zeitaufwendig ist. Aus diesem Grund sind in dieser
Ausführungsform
die Äste,
die sich auf die Klassifizierung von Typen beziehen, durch die Auswahlerzeugungseinheit 101 gemacht,
und eine Verarbeitung zum Erhalten der Ausgaberoute von der Bestimmung
des Paketes oder dergleichen wird auf der Paketverarbeitungseinheit 102 ausgeführt.
-
Es
ist zu bevorzugen, die Auswahlerzeugungseinheit 101 und
die Paketverarbeitungseinheit 102 unabhängig zu betreiben. An dieser
Stelle besteht ein Bedarf wie durch beispielsweise Paketschlangen
zu verbinden. Im Fall der Implementierung unter Verwendung von LSI
ist es zu bevorzugen eine Konfiguration anzupassen, die einen geringeren
Umfang vom Speicher und eine geringere Anzahl von Zugriffen auf
diesen Speicher fordert. Aus diesem Grund kann eine Konfiguration,
wie in 6 gezeigt, als eine Modifizierung der in 1 gezeigten
Konfiguration verwendet werden.
-
In
der Konfiguration von 6 ist ein von außen eingegebenes
Paket in einem Paketspeicher 122 unter einer Steuerung
einer Speicherverwaltungseinheit 121 gespeichert. Dann
werden eine Speicheradresse, an der das Paket gespeichert ist, und
eine Information, die einen Zustand einer Eingabeschnittstelle anzeigt,
als ein einzelner Eintrag in eine erste Schlange 123 eingegeben.
-
Die
Auswahlerzeugungseinheit 101 nimmt aus der ersten Schlange 123 einen
Eintrag, der die Speicheradresse enthält, die das zu verarbeitende Paket
speichert, erhält
notwendige Information durch Zugreifen auf den Paketspeicher 122 über die
Speicherverwaltungseinheit 121 und führt die Auswahlerzeugung durch.
-
Die
Erzeugungsauswahlinformation wird zusammen mit einer Speicheradresse
des Paketes und der Eingabeschnittstellezustandsinformation als
ein einzelner Eintrag in eine zweite Schlange 124 eingegeben.
-
Die
Paketverarbeitungseinheit 102 nimmt aus der zweiten Schlange 124 einen
Eintrag, der das zu verarbeitende Paket enthält, und führt die Verarbeitung gemäß der Auswahlinformation
aus. An diesem Punkt wird die Verarbeitung auf das Paket in dem
Paketspeicher 122 gemäß der Notwendigkeit angewendet.
Danach wird eine Adresse, die das Paket speichert, auf das die Verarbeitung
angewendet wird, und Information, die die Ausgabeschnittstelle spezifiziert,
an die Paketübermittlungseinheit 103 übertragen.
Die Paketübermittlungseinheit 103 überträgt das spezifizierte
Paket an das spezifizierte Ausgabeendgerät gemäß dieser Information.
-
Mit
dieser Konfiguration wird es für
die Auswahlerzeugungseinheit 101 und die Paketverarbeitungseinheit 102 möglich ihre
entsprechende Verarbeitung hinsichtlich gegenseitig unterschiedlicher
Pakete auszuführen,
so dass die Pipelineparallelbetriebe realisiert werden können, während der
erforderliche Umfang von Speicher vermindert kann. Selbst wenn die
Verarbeitungszeiten der Auswahlerzeugungseinheit 101 und
der Paketverarbeitungseinheit 102 für verschiedene Pakete unterschiedlich
sind, ist es auch möglich
den Verarbeitungszeitjitter durch Absichern einer ausreichenden
Länge für die zweite Schlange 124 zu
absorbieren.
-
Als
nächstes
wird eine in 7 gezeigte Konfiguration und
ihr Betrieb betrieben, wie eine weitere Modifizierung der oben beschriebenen
beispielhaften Konfiguration.
-
In
der Konfiguration von 7 wird ein Paket von außerhalb
in die Auswahlerzeugungseinheit 101 zusammen mit Information
eingegeben, die den Zustand einer Eingabeschnittstelle anzeigt.
Die Auswahlerzeugungseinheit 101 führt die Auswahlerzeugung unmittelbar
aus und fügt
die erzeugte Auswahlinformation zusammen mit dem Paket und der Eingabeschnittstellenzustandsinformation
als einen einzelnen Eintrag in eine dritte Schlange 125 ein.
-
Die
Paketverarbeitungseinheit 102 nimmt ein in die dritte Schlange 125 eingegebenes
Paket heraus und wendet die Verarbeitung auf das Paket gemäß der angehangenen
Auswahlinformation an und gibt dieses Paket zusammen mit Information
aus, die das Ausgabeendgerät
spezifiziert, an die dieses Paket ausgegeben werden sollte, an die Paketübermittlungseinheit 103.
Die Paketübermittlungseinheit 103 überträgt dieses
Paket an das spezifizierte Ausgabeendgerät gemäß dieser Information.
-
In
diesem Fall führt
die Auswahlerzeugungseinheit 101 die Auswahlerzeugung ohne
Bezugnahme auf den Paketspeicher 122 aus, und dieses hat den
Vorteil, dass Konflikte von Zugriffen auf den Paketspeicher 122 durch
die Auswahlerzeugungseinheit 101 und die Paketverarbeitungseinheit 102 vermindert
werden können.
Es ist auch möglich
Funktionen in die Auswahlerzeugungseinheit 101 zu inkorporieren,
die ein Teil von Funktionen der Eingabeschnittstelle sind. Ein Beispiel
eines derartigen Falles schließt
den ein zum Handhaben von Bitströmen,
wie durch die Rahmensynchronisierung auf der Verknüpfungsschicht
dargestellt, und die CRC-Berechnung.
-
Als
nächstes
wird eine beispielhafte Konfiguration zum Realisieren der Unterbrechung
zu einer Zeit der Paketankunft durch einen genaueren Betrieb der
in 5 gezeigten Paketverarbeitungseinheit 102 beschrieben.
In dem Fall zum Realisieren der Unterbrechungsverarbeitung bestehen
technische Aufgaben einschließlich
wie eine Erlaubnis der Unterbrechung verboten wird.
-
In
diesem Fall weist der Prozessor 402 zwei Sätze von
Registern auf zum Speichern der Auswahlinformation. Eines dient
zum Speichern der Auswahlinformation zugehörig zu dem laufend verarbeiteten Paket
und das andere dient zum Speichern der Auswahlinformation zugehörig zu einem
Paket in dem anhängigen
Zustand. Der erstere wird bezeichnet als ein Verarbeitungsregister
und das letztere wird bezeichnet als ein anhängiges Register.
-
Wenn
die Auswahlinformation an dem Prozessor 402 ankommt, wird
diese Auswahlinformation zuerst in dem anhängigen Register gespeichert. Wenn
die Auswahlinformation an dem anhängigen Register ankommt, wird
eine Unterbrechungsnummer aus der Auswahlinformation erzeugt und
die Unterbrechung an den Prozessor 402 wird versucht.
-
Wenn
die Unterbrechung zu dem Prozessor 402 erlaubt wird, wird
eine Steuerung an das Paketverarbeitungsprogramm übertragen,
das die Unterbrechungshandhabungsroutine ist. Zur gleichen Zeit wird
die Auswahlinformation an das Verarbeitungsregister übertragen.
Wenn eine Schlange zwischen der Paketverarbeitungseinheit 102 und
der Auswahlerzeugungseinheit 101 besteht, wird die Auswahlinformation,
die sich in dieser Schlange befindet fortgesetzt, und die Spitze
wird an das anhängige
Register übertragen.
-
Der
Prozessor 402 ist in dem Zustand, in dem eine Unterbrechung
nicht ermöglicht
wird, während
das Paketverarbeitungsprogramm ausgeführt wird. Durch Ausführen eines
Unterbrechungsermöglichungsbefehls
zu der Zeitseinstellung einer Vervollständigung der Paketverarbeitung
wird die Verarbeitung der nächsten
Auswahlinformation gestartet.
-
Die
Auswahlinformationserzeugung und die Paketverarbeitungsroutinenkonfiguration
werden oben für
einen beispielhaften Fall einer Klassifizierung gemäß eines
Unterschiedes in der auf das Paket anzuwendenden Verarbeitung beschrieben,
aber die Klassifizierung anders als die gemäß eines Unterschiedes in der
Verarbeitung ist auch möglich.
-
Verschiedene
Modifizierungen der Auswahlinformation werden nun beschrieben.
-
Zum
Beispiel können
selbst in dem Fall zum Ausführen
der gleichen Verarbeitung mehrere Wege zum Realisieren dieser Verarbeitung
bestehen. In der Paketverarbeitungseinheit 102 wird häufig eine
Suche durch eine Datenbasis (nicht gezeigt) unter Verwenden eines
spezifischen Feldes des Kopfes des Paketes als ein Schlüssel ausgeführt. Es
wird angenommen, dass eine Mehrzahl von Algorithmen für die Datenbasissuche
bestehen, und dass ein Umfang von Berechnungen oder Verzögerungen
der Suche unterschiedlich ist, abhängig von einem Typ des Schlüssels und
einer Verteilung dieses Schlüssels auf
der Datenbasis. Dieses ist ein Fall, der oft in der Datenbasissuche
zum Bestimmen eines Ausgabeendgerätes (Ausgabeschnittstelle)
unter Verwenden einer Netzwerkadresse als einen Schlüssel auftritt.
-
Nun
wird angenommen, dass vier Suchalgorithmen bestehen und der Suchschlüssel mit
einem 32 Bitfeld gegeben ist. Ferner wird angenommen, dass dieser
32 Bitplatz in 128 gleiche Teile geteilt werden soll, und der effizienteste
Suchalgorithmus im Mittel für
jeden Teil bestimmt werden kann. Dieser Betrieb wird bestimmt gemäß Charakteristiken
der Datenbasis und soll offline separat von der Echtzeitverarbeitung
der Paketverarbeitung ausgeführt
werden. Als ein Ergebnis wird eine Korrespondenz zwischen den oberen
7 Bits von 32 Bits und einem 2 Bitidentifizierer zum Spezifizieren
des Suchalgorithmus bestimmt. Es ist auch möglich die Auswahlinformation
zu erstellen zum Erhalten des Identifizierers zum Spezifizieren
des Suchalgorithmus und ebenso der Auswahlerzeugungseinheit 101 zum
Erzeugen der Information zum Spezifizieren des Suchalgorithmus für die oberen
7 Bits einer 32 Bitnetzwerkadresse, wie oben beschrieben. Eine derartige
Auswahlinformation kann durch eine Verweistafel erzeugt werden, die
durch einen Halbleiterspeicher oder durch einige logische Berechnungen
realisiert werden.
-
Man
bemerke auch, dass eine Mehrzahl von Bitsequenzen, die in der Auswahlinformation
verwendet werden, aus dem Kopf des Paketes an der Auswahlerzeugungseinheit 101 extrahiert
werden, und derartige Bitsequenzen auch oft erfordern nochmals an
der Paketverarbeitungseinheit 102 extrahiert zu werden.
Die Bitsequenzenextrahierung wird normalerweise Verschiebungsberechnungen
oder Maskenberechnung zugeordnet, und wenn diese Operationen bzw.
Betrieb einmal durchgeführt
worden sind in der Auswahlerzeugungseinheit 101, besteht
kein Bedarf zum nochmaligen Ausführen
dieser Operationen in der Paketverarbeitungseinheit 102.
Die extrahierte Information kann als ein Teil der Auswahlinformation direkt
an die Paketverarbeitungseinheit 102 mitgeteilt werden
zum Auslassen der unnötigen
Wiederholung. Auf diese Weise kann die Verarbeitungslast der Paketverarbeitungseinheit 102 vermindert
werden und die Leseanfrage unter Berücksichtigung des Paketpuffers
kann vermindert werden, so dass der Durchsatz verbessert werden
kann.
-
Als
nächstes
wird der Fall zum Geben der Parameter zusammen mit der Auswahlinformation aus
der Auswahlerzeugungseinheit 101 an die Paketverarbeitungseinheit 102 beschrieben.
-
An
der Auswahlerzeugungseinheit 101 können eine oder eine Mehrzahl
von vorgeschriebenen Bitsequenzen separat aus der Extrahierung einer Mehrzahl
von Bitsequenzen extrahiert werden für den Zweck der Auswahlinformation
und jeder von: (1) der beschriebenen einen oder Mehrzahl von Bitsequenzen;
(2) der vorgeschrieben einen oder einer Mehrzahl von Bitsequenzen
mit Daten eines Teils einer Ganzheit der Mehrzahl von extrahierten
Bitsequenzen addiert für
den Zweck der Auswahlinformation; (3) Daten, die durch Verarbeitung
von den obigen (1) Daten erhalten werden; (4) Daten, die durch eine
Verarbeitung von den obigen (2) Daten erhalten werden; (5) einen
Teil oder eine Ganzheit der Mehrzahl von extrahierten Bitsequenzen
für den
Zweck der Auswahlinformation, oder (6) Daten, die durch Verarbeiten
von den obigen (5) Daten erhalten werden, können als die Parameter an die
Paketverarbeitungseinheit gegeben werden. Man bemerke, dass es auch
möglich
ist den gesamten Paketkopf als zusätzliche Information zu verwenden.
-
Die
in einem Prozess zum Erzeugen der Auswahlinformation hergestellten
Parameter können effizient
ebenso an der Paketverarbeitungseinheit 102 verwendet werden
(obwohl derartige Parameter vorzugsweise auf eine Weise verwendet
werden sollten, die keinerlei Seiteneffekt bewirken).
-
Zum
Beispiel wird der Fall betrachtet, in dem eine Suche durch eine
(nicht gezeigte) Datenbasis unter Verwenden eines Wertes von einem
Feld, wie einem Schlüssel,
ausgeführt
werden soll auf der Paketverarbeitungseinheit 102, und
eine Hash-Berechnung
unter Verwenden eines Teils oder einer Ganzheit des gleichen Feldes
ausgeführt
werden soll zu einer Zeit zum Erzeugen der Auswahlinformation. In diesem
Fall ist es möglich
die gesamte Anzahl von Schlüsseln
zu vermindern, um Ziele der Suche zu sein durch Teilen der Schlüssel der
Datenbasis in ein direktes Produkt von kleinere Datenbasen durch
ihr Klassifizieren gemäß dieser
Hash-Funktion, so dass es möglich
ist eine schnellere Verarbeitung in dem Fall zu realisieren, wo
die Suchalgorithmen einen Umfang von Berechnungen erfordern, der
proportional zu der gesamten Anzahl von Schlüsseln ist.
-
Es
ist auch möglich
die Paketverarbeitungseinheit 102 wie folgt konfiguriert
zu betrachten.
-
In
der Paketverarbeitungseinheit 102 werden häufig verwendete
Daten oft zeitweise in einem schnellen Cash-Speicher gespeichert,
um eine schnellere Datenbasissuche zu realisieren. In diesem Fall
wird die Cash-Trefferrate höher
und ein Beitrag zu einer schnellen Realisierung wird größer, wenn
eine Korrelation zwischen Daten auf dem Cash und Daten höher ist,
die in der Suchoperation erforderlich sind unter Berücksichtigung
eines Paketes, das tatsächlich
angekommen ist.
-
Als
ein Verfahren zum Erhöhen
der Möglichkeit
zum Erhalten von höher
korrelierten Daten auf dem Cash wird oft ein Verfahren verwendet,
das als Vor-Hol-Betrieb bzw. Operation (pre-fetch operation) bekannt
ist. Dieses ist eine Operation, in der ein Lesen aus einem Hauptspeicher
zu dem Cash spekulativ gemacht wird durch im Voraus Lesen von solchen Daten,
die eine höhere
Möglichkeit
aufweisen, dass auf sie in näherer
Zukunft Bezug genommen wird. Dieses wird nur getan, wenn keine Randeffekte
infolge von Lesen dieser Daten bestehen und es nichts ausmacht,
ob die in dem Cash gelesenen Daten tatsächlich verwendet werden oder
nicht.
-
Damit
diese Vor-Hol-Operation (pre-fetch operation) effektiv ist, sollte
die Zeit vom Vor-Holen zum Verwenden hinreichend länger sein
als die Verzögerungszeit
infolge vom Lesen aus dem Hauptspeicher zu dem Cash. Mit anderen
Worten besteht eine Notwendigkeit zum Ausführen der Vor-Hol-Operation
hinreichend im Voraus.
-
Jedoch
ist es schwierig eine hinreichend lange Verzögerungszeit zu realisieren,
um die Vor-Hol-Operation effektiv zu machen, wenn das Vor-Holen
durch Extrahieren von Feldern des Paketes und Erhalten einer Adresse
der Datenbasis gemäß dem ausgeführt wird,
nur nachdem das Paket angekommen ist.
-
Im
Hinblick darauf ist es möglich,
ein Auswahlerzeugungsverfahren anzupassen, in dem die zu extrahierenden
Bitsequenzen an der Auswahlerzeugungseinheit 101 die Bitsequenzen
sind, die Teile einschließen,
die Schlüssel
für die
Datenbasissuche sein sollen, und Werte, die als Adressen für die Speicherzugriffe
der Datenbasissuche verwendet werden sollen, als ein Zwischenergebnis
der Auswahlerzeugung erhalten werden können. Genauer gesagt ist es möglich ein
Schema anzupassen, in dem eine Cash-Tafel als ein Datenbasissuchalgorithmus
verwendet werden soll und die Auswahlinformation erzeugt wird durch
Verwenden der gleichen Cash-Funktion, die auf der Cash-Tafel verwendet wird,
wie oben beschrieben.
-
In
diesem Fall werden Adressen, die in Zugriffen auf die Cash-Tafel verwendet werden
sollen, bereits als ein Zwischenergebnis der Berechnungen berechnet,
die sich auf die Auswahlinformation beziehen, so dass diese Adressen
als die Parameter an die Paketverarbeitungseinheit 102 mitgeteilt
werden, die an die Auswahlinformation angehangen sind. An der Paketverarbeitungseinheit 102 wird
die Vor-Hol-Operation ausgeführt
unter Verwenden von Werten der empfangenen Parameter als Adressen der
Datenbasen, sobald die Paketverarbeitungsroutine aktiviert ist.
Auf diese Weise wird es möglich
die Vor-Hol-Operation in dem frühest
möglichen
Zustand der Paketverarbeitung auszuführen, so dass ein größerer Effekt
zum Verstecken der Verzögerung
realisiert werden kann.
-
Alternativ
ist es auch möglich
spekulativ die Datenbasissuche durch Berücksichtigung von Werten der
empfangenen Parameter als Speicheradressen der Datenbasissuche auszuführen, zu
einer Zeiteinstellung, in der die Auswahlinformation an die Paketverarbeitungseinheit 102 mitgeteilt
wird. In diesem Fall wird die Zeit bis zum Aktivieren der Paketverarbeitungsroutine
auch die Verzögerung
in dem Vor-Holen verstecken, so dass es möglich ist einen noch größeren Effekt
des Vor-Holens zu erwarten.
-
Als
eine weitere Modifizierung der Auswahlinformation ist es auch möglich eine
Prioritätssteuerungsinformation
eines Paketes in der Auswahlinformation wie folgt einzuschließen.
-
Als
erstes wird eine Kombination einer Prioritätssteuerungsinformation eines
Pakets und eines Protokollidentifizierers zum Spezifizieren eines
oberen Ebenenprotokolls eines Paketes betrachtet werden. Hier unterscheidet
sich ein Paketverarbeitungsverfahren stark auf eine Weise, auf die
jedes spezifiziert ist. Es ist ineffizient beide von ihnen durch
ein einzelnes Programm zu realisieren, wie bereits oben erwähnt.
-
Wenn
hier die Prioritätssteuerungsinformation
8 Bit und die oberen Ebenenprotokollspezifizierung 8 Bit ist, würde eine
direkte Kombination 16 Bit sein. Es ist auch möglich ein optimiertes Programm für jedes
von ihnen bereitzustellen.
-
Es
ist auch möglich ähnliche
Typen von Verarbeitungen kollektiv zu handhaben. Zum Beispiel kann
die Verarbeitung mit beträchtlich
weniger Programmen als die direkte Kombination realisiert werden
durch Handhaben all der Protokolle, die die gleiche Verarbeitung
erfordern durch ein einzelnes Programm.
-
Die
8 Bit-Prioritätssteuerungsinformation wird
in einen 3 Bitidentifizierer gemäß einer
Klassifizierung von ähnlichen
Typen beispielsweise umgewandelt und die 8 Bit-Protokollnummer wird
in einen 2 Bit-Identifizierer gemäß einer Klassifizierung von ähnlichen
Typen von Verarbeitungen umgewandelt. Der so erhaltene 3 Bit-Identifizierer
und der 2 Bit-Identifizierer werden in einen Identifizierer von
5 Bits oder ähnlich
umgewandelt, durch Anwenden einiger logischer Berechnungen (was
eine einfache Verkettung sein kann). Dies wird dann verwendet als die
Auswahlinformation. Die Paketverarbeitungseinheit 102 aktiviert
die zu aktivierende Paketverarbeitungsroutine gemäß dieser
Auswahlinformation. In dem hier beschriebenen Beispiel kann einer
der 32 Typen der Paketverarbeitungsroutinen ausgewählt werden.
Jeder dieser Paketverarbeitungsroutinen enthält eine Verarbeitung mit Bezug
auf die Prioritätssteuerung,
die durch den 3 Bit-Identifizierer
spezifiziert wird.
-
Jetzt
ist die Anzahl von Bits, die als die Auswahlinformation verwendet
werden soll endlich. Zum Beispiel ist es möglich, klassifizierte Typen
in Erweiterung der Speicherkapazität der Paketverarbeitungsroutinen
(4011 bis 4014 von 5) zu erzeugen.
Es besteht auch eine Beschränkung
infolge der Bitbreite eines Kommunikationspfades zwischen der Auswahlerzeugungseinheit 101 und
der Paketverarbeitungseinheit 102. Andererseits würden mehrklassifizierte
Typen von Paketen implizieren, dass die Auswahlerzeugungseinheit 100 eine
detaillierter Pakettypbeurteilung ausführen kann, so dass die Paketverarbeitungsroutine
mehr spezialisiert sein kann, und die Verarbeitungsleistung der
Paketverarbeitungseinheit 102 verbessert werden kann.
-
Folglicherweise
ist zu bevorzugen die Bitlänge
der Auswahlinformation, die durch die Auswahlerzeugungseinheit 101 erzeugt
werden soll, einerseits solang wie möglich einzustellen, aber es
ist andererseits vorzuziehen, die Anzahl der gleichzeitig durch die
Paketverarbeitungseinheit 102 handzuhabende Auswahlinformation
so klein wie möglich
einzustellen. Im Folgenden wird ein Verfahren zum Genügen beider
dieser Erfordernisse beschrieben.
-
An
der Auswahlerzeugungseinheit 101 wird eine durch eine große Anzahl
von Bits gegebene Information als eine virtuelle Auswahlinformation
erzeugt. Die Paketverarbeitungsroutinen werden im Zusammenhang mit
einer derartigen virtuellen Auswahlinformation bereitgestellt.
-
Wie
in 8 beschrieben, wird an einer Schnittstelle, die
die Auswahlerzeugungseinheit 101 und die Paketverarbeitungseinheit 102 verbindet, eine
Auswahlinformationsumwandlungseinheit 120 zum Umwandeln
der virtuellen Auswahlinformation in eine physikalische Auswahlinformation,
die durch eine Anzahl von Bits gegeben ist, die tatsächlich an die
Paketverarbeitungseinheit 102 mitgeteilt werden kann, bereitgestellt.
Die an die Paketverarbeitungseinheit 102 zu sendende Auswahlinformation
kann durch Umwandeln der virtuellen Auswahlinformation in die physikalische
Auswahlinformation unter Verwenden dieser Auswahlinformationsumwandlungseinheit 120 erzeugt
werden.
-
Wenn
die Korrespondenz zwischen der virtuellen Auswahlinformation und
der physikalischen Auswahlinformation durch die Steuerungsfunktion der
Auswahlinformationsumwandlungseinheit 120 bestimmt wird,
wird diese Korrespondenz in eine Umwandlungstafel innerhalb der
Auswahlinformationsumwandlungseinheit 120 durch eine Umwandlungstafelschreibfunktion
reflektiert, und die Paketverarbeitungsroutine, die zu dem klassifizierten
Typ der virtuellen Auswahlinformation gehört, wird in dem Programmspeicher
der Paketverarbeitungseinheit 102 als die Paketverarbeitungsroutine
gespeichert, die zu der physikalischen Auswahlinformation gehört.
-
Die
virtuelle Auswahlinformation hat eine längere Bitlänge als die physikalische Auswahlinformation,
so dass virtuelle Auswahlinformation besteht, die nicht zu irgendeiner
spezifischen physikalischen Auswahlinformation zugeordnet werden
kann. Eine physikalische Auswahlinformation, dargestellt als „andere", wird zu dieser
virtuellen Auswahlinformation zugewiesen, und eine allgemeine Verarbeitungsroutine
zum Verarbeiten, ohne irgendeine Pakettypklassifizierung anzunehmen,
wird als die Paketverarbeitungsroutine zugewiesen, zugehörig zu der
physikalischen Auswahlinformation, die durch „andere" dargestellt wird, und in dem Programmspeicher
gespeichert.
-
Die
Verarbeitungsleistung der allgemeinen Verarbeitungsroutine ist geringer
als die Verarbeitungsleistung der spezifizierten Verarbeitungsroutine,
so dass es vorzuziehen ist, die Frequenz zum Aktivieren der allgemeinen
Verarbeitungsroutine auf ein Minimum zu unterdrücken. Aus diesem Grund sollte die
Umwandlungstafelsteuerungsfunktion eine derartige Korrespondenz
zwischen der virtuellen Auswahlinformation und der physikalischen
Auswahlinformation herausfinden, die eine Frequenz zum Auswählen von „anderen" so niedrig wie möglich unter
der Umgebung macht, in der diese Paketverarbeitungsvorrichtung platziert
ist, und eine derartige Zugehörigkeit in
der Umwandlungstafel reflektiert.
-
Als
ein effizienterer Weg zum Erzeugen der Umwandlungstafel ist es auch
möglich
die folgende Konfiguration zu verwenden.
-
In
der Umwandlungstafel zum Umwandeln aus der virtuellen Auswahlinformation
in die physikalische Auswahlinformation wird ein Zähler zum
Zählen
der Anzahlen von Malen für
jede virtuelle Auswahlinformation bereitgestellt, für die die
eingegebene virtuelle Auswahlinformation eingegeben wird.
-
Die
Umwandlungstafelsteuerungsfunktion kann die Frequenz eines Auftretens
jeder virtuellen Auswahlinformation gemäß dem individuellen Zählwert erhalten
und die physikalische Auswahlinformation an die virtuelle Auswahlinformation
mit einer höheren
Frequenz von Auftritten zuweisen.
-
Genauer
gesagt ist es möglich
die folgende Prozedur anzupassen.
-
Als
ein anfänglicher
Zustand wird die physikalisch Auswahlinformation, die „andere" darstellt, zu jeder
virtuellen Auswahlinformation zugewiesen. Nach einem Betreiben der
Paketverarbeitungsvorrichtung in diesem Zustand in einem derartigen
Ausmaß,
dass eine signifikante Messung einer Frequenz von Auftritten der
virtuellen Auswahlinformation geleitet wird, wird die Korrespondenz
zwischen der virtuellen Auswahlinformation und der physikalischen Auswahlinformation
bestimmt und in die Umwandlungstafel reflektiert. Selbst danach
wird die Messung der Frequenz von Auftritten fortgesetzt, und wenn
beurteilt wird, dass eine signifikante Differenz von den früher erhaltenen
Korrespondenzen erkannt wird, werden die Umwandlungstafel und die
Paketverarbeitungsroutine durch die ersetzt, die die neuen Korrespondenzen
reflektieren.
-
Bezugnehmend
nun auf 9 bis 13 wird
die zweite Ausführungsform
einer Paketverarbeitungsvorrichtung und eines Paketverarbeitungsverfahrens
gemäß der vorliegenden
Erfindung im Detail beschrieben.
-
9 zeigt
eine beispielhafte Konfiguration einer Paketverarbeitungsvorrichtung
(oder Nachrichtverarbeitungsvorrichtung) gemäß der zweiten Ausführungsform
der vorliegenden Erfindung.
-
Wie
in 9 gezeigt, umfasst die Paketverarbeitungsvorrichtung
der zweiten Ausführungsform ein
Systembus 501, einen Hauptspeicher 502, einen Eingabe-/Ausgabeport 503,
eine Speicherzugriffssteuerungseinheit 504, einen Cache 505,
eine Pipeline 506, ein Register 507, eine Auswahlerzeugungseinheit 508,
eine Paketverarbeitungsanweisungssequenzerzeugungseinheit 509,
eine Mikroanweisungssequenztafel 510, und eine Anweisungssequenzschlange 511.
-
Hier
stellen die Speicherzugriffssteuerungseinheit 504, der
Cache 505, die Pipeline 605 und das Register 507 eine
Anweisungsverarbeitungseinheit 520 zum Interpretieren und
Ausführen
von Anweisungssequenzen dar, die in dem Hauptspeicher 502 enthalten
sind und Verarbeitungen anwenden, die durch diese Anweisungssequenzen
spezifiziert sind auf Daten.
-
Man
bemerke hier, dass der Cache 505 in einen Anweisungscache 505-1 zum
Cachen eines Teils von Anweisungssequenzen und einen Datencache 505-2 zum
Cachen eines Teils von Daten geteilt ist, auf die die Verarbeitungen
angewendet werden sollen.
-
Auch
dort können
viele mögliche
Konfiguration der Pipeline 506 zum Ausführen von Anweisungen sein,
aber es wird für
eine gut bekannte Pipeline angenommen, fünf Stufen zu haben, Holen 506-1, Dekodieren 506-2,
Ausführen 506-3,
Speicherzugriff 506-4 und Zurückschreiben 506-5.
-
Der
Hauptspeicher 502 zum Speichern von Anweisungssequenzen,
die Informationsverarbeitungsprozeduren und zu verarbeitenden Daten
anzeigen, der Eingabe-/Ausgabeport 503, der eine Hardware
zum Eingeben/Ausgeben von Daten unter Berücksichtigung einer äußeren Eingabe
ist, die Auswahlerzeugungseinheit 508, die Paketverarbeitungsanweisungssequenzerzeugungseinheit 509 und
die Anweisungsverarbeitungseinheit 520 sind durch einen
Systembus 501 verbunden.
-
Die
grundlegende Konfiguration und Betrieb dieser zweiten Ausführungsform
sind ähnlich
zu den der ersten Ausführungsform
(die Beschreibung von Variationen sind ähnlich anzuwenden), so dass
spezifische Merkmale der Konfiguration von 9 hauptsächlich im
Folgenden beschrieben werden.
-
Die
Auswahlerzeugungseinheit 508 ist ähnlich zu der der ersten Ausführungsform,
die den Kopfteil des von außen
eingegebenen Paketes empfängt und
die Auswahlinformation erzeugt. Sie kann auch zusätzliche
Information (Parameter) erzeugen, wie in der ersten Ausführungsform.
-
Die
Paketverarbeitungsanweisungserzeugungseinheit 509 hat eine
Funktion zum Empfangen der Auswahlinformation aus der Auswahlerzeugungseinheit 508,
Erzeugen einer Anweisungssequenz für den Zweck zum Verarbeiten
dieses Paketes gemäß einer
unten beschriebenen Prozedur, und sein Weitergeben an die Anweisungssequenzschlange 511.
Die zu erzeugende Anweisungssequenz wird hier durch Bezugnehmen
auf den Inhalt der Mikroanweisungssequenztafel 510 erzeugt.
-
Das
von außen
ankommende Paket wird in einem vorgeschriebenen Bereich in dem Hauptspeicher 502 gespeichert über den
Eingabe-/Ausgabeport 503 und
den Systembus 501.
-
Danach
werden vorgeschriebene Abschnitte (eine Mehrzahl von Bitsequenzen),
wie ein Kopf der Datenverknüpfungsebene,
ein Kopf der Netzwerkebene und ein Kopf der Transportebene zum Beispiel, extrahiert
und zu der Auswahlerzeugungseinheit 508 gegeben. Diese
Verarbeitung kann durch die Anweisungssequenz ausgeführt werden,
die in dem Hauptspeicher 502 gespeichert ist. Danach werden
diese vorgeschriebenen Abschnitte als Verarbeitungssteuerungsinformation
für Erklärungszwecke
bezeichnet. Auch diese Verarbeitungssteuerungsinformation kann Information
enthalten, die eine Position anzeigt, an der das Paket in dem Hauptspeicher 502 gespeichert
ist.
-
Beim
Empfangen der Verarbeitungssteuerungsinformation von dem Eingabe-/Ausgabeport 503 erzeugt
die Auswahlerzeugungseinheit 508 die Auswahlinformation
aus dieser Information.
-
Beim
Empfangen der Auswahlinformation aus der Auswahlerzeugungseinheit 508 erzeugt
die Paketverarbeitungsanweisungssequenzerzeugungseinheit 509 die
Anweisungssequenz.
-
Hier
hält die
Mikroanweisungssequenztafel 510 ausführbare Anweisungssequenzen
(Sequenzen von Mikroanweisungen) für den Zweck einer Realisierung
der Verarbeitungen gemäß den entsprechenden
Pakettypen, wie in 10 gezeigt ist. Die Paketverarbeitungsanweisungssequenzerzeugungseinheit 509 liest
die Anweisungssequenz gemäß der erzeugten
Auswahlinformation aus der Mikroanweisungssequenztafel 510 aus
und speichert sie in der Anweisungssequenzschlange 511.
-
Andererseits
liest die Anweisungsverarbeitungseinheit 520 die Anweisungssequenz
aus dem Hauptspeicher 502 in den Anweisungscache 505-1 gemäß einem
Programmzähler
(nicht gezeigt), der darin bereitgestellt wird, und führt sequentiell
diese Anweisungssequenzen durch Verwenden der Pipeline 506 durch.
-
An
diesem Punkt spielt jede Stufe der Pipeline 506 die folgende
entsprechende zugewiesene Rolle:
- * Die Holen 506-1 holt
eine Anweisung aus dem Anweisungscache 505-1.
- * Die Decodieren 506-2 decodiert diese Anweisung und
bestimmt eine nachfolgende Pipeline und einen Operationsinhalt des
Registers 507.
- * Die Ausführen 506-3 verwendet
eine Verarbeitung auf Daten an, die aus dem Register 507 gemäß einem
Befehl der Dekodieren 506-2 gegeben wird.
- * Die Speicherzugriff 506-4 schreibt entweder Daten,
die von der Ausführen 506-3 durch
der Datencache 505-2 gegeben werden oder gibt sie an die nächste Stufe.
- * Die Zurückschreiben 506-5 schreibt
Daten zurück,
die von der Speicherzugriff 506-4 an das Register 507 gegeben
werden.
-
In
dem Fall dieser Paketverarbeitungsvorrichtung sind verarbeitende
Anweisungssequenzen nicht nur auf dem Hauptspeicher 502,
sondern auch in der Anweisungssequenzschlange 511, so dass
die Holen 506-1 Anweisungen alternativ von den Anweisungssequenzen
auf dem Hauptspeicher 502 und der Anweisungssequenzschlange 511 holt
und die geholten Anweisungen an die nachfolgenden Stufen gibt, wann
immer eine vorgeschriebene Bedingung gehalten wird, wie die, dass
die Anweisungssequenzschlange 511 nicht leer ist. Auf diese
Weise wird die durch Paketverarbeitungs-Anweisungs- Sequenzerzeugungseinheit 509 erzeugte
Anweisungssequenz ausgeführt,
und dadurch wird eine gewünschte
Verarbeitung unter Berücksichtigung
des eingegebenen Paketes ausgeführt.
-
In
diesem Fall eines Ausführens
einer Mehrzahl von unabhängigen
Anweisungssequenzen (das bedeutet, die Anweisungssequenz von dem
Hauptspeicher 502 und die Anweisungssequenz von der Anweisungsschlange 511),
die sich auf diese Weise abwechseln, kann das Register exklusiv
zu jeder Anweisungssequenz zugewiesen werden. Auf diese Weise kann
das Anhalten der Pipeline 506 infolge einer Registergefährdung vermieden
werden.
-
In
der zweiten Ausführungsform
ist die Anweisungssequenz für
jede Verarbeitungsroutine zugehörig
zu der Auswahlinformation in der Mikroanweisungssequenztafel 510 enthalten,
aber diese Mikroanweisungssequenztafel 510 kann durch ein
wiederbeschreibbares Speichermedium gebildet werden, so dass die
Tafel durch Wiederschreiben entsprechender Verarbeitungsroutinen
entsprechend des Bedürfnisses
wieder konfiguriert werden. Auf diese Weise wird es möglich die
Veränderung
in detaillierten Teilen der Protokollspezifizierung flexibel zu
handhaben. In diesem Fall ist es auch möglich eine Konfiguration anzupassen,
in der die Mikroanweisungssequenztafel 510 mit dem Systembus 501 derart
verbunden ist, dass die Mikroanweisungssequenztafel 510 durch
Ausführen
der Anweisungssequenz auf dem Hauptspeicher 502 wiedergeschrieben
werden kann.
-
Auch
in der zweiten Ausführungsform
kann die Anweisungssequenz für
den Zweck der Protokollverarbeitung, die durch die Paketverarbeitungsanweisungssequenzerzeugungseinheit 509 erzeugt
wird, und die Anweisungssequenz, die aus dem Hauptspeicher 502 gemäß dem Programmzähler (nicht
gezeigt) der Anweisungsverarbeitungseinheit 520 gelesen
wird, leicht (Datenspeicherbereiche des) Hauptspeichers 502 teilen. Aus
diesem Grund ist es auch möglich
leicht eine Überwachungssteuerung
der Protokollverarbeitungsoperation zu realisieren, die durch die
Anweisungssequenz von der Paketverarbeitungssequenzerzeugungseinheit 509 durch
Anwenden eines Betriebssystems ausgeführt wird, dass durch die Anweisungssequenz
auf dem Hauptspeicher 502 beispielsweise ausgeführt wird.
-
Nun
kann die Auswahlinformation nicht nur Information zum Auswählen der
Paketverarbeitungsroutine enthalten, sondern auch Information bezüglich des
Paketes selbst. In einem derartigen Fall kann die Paketverarbeitungs-Anweisungs-Sequenzerzeugungseinheit 509 eine
effiziente Anweisungssequenz durch Verwenden der Auswahlinformation
erzeugen anstelle die Anweisungen einfach von der Anweisungstafel
in die Pipeline einzugeben. Eine Konfiguration in einem derartigen
Fall wird nun beschrieben.
-
11 zeigt
eine beispielhafte Konfiguration der Paketverarbeitungsvorrichtung
für einen
derartigen Fall. Im Folgenden werden die Unterschiede von der Konfiguration
von 9 hauptsächlich
beschrieben.
-
Die
unter Berücksichtigung
des Paketes auszuführenden
Verarbeitungsroutinen schließen
viele gemeinsame Operationen ein. Zum Beispiel eine Operation zum
Auslesen der Bitsequenz von dem Kopf und Wiederschreieben derer
in die Paketkopfverarbeitung, und einen Betrieb zum Hashen und Schlüsselanpassen
in einer indirekten Mehrfachspeicher-Adressierung oder einer verknüpften Listentraversal,
ein inhaltsadressierbarer Speicherzugriff, wie er unter Berücksichtigung
der Routingtafel zugreift, sind grundlegende Operationen, die gemeinsam
in der Paketverarbeitung verwendet werden. Diese Operationen können durch
Mikroanweisungssequenzen realisiert werden, und eine Makroanweisung,
die die Mikroanweisungssequenzen als eine einzelne Anweisung codieren,
können
definiert werden. Dann werden die Paketverarbeitungsroutinen als
Makroanweisungssequenzen in einer Makroanweisungssequenztafel 531 von 11 in
einer in 12 gezeigten Form gespeichert,
während
die Mikroanweisungssequenzen für
jede Makroanweisung in einer Mikroanweisungssequenztafel 532 von 11 in
einer in 13 gezeigten Form gespeichert
werden.
-
Nach
Empfangen der Auswahlinformation aus der Auswahlerzeugungseinheit 508 liest
die Paketverarbeitungsanweisungssequenzerzeugungseinheit 509 eine
Makroanweisungssequenz zugehörig
zu der Auswahlinformation aus der Makroanweisungssequenztafel 531 aus,
liest die zugehörige
Mikroanweisungssequenz für
jede Makroanweisung der Makroanweisungssequenz aus der Mikroanweisungssequenztafel 532 aus,
und schreibt sie in die Anweisungssequenzschlange 511.
-
Die
Paketverarbeitung wird durch Ausführen dieser Mikroanweisungssequenzen
in der Pipeline 506 der Anweisungsverarbeitungseinheit 520 ausgeführt.
-
Beim
Erzeugen der Mikroanweisungssequenzen an der Paketverarbeitungsanweisungssequenzerzeugungseinheit 509 anstelle
von Schreiben der Mikroanweisungen, die aus der Mikroanweisungssequenztafel 532 direkt
in die Anweisungssequenzschlange 511 gelesen werden, ist
es auch möglich
die folgende Umwandlung auf die Mikroanweisungen anzuwenden, bevor
sie in die Anweisungssequenzschlange 511 geschrieben werden,
so dass kürzere,
effizientere Mikroanweisungen an der Anweisungsverarbeitungseinheit 520 ausgeführt werden
können.
Wenn nämlich
die Mikroanweisung einen Operand aufweist, der sich auf die Auswahlinformation
bezieht, kann die Auswahlinformation in die Mirkoanweisung als ein
unmittelbares eingebettet werden.
-
Wenn
zum Beispiel eine Auswahlinformation D an der Adresse A des Datencaches 505 sich
befindet, kann die Mikroanweisungssequenz zum Ausführen einer
Additionsberechnung unter Berücksichtigung
auf andere Daten B durch die folgende Anweisungssequenz gegeben
werden.
load R, mem[A] // lade vom Speicher, von Adresse A in
Register R
add R, R, B // füge
R und B in Register R hinzu
Hier ist es durch Umwandeln der
Auswahlinformation, die sich auf eine unmittelbare (immediate) bezieht derart,
dass ein Speicherzugriff eine Registerersetzung wird, möglich die
folgende Anweisungssequenz zu erzeugen.
move R, D// bewege
Wert D in Register R
add R, R, B // füge R und B in Register R zu
Als
ein anderes Beispiel, wenn es möglich
ist eine Nummer bzw. Anzahl zu spezifizieren, die ein Einbetten
der Auswahlinformation als ein Immediate einbettet, anstelle der
Registernummer, in einem Registernummernteil der Mikroanweisung,
kann die obige Anweisungssequenz wie folgt ausgedrückt werden.
add
R, digest-value, B // füge
Auswahlwert und B in Register R zu
In diesem Fall kann die
Paketverarbeitungsanweisungssequenzerzeugungseinheit 509 diese
Anweisungssequenz durch Ersetzen des Auswahlinformationsteils dieser
Anweisungssequenz mit dem tatsächlichen
Wert der Auswahlinformation wie folgt umwandeln.
add R, D,
B // füge
D und B in Register R zu
Man bemerke, dass in beiden, der ersten
und zweiten Ausführungsform,
der Pakettyp zuerst gemäß des Kopfteils
in dem eingegebenen Paket klassifiziert ist und dann die Anweisungssequenz
für die
Paketverarbeitung gemäß dem klassifizierten
Typ erzeugt wird, dass die Anzahl von Bedingungsästen, die in der Anweisungssequenz
der Protokollverarbeitung enthalten sind, vermindert werden können. In
dem Stand der Technik sind viele Bedingungsverästelungen in der Anweisungssequenz
der Protokollverarbeitung involviert, da die notwendige Verarbeitung ausgeführt wird,
während
der Pakettyp durch sequentielles Lesen von Feldern des Headerteils
klassifiziert wird, so dass viele Pipelinestörungen aufgetreten sind, und
dieses das Haupthindernis zum Realisieren der schnellen Protokollverarbeitung
im Stand der Technik war. Diesbezüglich wird es in der vorliegenden
Erfindung möglich
die Protokollverarbeitung durch die Anweisungssequenz mit der verminderten Anzahl
von Bedingungsverästelungen
auszuführen derart,
dass die Pipelinestörungen
auf ein Minimum unterdrückt
werden können,
und es möglich
wird die Protokollverarbeitung zu realisieren, die den vollen Vorteil
der Pipelineleistung erhält.
-
Wie
gemäß der vorliegenden
Erfindung beschrieben, wird eine Auswahlinformation, die in der Lage
ist wenigstens einen Teil der Verarbeitung zu spezifizieren, der
auf das eingegebene Paket angewendet wird, von dem eingegebenen
Paket erzeugt, und das eingegebene Paket wird durch Verwenden der
Anweisungssequenz verarbeitet, die auf das eingegebene Paket angewendet
wird, das gemäß dieser
erzeugten Auswahlinformation erhalten wird, so dass es möglich wird
die schnelle Paketverarbeitung zu realisieren, und das es möglich wird,
die Protokollveränderung
flexibel zu behandeln. Zusätzlich
wird es durch geeignetes Verändern
der Auswahlinformation gemäß der Netzwerkumgebung
wie des Pakettyps möglich,
die Protokollverarbeitung effizient zu realisieren.
-
Es
muss bemerkt werden, dass, neben diesem bereits oben erwähnten, viele
Modifizierungen und Variationen der obigen Ausführungsformen gemacht werden
können,
ohne von den neuen und vorteilhaften Merkmalen der vorliegenden
Erfindung abzurücken.
Demgemäß bezwecken
alle derartigen Modifizierungen und Variationen innerhalb des Schutzbereiches
der beigefügten
Ansprüche
eingeschlossen zu sein.