-
HINTERGRUND
DER ERFINDUNG
-
GEBIET DER
ERFINDUNG
-
Die
Erfindung bezieht sich auf eine Einrichtung für eine Hochleistungs-Vermittlung
in Lokalbereichs-Kommunikationsnetzwerken, wie beispielsweise Token-Ring,
ATM, Ethernet, Fast Ethernet und 1 und 10 Gigabit Ethernet-Umgebungen,
welche allgemein als LANs bekannt sind. Insbesondere bezieht sich
die Erfindung auf eine neue Vermittlungsarchitektur in einer integrierten,
modularen Einzelchip-Lösung,
welche auf einem Halbleitersubstrat, wie beispielsweise einem Siliziumchip,
implementiert werden kann, und eine Vermittlungsanordnung, welche
eine schnelle Kommunikation zwischen den Vermittlern ermöglicht.
-
BESCHREIBUNG
ZUM STAND DER TECHNIK
-
Da
die Computerleistung in den letzten Jahren gestiegen ist, sind die
Anforderungen an Computernetzwerke erheblich gestiegen; wobei schnellere
Computerprozessoren und höhere
Speicherkapazitäten Netzwerke
mit hohen Bandbreiten-Kapazitäten
benötigen,
um eine Hochgeschwindigkeitsübertragung
von erheblichen Datenmengen zu ermöglichen. Die bekannte Ethernet-Technologie,
welche auf zahlreichen IEEE Ethernet-Standards basiert, ist ein
Beispiel von einer Computernetzwerktechnologie, welche modifiziert
und verbessert werden konnte, um als eine brauchbare Berechnungstechnik
fortzubestehen. Eine umfangreichere Diskussion von Netzwerksystemen
aus dem Stand der Technik ist beispielsweise in „SWITCHED AND FAST ETHERNET" von Breyer and Riley
(Ziff-Davis, 1996) und zahlreichen IEEE Publikationen zu finden,
welche sich auf IEEE 802 Standards beziehen. Basierend auf dem Open
Systems Interconnect (OSI) 7-Schicht Referenzmodell sind Netzwerkkapazitäten durch
die Entwicklung von Repeatern, Brücken, Routern, und in letzter Zeit, "Vermittlern" gewachsen, welche
mit verschiedenen Typen von Kommunikationsmedien arbeiten. Dickdraht,
Dünndraht,
verdrilltes Paar und optische Faser sind Beispiele von Medien, welche
für Computernetzwerke
verwendet wurden. Vermittler, sofern sie sich auf eine Computervernetzung
und auf Ethernet beziehen, sind Hardware-basierte Vorrichtungen,
welche den Fluss von Datenpaketen oder Zellen basierend auf einer
Zieladress-Information steuern, welche in jedem Paket verfügbar ist.
Ein korrekt entwickelter und implementierter Vermittler sollte dazu
geeignet sein, ein Paket zu empfangen und das Paket an einen geeigneten
Ausgangsanschluss mit einer sogenannten Drahtgeschwindigkeit oder
Leitungsgeschwindigkeit, welche die maximale Geschwindigkeitsfähigkeit
des bestimmten Netzwerkes ist, zu vermitteln.
-
Eine
einfache Ethernet-Drahtgeschwindigkeit beträgt bis zu 10 Megabits pro Sekunde,
und Fast-Ethernet beträgt
bis zu 100 Megabits pro Sekunde. Das neueste Ethernet wird als 10
Gigabit-Ethernet bezeichnet und ist geeignet, Daten über ein
Netzwerk mit einer Rate von bis zu 1000 Megabits pro Sekunde zu übertragen.
Da die Geschwindigkeit gestiegen ist, sind Konstruktionseinschränkungen
und Konstruktionsanforderungen immer komplexer geworden, um geeigneten
Konstruktions- und Protokollvorschriften zu entsprechen und eine
billige, kommerziell nutzbare Lösung
zu liefern. Zum Beispiel erfordert eine Hochgeschwindigkeits-Vermittlung einen
Hochgeschwindigkeits-Speicher, um ein angemessenes Puffern von Paketdaten
zu bieten; ein üblicher
dynamischer Direktzugriffsspeicher (Dynamic Random Access Memory
DRAM) ist relativ langsam und benötigt ein Hardwaregesteuertes
Auffrischen. Die Geschwindigkeit von DRAMs als Pufferspeicher in
Netzwerkvermittlungen führt
daher zum Verlust wertvoller Zeit und es wird fast unmöglich, die
Vermittlung oder das Netzwerk bei Leitungsgeschwindigkeit zu betreiben.
-
Ferner
sollte eine externe CPU-Einbindung vermieden werden, da eine CPU-Einbindung es auch
fast unmöglich
macht, die Vermittlung mit Leitungsgeschwindigkeit zu betreiben.
Da Netzwerkvermittlungen hinsichtlich der Notwendigkeit von Regeltabellen
und einer Speichersteuerung immer komplizierter geworden sind, ist
zusätzlich
eine komplexe Multi-Chip-Lösung
notwendig, welche eine Logikschaltung, manchmal als Verknüpfungs-Logikschaltung
bezeichnet, erfordert, um es den verschiedenen Chips zu ermöglichen,
miteinander zu kommunizieren. Zusätzlich können die Mittel, mit welchen
die Elemente miteinander kommunizieren, die Betriebsgeschwindigkeit
der Vermittlung begrenzen, wenn die Elemente gezwungen sind, auf
jene Kommunikationen zu warten.
-
Bezugnehmend
auf das zuvor erläuterte
OSI 7-Schicht Referenzmodell, weisen die höheren Schichten typischerweise
mehr Information auf. Verschiedene Produkttypen sind für ein Durchführen auf
Vermittlungsvorgänge
bezogene Funktionen auf verschiedenen Stufen des OSI-Modells verfügbar. Netzknoten
oder Repeater arbeiten auf Schicht Eins und kopieren und "übertragen" im Wesentlichen eintreffende Daten
an eine Vielzahl von Verbindungen des Netzknotens. Auf Schaltvorgänge bezogene
Schicht Zwei Vorrichtungen werden üblicherweise als Multiportbrücken bezeichnet,
und sind geeignet, zwei getrennte Netzwerke zu verbinden. Brücken können eine
Weiterleitungs-Regeltabelle darauf basierend erstellen, welche MAC
(media access controller) Adressen auf welchen Anschlüssen der
Brücke
vorhanden sind, und leiten Pakete weiter, welche für eine Adresse
bestimmt sind, welche sich auf einer entgegengesetzten Seite der
Brücke
befindet. Brücken verwenden üblicherweise
den als "Spanning
Tree" Algorithmus
bekannten Algorithmus, um potentielle Datenschleifen zu vermeiden;
eine Datenschleife ist eine Situation, in welcher ein Paket auf
der Suche nach einer speziellen Adresse Endlosschleifen in einem
Netzwerk ausführt.
Der Spanning Tree Algorithmus definiert ein Protokoll zur Vermeidung
von Datenschleifen. Schicht Drei Vermittler, manchmal als Router
bezeichnet, können
Pakete basierend auf der Ziel-Netzwerkadresse weiterleiten. Schicht
Drei Vermittler sind geeignet, Adressen zu lernen und Tabellen davon
aufrecht zu halten, welche Anschluss-Zuordnungen entsprechen. Die
Prozessgeschwindigkeit von Schicht Drei Vermittlern kann verbessert
werden, indem spezialisierte Hochleistungs-Hardware verwendet wird
und die Haupt-CPU entlastet wird, so dass Anweisungsentscheidungen
nicht das Weiterleiten eines Paketes verzögern.
-
Zusätzlich spielt
die Vermittlungsanordnung auch eine wichtige Rolle für die Betriebsgeschwindigkeiten
eines Netzwerkes. Zusammen mit Netzwerkvermittlern verwendet, ermöglicht die
Anordnung das Bilden von Vermittlungseinheiten mit skalierbaren
Anschlussdichten. Die Anordnung empfängt vermittelte Daten von Netzwerkvermittlern
und muss verschiedenartige Daten (d.h. sammelgesendet, einzelgesendet,
rundgesendet, etc.) an andere verbundene Netzwerkvermittler weiterleiten.
Jedoch liefern Vermittlungsanordnungen des Standes der Technik nicht die
benötigte
Durchlaufleistung und können
die gesamte Prozess-Leistungsfähigkeit von
verbundenen Netzwerkvermittlern begrenzen.
-
Das
Dokument US-A-5 602 850 offenbart ein Hochgeschwindigkeits-Paketbussystem
für einen
Computer, welches aus einem Netzwerk aus Bussen mit parallelen Bitleitungen,
welche Zellbusse genannt werden, aufgebaut ist. Jeder Zellbus arbeitet
unabhängig
und unterstützt
wortbreite serielle Paketkommunikationen, wobei Übertragungsmittel und Empfangsmittel,
welche mit jedem einzelnen Kommunikationselement im Bussystem in
Zusammenhang stehen, mit dem Bussystem verbunden sind.
-
Das
Dokument EP-A-0 256 702 offenbart eine Vermittlungsanordnung, welche
eine N-Eingang, N-Ausgang Paketvermittlung enthält, welche eine dezentrale
Steuerung und eine verteilte Weiterleitung mit allen Eingängen und
Ausgängen
verwendet, welche bei der gleichen Bitrate arbeiten.
-
Das
Dokument CA-A-2 227 655 offenbart einen Vermittlungsmechanismus
für Datenpakete
mit festgelegter Länge,
welcher ein Pufferelement verwendet, um eine einzelne physikalische
Warteschlange zu bilden, in welcher alle Datenpakete oder Zellen
in logischen Warteschlangen organisiert sind, welche für unterschiedliche
Ausgangsanschlüsse
bestimmt sind.
-
Es
ist eine Aufgabe der Erfindung, eine Einzel-Layout Lösung mit
reduziertem Platzverbrauch bereitzustellen.
-
Diese
Aufgabe wird durch eine Speicherverwaltungseinheit nach Anspruch
1 und ein Verfahren für eine
Netzwerk-Vermittlungsanordnung zum Weiterleiten von Daten nach Anspruch
7 gelöst.
Vorteilhafte Ausführungsbeispiele
der Erfindung sind in den abhängigen
Ansprüchen
angegeben.
-
Die
vorliegende Erfindung ist auf eine Vermittler-auf-Chip Lösung für eine Selbstweiterleitende
Anordnung gerichtet, welche geeignet ist, Ethernet, Fast-Ethernet und 1 und
10 Gigabit Ethernetsysteme zu verwenden, wobei sämtliche Hardware auf einem
einzelnen Mikrochip angeordnet ist. Die vorliegende Erfindung ist auch
auf Verfahren gerichtet, die eingesetzt werden, um das gewünschte Verarbeiten
und Weiterleiten von Daten zu erzielen. Die vorliegende Erfindung
ist darauf ausgelegt, die Fähigkeit
einer Paket-Weiterleitung mit Leitungsgeschwindigkeit zu maximieren,
und auch eine modulare Anordnung bereitzustellen, wobei eine Vielzahl von
getrennten Modulen auf einem gemeinsamen Chip angeordnet ist und
worin einzelne Entwurfsänderungen
bei bestimmten Modulen nicht die Beziehung jenes bestimmten Moduls
zu anderen Modulen in dem System beeinflussen.
-
Die
vorliegende Erfindung ist auf eine Speicherverwaltungseinheit (MMU)
für eine
Netzwerk-Vermittlungsanordnung zum Weiterleiten von Daten gerichtet.
Die MMU hat eine Eingangsanschluss-Schnittstelle, welche Abschnitte
eines Datenpakets empfängt,
und eine Ausgangsanschluss-Schnittstelle, welche über einen
Eingangs-Busring
mit Eingangsanschlüssen
der Anordnung verbunden ist. Die MMU enthält ebenfalls einen Zellen-Paketierer,
welcher Paketdaten in Zellen gruppiert, und einen Paketpool-Speicher,
welcher vom Zellen-Paketierer empfangene Zellen speichert. Die MMU
enthält
ebenfalls einen Zellen-Entpaketierer, wobei der Zellen-Entpaketierer gespeicherte
Zellen separiert, bevor die Zellen an einen Ausgangsanschluss freigegeben
werden. Die MMU enthält
ebenfalls einen Ausgangs-Planer, welcher mit dem Zellen-Entpaketierer
kommuniziert, wobei der Ausgangs-Planer gemäß von Prioritätsregeln
bestimmt, welche Paketdaten vom Paketpool-Speicher erlangt werden
sollen. Die Prioritätsregeln
können
einen Defizit-Ringversuch-Planungsalgorithmus
oder einen gewichteten Ringversuch-Planungsalgorithmus enthalten.
-
Die
MMU enthält
ebenfalls eine Serie von Transaktions-Warteschlangen, welche Eingangspunkte
an Anfängen
von Paketen im Paketpool-Speicher speichern, und ein Verbindungslisten-Datenfeld,
welches eine Abbildung von den Zellen im Paketpool-Speicher bereitstellt.
Das Verbindungslisten-Datenfeld kommuniziert mit den Transaktions-Warteschlangen,
und der Paketpool-Speicher und die Transaktions-Warteschlangen kommunizieren mit dem
Ausgangs-Planer, um bei einer Pufferung der Paketdaten zu unterstützen. Die
Transaktions-Warteschlangen sind derart aufgebaut, dass sie ein
Alter von Paketdaten in den Transaktions-Warteschlangen überwachen,
und die Paketdaten abführen,
wenn das Alter größer als
ein vorbestimmter Wert ist. Ebenfalls sind die Transaktions-Warteschlangen
derart aufgebaut, dass sie bestimmen, ob eine Klasse von einer Dienstklasse-Warteschlange in
den Transaktions-Warteschlangen ein Limit erreicht hat, und das
Datenpaket abführen,
wenn die Warteschlange in den Transaktions-Warteschlangen das Limit
erreicht hat. Zusätzlich ist
der Paketierer derart aufgebaut, dass er solange abwartet, bis eine
Zelle gefüllt
ist, bevor die Zelle an den Paketpool-Speicher gesendet wird, wobei
die Zellenlänge
von der Zelle gleich 640 Bit beträgt. Die MMU kann ebenfalls
einen Speicherfehler-Erfasser und ein Mittel zum Wiedererlangen
von einem erfassten Speicherfehler enthalten.
-
Die
vorliegende Erfindung ist ebenfalls auf eine Netzwerk-Vermittlungsanordnung
gerichtet, welche die Speicherverwaltungseinheit hat. Diese Netzwerk-Vermittlungsanordnung
enthält
eine Serie von Bussen als den Eingangs-Busring, wobei die Anzahl
der Serie von Bussen gleich der Anzahl von Eingangs-Anschlüssen ist.
Zusätzlich
ist der Eingangs-Busring derart aufgebaut, dass er einen Energieverbrauch
optimiert, indem ein Ausgangs-Kennfeld für ein Paket, welches an einem
der Eingangsanschlüsse
ankommt, untersucht wird, und lediglich Paketdaten auf den Ring
weitergeleitet werden, wenn ein nachfolgender Eingangsanschluss
auf dem Ring im Ausgangs-Kennfeld spezifiziert ist. Ebenfalls enthält die Anordnung
einen Meldungs-Ring, welcher mit Eingangs- und Ausgangsanschluss-Stationen
von der Netzwerk-Vermittlungsanordnung verbunden ist, welcher dazu
verwendet wird, um Meldungen zwischen Stationen zu passieren. Ebenfalls
kann eine zentrale Verarbeitungseinheit mit der Anordnung verbunden
sein und über
den Meldungs-Ring
mit den Eingangs- und Ausgangsanschluss-Stationen kommunizieren.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
Aufgaben und Merkmale der Erfindung sind unter Bezugnahme auf die
folgende Beschreibung und die beigefügten Zeichnungen einfacher
zu verstehen, worin:
-
1 ein
Blockdiagramm zeigt, welches ein Ausführungsbeispiel der vorliegenden
Erfindung erläutert,
welches mit Netzwerk-Vermittlern verwendet wird, um eine 64-Anschluss Gigabit
Lösung
zu erzielen;
-
2 schematisch
Elemente der Anordnung von der vorliegenden Erfindung zeigt;
-
3 schematisch
die interne Blockstruktur eines Ausführungsbeispiels der vorliegenden
Erfindung zeigt;
-
4 ein
Flussdiagramm für
die Eingangslogik für
die vorliegende Erfindung zeigt;
-
5 ein
Unter-Flussdiagramm für
die Eingangslogik für
die vorliegende Erfindung zeigt;
-
6 ein
Unter-Flussdiagramm für
die Eingangslogik für
die vorliegende Erfindung zeigt;
-
7 ein
weiteres Flussdiagramm für
die Eingangslogik für
ein Ausführungsbeispiel
der vorliegenden Erfindung zeigt;
-
8 die
Topologie des Eingangs-Busringes erläutert;
-
9 ein
kürzestes
Pfad-Kennfeld von Anschluss-zu-Anschluss erläutert;
-
10 schematisch
die Warteschlangen-Struktur der Speicherverwaltungseinheit der vorliegenden Erfindung
erläutert;
-
11 ein
Berechnen des Blockpausen-Verhaltens erläutert;
-
12 ein
Schema darstellt, welches eine Station des Eingangs-Busringes näher beschreibt;
-
13 ein
Schema der Ring-Konnektivität
des Eingangs-Busringes darstellt;
-
14 ein
Schema darstellt, welches die verschiedenen Paketgrenzen-Fälle innerhalb
einer Zelle des Speichers erläutert;
-
15 ein
Flussdiagramm darstellt, welches ein Wiederherstellungsverfahren
bei einem Speicherfehler bei der vorliegenden Erfindung erläutert;
-
16 ein
Blockdiagramm für
den Entpaketierer der vorliegenden Erfindung darstellt.
-
GENAUE BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
-
Die
vorliegende Erfindung ist auf eine selbst-weiterleitende Anordnung
mit 4/8 10 Gigabit Schnittstellen gerichtet. Die externe Bandbreite
der Anordnung beträgt
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung 80/16 Gbps. Die vorliegende Erfindung
ermöglicht
das Aufbauen von skalierbaren Gigabit Anschlussdichten zusammen
mit anderen Netzwerk-Vermittlungsvorrichtungen.
-
Die
vorliegende Erfindung stellt eine Anordnung als Einzel-Chip Lösung bereit,
welche eine Durchlaufleistung von bis zu 160 Gbps unterstützt. Die
vorliegende Erfindung unterstützt
8 Anschlüsse
bei 10 Gbps Voll-Duplex-Betrieb und ermöglicht ein Weiterleiten mit
voller Leitungsgeschwindigkeit auf jedem Anschluss. Die Anordnung
unterstützt
auch acht IEEE 802.1p Prioritätsklassen,
strenge Priorität
und gewichteten, zyklischen Ringversuch-Warteschlangenbetrieb. Die
Anordnung der vorliegenden Erfindung unterstützt 4096 VLANs für unbekannte
Einzelsendungen/Rundsendungen und unterstützt IEEE 802.3x Ablaufsteuerung
auf jedem Anschluss. Die vorliegende Erfindung unterstützt auch
eine Vorrichtung zur Vermeidung von Zeilenkopf (HOL)-Blockierung
auf einem Sendeanschluss und unterstützt Bündeln und Spiegeln und Redundanz. Schließlich stellt
die vorliegende Erfindung in einem Ausführungsbeispiel eine 66 MHz,
32-bit PCIX Erweiterungsschnittstelle für CPU und andere PCI konforme
Vorrichtungen bereit.
-
1 erläutert ein
Beispiel einer Anordnung der vorliegenden Erfindung, welches eine
spezielle Anwendung darstellt. 1 erläutert ein
Beispiel einer 64-Anschluss Gigabit Lösung (nicht-blockierend), welche die
Anordnung der vorliegenden Erfindung und Netzwerkschalter verwendet.
Die allgemeine Struktur der Anordnung der vorliegenden Erfindung
ist in 2 erläutert.
Ein bevorzugtes Ausführungsbeispiel
der Anordnung weist acht Anschluss-Schnittstellen mit Datenraten
von 10 Gbps und einen internen Ring auf, welcher die Übertragung
von Information und Paketdaten zwischen den Anschluss-Schnittstellen
ermöglicht.
-
Die
vorliegende Erfindung stellt eine Hochgeschwindigkeits-Anordnung
dar, welche bezüglich
der Logik von Entscheidungen für
ein Weiterleiten von Datenübertragungsblöcken einfach
ist. Jedes Paket, welches in die Anordnung eintritt, muss einen
Modulkopf aufweisen, welcher Information für Einzelsende-Pakete über das/die
Zielmodul(e) enthält,
zu welchem/-n ein Datenübertragungsblock
weitergeleitet werden muss. Der Modulkopf wird am Eingang von den
Netzwerkschaltern vorangestellt.
-
In
einem bevorzugten Ausführungsbeispiel
besteht die Anordnung aus 8 Anschlüssen, von denen jeder mit einer
Geschwindigkeit von 10 Gigabit arbeitet. An jeden Anschluss wird
der Modulkopf untersucht und die Ausgangsanschluss-Bitmap wird darauf
basierend ermittelt, ob das Paket ein bekanntes Einzelsende-, ein unbekanntes
Einzelsende-, ein Rundsende-, ein Sammelsende-, oder ein IP Sammelsendepaket
ist. Die obigen Pakettypen werden im folgenden behandelt.
-
EINZELSENDE-PAKET
-
Wenn
ein Datenübertragungsblock
von dem Eingang der Anordnung empfangen wird, zeigt der Opcode-Wert
von 1 in dem Kopf an, dass das Paket ein Einzelsende-Paket ist, die Ausgangsanschluss-
und die Zielmodul-ID (DST_MODID)-Information in dem Modulkopf gültig ist.
Die Anordnung leitet das Paket an einen Ausgangsanschluss der Anordnung
weiter, welcher den Pfad zu dem Zielmodul darstellt. Alternativ
kann es in einigen Ausgestaltungen mehr als einen Pfad zu dem Zielmodul
in der Anordnung geben. Daher kann die Anordnung gezwungen sein,
einen Ausgangsanschluss basierend auf dem Anordnungs-Eingangs-Anschluss und
der Zielmodul-ID wählen.
In Ausgestaltungen, in welchen die Zielmodule direkt mit der Anordnung
verbunden sind, basiert die Auswahl des Anordnungs-Ausgangsanschlusses
auf dem Zielmodul und ist unabhängig von
dem Anordnungs-Eingangsanschluss.
-
Um
ein Weiterleiten eines Datenübertragungsblockes
eines Einzelsende-Paketes innerhalb der Anordnung in jeder Ausgestaltungsform
zu unterstützen,
wird eine einfache Weiterleitungs-Tabelle bereitgestellt. Das Format
dieser Tabelle ist wie folgt:
-
-
Diese
Tabelle ist 32 tief und wenn ein bekanntes Einzelsende-Paket an
dem Anordnungseingang eintrifft, wird DST_MODID von dem Modulkopf
herausgezogen und in der obigen Tabelle herausgesucht. Die resultierende
Bitmap wird verwendet, um die geeigneten Anschlüsse, die zu den Bitfeldern
gehören,
weiterzuleiten.
-
RUNDSENDE-PAKET/DLF WEITERLEITUNG
-
Wenn
ein Paket an dem Anordnungseingang mit Opcode-Wert 2 eintrifft,
zeigt er an, dass das Paket entweder ein Sammelsende-Paket oder
ein unbekanntes (Domain Lookup Failure) Einzelsende-Paket ist. In diesem
Fall wird die VLAN ID verwendet, um alle Anschlüsse anzuzeigen, zu denen das
Paket geliefert werden soll. Eine Tabelle wird auf jedem Anschluss
bereitgestellt:
-
-
Die
Tabelle ist 4096 Einträge
tief und erlaubt alle Werte von VLAN Klassifizierung.
-
WEITERLEITEN VON SAMMELSENDE-PAKETEN
-
Wenn
ein Paket an dem Anordnungseingang mit Opcode-Wert 3 oder 4 eintrifft,
ist es jeweils eine Sammelsendung (MC = Multicast)- bzw. eine IP
MC. Eine Tabelle ist für
die Weiterleitung dieser Pakete implementiert. Der Index in dieser
Tabelle ist eine Kombination aus der Zielanschluss-ID (DST_PORTID)
und der Zielmodul-ID (DST_MODID), welche aus dem Modulkopf herausgezogen
werden.
-
-
Es
existieren acht Kopien aller obigen Tabellen, oder eine pro Anschluss.
Die Ausgestaltung der Anordnung der vorliegenden Erfindung schließt ein Ausgangs-Maskenregister (EGRESS_MASK)
ein. Dieses Register identifiziert die Gruppe von Anschlüssen, zu
welchen das Paket nicht von einem Eingangsanschluss gesendet werden
darf. Dieses Register ist 9 Bit breit und es gibt ein Register pro
Anschluss.
-
Jeder
Eingangsanschluss besitzt die folgenden Blöcke: einen Kern für physikalische Übertragung (SerDes),
ein 10-Gigabit Ethernet Voll-Duplex MAC und ein Eingangslogik-Block,
welcher das Weiterleiten eines Datenübertragungsblockes bestimmt
(ING). Jeder Ausgangsanschluss besitzt die folgenden Blöcke: einen Eingangs-Busring-Knoten
(IBR = Ingress Bus Ring); eine Speicherverwaltungseinheit (MMU =
Memory Management Unit) und ein Paket-Pool RAM.
-
Die
vorliegende Erfindung unterstützt
auch viele spezifische Merkmale. Die Anordnung unterstützt Verbindungs-Aggregation
(Bündeln)
ihrer acht 10 Gbps Anschlüsse.
Bis zu 4 Leitungsbündel
können
unterstützt
werden, jedes mit bis zu einem Maximum von vier Mitgliedern. Die
Leitungsbündel-Tabelle
wird verwendet, um den Ausgangsanschluss zu erlangen, wenn ein Paket über einen
gebündelten
Anschluss hinausgehen muss. Das RTAG wird der Leitungsbündel-Tabelle
von der Leitungsbündel-Verteilungs-Logik
entnommen, um den Verteilungsalgorithmus zu bestimmen.
-
-
Es
gibt vier Kopien der obigen Tabelle, welche vier Leitungsbündel erlauben.
-
Die
Anordnung der vorliegenden Verbindung unterstützt auch ein dynamisches Abschalten
der Anschlüsse
für den
Fall, dass die Verbindung abbricht. Die Anordnung unterbricht in
einem derartigen Fall die CPU. Die CPU ist dann verantwortlich für das Programmieren
der EPC Verbindungsregister, um Pakete aus dem deaktivierten Anschluss
zurückzuweisen.
Ein EPC Verbindungsregister ist eine Bitmap, welche die Anschlüsse darstellt,
welche ein gültiges
Verbindungssignal aufweisen. Zusätzlich
wird auch Spiegelung unterstützt.
Das Spiegel-zu-Anschluss-Register
zeigt den Spiegel-zu-Anschluss in der Vorrichtung an und spezifiziert
das Weiterleiten von Paketen, welche gespiegelt werden sollen. Die
Spiegel-Information wird aus dem Modulkopf herausgezogen. Ein CPU-zu-Anschluss-Register
wird auch unterstützt.
-
Eine
Priorität
auf COS Warteschlangen-Abbildungsregister (COS_SEL) wird verwendet,
um die Priorität
eines eintreffenden Paketes oder die erlangte Priorität eines
Paketes (nach Adressbestimmung und Filtervorrichtung) auf die Ausgangs-COS-Warteschlange
abzubilden. Das Abbilden der Priorität auf die COS Warteschlange
wird durchgeführt,
nachdem das Paket die Adressbestimmung und die Filtervorrichtung
durchlaufen hat, direkt bevor das Paket auf dem CP Kanal gesendet
wird. Dieses Abbilden ändert
nicht das Prioritätsfeld
in dem Kennzeichenkopf des Paketes, es bestimmt nur, aus welcher
COS Warteschlange das Paket an den Ausgangsanschluss hinausgehen
soll. Der Bedarf für
dieses Register entsteht aufgrund empfohlener Abbildungen von Benutzer-Priorität auf eine
in dem 802.1p Standard-definierte Verkehrsklasse.
-
Zusätzlich sind
Konfigurationsregister in der Anordnung verfügbar. Jeder der folgenden besitzt
8 Kopien dieser Register, d.h., eine pro Anschluss. Ein MODE Register
wird gesetzt, wenn alle Anschlüsse
in der Anordnung im HiGig Modus arbeiten, andernfalls arbeitet die
Vorrichtung in einem Modus mit niedriger Bit Rate. Register werden
auch unterstützt,
um Ansteuerungen für
sowohl hohe als auch niedrige Wasserpegelstände (watermarks) für die Eingangs-Gegendruck-Flusssteuerung zu
liefern. Ein weiteres Register spezifiziert auch den Prioritäts-Warteschlangen-Algorithmus,
einschließlich
einem strengen Prioritätsmodus,
einem gerichteten zyklischen Modus und einem defizitären, zyklischen
Modus. Register werden auch bereitgestellt, welche die Prioritätsgewichtungen
für die
Diensteklassen und das HOL-Blockierlimit für jeden speichern.
-
Die
folgenden Zähler
werden auch Anschluss-bezogen auf einer Sende- und Empfangsseite
bereitgestellt. Eine Eingangs-Wortzählung liefert die Zahl an Wörtern, die
durch den MAC empfangen werden, und eine Ausgangs-Wortzählung liefert
die Zahl an Wörtern,
die in dem Ausgang auf einer COS-Basis gespeichert sind. Zählungen
fallengelassener Pakete werden für
die Zahl von Paketen bestimmt, die von der Eingangslogik fallengelassen
worden sind, und eine Zählung
fallengelassener HOL Pakete liefert die Zahl von durch COS fallengelassenen
Paketen. Eine Zählung
bezüglich
der Zahl von aufgrund von Alterung ausgesonderten Paketen wird auch
aufrechterhalten.
-
Zusätzlich liefert
die Anordnung der vorliegenden Erfindung eine Unterstützung von
gesichertem Weiterleiten (Assured Forwarding Support). Dieses Merkmal
liefert ein begünstigtes
Fallenlassen von Paketen in der Anordnung, wenn ein spezielles Bit
in den Modulkopf gesetzt ist. Dieses Bit in dem Modulkopf wird von dem
Netzwerkschalter gesetzt, wenn eine bestimmte Aussonderungspriorität gesetzt
ist. Wenn ein Paket in einer MMU der Anordnung eintrifft, mit gesetztem
Bit, wird die Zahl von Paketzeigern für die COS Warteschlange, welche
dem Paket zugeordnet ist, mit einem CNGTHRESHOLD Register abgeglichen.
Falls die Zahl der Einträge
in der COS Warteschlange für
den Anschluss den Wert in dem CNG THRESHOLD Register übersteigt,
wird das Paket fallengelassen.
-
Andernfalls
wird das Paket in der COS Warteschlange in der MMU aufgenommen.
Wenn das Paket fallengelassen wird, wird ein CNGDROPCOUNT Zähler aktualisiert.
Falls das bestimmte Bit in dem Modulkopf nicht gesetzt ist, werden
alle Pakete in der COS Warteschlange aufgenommen, bis der COS Warteschlangen-Schwellwert
erreicht ist.
-
LOGISCHER
FLUSS AM EINGANG
-
Der
logische Fluss am Eingang in die Anordnung hinein wird nun erörtert. 4 zeigt
ein Flussdiagramm, welches einen Teil der Logik bereitstellt. In
dem ersten Schritt wird die Anschluss-Bitmap initialisiert, und
der COS wird von dem Modulkopf erlangt. Ein Opcode wird auch aus
dem Modulkopf gelesen. Falls das Paket nur gespiegelt wird, wird
keine weitere Auswertung des Kopfes benötigt. Andernfalls wird der
Pakettyp aus dem Opcode bestimmt, wobei die Anschluss-Bitmap oder
eine andere Bitmap festgelegt wird. Die unterstützten Typen schließen ein
CPU Paket, welches zu der CPU gesendet wird, eine Einzelsendung,
eine Rundsendung, eine Schicht-2-Sammelsendung und eine IP Sammelsendung
ein. Sobald die geeigneten Variablen gesetzt sind, führt der
logische Fluss zu dem Unter-Flussdiagramm M, außer die Logik schreibt vor,
dass das Paket fallengelassen werden soll. In letzterem Fall wird
ein Eingangszähler
erhöht.
-
Der
logische Fluss wird in M, 5, fortgesetzt,
in welchem dann, falls das Paket nur gespiegelt wird, ein Register überprüft wird
und falls das Paket noch nicht gespiegelt worden ist, wird das Spiegel-zu-Anschluss-Register
festgelegt und die Anschluss-Bitmap wird festgelegt, um das Paket
zu spiegeln. Wenn der Eingangsanschluss Teil eines Leitungsbündels ist,
wird als nächstes
die Anschluss-Bitmap
dementsprechend festgelegt. Das Bearbeiten von Anschlüssen in
einem Leitungsbündel
wird speziell in 6 behandelt.
-
7 erläutert einen
unterschiedlichen Betriebsmodus für die Paketauswertung. Das
alternative Verfahren untersucht Bits der Herkunfts- und Zielanschlüsse. In
diesem Fall wird eine Vorrichtungs-Anschluss Abbildungstabelle verwendet,
um den Schalter-Ausgangsanschluss zu bestimmen. Es wird angemerkt,
dass die Betriebsmodi nicht vermischt werden sollten, letzterer
Modus sendet jede Rundsendung, Sammelsendung und unbekannte Einzelsendung
an alle Anschlüsse
und Spiegeln wird in dem letzteren Modus nicht unterstützt.
-
AUFBAU DER
SPEICHERVERWALTUNGSEINHEIT
-
Als
nächstes
werden der Aufbau und die Arbeitsweise der Speicherverwaltungseinheit
der Anordnung der vorliegenden Erfindung ausführlicher erläutert.
-
Die
Hauptfunktionen der Anordnung der vorliegenden Erfindung können in
verschiedene Bereiche eingeteilt werden. Erstens, die Vermittlungsanordnungs-Bandbreite betreffend,
nimmt die Anordnung Paketströme
von acht Eingangsanschlüssen
mit in der Summe maximal 80 Gbps auf. Die Anordnung ermöglicht,
dass Pakete an einem geeigneten Ausgang, für Einzelsendungen und Sammelsendungen
mit insgesamt 80 Gbps, austreten, und berücksichtigt die Inanspruchnahme
von Kapazität
durch Eingang/Ausgang. Die Anordnung verwaltet effektiv Rundesendeverkehr
und bearbeitet den zusätzlichen
Modulkopf, welcher mit jedem Paket kommt. CPU Verkehr kann auch
von oder zu jedem Anschluss kommen und weist eine maximale Datenblockrate
von ~2 Gbps auf.
-
Die
Anordnung unterstützt
auch 802.1p Warteschlangenbildung. Die Anordnung priorisiert Pakete
von COS und unterstützt
bis zu 8 Warteschlangen. Die Anordnung unterstützt auch strenge Priorität und faire
Warteschlangenbildung mit gewichteter Zuordnung durch Paketzählung. Die
Anordnung gewährleistet
ferner geeignete Ablaufsteuerung und Kapazitätsverwaltung. Wenn ein bestimmter
Eingang einen Kapazitätsgrenzwert übersteigt,
wird der verletzende Eingangsanschluss gemeldet. Der MAC sollte
einen PAUSE Datenübertragungsblock
an seinen Verbindungspartner senden, um den Paketfluss zu stoppen.
Wenn ein bestimmter Ausgang einen Zell-Kapazitätsgrenzwert überschreitet,
tritt ein HOL (Head Of Line) Blockieren auf. Wenn sich ein bestimmter
Ausgang in dem HOL Zustand befindet, wird jedes Paket von jedem
Anschluss, welches für
jenen Ausgang bestimmt ist, fallengelassen. Wenn eine Vorgangs-Warteschlange
für eine
bestimmte COS für
einen bestimmten Ausgang voll wird, tritt sie in einen HOL (Head
Of Line) Blockierzustand ein. Sämtliche
neue Pakete werden jedem Anschluss, welche für jenes COS/Ausgangs-Paar bestimmt
sind, werden gelöscht.
-
Zusätzlich stellt
das Folgende erweiterte Merkmale dar, welche in bestimmte bevorzugte
Ausführungsbeispiele
integriert werden können.
Die Anordnung unterstützt
faire Warteschlangenbildung mit gewichteter Zuordnung durch Bytezählung und
sieht Wiederherstellungsmaßnahmen
bei Speicherfehlern vor.
-
EINGANGSBUS-RING
-
Die
Architektur der Anordnung schließt spezielle Teile ein, welche
die Fähigkeit
der Anordnung verbessern, Pakete weiterzuleiten. Ein erster Teil
ist ein Eingangsbus-"Ring". Beispielsweise
kann die Architektur für die
MMU ein aufgeteiltes festes Kapazitätsschema sein, in welchem eine
lokale Kopie eines RAMs (128 K Bytes) jedem Anschluss zugeordnet
ist. Jeder Anschluss ist mit den benachbarten Anschlüssen über eine Sammlung
von unidirektionalen Bussen verbunden, welche gewissermaßen einen
Ring bilden, welcher alle neun (8 + CPU) Anschlüsse verbindet. Dieser Bus wird
fortan Eingangsbus-Ring (IBR = Ingress Bus Ring) genannt. Die Busse
sind 64 Bits breit und es gibt einen Bus für jeden Eingang (daher 64·8 = 512
Bits insgesamt). Die Busse sind verbunden und jeder Bus entsteht
an dem Ausgang eines Flops eines Anschlusses und endet an dem Eingang
eines Flops an seinen benachbarten Anschluss. Dies wird in 3 erläutert. Dieses Punkt-zu-Punkt-Schema
beschäftigt
sich mit vielen technischen Entwurfsfragen, die auftreten, falls
andererseits ein mehrfach benutzter globaler Speicher mit breiten
(512 Bits) Datenleitungen vorliegt. Dieses Schema macht ferner jeden
Anschluss zu einer getrennten logischen Einheit, welche wertvoll
für die
Testbarkeit ist.
-
Der
IBR überbringt
Paketdatenverkehr, welcher von dem Anschluss-Eingangs-Ausgangs-Block (PIE =
Port Ingress-Egress) und tritt jeden Taktzyklus 64 Bit breit auf.
Die Daten werden sofort auf lokalen Flops auf dem Bus gespeichert.
Und bei jedem Takt wird dieses Wort in den Flops an dem benachbarten
Anschluss/Anschlüssen
gespeichert. Die MMU an jedem Anschluss überwacht dann die Wortströme auf dem
Ring und ergreift das Paket, falls sie eine Zielanschluss-Übereinstimmung feststellt.
Zielanschluss-Information wird über ein
Steuerwort kommuniziert, welches mit dem Paket über einen Seitenband-Bus synchronisiert
ist.
-
Eine
Energieoptimierung, welche vorgenommen werden kann, ist ein Sperren
der Datenweitergabe, falls keine Anschlüsse unten auf dem Ring Empfänger dieses
Paketes sind. Ferner leitet in einem Ausführungsbeispiel jeder Buskanal
das Wort in einer Richtung weiter, was zu einer maximalen Wartezeit
von 8 Takten (oder 8 Sprüngen)
führt,
um den entferntesten Anschluss zu erreichen. Dies kann verbessert
werden, wenn die Wörter
in entgegengesetzte Richtungen (im Uhrzeigersinn und gegen den Uhrzeigersinn)
weitergeleitet werden, sodass der maximale Sprung sich auf 4 erniedrigt.
Das folgende in 8 gezeigte Diagramm gilt für jeden
Anschluss.
-
Effektiv
gibt es 9 Busse in dem Anordnungschip (9 = 8 Anschlüsse + CPU
Anschluss). Wenn jedoch ein Querschnitt zwischen zwei beliebigen
Anschlüssen
vorgenommen wird, wird Raum für
nur 8 Busse benötigt,
da für
jeden Anschluss n seine Nachbarn n + 4 und n – 4 nicht verbunden sind. Kein
Bus ist eine wirklich geschlossene Schleife. Eine kürzester-Weg-Karte
von jedem Anschluss zu jedem anderen Anschluss in diesem Schema
ist in 9 erläutert.
-
ANSCHLUSS-COS
PAARE
-
Ein
weiterer Teil der Anordnung befasst sich mit Anschluss-COS Paaren.
Pakete treffen als 8 Byte-Wörter
ein, aber das RAM hat eine Breite von 80 Byte-Zellen. Dieses Missverhältnis wirft
einige Verwendungsprobleme auf, besonders, wenn Paketlängen pathologische
Fälle,
wie Zellgröße + 1 (CELLSIZE
+ 1) (d.h., 65 Byte-Pakete)
sind. Falls ein solcher Zustand fortdauert, wird eine RAM Bandbreite
erheblich beeinträchtigt,
was zu einer schwierigen 3,6 Lese-/Schreib-Erfordernis pro Takt
führt.
-
Um
dieses Problem zu lösen,
werden Pakete zwischen RAM Grenzen gepackt und entpackt. Wörter werden
in einer Registerdatei (oder SRAM) FIFO gesammelt, bis eine Zellgröße vor einem
Schreiben fertig ist. Zellen werden aus einem Speicher gelesen,
in ein FIFO eingebracht und dann langsam an den PIE als Wörter gegeben.
-
Dies
jedoch wirft ein weiteres Problem auf, um SAP-zu-SAP Sequenzialisierung
aufrechtzuerhalten, müssen
Pakete an sehr spezifischen Plätzen
im RAM angeordnet werden, so dass sein Eingang-zu-Ausgang-Pfad nicht
durch Pakete von anderen Anschlüssen
und Diensteklassen verfälscht
wird. Daher wird eine Verwendung eines "Anschluss-COS" Paares eingeführt. Ein Anschluss-COS Paar
besteht aus zwei Zahlen P:C. P bestimmt, von welchem Anschluss das
Paket kam, und C bestimmt, welcher Diensteklasse dieses Paket angehört. Jedem
Paket, welches in das Anordnungssystem eintritt, wird eine P:C Kennzeichnung
gegeben (obwohl dies vielleicht nicht von jedem Speicherelement
dargestellt wird), und sie müssen
einem bestimmten P:C Strom in dem System folgen.
-
Mit
Bezug auf dieses System gelten P = 9 – 1 = 8, da keine Pakete für seinen
eigenen Anschluss bestimmt sind, C = 4 und P·C – 32. Daher können bis
zu 32 Ströme
in der Anordnung auftreten. Für
jeden Anschluss existieren logisch 8 Pack FIFOs, 8 Warteschlangen
im Speicher und 8 Entpack-FIFOs.
-
MITTEILUNGSRING
-
Ein
weiterer Teil der Anordnung ist ein Mitteilungsring (MR = Message
Ring). Um alle Stationen zur Steuerung zu verbinden, wird ein weiterer
Ring, welcher unidirektional ist, an jede Station "gefloppt" ist und als eine
geschlossene Schleife ausgebildet ist. Dieser Ring bietet ein allgemeines
Verfahren der Mitteilungsübermittlung
zwischen Stationen (einschließlich
der CPU). Gegenwärtig
dient er zwei Hauptzwecken: CPU Register/Speicher-konformer Zugriff
zwischen allen Stationen und Berichten zwischen Eingangs- und Ausgangsstationen.
-
Das
Mitteilungsübertragungs-Protokoll
auf dem MR kann analog zu jenem eines IEEE 802.5 Token-Ring-Netzes,
oder eines ISO 8802.7 geteilten Ring-Netzes sein. Register-/Zähler Lese-/Schreibvorgänge sowie
Speicheranfragen und Bewilligungen auf dem MR werden unter Verwendung
dieses Protokolls weitergeleitet. Es gibt zwei Anforderungen bei
der Wahl eines Protokolls, es muss 1) der im ungünstigsten Fall benötigten Bandbreite
genügen,
und 2) das Protokoll selbst muss robust und deterministisch (testbar)
sein und niemals ein Blockieren auslösen.
-
Die
Bandbreite im ungünstigsten
Fall ist gegenwärtig
durch Stationen übergreifendes
Berichten vorherbestimmt. Stationen übergreifendes Berichten ist
ein Verfahren, mit welchem ein Eingang berechnen kann, wie viele
Bytes von jedem Ausgang für
alle Pakete ausgesendet worden sind, welche von dem Anschluss aufgenommen
wurden. Wenn nicht genügend
Bytes gutgeschrieben wurden, wird er in den Gegendruck-(Back Pressure)
Zustand eintreten, nachdem der Zähler
einen programmierten Wasserpegelstand erreicht.
-
In
diesem Mechanismus führt
jeder Ausgang einen Zähler,
welcher verfolgt, wie viele Bytes er für Pakete ausgesendet hat, welche
von anderen Anschlüssen
kamen. Daher muss er 8 Zähler
führen.
Nach einem programmierten Schwellwert muss jeder Ausgang diesen
Zählwert
zurück
an den entsprechenden Ursprungseingang berichten. Der MR weist 9
Stationen auf und es wird ein Takt pro Station benötigt. Der
ungünstigste Fall
beträgt
9·8 =
72 Takte, bevor ein Ausgang all seine Gutschriften eliminieren kann.
-
ADAPTIVER
ERWEITERTER SPEICHER
-
Die
obige Speicherarchitektur hat jedoch eine Schwäche. Wenn nur 3 Anschlüsse aktiviert
sind, sind nur 3·256
KB oder 768 KB zur Paketspeicherung verfügbar. Tatsächlich können, wenn der einzige Datenverkehr
darin besteht, dass zwei dieser Anschlüsse an den dritten Anschluss
senden, nur 256 KB verwendet werden. Die RAMs in dem verbleibenden
Teil des Chips sind vergeudet.
-
Die
adaptive, erweiterte Speicherarchitektur der vorliegenden Erfindung
erstreckt sich auf ein Einschließen eines adaptiven Protokolls,
um Elastizität
bei der Speicherverwendung zu bieten. Um diese Adaption zu übertragen,
wird ein Mitteilungsübertragungs-Protokoll
verwendet (über
dem MR). Ein Anschluss tritt in den PANIC-Modus ein, wenn seine
Anzahl freier Zellen einen niedrigen Wasserpegelstand erreicht.
In diesem Zustand wird der Anschluss den nächsten verfügbaren Platz auf dem MR einnehmen
und sendet eine Speicheranfrage-Mitteilung.
Nur deaktivierte Anschlüsse
können
an der Gewährung
von Speicherverwendung an panische Anschlüsse teilnehmen. Wenn die ursprüngliche
Anfrage zu dem Anfordernden zurückkehrt,
nachdem sie die Schleife durchlaufen hat, zeigt sie an, dass entweder
kein Anschluss deaktiviert ist oder dass alle deaktivierten Anschlüsse bereits
jemand anderem helfen.
-
Falls
die Anfrage-Mitteilung bearbeitet wird und eine Speichergewährungs-Mitteilung
zurücksendet, hört der anfragende
Anschluss auf, an ihn gerichtete Pakete anzunehmen. Der gewährende Anschluss
beginnt an dessen Stelle Pakete anzunehmen. Da alle Pakete für alle Anschlüsse sichtbar
sind, kann dieser Wechsel von Paket-Eigentum vorgenommen werden,
aber nicht ohne Vorsicht. Es gibt verschiedene Probleme bei einer Weitergabe-
und Abgabe-Zeitsteuerung, die beachtet werden müssen.
-
Als
Beispiel sind drei aktive Anschlüsse
zu betrachten: mit 0, 4 und 8 nummeriert, und 5 ungenutzte Anschlüsse, nummeriert
mit 1-3 und 5-7. Jeder aktive Anschluss benützt einen erweiterten Speicher
von mehr als 256 KB Speicher. Hilfs-MMUs, wie in Anschlüssen 5,
6 und 7, akzeptieren und speichern Pakete im Auftrag von Anschluss
4, wodurch sie Anschluss 4 eine effektive Speicherverwendung von
1 Mbytes gestatten. Jede Hilfs-MMU muss Paar-COS Ströme aufrechterhalten
sowie den in dem System vorhandenen Prioritätsalgorithmen folgen.
-
Pakete
werden von Anschluss 4 abfließen,
sobald seine freie-Zellen-Zählung
einen niedrigen Wasserpegelstand erreicht, und er wird eine Trenn-Anfragemitteilung
für seinen
Hilfsanschluss aktivieren. Dann wird Anschluss 5, der nachgeschaltete
Hilfsanschluss, "langsam" seine Ströme in einen
Speicher zu Anschluss 4 ableiten. Dieser Effekt pflanzt sich entlang
der Linie von Helfern fort. Bis ein Speicher von Anschluss 7 vollständig entleert
ist, gibt Anschluss 7 eine Trennversuch-Mitteilung und eine Trenn-Bestätigungsmitteilung
aus. Wenn getrennt, ist MMU 7 verfügbar für ein Gewähren von Speicheranfragen von
jedem anderen Anschluss, einschließlich Anschluss 4. Wenn eine
Hilfs-MMU zugeteilt worden ist, kann sie nur nicht mehr als einem
weiteren Anschluss dienen. Jede MMU kann Daten von dem IBR mit 80
Gbps abgreifen. Jede MMU kann Daten mit 10 Gbps ableiten.
-
Die
Absicht der Architektur ist eine Flexibilität beim Anschließen und
Abtrennen einer beliebigen Anzahl von "Hilfs"-MMUs an jeden Anschluss. Folglich wird
eine dynamische Zuordnung von eingebautem Speicher ermöglicht.
Die Speicherarchitektur ermöglicht
höhere
unmittelbare Speicherkapazität
pro Anschluss und besseres Puffern.
-
MMU-THEORIE
VON ARBEITSVORGÄNGEN
-
Die
Theorie eines Arbeitsvorgangs der MMU wird nun erörtert. Mit
der beschriebenen MMU Warteschlangen-Architektur wird jedes Paket,
welches an der Vermittlungsanordnung eintrifft, pauschal an jeden
Anschluss über
den IBR übertragen.
Die Architektur wird in 10 erläutert. Eine
Kopie des Pakets wird nur gespeichert, wenn die lokale MMU so entscheidet.
Im folgenden werden die lokalen Datenstrukturen beschrieben, wie
Pakete gespeichert und weitergeleitet werden.
-
Das
Pack-FIFO besteht aus 8 einzelnen, den 8 Eingangsanschlüssen zugeordneten
RAMs, wodurch eine parallele Ankunft von Paketen ermöglicht wird.
Jeder RAM enthält
Speicherplatz, welcher zwei Zellen tief ist. Zwei Zellen erlauben
20 Wörter oder
160 Bytes an Speicher. Jedes FIFO wird verwendet, um Pakete von dem
gleichen Anschluss zu speichern. Wörter werden in dem FIFO gesammelt,
bis eine Zelle angesammelt ist und sie dann in einen Speicher geschrieben
wird. Der Packvorgang von Wörtern
in Zellen ist unabhängig
von Paketgrößen. Dies
dient der Verringerung des Problems von verschwendeten "Löchern" im Speicher, wenn Paketgrößen von
Zellgrenzen abweichen. Es gibt insgesamt 32 logische FIFOs, jeder
gehört
zu einem einzelnen Anschluss-COS Paar. Dies garantiert eine geordnete
Paketlieferung und das korrekte Wiederzusammenfügen von Zellen an dem Ausgang
des Speichers.
-
Der
Paket-Pool-Zuteiler vermittelt die 8 Pack-FIFOs für Schreibzugriff
auf den Hauptspeicher (Paket-Pool) in zyklischer Weise. Nur FIFOs
mit einer vollständigen
fertigen Zelle, oder ein FIFO, welcher sich in einem Time-Out befindet
(siehe Abschnitt über
Time-Out-Mechanismus) wird ein vollständiger Zugriff erlaubt.
-
FreeQ
ist ein Zeiger zu der aktuellen freien Zelle (oder Block, dies wird
später
erörtert
werden), in welche eine neue Zelle geschrieben werden kann. Eine
freie Warteschlange für
alle verfügbaren
Speicherzellen wird von dem LLA aufrechterhalten.
-
Vorgangs-Warteschlangen
(XQ) sind ein Datenfeld, welches 8 Warteschlangen enthält, eine
für jede COS.
Die Größe von jeder
Warteschlange ist programmierbar. Jeder Warteschlangeneintrag zeigt
auf dem Kopf eines Paketes im Speicher und der Rest des Paketes
wird durch eine Verbindungsliste in dem LLA gehalten. XQ führt einen
Zeitstempel, welcher jedem Paket im Speicher eine Zeitgröße zuordnet.
Pakete, welche gemäß einem
programmierbaren Wert zu "alt" sind, werden fallengelassen.
Das XQ hat eine Beschränkung auf
2048 Einträge.
Daher kann jeder Ausgang nur bis zu 2048 Pakete speichern (siehe
PP).
-
Das
Verbindungslisten-Feld (LLA = Link List Array) ist ein Datenfeld,
welches eine 1-zu-1
Abbildung auf den Paket-Pool-Speicher aufweist. Jeder Abstand in
dem Datenfeld entspricht einem Zellplatz in dem Paket-Pool. In dem
LLA werden Zeiger zu einer anderen Zelle gespeichert. Das LLA liefert
eine komfortable Methode zur Adress-Umleitung, wenn Datenstrukturen
manipuliert werden. Das LLA führt
n + 2 Verbindungslisten. Worin "n" die Anzahl von aktuell
gespeicherten Paketen und die 2 die freie Warteschlange plus einer "Friedhofs"-Warteschlange darstellt.
Das LLA hält
auch einen Referenzzähler
für jede
Zelle. Dies ist notwendig, da die Zelle aktiv bleiben muss und nicht
zu der freien Liste zurückgeführt wird,
bis alle, die sich auf die Zelle beziehen, die Zelle nicht mehr
nützen
müssen.
-
Der
Paket-Pool (PP) ist ein 128 Kbyte SRAM, welcher als der Hauptspeicher
für Ausgangspakete
für jenen
Anschluss verwendet wird. Bei einer Breite von 640 Bits weist es
1600 Einträge
auf. Die Größe von diesem
RAM bestimmt letztendlich, wie viel gespeichert werden kann. Beispielsweise
kann es wegen den XQ Begrenzungen bis zu 2048 Pakete minimaler Größe speichern,
aber nur bis zu 82 Pakete maximaler Größe (1518 Bytes) und nur 14
Pakete einer "Jumbo"-Größe (9 Kbytes).
-
Die
Ausgangsteuerung (EGS = Egress Scheduler) bestimmt das nächste Paket,
welches aus dem PIE gesendet werden soll. Es folgt den in dem System
programmierten Prioritätsregeln
und ruft ein Paket ab, Zelle für
Zelle, gemäß der von
XQ und LLA gelieferten Information.
-
Der
Entpaketierer (UPK = Unpacker) ist ein Zwilling zu dem Pack-FIFO,
in der Hinsicht, dass er das Missverhältnis zwischen Wort und Zelle
in diesem System auf dem Weg nach außen ausgleicht. Er ist jedoch unterschiedlich,
da nur ein Anschluss von ihm zu einem Zeitpunkt lesen muss, mit
1/8 der Geschwindigkeit, somit wird nur ein RAM verwendet.
-
Die
MMU-Ausführung
ist eine reine Paket-Speicher- und Weiterleit-Maschine. Der Bedarf,
im Paket nachzusehen, ist beseitigt worden, um das Unterstützen von
verschiedenen Protokollen zu erleichtern. Die MMU unterstützt die
folgenden Paketformate: Paket minimaler Größe von 64 Bytes, Pakete maximaler
Größe von 9
K Bytes, ein Modulkopf und ein Einleitungskopf. Zusätzlich sind
Bündelungs-
und Spiegelungs-Unterstützung übergangslos,
da die MMU nur auf ein Anschluss-Bitmap-Seitenband-Signal,
welches auf dem IBR übertragen
wird, reagiert.
-
Der
grundlegende Fluss eines Paketes ist wie folgt: Das erste Wort des
Paketes wird auf dem IBR für Anschluss
m empfangen, durch den RXSTART für
Anschluss m angezeigt und die COS des Paketes wird ermittelt, angezeigt
durch das Feld in dem Wortkopfgebiet. Dieses Wort wird in dem Pack-RAM
von Anschluss m in ein logisches FIFO gemäß der COS gespeichert. Nachfolgende
Wörter
werden in das gleiche COS FIFO gespeichert werden, bis RXEND für Anschluss
m festgestellt wird.
-
Unterdessen,
falls eine Zelle (10 Wörter)
in eines der COS FIFOs für
Anschluss m angesammelt worden ist, ist sie bereit, in das Paket-Pool-RAM
zu gehen. Es wird angemerkt, dass alle anderen Anschlüsse das gleiche
tun. Daher können
eventuell alle 8 Anschlüsse
eine Zelle aufweisen, welche bereit ist, zur gleichen Zeit in einen
Speicher geschrieben zu werden. Der Paket-Pool-Zuteiler gewährt Schreibvorgänge an ein
RAM in zyklischer Weise unter allen 8 Anschlüssen in jedem Takt und da 8
Takte benötigt
werden, eine Zelle anzuhäufen,
ist die Bandbreite ausreichend. Wenn eine Zelle bereit ist, zu gehen,
verwendet der Paket-Pool-Zuteiler den FreeQ Zeiger und schreibt
die Zelle in einen Speicher. Eine Verbindungsliste wird für das Paket
gebildet (wenn nicht bereits geschehen). Dann wird das LLA mit der
neuen freien Warteschlange (Free Queue) und der neuen Paket-Verbindungsliste
aktualisiert. Dieser Vorgang wird für jede neue Zelle wiederholt.
-
Ein
RXEND wird festgestellt, und der Zeiger zu dem Zellkopf dieses Paketes
wird zu der XQ geschoben, zu welcher er gehört. Die Ausgangssteuerung bemerkt,
dass ein Paket in der XQ vorhanden ist, welches gemäß seinem
Prioritätsalgorithmus
bedient werden muss. Er setzt den UPK in Kenntnis, indem er die
COS Nummer übermittelt.
Der UPK hält
es für
bereit, übertragen
zu werden, er ruft den Zeiger von dem Anfang des übermittelten
COS von der XQ ab und verwendet ihn, um die erste Zelle aus dem
Speicher von dem LLA zu lesen. Der UPK setzt die Zelle in das FIFO
gemäß dem Anschluss-COS
Paar, zu welchem es gehört.
TXSTART wird dem PIE bestätigt
und bei TXREADY werden Wörter
an den PIE zur Übertragung
getaktet. Alle Zellen vom RAM werden für jenes Paket bis zu EOP abgefragt
(angezeigt durch die Feldgröße von XQ).
Die Zeiger für
jede Zelle werden von dem LLA geliefert, welches zur selben Zeit
die Präferenzzählung für jene Zelle erniedrigt.
Falls die neue Zählung
0 erreicht, wird die Zelle zurück
in die freie Warteschlange gesetzt. TXEND wird mit dem letzten Wort
aktiviert. Entpack-FIFO setzt die Zelle in das FIFO, gemäß dem Anschluss-COS Paar,
zu welchem sie gehört.
-
Mehrere
Szenarien und möglich.
Ein Szenario ist auf mehrere Pakete gerichtet, welche bei Nicht-Zellgrenzen
enden. Als ein Beispiel trifft für
das gleiche Anschluss-COS
ein weiteres Paket, genannt B, direkt nach dem obigen Beispiel ein.
Es weist 81 Bytes auf. Direkt danach treffen zwei weitere Pakete,
genannt C und D, ein, beide weisen jeweils auch 81 Bytes bzw. N
Bytes auf.
-
Nach
81 Bytes (oder 10 Wörtern),
die von B empfangen werden, wird es einer Zelle in dem PP übermittelt
und ein Eintrag in dem LLA wird für es erzeugt. Nach 1 Byte von
B und 72 Bytes von C wird eine weitere Zelle gewährt, und sie werden zusammen
in einen Speicher geschrieben. Ein zugehöriger Eintrag in dem LLA wird
modifiziert, um an die in 1 verwendete Zelle zu koppeln. Da RXEND
für Paket
B empfangen worden ist, wird ein Eintrag für es in einer COS Warteschlange
in der XQ geschaffen. EGS entscheidet, dass Paket B übertragen
werden soll. Es ruft die erste Zelle aus einem Speicher ab und UPK
setzt sie in seinen FIFO. 81 Bytes von B werden übertragen und EGS ruft die
nächste
Zelle für
Paket B ab und setzt sie in das gleiche Anschluss-COS-Entpack-FIFO.
-
Darauf
wird 1 Byte von B übertragen.
Nun, während
all diesem, vollendet auch Paket C das Eintreffen. C wird als Zellen
im Speicher gespeichert und die Einträge werden in der XQ mit einem
Abstandswert von 1 gespeichert. Die Referenzzählung für die Zellen, in welchen B+D
und C+D sich befinden, beträgt
2. Auf ein Bemerken des neuen Eintrags für C in dem XQ hin kann EGS/UPK
den Rest von C (da ein Teil von ihm schon über B gelesen wurde) in das
Entpack-FIFO abrufen, wenn der Übertragungsprozess
das FIFO auf einen vorbestimmten Grenzwert entleert. C kann nun
ausgesendet werden. Zuletzt sind Teile von D in dem Entpack-FIFO,
in dem PP RAM und in dem Pack-FIFO übrig.
-
Ein
zweites Szenario richtet sich auf Auszeit-Mechanismen. Nun wird
angenommen, dass Paket D das letzte für jenen Anschluss-COS ist und
nicht an einer schönen
80-Byte-Grenze endet.
Ein paar Bytes von ihm sitzen in dem Pack-FIFO, einige Zellen in
dem PP und 64 Bytes von ihm sitzen in dem Endpack-FIFO. Falls kein
Paket an diesem Anschluss-COS nach einer Zeit Tflush eintrifft,
wird den Inhalten von dem Pack-FIFO grünes Licht gegeben, in das RAM
zu gehen. Und es wird eine Zelle im Speicher mit den übrigen Bytes
zufällig einnehmen.
Und ein Eintrag wird für
D in der XQ geschaffen. Dieser "Flush"-Timer-Mechanismus
wird verwendet, um stillstehende FIFO-Daten zu vermeiden. Der XQ
Eintrag für
D besitzt einen Abstand von 2 und sobald für D ein Eintrag in der XQ geschaffen
ist, kann EGS dann das Paket aus einem RAM gemäß den früher erörterten Schritten abfragen.
-
Falls
der Ausgangs-MAC überfüllt ist
(d.h. irgendein Strom hoher Bandbreite nimmt den Anschluss ein, oder
TXREADY wird zu keinem Zeitpunkt beobachtet), kann das Paket im
Speicher festsitzen. Es gibt zwei Handlungsabläufe: 1) Im Falle einer Pack-FIFO-Überfüllung löst Tflush einen besonderen Zustand aus und ermöglicht den
verbleibenden Bytes von Paket D in einen Speicher geschrieben zu
werden. 2) Falls der Anschluss frei ist, wird nach einer Zeit Tdrop das Paket für zu alt befunden und wird
fallengelassen, sowohl von dem PP als auch möglicherweise vom Entpack-FIFO, falls es sich
auch dort teilweise befindet. Das Alter des Pakets wird durch sein
Zeit-„Tick"-Feld in der XQ bestimmt.
-
Ein
drittes Szenario umfasst ein Aushungern oder eine Überzeichnung
von Anschlüssen.
Im Falle einer Überzeichnung
oder einer schlechten Verbindung, häufen sich Pakete schnell in
dem PP an und wenn ein Schwellwert in der XQ erreicht wird, wird
Gegendruck an alle verletzenden Anschlüsse erklärt, um einen Gegendruck-Zustand
anzuzeigen. Dies wird durch ein Gutschriftsystem auf dem MR vollzogen.
Falls Pakete in dem XQ länger
als Tdrop verbleiben, werden sie fallengelassen.
-
Im
Allgemeinen wird keinen Paketen ein Eintritt in die XQ erlaubt,
falls es unvollständig
ist, aufgrund eines Löschens
fallengelassen wurde oder aufgrund eines Mangels an Puffern fallengelassen
wird. Sobald ein Paket einem Anschluss-COS zugeordnet ist, verlässt es niemals
jenen Anschluss-COS-Strom. Dies gilt für die Lebenszeit des Paketes
in dem System, ungeachtet dessen, in welchem physikalischen RAM
es sich befindet. Da jedes Paket einem Anschluss-COS zugeordnet
ist, und jedes Schreiben in einen Speicher von nur einem Anschluss-COS erfolgt, enthält keine
Zelle im Speicher zwei Pakete von verschiedenen Anschluss-COSs.
Da Pakete eine Mindestgröße von nicht
weniger als den 64 Bytes aufweisen müssen, können sich nicht mehr als 3
Pakete in derselben Zelle befinden, angesichts einer 80 Byte Zellgröße. Tdrop > Tflush und somit erfordert kein Paket-Aussonder-Ereignis
das Leeren von Entpack-FIFOs.
-
MITTEILUNGS-RING-PROTOKOLL
-
Der
Mitteilungs-Ring verwendet ein Token-Passing-Protokoll mit einigen
Einschränkungen
für eine
Token-Haltezeit, um eine faire Bandbreitenzuweisung zu garantieren
und die maximale Zeit festzulegen, in der einer Station ein Token
gewährt
wird, wenn sie einen benötigt.
Der Ring selbst ist ein 33-Bit Bus. Bits [31:0] enthalten ein 32
Bit Mitteilungswort und Bit [32] ist das Token. Zu jedem beliebigen
Zeitpunkt ist kein oder ein Token auf dem Ring. Mitteilungen bestehen
aus einem bis drei Wörtern;
das erste Wort der Mitteilung beschreibt den Mitteilungstyp, welcher
auch die Mitteilungslänge
einschließt.
Ein Token-Bit ist stets nur an das letzte Wort einer Mitteilung
angehängt.
-
Alle
Mitteilungen beginnen mit einem üblichen
Format, welches ein erstes Wort einer MR Mitteilung aufweist. Der
6-Bit Opcode spezifiziert den Mitteilungstyp und spezifiziert implizit
die Mitteilungslänge.
Die 5-Bit Zielstation kommt als nächstes, dann folgt die 5-Bit
Ursprungsstation (diejenige, welche die Mitteilung erzeugt) und
zuletzt ein 16-Bit mitteilungsabhängiger Teil. Einige Mitteilungen
besitzen ein zweites und vielleicht ein drittes 32b Datenwort, welches
Dinge wie Speicheradresse, Lesedaten und Schreibdaten enthält.
-
Bestimmte
Mitteilungen werden als ein aufgeteilter Vorgang behandelt; dies
bedeutet, dass eine Anfrage von einer Station erzeugt wird und einige
Zeit später,
vielleicht nachdem viele andere Mitteilungen auf dem Ring zirkuliert
sind, sendet die antwortende Station eine Bestätigungsmitteilung zurück.
-
BUCHUNGSBLOCK
-
Ein
weiterer Teil der MMU ist ein Buchungsblock (ACT = Accounting Block).
Diese Logik nimmt einen Strom von 64b Wörtern mit der Kern-Taktfrequenz
von dem MAC an, zusammen mit einiger Seitenband-Information, welche
von dem PIE erzeugt wird. Es gibt keine direkte Fähigkeit,
den Strom von Wörtern,
welcher von dem MAC kommt, anzuhalten. Alle Pakete müssen angenommen
werden (obwohl sie vielleicht später
aus Kapazitätsmangel
fallengelassen werden). Der Block ist auch verantwortlich für ein Überwachen
von Ressourcen, welche von Paketen benutzt werden, die an jenem
Eingang eintrafen, und für
ein Anfragen, dass der MAC in einen PAUSE-Zustand eintritt oder
austritt, wie angemessen.
-
Der
ACT führt
einen 16 Bit Zähler,
welcher die Zahl von Oktbyte-Wörtern
anzeigt, welche ein bestimmter Eingang in die MMU eingebracht hat
und vermutlich an Ressourcen in Anspruch nimmt. Der Name des Registers
lautet: MMU_REG_IngressWordCount. Es wird auf Null zurückgesetzt
und erhöht
sich jedes Mal, wenn der PIE ein gültiges Wort auf dem IBR sendet
(wie von dem PIE_mmu_vf Bit angezeigt). Während Oktwörter ausgegeben werden oder
aus irgendeinem Grund fallengelassen werden, wird die Zählung dieser
Oktbyte-Wörter
zeitweise an den Eingang über
die MR IngressCredit-Mitteilung zurückgesendet und von der Zählung ausstehender
Wörter
abgezogen.
-
Somit
steigt und fällt
diese Anzahl über
die Zeit. Falls die Anzahl zu groß ist, fordert der Eingang
den MAC auf, eine PAUSE an seine Verbindungspartner zu senden, um
den Datenverkehr, welcher in den Chip eintritt, zu verlangsamen.
Wenn die Eingangsrate fällt
und mäßiger wird,
fordert der ACT den MAC auf, den PAUSE-Zustand zu verlassen. Dieses Verhalten
wird in 11 gezeigt. Obwohl der MAC ein
Anfordern jedes PAUSE-Timer-Wertes von 0 × 0000 bis 0 × FFFF erlaubt,
verwendet der ACT Block stets nur zwei Werte: 0 × 0000 oder 0 × FFFF.
Ein O × FFFF
wird verwendet, wenn eine PAUSE angefordert wird, und 0 × 0000 wird verwendet,
um anzufragen, dass PAUSE aufgehoben wird. Es ist möglich, dass
trotz des PAUSE-Zustands,
in den er eingetreten ist, die untere Hysteresegrenze in 64 K Zyklen
nicht erreicht wird. In diesem Fall fordert die ACT Vorrichtung
den MAC auf, eine weitere PAUSE-Anfrage zu senden, um sicherzustellen,
dass der PAUSE-Zustand aufrechterhalten wird. Auch dies ist in 11 gezeigt.
-
EINGANGS-BUSRING
-
Das
Eingangs-Busring (IBR = Ingress Bus Ring)-Modul ist relativ einfach
und weist nur ein paar Zweckbestimmungen auf. Erstens, werden die
Eingangsbusse getaktet, bevor die Daten an die nächste Station weitergeleitet
werden. Dies vereinfacht die oberste-Stufe Zeitsteuerung, da der
Pfad Punkt zu Punkt von benachbarten Stationen auf dem Ring verläuft. Zweitens,
befindet sich der IBR dort, wo das Anschluss-Tauschen stattfindet.
D.h., die Eingangsbusse werden um eine Position verschoben, bevor
sie über
die Ausgangsbusse ausgesendet werden. Dies ermöglicht den Stationen, eine
einheitliche, nicht überlappende
Busverdrahtung zu besitzen und dennoch eine angrenzende Anordnung
auf dem obersten Level aufzuweisen. Drittens implementiert der IBR
eine Energieoptimierungsstrategie. Während jedes Wort auf einem
Eingangsbus eintrifft, wird seine Ausgangskarte überprüft. Wenn keine nachgeschaltete
Station jenes Wort benötigt,
wird der Ausgangsbus konstant gehalten, mit Ausnahme von dem Gültig-Bit,
welches auf unwahr gesetzt wird.
-
Jedes
der Bits der 8 Wege auf dem IBR hat eine zugeordnete Bedeutung.
Obwohl es 9 Stationen auf dem IBR gibt, existieren nur 8 Wege zu
jedem Querschnitt aufgrund der "Flügel"-Topologie des "Ringes". Bezüglich jeder
Station sind 4 Stationen vorgeschaltet und 4 sind nachgeschaltet.
Jede Station registriert ihre Ausgänge, wodurch vermieden wird,
dass so viele Signale den ganzen Weg entlang des Chips in einem
Takt gesendet werden müssen.
Stattdessen wird es durch den Aufwand ersetzt, eine unterschiedliche
Latenz von einer Station zu jedem anderen Paar von Stationen aufzuweisen.
Die verschiedenen Bits jeder Leitung sind exakt die gleiche Information,
die von dem PIE Block erzeugt wird. Während einer Energieoptimierung
kann eine Station all die Bits eines Busses konstant halten und
ein UNWAHR "Gültig"-Bit verbreiten,
falls entweder das eintreffende Wort nicht gültig ist, oder die Station
feststellt, dass die Ausgangsanschluss-Karte keine nachgeschalteten
Ziele aufweist. Jede Station auf dem Ring besitzt acht Eingangsbusse
und acht Ausgangsbusse; vier verlaufen im Uhrzeigersinn, vier verlaufen
gegen den Uhrzeigersinn.
-
12 zeigt
das Aussehen einer Station, während 13 zeigt,
wie die Anschlüsse
jeder Station miteinander verbunden sind. Es wird bemerkt, dass
das logische Abbilden der Anschlüsse
auf einen Eingangsbus an jeder Station sich verändert, aber die Topologie der
Eingänge
zu den Ausgängen
konstant bleibt. Das bedeutet, dass nur ein Layout notwendig ist.
-
Die
Fähigkeit,
ein einzelnes Layout zu verwenden, ist wichtig für die Erfindung. Diese Topologie
bedeutet, dass Stationen, welche auf dem Ring benachbart sind, auf
dem physikalischen Chip benachbart sein können und angrenzen können, ohne
irgendeinen verlorenen Raum zwischen ihnen, um diese zu verbinden. Jede
andere Topologie würde
verlorenen Raum zwischen physikalischen Blöcken erfordern, um die Ausgänge eines
Blocks mit den geeigneten Eingängen
der benachbarten Blöcke
zu verbinden. Dies erleichtert auch ein Testen, da jede "Fliese" des IBR gleich ist.
Es wird auch angemerkt, dass Anschluss 0 in 13 in
beide Richtungen führt,
während
die anderen Anschlüsse
alle durch die Station führen
oder an der Station enden. Dies ist darauf zurückzuführen, dass Station 0 Eingang-0-Daten
bezieht. Eine 4-Bit Identifizierung wird jeder Station auf dem Ring
gegeben, so dass sie ihre Identität kennt.
-
MITTEILUNGSRING
-
Der
Mitteilungsring (MR = Message Ring) beruht auf dem folgenden Protokoll.
Anfänglich,
im zurückgesetzten
Zustand, ist kein Token vorhanden. Nachdem ein paar Zyklen durchlaufen
worden sind, prägt
Station 0 ein Token aus und sendet es auf den Ring. Dieses Token-Wort
zirkuliert weiter, bis eine Station eine Mitteilung senden muss.
Eine derartige Station wartet, bis sie ein Token auf ihrem Eingangsbus
eintreffen sieht. Da dieses Token mit dem letzten Wort der eintreffenden
Mitteilung verbunden ist, leitet die Station Bits [31:0] zu ihrem
MR Ausgangsanschluss weiter, entfernt aber das Token-Bit. In dem
nächsten
Zyklus beginnt die Station, welche gerade das Token aufgenommen
hat, sämtliche
Mitteilungen auszusenden, welche sie aussenden will, gemäß den unten
vermerkten Anforderungen. Wenn die Station das Aussenden von Mitteilungen
beendet hat, setzt sie das Token-Bit von ihrem Ausgangsbus auf "1" auf dem letzten Wort der letzten Mitteilung.
-
Es
gibt drei Mitteilungsklassen: 1) ReadRegister, WriteRegister, ReadMemory,
WriteMemory; 2) ReadRegisterAck, WriteRegisterAck, ReadMemoryAck,
WriteMemoryAck; und 3) IngressCredit. Nur die Station, welche an
die Verbindung zu einer CPU angegliedert ist, kann Typ (1) – Mitteilungen
senden. Ferner kann nur eine derartige Mitteilung zu einem beliebigen
Zeitpunkt ausstehen. "Ausstehen" bedeutet, dass die
Typ (2)-Mitteilung, welche eine Typ (1) – Mitteilung vollendet, noch
nicht von dem Sender der Typ (1) – Mitteilung empfangen worden
ist. Eine Station sendet eine Typ (2) – Mitteilung nur in Erwiderung
auf eine Typ (1) – Mitteilung.
-
Während einer
Token-Eigentums-Zeit kann nur eine Mitteilung von jeder der drei
Klassen gesendet werden. Dies hat die folgenden Konsequenzen. Die
mit der CPU verbundene Station kann das Token höchstens vier Zyklen lang halten,
da sie eine drei Zyklen-WriteMemory Befehl und eine ein-Zyklus-IngressCredit Mitteilung
senden kann. Obwohl sie eine Typ (2) – Mitteilung in Erwiderung
auf einen Typ (1) – Mitteilung
erzeugen kann, geschieht dies nicht in derselben Token-Haltezeit.
Andere Stationen halten das Token auch höchstens vier Zyklen lang, da
sie eine drei Zyklen-ReadRegisterAck
Mitteilung und eine ein Zyklus-IngressCredit Mitteilung senden können. Da
neun Stationen auf dem Ring sind (mit CPU verbundene Station plus acht
XAUI Anschlüsse),
benötigt
ein Token höchstens
15 Takte, um einen kompletten Kreis auszuführen. Dies ist darin begründet, dass
nur eine Typ (1) – und
eine Typ (2) – Mitteilung
jemals während
eines Zyklusses des Tokens erzeugt werden kann; daher benötigen zwei
Stationen jeweils vier Zyklen und sieben Stationen benötigen jeweils
einen Zyklus.
-
PAKETIERER
-
Der
Zweck des Paketierer (PK)-Blockes oder der Paketierer-Einheit ist
das Empfangen eines Stromes von 64-Bit-Wörtern von jeder der acht anderen
Stationen. Die Ausgangsanschluss-Karte, welche mit jedem Paket verbunden
ist, wird verwendet, um zu bestimmen, welche Pakete von einer bestimmten
Station aus dem Ring auszulesen sind. Während die Datenwörter von
einem bestimmten Eingang über
den IBR eintreffen, wird jeder Strom zu 640b "Zellen" zusammengesetzt. Wenn eine Zelle vollständig ist,
wird sie innerhalb von acht Taktzyklen zu dem PP (Packet Pool =
Paket-Pool) übertragen.
Die acht Packeinheiten (eine zu jedem Eingang gehörig) vermitteln
untereinander, indem sie eine strenge Priorität verwenden, um Zugriff zu
dem PP zu erhalten. Da jede Zelle 10 Wörter enthält und ein Paket minimaler
Größe aus wenigstens
acht Wörtern
bestehen kann, ist es möglich,
mehrere Paketfragmente in einer Zelle zu haben.
-
14 zeigt
einige mögliche
Fälle,
wie Pakete innerhalb einer Zelle angeordnet werden können. Jedes
kleine Rechteck innerhalb der Zelle stellt ein 8-Byte-Wort dar.
Die Pfeile mit der Beschriftung "A", "B", oder "C" darüber zeigen
Pakete. Grauschattierte Rechtecke zeigen nicht verwendete Teile
von Zellen; die Gründe hierfür werden
später
aufgeführt.
Die großen
Balken zeigen die Grenzen eines Paketes. Es ist zu beachten, dass
eine Zelle Fragmente von bis zu drei verschiedenen Paketen enthalten
kann und dass eine Zelle höchstens
zwei Grenzen zwischen Zellen enthalten kann. Pakete sind nicht notwendigerweise
zusammenhängend in
einer Zelle, aufgrund der toten Wörter in den grauschattierten
Rechtecken.
-
Die
grauschattierten Rechtecke in 14 können aus
einigen Gründen
entstehen: Ein Fall wie #2 kann auftreten, wenn ein Eingang für eine Zeitspanne
aufhört,
Pakete zu senden; schließlich
sendet die PK Vorrichtung trotzdem nur die unvollendete Zelle an
die PP-Vorrichtung, um ein Stranden des Paketes "A" in
der PK Vorrichtung zu verhindern. Weitere graue Rechtecke können auftreten,
wenn die MAC Vorrichtung eine Lösch-Anforderung
anzeigt, nachdem das Paket bereits begonnen hat. Anstatt alle Zeiger
und dergleichen zurückzuspulen,
zeigt die PK Vorrichtung nur jene betroffenen Wörter als tot an. Eine letzte
Ursache für
grauschattierte Rechtecke tritt auf, wenn die PK Vorrichtung versucht,
ein Paket an das LLA zu schreiben und ein oder mehrere Fragmente
aufgrund irgendeiner Art von Ressourceneinschränkung nicht erfolgreich geschrieben
werden können.
-
Die
Aufgabe des Packens ist der Erhalt der Bandbreite und die Rate der
schmalen IGB Wege an die breiten PP Schnittstellen anzupassen. Falls
die PK Vorrichtung nicht mehrere Paketfragmente in einer Zelle erlaubte,
könnte
eine unglaubliche Ineffizienz bei der Speicherverwendung und Bandbreite
auftreten. Zum Beispiel, wenn der Verkehr ausschließlich aus
88-Byte-Paketen bestünde,
würde ein
Paket zwei gesamte Zellen benötigen,
von welchen nur 11 der 20 Wörter
belegt wären
(55 % Nutzung).
-
VERBINDUNGSLISTEN-FELD
-
Der
Verbindungslisten-Feld Block ist das Verbindungslisten-Gehirn der
MMU. Er führt
die folgenden Funktionen aus: Nimmt Schreib-Anforderungen von dem
PK für
jedes Paket an, bildet eine Verbindungsliste für jedes Paket, lenkt ein Einfügen seines
XQ Eintrags, nimmt Lese-Anforderungen von dem UPK an und gibt Zellen
frei, welche nicht mehr von Paketen benötigt werden. Das LLA führt auch
eine freie Warteschlangen-Verbindungsliste, führt Referenzzähler für jede Zelle
und führt
ein Löschen
von Paketen aufgrund expliziter oder impliziter Voraussetzungen
durch und sendet die gelöschten
Verbindungslisten zurück
zu der freien Warteschlange.
-
Zur
Erinnerung, es existieren acht getrennte Fälle, in welchen sich Pakete
(A, B und C) in einer 80-Byte-Zelle befinden können (siehe 14).
-
-
Die
acht Fälle
sind mit den 4 Signalen (sof0, sof1, eof0, eof1) von dem PK angemessen
kodiert. Durch ein Dekodieren führt
das LLA einen bestimmten Vorgang für jede Anweisung durch.
-
Es
gibt zwei Arten von Löschvorgängen in
dem LLA: explizite und implizite.
-
Explizite
Löschvorgänge: PK
bestätigt
ein „Lösch"-Bit am EOF, um ein
schlechtes Paket anzuzeigen. LLA löscht demgemäss.
-
Implizite
Löschvorgänge: PK
unternimmt einen Schreibversuch, wird jedoch, da der vorherige Schreibvorgang
bearbeitet wird, „voll" wahr. Das LLA hat
folglich keinen Platz mehr, um das Paket zu speichern und lässt das
Paket fallen. Im nächsten Zyklus
muss PK erkennen, was sich ereignet hat. Er sollte die verbleibenden
Bytes UND die Bytes, die gerade dem LLA gegeben wurden, löschen und
zurückbuchen.
Es ist anzumerken, dass der PK niemals einen expliziten Löschvorgang
durchführt,
auch wenn er ein Voll-Signal von dem LLA abfragt, prüft der PK
den nächsten
Takt, um zu sehen, ob der Versuch erfolgreich war. Dies liegt darin
begründet,
dass während
des vorhergehenden Zyklus eine Zelle freiwerden könnte.
-
Es
gibt vier Auslöser
für den „Voll"-Zustand:
- 1) PP wird voll – (kein weiterer freier Zell-Puffer
im Speicher
- 2) COS Klasse in der XQ erreicht Paket-Verwendungs-Grenze
- 3) COS Klasse in der XQ erreicht Wort-Verwendungs-Grenze
- 4) XQ Anfrage-FIFO wird in dem LLA Block voll (selten)
-
Bedingungen
1), 2) und 4) sind in dem LLA Block implementiert, während 3)
in dem XQ Block implementiert ist.
-
Wenn
ein Löschvorgang,
entweder implizit oder explizit, benötigt wird, muss das LLA die
durch das verletzende Paket besetzte Verbindungsliste der freien
Warteschlange überlassen.
Da jede Zelle bis zu drei Pakete besitzen kann, die sich in ihr
befinden, erzeugt dies einen ziemlich Ressourcen beanspruchenden
Arbeitsvorgang. Im ungünstigsten
Fall lautet der Arbeitsvorgang, in welchem dies durchgeführt wird:
- 1 LLA (Port.Tail) = LLA (FreeHead);
- 2 FreeHead = LLA (Port.Head);
- 3 UsedCellCount = UsedCellCount – Port.CellCount;
- 4 LLARefCnt (Port.Head) = LLARefCnt (PortHead) – 1;
- #1,2: Verbindungslisten-Arbeitsvorgang, um die gelöschte Zelle
auszuschneiden und in die freie Liste zurück einzusetzen.
- #3: Zell-Zählung
in dem System aktualisieren.
- #4: Referenzzähler
für die
Kopfzelle des Paketes aktualisieren.
-
Da
die Arbeitsvorgänge
1, 2, 3 und 4 Ressourcenkonflikte verursachen, wird die folgende
Logik entwickelt:
- 1 GraveYardHead = Port.HeadPtrPurge;
LLA
(Port.Tail) = GraveYardTail;
- 2 FreeHead = Port.HeadPtrPurge;
- 3 PurgedCellCount = PurgedCellCount + Port.CellCount;
- 4 LLARefCnt2 (Port.Head) = 1;
- #1) GraveYard
Zeiger speichern eine einzelne Verbindungsliste für alle gelöschten Zellen.
Diese Verbindungsliste wird (durch Dolncarnate) während eines
UPK Lesevorgangs oder eines freien verfügbaren Zyklus zusammengesetzt.
Dies vermeidet die Notwendigkeit, die gelöschte Verbindungsliste zur
gleichen Zeit wie den Schreibvorgang neu zu verbinden.
- #2) HeadPtrPurge verfolgt in angemessener Weise, wo die eingesetzte
Verbindungsliste des Pakets beginnen soll, indem SOF und Löschvorgänge für die SOF
Zelle und nachfolgende DoMID Zellen, welche als nächstes an
der Reihe sind, betrachtet werden.
- #3) PurgedCellCount ist ein getrennter Zähler, der genau das überwacht,
was sein Name bezeichnet. Er wird auf einen Dolncarnate Zyklus hin
mit UsedCellCount verschmolzen.
- #4) LLARefCnt2 ist ein zusätzlicher
Referenzzählungsspeicher,
welcher auf DoReadCell hin verwendet wird, um die endgültige Ref-Zählung für jenen
Zellenort zu bestimmen. Dies ist nützlich, wenn die HeadPtr Zelle
der gelöschten
Verbindungsliste auch von einem anderen Paket verwendet wird; daher
muss sein FragCount – 1 betragen.
-
Mit
der obigen Implementierung können
gelöschte
Zellen unter schwierigen Schreibbedingungen eine Verzögerung der
Verfügbarkeit
des freien Pools bis zum nächsten
freien Zyklus oder Lese-Zyklus darstellen. Da die Takt- und Speicherzugriffsbandbreite
großzügig ausgelegt
worden ist, steht ein freier Zyklus innerhalb von 8 Ticks bereit.
-
WIEDERHERSTELLUNG
VON VERFÄLSCHTEM
SPEICHER
-
Um
sich gegen mögliche
Speicherfehler in einem riskanten 0,13μm Prozess und einer RAM Verwendung
zu schützen,
hat die Anordnung der vorliegenden Erfindung einen Software-Weg
entwickelt, Speicherfehler zu erkennen und derartige Fehlern zu
korrigieren, um weiter zu arbeiten. Die Eigenschaft einer Speicherwiederherstellung
der MMU ist in 15 erläutert. Die linke Seite der
Figur erläutert
die Hardwarezustände und
die rechte Seite zeigt das Software-Flussdiagramm. Das Software-Flussdiagramm
steuert den Zustandsübergang
von Hardware und der Fluss ist horizontal ausgerichtet. Dieses Diagramm
zeigt die Fähigkeit
der Anordnung, verfälschte
Adressen in dem Hauptspeicher dynamisch auszublenden, sowie eine
Wiederherstellung durch eine Software-Rückstell-Sequenz. Es ist wichtig
zu beachten, dass es zwei Typen von Speicherfehlern gibt, welche
das System erkennt: #1ECC Fehler in dem Hauptspeicher-Pool und #2
Paritätsfehler
in verschiedenen Nutz-SRAMs. Wie gezeigt, kann #1 dynamisch erkannt
und durch Software ausgeblendet werden, und #2 kann nur durch eine
Software-Rückstell-Sequenz wiederhergestellt
werden.
-
PAKET-POOL-SPEICHER
-
Der
Paket-Pool (PP)-Speicherblock ist eine Hülle für die Paket-Pool SRAM Makros,
welche Paketdaten von dem PK Modul speichern. Nachdem die PK Vorrichtung
eine Folge von Wörtern
in eine Zelle gepackt hat, wird die Zelle automatisch an eine von
dem LLA bestimmte Adresse in den PP geschrieben. Das Paket verbleibt
in dem PP, bis der UPK Block alle Paketfragmente von dieser Zelle
ausgelesen hat. Es können,
abhängig
von der Anordnung, 1, 2 oder 3 Paketfragmente in der Zelle vorhanden
sein.
-
Dieses
SRAM unterstützt
ein Lesevorgang oder ein Schreibvorgang je Kern-Taktzyklus. Bei maximaler unmittelbarer
Auslastung gibt es acht Schreibvorgänge (einen von jedem Eingang)
und zwei Lesevorgänge (für Ausgang)
je neun Zyklen.
-
Diese
maximale Auslastungssituation kann akzeptiert werden bis der PP
voll wird. Üblicherweise
(und in tragbarer Weise) gibt es jedoch einen Schreibvorgang und
zwei Lesevorgänge
alle neun Zyklen.
-
PAKET-POOL-STEUERUNG
-
Das
Paket-Pool-Steuerungsmodul errechnet Fehlertest- und Korrektur-
(ECC = Error Checking and Correction) Bits für Schreibdaten von dem PK, überprüft (und
korrigiert eventuell) Lesedaten an den UPK und stellt einen Hauptcomputer
Lese/-Schreib-Zugriff
(über das
MR) zur Verfügung.
ECC Fehler werden aufgezeichnet und gezählt und für den Hauptcomputer verfügbar gemacht,
um über
den MR zu lesen.
-
Zum
Schutz gegen mögliche
Fehler in dem Paket-Pool-Speicher werden zusätzliche ECC Bits an die Daten
angefügt.
Aufgrund der extrem breiten Schnittstelle zu dem RAM wäre es unpraktisch,
eine einzelne ECC Paritätsgruppe
für alle
Bits zu besitzen. Stattdessen wird ECC auf einer Grundlage von vier
160 Bit-Wörtern
errechnet. Jedes Wort wird von neun ECC Bits geschützt. Dies
ist ausreichend, um volle SECDED (Single Error Correct/double error
detect = einfache Fehlerkorrektur/doppelte Fehlerdetektion) Abdeckung
zu liefern. Zum weiteren Schutz gegen SRAM Fehler wird jede Gruppe
von ECC Bits mit der an die Daten angefügten Adresse verrechnet. Dies
hilft bei der Erkennung der Fälle,
in welchen das SRAM die falsche Adresse gelesen haben könnte.
-
VORGANGS-WARTESCHLANGEN
-
Die
Vorgangs-Warteschlangen (XQ = transaction queue) liefern die Auftragsinformation
zu den Paketen. Die XQ implementiert eine first in first out-Warteschlange für acht COSes.
Im wesentlichen ist der Eintrag ein Zeiger in dem PP, welcher anzeigt,
wo das Paket gespeichert ist, zusammen mit einer Anzeige der Größe des Paketes.
Diese Information wird von der PK Schnittstelle zu dem Zeitpunkt
geliefert, an welchem die Zelle, welche das letzte Wort eines Paketes
enthält,
in den PP geschrieben wird. Die Information wird in der XQ gespeichert
und schließt
Felder für
ein Tick, eine Paketgröße, einen
Abstand, einen Eingangsanschluss# und einen Zeiger ein.
-
Der
Zeiger ist der Hauptzeiger zu dem Paket in einem Speicher. Die Eingangsanschlussnummer
zeigt an, von welchem Anschluss dieses Paket kam und wird für den UPK
verwendet. Der Abstand zeigt an, an welchem Ort in der Zelle dieses
Paket tatsächlich
beginnt (eine Folge des PK-Packens). Die Paketgröße unterstützt Byte-basierte gewichtete,
faire Warteschlangenabarbeitung und wird auch von dem UPK verwendet.
Der Tick ist ein Ersatz für
einen Zeitstempel, welcher oben erläutert wurde.
-
Die
2K Einträge
können
in bis zu acht verschiedenen Warteschlangen für verschiedene COS Levels unterteilt
werden. Die Größe von jeder
COS Klasse ist über
Paketbegrenzungs-Register programmierbar; jedoch muss die Summe
aller definierten Klassen 2K oder weniger sein. Durch ein Sortieren
von Paketen in getrennte Warteschlangen für unterschiedliche COS Klassen
wird es Paketen mit einer höheren
Priorität
ermöglicht,
vor Paketen mit niedrigerer Priorität gesendet zu werden, auch
wenn die Pakete mit niedrigerer Priorität zuerst eintrafen. Während das
LLA Modul Daten für
die XQ Einträge
liefert, liest der Ausgangs-Steuerblock (EGS = Egress Scheduler)
die vier ältesten
Einträge
von jeder der acht COS Klassen, um zu entscheiden, welches Paket
als nächstes
gesendet wird.
-
Die
XQ implementiert eine besondere Methode zur Paket-Alterung, welches
das Problem eines Speicherns großer Zeitstempel-Vektoren für jedes
Paket sowie das Zeilenumbruch-Problem für den Vektorwert verringert.
Der 3 Bit Tick-Wert stellt den "Zeitstempel" für ein Paket
dar. Jeder Tick stellt eine Zeit dar, die von dem Register für die maximale
Ausgangszeit spezifiziert wird, wobei das Register ein 24 Bit Register
ist. Die Granularität
beträgt
34 μs und
legt fest, wie oft ein Tick auftritt. Der "Tick"-Wert
sättigt
bei 7 und für
jedes Paket zeigt ein Tick-Wert von 7 an, dass das Paket zu alt
ist und gelöscht
werden wird.
-
Zum
Beispiel tritt für
einen Wert von EgrMaxtime = 24'h1E6928
(= 1,993·10^6
als Dezimalzahl) ein Tick alle 1,993E6·34 μs = 68 Sekunden auf. Ein Tick
sättigt
nach 7 Ticks, was 68·7
= 480 s = 8 Minuten sind. Demzufolge werden alle Pakete, welche
8 Minuten oder älter
sind, gelöscht.
-
AUSGANGSSTEUERUNG
-
Während die
XQ die Ordnung von Paketen innerhalb einer bestimmten COS Klasse
enthält,
liegt es in der Verantwortlichkeit der Ausgangssteuerung (EGS =
Egress Scheduler), auszuwählen,
welche der 8 COS Klassen als nächstes
ein Paket senden kann. EGS kann programmiert sein, verschiedene
Arten von Warteschlangen-Steuerungsalgorithmen
zu aktivieren.
-
In
einem Ausführungsbeispiel
wird ein auf einer strengen Priorität basierender Steuerungsalgorithmus eingesetzt.
Bei diesem Algorithmus sendet die Warteschlange mit der höchsten Priorität alle ihre
ausstehenden Pakete aus, bevor irgendeine andere Warteschlange mit
niedrigerer Priorität
die Möglichkeit
hierzu bekommt. Wenn die Warteschlange mit der höchsten Priorität leer ist,
dann sendet die Warteschlange mit der nächsten niedrigeren Priorität ihre Pakete
aus, und so weiter. Falls ein Paket in eine beliebige Warteschlange mit
höherer
Priorität
aufgenommen wird, wird das Aussenden des aktuellen Paketes vollendet
und die Warteschlange mit höherer
Priorität
wird bedient. Der Hauptnachteil dieser Vorgehensweise ist ein mögliches
Aushungern von Warteschlangen mit niedriger Priorität.
-
In
einem bevorzugten Ausführungsbeispiel
wird eine gewichtete zyklische (WRR = Weighted Round Robin) Steuerung
eingesetzt. Diese Methode verringert den Nachteil der auf einer
strengen Priorität
basierenden Steuermethode, indem für alle Warteschlangen eine
bestimmte minimale Bandbreite bereitgestellt wird, sodass keine
der Warteschlangen ausgehungert wird. In gewisser Hinsicht ist die
Bandbreite wirklich ein programmierbarer Parameter in der EGS und
wird durch den Schaltereinsatz programmiert.
-
Jeder
COS wird eine Gewichtung durch ein Register zugeordnet. Diese Gewichtung
wird an ein Messregister weitergeleitet, welches auf jedes Paket-Austritts-Ereignis
hin sich für
jene COS verringert. Wenn alle COS Messvorrichtung Null erreichen,
werden die Messvorrichtungen mit den programmierten Gewichtungen neu
geladen. Ein "Peg" wird behalten, um
ein zyklisches Zuteilen zwischen dem acht COSes zu liefern, d.h., jeder
Warteschlange wird erlaubt, ein Paket für jede Zuteilungsrunde zu senden,
bis sein Gewichtungswert auf Null gesunken ist.
-
Wenn
kein Paket für
die COS, an welchem sich der Peg befindet, verfügbar ist, wird den anderen
COS Warteschlangen ermöglicht,
um den Platz zu konkurrieren, indem ein Kreis-Prioritätsverfahren
verwendet wird, d.h., wenn ein Peg sich bei 2 befindet, dann wird
1 → 0 → 3 in dieser
Reihenfolge evaluiert. Falls sich Peg bei 3 befindet, dann wird
2 → 1 → 0 in dieser
Reihenfolge evaluiert. Jene COSs, deren Gewichtungen zu dem Zeitpunkt
Null betragen, sind nicht teilnahmeberechtigt. Falls jedoch keine
weiteren COSs verfügbare
Pakete besitzen, wird ihnen erlaubt zu gehen, sodass keine Bandbreite
verschwendet wird (dies ist der arbeitssparende Aspekt).
-
Es
wird angemerkt, dass in dem WRR Modus, obwohl der Zuteiler einer
COS X gewähren
kann, zu gehen, der tatsächlichen Übertragungslogik
erlaubt wird, es vorzuziehen, eine andere COS Warteschlange herausgehen
zu lassen. Dies ist tatsächlich
erlaubt und beeinträchtigt
nicht den internen WRR Betrieb. Jedoch weicht die Entkopplungseigenschaft
eines derartigen Betriebs wahrscheinlich von der durch eine Programmierung
ursprünglich
beabsichtigten Fairness/Gewichtung ab.
-
Ein
Nachteil von WRR besteht darin, dass es in pathologischen Fällen unfair
wird. Wenn zum Beispiel ein Kanal viele lange Pakete maximaler Größe überträgt und ein
anderer 64 Byte Pakete überträgt. Die
Bandbreite des "mini-gram" Kanals wird beeinträchtigt,
wenn eine Bandbreitenzuordnung auf einer Paketzahl basiert. Viele
Studien wurden über
faires Steuern durchgeführt.
Während
der theoretisch optimale Warteschlangen-Algorithmus, bekannt als
General Processor Model (GPS), in der Umsetzung nicht realisierbar
ist, kann eine bessere Nährung
mit einem defizitären
zyklischen (Deficit Round Robin) Algorithmus durchgeführt werden.
Dieser Algorithmus kann in alternativen Ausführungsbeispielen unterstützt werden.
Der Algorithmus kommt der min-max Erfordernis von gewichtiger Prioritätssteuerung
nahe. Der Algorithmus ist arbeitssparend, d.h., Ressourcen sind
nicht untätig,
falls ein Paket auf einen Einsatz wartet. Es ist Byte-basiert, was
ein genaueres Überwachen
von tatsächlichem
Datenverkehr-Durchsatz ermöglicht.
-
Die "Gewichtung" für jeden
Kanal ist relativ zu einem "Maß"-Wert, welchen man
dem Algorithmus zuordnet. Tatsächlich
ist die Gewichtung von jedem Kanal ein ganzzahliges Vielfaches des
Maßwertes.
Der Maßwert
sollte auf eine angemessene Byte-Länge der Datenverkehrsstruktur
gesetzt werden. In der Welt des Ethernets besitzt das Datenverkehrsprofil
eine bimodale Verteilung, welche um eine Paketlänge von ca. 64 Byte und 1500
Byte zentriert ist.
-
ENTPAKETIERER
-
Der
Entpaketierer (UPK = Unpacker) liest Zellen für von dem EGS ausgewählten Paketen
und formatiert sie für
den MAC neu in 64 Bitwörter.
Ein Blockdiagramm für
den Entpaketierer ist in 16 erläutert. Der Entpaketierer
fordert ein neues Paket über
ein Signal an, und wenn dieses Signal und ein Bereit-Signal beide wahr
sind, dann wird ein neuer Satz von Paketinformation von der XQ beim
nächsten
Zyklus eintreffen.
-
Der
Entpaketierer verwendet die Information von der XQ (Größe, Zeiger,
Anschluss, etc.), um eine Sequenz von Leseanforderungen an das LLA
für jedes
Paket zu erzeugen. Das erste Adress-Lesen für jedes Paket ist der von dem
XQ empfangene Zeiger. Nachfolgende Lesevorgänge verwenden den von dem LLA
empfangenen Wert. Es ist zu beachten, dass es die Schnittstelle
ermöglicht,
dass LLA Lesevorgänge
in aufeinanderfolgenden Zyklen auftreten. Wenn der UPK dies auszuführen hat,
aktiviert er ein Signal, welches das LLA veranlasst, aus dem nächsten Zell-Zeiger-Platz,
anstatt des Zell-Zeigers, zu lesen. Dies vereinfacht eine Zeitsteuerung,
indem die Notwendigkeit für
den UPK beseitigt wird, den Zell-Zeiger aus dem nächsten Zell-Zeiger kombinatorisch
zu erzeugen. Es ist anzumerken, dass das LLA UPK-Lesevorgänge nach
Bedarf blockieren kann.
-
Die
Lese-Daten von dem PP-Speicher treffen an dem Eingang des Paket-Pool-Steuermoduls mit
einer festgelegten Verzögerung
(4 Zyklen) nach einer erfolgreichen Leseanforderung an das LLA ein.
Die ECC Pipeline innerhalb des Paket-Pool-Steuerungsmoduls benötigt zwei Zyklen, um Fehler
aus dem RAM zu überprüfen und
eventuell zu korrigieren. Diese zwei "Pipe"-Stufen
werden als Puffer von dem UPK Modul verwendet. Die geeigneten Wörter von
den Zelldaten auf dem Paket-Pool- Steuermodul
werden gebündelt
und in das Ausgabe FIFO mit einer Rate von einem Wort pro Zyklus
eingegeben.
-
Wenn
Pakete innerhalb der XQ veralten, werden die Pakete aus dem PP Speicher
gelöscht,
jedoch nicht an den MAC gesendet. Eine veraltete Paketinformation
wird in den Lösch-Puffer
gelegt, sodass ein weiteres Paket hervorgeholt werden kann. Indem
die gelöschte
Paketinformation in den Lösch-Puffer
gelegt wird, kann der UPK weiter nach guten Paketen suchen, wodurch
jegliche Unterbrechungen in dem Datenfluss zu dem MAC minimiert
werden. Der UPK kann Lesevorgänge
für sowohl
gute Pakete als auch gelöschte
Pakete auf einer Zyklus-zu-Zyklus Basis ausgeben. Wenn sowohl gute
als auch gelöschte
Pakete bedient werden, wird den guten Paketen eine Priorität gegeben.
Gelöschte
Pakete werden aus dem LLA genauso wie gute Pakete gelesen, mit der
Ausnahme, dass ein Lösch-Signal
aktiviert wird. Dies veranlasst das LLA, die indizierte Zelle freizugeben,
aber zu vermeiden, einen Lesevorgang an den PP Speicher auszugeben
(wodurch eine Verfälschung
von Daten an den MAC vermieden wird).
-
Da
die Paket-Pipeline zu dem MAC innerhalb des UPK ziemlich lang ist
(bis zu 13 Pakete abhängig von
Größe und Anordnung),
ist es wahrscheinlich, dass innerhalb des UPK befindliche Pakete
gelegentlich veralten. Um diesem Umstand Rechnung zu tragen, wird
das Alter von jedem Paket innerhalb des Alter-Puffers beibehalten.
Während
Pakete von der XQ eintreffen, wird ihr Alter in dem Alter-Puffer
aufgezeichnet (welcher als ein FIFO gestaltet ist). Immer wenn der
Eingangszeit-Tick aktiviert wird, werden alle Alter um 1 erhöht (aber sättigen bei
7). Während
jedes Paket zu dem MAC gesendet wird, wird sein Alter aus dem Alter-Puffer
hervorgeholt. Bei Paketen, deren Alter 7 beträgt, wird ein Fehlersignal auf
dem letzten Wort aktiviert.
-
Um
es dem ACT Modul zu ermöglichen,
korrekt Pausen an den MAC auszugeben, wenn der PP Speicher eines
Anschlusses voll ist, sendet der UPK Gutschriften an das PK Modul über Signale,
welche nach jedem erfolgreichen Lesen an das LLA gesendet werden
(sowohl für
gute Pakete als auch für
jene, welche gelöscht
werden). Bei jedem Zyklus gibt der UPK die Anzahl von veralteten
Paketen aus, welche er von der XQ erhalten hat oder welche veralteten,
wenn sie an den MAC ausgegeben wurden. Eine Gesamtanzahl von veralteten
Paketen wird auch aufrechterhalten.
-
Der
oben erläuterte
Aufbau der Erfindung ist, in einem bevorzugten Ausführungsbeispiel,
auf einem Halbleitersubstrat, wie Silizium, mit geeigneten Halbleiterherstellungsverfahren
realisiert und basiert auf einer Schaltkreisanordnung, welche für Fachleute,
basierend auf den oben erläuterten
Ausführungsbeispielen,
offensichtlich wäre.
Ein Fachmann in Bezug auf Halbleiterentwurf und -herstellung ist
in der Lage, die verschiedenen Module, Schnittstellen, Tabellen
und Puffer, etc. der vorliegenden Erfindung auf ein einzelnes Halbleitersubstrat
zu implementieren, und zwar basierend auf der oben erläuterten
architektonischen Beschreibung. Es wäre auch innerhalb des Schutzumfangs
der Erfindung, die beschriebenen Elemente der Erfindung in einzelnen
elektronischen Bauteilen zu implementieren, wobei die Vorteile der
funktionalen Aspekte der Erfindung genutzt werden, ohne die Vorteile
durch die Verwendung eines einzelnen Halbleitersubstrates zu maximieren.
-
Obwohl
die Erfindung basierend auf diesen bevorzugten Ausführungsbeispielen
beschrieben wurde, wird es dem Fachmann klar sein, dass bestimmte
Modifikationen, Variationen und alternative Aufbauten klar sein
werden, während
innerhalb des Schutzumfanges der Erfindung geblieben wird. Um die
Maße und
Grenzen der Erfindung zu bestimmen, sollte daher auf die anliegenden
Ansprüche
Bezug genommen werden.