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