-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft das Gebiet der Datenspeicherung und
insbesondere ein Verfahren und eine Vorrichtung zur Wiedergewinnung
von Puffern, die zur Datenspeicherung verwendet werden, um eine
Wiederverwendung der Puffer zum Speichern anderer Daten zu ermöglichen.
-
HINTERGRUND
DER ERFINDUNG
-
Bei
vielen Systemen, bei denen Datenblöcke empfangen und weitergeleitet
werden, wie z. B. paketgeschaltete Netzwerke (z. B. Ethernet-Netzwerke),
werden Speicherpuffer zum temporären
Speichern von Daten vor dem Weiterleiten der Daten verwendet. Beispielsweise
kann bei einen paketgeschalteten Netzwerk ein Datenblock an einem
Netzwerkschalter empfangen werden, der den Datenblock zu einem geeigneten
Port weiterleitet, und der Datenblock wird bei Empfang der Daten
in einzelne Puffer geladen. Normalerweise übersteigt die Größe des Datenblocks
die Kapazität
eines einzelnen Puffers, so dass mehrere Puffer zum Speichern eines Einzeldatenblocks
verwendet werden.
-
Das
Puffern von Daten bei deren Empfang ermöglicht unter anderem eine gute
Fehlerprüfung des
Datenblocks und ferner einen Ratenabgleich zwischen Übertragungs-
und Empfangsports. Wenn ein Datenblock an einem Schalter ankommt,
werden nur Puffer, die aktuell verfügbar (oder "frei")
sind, zum Speichern der Daten verwendet, so dass Daten nicht vor
dem Übertragen
der Daten überschrieben
werden. Wenn die Daten übertragen
worden sind oder anderweitig nicht mehr benötigt werden, können die die
Daten speichernden Puffer zum Speichern von Daten eines neuen Datenblocks
wiederverwendet werden. Ferner ist es möglich, dass Puffer zum Speichern
von Daten eines ankommenden Datenblocks bestimmt sind, durch die
Fehlerprüfung
oder aufgrund einer unzureichenden Menge an empfangenen Daten jedoch
bewirkt wird, dass der Datenblock verworfen wird. Auch unter diesen
Umständen
sollten die Puffer zur Wiederverwendung zurückgeführt werden.
-
Aus
Gründen
der Effizienz und zum Sicherstellen, dass Puffer in größstmöglichem
Umfang zum Speichern von ankommenden Blöcken zur Verfügung stehen,
sollte die Rückführung der
Puffer zur Wiederverwendung so schnell wie möglich erfolgen, sobald diese
nicht mehr benötigt
werden. Bei Systemen, bei denen nach dem Übertragen des gesamten Datenblocks
ein Einzeldatenblock in mehreren Puffern gespeichert werden kann,
erkennt der Schalter das Übertragen
des Datenblocks und beginnt mit dem Prozess der Wiedergewinnung
der einzelnen Puffer, die die Kette speichern. Wenn mehrere Kopien
desselben Datenblocks übertragen
werden, wartet der Schalter, bis sämtliche Kopien des Datenblocks übertragen
sind, bevor er mit dem Prozess der Wiedergewinnung der Puffer, in
dem der Datenblock gespeichert war, beginnt. Somit wird das gleiche
Wiedergewinnungsverfahren angewandt, unabhängig davon, ob eine Einzelkopie
des Datenblocks übertragen
wird oder mehrere Kopien des Datenblocks übertragen werden.
-
Ein
weiterer Faktor bei Systemen, bei denen Puffer zum Speichern von
Daten in einem Speicher verwendet werden, ist die Erzeugung der
Zeiger zum Speichern dieser Puffer. Die Pufferzeiger, die auf Stellen
in dem Speicher zeigen, an denen sich die Puffer befinden, können beim
Start des Systems erzeugt und in einen Puffer-Pool geladen werden,
aus dem sie abgerufen werden, wenn die Puffer zum Speichern von
Daten verwendet werden. Nach dem Rückgewinnen der Puffer nach
deren Verwendung werden die Pufferzeiger zu dem Puffer-Pool zurückgeführt. Wenn
das System eine große
Anzahl von Puffern verwendet, ist dieses anfängliche Erzeugen und Laden
von Pufferzeigern in den Puffer-Pool beim Starten des Systems ein
relativ zeitaufwendiger Prozess.
-
In
EP-A-0 622 922 ist ein typischer bekannter Mechanismus zum Freigeben
von Puffern beim Multicasting von Daten in einem Datenübertragungssystem
beschrieben. Gemäß 7A dieses
Dokuments zeigen nach dem Übertragen
der letzten Mitteilung die direkten Steuerblöcke auf die die Mitteilung
enthaltenden Puffer. Der indirekte Steuerblock wird dann freigegeben
und die Duplizieranzahl von dem direkten Steuerblock abgelesen,
welche gleich Eins ist, wodurch angezeigt wird, dass die Übertragung
die letzte Mitteilung war. Die Duplizieranzahl wird auf Null dekrementiert.
Es wird dann festgestellt, dass die Duplizieranzahl gleich Null
ist, und erst in Reaktion auf diese Feststellung wird der direkte
Steuerblock freigegeben.
-
ZUSAMMENFASSENDER ÜBERBLICK ÜBER DIE ERFINDUNG
-
Es
besteht Bedarf an einer Anordnung und einem Verfahren zum schnellen
Wiedergewinnen von Puffern beim Übertragen
von Daten aus Puffern in einem Speicher, so dass die Puffer zur
Wiederverwendung zwecks Speicherung anderer Daten zur Verfügung gestellt
werden können.
-
Diese
und andere Bedürfnisse
werden durch die vorliegende Erfindung befriedigt, die eine Anordnung
zum Wiedergewinnen von Puffern bereitstellt, in denen Blöcke für einen
Netzwerkschalter in einem paketgeschalteten Netzwerk gespeichert
sind. Die Anordnung weist eine Wiedergewinnungs-Warteschlange zum
Einreihen von Datenblockzeigern auf, die auf eine Stelle in einem
Pufferspeicher eines ersten Puffers zeigen, in dem ein Datenblock
gespeichert ist. Ein durchsuchbarer erster Speicher speichert einen
Zählstand
der Anzahl von Kopien eines von dem Netzwerkschalter zu übertragenden
Datenblocks. Ein Freipuffer-Pool ist zum Einreihen von Pufferzeigern,
die auf freie Pufferstellen in einem Pufferspeicher zeigen, in eine
Warteschlange vorgesehen. Ein Puffer- Manager empfängt einen Datenblockzeiger
eines Datenblocks zum Übertragen
einer Kopie dieses Datenblocks und durchsucht den ersten Speicher,
um festzustellen, ob das Übertragen
dieser Kopie die zuletzt zu übertragende
Kopie dieses Datenblocks ist. Wenn diese Übertragung die letzte Kopie ist,
bewirkt der Puffer-Manager die Übertragung
dieser letzten Kopie dieses Datenblocks von dem Netzwerkschalter
und platziert den Pufferzeiger jedes Puffers, in dem der Datenblock
gespeichert ist, in den Freipuffer-Pool unverzüglich nach der Übertragung des
Inhalts dieses Puffers.
-
Einer
der Vorteile der vorliegenden Erfindung liegt darin, dass, wenn
es möglich
ist festzustellen, dass die nächste
zu übertragende
Kopie eines Datenblocks die letzte zu übertragende Kopie ist, die Puffer,
in denen der Datenblock gespeichert ist, unverzüglich nach dem Übersenden
des Inhalts jedes Puffers wiedergewonnen werden. Dadurch werden die
Puffer viel schneller zur Wiederverwendung zurückgeführt, als es der Fall wäre, wenn
gewartet würde,
bis ein gesamter Datenblock übertragen
worden ist, dann festgestellt würde,
dass keine weiteren Kopien dieses Datenblocks zu senden sind, und
erst dann mit dem Wiedergewinnen der Puffer, in dem der Datenblock
gespeichert ist, begonnen würde.
-
Der
oben genannte Bedarf und weitere Bedürfnisse werden durch eine weitere
Ausführungsform
der vorliegenden Erfindung befriedigt, welche ein Verfahren zum
Wiedergewinnen von Puffern schafft, in denen ein Datenblock nach
der Übertragung
des Datenblocks von einem Netzwerkschalter gespeichert wird. Bei
dem erfindungsgemäßen Verfahren
wird festgestellt, ob eine zu übertragende
Kopie des Datenblocks die letzte zu übertragende Kopie des Datenblocks
ist. Wenn festgestellt wird, dass die zu übertragende Kopie des Datenblocks
die letzte zu übertragende
Kopie des Datenblocks ist, werden die Puffer, in denen der Datenblock
gespeichert ist, nach dem Übertragen
des Inhalts jedes Datenblocks von dem Netzwerkschalter wiedergewonnen.
Wenn jedoch festgestellt wird, dass die zu übertragende Kopie des Datenblocks
nicht die letzte zu übertragende Kopie
des Datenblocks ist, wird eine Anzeige der Über tragung der Kopie des Datenblocks
nach dem Übertragen
des Datenblocks von dem Netzwerkschalter in die Warteschlange eingereiht.
Ferner wird, wenn nicht feststellbar ist, ob die zu übertragende Kopie
des Datenblocks die letzte zu übertragende Kopie
des Datenblocks ist, eine Anzeige der Übertragung der Kopie des Datenblocks
nach dem Übertragen
des Datenblocks von dem Netzwerkschalter in die Warteschlange eingereiht.
-
Ein
Vorteil dieser Ausführungsform
der vorliegenden Erfindung liegt darin, dass der Status der Übertragung
des Datenblocks festgestellt wird, d. h. ob es sich um die letzte
Kopie handelt. Wenn dies festgestellt werden kann, erfolgt eine
Beschleunigung des Wiedergewinnungsprozesses durch Wiedergewinnen
der Puffer unverzüglich
nach der Übertragung
des Inhalts. Dies ist möglich,
da bekannt ist, dass die Daten in den Puffern nicht zum Senden einer
weiteren Kopie dieses Datenblocks erforderlich sind. Wenn es sich
jedoch nicht um die letzte Kopie handelt oder wenn nicht festgestellt
werden kann, dass es sich um die letzte Kopie handelt, wird eine Anzeige
der Übertragung
in die Warteschlange eingereiht. Diese Anzeige kann später zur
Führung
eines Zählstands
der Anzahl von übertragenen
Kopien verwendet werden. Somit beschleunigt die vorliegende Erfindung
unter bestimmten Umständen
den Wiedergewinnungsprozess.
-
Bei
bestimmten Ausführungsformen
der Erfindung wird ferner festgestellt, ob nur eine Einzelkopie
des Datenblocks zu senden ist oder mehrere Kopien zu senden sind.
Bei solchen Ausführungsformen ist
eine Beschleunigung des Prozesses zur Wiedergewinnung von Puffern
während
der Übertragung
der Einzelkopie möglich,
da bekannterweise der Inhalt der Puffer nicht für die Übertragung weiterer Kopien dieses
Datenblocks benötigt
wird. Somit kann das Wiedergewinnen der Puffer für eine Einzelkopie eines Datenblock
auf die gleiche Weise durchgeführt werden
wie für
die letzte Kopie eines Mehrfachkopien-Datenblocks (wenn bekannt ist, dass
diese die letzte Kopie des Mehrfachkopien-Datenblocks ist).
-
Es
besteht ferner Bedarf an einer Anordnung und einem Verfahren zur
Erzeugung von Pufferzeigern beim Systemstart, die beim Start weniger
zeitaufwendig ist.
-
Dieser
Bedarf und weitere Bedürfnisse
werden von der vorliegenden Erfindung befriedigt, die eine Anordnung
zum Verfügbarmachen
von Puffern in einem Speicher zur Datenspeicherung bereitstellt. Diese
Anordnung weist einen Freipuffer-Pool zum Speichern mehrerer Pufferzeiger
auf. Jeder Pufferzeiger zeigt auf eine andere Stelle in dem Speicher, an
der sich ein zugeordneter freier Puffer, der ein aktuell zur Datenspeicherung
freien Puffer ist, befindet. Es ist eine Wiedergewinnungsschaltungsanordnung vorgesehen,
die Pufferzeiger von Puffern, die zur Datenspeicherung verfügbar geworden
sind, zu dem Freipuffer-Pool zurückführt. Ein
Zähler
erzeugt beim Start der Anordnung Pufferzeiger, um zur Datenspeicherung
verfügbare
freie Puffer bereitzustellen. Ein Multiplexer weist einen mit dem
Ausgang des Freipuffer-Pools gekoppelten ersten Eingang und einen mit
dem Ausgang des Zählers
gekoppelten zweiten Eingang und einen Steuereingang auf, der zwischen den
ersten und zweiten Eingängen
wählt.
-
Ein
Vorteil dieser Ausführungsform
der vorliegenden Erfindung liegt darin, dass beim Start des Systems
die Pufferzeiger so erzeugt werden, wie sie benötigt werden, statt dass sie
vor ihrer Verwendung erzeugt und in den Freipuffer-Pool geladen
werden. Wenn es sehr viele Pufferzeiger gibt, die erzeugt werden
können,
wie z. B. 32.000 Pufferzeiger, ist das Warten auf das Erzeugen und
Laden aller dieser Zeiger vor Beginn der Verwendung der Puffer zur
Datenspeicherung Zeitverschwendung. Bei der vorliegenden Erfindung
können
die Puffer, auf die die von dem Zähler erzeugten Pufferzeiger
zeigen, unverzüglich zur
Datenspeicherung verwendet werden, ohne dass gewartet werden muss,
bis sämtliche
Pufferzeiger erzeugt sind. Schließlich wird, wenn während der Schalteroperation
sämtliche
Pufferzeiger erzeugt worden sind, der Zähler nicht mehr benötigt und schaltet
der Multiplexer, so dass sämtliche
Pufferzeiger aus dem Freipuffer-Pool zurückgeholt werden.
-
Die
oben genannten und weitere Merkmale, Aspekte und Vorteile der vorliegenden
Erfindung werden anhand der nachfolgenden detaillierten Beschreibung
der vorliegenden Erfindung in Zusammenhang mit den beiliegenden
Zeichnungen deutlicher.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 zeigt
ein Blockschaltbild eines paketgeschalteten Systems gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
2 zeigt
ein Blockschaltbild eines Multiport-Schalters gemäß einer
Ausführungsform
der vorliegenden Erfindung, der in dem in 1 gezeigten
paketgeschalteten System verwendet wird;
-
3 zeigt
eine schematische Darstellung eines Schalter-Subsystems des in 2 gezeigten Multiport-Schalters
gemäß einer
Ausführungsform der
vorliegenden Erfindung;
-
4 zeigt
ein Blockschaltbild einer Einzelausgangs-Warteschlange des in 3 gezeigten Schalter-Subsystems
gemäß einer
Ausführungsform der
vorliegenden Erfindung;
-
5 zeigt
ein Detail eines ersten Typs einer Ausgangs-Warteschlange gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
6 zeigt
ein Detail eines zweiten Typs einer Ausgangs-Warteschlange gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
7 zeigt
ein Detail eines Überlaufbereichs des
Externspeichers gemäß einer
Ausführungsform der
vorliegenden Erfindung;
-
8 zeigt
ein Blockschaltbild einer Verbundlisten-Datenstruktur, die bei der
vorliegenden Erfindung verwendet wird;
-
9 zeigt
eine schematische Darstellung eines Datenblock-Puffer-Kopfsatzformats
gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
10 zeigt
ein Detail des Mehrfachkopien- und Wiedergewinnungsbereichs sowie
des Bereichs des Freipuffer-Pools des in 4 gezeigten
Schalter-Subsystems gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
11 zeigt
ein Blockschaltbild einer Struktur des Freipuffer-Pools gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
12 zeigt
ein Blockschaltbild einer Mehrfachkopien-Warteschlange gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
13 zeigt
eine schematische Darstellung des Mehrfachkopien-Cachespeichers
gemäß einer Ausführungsform
der vorliegenden Erfindung;
-
14 zeigt
ein Blockschaltbild eines Einreihungsblocks des Puffer-Managers
des Schalter-Subsystems und eine Portvektor-FIFO-Einrichtung gemäß einer
Ausführungsform
der vorliegenden Erfindung.
-
DETAILLIERTE
BESCHREIBUNG ERLÄUTERNDER
AUSFÜHRUNGSFORMEN
-
Die
vorliegende Beschreibung wird beispielhaft anhand eines Schalters
in einem paketgeschalteten Netzwerk, wie z. B. einem Ethernet- (IEEE 802.3) Netzwerk,
beschrieben. Es ist jedoch offensichtlich, dass die vorliegende
Erfindung auch auf andere paketgeschaltete Systeme, wie nachstehend genauer
beschrieben, sowie generell auf andere Systemtypen anwendbar ist.
-
1 zeigt
ein Blockschaltbild eines beispielhaften Systems, bei dem die vorliegende
Erfindung in vorteilhafter Weise einsetzbar ist. Das beispielhafte
System 10 ist ein paketgeschaltetes Netzwerk, wie z. B.
ein Ethernet-Netzwerk. Das paketgeschaltete Netzwerk weist einen
integrierten Multiport-Schalter (IMS) 12 auf, der eine Übertragung
von Datenpaketen zwischen Netzwerkstationen ermöglicht. Das Netzwerk kann Netzwerkstationen
mit unterschiedlichen Konfigurationen aufweisen, beispielsweise
vierundzwanzig (24) 10-Megabit-pro-Sekunde-
(M/bps-) Netzwerkstationen 14, die Daten mit einer Netzwerk-Datenrate
von 10 M/bps senden und empfangen, und zwei 100-M/bps-Netzwerkstationen 22,
die Datenpakete mit einer Netzwerkgeschwindigkeit von 100 M/bps
senden und empfangen. Somit leitet der Schalter 12 selektiv
von den Netzwerkstationen 14 oder 22 kommende
Datenpakete anhand des Ethernet-Protokolls zu dem entsprechenden Zielort
weiter.
-
Gemäß der offenbarten
Ausführungsform senden
und empfangen die 10 M/bps-Netzwerkstationen 14 Datenpakete über ein
Medium 17 entsprechend dem Halbduplex-Ethernet-Protokoll
zu und von dem Schalter 12. Das Ethernet-Protokoll ISO/IEC
8802-3 (ANSI/IEEE Std. 802.3, 1993 Ed.) bildet einen Halbduplex-Medienzugriffsmechanismus,
der es sämtlichen
Stationen 14 ermöglicht, gleichberechtigt
auf den Netzwerkkanal zuzugreifen. Der Datenverkehr in einer Halbduplex-Umgebung wird
nicht gegenüber
dem Medium 17 abgegrenzt oder priorisiert. Vielmehr weist
jede Station 14 eine Ethernet-Interface-Karte auf, die einen Vielfachzugriff mit
Leitungsabfrage mit Kollisionsdetektierung (CSMA/CD) zum Beobachten
des Datenverkehrs auf dem Medium anwendet. Das Nichtvorhanden sein von
Netzverkehr wird durch Abfragen einer Deaktivierung eines Empfangs-Trägers auf
dem Medium detektiert. Eine beliebige Station 14, von der
aus Daten gesendet werden sollen, versucht einen Zugriff auf den
Kanal, indem sie eine vorbestimmte Zeit im An schluss an die Deaktivierung
eines Empfangs-Trägers
auf dem Medium, die als Interpaket-Lücken-Intervall (IPG) bekannt
ist, abwartet. Wenn mehrere Stationen 14 Daten im Netzwerk
versenden müssen, unternimmt
jede Station einen Sendeversuch in Reaktion auf die detektierte
Deaktivierung des Empfangs-Trägers
auf dem Medium nach dem IPG-Intervall, was zu einer Kollision führt. Aus
diesem Grund überwacht
die Übertragungsstation
das Medium, um festzustellen, ob eine Kollision aufgrund von gleichzeitig
von einer anderen Station aus gesendeten Daten aufgetreten ist.
Wenn eine Kollision detektiert wird, werden beide Stationen gestoppt,
warten einen willkürlich
festgelegten Zeitraum und versuchen erneut, eine Übertragung
durchzuführen.
-
Die
mit 100 M/bps arbeitenden Netzwerkstationen 22 werden vorzugsweise
im Vollduplex-Modus nach dem vorgeschlagenen Ethernet-Standard IEEE 802.3x
Full-Duplex with Flow Control – Working
Draft (0.3) betrieben. Der Vollduplex-Betrieb bildet ein Zwei-Wege-Punkt-zu-Punkt-Datenübertragungslink zwischen
jeder mit 100 Mb/s arbeitenden Netzwerkstation 22 und dem
Schalter 12, so dass der Schalter 12 und die jeweiligen
Stationen 22 Datenpakete ohne Kollision simultan übertragen
und empfangen können.
Die mit 100 M/bps arbeitenden Netzwerkstationen 22 sind
jeweils über
ebenfalls mit 100 M/bps arbeitende reelle (PHY-) Vorrichtungen 20 vom
Typ 100 Base-TX, 100 Base-T4 oder 100 Base-FX mit dem Netzwerkmedium 17 gekoppelt.
Der Schalter 12 weist ein medienunabhängiges Interface (MII) 24 auf, das
eine Verbindung zu den reellen Vorrichtungen 20 bildet.
Die mit 100 M/bps arbeitenden Netzwerkstationen 22 können entweder
als Server oder Router für die
Verbindung mit anderen Netzen eingesetzt werden.
-
Wie
in 1 dargestellt, weist das Netzwerk 10 diverse
Schalt-Sendeempfänger 16 auf,
die das Zeitmultiplexing und das Zeitdemultiplexing für die zwischen
dem Schalter 12 und den mit 10 M/bps arbeitenden Stationen 14 gesendeten
Datenpakete durchführen.
Ein magnetisches Transformatormodul 19 sorgt dafür, dass
die Wellenform der Signale auf dem Medium 17 erhalten bleiben.
Der Schalter 12 weist ein Sendeempfänger-Interface 18 auf, über das das Übertragen
und Empfangen der Datenpakete an jeden und von jedem Schalter-Sendeempfänger 16 unter
Verwendung eines Zeitmultiplex-Protokolls über ein einzelnes serielles
Ohne-Rückkehr-zu-Null- (NRZ-)
Interface 23 erfolgt. Der Schalter-Sendeempfänger 16 empfängt Pakete
von dem Seriell-NRZ-Interface 23,
demultiplext die empfangenen Pakete und gibt die Pakete über das
Netzwerkmedium 17 an die betreffende Endstation 14 aus.
Bei dem offenbarten Ausführungsbeispiel
weist jeder Schalter-Sendeempfänger 16 vier
unabhängige,
mit 10 M/bps arbeitende Twisted-Pair-Ports auf und wendet ein 4
: 1-Multiplexing über
das serielle NRZ-Interface zum Ermöglichen einer Verringerung
der Anzahl von von dem Schalter 12 benötigten PINs um das Vierfache an.
-
Der
Schalter 12 weist eine Entscheidungsfindungsmaschine, eine
Umschaltmaschine, ein Pufferspeicher-Interface, Konfigurations-/Steuer-/Statusregister,
Management-Zähler
und ein MAC- (Medienzugriffssteuerungs-) Protokoll-Interface zur Unterstützung des
Routing der Datenpakete zwischen den die Netzstationen 14 und 22 bedienenden
Ethernet-Ports auf. Der Schalter 12 weist ferner eine erweiterte
Funktionalität
zum Treffen intelligenter Umschalt-Entscheidungen und zum Liefern statistischer Netzwerkinformationen
in Form von Management-Informationsbasis- (MIB-) Objekten an eine
weiter unten beschriebene externe Managementeinheit auf. Der Schalter 12 weist
ferner Interfaces für
das externe Speichern von Paketdaten sowie der Umschaltlogik zum
Minimieren der Chipgröße des Schalters 12 auf.
So weist der Schalter 12 beispielsweise ein SDRAM-Interface 34 auf, über das
der Zugriff auf einen Externspeicher 36, in dem die empfangenen
Datenblockdaten, Speicherstrukturen und MIB-Zählerinformationen gespeichert
sind, erfolgt. Als Speicher 36 kann ein 80-, 100- oder
120-MHz-SDRAM mit einer Speichergröße von 2 oder 4 Mb verwendet
werden.
-
Der
Schalter 12 weist ferner einen Management-Port 30 auf,
der es einer externen Managementeinheit ermöglicht, den gesamten Betrieb
des Schalters 12 über
ein Management-MAC-Interface 32 zu steuern. Der Schalter 12 weist ferner
ein PCI-Interface 26 auf, das einen Zugriff durch die Managementeinheit über einen
PCI-Host und eine PCI-Brücke 28 ermöglicht.
Alternativ können
der PCI-Host und die PCI-Brücke 28 auch
als Erweiterungsbus für
mehrere Schaltervorrichtungen 12 verwendet werden.
-
Der
Schalter 12 weist eine interne Entscheidungsfindungsmaschine
(2) auf, die selektiv die von einer Quelle empfangenen
Datenpakete an mindestens eine Zielstation überträgt. Es besteht die Möglichkeit,
diese interne Entscheidungsfindungsmaschine durch eine externe Regelprüfeinrichtung zu
ersetzen. Der Schalter 12 weist ein Extern-Regelprüfeinrichtungs-Interface
(ERCI) 40 auf, das es ermöglicht, anstelle der internen
Entscheidungsfindungsmaschine eine externe Regelprüfereinrichtung 42 zur
Entscheidungsfindung hinsichtlich der Weiterleitung von Datenblöcken zu
verwenden. Somit können
Entscheidungen zur Weiterleitung der Datenblöcke entweder von der internen
Umschaltmaschine oder von der externen Regelprüfeinrichtung 42 getroffen
werden.
-
Der
Schalter 12 weist ferner ein LED-Interface 44 auf,
das den Bedingungsstatus pro Port austaktet und die LED-externe
Logik 46 treibt. Die LED-externe Logik 46 treibt
ihrerseits für
den Menschen lesbare LED-Anzeigeelemente 48. Ein Oszillator 38 liefert
ein 40 MHz-Takteingabesignal für
die Systemfunktionen des Schalters 12.
-
2 zeigt
ein detaillierteres Blockschaltbild des in 1 gezeigten
integrierten Multiport-Schalters 12. Der Schalter 12 enthält vierundzwanzig
(24) mit 10 M/bps arbeitende Medienzugangssteuer- (MAC-) Ports 50 für das Senden
und Empfangen von Datenpaketen im Halbduplex-Modus zwischen den jeweiligen
mit 10 M/bps arbeitenden Netzwerkstationen 14 (Ports 1–24) und
zwei mit 100 M/bps arbeitende MAC-Ports 53 für das Senden
und Empfangen von Datenpaketen im Vollduplex-Modus zwischen den
jeweiligen mit 100 M/bps arbeitenden Netzwerkstationen (Ports 25,
26). Wie oben beschrieben, arbeitet das Management-Interface 30 auch
gemäß dem MAC-Layer-Protokoll
(Port 0).
-
Jeder
der MAC-Ports 50, 53 und 30 weist einen
Empfangs-FIFO-Puffer 52 und einen Übertragungs-FIFO-Puffer 54 auf.
Datenpakete von einer Netzwerkstation werden von dem entsprechenden MAC-Port
empfangen und in dem entsprechenden Empfangs-FIFO-Puffer 52 gespeichert.
Das empfangene Datenpaket wird von dem entsprechenden Empfangs-FIFO-Puffer 52 an
das Externspeicher-Interface 34 zur Speicherung im Externspeicher 36 ausgegeben.
-
Die
Kopfsatzdaten des empfangenen Pakets werden ebenfalls an eine Entscheidungsfindungsmaschine
weitergeleitet, und zwar entweder an die interne Regelprüfeinrichtung 58 oder
das Extern-Regelprüfeinrichtungs-Interface 40 weitergeleitet,
um zu ermitteln; an welchen MAC-Ports die Ausgabe des Datenpakets
erfolgt. Insbesondere werden die Paket-Kopfsatzdaten zu der internen
Regelprüfeinrichtung 58 oder
dem Extern-Regelprüfeinrichtungs-Interface 40 weitergeleitet,
und zwar abhängig
davon, ob der Schalter 12 zum Arbeiten mit der internen
Regelprüfeinrichtung 58 oder
der externen Regelprüfeinrichtung 42 vorgesehen
ist. Die interne Regelprüfeinrichtung 58 und
die externe Regelprüfeinrichtung 42 bilden
die Entscheidungsfindungs-Logik zum Bestimmen des Ziel-MAC-Ports
für ein
bestimmtes Datenpaket. Die Entscheidungsfindungsmaschine kann die
Ausgabe eines Datenpakets entweder an einen einzelnen Port, an mehrere
Ports oder an sämtliche Ports
(d. h. Rundsenden) anzeigen. Beispielsweise enthält jedes Datenpaket einen Kopfsatz,
in welchem die Ausgangs- und die Zieladresse angegeben sind, gemäß der die
Entscheidungsfindungsmaschine den entsprechenden Ausgangs-MAC-Port
identifizieren kann. Alternativ kann die Zieladresse einer virtuellen Adresse
entsprechen, die die entsprechende Entscheidungsfindungsmaschine
als mehreren Netzwerkstationen entsprechend identifiziert. Alternativ kann
das empfangene Datenpaket auch einen als VLAN (virtuelles LAN) gekennzeichneten
Datenblock nach dem IEEE 802.1d-Protokoll enthalten, in dem ein
anderes Netz (über
mit 100 M/bps arbeitende Stationen 22) oder eine vorgeschriebene
Gruppe von Stationen angegeben ist. In diesem Fall muss entweder
die interne Regelprüfeinrichtung 58 oder
die externe Regelprüfeinrichtung 42 über das
Interface 40 entscheiden, ob ein temporär im Pufferspeicher 36 gespeicherter Datenblock
an einen einzelnen MAC-Port oder an mehrere MAC-Ports ausgegeben werden
soll.
-
Die
Verwendung der externen Regelprüfeinrichtung 42 bietet
Vorteile, wie z. B. eine höhere
Kapazität,
eine willkürliche
Einreihung in die Entscheidungsfindungs-Warteschlange, wodurch es
möglich ist,
dass Datenblock-Weiterleitungs-Entscheidungen getroffen werden,
bevor der Datenblock vollständig
in dem Externspeicher gepuffert ist, und es möglich ist, dass Entscheidungen
in einer von der Reihenfolge, in der die Datenblöcke von dem Schalter 12 empfangen werden,
unabhängigen
Reihenfolge getroffen werden.
-
Die
Entscheidungsfindungsmaschine (z. B. die interne Regelprüfeinrichtung 58 oder
die externe Regelprüfeinrichtung 42)
gibt eine Weiterleitungs-Entscheidung an ein Schalter-Subsystem 56 in Form
eines Portvektors aus, welcher jeden MAC-Port identifiziert, an
dem das Datenpaket empfangen werden soll. Der Portvektor von der
Regelprüfeinrichtung enthält den Speicherplatz
für das
Datenpaket im Externspeicher 36 und die Identifizierung
der MAC-Ports, an denen das Datenpaket zu Übertragungszwecken empfangen
werden soll (z. B. MAC-Ports 0–26).
Das Schalter-Subsystem 56 holt das im Portvektor angegebene
Datenpaket über
das Externspeicher-Interface 34 aus dem Externspeicher 36 und
liefert das abgerufene Datenpaket zu der entsprechenden Übertragungs-FIFO-Einrichtung 54 der identifizierten
Ports.
-
Weitere
Interfaces liefern Management- und Steuerinformationen. So bietet
beispielsweise ein Management-Daten-Interface 59 dem Schalter 12 die
Möglichkeit,
Steuer- und Statusinformationen gemäß der MII-Management-Spezifikation
(IEEE 802.3u) mit den Schalter-Sendeempfängern 16 und den mit
100 M/bps arbeitenden reellen Vorrichtungen 20 auszutauschen.
Das Management-Daten-Interface 59 gibt beispielsweise einen
Management-Datentakt (MDC) aus, welcher einen Zeitbezug auf dem bidirektionalen
Management-Daten-IO- (MDIO-) Signalpfad herstellt.
-
Das
PCI-Interface 26 ist ein 32-Bit-Slave-Interface nach PCI-Revision
2.1 für
den Zugriff durch den PCI-Host-Prozessor 28 auf die internen
IMS-Status- und Konfigurationsregister 60 sowie für den Zugriff
auf den Externspeicher 36. Das PCI-Intertace 26 kann
darüber
hinaus auch als Erweiterungsbus für mehrere Schaltervorrichtungen
dienen. Der Management-Port 30 stellt über ein standardmäßiges siebenadriges
invertiertes serielles GPSI-Interface eine Verbindung zu einer externen
MAC-Maschine her und ermöglicht
so einen Zugriff des Host-Controllers auf den Schalter 12 unter
Verwendung eines Standard-MAC-Layer-Protokolls.
-
3 gibt
eine genauere Darstellung des Schalter-Subsystems 56 aus 2 gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung. Andere Elemente des in 2 gezeigten
Multiport-Schalters 12 sind auch in 3 dargestellt,
um die Verbindungen des Schalter-Subsystems 56 mit diesen
anderen Elementen aufzuzeigen. Das Schalter-Subsystem 56 weist
die Kern-Umschaltmaschine zum Empfangen und Weiterleiten von Datenblöcken auf.
Die Haupt-Funktionsblöcke
zum Implementieren der Umschaltmaschine umfassen: eine Portvektor-FIFO-Einrichtung 70,
einen Puffer-Manager 72, mehrere Port-Ausgangs-Warteschlangen 74,
eine Management-Port-Ausgangs-Warteschlange 75, eine Erweiterungsbus-Port-Ausgangs-Warteschlange 77,
einen Freipuffer-Pool 104, eine Mehrfachkopien-Warteschlange 90,
einen Mehrfachkopien-Cachespeicher 96 und eine Wiedergewinnungs-Warteschlange 98.
Die Operation und Struktur dieser Funktionsblöcke wird noch genauer beschrieben,
es wird jedoch zunächst
ein kurzer Überblick über das
in 3 gezeigte Schalter-Subsystem 56 gegeben,
um einen Kontext zur späteren
Beschreibung der einzelnen Elemente herzustellen.
-
Es
gibt zwei grundlegende Typen von Datenblöcken, die von den Ports aus
in den Multiport-Schalter 12 eintreten: Einzelkopien-Datenblöcke und
Mehrfachkopien-Datenblöcke.
Ein Einzelkopien-Datenblock ist ein Datenblock, der an einem Port empfangen
wird und der von dem Multiport-Schalter 12 nur zu einem
anderen Port übertragen
werden soll. Im Gegensatz dazu ist ein Mehr fachkopien-Datenblock
ein Datenblock, der zum Übertragen
an mehr als einen Port an einem Port empfangen wird. In 3 ist
jeder Port durch eine separate MAC 50 mit eigener Empfangs-FIFO-Einrichtung 52 und Übertragungs-FIFO-Einrichtung 54 repräsentiert.
-
Datenblöcke, unabhängig davon,
ob es sich um eine Einzelkopie oder eine Mehrfachkopie handelt,
werden von den internen MAC-Maschinen 50 empfangen. Wenn
das Datenblockpaket an dem Port empfangen wird, wird es in die Empfangs-FIFO-Einrichtung 52 platziert.
Jeder Datenblock ist mit einem Kopfsatz versehen, der an eine Regelprüfeinrichtung,
und zwar entweder die interne Regelprüfeinrichtung 58 oder
die externe Regelprüfeinrichtung 42, geliefert
wird. Die Regelprüfeinrichtung 42 oder 58 stellt
anhand der in dem Kopfsatz enthaltenen Informationen fest, von wo
aus das Datenblockpaket geschickt wird, d. h. durch welchen Port
oder welche Ports das Datenblockpaket übertragen wird.
-
Zur
gleichen Zeit, zu der die Regelprüfeinrichtung 42 oder 58 ihre
Entscheidung hinsichtlich der Weiterleitung trifft, erhält der Puffer-Manager 72 einen
Freipuffer-Zeiger von dem Freipuffer-Pool 104. Dieser Freipuffer-Zeiger
ist diejenige Stelle in dem Externspeicher 36, an der der
Datenblock von der Empfangs-FIFO-Einrichtung 52 gespeichert
wird. Wenn der Puffer-Manager 72 den Freipuffer-Zeiger aus
dem Freipuffer-Pool 104 empfangen hat, wird der Puffer,
auf den der Freipuffer-Zeiger zeigt, nicht länger als frei angesehen. Die
Datenblockdaten werden in einer Transaktion zum direkten Speicherzugriff (DMA) über einen
Datenbus 80 von der Empfangs-FIFO-Einrichtung 52 zu
dem Externspeicher 36 übertragen.
Der Datenblock wird an einer Stelle gespeichert, auf die der aus
dem Freipuffer-Pool 104 erhaltene Freipuffer-Zeiger zeigt,
obwohl eine Anzahl anderer Puffer zum Speichern eines Datenblocks verwendet
werden kann, wie noch beschrieben wird.
-
Zusätzlich zu
den Kopfsatzdaten empfängt die
Regelprüfeinrichtung 42 oder 58 ferner
den Freipuffer-Zeiger von dem Puffer-Manager 72. Dieser Freipuf fer-Zeiger
wird nun als Datenblockzeiger bezeichnet, da er auf diejenige Speicherstelle
in dem Externspeicher 36 zeigt, an der der Datenblock gespeichert
ist. Die Regelprüfeinrichtung 42 oder 58 verwendet
die Kopfsatzinformationen zum Treffen der Weiterleitungs-Entscheidung
und zum Erzeugen eines Weiterleitungs-Befehls in Form eines "Portvektors". Bei dem dargestellten
Ausführungsbeispiel
ist der Portvektor ein 28-Bit-Vektor mit einem Bitsatz für jeden
Ausgangsport, an den der Datenblock weitergeleitet werden soll.
Es sei bei diesem einen Überblick
gebenden Beispiel angenommen, dass der empfangene Datenblock ein
Einzelkopien-Datenblock ist. Entsprechend wird nur ein Bit in dem
von der Regelprüfeinrichtung 42 oder 58 erzeugten
Portvektor gesetzt. Das in dem Portvektor gesetzte Bit entspricht
einem speziellen einen der Ports.
-
Die
Regelprüfeinrichtung 42 oder 58 platziert den
Portvektor und den Datenblockzeiger (sowie einen Steuer-Op-Kode
und einen VLAN-Index) in die Portvektor-FIFO-Einrichtung 70.
Der Portvektor wird von der Portvektor-FIFO-Einrichtung 70 geprüft, um festzustellen,
in welche spezielle Ausgangs-Warteschlange 74 (oder Warteschlangen)
der dem Portvektor zugeordnete Datenblockzeiger eingegeben werden
soll. Die Portvektor-FIFO-Einrichtung 70 platziert den
Datenblockzeiger in den oberen Teil der entsprechenden Ausgangs-Warteschlange 74.
Dadurch wird die Übertragung
des Datenblocks in die Warteschlange eingereiht.
-
Zu
einem Zeitpunkt erreicht der Datenblockzeiger nach dem Durchlaufen
der Ausgangs-Warteschlange 74 den unteren Teil der Ausgangs-Warteschlange 74.
Der Puffer-Manager 72 nimmt den Datenblockzeiger auf, wenn
dieser den unteren Teil der Ausgangs-Warteschlange 74 erreicht
und gibt den Datenblockzeiger über
einen Datenblockzeiger-Lesebus 86 an die entsprechende Übertragungs-FIFO-Einrichtung 54 des
richtigen Ports weiter. Dadurch wird die Übertragung des Datenblocks eingeplant.
Die Datenblockdaten werden in einer DMA-Transaktion aus derjenigen
Stelle in dem Externspeicher 36, auf die der Datenblockzeiger
zeigt, ausgelesen, in die entsprechende Übertragungs-FIFO-Einrichtung 54 platziert
und dann übertragen.
-
Eine
Mehrfachkopien-Übertragung
erfolgt im wesentlichen auf die gleiche Weise wie die Einfachkopien-Übertragung,
mit der Ausnahme, dass der Portvektor mehrere gesetzt Bits aufweist,
die die mehreren Ports bezeichnen, von denen aus der Datenblock übertragen
wird. Der Datenblockzeiger wird in jede der entsprechenden Ausgangs-Warteschlangen 74 platziert
und von den entsprechenden Übertragungs-FIFO-Einrichtungen 54 übertragen.
-
Der
Puffer-Manager 72 verwendet die speziellen Steuer-Warteschlangen,
d. h. den Freipuffer-Pool 104, die Mehrfachkopien-Warteschlange 90 und
die Wiedergewinnungs-Warteschlange 98 und den Mehrfachkopien-Cachespeicher 96 zum
Verwalten des Prozesses zum Zuweisen von Puffern zwecks Speicherung
empfangener Datenblöcke
und Zurückholen
von Puffern zwecks Wiederverwendung, wenn die Datenblöcke an den
(die) bezeichneten Ausgangsports) übertragen worden sind. Der Puffer-Manager 72 hält ferner "Überlauf"-Regionen im
Externspeicher 36 für
die Ausgangs-Warteschlangen 74 und die Steuer-Warteschlangen 104, 90 und 98 aufrecht,
wie nachstehend genauer beschrieben.
-
Mit
diesem Überblick
als Hintergrund werden nun die einzelnen Abschnitte und unterschiedlichen Aspekte
des Schalter-Subsystems 56 genauer beschrieben. Der erste
dieser Aspekte, die nun beschrieben werden, ist die Struktur der
unterschiedlichen Ausgangs-Warteschlangen 74 gemäß der vorliegenden
Erfindung. Zusätzlich
zu den Ausgangs-Warteschlangen 74, die für die 10
Mb/s-Ausgangsports
und die 100 Mb/s-Ausgangsports bestimmt sind, sind eine Ausgangs-Warteschlange 75 für den Management-Port 30 und
eine Ausgangs-Warteschlange 77 für den Erweiterungsport 26 vorgesehen.
Diese Ausgangs-Warteschlangen 75 ,77 haben
die gleiche äußere Struktur
wie die Ausgangs-Warteschlangen 74,
jedoch andere innere Konfigurationen, wie noch beschrieben wird.
-
4 zeigt
ein Blockschaltbild der äußeren Struktur
einer Ausgangs-Warteschlange 74 gemäß einer Ausführungsform
der vorliegenden Erfindung. Gemäß 4 hat
die erfindungsgemäße Ausgangs-Warteschlange 74 eine
dreiteilige Konfiguration. Zur Erreichung der höchsten Leistungsfähigkeit wird
vorzugsweise die gesamte Warteschlangenstruktur auf dem Chip (als
Multiport-Schalter 12 bezeichnet)
gehalten, die nutzbare Fläche
auf einem Chip ist jedoch sehr teuer. Dies führt zu einem Dilemma, wenn
der Chip dazu bestimmt ist, eine große Anzahl von Einträgen umzuschalten
und in eine Warteschlange einzureihen Die vorliegende Erfindung
löst dieses
Dilemma durch Bereitstellen einer einzigen Ausgangs-Warteschlange
mit hoher Leistungsfähigkeit,
einem Abschnitt mit niedriger Kapazität auf dem Chip und einem Überlaufbereich
außerhalb
des Chips. Der Überlaufbereich
ermöglicht
es, dass die Warteschlange gemäß Erfordernis
als Warteschlange mit großer
Kapazität,
wenngleich mit einer relativ geringeren Leistungsfähigkeit
als der des auf dem Chip befindlichen Teils dient.
-
Eine
einzige logische Ausgangs-Warteschlange 74 gemäß der vorliegenden
Erfindung und der in 4 gezeigten Ausführungsform
weist drei physische Abschnitte auf. Diese umfassen eine Ausgangs-Warteschlangen-Schreibseite 76,
eine Ausgangs-Warteschlangen-Leseseite 78 und einen Ausgangs-Warteschlangen-Überlaufbereich
(generell als 110 bezeichnet) in dem Externspeicher 36.
Zugriff auf den Externspeicher 36 erfolgt für sämtliche
Ausgangs-Warteschlangen 74 über das
Externspeicher-Interface 34, wie oben beschrieben. Die
vorliegende Erfindung nutzt die Burst-Charakteristik moderner Externspeicher
aus, so dass die Daten (z. B. Datenblockzeiger) in Bursts über den
Bus 84, der den Chip 12 mit dem Externspeicher 36 verbindet,
auf den und von dem Chip zu dem Überlauf-Warteschlangen-Bereich 110 gesendet
werden.
-
Die
Ausgangs-Warteschlangen-Schreibseite 76 und die Ausgangs-Warteschlangen-Leseseite 78 befinden
sich auf dem Chip 12. Die Schreibseite 76 und
die Leseseite 78 werden als kleine teuere Ressourcen angesehen.
Im Gegensatz dazu ist der Überlaufbereich 110,
der den dritten Teil der Ausgangs-Warteschlange 74 bildet, groß und preiswert. Die
Schreibseite 76 und die Leseseite 78 bieten eine hohe
Leistungsfähigkeit,
während
der Pfad durch den Überlaufbereich
einen Pfad mit niedriger Leistungsfähigkeit und großer Kapazität bildet.
-
Im
Betrieb empfängt
die Ausgangs-Warteschlangen-Schreibseite 76 einen Eintrag.
Bei dem Ausführungsbeispiel
eines erfindungsgemäßen Multiport-Schalters 12 ist
der Eintrag ein Datenblockzeiger, der auf den ersten Puffer in dem
Externspeicher zeigt, in dem die ersten 256 Bytes eines Datenblocks gespeichert
sind. Es ist für
Fachleute auf dem Sachgebiet jedoch offensichtlich, dass die Ausgangs-Warteschlangen-Struktur 74 nicht
auf Datenblockzeiger als Einträge
beschränkt
ist, sondern in großem
Umfang zum Einreihen anderer Typen von Einträgen sowohl in Multiport-Schaltern
als auch in anderen Technologien verwendbar ist.
-
Wenn
der Eintrag die Ausgangs-Warteschlangen-Schreibseite 76 durchlaufen
und deren unteren Teil erreicht hat, trifft die der Ausgangs-Warteschlange 74 zugeordnete
Steuerlogik eine Entscheidung darüber, was mit dem Eintrag geschehen soll.
Wenn in der Ausgangs-Warteschlangen-Leseseite 78 Platz
ist und der Überlaufbereich 110 für diese
Ausgangs-Warteschlange 74 leer ist, werden ein oder mehrere
Einträge
direkt von der Ausgangs-Warteschlangen-Schreibseite 76 zu der Ausgangs-Warteschlangen-Leseseite
weitergegeben. Das Weitergeben des Eintrags oder der Einträge direkt
von der Schreibseite 76 zu der Leseseite 78 erfolgt
zur Gänze
auf dem Chip 12, und daher handelt es sich dabei um ein
schnelles Durchlaufen eines Eintrags mit geringer Latenz.
-
Wenn
die Ausgangs-Warteschlangen-Leseseite 78 voll ist und mindestens
eine Datenmenge in Burst-Größe (z. B.
Einträge
mit 16 Bytes) in der Ausgangs-Warteschlangen-Schreibseite 76 vorhanden ist,
werden die Daten in Burst-Manier
in den Überlaufbereich 110 für diese
Ausgangs-Warteschlange 74 ge schrieben. Wenn die Ausgangs-Warteschlangen-Leseseite 78 voll
ist, jedoch noch keine Datenmenge in Burst-Größe in der Ausgangs-Warteschlangen-Schreibseite 76 vorhanden
ist, bleibt der Eintrag in der Ausgangs-Warteschlangen-Schreibseite,
und es geschieht nichts weiter. Schließlich ist die Ausgangs-Warteschlangen-Leseseite 78 leer,
und wenn die Ausgangs-Warteschlangen-Leseseite 78 genug Platz
zum Aufnehmen einer Datenmenge in Burst-Größe hat und Daten in dem Überlaufbereich 110 vorhanden
sind, wird ein Daten-Burst von dem Überlaufbereich 110 in
die Ausgangs-Warteschlangen-Leseseite 78 geliefert.
-
In
der Ausgangs-Warteschlangen-Struktur fungiert die Leseseite 78 zum
größten Teil
als herkömmliche
Warteschlange, da sie zu demjenigen Teil gehört, der die Einträge einen
nach dem anderen übernimmt.
Die Ausgangs-Warteschlangen-Schreibseite 76 hat
größtenteils
Sammelfunktion zum Assemblieren der Daten zu Bursts zwecks Schreibens in
den Externspeicher 36. Somit transformiert die vorliegende
Erfindung Einzelereignisse (Platzieren eines Eintrags in die Ausgangs-Warteschlange 74)
in ein Burst-Ereignis. Die Schreibseite 76 ermöglicht ein Kumulieren
von Daten, die dann erforderlichenfalls in Burst-Manier in den Überlaufbereich 110 in
dem Externspeicher 36 geliefert werden. Der Überlaufbereich 110 bildet
einen preiswerten Speicher im Falle einer Überlastung, statt dass teuere
Chip-Ressourcen für
eine Funktion zweckbestimmt werden, die nur relativ selten benötigt wird.
Obwohl die vorliegende Erfindung einen außerhalb des Chips befindlichen Überlaufbereich 110 verwendet,
erfolgt der Zugriff auf diesen Bereich 110 auf effiziente
Weise durch Burst-Übertragung
von jeweils einer Anzahl von Informations-Bytes. Dies steht im Gegensatz zu herkömmlichen
Warteschlangen-Strukturen, bei denen Einzeleinträge in die und aus der Warteschlange
geschrieben und gelesen werden.
-
Im
Betrieb werden, wenn viele Einträge
an der Ausgangs-Warteschlange 74 ankommen, diese Einträge in den Überlaufbereich 110 platziert,
um ein Überlaufen
der auf dem Chip befindlichen Warteschlange 78 zu verhindern.
Somit wird durch die erfindungsgemäße Warteschlangen-Struktur
ein Verwerfen von Datenblöcken
zum großen
Teil verhindert. Ferner kann die Gesamtmenge an für die Überlaufbereiche 110 zweckbestimmtem
Speicherplatz leicht durch Ändern
der Größe des Externspeichers 36 verändert werden.
Außerdem
sind die Größen der einzelnen
spezifischen Überlaufbereiche 110 programmierbar,
um die Warteschlangen-Größen den Kundenwünschen anzupassen,
ohne dass die Leistungsfähigkeit
der Ausgangs-Warteschlangen 74 beeinträchtigt wird.
-
Typischerweise
ist eine Warteschlange eine geordnete Struktur mit einer FIFO-Anordnung.
Bei einigen Warteschlangen-Typen, wie z. B. der Wiedergewinnungs-Warteschlange 98 und
dem Freipuffer-Pool 104, ist die Reihenfolge von Einträgen jedoch
unerheblich. Wenn es möglich
ist, Daten direkt von der Schreibseite 100 zu der Leseseite 102 zu senden,
ermöglicht
es die vorliegende Erfindung, Informationen direkt auf diesem Weg
unter Umgehung des Überlaufbereichs
für die
Warteschlange zu senden. Dies ist selbst dann möglich, wenn Informationen in
dem zugeordneten Überlaufbereich
vorhanden sind, solange die Informationen keiner Reihenfolge unterliegen
müssen.
Beispielsweise muss die Wiedergewinnung von Puffern keiner Reihenfolge unterliegen,
da eine beliebige Reihenfolge, in der die Puffer schließlich zu
der Frei-Liste in
dem Freipuffer-Pool 104 zurückgeführt werden, wenn die Puffer nicht
mehr zum Speichern des Datenblocks benötigt werden, akzeptabel ist.
Um ein Ausschöpfen
der Bandbreite eines Schreibvorgangs in den Überlaufbereich 110 für die Wiedergewinnungs-Warteschlange 98 in
dem Externspeicher 36 zu vermeiden, werden somit, wenn
die Daten keiner Reihenfolge unterliegen müssen, die Informationen direkt
von der Schreibseite 100 zu der Leseseite 102 weitergegeben,
wobei davon ausgegangen wird, dass die Leseseite 102 Platz
für mehr
Einträge
hat. Die Wiedergewinnungs-Warteschlange 98 ist ein Beispiel
für einen Warteschlangen-Typ,
in den Daten eingereiht werden, die keiner Reihenfolge unterliegen
müssen.
Es gibt jedoch zahlreiche andere Datentypen bei unterschiedlichen
Anwendungen, bei denen ebenfalls keine Reihenfolge eingehalten werden
muss, so dass dieses Merkmal der vorliegenden Erfindung in Warteschlangen
zur Anwendung kommt, in die diese anderen Datentypen eingereiht
werden.
-
Bei
dem Multiport-Schalter gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung, der in 1 und 2 gezeigt
ist, gibt es achtundzwanzig Ausgangs-Warteschlangen (von denen jede
einem Ausgangsport zugeordnet ist): vierundzwanzig für die 10
Mb/s-Benutzer-Ports, zwei für
die 100 Mb/s-Server-Ports,
eine für
den Management-Port und eine für
den Erweiterungsbus-Port. Die Ausgangs-Warteschlangen 74, 75 und 77 bilden
einen temporären
Speicher für
Datenblockzeiger, wenn diese zur Übertragung eingereiht sind.
Das Einreihen in eine Warteschlange erfolgt über eine Portvektor-FIFO-Einrichtung 70,
die Datenblockzeiger in die verschiedenen Ausgangs-Warteschlangen 74, 75 und 77 schreibt,
die in einem Weiterleitungs-Portvektor angegeben sind.
-
Bei
bestimmten bevorzugten Ausführungsformen
der Erfindung weisen die verschiedenen Ausgangs-Warteschlangen 74, 75 und 77 mehrere
oder sämtliche
der folgenden Felder auf: Einzelkopie-Bit, Datenblockzeiger, Steuer-Op-Kode oder Steuersignale
und VLAN- (virtuelles Nahbereichsnetzwerk) Index. Das Einzelkopien-Bit
markiert einen Datenblock, der nur zu einem Ausgangsport weiterzuleiten
ist. Der Datenblockzeiger zeigt auf den Datenblock in dem Externspeicher 36.
Der Steuer-Op-Kode identifiziert spezielle Informationen über den
Datenblock (d. h. neuerlernten Datenblock etc.). Die Steuersignale
verwenden Informationen von dem Steuer-Op-Kode zum Anzeigen, wie
die Ports Datenblöcke
vor der Übertragung
verarbeiten. Der VLAN-Index liefert die Referenz für eine VLAN-Kennung,
die (falls erforderlich) in den ausgehenden Datenblock eingesetzt
werden sollte. Diese Felder sind jedoch nur beispielhaft, da die
vorliegende Erfindung auf andere Ausgangs-Warteschlangen mit unterschiedlichen
Typenfeldern anwendbar ist.
-
Die
innere Struktur eines Ausführungsbeispiels
eines ersten Typs der Ausgangs-Warteschlange 74, der 10
Mb/s-Port-Ausgangs-Warteschlange, ist in 5 dargestellt.
Die 10 Mb/s-Ausgangs-Warteschlange 74 enthält Einträge für zu den
10 Mb/s-Ports weiterzuleitende Datenblöcke. Bei dem dargestellten
Ausführungsbeispiel
enthalten die Ausgangs-Warteschlangen-Schreibseiten 76 für diese Warteschlangen
zweiunddreißig
Einträge
und die Ausgangs-Warteschlangen-Leseseiten 78 sechzehn Einträge, obwohl
andere Größen in Betracht
kommen und in den Umfang der Erfindung fallen. Jeder Eintrag in
einer 10 Mb/s-Ausgangs-Warteschlange 74 weist ein Einzelkopien-Bit
und einen Datenblockzeiger (14 Bits) auf. Bei dem Ausführungsbeispiel des
erfindungsgemäßen Multiport-Schalters
ist der VLAN-Index nicht erforderlich, da es keine VLAN-Kennung
an den 10 Mb/s-Ports gibt.
-
Die
innere Struktur eines Ausführungsbeispiels
eines zweiten Typs der Ausgangs-Warteschlange 74, der 100
Mb/s-Port-Ausgangs-Warteschlange, ist in 6 dargestellt.
Die 100 Mb/s-Port-Ausgangs-Warteschlangen enthalten Einträge für zu den
100 Mb/s-Ports weiterzuleitende Datenblöcke. Die Ausgangs-Warteschlangen-Schreibseite 76 enthält bei diesem
Ausgangs-Warteschlangen-Typ vierundsechzig Einträge, und die Ausgangs-Warteschlangen-Leseseite
enthält
sechzehn Einträge.
Jeder Eintrag weist einen VLAN-Index, einen Teil-Steuer-Op-Kode
(Bits 4-0), ein Einzelkopien-Bit und einen Datenblockzeiger auf.
-
Ein
beispielhafter Plan des Externspeichers 36 ist in 7 dargestellt.
Die Gesamtkapazität
des Externspeichers 36 kann beispielsweise 4 Mb betragen,
obwohl bei anderen Ausführungsformen
Speicher mit anderen Kapazitäten
verwendet werden können.
Die Verwendung eines Externspeichers 36 für die erfindungsgemäßen Überlaufbereiche
ermöglicht
das Erhöhen
oder Reduzieren der Größe der Ausgangs-Warteschlangen
durch einfaches Verändern
des Externspeichers. Dies ist ein Vorteil gegenüber Systemen, bei denen sich
die gesamte Warteschlangen-Struktur auf dem Chip befindet, da die
gesamte Einreihungskapazität
bei der Chip-Herstellung eingestellt wird.
-
Zur
Erfüllung
der Speichererfordernisse des Schalters 12 wird bei einem
Ausführungsbeispiel
des Externspeichers 36 folgenden Bereichen Platz zugewie sen:
Freipuffer-Pool-Überlauf 120,
Wiedergewinnungs-Warteschlangen-Überlauf 122,
Mehrfachkopien-Warteschlangen-Überlauf 124,
Management-Port-Ausgangs-Warteschlangen-Überlauf 126, Einzel-Ausgangs-Warteschlangen-Überläufe 128 für jeden
der 10 Mb/s- und 100 Mb/s-Zielports, Erweiterungsbus-Port-Ausgangs-Warteschlangen-Überlauf 130,
MIB-Zähler 132 und
Global-Datenblock-Puffer-Pool 134.
-
Die
BASE-Adresse für
die gesamte Speicherregion ist in einem Speicher-Basisadressenregister
der auf dem Chip befindlichen Register 60 programmierbar.
Die BASE-Adresse für
jeden Bereich in dem Externspeicherplan ist in dem Registersatz
programmierbar. Es ist kein Längenregister
erforderlich, da die Länge
eines vorgegebenen Bereichs dem Bereich von der BASE-Adresse dieses
Bereichs bis zu der BASE-Adresse des nächsten Bereichs in dem Mapping
gleich ist.
-
Da
die Länge
(und daher die Kapazität)
jedes einzelnen Überlaufbereichs
programmierbar ist, ist die Gesamtkapazität jeder Warteschlange programmierbar.
Dieses Merkmal der vorliegenden Erfindung ermöglicht eine Anpassung des Schalters
an die Kundenwünsche,
um benötigte
spezielle Ausgangs-Warteschlangen mit höherer Kapazität bereitzustellen.
-
Die
folgenden Überlaufbereiche
speichern Einträge,
die nicht in die auf dem Chip 12 befindlichen Steuer-Warteschlangen
passen und daher in den Externspeicher 36 platziert werden.
Der Freipuffer-Pool-Überlaufbereich 120 speichert
die Adressenzeiger für
aktuell unbenutzte Puffer in dem Global-Datenblock-Puffer-Pool 134.
Der Wiedergewinnungs-Warteschlangen-Überlaufbereich 122 speichert
Datenblockzeiger für
Verbundlistenketten, die nicht mehr benötigt werden. Der Mehrfachkopien-Warteschlangen-Überlaufbereich 124 speichert Datenblockzeiger
mit einer Kopienanzahl "> 1" (für
in die Warteschlange eingereihte Datenblockzeiger) und Datenblockzeiger
mit einer Kopienanzahl "–1" (für erfolgreich übertragene
Datenblöcke).
-
Die
folgenden Überlaufbereiche
speichern Einträge
für Ausgangs-Warteschlangen,
die nicht auf den Chip passen. Der Management-Port-Ausgangs-Warteschlangen-Überlaufbereich 126 speichert
Datenblockzeiger, die auf eine Übertragung
zu dem Management-Port warten. Die Ausgangs-Warteschlangen-Überlaufbereiche 128 speichern
Datenblockzeiger, die auf eine Übertragung
zu dem entsprechenden 10 Mb/s-Port oder 100 Mb/s-Port warten. Der
Erweiterungsbus-Port-Ausgangs-Warteschlangen-Überlaufbereich 130 speichert
Datenblockzeiger, die auf eine Übertragung
zu dem Erweiterungsbus-Port warten.
-
Die
MIB-Zähler-Region 132 enthält sämtliche
Pro-Port-Statistiken, die von dem Schalter 12 periodisch
aktualisiert werden. Der Schalter 12 führt auf dem Chip befindliche
8-Bit- und 16-Bit-Zähler
zum Speichern von MIB-Statistiken. Der Schalter 12 aktualisiert
die 32-Bit- oder 16-Bit-Zähler
im Externspeicher 36 mit der erforderlichen Frequenz, um
einen Verlust von MIB-Daten zu verhindern.
-
Der
Global-Datenblock-Puffer-Pool 134 enthält Puffer in Verbundlisten,
die empfangene Datenblockdaten speichern. Zu jedem beliebigen Zeitpunkt enthalten
diese Verbundlisten gültige
Datenblockdaten, außer
Gebrauch befindliche Puffer, die von dem Puffer-Manager 72 zu
dem Freipuffer-Pool 104 zurückgeführt werden oder sich im Besitz
des PCI-Host-Prozessors 28 befinden.
-
Gemäß 8 werden
bei einem Ausführungsbeispiel
der vorliegenden Erfindung von einem beliebigen MAC-Port oder dem
PCI-Bus empfangene Datenblockdaten im Externspeicher 36 in
einem Verbundlisten-Datenstrukturformat gespeichert. Die zum Erzeugen
der Verbundliste verwendeten Puffer 140 sind 256 Bytes
lang, obwohl bei anderen Ausführungsformen
der Erfindung andere Pufferlängen
verwendet werden. Adressenzeiger für jeden dieser Puffer 140 werden
von dem Freipuffer-Pool 104 in dem Schalter 12 gespeichert.
-
Wenn
ein Datenblock an einem der Ports des Schalter 12 empfangen
wird, fordert der Puffer-Manager 72 Adressenzeiger von
dem Freipuffer-Pool 104 zum Verbinden der Puffer 140 zwecks
Speicherung des Datenblocks an. Der Adressenzeiger für den ersten
Puffer in dem Externspeicher 36, in dem der Datenblock
gespeichert ist, wird zum Datenblockzeiger für diesen Datenblock. Der Datenblockzeiger wird
in dem Schalter-Subsystem 56 zum Einreihen von zu übertragenden
Datenblöcken
in Warteschlangen verwendet.
-
Die
Puffer 140 werden von Adressenzeigern in jedem Puffer-Kopfsatz 142,
die die Stelle des nächsten
Puffers im Speicher anzeigen, miteinander verkettet. Die Puffer-Kopfsätze 142 weisen
ferner andere Informationen über
in dem Puffer 140 enthaltene Datenblockdaten auf. Der Kopfsatz
des ersten Puffers weist 12 Bytes auf, wie von dem in 9a gezeigten
beispielhaften Puffer-Kopfsatzformat
dargestellt. Der Kopfsatz jedes nachfolgenden Puffers weist 4 Bytes
auf, wie in 9b dargestellt. Die Externspeicher-Bursts
sind 2 Bänke × 16 Bytes
lang, so dass die tatsächliche
Datenblock-Speicherkapazität in
jedem Puffer 256B – 16B
= 240B beträgt.
-
Gemäß 9a und 9b enthalten
die Kopfformate des ersten und der nachfolgenden Puffer folgende
Felder:
-
Pufferformat-Bit:
zeigt an, welches Pufferformat verwendet wird. Eine Eins kennzeichnet
das Format des ersten Puffers, der 12 Bytes lang ist. Eine Null
kennzeichnet das Format eines darauffolgenden Puffers, der 4 Bytes
lang ist. Es wird bei einer Pufferverkettung für sämtliche verbleibenden Puffer
verwendet.
-
E-Bit
(Markierung für
das Ende des Datenblocks): kennzeichnet den letzten Puffer eines
Datenblocks. Wenn das E-Bit gesetzt ist, enthält die Kette keine weiteren
Puffer mehr.
-
C-Bit
(CRC-Fehler): zeigt an, dass ein CRC-Fehler vom Empfänger festgestellt
worden ist. Wenn das C-Bit detektiert worden ist, überträgt die Übertragungsfunktion
absichtlich eine invertierte CRC.
-
L-Bit
(Ausrichtungsfehler): zeigt an, dass ein Fehler bei der Ausrichtung
des Datenblocks (zusammen mit einem CRC-Fehler) festgestellt worden
ist.
-
O-Bit
(Empfangs-FIFO-Überlauf):
zeigt an, dass der Empfangs-FIFO-Puffer übergelaufen ist und somit die
im Puffer enthaltenen Daten möglicherweise
ungültig
sind.
-
Pufferlänge: die
Gesamtanzahl der gültigen Bytes
im Datenfeld des Puffers beginnend mit dem ersten Byte nach den
Puffer-Kopfsatz. Bei dieser Angabe sollte der Wert für den Byte-Versatz
nicht berücksichtigt
werden.
-
Nächst-Puffer-Zeiger:
der Zeiger für
den nachfolgenden Puffer. Der Zeiger für den nachfolgenden Puffer
ist ungültig,
wenn das E-Bit gesetzt ist.
-
Byte-Versatz-Zählstand:
zeigt an, wo das erste Daten-Byte des Datenblocks im Datenblock-Datenblock
des Puffers beginnt. Ein Versatz von Null bedeutet, dass die Daten
ab dem ersten Byte nach den Puffer-Kopfsatz 142 beginnen.
Bei einem Versatz von Null beginnen die Datenblockdaten nach dem
16. Byte im Puffer. Bei einem anderen Versatzwert als Null beginnen
die Datenblockdaten nach dem 16. Byte + Versatzwert ab dem Anfang
des Puffers. Die Übertragungsfunktion überspringt
die Anzahl der als Byte-Versatzfeld angegebenen Bytes.
-
P-Bit
(Port-Typ): zeigt den Port-Typ des ankommenden Empfangs-Datenblocks
an. Bei einer Null handelt es sich um einen mit 10 Mb/s arbeitenden
Port und bei einer Eins um einen mit 100 Mb/s arbeitenden Port.
Dieses Bit wird vom Host 28 zusammen mit dem Zeitstempelfeld
beim Programmieren des Schalters 12 zum Weiterleiten der
Datenblöcke an
den Erweiterungsbus verwendet, bevor der Datenblock vollständig empfangen
und im Externspeicher 36 gepuffert wird.
-
T-Bit:
zeigt an, ob der empfange Datenblock gekennzeichnet oder nicht gekennzeichnet
ist. Bei einer Eins handelt es sich um einen gekennzeichneten Datenblock
und die empfangene VLAN-ID steht im Feld "VLAN-Kennung". Bei einer Null handelt es sich um
einen nicht gekennzeichneten Datenblock und die empfangene VLAN-ID
ist dann ungültig.
-
Empfangsportnummer:
die Nummer des Ports, an welchem der Datenblock empfangen worden
ist.
-
VLAN-Kennung:
die von einem gekennzeichneten Port empfangene VLAN-ID. Wenn der Datenblock
von einen nicht gekennzeichneten Port empfangen worden ist, ist
dieses Feld ungültig.
-
R-Bit
(Neuberechung von CRC): zeigt an, dass die CRC von der Übertragungsfunktion
entfernt und neu berechnet werden muss. Der Schalter 12 setzt
dieses Bit, wenn ein gekennzeichneter Datenblock empfangen worden
ist. Darüber
hinaus sollte dieses Bit auch vom Host 28 gesetzt werden,
wenn dieser den Inhalt des Datenblocks ändert. Wenn der Schalter 12 einen
Datenblock überträgt, wird
anhand dieses Bits entschieden, ob die vorhandene CRC übertragen
werden soll oder ob die CRC entfernt und neu berechnet werden soll.
-
A-Bit
(Anfügen
von CRC): zeigt an, dass sich keine CRC am Ende der Datenblockdaten
befindet. Der Host kann einen Datenblock im Speicher (ohne CRC)
erzeugen und anschließend
dieses Bit setzen. Der Schalter 12 generiert dann eine
CRC und fügt
sie beim Übertragen
des Datenblocks an. Wenn das A-Bit gesetzt ist, sollte die Länge des
Datenblocks keine CRC enthalten.
-
F-Bit
(Format-Bit): kennzeichnet das Feld Datenblocklänge/Zeitstempel. Bei einer
Null handelt es sich bei dem Feld um den Zeitstempel des ankommen den
Datenblocks. Bei einer Eins handelt es sich bei dem Feld um die
Länge des
empfangenen Datenblocks.
-
Datenblocklänge/Zeitstempel:
ist abhängig vom
F-Bit. Wenn das F-Bit gelöscht
ist, enthält
dieses Feld den Zeitstempel ab dem Beginn des empfangenen Datenblocks.
Der Zeitstempel hat eine Auflösung von
1 μs. Wenn
das F-Bit gesetzt
ist, enthält
dieses Feld die Gesamtlänge
des empfangenen Datenblocks einschließlich CRC und empfangener VLAN-Kennung.
Nach dem Empfang eines Datenblocks markiert der Schalter 12 dieses
Feld mit dem Zeitstempel (aus dem Zeitgeberregister). Wenn der Host 28 den
Schalter 12 so programmiert hat, dass mit dem Weiterleiten
der vom Erweiterungsbus kommenden Datenblöcke begonnen wird, bevor der
Datenblock vollständig
empfangen worden ist, ist es möglich,
anhand des Zeitstempels (und der Übertragungsgeschwindigkeit
des Empfangsports) zu ermitteln, wie viele Daten aus dem Externspeicher 36 abgerufen
werden können,
ohne die Datenblockdaten zu über-lesen.
Nachdem der gesamte Datenblock empfangen worden ist, schreibt der
Schalter 12 die Länge
des Datenblocks in dieses Feld und setzt das F-Bit.
-
Kopienanzahl:
zeigt die Anzahl der Kopien an, die von der Portvektor-FIFO-Einrichtung 70 erfolgreich
zur Übertragung
in die Warteschlange eingereiht worden sind. Dieses Feld wird zum
Speichern der Kopienanzahl für
einen Datenblockzeiger verwendet, wenn der Puffer-Manager 72 im
Mehrfachkopien-Cachespeicher 96 Platz
für neue
Einträge schaffen
muss.
-
10 zeigt
eine Detailansicht des in 3 dargestellten
Schalter-Subsystems 56. Mit Hilfe dieser Elemente werden
die Puffer für
das Speichern der Datenblöcke
bereitgestellt und, nachdem sie nicht mehr für das Speichern der Datenblöcke benötigt werden,
zurückgewonnen,
so dass die Puffer wieder für
neue Aufgaben verfügbar
sind. Wie oben beschrieben, gibt jede Ausgangs-Warteschlange 74, 75 (außer Ausgangs-Warteschlange 77)
Datenblockzeiger an den Puffer-Manager 72 weiter, von wo
aus die Übertragung
der Daten blöcke,
auf die die Datenblockzeiger zeigen, eingeplant wird. Über den
Puffer-Manager 72 werden
folgende Funktionen gesteuert: 1) Verwalten der internen Busse des
Schalters 12; 2) Vereinfachen des Einreihens/Entnehmen
von Datenblockzeigern in die bzw. aus den Ausgangs-Warteschlangen 74;
3) Verwalten der Steuer-Warteschlangen 90, 98 zum
Lokalisieren und Zurückführen der
Puffer in den Freipuffer-Pool 104; 4) Steuern des Datenflusses
in den bzw. aus dem Externspeicher 36; und 5) Aufrechterhalten
der Speicherstrukturen, einschließlich MIBs und Überlaufbereiche.
Der Puffer-Manager 72 enthält eine Einplanfunktion zum
Zuweisen sämtlicher
Zugriffe auf den Externspeicher 36. Zu diesen Zugriffen
gehört:
1) Schreiben der empfangen Datenblockdaten in die Speicherpuffer 140;
2) Lesen der Datenblockdaten aus den Speicherpuffern 140 zu Übertragungszwecken;
3) Aufrechterhalten (d. h. Schreiben und Lesen) der Datenblockzeiger
in jedem Überlaufbereich für die Ausgangs-Warteschlangen 74 und
Steuer-Warteschlangen 90, 98 und 4) Aktualisieren
der MIB-Zähler.
-
Nachdem
der Puffer-Manager 72 einen bestimmten Datenblockzeiger
in sämtliche
entsprechenden Ausgangs-Warteschlangen 74, 75 kopiert hat,
berechnet die Portvektor-FIFO-Einrichtung 70 die Anzahl
der Kopien (die "Kopienanzahl") und übergibt
anschließend
den Datenblockzeiger und die Kopienanzahl an die Schreibseite 92 der
Mehrfachkopien-Warteschlange 90. Die Kopienanzahl kann "0" sein, wodurch angezeigt wird, dass
der Datenblock nicht weitergeleitet werden soll, eine "1" zeigt die Übertragung einer Einzelkopie
an oder eine Anzahl "> 1" zeigt eine Mehrfachkopien-Übertragung
an. Diese drei Fälle
werden im folgenden näher
erläutert.
-
Wenn
die Kopienanzahl "0" ist, was bedeutet,
dass der Datenblockzeiger einen Weiterleitungs-Portvektor von Null
hat und keine Bits gesetzt sind, gibt die Portvektor-FIFO-Einrichtung 70 den
Datenblockzeiger direkt an die Schreibseite 100 der Wiedergewinnungs-Warteschlange 98 weiter.
Wenn der Puffer-Manager 72 die Wiedergewinnungswarteschlange 98 wartet,
wie nachstehend beschrieben, bricht der Puffer-Manager 72 die
Verbundlisten-Kette der Puffer auf und führt den Adressenzeiger für jeden "freien" Puffer zu der Schreibseite 106 des
Freipuffer-Pools 104 zurück.
-
Wenn
Kopienanzahl "1" ist, erfolgt eine
Einzelkopie-Übertragung.
Dabei kopiert die Portvektor-FIFO-Einrichtung 70 den Datenblockzeiger,
die Steuersignale/den Steuer-Op-Kode und den VLAN-Index in die Ausgangs-Warteschlange 74 des betreffenden
Ports. Die Portvektor-FIFO-Einrichtung 70 setzt das Einzelkopien-Bit
in der Ausgangs-Warteschlange 74 (siehe 5 und 6),
um anzuzeigen, dass es sich hierbei um eine Einzel-Übertragung handelt.
Wenn der Puffer-Manager 72 den Datenblockzeiger und das
Einzelkopie-Bit aus der Ausgangs-Warteschlange 74 des Ports
ausliest, wird die Übertragung
wie zuvor beschrieben eingeplant. Der Puffer-Manager 72 verwendet
den Datenblockzeiger zum Lokalisieren des ersten Puffers im Externspeicher 36,
in dem der Datenblock gespeichert ist. Der Puffer-Manager 72 liest
den Puffer-Kopfsatz
aus diesem ersten Puffer, holt die Daten aus dem Puffer und stellt
sie in die entsprechende MAC-Übertragungs-FIFO-Einrichtung 54.
Anhand der Verknüpfungen
zu nachfolgenden Puffern – vorausgesetzt,
dass der Datenblock mehrere Puffer umspannt – kann der Puffer-Manager 72 die
Adressen sämtlicher
zu diesem Datenblock gehörenden
Puffer in der Pufferkette finden und die Puffer übertragen. Nachdem die Daten zur Übertragung
in die FIFO-Einrichtung 54 gestellt sind,
werden die Puffer für
diesen Datenblock nicht mehr benötigt
und zum Speichern eines anderen Datenblocks zu dem Freipuffer-Pool 104 zurückgeführt.
-
Wenn
die Kopienanzahl größer als
1 ist, kopiert die Portvektor-FIFO-Einrichtung 70 den Datenblockzeiger,
den VLAN-Index und die Steuersignale/den Steuer-Op-Kode in jede
der betreffenden Ausgangs-Warteschlangen 74. (Bei Bezug
auf die Warteschlangen 74 wird auch auf die Warteschlangen 75, 77 Bezug
genommen). Die Portvektor-FIFO-Einrichtung 70 löscht das
Einzelkopien-Bit für
die entsprechenden Datenblockzeiger in den Ausgangs-Warteschlangen 74 und
stellt den Datenblockzeiger mit einer Kopienanzahl "> 1" in
den Schreibseite 92 der Mehrfachkopien-Warteschlange 90.
-
Wenn
der Puffer-Manager 72 einen Datenblockzeiger und ein gelöschtes Einzelkopien-Bit
aus einer der Ausgangs-Warteschlangen 74 ausgelesen hat,
plant der Puffer-Manager 72 die Übertragung des Datenblocks
ein und prüft
darüber
hinaus den Mehrfachkopien-Cachespeicher 96 auf einen Eintrag mit
einem Datenblockzeiger mit einer Kopienanzahl von "1". Wenn ein Datenblockzeiger mit einer
Kopieanzahl von "1" im Mehrfachkopien-Cachespeicher 96 vorhanden
ist, plant der Puffer-Manager 72 die Übertragung des Datenblocks
ein und gewinnt während der Übertragung
die nicht mehr benötigten
Puffer auf die gleiche Weise wie bei der Einzelkopien-Übertragung
eines Datenblocks zurück.
Wenn der Datenblockzeiger jedoch nicht im Mehrfachkopien-Cachespeicher 96 ist,
oder die Kopienanzahl für
den Datenblockzeiger im Mehrfachkopien-Cachespeicher 96 größer als
1 ist, überträgt der Puffer-Manager 72 den Datenblock,
gewinnt aber die Puffer nicht zurück. Nach einer erfolgreichen Übertragung
stellt der Puffer-Manager 72 eine Kopie des Datenblockzeigers zusammen
mit einer Kopienanzahl von "–1" in die Schreibseite 92 der
Mehrfachkopien-Warteschlange 90.
-
Nach
jeder Übertragung
eines Mehrfachkopien-Datenblocks stellt der Puffer-Manager 72 eine Kopie
des Datenblockzeigers in die Mehrfachkopien-Warteschlange 90,
vorausgesetzt, dass der Puffer-Manager 72 den Datenblockzeiger
mit einer Kopienanzahl von "1" nicht im Mehrfachkopien-Cachespeicher 96 finden
konnte. Somit kann die Mehrfachkopien-Warteschlange 90 jederzeit
den Datenblockzeiger mit einer Kopienanzahl "> 1" und/oder mehrere
Kopien des gleichen Datenblockzeigers jeweils mit einer Kopienanzahl
von "–1" enthalten.
-
Der
Puffer-Manager 72 führt
ständig
Wartungen der Mehrfachkopien-Warteschlange 90 und des Mehrfachkopien-Cachespeicher 96 durch,
um nicht mehr benötigte
Puffer zurückzugewinnen.
Beim Warten der Mehrfachkopien-Warteschlange 90 und
Lesen eines Datenblockzeigers mit einer Kopienanzahl von "> 1" versucht
der Puffer-Manager 72, diesen neuen Eintrag (Datenblock zeiger
und Kopienanzahl) in den Mehrfachkopien-Cachespeicher 96 zu
stellen. Wenn der Mehrfachkopien-Cachespeicher 96 voll
ist, schafft der Puffer-Manager 72 Platz
für den
neuen Datenblockzeiger. Der Puffer-Manager 72 liest einen "älteren" Eintrag im Mehrfachkopien-Cachespeicher, aktualisiert
die Kopienanzahl für
diesen Eintrag in dessen Puffer-Kopfsatz im Externspeicher 36 und löscht den
Eintrag anschließend
aus dem Mehrfachkopien-Cachespeicher 96. Sobald genügend Platz
im Mehrfachkopien-Cachespeicher 96 verfügbar ist, kann der Puffer-Manager 72 den
neuen Eintrag von der Mehrfachkopien-Warteschlange 90 in
den Mehrfachkopien-Cachespeicher 96 stellen.
-
Wenn
der Puffer-Manager 72 die Mehrfachkopien-Warteschlange 90 wartet
und einen Datenblockzeiger mit einer Kopienanzahl von "–1" liest, wird der Mehrfachkopien-Cachespeicher 96 nach
einer übereinstimmenden
Datenblockzeigeradresse mit einer Kopienanzahl von ">= 1" durchsucht,
um diese zu vermindern oder zu löschen.
Wenn der Puffer-Manager 72 einen übereinstimmenden Datenblockzeiger
findet, wird der Puffer-Manager 72: 1) den Datenblockzeiger
des Mehrfachkopien-Cachespeichers vermindert, wenn die Kopienanzahl "> 1" ist
oder 2) den Datenblockzeiger/Kopienanzahleintrag des Mehrfachkopien-Cachespeichers
löschen und
den Datenblockzeiger in die Wiedergewinnungs-Warteschlange 98 platzieren,
wenn die Kopienanzahl "1" ist.
-
Wenn
der Puffer-Manager 72 keinen übereinstimmenden Datenblockzeiger
findet, durchsucht der Puffer-Manager 72 den Puffer-Kopfsatz
des Datenblockzeigers im Externspeicher 36 (siehe 9) nach
der Kopienanzahl. Wenn die Kopienanzahl im Speicher "1" beträgt, platziert der Puffer-Manager 72 den
Datenblockzeiger in die Wiedergewinnungs-Warteschlange 98.
Wenn die Kopienanzahl im Speicher "> 1" ist, platziert der
Puffer-Manager 72 den Datenblockzeiger mit dieser Kopienanzahl
in den Mehrfachkopien-Cachespeicher 96 und verringert dann
die Kopienanzahl.
-
Der
Puffer-Manager 72 führt
ständig
Wartungen der Wiedergewinnungs-Warteschlange 98 durch und "durchläuft" dabei die Verbundlistenkette,
um Puffer zu dem Freipuffer-Pool 104 zurückzuführen. Eine
Rückgabe
der Puffer erfolgt nur für
Datenblöcke,
die keine Portvektoren haben und von der Portvektor-FIFO-Einrichtung 70 in
die Wiedergewinnungs-Warteschlange gestellt worden sind oder für Datenblöcke mit
einem Mehrfachkopien-Weiterleitungsvektor, bei denen bereits sämtliche
Kopien versendet wurden. Die für
Einzelkopie-Datenblöcke verketteten
Puffer werden nach der Übertragung
des Datenblocks direkt zu dem Freipuffer-Pool 104 zurückgeführt, wie
oben beschrieben.
-
Wenn
die Portvektor-FIFO-Einrichtung 70 nicht in der Lage ist,
einen Datenblockzeiger für
einen Einzelkopien-Weiterleitungsvektor in eine Ausgangs-Warteschlange 74 zu
stellen, weil diese Ausgangs-Warteschlange 74 und der zugehörige Überlaufbereich 110 im
Externspeicher 36 voll sind, wird der Datenblock verworfen.
Daraufhin erfolgt eine Rückgabe
des Datenblockzeigers an die Wiedergewinnungs-Warteschlange 98 und
das Verwerfen des Datenblocks wird von den Management-Ressourcen des
Schalters registriert. Wenn die Portvektor-FIFO-Einrichtung 70 nicht
in der Lage ist, einen oder mehrere Datenblockzeiger für einen
Mehrfachkopien-Weiterleitungsvektor in die Ausgangs-Warteschlangen 74 zu
stellen, weil eine oder mehrere dieser Ausgangs-Warteschlangen 74 und die zugehörigen Überlaufbereiche 110 im
Externspeicher 36 voll sind, wird der Datenblock nur an
diejenigen Ausgangs-Warteschlangen
weitergeleitet, in denen ausreichend Platz vorhanden ist, und die
in die Mehrfachkopien-Warteschlange 90 platzierte Kopienanzahl
zeigt nur die erfolgreich platzierten Datenblockzeiger an. Jede
nicht erfolgte Übergabe
des Datenblockzeigers in eine Ausgangs-Warteschlange wird von den
für die
betreffenden Ports, für
die die Datenblockzeiger nicht in die Warteschlange eingereiht werden
konnten, zuständigen
Schalter-Management-Ressourcen registriert. Wenn die Portvektor-FIFO-Einrichtung 70 keinen
Datenblockzeiger für einen
Mehrfachkopien-Weiterleitungsvektor platzieren kann, weil sämtliche
Ausgangs-Warteschlangen 74 und die zugehörigen Überlaufbereiche 110 im
Externspeicher 36 voll sind, wird der Datenblockzeiger an
die Wiedergewin nungswarteschlange 98 weitergeben und werden
die Schalter-Management-Ressourcen
ordnungsgemäß informiert.
-
Bei
der Mehrfachkopien-Warteschlange 90 handelt es sich um
eine Warteschlange mit hoher Priorität, welche von dem Puffer-Manager 72 dazu
verwendet wird zu verfolgen, wie viele Übertragungen eines speziellen
Mehrfachkopien-Datenblocks beendet sein müssen, bevor sämtliche
Puffer (d. h. Adressenzeiger), welche zum Speichern des Datenblocks eingesetzt
wurden, an den Freipuffer-Pool 104 zurückgeführt werden können. Die
Schreibseite 92 und die Leseseite 94 enthalten
64 bzw. 16 Einträge.
Die Mehrfachkopien-Warteschlange 90 speist den Mehrfachkopien-Cachespeicher 96,
der von dem Puffer-Manager 72 benutzt wird, um zu bestimmen, wann
Puffer wiedergewonnen werden sollen. Die interne Struktur der Mehrfachkopien-Warteschlange
ist in 12 dargestellt.
-
Die
Portvektor-FIFO-Einrichtung 70 stellt eine Kopie des zu
einem Datenblock gehörenden
Datenblockzeigers zusammen mit der Kopienanzahl, die "> 1" ist,
auf der Basis der bereits erfolgreich in die Ausgangs-Warteschlangen 74 gestellten
Anzahl von Datenblockzeigern in die Mehrfachkopien-Warteschlange 90.
Wenn die Ausgangs-Warteschlange 74 eines bestimmten Ports
voll ist, kann die Portvektor-FIFO-Einrichtung 70 keine
Kopie des Datenblockzeigers in die Ausgangs-Warteschlange 74 stellen; somit
kann dieser Vorgang nicht als erfolgreiches Ereignis bei der Bestimmung
der Kopienanzahl gewertet werden kann.
-
Jedes
Mal, wenn der Puffer-Manager 72 aus der Ausgangs-Warteschlange
einen Datenblockzeiger ausliest, bei dem das Einzelkopie-Bit auf "0" gesetzt ist (d. h. eine Mehrfachkopie),
wird der Mehrfachkopien-Cachespeicher nach diesem Datenblockzeiger
mit einer Kopienanzahl von "1", die anzeigt, dass
dies die letzte Übertragung
ist, durchsucht. Wenn diese Übereinstimmung
gefunden wird, überträgt der Puffer-Manager 72 den
Datenblock und gewinnt die Puffer in der gleichen Art und Weise
zurück wie
bei der Einzelkopie-Übertra gung,
und zwar durch Bereitstellen der nicht mehr benötigten Puffer für den Freipuffer-Pool 104 nach
der Übertragung
des Inhalts jedes Puffers. Wenn keine Übereinstimmung gefunden worden
ist, überträgt der Puffer-Manager 72 den Mehrfachkopien-Datenblock
und stellt eine Kopie des Datenblockzeigers mit einer Kopienanzahl
von "–1" in die Mehrfachkopien-Warteschlange 90.
Wenn ein Host einen Mehrfachkopien-Datenblockzeiger für einen
Datenblock, welcher in der Ausgangs-Warteschlange 75 des
Erweiterungsbusses oder über
(das PCI-Interface 26) in der Ausgangs-Warteschlange 77 des
Management-Ports eingereiht war, nicht mehr benötigt, wird eine Kopie des Datenblockzeigers
mit einer Kopienanzahl von "–1" von dem Host über ein Datenblockzeigerregister
in die Mehrfachkopien-Warteschlange gestellt. Bei diesem Register
handelt es sich um eines der Register aus dem in 2 dargestellten
Registerblock 60.
-
Ähnlich wie
die Ausgangs-Warteschlangen 74 verfügt die Mehrfachkopien-Warteschlange 90 über einen
Eingangspfad und einen Ausgangspfad. Der Eingangspfad, oder die
Schreibseite, ermöglicht es
der Portvektor-FIFO-Einrichtung 70 und dem Puffer-Manager,
Datenblockzeiger/Kopienanzahlen in die Mehrfachkopien-Warteschlange 90 zu
stellen. Der Ausgangspfad, oder die Leseseite, ermöglicht es der
Mehrfachkopien-Warteschlange 90, Datenblockzeiger/Kopienanzahlen
in den Mehrfachkopien-Cachespeicher 96 zu stellen. Darüber hinaus
steht zusätzlicher
Speicher für
Datenblockzeiger/Kopienanzahlen, der als Mehrfachkopien-Warteschlangen-Überlauf 124 bezeichnet
wird, im Externspeicher 36 zur Verfügung.
-
Wenn
Datenblockzeiger/Kopienanzahlen in eine leere Mehrfachkopien-Warteschlange 90 geschrieben
werden, können
sie von der Schreibseite 92 zu der Leseseite 94 weitergeben
werden, bis die Leseseite 94 voll ist. Weitere in die Schreibseite 92 der
Mehrfachkopien-Warteschlange 90 geschriebene Datenblockzeiger/Kopienanzahlen
werden in den Mehrfachkopien-Warteschlangen-Überlaufbereich 124 im
Externspeicher 36 platziert. Sobald die Leseseite 94 der
Mehrfachkopien-Warteschlange 90 und der zugehörige Überlaufbereich 124 voll
sind, werden zusätzliche
in die Mehrfachkopien-Warteschlange gestellte Datenblockzeiger/Kopienanzahlen
zunächst
in die Schreibseite 92 platziert.
-
Die
Reihenfolge der Datenblockzeiger bleibt beim Durchlaufen der Mehrfachkopien-Warteschlange 90 erhalten,
so dass, wenn Platz in der Leseseite 94 der Mehrfachkopien-Warteschlange
frei wird, Datenblockzeiger/Kopienanzahlen vom Mehrfachkopien-Warteschlangen-Überlaufbereich 124 an
die Mehrfachkopien-Warteschlangen-Leseseite 94 und von
der Mehrfachkopien-Warteschlangen-Schreibseite 92 an den
Mehrfachkopien-Warteschlangen-Überlaufbereich 124 übertragen
werden.
-
Der
Mehrfachkopien-Cachespeicher 96 arbeitet ähnlich wie
die Mehrfachkopien-Warteschlange 90, bietet jedoch zusätzlich eine
durchsuchbare Region, der nach Datenblockzeigern/Kopienanzahlen
abgefragt werden kann. Der Mehrfachkopien-Cachespeicher 96 enthält bis zu
256 Einträge.
Der Puffer-Manager 72 liest
einen Datenblockzeiger aus der Mehrfachkopien-Warteschlange 90 aus
und stellt sie entweder in den Mehrfachkopien-Cachespeicher 96 oder
verarbeitet sie, und zwar in Abhängigkeit
davon, ob die Kopienanzahl "> 1" oder "–1" ist.
-
Ferner
plant jedes Mal, wenn der Puffer-Manager 72 einen Datenblockzeiger
aus der Leseseite 78 einer Ausgangs-Warteschlange 74 ausliest,
der Puffer-Manager 72 eine Übertragung
ein. Wenn das Einzelkopie-Bit auf "0" gesetzt
ist (was einen Mehrfachkopien-Datenblock bedeutet), fragt der Puffer-Manager 72 den
Mehrfachkopien-Cachespeicher 96 nach dem Datenblockzeiger
mit einer Kopienanzahl von "1" ab, was bedeutet,
dass dies die letzte Übertragung
dieses Datenblocks ist. Bei einer Übereinstimmung entfernt der
Puffer-Manager 72 den Eintrag und führt die Puffer während der Übertragung des
Datenblocks an den Freipuffer-Pool zurück. Wenn keine Übereinstimmung
festgestellt wird, stellt der Puffer-Manager 72 den Datenblockzeiger
mit einer Kopienanzahl von "–1" nach Beenden der Übertragung
in die Mehrfachkopien-Warteschlange 90.
-
Der
Puffer-Manager 72 führt
in regelmäßigen Abständen eine
Wartung der Mehrfachkopien-Warteschlange 90 durch, indem
er einen Datenblockzeiger/eine Kopienanzahl ausliest und diese entweder in
den Mehrfachkopien-Cachespeicher 96 stellt oder verarbeitet.
Dies erfolgt unabhängig
von der Datenblockübertragung.
Die beiden folgenden Vorgehensweisen sind davon abhängig, ob
der Puffer-Manager einen Datenblockzeiger mit einer Kopienanzahl
von "> 1" oder "–1" ausliest:
- 1) Der Puffer-Manager 72 liest einen
Datenblockzeiger mit einer Kopienanzahl von "> 1" aus der Mehrfachkopien-Warteschlange 90 aus.
Wenn im Mehrfachkopien-Cachespeicher 96 Platz vorhanden
ist, wird ein neuer Eintrag eingeschrieben. Wenn der Mehrfachkopien-Cachespeicher 96 voll ist,
muss der Puffer-Manager 72 in dem Cachespeicher 96 freien
Platz schaffen. Dazu liest der Puffer-Manager 72 einen
der "älteren" Datenblockzeiger/Kopienanzahlen
aus dem Mehrfachkopien-Cachespeicher 96 aus, aktualisiert
den Puffer-Kopfsatz dieses Datenzeigers im Externspeicher 36 mit
der Kopienanzahl in dem Mehrkopien-Cachespeicher 96 und
löscht
den Eintrag anschließend
aus dem Cachespeicher. Sobald Platz vorhanden ist, wird ein neuer
Datenblockzeiger/eine neue Kopienanzahl in den Mehrfachkopien-Cachespeicher 96 geschrieben.
- 2. Der Puffer-Manager 72 liest einen Datenblockzeiger
mit einer Kopienanzahl von "–1" aus der Mehrfachkopien-Warteschlange 90 aus.
Der Puffer-Manager 72 durchsucht den Mehrfachkopien-Cachespeicher 96 nach
einem passenden Datenblockzeiger mit einer Kopienanzahl von ">= 1". Die
beiden weiteren Vorgehensweisen sind davon abhängig, ob der Puffer-Manager 72 eine
Datenblockzeiger-Übereinstimmung
im Mehrfachkopien-Cachespeicher 96 findet:
- a) Der Puffer-Manager 72 findet eine Datenblockzeiger-Übereinstimmung.
Wenn die Kopienanzahl für
den Eintrag im Mehrfachkopien-Cachespeicher 96 "1" ist, löscht der Puffer-Manager 72 den Eintrag
aus dem Mehrfachkopien-Cachespeicher und
platziert den Datenblockzeiger in die Wiedergewinnungs-Warteschlange 98.
Wenn die Kopienanzahl für
den Eintrag im Cachespeicher "> 1" ist, dekrementiert der Puffer-Manager 72 die Kopienanzahl
um 1.
- b) Der Puffer-Manager 72 findet keine Datenblockzeiger-Übereinstimmung
im Mehrfachkopien-Cachespeicher 96. Dies bedeutet, dass
der passende Datenblockzeiger zuvor in den Puffer-Kopfsatz der Verbundlistenkette
des Datenblocks im Externspeicher 36 verschoben worden ist.
Der Puffer-Manager 72 muss zu dem Puffer-Kopfsatz gehen
und die Kopienanzahl auslesen. Wenn dieser Wert (im Speicher) "1" ist, wird der Datenblock nicht mehr
benötigt
und platziert der Puffer-Manager 72 den Datenblockzeiger
in die Wiedergewinnungs-Warteschlange 98. Wenn dieser Wert
(im Speicher) "> 1" ist, stellt der Puffer-Manager 72 eine
(bislang im Externspeicher (36) befindliche) Kopie von
Datenblockzeiger/Kopienanzahl in den Mehrfachkopien-Cachespeicher 96 und
vermindert die Kopienanzahl um "1". Wenn der Mehrfachkopien-Cachespeicher 96 voll ist,
macht der Puffer-Manager 72 Platz darin frei, indem er
einen der "älteren" Einträge in den
Externspeicher 36 ausgelagert.
-
Die
Wiedergewinnungs-Warteschlange 98 enthält die Datenblockzeiger für die Verbundlistenketten,
die nicht mehr benötigt
werden. Der Puffer-Manager 72 schreibt einen Datenblockzeiger
in die Wiedergewinnungs-Warteschlange, wenn beim Warten des Mehrfachkopien-Cachespeicher
festgestellt wird, dass die Kopienanzahl eines Datenblockzeigers
mit "1" angegeben ist (beispielsweise
wenn die letzte Übertragung
des Datenblocks erfolgreich beendet wurde). Darüber hinaus schreibt die Portvektor-FIFO-Einrichtung 70 Datenblockzeiger
unter folgenden Bedingungen in die Wiedergewinnungs-Warteschlange 98:
1) der Portvektor eines Datenblockzeigers ist Null oder 2) der Datenblockzeiger konnte
nicht in eine Warteschlange eingereiht werden, weil sämtliche
im Weiterleitungsvektor angegebenen Ausgangs-Warteschlangen voll
waren. Schließ lich
schreibt der Host Datenblockzeiger (über ein Datenblockzeigerregister)
in die Wiedergewinnungs-Warteschlange 98, wenn die Verwendung
eines Einzelkopien-Datenblocks, der in die Ausgangs-Warteschlange 77 des
Erweiterungsbusses oder in die Ausgangs-Warteschlange 75 des
Management-Ports gestellt worden ist, beendet ist.
-
Beim
Verarbeiten der Einträge
in der Wiedergewinnungs-Warteschlange 98 geht der Puffer-Manager 72 die
Verbundlistenkette eines Datenblockzeigers durch, um jeden Puffer
in den Freipuffer-Pool 104 zurückzuführen. Die innere Struktur der
Wiedergewinnungs-Warteschlange ist nicht dargestellt, enthält bei dem
Ausführungsbeispiel
der Erfindung jedoch nur Datenblockzeiger (14 Bits). Die
Schreibseite 100 der Wiedergewinnungs-Warteschlange enthält 64 Einträge, und
die Leseseite 102 der Wiedergewinnungs-Warteschlange enthält 16 Einträge.
-
Ähnlich wie
die Ausgangs-Warteschlangen 74 verfügt auch die Wiedergewinnungs-Warteschlange 98 über einen
Eingangspfad und einen Ausgangspfad. Der Eingangspfad, oder die
Schreibseite 100, ermöglicht
es dem Puffer-Manager 72, Datenblockzeiger in die Wiedergewinnungs-Warteschlange 98 zu
stellen. Der Ausgangspfad, oder die Leseseite 102, ermöglicht es
dem Puffer-Manager 72, einen Datenblockzeiger zu lesen
und sämtliche
zugehörigen
Puffer in den Freipuffer-Pool 104 zu stellen. Zusätzlicher
Speicher für
Datenblockzeiger steht im Wiedergewinnungs-Warteschlangen-Überlaufbereich
(122) im Externspeicher 36 zur Verfügung.
-
Wenn
Datenblockzeiger in eine leere Wiedergewinnungs-Warteschlange 98 geschrieben
sind, werden sie von der Schreibseite 100 an die Leseseite 102 weitergeben,
bis die Leseseite 102 voll ist. Weitere in die Schreibseite 100 der
Wiedergewinnungs-Warteschlange 98 geschriebene Datenblockzeiger
werden in den Wiedergewinnungs-Warteschlangen-Überlaufbereich 122 im
Externspeicher 36 platziert. Sobald die Leseseite 102 und
der Überlaufbereich 122 der
Wiedergewinnungs-Warteschlange 98 voll sind, beginnen zusätzliche
in die Wiedergewinnungs-Warteschlange 98 gestellte Datenblockzeiger
die Schreibseite 100 zu füllen.
-
11 zeigt
ein Ausführungsbeispiel
der inneren Struktur des Freipuffer-Pools 104. Der Freipuffer-Pool 104 arbeitet
nach dem FIFO-Prinzip und enthält
Adressenzeiger für
sämtliche
freien Puffer 140 im Externspeicher 36. Wenn Datenblöcke empfangen
werden, erfasst der Puffer-Manager 72 die verfügbaren Adressenzeiger
aus dem Freipuffer-Pool 104, um eintreffende Daten zu speichern.
Der Puffer-Manager 72 weist auch (auf Anforderung) Adressenzeiger
aus dem Freipuffer-Pool 104 dem Host-Prozessor 28 zu.
Der Host hat die Möglichkeit, Adressenzeiger
anzufordern oder an den Freipuffer-Pool 104 zurückzugeben,
und zwar durch einen Lese- oder Schreibvorgang über eines der Freipuffer-Pool-Register 60 in
dem unmittelbaren Eingangs-/Ausgangsraum. Die Schreibseite 106 und
die Leseseite 108 des Freipuffer-Pools 104 enthält bei einem
Ausführungsbeispiel
der Erfindung jeweils 64 Einträge.
-
Der
Freipuffer-Pool 104 verfügt (ähnlich wie die Ausgangs-Warteschlangen 74) über einen
Eingangspfad und einen Ausgangspfad. Der Eingangspfad, oder die
Schreibseite 106, ermöglicht
es dem Puffer-Manager 72 oder dem Host 28, Adressenzeiger
in den Freipuffer-Pool 104 zu stellen. Der Ausgangspfad,
oder die Leseseite 108, des Freipuffer-Pools 104 ermöglicht es
dem Puffer-Manager 72, dem Host 28 Adressenzeiger
zur Verfügung
zu stellen oder Adressenzeiger zum Speichern von Empfangs-Datenblockdaten
aus dem Freipuffer-Pool 104 zu entnehmen. Darüber hinaus
steht der Überlaufbereich 120 des
Freipuffer-Pools 104 im Externspeicher 36 als
zusätzlicher
Speicher für
Adressenzeiger zur Verfügung,
wie oben beschrieben.
-
Beim
Starten des Schalters 12 erzeugt der Freipuffer-Pool Adressenzeiger
von der Leseseite 108. Wenn Datenblöcke eintreffen, wird die Frei-Liste des
Freipuffer-Pools 104 gelesen. Wenn in der Schreibseite 106 nicht
genügend
Pufferzeiger für
die Handhabung des anfallenden Datenverkehrs verfügbar sind, erfolgt
ein Zugriff auf den Überlaufbereich 120,
um dort weitere Pufferzeiger zu entnehmen.
-
Bestimmte
Ausführungsformen
der vorliegenden Erfindung bieten eine vorteilhafte Anordnung und
ein vorteilhaftes Verfahren zum Bereitstellen von Pufferzeigern
beim Starten des Schalters 12. Beim ersten Einschalten
des Schalters 12 sind keine Pufferzeiger für den Überlaufbereich 120 im
Externspeicher 36 erforderlich. Die Pufferzeiger werden
stattdessen während
der Verarbeitung erzeugt. Der Schalter 12 könnte während des
Einschaltens die Pufferzeiger generieren und in den Überlaufbereich 120 stellen,
die Anzahl der Puffer kann jedoch 16.000 oder 32.000 betragen, und
dies würde
zu einer unerwünschten
Verlangsamung beim Einschaltvorgang des Schalters 12 führen. Die
vorliegende Erfindung nutzt die Tatsache, dass beim Einschalten
sämtliche Puffer
frei und die Identitäten
der Puffer bekannt sind. Aus diesem Grund werden die Pufferzeiger
nach dem Einschalten des Schalters mit Hilfe eines Zählers 180 bei
Bedarf generiert, wie 10 dargestellt.
-
Der
Frei-Listen-Zählgenerator 180 ist
mit dem Eingang eines Multiplexers 182 verbunden. Da die
Frei-Liste im Freipuffer-Pool 104 beim Starten leer ist,
werden die Pufferzeiger vom Frei-Listen-Zähler 180 generiert.
Sobald die maximale Anzahl von Pufferzeigern in der Liste erreicht
ist, werden keine weiteren Pufferzeiger mehr generiert.
-
Nach
dem Empfang eines Datenblockpakets im Schalter 12 wird
dieses Puffer mit der gleichen Puffergröße unterteilt. Typischerweise
sind die Datenblöcke
unterschiedlich lang. Die Puffergröße beträgt 256 Byte, und der Datenteil
eines Puffers beträgt
240 Byte. Nach der Übertragung
des Pufferinhalts werden die Pufferzeiger in die Wiedergewinnungs-Warteschlange 98 gestellt,
oder, wenn die Pufferkette abgearbeitet werden kann, direkt in die Liste
des Freipuffer-Pools 104 aufgenommen. Während des Betriebs des Schalters 12 werden
an den Freipuffer-Pool 104 zurückgeführten Adressenzeiger von der
Schreibseite 106 an die Leseseite 108 weitergeben.
Wenn die Leseseite 108 voll wird, werden weitere Adressenzeiger
an den Überlaufbereich 120 weitergeben.
Wenn sowohl die Leseseite 108 als auch der Überlaufbereich 120 voll
sind, werden weitere in den Freipuffer-Pool 104 gestellte
Adressenzeiger wieder in die Schreibseite 106 des Freipuffer-Pools 104 platziert.
-
13 zeigt
eine schematische Darstellung der internen Anordnung des Mehrfachkopien-Cachespeicher 96 gemäß einer
Ausführungsform
der vorliegenden Erfindung. Wie zuvor kurz erwähnt, wird die zeitliche Reihenfolge,
in der die Einträge
im Mehrfachkopien-Cachespeicher 96 eingehen, beibehalten.
Bei der vorliegenden Erfindung erfolgt die Beibehaltung dieser zeitlichen
Reihenfolge im Gegensatz zur herkömmlichen Vorgehensweise nicht über einen Zeitstempel,
sondern durch physisches Anordnen in einem Speicher. Der Mehrfachkopien-Cachespeicher 96 der
vorliegenden Erfindung arbeitet darüber hinaus auch nicht mit Gültigkeitsbits,
sondern mit Gültigkeitscodierungen,
wie nachstehend beschrieben.
-
Wie
aus 13 ersichtlich, ist der Mehrfachkopien-Cachespeicher 96 als
Vier-Wege-Teilassoziativ-Speicher
konfiguriert. Ein Eintrag im Mehrfachkopien-Cachespeicher 96 besteht aus
einem Datenblockzeiger und dessen Kopienanzahl, wie oben beschrieben.
Die sechs untersten Bits des Datenblockzeigers legen fest, in welcher
Reihe im teilassoziativen Cachespeicher 96 der Eintrag
gespeichert wird. In der dargestellten Ausführungsform der Erfindung enthält der Cachespeicher 96 vierundsechzig
Reihen, obwohl die Anzahl der Zeilen bei Vergrößerung des Cachespeichers nicht
begrenzt ist.
-
Der
teilassoziative Cachespeicher 96 ist in vier Spalten unterteilt,
die parallel durchsucht werden können.
Wenn der Puffer-Manager 72 einen Eintrag in dem Cachespeicher 96 speichert,
wird dieser immer in die erste Spalte gestellt, und zwar die obersten Bits
(51:39) der Reihe, die von den sechs niederwertigsten Bits des Datenblockzeigers
anzeigt werden. Beim Auslesen der Reihe werden sämtliche Einträge um 13
Bits nach rechts verschoben, und die Zeile wird zurückgeschrieben.
Der in den Cachespeicher 96 geschriebene Ein trag enthält die obersten
acht Bits des Datenblockzeigers, die eine Adresskennung bilden,
und die dem Datenblockzeiger zugeordnete fünf Bit große Kopienanzahl. Beim Auslesen
des Eintrags aus dem Cachespeicher 96 wird der Datenblockzeiger
aus der Adresskennung und den Bits, welche die Reihennummer des
Cachespeicher 96 indexieren, neu gebildet.
-
Wenn
die Reihe voll ist und ein neuer Eintrag in die Reihe geschrieben
wird, wird der älteste
Eintrag in dem Cachespeicher 96 aus dem Cachespeicher 96 entfernt.
Wie bereits oben in Bezug auf die Puffer-Kopfsätze 142 beschrieben,
wird die dem entfernten Datenblockzeiger zugeordnete Kopienanzahl in
den Puffer-Kopfsatz 142 des Datenblocks im Externspeicher,
auf welche der entfernte Datenblockzeiger zeigt, geschrieben. Somit
dienen die Datenblöcke
(d. h. die Puffer 140), die im Externspeicher 36 gespeichert
sind, als Überlaufbereich
für den
Mehrfachkopien-Cachespeicher 96 zum Speichern von Kopienanzahlen.
-
Ein
Vorteil der vorliegenden Erfindung besteht darin, dass der teilassoziative
Cachespeicher 96 kein separates Gültig-Bit aufweist. Wenn die
Kopienanzahl 00000 ist, weiß der
Puffer-Manager 72, dass dieser Eingang nicht mehr gültig ist
und entfernt ihn aus dem Cachespeicher 96. Dies vereinfacht
die Organisation des Cachespeichers. Ein weiterer Vorteil des Cachespeichers 96 gemäß der vorliegenden Erfindung
besteht darin, dass er sehr schnell durchsucht werden kann, da der
Puffer-Manager 72 lediglich eine einzige Zeile durchsuchen
muss, welche bereits von dem Datenblockzeiger, der die Mehrfachkopien-Warteschlange 90 verlassen
hat, vorgegeben ist. Die Durchsuchung der vier in der Reihe befindlichen
Einträge
erfolgt parallel, was die Suchgeschwindigkeit nochmals erhöht. Der
hier exemplarisch beschriebene Vierwege-Teilassoziativ-Speicher kann
im Rahmen der vorliegenden Erfindung auch als n-Wege-Teilassoziativ-Speicher
ausgelegt sein.
-
Aus
der obigen Beschreibung geht hervor, dass bei der vorliegenden Erfindung
die zeitliche Reihenfolge (das Alter) der Einträge im Cachespeicher durch physisches
Positionieren der Einträge
in dem Cachespeicher auf Reihen-Basis aufrechterhalten wird. Mit
anderen Worten: die physische Position eines Eintrags im Cachespeicher
gibt Aufschluss über das
relative Alter des Eintrags. Das Altern eines Eintrags ist also
die Folge einer neuen physischen Anordnung der Einträge im Speicher.
-
Bestimmte
Ausführungsformen
der vorliegenden Erfindung bieten die Möglichkeit, die Latenz von von
dem Schalter 12 portbezogen weitergeschalteten Datenblöcken an
die Kundenwünsche
anzupassen. 14 zeigt, wie die Portvektor-FIFO-Einrichtung 70 den
programmierten Schaltmodus des Empfangsports prüft, um festzulegen, wann der
Datenblockzeiger und die diesem zugeordneten Informationen in die
betreffende Ausgangs-Warteschlange 74 des Sendeports zu
stellen sind. In einem ersten Modus (Modus mit geringer Latenz)
sind für
die Portvektor-FIFO-Einrichtung 70 keine Einschränkungen beim
Platzieren des Datenblockzeigers in die Ausgangs-Warteschlange(n) 74 zu
berücksichtigen.
In einem zweiten Modus (Modus mit mittlerer Latenz) stellt die Portvektor-FIFO-Einrichtung 70 den
Datenblockzeiger erst dann in die Ausgangs-Warteschlange(n) 74,
nachdem 64 Byte des Datenblocks empfangen worden sind. In einem
dritten Modus (Modus mit großer
Latenz) stellt die Portvektor-FIFO-Einrichtung 70 den Datenblockzeiger
erst dann in die Ausgangs-Warteschlange(n) 70, nachdem
der Datenblock vollständig
empfangen worden ist.
-
In
einigen Sonderfällen ändert sich
die Zeitsteuerung hinsichtlich der Weitergabe von Datenblockzeigern
durch die Portvektor-FIFO-Einrichtung 70 an die Ausgangs-Warteschlangen 74:
1) Weiterleitung der Datenblöcke
(erster oder zweiter Modus) von einem mit 10 Mb/s arbeitenden Port
an einen mit 100 Mb/s arbeitenden Port; 2) Weiterleitung der Datenblöcke an den
Management-Port 30; und 3) Weiterleitung der Datenblöcke an den
Expansionsbus-Port.
Im Fall 1) führen
die unterschiedlichen Übertragungsgeschwindigkeiten
der 10 Mb/s- bis 100 Mb/s-Ports dazu, dass die Weiterleitung nur
im dritten Modus mit hoher Latenz durchgeführt werden kann. Im Fall 2)
sind sämtliche
zum dem Management-Port weitergeleitete Datenblöcke Datenblöcke im drit ten Modus. Im Fall
3) erfolgt die Weiterleitung der Datenblöcke an den Erweiterungsbus-Port
immer in dem Schaltmodus des Erweiterungsbusports 26. Wenn
ein Mehrfachkopien-Portvektor einen der speziellen Ports enthält, erfolgt
das Einreihen der Datenblockzeiger für den gesamten Portvektor mit
dem Schaltmodus mit der größten Latenz,
der in dem Portvektor repräsentiert
ist. Wenn beispielsweise ein Datenblock an einem im ersten oder
zweiten Modus arbeitenden Port empfangen wird, im Mehrfachkopien-Weiterleitungs-Portvektor jedoch
der Managementport 30 vorgesehen ist, befindet sich der
Schaltmodus im dritten Modus. In diesem Fall wird eine Kopie des
Datenblockzeigers erst nach vollständigem Empfang des Datenblocks
in sämtliche
Ausgangs-Warteschlangen 74 gestellt.
-
Im
Folgenden werden die Weiterleitungsmodi ausführlich beschrieben. Der für den Eingangsport (d.
h. den Empfangsport) geltende Schaltmodus bestimmt die Weiterleitungslatenz
(wie schnell der Schalter 12 einen Datenblock nach Beginn
des Empfangs des Datenblocks weiterleitet) und die Möglichkeit
der Reduzierung der Fragment-/Fehlerfortpflanzung zu den Ausgangsports.
Der zweite mittlere Latenzmodus ist die Standardeinstellung für jeden
Port: der Umschaltmodus ist jedoch auf einer Pro-Port-Basis in den
Registern 60 programmierbar.
-
In
allen drei Modi werden die an der Empfangs-FIFO-Einrichtung 52 eines
internen MAC-Ports empfangen Datenblocksdaten so schnell wie möglich an
einen Puffer 140 im Externspeicher 52 weitergeleitet.
Ungefähr
zur gleichen Zeit empfängt
die Regelprüfeinrichtung 42 oder 58 die
Ziel- und Quellenadresse, die Nummer des Empfangsports, den Datenblockzeiger
und einige zusätzliche
Informationen und führt
dann die entsprechenden Suche durch. Nachdem der Suchvorgang beendet
ist, führt
die Regeleinrichtprüfung 42 oder 58 den
Datenblockzeiger und den Weiterleitungs-Portvektor an die Portvektor-FIFO-Einrichtung 70 zurück.
-
Die
Portvektor-FIFO-Einrichtung 70 stellt den Datenblockzeiger
in die Schreibseite 76 der Ausgangs-Warteschlangen 74 für den/die
im Portvektor angegebene(n) Ausgangsport(s). Der Umschaltmodus,
in dem der Empfangsport arbeitet, legt die Latenz zwischen dem Empfang
des Portvektors (und des Datenblockzeigers) durch die Portvektor-FIFO-Einrichtung 70 und
der Platzierung des Datenblockzeigers in der/den Ausgangs-Warteschlange(n) 74 fest.
Im Folgenden werden die drei Modi beschrieben. Nachdem der Datenblockzeiger
an die Leseseite 78 der Ausgangs-Warteschlangen 74 weitergeleitet
worden ist, liest der Puffer-Manager 72 den Datenblockzeiger
aus und plant das Senden ein. Dabei beginnt der Puffer-Manager 72 damit,
die Datenblockdaten von den von dem Datenblockzeiger angegebenen
Adressen wegzubewegen. Sobald die Übertragungs-FIFO-Einrichtung 54 des
MAC-Ports bereit ist (und angenommen wird, dass das Medium für die Datenübertragung
verfügbar
ist), beginnt die Übertragung
des Datenblocks.
-
Im
ersten Modus tritt die geringste Latenz auf. Das Empfangen und Weiterleiten
der Datenblöcke
erfolgt mit Leitungsgeschwindigkeit. Dieser erste Modus bietet keinen
Schutz gegen Netzwerkfehler, da die Datenblöcke bereits zum Senden in die
Warteschlange eingereiht ist, bevor festgestellt werden kann, ob
der Datenblock ein Fragment ist (d. h. Länge < 64 Byte) oder einen CRC-Fehler enthält. In diesem
ersten Modus besteht die Möglichkeit,
dass der Empfang eines Datenblocks noch nicht abgeschlossen ist,
bevor das Senden des Datenblocks an dem/den Ausgangsports) beginnt.
Wenn der Empfang eines Datenblocks unvollständig oder mit einer ungültigen CRC
beendet wird, wird dies von der Empfangs-MAC in dem Puffer-Kopfsatz 142 im
Externspeicher 36 vermerkt. Die Übertragungs-MAC garantiert,
dass, wenn das Senden eines Datenblocks beginnt und später unvollständig oder
mit einer ungültigen
CRC beendet wird, die MAC einen ungültigen CRC erzeugt. Wenn die Übertragungs-MAC noch
nicht mit dem Senden eines Datenblocks begonnen hat und der Puffer-Kopfsatz 142 eine
Unvollständigkeit
oder eine ungültige
CRC für
diesen Datenblock anzeigt, leitet der Puffer-Manager 72 den Datenblock
nicht an den Ausgangsport weiter.
-
Im
zweiten Modus erfolgt die Weiterleitung der Datenblöcke mit
einer geringen Latenz und einem gewissen Schutz vor Netzwerkfehlern.
Das Empfangen Weiterleiten der Datenblöcke beginnt, nachdem vierundsechzig
oder mehr Byte empfangen worden sind. Dies ermöglicht es dem Schalter 12, Datenblockfragmente
auszufiltern (d. h. nicht weiterzuleiten); er filtert jedoch mit
CRC-Fehlern behaftete Datenblöcke
nur bis zu einer Größe von vierundsechzig
Bytes vollständig
aus.
-
Im
zweiten Modus werden die Datenblockzeiger für Datenblöcke, welche den Schwellenwert von
vierundsechzig Bytes am Empfangs-MAC erreichen, in die zugehörige(n)
Ausgangs-Warteschlange(n) 74 gestellt. Diejenigen Datenblöcke, welche
die Schwelle von mindestens vierundsechzig Bytes am Empfangs-MAC nicht erreichen,
werden gelöscht, und
die zugehörigen
Datenblockzeiger werden nicht in die Ausgangs-Warteschlange(n) 74 gestellt.
Wenn der Empfang eines mindestens vierundsechzig Byte großen Datenblocks
mit einer ungültigen
CRC-Prüfsumme
beendet wird, werden diese Fehlerbedingungen vom MAC-Empfangspuffer
in dem Puffer-Kopfsatz 142 im Externspeicher 36 vermerkt.
Wenn ein Empfangs-Datenblock von größer als oder gleich vierundsechzig
Bytes mit einer ungültigen
CRC beendet wird, markiert der Empfangs-MAC das Senden mit einer schlechten
CRC. Wenn die Übertragungs-MAC
keine Übertragung
eines Datenblocks begonnen hat und der Puffer-Kopfsatz 142 anzeigt, dass
der Datenblock (größer als
oder gleich vierundsechzig Bytes) in einer ungültigen CRC endet, führt der
Puffer-Manager 72 den Datenblockzeiger an die Wiedergewinnungs-Warteschlange 98 (bei
Einzelkopien-Weiterleitung) oder an die Mehrfachkopien-Warteschlange 96 (bei
Mehrfachkopien-Weiterleitung) zurück, und
zwar ohne keine Weiterleitung an die Ausgangsports 74.
-
Der
dritte Modus arbeitet nach dem Speichern-und-Weiterleiten-Prinzip,
das von den drei Modi den besten Schutz gegen Netzwerkfehler bietet,
jedoch eine größere Latenz
bei der Weiterleitung verursacht. Dabei werden die Daten blöcke vor
der Weiterleitung durch den Schalter 12 an die Ausgangsports
vollständig
empfangen. Der Schalter 12 siebt in diesem Modus vor der
Weiterleitung sämtliche
Fragmente und mit CRC-Fehlern behafteten Datenblöcke aus. Sobald in diesem dritten
Modus ein Datenblock erfolgreich und vollständig an der Empfangseinrichtung
(d. h. größer als
oder gleich vierundsechzig Bytes und mit einer gültigen CRC) empfangen worden
ist, wird der Datenblockzeiger in die betreffende(n) Ausgangs-Warteschlange(n) 74 gestellt. Datenblöcke, welche
mit einem Empfangsfehler enden (ungültige CRC, klein (> 64 Bytes) etc.), werden gelöscht, und
die zugehörigen
Datenblockzeiger werden nicht in die Ausgangs-Warteschlange(n) 74 gestellt.
-
Die
Portvektor-FIFO-Einrichtung 70 entscheidet in Abhängigkeit
vom ausgewählten
Modus des Empfangsports und der Menge der empfangen Daten, ob der
Portvektor in eine Ausgangs-Warteschlange 74 gestellt wird.
Bei der oben beschriebenen Ausführungsform
gibt es drei Schwellen, obwohl es bei anderen Ausführungsformen
andere Anzahlen von Schwellen gibt. Bei dem Ausführungsbeispiel gelten folgende
Schwellenwerte: 1) Empfang von "n" Bytes (z. B. 6 Bytes),
wobei n < 64 Bytes
ist; 2) Empfang von 64 Bytes; und 3) Empfang des gesamten Datenblocks.
-
Bei
der vorliegenden Erfindung erfolgt das Weiterleiten von Datenblöcken an
die Ausgangs-Warteschlangen 74 auf der Basis von Schwellenwerten.
Dabei ordnet die Portvektor-FIFO-Einrichtung 70 die Reihenfolge
der Übertragung
neu, und zwar in Abhängigkeit
von der Menge oder der Art der empfangenen Daten und des Modus,
für den
der Port programmiert ist. Obwohl bei diesem Ausführungsbeispiel
die Weiterleitungsentscheidungen in Abhängigkeit von der Menge der
empfangenen Daten getroffen werden, werden bei anderen Ausführungsformen
der Erfindung Weiterleitungsentscheidungen in Abhängigkeit
von anderen Faktoren, wie beispielsweise von der Art der empfangenen
Daten, getroffen.
-
Beim
Implementieren des Weiterleitungsschemas der vorliegenden Erfindung
verwaltet der Puffer-Manager 72 eine Tabelle 160 in
einem Cachespeicher (CAM) 161, der die Zuweisung eines
Datenblockzeigers zu einem Empfangsport vornimmt. Jedes Mal wenn
die Portvektor-FIFO-Einrichtung 70 einen neuen Portvektor
und Datenblockzeiger von der Regelprüfeinrichtung 42 oder 58 empfängt, erfolgt eine
Zuordnung, anhand derer ermittelt wird, ob der Empfang eines Datenblocks
am Empfangsport abgeschlossen ist, und wenn dies nicht der Fall
ist, wie viel von diesem Datenblock bereits empfangen worden ist.
Die Portvektor-FIFO-Einrichtung 70 erhält von der Regelprüfeinrichtung 42 oder 58 keine
Informationen über
die Identität
des Empfangsports. Die einzigen Informationen, die der Portvektor
hinsichtlich der Identifikation des Ports empfängt, sind die Datenblockzeiger.
-
Die
Portvektor-FIFO-Einrichtung 70 fragt den Datenblockzeiger
in der Adressentabelle 160 ab. Wenn der Empfang des Datenblocks
noch nicht abgeschlossen ist, führt
die Adressentabelle den Empfangsport zurück, oder die Adressentabelle 160 kann den
Datenblockzeiger nicht finden, was bedeutet, dass der Datenblock
bereits empfangen worden ist. Nachdem der Datenblock vollständig empfangen
ist, wird der Datenblockzeiger aus der Adressentabelle 160 entfernt.
Dies bedeutet, dass der dritte Schwellenwert (Datenblock vollständig empfangen)
erreicht ist. Entsprechend kann der Datenblockzeiger sofort in die
Ausgangs-Warteschlange 74 gestellt werden.
-
Wenn
die Adressentabelle 160 den Empfangsport zurückführt, stellt
die Portvektor-FIFO-Einrichtung 70 den Datenblockzeiger
und die diesem zugeordneten Daten in einen Haltebereich 162 und
beginnt mit der Überwachung
zweier Signale von diesem Empfangsport. Diese beiden Signale zeigen
eines von drei Ereignissen an. Das erste Ereignis wird angezeigt,
wenn der Port n Bytes empfängt.
Wenn dieser Port zu diesem Zeitpunkt im ersten Modus arbeitet, beginnt
die Portvektor-FIFO-Einrichtung 70 mit der Verarbeitung
des Datenblockzeigers, indem dieser in die entsprechende Ausgangs-Warteschlange 74 gestellt
wird. Wenn der Empfangsport nicht im ersten Modus arbeitet, wartet die
Portvektor-FIFO-Einrichtung 70 auf ein Signal für das zweite Ereignis.
Wenn dieser Port im zweiten Modus arbeitet, gibt die Portvektor-FIFO-Einrichtung 70 den
Datenblockzeiger aus dem Haltebereich 162 frei, so dass
er in die korrekte Ausgangs-Warteschlange 74 gestellt werden
kann. Wenn der Empfangsport schließlich im dritten Modus arbeitet,
wartet die Portvektor-FIFO-Einrichtung 70 auf
den Empfang der Kennung, die anzeigt, dass der Datenblock vollständig ist.
Jeder Empfangsport (Bezugszeichen 164 in 14)
behält
diese Kennung bei und liefert diese Informationen an die Portvektor-FIFO-Einrichtung 70.
Die Portvektor-FIFO-Einrichtung 70 kann dann den dem Datenblockzeiger
zugeordneten Port bestimmen. Die Portvektor-FIFO-Einrichtung 70 verwaltet
die Informationen zu dem Modus, in dem die einzelnen Ports arbeiten.
Zusammenfassend kann gesagt werden, dass beim Empfangen eines Datenblockzeigers
die Portvektor-FIFO-Einrichtung 70 zunächst die Adressentabelle 160 des
Puffer-Managers 72 abfragt, um den Empfangsport zu ermitteln,
den Modus bestimmt, in dem dieser Empfangsport arbeitet, und dann
die von diesem Empfangsport stammenden Kennungen überwacht
und den Datenblockzeiger in Abhängigkeit
vom verwendeten Modus und der erhaltenen Kennungen freigibt.
-
Gemäß der vorliegenden
Erfindung führt
der Puffer-Manager 72 zahlreiche Funktionen im Schalter 12 aus.
Der Puffer-Manager 72 verfügt über eine Steuerlogik und/oder
Software zum Ausführen
dieser Funktionen, und dieser kann von Fachleuten auf dem Sachgebiet
anhand der obigen Beschreibung der Funktionen des Puffer-Managers 72 einfach
implementiert werden.
-
Obwohl
die vorliegende Erfindung ausführlich
beschrieben und dargestellt worden ist, ist darauf hinzuweisen,
dass diese Ausführungen
nur beispielhaften Charakter haben und nicht als Einschränkung angesehen
werden dürfen,
wobei der Umfang der vorliegenden Erfindung durch die beiliegenden
Patentansprüche
festgelegt ist.