DE69031220T2 - Hochgeschwindigkeitsmultiport-FIFO-Pufferschaltung - Google Patents
Hochgeschwindigkeitsmultiport-FIFO-PufferschaltungInfo
- 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
Links
- 239000000872 buffer Substances 0.000 title claims description 89
- 230000015654 memory Effects 0.000 claims description 145
- 230000006870 function Effects 0.000 claims description 2
- 238000000034 method Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods 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/16—Multiplexed systems, i.e. using two or more similar devices which are alternately accessed for enqueue and dequeue operations, e.g. ping-pong buffers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3027—Output queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3081—ATM peripheral units, e.g. policing, insertion or extraction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5678—Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
- H04L2012/5681—Buffer or queue management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/50—Overload detection or protection within a single switching element
- H04L49/501—Overload detection
- H04L49/503—Policing
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
- 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.
- 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.
- 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.
- 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.
- 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.
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)
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)
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 | パケット通信装置 |
-
1990
- 1990-12-20 EP EP90811013A patent/EP0492025B1/de not_active Expired - Lifetime
- 1990-12-20 DE DE69031220T patent/DE69031220T2/de not_active Expired - Fee Related
-
1991
- 1991-10-21 US US07/779,741 patent/US5224093A/en not_active Expired - Fee Related
- 1991-11-28 JP JP33790391A patent/JPH0734183B2/ja not_active Expired - Lifetime
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 |