DE69838601T2 - Verfahren und Vorrichtung zum Erweitern eines on-chip FIFOs in einem lokalen Speicher - Google Patents

Verfahren und Vorrichtung zum Erweitern eines on-chip FIFOs in einem lokalen Speicher Download PDF

Info

Publication number
DE69838601T2
DE69838601T2 DE69838601T DE69838601T DE69838601T2 DE 69838601 T2 DE69838601 T2 DE 69838601T2 DE 69838601 T DE69838601 T DE 69838601T DE 69838601 T DE69838601 T DE 69838601T DE 69838601 T2 DE69838601 T2 DE 69838601T2
Authority
DE
Germany
Prior art keywords
memory
storage units
fifo
data
credits
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
DE69838601T
Other languages
English (en)
Other versions
DE69838601D1 (de
Inventor
Simoni Ben-Michael
Yifat Ben-Shahar
Michael Ramot Ayalon Ben-Nun
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE69838601D1 publication Critical patent/DE69838601D1/de
Application granted granted Critical
Publication of DE69838601T2 publication Critical patent/DE69838601T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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
    • H04L12/5602Bandwidth control in ATM Networks, e.g. leaky bucket
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q11/00Selecting arrangements for multiplex systems
    • H04Q11/04Selecting arrangements for multiplex systems for time-division multiplexing
    • H04Q11/0428Integrated services digital network, i.e. systems for transmission of different types of digitised signals, e.g. speech, data, telecentral, television signals
    • H04Q11/0478Provisions for broadband connections
    • 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/5679Arbitration or scheduling
    • 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

Description

  • 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 520527. 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 520527 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 520527 zur aktivierten Warteschlange 510 bewegt wurde. Alle Credits, die während der Zeit, wo die VC in einer blockierten Warteschlange 520527 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.

Claims (10)

  1. Gerät zum Empfang und zur Übermittlung von Daten, umfassend: einen ersten Speicher (725, 730, 735, 740), einen zweiten Speicher (720), Mittel, die auf den Datenempfang reagieren, um Einträge in eine Liste zu schreiben, wobei die Liste als FIFO-Warteschlange(600) verwaltet wird, Mittel zum Verwalten eines ersten Endes (725, 730) und eines zweiten Endes (735, 740) der FIFO-Warteschlange (600) im ersten Speicher (725, 730), wobei das erste Ende (725, 730) einen darin zu schreibenden nächsten Eintrag aufweist, wobei das zweite Ende (735, 740) einen nächsten daraus zu lesenden Eintrag ausweist, und Mittel zum Verwalten eines mittleren Teils der FIFO-Warteschlange (600) im zweiten Speicher (720), wo Einträge in die Warteschlange (600) entlang der Warteschlange sequentiell vom ersten Ende (725, 730) direkt zum zweiten Ende (735, 740) des ersten Speichers übergeben werden, sofern das zweite Ende (735, 740) nicht voll ist und der zweite Speicher leer ist, andernfalls vom ersten Ende (725, 730) des ersten Speichers zum zweiten Speicher (720) und dann zum zweiten Ende (735, 740) des ersten Speichers.
  2. Gerät nach Anspruch 1, wobei der erste Speicher (725, 730, 735, 740) in einem Halbleiterchip (710) implementiert ist.
  3. Gerät nach Anspruch 2, wobei der erste Speicher mehrere logische Speichereinheiten (725, 730, 735, 740) aufweist, die im Halbleiterchip (710) implementiert sind.
  4. Gerät nach Anspruch 3, umfassend: Mittel zum Durchführen der virtuellen Übertragung von zwischen den logischen Speichereinheiten (725, 730, 735, 740), indem die Zeiger zu den logischen Speichereinheiten bewegt werden.
  5. Gerät nach Anspruch 4, umfassend: Mittel zum Durchführen der virtuellen Übertragung von Daten von den ersten logischen Speichereinheiten (725, 730), die das erste Ende des ersten Speichers umfassen, bis zu den zweiten logischen Speichereinheiten (735, 740), die das zweite Ende des ersten Speichers umfassen, indem die Zeiger zu den logischen Speichereinheiten bewegt werden.
  6. Gerät nach Anspruch 5, wobei die Mittel zum Verwalten des ersten Endes (725, 730) und zweiten Endes (735, 740) der FIFO-Warteschlange (600) Mittel (755) zum Ordnen von Platz umfassen, so dass, wenn die vom ersten Ende (725, 730) des ersten Speichers gespeicherten Daten einen vorgegebenen Schwellenwert erreichen und der zweite Speicher (720) leer ist, die Daten von einer ersten logischen Speichereinheit (725, 730), die voll ist, zu einer zweiten logischen Speichereinheit, die leer ist, bewegt werden oder, wenn sie nicht leer ist, zu einem zweiten Speicher (720) bewegt werden; und wenn der zweite Speicher (720) nicht leer ist, die Daten von einer ersten logischen Speichereinheit (725, 730), die voll ist, zu einem zweiten Speicher (720) bewegt werden.
  7. Gerät nach einem der Ansprüche 2 bis 5, wobei der zweite Speicher (720) einen lokalen Speicher (723) außerhalb des Halbleiterchips (710) umfasst.
  8. Gerät nach einem der Ansprüche 1 bis 7, wobei der Speicherplatz des zweiten Speichers (720) programmierbar ist.
  9. Gerät nach einem der Ansprüche 2 bis 8, ferner umfassend: Mittel für den Halbleiterchip zum Übertragen mehrerer Einträge zur Warteschlange (600) des zweiten Speichers (720) bei einem Zugriff auf den zweiten Speicher (720).
  10. Verfahren zum Empfang und zur Übermittlung von Daten in einen computerisierten Datenspeicher, umfassend die Schritte: Bereitstellen von einer oder mehreren ersten logischen Speichereinheiten (725, 730) auf einem Halbleierchip (710), damit die ersten Speichereinheiten die Daten in einem vorderen Ende einer FIFO-Warteschlange (600) empfangen; Bereitstellen von einer oder mehreren zweiten logischen Speichereinheiten (735, 740) auf einem Halbleiterchip (710), damit die zweiten Speichereinheiten die Daten von einem hinteren Ende der FIFO-Warteschlange (600) übermitteln; Bereitstellen einer Speichererweiterung (720) in einem lokalen Speicher (723), der mit dem Halbleiterchip (710) verknüpft ist, wobei die Speichererweiterung einen mittleren Teil der FIFO-Warteschlange (600) bildet; Schreiben von Daten in die ersten Speichereinheiten (725, 730) und Bestimmen, wann die ersten Speichereinheiten (725, 730) bis zu einem vorgegebenen Schwellenwert geschrieben werden, um eine erste Speichereinheit, die voll ist, direkt zu einer zweiten Speichereinheit (735, 740) zu bewegen, wenn mindestens eine der zweiten Speichereinheiten (735, 740) leer ist und die Speichererweiterung (720) leer ist und andernfalls eine erste Speichereinheit (725, 730), die voll ist, zur Speichererweiterung (720) zu bewegen, bevor sie zu einer leeren zweiten Speichereinheit (735, 740) bewegt wird.
DE69838601T 1997-06-20 1998-06-10 Verfahren und Vorrichtung zum Erweitern eines on-chip FIFOs in einem lokalen Speicher Expired - Fee Related DE69838601T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/879,359 US6078565A (en) 1997-06-20 1997-06-20 Method and apparatus to expand an on chip FIFO into local memory
US879359 1997-06-20

Publications (2)

Publication Number Publication Date
DE69838601D1 DE69838601D1 (de) 2007-12-06
DE69838601T2 true DE69838601T2 (de) 2008-08-28

Family

ID=25374002

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69838601T Expired - Fee Related DE69838601T2 (de) 1997-06-20 1998-06-10 Verfahren und Vorrichtung zum Erweitern eines on-chip FIFOs in einem lokalen Speicher

Country Status (4)

Country Link
US (1) US6078565A (de)
EP (1) EP0886454B1 (de)
JP (1) JPH1127291A (de)
DE (1) DE69838601T2 (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI970784A (fi) * 1997-02-25 1998-08-26 Nokia Telecommunications Oy Prosessien välinen vuonvalvonta hajautetussa moniprosessoriympäristössä
US6285679B1 (en) 1997-08-22 2001-09-04 Avici Systems, Inc. Methods and apparatus for event-driven routing
DE19904084B4 (de) * 1999-02-02 2008-12-11 Force Computers Gmbh Computer
SE515897C2 (sv) * 1999-04-12 2001-10-22 Ericsson Telefon Ab L M Anordning och förfarande för en avdelad buffert
JP2003512746A (ja) * 1999-05-21 2003-04-02 エイヴィシー・システムズ フリット・キャッシングを備えたファブリック・ルータ
US6763447B2 (en) * 1999-12-02 2004-07-13 Ants Software, Inc. Lock-free list for use with computer system utilizing FIFO queue for tracking order of various sublists
US6944173B1 (en) * 2000-03-27 2005-09-13 Hewlett-Packard Development Company, L.P. Method and system for transmitting data between a receiver and a transmitter
US6735174B1 (en) * 2000-03-29 2004-05-11 Intel Corporation Method and systems for flow control of transmissions over channel-based switched fabric connections
US7213087B1 (en) * 2000-08-31 2007-05-01 Hewlett-Packard Development Company, L.P. Mechanism to control the allocation of an N-source shared buffer
US20020085493A1 (en) * 2000-12-19 2002-07-04 Rick Pekkala Method and apparatus for over-advertising infiniband buffering resources
US7120248B2 (en) * 2001-03-26 2006-10-10 Hewlett-Packard Development Company, L.P. Multiple prime number generation using a parallel prime number search algorithm
NL1017870C2 (nl) * 2001-04-18 2002-10-25 Marc Van Oldenborgh Werkwijze voor invers multiplexen.
NL1018463C2 (nl) * 2001-07-04 2003-01-08 Marc Van Oldenborgh Werkwijze, inrichting en programmatuur voor digitaal inverse multiplexen.
US7072299B2 (en) * 2001-08-20 2006-07-04 International Business Machines Corporation Credit-based receiver using selected transmit rates and storage thresholds for preventing under flow and over flow-methods, apparatus and program products
US9836424B2 (en) 2001-08-24 2017-12-05 Intel Corporation General input/output architecture, protocol and related methods to implement flow control
AU2002326752A1 (en) 2001-08-24 2003-03-10 Intel Corporation (A Delaware Corporation) (A Delawware Corporation) A general input/output architecture protocol and related methods to manage data integrity
US7174429B2 (en) * 2001-12-28 2007-02-06 Intel Corporation Method for extending the local memory address space of a processor
US7330477B2 (en) * 2002-12-24 2008-02-12 Sun Microsystems, Inc. Method and apparatus for starvation-free scheduling of communications
WO2005008978A1 (ja) * 2003-07-18 2005-01-27 Fujitsu Limited 送信主導型フロー制御装置
US7522520B2 (en) * 2004-09-03 2009-04-21 Intel Corporation Flow control credit updates for virtual channels in the Advanced Switching (AS) architecture
US7724733B2 (en) * 2005-03-31 2010-05-25 International Business Machines Corporation Interconnecting network for switching data packets and method for switching data packets
US7756134B2 (en) 2006-05-02 2010-07-13 Harris Corporation Systems and methods for close queuing to support quality of service
US7894509B2 (en) 2006-05-18 2011-02-22 Harris Corporation Method and system for functional redundancy based quality of service
US7990860B2 (en) 2006-06-16 2011-08-02 Harris Corporation Method and system for rule-based sequencing for QoS
US7856012B2 (en) 2006-06-16 2010-12-21 Harris Corporation System and methods for generic data transparent rules to support quality of service
US8064464B2 (en) 2006-06-16 2011-11-22 Harris Corporation Method and system for inbound content-based QoS
US8516153B2 (en) 2006-06-16 2013-08-20 Harris Corporation Method and system for network-independent QoS
US7916626B2 (en) 2006-06-19 2011-03-29 Harris Corporation Method and system for fault-tolerant quality of service
US8730981B2 (en) 2006-06-20 2014-05-20 Harris Corporation Method and system for compression based quality of service
US7769028B2 (en) 2006-06-21 2010-08-03 Harris Corporation Systems and methods for adaptive throughput management for event-driven message-based data
US8300653B2 (en) 2006-07-31 2012-10-30 Harris Corporation Systems and methods for assured communications with quality of service
US8194547B1 (en) * 2006-08-07 2012-06-05 Emc Corporation Configuring flow control settings
US8174977B2 (en) * 2007-07-06 2012-05-08 Hewlett-Packard Development Company, L.P. End-to-end flow control in a network
US20150103668A1 (en) * 2012-06-27 2015-04-16 Qualcomm Incorporated Low overhead and highly robust flow control apparatus and method

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809232A (en) * 1986-12-16 1989-02-28 The United States Of America As Represented By The United States Department Of Energy High speed, very large (8 megabyte) first in/first out buffer memory (FIFO)
US5640399A (en) * 1993-10-20 1997-06-17 Lsi Logic Corporation Single chip network router
EP0680179B1 (de) * 1994-04-28 2001-09-05 Hewlett-Packard Company, A Delaware Corporation Mehrfachsendeeinrichtung
US5633867A (en) * 1994-07-01 1997-05-27 Digital Equipment Corporation Local memory buffers management for an ATM adapter implementing credit based flow control
US5483526A (en) * 1994-07-20 1996-01-09 Digital Equipment Corporation Resynchronization method and apparatus for local memory buffers management for an ATM adapter implementing credit based flow control
US5649110A (en) * 1994-11-07 1997-07-15 Ben-Nun; Michael Traffic shaping system with virtual circuit table time stamps for asynchronous transfer mode networks
US5511076A (en) * 1994-11-07 1996-04-23 Digital Equipment Corporation Method and apparatus to efficiently reuse virtual connections by means of chaser packets

Also Published As

Publication number Publication date
JPH1127291A (ja) 1999-01-29
DE69838601D1 (de) 2007-12-06
US6078565A (en) 2000-06-20
EP0886454B1 (de) 2007-10-24
EP0886454A2 (de) 1998-12-23
EP0886454A3 (de) 2000-09-20

Similar Documents

Publication Publication Date Title
DE69838601T2 (de) Verfahren und Vorrichtung zum Erweitern eines on-chip FIFOs in einem lokalen Speicher
DE69731606T2 (de) Anlage und verfahren zur änderung von schwellen für überlastkontrolle in atm-vermittlungsstellen
DE60130079T2 (de) Verfahren und vorrichtung zur paketvermittlung mittels eines geteilten pufferspeichers
DE60120807T2 (de) Schaltvorrichtung und Verfahren
DE69534758T2 (de) Verfahren und System für Mehrfachübertragung
DE69817756T2 (de) ATM Zellenübertragungsplanung
DE69733703T2 (de) Puffer von Mehrfachsendezellen in Vermittlungsnetzen
DE60036682T2 (de) Maschine zur gewichteten ringförmigen Ablaufsteuerung
DE69732274T2 (de) Flusssteuerungsprotokollsystem und verfahren
DE60119866T2 (de) Vermittlungseinrichtung und verfahren mit getrennten Ausgangspuffern
DE69635880T2 (de) Anlage und Methode zur Übertragung von Paketen, geeignet für eine grosse Anzahl von Eingangstoren
DE69735333T2 (de) Digitales Netzwerk mit Gruppiervorrichtung für virtuelle Nachrichten-Übertragungspfade mit ähnlicher Übertragungsgeschwindigkeit zur Erleichterung eines effizienten Übertragungsablaufs
DE69738386T2 (de) Verbesserungen in oder sich beziehend auf eine ATM-Vermittlungsstelle
DE60031596T2 (de) Zeitmultiplex-Vermittlungssystem (TDM) mit sehr breitem Speicher
DE19757965A1 (de) Verteiltes Puffersystem für ATM-Schalter
DE19531749A1 (de) Verkehrsgestaltungseinrichtung und Paket-Kommunikationsgerät
DE69833587T2 (de) ATM-Vorrichtung und Formungsverfahren
DE10119754B4 (de) Verfahren und Vorrichtung zum Speichern von Datenpaketen
DE60313416T2 (de) Mehrfachübertragungssystem und -Verfahren zur Verwendung in einer ATM-Vermittlung eines Netzzugangsknotens
EP0471051B1 (de) Steuereinheit für den zentralspeicher eines atm-knotens
DE10023037A1 (de) Koppelfeld für ein Fernmeldenetz und Verfahren zur Vermittlung in einem Koppelfeld
EP0685950A2 (de) Lokales, nach dem asynchronen Transfermodus (ATM) arbeitendes Netzwerk
DE102020111039A1 (de) Geräteunterstützung bestellte und unbestellte transaktionsklassen
EP0322075B1 (de) Koppelfeld und Koppelfeldsteuerung für ein Vermittlungssystem
EP0614296A2 (de) Lokales, nach dem asynchronen Transfermodus (ATM) arbeitendes Netzwerk

Legal Events

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