DE69031220T2 - Hochgeschwindigkeitsmultiport-FIFO-Pufferschaltung - Google Patents

Hochgeschwindigkeitsmultiport-FIFO-Pufferschaltung

Info

Publication number
DE69031220T2
DE69031220T2 DE69031220T DE69031220T DE69031220T2 DE 69031220 T2 DE69031220 T2 DE 69031220T2 DE 69031220 T DE69031220 T DE 69031220T DE 69031220 T DE69031220 T DE 69031220T DE 69031220 T2 DE69031220 T2 DE 69031220T2
Authority
DE
Germany
Prior art keywords
memory
data
buffer
lines
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69031220T
Other languages
English (en)
Other versions
DE69031220D1 (de
Inventor
Wolfgang Emil Dr Ing Denzel
Antonius J P Dr Ing Engbersen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE69031220D1 publication Critical patent/DE69031220D1/de
Application granted granted Critical
Publication of DE69031220T2 publication Critical patent/DE69031220T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/16Multiplexed systems, i.e. using two or more similar devices which are alternately accessed for enqueue and dequeue operations, e.g. ping-pong buffers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3027Output queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3081ATM peripheral units, e.g. policing, insertion or extraction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5681Buffer or queue management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/50Overload detection or protection within a single switching element
    • H04L49/501Overload detection
    • H04L49/503Policing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)

Description

    BESCHREIBUNG HOCHGESCHWINDIGKEITSMULTIPORT-FIFO-PUFFERSCHALTUNG BEREICH DER ERFINDUNG
  • Die Erfindung betrifft einen Speicherpuffer speziell zur Verwendung in der Ausgabewarteschlange einer Vermittlungseinrichtung, um eine Vielzahl eingehender und abgehender Übertragungsverbindungen in den Knoten eines Kommunikationsnetzwerks miteinander zu verbinden.
  • HINTERGRUND
  • Die schnelle Vermittlung von Informationen ist eine wichtige Aufgabe in jedem Kommunikationsnetzwerk. Die Netzwerkknoten, in denen Leitungen oder Übertragungsverbindungen miteinander verbunden sind, damit Informationen zwischen ihnen ausgetauscht werden können, sind oftmals eine Ursache für Verzögerungen im Netzwerk. Wenn in einem Knoten vielverkehr konzentriert ist und wenn insbesondere der Großteil des Verkehrs nur wenige der Verbindungen durchläuft, kommt es zu erhöhten Verzögerungen oder gar zu einem Informationsverlust. Es ist deshalb erstrebenswert, Vermittlungsknoten oder Vermittlungsstellen zu haben, die schnell und praktisch nicht blockierend sind.
  • In einem Artikel im IBM Technical Disclosure Bulletin, Band 32, Nr. 10B, März 1990, Seiten 176 bis 177, mit dem Titel "Packet Switching Module" ist ein Verfahren zur Steigerung der Vermittlungsgeschwindigkeit beschrieben. Bei dieser Vermittlungsstelle werden die Zielkopfzeilen bei ihrer Ankunft in der Vermittlungsstelle von den Datenpaketen abgetrennt. Diese Pakete werden an einer angegebenen Adresse in einem Paketpufferspeicher abgelegt, und dann wird diese Pufferadresse durch den Steuerteil der Vermittlungsstelle geleitet. An den Ausgängen der Vermittlungsstelle wird die Pufferadresse zum Abrufen des Datenpakets aus dem Paketpufferspeicher verwendet. Während diese Vermittlungsstelle viele Vorteile gegenüber herkömmlichen Vermittlungsstellen hat, die den gesamten Inhalt des Pakets durch die Vermittlungsstelle leiten, ist sie durch die Betriebsgeschwindigkeit der FIFO- Puffer mit mehreren Eingängen beschränkt, die zur Bildung von Ausgabewarteschlangen dienen, um die Pufferadressen von Datenpaketen, die an die Ausgänge der Vermittlungsstelle durchgestellt werden, vorübergehend zu speichern.
  • Nach dem Stand der Technik sind mehrere Methoden zur Steigerung der Betriebsgeschwindigkeit der Ausgabewarteschlangenpuffeübekannt. Beispielsweise kann der Speicher, der den FIFO-Puffer bildet, verschachtelt werden, oder ein einzelner Speicher kann einen internen Beschleunigungsprozeß haben. Diese Lösungen erfordern jedoch zusätzliche Hardware und gegebenenfalls spezielle, anwendungsspezifische Logikschaltungen. Da die Zahl der Eingänge und der Ausgänge einer Vermittlungsstelle zunimmt, müssen solche Systeme neu konzipiert werden, und eine zunehmende Anzahl von Anschlußkanälen verlangsamt den Betrieb des Puffers bei demselben Grundaufbau der Vermittlungsstelle.
  • Ein Beispiel für eine Vermittlungsstelle eines Paketnetzes, die erweitert werden kann, ohne daß dies zu einer nennenswerten Leistungseinbuße führt, ist in "The Knockout Switch: A Simple, Modular Architecture for High-Performance Packet Switching" von Yeh u.a., IEEE Journal on Selected Areas in Communications, Band SAC-5, Nr. 8, Oktober 1987, Seiten 1274 bis 1283, beschrieben. Dieser Artikel beschreibt ein System, bei den ein "Konzentrator" verwendet wird, um die Pakete, die auf den N Eingangsleitungen ankommen, auf eine kleinere Anzahl von L Leitungen zu konzentrieren. Ein "Round-Robin-Server", der nach dem zyklischen Multiplexverfahren arbeitet, dient zur Entnahme der Pakete von den L Ausgangsleitungen und zur Speicherung der Pakete in dem ersten verfügbaren FIFO-Puffer, der mit dem Ausgang verbunden ist, an den das Paket übertragen wird. Bei diesem Konzept werden L getrennte FIFO-Puffer verwendet, um für den schlimmstmöglichen Fall, daß L Pakete in einem Zeitschlitz aus dem Konzentrator treten, vorzusorgen. Diese Vermittlungsstelle hat den Hauptnachteil, daß, falls mehr als L Pakete an der Vermittlungsstelle ankommen, einige der Pakete im Konzentrator verlorengehen, da es nur L Ausgangsleitungen gibt. Außerdem erfordert die Bereitstellung von einem getrennten Konzentrator, einem Round-Robin-Server und von L FIFO-Puffern einen großen Hardwareaufwand.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Das Problem ist daher die Bereitstellung eines FIFO-Puffers zur Verwendung in der Ausgabewarteschlange einer Datenpaket- Vermittlungsstelle, die ein Minimum an zusätzlicher Hardware erfordert und das Risiko, daß Pakete in der Vermittlungsstelle verlorengehen, mindert.
  • Die Erfindung löst dieses Problem durch die Verwendung einer Vielzahl von Speicherzugriffssteuerungen, an die jeweils alle Eingabeanschlüsse angeschlossen sind. Die Speicherzugriffssteuerung empfängt von den Eingabeanschlüssen alle Datenpakete, die für einen bestimmten Ausgang bestimmt sind, und speichert diese dann in benachbarten Speicherplätzen, welche die FIFO- Pufferwarteschlange bilden.
  • Die Speicherung aller ankommenden Datenpakete kann in einem Zyklus ausgeführt werden, und somit brauchen Datenpakete weder an den Eingabeanschlüssen gehalten zu werden, noch gehen Datenpakete in der Vermittlungsstelle verloren.
  • In einer bestimmten Ausführungsform der Erfindung speichert jede FIFO-Warteschlange nicht das ganze Datenpaket, sondern nur die Adresse, ander das Paket in einem getrennten Paketpufferspeicher gehalten wird.
  • Der hier beschriebene FIFO-Puffer mit mehreren Eingängen macht keine interne Beschleunigung oder Speicherverschränkungsverfahren erforderlich. Seine Betriebsgeschwindigkeit ist von der Anzahl der Eingabe- und Ausgabeanschlüsse unabhängig, und somit kann er nach Bedarf erweitert werden. Falls alle ankommenden Datenpakete zu demselben Ausgabeanschluß durchgestellt werden, gewährleistet der beschriebene Puffer, daß keine Pakete in der Vermittlungsstelle verlorengehen, macht es aber nicht erforderlich, daß alle Eingänge in jedem Zyklus ein Datenelement liefern, noch macht er es erforderlich, daß alle Ausgänge in jedem Zyklus ein Datenelement nehmen. Der Puffer läßt sich wirtschaftlich in VLSI-Technik unter Verwendung von Standard-Entwicklungswerkzeugen aufbauen, oder er kann mit handelsüblichen Komponenten realisiert werden.
  • Ein FIFO-Speicherpuffer mit mehreren Eingängen, der die Erfindung enthält, ist in dem unabhängigen Anspruch 1 definiert. Weitere Ausführungsformen der Erfindung sind in den beiliegenden abhängigen Ansprüchen beschrieben.
  • BESCHREIBUNG DER FIGUREN
  • Fig. 1 zeigt das grundlegende Paketvermittlungsnetz, das einen FIFO-Puffer enthält.
  • Fig. 2a bis 2c veranschaulichen die Speicherung von Paketpufferadressen in Ausgabewarteschlangen.
  • Fig. 3 veranschaulicht die Anordnung von Doppelspeichern, die in dem FIFO-Puffer verwendet werden.
  • Fig. 4 veranschaulicht die vollständige Struktur der Ausgabewarteschlange, die in dem Paketvermittlungsnetz verwendet wird.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Fig. 1 zeigt eine Datenpaket-Vermittlungsstelle, die aus n Eingangsleitungen 5a-n besteht, von denen jede mit einem getrennten Router 10a-n verbunden ist. Alle Router 10a-n sind mit einem einzigen Paketpufferspeicher 30 verbunden, und jeder der Router 10a-n ist über die Leitungen 7a-n mit einem einer Reihe von Demultiplexern 50a-n verbunden. Ein Speicher 40 wird zur Speicherung der Adressen von nicht belegten Speicherbereichen im Paketpufferspeicher 30 verwendet. Der Speicher 40 ist über die Leitungen 42a-n und 46a-n mit den Routern 10a-n und über die Leitungen 42a-n und 44a-n mit den Demultiplexern 50a-n verbunden. Jeder der Demultiplexer 50a-n ist einzeln über die Leitungen 60 mit jeder einer Reihe von Ausgabewarteschlangen 70a-n verbunden. Diese Ausgabewarteschlangen 70a-n sind über die Leitungen 72a-n und 76a-n mit den Multiplexern 20a-n und über die Leitungen 72a- n und 74a-n mit dem Speicher 40 verbunden. Alle Multiplexer 20a- n sind mit dem Datenpaket-Pufferspeicher 30 und den Ausgangsleitungen 25a-n verbunden.
  • Im Betrieb kommen die verschiedenen Pakete an einigen oder allen der n Eingänge 5a-n an und werden dann an die Router 10a-n weitergeleitet. Jedes Paket besteht aus Daten und einer Kopfzeile, in der sich unter anderem eine Ausgabeadresse der erforderlichen Ausgangsleitung der Ausgangsleitungen 25a-n befindet, auf der das Paket ausgegeben werden soll. Die Router 10a-n stellen den Inhalt des ankommenden Pakets in den Paketpufferspeicher 30 an einer verfügbaren freien Pufferadresse. Im Prinzip wäre es möglich, in dem Paketpufferspeicher 30 Platz zu sparen, indem man in ihm nicht die Adressen der Ausgangsleitungen 25a-n speichert, an die das Datenpaket geleitet wird, da diese Informationen nun redundant sind. Aus Gründen der Einfachheit werden diese Informationen in der bevorzugten Ausführungsform jedoch nicht gelöscht, und alle Kopfzeilen sowie die Daten werden im Paketpufferspeicher 30 abgelegt. Der Speicher 40 speichert die Werte aller freien (d.h. nicht belegten) Pufferadressen und stellt sie auf Anforderung den Routern 10a-n über die Leitungen 42a-n und 46a-n zur Verfügung. Der Speicher 40 wird aus einem beliebigen Standard-FIFO-Speicher, oder aus einem Speicher, der ähnlich demjenigen ist, der zur Bildung der Ausgabewarteschlangen 70a-n verwendet wird, gebildet. Um die Betriebsgeschwindigkeit der Vermittlungsstelle zu erhöhen, wird jedem der Router 10a-n in der Praxis normalerweise eine freie Pufferadresse zugewiesen, die sofort zur Speicherung des ankommenden Pakets verwendet werden kann. Der entsprechende der Router 10a-n fordert anschließend nur dann eine weitere freie Pufferadresse vom Speicher 40 an, wenn er seine eigene freie Pufferadresse einem Paket zugewiesen hat. Die Paketkopfzeile, welche die Ausgabeadresse des Pakets enthält, oder nur die Ausgabeadresse selbst wird über die Leitungen 7a-n vom entsprechenden der Router 10a-n an den entsprechenden der Demultiplexer 50a-n geleitet. Die Paketpufferadresse, an der das Paket im Paketpuffer 30 gespeichert war, wird entweder vom entsprechenden der Router 10a-n über die entsprechenden der Leitungen 46a-n und 44a-n oder, wenn im entsprechenden der Router 10a-n keine Paketpufferadresse vorhanden ist, vom Speicher 40 über die entsprechenden der Leitungen 42a-n und 44a-n an den entsprechenden der Demultiplexer 50a-n übertragen.
  • Unter Verwendung der Steuerinformationen für jedes Paket übertragen diese Demultiplexer 50a-n die Paketpufferadressen an die entsprechenden Ausgabewarteschlangen 70a-n, die den jeweiligen Ausgangsleitungen 25a-n entsprechen, an die der Inhalt des Pakets übertragen werden muß. Wenn die Kopfzeilen nicht im Paketpufferspeicher 30 gespeichert werden, werden sie ebenfalls von den Demultiplexern 50a-n an die entsprechenden Ausgabewarteschlangen 70a-n weitergegeben, wo sie mit den Paketpufferadressen gespeichert werden. Der Prozeß der übertragung des Inhalts der Pakete vom Paketpufferspeicher 30 an die Ausgangsleitungen 25a-n der Vermittlungsstelle wird von den Multiplexern 20a-n durchgeführt, welche die erste Paketpufferadresse, nötigenfalls mit der Kopfzeile, über die Leitungen 72a-n und 76a-n von den entsprechenden Ausgabewarteschlangen 70a-n nehmen, den Inhalt des Paketpuffers 30 an der angegebenen Adresse lesen und das Paket, das Daten und die Kopfzeile enthält, auf der entsprechenden Ausgangsleitung der Ausgangsleitungen 25a-n übertragen. Die Paketpufferadresse wird von den Ausgabewarteschlangen 70a-n in den Speicher 40 als dem Speicherplatz zurückübertragen, den sie als einen im Datenpaket-Pufferspeicher 30 nun freien Speicherplatz zur Speicherung eines weiteren Datenpakets angibt.
  • Die Figuren 2a bis 2c veranschaulichen die Struktur eines Teils einer der Ausgabewarteschlangen 70a-n, die in Fig. 1 gezeigt sind. Zu Veranschaulichungszwecken wird davon ausgegangen, daß es in der in Fig. 1 gezeigten Datenpaket-Vermittlungsstelle nur vier Eingangsleitungen 5a-n gibt. Somit hat jede Ausgabewarteschlange 70a-n ebenfalls nur vier Eingangsleitungen, die jeweils von jedem der vier Demultiplexer 50a-n kommen. Diese Eingangsleitungen sind in den Figuren 2a bis 2c mit 130a-d gekennzeichnet.
  • Die Eingangsleitungen 130a-d werden einer Speicherzugriffssteuerung 120 übergeben. Die Speicherzugriffssteuerung 120 hat acht Ausgangsleitungen, eine erste Gruppe von Ausgangsleitungen 140a- d ist mit einem ersten Speicher 160 verbunden, und eine zweite Gruppe von Ausgangsleitungen 150a-d ist mit einem zweiten Speicher 170 verbunden. Die Speicherzugriffssteuerung 120 enthält auch eine weitere Eingangsleitung von einem Offset_In-Register 100 und eine weitere Ausgangsleitung zu einem Offset_Out- Register 110.
  • Die Speicher 160 und 170 werden aus bitbeschreibbaren Speichern gebildet. Sie könnten jedoch auch aus anderen adressierbaren Speichern gebildet werden, solange die entsprechende Hardware hinzugefügt wird, um sicherzustellen, daß keine Daten überschrieben werden. In den Figuren 2a bis 2c sind die beiden Speicher als zwei getrennte Speicher 160, 170 gezeigt. Es wäre jedoch auch möglich, einen Speicher mit Doppelanschluß zu verwenden, bei dem beide Anschlüsse getrennt adressierbar wären.
  • Die Betriebsweise der Ausgabewarteschlange wird zunächst durch Betrachtung von Fig. 2a erklärt. Es wird davon ausgegangen, daß zu Beginn des Betriebs weder der erste Speicher 160 noch der zweite Speicher 170 Daten halten. Nehmen wir dann an, daß drei Pakete auf verschiedenen Eingangsleitungen 5a-n gleichzeitig in der Vermittlungsstelle ankommen. Gleichzeitig in diesem Zusammenhang heißt nicht, daß die Datenpakete alle exakt zur selben Zeit ankommen, sondern daß sie innerhalb eines Ausführungszyklus des Speicherpuffers ankommen. Der Inhalt der Pakete wird in den Paketpuffer 30 übertragen, und die Pufferadressen, an denen der Inhalt gespeichert wird, werden zusammen mit den Ausgabeadressen an die Demultiplexer 50a-n weitergegeben. Diese Demultiplexer 50a-n decodieren die Ausgabeadressen, und unter der Annahme, daß die Ausgabeadressen zeigen, daß alle Pakete an dieselbe der Ausgangsleitungen 25a-n geleitet werden müssen, senden die Pufferadressen an dieselbe Ausgabewarteschlange. Somit kommen die Pufferadressen auf drei der Eingangsleitungen 130a-d der Speicherzugriffssteuerung 120 an. Allein zu Erklärungszwecken sind die Pufferadressen als auf den Leitungen 130a, 130b und 130d von Fig. 2a ankommend gezeigt. In der Speicherzugriffssteuerung 120 werden diese Pufferadressen auf benachbarte Ausgangsleitungen gegeben. Somit erscheinen sie gleichzeitig auf den Leitungen 140a, 140b und 140c, von wo sie gleichzeitig in die ersten drei freien Speicherplätze des ersten Speichers 160 (in diesem Beispiel die Zeilen 1, 2 und 3 der Spalte 1) eingelesen werden können. Der Wert des Offset_Out-Zeigers 110 wird von 0, was anzeigt, daß keine der Zeilen der ersten Spalte gesetzt sind, auf 3 geändert, was anzeigt, daß die ersten 3 Zeilen der ersten Spalte belegt sind. Dieser Wert wird dann dem Offset_In-Zeiger 100 übergeben.
  • Wenden wir uns nun Fig. 2b zu, und nehmen wir an, daß im nächsten Ausführungszyklus des Speicherpuffers zwei weitere Pakete an der Paketvermittlungsstelle ankommen, die wie die drei vorherigen Pakete für dieselbe der Ausgangsleitungen 25a-n bestimmt sind. Zu Veranschaulichungszwecken wird davon ausgegangen, daß sie von den Demultiplexern 50a-n aüf den Leitungen 130b und 130d ankommen. Es wird auch davon ausgegangen, daß zwischenzeitlich weder aus dem Speicher 160 noch aus dem Speicher 170 eine Pufferadresse ausgelesen worden ist. Die Speicherzugriffssteuerung 120 weiß anhand des Wertes des Offset_In-Zeigers (d.h. 3), daß die ersten drei Zeilen des Speichers 160 belegt sind, daß es aber nicht belegte Zeilen in derselben Spalte des Speichers 160 und des Speichers 170 gibt. Somit werden die Werte der Pufferadressen auf den Eingangsleitungen 130b und 130d von der Speicherzugriffssteuerung 120 gleichzeitig auf benachbarten Ausgangsleitungen, in diesem Fall auf den Leitungen 140d und 150a, ausgegeben, von wo sie zur selben Zeit in die nächsten freien Zeilen der Speicher 160 und 170 (d.h. in die Zeile 4 der Spalte 1 des Speichers 160 und in die Zeile 1 der Spalte 1 des Speichers 170) eingelesen werden. Der Wert des Offset_Out-Zeigers 110 wird auf 5 gesetzt, um anzuzeigen, daß fünf Zeilen der er- sten Spalte in den Speichern 160 und 170 belegt sind, und dieser Wert wird dann dem Offset_In-Zeiger 100 übergeben.
  • Fig. 2c veranschaulicht, was weiter geschieht, wenn vier Pakete dann auf verschiedenen Eingangsleitungen 5a-n gleichzeitig an der Vermittlungsstelle empfangen werden, die aber alle an dieselbe der Ausgangsleitungen 25a-n weitergeleitet werden müssen. Wieder wird davon ausgegangen, daß seit der in Fig. 2b veranschaulichten Situation weder aus dem Speicher 160 noch aus dem Speicher 170 Pufferadressen ausgelesen worden sind. In Fig. 2c sind auf allen vier Eingangsleitungen 130a-d der Speicherzugriffssteuerung 120 Pufferadressen gezeigt. Die Speicherzugriffssteuerung 120 verwendet den Wert des Offset_In-Zeigers 100 (d.h. 5) zur Feststellung, daß in der ersten Spalte der Speicher 160 und 170 nur drei freie Zeilen übrig sind. Sie gibt deshalb auf den Leitungen 150b, 150c und 150d gleichzeitig drei der Pufferadressen aus. Die vierte Pufferadresse wird auf der Leitung 140a ausgegeben und gleichzeitig mit den Ausgangssignalen auf den Leitungen 15db, 150c und 150d, die in den letzten drei Zeilen des Speichers 170 gespeichert werden, in der ersten Zeile der zweiten Spalte des Speichers 160 gespeichert. Zwei Speicher müssen verwendet werden, um diese Operation auszuführen, da es nicht möglich ist, während desselben Ausführungszyklus mehr als eine Spalte von Bitstellen im selben Speicher zu adressieren. Da wir während desselben Ausführungszyklusses drei Pakete in die erste Spalte eines Speichers und ein Paket in die zweite Spalte schreiben müssen, sind folglich zwei Speicher notwendig. Der Wert des Offset_Out-Zeigers 110 wird auf 1 gesetzt, um anzuzeigen, daß nur die erste Zeile der zweiten Spalte des Speichers 160 belegt ist.
  • Da an der Speicherzugriffssteuerung 120 weitere Pufferadressen ankommen, wird dieser Prozeß fortgesetzt, und aufeinanderfolgende Zeilen in aufeinanderfolgenden Spalten in beiden Speichern 160 und 170 werden mit den Pufferadressen gefüllt, bis beide Speicher vollständig gefüllt sind. Sollte dies eintreten, muß eine Fehlernachricht gesandt werden, um zu verhindern, daß weitere Pufferadressen auf den Eingangsleitungen 130a-d ankommen, damit keine Informationen verlorengehen. Diese Situation tritt wahrscheinlich nicht ein, da es in der Praxis so ist, daß Pufferadressen, die in die Speicher 160 und 170 geschrieben werden, auch wieder aus den Speichern 160 und 170 ausgelesen werden.
  • Fig. 3 veranschaulicht diese Operation. Zwei Register werden in Fig. 3 gezeigt. Das Schreibzeigerregister 190 zeigt den nächsten Speicherplatz an, an den eine Pufferadresse geschrieben werden kann, und das Lesezeigerregister 180 zeigt den nächsten Speicherplatz an, von dem eine Pufferadresse gelesen werden soll. Der schattierte Bereich zeigt die Speicherplätze, in denen ungelesene Pufferadressen gespeichert sind, und die Linie zeigt die Reihenfolge, in der diese Pufferadressen gelesen werden sollten. Wenn der Wert im Schreibzeigerregister 190 anzeigt, daß alle Speicherplätze verwendet worden sind, wird er auf den Anfangswert des ersten Speichers 160 zurückgesetzt, und vorausgesetzt, daß an diesem Speicherplatz keine Pufferadresse mehr gespeichert wird, die nächste Pufferadresse, die in der erforderlichen der Ausgabewarteschlangen 70a-n gespeichert werden soll, wird in die Zeile 1 der Spalte 1 des Speichers 160 geschrieben.
  • Es sei erwähnt, daß die Daten im Speicher nicht auf herkömmliche Weise, d.h. bei der ein Datenwort aus einem Bit in jeder Zeile derselben Spalte besteht, strukturiert werden. Vielmehr umfaßt jedes Datenwort in Fig. 3 eine Reihe von Bits in derselben Zeile. Anders ausgedrückt, man kann sagen, daß ein Datenwort nicht in der "Richtung" der Speicherbreite geschrieben wird, wie es üblich ist. Statt dessen wird es in der "Richtung" der Speichertiefe geschrieben.
  • Fig. 4 zeigt die ganze Struktur einer der Ausgabewarteschlangen 70a-n von Fig. 1, welche die Elemente, auf die in Fig. 2 und Fig. 3 Bezug genommen wird, enthält. In Fig. 4 wurden dieselben Bezugszahlen, die auch in den vorhergehenden Figuren 2 und 3 verwendet wurden, benutzt, um dieselben Elemente anzuzeigen, mit der Ausnahme, daß ihr Wert um 100 erhöht worden ist. In der gezeigten Ausführungsform hat eine Speicherzugriffssteuerung 220 acht Eingangsleitungen 230 und sechzehn Ausgangsleitungen 240 und 250. Die acht Ausgangsleitungen 240 sind mit den Eingängen eines Speichers 260, und die acht Ausgangsleitungen 250 sind mit den Eingängen eines Speichers 270 verbunden.
  • Ein Register 290 führt die Funktion des zuvor beschriebenen Schreibzeigerregisters 190 aus. Die Bits dieses Registers 290 sind in drei Gruppen unterteilt. Eine erste Bitgruppe 200 dient als der zuvor beschriebene Offset_In-Zeiger 100, sie wird zur Adressierung einer Zeile in den Speichern 260 und 270 verwendet und ist mit dem Offset_Out-Zeiger 210 über die Leitungen 360 verbunden, über welche die Werte der Bits übertragen werden. Die Werte der ersten Bitgruppe 290 werden über die Leitungen 362a-d an die Eingänge der Speicherzugriffssteuerung 220 übertragen. Eine zweite und eine dritte Bitgruppe 202 des Registers 290 sind direkt mit einem Bus 350 verbunden. Die zweite Bitgruppe wird zur Adressierung einer Spalte der Speicher 260, 270 verwendet, und die dritte Gruppe wird zur Adressierung eines bestimmten Speicherplatzes in einer Spalte der Speicher 260, 270 verwendet. Der Aufwärtszähler 300 ist über die Leitung 370 mit dem Wert des höchstwertigen Bits der ersten Bitgruppe 200 des Registers 290 verbunden und zwischen einem Teil des Busses 350 und den Schreibadressenkanälen des Speichers 260 parallelgeschaltet. Er wird zur Erhöhung derjenigen Bits des Busses 350 verwendet, welche die Spalten des Speichers adressieren, d.h. der zweiten Bitgruppe des Registers 290, und wird immer, wenn der Wert auf der Leitung 370 eins ist, durch einen Triggerimpuls angesteuert. Er stellt sicher, daß immer dann, wenn alle Zeilen von einer der Spalten des Speichers 270 voll sind und die nächste Pufferadresse in den Speicher 260 geschrieben werden muß, die Pufferadressen in die nächste Spalte des Speichers 260 geschrieben werden.
  • Ein Lesezeigerregister 280 hat seine Bits auf ähnliche Weise in drei Gruppen unterteilt. Eine erste Bitgruppe 282 ist mit einem Multiplexer 310 verbunden, und eine zweite und eine dritte Bitgruppe 284 sind mit einem Bus 340 verbunden. Die zweite und die dritte Bitgruppe 284 des Lesezeigerregisters 280, das mit dem Bus 340 verbunden ist, werden zur Adressierung einer Spalte und eines Speicherplatzes in der Spalte der Speicher 260, 270 verwendet, und die erste Bitgruppe 282 wird zur Adressierung einer bestimmten Zeile in einem der Speicher 260, 270 verwendet. Das Lesezeigerregister 280 verwendet die zweite Bitgruppe 284, um die Spaltennummer, von der Pufferadressen gelesen werden sollen, über einen Bus 340 an die Leseadresseneingänge der Speicher 260 und 270 weiterzugeben. Alle in den Zeilen dieser Spalte enthaltenen Pufferadressen werden auf den Leitungen 320 vom Speicher 260 und auf den Leitungen 330 vom Speicher 270 ausgegeben. Der Multiplexer 310, an den die Leitungen 320 und 330 angeschlossen sind, verwendet die Werte der ersten Bitgruppe 282 des Lesezeigerregisters 280 und gibt jeweils eine Pufferadresse über die Ausgangsleitung 380 in einen der in Fig. 1 gezeigten Multiplexer 20a-n ein. Die erste Pufferadresse, die ausgegeben wird, ist diejenige, die in der Zeile 1 der aus dem Speicher 260 gelesenen Spalte enthalten ist, und die letzte ist diejenige, die in der Zeile 8 der aus dem Speicher 270 gelesenen Spalte enthalten ist. Nachdem alle Pufferadressen in einer Spalte aus dem Multiplexer 310 ausgelesen worden sind, wird vom Lesezeigerregister 280 ein Signal über den Bus 340 gesandt, um die Pufferadressen, die in der nächsten Spalte der Speicher 260 und 270 enthalten sind, über die Leitungen 320 und 330 auszugeben.
  • Diese Ausführungsform wurde unter Verwendung von acht Eingangsleitungen 230 in die Speicherzugriffssteuerung 220 und entsprechenden sechzehn Ausgangsleitungen 240 und 250 von der Speicherzugriffssteuerung 220 beschrieben. Es ist möglich, die Anzahl der Eingangsleitungen zu erhöhen, und die entsprechenden Änderungen, die an der Schaltung vorgenommen werden müßten, wären dem Fachmann klar.
  • Während in den beschriebenen Ausführungsformen davon ausgegangen wurde, daß nur die Pufferadressen in den Speichern 260 und 270 abgelegt werden, wäre es möglich, den vollständigen Inhalt des Pakets darin zu speichern.

Claims (8)

1. FIFO-Speicherpuffer mit mehreren Eingängen zur Verwendung in einer Datenpaket-Vermittlungsstelle, die einen Speicher (160, 170, 260, 270) umfaßt, der über eine erste Vielzahl von Ausgangsleitungen (140, 150, 240, 250) mit einem Speicherzugriffs-Steuermittel (120, 220) verbunden ist, wobei das Speicherzugriffs-Steuermittel über eine zweite Vielzahl von Speichereingangsleitungen (130, 230) Daten wie beispielsweise Datenpakete oder Adressen von gepufferten Datenpaketen empfängt, die in dem Speicher abgelegt werden sollen;
dadurch gekennzeichnet, daß:
das Speicherzugriffs-Steuermittel (120, 220) die Datenpakete oder die Adressen von gepufferten Datenpaketen, die gleichzeitig auf einer beliebigen Anzahl der zweiten Vielzahl von Speichereingangsleitungen (130, 230) ankommen, an eine entsprechende Anzahl von Nachbarausgangsleitungen (140, 150, 240, 250) der ersten Vielzahl von Ausgangsleitungen ausgibt, von denen die Datenpakete oder die Adressen von gepufferten Datenpaketen gleichzeitig in aufeinanderfolgende Speicherplätze des Speichers (160, 170, 260, 270) geschrieben werden; wobei der Speicher über eine Mehrfachadressierungsfunktion verfügt;
das Speicherzugriffs-Steuermittel folgendes umfaßt: ein Register (290), das zur Erzeugung eines Offset_In-Zeigers (100) dient, um die erste Nachbarausgangsleitung (140, 150, 240, 250) anzuzeigen, auf der die Daten ausgegeben werden; ein Offset_Out-Zeigermittel (110, 210), um die letzte plus eine Nachbarausgangsleitung anzuzeigen, auf der die Daten ausgegeben werden; und Mittel (360), um das Offset_Out- Zeigermittel mit dem Register zu verbinden, so daß der Inhalt des Offset_Out-Zeigermittels an das Register übertragen wird, nachdem alle Daten an den Speicher (160, 170, 260, 270) übertragen worden sind.
2. FIFO-Speicherpuffer mit mehreren Eingängen wie in Anspruch 1 beschrieben, dadurch gekennzeichnet, daß der Speicher (160, 170, 260, 270) bitadressierbar ist und daß die Daten direkt an angegebene Speicherplätze innerhalb des Speichers (160, 170, 260, 270) geschrieben werden können.
3. FIFO-Speicherpuffer mit mehreren Eingängen wie in Anspruch 1 oder 2 beschrieben, dadurch gekennzeichnet, daß der Speicher (160, 170, 260, 270) aus zwei getrennten Speichereinheiten gebildet wird, die unabhängig voneinander adressiert werden können; und das Speicherzugriffs-Steuermittel (120, 220) zwei Gruppen von Ausgangsleitungen (140, 150, 240, 250), eine für jede der Speichereinheiten, hat.
4. FIFO-Speicherpuffer mit mehreren Eingängen wie in Anspruch 1 oder 2 beschrieben, dadurch gekennzeichnet, daß der Speicher (160, 170, 260, 270) aus einem einzigen Speicher mit zwei Schreibkanälen gebildet wird, von denen jeder unabhängig adressiert werden kann.
5. FIFO-Speicherpuffer mit mehreren Eingängen nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß das Register (290) auch mit Eingangsadressenkanälen des Speichers (160, 170, 260, 270) verbunden ist und die Adresse anzeigt, an der die Daten gespeichert werden sollen.
6. FIFO-Speicherpuffer mit mehreren Eingängen nach Anspruch 5, dadurch gekennzeichnet, daß der Speicher (160, 170, 260, 270) in Zeilen und Spalten organisiert ist, wobei jede der Ausgangsleitungen (140, 150, 240, 250) mit einer der Zeilen verbunden ist und jede der Spälten genügend Bits enthält, um die Daten zu speichern, und wobei das Register (290) die Adresse der Spalte anzeigt, in der die Daten auf den Nachbarausgangsleitungen (140, 150, 240, 250) gespeichert werden sollen.
7. FIFO-Speicherpuffer mit mehreren Eingängen nach einem der vorstehenden Ansprüche, gekennzeichnet durch einen Multiplexer (310), der mit dem Speicher (260, 270) verbunden (320, 330) ist, und der die Reihenfolge auswählt, in der die Daten aus dem Multiplexer (310) heraus über eine Ausgangsleitung (380) übertragen werden; und einen Lesezeiger (280), der mit dem Multiplexer (310) und den Leseadressenkanälen des Speichers (160, 170, 260, 270) verbunden ist, und der anzeigt, welche Datenspalte von dem Speicher (160, 170, 260, 270) an den Multiplexer (310) übertragen werden soll.
8. FIFO-Speicherpuffer mit mehreren Eingängen nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß der Speicher (160, 170, 260, 270) nicht das ganze Datenpaket, sondern nur die Adresse eines Speicherplatzes innerhalb eines Paketpufferspeichers (30) speichert, an der das ganze Datenpaket gespeichert wird.
DE69031220T 1990-12-20 1990-12-20 Hochgeschwindigkeitsmultiport-FIFO-Pufferschaltung Expired - Fee Related DE69031220T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP90811013A EP0492025B1 (de) 1990-12-20 1990-12-20 Hochgeschwindigkeitsmultiport-FIFO-Pufferschaltung

Publications (2)

Publication Number Publication Date
DE69031220D1 DE69031220D1 (de) 1997-09-11
DE69031220T2 true DE69031220T2 (de) 1998-02-12

Family

ID=8205975

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69031220T Expired - Fee Related DE69031220T2 (de) 1990-12-20 1990-12-20 Hochgeschwindigkeitsmultiport-FIFO-Pufferschaltung

Country Status (4)

Country Link
US (1) US5224093A (de)
EP (1) EP0492025B1 (de)
JP (1) JPH0734183B2 (de)
DE (1) DE69031220T2 (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504913A (en) * 1992-05-14 1996-04-02 Apple Computer, Inc. Queue memory with self-handling addressing and underflow
US5388238A (en) * 1992-07-24 1995-02-07 At&T Corp. System and method for monitoring the validity of circulating pointers in a FIFO memory
GB2276739A (en) * 1993-03-30 1994-10-05 Ibm System for storing persistent and non-persistent queued data.
JPH07225727A (ja) * 1994-02-14 1995-08-22 Fujitsu Ltd 計算機システム
US5592472A (en) * 1994-10-27 1997-01-07 Hewlett-Packard Company High performance path allocation system and method for a fiber optic switch for a fiber optic network
US5740406A (en) * 1995-05-15 1998-04-14 Nvidia Corporation Method and apparatus for providing fifo buffer input to an input/output device used in a computer system
EP0748087A1 (de) 1995-06-09 1996-12-11 International Business Machines Corporation Zugriffsteuerungssystem eines gemeinsamen Pufferspeichers
US5894481A (en) * 1996-09-11 1999-04-13 Mcdata Corporation Fiber channel switch employing distributed queuing
US6031842A (en) 1996-09-11 2000-02-29 Mcdata Corporation Low latency shared memory switch architecture
US6055616A (en) * 1997-06-25 2000-04-25 Sun Microsystems, Inc. System for efficient implementation of multi-ported logic FIFO structures in a processor
US6304910B1 (en) 1997-09-24 2001-10-16 Emulex Corporation Communication processor having buffer list modifier control bits
US6005849A (en) * 1997-09-24 1999-12-21 Emulex Corporation Full-duplex communication processor which can be used for fibre channel frames
US6047339A (en) * 1997-10-27 2000-04-04 Emulex Corporation Buffering data that flows between buses operating at different frequencies
US6483850B1 (en) 1998-06-03 2002-11-19 Cisco Technology, Inc. Method and apparatus for routing cells having different formats among service modules of a switch platform
US6463485B1 (en) 1998-06-03 2002-10-08 Cisco Technology, Inc. System for providing cell bus management in a switch platform including a write port cell count in each of a plurality of unidirectional FIFO for indicating which FIFO be able to accept more cell
US6438102B1 (en) 1998-06-03 2002-08-20 Cisco Technology, Inc. Method and apparatus for providing asynchronous memory functions for bi-directional traffic in a switch platform
US6967961B1 (en) * 1998-06-03 2005-11-22 Cisco Technology, Inc. Method and apparatus for providing programmable memory functions for bi-directional traffic in a switch platform
DE60119866T2 (de) 2000-09-27 2007-05-10 International Business Machines Corp. Vermittlungseinrichtung und verfahren mit getrennten Ausgangspuffern
EP1198098B1 (de) * 2000-09-27 2006-05-24 International Business Machines Corporation Vermittlungseinrichtung und verfahren mit getrennten Ausgangspuffern
DE60214341T2 (de) * 2001-02-28 2007-09-13 International Business Machines Corp. Vermittlungsanordnung und -verfahren mit getrennten ausgangspuffern
US6802036B2 (en) * 2001-11-19 2004-10-05 Sun Microsystems, Inc. High-speed first-in-first-out buffer
JP4900800B2 (ja) * 2003-07-02 2012-03-21 エスティー‐エリクソン、ソシエテ、アノニム 複数のシフト・レジスタ機能を有するシングル・メモリ
EP1811370A2 (de) * 2005-12-30 2007-07-25 STMicroelectronics Pvt. Ltd. FIFO-Speicherarchitektur mit Multiportfunktonalität
US8232991B1 (en) * 2006-11-03 2012-07-31 Nvidia Corporation Z-test result reconciliation with multiple partitions
US9824058B2 (en) * 2014-11-14 2017-11-21 Cavium, Inc. Bypass FIFO for multiple virtual channels

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4623990A (en) * 1984-10-31 1986-11-18 Advanced Micro Devices, Inc. Dual-port read/write RAM with single array
EP0299264A3 (de) * 1987-07-15 1991-03-20 Advanced Micro Devices, Inc. Warteschlangengerät für die Verarbeitung von Datenwörtern/Instruktionen variabler Länge in einem einzigen Taktzyklus
NL8702672A (nl) * 1987-11-09 1989-06-01 Philips Nv Serieel geheugen, alsmede beeldgeheugeninrichting en weergeeftoestel voorzien van een of meer seriele geheugens.
US4916658A (en) * 1987-12-18 1990-04-10 International Business Machines Corporation Dynamic buffer control
JPH02117243A (ja) * 1988-10-27 1990-05-01 Toshiba Corp パケット通信装置

Also Published As

Publication number Publication date
DE69031220D1 (de) 1997-09-11
EP0492025A1 (de) 1992-07-01
US5224093A (en) 1993-06-29
EP0492025B1 (de) 1997-08-06
JPH0734183B2 (ja) 1995-04-12
JPH0581121A (ja) 1993-04-02

Similar Documents

Publication Publication Date Title
DE69031220T2 (de) Hochgeschwindigkeitsmultiport-FIFO-Pufferschaltung
DE3788649T2 (de) Schnelle modulare Vermittlungseinrichtung für Durchschaltverkehr und paketvermittelten Verkehr.
DE68919856T2 (de) Nachrichtenvermittlungselement zur übertragung von zellen unterteilt in teilzellen.
DE69020578T2 (de) Grundelement für ein verbindungsnetzwerk eines knotens zur schnellen paketvermittlung.
DE69631055T2 (de) Speicherschnittstelleneinheit, vermittlungssystem mit gemeinsamem speicher und verfahren dazu
DE3786298T2 (de) Verfahren und Schalter zum Vermitteln von Informationen.
DE69419760T2 (de) Mehrfachport-verteilte speicherschnittstelle und zugehöriges verfahren
DE3752370T2 (de) Vermittlungssystem
DE60031596T2 (de) Zeitmultiplex-Vermittlungssystem (TDM) mit sehr breitem Speicher
DE68928543T2 (de) Asynchrone Zeitvielfachvermittlungsanordnung und Verfahren zum Betrieb der Anordnung
DE69332328T2 (de) Paketschalter mit grosser Bandbreite
DE69810132T2 (de) Multiport drams mit internen cache-speichern
DE69332558T2 (de) Multiport-Brücke für lokales Netz
DE69323547T2 (de) Verfahren zur gruppenbildung von umbindungen in einer paketvermittlung
DE2620220C3 (de)
DE69216105T2 (de) Atm-breitbandkoppelfeldeinrichtung mit gepufferten eingängen
DE69112746T2 (de) Datenpufferungssystem mit einem Pufferspeicher der Datenblöcke mit fester oder veränderlicher Länge speichert.
DE68925571T2 (de) Vermittlungsnetzwerk für Speicherzugriff
DE69032384T2 (de) Datenpuffer
DE69429773T2 (de) Zellenvermittlung und verfahren zur weglenkung von zellen durch diese vermittlung
DE3787600T2 (de) Koppelpunktschaltung für Datenpaketraumvermittlung.
DE69805762T2 (de) Integriertes mehrfachzugangsvermittlungsmodul mit schnittstelle zu temporärem verwaltungsdaten -(mib)- speicher
DE3685599T2 (de) Vermittlungssystem fuer datenuebertragung.
DE69033213T2 (de) Verbindungsstruktur zur Verbindung zwischen einem Eingang und willkürlichen Ausgängen aus einer Gruppe von Ausgängen
DE68923951T2 (de) Hochgeschwindigkeits-Kombinierschalter mit Einzelfifo.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee