-
Querverweise
auf verwandte Anmeldungen
-
Der
Gegenstand dieser Anmeldung ist verwandt mit dem Gegenstand der
folgenden Anmeldungen:
Anmeldungsaktenzeichen 08/605,676,
US 5,740,346 , mit dem Titel "SYSTEM AND METHOD FOR
DYNAMIC NETWORK TOPOLOGY EXPLORATION", eingereicht am 22. Februar 1996 durch Thomas
M. Wicki, Patrick J. Helland, Wolf-Dietrich Weber und Winfried W.
Wilcke;
Anmeldungsaktenzeichen 08/603,926,
US 5,838,648 , mit dem Titel "LOW LATENCY, HIGH CLOCK
FREQUENCY PLESIOASYNCHRONOUS PACKET-BASED CROSSBAR SWITCHING CHIP SYSTEM
AND METHOD", eingereicht
am 22. Februar 1996 durch Thomas M. Wicki, Jeffrey D. Larson, Albert
Mu und Raghu Sastry;
Anmeldungsaktenzeichen 08/603,880,
US 5,892,766 , mit dem Titel "METHOD AND APPARATUS
FOR COORDINATING ACCESS TO AN OUTPUT OF A ROUTING DEVICE IN A PACKET
SWITCHING NETWORK",
eingereicht am 22. Februar 1996 durch Jeffrey D. Larson, Albert
Mu und Thomas M. Wicki;
Anmeldungsaktenzeichen 08/604,920,
US 5,991,296 , mit dem Titel "CROSSBAR SWITCH AND METHOD
WITH REDUCED VOLTAGE SWING AND NO INTERNAL BLOCKING DATA PATH", eingereicht am
22. Februar 1996 durch Albert Mu und Jeffrey D. Larson;
Anmeldungsaktenzeichen
08/603,913,
US 6,003,064 ,
mit dem Titel "A
FLOW CONTROL PROTOCOL SYSTEM AND METHOD", eingereicht am 22. Februar 1996 durch
Thomas M. Wicki, Patrick J. Helland, Jeffrey D. Larson, Albert Mu,
Raghu Sastry und Richard L. Schober, Jr.;
Anmeldungsaktenzeichen
08/603,911,
US 5,768,300 ,
mit dem Titel "INTERCONNECT
FAULT DETECTION AND LOCALIZATION METHOD AND APPARATUS", eingereicht am
22. Februar 1996 durch Raghu Sastry, Jeffrey D. Larson, Albert Mu, John
R. Slice, Richard L. Schober, Jr. und Thomas M. Wicki;
Anmeldungsaktenzeichen
08/603,923,
US 5,931,967 ,
mit dem Titel "METHOD
AND APPARATUS FOR DETECTION OF ERRORS IN MULTIPLE-WORD COMMUNICATIONS", eingereicht am
22. Februar 1996 durch Thomas M. Wicki, Patrick J. Helland und Takeshi
Shimizu;
Anmeldungsaktenzeichen 08/603,882,
US 5,615,161 , mit dem Titel "CLOCKED SENSE AMPLIFIER
WITH POSITIVE SOURCE FEEDBACK",
eingereicht am 22. Februar 1996 durch Albert Mu.
-
Gebiet der Erfindung
-
Die
Erfindung betrifft die Datenübertragung auf
einem Netz und, im besonderen, die Datenübertragung durch asynchrone
Paketvermittlung in einer Multiprozessorumgebung.
-
Hintergrund der Erfindung
-
Ein
Multiprozessorsystem enthält
mehrere Prozessoren, die mit einem oder mehreren Speichern verbunden
sind. Die Zwischenverbindung kann in einer von mehreren Formen erfolgen,
wie beispielsweise durch einen Gemeinschaftsbus, eine Kreuzschiene
oder dergleichen. Die Zwischenverbindung muß den schnellen Zugriff (niedrige
Latenz) und die hohe Bandbreite unterstützen. Existierende Zwischenverbindungen
leiden entweder unter einer begrenzten Bandbreite (wie bei Gemeinschaftsbus-Zwischenverbindungen),
Skalierbarkeitsproblemen (wie bei Kreuzschienen-Zwischenverbindungen)
oder unter einer übermäßigen Latenz
(wie in allgemeinen Netzen).
-
Es
ist wünschenswert,
ein Multiprozessorsystem zu haben, das einen Zugriff mit niedriger
Latenz und hoher Bandbreite auf alle Speicher gestattet. Zusätzlich sollte
die verfügbare
Bandbreite zunehmen (skaliert werden), wenn zusätzliche Prozessoren/Speicher
hinzugefügt
werden.
-
EP 0 282 198 offenbart ein
Kommunikationssystem mit einer Vielzahl von Netzknoten, die durch Übertragungsglieder verbunden
sind. Zwischen den Eintrittsknoten und den Austrittsknoten des bekannten
Systems werden Signale transportiert, die einen Kopfabschnitt und
einen Meldungsabschnitt umfassen. Der Kopfabschnitt umfaßt eine
Ablauffolge von Knotenausgangsadressen, die in der Reihenfolge auftreten,
in der das Signal den Knoten begegnet, wenn es das Netz durchläuft. In
jedem Knoten bestimmt die führende
Knotenausgangsadresse den Ausgang, durch den das Signal von jenem
Knoten heraustreten wird, um den nächsten Knoten in der Ablauffolge
zu erreichen. Falls das Signal sein Ziel erreicht hat, wird ein
Quittungstransaktionssignal erzeugt und an den Eintrittsknoten gesendet.
-
Eine
Aufgabe der vorliegenden Erfindung ist das Vorsehen eines verbesserten
Multiprozessorsystems, wodurch die Sicherheit der Datenübertragung erhöht wird.
-
Zusammenfassung der Erfindung
-
Bei
der vorliegenden Erfindung umfaßt
ein Multiknotensystem eine Vielzahl von Knoten, die miteinander
gekoppelt sind. Die Knoten kommunizieren miteinander durch Punkt-zu-Punkt-Pakete. Jeder Knoten
enthält
einen Paketverschieber und einen Rahmenverschieber. Der Paketverschieber
liefert ein Paket an den Rahmenverschieber, liefert eine Quittung
als Antwort auf den Empfang eines Paketes von einem der anderen
Paketverschieber und sendet das Paket erneut an den Rahmenverschieber,
falls von einem der anderen Paketverschieber in einem vorbestimmten
Zeitraum keine Quittung empfangen wird. Jedes Paket gibt einen Zielknoten
an. Der Rahmenverschieber konvertiert das Paket in einen Rahmen und
erzeugt eine Route bis zum Zielknoten. Falls der Rahmen defekt ist,
wird es ausgesondert, und der Paketverschieber sendet das Paket
schließlich
erneut. Der Rahmenverschieber sieht eine quellengesteuerte Verkehrslenkung
(Routing) und vielfältige Routen
zu Knoten vor. Die Zwischenverbindung kann eine flexible Topologie
haben. Pakete haben eine begrenzte, endliche Lebensdauer.
-
Der
Rahmenverschieber selektiert eine vorselektierte Route zu einem
Zielknoten, erzeugt einen Rahmen, der die vorselektierte Route enthält, und
liefert den Rahmen an die Vielzahl von Routern zur Kommunikation
mit dem Zielknoten. Die Route enthält eine Ablauffolge von Routenschritten
durch einige von der Vielzahl von Routern, um den Rahmen zwischen
ihnen zu übertragen.
Der Rahmenverschieber enthält
eine Routing-Tabelle zum Speichern einer Vielzahl von vorselektierten
Routen bis zum Zielknoten und enthält einen Controller zum Selektieren
von einer von der Vielzahl der vorselektierten Routen zur Einbeziehung
in den Rahmen.
-
Kurze Beschreibung der
Zeichnungen
-
1 ist
ein Blockdiagramm, das ein Multiprozessorsystem gemäß der vorliegenden
Erfindung zeigt.
-
2 ist
ein Blockdiagramm, das Protokollschichten des Multiprozessorsystems
von 1 zeigt.
-
3 ist
eine Abbildung, die einen Rahmen und ein Paket zeigt.
-
4 ist
ein Blockdiagramm, das den schnellen Rahmenverschieber zeigt.
-
5 ist
ein Blockdiagramm, das die Selektion einer Route eines Rahmens zeigt.
-
6 ist
ein Blockdiagramm, das die Abwandlung von Routing-Informationen
in dem Rahmenkopf zeigt, während
der Rahmen durch die Zwischenverbindung übertragen wird.
-
7 ist
ein Diagramm, das ein halbes Maschenglied zeigt.
-
8 ist
ein Blockdiagramm, das verschiedene Taktdomänen für ein Paar von Empfängern und Sendern
eines Maschengliedes zeigt.
-
9 ist
ein Blockdiagramm, das eine fehlertolerante Zwischenverbindung in
einer zweiten Ausführungsform
der vorliegenden Erfindung zeigt.
-
10 ist
ein Blockdiagramm, das ein virtuelles Durchschalte-Routing zeigt.
-
11 ist
ein Blockdiagramm, das einen zuverlässigen Paketverschieber des
Multiprozessorsystems von 1 zeigt.
-
12a ist ein Flußdiagramm, das die Operation
des Sendens von Paketen durch den zuverlässigen Paketverschieber zeigt.
-
12b ist ein Flußdiagramm, das die Operation
des Verarbeitens von Quittungen und des erneuten Sendens von Paketen
durch den zuverlässigen
Paketverschieber zeigt.
-
13 ist
ein Flußdiagramm,
das die Operation zum Empfangen von Paketen durch den zuverlässigen Paketverschieber
zeigt.
-
14 ist
ein Flußdiagramm,
das die Operation zum Überprüfen des
Puffers von unerledigten Paketen zeigt.
-
Eingehende Beschreibung
der bevorzugten Ausführungsformen
-
Eine
bevorzugte Ausführungsform
der vorliegenden Erfindung wird nun unter Bezugnahme auf die Figuren
beschrieben, in denen gleiche Bezugszeichen identische oder funktionell ähnliche
Elemente bezeichnen. Ferner entsprechen Zahlenstellen, die nicht
die zwei niedrigstwertigen Stellen von jeder Bezugszahl sind, der
Figur, in der die Bezugszahl zuerst verwendet wird.
-
Unter
Bezugnahme auf 1 ist ein Blockdiagramm gezeigt,
das ein Multiprozessorsystem 100 gemäß der vorlie genden Erfindung
darstellt. Das Multiprozessorsystem 100 enthält eine
Vielzahl von Prozessorknoten 102, die jeweils durch ein
Maschenglied 120 mit einer Zwischenverbindung 104 gekoppelt
sind. Jeder Prozessorknoten 102 enthält einen Prozessor 106,
eine Kohärenzsteuereinheit 110 und
einen lokalen Speicher 112. Die Kohärenzsteuereinheit 110 enthält einen
zuverlässigen
Paketverschieber (RPM) 114 und einen schnellen Rahmenverschieber
(FFM) 116.
-
Der
zuverlässige
Paketverschieber
114 sieht eine zuverlässige End-zu-End-Datenkommunikation zwischen
Prozessorknoten
102 vor. Der schnelle Rahmenverschieber
116 lenkt
Daten von einem Quellenprozessorknoten
102 zu einem Zielprozessorknoten
102.
Für jeden
einzelnen Prozessorknoten
102 ist wenigstens eine Route
zu jedem Zielprozessorknoten
102 in dem schnellen Rahmenverschieber
116 gespeichert.
Ein Verfahren zum Bestimmen der Topologie der Zwischenverbindung
104 und
von Fehlerbereichen darin ist beschrieben in
US 5,740,346 mit dem Titel "SYSTEM AND METHOD
FOR DYNAMIC NETWORK TOPOLOGY EXPLORATION", eingereicht am 22. Februar 1996 durch
Thomas M. Wicki, Patrick J. Helland, Wolf-Dietrich Weber und Winfried
W. Wilcke.
-
Auch
andere Architekturen des Prozessorknotens 102 können verwendet
werden. Zum Beispiel kann die Kohärenzsteuereinheit 110 mit
einem Cache-Speicher gekoppelt sein, der mit dem Prozessor 106 gekoppelt
ist.
-
Die
Zwischenverbindung
104 enthält eine Vielzahl von Routern
118,
die durch Maschenglieder
120 verbunden sind. Die Vielzahl
von Prozessorknoten
102 ist mit den Routern
118 durch
Maschenglieder
120 gekoppelt. Mit ein und demselben Router
118 können mehrere
als ein Prozessorknoten
102 gekoppelt sein. Die Router
118 sind
vorzugsweise Kreuzschienenschalter. Bei der hierin zu Erläuterungszwecken
beschriebenen spezifischen Implementierung haben die Router
118 6 Ports.
Natürlich
braucht in einem System mit wenigen Prozessorknoten
102 die Zwischenverbindung
104 nur
einen Router
118 zu enthalten und braucht in einem System
mit zwei Prozessorknoten
102 kein Router
118 enthalten
zu sein. Ein Beispiel für
einen Router ist beschrieben in
US 5,838,648 mit
dem Titel "LOW LATENCY,
HIGH CLOCK FREQUENCY PLESIOSYNCHRONOUS PACKET-BASED CROSSBAR SWITCHING
CHIP SYSTEM AND METHOD",
eingereicht am 22. Februar 1996 durch Thomas M. Wicki, Jeffrey D.
Larson, Albert Mu und Raghu Sastry.
-
Die
Zwischenverbindung 104 verwendet ein Protokoll auf Paketbasis,
worin die gesamte Kommunikation direkt von Prozessorknoten 102 zu
Prozessorknoten 102 enthalten ist. Die Zwischenverbindung 104 braucht
keine Sammelsendung oder Rundsendung vorzusehen. Alle Daten, die übertragen
werden, werden in Pakete parzelliert, die unten in Verbindung mit 3 beschrieben
sind.
-
Das
Multiprozessorsystem 100 ist ein Gemeinschaftsspeichersystem,
das uneinheitliche Speicherzugriffszeiten vorsieht. Der Prozessor 106 kann auf
einen anderen lokalen Speicher 112 zugreifen. Die Zugriffszeit
auf den lokalen Speicher 112 eines ersten Prozessorknotens 102 ist
kleiner als die Zugriffszeit auf den Speicher eines anderen Prozessorknotens 102.
Durch das Schreiben von Software, die es gestattet, daß ein Prozessor 106 mehr
Gebrauch von dem lokalen Speicher 112 macht, wird die Latenz verringert.
Die Latenz des Netzes ist ein Maß für die Zeit, die benötigt wird,
um einen anfragenden Prozessorknoten 102 mit den angeforderten
Daten zu beliefern, gemessen ab der Zeit, zu der die Speicheranfrage
gesendet wird. Mit anderen Worten, die Latenz gibt an, wie lange
es dauert, bis Daten erhalten werden, nachdem sie angefordert worden
sind.
-
Die
Bandbreite der Verbindung zwischen der Kohärenzsteuereinheit 110 und
dem lokalen Speicher 112 ist vorzugsweise der Bandbreite
der Verbindung zwischen der Kohärenzsteuereinheit 110 und der
Zwischenverbindung 104 im wesentlichen gleich. Die Bandbreite
hängt sowohl
von der Geschwindigkeit ab, mit der Daten empfangen oder geliefert
werden können,
als auch von der Breite des Weges.
-
Das
Multiprozessorsystem 100 ist vorzugsweise ein verteiltes
Speichersystem. Genauer gesagt: das System 100 hat eine
Speicherarchitektur, die physikalisch verteilt ist, aber die lokalen
Speicher 112 werden logisch gemeinsam genutzt. Zum Beispiel
kann ein Prozessorknoten 102, z. B. der Knoten A, Zugriff
auf einen Speicherort verlangen, den dieser Knoten 102 als
lokal verarbeitet, aber genaugenommen ist er physikalisch tatsächlich in
einem verschiedenen lokalen Speicher 112 angeordnet, der
mit einem verschiedenen Prozessorknoten 102 wie z. B. dem
Knoten B gekoppelt ist. Die Kohärenzsteuereinheit 110 des
anfragenden Knotens oder Quellenknotens (Knoten A) identifiziert
den Ort des Speichers, und die an jenem Ort gespeicherten Daten
werden schnell herausgesucht.
-
Das
Multiprozessorsystem 100 kann auch Eingangs-/Ausgangs-(E/A)-Knoten 103 enthalten, die
kein Verarbeitungsvermögen
haben. Der Klarheit halber ist nur ein E/A-Knoten 103 gezeigt.
Solch ein Knoten 103 kann ein Buskonverter als Schnittstelle zu
einem Bus sein, wie beispielsweise zu einem PCI-Bus oder einem S-Bus.
Solche E/A-Knoten 103 können
als Quellen- oder Zielknoten 102 fungieren, wie es hierin
beschrieben ist. Daher kann hier in der Beschreibung des Übertragens
und Verarbeitens von Daten, wenn ein Prozessorknoten 102 beschrieben wird,
auch ein E/A-Knoten 103 verwendet werden.
-
Unter
Bezugnahme auf 2 ist ein Blockdiagramm gezeigt,
das die Protokollschichten der Prozessorknoten 102 und
der Zwischenverbindung 104 darstellt. Die Protokollschichten
enthalten eine Zwischenverbindungsdienstverwalter(interconnect service
manager: ISM)-Schicht 202, eine Schicht des zuverlässigen Paketverschiebers
(reliable packet mover: RPM) 204, eine Schicht des schnellen
Rahmenverschiebers (fast frame mover: FFM) 206 und eine
physikalische Schicht 208. Die Kohärenzsteuereinheit 110 bietet
die Funktionen der Zwischenverbindungsdienstverwalterschicht 202,
die durch Software steuerbar sind, die durch den Prozessor 106 ausgeführt wird,
der Schicht des zuverlässigen
Paketverschiebers 204, der Schicht des schnellen Rahmenverschiebers 206 und
eines Abschnittes der physikalischen Schicht 208. Die Schichten
gestatten eine effektivere Aufteilung der Funktionen des Systems 100 und
eine unabhängige
Entwicklung und Überprüfung von
Abschnitten des Systems. Die Zwischenverbindungsdienstverwalterschicht 202 kommuniziert
mit Punkt-zu-Punkt-Meldungen, um die Kohärenz zu sichern. Wenn die Zwischenverbindungsdienstverwalterschicht 202 eines
ersten Prozessorknotens 202 Daten zu einem anderen Prozessorknoten 102 sendet
oder Daten von diesem anfordert, sendet die Zwischenverbindungsdienstverwalterschicht 202 des
ersten Prozessorknotens 102 Befehle zu dem zuverlässigen Paketverschieber 114,
worin der zuverlässige
Paketverschieber 114 über
die Daten, die zu senden oder anzufordern sind, und über die
Quelle oder das Ziel der Daten informiert wird.
-
In
der Schicht des zuverlässigen
Paketverschiebers 204 sendet der Quellenprozessorknoten 102 Daten
an einen Zielprozessorknoten 102, wobei er nicht den Weg
durch die Zwischenverbindung 104 bestimmt oder irgendwelche
Informationen hinsichtlich des Weges verwendet. Die Schicht des
zuverlässigen
Paketverschiebers 204 sorgt für die zuverlässige Lieferung
von Paketen 302 (siehe 3) zwischen
den Prozessorknoten 102 unter Verwendung der Schicht des
schnellen Rahmenverschiebers 206, um Pakete 302 zu übertragen.
Die Schicht des zuverlässigen
Paketverschiebers 204 bietet eine End-zu-End-Datenintegrität. In der
Schicht des zuverlässigen
Paketverschiebers 204 sendet der zuverlässige Paketverschieber 114 Daten,
und er überwacht
ein Quittungssignal, das angibt, daß die Daten empfangen wurden.
Falls sie innerhalb einer Zeitablaufperiode nicht quittiert werden,
sendet der zuverlässige
Paketverschieber 114 die Daten erneut. Dies wird vorzugsweise
durch Hardware und nicht durch Software implementiert. Daher sendet
die Schicht des zuverlässigen
Paketverschiebers 204 die Daten erneut, die während der Übertragung
verlorengingen oder verdorben wurden. Die Schicht des zuverlässigen Paketverschiebers 204 unterdrückt duplizierte Pakete
und ordnet Datenpakete um, die außer der Reihe empfangen werden.
Die Schicht des zuverlässigen
Paketverschiebers 204 sieht eine Flußsteuerung von Knoten zu Knoten
vor, um ein Überlaufen
eines Sendepaketpuffers 1106 (11) des
Zielprozessorknotens 102 zu vermeiden. In der Schicht des zuverlässigen Paketverschiebers 204 erfolgt
eine Kommunikation von Prozessorknoten 102 zu Prozessorknoten 102 und
keine Gruppensendung oder Rundsendung. Falls ein Paket 302 an
mehrere als einen Prozessorknoten 102 gesendet wird, sendet
die Zwischenverbindungsdienstverwalterschicht 202 separate
Kopien des Paketes 302 an jeden Zielprozessorknoten 102.
-
In
der Schicht des schnellen Rahmenverschiebers 206 ist die
Kommunikation eine Punkt-zu-Punkt-Kommunikation zwischen direkt
verbundenen Elementen (z. B. Prozessorknoten 102 und Routern 118).
Die Rahmen 300 (siehe 3) werden
von einem Quellenprozessorknoten 102 über einen Router 118 in
der Zwischenverbindung 104 zu anderen Routern 118 und
dann zu einem Zielprozessorknoten 102 gesendet. Die Schicht
des schnellen Rahmenverschiebers 206 sieht eine Flußsteuerung bei
jedem Schritt zwischen Nachbarelementen (Router 118 und
Prozessorknoten 102) vor. Die Schicht des schnellen Rahmenverschiebers 206 liefert
auch die Route, um diese Schritte miteinander zu verbinden, wodurch
Rahmen von einem Knoten zu einem anderen übertragen werden. Die Schicht
des schnellen Rahmenverschiebers 206 führt eine einfache Integritätsprüfung nur
an dem Abschnitt des Rahmens 300 aus, den sie verwendet,
jedoch keine Fehlerkorrektur. Wenn ein Fehler auftritt, sondert
die Schicht des schnellen Rahmenverschiebers 206 den Rahmen 300 aus,
und zu einem späteren
Zeitpunkt sendet der Absender die Daten erneut. Die Schicht des schnellen
Rahmenverschiebers 206 sieht eine Maschengliedflußsteuerung
vor, um ein Überlaufen
der direkten Nachbarn zu vermeiden, die mit dem anderen Ende des
Maschengliedes 120 verbunden sind. Die Schicht des schnellen
Rahmenverschiebers 206 ist zugunsten einer niedrigen Latenz
vereinfacht gestaltet, indem sie keine Fehlerdetektion bei jedem Rahmen 300 ausführt und
schlechte Rahmen 300 fallen läßt.
-
Die
physikalische Schicht 208 enthält die Verkabelung, die Verbinder
und dergleichen der Zwischenverbindung 104 und die Schnittstelle
zu den Prozessorknoten 102.
-
Unter
Bezugnahme auf 3 ist ein Diagramm gezeigt,
das einen Rahmen 300 und ein Paket 302 darstellt.
Ein Rahmen 300 ist eine Einheit der Datenübertragung,
die durch den schnellen Rahmenverschieber 116 verwendet
wird. Der Rahmen 300 enthält einen Rahmenkopf 304 und
ein Paket 302, welches ein Rahmenkörper ist. Der Rahmenkopf 304 enthält Routing-Informationen 318,
Flußsteuerungsinformationen 320 und
Prioritätsinformationen 322. Die
Routing-Informationen 318 enthalten eine Ablauffolge der
Router 118, die den Rahmen zu verarbeiten und das Routing
desselben zu steuern haben. Die Flußsteuerungsinformationen 320 enthalten
Informationen hinsichtlich der Kapazität der nächsten stromabwärtigen Router 118 oder
Prozessorknoten 102 und ermöglichen das Steuern oder das
Anhalten des Datenflusses. Die Prioritätsinformationen 322 enthalten
eine Prioritätsstufe
des Rahmens 300. Der Rahmenkopf 304 ist größenmäßig vorzugsweise
ein 68-Bit-Wort
(8½ Bytes).
Der Rahmenkörper
(Paket 302) umfaßt
größenmäßig vorzugsweise
2 bis 18 (68-Bit-)Wörter.
-
Das
Paket 302 enthält
einen Paketkopf 306 und Paketdaten 308. Der Paketkopf 306 enthält Paketkopfdeskriptoren 310,
eine Prioritätsquittungsanforderung 324 und
einen Fehlerdetektionscode (EDC) 312. Der Paketkopf 306 umfaßt vorzugsweise zwei
68-Bit-Wörter,
wobei jedes Wort 64 Bits (8 Bytes) von Daten und 4 Bits eines EDC
enthält.
Ein Paket 302 braucht keine Paketdaten 308 zu
haben. Die Paketdaten 308 haben eine variable Länge, und zwar
vorzugsweise 0 bis 128 Bytes von Daten (0 bis 16 Wörter). Ein
Quittungspaket (unten beschrieben) braucht zum Beispiel nur einen
Paketkopf 306 und den EDC 312 zu enthalten. Die
Paketdaten 308 können
Daten sein. Die Paketkopfdeskriptoren 310 enthalten Informationen,
die den Zielprozessorknoten 102 angeben. Wie unten in Verbindung
mit 12 beschrieben, fügt der zuverlässige Paketverschieber 114 den
EDC 312 zu dem Paket 302 hinzu, wenn der zuverlässige Paketverschieber 114 das
Paket 302 verarbeitet. Der EDC 312 umfaßt vorzugsweise
ein Byte (8 Bits) für
jeweils 16 Bytes der Paketdaten 308. Der EDC 312 wird
als 4 Bits für
jeweils 8 Bytes der Paketdaten 308 gespeichert, und geprüft wird
mit 8 Bits pro 16 Bytes oder 2 Wörter.
Die Prioritätsquittungsanforderung 324 ist
eine Aufforderung an den Zielprozessorknoten 102, um eine
sofortige Quittung zu senden, daß das Paket 302 empfangen
worden ist.
-
Der
zuverlässige
Paketverschieber 114 erzeugt den Paketkopf 306,
der die Laufnummer des Paketes 302 enthält. Die Laufnummer ist ein
Identifikator und ein Indikator der Ordnung der Pakete 302, die
von einem Quellenprozessorknoten 102 an einen Zielprozessorknoten 102 gesendet
werden. Laufnummern werden für
jedes Paar aus Quellen- und Zielknoten erzeugt. Der schnelle Rahmenverschieber 116 prüft oder
modifiziert den Rahmenkörper
(Paket 302) nicht. Der schnelle Rahmenverschieber 116 erstellt
den Rahmenkopf 304 bei Empfang des Paketes 302.
Die Router 118, die Teil der Schicht des schnellen Rahmenverschiebers 206 sind,
modifizieren den Rahmenkopf 304, wenn der Rahmen 302 über die
Zwischenverbindung 104 übertragen
wird, wie es unten in Verbindung mit den 5–6 beschrieben
ist. Der schnelle Rahmenverschieber 116 in dem Zielprozessorknoten 102 sondert
den Rahmenkopf 304 aus, wenn das Paket 302 zu
dem zuverlässigen
Paketverschieber 114 des Zielprozessorknotens 102 übertragen
wird.
-
Unter
Bezugnahme auf 4 ist ein Blockdiagramm gezeigt,
das den schnellen Rahmenverschieber 116 darstellt, der
eine Sendeschaltung 402 und eine Empfangsschaltung 404 enthält. Obwohl
jeder schnelle Rahmenverschieber 116 sowohl eine Sendeschaltung 402 als
auch eine Empfangsschaltung 404 enthält, sind der Klarheit halber
nur eine Sendeschaltung 402 und eine Empfangsschaltung 404 gezeigt.
Die Sendeschaltung 402 enthält eine Routing-Tabelle 406,
einen Zufallszahlengenerator 407 und einen FFM-Sendecontroller 408.
Die Empfangsschaltung 404 enthält einen Pufferverwalter 410,
einen Puffer 412 und einen FFM-Empfangscontroller 414.
Die Routing-Tabelle 406 speichert wenigstens eine Route über die
Zwischenverbindung 104 zu jedem Zielprozessorknoten 102.
Wenn der Rahmen 300 auf der Route übertragen wird, modifiziert
jeder Router 118 auf der Route den Rahmenkopf 304,
indem er einen Routing-Schritt aus der Route entfernt.
-
Der
schnelle Rahmenverschieber
116 und die Router
118 behalten
die Flußsteuerung über die Maschenglieder
120 bei.
Der Pufferverwalter
410 der Empfangsschaltung
404 überwacht
den Status des Puffers
412 und sendet Statusinformationen über das Maschenglied
120 zu
dem nächsten
stromaufwärtigen
Nachbarn, der entweder ein Router
118 oder ein Prozessorknoten
102 sein
kann. Gleichfalls überwacht
jeder Router
118 den Status von Puffern (nicht gezeigt)
darin und sendet Statusinformationen über das Maschenglied
120 zu
dem nächsten
stromaufwärtigen
Nachbarn, der, wie oben, entweder ein Router
118 oder ein
Prozessorknoten
102 sein kann. Der schnelle Rahmenverschieber
116 des
Quellenprozessorknotens
102 oder der Router kann dann das Senden
von Rahmen
300 an den nächsten
stromabwärtigen
Nachbarn (entweder einen Prozessorknoten
102 oder einen
Router
118) verlangsamen oder stoppen, bis in dem Puffer
412 Raum
zur Verfügung steht.
Eine derartige Implementierung der Flußsteuerung ist beschrieben
in
US 6,003,064 mit
dem Titel "A FLOW
CONTROL PROTOCOL SYSTEM AND METHOD", eingereicht am 22. Februar 1996.
-
Die
Router 118 führen
eine Fehlerdetektion in dem Maße
aus, das dem Router 118 das Arbeiten gestattet. Zum Beispiel
bestimmt der Router 118, ob das nächste Glied in dem Router 118 existiert.
Falls der Router 118 zum Beispiel sechs Ports hat und der Rahmenkopf 304 angibt,
das der Rahmen 300 einem nichtexistierenden Port wie beispielsweise
dem Port 0 zuzuführen
ist, sondert der Router 118 den Rahmen 300 aus.
-
Unter
Bezugnahme auf 5 ist ein Blockdiagramm gezeigt,
daß die
Selektion einer Route eines Rahmens 300 darstellt. Unter
Bezugnahme auf 6 ist ein Blockdiagramm gezeigt,
das die Modifizierung der Routing-Informationen 318 in
dem Rahmenkopf 304 zeigt, während der Rahmen 300 über die
Zwischenverbindung 104 übertragen
wird. Die Wahl der Route hängt
nur von dem Quellenprozessorknoten 102 und dem Zielprozessorknoten 102 und
einer Zufallszahl zum Heraussuchen einer von einer Vielzahl von
Routen ab. Die Route basiert vorzugsweise nicht auf der Größe oder
dem Typ des Rahmens 300.
-
Die
Route über
die Zwischenverbindung 104 ist deterministisch. Die Route
wird aus der Routing-Tabelle 406 ausgewählt, die eine Tabelle mit vorbestimmten
Routen speichert. Sobald die Route ausgewählt ist und der Rahmen 300 an
die Zwischenverbindung 104 geliefert ist, ist der Weg vorbestimmt. Der
Rahmen 300 folgt dieser Route bis zum Zielprozessorknoten 102 oder
wird auf der Route im Falle eines Fehlers ausgesondert. Das deterministische Routing
bietet verschiedene Vorteile. Erstens können die Router 118 den
Rahmen 300 schnell verarbeiten, weil der Rahmen 300 das
unmittelbare Ziel des Rahmens 300 definiert, ohne jegliche
Bestimmung durch den Router 118. Zweitens ist die Lebensdauer
des Rahmens 300 innerhalb der Zwischenverbindung 104 begrenzt.
Der Rahmen 300 wird über
die im voraus selektierte Route übertragen,
die eine endliche Länge
hat. Dadurch kann der zuverlässige
Paketverschieber 114 Laufnummern mit begrenzter Länge verwenden,
wodurch die Größe des Paketkopfes 306 verringert
wird. In den meisten Fällen
werden dadurch auch alte Pakete 302 aus der Zwischenverbindung 104 eliminiert.
Drittens kann die im voraus selektierte Route einem beliebigen Weg
durch die Zwischenverbindung 104 folgen. Die Ladung der
Zwischenverbindung 104 kann angemessen verteilt werden.
-
Die
Route enthält
eine Ablauffolge von direkt gekoppelten Routern 118 zwischen
dem Quellenprozessorknoten 102 und dem Zielprozessorknoten 102. Die
Route erfordert keine besondere Topologie. Tatsächlich kann eine beliebige
Topologie verwendet werden, bei der das Glied zwischen zwei direkt gekoppelten
Routern 118 in einzigartiger Weise definiert ist.
-
Unter
Bezugnahme speziell auf die 5–6 empfängt der
schnelle Rahmenverschieber 116 ein Paket 302 von
dem zuverlässigen Paketverschieber 114,
das an einen zuvor spezifizierten Zielknoten wie zum Beispiel an
den Prozessorknoten B zu senden ist, der in dem Paket 302 angegeben
ist. Der schnelle Rahmenverschieber 116 sucht eine Zufallszahl
von dem Zufallszahlengenerator 407 heraus. Der schnelle
Rahmenverschieber 116 verwendet diese Zufallszahl, um einen
von einer Vielzahl von Speicherorten 504 in einer Wahrscheinlichkeitsverteilungstabelle 502 zu
selektieren. Jeder Speicherort 504 speichert eine von einer
Vielzahl von zuvor spezifizierten Routen von dem Quellenprozessorknoten 102 (z.
B. dem Knoten A) zu dem Zielprozessorknoten 102 (z. B.
dem Knoten B). Der schnelle Rahmenverschieber 116 extrahiert
dann von dem selektierten Speicherort 504 die zuvor spezifizierte Route,
die darin gespeichert ist. Die Wahrscheinlichkeitsverteilungstabelle 502 wird
vorzugsweise gemäß einer
zuvor spezifizierten Wahrscheinlichkeitsverteilung aufgestellt,
welche die Routenselektion beeinflußt. Zum Beispiel kann der schnelle
Rahmenverschieber 116 die Wahrscheinlichkeitsverteilung erzeugen,
indem in jedem von einer vorbestimmten Anzahl von Speicherorten 504 eine
der Routen gespeichert wird, die in der Routing-Tabelle 406 gespeichert
sind. Die Wahrscheinlichkeitsverteilung 502 wird durch
die Häufigkeit
bestimmt, mit der jede der Routen an den Speicherorten 504 gespeichert
ist. Der schnelle Rahmenverschieber 116 erstellt einen Rahmenkopf 304,
der solch eine selektierte, zuvor spezifizierte Route enthält, und
stellt diesen Rahmenkopf 304 dem Paket 302 voran,
um einen Rahmen 300 zu erzeugen.
-
Nun
wird speziell Bezug auf 6 genommen. Der Rahmenkopf 304 enthält, wie
oben beschrieben, die Routing-Informationen 318,
die den vorbestimmten Weg von dem Quellenprozessorknoten 102 durch
die Zwischenverbindung 104 zu dem Zielprozessorknoten 102 spezifizieren.
Eine Route enthält
eine Reihe von Routenschritten, wie oben angegeben. Jeder Routenschritt
definiert den Port eines Routers 118, von dem der Router 118 den
Rahmen 300 sendet. Jeder Routenschritt kann in der Größe variabel
sein. Zum Beispiel definieren bei einem Router 118 mit
sechs Ports drei Bits den Port. In einem Router 118 mit
12 Ports definieren vier Bits den Port. Daher kann eine Route Router 118 verschiedener
Größen enthalten.
Natürlich
können
die Routen verschiedene Anzahlen von Routenschritten enthalten.
In diesem Fall enthält
die Route Routenschritte verschiedener Größen. In 6 lautet
am Glied 1 der Routenweg Glied 3, Glied 5, Glied 2 und Zielprozessorknoten 102.
Jedes Glied auf dem Routenweg entfernt den Code für das nächste Glied
aus dem Rahmenkopf 304, verschiebt den Routenweg in dem
Rahmenkopf 304 und füllt
den Rahmenkopf 304 hinten mit einer Nummer eines nichtexistierenden Prozessorknotens,
sprich 0. Das Glied führt
den Rahmen 300, der einen modifizierten Rahmenkopf 304 hat,
dann dem nächsten
Glied zu. Zum Beispiel liefert das Glied #3 den Rahmen 300 durch
den Port 5 aus und entfernt das Glied 5 aus dem Rahmenkopf 304. Natürlich liefert
das letzte Glied auf der Route den Rahmen 300 an den Zielprozessorknoten 102 aus.
-
Unter
Bezugnahme auf 7 ist ein Diagramm gezeigt,
das die Hälfte
eines Maschengliedes 120 darstellt. Ein Maschenglied 120 enthält ein Paar von
unidirektionalen Datenwegen. Dieses Paar bietet eine größere Bandbreite
als Gemeinschaftsmedien, die von Senden auf Empfangen geschaltet
werden, und eliminiert die Abhängigkeit
von einer Ausbrei tungsverzögerung,
die bei solchen Gemeinschaftsmedien auftritt. Bei Hochgeschwindigkeitssystemen können viele
Bits von Informationen gleichzeitig auf dem Maschenglied 120 sein.
Das Paar bietet einem Router 118 die Möglichkeit, gleichzeitig in
beiden Richtungen zu kommunizieren. Das Maschenglied 120 sieht
eine elektrische Punkt-zu-Punkt-Verbindung
vor. Das Maschenglied 120 ist vorzugsweise kein Bus. Jeder
unidirektionale Datenweg ist ein halbes Maschenglied, das Datenleitungen 702 und Steuerleitungen
enthält,
nämlich
insbesondere eine Taktleitung 704, eine Daten-/Statusangabeleitung 706,
eine Rahmenhüllenleitung 708 und
Spannungsreferenzleitungen 710. Die Datenleitungen 702 sehen
einen Weg zum Übertragen
von Rahmen 300 vor. Pufferstatusinformationen werden auf
denselben Datenleitungen 702 multiplexiert, wenn kein Rahmen 300 gesendet
wird. Die Bandbreite der Zwischenverbindung 104 hängt von
der Anzahl von Datenleitungen 702 ab. Die Datenleitungen 702 umfassen
vorzugsweise 34 Leitungen zum Übertragen
von einer Hälfte
eines Wortes des Rahmens 300 pro Taktflanke. Die Taktleitung 704 sieht
einen Kommunikationsweg für
den Takt des Prozessorknotens 102 vor, der den Rahmen 300 durch
die Zwischenverbindung 104 führt. Die Taktleitung 704 ist
vorzugsweise ein voller Differenzeinzeltakt auf zwei Leitungen.
Die Daten-/Statusangabeleitung 706 liefert ein Signal,
das angibt, ob das Signal auf den Datenleitungen 702 die Daten
oder den Status darstellt. Bei der Flußsteuerung des Maschengliedes 120,
wie oben in Verbindung mit 4 beschrieben,
gibt die Daten-/Statusangabeleitung 706 zum Beispiel an,
daß Statusinformationen
des Puffers 412 gerade über
die Datenleitungen 702 übertragen
werden. Die Daten-/Statusangabeleitung 706 ist vorzugsweise
eine einzelne Leitung. Die Rahmenhüllenleitung 708 liefert
ein Rahmenhüllensignal,
das den Beginn des Rahmens angibt. Im besonderen gibt das Rah menhüllensignal den
Beginn des Rahmenkopfes 304 an, und es bleibt während der Übertragung
des Rahmens aktiv. Das Rahmenhüllensignal
wird am Ende des Rahmens oder lange genug vor dem Ende inaktiv,
damit Rahmen Rücken
an Rücken übertragen
werden können. Die
Rahmenhüllenleitung 708 ist
vorzugsweise eine einzelne Leitung. Die Spannungsreferenzleitungen 710 liefern
eine Spannungsreferenz für
den Router 118 oder einen Prozessorknoten 102,
um kleine Signalschwingungen auf allen Daten- und Steuerleitungen 702, 706, 708 zuzulassen,
die eindrähtig
differentiell sein können.
Die Spannungsreferenzleitung 710 hat vorzugsweise 5 Leitungen.
Jedes Maschenglied 120 hat vorzugsweise 43 Leitungen in
jeder Richtung, oder insgesamt 86 Leitungen. Dies gestattet die
parallele Übertragung
von 34 Bits über
das Maschenglied 120. Ein Wort wird somit in zwei Übertragungszyklen übertragen,
die einem Taktzyklus gleich sind, der bei beiden Flanken verriegelt
wird.
-
Unter
Bezugnahme auf
8 ist ein Blockdiagramm gezeigt,
das verschiedene Taktdomänen
für ein
Paar von Empfängern
und Sendern eines Maschengliedes
102 darstellt. Jeder Prozessorknoten
102 und
jeder Router
118 hat einen internen Taktgenerator
802 zum
Vorsehen eines Taktsignals. Die Taktgeneratoren
802 liefern
vorzugsweise Taktsignale, die im wesentlichen gleich sind. Der Takt
wird auf dem Maschenglied
120 an den nächsten Nachbarn (entweder den
Zielprozessorknoten
102 oder einen Router
118)
geliefert, der diesen Takt verwendet, um die Daten zu akzeptieren.
Genauer gesagt: dieser Takt wird verwendet, um die Daten in einem First-In-First-Out-(FIFO)-Puffer
804 in
dem Zielprozessorknoten
102 oder in dem Router
118 zu
verriegeln. Der Zielprozessorknoten
102 oder der Router
118 verwendet
seinen eigenen internen Taktgenerator
802, um die Daten
aus dem FIFO-Puffer
804 zu lesen. Dadurch kann der Zielprozessorknoten
102 oder der Router
118 Daten
akzeptieren, die auf einem Takt basieren, der eine Frequenzdrift
und eine Phasenverschiebung gegenüber dem Takt des Zielprozessorknotens
102 oder
des Routers
118 aufweist. Dieses Takten macht die globale
Synchronisation aller Takte unnötig.
Die Taktdomäne
ist eine plesiochrone Taktdomäne.
Der Takt wird auf dem Maschenglied
120 mit den Daten auf
der Datenleitung
702 vorgesehen. Ein Beispiel für das Takten
ist enthalten in
US 5,509,038 mit
dem Titel "MULTI-PATH
DATA SYNCHRONIZER SYSTEM AND METHOD".
-
Unter
Bezugnahme auf 9 ist ein Blockdiagramm gezeigt,
das eine fehlertolerante Zwischenverbindung in einer zweiten Ausführungsform
der vorliegenden Erfindung darstellt. Die Zwischenverbindung 104 enthält wenigstens
zwei Teilmaschen 902, die redundante Wege zwischen Prozessorknoten 102 zum
Vorsehen einer Fehlertoleranz bieten. Die schnellen Rahmenverschieber 116 leiten
entweder dynamisch um Router 118 oder Maschenglieder 120 herum,
die nicht funktionieren oder entfernt worden sind, oder verwenden
eine andere Teilmasche 902.
-
Jede
einzelne Teilmasche 902 ist durch ein Maschenglied 120 mit
jedem Prozessorknoten 102 gekoppelt. Jede Teilmasche 902 ist
vorzugsweise einer nichtfehlertoleranten Masche ähnlich. Jeder Prozessorknoten 102 ist
durch ein Maschenglied 120 mit einem Router 118 gekoppelt,
der durch separate Maschenglieder 120 mit jeder der Teilmaschen 902 gekoppelt
ist.
-
Jeder
Router 118 enthält
einen Zähler
(nicht gezeigt), der immer dann inkrementiert wird, wenn der Router 118 einen
Rahmen 300 aussondert. Das Multiprozessorsystem 100 liest
periodisch den Zähler,
um zu bestimmen, ob der Router 118 oder Maschenglieder 120,
die mit ihm verbunden sind, möglicherweise
defekt sind. Falls solch eine Bestimmung erfolgt, kann das Multiprozessorsystem 100 den Router 118 oder
die Teilmasche 902 in einem fehlerredundanten System von
den vorbestimmten Routen eliminieren. Zum Beispiel kann der Verarbeitungsknoten 102 diese
Route aus der Wahrscheinlichkeitsverteilungstabelle 502 zum
Selektieren von Routen von der Routing-Tabelle 406 löschen. Ein
Prozessorknoten 102 kann die Male des erneuten Sendens
eines Paketes 302 zählen,
die bei jedem Zielprozessorknoten 102 erforderlich sind,
und bestimmen, falls die Zahl über
einer vorbestimmten Schwelle liegt, ob ein Router 118 auf
dem Weg eine hohe Anzahl von Defekten aufweist.
-
Unter
Bezugnahme auf 10 ist ein Blockdiagramm gezeigt,
das ein virtuelles Durchschalte-Routing darstellt, wobei der Beginn
eines Rahmens 300 an den nächsten Router 118 oder
Prozessorknoten 102 auf der Route gesendet werden kann, auch
wenn das Ende des Rahmens 300 noch nicht empfangen worden
ist. Genauer gesagt: ein Paket 302 wird in eine Vielzahl
von Segmenten 1002 partitioniert, wie beispielsweise in
7. Die Segmente 1002 haben vorzugsweise eine verschiedene
Größe. Der Quellenprozessorknoten 102 selektiert,
wie oben beschrieben, die Route zum Senden des Paketes an den Zielprozessorknoten 102.
Der Quellenprozessorknoten 102 liefert den Rahmen 300 an
den ersten Router 118 auf der Route. Bei Empfang des Rahmenkopfes 306 bestimmt
der erste Router 118 auf der Route das nächste Maschenglied 120,
an das der Rahmen 300 zu senden ist, und startet das Senden des
Rahmens 300, falls der Empfänger über Pufferressourcen verfügt und der
Ausgabeport zur Verfügung
steht. Der Rahmen 300 kann sich über viele Router 118 und
Maschenglieder 120 erstrecken, einschließlich des
Zielprozessorknotens 102. Das erste Segment 1002 des
Rahmens 300 ist am Zielprozessorknoten 102 empfangen
worden, wie in 10 gezeigt, und die zweiten
bis sechsten Segmente 1002 befinden sich in verschiedenen
Routern 118 und Maschengliedern 120 auf der Route.
Der Quellenprozessorknoten 102 hat noch nicht das siebte
Segment 1002 gesendet. Die Latenz des virtuellen Durchschalte-Routings
enthält
typischerweise nicht das Puffern in den dazwischenliegenden Routern 118.
Im Gegensatz dazu wird beim Speicher- und Weiterleitungs-Routing
die gesamte Meldung vor dem Weiterleiten gespeichert. Bei solch
einem Routing enthält die
Latenz das Puffern.
-
Unter
Bezugnahme auf 11 ist ein Blockdiagramm gezeigt,
das einen zuverlässigen
Paketverschieber 114 darstellt, der eine Sendeschaltung 1102 und
eine Empfangsschaltung 1104 enthält. Obwohl jeder zuverlässige Paketverschieber 114 sowohl
eine Sendeschaltung 1102 als auch eine Empfangsschaltung 1104 enthält, sind
der Klarheit halber nur eine Sendeschaltung 1102 und eine
Empfangsschaltung 1104 gezeigt. Die Sendeschaltung 1102 enthält einen
Sendepaketpuffer 1106, einen RPM-Sendecontroller 1108,
eine Partnerinformationstabelle 1110 und eine Zeitablaufschaltung 1112 zum
Steuern des erneuten Sendens von verlorengegangenen oder verdorbenen
Daten. Der Sendepaketpuffer 1106 speichert die Pakete 302,
die gesendet, aber nicht quittiert worden sind. Der Sendepaketpuffer 1106 ist
größenmäßig kleiner
als in Systemen, die durch Software implementiert werden, weil durch die
kleinere Latenz in dem System 100 in Kombination mit dem
virtuellen Durchschalte-Routing der Empfang von Paketen 302 außer der
Reihe nicht so häufig
vorkommt und weil die Zwischenverbindungsdienstverwalterschicht 202 Pakete 302 hält, falls
der Sendepaketpuffer 1106 voll ist. Die Partnerinformationstabelle 1110 speichert
für jeden
Zielprozessorknoten 102 die Laufnummer des nächsten Paketes 302,
das zu senden ist und das von jenem Zielprozessorknoten 102 quittiert
werden muß.
Der RPM-Sendecontroller 1108 steuert die Operation der Sendeschaltung 1102.
Die Zeitablaufschaltung 1112 sieht eine Zeitzählung zum
Steuern des erneuten Sendens von verlorengegangenen oder verdorbenen Daten
vor.
-
Die
Empfangsschaltung 1104 enthält einen Puffer für unerledigte
Pakete 1114, einen RPM-Empfangscontroller 1116 und
eine Partnerinformationstabelle 1118. Der Puffer für unerledigte
Pakete 1114 speichert Pakete 302, die außerhalb
der Ablauffolge empfangen worden sind. Der Puffer für unerledigte Pakete 1114 ist
größenmäßig kleiner
als in Systemen, die durch Software implementiert werden, weil durch
die kleinere Latenz in dem System 100 der Empfang von Paketen 302 außer der
Reihe nicht so häufig
vorkommt. Der RPM-Empfangscontroller 1116 steuert die Operation
der Empfangsschaltung 1104. Die Partnerinformationstabelle 1118 speichert
für jeden
Quellenprozessorknoten 102 die Laufnummer des nächsten erwarteten
Paketes 302 von jenem Quellenprozessorknoten 102.
-
Der
zuverlässige
Paketverschieber 114 erzeugt den Paketkopf 306,
der die Laufnummer des Paketes 302 enthält. Laufnummern werden verwendet,
um den Zielprozessorknoten 102 über die Ablauffolge der Pakete 302 zu
informieren. Der Zielknoten verarbeitet nur die Pakete 302 in
der Ablauffolge. Bei Empfang eines Paketes 302 innerhalb
der Reihenfolge sendet der Zielprozessorknoten eine Quittung zurück zu dem
Quellenprozessorknoten 102, die denselben über den
Empfang des Paketes 302 informiert. Falls der Quellenprozessorknoten 102 keine
Quittung innerhalb einer vorbestimmten Zeit bekommt, sendet der
Quellenprozessorknoten 102 das Paket 302 unter
Verwendung derselben Laufnummer erneut.
-
Unter
Bezugnahme auf 12a ist ein Flußdiagramm
gezeigt, das die Operation der Sendeschaltung 1102 des
zuverlässigen
Paketverschiebers 114 darstellt. Um Daten zu senden, liefert
die Kohärenzsteuereinheit 110 die
Daten und eine Identifizierung des Zielprozessorknotens 102 an
den zuverlässigen
Paketverschieber 114, der die Daten in Pakete 302 konvertiert
und jedem Paket 302 eine Laufnummer zuordnet. Jedes gesendete
Paket 302 wird in dem Sendepaketpuffer 1106 in
dem Quellenprozessorknoten 102 gespeichert. Falls er bei 1201 Kapazität hat, akzeptiert
der Sendepaketpuffer 1106 die Daten und sendet der zuverlässige Paketverschieber 114 das
Paket 302. Falls nicht, stoppt die Zwischenverbindungsdienstverwalterschicht 202 das
Senden von Paketen 302 und wartet.
-
Wenn
der zuverlässige
Paketverschieber 114 ein Paket 302 zu senden hat,
sucht die Sendeschaltung 1102 bei 1202 eine Laufnummer
aus der Partnerinformationstabelle 1110 entsprechend dem Zielprozessorknoten 102 heraus.
Die Sendeschaltung 1102 fügt bei 1206 die herausgesuchte
Laufnummer zu dem Paketkopf 306 des Paketes 302 hinzu
und führt
bei 1207 eine Fehlerdetektion aus. Die Sendeschaltung 1102 sendet
bei 1208 das Paket 302 an den schnellen Rahmenverschieber 116 zum
Senden, wie oben beschrieben. Die Sendeschaltung 1102 speichert
bei 1210 das Paket 302 in dem Sendepaketpuffer 1106 auch
mit einem Markierungsbit für
jenes Paket 302, das erst gesetzt wird, wenn eine Quittung
empfangen wird, daß das
Paket empfangen wurde. Die Laufnummer in der Partnerinformationstabelle 1110 wird
bei 1204 für
das Senden des nächsten
Paketes 302 inkrementiert. Da die Laufnummern begrenzt
sind, werden sie schließlich
umlaufend sein. Daher ist der Laufnummerabstand groß genug, so
daß keine
Pakete 302 mit derselben Laufnummer gleichzeitig in dem
System 100 sind.
-
Unter
Bezugnahme auf 12b ist ein Flußdiagramm
gezeigt, das die Operation des Verarbeitens von Quittungspaketen
und des erneuten Sendens von Paketen durch den zuverlässige Paketverschieber
darstellt, falls Pakete gesendet worden sind. Das Quittungspaket
ist ein Steuerpaket von der Empfangsschaltung 1104 an den
Quellenprozessorknoten 102, das angibt, daß das Paket 302 empfangen wurde
und die Fehlerdetektion durchlaufen hat. Das Quittungspaket enthält eine
Zielknotennummer, die Laufnummer des empfangenen Paketes 302 und
den EDC, und zwar vorzugsweise 16 Bytes. Das Quittungspaket kann
an ein anderes Paket 302 angehängt werden, das gerade zu dem
Quellenzielknoten 102 gesendet wird. Dadurch wird der Verkehr
in der Zwischenverbindung 104 reduziert. Das Quittungspaket
selbst wird nicht quittiert und enthält keine eigene Laufnummer.
Die Laufnummer in einem Quittungspaket quittiert implizit auch alle
vorherigen Pakete, d. h., alle Pakete mit Laufnummern, die kleiner als
die Laufnummer in der Quittung sind oder auf Grund des obenerwähnten Umlaufs
der Nummern entsprechend zutreffend sind. Dadurch kann die Empfangsschaltung 1104 die
Quittung von Paketen 302 verzögern und den Verkehr von Quittungspaketen
unter Verwendung eines einzelnen Quittungspaketes zum Quittieren
von mehr als einem Paket 302 reduzieren.
-
Die
Sendeschaltung 1102 bestimmt bei 1212, ob ein
Quittungspaket empfangen ist. Falls dies der Fall ist, löscht die
Sendeschaltung 1102 bei 1214 die Pakete 302 entsprechend
der empfangenen Quittung aus dem Sendepaketpuffer 1106.
Dieses Löschen
schließt
alle vorherigen Pakete 302 in dem Sendepaketpuffer 1106 für das Paar
aus Quellen- und Zielprozessorknoten 102 ein. Diese Pakete 302 haben
eine Laufnummer, die kleiner gleich der Laufnummer in dem Quittungspaket
ist, oder Laufnummern, die unter Berücksichtigung des Umlaufs entsprechend
zutreffen.
-
Das
Paket 302 wird erneut gesendet, falls nach einer spezifizierten
Zeitablaufperiode kein Quittungspaket empfangen wird. Speziell bestimmt
die Sendeschaltung 1102 bei 1216, falls bei 1212 kein Quittungspaket
empfangen wird, ob die Zeitablaufschaltung 1112 abgelaufen
ist. Falls nicht, bestimmt die Sendeschaltung 1102 bei 1212 weiter,
ob eine Quittung empfangen ist.
-
Falls
andererseits die Zeitablaufschaltung 1112 abgelaufen ist,
prüft die
Sendeschaltung 1102 bei 1218 jedes Paket 302,
das in dem Sendepaketpuffer 1106 gespeichert ist, um zu
bestimmen, ob ein Markierungsbit für jenes Paket 302 gesetzt
ist. Falls das Bit nicht gesetzt ist, setzt die Sendeschaltung 1102 bei 1220 das
Markierungsbit für
jenes Paket 302. Dies gewährt einem Paket 302 eine
oder zwei Zeitablaufperioden, bevor es erneut gesendet wird. Bei
Paketen 302 mit gesetztem Markierungsbit bei 1218 sucht
die Sendeschaltung 1102 bei 1222 das Paket 302 aus
dem Sendepaketpuffer 1106 heraus und sendet bei 1224 das
Paket 302 erneut. Um zu bestimmen, daß die Zwischenverbindung 104 defekt ist,
erfolgt das erneute Senden in einer begrenzten oder maximalen Anzahl.
Im besonderen bestimmt die Sendeschaltung 1102 bei 1225,
ob das Paket 302 eine vorbestimmte Anzahl von Malen erneut
gesendet worden ist. Falls dies der Fall gewesen ist, informiert
die Sendeschaltung 1102 bei 1227 die Zwischenverbindungsdienstverwalterschicht 202 über solch
eine Anzahl des erneuten Sendens, und die Schicht 202 kann
dann Pakete 302 zwischen jenem Paar aus Quellen- und Zielknoten
umleiten. Falls die Anzahl des erneuten Sendens nicht das Maximum erreicht
hat, bestimmt dann beim Erreichen des letzten Paketes 302 bei 1226 die
Sendeschaltung 1102 bei 1212 weiterhin, ob ein
Quittungspaket empfangen ist, wie oben beschrieben.
-
Unter
Bezugnahme auf 13 ist ein Flußdiagramm
gezeigt, das die Operation der Empfangsschaltung 1104 des
zuverlässigen
Paketverschiebers 114 darstellt. Die Empfangsschaltung 1104 des
zuverlässigen
Paketverschiebers 114 liefert das Paket 302 an
die Zwischenverbindungsdienstverwalterschicht 202 in der
Ordnung der Laufnummer. Die Empfangs schaltung 1104 empfängt bei 1302 ein
Paket 302 von der Zwischenverbindung 104. Falls
der Paketpuffer 1114 von unerledigten Paketen voll ist, sondert
die Empfangsschaltung 1104 das Paket 302 aus.
Alternativ dazu kann die Empfangsschaltung 1104 das letzte
Paket 302 aussondern, das in dem Puffer 1114 der
unerledigten Pakete gespeichert ist. Natürlich können auch andere Pakete 302 von
dem Puffer 1114 der unerledigten Pakete ausgesondert werden,
da dieser auf Leistung und nicht auf Korrektheit ausgerichtet ist.
Die Empfangsschaltung 1104 führt bei 1316 eine
Fehlerdetektion an dem Paket 302 aus. Falls das Paket 302 bei 1318 die
Fehlerdetektion nicht übersteht,
wird das Paket 302 bei 1310 ausgesondert und empfängt die
Empfangsschaltung 1104 bei 1302 weiterhin Pakete 302.
Falls das Paket 302 andererseits die Fehlerdetektion bei 1318 übersteht,
extrahiert dann die Empfangsschaltung 1104 bei 1304 die
Laufnummer und die Quellenknotennummer von dem Paketkopf 306.
Die Empfangsschaltung 1104 liest bei 1306 die
nächste
erwartete Laufnummer für
den Quellenprozessorknoten aus der Partnerinformationstabelle 1118 und
vergleicht bei 1308 die nächste erwartete Laufnummer
mit der extrahierten Laufnummer. Falls die extrahierte Laufnummer
kleiner als die erwartete Laufnummer ist, ist das Paket 302 durch
die Empfangsschaltung 1104 bereits verarbeitet worden und
stellt ein Duplikat dar. Wieder wird der Umlauf der Laufnummern
angemessen berücksichtigt.
Das Paket 302 wird bei 1310 ausgesondert, und
die Empfangsschaltung 1104 fährt bei 1302 mit dem
Empfang von Paketen 302 fort.
-
Falls
die extrahierte Laufnummer nicht kleiner als die erwartete Laufnummer
ist, bestimmt die Empfangsschaltung 1310 bei 1312,
ob die extrahierte Laufnummer der erwarteten Laufnummer gleich ist.
Falls keine Übereinstimmung
vorliegt, handelt es sich um ein außerhalb der Ablauffolge empfangenes Paket 302.
Die Empfangsschaltung 1104 speichert bei 1314 das
Paket 302 in dem Puffer der unerledigten Pakete 1114,
und die Empfangsschaltung 1104 fährt mit dem Empfang von Paketen 302 bei 1302 fort.
-
Falls
andererseits die nächste
erwartete Laufnummer bei 1312 mit der extrahierten Laufnummer übereinstimmt,
liefert die Empfangsschaltung 1104 bei 1320 eine
Quittung an die Zwischenverbindung 104. Da das empfangene
Paket 302 das erwartete Paket 302 ist, inkrementiert
die Empfangsschaltung 1104 bei 1322 die Partnerinformationstabelle 1118 für den entsprechenden
Quellenprozessorknoten. Die Empfangsschaltung 1104 liefert
bei 1324 das Paket 302 an die Zwischenverbindungsdienstverwalterschicht 202 zur
Verarbeitung und überprüft bei 1326 den
Puffer der unerledigten Pakete 1114 hinsichtlich des in
der Ablauffolge nächsten
Paketes 302.
-
Unter
Bezugnahme auf 14 ist ein Flußdiagramm
gezeigt, das die Operation zum Überprüfen des
Puffers der unerledigten Pakete 1114 bei 1326 darstellt.
Die Empfangsschaltung 1104 überprüft bei 1402 den Puffer
der unerledigten Pakete 1114 hinsichtlich des in der Ablauffolge
nächsten
Paketes 302. Falls das nächste erwartete Paket 302 in
dem Puffer der unerledigten Pakete 1114 ist, sendet die Empfangsschaltung 1104 bei 1404 auch
eine Quittung und inkrementiert bei 1406 die Laufnummer.
Die Empfangsschaltung 1104 liefert bei 1408 jenes
Paket 302 an die Zwischenverbindungsdienstverwalterschicht 202.
Die Empfangsschaltung 1104 fährt mit dem Überprüfen des
Puffers der unerledigten Pakete 1114 hinsichtlich des nächsten erwarteten
Paketes 302 fort, bis solch ein Paket 302 nicht
gefunden wird. Die Empfangsschaltung 1104 setzt die Überwachung bei 1302 (13)
hinsichtlich empfangener Pakete 302 fort.
-
Die
obige Beschreibung wurde aufgenommen, um die Operation der bevorzugten
Ausführungsformen
darzustellen, und sie soll den Umfang der Erfindung nicht begrenzen.
Der Umfang der Erfindung soll nur durch die folgenden Ansprüche begrenzt
werden. Nach der obigen Diskussion wird ein Fachmann auf viele Veränderungen
kommen, die dennoch im Umfang der Erfindung liegen.