-
GEBIET DER ERFINDUNG
-
Die
Erfindung betrifft in der Regel Computer und insbesondere die Erweiterung
einer Warteschlange FIFO (first-in-first-out: zuerst rein-zuerst raus)
auf einem Chip in einem lokalen Speicher.
-
ALLGEMEINER STAND DER TECHNIK
-
In
einem Computernetz oder einem Vermittlungsnetz wird die credit-basierte
Flusssteuerung zur Prüfung
der durch einen Quellknoten übertragenen
Datenmenge verwendet, so dass immer ein Puffer im Zielknoten zur
Aufnahme der Daten verfügbar
ist. Häufig
sind die Daten in diskrete Pakete unterteilt. In einigen Systemen
wie dem asynchronen Übertragungsprotokoll
ATM (Asynchronous Transfer Mode) zum Übertragen von Daten in einem
Computernetz sind die Daten in Zellen angeordnet. ATM-Zellen weisen
eine Länge
von 53 Bytes auf, davon sind 48 Bytes Nutzdaten und 5 Bytes ein
Header (Kopfteil). Wird eine größere Nachricht
als 48 Bytes von einem Quell- zu einem Zielknoten übertragen,
zerhackt der Quellknoten zunächst
die größere Nachricht
in Datenzellen von 48 Bytes und der Zielknoten wird anschließend die
48 Bytes langen Datenzellen wieder zu einer Empfangsnachricht, die
identisch mit der übertragenen
Nachricht ist, zusammenfassen.
-
In
einigen Protokollen zur Nachrichtenübertragung wie ATM sind die
Zwischenknoten Switches. Die Switches leiten Zellen über virtuelle
Verbindungen weiter. Jede Endstation, die einem Quellknoten entspricht, hat
eine virtuelle Verbindung, die in Richtung einer Zielendstation
aufgebaut ist. Die Zwischenknoten oder Switches verwalten alle virtuellen
Verbindungen, die durch sie geleitet werden. In einem typischen
Netz, das nach dem ATM-Protokoll aufgebaut ist, können durch
einen Zwischenknoten mehrere Tausend virtueller Verbindungen weitergeleitet
werden.
-
Ferner
kann in einigen Netzprotokollen wie das ATM-Protokoll eine an einem
Zwischenknoten verloren gegangene Zeile nicht wieder durch die Quellendstation übertragen
werden, da kein Mechanismus zur Verfolgung einzelner Zellen eingesetzt
wird. Im ATM-Protokoll werden Zellen einfach in serieller Reihenfolge übertragen.
Beim Verlust einer Zelle wird die gesamte Nachricht wieder in Zellen
zerlegt und die Zellensequenz wieder nach dem ATM-Protokoll übertragen.
Demzufolge ist es wichtig, dass in einem Netz, welches gemäß einem
Protokoll wie das ATM-Protokoll aufgebaut ist, darauf geachtet wird,
dass im Zwischenknoten keine Zellen verloren gehen.
-
Um
den Verlust von Zellen zu vermeiden, hat man die Hop-by-Hop-Flusssteuerung
auf der Basis von Credits (Kontrollparameter) eingeführt, um
die Übertragungsrate
jeder Quellstation zu steuern. Für
die Belange der Flusssteuerung kann die Quellstation eine Endstation
oder alternativ die Quellstation ein Zwischenknoten sein, der Zellen
zu einem nachgeschalteten Zwischenknoten übertragen kann.
-
Bei
der Flusssteuerung auf der Basis von Credits wird einer virtuellen
Verbindung zunächst
eine Anzahl von Credits, die jederzeit bestehen können, zugewiesen.
Ein von einem Quellknoten einbehaltener Credit erteilt diesem Quellknoten
die Erlaubnis zum Übermitteln
einer Zelle. Wenn die Zelle vom Zielknoten empfangen wird, behält der Zielknoten
den Credit, bis ein Puffer im Zielknoten, welcher die Zelle empfangen
hat, von der empfangenen Zelle geleert wird.
-
Die
Anzahl der bestehenden Credits, die einer virtuellen Verbindung
zugewiesen sind, wird gewählt, damit
die virtuelle Verbindung mit der verfügbaren vollen Bandbreite arbeiten
kann. Die Anzahl der bestehenden Credits, die einer virtuellen Verbindung
zugewiesen sind, muss ausreichen, um die virtuelle Verbindungsleitung
während
einer Hin- und Zurückzeitperiode
zu füllen,
zuzüglich
einer weiteren Anzahl, um die Verarbeitungsfristen am Zielknoten
zu berücksichtigen.
Die Anzahl der Credits, die einer virtuellen Verbindung zugewiesen
sind, kann sich beispielsweise auf zehn (10) Credits belaufen.
-
Bei
der Hop-by-Hop-Flussteuerung auf der Basis von Credits verwaltet
jeder Zwischenknoten und der nächste
nachgeschaltete Zielknoten die Hop-by-Hop-Flussteuerung auf der
Basis von Credits, um zu gewährleisten,
dass der nächste
nachgeschaltete Zielknoten einen verfügbaren Puffer zur Aufnahme
der nächsten Zelle
hat.
-
Ein
Problem taucht auf, wenn ein Zielknoten Tausende von virtuellen
Verbindungen hat, beispielsweise mit Dutzenden von Credits, die
einer virtuellen Verbindung zugewiesen sind. Der Zielknoten speichert
die Anzahl der Credits, die in jede virtuelle Verbindung zurückgesendet
werden müssen.
Eine Datenstruktur zur Speicherung der Anzahl der in jede virtuelle
Verbindung zurückzusendenden
Credits beinhaltet eine Anzahl virtueller Verbindungen in Höhe von 12
Bits bis 24 Bits. Zur Aufnahme einer Datenstruktur dieser Größe kann ein
Speicherbedarf von 50.000 bis 100.000 Bytes erforderlich sein.
-
Ein
weiteres Problem besteht darin, dass die Liste virtueller Verbindungen
in einer Zellenzeit zugriffbar sein muss. Das heißt, dass
eine Liste von Credits aktualisiert werden muss, sobald eine Zelle
empfangen wird. Ein schneller Zugriff bedingt, dass die Liste der
Credits in einem VLSI-Chip
implementiert werden muss, wobei der VLSI-Chip die Logik implementiert,
die zur Implementierung der Flusssteuerung auf Basis von Credits
verwendet wird. Es ist jedoch sehr kostenaufwändig Tausende von gespeicherten
Kilobytes in einem Chip, der die Logik der Flusssteuerung auf Basis
von Credits implementiert, zu verwalten.
-
Es
wäre erstrebenswert,
eine geeignete und preiswerte Weise Lösung zu finden zum Verwalten
einer Liste von Credits, die in Tausenden von virtuellen Verbindungen
zurückgesendet
werden können
und über
einen schnellen Zugriff zur Liste zu verfügen.
-
Der
Datentransfer auf der Basis von FIFO-Warteschlangen ist aus dem
Stand der Technik bekannt.
-
Die
US-Patentschrift 5633867 beschreibt
ein ATM-Netzsystem, in welchem die ATM-Zellen in einem ATM-Adapter
eines lokalen Speichers gespeichert sind, der durch ein Managementsystem
anhand einer Anzahl von Warteschlangen verwaltet wird. Eine aktivierte
FIFO-Warteschlange in einem nachgeschalteten Adapter dient zur Speicherung
von Credits, die so eingeplant sind, dass sie zu einem vorgeschalteten
Adapter zurückgesendet
werden, und eine credit-verzögerte
FIFO speichert Credits jedes Mal, wenn sie vom aktivierten Adapter
zu einem nachgeschalteten Adapter zurückgesendet werden sollen, und
die
US-Patentschrift 4809232 offenbart
einen FIFO-Speicherpuffer,
der intern als 256-Bit-Wortreihe von einzeln adressierten Speicherzellen
angeordnet ist. 8-Bit-Wörter von
einer Datenquelle, die in der „FIFO"-Warteschlange gespeichert
werden sollen, werden, vier auf einmal, in 32-Bit-Wörter über ein
Eingangsschieberegister (d. h. Datenpacker)umformatiert. Die 32-Bit-Wörter werden
in jeweiligen Signalspeichern des Datenpackers getaktet und dann
in Parallelschaltung als 256-Bit-Wort zu einem Speicherzellen-Speicherelement
verschoben. Während
eines Auslesevorgangs bewegt ein paralleler Transferbetrieb ein
256-Bit-Wort von der Speichervorrichtung zu den jeweiligen 32-Bit-Datensignalspeichern
eines 8-stufigen Ausgangsschieberegisters (d. h. Datenentpacker),
ab welchem die 32-Bitwörter
taktgesteuert einem anderen Datenentpacker übergeben und zu 8-Bit-Ausgangsdatenwörtern umformatiert
werden.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Die
Problemstellungen bezüglich
der Verwaltung einer Liste von Credits für viele virtuelle Verbindungen
werden mittels der vorliegenden Erfindung einer FIFO-Warteschlange
und einer FIFO-Warteschlangenerweiterung gelöst.
-
Die
Erfindung in ihrer erweiterten Form beruht auf einem Gerät nach Patentanspruch
1. Ferner beruht die Erfindung auf einem Verfahren zum Empfang und
zur Übermittlung
von Daten nach Patentanspruch 10.
-
Wie
nachstehend in Bezug auf einer bevorzugten Ausführungsform dargestellt, empfängt eine FIFO-Warteschlage
und übermittelt
Daten zu den virtuellen Verbindungen. Das vordere Ende der FIFO-Warteschlange,
wo die Daten geschrieben werden, und das hintere Ende der FIFO-Warteschlange,
wo die Daten gelesen werden, sind vorzugsweise auf einem Halbleiterchip
resident. Der FIFO-Speicher hat zusätzliche Speicherfähigkeit
in Form einer Erweiterung in einem lokalen Speicher, wo der mittlere
Teil des FIFO-Speichers resident ist. Die Erweiterung im lokalen
Speicher ist nur zugriffbar, wenn der Teil auf dem Chip der FIFO voll
ist. Der lokale Speicher ist vom Chip getrennt angeordnet. Die Erweiterung
im lokalen Speicher ist nur zugriffbar, wenn die Teile der FIFO
auf dem Chip voll sind. Der lokale Speicher ist in Stößen von
mehren Datenbytes sowohl für
Lesetransaktionen als auch für
Schreibtransaktionen zugriffbar.
-
Der
in VLSI implementierte Teil der Warteschlange, d. h. der auf dem
Chip implementierte Teil, erlaubt einen schnellen Zugriff auf den
Speicher zum Lesen und Schreiben. Der Datenzugriff auf einen lokalen
Speicher, beispielsweise einen dynamischen RAM-Speicher, bedingt
einen Zeitverzug oder eine Wartezeit, die dem lokalen Speicher inhärent ist.
In der Regel besteht ein weiterer Zeitverzug beim Zugriff auf den
lokalen Speicher aufgrund der Tatsache, dass der lokale Speicher
mit anderen Tasks gemeinsam genutzt wird. Ein Speicher-Arbiter vermittelt
zwischen den Tasks, die einen Zeitverzug verursachen, während andere
Tasks aus der Warteschlange über
die Lese- oder Schreibpriorität
verfügen.
-
Durch
Anordnen des vorderen und hinteren Endes der FIFO-Schlange auf einem
Chip kann auf die Warteschlange schneller zugegriffen werden. Die
Schaffung einer Erweiterung im lokalen Speicher ermöglicht eine
hohe Speicherkapazität
für die
Warteschlange. Durch Speicherung des mittleren Teils der Warteschlange in
der Erweiterung können
Zeitverzüge
beim Zugriff auf den lokalen Speicher zugelassen werden, da der
mittlere Teil der Warteschlange keinen schnellen Zugriff erfordert.
Das Schreiben oder Lesen mehrerer Datenbytes in die Erweiterung
des lokalen Speichers reduziert darüber hinaus den Einfluss der
Wartezeit des lokalen Speichers auf den Warteschlangenbetrieb.
-
KURZDARSTELLUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung mit den zuvor erwähnten und sonstigen Vorteilen
lässt sich
leichter anhand der folgenden ausführlichen Beschreibung beispielhafter
Ausführungsformen
der Erfindungsidee begreifen, die in den Zeichnungen dargestellt
sind, wobei:
-
1 ein
Blockschaltbild eines Computernetzes zeigt;
-
2 ein
Diagramm einer ATM-Zelle zeigt;
-
3 ein
Diagramm einer ATM-Zelle, so wie sie in der Flusssteuerung auf Basis
von Credits verwendet wird, zeigt;
-
5 ein
Diagramm des Empfängerteils
des nachgeschalteten Adapters von 4 zeigt;
-
6 ein
Blockschaltbild eines Mechanismus zum Rücksenden von Credits, der vom
nachgeschalteten Adapter von 4 verwendet
wird, zeigt;
-
7 ein
Blockschaltbild der zeitverzögerten
FIFO zeigt;
-
NÄHERE DARSTELLUNG
-
1 zeigt
eine beispielhaftes ATM-LAN-Netz (LAN = Local Area Network = lokales
Netz), das vier Stationen A 12, B 14, C 16 und
D 18 beinhaltet. Das ATM-LAN 10 beinhaltet ferner
den ATM-Switch E 20 und den ATM-Switch F 22. Auf
jeder der Stationen 12, 14, 16, 18 ist
ein ATM-Adapter resident. Daneben haben die ATM-Switches Ports 32, 34,
wobei jeder Port für
den Switch des anderen Ports reserviert ist. Der ATM-Adapter stellt
eine Schnittstelle zwischen den Stationen 12, 14, 16, 18 und
den Switches 20, 22 bereit. Die ATM-Switches haben
Ports 26, 27, 28, 29, die jeweils
für eine
der Stationen 12, 14, 16, 18 reserviert
sind. Wenn zum Beispiel die Station A 12 Pakete für die Station
C 16 vermittelt, sorgt der ATM-Adapter in Station A 12 dafür, dass
die Daten in Zellen segmentiert und die geeigneten Felder in einem
Header (2 und 3) angebracht
werden. Der ATM-Adapter der Station C 16 sorgt dafür, dass
die in einem kompletten Paket empfangenen Zellen wieder zusammengefügt werden
und liefert das Paket zur Station C 16. Die Steuerung des ATM-LAN 10 ist
auf den ATM-Switches E 20 und F 22 resident, welche
Nachrichten zwischen den Stationen 12, 14, 16, 18 weiterleiten
und den Zugriff im Fall von Stauung steuern. Als Beispiel sei die
Station A 12 gegeben, die eine Zelle über eine Leitung 30 um
ATM-Switch E 20 über
den Port 26 sendet. Der ATM-Switch E 20 kann eine
Zelle zu einem Ziel, beispielsweise Station C, gemäß einer
virtuellen Pfadkennung VPI (Virtuel Path Identifier) und virtuellen
Kanalkennung VCI (Virtual Channel Identifier) in einem ATM-Header
(der näher
unter Bezugnahme auf 2 und 3 beschrieben
wird) senden.
-
Da
jeder Port 26, 27, 28, 29 für jeweils
eine der Stationen 12, 14, 16, 18 reserviert
ist, brauchen die anderen Stationen nicht um den Zugriff auf die
ATM-Switche 20, 22 zu ringen. Die Station A 12 hat
somit den vollen Zugriff auf die Leitung 30, ungeachtet
der Aktivität
von anderen Stationen mit anderen derartigen Verbindungen. Wird
beispielsweise eine Datei von Mb von der Station A 12 zur
Station C 16 vermittelt, kann sie zum ATM-Switch E 20 in
einem kontinuierlichen Stoss mit der vorgeschriebenen Rate, unter
Umständen
der vollen Kanalrate, bewegt werden, anstatt die Kommunikationsverknüpfung in
den anderen Stationen gemeinsam zu nutzen und Interventionsrahmen
von anderen Stationen sowie mit anderen LANs wie Ethernet, Token Ring
und LANs mit FDDI (Fiber Distributed Data Interface: Netzwerk auf
Glasfaserbasis) aufzuweisen.
-
Jede
Nachricht im ATM-LAN 10 umfasst eine oder mehrere feste
Längeneinheiten
von Daten mit der Bezeichnung ATM-Zellen. In 2 ist eine
53 Bytes lange ATM-Zelle 50 dargestellt. Die ATM-Zelle 50 ist
typischerweise in einen Header 52 von 5 Bytes und ein Informationsfeld 56 von
48 Bytes unterteilt. Der Header 52 von 5 Bytes weist mehrere
Felder 56 auf. Spezifisch umfasst ein erstes Byte ein Feld
der generischen Flusssteuerung GFC (Generic Flow Control) und einen
Anteil eines Felds 60 der virtuellen Pfadkennung VPI (Virtual Path
Identifier). Ein zweites Byte umfasst einen anderen Anteil des VPI-Felds 62 und
einen Anteil eines Felds 64 der virtuellen Kanalkennung
VCI (Virtual Channel Identifier). Ein drittes Byte umfasst einen
anderen Anteil des VCI-Felds 66. Ein viertes Byte umfasst
den restlichen Anteil des VCI-Felds 68, ein Feld 70 Payloadtyp kennung
(PT) und ein Feld 72 der Zellverlustspriorität CLP (Cell
Loss Priority). Ein fünftes
Byte umfasst eine Header-Fehlerkontrolle 74.
-
Die
Adresse der ATM-Zelle 50 ist in den Feldern mit der Bezeichnung
VPI 60, 62 und VCI 64, 66, 68 untergebracht.
Dank dieser zweiteiligen Identifikation kann das ATM-LAN 10 die
Daten, die im Informationsfeld 54 enthalten sind, zwischen
den Plätzen
weiterleiten, während
es gleichzeitig die Identität
individueller Verbindungen in einem Baumbereich verwaltet.
-
3 zeigt
eine ATM-Zelle 80, die in einem Flusssteuerungssystem auf
Basis von Credits verwendet wird. Der Header 82 ist 5 Bytes
lang und umfasst mehrere Felder 84. Ein erstes Byte umfasst
spezifisch ein GFC-Feld 86 und einen Anteil eines VCI auf
Basis von Credits (Credit-VCI) 88. Ein zweites Byte umfasst
einen anderen Anteil eines Credits VCI 90. Ein drittes
Byte umfasst einen Anteil eines Ziel-VCI 92. Ein viertes
Byte umfasst einen restlichen Anteil des Ziel-VCI 94, ein
PT-Feld 96 und ein CLP-Feld 98. Ein fünftes Byte
umfasst ein Header-Fehlerkontrollfeld 100.
-
Das
Credit-Feld jeder ankommenden Zelle identifiziert den virtuellen
Kanal (VC) der Übermittlung,
an welchen ein neuer Credit zur Übermittlung
vergeben wird. Der Empfänger
soll dem Sender einen Credit zurücksenden,
nachdem er die ankommende Zelle aus ihrem Puffer bewegt hat. Dem
zurückgesendeten
Credit ist eine vom Empfänger übermittelte
Zelle angehängt.
Der VC, dessen Credit zurückgesendet
wird, ist jener, den die ankommende Zelle nachgeschickt hat, d.
h. der Wert im VCI-Feld. Das Übermitteln
oder Empfangen von Credits erfolgt mit einem Credit pro Zelle. Eine
ankommende Zelle kann eventuell eine Nullzelle sein, die durch den
Ziel-VCI = 0 angegeben wird. In diesem Fall wird die Zelle ignoriert
und kein Credit zurückgesendet. Eine übermittelte
Zelle überträgt keine
Credits, wenn ihr Credit-Wert gleich 0 ist. Wenn eine ankommende
Zelle einen Credit für
einen der Übermittlungs-VCs
(Credit <> 0) umfasst, wird der
Credit-Ausgleich des Übermittlungs-VC
mit Eins inkrementiert, und wenn dieser VC aufgrund eines fehlenden
Credits gestoppt wurde, wird der VC wieder gestartet.
-
In 4 ist
ein beispielhaftes ATM-Flusssteuerungssystem auf Basis von Credits
dargestellt. Bei diesem beispielhaften ATM-Flusssteuerungssystem
sendet ein Übermittlerteil 402 eines
nachgeschalteten ATM-Switches 400 eine ATM-Zelle 404 auf
eine virtuelle Verbindungskennung (VCI) 406. Das Credit-Feld 408 in
der ATM-Zelle 404 überträgt einen
Credit für
einen Übermittlerteil 410 eines
nachgeschalteten ATM Adapters 412 für die VCI 414. Ein
Credit ist einfach ein OK, das einer ATM-Zelle auf einer VCI zu
senden ist mit der Gewissheit, dass die Zelle am Fernende mit einem
Puffer versehen ist und dass es infolgedessen nicht zu Erfahrungsverlust
kommt.
-
Wenn
sich im beispielhaften ATM-Flusssteuerungssystem von 4 der
nachgeschaltete ATM-Adapter 412 zur ATM-Zelle 404 von
VCI 406 ab seinem lokalen Speicher 416 von einem
Empfängerteil 418 und
zu einem Hostspeicher 420 bewegt, erzeugt der nachgeschaltete
ATP-Adapter 412 einen Credit 426 für den Übermittlerteil 402 des
nachgeschalteten ATM-Switches 400,
um die Übermittlung
einer neuen ATM-Zelle (nicht dargestellt) auf der VCI 406 zu
ermöglichen.
Andere Adapterkonzepte können
einen Credit 426 beim Empfang der ATM-Zelle zurücksenden
und in einem lokalen Speicher 416 speichern. Dieser Credit
für den Übermittlerteil 402 kann über eine
ATM-Zelle übertragen
werden, die vom Übermittlerteil 410 des
nachgeschalteten ATM-Adapters 412 zu einem Empfängerteil 424 des
vorgeschalteten ATM-Switches 400 übermittelt wird. In 4 wird
beispielsweise ein Credit 426 für die VCI 406 auf
eine ATM-Zelle 428 auf der VCI 414 übertragen.
-
Der
Empfängerteil 424 des
vorgeschalteten ATM-Switches 400 empfängt die ATM-Zelle 428 vom Übermittlerteil 410 des
nachgeschalteten ATM-Adapters 412 und speichert sie in
seinem lokalen Speicher 420. Der nachgeschaltete ATM-Switch 400 verwendet
den Credit 426 zur Übermittlung
einer anderen Zelle auf die VCI 406. Wenn der nachgeschaltete
ATM-Switch 400 die ATM-Zelle 428 von seinem lokalen
Speicher 430 zu einem seiner Ausgangsport 432 bewegt,
erzeugt der nachgeschaltete ATM-Switch 400 einen Credit 434 für die VCI 414,
der durch jede beliebige ATM-Zelle übertragbar ist, die zum nachgeschalteten
ATM-Adapter 412 übermittelt
wird.
-
Um
eine volle Verknüpfungsgeschwindigkeit
für jede
virtuelle Verbindung zu verwalten, muss jede Übermittler-VC mit einer geeigneten
festen Anzahl von Erst-Credits versehen sein. Die Anzahl der Erst-Credits für jede VC
ist typischerweise derart festgesetzt, dass die bei voller Verknüpfungsrate
fließen
kann. Die Anzahl der Erst-Credits muss auch ausreichen, damit die
erste Zelle, die in einem gegebenen Zellenstoß gesendet wird, ihre Credits
zum Sender zurücksendet,
bevor der Sender seine Erst-Credits erschöpft, wenn keine Konkurrenzsituation
von jeder sonstigen VC auf der Verknüpfung besteht. In anderen Worten,
die Anzahl der Erst-Credits sollte groß genug sein, um zu gewährleisten,
dass der Vermittlerabschnitt 402 eines nachgeschalteten
ATM-Switches 400 nicht die Vermittlung stoppt, bevor der
nachgeschaltete ATM-Switch 400 einen ersten Credit vom Übermittlerteil 410 des
nachgeschalteten ATM-Adapters 412 empfängt. Somit sollte der Empfängerteil 418 des
nachgeschalteten ATM-Adapters 412 über genügend lokalen Speicher 416 verfügen, um
eine Anzahl von Zellen anzupassen, die der Übermittlung von Erst-Credits
entsprechen, welche an den nachgeschalteten ATM-Switch 400 vergeben
wurden. Natürlich
braucht der Empfänger
auch genügend
Puffer, um für den
Vermittler die vergebenen Erst-Credits wegen des Hin- und Rücksendezeitverzugs
der Credits anzupassen.
-
5 zeigt
den Empfängerteil
des nachgeschalteten Adapters 412 von 4.
Der Empfängerteil 418 des
nachgeschalteten Adapters 412 hat neun Warteschlangen 500 zur
Wiederzusammenfügung
von Paketen in seinem lokalen Speicher 416. Die neun Warteschlangen 500 beinhalten
eine aktivierte Warteschlange 510 und acht blockierte Warteschlangen 520–527.
Der Host des Adapters hat Empfangshost-Warteschlangen zum Empfang
zusammengefügter
Pakete vom Adapter. Wenn ein Paket zusammengefügt ist, wird es lediglich auf einer
der Empfangshost-Warteschlangen angeordnet.
-
Wenn
der nachgeschaltete ATM-Adapter 412 in seinem Empfängerteil
eine erste ATM-Zelle für
eine besondere VC (beispielsweise VC 106) empfängt, hat
der nachgeschaltete ATM-Adapter zwei Wahlmöglichkeiten. Der nachgeschaltete
ATM-Adapter kann die VC 106 in die aktivierte Warteschlange 510 einreihen,
oder der nachgeschaltete ATM-Adapter 412 kann die VC 106 in
einer der acht blockierten Warteschlangen 520–527 einreihen.
-
Der Übermittlerteil 420 des
nachgeschalteten ATM-Adapters 412 wird prinzipiell Credits
zu einer VC, die in der aktivierten Warteschlange 510 angeordnet
ist, zurücksenden.
Solange die VC in die blockierte Warteschlange eingereiht ist, bleiben
die Credits im nachgeschaltete ATM-Adapter 412 und werden
erst zum vorgeschalteten Switch zurückgesendet, wenn die VC aus
der blockierten Warteschlange entfernt und in die aktivierte Warteschlange 510 eingereiht
ist.
-
6 zeigt
den Übermittler 410 des
nachgeschaltete ATM-Adapters 412.
Um eine große
Anzahl von Credits zu erledigen, weist der nachgeschaltete Adapter-Übermittler 410 zwei
FIFO-Warteschlangen 600, 610 und einen Arbiter
auf. Bei den beiden FIFOs handelt es sich um eine credit-zeitverzögerte FIFO 600 und
eine aktivierte FIFO 610. Der Arbiter 620 hat ein
Befehls- und Statusregister CSR (Command and Status Register), das
die Bewegung von Credits in den FIFOs steuert. Das CSR 630 hat
eine programmierbares Prüfbit 635. Der
nachgeschaltete Adapter 412 verwendet den Arbiter 620,
um zu entscheiden, welche FIFO zum Rücksenden der Credits verwendet
werden soll. Die credit-zeitverzögerte
FIFO 600 ist eine umfangreiche FIFO, die zur Speicherung
von zeitverzögerten
Credits verwendet wird. Es wird nur ein Credit pro übermittelter
Zelle zurückgesendet.
Jedes Mal, wenn der Adapter 412 entscheidet, Credits von
der aktivierten FIFO 610 zurückzusenden, wird der regelmäßige Fluss
zum Zurücksenden
von Credits temporär
in die credit-zeitverzögerte
FIFO 600 gesetzt. Die credit-zeitverzögerte FIFO 600 weist
die VC-Anzahl sowie den Credit auf (ein Credit pro Eintrag). Die
aktivierte FIFO 610 dient zur Speicherung der Credits,
die zum Zurücksenden
eingeplant sind, wenn die von der blockierten Warteschlange 520–527 zur
aktivierten Warteschlange 510 bewegt wurde. Alle Credits,
die während
der Zeit, wo die VC in einer blockierten Warteschlange 520–527 war,
blockiert waren, werden in einen Eintrag in der aktivierten FIFO 610 gesetzt.
Ein Eintrag auf der aktivierten FIFO 610 weist die VC-Anzahl
und die VC Credit Zählwerte
auf.
-
7 zeigt
die zeitverzögerte
FIFO 600. Die zeitverzögerte
FIFO ist in zwei Hauptteile gegliedert: Komponenten, die auf dem
Chip 710 resident sind, und eine Erweiterung 720 des
lokalen Speichers 723, die im lokalen Speicher 723 resident
ist. Die Komponenten auf dem Chip 710 sind ein Speicher
und eine Steuerung 745. In der vorliegenden Ausführungsform
der Erfindung ist der Speicher ein sequentieller Speicher, der in
vier logische Speichereinheiten 725, 730, 735, 740 gegliedert
ist, wobei jede bis zu 16 Credits umfasst. In einer alternativen
Ausführungsform
der Erfindung kann der Speicher auf dem Chip 710 in mehr
oder weniger als vier logische Speichereinheiten gegliedert sein.
-
Das
vordere Ende der zeitverzögerten
FIFO 600, wo die Daten geschrieben werden, und das hintere Ende
der zeitverzögerten
FIFO 600, wo die Daten gelesen werden, sind auf dem Chip 710 resident.
Die zeitverzögerten
FIFO 600 hat eine zusätzliche
Speicherungsmöglichkeit
in der Erweiterung 720 im lokalen Speicher 723,
wo der mittlere Teil der zeitverzögerten FIFO 600 resident
ist. Auf die Erweiterung des lokalen Speichers 720 kann
nur zugegriffen werden, wenn die Teile auf dem Chip der zeitverzögerten FIFO 600 voll
sind. Die Erweiterung des lokalen Speichers 720 ist in
Stößen von
mehreren Datenbytes zugriffbar, d. h., dass eine Speichereinheit
von Daten sowohl für
Lesetransaktionen als auch für
Schreibtransaktionen bewegt wird.
-
Der
Teil der zeitverzögerten
FIFO 600, der auf dem Chip 710 implementiert wird,
erlaubt den Zugriff auf den Speicher zum Lesen und Schreiben. Der
Datenzugriff auf den lokalen Speicher 723 bedingt einen
Zeitverzug oder eine Wartezeit, die dem lokalen Speicher inhärent ist.
In der Regel besteht ein weiterer Zeitverzug beim Zugriff auf den
lokalen Speicher aufgrund der Tatsache, dass der lokale Speicher 723 mit
anderen Tasks gemeinsam genutzt wird. Ein Arbiter 620 vermittelt
zwischen den Tasks, die einen Zeitverzug verursachen, während andere
Tasks aus der Warteschlange über
die Lese- oder Schreibpriorität
bezüglich
der zeitverzögerten
FIFO 600 verfügen.
-
Durch
Anordnung des vorderen und hinteren Endes der zeitverzögerten FIFO-Warteschlange 600 auf dem
Chip 710 ist ein schneller Datenzugriff auf die zeitverzögerte FIFO 600 möglich. Die
Erweiterung des lokalen Speichers 720 stellt einen großen Speicherbereich
für die
zeitverzögerte
FIFO 600 bereit. Durch die Speicherung des mittleren Teils
der zeitverzögerten
FIFO 600 in der Erweiterung des lokalen Speichers 720 können die
Zeitverzüge
beim Zugriff auf den lokalen Speicher 723 zugelassen werden,
weil der mittlere Teil der Warteschlange keinen schnellen Zugriff
erfordert. Das Schreiben oder Lesen mehrerer Datenbytes in die Erweiterung
des lokalen Speichers reduziert darüber hinaus den Einfluss der
Wartezeit des Lokalen Speichers auf den Betrieb der zeitverzögerten FIFO 600.
-
In
der vorliegenden Ausführungsform
der Erfindung ist der Chip-Speicher ein statischer RAM-Speicher (SRAM).
Der SRAM ist physikalisch in vier aufeinanderfolgende Teile gegliedert,
um logische Speichereinheiten zu bilden. Jeder der vier physikalischen
Teile ist eigentlich eine kleine FIFO mit einem Schreib- und Lesezeiger.
-
Die
zeitverzögerte
FIFO 600 empfängt
Credits für
VCs, die in der aktivierten Warteschlange 510 sind und
die sofort zurückgesendet
werden sollten. In der vorliegenden Ausführungsform der Erfindung werden
die Credits in derselben Reihenfolge, wie ihre jeweiligen Zellen,
ankommen, zurückgesendet.
-
Die
zeitverzögerte
Credit-FIFO 600 hat eine Steuerung 745, die den
Status der FIFO 600 steuert. Die Steuerung 745 umfasst
zwei Statusmaschinen 750, 755: eine erste Statusmaschine 755,
welche die rechten Speichereinheiten 725, 730 (0
und 1) steuert, und eine zweite Statusmaschine 750, welche
die linken Steuereinheiten 735, 740 (2 und 3)
steuert.
-
Credits
werden in die rechten Speichereinheiten 725, 730 fortlaufend
geschrieben. Die Statusmaschine 755, welche die rechten
Steuereinheiten 725, 730 steuert, ist für das Ordnen
von Platz verantwortlich, damit mehr Credits in die rechten Speichereinheiten
geschrieben können.
Die Statusmaschine 755 erfüllt dies, indem eine volle
Speichereinheit bewegt wird, wenn eine der rechten Speichereinheiten
voll ist, und die andere rechte Speichereinheit einen Schwellenwert
erreicht. Die Statusmaschine 755 bewegt die volle Speichereinheit
nach links, wenn die linken Speichereinheiten leer sind und zur
Erweiterung des lokalen Speichers 720, wenn die linken
Speichereinheiten nicht leer sind.
-
Sobald
die Erweiterung des lokalen Speichers 720 Daten beinhaltet,
werden Credits nur aus den linken Speichereinheiten 735, 740 gelesen.
Die Statusmaschine 750, welche die linken Speichereinheiten 735, 740 steuert,
ist dafür
verantwortlich, dass diese Speichereinheiten voll mit zu lesenden
Credits bleiben. Die Statusmaschine erfüllt dies, indem sie einen freien
Platz aus der Erweiterung des lokalen Speichers 720 in
eine leere linke Speichereinheit 735, 740 kopiert,
wenn eine der linken Speichereinheiten leer ist.
-
Zusätzlich zu
den zwei Statusmaschinen 750, 755 gibt es einen
Zeiger, der auf den Anteil 725, 730, 735, 740 (rechte
oder linke Speichereinheiten) der zeitverzögerten FIFO 600, aus
welcher die Credits gelesen werden, zeigt. Dieser Zeiger gibt den
linken Speichereinheiten an, wenn eine der linken Speichereinheiten nicht
leer ist, oder wenn die Erweiterung des lokalen Speichers 720 nicht
leer ist.
-
Die
Erweiterung des lokalen Speichers 720 im lokalen Speicher 723 ist
in m freie Plätze
gegliedert. In der beispielhaften Ausführungsform beinhaltet jeder
freie Platz 16 Credits (8 Langwörter, was der genauen Größe einer
vollen Speichereinheit entspricht). Ein Vorwärts- und Rückwärtszähler zählt die Anzahl der freien Plätze im lokalen
Speicher 723, die gerade verwendet werden.
-
Der
Arbiter
620 verwendet eine dynamische 1-von-N-Vermittlung
(1 von der aktivierten FIFO
610, N von der zeitverzögerten FIFO
600),
wobei N in dem Maße
größer wird,
wie sich die Anzahl der belegten Einträge in die zeitverzögerte FIFO
600 vergrößert, was
durch die Tabelle 1 veranschaulicht wird. Auf diese Weise wird der zeitverzögerten FIFO
600 die
Priorität
zugeteilt, aber unterbindet eine mögliche Dienstentkräftung der aktivierten
FIFO
610.
Aktivierte
FIFO | Zeitverzögerte FIFO | Zustand |
1
Credit | 32
Credits | FIFO-Erweiterung
leer |
1
Credit | 64
Credits | 0 < FIFO-Erw. < 4K |
1
Credit | 128
Credits | 4K < FIFO-Erw. < 8K |
1
Credit | 256
Credits | 8K < FIFO-Erw. < 16K |
0
Credit | Volle
Priorität | 16K < FIFO-Erweit. |
Tabelle
1
-
Die
dynamische 1-von-N-Vermittlung funktioniert folgendermaßen. Falls
die Erweiterung des lokalen Speichers 720 im lokalen Speicher 723 leer
ist, wird ein Credit von der aktivierten FIFO 610 zurückgesendet für alle 32
Credits, die von der zeitverzögerten
FIFO 600 zurückgesendet
werden. Falls die FIFO-Erweiterung des lokalen Speichers 720 nicht
leer sein sollte, aber weniger als 4K Credits hat, wird ein Credit
von der aktivierten FIFO 610 zurückgesendet für alle 64
Credits, die von der zeitverzögerten
FIFO 600 zurückgesendet werden.
Falls die Anzahl der Credits in der FIFO-Erweiterung des lokalen
Speichers 720 zwischen 4K und 8K liegt, wird ein Credit
von der aktivierten FIFO 610 zurückgesendet für alle 128
Credits, die von der zeitverzögerten
FIFO zurückgesendet
werden. Sollte die Anzahl der Credits in der FIFO-Erweiterung des
lokalen Speichers 720 zwischen 8K und 16K liegen, wird
ein Credit von der aktivierten FIFO 610 zurückgesendet
für alle 256
Credits, die von der zeitverzögerten
FIFO 600 zurückgesendet
werden. Wenn mehr als 16K Credits in der FIFO-Erweiterung des lokalen
Speichers 720 sind, erlangt die zeitverzögerte FIFO 600 die
volle Priorität über die
aktivierte FIFO 610.
-
Darüber hinaus
wird das programmierbare Bit 635 im Befehls- und Statusregister CSR (Command and Status
Register), sobald es gesetzt ist, den Arbiter 620 zwingen,
Credits von der zeitverzögerten
FIFO 600 nur so lange zurückzusenden, wie sie nicht leer
ist. Diese Betriebsart erteilt der zeitverzögerten FIFO 600 in
Bezug auf die aktivierte FIFO 610 eine höhere feste
Priorität.
-
8 ist
ein Flussdiagramm des Schreibvorgangs der zeitverzögerten FIFO 600,
die vom Arbiter 620 gesteuert wird. Die Credits werden
in die Speichereinheit 0 725 und die Speichereinheit 1 730,
die auch „rechte Speichereinheiten" genannt werden,
auf dem Chip 710, Block 800, geschrieben. Wenn
eine der rechten Speichereinheiten voll ist und die andere einen
vorgegebenen Schwellenwert erreicht, entscheidet Block 810,
der nachgeschaltete Adapter, wohin die Daten bewegt werden sollen,
Block 820. Wenn die Speichereinheit 2 735 und
die Speichereinheit 3 740 (die „linken Speichereinheiten") nicht leer sind,
dann wird die vollberechtigte Speichereinheit in die Erweiterung
des lokalen Speichers, Block 830, kopiert. Wenn mindestens
eine der linken Speichereinheiten leer ist, dann wird der Status
der Erweiterung des lokalen Speichers 720, Block 840,
geprüft. Ist
mindestens eine der Erweiterungen des lokalen Speichers 720 leer,
dann wird der Status der Erweiterung des lokalen Speichers 720,
Block 840 geprüft.
Wenn die Erweiterung des lokalen Speichers 720 leer ist,
dann wird die vollberechtigte Speichereinheit zur leeren linken
Speichereinheit bewegt, indem die Zeiger zwischen den Speichereinheiten
ausgetauscht werden, Block 850. Es werden nun überhaupt
keine Daten zu einem anderen Platz auf dem Chip bewegt, ausgenommen
der Zeiger. Wenn die Erweiterung des lokalen Speichers nicht leer
ist, dann wird die vollberechtigte Speichereinheit in die Erweiterung
des lokalen Speichers, Block 830, kopiert.
-
Ab
diesem Punkt ist die zeitverzögerte
FIFO eine umfangreiche FIFO, deren mittlerer Anteil sich in der Erweiterung
des lokalen Speichers 720 befindet. Der Kopf und Schwanz
der FIFO werden prinzipiell auf dem Chip 710 gehalten.
-
Wenn
die Erweiterung des lokalen Speichers 720 verwendet wird,
werden die Credits nach wie vor in die rechten Speichereinheiten 725, 730 (0
oder 1) geschrieben. Ist eine der rechten Speichereinheiten voll
und die andere Speichereinheit erreicht den Schwellenwert, wird
die volle Speichereinheit in die FIFO-Erweiterung des lokalen Speichers 720 geschrieben,
und der Vorwärts-Rückwärtszähler wird
um Eins inkrementiert. Ein Schreibzeiger der FIFO-Erweiterung im lokalen
Speicher 723 wird um 8 inkrementiert (8 Einträge sind
erforderlich, um 16 Credits aufzuweisen).
-
9 ist
ein Flussdiagramm des Lesevorgangs der zeitverzögerten FIFO 600, die über die
linke Statusmaschine 750 gesteuert wird. Bei der Inbetriebnahme
sind die linken Speichereinheiten 735, 740 (Speichereinheiten
2 und 3) leer, und die Credits werden aus den rechten Speichereinheiten 725, 730 (Speichereinheiten
0 und 1), Block 900, gelesen. Wenn keine volle rechte Speichereinheit
vorhanden ist oder den Schwellenwert erreicht, Entscheidungsblock 910,
werden die Credits weiterhin aus den rechten Speichereinheiten,
Block 900, gelesen. Wenn eine volle rechte Speichereinheit
vorhanden ist oder den Schwellenwert erreicht, Entscheidungsblock 910,
dann wird die volle rechte Speichereinheit (oder mit dem Schwellenwert)
auf eine der linken Speichereinheiten kopiert, d. h. ein Zeiger
in einer Weise bewegt wird, dass die rechte Speichereinheit zu einer
linken Speichereinheit wird. Die Credits werden dann aus den linken
Speichereinheiten, Block 920, gelesen. Wenn die linken
Speichereinheiten leer sind, Entscheidungsblock 930, kehrt
die linke Statusmaschine 750 in den Inbetriebnahmestatus
zurück
und liest die Credits aus den rechten Speichereinheiten. Wenn die linken
Spei chereinheiten nicht leer sind, Entscheidungsblock 930,
wird die Erweiterung des lokalen Speichers 720 geprüft. Wenn
die Erweiterung des lokalen Speichers 720 nicht leer ist,
Entscheidungsblock 940, wird ein freier Platz aus der Erweiterung
des lokalen Speichers 720 gelesen. Der freie Platz wird
in eine leere linke Speichereinheit, Block 950, eingelesen.
An diesem Punkt werden mindestens zwei linke Speichereinheiten verwendet,
und die Credits werden aus den linken Speichereinheiten, Block 960,
ausgelesen. Die Credits von den linken Speichereinheiten werden
weiterhin gelesen, bis eine der linken Speichereinheiten geleert
wird, Entscheidungsblock 970. Wenn eine der linken Speichereinheiten
geleert wird, Entscheidungsblock 970, kehrt die linke Statusmaschine 750 in
den Status von Block 920 zurück, wo einer der linken Speichereinheiten
leer ist und weiterhin aus den linken Speichereinheiten, Block 920,
liest.
-
Wenn
die Erweiterung des lokalen Speichers 720 leer ist, Entscheidungsblock 940,
sieht sich die linke Statusmaschine 750 nach einer vollen
rechten Speichereinheit, oder die ihren Schwellenwert erreicht hat,
um, Entscheidungsblock 980. Wird eine Speichereinheit aus
den rechten Speichereinheiten herüberkopiert, liest die linke
Statusmaschine 750 die Credits aus den linken Speichereinheiten,
Block 960. Wenn keine neue Speichereinheit bei den rechten
Speichereinheiten vorhanden ist, liest die linke Statusmaschine
die Credits aus der linken Speichereinheit, die immer noch zu lesende
Credits aufweist, Block 920.
-
Der
Platz der Erweiterung 720 im lokalen Speicher 723 ist
programmierbar. Die erste Adresse ist fest (C200 Hex in der vorliegenden
Ausführungsform),
aber die Länge
kann programmiert werden, indem der gewünschte Wert in das Befehls-
und Statusregister geschrieben wird.
-
Die
Chip-Steuerlogik 745 setzt die logischen Schreib- und Lesezeiger
in ordnungsgemäße physikalische
Schreib- und Lesezeiger um. Ferner identifizieren andere Steuervariablen,
ob der aktuelle Schreibvorgang zur logischen Speichereinheit 0 oder
zur logischen Speichereinheit 1 geht und ob der aktuelle Schreibvorgang
von den logischen „rechten" Speichereinheiten
zu den logischen „linken" Speichereinheiten
erfolgt. Eine dritte Steuervariable gibt vor, welche der Speichereinheiten
innerhalb der Gruppe die zu lesende Speichereinheit ist.
-
Es
gibt vier physikalische Plätze
im statischen RAM-Speicher. Jeder physikalische Platz ist einer
der zuvor erwähnten
physikalischen Anteile. Jede logische Speichereinheit hat einen
Zeiger auf einem der physikalischen Anteile, auf welchem sie resident
ist.
logic_ptr_0<1:0>: Zeiger auf der Stelle,
wo die logische Speichereinheit #0 resident ist
logic_ptr_1<1:0>: Zeiger auf der Stelle,
wo die logische Speichereinheit #1 resident ist
logic_ptr_2<1:0>: Zeiger auf der Stelle,
wo die logische Speichereinheit #2 resident ist
logic_ptr_3<1:0>: Zeiger auf der Stelle,
wo die logische Speichereinheit #3 resident ist
-
Logic_ptr_0<1:0> ist die Adresse im
physikalischen Anteil des statischen RAM-Speichers, der zur logischen
Speichereinheit X (X = 0, 1, 2, 3) gehört. Die Adresse innerhalb dieses
Anteils (der Relativzeiger im Anteil) wird vom physikalischen Anteil
der Schreib-Lesezeiger erhalten. Die physikalische Leseadresse im
statischen RAM-Speicher für
einen Credit in der logischen Speichereinheit X wird folgendermaßen erhalten:
physical_read_address<5:4> = logic_ptr_X<1:0>
physical_read_address<3:0> = physikalischer Anteil,
gezeigt durch ptr X, read address<3:0>
und die physikalische
Schreibadresse im statischen RAM-Speicher
für einen
Credit in der logischen Speichereinheit X wird folgendermaßen erhalten:
physical_write_address<5:4> = logic_ptr_X<1:0>
physical_write_address<3:0> = physikalischer Anteil,
gezeigt durch ptr X, write address<3:0>
-
In
die aktivierte FIFO wird durch die PAM (Packet Assembly Machine:
Paketorientierte Maschine) geschrieben, wenn sie eine VC von einer
blockierten Warteschlange zur aktivierten Warteschlange bewegen. Wenn
eine VC in der blockierten Wartschlange ist, werden ihre Credits
nicht zurückgesendet,
sondern gezählt. Wenn
die PAM (Maschine zur Paketzusammenfügung) die VC zur aktivierten
Warteschlange bewegt, schreibt sie in diese FIFO die Credit-ID zuzüglich der
Anzahl zurückzusendender
Credits. Diese FIFO hat zwei Einträge.
-
Die
erweiterte FIFO wurde im Kontext der Flusssteuerung auf Basis von
Credits in ATM-Netzen beschrieben, aber die vorliegende Erfindung
kann überall,
wo eine umfangreiche FIFO benötigt
wird, zur Anwendung kommen. Die vorliegende Erfindung ist auch für andere
Arten von Netzprotokollen wie Ethernet, FDDI und Token Ring anwendbar.
Die FIFO kann zur Speicherung von Datenpakten anstatt von Credits
verwendet werden.
-
Es
versteht sich, dass die zuvor angesprochenen Ausführungsformen
nur die Prinzipien der Erfindungsidee veranschaulichen. Der Fachmann
kann zahlreiche andere Abwandlungen und Änderungen, welche die Prinzipien
der Erfindungsidee verkörpern
und innerhalb ihres Rahmens bleiben, vornehmen.