-
Gebiet der
Erfindung
-
Die vorliegende Erfindung betrifft
das Gebiet der temporären
Speicherung von Daten und insbesondere Warteschlangen, die Einträge auf priorisierte Weise
empfangen, temporär
speichern und freigeben.
-
Stand der
Technik
-
Bei vielen Typen von Systemen, von
einfachen bis hoch entwickelten, können Einträge in das System oftmals nicht
unmittelbar durch das System verarbeitet werden. Anstatt die Einträge zu verwerfen,
werden "Warteschlangen" eingesetzt, um die Einträge temporär zu halten
und einen Eintrag für
die Bearbeitung durch das System freizugeben, wenn das System fähig ist,
den nächsten
Eintrag zu verarbeiten. Ein Beispiel einer Warteschlange aus dem Alltag
ist eine Reihe von Käufern,
bei einer Bank oder einem Kartenschalter am Flughafen zum Beispiel. Typische
Warteschlangen unterhalten eine zuerst rein, zuerst raus (FIFO)
Ordnung der Einträge
der Warteschlange.
-
Es gibt viele Typen von elektronischen
Datensystemen, in denen Warteschlangen verwendet werden. Diese umfassen
zum Beispiel Mikroprozessoren, Speichertransfersysteme, Telefonreservierungssysteme
von Fluglinien und Paket geschaltete Netzwerke. In den meisten Systemen
ist es wünschenswert,
dass die Warteschlangen niedrige Latenzzeiten haben, so dass die
Verarbeitung eines Eintrags nicht sehr lang wegen Wartezeiten verzögert wird,
die von den Warteschlangen selbst verursacht werden. Eine niedrige
Latenzzeit einer Warteschlange bedeutet, dass ein Eintrag von dem
Eingang der Warteschlange schnell zu dem Ausgang der Warteschlange
fließt,
im Vergleich zu Warteschlangen mit höheren Latenzzeiten. Ein Faktor,
der einen erheblichen Ein fluss auf die Latenzzeit einer Warteschlange
hat, ist die Länge
oder Kapazität
der Warteschlange. Je größer die
Kapazität
der Warteschlange zum Speichern von Einträgen ist, desto größer ist
die Latenzzeit der Warteschlange.
-
Viele Systeme befördern unterschiedliche Typen
von Verkehr. Einige Typen von Verkehr können in der Priorität höher angesehen
werden als andere Typen von Verkehr. Zum Beispiel werden Videodaten üblicherweise
als ein Verkehrstyp mit hoher Priorität angesehen, da diese Daten
normalerweise auf Basis einer hohen Geschwindigkeit geliefert werden
müssen,
um ein akzeptables Videosignal an dem Ausgangsgerät zur Verfügung zu
stellen. Andere Typen von Daten können aufgrund ihrer relativen
Wichtigkeit als hohe Priorität
angesehen werden, so dass ein Verwerfen von derartigen Daten aufgrund
einer Stockung zu vermeiden ist, wenn es überhaupt möglich ist. Im Gegensatz dazu
haben Rahmen mit niedriger Priorität keine so strengen Zeitanforderungen für die Ankunft
an ihren Zielen.
-
Ein Problem, das gelegentlich in
Switches in Netzwerken und anderen Geräten, die Daten empfangen und
weiterleiten, ist eine interne Stockung, welche auftritt, wenn das
Gerät mehr
Daten empfängt als
es senden kann. Zum Beispiel enthält ein typischer Switch im
Netzwerk zumindest eine Ausgangswarteschlange, welche Rahmen von
Daten in eine Warteschlange bringt, die an dem Switch zur Absendung
von einem Anschluss des Switches empfangen wurden. Falls die Ausgangswarteschlange
voll wird, wie es geschehen kann, wenn Daten schneller an dem Switch
eintreffen als sie weiter geleitet werden können, werden spät eintreffende
Rahmen verworfen und die Daten sind verloren. Systeme, die ein eingerichtetes
Prioritätsschema
für Daten
haben, versuchen das Verwerfen von Daten mit höherer Priorität zu vermeiden.
Eine übliche
Anordnung verwendet mehrere Warteschlangen, wobei eine Warteschlange für jede der
unterschiedlichen Prioritätsebenen
zuständig
ist. Daher wird ein Rahmen mit hoher Priorität in die Warteschlange mit
hoher Priorität
geladen, während
ein Rahmen mit niedriger Priorität
in die Warteschlange mit niedriger Priorität geladen wird. In derartigen
Anordnungen wird die Warte schlange mit hoher Priorität bedient
und geleert bevor die Warteschlange mit niedrigerer Priorität bedient
wird.
-
US
5,555,265 beschreibt Schaltpfad-Einstellungssystem für die Verwendung
in einer ATM (Asynchroner Transfer Modus) Schaltausrüstung. Ein
Eingangs-Schnittstellengerät weist
eine Zelle einer Qualitätsklasse
als Markierungsinformation zu, die einem Zellenidentifizierer entspricht.
Ein Qualitätsklassenpuffer
speichert die Zelle und die Zelle wird in Übereinstimmung mit der Qualitätsklasse
aus dem Puffer gelesen.
US 5,541,922 beschreibt
ein Verfahren zum Zuweisen von Priorität an Verkehr zwischen Nahbereichsnetzwerken,
die über
ein Backbone-Netzwerk verbunden sind.
US
4,630,254 beschreibt ein Glasfaser Kommunikationsnetzwerk,
das einen Sternkuppler verwendet, um eine ausgewählte Sendung, die auf eingehenden
Kanälen
von einer der Anzahl der Stationen empfangen wurde, über eine
gleiche Anzahl von ausgehenden Kanälen an alle der Stationen zu übermitteln.
Die Anordnungen stellen alle neuen Übermittlungen auf den Kanälen in eine
Warteschlange und wählen,
wenn der Sternkoppler frei ist, einen eingehenden Kanal zum Senden
ihrer Nachricht durch den Sternkuppler aus. In einem Ausführungsbeispiel
hat jede Nachricht eine kodierte Priorität und Nachrichten werden in Übereinstimmung
mit der Priorität
der Nachricht in eine Warteschlange gestellt.
-
Das Problem mit derartigen Systemen
ist der große
Betrag an Platz, welcher der Warteschlangenstruktur gewidmet ist,
um die mehreren Prioritäten zur
Verfügung
zu stellen. Zum Beispiel werden bei einem einzelnen Anschluss, wobei
dort drei verschiedene Prioritätsebenen
pro in die Warteschlange zu stellenden Eintrag erlaubt sind, drei
getrennte Warteschlangen verwendet. Dies erfordert die Zuweisung von üblicherweise
kostbarem Platz auf dem Chip an die verschiedenen Warteschlangen.
Das Problem wird insbesondere deutlich, wenn der Switch oder das
Gerät mehrere
Anschlüsse,
zum Beispiel 28 Anschlüsse,
hat. Wenn drei getrennte Warteschlangen für jeden der Anschlüsse zur
Unterstützung
von drei verschiedenen Prioritätsebenen
zur Verfügung gestellt
werden, würden
84 Warteschlangen auf dem Chip angeordnet sein, was die Größe und die
Kosten des Chips erhöhen.
-
Zusammenfassung
der Erfindung
-
Es besteht ein Bedarf, eine Warteschlangenstruktur
und ein Verfahren zum Einreihen in eine Warteschlange zur Verfügung zu
stellen, bei dem Verkehr in einem Gerät auf eine Platz und Kosten
senkende Weise priorisiert wird.
-
Dieses und andere Bedürfnisse
werden von dem Ausführungsbeispiel
der vorliegenden Erfindung erfüllt,
das eine Warteschlange zur Verfügung
stellt, die Einträge
in eine Warteschlange einreiht und priorisiert und eine Schreibseite
und mehrere Leseseiten hat. Die Warteschlangenseite bildet einen
Eingang der Warteschlange; an dem Einträge für die Warteschlange empfangen
werden, wobei jeder Eintrag eine Prioritätsebene hat. Die mehreren Warteschlangen-Leseseiten
bilden einen Ausgang der Warteschlange, an dem Einträge von der
Warteschlangen-Schreibseite empfangen, in die Warteschlange eingereiht
und aus der Warteschlange ausgegeben werden. Die Warteschlangen-Schreibseiten haben verschiedene
Ebenen von Warteschlangenpriorität von
einer Warteschlangen-Leseseite mit höchster Priorität bis zu
einer Warteschlangen-Leseseite mit niedrigster Priorität. Eine
Steuerlogik untersucht die Einträge
in der Warteschlangen-Schreibseite, um die Prioritätsebenen
der Einträge
festzustellen, und leitet die Einträge von der Warteschlangen-Schreibseite
zu den Warteschlangen-Leseseiten basierend auf den Prioritätsebenen
der Einträge.
-
Ein Vorteil der Warteschlange der
vorliegende Erfindung ist, dass die gesamte Struktur der Warteschlange
nicht für
jede der verschiedenen Prioritätsebenen
und für
jeden der verschiedenen Anschlüsse
nachgebildet ist. Stattdessen hat die Warteschlange zwei Sektionen,
eine Schreibseite und mehrere Leseseiten. Jede der Leseseiten der
Warteschlange kann relativ klein gehalten werden, um die gesamte Kapazität der Warteschlange
auf einem gewünschten
betrag zu halten, aber dennoch mehrere Ebenen von Priorität zum Einreihen
von Daten mit unterschiedlicher Priorität zur Verfügung stellen. Die einzelne
Schreibseite, welche relativ betrachtet viel größer als jede einzelne der Leseseiten
ist, ist nicht vervielfacht und wird verwendet bei der Einreihung
von allen der verschiedenen Prioritätsebenen von Daten in die Warteschlange.
Nur die relativ kleinen Leseseiten werden vervielfacht, um die verschiedenen
Prioritätseinreihungen
in die Warteschlange zur Verfügung
zu stellen. Daher ist die gesamte Größe der Warteschlangenanordnung
zum Bereitstellen verschiedener Einreihungsprioritäten viel
kleiner als vorherige Anordnungen, bei denen eine Vielzahl von kompletten
Warteschlangen den verschiedenen Prioritätsebenen zugeordnet sind.
-
Die zuvor genannten Bedürfnisse
werden auch von einem weiteren Ausführungsbeispiel der vorliegende
Erfindung erfüllt,
das einen Netzwerk-Switch mit mehreren Anschlüssen für ein paketgeschaltetes Netzwerk
zur Verfügung
stellt, der Switch hat mehrere Anschlüsse, durch die Pakete aus dem
Netzwerk empfangen werden und von denen Pakete an das Netzwerk gesendet
werden. Der Switch hat mehrere Warteschlangen, die den mehreren
Anschlüssen
entsprechen. Zumindest eine dieser Warteschlangen hat eine Warteschlangen-Schreibseite,
die einen Eingang der Warteschlange bildet, an dem Einträge für die Warteschlange
empfangen werden; wobei jeder Eintrag eine Prioritätsebene
hat, und mehrere Warteschlangen-Leseseiten, die einen Ausgang der
Warteschlange bilden, an dem die Einträge der Warteschlangen-Schreibseite empfangen, in
die Warteschlange eingereiht und aus der Warteschlange ausgegeben
werden. Die mehreren Warteschlangen-Leseseite haben unterschiedliche
Ebenen von Einreihungspriorität
von einer Warteschlangen-Leseseite
mit höchster
Priorität
bis zu einer Warteschlangen-Leseseite mit niedrigster Priorität. Eine Steuerlogik
ist vorgesehen, die konfiguriert ist, um Einträge in der Warteschlangen-Schreibseite
zu untersuchen, um die Prioritätsebene
der Einträge
zu bestimmen und um die Einträge
von der Warteschlangen-Schreibseite zu einer der Warteschlangen-Leseseiten
basierend auf den Prioritätsebenen
der Einträge
zu leiten.
-
Der Netzwerk-Switch in Übereinstimmung mit
den Ausführungsbeispielen
der vorliegenden Erfindung hat den Vorteil, neben anderen, des zur
Verfügung
Stellens von mehreren Anschlüssen
ohne Ausgangswarteschlangen, die Daten auf eine priorisierte Weise
in eine Warteschlange einreihen. Dies geschieht so auf eine kostengünstige und
platzsparende Weise aufgrund der Vervielfachung lediglich der Leseseiten
von einer Ausgangswarteschlange für die unterschiedlichen Prioritätsebenen,
statt der Vervielfachung einer gesamten Warteschlange. Diese unterteilte
Struktur der Warteschlange mit mehreren Leseseiten ist insbesondere
vorteilhaft, wenn der Switch mehrere Anschlüsse hat, weil die Platzeinsparungen
bei jedem der Anschlüsse
verwirklicht werden können.
-
Ein weiteres Ausführungsbeispiel der vorliegende
Erfindung erfüllt
ebenfalls die zuvor genannten Bedürfnisse durch die Bereitstellung
eines Verfahrens zum Einreihen von Einträgen in eine Warteschlange und
Priorisieren von Einträgen,
einschließlich
der Schritte des Empfangens von Einträgen für die Warteschlange in einer
Warteschlangen-Schreibseite, die einen Eingang für die Warteschlange bildet, und
Feststellen einer Prioritätsebene
der Einträge
in der Warteschlangen-Schreibseite. Einträge, welche die Warteschlangen-Schreibseite
verlassen, werden zu einer der mehreren Warteschlangen-Leseseiten der
Warteschlange geleitet, basierend auf der fest gestellten Prioritätsebene
der Einträge.
Die Warteschlangen-Leseseiten haben unterschiedliche Ebenen von
Einreihungspriorität,
von einer Warteschlangen-Leseseite mit höchster Priorität bis zu
einer Warteschlangen-Leseseite mit niedrigster Priorität.
-
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 ist
ein Blockdiagramm eines paketgeschalteten Systems, das in Übereinstimmung
mit einem Ausführungsbeispiel
der vorliegenden Erfindung konstruiert ist.
-
2 ist
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 ist
eine schematische Darstellung eines Switch-Subsystems des Switches
mit mehreren Anschlüssen
aus 3, das in Übereinstimmung
mit einem Ausführungsbeispiel
der vorliegenden Erfindung konstruiertist.
-
4 ist
ein Blockdiagramm einer einzelnen Ausgangswarteschlange des Switch-Subsystems aus 4, die in Übereinstimmung
mit einem Ausführungsbeispiel
der vorliegenden Erfindung konstruiert ist.
-
5 ist
ein Detail eines ersten Typs einer Ausgangswarteschlange in Übereinstimmung
mit einem Ausführungsbeispiel
der vorliegenden Erfindung.
-
6 ist
ein Detail eines zweiten Typs einer Ausgangswarteschlange in Übereinstimmung
mit einem Ausführungsbeispiel
der vorliegenden Erfindung.
-
7 ist
ein Detail eines Überlaufbereichs des
externen Speichers, der in Übereinstimmung
mit einem Ausführungsbeispiel
der vorliegenden Erfindung konfiguriert ist.
-
8 ist
ein Blockdiagramm einer Datenstruktur einer verknüpften Liste,
die von der vorliegenden Erfindung verwendet wird.
-
9 stellt
ein Kopfformat für
einen Rahmenpuffer in Übereinstimmung
mit einem Ausführungsbeispiel
der vorliegenden Erfindung schematisch dar.
-
10 ist
ein Detail des Mehrfachkopie-, Rückforderungs-
und Freimachen des Pufferpools Bereichs des Switch-Subsystems aus 4, der in Übereinstimmung
mit einem Ausführungsbeispiel
der vorliegenden Erfindung konstruiert ist.
-
11 ist
ein Blockdiagramm einer Struktur zum Freimachen des Pufferpools,
die in Übereinstimmung
mit einem Ausführungsbeispiel
der vorliegenden Erfindung konstruiert ist.
-
12 ist
ein Blockdiagramm einer Mehrfachkopiewarteschlange, die in Übereinstimmung
mit einem Ausführungsbeispiel
der vorliegenden Erfindung konfiguriert ist.
-
13 ist
eine schematische Darstellung des Mehrfachkopiecachespeichers, der
in Übereinstimmung
mit einem Ausführungsbeispiel
der vorliegenden Erfindung konstruiert ist.
-
14 ist
ein Blockdiagramm eines Warteschlangenblocks der Pufferverwaltung
des Switch-Subsystems und eines Anschlussvektor FIFO, der in Übereinstimmung
mit einem Ausführungsbeispiel
der vorliegenden Erfindung konstruiert ist.
-
15 ist
ein Blockdiagramm einer Ausgangswarteschlange, die in Übereinstimmung
mit einem weiteren 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ägerabtas tung
und Kollisionsdetektierung (CSMA/CD) verwendet, um nach Verkehr
auf dem Medium zu hören.
Die Abwesenheit von Verkehr im Netzwerk wird detektiert 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 Routen 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 Zeitdemultiplexverfah ren
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
Transceiver-Schnittstelle 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 VLAN (virtuelles LAN) markierten
Rahmen in Übereinstimmung
mit dem IEEE 802.1d Protokoll enthalten, der ein anderes Netzwerk
(über einen
Router 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 Switch-Subsystem 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 Switch-Subsystem 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 externen 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 Switch-Subsystem 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 Switch-Subsystems 56 mit
diesen anderen Elementen darzustellen. Das Switch-Subsystem 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 Switch-Subsystem 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 Switch-Subsystems 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 Erfindung
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 Warteschlangen, 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 VLAN (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 Steuer-Opcode, 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.
-
Ein alternatives Ausführungsbeispiel
der Struktur der Ausgangswarteschlange ist in 15 in Form eines Blockdiagramms dargestellt.
Die Ausgangswarteschlange 190 kann eingesetzt werden für die Ausgangswarteschlangen 74, 75 und 77 in
dem Switch 12 von 3.
Die Ausgangswarteschlange 190 in Übereinstimmung mit dem Ausführungsbeispiel
von 15 stellt eine Priorisierung
on Rahmen in einer platzsparenden und damit kostengünstigen Weise
zur Verfügung.
-
Die Warteschlange 190 ist,
wie die Ausgangswarteschlangen 74, 75 und 77,
eine untereilte Warteschlange mit einer Warteschlangen Schreibseite 192.
Jedoch hat die Warteschlange 190 eine Vielzahl von Leseseiten 194a–n,
von denen jede Einträge
von der Schreibseite 192 in eine Warteschlange einreihen
wird. In dem Ausführungsbeispiel
von 15 ist jeder der
Leseseiten 194a– n
eine unterschiedlicher Prioritätsebene
zugewiesen und wird somit Verkehr mit unterschiedlichen Prioritätsebenen behandeln.
Zum Beispiel kann der Leseseite 194a die höchste Prioritätsebene
der Leseseiten zugewiesen sein und wird dann diejenigen die Schreibseite 192 verlassenden
Einträge
in die Warteschlange einreihen, die eine übereinstimmende Prioritätsebene haben,
das heißt
die höchste
Prioritätsebene.
Auf ähnliche
Weise kann der Leseseite 194n die niedrigste Prioritätsebene
zugewiesen sein und wird Einträge
in die Warteschlange einreihen, die eine übereinstimmende niedrige Prioritätsebene
haben. In gewissen Ausführungsbeispielen
sind die Warteschlange Leseseiten 194 mit höherer Priorität kleiner
in der Kapazität
der Warteschlange als die Warteschlange Leseseiten 194 mit
niedrigerer Priorität,
da die Leseseiten mit höherer
Priorität
klein gehalten werden sollten, um eine niedrige Latenz für die Einträge mit hoher
Priorität
zur Verfügung
zu stellen.
-
Wenn das beispielhafte Ausführungsbeispiel der
vorliegenden Erfindung in dem Netzwerk-Switch 12 von 3 verwendet wird, sind die
Einträge
Rahmenzeiger, die auf eine Stelle in dem externen Speicher 36 zeigen,
an welcher der Rahmen gespeichert ist. Die Rahmenzeiger werden dann
mit zusätzlichen Bits
versorgt, zum Beispiel drei Bits, welche die Priorität des Rahmens
kodieren, auf den von dem Rahmenzeiger gezeigt wird. Diese Priorität kann kodiert werden
zum Beispiel von dem Regelüberprüfer 42 oder 58,
wenn die Entscheidung über
die Weiterleitung getroffen wird. Die Prioritätsbits begleiten den Rahmenzeiger,
wie er durch den Switch 12 geleitet wird. Die Priorität des Rahmens
kann basieren auf der Zeitempfindlichkeit der Daten oder dem Inhalt des
Rahmens, zum Beispiel, obwohl sie auch auf anderen Faktoren basieren
kann.
-
Die Weiterleitung des Rahmenzeigers
an die Leseseite 194 mit der entsprechenden Prioritätsebene
wird von der Steuerlogik 196 gesteuert, welche die Prioritätsbits von
jedem Eintrag untersucht, der die Warteschlange Schreibseite 192 verlässt. Auf
die Bestimmung der Priorität
eines Eintrags, überprüft die Steuerlogik 196 die
verfügbare
Kapazität
der Warteschlange Leseseite 194 mit der Prioritätsebene,
die mit der Prioritätsebene
dieses Eintrags übereinstimmt.
Falls verfügbare
Kapazität
vorhanden ist, lädt die
Steuerlogik 196 den Eintrag in diese Warteschlange Leseseite 194.
In gewissen Ausführungsbeispielen
wird, wenn in der passenden Warteschlange Leseseite 194 keine
verfügbare
Kapazität
vorhanden ist, dann der Eintrag in dem Überlaufbereich 110 in
dem externen Speicher 36 über die Schnittstelle zum externen
Speicher 34 platziert. Wenn diese bestimmte Leseseite 194 wieder
Kapazität
erlangt, wird dann der Eintrag aus dem Überlaufbereich 110 erlangt
und in der Warteschlange Leseseite 195 platziert.
-
In gewissen Ausführungsbeispielen der Erfindung
werden Einträge
mit hoher Priorität
verworfen, falls die Warteschlange Leseseite mit hoher Priorität (194a
zum Beispiel) keine verfügbare
Kapazität hat.
Dieses Verwerfen des Eintrags (und damit der Rahmenkopie) statt
des Platzierens des Eintrags in der Überlaufbereich 110 für diese
Warteschlange 190, berücksichtigt,
dass Verkehr mit hoher Priorität, der
um den Zeitbetrag verzögert
ist, den es benötigt, den
Eintrag in den Überlaufbereich
zu schreiben und den Eintrag daraus zu erlangen, wahrscheinlich
nicht geeignet ist als Daten mit hoher Priorität. Statt diesen Rahmen zu senden,
was der wahrscheinlichste Zustand ist, verwerfen diese Ausführungsbeispiele
der Erfindung den Rahmen und versuchen dadurch, die Stockung der
hohen Priorität
zu lindern. Diese Ausführungsbeispiele
der Erfindung sind nicht auf diejenigen beschränkt, die nur die Rahmen mit
höchster Priorität verwerfen.
Eine Grenzprioritätsebene
kann der Steuerlogik 196 zur Verfügung gestellt werden, so dass
Rahmen mit einer Prioritätsebene über der Grenzebene
verworfen werden, falls die passenden Warteschlange Leseseiten 194 keine
verfügbare
Kapazität
haben.
-
In gewissen Ausführungsbeispielen der Erfindung
versucht die Steuerlogik 196, auf die Feststellung, dass
die Warteschlange Leseseite 194 mit der passenden Prioritätsebene
keine verfügbare
Kapazität
hat, den Eintrag in Warteschlange Leseseite 194 mit der
nächst
niedrigeren Prioritätsebene
zu laden. Dieses Verfahren versucht das Senden des Eintrags an den Überlaufbereich
zu vermeiden und den Eintrag immer noch mit einer Priorität so nahe
wie möglich
zu der tatsächlichen
Priorität
des Eintrags in die Warteschlange einzureihen.
-
Die Steuerlogik 196 ist
leicht von einem Fachmann auf dem Gebiet bei gegebenen Beschreibungen
der Funktionalität,
die zuvor zur Verfügung gestellt
wurde, zu implementieren.
-
Die MAC 50 wählt die
Warteschlange Leseseiten 194a–n aus und erlangt
Einträge
der Warteschlange von den Warteschlange Leseseiten 194 mit der
höchsten
Priorität,
bevor sie versucht, die Warteschlange Leseseiten 194 mit
niedrigerer Priorität
zu löschen.
Zum Beispiel wird angenommen, dass die Warteschlange Leseseite 194a die
Warteschlange Leseseite mit der höchsten Priorität ist, die
Warteschlange Leseseite 194b die nächst höchste und die Warteschlange
Leseseite 194n die Warteschlange Leseseite mit der niedrigsten
Priorität
ist. Die MAC 50 wird immer die Warteschlange Leseseite 194a bedienen
und entleeren bevor die Warteschlange Leseseite 194b bedient
wird. Falls die Warteschlange Leseseite 194a leer ist und
die Warteschlange Leseseite 194b einen Eintrag hat, wird
die MAC 50 die Warteschlange Leseseite 194b bedienen,
bevor eine beliebige andere der Warteschlange Leseseiten 194c–n mit
niedrigerer Priorität
bedient wird, bis die Warteschlange Leseseite 194b vollständig leer
ist, und so weiter.
-
Die Struktur der Prioritätswarteschlange
in Übereinstimmung
mit dem Ausführungsbeispiel
aus 15 hat eine verringerte
Größe im Vergleich
zu den Anordnungen, bei denen die gesamte Warteschlange vervielfacht
wird, um Warteschlangen mit verschiedenen Prioritäten zu schaffen.
Dies trägt
erheblich zu der Größe und den
Kosten eines Geräts bei,
insbesondere eines Geräts
mit mehreren Anschlüssen.
Obwohl die Struktur der Warteschlange aus 15 breite Verwendung in ihrer Anwendung
in einem Switch mit mehreren Anschlüssen, wie dem Switch 12 aus
der 3, findet, werden
die Fachleute auf dem Gebiet erkennen, dass die Struktur in einem
großen
Umfang auf andere Typen von Geräten anwendbar
ist, in denen Daten auf eine priorisierte Weise in eine Warteschlange
einzureihen sind. Das Sparen von Platz im Hinblick auf die auf dem
Chip befindlichen Warteschlangen und immer noch eine Priorisierung
der Daten zur Verfügung
zu stellen, ist ein wünschenswertes
Merkmal. Ein weiteres Beispiel sind Telefongeräte, die sowohl Sprach- als
auch Computerverkehr verarbeiten. Der Sprachverkehr kann als Verkehr
mit höherer
Priorität
angesehen werden und der Computerverkehr als niedrigere Priorität.
-
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ückforderungs- warteschlange Ü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 Switch-Subsystem 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 16B +
Verschie- bung 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-Identifizier: 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 Switch-Subsystems 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
Mehrfachkopie 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 mehrere
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 abgeschlos sen 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 Figur 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 Puf ferverwaltung 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ückforderungswarteschlange
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 Ausgangs pfad, 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. So bald 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 Zei- le
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 Anschlussvektor
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
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 zweite,
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. Obwohl
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 Struktur der Warteschlange der
vorliegenden Erfindung ist als ein Beispiel beschrieben worden als
in einen Switch mit mehreren Anschlüssen eingearbeitet. Jedoch
ist die Architektur der Warteschlange und das Verfahren der vorliegenden
Erfindung auch auf andere Typen von Technologien anwendbar, wie
dem Fachmann schnell offenbar werden wird. Zum Beispiel kann die
Architektur der Warteschlange in Mikroprozessoren oder anderen digitalen
Prozesso ren verwendet werden, die auf dem Chip befindliche Warteschlangen
haben. Die Erfindung ist daher nicht auf Switches mit mehreren Anschlüssen, wie
die oben beschriebenen, beschränkt.
-
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.