DE69819303T2 - Verfahren und vorrichtung zur übertragung von mehrfachkopien durch vervielfältigung von datenidentifikatoren - Google Patents

Verfahren und vorrichtung zur übertragung von mehrfachkopien durch vervielfältigung von datenidentifikatoren Download PDF

Info

Publication number
DE69819303T2
DE69819303T2 DE69819303T DE69819303T DE69819303T2 DE 69819303 T2 DE69819303 T2 DE 69819303T2 DE 69819303 T DE69819303 T DE 69819303T DE 69819303 T DE69819303 T DE 69819303T DE 69819303 T2 DE69819303 T2 DE 69819303T2
Authority
DE
Germany
Prior art keywords
frame
copy
data
queue
copies
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
DE69819303T
Other languages
English (en)
Other versions
DE69819303D1 (de
Inventor
Jefferson Thomas RUNALDUE
Chandan Egbert
Tsin-Ho Eric LEUNG
Bahadir Erimli
Ian Crayford
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.)
Advanced Micro Devices 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
Application granted granted Critical
Publication of DE69819303D1 publication Critical patent/DE69819303D1/de
Publication of DE69819303T2 publication Critical patent/DE69819303T2/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/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • 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
    • 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/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/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/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/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 Speicherung und Übermittlung von Daten und insbesondere ein Verfahren und eine Vorrichtung zum Übermitteln von mehreren Kopien von Daten von einem Gerät.
  • Stand der Technik
  • EP-A-0 622 922 offenbart ein bekanntes Verfahren und eine Vorrichtung zur mehrfachen Versendung von Daten in einem Kommunikationssystem, das einen Speicher aufweist, der von einer Mehrzahl von Benutzern geteilt wird, wobei jeder Benutzer von jedem anderen Nachrichten empfängt und an diese versendet. Eine Nachricht besteht aus mehreren in dem Speicher gespeicherten Datenpuffern, wobei jeder Datenpuffer auf einen einzigartigen direkten Steuerblock abgebildet sei. Bei der mehrfachen Versendung vervielfältigt der Benutzer die Nachricht unter Verwendung eines indirekten Steuerblocks, der die Charakteristik der vervielfältigten Nachricht und Punkte repräsentiert und in den direkten Steuerblock speichert, um die Leistungsfähigkeit zu verbessern. Ein Feld in dem direkten Steuerblock wird verwendet, um die Anzahl der Vervielfältigungen der Nachricht zu zählen.
  • In vielen Systemen, wie Computersystemen oder Kommunikationsnetzwerken, ist es erforderlich, einen einzelnen Satz von Daten mehrere Male zur Verfügung zu stellen (oder zu senden). In einem paketgeschalteten Netzwerk zum Beispiel, das einen Netzwerk-Switch verwendet, der den gleichen Rahmen an viele Anschlüsse weiterleitet, kann ein einzelner Rahmen an dem Switch empfangen werden und zur Weiterleitung an mehrere Anschlüsse be stimmt sein. Andere Systeme umfassen Computernetzwerke, in denen ein Server eine einzelne Kopie von Daten an mehrere Client-Rechner schickt.
  • Ein Gesichtspunkt bei dem Entwurf derartiger Systeme ist es, die Größe auf dem Chip klein zu halten, der das Gerät implementiert. Steigende Speicherkapazität auf dem Chip zum Beispiel, einem Netzwerk-Switch, erhöht unerwünschterweise die Größe des Chips und verringert die Grundfläche, die ansonsten für verbesserte Merkmale des Geräts genutzt werden könnte. Das Speichern eines einzelnen Rahmens an Daten auf einem Chip erfordert eine relativ erhebliche Menge an Speicher. Wenn der Switch ein Switch mit mehreren Anschlüssen ist, zum Beispiel achtundzwanzig Anschlüsse zusammenschaltet, wird das Erfordernis an Speicher zum Speichern von Rahmen auf dem Chip extrem groß. Das Schalten des Rahmens von Daten, der an einem Anschluss des Switches empfangen wurde, zur Übermittlung durch einen anderen Anschluss des Switches erfordert eine große Menge an Pufferspeicher auf dem Chip. Dieses Problem wird jedoch schlimmer, wenn mehrere Kopien des gleichen Rahmens zu übermitteln sind, so dass sogar mehr Speicher zum Speichern jeder Kopie benötigt wird.
  • Die Vervielfältigung und die Speicherung von mehreren Kopien eines einzelnen Rahmens verschwendet Speicherplatz und führt zu einer erhöhten Verstopfung von Speicherressourcen, da ein einzelner Rahmen von Daten mehrere Male kopiert werden kann und andere Rahmen hindert, in den Puffern gespeichert zu werden, in denen die Kopien des Rahmens gespeichert sind.
  • Zusammenfassung der Erfindung
  • Es besteht ein Bedarf für eine Anordnung und ein Verfahren zum Übertragen von mehreren Kopien eines Datensatzes, wie eines Rahmens von Daten, die/das eine verringerte Menge von Speicherplatz in dem übertragenden Gerät und in dem gesamten Speicher verwendet.
  • Diese und andere Bedürfnisse werden von einem Ausführungsbeispiel der vorliegenden Erfindung erfüllt, das eine Anordnung zum Übertragen von Datensätzen zur Verfügung stellt, aufweisend einen Speicher, der zum Speichern von Datensätzen konfiguriert ist, wobei jeder Datensatz einen zugeordneten Datenidentifizierer aufweist und separat aus dem Speicher abrufbar ist. Ein Übertragungsvektorgenerator bestimmt die Anzahl der Kopien eines zu übertragenden Datensatzes und vervielfältigt die Datenidentifizierer für diesen Datensatz. Da ist mindestens ein vervielfältigter Datenidentifizierer für jede zu übertragende Kopie für diesen einzelnen Datensatz. Zumindest eine Ausgangswarteschlange ist vorgesehen, welche die von dem Übertragungsvektorgenerator empfangenen Datenidentifizierer in die Warteschlange einreiht. Zumindest ein Übertragungsanschluss prüft einen Datenidentifizierer, der die Ausgangswarteschlange verlässt, und greift auf den von dem Datenidentifizierer identifizierten Datensatz aus dem Speicher zu und überträgt eine Kopie des Datensatzes, auf den zugegriffen worden ist.
  • Da das Gerät Datenidentifizierer und nicht die Daten selbst vervielfältigt, um mehrere Kopien zu übertragen, kann der Speicherplatz in dem Gerät viel kleiner gehalten werden. Anders ausgedrückt erlaubt die vorliegende Erfindung, statt Warteschlangen vorzusehen, die ausreichend Kapazität zum Speichern von mehreren Kopien des gleichen Datensatzes haben, den Warteschlangen angemessene Kapazitäten zum Einreihen von mehreren Kopien von Datenidentifizierern, welche viel kleine als die Daten selbst sein können, in die Warteschlange zu haben.
  • Die zuvor aufgeführten Bedürfnisse werden auch von einem anderen Ausführungsbeispiel der vorliegenden Erfindung erfüllt, das eine Switch-Anordnung in einem paketgeschalteten Netzwerk zum Empfangen und Übertragen von Rahmen zur Verfügung stellt. Die Switch-Anordnung hat einen zum Speichern von Rahmen konfigurierten Speicher, wobei jeder Rahmen einen zugeordneten Rahmenzeiger hat, der auf die Stelle im Speicher zeigt, an der der Rahmen gespeichert ist und aus dem Speicher abgerufen werden kann. Ein Übertragungsvektorgenerator bestimmt die Anzahl der Kopien für jeden zu über tragenden Rahmen und vervielfältigt die Rahmenzeiger, einen vervielfältigten Rahmenzeiger für jede zu übertragende Kopie eines einzelnen Rahmens. Zumindest ein Übertragungsanschluss ist vorgesehen, um die von der Übertragungsvektorverwaltung empfangenen Rahmenzeiger in die Warteschlange einzureihen. Zumindest ein Übertragungsanschluss prüft einen Rahmen, der die Ausgangswarteschlange verlässt und greift auf den Rahmen aus dem Speicher zu, auf den von dem Rahmenzeiger gezeigt wird, und überträgt eine Kopie des Rahmens, auf den zugegriffen wird.
  • Ein Vorteil der Switch-Anordnung der vorliegenden Erfindung ist, dass ein Mehrfachkopie-Rahmen nicht vervielfältigt wird, um mehrere Kopien des Rahmens zu übertragen. Stattdessen wird lediglich eine einzelne Kopie des Rahmens gespeichert und die Stelle des Rahmens im Speicher wird durch den Rahmenzeiger zur Verfügung gestellt. Durch die Vervielfältigung des Rahmenzeigers statt der Rahmen kann die Struktur relativ klein gehalten werden, die verwendet wird, um die vervielfältigten Rahmenzeiger zum Einreihen der Übertragung der Kopien der Rahmen in eine Warteschlange einzureihen.
  • Die zuvor aufgeführten Bedürfnisse werden auch von einem weiteren Ausführungsbeispiel der Erfindung erfüllt, das ein Verfahren zur Übertragung von mehreren Kopien eines einzelnen Datensatzes von einem Gerät zur Verfügung stellt. Dieses Verfahren umfasst die Schritte des Speicherns des Datensatzes in einem Speicher, des Erzeugens eines Datenidentifizierers, der den Datensatz identifiziert, und des Bestimmens der Anzahl der zu übertragenden Kopien des Datensatzes. Der Datenidentifizierer wird vervielfältigt, um einen vervielfältigten Datenidentifizierer für jede zu übertragende Kopie des Datensatzes zu erzeugen. Die vervielfältigten Datenidentifizierer werden in eine Warteschlange eingereiht. Auf den Speicher wird zugegriffen und eine Kopie des Datensatzes von dem Speicher, die von dem vervielfältigten Datenidentifizierer identifiziert wird, wird bei Beendigung der Einreihung dieses vervielfältigten Datenidentifizierers in die Warteschlange übertragen.
  • Die vorgehenden und weitere Merkmale, Aspekte und Vorteile der vorliegenden Erfindung werden offensichtlicher durch die folgende detaillierte Beschreibung der vorliegenden Erfindung, wenn sie zusammen mit den begleitenden Zeichnungen genommen wird.
  • Kurze Beschreibung der Zeichnungen
  • 1 zeigt ein Blockdiagramm eines paketgeschalteten Systems, das in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist;
  • 2 zeigt ein Blockdiagramm eines Switches mit mehreren Anschlüssen, der in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist und in dem paketgeschalteten System aus 1 verwendet wird;
  • 3 zeigt eine schematische Darstellung eines Switchsubsystems des Switches mit mehreren Anschlüssen aus 2, das in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist;
  • 4 zeigt ein Blockdiagramm einer einzelnen Ausgangswarteschlange des Switchsubsystems aus 3, die in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist;
  • 5 zeigt ein Detail eines ersten Typs einer Ausgangswarteschlange in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 6 zeigt ein Detail eines zweiten Typs einer Ausgangswarteschlange in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 7 zeigt ein Detail eines Überlaufbereichs des externen Speichers, der in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konfiguriert ist;
  • 8 zeigt ein Blockdiagramm einer Datenstruktur einer verknüpften Liste, die von der vorliegenden Erfindung verwendet wird;
  • 9 zeigt schematisch ein Kopfformat für einen Rahmenpuffer in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung;
  • 10 zeigt ein Detail des Mehrfachkopie-, Rückforderungs- und freien Pufferpools-Bereichs des Switchsubsystems aus 3, der in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist;
  • 11 zeigt ein Blockdiagramm einer freien Pufferpool-Struktur, die in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist;
  • 12 zeigt ein Blockdiagramm einer Mehrfachkopiewarteschlange, die in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konfiguriert ist;
  • 13 zeigt eine schematische Darstellung des Mehrfachkopiecachespeichers, der in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist;
  • 14 zeigt ein Blockdiagramm eines Warteschlangenblocks der Pufferverwaltung des Switchsubsystems und eines Anschlussvektor-FIFO, der in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist.
  • Detaillierte Beschreibung der beispielhaften Ausführungsbeispiele
  • Die vorliegende Erfindung wird anhand des Beispiels eines Switches in einem paketgeschalteten Netzwerk, wie einem Ethernet (IEEE 802.3) Netzwerk, beschrieben werden. Es wird offensichtlich werden, dass die vorliegende Erfindung auch auf andere paketgeschaltete Systeme angewendet werden kann, ebenso wie auf andere Typen von Systemen im Allgemeinen.
  • 1 ist ein Blockdiagramm eines beispielhaften Systems, in dem die vorliegende Erfindung vorteilhaft verwendet werden kann. Das beispielhafte System 10 ist ein paketgeschaltetes Netzwerk, wie ein Ethernet Netzwerk. Das paketgeschaltete Netzwerk umfasst einen integrierten Switch mit mehreren Anschlüssen (IMS) 12, der die Kommunikation von Datenpaketen zwischen Stationen des Netzwerks erlaubt. Das Netzwerk kann Netzwerkstationen mit unterschiedlichen Konfigurationen enthalten, zum Beispiel vierundzwanzig (24) 10 Megabit pro Sekunde (M\bps) Netzwerkstationen 14, die Daten mit einer Netzwerkdatenrate von 10 M\bps senden und empfangen, und zwei 100 M\bps Netzwerkstationen 22, die Daten mit einer Netzwerkgeschwindigkeit von 100 M\bps senden und empfangen. Daher leitet der Switch 12 von den Netzwerkstationen 14 oder 22 empfangene Datenpakete basierend auf dem Ethernet Protokoll selektiv an das geeignete Ziel weiter.
  • In Übereinstimmung mit dem offenbarten Ausführungsbeispiel senden und empfangen die 10 M\bps Netzwerkstationen 14 Datenpakete an und von dem Switch 12 in Übereinstimmung mit dem Halbduplex-Ethernet-Protokoll über ein Medium 17. Das Ethernet Protokoll ISO/IEC 8802-3 (ANSI/IEEE Std. 802.3, 1993 Ed.) definiert einen Mechanismus für den Halbduplex-Medienzugriff, der es allen Stationen 14 erlaubt, mit Gleichheit auf den Netzwerkkanal zuzugreifen. Der Verkehr in einer Halbduplex-Umgebung wird nicht über das Medium 17 unterschieden oder priorisiert. Stattdessen enthält jede Station 14 eine Ethernetschnittstellenkarte, die einen Mehrfachzugriff mit Trägerabtastung und Kollisionsdetektierung (CSMA/CD) verwendet, um nach Verkehr auf dem Medium zu hören. Die Abwesenheit von Verkehr im Netzwerk wird detek tiert durch die Wahrnehmung eines Abschaltens von einem Empfangsträger auf dem Medium. Jede Station 14, die Daten zu senden hat, wird versuchen auf den Kanal zuzugreifen, durch Abwarten einer vorbestimmten Zeit nach dem Abschalten von einem Empfangsträger auf dem Medium, bekannt als das Lücke zwischen Paketen Intervall (IPG). Falls mehrere Stationen 14 Daten auf das Netzwerk zu senden haben, wird jede der Stationen als Antwort auf die abgetastete Abschaltung des Empfangsträgers auf dem Medium und nach dem IPG Intervall zu senden versuchen, was zu einer Kollision führt. Daher wird die sendende Station das Medium überwachen, um festzustellen, ob dort eine Kollision gewesen war, weil eine andere Station Daten zu der gleichen Zeit sendet. Falls eine Kollision detektiert ist, halten beide Stationen an, warten eine zufällige Zeitspanne ab und versuchen erneut zu senden.
  • Die 100 M\bps Netzwerkstationen 22 arbeiten vorzugsweise im Vollduplex-Modus in Übereinstimmung mit dem vorgeschlagenen Ethernet Standard IEEE 802.3x Full-Duplex with Flow Control – Working Draft (0.3). die Vollduplex-Umgebung stellt eine zwei Wege, Punkt zu Punkt Verbindung zwischen jeder 100 M\bps-Netzwerkstation 22 und dem Switch 12 zur Verfügung, wobei der Switch 12 und die jeweiligen Stationen 22 gleichzeitig Datenpakete ohne Kollisionen senden und empfangen können. Die 100 M\bps-Netzwerkstationen 22 sind jeweils an das Netzwerkmedium 17 über 100 M\bps physikalische (PHY) Geräte Netzwerkinterfacebereich 20 vom Type 100 Base-TX, 100 Base-T4 oder 100 Base-FX verbunden. Der Switch 12 enthält eine vom Medium unabhängige Schnittstelle (MII) 24, die eine Verbindung zu den physikalischen Geräten 20 zur Verfügung stellt. Die 100 M\bps-Netzwerkstationen 22 können als Server oder Router für Verbindungen zu anderen Netzwerken implementiert sein.
  • Wie in 1 gezeigt enthält das Netzwerk 10 eine Reihe von Switch Transceivern 16, welche ein Zeitmultiplexverfahren und ein Zeitdemultiplexverfahren für zwischen dem Switch 12 und den 10 M\bps-Stationen 14 gesendete Datenpakete durchführen. Ein magnetisches Transformationsmodul 19 hält die Hüllkurven der Signalwellenform auf dem Medium 17 aufrecht. Der Switch 12 enthält eine Transceiverschnittstelle 18, die Datenpakete zu und von jedem Switch-Transceiver 16 sendet und empfängt, unter Verwendung eines Protokolls mit Zeitmultiplexverfahren über eine einzelne serielle keine Rückkehr zu Null (NRZ) Schnittstelle 23. Der Switch-Transceiver 16 empfängt Pakete von der NRZ Schnittstelle 23, demultiplext die empfangenen Pakete und gibt die Pakete über das Medium 17 an die entsprechende Endstation 14 aus. In Übereinstimmung mit dem offenbarten Ausführungsbeispiel hat jeder Switch-Transceiver 16 vier unabhängige 10 M\bps-twisted-pair-Anschlüsse und verwendet einen 4 : 1 Multiplex über die NRZ Schnittstelle, was eine vierfache Reduzierung der Anzahl der von dem Switch 12 benötigten PINs erlaubt.
  • Der Switch 12 enthält eine Entscheidungstreffungsmaschine, eine Schaltmaschine, eine Pufferspeicherschnittstelle, Konfigurations-/Steuer-/Statusregister, Verwaltungszähler und eine MAC (Medienzugriffssteuerungsprotokoll) Protokollschnittstelle, um das Routing von Datenpaketen zwischen den Ethernetanschlüssen, die den Netzwerkstationen 14 und 22 dienen, zu unterstützen. Der Switch 12 enthält auch eine erweiterte Funktionalität, um intelligente Schaltentscheidungen zu machen, und um statistische Netzwerkinformation in der Form von Verwaltungsinformationsbasis (MIB) Objekten an eine externe Verwaltungsgröße, unten beschrieben, zur Verfügung zu stellen. Der Switch 12 enthält auch Schnittstellen zur Ermöglichung von externer Speicherung von Paketdaten und Schaltungslogik, um die Größe des Chips des Switches 12 zu minimieren. Zum Beispiel enthält der Switch 12 eine Schnittstelle 34 zu einem synchronen dynamischen RAM (SDRAM), die Zugriff auf einen externen Speicher 36 zum Speichern von empfangenen Rahmendaten, Speicherstrukturen und MIB Zählerinformationen zur Verfügung stellt. Der Speicher 36 kann ein synchrones DRAM mit 80, 100 oder 120 MHz sein, das eine Größe von 2 oder 4 Mb hat.
  • Der Switch 12 enthält auch einen Verwaltungsanschluss 30, der es einer externen Verwaltungsgröße erlaubt, die gesamten Operationen des Switches 12 über eine Verwaltungs-MAC-Schnittstelle 32 zu steuern. Der Switch 12 enthält ferner eine PCI Schnittstelle 26, die den Zugriff durch die Verwaltungsgröße über einen PCI Host und Brücke 28 ermöglicht. Alternativ kann der PCI Host und Brücke 28 als ein Erweiterungsbus für mehrere Schaltgeräte 12 dienen.
  • Der Switch 12 enthält eine interne Entscheidungstreffungsmaschine (2), die von einer Quelle empfangene Datenpakete selektiv an zumindest eine Zielstation sendet. Die interne Entscheidungstreffungsmaschine kann durch einen externen Regelüberprüfer ersetzt werden. Der Switch 12 enthält eine Schnittstelle zum externen Regelüberprüfer (ERCI) 40, welche die Verwendung eines externen Regelüberprüfers 42 erlaubt, um anstelle der internen Entscheidungstreffungsmaschine Entscheidungen über die Weiterleitung von Rahmen zu treffen. Daher können Entscheidungen über die Weiterleitung von Rahmen entweder von der internen Entscheidungstreffungsmaschine oder von dem externen Regelüberprüfer 42 getroffen werden.
  • Der Switch 12 enthält des weiteren eine LED Schnittstelle 44, die den Status von Bedingungen pro Anschluss austaktet und eine LED externe Logik 46 treibt. Die LED externe Logik 46 wiederum treibt LED Anzeigeelemente 48, die von einem Menschen gelesen werden können. Ein Oszillator 38 stellt einen Schnittstelle zum externen Regelüberprüfer 40 MHz Takteingang für die Systemfunktionen des Switches 12 zur Verfügung.
  • 2 ist ein Blockdiagramm des integrierten Switches mit mehreren Anschlüssen (IMS) 12 aus 1. Der Switch 12 enthält vierundzwanzig (24) 10 M\bps-Medienzugriffsteuerung (MAC) Anschlüsse 50 zum Senden und Empfangen von Datenpaketen im Halbduplex zwischen den entsprechenden 10 M\bps-Netzwerkstationen 14 (Anschlüsse 1–24) und zwei 100 M\bps-MAC-Anschlüsse 53 zum Senden und Empfangen von Datenpaketen im Vollduplex zwischen den entsprechenden 100 M\bps-Netzwerkstationen (Anschlüsse 25, 26). Wie oben beschrieben arbeitet die Verwaltungsschnittstelle 30 auch in Übereinstimmung mit dem MAC Schichtprotokoll (Anschluss 0). Jeder der MAC Anschlüsse 50, 53 und 30 hat einen Empfangs Zuerst Rein Zuerst Raus (FIFO) Puffer 52 und einen Sende FIFO 54. Datenpakete von einer Netzwerkstation werden von der entsprechenden MAC Schnittstelle empfangen und in dem entsprechenden Empfangs FIFO 52 gespeichert. Das empfangene Datenpaket wird von dem entsprechenden Empfangs FIFO 52 an die Schnittstelle zum externen Speicher 34 zur Speicherung in dem externen Speicher 36 ausgegeben.
  • Der Kopf des empfangenen Pakets wird auch zu der Entscheidungstreffungsmaschine weiter geleitet, entweder dem internen Regelüberprüfer 58 oder der Schnittstelle zum externen Regelüberprüfer 40, um festzustellen, welche MAC Anschlüsse das Datenpaket ausgeben werden. Insbesondere wird der Paketkopf an den internen Regelüberprüfer 58 oder die Schnittstelle zum externen Regelüberprüfer 40 weitergeleitet, abhängig davon, ob der Switch 12 konfiguriert ist, um unter Verwendung des internen Regelüberprüfers 58 oder des externen Regelüberprüfers 42 zu arbeiten. Der interner Regelüberprüfer 58 und der externer Regelüberprüfer 42 versorgen die Entscheidungstreffungslogik zur Bestimmung des Ziel MAC Anschlusses für ein gegebenes Datenpaket. Die Entscheidungstreffungsmaschine kann daher ein gegebenes Datenpaket entweder an einen einzelnen Anschluss, mehrere Anschlüsse oder alle Anschlüsse (das heißt Verbreitung) ausgeben. Zum Beispiel enthält jedes Datenpaket eine Kopf mit einer Quell- und einer Zieladresse, wobei die Entscheidungstreffungsmaschine den geeigneten Ausgangs MAC Anschluss basierend auf der Zieladresse identifizieren kann. Alternativ kann die Zieladresse einer virtuellen Adresse entsprechen, welche die Entscheidungstreffungsmaschine identifiziert als einer Vielzahl von Netzwerkstationen entsprechend. Alternativ kann das empfangene Datenpaket einen ULAN (virtuelles LAN) markierten Rahmen in Übereinstimmung mit dem IEEE 802.1d Protokoll enthalten, der ein anderes Netzwerk (über einen Routen an einer der 100 M\bps-Stationen 22) oder eine vorgeschriebene Gruppe von Netzwerkstationen angibt. Daher wird entweder der interner Regelüberprüfer 58 oder der externer Regelüberprüfer 42 über die Schnittstelle 40 entscheiden, ob ein zeitweise in dem Pufferspeicher 36 gespeicherter Rahmen an einen einzelnen MAC Anschluss oder an mehrere MAC Anschlüsse ausgegeben werden soll.
  • Die Verwendung des externen Regelüberprüfers 42 liefert Vorteile wie eine erhöhte Kapazität, ein zufallsbasiertes Ordnen in der Entscheidungswarteschlange, was es Entscheidungen über die Weiterleitung von Rahmen ermöglich getroffen zu werden, bevor der Rahmen vollständig in dem externen Speicher gepuffert ist, und erlaubt Entscheidungen getroffen zu werden in einer Reihenfolge, die unabhängig ist von Reihenfolge, in der die Rahmen von dem Switch 12 empfangen wurden.
  • Die Entscheidungstreffungsmaschine (das heißt der interne Regelüberprüfer 58 oder der externe Regelüberprüfer 42) gibt eine Entscheidung über die Weiterleitung an ein Switchsubsystem 56 in der Form eines Anschlussvektors aus, der jeden MAC Anschluss identifiziert, der das Datenpaket empfangen soll. Der Anschlussvektor von dem Regelüberprüfer enthält die Adressstelle, welche das Datenpaket in dem externen Speicher 36 speichert, und die Identifizierung des MAC Anschlusses zum Empfangen des Datenpakets für die Absendung (zum Beispiel MAC Anschlüsse 0–26). Das Switchsubsystem 56 ruft das in dem Anschlussvektor identifizierte Datenpaket aus dem externen Speicher 36 über die Schnittstelle zum externen Speicher 34 ab und stellt das geholte Datenpaket dem geeigneten Sende FIFO 54 des identifizierten Anschlusses zur Verfügung.
  • Weitere Schnittstellen stellen Verwaltungs- und Steuerinformationen zur Verfügung. Zum Beispiel ermöglicht es eine Verwaltungsdatenschnittstelle 59 dem Switch 12, Steuer- und Statusinformationen mit den Switch-Transceiver 16 und den 100 M\bps physikalischen Geräten 20 in Übereinstimmung mit der MII Verwaltungsspezifikation (IEEE 802.3u) auszutauschen. Zum Beispiel gibt die Verwaltungsdatenschnittstelle 59 einen Verwaltungsdatentakt (MDC) aus, der ein Zeitreferenz auf dem bidirektionalen Verwaltungsdaten IO (MDIO) Signalpfad zur Verfügung stellt.
  • Die PCI Bus Schnittstelle 26 ist eine 32 Bit Slave-Schnittstelle, die konform ist mit der PCI Revision 2.1, zum Zugriff durch den PCI Host Prozessor 28 auf interne IMS Status und Konfigurationsregister 60 und zum Zugriff auf den ex ternen Speicher 36. Die PCI Schnittstelle 26 kann auch als Erweiterungsbus für mehrere Schaltgeräte dienen. Der Verwaltungsanschluss 30 bildet eine Schnittstelle zu einer externen MAC Maschine über eine Standard sieben Draht invertierte serielle GPSI Schnittstelle, was einen Hoststeuerungszugriff über ein Standard MAC Schicht Protokoll auf den Switch 12 ermöglicht.
  • 3 stellt das Switchsubsystem 56 aus 2 detaillierter in Übereinstimmung mit einem beispielhaften Ausführungsbeispiel der vorliegenden Erfindung dar. Weitere Elemente des Switches 12 mit mehreren Anschlüssen von 2 sind in 3 reproduziert, um die Verbindungen des Switchsubsystems 56 mit diesen anderen Elementen darzustellen. Das Switchsubsystem 56 enthält die Kernschaltmaschine zum Empfangen und Weiterleiten von Rahmen. Die wichtigsten funktionalen Blöcke, die zur Implementierung der Schaltmaschine verwendet werden umfassen: ein Anschlussvektor FIFO 70, eine Pufferverwaltung 72, eine Vielzahl von Anschluss Ausgangswarteschlangen 74, eine Verwaltungsanschluss Ausgangswarteschlange 75, eine Erweiterungsbus Ausgangswarteschlange 77, einen freien Pufferpool 104, eine Mehrfachkopie Warteschlange 90, einen Mehrfachkopie Cachespeicher 96 und eine Rückforderungswarteschlange 98. Der Betrieb und die Struktur von diesen funktionalen Blöcken wird detaillierter beschrieben werden, aber ein kurzer Überblick auf das Switchsubsystem 56 von 3 wird zuerst gegeben, um den Kontext für die spätere Diskussion der einzelnen Elemente zur Verfügung zu stellen.
  • Es gibt zwei grundlegende Typen von Rahmen, die von den Anschlüssen in den Switch 12 mit mehreren Anschlüssen eintreten: Einfachkopie Rahmen und Mehrfachkopie Rahmen. Ein Einfachkopie Rahmen ist ein Rahmen, der an einem Anschluss empfangen wird, der von dem Switch 12 mit mehreren Anschlüssen an lediglich einen anderen Anschluss zu senden ist. Im Gegensatz dazu ist ein Mehrfachkopie Rahmen ein Rahmen, der an einem Anschluss zur Versendung an mehr als einen Anschluss empfangen wird. In 3 wird jeder Anschluss von einem getrennten MAC 50 repräsentiert, der seinen eigenen Empfangs FIFO 52 und Sende FIFO 54 hat.
  • Rahmen, egal ob Mehrfachkopie oder Einzelkopie, werden von den internen MAC Maschinen 50 empfangen. Wenn das Rahmenpaket an dem Anschluss empfangen ist, wird es in dem Empfangs FIFO 52 platziert. Jeder Rahmen hat einen Kopf, der einem Regelüberprüfer zur Verfügung gestellt wird, entweder dem internen Regelüberprüfer 58 oder dem externen Regelüberprüfer 42. Der Regelüberprüfer 42 oder 58 bestimmt basierend auf der Information in dem Kopf, von wo das Rahmenpaket gesendet wird, das heißt durch welchen Anschluss oder Anschlüsse das Rahmenpaket gesendet werden wird.
  • Zu der gleichen Zeit, zu welcher der Regelüberprüfer 42 oder 58 seine Entscheidung zur Weiterleitung trifft, erhält die Pufferverwaltung 72 einen Zeiger auf einen freien Puffer von dem freien Pufferpool 104. Der Zeiger auf einen freien Puffer ist die Stelle in dem externen Speicher 36, an welcher der Rahmen von dem Empfangs FIFO 52 gespeichert werden wird. Sobald der Zeiger auf einen freien Puffer von der Pufferverwaltung 72 aus dem freien Pufferpool 104 erhalten wird, wird der Puffer, auf den von dem Zeiger auf einen freien Puffer gezeigt wird, nicht mehr als frei betrachtet. Die Rahmendaten werden über einen Datenbus 80 von dem Empfangs FIFO 52 zu dem externen Speicher 36 in einer direkten Speicherzugriff (DMA) Transaktion transferiert. Der Rahmen wird an der Stelle gespeichert, auf die der aus dem freien Pufferpool 104 erhaltene Zeiger auf einen freien Puffer zeigt, obwohl eine Anzahl von anderen Puffern zu Speicherung eines Rahmens verwendet werden kann, wie beschrieben werden wird.
  • Zusätzlich zu den Daten des Kopfes empfängt der Regelüberprüfer 42 oder 58 auch den Zeiger auf einen freien Puffer von der Pufferverwaltung 72. Dieser Zeiger auf einen freien Puffer wird nun als ein Rahmenzeiger bezeichnet, da es auf eine Speicherstelle in dem externen Speicher 36 zeigt, wo der Rahmen gespeichert ist. Der Regelüberprüfer 42 oder 58 verwendet die Information des Kopfes, um die Entscheidung über die Weiterleitung zu treffen und einen Befehl zum Weiterleiten in der Form eines "Anschlussvektors" zu erzeugen. In dem beispielhaft dargestellten Ausführungsbeispiel ist der Anschlussvektor ein 28 Bit Vektor mit einem gesetzten Bit für jeden Ausgangsanschluss, an den der Rahmen weiter geleitet werden soll. Für dieses überblickhafte Beispiel soll angenommen werden, dass der empfangene Rahmen ein Einfachkopie Rahmen ist. Entsprechend ist nur ein Bit in dem von dem Regelüberprüfer 42 oder 58 erzeugten Anschlussvektor gesetzt. Das Bit, das in dem Anschlussvektor gesetzt ist, entspricht einem bestimmten der Anschlüsse.
  • Der Regelüberprüfer 42 oder 58 platziert den Anschlussvektor und den Rahmenzeiger (und auch einen Steuer Opcode und einen VLAN Index) in dem Anschlussvektor FIFO 70. Der Anschlussvektor wird von dem Anschlussvektor FIFO 70 untersucht, um festzustellen, in welche bestimmte Ausgangswarteschlange 74 (oder Warteschlangen) der zu dem Anschlussvektor gehörige Rahmenzeiger eingegeben werden sollte. Der Anschlussvektor FIFO 70 platziert den Rahmenzeiger in der geeigneten Ausgangswarteschlange 74. Dies reiht die Versendung des Rahmens in die Warteschlange ein.
  • Zu irgendeinem Zeitpunkt erreicht der Rahmenzeiger den Boden der Ausgangswarteschlange 74 nachdem er durch die Ausgangswarteschlange 74 passiert ist. Die Pufferverwaltung 72 nimmt den Rahmenzeiger, wenn er an dem Boden der Ausgangswarteschlange 74 ankommt und leitet den Rahmenzeiger an den geeigneten Sende FIFO 54 des richtigen Anschlusses über einen Rahmenzeiger Lesebus 86 weiter. Dies plant den Ablauf der Versendung des Rahmens. Die Rahmendaten werden in einer DMA Transaktion von der Stelle in dem externen Speicher 36 gelesen, auf den von dem Rahmenzeiger gezeigt wird, werden in dem geeigneten Sende FIFO 54 gespeichert und dann gesendet.
  • Eine Mehrfachkopie Transaktion ist ähnlich zu der Einfachkopie Transaktion, bis auf dass der Anschlussvektor mehrere gesetzte Bits hat, welche die mehreren Anschlüsse, von denen die Rahmen gesendet werden, bezeichnen. Der Rahmenzeiger wird in jede der geeigneten Ausgangswarteschlangen 74 platziert und von den entsprechenden Sende FIFOs 54 gesendet.
  • Die Pufferverwaltung 72 verwendet die speziellen Steuerwarteschlangen, das heißt den freien Pufferpool 104, die Mehrfachkopie Warteschlange 90 und die Rückforderungswarteschlange 98 und den Mehrfachkopie Cachespeicher 96, um den Vorgang den Zuweisens von Puffern zu verwalten, um empfangene Rahmen zu speichern und Puffer zur erneuten Benutzung wieder zu erlangen, sobald der Rahmen an seinen zugewiesenen Ausgangsanschluss (-anschlüsse) gesendet worden ist. Die Pufferverwaltung 72 unterhält auch "Überlauf" Bereiche für die Ausgangswarteschlangen 74 und die Steuerwarteschlangen 104, 90 und 98 in dem externen Speicher 36, wie später detaillierter beschrieben werden wird.
  • Mit diesem operationellen Überblick, der als Hintergrund dient, werden nun die einzelnen Bereiche und die verschiedenen Aspekte des Switchsubsystems 56 detaillierter diskutiert. Der erste von diesen Aspekten, der beschrieben werden wird, ist die Struktur des verschiedenen Ausgangswarteschlangen 74 der vorliegenden Erfindung. Zusätzlich zu diesen Ausgangswarteschlangen 74, die den 10 Mb/s Ausgangsanschlüssen und den 100 Mb/s-Ausgangsanschlüssen zugeordnet sind, wird eine Ausgangswarteschlange 75 für den Verwaltungsanschluss 30 zur Verfügung gestellt und eine Ausgangswarteschlange 77 wird für den Erweiterungsanschluss 26 zur Verfügung gestellt. Diese Ausgangswarteschlangen 75, 77 haben die gleiche externe Struktur wie die Ausgangswarteschlangen 74, aber unterschiedliche interne Konfigurationen, wie beschrieben werden wird.
  • 4 ist ein Blockdiagramm der externen Struktur einer Ausgangswarteschlange 74 in Übereinstimmung mit einem Ausführungsbeispiel der vorliegende Erfindung. Wie aus 4 offensichtlich ist, hat die Ausgangswarteschlange 74 der vorliegende Erfindung eine dreiteilige Konfiguration. Für die höchste Leistungsfähigkeit ist es vorzuziehen, alles der Struktur der Warteschlange auf dem Chip zu halten (bezogen auf den Switch 12 mit mehreren Anschlüssen), aber der Boden auf einem Chip ist sehr teuer. Dies zeigt ein Dilemma, wenn der Chip entworfen ist, um eine große Anzahl von Einträgen zu schalten und in eine Warteschlange einreihen muss. Die vorliegende Erfin dung löst dieses Dilemma durch die Bereitstellung einer einzelnen Ausgangswarteschlange, die einen Bereich mit hoher Leistungsfähigkeit und niedriger Kapazität enthält, der sich auf dem Chip befindet, und eines Überlaufbereichs, der sich außerhalb des Chips befindet. Der Überlaufbereich erlaubt der Warteschlange als eine Warteschlange mit hoher Kapazität zu dienen, wenn es nötig ist, wenn auch mit einer relativ betrachtet geringeren Leistungsfähigkeit als der auf dem Chip befindliche Bereich.
  • Eine einzelne logische Ausgangswarteschlange 74 der vorliegenden Erfindung hat in Übereinstimmung mit dem Ausführungsbeispiel von 4 drei physikalische Bereiche. Diese umfassen eine Ausgangs Warteschlangen-Schreibseite 76, eine Ausgangs Warteschlangen-Leseseite 78 und einen Ausgangswarteschlangen Überlaufbereich (allgemein als 110 bezeichnet), der in dem externen Speicher 36 angeordnet ist. Zugriff auf den externen Speicher 36 für alle der Ausgangswarteschlangen 74 ist durch die Schnittstelle zum externen Speicher 34, wie zuvor beschrieben. Die vorliegende Erfindung nimmt Vorteil von der Burst-Charakteristik der aktuellen externen Speicher, so dass die Daten (zum Beispiel Rahmenzeiger) von und zu dem Chip zu dem Überlauf Warteschlangenbereich 110 in Bursts über den Bus 84 gesendet werden, der den Chip 12 mit dem externen Speicher 36 verbindet.
  • Die Ausgangs Warteschlangen-Schreibseite 76 und die Ausgangs Warteschlangen-Leseseite 78 sind auf dem Chip 12 angeordnet. Die Schreibseite 76 und die Leseseite 78 werden als kleine, teure Ressourcen seiend betrachtet. Im Gegensatz dazu ist der Überlaufbereich 110, der den dritten Teil der Ausgangswarteschlange 74 bildet, groß und billig. Die Schreibseite 76 und die Leseseite 78 stellen eine hohe Leistungsfähigkeit zur Verfügung, während der Pfad durch den Überlaufbereich einen Pfad mit niedriger Leistungsfähigkeit und hoher Kapazität zur Verfügung stellt.
  • Im Betrieb empfängt die Ausgangs Warteschlangen-Schreibseite 76 einen Eintrag. In dem beispielhaftren Ausführungsbeispiel eines Switches 12 mit mehreren Anschlüssen in Übereinstimmung mit der vorliegenden Erfindung ist der Eintrag ein Rahmenzeiger, der auf den ersten Puffer in dem externen Speicher zeigt, in dem die ersten 256 Bytes eines Rahmens gespeichert sind. Es sollte den Fachleuten auf dem Gebiet jedoch offensichtlich sein, dass die Struktur der Ausgangswarteschlange 74 nicht auf Rahmenzeiger als Einträge begrenzt ist, vielmehr ist sie auf andere Typen von Einträgen, sowohl in Switches mit mehreren Anschlüssen als auch in anderen Technologien, breit anwendbar.
  • Nachdem der Eintrag durchfließt und den Boden der Ausgangs Warteschlangen-Schreibseite 76 erreicht macht eine zu der Ausgangswarteschlange 74 gehörende Steuerlogik ein Entscheidung dahingehend, was mit dem Eintrag geschehen soll. Falls Platz in der Ausgangs Warteschlangen-Leseseite 78 ist und die Überlaufbereich 110 für diese Ausgangswarteschlange 74 leer ist, dann werden ein oder mehrere Einträge direkt von der Ausgangs Warteschlangen-Schreibseite 76 zu Ausgangs Warteschlangen-Leseseite weiter geleitet. Dieses Weiterleiten von dem Eintrag oder den Einträgen direkt von der Schreibseite 76 zu der Leseseite 78 wird vollständig auf dem Chip 12 durchgeführt und ist daher ein schnelles Durchfließen eines Eintrags mit niedriger Latenz.
  • Falls die Ausgangs Warteschlangen-Leseseite 78 voll ist und zumindest ein Betrag an Daten in Burst-Größe (zum Beispiel 16 Bytes an Einträgen) in der Ausgangs Warteschlangen-Schreibseite 76 da ist, dann wird der Eintrag auf Burst-Weise in den Überlaufbereich 110 für die Ausgangswarteschlange 74 geschrieben. Falls die Ausgangs Warteschlangen-Leseseite 78 voll ist, aber noch kein Betrag an Daten in Burst-Größe in der Ausgangs Warteschlangen-Schreibseite 76 da ist, dann verbleibt der Eintrag in der Ausgangs Warteschlangen-Schreibseite 76 und nichts weiter wird unternommen. Schließlich wird die Ausgangs Warteschlangen-Leseseite 78 entleert werden und wenn die Ausgangs Warteschlangen-Leseseite 78 genügend Platz hat, um einen Betrag an Daten in Burst-Größe unterzubringen, und wenn Daten in dem Überlaufbereich 110 sind, wird ein Burst an Daten von dem Überlaufbereich 110 in die Ausgangs Warteschlangen-Leseseite 78 zur Verfügung gestellt.
  • In der Struktur der Ausgangswarteschlange agiert die Leseseite 78 meistens wie eine traditionelle Warteschlange, weil Eintrag aus diesem Bereich ist, aus dem Einträge genommen werden, einer nach dem anderen. Die Ausgangs Warteschlangen-Schreibseite 76 dient meistens einer Sammelfunktion, um die Daten zu Bursts für das Schreiben in den externen Speicher 36 zusammenzustellen. Daher transformiert die vorliegende Erfindung einzelne Ereignisse (Platzieren eines Eintrags in die Ausgangswarteschlange 74) in ein Burst-Ereignis. Die Schreibseite 76 erlaubt die Ansammlung von Daten, um sie dann, falls notwendig, per Burst in den Überlaufbereich 110 in dem externen Speicher 36 zu befördern. Der Überlaufbereich 110 stellt einen billigen Speicher zu Zeiten von Stockungen zur Verfügung, anstatt teuere Ressourcen des Chips einer Funktion zuzuweisen, die nur zu relativ seltenen Anlässen benötigt wird. Obwohl die vorliegende Erfindung einen Überlaufbereich 110 benutzt, der sich außerhalb des Chips befindet, wird das Zugreifen auf diesen Bereich 110 auf eine Weise durchgeführt, die effizient ist durch den Burst einer Anzahl von Bytes an Information zu einem Zeitpunkt. Dies ist im Gegensatz zu konventionellen Strukturen von Warteschlangen, bei denen einzelne Einträge in die Warteschlange geschrieben und aus ihr gelesen werden.
  • Während des Betriebs werden, falls eine Menge von Einträgen an der Ausgangswarteschlange 74 ankommen, diese Einträge in dem Überlaufbereich 110 platziert, um einen Überlauf der auf dem Chip befindlichen Ausgangs Warteschlange 78 zu verhindern. Daher wird das Verwerfen von Rahmen durch die Struktur der Warteschlange der vorliegenden Erfindung größtenteils verhindert. Auch kann der gesamte Betrag an Speicher, der den Überlaufbereichen 110 zugeordnet ist, leicht geändert werden durch Veränderung der Größe des externen Speichers 36. Des weiteren sind die Größen der einzelnen bestimmten Überlaufbereiche 110 programmierbar, um die Größen der Warteschlangen anzupassen ohne dass die Leistungsfähigkeit der Ausgangswarteschlangen 74 beeinflusst wird.
  • Typischerweise ist eine Warteschlange eine geordnete Struktur mit einer zuerst rein, zuerst raus Anordnung. Jedoch ist bei einigen Typen von Warte schlangen, wie der Rückforderungswarteschlange 98 oder dem freien Pufferpool 104, die Reihenfolge der Einträge nicht von Wichtigkeit. Falls es möglich ist, Daten direkt von der Schreibseite 100 zu der Leseseite 102 zu senden, erlaubt es die vorliegende Erfindung, Information direkt auf diesem Weg zu senden, wodurch der Überlaufbereich für die Warteschlange umgangen wird. Dies ist sogar erlaubt, wenn sich Information in dem dazu gehörigen Überlaufbereich befindet, so lange die Information nicht empfindsam für die Ordnung ist. Zum Beispiel ist die Rückforderung von Puffern nicht empfindsam für die Ordnung, da jegliche Ordnung akzeptabel ist, in der die Puffer schließlich zu der Freiliste in dem freien Pufferpool 104 zurückgegeben werden, nachdem der Puffer nicht länger benötigt wird, um den Rahmen zu speichern. Daher wird, um die Einschränkung der Bandbreite eines Schreibvorgangs zu dem Überlaufbereich 110 für die Rückforderungswarteschlange 98 in dem externen Speicher 36 zu verhindern, wenn die Daten nicht empfindsam für die Ordnung sind, die Information direkt von der Schreibseite 100 zu der Leseseite 102 weitergeleitet, unter der Annahme, dass die Leseseite 102 Platz für mehr Einträge hat. Die Rückforderungswarteschlange 98 ist ein Beispiel für einen Type von Warteschlange, die Daten in eine Warteschlange einreiht, die nicht empfindsam für die Ordnung sind. Jedoch gibt es viele andere Typen von Daten in verschiedenen Anwendungen, die ebenso nicht empfindsam für die Ordnung sind, so dass dieses Merkmal der vorliegenden Erfindung in Warteschlangen Verwendung findet, die diese anderen Typen von Daten in eine Warteschlange einreihen.
  • In dem Switch mit mehreren Anschlüssen eines beispielhaften Ausführungsbeispiels der vorliegende Erfindung, wie in den 1 und 2 dargestellt, sind achtundzwanzig Ausgangswarteschlangen (jede mit einem Ausgangsanschluss verbunden): vierundzwanzig für die 10 Mb/s-Benutzeranschlüsse, zwei für die Schreibseite 100 Mb/s-Serveranschlüsse, einer für den Verwaltungsanschluss und einer für den Erweiterungsbusanschluss. Die Ausgangswarteschlangen 74, 75 und 77 stellen einen temporären Speicher für Rahmenzeiger zur Verfügung, wenn sie für die Versendung in eine Warteschlange eingereiht werden. Das Einreihen in die Warteschlange hat die Form, dass das Anschlussvektor FIFO 70 Rahmenzeiger in die verschiedenen Ausgangswarteschlangen 74, 75 und 77 schreib, wie in einem weitergeleiteten Anschlussvektor angezeigt ist.
  • In gewissen bevorzugten Ausführungsbeispielen der Erfindung enthalten die verschiedenen Ausgangswarteschlangen 74, 75 und 77 einige oder alle der folgenden Felder: Einzelkopiebit, Rahmenzeiger, Steuer Opcode oder Steuersignale und ULAN (virtuelles Nahbereichsnetzwerk) Index. Das Einfachkopiebit markiert einen Rahmen mit einem Flag, der lediglich zu einem Ausgangsanschluss weitergeleitet werden soll. Der Rahmenzeiger zeigt auf den Rahmen in dem externen Speicher 36. Der Steuer Opcode identifiziert spezielle Information über den Rahmen (das heißt neu gelernter Rahmen usw.). Die Steuersignale verwenden Information von dem Steueropcode, um anzuzeigen wie die Anschlüsse die Rahmen vor der Versendung behandeln werden. Der VLAN Index stellt einen Verweis auf eine VLAN Markierung zur Verfügung, die (falls notwendig) in den ausgehenden Rahmen eingefügt werden sollte. Jedoch sind diese Felder lediglich beispielhaft, da die vorliegende Erfindung auf andere Ausgangswarteschlangen mit unterschiedlichen Typen von Feldern anwendbar ist.
  • Die interne Struktur eines beispielhaften Ausführungsbeispiels eines ersten Typs der Ausgangswarteschlange 74, der 10 Mb/s-Ausgangswarteschlange, ist in 5 dargestellt. Die 10 Mb/s-Ausgangswarteschlangen 74 halten Einträge für Rahmen, die an die 10 Mb/s-Anschlüsse weiter zu leiten sind. Die Ausgangs Warteschlangen-Schreibseiten 76 für diese Warteschlangen halten zweiunddreißig Einträge und die Ausgangs Warteschlangen-Leseseiten 78 halten sechzehn Einträge in dem beispielhaft dargestellten Ausführungsbeispiel, obwohl andere Größen beabsichtigt sind und in dem Umfang der Erfindung liegen. Jeder Eintrag in einer 10 Mb/s-Ausgangswarteschlange 74 weist ein Einfachkopiebit und einen Rahmenzeiger (14 Bits) auf. In dem beispielhaften Ausführungsbeispiel des Switches mit mehreren Anschlüssen ist der VLAN Index nicht notwendig, da auf den 10 Mb/s-Anschlüssen keine VLAN Markierung stattfindet.
  • Die interne Struktur eines beispielhaften Ausführungsbeispiels eines zweiten Typs der Ausgangswarteschlange 74, der 100 Mb/s-Ausgangswarteschlange, ist in 6 dargestellt. Die 100 Mb/s-Ausgangswarteschlangen halten Einträge für Rahmen, die an die 100 Mb/s-Anschlüsse weiter zu leiten sind. Die Ausgangs Warteschlangen-Schreibseite 76 hält vierundsechzig Einträge in diesem Type von Ausgangswarteschlange und die Ausgangs Warteschlangen-Leseseite hält sechzehn Einträge. Jeder Eintrag weist einem VLAN Index, einen partiellen Steuer Opcode (Bits 4–0), ein Einfachkopiebit und einen Rahmenzeiger auf.
  • Eine beispielhafte Abbildung des externen Speichers 36 ist in 7 dargestellt. Die gesamte Kapazität des externen Speichers 36 kann zum Beispiel 4 Mb sein, obwohl in verschiedenen Ausführungsbeispielen Speicher mit anderen Kapazitäten verwendet werden. Die Verwendung des externen Speichers 36 für die Überlaufbereiche in Übereinstimmung mit der vorliegenden Erfindung erlaubt die Vergrößerung oder Verkleinerung der Größe der Ausgangswarteschlangen durch eine einfache Auswechslung des externen Speichers. Dies ist ein Vorteil gegenüber Systemen, bei denen die Struktur der Warteschlange vollständig auf dem Chip ist, da die gesamte Kapazität der Warteschlange bei der Herstellung des Chips festgelegt wird.
  • Um die Speicheranforderungen des Chips Switch 12 zu erfüllen weist ein beispielhaftes Ausführungsbeispiel des externen Speichers 36 Platz für die folgenden Bereiche zu: freier Pufferpool Überlaufbereich 120, Rückforderungswarteschlange Überlauf 122, Mehrfachkopiewarteschlange Überlauf 124, Verwaltungsanschluss Ausgangswarteschlange Überlauf 126, individuelle Ausgangswarteschlange Überläufe 128 für jeden der 10 Mb/s- und 100 Mb/s-Zielanschlüsse, Erweiterungsbus Ausgangswarteschlange Überlauf 130, die MIB Zähler 132 und den globalen Rahmenpufferpool 134.
  • Die BASIS Adresse für den gesamten Speicherbereich ist in einem Basisadressregister unter den Registern 60 auf dem Chip programmierbar. Die BASIS Adresse für jeden Bereich in der Abbildung des externen Speichers ist in dem Registersatz programmierbar. Kein Längenregister ist erforderlich, die Länge für einen gegebenen Bereich entspricht dem Bereich von der BASIS Adresse dieses Bereichs bis zu der BASIS Adresse des nächsten Bereichs der Abbildung.
  • Da die Länge (und damit Kapazität) von jedem der einzelnen Überlaufbereiche programmierbar ist, ist die gesamte Kapazität von jeder Warteschlange programmierbar. Dieses Merkmal der vorliegenden Erfindung erlaubt die Anpassung des Switches, um bestimmte Ausgangswarteschlangen mit vergrößerter Kapazität, wie benötigt, zur Verfügung zu stellen.
  • Die folgenden Überlaufbereiche, die Einträge speichern, die nicht in die Steuerwarteschlangen auf dem Chip 12 passen, werden daher in dem externen Speicher 36 platziert. Der freier Pufferpool Überlaufbereich 120 speichert die Adresszeiger auf derzeit nicht genutzte Puffer in dem globalen Rahmenpufferpool 134. Der Rückforderungswarteschlange Überlaufbereich 122 speichert Rahmenzeiger auf verknüpft gelistete Ketten, die nicht länger benötigt werden. Der Mehrfachkopiewarteschlange Überlaufbereich 124 speichert Rahmenzeiger mit Kopienummern "> = 1" (für in eine Warteschlange eingereihte Rahmenzeiger) und Rahmenzeiger mit Kopienummern "–1" (für erfolgreich gesendete Rahmen).
  • Die folgenden Überlaufbereiche speichern Einträge für Ausgangswarteschlangen, die nicht auf den Chip passen. Der Verwaltungsanschluss Ausgangswarteschlange Überlaufbereich 126 speichert Rahmenzeiger, die auf die Versendung an den Verwaltungsanschluss warten. Die Ausgangswarteschlangen Überlaufbereiche 128 speichern Rahmenzeiger, die auf die Versendung an den entsprechenden 10 Mb/s-Anschluss oder 100 Mb/s-Anschluss warten. Der Erweiterungsbus Ausgangswarteschlange Überlaufbereich 130 speichert Rahmenzeiger, die auf die Versendung an den Anschluss für den Erweiterungsbus warten.
  • Der MIB Zähler Bereich 132 enthält alle Statistiken für jeden Anschluss, die periodisch von dem Switch 12 aktualisiert werden. Der Switch 12 unterhält auf dem Chip 8 Bit und 16 Bit Zähler zum Speichern von MIB Statistiken. Der Switch 12 aktualisiert die 32 Bit oder 64 Bit MIB Zähler in dem externen Speicher 36 mit der Frequenz, die erforderlich ist, um einen Verlust von MIB Daten zu verhindern.
  • Der globalen Rahmenpufferpool 134 enthält Puffer in verknüpften Listen, welche die empfangenen Rahmendaten speichern. Zu einem gegebenen Zeitpunkt enthalten diese verknüpften Listen gültige Rahmendaten, veraltete Puffer, die von der Pufferverwaltung 72 an den freien Pufferpool 104 zurück gegeben werden oder dem PCI Host Prozessor 28 gehören.
  • Nun Bezug nehmend auf 8 werden von einem beliebigen MAC Anschluss oder dem PCI Bus empfangene Rahmendaten in dem externen Speicher 36 in einem Format einer verknüpft gelisteten Datenstruktur in einem beispielhaften Ausführungsbeispiel der vorliegenden Erfindung gespeichert. Die Puffer 140, die verwendet werden, um die verknüpfte Liste zu erstellen haben eine Länge von 256 Bytes, obwohl Pufferlängen von anderer Größe in verschiedenen Ausführungsbeispielen der Erfindung verwendet werden. Die Adresszeiger zu jedem dieser Puffer 140 werden von dem freien Pufferpool 104 in dem Switch 12 gespeichert.
  • Wenn ein Rahmen an einem der Anschlüsse des Switches 12 empfangen wird, fordert die Pufferverwaltung 72 von dem freien Pufferpool 104 Adresszeiger an, um Puffer 140 zur Speicherung des Rahmens zu verknüpfen. Der Adresszeiger auf den ersten Rahmen in dem externen Speicher 36, das den Rahmen speichert, wird der Rahmenzeiger für diesen Rahmen. Der Rahmenzeiger wird in dem Switchsubsystem 56 zum Einreihen von zu sendenden Rahmen in die Warteschlange verwendet.
  • Die Puffer 140 werden durch Adresszeiger in jedem Pufferkopf 142 zusammen verkettet, welche die Stelle des nächsten Puffers in dem Speicher anzeigen.
  • Die Köpfe des Puffers 142 enthalten auch weitere Informationen über die Rahmendaten, die in dem Puffer 140 enthalten sind. Der erste Kopf des Puffers ist 12 Byte, wie in dem beispielhaften Format für einen Pufferkopf in 9a dargestellt. Jeder nachfolgende Kopf des Puffers ist 4 Byte, wie in 9b dargestellt. Die Bursts des externen Speichers sind 2 Bänke × 16 Byte lang, so dass die tatsächliche Speicherkapazität für Rahmen in jedem Puffer 256 B – 16 B = 240 B ist.
  • Wie in den 9a und 9b dargestellt enthalten die ersten und die nach folgenden Formate des Pufferkopfs die folgenden Felder:
  • Buffer Format Bit: zeigt an, welches Pufferformat verwendet wird. Eine Eins zeigt das erste Pufferformat an, das 12 Byte in der Länge ist. Eine Null zeigt ein Format eines nachfolgenden Puffers an, welches 4 Byte ist. Es wird für jeden der verbleibenden Puffer verwendet, wenn die Puffer verkettet werden.
  • E Bit (Ende des Rahmens Markierung): zeigt an, dass dies der letzte Puffer für einen Rahmen ist. Wenn das E Bit gesetzt ist, sind keine Puffer mehr in der Kette.
  • C Bit (CRC Fehler detektiert): zeigt an, dass von dem Empfänger ein CRC Fehler detektiert wurde. Wenn das C Bit detektiert wird, wird der Sendefunktion bewusst einen invertierten CRC senden.
  • L Bit (Ausrichtungsfehler): zeigt an, dass ein Rahmenausrichtungsfehler in dem Empfangsrahmen detektiert wurde (zusammen mit einem CRC Fehler).
  • O Bit (Empfang FIFO Überlauf): zeigt an, dass der Empfangs FIFO übergelaufen ist und die Daten in dem Puffer nicht gültig sein müssen.
  • Buffer Length: die gesamte Anzahl von Bytes, die in dem Datenfeld des Puffers gültig sind, beginnend mit dem ersten Byte nach dem Kopf des Puffers. Diese Länge sollte nicht den Wert des Verschiebungsbytes umfassen.
  • Next Buffer Pointer: der Zeiger auf den nächsten Puffer. Der nächste Puffer ist nicht gültig, wenn das E Bit gesetzt ist.
  • Offset Byte Count: zeigt an, wo das erste Byte des Rahmens in dem Rahmendatenbereich des Puffers startet. Eine Verschiebung von Null bedeutet, dass die Daten an dem ersten Byte nach dem Kopf des Puffers 142 beginnen werden. Eine Verschiebung von Null zeigt an, dass Rahmendaten an dem Byte beginnen werden, das dem 16sten Byte in dem Puffer folgt. Für Werte der Verschiebung, die nicht Null sind, werden die Rahmendaten 16 B + Verschiebung von dem Anfang des Puffers beginnen. Die Sendefunktion wird die Anzahl der Bytes überspringen, die in dem Offset-Byte-Feld angezeigt sind.
  • P Bit (Anschlusstyp): zeigt den Typ des Anschlusses für den eingehenden Empfangsrahmen an. Eine Null zeigt einen 10 Mb/s-Anschluss an und eine Eins zeigt einen 100 Mb/s-Anschluss an. Dieses Bit wird von dem Host 28 in Verbindung mit dem Zeitstempelfeld verwendet, wenn er den Switch 12 programmiert, um Rahmen an den Erweiterungsbus weiter zu leiten, bevor der Rahmen vollständig empfangen und in dem externen Speicher 36 gepuffert ist.
  • T Bit: zeigt den Typ des empfangenen Rahmens an: markiert oder nicht markiert. Eine Eins zeigt einen markierten rahmen an und das VLAN Identifizierer Feld enthält die empfangene VLAN ID. Eine Null zeigt einen nicht markierten Rahmen an und die VLAN ID ist nicht gültig.
  • Empfangsanschlussnummer: die Nummer des Anschlusses, an dem der Rahmen empfangen wurde.
  • VLAN Identifier: die von einem "markierten" Anschluss empfangene VLAN ID. Falls der Rahmen von einem nicht markierten Anschluss empfangen wurde, ist dieses Feld nicht gültig.
  • R Bit (Neuberechnung CRC): zeigt an, dass der CRC bei der Sendefunktion zerlegt und neu berechnet werden muss. Der Switch 12 setzt dieses Bit, wenn ein markierter Rahmen empfangen wird. Des weiteren sollte, wenn der Host 28 die Inhalte eines Rahmens verändert, der Host 28 dieses Bit setzen. Wenn der Switch 12 einen Rahmen sendet, wird er dieses Bit untersuchen, um festzustellen, ob der existierende CRC gesendet wird oder der CRC neu berechnet wird.
  • A Bit (Anfügen CRC): zeigt an, dass kein CRC an dem Ende der Rahmendaten vorhanden ist. Der Host kann einen in dem Speicher erzeugen (ohne einen CRC), dann dieses Bit setzen. Der Switch 12 wird einen CRC erzeugen und anfügen, wenn der Rahmen gesendet wird. Falls das A Bit gesetzt ist, sollte die Länge des Rahmens nicht den CRC enthalten.
  • F Bit (Format Bit): identifiziert das Rahmenlänge/Zeitstempel Feld. Eine Null zeigt an, dass das Feld der Zeitstempel des eintreffenden Rahmens ist. Eine Eins zeigt an, dass das Feld die Rahmenlänge des empfangenen Rahmens ist.
  • Frame length/time stamp: abhängig von dem F Bit. Falls das F Bit gelöscht ist, repräsentiert dieses Feld den Zeitstempel von dem Anfang des empfangenen Rahmens. Der Zeitstempel hat eine Auflösung von 1 μs. Falls das f Bit gesetzt ist, zeigt es die gesamte Länge des empfangenen Rahmens einschließlich CRC und jeder empfangenen VLAN Markierung an. Wenn ein Rahmen empfangen wird, markiert der Switch 12 dieses Feld mit dem Zeitstempel (von dem Taktgeberregister). Falls der Host 28 den Switch 12 programmiert hat zum Weiterleiten von Erweiterungsbusrahmen, bevor der Rahmen vollständig empfangen worden ist, kann er den Zeitstempel (zusammen mit der Geschwindigkeit des empfangenden Anschlusses) verwenden, um abzuschätzen, wie viele Daten er von dem externen Speicher 36 abrufen kann, ohne dass die Rahmendaten überlesen werden. Sobald der gesamte Rahmen empfangen wurde, schreibt der Switch 12 die Länge des Rahmens in dieses Feld und setzt das F Bit.
  • Copy number: wird verwendet, um die Anzahl der Kopien anzuzeigen, die von dem Anschlussvektor FIFO 70 erfolgreich für die Versendung in eine Warteschlange eingereiht wurden. Dieses Feld wird verwendet, um die Anzahl der Kopien für einen Rahmenzeiger anzuzeigen, wenn die Pufferverwaltung 72 in dem Mehrfachkopie Cachespeicher 96 für neue Einträge Platz schaffen muss.
  • 10 ist eine detaillierte Darstellung von einigen der Elemente des Switchsubsystems 56 aus 3. Diese Elemente werden verwendet, um die Puffer zum Speichern von Rahmen zur Verfügung zu stellen und diese Puffer zurückzufordern und sie wieder für die Benutzung verfügbar zu machen, sobald die Puffer nicht länger für die Speicherung des Rahmens benötigt wird. Wie zuvor beschrieben leitet jede Ausgangswarteschlange 74, 75 (außer der Ausgangswarteschlange 77) Rahmenzeiger zu der Pufferverwaltung 72, welche den Ablauf der Versendung der Rahmen, auf die von den Rahmenzeigern gezeigt wird, plant. Die Pufferverwaltung 72 steuert die folgenden Funktionen: 1) Verwalten der internen Busse des Switches 12; 2) erleichtern des in die/aus der Warteschlange ein/ausreihen von Rahmenzeigern in/aus den Ausgangswarteschlangen 74; 3) verwalten der Steuer Warteschlangen 90, 98, um die Puffer zu lokalisieren und an den freien Pufferpool 104 zurückzugeben; 4) steuern des Datenflusses zu und von dem externen Speicher 36 und 5) unterhalten der Speicherstrukturen, einschließlich der MIBs und Überlaufbereiche. Die Pufferverwaltung 72 enthält eine Ablaufplanungsfunktion zum Zuweisen aller Zugriffe auf den externen Speicher 36. Diese Zugriffe umfassen: 1) Schreiben empfangener Rahmendaten in die Speicherpuffer 140, 2) lesen von Rahmendaten aus den Speicherpuffern 140 zur Versendung und 3) unterhalten (das heißt Schreiben und Lesen) der Rahmenzeiger in jedem der Überlaufbereiche für die Ausgangswarteschlangen 74 und die Steuer Warteschlange 90, 98 und 4) aktualisieren der MIB Zähler.
  • Nachdem die Pufferverwaltung 72 einen bestimmten Rahmenzeiger an alle der geeigneten Ausgangswarteschlange(n) 74 kopiert hat, berechnet der Anschlussvektor FIFO 70 die Anzahl der Kopien (die "Kopienanzahl") und platziert die Rahmenzeiger und die Kopieanzahl in die Schreibseite 92 der Mehr fachkopie Warteschlange 90. Die Kopieanzahl kann "0" sein, was anzeigt, dass der Rahmen nicht weiter geleitet werden sollte, eine "1" zeigt eine Übermittlung einer Einfachkopie an oder eine Zahl "> 1" zeigt eine Übermittlung einer Mehrfachkopie an. Diese drei Fälle werden unten beschrieben.
  • Wenn die Kopieanzahl "0" ist, was bedeutet, das der Rahmenzeiger einen Null Weiterleitung Anschlussvektor mit keinem gesetzten Bit hat, leitet der Anschlussvektor FIFO 70 den Rahmenzeiger direkt zu der Schreibseite 100 der Rückforderungswarteschlange 98. Wenn die Pufferverwaltung 72 die Rückforderungswarteschlange 98 bedient, wie beschrieben werden wird, bricht die Pufferverwaltung 72 die verknüpft gelistete Kette von Puffern auf und gibt den Adresszeiger für jeden "freien" Puffer an die Schreibseite 106 des freien Pufferpools 104 aus.
  • Wenn die Kopieanzahl eine "1" ist, eine Übermittlung einer Einfachkopie, kopiert der Anschlussvektor FIFO 70 den Rahmenzeiger, Steuersignale/Steuer Opcode und den VLAN Index an die Ausgangswarteschlange 74 des entsprechenden Ausgangs. Der Anschlussvektor FIFO 70 setzt das Einfachkopie Bit in der Ausgangswarteschlange 74 (siehe 5 und 6), um anzuzeigen, dass dies eine einzelne Übertragung ist. Wenn die Pufferverwaltung 72 den Rahmenzeiger und das Einfachkopie Bit aus der Ausgangswarteschlange 74 des Anschlusses liest, plant sie den Ablauf der Übertragung wie zuvor diskutiert. Die Pufferverwaltung 72 verwendet die Rahmenzeiger, um den ersten Puffer in dem externen Speicher 36 zu lokalisieren, in dem der Rahmen gespeichert ist. Die Pufferverwaltung 72 liest den Kopf des Puffers aus diesem ersten Puffer, erfasst Daten von diesem ersten Puffer und platziert diese Daten in dem entsprechenden MAC Sende FIFO 54. Die Verknüpfungen zu nachfolgenden Puffern, angenommen, dass der Rahmen sich über mehrere Puffer erstreckt, versorgt die Pufferverwaltung 72 mit der zu findenden Adresse und versendet alle der Puffer in der Kette für diesen Rahmen. Sobald die Daten zur Versendung in dem FIFO 54 platziert worden sind, wird der Puffer veraltet und wird an den freien Pufferpool 104 zurückgegeben für eine letztendliche erneute Zuweisung, um Daten eines anderen Rahmens zu speichern.
  • Wenn die Kopieanzahl größer als 1 ist, kopiert der Anschlussvektor FIFO 70 den Rahmenzeiger, den VLAN Index und Steuersignale/Steuer Opcode zu jeder der entsprechenden Ausgangswarteschlangen 74. (Wenn auf die Ausgangswarteschlange 74 verwiesen wird, ist auch Bezug genommen auf die Ausgangswarteschlangen 75, 77). Der Anschlussvektor FIFO 70 löscht das Einfachkopie Bit für die entsprechenden Rahmenzeiger in den Ausgangswarteschlangen 74 und platziert den Rahmenzeiger mit einer Kopieanzahl von "> 1" in der Schreibseite 92 der Mehrfachkopie Warteschlange 90.
  • Wann immer die Pufferverwaltung 72 einen Rahmenzeiger und ein gelöschtes Einfachkopie Bit von einer der Ausgangswarteschlangen 74 liest, plant die Pufferverwaltung 72 den Ablauf der Versendung des Rahmens, aber überprüft auch den Mehrfachkopie Cachespeicher 96 auf einen Eintrag mit einem Rahmenzeiger, der eine Kopieanzahl von "1" hat. Falls ein Rahmenzeiger mit einer Kopieanzahl von "1" in dem Mehrfachkopie Cachespeicher 96 gefunden wird, plant dann die Pufferverwaltung 72 den Rahmen für die Versendung und fordert die Puffer während der Versendung auf die gleiche Weise zurück wie bei der Einfachkopie Versendung eines Rahmens. Falls jedoch der Rahmenzeiger nicht in dem Mehrfachkopie Cachespeicher 96 ist oder die Kopieanzahl des Rahmenzeigers in dem Mehrfachkopie Cachespeicher 96 größer als 1 ist, sendet dann die Pufferverwaltung 72 den Rahmen, aber fordert nicht die Puffer zurück. Nach einer erfolgreichen Versendung platziert die Pufferverwaltung 72 eine Kopie des Rahmenzeigers zusammen mit einer Kopieanzahl von "–1" in der Schreibseite 92 der Mehrfachkopie Warteschlange 90.
  • Jedes Mal, wenn ein Mehrfachkopie Rahmen versendet wird, platziert die Pufferverwaltung 72 eine Kopie des Rahmenzeigers in der Mehrfachkopie Warteschlange 90, vorausgesetzt die Pufferverwaltung 72 findet nicht den Rahmenzeiger in dem Mehrfachkopie Cachespeicher 96 mit einer Kopieanzahl von "1". Daher kann die Mehrfachkopie Warteschlange 90, zu jedem beliebigen Zeitpunkt, den Rahmenzeiger mit einer Kopieanzahl, die "> 1" ist, und/oder meh rere Kopien des gleichen Rahmenzeigers, jede mit einer Kopieanzahl von "–1", enthalten.
  • Die Pufferverwaltung 72 bedient konstant die Mehrfachkopie Warteschlange 90 und den Mehrfachkopie Cachespeicher 96, um veraltete Puffer zurück zu fordern. Wenn sie die Mehrfachkopie Warteschlange 90 bedient und einen Rahmenzeiger mit einer Kopieanzahl von "–1" liest, versucht die Pufferverwaltung 72 diesen neuen Eintrag (Rahmenzeiger und Kopieanzahl) in dem Mehrfachkopie Cachespeicher 96 zu platzieren. Falls der Mehrfachkopie Cachespeicher 96 voll ist, macht die Pufferverwaltung 72 Platz für den neuen Rahmenzeiger. Die Pufferverwaltung 72 liest einen "älteren" Eintrag in dem Mehrfachkopie Cachespeicher, aktualisiert die Kopieanzahl für diesen Eintrag in seinem Pufferkopf in dem externen Speicher 36, löscht dann den Eintrag aus dem Mehrfachkopie Cachespeicher 96. Wenn Platz in dem Mehrfachkopie Cachespeicher 96 verfügbar wird, ist die Pufferverwaltung 72 fähig, den neuen Eintrag aus der Mehrfachkopie Warteschlange 90 in dem Mehrfachkopie Cachespeicher 96 zu platzieren.
  • Wenn die Pufferverwaltung 72 die Mehrfachkopie Warteschlange 90 bedient und einen Rahmenzeiger mit einer Kopieanzahl von "–1" liest, durchsucht sie den Mehrfachkopie Cachespeicher 96 auf der Suche nach einer übereinstimmenden Rahmenzeigeradresse mit einer Kopieanzahl von "> 1", um diese hoch zu zählen oder zu löschen. Falls die Pufferverwaltung 72 eine Übereinstimmung eines Rahmenzeigers findet, wird die Pufferverwaltung 72: 1) den Rahmenzeiger des Mehrfachkopie Cachespeichers runter zählen, wenn die Kopieanzahl "> 1" ist 0 der 2) den Rahmenzeiger/Kopieanzahl Eintrag des Mehrfachkopie Cachespeichers löschen und den Rahmenzeiger in der Rückforderungswarteschlange 98 platzieren, falls die Kopieanzahl "1" ist.
  • Falls die Pufferverwaltung 72 keinen übereinstimmenden findet, durchsucht die Pufferverwaltung 72 den Pufferkopf des Rahmenzeigers in dem externen Speicher 36 (siehe 9) nach der Kopieanzahl. Falls die Kopieanzahl in dem Speicher "1" ist, platziert die Pufferverwaltung 72 den Rahmenzeiger in der Rückforderungswarteschlange 98. Falls die Kopieanzahl in dem Speicher "> 1" ist, platziert die Pufferverwaltung 72 den Rahmenzeiger mit dieser Kopieanzahl in dem Mehrfachkopie Cachespeicher 96, zählt dann die Kopieanzahl runter.
  • Die Pufferverwaltung 72 bedient die Rückforderungswarteschlange 98 konstant durch das Lesen von Rahmenzeigern, dann "laufen lassen" der verknüpft gelisteten Kette, um Puffer zu dem freien Pufferpool 104 zurück zu geben. Diese Aktivität gibt nur Puffer für Rahmen zurück, die einen Null Anschlussvektor hatten und von dem Anschlussvektor FIFO 70 in der Rückforderungswarteschlange eingereiht waren, oder Rahmen mit einem Mehrfachkopie Weiterleitungsvektor und die die Versendungen von allen der Kopien abgeschlossen haben. Puffer, die für Einfachkopie Rahmen verknüpft sind, werden direkt zu dem freien Pufferpool 104 zurück gegeben, wenn der Rahmen gesendet wird, wie oben beschrieben.
  • Falls der Anschlussvektor FIFO 70 nicht fähig ist, einen Rahmenzeiger für einen Einfachkopie Weiterleitungsvektor in einer Ausgangswarteschlange 74 zu platzieren, weil diese Ausgangswarteschlange 74 und ihr Überlaufbereich 110 in dem externen Speicher 36 voll sind, wird der Rahmen verworfen. Der Rahmenzeiger wird an die Rückforderungswarteschlange 98 zurück gegeben und das Verwerfen des Rahmens wird von den Verwaltungsressourcen des Switches notiert. Falls der Anschlussvektor FIFO 70 nicht fähig ist, einen oder mehrere Rahmenzeiger für eine einen Multikopie Weiterleitungsvektor in eine Ausgangswarteschlange 74 zu platzieren, weil eine oder mehrere Ausgangswarteschlangen 74 und ihre Überlaufbereiche 110 in dem externen Speicher 36 voll sind, wird der Rahmen nur an die Ausgangswarteschlangen mit verfügbarem Platz weiter geleitet und die in der Mehrfachkopie Warteschlange 90 platzierte Kopieanzahl wird lediglich die erfolgreich platzierten Rahmenzeiger berücksichtigen. Das nicht Platzieren der Rahmenzeiger wird von den Verwaltungsressourcen des Switches für jeden der Anschlüsse notiert, für den der Rahmenzeiger nicht in die Warteschlange eingereiht werden konnte. Falls der Anschlussvektor FIFO 70 nicht fähig ist, einen beliebigen der Rahmenzeiger für einen Mehrfachkopie Weiterleitungsvektor zu platzieren, weil alle der Ausgangswarteschlangen 74 und ihre Überlaufbereiche 110 in dem externen Speicher 36 voll sind, wird der Rahmenzeiger an die Rückforderungswarteschlange 98 weiter geleitet und die Verwaltungsressourcen des Switches werden angemessen informiert.
  • Die Mehrfachkopie Warteschlange 90 ist eine Warteschlange mit hoher Priorität, die von der Pufferverwaltung 72 verwendet wird, um zu verfolgen wie viele Versendungen eines bestimmten Mehrfachkopie Rahmens abgeschlossen werden müssen bevor alle Puffer (das heißt Adresszeiger), die zur Speicherung des Rahmens verwendet werden, an den freien Pufferpool 104 zurück gegeben werden können. Die Schreibseite 92 und die Leseseite 94 von dieser Ausgangswarteschlange halten 64 beziehungsweise 16 Einträge. Die Mehrfachkopie Warteschlange 90 beliefert den Mehrfachkopie Cachespeicher 96, der von der Pufferverwaltung 72 verwendet wird, um festzustellen, wann Puffer zurück gefordert werden. Die interne Struktur der Mehrfachkopie Warteschlange ist in Fig. Switch 12 dargestellt.
  • Der Anschlussvektor FIFO 70 platziert eine Kopie eines Rahmenzeigers und einer Kopieanzahl, die "> 1" ist, des Rahmens, basierend auf der Anzahl der Rahmenzeiger, die er erfolgreich in den Ausgangswarteschlangen 74, in die Mehrfachkopie Warteschlange 90 platziert hat. Falls eine Ausgangswarteschlange 74 eines bestimmten Anschlusses voll ist, kann der Anschlussvektor FIFO 70 nicht eine Kopie des Rahmenzeigers in die Ausgangswarteschlange 74 speichern: daher kann er dies nicht als ein erfolgreiches Ereignis für die Bestimmung der Kopieanzahl einschließen.
  • Jedes Mal wenn die Pufferverwaltung 72 einen Rahmenzeiger einer Ausgangswarteschlange liest und bemerkt, dass das Einfachkopie Bit "0" ist, (das heißt eine Mehrfachkopie), dann überprüft sie den Mehrfachkopie Cachespeicher auf den Rahmenzeiger mit einer Kopieanzahl von "1", was anzeigt, dass dies die letzte Versendung ist. Falls diese Übereinstimmung gefunden wird, sendet die Pufferverwaltung 72 den Rahmen und fordert die Puffer auf die gleiche Weise zurück, wie bei der Einfachkopie Versendung, durch bereit stellen der veralteten Puffer an den freien Pufferpool 104 nach der Versendung der Inhalte jedes Puffers. Falls keine Übereinstimmung gefunden wurde, sendet die Pufferverwaltung 72 den Mehrfachkopie Rahmen und platziert eine Kopie des Rahmenzeigers mit einer Kopieanzahl von "–1" in der Mehrfachkopie Warteschlange 90. Wenn ein Host die Benutzung eines Mehrfachkopie Rahmenzeigers für einen Rahmen abgeschlossen hat, der in der Erweiterungsbus Ausgangswarteschlange 75 oder der Ausgangswarteschlangen 77 (über die PCI Schnittstelle 26) eingereiht war, schreibt der Host eine Kopie des Rahmenzeigers mit einer Kopieanzahl von "–1" durch ein Rahmenzeigerregister in die Mehrfachkopie Warteschlange. Dieses Register ist eines der in dem Block von Registern 60 in 2 dargestellten Registern.
  • Ähnlich wie bei den Ausgangswarteschlangen 74 ist die Mehrfachkopie Warteschlange 90 mit einem Eingangspfad und einem Ausgangspfad strukturiert. Der Eingangspfad, oder die Schreibseite, erlaubt dem Anschlussvektor FIFO 70 und der Pufferverwaltung, die Rahmenzeiger/Kopieanzahlen in der Mehrfachkopie Warteschlange 90 zu platzieren. Der Ausgangspfad, oder die Leseseite, erlaubt der Mehrfachkopie Warteschlange 90, die Rahmenzeiger/Kopieanzahlen in dem Mehrfachkopie Cachespeicher 96 zu platzieren. Zusätzlicher Speicherplatz für Rahmenzeiger/Kopieanzahlen, der Mehrfachkopiewarteschlange Überlauf 124 genannt, ist in dem externen Speicher 36 zur Verfügung gestellt.
  • Wenn Rahmenzeiger/Kopieanzahlen in eine leere Mehrfachkopie Warteschlange 90 geschrieben werden, passieren sie von der Schreibseite 92 zu der Leseseite 94, bis die Leseseite 94 voll ist. Weitere an die Schreibseite 92 der Mehrfachkopie Warteschlange 90 geschriebene Rahmenzeiger/Kopieanzahlen werden in dem Mehrfachkopiewarteschlange Überlauf 124 in dem externen Speicher 36 platziert. Sobald die Leseseite 94 der Mehrfachkopie Warteschlange 90 und ihr Überlaufbereich 124 voll sind, fangen zusätzliche in der Mehrfachkopie Warteschlange platzierte Rahmenzeiger/Kopieanzahlen an, die Schreibseite 92 zu füllen.
  • Die Ordnung der Rahmenzeiger, welche durch die Mehrfachkopie Warteschlange 90 passieren, wird beibehalten, so dass, wenn Platz in der Leseseite 94 der Mehrfachkopie Warteschlange frei wird, die Rahmenzeiger/Kopieanzahlen von dem Mehrfachkopiewarteschlange Überlauf 124 in die Leseseite 94 der Mehrfachkopie Warteschlange und von der Schreibseite 92 der Mehrfachkopie Warteschlange zu dem Mehrfachkopiewarteschlange Überlauf 124 bewegt werden.
  • Der Mehrfachkopie Cachespeicher 96 ist ähnlich zu der Mehrfachkopie Warteschlange 90, aber stellt ein durchsuchbaren Bereich zum Abtasten von Rahmenzeiger/Kopieanzahlen zur Verfügung. Der Mehrfachkopie Cachespeicher 96 hält bis zu 256 Einträge. Die Pufferverwaltung 72 liest einen Rahmenzeiger von der Mehrfachkopie Warteschlange 90 und platziert ihn entweder in dem Mehrfachkopie Cachespeicher 96 oder bearbeitet ihn, abhängig davon, ob die Kopieanzahl "< 1" oder "–1" ist.
  • Des weiteren plant die Pufferverwaltung 72, jedes Mal, wenn die Pufferverwaltung 72 einen Rahmenzeiger von der Leseseite 78 einer Ausgangswarteschlange 74 liest, den Ablauf der Versendung. Falls das Einfachkopie Bit "0" ist (was einen Mehrfachkopie Rahmen bedeutet), tastet die Pufferverwaltung 72 den Mehrfachkopie Cachespeicher 96 nach einem Rahmenzeiger mit einer Kopieanzahl von "1" ab, was anzeigt, das dies die letzte Versendung dieses Rahmens ist, Falls eine Übereinstimmung da ist, entfernt die Pufferverwaltung 72 den Eintrag und gibt die Puffer während der Absendung des Rahmens an den freien Pufferpool zurück. Falls keine Übereinstimmung da ist, platziert die Pufferverwaltung 72 den Rahmenzeiger mit einer Kopieanzahl von "–1" in der Mehrfachkopie Warteschlange 90 nach der Beendigung der Absendung.
  • Periodisch bedient die Pufferverwaltung 72 die Mehrfachkopie Warteschlange 90 durch Lesen eines Rahmenzeigers/Kopieanzahl und platziert sie in dem Mehrfachkopie Cachespeicher 96 oder verarbeitet sie. Dies geschieht unabhängig von der Absendung des Rahmens. Zwei Fälle folgen, abhängig davon, ob die Pufferverwaltung einen Rahmenzeiger mit einer Kopieanzahl von "> 1" oder "–1" liest:
    • 1) Die Pufferverwaltung 72 liest einen Rahmenzeiger mit einer Kopieanzahl von "> 1" aus der Mehrfachkopie Warteschlange 90. Angenommen es ist Platz in dem Mehrfachkopie Cachespeicher 96, schreibt sie einen neuen Eintrag. Falls die Mehrfachkopie Cachespeicher 96 voll ist, muss die Pufferverwaltung 72 Platz in dem Mehrfachkopie Cachespeicher 96 frei machen. Dies geschieht durch Lesen eines der älteren Rahmenzeiger/Kopieanzahlen aus dem Mehrfachkopie Cachespeicher 96, aktualisieren des Pufferkopfes des Rahmenzeigers in dem externen Speicher 36 mit der Kopieanzahl in dem Mehrfachkopie Cachespeicher 96, dann löschen dieses Eintrags des Cachespeichers. Sobald dort Platz ist, wird der neue Rahmenzeiger/Kopieanzahl in den Mehrfachkopie Cachespeicher 96 geschrieben.
    • 2) Die Pufferverwaltung 72 liest einen Rahmenzeiger mit einer Kopieanzahl von "–1" aus der Mehrfachkopie Warteschlange 90. Die Pufferverwaltung 72 durchsucht den Mehrfachkopie Cachespeicher 96 nach einem übereinstimmenden Rahmenzeiger mit einer Kopieanzahl "> = 1". Zwei Fälle folgen, abhängig davon, ob die Pufferverwaltung 72 einen Rahmenzeiger in dem Mehrfachkopie Cachespeicher 96 findet, der überein stimmt:
    • a) Die Pufferverwaltung 72 findet eine Übereinstimmung des Rahmenzeigers. Falls die Kopieanzahl des Eintrags des Mehrfachkopie Cachespeichers 96 "1" ist, löscht die Pufferverwaltung 72 den Eintrag des Mehrfachkopie Cachespeicher und platziert den Rahmenzeiger in der Rückforderungswarteschlange 98. Falls die Kopieanzahl des Eintrags des Cachespeichers "> 1" ist, zählt die Pufferverwaltung 72 die Kopieanzahl um "1" runter.
    • b) Die Pufferverwaltung 72 findet keine Übereinstimmung des Rahmenzeigers. Dies bedeutet, dass der überein stimmende Rahmenzeiger zuvor zu dem Kopf des Puffers der verknüpft gelisteten Kette des Rahmens in dem externen Speicher 36 bewegt worden ist. Die Pufferverwaltung 72 muss zu dem Kopf des Puffers gehen und die Kopieanzahl auslesen. Falls dieser Wert (in dem Speicher) "1" ist, wird der Rahmen nicht länger benötigt und die Pufferverwaltung 72 platziert den Rahmenzeiger in der Rückforderungswarteschlange 98. Falls dieser Wert (in dem Speicher) "> 1" ist, platziert die Pufferverwaltung 72 eine Kopie des Rahmenzeigers/Kopieanzahl (der in dem externen Speicher 36 war) in dem Mehrfachkopie Cachespeicher 96 und zählt die Kopieanzahl um "1" runter. Falls der Mehrfachkopie Cachespeicher 96 voll ist, macht die Pufferverwaltung Platz durch Bewegen einer der älteren Rahmenzeiger/Kopieanzahlen in den externen Speicher 36.
  • Die Rückforderungswarteschlange 98 hält die Rahmenzeiger zu den verknüpft gelisteten Ketten, die nicht länger benötigt werden. Die Pufferverwaltung 72 schreibt einen Rahmenzeiger an die Rückforderungswarteschlange, wenn sie den Mehrfachkopie Cachespeicher bedient und entdeckt, dass die Kopieanzahl eines Rahmenzeigers "1" ist (das heißt die letzte Absendung des Rahmens ist erfolgreich abgeschlossen). Des weiteren schreibt der Anschlussvektor FIFO 70 unter den folgenden Bedingungen Rahmenzeiger an die Rückforderungswarteschlange 98: 1) der Anschlussvektor eines Rahmenzeigers ist voll oder 2) der Rahmenzeiger konnte nicht in eine Warteschlange eingereiht werden, weil alle der Ausgangswarteschlangen des Weiterleitungsvektors voll sind. Schließlich schreibt der Host einen Rahmenzeiger an die Rückforderungswarteschlange 98 (unter Benutzung des Rahmenzeigerregisters), wenn er die Benutzung eines Einfachkopie Rahmens abgeschlossen hat, der in die Erweiterungsbus Ausgangswarteschlange 77 oder die Verwaltungsanschluss Warteschlange 75 eingereiht war.
  • Wenn die Pufferverwaltung 72 die Einträge der Rückforderungswarteschlange bearbeitet, lässt die verknüpft gelistete Kette eines Rahmenzeigers laufen, um jeden Puffer zu dem freien Pufferpool 104 zurück zu geben. Die interne Struktur dieser Rückforderungswarteschlangenstruktur ist nicht dargestellt, enthält aber in dem beispielhaften Ausführungsbeispiel der Erfindung lediglich die Rahmenzeiger (14 Bits). Die Schreibseite 100 der Rückforderungswarte schlange hält 64 Einträge und die Leseseite 102 der Rückforderungswarteschlange hält 16 Einträge.
  • Ähnlich wie die Ausgangswarteschlangen 74 ist die Rückforderungswarteschlange 98 mit einem Eingangspfad und einem Ausgangspfad strukturiert. Der Eingangspfad, oder die Schreibseite 100, erlaubt der Pufferverwaltung 72, die Rahmenzeiger in der Rückforderungswarteschlange 98 zu platzieren. Der Ausgangspfad, oder die Leseseite 102, erlaubt der Pufferverwaltung 72, einen Rahmenzeiger zu lesen und all dazu gehörigen Puffer in den freien Pufferpool 104 zurück zu geben. Zusätzlicher Speicherplatz für Rahmenzeiger wird in dem Rückforderungswarteschlange Überlaufbereich 122, der in dem externen Speicher 36 vorgesehen ist, zur Verfügung gestellt.
  • Wenn Rahmenzeiger in eine leere Rückforderungswarteschlange 98 geschrieben werden, passieren sie von der Schreibseite 100 zu der Leseseite 102, bis die Leseseite 102 voll ist. Weitere in die Schreibseite 100 der Rückforderungswarteschlange 98 geschrieben Rahmenzeiger werden in dem Rückforderungswarteschlange Überlaufbereich 122 in dem externen Speicher 36 platziert. Sobald die Leseseite 102 und der Überlaufbereich 122 der Rückforderungswarteschlange 98 voll sind, fangen weitere in der Rückforderungswarteschlange 98 platzierte Rahmenzeiger an, die Schreibseite 100 zu füllen.
  • 11 stellt ein beispielhaftes Ausführungsbeispiel der internen Struktur des freien Pufferpools 104 dar. Der freien Pufferpool 104 ist ein FIFO, der Adresszähler auf alle freien Puffer 140 in dem externen Speicher 36 enthält. Wenn Rahmen empfangen werden, liest die Pufferverwaltung 72 die zur Verfügung stehenden Adresszeiger aus dem freien Pufferpool 104 aus, um eingehende Daten zu speichern. Die Pufferverwaltung 72 weist auch Adresszeiger aus dem freien Pufferpool 104 an den Host Prozessor 28 zu (wenn angefordert). Der Host kann Rahmenzeiger anfordern oder an den freien Pufferpool 104 zurück geben, indem ein freier Pufferpool Register unter den Registern 60 im direkten Eingangs/Ausgangsraum gelesen oder geschrieben wird. Die Schreibseite 106 und die Leseseite 108 des freien Pufferpools 104 halten in einem beispielhaften Ausführungsbeispiel dieser Erfindung jeweils 64 Einträge.
  • Der freie Pufferpool 104 ist mit einem Eingangspfad und einem Ausgangspfad strukturiert (ähnlich wie die Ausgangswarteschlangen 74). Der Eingangspfad, oder die Schreibseite 106, erlaubt der Pufferverwaltung 72 oder dem Host 28, die Adresszeiger in dem freien Pufferpool 104 zu platzieren. Der Ausgangspfad, oder die Leseseite 108 des freien Pufferpools 104 erlaubt der Pufferverwaltung 72, dem Host 28 Adresszeiger zur Verfügung zu stellen, oder Adresszeiger aus dem Pool 104 zu ziehen, um Empfangsrahmendaten zu speichern. Zusätzlichen Speicherplatz für zur Verfügung stehende Adresszeiger, der freier Pufferpool Überlaufbereich 120, wird wie zuvor beschrieben, in dem externen Speicher 36 zur Verfügung gestellt.
  • Nach dem Einschalten des Switches 12 erzeugt der freien Pufferpool Adresszeiger aus der Leseseite 108. Mit ankommenden Rahmen, wird die freie Liste in dem freien Pufferpool 104 gelesen. Falls nicht ausreichend Pufferzeiger in der Schreibseite 106 vorhanden sind, um die Anforderungen des Verkehrs zu behandeln, wird auf den Überlaufbereich 120 zugegriffen, um mehr Pufferzeiger zu erhalten.
  • Gewisse Ausführungsbeispiele der vorliegenden Erfindung stellen eine vorteilhafte Anordnung und ein Verfahren zum Bereitstellen von Pufferzeigern auf das Einschalten des Switches 12 zur Verfügung. Wenn der Switch 12 zuerst hochfährt, ist es für den Überlaufbereich 120 in dem externen Speicher 36 nicht erforderlich, Pufferzeiger zu enthalten. Stattdessen werden die Pufferzeiger im Betrieb erzeugt. Der Switch 12 könnte bei dem Hochfahren die Pufferzeiger erzeugen und in dem Überlaufbereich 120 platzieren, aber es könnten 16.000 oder 32.000 derartiger Zeiger sein, und dies würde die Prozedur des Hochfahrens des Switches 12 verlangsamen. Die vorliegende Erfindung nimmt Vorteil aus der Tatsache, dass bei dem Einschalten alle der Puffer frei sind und die Identitäten aller dieser Puffer bekannt sind. Daher werden die Pufferzeiger nach dem Hochfahren erzeugt, wie sie benötigt werden, unter Benutzung eines Zählers 180, wie in 10 dargestellt.
  • Der freie Liste Zählererzeuger 180 ist mit dem Eingang eines Multiplexers 182 verbunden. Da die freie Liste in dem freien Pufferpool 104 bei dem Hochfahren leer ist, erzeugt der freie Liste Zählererzeuger 180 die Pufferzeiger. Sobald die freie Liste den höchsten Zähler erreicht, wird er keine Pufferzeiger mehr erzeugen.
  • Wenn ein Rahmenpaket in dem Switch 12 empfangen wird, wird das Paket in Puffer mit fester Länge aufgebrochen. Typischerweise variieren die Rahmen in der Größe. Die Puffer sind 256 Byte in der Größe und der Datenbereich der Puffer ist Ladeeinheit 240 Byte. Folgend auf die Absendung der Inhalte in einem Puffer werden die Pufferzeiger in die Rückforderungswarteschlange 98 oder, falls die Pufferkette laufen gelassen werden kann, direkt in die freie Liste des freien Pufferpools 104 gesetzt. Während des Betriebs des Switches 12 passiert jeder von dem freien Pufferpool 104 zurück gegebene Adresszeiger von der Schreibseite 106 zu der Leseseite 108. Falls die Leseseite 108 voll wird, werden zusätzliche Adresszeiger an den Überlaufbereich 120 weiter gegeben. Sobald die Leseseite 108 und der Überlaufbereich 120 voll sind, fangen weitere, in dem freien Pufferpool 104 platzierte Adresszeiger an, die Schreibseite 106 des freien Pufferpools 104 wieder zu füllen.
  • 13 stellt eine schematische Darstellung der internen Anordnung des Mehrfachkopie Cachespeichers 96 in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung dar. Wie vorher kurz diskutiert wird die zeitliche Reihenfolge der Einträge in dem Mehrfachkopie Cachespeicher 96 beibehalten. Bei der vorliegenden Erfindung geschieht diese Beibehaltung der zeitlichen Ordnung nicht durch Zeitstempeln wie in dem Stand der Technik, sondern durch die physikalische Reihenfolge in dem Speicher. Der Mehrfachkopie Cachespeicher 96 der vorliegenden Erfindung vermeidet auch die Verwendung von Gültig Bits und kodiert stattdessen die Gültigkeit, wie diskutiert werden wird.
  • Bezug nehmend auf 13 ist der Mehrfachkopie Cachespeicher 96 als vier Weg Satz assoziativer Speicher konfiguriert. Ein Eintrag in dem Mehrfachkopie Cachespeicher 96 enthält wie zuvor beschrieben einen Rahmenzeiger und sein Kopieanzahl. Die niedrigsten sechs Bit des Rahmenzeigers bestimmen die Zeile in dem Satz assoziativen Cachespeicher 96, in dem der Eintrag gespeichert wird. In dem dargestellten Ausführungsbeispiel der Erfindung sind vierundsechzig Zeilen in dem Cachespeicher 96, obwohl andere Anzahlen von Zeilen nicht begrenzt sind, solange die Größe des Cachespeichers größer gemacht wird.
  • Der Satz assoziativer Cachespeicher 96 ist in vier Spalten unterteilt, von denen jede parallel durchsucht werden kann. Wenn die Pufferverwaltung 72 einen Eintrag in dem Cachespeicher 96 speichert, tritt der Eintrag immer in die erste Spalte ein, die obersten (51 : 39) Bits der Zeile werden von den sechs niedrigstwertigen Bits des Rahmenzeiger angezeigt. Die Zeile wird gelesen, alle der Einträge werden um 13 Bits nach rechts geschoben und die Zeile wird zurück geschrieben. Der Eintrag, der tatsächlich in den Cachespeicher 96 geschrieben wird, enthält die oberen acht Bits des Rahmenzeigers, die eine Adressmarkierung bilden, und die fünf Bit Kopieanzahl, die zu dem Rahmenzeiger gehört. Wenn der Eintrag aus dem Cachespeicher 96 ausgelesen wird, wird der Rahmenzeiger mit der Adressmarkierung und den Bits neu gebildet, welche die Zahl der Zeile des Cachespeichers 96 indizieren.
  • Der älteste Eintrag in dem Cachespeicher 96 wird aus dem Cachespeicher 96 entfernt, wenn die Zeile voll ist und ein neuer Eintrag in die Zeile geschrieben wird. Wie zuvor im Hinblick auf die Köpfe des Puffers 142 beschrieben, wird die Kopieanzahl, die zu dem Rahmenzeiger gehört, der entfernt wird, in den Kopf des Puffers 142 des Rahmens in dem externen Speicher geschrieben, auf den von dem entfernten Rahmenzeiger gezeigt wurde. Daher dienen die in dem externen Speicher 36 gespeicherten Rahmen (das heißt die Puffer 140) als ein Überlaufbereich für den Cachespeicher 96, um Kopieanzahlen zu speichern.
  • Einer der Vorteile der vorliegenden Erfindung ist, dass in dem Satz assoziativen Cachespeicher 96 kein separates Gültig Bit ist. Wenn die Kopieanzahl 000 ist, dann weiß die Pufferverwaltung 72, dass der Eintrag nicht länger gültig ist und entfernt den Eintrag aus dem Cachespeicher 96. Dies vereinfacht die Organisation des Cachespeichers. Ein weiterer Vorteil des Cachespeichers 96 der vorliegenden Erfindung ist, dass er die Durchführung einer sehr schnellen Suche erlaubt, weil die Pufferverwaltung 72 nur eine einzelne Zeile untersuchen muss, die bereits von dem Rahmenzeiger bestimmt, der die Mehrfachkopie Warteschlange 90 verlassen hat. Die vier Einträge in der Zeile werden parallel untersucht, was die Geschwindigkeit der Sucher weiter erhöht. Obwohl als ein vier Weg Satz assoziativer Speicher beschrieben, ist dies lediglich beispielhaft, da der Speicher n Weg Satz assoziativ sein kann ohne von dem Umfang der Erfindung abzuweichen.
  • Aus der obigen Beschreibung sollte verstanden werden, dass die vorliegende Erfindung eine zeitliche Ordnung (Alter) der Einträge des Cachespeichers durch eine physikalische Positionierung der Einträge in dem Cachespeicher auf einer zeilenbasierten Basis beibehält. Anders ausgedrückt ist die physikalische Position eines Eintrags in dem Cachespeicher ein Hinweis auf das relative Alter des Eintrags. Das Altern eines Eintrags wird durchgeführt durch ein physikalisches Umordnen der Einträge in dem Speicher.
  • Gewisse Ausführungsbeispiele der vorliegenden Erfindung stellen eine Anpassung der Latenz der Rahmen, die von dem Switch 12 geschaltet werden, auf Basis Anschluss für Anschluss zur Verfügung. Bezug nehmend auf Figur Netzwerkstationen 14 untersucht der Anschlussvektor FIFO 70 den programmierten Schaltmodus des Empfangsanschlusses, um festzustellen, wann der Rahmenzeiger und dazu gehörige Information in der geeigneten Ausgangswarteschlange 74 des Sendeanschlusses zu platzieren sind. Für einen ersten Modus (niedrig Latenz Modus) hat der Anschlussvektor FIFO 70 keine Beschränkungen, wann der Rahmenzeiger in die Ausgangswarteschlange(n) 74 zu platzieren ist. Für einen zweiten Modus (mittel Latenz Modus) platziert der An schlussvektor FIFO 70 den Rahmenzeiger nur in die Ausgangswarteschlange(n) 74, nachdem 64 Bytes des Rahmens empfangen worden sind. Für einen dritten Modus (hoch Latenz Modus) platziert der Anschlussvektor FIFO 70 den Rahmenzeiger nur in die Ausgangswarteschlange(n) 74, nachdem der Rahmen vollständig empfangen worden ist.
  • Es gibt einige spezielle Fälle, die den zeitlichen Ablauf ändern, wenn der Anschlussvektor FIFO 70 die Rahmenzeiger an die Ausgangswarteschlangen 74 weiterleiten: 1) weiterleiten von Rahmen von einem ersten oder zweiten Modus 10 Mb/s-Anschluss zu einem 100 Mb/s-Anschluss; 2) weiterleiten von Rahmen an den Verwaltungsanschluss 30 und 3) weiterleiten von Rahmen an den Anschluss für den Erweiterungsbus. Bei dem Fall 1) zwingt die fehlende Übereinstimmung des 10 Mb/s-Anschlusses zu dem 100 Mb/s-Anschluss den Modus der Weiterleitung, der dritte, hoch Latenz Modus zu sein. Für den Fall 2) sind alle an den Verwaltungsanschluss weiter geleiteten Rahmen Rahmen im dritten Modus. Im Fall 3) verwendet jegliche Weiterleitung von Rahmen an den Anschluss für den Erweiterungsbus den Schaltungsmodus des Anschlusses für den Erweiterungsbus 26. Wenn ein Mehrfachkopie Anschlussvektor einen der Anschlüsse der speziellen Fälle enthält, wird die Einreihung der Rahmenzeiger in die Warteschlange für den gesamten Anschlussvektor diejenige des Schaltmodus mit der längsten in dem Anschlussvektor repräsentierten Latenz. Zum Beispiel ist, falls ein Rahmen von einem Anschluss im ersten oder zweiten Modus empfangen wird, aber sein Mehrfachkopie Weiterleitung Anschlussvektor den Verwaltungsanschluss 30 enthält, ist der Schaltmodus der dritte Modus. In dieser Situation wird eine Kopie des Rahmenzeigers nur in allen der Ausgangswarteschlangen 74 platziert, nachdem der Rahmen vollständig empfangen worden ist.
  • Die Schaltmodi werden nun detaillierter beschrieben werden. Der Schaltmodus, der auf den Eingangs (das heißt Empfangs) Anschluss zutrifft bestimmt die Latenz der Weiterleitung (wie schnell der Switch 12 einen Rahmen weiterleitet, sobald er anfängt, den Rahmen zu empfangen) und die Fähigkeit, die Fragment/Fehlerausbreitung an Ausgangsanschlüsse zu reduzieren. Der zwei te, mittel Latenz Modus ist der Vorgabemodus für jeden Anschluss; jedoch die der Schaltmodus auf einer pro Anschluss Basis in den Registern 60 programmierbar.
  • In allen der drei Modi werden an dem Empfangs FIFO 52 des internen MAC Anschlusses empfangene Rahmendaten zu einem Puffer 140 in dem externen Speicher 52 so schnell wie möglich weiter geleitet. Zu etwa der gleichen Zeit empfängt der Regelüberprüfer 42 oder 58 die Zieladresse und die Quelladresse, die Nummer des Empfangsanschlusses, die Rahmenzeiger und einige zusätzliche Information, führt dann das entsprechende Nachschlagen durch. Sobald das Nachschlagen abgeschlossen ist, gibt der Regelüberprüfer 42 oder 58 die Rahmenzeiger und den Weiterleitung Anschlussvektor an den Anschlussvektor FIFO 70 zurück.
  • Der Anschlussvektor FIFO 70 platziert den Rahmenzeiger in der Schreibseite 76 der Ausgangswarteschlangen 74 für den/die in dem Anschlussvektor identifizierten Ausgangsanschlüsse. Der Schaltmodus des Empfangsanschlusses definiert die Latenz zwischen wann der Anschlussvektor FIFO 70 den Anschlussvektor empfängt (und dem Rahmenzeiger) und platziert den Rahmenzeiger in den Ausgangswarteschlange(n) 74. Dies wird folgend für die drei Modi beschrieben. Sobald der Rahmenzeiger zu der Leseseite 78 der Ausgangswarteschlangen 74 wechselt, liest die Pufferverwaltung 72 den Rahmenzeiger und plant den Ablauf der Absendung. Die Pufferverwaltung 72 fängt an, die Rahmendaten von der durch den Rahmenzeiger angegebenen Adresse zu bewegen. Sobald der Sende FIFO 54 des MAC Anschlusses an seinen Startpunkt vorbereitet ist (und angenommen das Medium steht für die Absendung von Daten zur Verfügung) fängt die Absendung des Rahmens an.
  • Der erste Modus ist vorgesehen, um die niedrigste Latenz zur Verfügung zu stellen. Rahmen werden mit einer Geschwindigkeit auf Basis der Zeilenrate empfangen. In diesem ersten Modus gibt es keine Schutz vor Netzwerkfehlern, weil ein Rahmen für die Versendung in die Warteschlange eingereiht wird, bevor bestimmt werden kann, ob der Rahmen ein Fragment ist (das heißt < 64 Byte in der Länge) oder einen CRC Fehler hat. In dem ersten Modus könnte der Empfang des Rahmens noch nicht abgeschlossen sein, bevor die Absendung des Rahmens an dem/den Ausgangsanschlüssen anfängt. Falls ein Empfangsrahmen in einem runt oder mit einem ungültigen CRC endet, markiert das Empfangs MAC den Kopf des Puffers 142 in dem externen Speicher externen Speicher 36, um diese Bedingungen anzuzeigen. Das Sende MAC garantiert, dass, wenn die Absendung mit einem Rahmen anfängt, der später als ein runt oder mit einem ungültigen CRC endet, das MAC einen schlechten CRC erzeugen wird. Falls das Sende MAC die Absendung eines Rahmens nicht gestartet hat und der Kopf des Puffers 142 anzeigt, dass der Rahmen in einem runt oder mit einem ungültigen CRC endet, wird die Pufferverwaltung 72 den Rahmen nicht an den Ausgangsanschluss weiter leiten.
  • Der zweite Modus stellt eine niedrige Latenz zum Weiterleiten von Rahmen und einigen Schutz vor Netzwerkfehlern bereit. Rahmen werden empfangen und weiter geleitet, nachdem vierundsechzig oder mehr Bytes empfangen worden sind. Dies erlaubt dem Switch 12, Fragmente von Rahmen zu filtern (das heißt nicht weiter zu leiten): jedoch filtert er CRC Fehler Rahmen nicht vollständig, die größer sind als vierundsechzig Byte.
  • In dem zweiten Modus werden Rahmenzeiger für Rahmen, welche die vierundsechzig Byte Schwelle an dem Empfangs MAC schaffen, in die entsprechenden Ausgangswarteschlange(n) 74 eingereiht. Rahmen, die es nicht schaffen, die minimale Schwelle vierundsechzig Byte zu erreichen, werden gelöscht und ihre Rahmenzeiger werden nicht in den Ausgangswarteschlange(n) 74 platziert. Falls ein Empfangsrahmen größer oder gleich vierundsechzig Byte mit einem ungültigen CRC endet, markiert das MAC den Kopf des Puffers 142 in dem externen Speicher 36, um diese Bedingung anzuzeigen. Falls die Absendung mit einem Rahmen größer oder gleich vierundsechzig Byte begonnen hat, der später mit einem ungültigen CRC endet, wird das Sende MAC die Absendung mit einem schlechten CRC abschließen. Falls das Sende MAC die Absendung eines Rahmens nicht gestartet hat und der Kopf des Puffers 142 anzeigt, dass der Rahmen (größer oder gleich vierundsechzig Byte) in einem ungültigen CRC endete, gibt die Pufferverwaltung 72 den Rahmenzeiger an die Rückforderungswarteschlange 98 (für eine Einfachkopie Weiterleitung) oder an die Mehrfachkopie Warteschlange 96 (für eine Mehrfachkopie Weiterleitung) ohne Weiterleitung an den/die Ausgangsanschlüsse 74 zurück.
  • Der dritte Modus ist ein Speicher und Weiterleitung Modus, der den höchsten Level an Schutz vor Netzwerkfehlern unter den drei Modi zur Verfügung stellt, aber eine höhere Latenz bei der Weiterleitung hat. Rahmen werden vollständig empfangen, bevor der Switch 12 sie an die Ausgangsanschlüsse weiter leitet. In diesem Modus filtert der Switch 12 alle Fragmente und CRC Fehler Rahmen vor der Weiterleitung aus. In dem dritten Modus wird, sobald ein gültiger Rahmen erfolgreich an dem Empfänger abschließt (das heißt größer oder gleich vierundsechzig Byte mit einem gültigen CRC), der Rahmenzeiger in die entsprechende Ausgangswarteschlange(n) 74 eingereiht. Rahmen, die in einem Empfangsfehler (ungültiger CRC, runt (> 64 Byte) usw.) abschließen, werden gelöscht und ihre Rahmenzeiger werden nicht in die Ausgangswarteschlange(n) 74 platziert.
  • Der Anschlussvektor FIFO 70 trifft die Entscheidung, den Anschlussvektor in die Ausgangswarteschlange 74 zu setzen in Abhängigkeit von dem ausgewählten Modus des Empfangsanschlusses und dem Betrag an Daten, der empfangen worden ist. In dem oben beschriebenen Ausführungsbeispiel sind drei Schwellen vorhanden, obwohl in anderen Ausführungsbeispielen unterschiedliche Anzahlen von Schwellen vorhanden sind. In dem beispielhaften Ausführungsbeispiel sind diese Schwellen: 1) empfangen von n Byte (zum Beispiel 6 Byte), wobei n < 64 Byte; 2) empfangen von 64 Byte und 3) empfangen des kompletten Rahmens.
  • Die vorliegende Erfindung leitet Rahmen basierend auf den Schwellen an die Ausgangswarteschlangen 74 weiter. Der Anschlussvektor FIFO 70 ordnet die Reihenfolge der Absendung basierend auf dem Betrag des Typs an empfangenen Daten und dem Modus, in dem der Anschluss programmiert ist, um. Ob wohl das beispielhafte Ausführungsbeispiel Entscheidungen über die Weiterleitung basierend auf dem Betrag der empfangenen Daten trifft, treffen andere Ausführungsbeispiele der Erfindung Entscheidungen über die Weiterleitung basierend auf anderen Faktoren, wie dem Typ der empfangenen Daten.
  • Bei der Implementierung des Weiterleitungsschemas der vorliegenden Erfindung unterhält die Pufferverwaltung 72 eine Tabelle 160 in einem Cachespeicher (CAM) 161, der einen Rahmenzeiger mit einem Empfangsanschluss verbindet. Jedes Mal wenn der Anschlussvektor FIFO 70 einen neuen Anschlussvektor und Rahmenzeiger von dem Regelüberprüfer 42 oder 58 empfängt, trifft er eine Verbindung, um festzustellen, ob der Empfangsanschluss den Empfang eines Rahmens abgeschlossen hat und falls nicht, wie viel von dem Rahmen bereits empfangen worden ist. Der Anschlussvektor FIFO 70 empfängt keinerlei Information hinsichtlich der Identität des Empfangsanschlusses von dem Regelüberprüfer 42 oder 58. Die einzige Information, die der Anschlussvektor empfängt, die irgendeine Identifikation des Anschlusses zur Verfügung stellt, sind die Rahmenzeiger.
  • Der Anschlussvektor FIFO 70 fragt die Adresstabelle 160 mit dem Rahmenzeiger ab. Entweder gibt die Adresstabelle den Empfangsanschluss zurück, wenn der Rahmen noch empfangen wird, oder die Adresstabelle kann den Rahmenzeiger nicht finden, was bedeutet, dass der Rahmen bereits empfangen worden ist. Sobald er Rahmen vollständig empfangen worden ist, wird der Rahmenzeiger aus der Adresstabelle 160 bewegt. Dies bedeutet, dass die dritte Schwelle (der Rahmen ist vollständig) getroffen ist. Entsprechend kann der Rahmenzeiger unmittelbar in die Ausgangswarteschlange 74 geschoben werden.
  • Falls die Adresstabelle 160 den Empfangsanschluss zurück gibt, stellt der Anschlussvektor FIFO 70 den Rahmenzeiger und die dazu gehörige Information in einen Haltebereich 162 und fängt an, zwei Signale von diesem Empfangsanschluss zu überwachen. Diese zwei Signale markieren eines von drei Ereignissen mit einem Flag. Das erste Ereignis wird mit einem Flag versehen, wenn der Anschluss n Byte empfängt. Zu diesem Punkt, startet, wenn dieser Anschluss in dem ersten Modus ist, der Anschlussvektor FIFO 70 die Verarbeitung des Rahmenzeigers durch Absendung desselben an die entsprechende Ausgangswarteschlange 74. Falls der Empfangsanschluss nicht in dem ersten Modus ist, wartet der Anschlussvektor FIFO 70 bis er ein Signal empfängt, welches das Auftreten eines zweiten Ereignisses anzeigt. Falls dieser Anschluss in dem zweiten Modus ist, lässt dann der Anschlussvektor FIFO 70 den Rahmenzeiger aus dem Haltebereich 162 frei, um in die entsprechende Ausgangswarteschlange 74 einzutreten. Wenn schließlich der Empfangsanschluss in dem dritten Modus ist, dann erwartet der Anschlussvektor FIFO 70 den Empfang des Flags, das anzeigt, dass der Rahmen vollständig ist. Jeder Empfangsanschluss (Bezugszeichen 164 in 14) unterhält dieses Flag und stellt diese Information dem Anschlussvektor FIFO 70 zur Verfügung. Es ist dem Anschlussvektor FIFO 70 überlassen, den Anschluss zu bestimmen, der mit dem Rahmenzeiger verbunden ist. Der Anschlussvektor FIFO 70 behält die Information, die den Modus identifiziert, in dem sich jeder Anschluss befindet. Zusammengefasst fragt der Anschlussvektor FIFO 70 auf den Empfang eines Rahmenzeigers zuerst die Adresstabelle der Pufferverwaltung 72 ab, um den Empfangsanschluss zu bestimmen, bestimmt den Modus für diesen Empfangsanschluss und überwacht dann die Flags von diesem Empfangsanschluss und gibt den Rahmenzeiger in Übereinstimmung mit dem Modus und den Flags frei.
  • Die Pufferverwaltung 72 führt zahlreiche Funktionen in dem Switch 12 der vorliegenden Erfindung durch. Die Pufferverwaltung 72 weist eine Steuerlogik und/oder Software auf, um diese Funktionen zu implementieren, und ist für jemanden mit durchschnittlichen Kenntnissen auf dem Gebiet mit der gegebenen oben zur Verfügung gestellten Beschreibung der Funktion der Pufferverwaltung 72 einfach zu implementieren.
  • Obwohl die vorliegende Erfindung detailliert beschrieben und dargestellt worden ist, ist klar zu verstehen, dass dies nur im Weg der Darstellung und als Beispiel ist und nicht als Beschränkung anzusehen ist, der Umfang der Erfindung wird nur von den Ausdrücken der angefügten Ansprüche begrenzt.

Claims (13)

  1. Anordnung zum Übertragen von Datensätzen, mit: einem Speicher (36) zum Speichern von Datensätzen, von denen jeder einen diesem zugeordneten Datenidentifizierer aufweist und separat aus dem Speicher (36) abrufbar ist; einem Übertragungsvektorgenerator (42, 58), der die Anzahl von Kopien eines zu übertragenden Datensatzes bestimmt und die Datenidentifizierer für diesen Datensatz vervielfältigt, und zwar einen vervielfältigten Datenidentifizierer für jede zu übertragende Kopie eines einzelnen Datensatzes; mindestens einer Ausgangs-Warteschlange (74, 75, 77) zum Einreihen der von dem Übertragungsvektorgenerator (44, 58) empfangenen Datenidentifizierer; und mindestens einem Übertragungsport (30, 50, 53), der einen Datenidentifizierer prüft, der die Ausgangs-Warteschlange (74, 75, 77) verlässt, und auf den von dem Datenidentifizierer identifizierten Datensatz aus dem Speicher (36) zugreift und eine Kopie des Datensatzes, auf den Zugriff genommen worden ist, überträgt.
  2. Anordnung nach Anspruch 1, ferner mit mehreren Ausgangs-Warteschlangen (74, 75, 77) und mehreren Übertragungsports (30, 50, 53), von denen jeder die Datenidentifizierer jeweils einer Ausgangs-Warteschlange empfängt.
  3. Anordnung nach Anspruch 1 oder 2, ferner mit einer Mehrfachkopien-Warteschlange (90) und einem Mehrfachkopien-Cachespeicher (96), wobei die Mehrfachkopien-Warteschlange (90) Einträge empfängt und ein reiht und jeder Eintrag einen Datenidentifizierer und eine diesem zugeordnete Kopienanzahl aufweist, wobei eine positive Kopienanzahl anzeigt, dass die Anzahl von Kopien des von dem Datenidentifizierer identifizierten Datensatzes übertragen werden muss und eine negative Kopienanzahl die Übertragung des von dem Datenidentifizierer identifizierten Datensatzes anzeigt.
  4. Anordnung nach Anspruch 3, ferner mit einem Manager (72) zum Prüfen der die Mehrfachkopien-Warteschlange (90) verlassenden Einträge und Speichern derjenigen Einträge, die eine positive Kopienanzahl aufweisen, in dem Mehrfachkopien-Cachespeicher (96) und, für jeden die Mehrfachkopien-Warteschlange (90) verlassenden Eintrag mit einer negativen Kopienanzahl, Lokalisieren eines Eintrags in dem Mehrfachkopien-Cachespeicher (96), der den gleichen Datenidentifizierer aufweist wie der die Mehrfachkopien-Warteschlange (90) verlassende Eintrag mit der negativen Kopienanzahl und Dekrementieren der Kopienanzahl des Eintrags in dem Mehrkopien-Cachespeicher (96), wenn die Kopienanzahl in dem Mehrfachkopien-Cachespeicher (96) größer ist als Eins, und Entfernen des Eintrags aus dem Mehrfachkopien-Cachespeicher (96), wenn die Kopienanzahl gleich Eins ist.
  5. Anordnung nach einem der vorhergehenden Ansprüche, bei der der Übertragungsvektorgenerator (42, 58) einen Regelprüfer aufweist, der bestimmt, welche Ports (30, 50, 53) eine Kopie des Datensatzes übertragen, und einen Portvektor erzeugt, der diese Ports identifiziert, und einen Portvektor-FIFO (70) aufweist, der den Portvektor empfängt und einen vervielfältigten Datenidentifizierer in jede Ausgangs-Warteschlange (74, 75, 77) lädt, der jedem von dem Portvektor identifizierten Port entspricht, welcher für diesen Datensatz erzeugt worden ist.
  6. Anordnung nach einem der vorhergehenden Ansprüche, bei der die Anordnung eine Netzwerkschalter- (12) Anordnung in einem paketgeschalteten Netzwerk ist, der Datensatz ein an dem Port des Schalters emp fangener Datenrahmen zum Weiterleiten zu den Übertragungsports (30, 50, 53) der Netzwerkschalter- (12) Anordnung ist und der Datenidentifizierer ein Rahmenzeiger ist, der auf die Stelle in dem Speicher (36) zeigt, an der der Rahmen gespeichert ist.
  7. Anordnung nach Anspruch 6, bei der sich der Speicher (36) außerhalb der Netzwerkschalter- (12) Anordnung befindet, so dass der Rahmen außerhalb der Netzwerkschalter- (12) Anordnung gespeichert ist.
  8. Anordnung nach Anspruch 4 oder einem von Anspruch 4 abhängigen Anspruch, bei der der Speicher ein Externspeicher (36) ist, wobei die Schalteranordnung ferner ein zwischen dem Externspeicher und den Ausgangs-Warteschlangen (74, 75, 77), den Übertragungsports (30, 50, 53), dem Manager, der Mehrfachkopien-Warteschlange (90) und dem Mehrfachkopien-Cachespeicher (96) gekoppeltes Externspeicher-Interface ist.
  9. Verfahren zum Übertragen von Mehrfachkopien eines einzelnen Datensatzes von einer Vorrichtung (12), mit folgenden Schritten: Speichern des Datensatzes in einem Speicher (36); Erzeugen eines Datenidentifizierers, der den Datensatz identifiziert; Bestimmen der Anzahl von zu übertragenden Kopien des Datensatzes; Vervielfältigen des Datenidentifizierers zum Herstellen eines vervielfältigten Datenidentifizierers für jede zu übertragende Kopie des Datensatzes; Einreihen der vervielfältigten Datenidentifizierer; und Zugreifen auf den Speicher (36) und Übertragen einer Kopie des Datensatzes von dem Speicher (36), die von dem vervielfältigten Datenidentifizierer bei Beendigung der Einreihung dieses vervielfältigten Datenidentifizierers identifiziert worden ist.
  10. Verfahren nach Anspruch 9, bei dem der Schritt des Einreihens der vervielfältigten Daten das Laden der vervielfältigten Datenidentifizierer in mehrere Ausgangs-Warteschlangen (74, 75, 77) umfasst, wobei jede Ausgangs-Warteschlange einen dieser zugeordneten Übertragungsport (30, 50, 53) aufweist, wobei der Schritt des Zugreifens auf den Speicher (36) und des Übertragens einer Kopie das Zugreifen eines der Übertragungsports (30, 50, 53) auf den Speicher (36) und das Auslesen des von dem Datenidentifizierer identifizierten Datensatzes umfasst.
  11. Verfahren nach Anspruch 9 oder 10, ferner mit dem Aufrechterhalten einer Zählung der Anzahl von zu übertragenden Kopien und Einstellen der Zählung nach der Übertragung jeder Kopie des Datensatzes.
  12. Verfahren nach Anspruch 11, bei dem die Schritte des Aufrechterhaltens einer Zählung und Einstellung der Zählung das Einreihen von Einträgen in eine Mehrfachkopien-Warteschlange (90) umfasst, wobei jeder Eintrag einen Datenidentifizierer und eine diesem zugeordnete Kopienanzahl aufweist, wobei eine positive Kopienanzahl anzeigt, dass die Anzahl von Kopien des von dem Datenidentifizierer identifizierten Datensatzes übertragen werden muss und eine negative Kopienanzahl die Übertragung des von dem Datenidentifizierer identifizierten Datensatzes anzeigt.
  13. Verfahren nach Anspruch 12, bei dem die Schritte des Aufrechterhaltens und Einstellens ferner umfassen: das Prüfen der die Mehrfachkopien-Warteschlange (90) verlassenden Einträge und Speichern derjenigen Einträge, die eine positive Kopienanzahl aufweisen, in einem Cachespeicher (96) und, für jeden die Mehrfachkopien-Warteschlange (90) verlassenden Eintrag mit einer negativen Kopienanzahl, Lokalisieren eines Eintrags in dem Cachespeicher (96), der den gleichen Datenidentifizierer aufweist wie der die Mehrfachkopien-Warteschlange (90) verlassende Eintrag mit der negativen Kopienanzahl und Dekrementieren der Kopienanzahl des Eintrags in dem Cachespeicher (96), wenn die Kopienanzahl in dem Cachespeicher (96) größer ist als Eins, und Entfernen des Eintrags aus dem Cachespeicher (96), wenn die Kopienanzahl gleich Eins ist.
DE69819303T 1997-02-14 1998-01-30 Verfahren und vorrichtung zur übertragung von mehrfachkopien durch vervielfältigung von datenidentifikatoren Expired - Lifetime DE69819303T2 (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,924 US6128654A (en) 1997-02-14 1997-12-18 Method and apparatus for transmitting multiple copies by replicating data identifiers
US992924 1997-12-18
PCT/US1998/001689 WO1998036528A1 (en) 1997-02-14 1998-01-30 Method and apparatus for transmitting multiple copies by replicating data identifiers

Publications (2)

Publication Number Publication Date
DE69819303D1 DE69819303D1 (de) 2003-12-04
DE69819303T2 true DE69819303T2 (de) 2004-08-26

Family

ID=26714752

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69819303T Expired - Lifetime DE69819303T2 (de) 1997-02-14 1998-01-30 Verfahren und vorrichtung zur übertragung von mehrfachkopien durch vervielfältigung von datenidentifikatoren

Country Status (6)

Country Link
US (1) US6128654A (de)
EP (1) EP0960502B1 (de)
JP (1) JP4078445B2 (de)
DE (1) DE69819303T2 (de)
TW (1) TW449694B (de)
WO (1) WO1998036528A1 (de)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6457053B1 (en) * 1998-09-21 2002-09-24 Microsoft Corporation Multi-master unique identifier allocation
US6553027B1 (en) * 1999-05-21 2003-04-22 Advanced Micro Devices, Inc. Apparatus and method for cascading multiple network switch devices
JP2000341307A (ja) * 1999-05-28 2000-12-08 Sharp Corp 半二重伝送方法及び装置
US6606317B1 (en) * 1999-09-09 2003-08-12 Harris Corporation Dual key controlled content addressable memory for accessing packet switch data buffer for multicasting data packets
US6754211B1 (en) * 1999-12-01 2004-06-22 Mosaid Technologies, Inc. Method and apparatus for wire speed IP multicast forwarding
US7236489B1 (en) * 2000-04-27 2007-06-26 Mosaid Technologies, Inc. Port packet queuing
EP1356390A1 (de) * 2000-12-21 2003-10-29 Exanet Co. Skalierbarer verteilter hierarchischer cache
US6944174B1 (en) * 2001-03-16 2005-09-13 Advanced Micro Devices, Inc. Jitter reduction of voice packets in a packet-based network
US7139842B2 (en) * 2001-03-30 2006-11-21 Intel Corporation Method and apparatus for intersystem cut/copy and paste
US7031325B1 (en) * 2001-04-04 2006-04-18 Advanced Micro Devices, Inc. Method and apparatus for enabling a network device to operate in accordance with multiple protocols
US20040148279A1 (en) * 2001-06-20 2004-07-29 Nir Peleg Scalable distributed hierarchical cache
US7228366B2 (en) * 2001-06-29 2007-06-05 Intel Corporation Method and apparatus for deterministic removal and reclamation of work items from an expansion bus schedule
US7110405B2 (en) * 2001-09-18 2006-09-19 Integrated Device Technology, Inc. Multicast cell buffer for network switch
US6999998B2 (en) * 2001-10-04 2006-02-14 Hewlett-Packard Development Company, L.P. Shared memory coupling of network infrastructure devices
US20030069949A1 (en) * 2001-10-04 2003-04-10 Chan Michele W. Managing distributed network infrastructure services
US7161950B2 (en) * 2001-12-10 2007-01-09 Intel Corporation Systematic memory location selection in Ethernet switches
US20030174725A1 (en) * 2002-03-15 2003-09-18 Broadcom Corporation IP multicast packet replication process and apparatus therefore
US7151777B2 (en) * 2002-04-04 2006-12-19 Fujitsu Limited Crosspoint switch having multicast functionality
JP4073754B2 (ja) * 2002-10-29 2008-04-09 富士通株式会社 フレーム転送装置
US7313137B2 (en) * 2003-02-26 2007-12-25 International Business Machines Corp. System and method for efficient replication and distribution of data objects
KR100716968B1 (ko) * 2003-06-19 2007-05-10 삼성전자주식회사 유무선 복합 통신 장치 및 통신 방법
US7076622B2 (en) * 2003-09-30 2006-07-11 International Business Machines Corporation System and method for detecting and sharing common blocks in an object storage system
US7434028B2 (en) * 2004-12-15 2008-10-07 Intel Corporation Hardware stack having entries with a data portion and associated counter
US7996608B1 (en) 2005-10-20 2011-08-09 American Megatrends, Inc. Providing redundancy in a storage system
US8010829B1 (en) 2005-10-20 2011-08-30 American Megatrends, Inc. Distributed hot-spare storage in a storage cluster
US7809892B1 (en) * 2006-04-03 2010-10-05 American Megatrends Inc. Asynchronous data replication
US8213294B2 (en) * 2006-06-27 2012-07-03 International Business Machines Corporation Mechanism for detecting and clearing I/O fabric lockup conditions for error recovery
US20080101225A1 (en) * 2006-10-31 2008-05-01 Tassinari Mark A Systems and methods for capturing network packets
US8498967B1 (en) 2007-01-30 2013-07-30 American Megatrends, Inc. Two-node high availability cluster storage solution using an intelligent initiator to avoid split brain syndrome
US8046548B1 (en) 2007-01-30 2011-10-25 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems using bitmap write-intent logging
US7908448B1 (en) 2007-01-30 2011-03-15 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems with write-back cache
US8108580B1 (en) 2007-04-17 2012-01-31 American Megatrends, Inc. Low latency synchronous replication using an N-way router
WO2009023163A1 (en) * 2007-08-10 2009-02-19 Asankya Networks, Inc. Methods and systems for multi-caching
US8065442B1 (en) 2007-11-19 2011-11-22 American Megatrends, Inc. High performance journaling for replication and continuous data protection
US9172774B2 (en) * 2011-04-13 2015-10-27 Qualcomm Incorporated Technique for managing communications at a router
EP2554662A1 (de) 2011-08-05 2013-02-06 M Maria Pia Cosma Verfahren zur Behandlung von Netzhautdegenerationserkrankungen
US9172627B2 (en) 2013-03-15 2015-10-27 Extreme Networks, Inc. Device and related method for dynamic traffic mirroring
US9584393B2 (en) 2013-03-15 2017-02-28 Extreme Networks, Inc. Device and related method for dynamic traffic mirroring policy
US9130826B2 (en) * 2013-03-15 2015-09-08 Enterasys Networks, Inc. System and related method for network monitoring and control based on applications
US9813447B2 (en) 2013-03-15 2017-11-07 Extreme Networks, Inc. Device and related method for establishing network policy based on applications
EP3231434A1 (de) 2016-04-14 2017-10-18 Fundacio Centre de Regulacio Genomica Verfahren zur behandlung von parkinsonismus
CN116264083A (zh) 2021-12-14 2023-06-16 长鑫存储技术有限公司 存储系统以及存储系统的数据读取方法
CN116264085A (zh) * 2021-12-14 2023-06-16 长鑫存储技术有限公司 存储系统以及存储系统的数据写入方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6278931A (ja) * 1985-10-01 1987-04-11 Nec Corp パケツト交換型マルチキヤスト伝送用送受信装置
US4813038A (en) * 1987-06-29 1989-03-14 Bell Communications Research, Inc. Non-blocking copy network for multicast packet switching
US4991171A (en) * 1989-09-26 1991-02-05 At&T Bell Laboratories Broadcast packet switch network
US5287346A (en) * 1991-10-16 1994-02-15 Carnegie Mellon University Packet switch
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
US5546385A (en) * 1995-01-19 1996-08-13 Intel Corporation Flexible switching hub for a communication network
US5689505A (en) * 1996-01-16 1997-11-18 Lucent Technologies Inc. Buffering of multicast cells in switching networks
US5898687A (en) * 1996-07-24 1999-04-27 Cisco Systems, Inc. Arbitration mechanism for a multicast logic engine of a switching fabric circuit

Also Published As

Publication number Publication date
WO1998036528A1 (en) 1998-08-20
TW449694B (en) 2001-08-11
JP2001511976A (ja) 2001-08-14
JP4078445B2 (ja) 2008-04-23
US6128654A (en) 2000-10-03
DE69819303D1 (de) 2003-12-04
EP0960502B1 (de) 2003-10-29
EP0960502A1 (de) 1999-12-01

Similar Documents

Publication Publication Date Title
DE69819303T2 (de) Verfahren und vorrichtung zur übertragung von mehrfachkopien durch vervielfältigung von datenidentifikatoren
DE69817328T2 (de) Warteschlangenstruktur und -verfahren zur prioritätszuteilung von rahmen in einem netzwerkkoppelfeld
DE69823483T2 (de) Mehrfachkopiewarteschlangestruktur mit einem suchbaren cachespeicherbereich
DE69823337T2 (de) Vorrichtung und verfahren zur rückgewinnung von puffern
DE60111457T2 (de) Vermittlungsanordnung mit redundanten Wegen
DE69934644T2 (de) Netzwerkvermittlungseinrichtung mit auf der Basis von Benutzung verteilten Umleitungsdatenbanken
DE69937598T2 (de) Auf Identifikationsmarken basierendes Paketvermittlungssystem
DE69732274T2 (de) Flusssteuerungsprotokollsystem und verfahren
DE60203380T2 (de) Verfahren und vorrichtung zur mehrfachsendung
DE69833708T2 (de) Kommunikationsverfahren für eine medienunabhängige Schnittstelle (MII) für ein hochintegriertes Ethernet-Netzelement
DE60113058T2 (de) Empfänger korrigiert
DE60309947T2 (de) Hochgeschwindigkeitsprotokoll für die Verbindung von modularen Netzwerkelementen
DE69628512T2 (de) Kompakter, anpassbarer Uberbrückungs-/Leitweglenkungsvermittlungsschalter
DE60126934T2 (de) Vermittlungssystem
DE60125678T2 (de) Vermittlungstelle mit Flusssteurungverwaltung
DE60131380T2 (de) Segmentierung und wiederzusammensetzung von datenrahmen
EP0960505B1 (de) Verfahren und gerät zur von den empfangenen daten abhängigen steuerung der informationsübertragungsauslösung
DE60125300T2 (de) Schaltungsanordnung zum Übertragen von Daten mit Datenpacketierung und-Depacketierung
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
DE60014178T2 (de) Vorrichtung und verfahren zur speicherteilung in einer konfiguration mit einzelring-datenbusverbindung
DE69926432T2 (de) Rückwandverdrahtung mit zugeordneter Bandbreite für Datenvermittlung
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
DE60120072T2 (de) Verfahren und Vorrichtung zur Verteilung eines Zwischenchipbusses für Nachrichtenübertragung und Speicherzugriff

Legal Events

Date Code Title Description
8364 No opposition during term of opposition