DE69823337T2 - Vorrichtung und verfahren zur rückgewinnung von puffern - Google Patents

Vorrichtung und verfahren zur rückgewinnung von puffern Download PDF

Info

Publication number
DE69823337T2
DE69823337T2 DE69823337T DE69823337T DE69823337T2 DE 69823337 T2 DE69823337 T2 DE 69823337T2 DE 69823337 T DE69823337 T DE 69823337T DE 69823337 T DE69823337 T DE 69823337T DE 69823337 T2 DE69823337 T2 DE 69823337T2
Authority
DE
Germany
Prior art keywords
data block
buffer
copy
pointer
queue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69823337T
Other languages
English (en)
Other versions
DE69823337D1 (de
Inventor
Bahadir Erimli
Jefferson Thomas RUNALDUE
Chandan Egbert
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE69823337D1 publication Critical patent/DE69823337D1/de
Application granted granted Critical
Publication of DE69823337T2 publication Critical patent/DE69823337T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9021Plurality of buffers per packet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/0213Standardised network management protocols, e.g. simple network management protocol [SNMP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/255Control mechanisms for ATM switching fabrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3027Output queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/26Special purpose or proprietary protocols or architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/42Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker
    • H04Q3/54Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised
    • H04Q3/545Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised using a stored programme
    • H04Q3/54575Software application
    • H04Q3/54591Supervision, e.g. fault localisation, traffic measurements, avoiding errors, failure recovery, monitoring, statistical analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/354Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/45Arrangements for providing or supporting expansion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/1316Service observation, testing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13162Fault indication and localisation

Description

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

Claims (19)

  1. Anordnung zur Wiedergewinnung von Puffern (140), in denen Datenblöcke für einen Netzwerkschalter (12) in einem paketgeschalteten Netzwerk gespeichert sind, wobei die Anordnung aufweist: eine Wiedergewinnungs-Warteschlange (98) zum Einreihen von Blockzeigern, die jeweils auf eine andere Stelle in einem Pufferspeicher eines ersten Puffers (140) zeigen, in dem ein jeweiliger Datenblock gespeichert ist; einen durchsuchbaren ersten Speicher (96) zum Speichern eines Zählstands der Anzahl von Kopien eines von dem Netzwerkschalter (12) zu übertragenden Datenblocks; einen Freipuffer-Pool (104) zum Einreihen von Pufferzeigern, die auf freie Pufferstellen (104) in einem Pufferspeicher zeigen, in eine Warteschlange; einen Puffer-Manager (72) zum Empfangen eines Blockzeigers eines Datenblocks zum Übertragen einer Kopie dieses Datenblocks, Durchsuchen des ersten Speichers (96) zum Feststellen, ob die Übertragung dieser Kopie die zuletzt zu übertragende Kopie dieses Datenblocks ist, und wenn dies der Fall ist, Bewirken der Übertragung dieser letzten Kopie dieses Datenblocks von dem Netzwerkschalter (12) und Platzieren des Pufferzeigers jedes Puffers (140), in dem der Datenblock gespeichert ist, in den Freipuffer-Pool (104) unverzüglich nach der Übertragung des Inhalts dieses Puffers (140).
  2. Anordnung nach Anspruch 1, ferner mit einer Mehrfachkopien-Warteschlange (90) zum Speichern von Einträgen, von denen jeder einen Datenblockzeiger und eine diesem zugeordnete Anzahl von Kopien auf weist, wobei eine positive Kopienanzahl die Anzahl von zu übertragenden Kopien des Datenblocks, auf den der zugeordnete Blockzeiger zeigt, angibt und eine negative Kopienanzahl, die gleich der negativen Zahl –1 ist, anzeigt, dass eine Kopie des Datenblocks, auf den der zugeordnete Blockzeiger zeigt, übertragen worden ist.
  3. Anordnung nach Anspruch 2, bei der der Puffer-Manager (72) ferner zum Laden eines der Einträge mit einer negativen Kopienanzahl in die Mehrfachkopien-Warteschlange (90) vorgesehen ist, wenn beim Durchsuchen des ersten Speichers (96) festgestellt wird, dass die Übertragung der Kopie des Datenblocks nicht die letzte von dem Netzwerkschalter (12) zu übertragende Kopie dieses Datenblocks ist.
  4. Anordnung nach Anspruch 3, bei der der Puffer-Manager (72) ferner zum Prüfen der Kopienanzahl von die Mehrfachkopien-Warteschlange (90) verlassenden Einträgen, Speichern der Einträge mit positiven Kopienanzahlen in dem ersten Speicher (96) und Durchsuchen des ersten Speichers (96) nach einem Eintrag mit einem Blockzeiger, der dem Blockzeiger eines beliebigen Eintrags mit einer negativen Kopienanzahl gleich ist, vorgesehen ist.
  5. Anordnung nach Anspruch 4, bei der der Puffer-Manager (72) ferner zum Dekrementieren der Kopienanzahl eines Eintrags in dem ersten Speicher (96) vorgesehen ist, wenn das Durchsuchen des ersten Speichers ergibt, dass der Eintrag in dem ersten Speicher (96) einen Blockzeiger gleich dem Blockzeiger des Eintrags mit einer negativen Kopienanzahl aufweist, wenn die Kopienanzahl des Eintrags in dem ersten Speicher (96) größer als Eins ist.
  6. Anordnung nach Anspruch 5, bei der der Puffer-Manager (72) ferner vorgesehen ist zum Löschen eines Eintrags aus dem ersten Speicher (96), wenn das Durchsuchen des ersten Speichers ergibt, dass der Ein trag in dem ersten Speicher (96) einen Blockzeiger gleich dem Blockzeiger des Eintrags mit einer negativen Kopienanzahl aufweist, wenn die Kopienanzahl des Eintrags in dem ersten Speicher (96) gleich Eins ist, und zum Laden des Blockzeigers des aus dem ersten Speicher (96) gelöschten Eintrags in die Wiedergewinnungs-Warteschlange (98).
  7. Anordnung nach Anspruch 6, bei der der Puffer-Manager (72) ferner vorgesehen ist zum Erhalten eines den Wiedergewinnungspuffer verlassenden Blockzeigers und zum Platzieren des Pufferzeigers jedes Puffers (140), in dem der Datenblock gespeichert ist, auf welchen der Blockzeiger zeigt, in den Freipuffer-Pool (104).
  8. Anordnung nach Anspruch 7, bei der die Puffer (140), in denen ein einzelner Datenblock gespeichert ist, zum Bilden einer Verbundliste miteinander verbunden sind, wobei der Blockzeiger des Datenblocks dem Pufferzeiger eines ersten Puffers der die Verbundliste bildenden Puffer (140) gleich ist, jeder Puffer (140) in der Verbundliste den Pufferzeiger aufweist, der auf den nächsten Puffer in der Verbundliste für diesen Datenblock zeigt, und der letzte Puffer in der Verbundliste eine Ende-der-Verbundliste-Anzeige anstelle des Pufferzeigers für den nächsten Puffer aufweist.
  9. Anordnung nach Anspruch 8, bei der der Puffer-Manager (72) ferner zum Prüfen der Puffer (140) in der Verbundliste und Wiederauffinden der Pufferzeiger der Puffer (140) in der Verbundliste dieses Datenblocks und zum Platzieren der Pufferzeiger in dem Freipuffer-Pool (104) vorgesehen ist.
  10. Anordnung nach Anspruch 9, bei der jeder von dem Puffer-Manager (72) empfangene Blockzeiger eines zur Übertragung vorgesehenen Datenblocks ein Bit aufweist, das anzeigt, ob eine Einzelkopie des Datenblocks übertragen werden soll oder Mehrfachkopien des Datenblocks übertragen werden sollen, und der Puffer-Manager (72) ferner vorgesehen ist zum Prüfen des Bits und Durchführen der Durchsuchung des ersten Speichers (96) nur dann, wenn das Bit anzeigt, dass Mehrfachkopien des Blocks übermittelt werden sollen, und wenn das Bit anzeigt, dass eine Einzelkopie des Datenblocks übermittelt werden soll, Bewirken der Übertragung der Einzelkopie des Datenblocks und Platzieren des Pufferzeigers jedes Puffers, in dem der Datenblock gespeichert ist, nach dem Übertragen des Inhalts dieses Puffers (140) in dem Freipuffer-Pool (104).
  11. Verfahren zum Wiedergewinnen von Puffern (140), in denen ein Datenblock gespeichert ist, nach der Übertragung des Datenblocks von einem Netzwerkschalter (12), mit folgenden Schritten: Feststellen, ob eine zu übertragende Kopie des Datenblocks die letzte zu übertragende Kopie des Blocks ist; wenn festgestellt wird, dass die zu übertragende Kopie des Datenblocks die letzte zu übertragende Kopie des Datenblocks ist, Wiedergewinnen der Puffer (140), in denen der Datenblock gespeichert ist, unverzüglich nach dem Übertragen des Inhalts jedes Puffers (140) von dem Netzwerkschalter (12); wenn festgestellt wird, dass die zu übertragende Kopie des Datenblocks nicht die letzte zu übertragende Kopie des Datenblocks ist, Einreihen einer Anzeige der Übertragung der Kopie des Datenblocks in die Warteschlange nach dem Übertragen des Datenblocks von dem Netzwerkschalter (12); und wenn nicht feststellbar ist, ob die zu übertragende Kopie des Datenblocks die letzte zu übertragende Kopie des Datenblocks ist, Einreihen einer Anzeige der Übertragung der Kopie des Datenblocks in die Warteschlange nach dem Übertragen des Datenblocks von dem Netzwerkschalter (12).
  12. Verfahren nach Anspruch 11, ferner mit den Schritten des Erhaltens einer der in die Warteschlange eingereihten Anzeigen und Feststellen, ob die letzte Kopie des Datenblocks übertragen worden ist, auf die in der in der Warteschlange eingereihten Anzeige gezeigt wird, und wenn dies der Fall ist, Laden eines Blockzeigers, der auf eine Speicherstelle zeigt, an der der Datenblock gespeichert worden ist, in eine Wiedergewinnungs-Warteschlange (98).
  13. Verfahren nach Anspruch 12, ferner mit dem Schritt des Erhaltens eines der Blockzeiger von der Wiedergewinnungs-Warteschlange (98) und Wiedergewinnen der Puffer (140), in denen der Datenblock gespeichert ist.
  14. Verfahren nach Anspruch 13, bei dem die Puffer (140), in denen ein Datenblock gespeichert ist, eine Verbundliste von Puffern bilden, die durch Pufferzeiger miteinander verbunden sind, welche auf jeden Puffer (140) in der Verbundliste zeigen, und der Schritt des Wiedergewinnens der Puffer (140) eines Datenblocks das Prüfen der Verbundliste und das Laden des Pufferzeigers jedes Puffers, in dem ein Datenblock gespeichert ist, in einen Freipuffer-Pool (104) umfasst.
  15. Verfahren nach Anspruch 14, ferner mit dem Aufrechterhalten einer Kopienanzahl, die die Anzahl von noch zur Übertragung anstehenden Kopien eines Datenblocks repräsentiert, und mit dem Dekrementieren der Kopienanzahl nach dem Erhalten einer der in die Warteschlange eingereihten Anzeigen und dem Feststellen, dass die letzte Kopie des Datenblocks, auf die in der in der Warteschlange eingereihten Anzeige gezeigt wird, nicht übertragen worden ist.
  16. Verfahren nach Anspruch 15, bei dem der Schritt des Feststellens, ob die letzte Kopie des Datenblocks übertragen worden ist, das Prüfen des Werts der Kopienanzahl umfasst, wobei eine Kopienanzahl gleich Eins anzeigt, dass die letzte Kopie des Datenblocks bereits übertragen worden ist.
  17. Verfahren nach Anspruch 16, bei dem der Schritt des Feststellens, ob das Übertragen einer Kopie eines Datenblocks die letzte zu übertragende Kopie dieses Datenblocks ist, das Prüfen der Kopienanzahl dieses Datenblocks umfasst, wobei eine Kopienanzahl gleich Eins anzeigt, dass der Datenblock die letzte zu übertragende Kopie des Datenblocks ist.
  18. Verfahren nach Anspruch 17, ferner mit den Schritten des Einreihens der Kopienanzahl und des Blockzeigers jedes Datenblocks, von dem Mehrfachkopien übertragen werden sollen, in die gleiche Warteschlange wie die eingereihten Anzeigen, des Prüfens des Ausgangs der Warteschlange, und wenn es sich bei dem Ausgang der Warteschlange um die Kopienanzahl und den Blockzeiger für einen Mehrfachkopien-Datenblock handelt, des Ladens der Kopienanzahl und des Blockzeigers für den Mehrfachkopien-Datenblock in einen durchsuchbaren Speicher (96), und wenn es sich bei dem Ausgang der Warteschlange um eine in die Warteschlange eingereihte Anzeige handelt, des Durchführens des Schritts des Feststellens, ob eine zu übertragende Kopie des Datenblocks die letzte zu übertragende Kopie des Datenblocks ist.
  19. Verfahren nach Anspruch 18, bei dem der Schritt des Feststellens das Durchsuchen des Speichers (96) nach einem Blockzeiger, der zu einem Blockzeiger der in die Warteschlange eingereihten Anzeige passt, und das Prüfen der dem Blockzeiger, der zu dem Datenblockzeiger der in der Warteschlange eingereihten Anzeige passt, zugeordneten Kopienanzahl, umfasst.
DE69823337T 1997-02-14 1998-01-30 Vorrichtung und verfahren zur rückgewinnung von puffern Expired - Lifetime DE69823337T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US3802597P 1997-02-14 1997-02-14
US38025P 1997-02-14
US08/992,927 US6233244B1 (en) 1997-02-14 1997-12-18 Method and apparatus for reclaiming buffers
US992927 1997-12-18
PCT/US1998/001988 WO1998036536A1 (en) 1997-02-14 1998-01-30 Method and apparatus for reclaiming buffers

Publications (2)

Publication Number Publication Date
DE69823337D1 DE69823337D1 (de) 2004-05-27
DE69823337T2 true DE69823337T2 (de) 2005-05-12

Family

ID=26714755

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69823337T Expired - Lifetime DE69823337T2 (de) 1997-02-14 1998-01-30 Vorrichtung und verfahren zur rückgewinnung von puffern

Country Status (4)

Country Link
US (1) US6233244B1 (de)
EP (1) EP0960511B1 (de)
DE (1) DE69823337T2 (de)
WO (1) WO1998036536A1 (de)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7002982B1 (en) 1998-07-08 2006-02-21 Broadcom Corporation Apparatus and method for storing data
US6463032B1 (en) * 1999-01-27 2002-10-08 Advanced Micro Devices, Inc. Network switching system having overflow bypass in internal rules checker
US6546010B1 (en) * 1999-02-04 2003-04-08 Advanced Micro Devices, Inc. Bandwidth efficiency in cascaded scheme
US6515990B1 (en) * 1999-03-31 2003-02-04 Advanced Micro Devices, Inc. Dequeuing logic architecture and operation in a multiport communication switch
US6597693B1 (en) * 1999-05-21 2003-07-22 Advanced Micro Devices, Inc. Common scalable queuing and dequeuing architecture and method relative to network switch data rate
ATE320129T1 (de) * 1999-05-21 2006-03-15 Avici Systems Flit-cache in einem paketvermittelndem router
US6504846B1 (en) * 1999-05-21 2003-01-07 Advanced Micro Devices, Inc. Method and apparatus for reclaiming buffers using a single buffer bit
US7031305B1 (en) * 1999-05-24 2006-04-18 Advanced Micro Devices, Inc. Apparatus and method for programmable memory access slot assignment
US6564271B2 (en) * 1999-06-09 2003-05-13 Qlogic Corporation Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter
US6671274B1 (en) * 1999-06-30 2003-12-30 Cisco Technology, Inc. Link list operable to increase memory bandwidth in a transmission system
EP1065835B1 (de) * 1999-06-30 2017-01-11 Texas Instruments Incorporated Paketspeicherverwaltung (PACMAN)
DE19933130A1 (de) * 1999-07-19 2001-01-25 Giesecke & Devrient Gmbh Operandenstapelspeicher und Verfahren zum Betreiben eines Operandenstapelspeichers
US20020176430A1 (en) * 2001-01-25 2002-11-28 Sangha Onkar S. Buffer management for communication systems
US6754795B2 (en) 2001-12-21 2004-06-22 Agere Systems Inc. Methods and apparatus for forming linked list queue using chunk-based structure
US7333498B2 (en) * 2002-05-15 2008-02-19 Hewlett-Packard Development Company, L.P. Method and apparatus for separating data packets in a memory buffer
US7733888B2 (en) * 2002-06-04 2010-06-08 Alcatel-Lucent Usa Inc. Pointer allocation by prime numbers
US6823437B2 (en) * 2002-07-11 2004-11-23 International Business Machines Corporation Lazy deregistration protocol for a split socket stack
US7230929B2 (en) * 2002-07-22 2007-06-12 Qlogic, Corporation Method and system for dynamically assigning domain identification in a multi-module fibre channel switch
US7154886B2 (en) * 2002-07-22 2006-12-26 Qlogic Corporation Method and system for primary blade selection in a multi-module fiber channel switch
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
US7319669B1 (en) 2002-11-22 2008-01-15 Qlogic, Corporation Method and system for controlling packet flow in networks
US7450599B2 (en) * 2003-02-08 2008-11-11 Hewlett-Packard Development Company, L.P. Apparatus and method for communicating with a network
US7646767B2 (en) * 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US7234101B1 (en) 2003-08-27 2007-06-19 Qlogic, Corporation Method and system for providing data integrity in storage systems
US7219263B1 (en) 2003-10-29 2007-05-15 Qlogic, Corporation Method and system for minimizing memory corruption
US20050177660A1 (en) * 2004-02-05 2005-08-11 Rajesh Mamidwar Method and system for merged rate-smoothing buffer with burst buffer
US7930377B2 (en) 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
US7669190B2 (en) 2004-05-18 2010-02-23 Qlogic, Corporation Method and system for efficiently recording processor events in host bus adapters
US7571163B2 (en) * 2004-07-13 2009-08-04 Hewlett-Packard Development Company, L.P. Method for sorting a data structure
US7577772B2 (en) * 2004-09-08 2009-08-18 Qlogic, Corporation Method and system for optimizing DMA channel selection
US20060064531A1 (en) * 2004-09-23 2006-03-23 Alston Jerald K Method and system for optimizing data transfer in networks
US7676611B2 (en) * 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
US7380030B2 (en) * 2004-10-01 2008-05-27 Qlogic, Corp. Method and system for using an in-line credit extender with a host bus adapter
US7398335B2 (en) * 2004-11-22 2008-07-08 Qlogic, Corporation Method and system for DMA optimization in host bus adapters
US7164425B2 (en) * 2004-12-21 2007-01-16 Qlogic Corporation Method and system for high speed network application
US7392437B2 (en) 2005-01-20 2008-06-24 Qlogic, Corporation Method and system for testing host bus adapters
US7281077B2 (en) * 2005-04-06 2007-10-09 Qlogic, Corporation Elastic buffer module for PCI express devices
US7231480B2 (en) * 2005-04-06 2007-06-12 Qlogic, Corporation Method and system for receiver detection in PCI-Express devices
US7461195B1 (en) 2006-03-17 2008-12-02 Qlogic, Corporation Method and system for dynamically adjusting data transfer rates in PCI-express devices
US7742408B2 (en) * 2006-08-04 2010-06-22 Fujitsu Limited System and method for filtering packets in a switching environment
US7720802B2 (en) * 2007-01-03 2010-05-18 International Business Machines Corporation Reclaiming resident buffers when a reclaim threshold has been exceeded by swapping the oldest in use buffer and a new buffer, and referencing the new buffer via an updated set of read and write pointers
US20090222614A1 (en) * 2008-02-29 2009-09-03 Kabushiki Kaisha Toshiba Information processing apparatus and nonvolatile semiconductor memory drive
US20090222613A1 (en) * 2008-02-29 2009-09-03 Kabushiki Kaisha Toshiba Information processing apparatus and nonvolatile semiconductor memory drive
US8364930B2 (en) * 2008-03-07 2013-01-29 Kabushiki Kaisha Toshiba Information processing apparatus and storage drive adapted to perform fault analysis by maintenance of tracing information
US20090228640A1 (en) * 2008-03-07 2009-09-10 Kabushiki Kaisha Toshiba Information processing apparatus and non-volatile semiconductor memory drive
JP2010258567A (ja) * 2009-04-22 2010-11-11 Kyocera Corp データ伝送システムおよびそのデータ伝送方法
CN101551736B (zh) * 2009-05-20 2010-11-03 杭州华三通信技术有限公司 基于地址指针链表的缓存管理装置和方法
US8683465B2 (en) * 2009-12-18 2014-03-25 International Business Machines Corporation Virtual image deployment with a warm cache
US9736069B1 (en) * 2013-09-03 2017-08-15 Cavium, Inc. Method for storing and retrieving packets in high bandwidth and low latency packet processing devices
US10318382B2 (en) * 2014-01-31 2019-06-11 International Business Machines Corporation Determining missing encoded data slices
US10015112B2 (en) * 2015-12-08 2018-07-03 Mellanox Technologies Tlv Ltd. Memory-efficient handling of multicast traffic
US10419329B2 (en) 2017-03-30 2019-09-17 Mellanox Technologies Tlv Ltd. Switch-based reliable multicast service
US11171884B2 (en) 2019-03-13 2021-11-09 Mellanox Technologies Tlv Ltd. Efficient memory utilization and egress queue fairness

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4695949A (en) * 1984-07-19 1987-09-22 Texas Instruments Incorporated Method for efficient support for reference counting
US5457681A (en) * 1992-06-05 1995-10-10 Washington University ATM-Ethernet portal/concentrator
EP0622922B1 (de) 1993-04-29 2000-11-29 International Business Machines Corporation Verfahren und Gerät für Mehrfachübertragung von Daten in einem Kommunikationssystem
US5515376A (en) 1993-07-19 1996-05-07 Alantec, Inc. Communication apparatus and methods
JPH07321815A (ja) 1994-05-24 1995-12-08 Nec Corp 共有バッファ型atmスイッチおよびその同報制御方法
US5751951A (en) * 1995-10-30 1998-05-12 Mitsubishi Electric Information Technology Center America, Inc. Network interface

Also Published As

Publication number Publication date
DE69823337D1 (de) 2004-05-27
WO1998036536A1 (en) 1998-08-20
US6233244B1 (en) 2001-05-15
EP0960511B1 (de) 2004-04-21
EP0960511A1 (de) 1999-12-01

Similar Documents

Publication Publication Date Title
DE69823337T2 (de) Vorrichtung und verfahren zur rückgewinnung von puffern
DE69819303T2 (de) Verfahren und vorrichtung zur übertragung von mehrfachkopien durch vervielfältigung von datenidentifikatoren
DE69823483T2 (de) Mehrfachkopiewarteschlangestruktur mit einem suchbaren cachespeicherbereich
DE69817328T2 (de) Warteschlangenstruktur und -verfahren zur prioritätszuteilung von rahmen in einem netzwerkkoppelfeld
DE60111457T2 (de) Vermittlungsanordnung mit redundanten Wegen
DE69133569T2 (de) Netzschnittstelle
DE60203380T2 (de) Verfahren und vorrichtung zur mehrfachsendung
DE60028176T2 (de) Verfahren zur automatischen Übertragung des Rückbestätigungsrahmens in Canopen und anderen Can Verarbeitungschichtprotokollen
DE60113058T2 (de) Empfänger korrigiert
DE60031596T2 (de) Zeitmultiplex-Vermittlungssystem (TDM) mit sehr breitem Speicher
DE4432061C1 (de) Paketübertragungssystem
EP0960505B1 (de) Verfahren und gerät zur von den empfangenen daten abhängigen steuerung der informationsübertragungsauslösung
DE69822456T2 (de) Integrierte multiport-vermittlung mit geteilter mediumzugriffssteuerungsschaltung
DE60131380T2 (de) Segmentierung und wiederzusammensetzung von datenrahmen
EP0651536A2 (de) Verfahren zur Wiederherstellung einer vorgegebenen Reihenfolge für ATM-Zellen
DE60215416T2 (de) Zeigerbasierte binäre Suchmaschine und dafür geeignetes Verfahren
DE60217988T2 (de) System und Verfahren zum zeitschlitzbasierten Erlernen und Durchsuchen von ARL Tabellen mit Blockierung der Einfügung
DE60031712T2 (de) Tabellen-nachschlage-mechanismus zur adressauflösung in einer paket-netzwerkvermittlung
EP0447769A2 (de) Verfahren und Schaltungsanordnung zur Verwaltung gleicher Einheiten sowie Vermittlungselement
DE60124163T2 (de) Verbindungsintegrität für Verbindungsübergang in einem Datenschalter
DE60121727T2 (de) Vermittlungsstelle mit virtuellem geteiltem Speicher
DE60217572T2 (de) System und Verfahren zum zeitschlitzbasierten Erlernen und Durchsuchen von ARL Tabellen unter Verwendung von Schreib-snoop
EP0960510B1 (de) Architektur für teilbare warteschlangen und warteschlangenverfahren
EP0960373B1 (de) Verfahren und vorrichtung zur enthaltung einer zeitfolge durch physikalische ordnung in einem speicher
DE60037512T2 (de) Speicherverwaltungseinheit in einer netzvermittlungsstelle

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: GLOBALFOUNDRIES INC. MAPLES CORPORATE SERVICES, KY