DE69817328T2 - Warteschlangenstruktur und -verfahren zur prioritätszuteilung von rahmen in einem netzwerkkoppelfeld - Google Patents

Warteschlangenstruktur und -verfahren zur prioritätszuteilung von rahmen in einem netzwerkkoppelfeld Download PDF

Info

Publication number
DE69817328T2
DE69817328T2 DE69817328T DE69817328T DE69817328T2 DE 69817328 T2 DE69817328 T2 DE 69817328T2 DE 69817328 T DE69817328 T DE 69817328T DE 69817328 T DE69817328 T DE 69817328T DE 69817328 T2 DE69817328 T2 DE 69817328T2
Authority
DE
Germany
Prior art keywords
queue
entries
frame
priority
page
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 - Lifetime
Application number
DE69817328T
Other languages
English (en)
Other versions
DE69817328D1 (de
Inventor
Bahadir Erimli
Ian Crayford
Chandan Egbert
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.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE69817328D1 publication Critical patent/DE69817328D1/de
Application granted granted Critical
Publication of DE69817328T2 publication Critical patent/DE69817328T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/26Special purpose or proprietary protocols or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/412Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger using field-effect transistors only
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1881Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/0213Standardised network management protocols, e.g. simple network management protocol [SNMP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6215Individual queue per QOS, rate or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/255Control mechanisms for ATM switching fabrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9078Intermediate storage in different physical parts of a node or terminal using an external memory or storage device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/42Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker
    • H04Q3/54Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised
    • H04Q3/545Circuit arrangements for indirect selecting controlled by common circuits, e.g. register controller, marker in which the logic circuitry controlling the exchange is centralised using a stored programme
    • H04Q3/54575Software application
    • H04Q3/54591Supervision, e.g. fault localisation, traffic measurements, avoiding errors, failure recovery, monitoring, statistical analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1863Arrangements for providing special services to substations for broadcast or conference, e.g. multicast comprising mechanisms for improved reliability, e.g. status reports
    • H04L12/1877Measures taken prior to transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • H04L12/4645Details on frame tagging
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • H04L12/467Arrangements for supporting untagged frames, e.g. port-based VLANs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/205Quality of Service based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3027Output queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/354Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/1316Service observation, testing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13162Fault indication and localisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft das Gebiet der temporären Speicherung von Daten und insbesondere Warteschlangen, die Einträge auf priorisierte Weise empfangen, temporär speichern und freigeben.
  • Stand der Technik
  • Bei vielen Typen von Systemen, von einfachen bis hoch entwickelten, können Einträge in das System oftmals nicht unmittelbar durch das System verarbeitet werden. Anstatt die Einträge zu verwerfen, werden "Warteschlangen" eingesetzt, um die Einträge temporär zu halten und einen Eintrag für die Bearbeitung durch das System freizugeben, wenn das System fähig ist, den nächsten Eintrag zu verarbeiten. Ein Beispiel einer Warteschlange aus dem Alltag ist eine Reihe von Käufern, bei einer Bank oder einem Kartenschalter am Flughafen zum Beispiel. Typische Warteschlangen unterhalten eine zuerst rein, zuerst raus (FIFO) Ordnung der Einträge der Warteschlange.
  • Es gibt viele Typen von elektronischen Datensystemen, in denen Warteschlangen verwendet werden. Diese umfassen zum Beispiel Mikroprozessoren, Speichertransfersysteme, Telefonreservierungssysteme von Fluglinien und Paket geschaltete Netzwerke. In den meisten Systemen ist es wünschenswert, dass die Warteschlangen niedrige Latenzzeiten haben, so dass die Verarbeitung eines Eintrags nicht sehr lang wegen Wartezeiten verzögert wird, die von den Warteschlangen selbst verursacht werden. Eine niedrige Latenzzeit einer Warteschlange bedeutet, dass ein Eintrag von dem Eingang der Warteschlange schnell zu dem Ausgang der Warteschlange fließt, im Vergleich zu Warteschlangen mit höheren Latenzzeiten. Ein Faktor, der einen erheblichen Ein fluss auf die Latenzzeit einer Warteschlange hat, ist die Länge oder Kapazität der Warteschlange. Je größer die Kapazität der Warteschlange zum Speichern von Einträgen ist, desto größer ist die Latenzzeit der Warteschlange.
  • Viele Systeme befördern unterschiedliche Typen von Verkehr. Einige Typen von Verkehr können in der Priorität höher angesehen werden als andere Typen von Verkehr. Zum Beispiel werden Videodaten üblicherweise als ein Verkehrstyp mit hoher Priorität angesehen, da diese Daten normalerweise auf Basis einer hohen Geschwindigkeit geliefert werden müssen, um ein akzeptables Videosignal an dem Ausgangsgerät zur Verfügung zu stellen. Andere Typen von Daten können aufgrund ihrer relativen Wichtigkeit als hohe Priorität angesehen werden, so dass ein Verwerfen von derartigen Daten aufgrund einer Stockung zu vermeiden ist, wenn es überhaupt möglich ist. Im Gegensatz dazu haben Rahmen mit niedriger Priorität keine so strengen Zeitanforderungen für die Ankunft an ihren Zielen.
  • Ein Problem, das gelegentlich in Switches in Netzwerken und anderen Geräten, die Daten empfangen und weiterleiten, ist eine interne Stockung, welche auftritt, wenn das Gerät mehr Daten empfängt als es senden kann. Zum Beispiel enthält ein typischer Switch im Netzwerk zumindest eine Ausgangswarteschlange, welche Rahmen von Daten in eine Warteschlange bringt, die an dem Switch zur Absendung von einem Anschluss des Switches empfangen wurden. Falls die Ausgangswarteschlange voll wird, wie es geschehen kann, wenn Daten schneller an dem Switch eintreffen als sie weiter geleitet werden können, werden spät eintreffende Rahmen verworfen und die Daten sind verloren. Systeme, die ein eingerichtetes Prioritätsschema für Daten haben, versuchen das Verwerfen von Daten mit höherer Priorität zu vermeiden. Eine übliche Anordnung verwendet mehrere Warteschlangen, wobei eine Warteschlange für jede der unterschiedlichen Prioritätsebenen zuständig ist. Daher wird ein Rahmen mit hoher Priorität in die Warteschlange mit hoher Priorität geladen, während ein Rahmen mit niedriger Priorität in die Warteschlange mit niedriger Priorität geladen wird. In derartigen Anordnungen wird die Warte schlange mit hoher Priorität bedient und geleert bevor die Warteschlange mit niedrigerer Priorität bedient wird.
  • US 5,555,265 beschreibt Schaltpfad-Einstellungssystem für die Verwendung in einer ATM (Asynchroner Transfer Modus) Schaltausrüstung. Ein Eingangs-Schnittstellengerät weist eine Zelle einer Qualitätsklasse als Markierungsinformation zu, die einem Zellenidentifizierer entspricht. Ein Qualitätsklassenpuffer speichert die Zelle und die Zelle wird in Übereinstimmung mit der Qualitätsklasse aus dem Puffer gelesen. US 5,541,922 beschreibt ein Verfahren zum Zuweisen von Priorität an Verkehr zwischen Nahbereichsnetzwerken, die über ein Backbone-Netzwerk verbunden sind. US 4,630,254 beschreibt ein Glasfaser Kommunikationsnetzwerk, das einen Sternkuppler verwendet, um eine ausgewählte Sendung, die auf eingehenden Kanälen von einer der Anzahl der Stationen empfangen wurde, über eine gleiche Anzahl von ausgehenden Kanälen an alle der Stationen zu übermitteln. Die Anordnungen stellen alle neuen Übermittlungen auf den Kanälen in eine Warteschlange und wählen, wenn der Sternkoppler frei ist, einen eingehenden Kanal zum Senden ihrer Nachricht durch den Sternkuppler aus. In einem Ausführungsbeispiel hat jede Nachricht eine kodierte Priorität und Nachrichten werden in Übereinstimmung mit der Priorität der Nachricht in eine Warteschlange gestellt.
  • Das Problem mit derartigen Systemen ist der große Betrag an Platz, welcher der Warteschlangenstruktur gewidmet ist, um die mehreren Prioritäten zur Verfügung zu stellen. Zum Beispiel werden bei einem einzelnen Anschluss, wobei dort drei verschiedene Prioritätsebenen pro in die Warteschlange zu stellenden Eintrag erlaubt sind, drei getrennte Warteschlangen verwendet. Dies erfordert die Zuweisung von üblicherweise kostbarem Platz auf dem Chip an die verschiedenen Warteschlangen. Das Problem wird insbesondere deutlich, wenn der Switch oder das Gerät mehrere Anschlüsse, zum Beispiel 28 Anschlüsse, hat. Wenn drei getrennte Warteschlangen für jeden der Anschlüsse zur Unterstützung von drei verschiedenen Prioritätsebenen zur Verfügung gestellt werden, würden 84 Warteschlangen auf dem Chip angeordnet sein, was die Größe und die Kosten des Chips erhöhen.
  • Zusammenfassung der Erfindung
  • Es besteht ein Bedarf, eine Warteschlangenstruktur und ein Verfahren zum Einreihen in eine Warteschlange zur Verfügung zu stellen, bei dem Verkehr in einem Gerät auf eine Platz und Kosten senkende Weise priorisiert wird.
  • Dieses und andere Bedürfnisse werden von dem Ausführungsbeispiel der vorliegenden Erfindung erfüllt, das eine Warteschlange zur Verfügung stellt, die Einträge in eine Warteschlange einreiht und priorisiert und eine Schreibseite und mehrere Leseseiten hat. Die Warteschlangenseite bildet einen Eingang der Warteschlange; an dem Einträge für die Warteschlange empfangen werden, wobei jeder Eintrag eine Prioritätsebene hat. Die mehreren Warteschlangen-Leseseiten bilden einen Ausgang der Warteschlange, an dem Einträge von der Warteschlangen-Schreibseite empfangen, in die Warteschlange eingereiht und aus der Warteschlange ausgegeben werden. Die Warteschlangen-Schreibseiten haben verschiedene Ebenen von Warteschlangenpriorität von einer Warteschlangen-Leseseite mit höchster Priorität bis zu einer Warteschlangen-Leseseite mit niedrigster Priorität. Eine Steuerlogik untersucht die Einträge in der Warteschlangen-Schreibseite, um die Prioritätsebenen der Einträge festzustellen, und leitet die Einträge von der Warteschlangen-Schreibseite zu den Warteschlangen-Leseseiten basierend auf den Prioritätsebenen der Einträge.
  • Ein Vorteil der Warteschlange der vorliegende Erfindung ist, dass die gesamte Struktur der Warteschlange nicht für jede der verschiedenen Prioritätsebenen und für jeden der verschiedenen Anschlüsse nachgebildet ist. Stattdessen hat die Warteschlange zwei Sektionen, eine Schreibseite und mehrere Leseseiten. Jede der Leseseiten der Warteschlange kann relativ klein gehalten werden, um die gesamte Kapazität der Warteschlange auf einem gewünschten betrag zu halten, aber dennoch mehrere Ebenen von Priorität zum Einreihen von Daten mit unterschiedlicher Priorität zur Verfügung stellen. Die einzelne Schreibseite, welche relativ betrachtet viel größer als jede einzelne der Leseseiten ist, ist nicht vervielfacht und wird verwendet bei der Einreihung von allen der verschiedenen Prioritätsebenen von Daten in die Warteschlange. Nur die relativ kleinen Leseseiten werden vervielfacht, um die verschiedenen Prioritätseinreihungen in die Warteschlange zur Verfügung zu stellen. Daher ist die gesamte Größe der Warteschlangenanordnung zum Bereitstellen verschiedener Einreihungsprioritäten viel kleiner als vorherige Anordnungen, bei denen eine Vielzahl von kompletten Warteschlangen den verschiedenen Prioritätsebenen zugeordnet sind.
  • Die zuvor genannten Bedürfnisse werden auch von einem weiteren Ausführungsbeispiel der vorliegende Erfindung erfüllt, das einen Netzwerk-Switch mit mehreren Anschlüssen für ein paketgeschaltetes Netzwerk zur Verfügung stellt, der Switch hat mehrere Anschlüsse, durch die Pakete aus dem Netzwerk empfangen werden und von denen Pakete an das Netzwerk gesendet werden. Der Switch hat mehrere Warteschlangen, die den mehreren Anschlüssen entsprechen. Zumindest eine dieser Warteschlangen hat eine Warteschlangen-Schreibseite, die einen Eingang der Warteschlange bildet, an dem Einträge für die Warteschlange empfangen werden; wobei jeder Eintrag eine Prioritätsebene hat, und mehrere Warteschlangen-Leseseiten, die einen Ausgang der Warteschlange bilden, an dem die Einträge der Warteschlangen-Schreibseite empfangen, in die Warteschlange eingereiht und aus der Warteschlange ausgegeben werden. Die mehreren Warteschlangen-Leseseite haben unterschiedliche Ebenen von Einreihungspriorität von einer Warteschlangen-Leseseite mit höchster Priorität bis zu einer Warteschlangen-Leseseite mit niedrigster Priorität. Eine Steuerlogik ist vorgesehen, die konfiguriert ist, um Einträge in der Warteschlangen-Schreibseite zu untersuchen, um die Prioritätsebene der Einträge zu bestimmen und um die Einträge von der Warteschlangen-Schreibseite zu einer der Warteschlangen-Leseseiten basierend auf den Prioritätsebenen der Einträge zu leiten.
  • Der Netzwerk-Switch in Übereinstimmung mit den Ausführungsbeispielen der vorliegenden Erfindung hat den Vorteil, neben anderen, des zur Verfügung Stellens von mehreren Anschlüssen ohne Ausgangswarteschlangen, die Daten auf eine priorisierte Weise in eine Warteschlange einreihen. Dies geschieht so auf eine kostengünstige und platzsparende Weise aufgrund der Vervielfachung lediglich der Leseseiten von einer Ausgangswarteschlange für die unterschiedlichen Prioritätsebenen, statt der Vervielfachung einer gesamten Warteschlange. Diese unterteilte Struktur der Warteschlange mit mehreren Leseseiten ist insbesondere vorteilhaft, wenn der Switch mehrere Anschlüsse hat, weil die Platzeinsparungen bei jedem der Anschlüsse verwirklicht werden können.
  • Ein weiteres Ausführungsbeispiel der vorliegende Erfindung erfüllt ebenfalls die zuvor genannten Bedürfnisse durch die Bereitstellung eines Verfahrens zum Einreihen von Einträgen in eine Warteschlange und Priorisieren von Einträgen, einschließlich der Schritte des Empfangens von Einträgen für die Warteschlange in einer Warteschlangen-Schreibseite, die einen Eingang für die Warteschlange bildet, und Feststellen einer Prioritätsebene der Einträge in der Warteschlangen-Schreibseite. Einträge, welche die Warteschlangen-Schreibseite verlassen, werden zu einer der mehreren Warteschlangen-Leseseiten der Warteschlange geleitet, basierend auf der fest gestellten Prioritätsebene der Einträge. Die Warteschlangen-Leseseiten haben unterschiedliche Ebenen von Einreihungspriorität, von einer Warteschlangen-Leseseite mit höchster Priorität bis zu einer Warteschlangen-Leseseite mit niedrigster Priorität.
  • Die vorgehenden und weitere Merkmale, Aspekte und Vorteile der vorliegenden Erfindung werden offensichtlicher durch die folgende detaillierte Beschreibung der vorliegenden Erfindung, wenn sie zusammen mit den begleitenden Zeichnungen genommen wird.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm eines paketgeschalteten Systems, das in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist.
  • 2 ist ein Blockdiagramm eines Switches mit mehreren Anschlüssen, der in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist und in dem paketgeschalteten System aus 1 verwendet wird.
  • 3 ist eine schematische Darstellung eines Switch-Subsystems des Switches mit mehreren Anschlüssen aus 3, das in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiertist.
  • 4 ist ein Blockdiagramm einer einzelnen Ausgangswarteschlange des Switch-Subsystems aus 4, die in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist.
  • 5 ist ein Detail eines ersten Typs einer Ausgangswarteschlange in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung.
  • 6 ist ein Detail eines zweiten Typs einer Ausgangswarteschlange in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung.
  • 7 ist ein Detail eines Überlaufbereichs des externen Speichers, der in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konfiguriert ist.
  • 8 ist ein Blockdiagramm einer Datenstruktur einer verknüpften Liste, die von der vorliegenden Erfindung verwendet wird.
  • 9 stellt ein Kopfformat für einen Rahmenpuffer in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung schematisch dar.
  • 10 ist ein Detail des Mehrfachkopie-, Rückforderungs- und Freimachen des Pufferpools Bereichs des Switch-Subsystems aus 4, der in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist.
  • 11 ist ein Blockdiagramm einer Struktur zum Freimachen des Pufferpools, die in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist.
  • 12 ist ein Blockdiagramm einer Mehrfachkopiewarteschlange, die in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konfiguriert ist.
  • 13 ist eine schematische Darstellung des Mehrfachkopiecachespeichers, der in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist.
  • 14 ist ein Blockdiagramm eines Warteschlangenblocks der Pufferverwaltung des Switch-Subsystems und eines Anschlussvektor FIFO, der in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist.
  • 15 ist ein Blockdiagramm einer Ausgangswarteschlange, die in Übereinstimmung mit einem weiteren Ausführungsbeispiel der vorliegenden Erfindung konstruiert ist.
  • Detaillierte Beschreibung der beispielhaften Ausführungsbeispiele
  • Die vorliegende Erfindung wird anhand des Beispiels eines Switches in einem paketgeschalteten Netzwerk, wie einem Ethernet (IEEE 802.3) Netzwerk, beschrieben werden. Es wird offensichtlich werden, dass die vorliegende Erfindung auch auf andere paketgeschaltete Systeme angewendet werden kann, ebenso wie auf andere Typen von Systemen im Allgemeinen.
  • 1 ist ein Blockdiagramm eines beispielhaften Systems, in dem die vorliegende Erfindung vorteilhaft verwendet werden kann. Das beispielhafte System 10 ist ein paketgeschaltetes Netzwerk, wie ein Ethernet Netzwerk. Das paketgeschaltete Netzwerk umfasst einen integrierten Switch mit mehreren Anschlüssen (IMS) 12, der die Kommunikation von Datenpaketen zwischen Stationen des Netzwerks erlaubt. Das Netzwerk kann Netzwerkstationen mit unterschiedlichen Konfigurationen enthalten, zum Beispiel vierundzwanzig (24) 10 Megabit pro Sekunde (M\bps) Netzwerkstationen 14, die Daten mit einer Netzwerkdatenrate von 10 M\bps senden und empfangen, und zwei 100 M\bps Netzwerkstationen 22, die Daten mit einer Netzwerkgeschwindigkeit von 100 M\bps senden und empfangen. Daher leitet der Switch 12 von den Netzwerkstationen 14 oder 22 empfangene Datenpakete basierend auf dem Ethernet Protokoll selektiv an das geeignete Ziel weiter.
  • In Übereinstimmung mit dem offenbarten Ausführungsbeispiel senden und empfangen die 10 M\bps Netzwerkstationen 14 Datenpakete an und von dem Switch 12 in Übereinstimmung mit dem Halbduplex-Ethernet-Protokoll über ein Medium 17. Das Ethernet Protokoll ISO/IEC 8802-3 (ANSI/IEEE-Std. 802.3, 1993 Ed.) definiert einen Mechanismus für den Halbduplex-Medienzugriff, der es allen Stationen 14 erlaubt, mit Gleichheit auf den Netzwerkkanal zuzugreifen. Der Verkehr in einer Halbduplex-Umgebung wird nicht über das Medium 17 unterschieden oder priorisiert. Stattdessen enthält jede Station 14 eine Ethernetschnittstellenkarte, die einen Mehrfachzugriff mit Trägerabtas tung und Kollisionsdetektierung (CSMA/CD) verwendet, um nach Verkehr auf dem Medium zu hören. Die Abwesenheit von Verkehr im Netzwerk wird detektiert durch die Wahrnehmung eines Abschaltens von einem Empfangsträger auf dem Medium. Jede Station 14, die Daten zu senden hat, wird versuchen auf den Kanal zuzugreifen, durch Abwarten einer vorbestimmten Zeit nach dem Abschalten von einem Empfangsträger auf dem Medium, bekannt als das Lücke zwischen Paketen Intervall (IPG). Falls mehrere Stationen 14 Daten auf das Netzwerk zu senden haben, wird jede der Stationen als Antwort auf die abgetastete Abschaltung des Empfangsträgers auf dem Medium und nach dem IPG Intervall zu senden versuchen, was zu einer Kollision führt. Daher wird die sendende Station das Medium überwachen, um festzustellen, ob dort eine Kollision gewesen war, weil eine andere Station Daten zu der gleichen Zeit sendet. Falls eine Kollision detektiert ist, halten beide Stationen an, warten eine zufällige Zeitspanne ab und versuchen erneut zu senden.
  • Die 100 M\bps Netzwerkstationen 22 arbeiten vorzugsweise im Vollduplex Modus in Übereinstimmung mit dem vorgeschlagenen Ethernet Standard IEEE 802.3x Full-Duplex with Flow Control – Working Draft (0.3). die Vollduplex Umgebung stellt eine zwei Wege, Punkt zu Punkt Verbindung zwischen jeder 100 M\bps Netzwerkstation 22 und dem Switch 12 zur Verfügung, wobei der Switch 12 und die jeweiligen Stationen 22 gleichzeitig Datenpakete ohne Kollisionen senden und empfangen können. Die 100 M\bps Netzwerkstationen 22 sind jeweils an das Netzwerkmedium 17 über 100 M\bps physikalische (PHY) Geräte Netzwerkinterfacebereich 20 vom Type 100 Base-TX, 100 Base-T4 oder 100 Base-FX verbunden. Der Switch 12 enthält eine vom Medium unabhängige Schnittstelle (MII) 24, die eine Verbindung zu den physikalischen Geräten 20 zur Verfügung stellt. Die 100 M\bps Netzwerkstationen 22 können als Server oder Routen für Verbindungen zu anderen Netzwerken implementiert sein.
  • Wie in 1 gezeigt enthält das Netzwerk 10 eine Reihe von Switch-Transceivern 16, welche ein Zeitmultiplexverfahren und ein Zeitdemultiplexverfah ren für zwischen dem Switch 12 und den 10 M\bps Stationen 14 gesendete Datenpakete durchführen. Ein magnetisches Transformationsmodul 19 hält die Hüllkurven der Signalwellenform auf dem Medium 17 aufrecht. Der Switch 12 enthält eine Transceiver-Schnittstelle 18, die Datenpakete zu und von jedem Switch Transceiver 16 sendet und empfängt, unter Verwendung eines Protokolls mit Zeitmultiplexverfahren über eine einzelne serielle keine Rückkehr zu Null (NRZ) Schnittstelle 23. Der Switch Transceiver 16 empfängt Pakete von der NRZ Schnittstelle 23, demultiplext die empfangenen Pakete und gibt die Pakete über das Medium 17 an die entsprechende Endstation 14 aus. In Übereinstimmung mit dem offenbarten Ausführungsbeispiel hat jeder Switch Transceiver 16 vier unabhängige 10 M\bps twisted-pair-Anschlüsse und verwendet einen 4 : 1 Multiplex über die NRZ Schnittstelle, was eine vierfache Reduzierung der Anzahl der von dem Switch 12 benötigten PINs erlaubt.
  • Der Switch 12 enthält eine Entscheidungstreffungsmaschine, eine Schaltmaschine, eine Pufferspeicherschnittstelle, Konfigurations-/Steuer-/Statusregister, Verwaltungszähler und eine MAC (Medienzugriffssteuerungsprotokoll) Protokollschnittstelle, um das Routing von Datenpaketen zwischen den Ethernetanschlüssen, die den Netzwerkstationen 14 und 22 dienen, zu unterstützen. Der Switch 12 enthält auch eine erweiterte Funktionalität, um intelligente Schaltentscheidungen zu machen, und um statistische Netzwerkinformation in der Form von Verwaltungsinformationsbasis (MIB) Objekten an eine externe Verwaltungsgröße, unten beschrieben, zur Verfügung zu stellen. Der Switch 12 enthält auch Schnittstellen zur Ermöglichung von externer Speicherung von Paketdaten und Schaltungslogik, um die Größe des Chips des Switches 12 zu minimieren. Zum Beispiel enthält der Switch 12 eine Schnittstelle 34 zu einem synchronen dynamischen RAM (SDRAM), die Zugriff auf einen externen Speicher 36 zum Speichern von empfangenen Rahmendaten, Speicherstrukturen und MIB Zählerinformationen zur Verfügung stellt. Der Speicher 36 kann ein synchrones DRAM mit 80, 100 oder 120 MHz sein, das eine Größe von 2 oder 4 Mb hat.
  • Der Switch 12 enthält auch einen Verwaltungsanschluss 30, der es einer externen Verwaltungsgröße erlaubt, die gesamten Operationen des Switches 12 über eine Verwaltungs-MAC-Schnittstelle 32 zu steuern. Der Switch 12 enthält ferner eine PCI Schnittstelle 26, die den Zugriff durch die Verwaltungsgröße über einen PCI Host und Brücke 28 ermöglicht. Alternativ kann der PCI Host und Brücke 28 als ein Erweiterungsbus für mehrere Schaltgeräte 12 dienen.
  • Der Switch 12 enthält eine interne Entscheidungstreffungsmaschine (2), die von einer Quelle empfangene Datenpakete selektiv an zumindest eine Zielstation sendet. Die interne Entscheidungstreffungsmaschine kann durch einen externen Regelüberprüfer ersetzt werden. Der Switch 12 enthält eine Schnittstelle zum externen Regelüberprüfer (ERCI) 40, welche die Verwendung eines externen Regelüberprüfers 42 erlaubt, um anstelle der internen Entscheidungstreffungsmaschine Entscheidungen über die Weiterleitung von Rahmen zu treffen. Daher können Entscheidungen über die Weiterleitung von Rahmen entweder von der internen Entscheidungstreffungsmaschine oder von dem externen Regelüberprüfer 42 getroffen werden.
  • Der Switch 12 enthält des weiteren eine LED Schnittstelle 44, die den Status von Bedingungen pro Anschluss austaktet und eine LED externe Logik 46 treibt. Die LED externe Logik 46 wiederum treibt LED Anzeigeelemente 48, die von einem Menschen gelesen werden können. Ein Oszillator 38 stellt einen Schnittstelle zum externen Regelüberprüfer 40 MHz Takteingang für die Systemfunktionen des Switches 12 zur Verfügung.
  • 2 ist ein Blockdiagramm des integrierten Switches mit mehreren Anschlüssen (IMS) 12 aus 1. Der Switch 12 enthält vierundzwanzig (24) 10 M\bps Medienzugriffsteuerung (MAC) Anschlüsse 50 zum Senden und Empfangen von Datenpaketen im Halbduplex zwischen den entsprechenden 10 M\bps Netzwerkstationen 14 (Anschlüsse 124) und zwei 100 M\bps MAC Anschlüsse 53 zum Senden und Empfangen von Datenpaketen im Vollduplex zwischen den entsprechenden 100 M\bps Netzwerkstationen (Anschlüsse 25, 26). Wie oben beschrieben arbeitet die Verwaltungsschnittstelle 30 auch in Übereinstimmung mit dem MAC Schichtprotokoll (Anschluss 0). Jeder der MAC Anschlüsse 50, 53 und 30 hat einen Empfangs Zuerst Rein Zuerst Raus (FIFO) Puffer 52 und einen Sende FIFO 54. Datenpakete von einer Netzwerkstation werden von der entsprechenden MAC Schnittstelle empfangen und in dem entsprechenden Empfangs FIFO 52 gespeichert. Das empfangene Datenpaket wird von dem entsprechenden Empfangs FIFO 52 an die Schnittstelle zum externen Speicher 34 zur Speicherung in dem externen Speicher 36 ausgegeben.
  • Der Kopf des empfangenen Pakets wird auch zu der Entscheidungstreffungsmaschine weiter geleitet, entweder dem internen Regelüberprüfer 58 oder der Schnittstelle zum externen Regelüberprüfer 40, um festzustellen, welche MAC Anschlüsse das Datenpaket ausgeben werden. Insbesondere wird der Paketkopf an den internen Regelüberprüfer 58 oder die Schnittstelle zum externen Regelüberprüfer 40 weitergeleitet, abhängig davon, ob der Switch 12 konfiguriert ist, um unter Verwendung des internen Regelüberprüfers 58 oder des externen Regelüberprüfers 42 zu arbeiten. Der interner Regelüberprüfer 58 und der externer Regelüberprüfer 42 versorgen die Entscheidungstreffungslogik zur Bestimmung des Ziel MAC Anschlusses für ein gegebenes Datenpaket. Die Entscheidungstreffungsmaschine kann daher ein gegebenes Datenpaket entweder an einen einzelnen Anschluss, mehrere Anschlüsse oder alle Anschlüsse (das heißt Verbreitung) ausgeben. Zum Beispiel enthält jedes Datenpaket eine Kopf mit einer Quell- und einer Zieladresse, wobei die Entscheidungstreffungsmaschine den geeigneten Ausgangs MAC Anschluss basierend auf der Zieladresse identifizieren kann. Alternativ kann die Zieladresse einer virtuellen Adresse entsprechen, welche die Entscheidungstreffungsmaschine identifiziert als einer Vielzahl von Netzwerkstationen entsprechend. Alternativ kann das empfangene Datenpaket einen VLAN (virtuelles LAN) markierten Rahmen in Übereinstimmung mit dem IEEE 802.1d Protokoll enthalten, der ein anderes Netzwerk (über einen Router an einer der 100 M\bps Stationen 22) oder eine vorgeschriebene Gruppe von Netzwerkstationen angibt. Daher wird entweder der interner Regelüberprüfer 58 oder der externer Regelüberprüfer 42 über die Schnittstelle 40 entscheiden, ob ein zeitweise in dem Pufferspeicher 36 gespeicherter Rahmen an einen einzelnen MAC Anschluss oder an mehrere MAC Anschlüsse ausgegeben werden soll.
  • Die Verwendung des externen Regelüberprüfers 42 liefert Vorteile wie eine erhöhte Kapazität, ein zufallsbasiertes Ordnen in der Entscheidungswarteschlange, was es Entscheidungen über die Weiterleitung von Rahmen ermöglich getroffen zu werden, bevor der Rahmen vollständig in dem externen Speicher gepuffert ist, und erlaubt Entscheidungen getroffen zu werden in einer Reihenfolge, die unabhängig ist von Reihenfolge, in der die Rahmen von dem Switch 12 empfangen wurden.
  • Die Entscheidungstreffungsmaschine (das heißt der interne Regelüberprüfer 58 oder der externe Regelüberprüfer 42) gibt eine Entscheidung über die Weiterleitung an ein Switch-Subsystem 56 in der Form eines Anschlussvektors aus, der jeden MAC Anschluss identifiziert, der das Datenpaket empfangen soll. Der Anschlussvektor von dem Regelüberprüfer enthält die Adressstelle, welche das Datenpaket in dem externen Speicher 36 speichert, und die Identifizierung des MAC Anschlusses zum Empfangen des Datenpakets für die Absendung (zum Beispiel MAC Anschlüsse 0–26). Das Switch-Subsystem 56 ruft das in dem Anschlussvektor identifizierte Datenpaket aus dem externen Speicher 36 über die Schnittstelle zum externen Speicher 34 ab und stellt das geholte Datenpaket dem geeigneten Sende FIFO 54 des identifizierten Anschlusses zur Verfügung.
  • Weitere Schnittstellen stellen Verwaltungs- und Steuerinformationen zur Verfügung. Zum Beispiel ermöglicht es eine Verwaltungsdatenschnittstelle 59 dem Switch 12, Steuer- und Statusinformationen mit den Switch-Transceiver 16 und den 100 M\bps physikalischen Geräten 20 in Übereinstimmung mit der MII Verwaltungsspezifikation (IEEE 802.3u) auszutauschen. Zum Beispiel gibt die Verwaltungsdatenschnittstelle 59 einen Verwaltungsdatentakt (MDC) aus, der ein Zeitreferenz auf dem bidirektionalen Verwaltungsdaten IO (MDIO) Signalpfad zur Verfügung stellt.
  • Die PCI-Bus-Schnittstelle 26 ist eine 32 Bit-Slave-Schnittstelle, die konform ist mit der PCI-Revision 2.1, zum Zugriff durch den PCI-Host-Prozessor 28 auf interne IMS-Status und Konfigurationsregister 60 und zum Zugriff auf den externen Speicher 36. Die PCI-Schnittstelle 26 kann auch als Erweiterungsbus für mehrere Schaltgeräte dienen. Der Verwaltungsanschluss 30 bildet eine Schnittstelle zu einer externen MAC Maschine über eine Standard sieben Draht invertierte serielle GPSI-Schnittstelle, was einen Hoststeuerungszugriff über ein Standard MAC Schicht Protokoll auf den Switch 12 ermöglicht.
  • 3 stellt das Switch-Subsystem 56 aus 2 detaillierter in Übereinstimmung mit einem beispielhaften Ausführungsbeispiel der vorliegenden Erfindung dar. Weitere Elemente des Switches 12 mit mehreren Anschlüssen von 2 sind in 3 reproduziert, um die Verbindungen des Switch-Subsystems 56 mit diesen anderen Elementen darzustellen. Das Switch-Subsystem 56 enthält die Kernschaltmaschine zum Empfangen und Weiterleiten von Rahmen. Die wichtigsten funktionalen Blöcke, die zur Implementierung der Schaltmaschine verwendet werden umfassen: ein Anschlussvektor FIFO 70, eine Pufferverwaltung 72, eine Vielzahl von Anschluss Ausgangswarteschlangen 74, eine Verwaltungsanschluss Ausgangswarteschlange 75, eine Erweiterungsbus Ausgangswarteschlange 77, einen freien Pufferpool 104, eine Mehrfachkopie Warteschlange 90, einen Mehrfachkopie Cachespeicher 96 und eine Rückforderungswarteschlange 98. Der Betrieb und die Struktur von diesen funktionalen Blöcken wird detaillierter beschrieben werden, aber ein kurzer Überblick auf das Switch-Subsystem 56 von 3 wird zuerst gegeben, um den Kontext für die spätere Diskussion der einzelnen Elemente zur Verfügung zu stellen.
  • Es gibt zwei grundlegende Typen von Rahmen, die von den Anschlüssen in den Switch 12 mit mehreren Anschlüssen eintreten: Einfachkopie Rahmen und Mehrfachkopie Rahmen. Ein Einfachkopie Rahmen ist ein Rahmen, der an einem Anschluss empfangen wird, der von dem Switch 12 mit mehreren Anschlüssen an lediglich einen anderen Anschluss zu senden ist. Im Gegensatz dazu ist ein Mehrfachkopie Rahmen ein Rahmen, der an einem Anschluss zur Versendung an mehr als einen Anschluss empfangen wird. In 3 wird jeder Anschluss von einem getrennten MAC 50 repräsentiert, der seinen eigenen Empfangs FIFO 52 und Sende FIFO 54 hat.
  • Rahmen, egal ob Mehrfachkopie oder Einzelkopie, werden von den internen MAC Maschinen 50 empfangen. Wenn das Rahmenpaket an dem Anschluss empfangen ist, wird es in dem Empfangs FIFO 52 platziert. Jeder Rahmen hat einen Kopf, der einem Regelüberprüfer zur Verfügung gestellt wird, entweder dem internen Regelüberprüfer 58 oder dem externen Regelüberprüfer 42. Der Regelüberprüfer 42 oder 58 bestimmt basierend auf der Information in dem Kopf, von wo das Rahmenpaket gesendet wird, das heißt durch welchen Anschluss oder Anschlüsse das Rahmenpaket gesendet werden wird.
  • Zu der gleichen Zeit, zu welcher der Regelüberprüfer 42 oder 58 seine Entscheidung zur Weiterleitung trifft, erhält die Pufferverwaltung 72 einen Zeiger auf einen freien Puffer von dem freien Pufferpool 104. Der Zeiger auf einen freien Puffer ist die Stelle in dem externen Speicher 36, an welcher der Rahmen von dem Empfangs FIFO 52 gespeichert werden wird. Sobald der Zeiger auf einen freien Puffer von der Pufferverwaltung 72 aus dem freien Pufferpool 104 erhalten wird, wird der Puffer, auf den von dem Zeiger auf einen freien Puffer gezeigt wird, nicht mehr als frei betrachtet. Die Rahmendaten werden über einen Datenbus 80 von dem Empfangs FIFO 52 zu dem externen Speicher 36 in einer direkten Speicherzugriff (DMA) Transaktion transferiert. Der Rahmen wird an der Stelle gespeichert, auf die der aus dem freien Pufferpool 104 erhaltene Zeiger auf einen freien Puffer zeigt, obwohl eine Anzahl von anderen Puffern zu Speicherung eines Rahmens verwendet werden kann, wie beschrieben werden wird.
  • Zusätzlich zu den Daten des Kopfes empfängt der Regelüberprüfer 42 oder 58 auch den Zeiger auf einen freien Puffer von der Pufferverwaltung 72. Dieser Zeiger auf einen freien Puffer wird nun als ein Rahmenzeiger bezeichnet, da es auf eine Speicherstelle in dem externen Speicher 36 zeigt, wo der Rahmen gespeichert ist. Der Regelüberprüfer 42 oder 58 verwendet die Information des Kopfes, um die Entscheidung über die Weiterleitung zu treffen und einen Befehl zum Weiterleiten in der Form eines "Anschlussvektors" zu erzeugen. In dem beispielhaft dargestellten Ausführungsbeispiel ist der Anschlussvektor ein 28 Bit Vektor mit einem gesetzten Bit für jeden Ausgangsanschluss, an den der Rahmen weiter geleitet werden soll. Für dieses überblickhafte Beispiel soll angenommen werden, dass der empfangene Rahmen ein Einfachkopie Rahmen ist. Entsprechend ist nur ein Bit in dem von dem Regelüberprüfer 42 oder 58 erzeugten Anschlussvektor gesetzt. Das Bit, das in dem Anschlussvektor gesetzt ist, entspricht einem bestimmten der Anschlüsse.
  • Der Regelüberprüfer 42 oder 58 platziert den Anschlussvektor und den Rahmenzeiger (und auch einen Steuer-Opcode und einen VLAN-Index) in dem Anschlussvektor FIFO 70. Der Anschlussvektor wird von dem Anschlussvektor FIFO 70 untersucht, um festzustellen, in welche bestimmte Ausgangswarteschlange 74 (oder Warteschlangen) der zu dem Anschlussvektor gehörige Rahmenzeiger eingegeben werden sollte. Der Anschlussvektor FIFO 70 platziert den Rahmenzeiger in der geeigneten Ausgangswarteschlange 74. Dies reiht die Versendung des Rahmens in die Warteschlange ein.
  • Zu irgendeinem Zeitpunkt erreicht der Rahmenzeiger den Boden der Ausgangswarteschlange 74 nachdem er durch die Ausgangswarteschlange 74 passiert ist. Die Pufferverwaltung 72 nimmt den Rahmenzeiger, wenn er an dem Boden der Ausgangswarteschlange 74 ankommt und leitet den Rahmenzeiger an den geeigneten Sende FIFO 54 des richtigen Anschlusses über einen Rahmenzeiger Lesebus 86 weiter. Dies plant den Ablauf der Versendung des Rahmens. Die Rahmendaten werden in einer DMA-Transaktion von der Stelle in dem externen Speicher 36 gelesen, auf den von dem Rahmenzeiger gezeigt wird, werden in dem geeigneten Sende FIFO 54 gespeichert und dann gesendet.
  • Eine Mehrfachkopie Transaktion ist ähnlich zu der Einfachkopie Transaktion, bis auf dass der Anschlussvektor mehrere gesetzte Bits hat, welche die mehreren Anschlüsse, von denen die Rahmen gesendet werden, bezeichnen. Der Rahmenzeiger wird in jede der geeigneten Ausgangswarteschlangen 74 platziert und von den entsprechenden Sende FIFOs 54 gesendet.
  • Die Pufferverwaltung 72 verwendet die speziellen Steuerwarteschlangen, das heißt den freien Pufferpool 104, die Mehrfachkopie Warteschlange 90 und die Rückforderungswarteschlange 98 und den Mehrfachkopie Cachespeicher 96, um den Vorgang den Zuweisens von Puffern zu verwalten, um empfangene Rahmen zu speichern und Puffer zur erneuten Benutzung wieder zu erlangen, sobald der Rahmen an seinen zugewiesenen Ausgangsanschluss (-anschlüsse) gesendet worden ist. Die Pufferverwaltung 72 unterhält auch "Überlauf' Bereiche für die Ausgangswarteschlangen 74 und die Steuerwarteschlangen 104, 90 und 98 in dem externen Speicher 36, wie später detaillierter beschrieben werden wird.
  • Mit diesem operationellen Überblick, der als Hintergrund dient, werden nun die einzelnen Bereiche und die verschiedenen Aspekte des Switch-Subsystems 56 detaillierter diskutiert. Der erste von diesen Aspekten, der beschrieben werden wird, ist die Struktur des verschiedenen Ausgangswarteschlangen 74 der vorliegenden Erfindung. Zusätzlich zu diesen Ausgangswarteschlangen 74, die den 10 Mb/s Ausgangsanschlüssen und den 100 Mb/s Ausgangsanschlüssen zugeordnet sind, wird eine Ausgangswarteschlange 75 für den Verwaltungsanschluss 30 zur Verfügung gestellt und eine Ausgangswarteschlange 77 wird für den Erweiterungsanschluss 26 zur Verfügung gestellt. Diese Ausgangswarteschlangen 75, 77 haben die gleiche externe Struktur wie die Ausgangswarteschlangen 74, aber unterschiedliche interne Konfigurationen, wie beschrieben werden wird.
  • 4 ist ein Blockdiagramm der externen Struktur einer Ausgangswarteschlange 74 in Übereinstimmung mit einem Ausführungsbeispiel der vorliegende Erfindung. Wie aus 4 offensichtlich ist, hat die Ausgangswarteschlange 74 der vorliegende Erfindung eine dreiteilige Konfiguration. Für die höchste Leistungsfähigkeit ist es vorzuziehen, alles der Struktur der Warteschlange auf dem Chip zu halten (bezogen auf den Switch 12 mit mehreren Anschlüssen), aber der Boden auf einem Chip ist sehr teuer. Dies zeigt ein Dilemma, wenn der Chip entworfen ist, um eine große Anzahl von Einträgen zu schalten und in eine Warteschlange einreihen muss. Die vorliegende Erfindung löst dieses Dilemma durch die Bereitstellung einer einzelnen Ausgangswarteschlange, die einen Bereich mit hoher Leistungsfähigkeit und niedriger Kapazität enthält, der sich auf dem Chip befindet, und eines Überlaufbereichs, der sich außerhalb des Chips befindet. Der Überlaufbereich erlaubt der Warteschlange als eine Warteschlange mit hoher Kapazität zu dienen, wenn es nötig ist, wenn auch mit einer relativ betrachtet geringeren Leistungsfähigkeit als der auf dem Chip befindliche Bereich.
  • Eine einzelne logische Ausgangswarteschlange 74 der vorliegenden Erfindung hat in Übereinstimmung mit dem Ausführungsbeispiel von 4 drei physikalische Bereiche. Diese umfassen eine Ausgangs Warteschlangen-Schreibseite 76, eine Ausgangs Warteschlangen-Leseseite 78 und einen Ausgangswarteschlangen Überlaufbereich (allgemein als 110 bezeichnet), der in dem externen Speicher 36 angeordnet ist. Zugriff auf den externen Speicher 36 für alle der Ausgangswarteschlangen 74 ist durch die Schnittstelle zum externen Speicher 34, wie zuvor beschrieben. Die vorliegende Erfindung nimmt Vorteil von der Burst-Charakteristik der aktuellen externen Speicher, so dass die Daten (zum Beispiel Rahmenzeiger) von und zu dem Chip zu dem Überlauf Warteschlangenbereich 110 in Bursts über den Bus 84 gesendet werden, der den Chip 12 mit dem externen Speicher 36 verbindet.
  • Die Ausgangs Warteschlangen-Schreibseite 76 und die Ausgangs Warteschlangen-Leseseite 78 sind auf dem Chip 12 angeordnet. Die Schreibseite 76 und die Leseseite 78 werden als kleine, teure Ressourcen seiend betrachtet. Im Gegensatz dazu ist der Überlaufbereich 110, der den dritten Teil der Ausgangswarteschlange 74 bildet, groß und billig. Die Schreibseite 76 und die Leseseite 78 stellen eine hohe Leistungsfähigkeit zur Verfügung, während der Pfad durch den Überlaufbereich einen Pfad mit niedriger Leistungsfähigkeit und hoher Kapazität zur Verfügung stellt.
  • Im Betrieb empfängt die Ausgangs Warteschlangen-Schreibseite 76 einen Eintrag. In dem beispielhaftren Ausführungsbeispiel eines Switches 12 mit mehreren Anschlüssen in Übereinstimmung mit der vorliegenden Erfindung ist der Eintrag ein Rahmenzeiger, der auf den ersten Puffer in dem externen Speicher zeigt, in dem die ersten 256 Bytes eines Rahmens gespeichert sind. Es sollte den Fachleuten auf dem Gebiet jedoch offensichtlich sein, dass die Struktur der Ausgangswarteschlange 74 nicht auf Rahmenzeiger als Einträge begrenzt ist, vielmehr ist sie auf andere Typen von Einträgen, sowohl in Switches mit mehreren Anschlüssen als auch in anderen Technologien, breit anwendbar.
  • Nachdem der Eintrag durchfließt und den Boden der Ausgangs Warteschlangen-Schreibseite 76 erreicht macht eine zu der Ausgangswarteschlange 74 gehörende Steuerlogik ein Entscheidung dahingehend, was mit dem Eintrag geschehen soll. Falls Platz in der Ausgangs Warteschlangen-Leseseite 78 ist und die Überlaufbereich 110 für diese Ausgangswarteschlange 74 leer ist, dann werden ein oder mehrere Einträge direkt von der Ausgangs Warteschlangen-Schreibseite 76 zu Ausgangs Warteschlangen-Leseseite weiter geleitet. Dieses Weiterleiten von dem Eintrag oder den Einträgen direkt von der Schreibseite 76 zu der Leseseite 78 wird vollständig auf dem Chip 12 durchgeführt und ist daher ein schnelles Durchfließen eines Eintrags mit niedriger Latenz.
  • Falls die Ausgangs Warteschlangen-Leseseite 78 voll ist und zumindest ein Betrag an Daten in Burst-Größe (zum Beispiel 16 Bytes an Einträgen) in der Ausgangs Warteschlangen-Schreibseite 76 da ist, dann wird der Eintrag auf Burst-Weise in den Überlaufbereich 110 für die Ausgangswarteschlange 74 geschrieben. Falls die Ausgangs Warteschlangen-Leseseite 78 voll ist, aber noch kein Betrag an Daten in Burst-Größe in der Ausgangs Warteschlangen-Schreibseite 76 da ist, dann verbleibt der Eintrag in der Ausgangs Warteschlangen-Schreibseite 76 und nichts weiter wird unternommen. Schließlich wird die Ausgangs Warteschlangen-Leseseite 78 entleert werden und wenn die Ausgangs Warteschlangen-Leseseite 78 genügend Platz hat, um einen Betrag an Daten in Burst-Größe unterzubringen, und wenn Daten in dem Überlaufbereich 110 sind, wird ein Burst an Daten von dem Überlaufbereich 110 in die Ausgangs Warteschlangen-Leseseite 78 zur Verfügung gestellt.
  • In der Struktur der Ausgangswarteschlange agiert die Leseseite 78 meistens wie eine traditionelle Warteschlange, weil Eintrag aus diesem Bereich ist, aus dem Einträge genommen werden, einer nach dem anderen. Die Ausgangs Warteschlangen-Schreibseite 76 dient meistens einer Sammelfunktion, um die Daten zu Bursts für das Schreiben in den externen Speicher 36 zusammenzustellen. Daher transformiert die vorliegende Erfindung einzelne Ereignisse (Platzieren eines Eintrags in die Ausgangswarteschlange 74) in ein Burst-Ereignis. Die Schreibseite 76 erlaubt die Ansammlung von Daten, um sie dann, falls notwendig, per Burst in den Überlaufbereich 110 in dem externen Speicher 36 zu befördern. Der Überlaufbereich 110 stellt einen billigen Speicher zu Zeiten von Stockungen zur Verfügung, anstatt teuere Ressourcen des Chips einer Funktion zuzuweisen, die nur zu relativ seltenen Anlässen benötigt wird. Obwohl die vorliegende Erfindung einen Überlaufbereich 110 benutzt, der sich außerhalb des Chips befindet, wird das Zugreifen auf diesen Bereich 110 auf eine Weise durchgeführt, die effizient ist durch den Burst einer Anzahl von Bytes an Information zu einem Zeitpunkt. Dies ist im Gegensatz zu konventionellen Strukturen von Warteschlangen, bei denen einzelne Einträge in die Warteschlange geschrieben und aus ihr gelesen werden.
  • Während des Betriebs werden, falls eine Menge von Einträgen an der Ausgangswarteschlange 74 ankommen, diese Einträge in dem Überlaufbereich 110 platziert, um einen Überlauf der auf dem Chip befindlichen Ausgangs Warteschlange 78 zu verhindern. Daher wird das Verwerfen von Rahmen durch die Struktur der Warteschlange der vorliegenden Erfindung größtenteils verhindert. Auch kann der gesamte Betrag an Speicher, der den Überlaufbereichen 110 zugeordnet ist, leicht geändert werden durch Veränderung der Größe des externen Speichers 36. Des weiteren sind die Größen der einzelnen bestimmten Überlaufbereiche 110 programmierbar, um die Größen der Warteschlangen anzupassen ohne dass die Leistungsfähigkeit der Ausgangswarteschlangen 74 beeinflusst wird.
  • Typischerweise ist eine Warteschlange eine geordnete Struktur mit einer zuerst rein, zuerst raus Anordnung. Jedoch ist bei einigen Typen von Warteschlangen, wie der Rückforderungswarteschlange 98 oder dem freien Pufferpool 104, die Reihenfolge der Einträge nicht von Wichtigkeit. Falls es möglich ist, Daten direkt von der Schreibseite 100 zu der Leseseite 102 zu senden, erlaubt es die vorliegende Erfindung, Information direkt auf diesem Weg zu senden, wodurch der Überlaufbereich für die Warteschlange umgangen wird. Dies ist sogar erlaubt, wenn sich Information in dem dazu gehörigen Überlaufbereich befindet, so lange die Information nicht empfindsam für die Ordnung ist. Zum Beispiel ist die Rückforderung von Puffern nicht empfindsam für die Ordnung, da jegliche Ordnung akzeptabel ist, in der die Puffer schließlich zu der Freiliste in dem freien Pufferpool 104 zurückgegeben werden, nachdem der Puffer nicht länger benötigt wird, um den Rahmen zu speichern. Daher wird, um die Einschränkung der Bandbreite eines Schreibvorgangs zu dem Überlaufbereich 110 für die Rückforderungswarteschlange 98 in dem externen Speicher 36 zu verhindern, wenn die Daten nicht empfindsam für die Ordnung sind, die Information direkt von der Schreibseite 100 zu der Leseseite 102 weitergeleitet, unter der Annahme, dass die Leseseite 102 Platz für mehr Einträge hat. Die Rückforderungswarteschlange 98 ist ein Beispiel für einen Type von Warteschlange, die Daten in eine Warteschlange einreiht, die nicht empfindsam für die Ordnung sind. Jedoch gibt es viele andere Typen von Daten in verschiedenen Anwendungen, die ebenso nicht empfindsam für die Ordnung sind, so dass dieses Merkmal der vorliegenden Erfindung in Warteschlangen Verwendung findet, die diese anderen Typen von Daten in eine Warteschlange einreihen.
  • In dem Switch mit mehreren Anschlüssen eines beispielhaften Ausführungsbeispiels der vorliegende Erfindung, wie in den 1 und 2 dargestellt, sind achtundzwanzig Ausgangswarteschlangen (jede mit einem Ausgangsanschluss verbunden): vierundzwanzig für die 10 Mb/s Benutzeranschlüsse, zwei für die Schreibseite 100 Mb/s Serveranschlüsse, einer für den Verwaltungsanschluss und einer für den Erweiterungsbusanschluss. Die Ausgangswarteschlangen 74, 75 und 77 stellen einen temporären Speicher für Rahmenzeiger zur Verfügung, wenn sie für die Versendung in eine Warteschlange eingereiht werden. Das Einreihen in die Warteschlange hat die Form, dass das Anschlussvektor FIFO 70 Rahmenzeiger in die verschiedenen Ausgangswarteschlangen 74, 75 und 77 schreib, wie in einem weitergeleiteten Anschlussvektor angezeigt ist.
  • In gewissen bevorzugten Ausführungsbeispielen der Erfindung enthalten die verschiedenen Ausgangswarteschlangen 74, 75 und 77 einige oder alle der folgenden Felder: Einzelkopiebit, Rahmenzeiger, Steuer Opcode oder Steuersignale und VLAN (virtuelles Nahbereichsnetzwerk) Index. Das Einfachkopiebit markiert einen Rahmen mit einem Flag, der lediglich zu einem Ausgangsanschluss weitergeleitet werden soll. Der Rahmenzeiger zeigt auf den Rahmen in dem externen Speicher 36. Der Steuer-Opcode identifiziert spezielle Information über den Rahmen (das heißt neu gelernter Rahmen usw.). Die Steuersignale verwenden Information von dem Steuer-Opcode, um anzuzeigen wie die Anschlüsse die Rahmen vor der Versendung behandeln werden. Der VLAN-Index stellt einen Verweis auf eine VLAN-Markierung zur Verfügung, die (falls notwendig) in den ausgehenden Rahmen eingefügt werden sollte. Jedoch sind diese Felder lediglich beispielhaft, da die vorliegende Erfindung auf andere Ausgangswarteschlangen mit unterschiedlichen Typen von Feldern anwendbar ist.
  • Die interne Struktur eines beispielhaften Ausführungsbeispiels eines ersten Typs der Ausgangswarteschlange 74, der 10 Mb/s Ausgangswarteschlange, ist in 5 dargestellt. Die 10 Mb/s Ausgangswarteschlangen 74 halten Einträge für Rahmen, die an die 10 Mb/s Anschlüsse weiter zu leiten sind. Die Ausgangs Warteschlangen-Schreibseiten 76 für diese Warteschlangen halten zweiunddreißig Einträge und die Ausgangs Warteschlangen-Leseseiten 78 halten sechzehn Einträge in dem beispielhaft dargestellten Ausführungsbeispiel, obwohl andere Größen beabsichtigt sind und in dem Umfang der Erfindung liegen. Jeder Eintrag in einer 10 Mb/s Ausgangswarteschlange 74 weist ein Einfachkopiebit und einen Rahmenzeiger (14 Bits) auf. In dem beispielhaften Ausführungsbeispiel des Switches mit mehreren Anschlüssen ist der VLAN-Index nicht notwendig, da auf den 10 Mb/s Anschlüssen keine VLAN-Markierung stattfindet.
  • Die interne Struktur eines beispielhaften Ausführungsbeispiels eines zweiten Typs der Ausgangswarteschlange 74, der 100 Mb/s Ausgangswarteschlange, ist in 6 dargestellt. Die 100 Mb/s Ausgangswarteschlangen halten Einträge für Rahmen, die an die 100 Mb/s Anschlüsse weiter zu leiten sind. Die Ausgangs Warteschlangen-Schreibseite 76 hält vierundsechzig Einträge in diesem Type von Ausgangswarteschlange und die Ausgangs Warteschlangen-Leseseite hält sechzehn Einträge. Jeder Eintrag weist einem VLAN-Index, einen partiellen Steuer-Opcode (Bits 4–0), ein Einfachkopiebit und einen Rahmenzeiger auf.
  • Ein alternatives Ausführungsbeispiel der Struktur der Ausgangswarteschlange ist in 15 in Form eines Blockdiagramms dargestellt. Die Ausgangswarteschlange 190 kann eingesetzt werden für die Ausgangswarteschlangen 74, 75 und 77 in dem Switch 12 von 3. Die Ausgangswarteschlange 190 in Übereinstimmung mit dem Ausführungsbeispiel von 15 stellt eine Priorisierung on Rahmen in einer platzsparenden und damit kostengünstigen Weise zur Verfügung.
  • Die Warteschlange 190 ist, wie die Ausgangswarteschlangen 74, 75 und 77, eine untereilte Warteschlange mit einer Warteschlangen Schreibseite 192. Jedoch hat die Warteschlange 190 eine Vielzahl von Leseseiten 194an, von denen jede Einträge von der Schreibseite 192 in eine Warteschlange einreihen wird. In dem Ausführungsbeispiel von 15 ist jeder der Leseseiten 194a– n eine unterschiedlicher Prioritätsebene zugewiesen und wird somit Verkehr mit unterschiedlichen Prioritätsebenen behandeln. Zum Beispiel kann der Leseseite 194a die höchste Prioritätsebene der Leseseiten zugewiesen sein und wird dann diejenigen die Schreibseite 192 verlassenden Einträge in die Warteschlange einreihen, die eine übereinstimmende Prioritätsebene haben, das heißt die höchste Prioritätsebene. Auf ähnliche Weise kann der Leseseite 194n die niedrigste Prioritätsebene zugewiesen sein und wird Einträge in die Warteschlange einreihen, die eine übereinstimmende niedrige Prioritätsebene haben. In gewissen Ausführungsbeispielen sind die Warteschlange Leseseiten 194 mit höherer Priorität kleiner in der Kapazität der Warteschlange als die Warteschlange Leseseiten 194 mit niedrigerer Priorität, da die Leseseiten mit höherer Priorität klein gehalten werden sollten, um eine niedrige Latenz für die Einträge mit hoher Priorität zur Verfügung zu stellen.
  • Wenn das beispielhafte Ausführungsbeispiel der vorliegenden Erfindung in dem Netzwerk-Switch 12 von 3 verwendet wird, sind die Einträge Rahmenzeiger, die auf eine Stelle in dem externen Speicher 36 zeigen, an welcher der Rahmen gespeichert ist. Die Rahmenzeiger werden dann mit zusätzlichen Bits versorgt, zum Beispiel drei Bits, welche die Priorität des Rahmens kodieren, auf den von dem Rahmenzeiger gezeigt wird. Diese Priorität kann kodiert werden zum Beispiel von dem Regelüberprüfer 42 oder 58, wenn die Entscheidung über die Weiterleitung getroffen wird. Die Prioritätsbits begleiten den Rahmenzeiger, wie er durch den Switch 12 geleitet wird. Die Priorität des Rahmens kann basieren auf der Zeitempfindlichkeit der Daten oder dem Inhalt des Rahmens, zum Beispiel, obwohl sie auch auf anderen Faktoren basieren kann.
  • Die Weiterleitung des Rahmenzeigers an die Leseseite 194 mit der entsprechenden Prioritätsebene wird von der Steuerlogik 196 gesteuert, welche die Prioritätsbits von jedem Eintrag untersucht, der die Warteschlange Schreibseite 192 verlässt. Auf die Bestimmung der Priorität eines Eintrags, überprüft die Steuerlogik 196 die verfügbare Kapazität der Warteschlange Leseseite 194 mit der Prioritätsebene, die mit der Prioritätsebene dieses Eintrags übereinstimmt. Falls verfügbare Kapazität vorhanden ist, lädt die Steuerlogik 196 den Eintrag in diese Warteschlange Leseseite 194. In gewissen Ausführungsbeispielen wird, wenn in der passenden Warteschlange Leseseite 194 keine verfügbare Kapazität vorhanden ist, dann der Eintrag in dem Überlaufbereich 110 in dem externen Speicher 36 über die Schnittstelle zum externen Speicher 34 platziert. Wenn diese bestimmte Leseseite 194 wieder Kapazität erlangt, wird dann der Eintrag aus dem Überlaufbereich 110 erlangt und in der Warteschlange Leseseite 195 platziert.
  • In gewissen Ausführungsbeispielen der Erfindung werden Einträge mit hoher Priorität verworfen, falls die Warteschlange Leseseite mit hoher Priorität (194a zum Beispiel) keine verfügbare Kapazität hat. Dieses Verwerfen des Eintrags (und damit der Rahmenkopie) statt des Platzierens des Eintrags in der Überlaufbereich 110 für diese Warteschlange 190, berücksichtigt, dass Verkehr mit hoher Priorität, der um den Zeitbetrag verzögert ist, den es benötigt, den Eintrag in den Überlaufbereich zu schreiben und den Eintrag daraus zu erlangen, wahrscheinlich nicht geeignet ist als Daten mit hoher Priorität. Statt diesen Rahmen zu senden, was der wahrscheinlichste Zustand ist, verwerfen diese Ausführungsbeispiele der Erfindung den Rahmen und versuchen dadurch, die Stockung der hohen Priorität zu lindern. Diese Ausführungsbeispiele der Erfindung sind nicht auf diejenigen beschränkt, die nur die Rahmen mit höchster Priorität verwerfen. Eine Grenzprioritätsebene kann der Steuerlogik 196 zur Verfügung gestellt werden, so dass Rahmen mit einer Prioritätsebene über der Grenzebene verworfen werden, falls die passenden Warteschlange Leseseiten 194 keine verfügbare Kapazität haben.
  • In gewissen Ausführungsbeispielen der Erfindung versucht die Steuerlogik 196, auf die Feststellung, dass die Warteschlange Leseseite 194 mit der passenden Prioritätsebene keine verfügbare Kapazität hat, den Eintrag in Warteschlange Leseseite 194 mit der nächst niedrigeren Prioritätsebene zu laden. Dieses Verfahren versucht das Senden des Eintrags an den Überlaufbereich zu vermeiden und den Eintrag immer noch mit einer Priorität so nahe wie möglich zu der tatsächlichen Priorität des Eintrags in die Warteschlange einzureihen.
  • Die Steuerlogik 196 ist leicht von einem Fachmann auf dem Gebiet bei gegebenen Beschreibungen der Funktionalität, die zuvor zur Verfügung gestellt wurde, zu implementieren.
  • Die MAC 50 wählt die Warteschlange Leseseiten 194an aus und erlangt Einträge der Warteschlange von den Warteschlange Leseseiten 194 mit der höchsten Priorität, bevor sie versucht, die Warteschlange Leseseiten 194 mit niedrigerer Priorität zu löschen. Zum Beispiel wird angenommen, dass die Warteschlange Leseseite 194a die Warteschlange Leseseite mit der höchsten Priorität ist, die Warteschlange Leseseite 194b die nächst höchste und die Warteschlange Leseseite 194n die Warteschlange Leseseite mit der niedrigsten Priorität ist. Die MAC 50 wird immer die Warteschlange Leseseite 194a bedienen und entleeren bevor die Warteschlange Leseseite 194b bedient wird. Falls die Warteschlange Leseseite 194a leer ist und die Warteschlange Leseseite 194b einen Eintrag hat, wird die MAC 50 die Warteschlange Leseseite 194b bedienen, bevor eine beliebige andere der Warteschlange Leseseiten 194cn mit niedrigerer Priorität bedient wird, bis die Warteschlange Leseseite 194b vollständig leer ist, und so weiter.
  • Die Struktur der Prioritätswarteschlange in Übereinstimmung mit dem Ausführungsbeispiel aus 15 hat eine verringerte Größe im Vergleich zu den Anordnungen, bei denen die gesamte Warteschlange vervielfacht wird, um Warteschlangen mit verschiedenen Prioritäten zu schaffen. Dies trägt erheblich zu der Größe und den Kosten eines Geräts bei, insbesondere eines Geräts mit mehreren Anschlüssen. Obwohl die Struktur der Warteschlange aus 15 breite Verwendung in ihrer Anwendung in einem Switch mit mehreren Anschlüssen, wie dem Switch 12 aus der 3, findet, werden die Fachleute auf dem Gebiet erkennen, dass die Struktur in einem großen Umfang auf andere Typen von Geräten anwendbar ist, in denen Daten auf eine priorisierte Weise in eine Warteschlange einzureihen sind. Das Sparen von Platz im Hinblick auf die auf dem Chip befindlichen Warteschlangen und immer noch eine Priorisierung der Daten zur Verfügung zu stellen, ist ein wünschenswertes Merkmal. Ein weiteres Beispiel sind Telefongeräte, die sowohl Sprach- als auch Computerverkehr verarbeiten. Der Sprachverkehr kann als Verkehr mit höherer Priorität angesehen werden und der Computerverkehr als niedrigere Priorität.
  • Eine beispielhafte Abbildung des externen Speichers 36 ist in 7 dargestellt. Die gesamte Kapazität des externen Speichers 36 kann zum Beispiel 4 Mb sein, obwohl in verschiedenen Ausführungsbeispielen Speicher mit anderen Kapazitäten verwendet werden. Die Verwendung des externen Speichers 36 für die Überlaufbereiche in Übereinstimmung mit der vorliegenden Erfindung erlaubt die Vergrößerung oder Verkleinerung der Größe der Ausgangswarteschlangen durch eine einfache Auswechslung des externen Speichers. Dies ist ein Vorteil gegenüber Systemen, bei denen die Struktur der Warteschlange vollständig auf dem Chip ist, da die gesamte Kapazität der Warteschlange bei der Herstellung des Chips festgelegt wird.
  • Um die Speicheranforderungen des Chips Switch 12 zu erfüllen weist ein beispielhaftes Ausführungsbeispiel des externen Speichers 36 Platz für die folgenden Bereiche zu: freier Pufferpool Überlaufbereich 120, Rückforderungs- warteschlange Überlauf 122, Mehrfachkopiewarteschlange Überlauf 124, Verwaltungsanschluss Ausgangswarteschlange Überlauf 126, individuelle Ausgangswarteschlange Überläufe 128 für jeden der 10 Mb/s und 100 Mb/s Zielanschlüsse, Erweiterungsbus Ausgangswarteschlange Überlauf 130, die MIB Zähler 132 und den globalen Rahmenpufferpool 134.
  • Die BASIS Adresse für den gesamten Speicherbereich ist in einem Basisadressregister unter den Registern 60 auf dem Chip programmierbar. Die BASIS Adresse für jeden Bereich in der Abbildung des externen Speichers ist in dem Registersatz programmierbar. Kein Längenregister ist erforderlich, die Länge für einen gegebenen Bereich entspricht dem Bereich von der BASIS Adresse dieses Bereichs bis zu der BASIS Adresse des nächsten Bereichs der Abbildung.
  • Da die Länge (und damit Kapazität) von jedem der einzelnen Überlaufbereiche programmierbar ist, ist die gesamte Kapazität von jeder Warteschlange programmierbar. Dieses Merkmal der vorliegenden Erfindung erlaubt die Anpassung des Switches, um bestimmte Ausgangswarteschlangen mit vergrößerter Kapazität, wie benötigt, zur Verfügung zu stellen.
  • Die folgenden Überlaufbereiche, die Einträge speichern, die nicht in die Steuerwarteschlangen auf dem Chip 12 passen, werden daher in dem externen Speicher 36 platziert. Der freier Pufferpool Überlaufbereich 120 speichert die Adresszeiger auf derzeit nicht genutzte Puffer in dem globalen Rahmenpufferpool 134. Der Rückforderungswarteschlange Überlaufbereich 122 speichert Rahmenzeiger auf verknüpft gelistete Ketten, die nicht länger benötigt werden. Der Mehrfachkopiewarteschlange Überlaufbereich 124 speichert Rahmenzeiger mit Kopienummern ">=1" (für in eine Warteschlange eingereihte Rahmenzeiger) und Rahmenzeiger mit Kopienummern "–1" (für erfolgreich gesendete Rahmen).
  • Die folgenden Überlaufbereiche speichern Einträge für Ausgangswarteschlangen, die nicht auf den Chip passen. Der Verwaltungsanschluss Ausgangswarteschlange Überlaufbereich 126 speichert Rahmenzeiger, die auf die Versendung an den Verwaltungsanschluss warten. Die Ausgangswarteschlangen Überlaufbereiche 128 speichern Rahmenzeiger, die auf die Versendung an den entsprechenden 10 Mb/s Anschluss oder 100 Mb/s Anschluss warten. Der Erweiterungsbus Ausgangswarteschlange Überlaufbereich 130 speichert Rahmenzeiger, die auf die Versendung an den Anschluss für den Erweiterungsbus warten.
  • Der MIB-Zähler Bereich 132 enthält alle Statistiken für jeden Anschluss, die periodisch von dem Switch 12 aktualisiert werden. Der Switch 12 unterhält auf dem Chip 8 Bit und 16 Bit Zähler zum Speichern von MIB-Statistiken. Der Switch 12 aktualisiert die 32 Bit oder 64 Bit MIB-Zähler in dem externen Speicher 36 mit der Frequenz, die erforderlich ist, um einen Verlust von MIB-Daten zu verhindern.
  • Der globalen Rahmenpufferpool 134 enthält Puffer in verknüpften Listen, welche die empfangenen Rahmendaten speichern. Zu einem gegebenen Zeitpunkt enthalten diese verknüpften Listen gültige Rahmendaten, veraltete Puffer, die von der Pufferverwaltung 72 an den freien Pufferpool 104 zurück gegeben werden oder dem PCI-Host-Prozessor 28 gehören.
  • Nun Bezug nehmend auf 8 werden von einem beliebigen MAC Anschluss oder dem PCI-Bus empfangene Rahmendaten in dem externen Speicher 36 in einem Format einer verknüpft gelisteten Datenstruktur in einem beispielhaften Ausführungsbeispiel der vorliegenden Erfindung gespeichert. Die Puffer 140, die verwendet werden, um die verknüpfte Liste zu erstellen haben eine Länge von 256 Bytes, obwohl Pufferlängen von anderer Größe in verschiedenen Ausführungsbeispielen der Erfindung verwendet werden. Die Adresszeiger zu jedem dieser Puffer 140 werden von dem freien Pufferpool 104 in dem Switch 12 gespeichert.
  • Wenn ein Rahmen an einem der Anschlüsse des Switches 12 empfangen wird, fordert die Pufferverwaltung 72 von dem freien Pufferpool 104 Adresszeiger an, um Puffer 140 zur Speicherung des Rahmens zu verknüpfen. Der Adresszeiger auf den ersten Rahmen in dem externen Speicher 36, das den Rahmen speichert, wird der Rahmenzeiger für diesen Rahmen. Der Rahmenzeiger wird in dem Switch-Subsystem 56 zum Einreihen von zu sendenden Rahmen in die Warteschlange verwendet.
  • Die Puffer 140 werden durch Adresszeiger in jedem Pufferkopf 142 zusammen verkettet, welche die Stelle des nächsten Puffers in dem Speicher anzeigen. Die Köpfe des Puffers 142 enthalten auch weitere Informationen über die Rahmendaten, die in dem Puffer 140 enthalten sind. Der erste Kopf des Puffers ist 12 Byte, wie in dem beispielhaften Format für einen Pufferkopf in 9a dargestellt. Jeder nachfolgende Kopf des Puffers ist 4 Byte, wie in 9b dargestellt. Die Bursts des externen Speichers sind 2 Bänke × 16 Byte lang, so dass die tatsächliche Speicherkapazität für Rahmen in jedem Puffer 256 B– 16 B = 240 B ist.
  • Wie in den 9a und 9b dargestellt enthalten die ersten und die nach folgenden Formate des Pufferkopfs die folgenden Felder: Buffer Format Bit: zeigt an, welches Pufferformat verwendet wird. Eine Eins zeigt das erste Pufferformat an, das 12 Byte in der Länge ist. Eine Null zeigt ein Format eines nachfolgenden Puffers an, welches 4 Byte ist. Es wird für jeden der verbleibenden Puffer verwendet, wenn die Puffer verkettet werden.
  • E Bit (Ende des Rahmens Markierung): zeigt an, dass dies der letzte Puffer für einen Rahmen ist. Wenn das E Bit gesetzt ist, sind keine Puffer mehr in der Kette.
  • C Bit (CRC-Fehler detektiert): zeigt an, dass von dem Empfänger ein CRC-Fehler detektiert wurde. Wenn das C-Bit detektiert wird, wird der Sendefunktion bewusst einen invertierten CRC senden.
  • L-Bit (Ausrichtungsfehler): zeigt an, dass ein Rahmenausrichtungsfehler in dem Empfangsrahmen detektiert wurde (zusammen mit einem CRC-Fehler).
  • O-Bit (Empfang FIFO Überlauf): zeigt an, dass der Empfangs FIFO übergelaufen ist und die Daten in dem Puffer nicht gültig sein müssen.
  • Buffer Length: die gesamte Anzahl von Bytes, die in dem Datenfeld des Puffers gültig sind, beginnend mit dem ersten Byte nach dem Kopf des Puffers. Diese Länge sollte nicht den Wert des Verschiebungsbytes umfassen.
  • Next-Buffer-Pointer: der Zeiger auf den nächsten Puffer. Der nächste Puffer ist nicht gültig, wenn das E-Bit gesetzt ist.
  • Offset-Byte-Count: zeigt an, wo das erste Byte des Rahmens in dem Rahmendatenbereich des Puffers startet. Eine Verschiebung von Null bedeutet, dass die Daten an dem ersten Byte nach dem Kopf des Puffers 142 beginnen werden. Eine Verschiebung von Null zeigt an, dass Rahmendaten an dem Byte beginnen werden, das dem 16sten Byte in dem Puffer folgt. Für Werte der Verschiebung, die nicht Null sind, werden die Rahmendaten 16B + Verschie- bung von dem Anfang des Puffers beginnen. Die Sendefunktion wird die Anzahl der Bytes überspringen, die in dem Offset-Byte-Feld angezeigt sind.
  • P-Bit (Anschlusstyp): zeigt den Typ des Anschlusses für den eingehenden Empfangsrahmen an. Eine Null zeigt einen 10 Mb/s Anschluss an und eine Eins zeigt einen 100 Mb/s Anschluss an. Dieses Bit wird von dem Host 28 in Verbindung mit dem Zeitstempelfeld verwendet, wenn er den Switch 12 programmiert, um Rahmen an den Erweiterungsbus weiter zu leiten, bevor der Rahmen vollständig empfangen und in dem externen Speicher 36 gepuffert ist.
  • T-Bit: zeigt den Typ des empfangenen Rahmens an: markiert oder nicht markiert. Eine Eins zeigt einen markierten rahmen an und das VLAN-Identifizierer Feld enthält die empfangene VLAN-ID. Eine Null zeigt einen nicht markierten Rahmen an und die VLAN-ID ist nicht gültig.
  • Empfangsanschlussnummer: die Nummer des Anschlusses, an dem der Rahmen empfangen wurde.
  • VLAN-Identifizier: die von einem "markierten" Anschluss empfangene VLAN-ID. Falls der Rahmen von einem nicht markierten Anschluss empfangen wurde, ist dieses Feld nicht gültig.
  • R-Bit (Neuberechnung CRC): zeigt an, dass der CRC bei der Sendefunktion zerlegt und neu berechnet werden muss. Der Switch 12 setzt dieses Bit, wenn ein markierter Rahmen empfangen wird. Des weiteren sollte, wenn der Host 28 die Inhalte eines Rahmens verändert, der Host 28 dieses Bit setzen. Wenn der Switch 12 einen Rahmen sendet, wird er dieses Bit untersuchen, um festzustellen, ob der existierende CRC gesendet wird oder der CRC neu berechnet wird.
  • A-Bit (Anfügen CRC): zeigt an, dass kein CRC an dem Ende der Rahmendaten vorhanden ist. Der Host kann einen in dem Speicher erzeugen (ohne einen CRC), dann dieses Bit setzen. Der Switch 12 wird einen CRC erzeugen und anfügen, wenn der Rahmen gesendet wird. Falls das A Bit gesetzt ist, sollte die Länge des Rahmens nicht den CRC enthalten.
  • F-Bit (Format Bit): identifiziert das Rahmenlänge/Zeitstempel Feld. Eine Null zeigt an, dass das Feld der Zeitstempel des eintreffenden Rahmens ist. Eine Eins zeigt an, dass das Feld die Rahmenlänge des empfangenen Rahmens ist.
  • Frame length/time stamp: abhängig von dem F Bit. Falls das F Bit gelöscht ist, repräsentiert dieses Feld den Zeitstempel von dem Anfang des empfangenen Rahmens. Der Zeitstempel hat eine Auflösung von 1 μs. Falls das f Bit gesetzt ist, zeigt es die gesamte Länge des empfangenen Rahmens einschließlich CRC und jeder empfangenen VLAN-Markierung an. Wenn ein Rahmen empfangen wird, markiert der Switch 12 dieses Feld mit dem Zeitstempel (von dem Taktgeberregister). Falls der Host 28 den Switch 12 programmiert hat zum Weiterleiten von Erweiterungsbusrahmen, bevor der Rahmen vollständig empfangen worden ist, kann er den Zeitstempel (zusammen mit der Geschwindigkeit des empfangenden Anschlusses) verwenden, um abzuschätzen, wie viele Daten er von dem externen Speicher 36 abrufen kann, ohne dass die Rahmendaten überlesen werden. Sobald der gesamte Rahmen empfangen wurde, schreibt der Switch 12 die Länge des Rahmens in dieses Feld und setzt das F Bit.
  • Copy number: wird verwendet, um die Anzahl der Kopien anzuzeigen, die von dem Anschlussvektor FIFO 70 erfolgreich für die Versendung in eine Warteschlange eingereiht wurden. Dieses Feld wird verwendet, um die Anzahl der Kopien für einen Rahmenzeiger anzuzeigen, wenn die Pufferverwaltung 72 in dem Mehrfachkopie Cachespeicher 96 für neue Einträge Platz schaffen muss.
  • 10 ist eine detaillierte Darstellung von einigen der Elemente des Switch-Subsystems 56 aus 3. Diese Elemente. werden verwendet, um die Puffer zum Speichern von Rahmen zur Verfügung zu stellen und diese Puffer zurückzufordern und sie wieder für die Benutzung verfügbar zu machen, sobald die Puffer nicht länger für die Speicherung des Rahmens benötigt wird. Wie zuvor beschrieben leitet jede Ausgangswarteschlange 74, 75 (außer der Ausgangswarteschlange 77) Rahmenzeiger zu der Pufferverwaltung 72, welche den Ablauf der Versendung der Rahmen, auf die von den Rahmenzeigern gezeigt wird, plant. Die Pufferverwaltung 72 steuert die folgenden Funktionen: 1) Verwalten der internen Busse des Switches 12; 2) erleichtern des in die/aus der Warteschlange ein/ausreihen von Rahmenzeigern in/aus den Ausgangswarteschlangen 74; 3) verwalten der Steuer Warteschlangen 90, 98, um die Puffer zu lokalisieren und an den freien Pufferpool 104 zurückzugeben; 4) steuern des Datenflusses zu und von dem externen Speicher 36 und 5) unterhalten der Speicherstrukturen, einschließlich der MIBs und Überlaufbereiche. Die Pufferverwaltung 72 enthält eine Ablaufplanungsfunktion zum Zuweisen aller Zugriffe auf den externen Speicher 36. Diese Zugriffe umfassen: 1) Schreiben empfangener Rahmendaten in die Speicherpuffer 140, 2) lesen von Rahmendaten aus den Speicherpuffern 140 zur Versendung und 3) unterhalten (das heißt Schreiben und Lesen) der Rahmenzeiger in jedem der Überlaufbereiche für die Ausgangswarteschlangen 74 und die Steuer Warteschlange 90, 98 und 4) aktualisieren der MIB-Zähler.
  • Nachdem die Pufferverwaltung 72 einen bestimmten Rahmenzeiger an alle der geeigneten Ausgangswarteschlange(n) 74 kopiert hat, berechnet der Anschlussvektor FIFO 70 die Anzahl der Kopien (die "Kopienanzahl") und platziert die Rahmenzeiger und die Kopieanzahl in die Schreibseite 92 der Mehrfachkopie Warteschlange 90. Die Kopieanzahl kann "0" sein, was anzeigt, dass der Rahmen nicht weiter geleitet werden sollte, eine "1" zeigt eine Übermittlung einer Einfachkopie an oder eine Zahl ">1" zeigt eine Übermittlung einer Mehrfachkopie an. Diese drei Fälle werden unten beschrieben.
  • Wenn die Kopieanzahl "0" ist, was bedeutet, das der Rahmenzeiger einen Null Weiterleitung Anschlussvektor mit keinem gesetzten Bit hat, leitet der Anschlussvektor FIFO 70 den Rahmenzeiger direkt zu der Schreibseite 100 der Rückforderungswarteschlange 98. Wenn die Pufferverwaltung 72 die Rückforderungswarteschlange 98 bedient, wie beschrieben werden wird, bricht die Pufferverwaltung 72 die verknüpft gelistete Kette von Puffern auf und gibt den Adresszeiger für jeden "freien" Puffer an die Schreibseite 106 des freien Pufferpools 104 aus.
  • Wenn die Kopieanzahl eine "1" ist, eine Übermittlung einer Einfachkopie, kopiert der Anschlussvektor FIFO 70 den Rahmenzeiger, Steuersignale/Steuer-Opcode und den VLAN-Index an die Ausgangswarteschlange 74 des entsprechenden Ausgangs. Der Anschlussvektor FIFO 70 setzt das Einfachkopie Bit in der Ausgangswarteschlange 74 (siehe 5 und 6), um anzuzeigen, dass dies eine einzelne Übertragung ist. Wenn die Pufferverwaltung 72 den Rahmenzeiger und das Einfachkopie Bit aus der Ausgangswarteschlange 74 des Anschlusses liest, plant sie den Ablauf der Übertragung wie zuvor diskutiert. Die Pufferverwaltung 72 verwendet die Rahmenzeiger, um den ersten Puffer in dem externen Speicher 36 zu lokalisieren, in dem der Rahmen gespeichert ist. Die Pufferverwaltung 72 liest den Kopf des Puffers aus diesem ersten Puffer, erfasst Daten von diesem ersten Puffer und platziert diese Daten in dem entsprechenden MAC Sende FIFO 54. Die Verknüpfungen zu nachfolgenden Puffern, angenommen, dass der Rahmen sich über mehrere Puffer erstreckt, versorgt die Pufferverwaltung 72 mit der zu findenden Adresse und versendet alle der Puffer in der Kette für diesen Rahmen. Sobald die Daten zur Versendung in dem FIFO 54 platziert worden sind, wird der Puffer veraltet und wird an den freien Pufferpool 104 zurückgegeben für eine letztendliche erneute Zuweisung, um Daten eines anderen Rahmens zu speichern.
  • Wenn die Kopieanzahl größer als 1 ist, kopiert der Anschlussvektor FIFO 70 den Rahmenzeiger, den VLAN-Index und Steuersignale/Steuer-Opcode zu jeder der entsprechenden Ausgangswarteschlangen 74. (Wenn auf die Ausgangswarteschlange 74 verwiesen wird, ist auch Bezug genommen auf die Ausgangswarteschlangen 75, 77). Der Anschlussvektor FIFO 70 löscht das Einfachkopie Bit für die entsprechenden Rahmenzeiger in den Ausgangswarteschlangen 74 und platziert den Rahmenzeiger mit einer Kopieanzahl von ">1" in der Schreibseite 92 der Mehrfachkopie Warteschlange 90.
  • Wann immer die Pufferverwaltung 72 einen Rahmenzeiger und ein gelöschtes Einfachkopie Bit von einer der Ausgangswarteschlangen 74 liest, plant die Pufferverwaltung 72 den Ablauf der Versendung des Rahmens, aber überprüft auch den Mehrfachkopie Cachespeicher 96 auf einen Eintrag mit einem Rahmenzeiger, der eine Kopieanzahl von "1" hat. Falls ein Rahmenzeiger mit einer Kopieanzahl von "1" in dem Mehrfachkopie Cachespeicher 96 gefunden wird, plant dann die Pufferverwaltung 72 den Rahmen für die Versendung und fordert die Puffer während der Versendung auf die gleiche Weise zurück wie bei der Einfachkopie Versendung eines Rahmens. Falls jedoch der Rahmenzeiger nicht in dem Mehrfachkopie Cachespeicher 96 ist oder die Kopieanzahl des Rahmenzeigers in dem Mehrfachkopie Cachespeicher 96 größer als 1 ist, sendet dann die Pufferverwaltung 72 den Rahmen, aber fordert nicht die Puffer zurück. Nach einer erfolgreichen Versendung platziert die Pufferverwaltung 72 eine Kopie des Rahmenzeigers zusammen mit einer Kopieanzahl von "–1" in der Schreibseite 92 der Mehrfachkopie Warteschlange 90.
  • Jedes Mal, wenn ein Mehrfachkopie Rahmen versendet wird, platziert die Pufferverwaltung 72 eine Kopie des Rahmenzeigers in der Mehrfachkopie Warteschlange 90, vorausgesetzt die Pufferverwaltung 72 findet nicht den Rahmenzeiger in dem Mehrfachkopie Cachespeicher 96 mit einer Kopieanzahl von "1". Daher kann die Mehrfachkopie Warteschlange 90, zu jedem beliebigen Zeitpunkt, den Rahmenzeiger mit einer Kopieanzahl, die ">1" ist, und/oder mehrere Kopien des gleichen Rahmenzeigers, jede mit einer Kopieanzahl von "–1", enthalten.
  • Die Pufferverwaltung 72 bedient konstant die Mehrfachkopie Warteschlange 90 und den Mehrfachkopie Cachespeicher 96, um veraltete Puffer zurück zu fordern. Wenn sie die Mehrfachkopie Warteschlange 90 bedient und einen Rahmenzeiger mit einer Kopieanzahl von "–1" liest, versucht die Pufferverwaltung 72 diesen neuen Eintrag (Rahmenzeiger und Kopieanzahl) in dem Mehrfachkopie Cachespeicher 96 zu platzieren. Falls der Mehrfachkopie Cachespeicher 96 voll ist, macht die Pufferverwaltung 72 Platz für den neuen Rahmenzeiger. Die Pufferverwaltung 72 liest einen "älteren" Eintrag in dem Mehrfachkopie Cachespeicher, aktualisiert die Kopieanzahl für diesen Eintrag in seinem Pufferkopf in dem externen Speicher 36, löscht dann den Eintrag aus dem Mehrfachkopie Cachespeicher 96. Wenn Platz in dem Mehrfachkopie Cachespeicher 96 verfügbar, wird, ist die Pufferverwaltung 72 fähig, den neuen Eintrag aus der Mehrfachkopie Warteschlange 90 in dem Mehrfachkopie Cachespeicher 96 zu platzieren.
  • Wenn die Pufferverwaltung 72 die Mehrfachkopie Warteschlange 90 bedient und einen Rahmenzeiger mit einer Kopieanzahl von "–1" liest, durchsucht sie den Mehrfachkopie Cachespeicher 96 auf der Suche nach einer übereinstimmenden Rahmenzeigeradresse mit einer Kopieanzahl von ">1", um diese hoch zu zählen oder zu löschen. Falls die Pufferverwaltung 72 eine Übereinstimmung eines Rahmenzeigers findet, wird die Pufferverwaltung 72: 1) den Rahmenzeiger des Mehrfachkopie Cachespeichers runter zählen, wenn die Kopieanzahl ">1" ist 0 der 2) den Rahmenzeiger/Kopieanzahl Eintrag des Mehrfachkopie Cachespeichers löschen und den Rahmenzeiger in der Rückforderungswarteschlange 98 platzieren, falls die Kopieanzahl "1" ist.
  • Falls die Pufferverwaltung 72 keinen übereinstimmenden findet, durchsucht die Pufferverwaltung 72 den Pufferkopf des Rahmenzeigers in dem externen Speicher 36 (siehe 9) nach der Kopieanzahl. Falls die Kopieanzahl in dem Speicher "1" ist, platziert die Pufferverwaltung 72 den Rahmenzeiger in der Rückforderungswarteschlange 98. Falls die Kopieanzahl in dem Speicher ">1" ist, platziert die Pufferverwaltung 72 den Rahmenzeiger mit dieser Kopieanzahl in dem Mehrfachkopie Cachespeicher 96, zählt dann die Kopieanzahl runter.
  • Die Pufferverwaltung 72 bedient die Rückforderungswarteschlange 98 konstant durch das Lesen von Rahmenzeigern, dann "laufen lassen" der verknüpft gelisteten Kette, um Puffer zu dem freien Pufferpool 104 zurück zu geben. Diese Aktivität gibt nur Puffer für Rahmen zurück, die einen Null Anschlussvektor hatten und von dem Anschlussvektor FIFO 70 in der Rückforderungswarteschlange eingereiht waren, oder Rahmen mit einem Mehrfachkopie Weiterleitungsvektor und die die Versendungen von allen der Kopien abgeschlos sen haben. Puffer, die für Einfachkopie Rahmen verknüpft sind, werden direkt zu dem freien Pufferpool 104 zurück gegeben, wenn der Rahmen gesendet wird, wie oben beschrieben.
  • Falls der Anschlussvektor FIFO 70 nicht fähig ist, einen Rahmenzeiger für einen Einfachkopie Weiterleitungsvektor in einer Ausgangswarteschlange 74 zu platzieren, weil diese Ausgangswarteschlange 74 und ihr Überlaufbereich 110 in dem externen Speicher 36 voll sind, wird der Rahmen verworfen. Der Rahmenzeiger wird an die Rückforderungswarteschlange 98 zurück gegeben und das Verwerfen des Rahmens wird von den Verwaltungsressourcen des Switches notiert. Falls der Anschlussvektor FIFO 70 nicht fähig ist, einen oder mehrere Rahmenzeiger für eine einen Multikopie Weiterleitungsvektor in eine Ausgangswarteschlange 74 zu platzieren, weil eine. oder mehrere Ausgangswarteschlangen 74 und ihre Überlaufbereiche 110 in dem externen Speicher 36 voll sind, wird der Rahmen nur an die Ausgangswarteschlangen mit verfügbarem Platz weiter geleitet und die in der Mehrfachkopie Warteschlange 90 platzierte Kopieanzahl wird lediglich die erfolgreich platzierten Rahmenzeiger berücksichtigen. Das nicht Platzieren der Rahmenzeiger wird von den Verwaltungsressourcen des Switches für jeden der Anschlüsse notiert, für den der Rahmenzeiger nicht in die Warteschlange eingereiht werden konnte. Falls der Anschlussvektor FIFO 70 nicht fähig ist, einen beliebigen der Rahmenzeiger für einen Mehrfachkopie Weiterleitungsvektor zu platzieren, weil alle der Ausgangswarteschlangen 74 und ihre Überlaufbereiche 110 in dem externen Speicher 36 voll sind, wird der Rahmenzeiger an die Rückforderungswarteschlange 98 weiter geleitet und die Verwaltungsressourcen des Switches werden angemessen informiert.
  • Die Mehrfachkopie Warteschlange 90 ist eine Warteschlange mit hoher Priorität, die von der Pufferverwaltung 72 verwendet wird, um zu verfolgen wie viele Versendungen eines bestimmten Mehrfachkopie Rahmens abgeschlossen werden müssen bevor alle Puffer (das heißt Adresszeiger), die zur Speicherung des Rahmens verwendet werden, an den freien Pufferpool 104 zurück gegeben werden können. Die Schreibseite 92 und die Leseseite 94 von dieser Ausgangswarteschlange halten 64 beziehungsweise 16 Einträge. Die Mehrfachkopie Warteschlange 90 beliefert den Mehrfachkopie Cachespeicher 96, der von der Pufferverwaltung 72 verwendet wird, um festzustellen, wann Puffer zurück gefordert werden. Die interne Struktur der Mehrfachkopie Warteschlange ist in Figur Switch 12 dargestellt.
  • Der Anschlussvektor FIFO 70 platziert eine Kopie eines Rahmenzeigers und einer Kopieanzahl, die ">1" ist, des Rahmens, basierend auf der Anzahl der Rahmenzeiger, die er erfolgreich in den Ausgangswarteschlangen 74, in die Mehrfachkopie Warteschlange 90 platziert hat. Falls eine Ausgangswarteschlange 74 eines bestimmten Anschlusses voll ist, kann der Anschlussvektor FIFO 70 nicht eine Kopie des Rahmenzeigers in die Ausgangswarteschlange 74 speichern: daher kann er dies nicht als ein erfolgreiches Ereignis für die Bestimmung der Kopieanzahl einschließen.
  • Jedes Mal wenn die Pufferverwaltung 72 einen Rahmenzeiger einer Ausgangswarteschlange liest und bemerkt, dass das Einfachkopie Bit "0" ist, (das heißt eine Mehrfachkopie), dann überprüft sie den Mehrfachkopie Cachespeicher auf den Rahmenzeiger mit einer Kopieanzahl von "1", was anzeigt, dass dies die letzte Versendung ist. Falls diese Übereinstimmung gefunden wird, sendet die Pufferverwaltung 72 den Rahmen und fordert die Puffer auf die gleiche Weise zurück, wie bei der Einfachkopie Versendung, durch bereit stellen der veralteten Puffer an den freien Pufferpool 104 nach der Versendung der Inhalte jedes Puffers. Falls keine Übereinstimmung gefunden wurde, sendet die Pufferverwaltung 72 den Mehrfachkopie Rahmen und platziert eine Kopie des Rahmenzeigers mit einer Kopieanzahl von "–1" in der Mehrfachkopie Warteschlange 90. Wenn ein Host die Benutzung eines Mehrfachkopie Rahmenzeigers für einen Rahmen abgeschlossen hat, der in der Erweiterungsbus Ausgangswarteschlange 75 oder der Ausgangswarteschlangen 77 (über die PCI-Schnittstelle 26) eingereiht war, schreibt der Host eine Kopie des Rahmenzeigers mit einer Kopieanzahl von "–1" durch ein Rahmenzeigerregister in die Mehrfachkopie Warteschlange. Dieses Register ist eines der in dem Block von Registern 60 in 2 dargestellten Registern.
  • Ähnlich wie bei den Ausgangswarteschlangen 74 ist die Mehrfachkopie Warteschlange 90 mit einem Eingangspfad und einem Ausgangspfad strukturiert. Der Eingangspfad, oder die Schreibseite, erlaubt dem Anschlussvektor FIFO 70 und der Pufferverwaltung, die Rahmenzeiger/Kopieanzahlen in der Mehrfachkopie Warteschlange 90 zu platzieren. Der Ausgangspfad, oder die Leseseite, erlaubt der Mehrfachkopie Warteschlange 90, die Rahmenzeiger/Kopieanzahlen in dem Mehrfachkopie Cachespeicher 96 zu platzieren. Zusätzlicher Speicherplatz für Rahmenzeiger/Kopieanzahlen, der Mehrfachkopiewarteschlange Überlauf 124 genannt, ist in dem externen Speicher 36 zur Verfügung gestellt.
  • Wenn Rahmenzeiger/Kopieanzahlen in eine leere Mehrfachkopie Warteschlange 90 geschrieben werden, passieren sie von der Schreibseite 92 zu der Leseseite 94, bis die Leseseite 94 voll ist. Weitere an die Schreibseite 92 der Mehrfachkopie Warteschlange 90 geschriebene Rahmenzeiger/Kopieanzahlen werden in dem Mehrfachkopiewarteschlange Überlauf 124 in dem externen Speicher 36 platziert. Sobald die Leseseite 94 der Mehrfachkopie Warteschlange 90 und ihr Überlaufbereich 124 voll sind, fangen zusätzliche in der Mehrfachkopie Warteschlange platzierte Rahmenzeiger/Kopieanzahlen an, die Schreibseite 92 zu füllen.
  • Die Ordnung der Rahmenzeiger, welche durch die Mehrfachkopie Warteschlange 90 passieren, wird beibehalten, so dass, wenn Platz in der Leseseite 94 der Mehrfachkopie Warteschlange frei wird, die Rahmenzeiger/Kopieanzahlen von dem Mehrfachkopiewarteschlange Überlauf 124 in die Leseseite 94 der Mehrfachkopie Warteschlange und von der Schreibseite 92 der Mehrfachkopie Warteschlange zu dem Mehrfachkopiewarteschlange Überlauf 124 bewegt werden.
  • Der Mehrfachkopie Cachespeicher 96 ist ähnlich zu der Mehrfachkopie Warteschlange 90, aber stellt ein durchsuchbaren Bereich zum Abtasten von Rahmenzeiger/Kopieanzahlen zur Verfügung. Der Mehrfachkopie Cachespeicher 96 hält bis zu 256 Einträge. Die Pufferverwaltung 72 liest einen Rahmenzeiger von der Mehrfachkopie Warteschlange 90 und platziert ihn entweder in dem Mehrfachkopie Cachespeicher 96 oder bearbeitet ihn, abhängig davon, ob die Kopieanzahl "< 1" oder "–1" ist.
  • Des weiteren plant die Pufferverwaltung 72, jedes Mal, wenn die Pufferverwaltung 72 einen Rahmenzeiger von der Leseseite 78 einer Ausgangswarteschlange 74 liest, den Ablauf der Versendung. Falls das Einfachkopie Bit "0" ist (was einen Mehrfachkopie Rahmen bedeutet), tastet die Pufferverwaltung 72 den Mehrfachkopie Cachespeicher 96 nach einem Rahmenzeiger mit einer Kopieanzahl von "1" ab, was anzeigt, das dies die letzte Versendung dieses Rahmens ist, Falls eine Übereinstimmung da ist, entfernt die Pufferverwaltung 72 den Eintrag und gibt die Puffer während der Absendung des Rahmens an den freien Pufferpool zurück. Falls keine Übereinstimmung da ist, platziert die Pufferverwaltung 72 den Rahmenzeiger mit einer Kopieanzahl von "–1" in der Mehrfachkopie Warteschlange 90 nach der Beendigung der Absendung.
  • Periodisch bedient die Pufferverwaltung 72 die Mehrfachkopie Warteschlange 90 durch Lesen eines Rahmenzeigers/Kopieanzahl und platziert sie in dem Mehrfachkopie Cachespeicher 96 oder verarbeitet sie. Dies geschieht unabhängig von der Absendung des Rahmens. Zwei Fälle folgen, abhängig davon, ob die Pufferverwaltung einen Rahmenzeiger mit einer Kopieanzahl von ">1" oder "–1" liest:
    • 1) Die Pufferverwaltung 72 liest einen Rahmenzeiger mit einer Kopieanzahl von ">1" aus der Mehrfachkopie Warteschlange 90. Angenommen es ist Platz in dem Mehrfachkopie Cachespeicher 96, schreibt sie einen neuen Eintrag. Falls die Mehrfachkopie Cachespeicher 96 voll ist, muss die Pufferverwaltung 72 Platz in dem Mehrfachkopie Cachespeicher 96 frei machen. Dies geschieht durch Lesen eines der älteren Rahmenzeiger/Kopieanzahlen aus dem Mehrfachkopie Cachespeicher 96, aktualisieren des Pufferkopfes des Rahmenzeigers in dem externen Speicher 36 mit der Kopieanzahl in dem Mehrfachkopie Cachespeicher 96, dann löschen dieses Eintrags des Cachespeichers. Sobald dort Platz ist, wird der neue Rahmenzeiger/Kopieanzahl in den Mehrfachkopie Cachespeicher 96 geschrieben.
    • 2) Die Pufferverwaltung 72 liest einen Rahmenzeiger mit einer Kopieanzahl von "–1" aus der Mehrfachkopie Warteschlange 90. Die Pufferverwaltung 72 durchsucht den Mehrfachkopie Cachespeicher 96 nach einem übereinstimmenden Rahmenzeiger mit einer Kopieanzahl ">=1". Zwei Fälle folgen, abhängig davon, ob die Pufferverwaltung 72 einen Rahmenzeiger in dem Mehrfachkopie Cachespeicher 96 findet, der überein stimmt:
    • a) Die Pufferverwaltung 72 findet eine Übereinstimmung des Rahmenzeigers. Falls die Kopieanzahl des Eintrags des Mehrfachkopie Cachespeichers 96 "1" ist, löscht die Pufferverwaltung 72 den Eintrag des Mehrfachkopie Cachespeicher und platziert den Rahmenzeiger in der Rückforderungswarteschlange 98. Falls die Kopieanzahl des Eintrags des Cachespeichers ">1" ist, zählt die Pufferverwaltung 72 die Kopieanzahl um "1" runter.
    • b) Die Pufferverwaltung 72 findet keine Übereinstimmung des Rahmenzeigers. Dies bedeutet, dass der überein stimmende Rahmenzeiger zuvor zu dem Kopf des Puffers der verknüpft gelisteten Kette des Rahmens in dem externen Speicher 36 bewegt worden ist. Die Pufferverwaltung 72 muss zu dem Kopf des Puffers gehen und die Kopieanzahl auslesen. Falls dieser Wert (in dem Speicher) "1" ist, wird der Rahmen nicht länger benötigt und die Pufferverwaltung 72 platziert den Rahmenzeiger in der Rückforderungswarteschlange 98. Falls dieser Wert (in dem Speicher) ">1" ist, platziert die Pufferverwaltung 72 eine Kopie des Rahmenzeigers/Kopieanzahl (der in dem externen Speicher 36 war) in dem Mehrfachkopie Cachespeicher 96 und zählt die Kopieanzahl um "1" runter. Falls der Mehrfachkopie Cachespeicher 96 voll ist, macht die Puf ferverwaltung Platz durch Bewegen einer der älteren Rahmenzeiger/Kopieanzahlen in den externen Speicher 36.
  • Die Rückforderungswarteschlange 98 hält die Rahmenzeiger zu den verknüpft gelisteten Ketten, die nicht länger benötigt werden. Die Pufferverwaltung 72 schreibt einen Rahmenzeiger an die Rückforderungswarteschlange, wenn sie den Mehrfachkopie Cachespeicher bedient und entdeckt, dass die Kopieanzahl eines Rahmenzeigers "1" ist (das heißt die letzte Absendung des Rahmens ist erfolgreich abgeschlossen). Des weiteren schreibt der Anschlussvektor FIFO 70 unter den folgenden Bedingungen Rahmenzeiger an die Rückforderungswarteschlange 98: 1) der Anschlussvektor eines Rahmenzeigers ist voll oder 2) der Rahmenzeiger konnte nicht in eine Warteschlange eingereiht werden, weil alle der Ausgangswarteschlangen des Weiterleitungsvektors voll sind. Schließlich schreibt der Host einen Rahmenzeiger an die Rückforderungswarteschlange 98 (unter Benutzung des Rahmenzeigerregisters), wenn er die Benutzung eines Einfachkopie Rahmens abgeschlossen hat, der in die Erweiterungsbus Ausgangswarteschlange 77 oder die Verwaltungsanschluss Warteschlange 75 eingereiht war.
  • Wenn die Pufferverwaltung 72 die Einträge der Rückforderungswarteschlange bearbeitet, lässt die verknüpft gelistete Kette eines Rahmenzeigers laufen, um jeden Puffer zu dem freien Pufferpool 104 zurück zu geben. Die interne Struktur dieser Rückforderungswarteschlangenstruktur ist nicht dargestellt, enthält aber in dem beispielhaften Ausführungsbeispiel der Erfindung lediglich die Rahmenzeiger (14 Bits). Die Schreibseite 100 der Rückforderungswarteschlange hält 64 Einträge und die Leseseite 102 der Rückforderungswarteschlange hält 16 Einträge.
  • Ähnlich wie die Ausgangswarteschlangen 74 ist die Rückforderungswarteschlange 98 mit einem Eingangspfad und einem Ausgangspfad strukturiert. Der Eingangspfad, oder die Schreibseite 100, erlaubt der Pufferverwaltung 72, die Rahmenzeiger in der Rückforderungswarteschlange 98 zu platzieren. Der Ausgangspfad, oder die Leseseite 102, erlaubt der Pufferverwaltung 72, einen Rahmenzeiger zu lesen und all dazu gehörigen Puffer in den freien Pufferpool 104 zurück zu geben. Zusätzlicher Speicherplatz für Rahmenzeiger wird in dem Rückforderungswarteschlange Überlaufbereich 122, der in dem externen Speicher 36 vorgesehen ist, zur Verfügung gestellt.
  • Wenn Rahmenzeiger in eine leere Rückforderungswarteschlange 98 geschrieben werden, passieren sie von der Schreibseite 100 zu der Leseseite 102, bis die Leseseite 102 voll ist. Weitere in die Schreibseite 100 der Rückforderungswarteschlange 98 geschrieben Rahmenzeiger werden in dem Rückforderungswarteschlange Überlaufbereich 122 in dem externen Speicher 36 platziert. Sobald die Leseseite 102 und der Überlaufbereich 122 der Rückforderungswarteschlange 98 voll sind, fangen weitere in der Rückforderungswarteschlange 98 platzierte Rahmenzeiger an, die Schreibseite 100 zu füllen.
  • 11 stellt ein beispielhaftes Ausführungsbeispiel der internen Struktur des freien Pufferpools 104 dar. Der freien Pufferpool 104 ist ein FIFO, der Adresszähler auf alle freien Puffer 140 in dem externen Speicher 36 enthält. Wenn Rahmen empfangen werden, liest die Pufferverwaltung 72 die zur Verfügung stehenden Adresszeiger aus dem freien Pufferpool 104 aus, um eingehende Daten zu speichern. Die Pufferverwaltung 72 weist auch Adresszeiger aus dem freien Pufferpool 104 an den Host Prozessor 28 zu (wenn angefordert). Der Host kann Rahmenzeiger anfordern oder an den freien Pufferpool 104 zurück geben, indem ein freier Pufferpool Register unter den Registern 60 im direkten Eingangs/Ausgangsraum gelesen oder geschrieben wird. Die Schreibseite 106 und die Leseseite 108 des freien Pufferpools 104 halten in einem beispielhaften Ausführungsbeispiel dieser Erfindung jeweils 64 Einträge.
  • Der freie Pufferpool 104 ist mit einem Eingangspfad und einem Ausgangspfad strukturiert (ähnlich wie die Ausgangswarteschlangen 74). Der Eingangspfad, oder die Schreibseite 106, erlaubt der Pufferverwaltung 72 oder dem Host 28, die Adresszeiger in dem freien Pufferpool 104 zu platzieren. Der Ausgangs pfad, oder die Leseseite 108 des freien Pufferpools 104 erlaubt der Pufferverwaltung 72, dem Host 28 Adresszeiger zur Verfügung zu stellen, oder Adresszeiger aus dem Pool 104 zu ziehen, um Empfangsrahmendaten zu speichern. Zusätzlichen Speicherplatz für zur Verfügung stehende Adresszeiger, der freier Pufferpool Überlaufbereich 120, wird wie zuvor beschrieben, in dem externen Speicher 36 zur Verfügung gestellt.
  • Nach dem Einschalten des Switches 12 erzeugt der freien Pufferpool Adresszeiger aus der Leseseite 108. Mit ankommenden Rahmen, wird die freie Liste in dem freien Pufferpool 104 gelesen. Falls nicht ausreichend Pufferzeiger in der Schreibseite 106 vorhanden sind, um die Anforderungen des Verkehrs zu behandeln, wird auf den Überlaufbereich 120 zugegriffen, um mehr Pufferzeiger zu erhalten.
  • Gewisse Ausführungsbeispiele der vorliegenden Erfindung stellen eine vorteilhafte Anordnung und ein Verfahren zum Bereitstellen von Pufferzeigern auf das Einschalten des Switches 12 zur Verfügung. Wenn der Switch 12 zuerst hochfährt, ist es für den Überlaufbereich 120 in dem externen Speicher 36 nicht erforderlich, Pufferzeiger zu enthalten. Stattdessen werden die Pufferzeiger im Betrieb erzeugt. Der Switch 12 könnte bei dem Hochfahren die Pufferzeiger erzeugen und in dem Überlaufbereich 120 platzieren, aber es könnten 16.000 oder 32.000 derartiger Zeiger sein, und dies würde die Prozedur des Hochfahrens des Switches 12 verlangsamen. Die vorliegende Erfindung nimmt Vorteil aus der Tatsache, dass bei dem Einschalten alle der Puffer frei sind und die Identitäten aller dieser Puffer bekannt sind. Daher werden die Pufferzeiger nach dem Hochfahren erzeugt, wie sie benötigt werden, unter Benutzung eines Zählers 180, wie in 10 dargestellt.
  • Der freie Liste Zählererzeuger 180 ist mit dem Eingang eines Multiplexers 182 verbunden. Da die freie Liste in dem freien Pufferpool 104 bei dem Hochfahren leer ist, erzeugt der freie Liste Zählererzeuger 180 die Pufferzeiger. So bald die freie Liste den höchsten Zähler erreicht, wird er keine Pufferzeiger mehr erzeugen.
  • Wenn ein Rahmenpaket in dem Switch 12 empfangen wird, wird das Paket in Puffer mit fester Länge aufgebrochen. Typischerweise variieren die Rahmen in der Größe. Die Puffer sind 256 Byte in der Größe und der Datenbereich der Puffer ist Ladeeinheit 240 Byte. Folgend auf die Absendung der Inhalte in einem Puffer werden die Pufferzeiger in die Rückforderungswarteschlange 98 oder, falls die Pufferkette laufen gelassen werden kann, direkt in die freie Liste des freien Pufferpools 104 gesetzt. Während des Betriebs des Switches 12 passiert jeder von dem freien Pufferpool 104 zurück gegebene Adresszeiger von der Schreibseite 106 zu der Leseseite 108. Falls die Leseseite 108 voll wird, werden zusätzliche Adresszeiger an den Überlaufbereich 120 weiter gegeben. Sobald die Leseseite 108 und der Überlaufbereich 120 voll sind, fangen weitere, in dem freien Pufferpool 104 platzierte Adresszeiger an, die Schreibseite 106 des freien Pufferpools 104 wieder zu füllen.
  • 13 stellt eine schematische Darstellung der internen Anordnung des Mehrfachkopie Cachespeichers 96 in Übereinstimmung mit einem Ausführungsbeispiel der vorliegenden Erfindung dar. Wie vorher kurz diskutiert wird die zeitliche Reihenfolge der Einträge in dem Mehrfachkopie Cachespeicher 96 beibehalten. Bei der vorliegenden Erfindung geschieht diese Beibehaltung der zeitlichen Ordnung nicht durch Zeitstempeln wie in dem Stand der Technik, sondern durch die physikalische Reihenfolge in dem Speicher. Der Mehrfachkopie Cachespeicher 96 der vorliegenden Erfindung vermeidet auch die Verwendung von Gültig Bits und kodiert stattdessen die Gültigkeit, wie diskutiert werden wird.
  • Bezug nehmend auf 13 ist der Mehrfachkopie Cachespeicher 96 als vier Weg Satz assoziativer Speicher konfiguriert. Ein Eintrag in dem Mehrfachkopie Cachespeicher 96 enthält wie zuvor beschrieben einen Rahmenzeiger und sein Kopieanzahl. Die niedrigsten sechs Bit des Rahmenzeigers bestimmen die Zei- le in dem Satz assoziativen Cachespeicher 96, in dem der Eintrag gespeichert wird. In dem dargestellten Ausführungsbeispiel der Erfindung sind vierundsechzig Zeilen in dem Cachespeicher 96, obwohl andere Anzahlen von Zeilen nicht begrenzt sind, solange die Größe des Cachespeichers größer gemacht wird.
  • Der Satz assoziativer Cachespeicher 96 ist in vier Spalten unterteilt, von denen jede parallel durchsucht werden kann. Wenn die Pufferverwaltung 72 einen Eintrag in dem Cachespeicher 96 speichert, tritt der Eintrag immer in die erste Spalte ein, die obersten (51 : 39) Bits der Zeile werden von den sechs niedrigstwertigen Bits des Rahmenzeiger angezeigt. Die Zeile wird gelesen, alle der Einträge werden um 13 Bits nach rechts geschoben und die Zeile wird zurück geschrieben. Der Eintrag, der tatsächlich in den Cachespeicher 96 geschrieben wird, enthält die oberen acht Bits des Rahmenzeigers, die eine Adressmarkierung bilden, und die fünf Bit Kopieanzahl, die zu dem Rahmenzeiger gehört. Wenn der Eintrag aus dem Cachespeicher 96 ausgelesen wird, wird der Rahmenzeiger mit der Adressmarkierung und den Bits neu gebildet, welche die Zahl der Zeile des Cachespeichers 96 indizieren.
  • Der älteste Eintrag in dem Cachespeicher 96 wird aus dem Cachespeicher 96 entfernt, wenn die Zeile voll ist und ein neuer Eintrag in die Zeile geschrieben wird. Wie zuvor im Hinblick auf die Köpfe des Puffers 142 beschrieben, wird die Kopieanzahl, die zu dem Rahmenzeiger gehört, der entfernt wird, in den Kopf des Puffers 142 des Rahmens in dem externen Speicher geschrieben, auf den von dem entfernten Rahmenzeiger gezeigt wurde. Daher dienen die in dem externen Speicher 36 gespeicherten Rahmen (das heißt die Puffer 140) als ein Überlaufbereich für den Cachespeicher 96, um Kopieanzahlen zu speichern.
  • Einer der Vorteile der vorliegenden Erfindung ist, dass in dem Satz assoziativen Cachespeicher 96 kein separates Gültig Bit ist. Wenn die Kopieanzahl 000 ist, dann weiß die Pufferverwaltung 72, dass der Eintrag nicht länger gültig ist und entfernt den Eintrag aus dem Cachespeicher 96. Dies vereinfacht die Organisation des Cachespeichers. Ein weiterer Vorteil des Cachespeichers 96 der vorliegenden Erfindung ist, dass er die Durchführung einer sehr schnellen Suche erlaubt, weil die Pufferverwaltung 72 nur eine einzelne Zeile untersuchen muss, die bereits von dem Rahmenzeiger bestimmt, der die Mehrfachkopie Warteschlange 90 verlassen hat. Die vier Einträge in der Zeile werden parallel untersucht, was die Geschwindigkeit der Sucher weiter erhöht. Obwohl als ein vier Weg Satz assoziativer Speicher beschrieben, ist dies lediglich beispielhaft, da der Speicher n Weg Satz assoziativ sein kann ohne von dem Umfang der Erfindung abzuweichen.
  • Aus der obigen Beschreibung sollte verstanden werden, dass die vorliegende Erfindung eine zeitliche Ordnung (Alter) der Einträge des Cachespeichers durch eine physikalische Positionierung der Einträge in dem Cachespeicher auf einer zeilenbasierten Basis beibehält. Anders ausgedrückt ist die physikalische Position eines Eintrags in dem Cachespeicher ein Hinweis auf das relative Alter des Eintrags. Das Altern eines Eintrags wird durchgeführt durch ein physikalisches Umordnen der Einträge in dem Speicher.
  • Gewisse Ausführungsbeispiele der vorliegenden Erfindung stellen eine Anpassung der Latenz der Rahmen, die von dem Switch 12 geschaltet werden, auf Basis Anschluss für Anschluss zur Verfügung. Bezug nehmend auf Figur Netzwerkstationen 14 untersucht der Anschlussvektor FIFO 70 den programmierten Schaltmodus des Empfangsanschlusses, um festzustellen, wann der Rahmenzeiger und dazu gehörige Information in der geeigneten Ausgangswarteschlange 74 des Sendeanschlusses zu platzieren sind. Für einen ersten Modus (niedrig Latenz Modus) hat der Anschlussvektor FIFO 70 keine Beschränkungen, wann der Rahmenzeiger in die Ausgangswarteschlange(n) 74 zu platzieren ist. Für einen zweiten Modus (mittel Latenz Modus) platziert der Anschlussvektor FIFO 70 den Rahmenzeiger nur in die Ausgangswarteschlange(n) 74, nachdem 64 Bytes des Rahmens empfangen worden sind. Für einen dritten Modus (hoch Latenz Modus) platziert der Anschlussvektor FIFO 70 den Rahmenzeiger nur in die Ausgangswarteschlange(n) 74, nachdem der Rahmen vollständig empfangen worden ist.
  • Es gibt einige spezielle Fälle, die den zeitlichen Ablauf ändern, wenn der Anschlussvektor FIFO 70 die Rahmenzeiger an die Ausgangswarteschlangen 74 weiterleiten: 1) weiterleiten von Rahmen von einem ersten oder zweiten Modus 10 Mb/s Anschluss zu einem 100 Mb/s Anschluss; 2) weiterleiten von Rahmen an den Verwaltungsanschluss 30 und 3) weiterleiten von Rahmen an den Anschluss für den Erweiterungsbus. Bei dem Fall 1) zwingt die fehlende Übereinstimmung des 10 Mb/s Anschlusses zu dem 100 Mb/s Anschluss den Modus der Weiterleitung, der dritte, hoch Latenz Modus zu sein. Für den Fall 2) sind alle an den Verwaltungsanschluss weiter geleiteten Rahmen im dritten Modus. Im Fall 3) verwendet jegliche Weiterleitung von Rahmen an den Anschluss für den Erweiterungsbus den Schaltungsmodus des Anschlusses für den Erweiterungsbus 26. Wenn ein Mehrfachkopie Anschlussvektor einen der Anschlüsse der speziellen Fälle enthält, wird die Einreihung der Rahmenzeiger in die Warteschlange für den gesamten Anschlussvektor diejenige des Schaltmodus mit der längsten in dem Anschlussvektor repräsentierten Latenz. Zum Beispiel ist, falls ein Rahmen von einem Anschluss im ersten oder zweiten Modus empfangen wird, aber sein Mehrfachkopie Weiterleitung Anschlussvektor den Verwaltungsanschluss 30 enthält, ist der Schaltmodus der dritte Modus. In dieser Situation wird eine Kopie des Rahmenzeigers nur in allen der Ausgangswarteschlangen 74 platziert, nachdem der Rahmen vollständig empfangen worden ist.
  • Die Schaltmodi werden nun detaillierter beschrieben werden. Der Schaltmodus, der auf den Eingangs (das heißt Empfangs) Anschluss zutrifft bestimmt die Latenz der Weiterleitung (wie schnell der Switch 12 einen Rahmen weiterleitet, sobald er anfängt, den Rahmen zu empfangen) und die Fähigkeit, die Fragment/Fehlerausbreitung an Ausgangsanschlüsse zu reduzieren. Der zweite, mittel Latenz Modus ist der Vorgabemodus für jeden Anschluss; jedoch die der Schaltmodus auf einer pro Anschluss Basis in den Registern 60 programmierbar.
  • In allen der drei Modi werden an dem Empfangs FIFO 52 des internen MAC Anschlusses empfangene Rahmendaten zu einem Puffer 140 in dem externen Speicher 52 so schnell wie möglich weiter geleitet. Zu etwa der gleichen Zeit empfängt der Regelüberprüfer 42 oder 58 die Zieladresse und die Quelladresse, die Nummer des Empfangsanschlusses, die Rahmenzeiger und einige zusätzliche Information, führt dann das entsprechende Nachschlagen durch. Sobald das Nachschlagen abgeschlossen ist, gibt der Regelüberprüfer 42 oder 58 die Rahmenzeiger und den Weiterleitung Anschlussvektor an den Anschlussvektor FIFO 70 zurück.
  • Der Anschlussvektor FIFO 70 platziert den Rahmenzeiger in der Schreibseite 76 der Ausgangswarteschlangen 74 für den/die in dem Anschlussvektor identifizierten Ausgangsanschlüsse. Der Schaltmodus des Empfangsanschlusses definiert die Latenz zwischen wann der Anschlussvektor FIFO 70 den Anschlussvektor empfängt (und dem Rahmenzeiger) und platziert den Rahmenzeiger in den Ausgangswarteschlange(n) 74. Dies wird folgend für die drei Modi beschrieben. Sobald der Rahmenzeiger zu der Leseseite 78 der Ausgangswarteschlangen 74 wechselt, liest die Pufferverwaltung 72 den Rahmenzeiger und plant den Ablauf der Absendung. Die Pufferverwaltung 72 fängt an, die Rahmendaten von der durch den Rahmenzeiger angegebenen Adresse zu bewegen. Sobald der Sende FIFO 54 des MAC Anschlusses an seinen Startpunkt vorbereitet ist (und angenommen das Medium steht für die Absendung von Daten zur Verfügung) fängt die Absendung des Rahmens an.
  • Der erste Modus ist vorgesehen, um die niedrigste Latenz zur Verfügung zu stellen. Rahmen werden mit einer Geschwindigkeit auf Basis der Zeilenrate empfangen. In diesem ersten Modus gibt es keine Schutz vor Netzwerkfehlern, weil ein Rahmen für die Versendung in die Warteschlange eingereiht wird, bevor bestimmt werden kann, ob der Rahmen ein Fragment ist (das heißt < 64 Byte in der Länge) oder einen CRC-Fehler hat. In dem ersten Modus könnte der Empfang des Rahmens noch nicht abgeschlossen sein, bevor die Absendung des Rahmens an dem/den Ausgangsanschlüssen anfängt. Falls ein Empfangsrahmen in einem runt oder mit einem ungültigen CRC endet, markiert das Empfangs MAC den Kopf des Puffers 142 in dem externen Speicher externen Speicher 36, um diese Bedingungen anzuzeigen. Das Sende MAC garantiert, dass, wenn die Absendung mit einem Rahmen anfängt, der später als ein runt oder mit einem ungültigen CRC endet, das MAC einen schlechten CRC erzeugen wird. Falls das Sende MAC die Absendung eines Rahmens nicht gestartet hat und der Kopf des Puffers 142 anzeigt, dass der Rahmen in einem runt oder mit einem ungültigen CRC endet, wird die Pufferverwaltung 72 den Rahmen nicht an den Ausgangsanschluss weiter leiten.
  • Der zweite Modus stellt eine niedrige Latenz zum Weiterleiten von Rahmen und einigen Schutz vor Netzwerkfehlern bereit. Rahmen werden empfangen und weiter geleitet, nachdem vierundsechzig oder mehr Bytes empfangen worden sind. Dies erlaubt dem Switch 12, Fragmente von Rahmen zu filtern (das heißt nicht weiter zu leiten): jedoch filtert er CRC Fehler Rahmen nicht vollständig, die größer sind als vierundsechzig Byte.
  • In dem zweiten Modus werden Rahmenzeiger für Rahmen, welche die vierundsechzig Byte Schwelle an dem Empfangs MAC schaffen, in die entsprechenden Ausgangswarteschlange(n) 74 eingereiht. Rahmen, die es nicht schaffen, die minimale Schwelle vierundsechzig Byte zu erreichen, werden gelöscht und ihre Rahmenzeiger werden nicht in den Ausgangswarteschlange(n) 74 platziert. Falls ein Empfangsrahmen größer oder gleich vierundsechzig Byte mit einem ungültigen CRC endet, markiert das MAC den Kopf des Puffers 142 in dem externen Speicher 36, um diese Bedingung anzuzeigen. Falls die Absendung mit einem Rahmen größer oder gleich vierundsechzig Byte begonnen hat, der später mit einem ungültigen CRC endet, wird das Sende MAC die Absendung mit einem schlechten CRC abschließen. Falls das Sende MAC die Absendung eines Rahmens nicht gestartet hat und der Kopf des Puffers 142 anzeigt, dass der Rahmen (größer oder gleich vierundsechzig Byte) in einem ungültigen CRC endete, gibt die Pufferverwaltung 72 den Rahmenzeiger an die Rückforderungswarteschlange 98 (für eine Einfachkopie Weiterleitung) oder an die Mehrfachkopie Warteschlange 96 (für eine Mehrfachkopie Weiterleitung) ohne Weiterleitung an den/die Ausgangsanschlüsse 74 zurück.
  • Der dritte Modus ist ein Speicher und Weiterleitung Modus, der den höchsten Level an Schutz vor Netzwerkfehlern unter den drei Modi zur Verfügung stellt, aber eine höhere Latenz bei der Weiterleitung hat. Rahmen werden vollständig empfangen, bevor der Switch 12 sie an die Ausgangsanschlüsse weiter leitet. In diesem Modus filtert der Switch 12 alle Fragmente und CRC-Fehler Rahmen vor der Weiterleitung aus. In dem dritten Modus wird, sobald ein gültiger Rahmen erfolgreich an dem Empfänger abschließt (das heißt größer oder gleich vierundsechzig Byte mit einem gültigen CRC); der Rahmenzeiger in die entsprechende Ausgangswarteschlange(n) 74 eingereiht. Rahmen, die in einem Empfangsfehler (ungültiger CRC, runt (> 64 Byte) usw.) abschließen, werden gelöscht und ihre Rahmenzeiger werden nicht in die Ausgangswarteschlange(n) 74 platziert.
  • Der Anschlussvektor FIFO 70 trifft die Entscheidung, den Anschlussvektor in die Ausgangswarteschlange 74 zu setzen in Abhängigkeit von dem ausgewählten Modus des Empfangsanschlusses und dem Betrag an Daten, der empfangen worden ist. In dem oben beschriebenen Ausführungsbeispiel sind drei Schwellen vorhanden, obwohl in anderen Ausführungsbeispielen unterschiedliche Anzahlen von Schwellen vorhanden sind. In dem beispielhaften Ausführungsbeispiel sind diese Schwellen: 1) empfangen von n Byte (zum Beispiel 6 Byte), wobei n < 64 Byte; 2) empfangen von 64 Byte und 3) empfangen des kompletten Rahmens.
  • Die vorliegende Erfindung leitet Rahmen basierend auf den Schwellen an die Ausgangswarteschlangen 74 weiter. Der Anschlussvektor FIFO 70 ordnet die Reihenfolge der Absendung basierend auf dem Betrag des Typs an empfangenen Daten und dem Modus, in dem der Anschluss programmiert ist, um. Obwohl das beispielhafte Ausführungsbeispiel Entscheidungen über die Weiterleitung basierend auf dem Betrag der empfangenen Daten trifft, treffen andere Ausführungsbeispiele der Erfindung Entscheidungen über die Weiterleitung basierend auf anderen Faktoren, wie dem Typ der empfangenen Daten.
  • Bei der Implementierung des Weiterleitungsschemas der vorliegenden Erfindung unterhält die Pufferverwaltung 72 eine Tabelle 160 in einem Cachespeicher (CAM) 161, der einen Rahmenzeiger mit einem Empfangsanschluss verbindet. Jedes Mal wenn der Anschlussvektor FIFO 70 einen neuen Anschlussvektor und Rahmenzeiger von dem Regelüberprüfer 42 oder 58 empfängt, trifft er eine Verbindung, um festzustellen, ob der Empfangsanschluss den Empfang eines Rahmens abgeschlossen hat und falls nicht, wie viel von dem Rahmen bereits empfangen worden ist. Der Anschlussvektor FIFO 70 empfängt keinerlei Information hinsichtlich der Identität des Empfangsanschlusses von dem Regelüberprüfer 42 oder 58. Die einzige Information, die der Anschlussvektor empfängt, die irgendeine Identifikation des Anschlusses zur Verfügung stellt, sind die Rahmenzeiger.
  • Der Anschlussvektor FIFO 70 fragt die Adresstabelle 160 mit dem Rahmenzeiger ab. Entweder gibt die Adresstabelle den Empfangsanschluss zurück, wenn der Rahmen noch empfangen wird, oder die Adresstabelle kann den Rahmenzeiger nicht finden, was bedeutet, dass der Rahmen bereits empfangen worden ist. Sobald er Rahmen vollständig empfangen worden ist, wird der Rahmenzeiger aus der Adresstabelle 160 bewegt. Dies bedeutet, dass die dritte Schwelle (der Rahmen ist vollständig) getroffen ist. Entsprechend kann der Rahmenzeiger unmittelbar in die Ausgangswarteschlange 74 geschoben werden.
  • Falls die Adresstabelle 160 den Empfangsanschluss zurück gibt, stellt der Anschlussvektor FIFO 70 den Rahmenzeiger und die dazu gehörige Information in einen Haltebereich 162 und fängt an, zwei Signale von diesem Empfangsanschluss zu überwachen. Diese zwei Signale markieren eines von drei Ereignissen mit einem Flag. Das erste Ereignis wird mit einem Flag versehen, wenn der Anschluss n Byte empfängt. Zu diesem Punkt, startet, wenn dieser Anschluss in dem ersten Modus ist, der Anschlussvektor FIFO 70 die Verarbeitung des Rahmenzeigers durch Absendung desselben an die entsprechende Ausgangswarteschlange 74. Falls der Empfangsanschluss nicht in dem ersten Modus ist, wartet der Anschlussvektor FIFO 70 bis er ein Signal empfängt, welches das Auftreten eines zweiten Ereignisses anzeigt. Falls dieser Anschluss in dem zweiten Modus ist, lässt dann der Anschlussvektor FIFO 70 den Rahmenzeiger aus dem Haltebereich 162 frei, um in die entsprechende Ausgangswarteschlange 74 einzutreten. Wenn schließlich der Empfangsanschluss in dem dritten Modus ist, dann erwartet der Anschlussvektor FIFO 70 den Empfang des Flags, das anzeigt, dass der Rahmen vollständig ist. Jeder Empfangsanschluss (Bezugszeichen 164 in 14) unterhält dieses Flag und stellt diese Information dem Anschlussvektor FIFO 70 zur Verfügung. Es ist dem Anschlussvektor FIFO 70 überlassen, den Anschluss zu bestimmen, der mit dem Rahmenzeiger verbunden ist. Der Anschlussvektor FIFO 70 behält die Information, die den Modus identifiziert, in dem sich jeder Anschluss befindet. Zusammengefasst fragt der Anschlussvektor FIFO 70 auf den Empfang eines Rahmenzeigers zuerst die Adresstabelle der Pufferverwaltung 72 ab, um den Empfangsanschluss zu bestimmen, bestimmt den Modus für diesen Empfangsanschluss und überwacht dann die Flags von diesem Empfangsanschluss und gibt den Rahmenzeiger in Übereinstimmung mit dem Modus und den Flags frei.
  • Die Struktur der Warteschlange der vorliegenden Erfindung ist als ein Beispiel beschrieben worden als in einen Switch mit mehreren Anschlüssen eingearbeitet. Jedoch ist die Architektur der Warteschlange und das Verfahren der vorliegenden Erfindung auch auf andere Typen von Technologien anwendbar, wie dem Fachmann schnell offenbar werden wird. Zum Beispiel kann die Architektur der Warteschlange in Mikroprozessoren oder anderen digitalen Prozesso ren verwendet werden, die auf dem Chip befindliche Warteschlangen haben. Die Erfindung ist daher nicht auf Switches mit mehreren Anschlüssen, wie die oben beschriebenen, beschränkt.
  • Obwohl die vorliegende Erfindung detailliert beschrieben und dargestellt worden ist, ist klar zu verstehen, dass dies nur im Weg der Darstellung und als Beispiel ist und nicht als Beschränkung anzusehen ist, der Umfang der Erfindung wird nur von den Ausdrücken der angefügten Ansprüche begrenzt.

Claims (14)

  1. Unterteilte Warteschlange (190) zum Einreihen und zum Priorisieren von Einträgen, mit: einer Warteschlangen-Schreibseite (192), die einen Eingang der unterteilten Warteschlange bildet, an dem Einträge in die unterteilte Warteschlange empfangen und eingereiht werden, wobei jeder eingereihte Eintrag eine Prioritätsebene hat und die Warteschlangen-Schreibseite einen Ausgang aufweist, an dem die eingereihten Einträge, die die Warteschlangen-Schreibseite verlassen, ausgegeben werden; mehreren Warteschlangen-Leseseiten (194an), von denen jede einen mit dem Ausgang der Warteschlangen-Schreibseite verbundenen Eingang und einen Ausgang aufweist, wobei die mehreren Warteschlangen-Leseseiten einen Ausgang der unterteilten Warteschlange bilden, an dem Einträge von der Warteschlangen-Schreibseite empfangen, eingereiht und von den Ausgängen der Warteschlangen-Leseseiten ausgegeben werden, wobei die mehreren Warteschlangen-Leseseiten unterschiedliche Warteschlangen-Prioritätsebenen von einer Warteschlangen-Leseseite mit höchster Priorität zu einer Warteschlangen-Leseseite mit niedrigster Priorität aufweisen; und einer Steuerlogik (196) zum Prüfen der Einträge in die Warteschlangen-Schreibseite, Feststellen der Prioritätsebene der Einträge und Leiten der Einträge von dem Ausgang der Warteschlangen-Schreibseite zu dem Eingang einer der Warteschlangen-Leseseiten auf der Basis der Prioritätsebenen der Einträge.
  2. Warteschlange nach Anspruch 1, bei der eine Anzahl von Prioritätsebenen der Einträge der Anzahl von Warteschlangen-Leseseiten mit unterschiedlichen Prioritätsebenen gleich ist.
  3. Warteschlange nach Anspruch 2, bei der jeder Eintrag Prioritätsbits aufweist, in die die Priorität dieses Eintrags einkodiert ist, wobei die Steuerlogik zum Prüfen der Prioritätsbits jedes Eintrags in die Warteschlange vorgesehen ist.
  4. Warteschlange nach Anspruch 3, bei der die Warteschlangen-Schreibseite mindestens die doppelte Wartschlangenkapazität jeder einzelnen War- teschlangen-Leseseite aufweist.
  5. Warteschlange nach Anspruch 4, bei der die Warteschlangenkapazität der Warteschlangen-Leseseite mit der höchsten Priorität kleiner ist als die Warteschlangenkapazität der Warteschlangen-Leseseite mit der niedrigsten Priorität.
  6. Warteschlange nach Anspruch 5, bei der die Ausgangs-Warteschlangen-Leseseiten zum Ermöglichen der Detektierung des Vorhandenseins von Einträgen in den Ausgangs-Warteschlangen-Leseseiten und zum Steuern des Leerens der einzelnen Ausgangs-Warteschlangen-Leseseiten derart vorgesehen sind, dass die Ausgangs-Warteschlangen-Leseseiten in der Reihenfolge von der Ausgangs-Warteschlangen-Leseseite mit der höchsten Priorität zu der Ausgangs-Warteschlangen-Leseseite mit der niedrigsten Priorität geleert werden, so dass eine Ausgangs-Warteschlangen-Leseseite mit höherer Priorität vor dem Ausgeben von in einer Warteschlangen-Leseseite mit niedrigerer Priorität befindlichen Einträgen keine eingereihten Einträge aufweist.
  7. Warteschlange nach Anspruch 6, ferner mit einem Überlaufbereich (110) zum Speichern der Einträge, der zum Empfangen der Einträge von der Warteschlangen-Schreibseite und Rücksenden der Einträge an eine der Warteschlangen-Leseseiten vorgesehen ist.
  8. Warteschlange nach Anspruch 7, bei der die Steuerlogik zum Leiten von Einträgen mit einer Prioritätsebene unter einer ersten spezifischen Prioritätsebene von der Warteschlangen-Schreibseite zu dem Überlaufbereich vorgesehen ist, wenn die Warteschlangen-Leseseiten mit Prioritätsebenen, die mit den Prioritätsebenen der Einträge übereinstimmen, keine Warteschlangenkapazität zur Verfügung haben, und zum Leiten von Einträgen von dem Überlaufbereich zu den Warteschlangen-Leseseiten mit übereinstimmenden Prioritätsebenen vorgesehen ist, wenn die Warteschlangen-Leseseiten mit übereinstimmenden Prioritätsebenen wieder Warteschlangen-Kapazität zur Verfügung haben.
  9. Warteschlange nach Anspruch 8, bei der die Steuerlogik ferner zum Löschen von Einträgen aus der Ausgangs-Warteschlangen-Schreibseite mit einer Prioritätsebene über einer zweiten spezifischen Prioritätsebene vorgesehen ist, wenn die Warteschlangen-Leseseiten mit Prioritätsebenen, die mit den Prioritätsebenen der Einträge übereinstimmen, keine Warteschlangenkapazität zur Verfügung haben.
  10. Unterteilte Warteschlange nach Anspruch 1, bei der die unterteilte Warteschlange Teil eines Mehrport-Netzwerkschalters (12) für ein paketgeschaltetes Netz ist, der mehrere Ports (50) aufweist, durch die von dem Netz kommende Pakete empfangen werden und von denen für das Netz bestimmte Pakete gesendet werden, wobei jeder Port eine entsprechende Warteschlange aufweist, wobei mindestens eine der Warteschlangen eine unterteilte Warteschlange ist.
  11. Verfahren zum Einreihen von Einträgen in eine Warteschlange und Priorisieren von Einträgen, mit folgenden Schritten: Empfangen von Einträgen und Einreihen von für eine unterteilte Warteschlange (190) bestimmte Einträge in eine Warteschlangen-Schreibseite (192), die einen Eingang der unterteilten Warteschlange bildet; Feststellen einer Prioritätsebene der Einträge in der Warteschlangen-Schreibseite; und Leiten von Einträgen, die die Warteschlangen-Schreibseite verlassen, zu dem Eingang einer von mehreren Warteschlangen-Leseseiten (194a–n) derjenigen Warteschlange, in die die Einträge eingereiht sind, und zwar auf der Basis der festgestellten Prioritätsebene der Einträge, wobei die Warteschlangen-Leseseiten unterschiedliche Prioritätsebenen von einer Warteschlangen-Leseseite mit höchster Priorität zu einer Warteschlangen-Leseseite mit niedrigster Priorität aufweisen und die mehreren Warteschlangen-Leseseiten einen Ausgang der unterteilten Warteschlange bilden.
  12. Verfahren nach Anspruch 11, ferner mit dem Schritt des Feststellens der verfügbaren Kapazität der Warteschlangen-Leseseiten und Leiten eines Eintrags von der Warteschlangen-Schreibseite zu einem Überlaufbereich (110), wenn die Warteschlangen-Leseseite mit der gleichen Prioritätsebene wie die Prioritätsebene des Eintrags keine Kapazität zur Verfügung hat, und Leiten des Eintrags von dem Überlaufbereich zu dieser Warteschlangen-Leseseite, wenn diese Warteschlangen-Leseseite wieder Kapazität zur Verfügung hat.
  13. Verfahren nach Anspruch 12, ferner mit dem Schritt des Löschens eines Eintrags, der die Warteschlangen-Schreibseite verlässt, wenn die Warteschlangen-Schreibseite mit der gleichen Prioritätsebene wie die Prioritätsebene des Eintrags keine Kapazität zur Verfügung hat, falls die Prioritätsebene über einer Schwellen-Prioritätsebene liegt.
  14. Verfahren nach Anspruch 13, ferner mit den Schritten des Abfragens der Warteschlangen-Leseseiten zum Detektieren des Vorhandenseins von Einträgen in den Warteschlangen-Leseseiten und zum Leeren der einzelnen Warteschlangen-Leseseiten in der Reihenfolge von der Warteschlangen-Leseseite mit der höchsten Priorität zu der Warteschlangen-Leseseite mit der niedrigsten Priorität, so dass eine Warteschlangen-Leseseite mit höherer Priorität vor dem Ausgeben von in einer Warteschlangen-Leseseite mit niedrigerer Priorität befindlichen Einträgen keine eingereihten Einträge aufweist.
DE69817328T 1997-02-14 1998-02-06 Warteschlangenstruktur und -verfahren zur prioritätszuteilung von rahmen in einem netzwerkkoppelfeld Expired - Lifetime DE69817328T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US3802597P 1997-02-14 1997-02-14
US38025P 1997-02-14
US08/993,147 US6487212B1 (en) 1997-02-14 1997-12-18 Queuing structure and method for prioritization of frames in a network switch
US993147 1997-12-18
PCT/US1998/002357 WO1998036587A2 (en) 1997-02-14 1998-02-06 Queuing structure and method for prioritization of frames in a network switch

Publications (2)

Publication Number Publication Date
DE69817328D1 DE69817328D1 (de) 2003-09-25
DE69817328T2 true DE69817328T2 (de) 2004-05-27

Family

ID=26714764

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69817328T Expired - Lifetime DE69817328T2 (de) 1997-02-14 1998-02-06 Warteschlangenstruktur und -verfahren zur prioritätszuteilung von rahmen in einem netzwerkkoppelfeld

Country Status (4)

Country Link
US (1) US6487212B1 (de)
EP (1) EP0960536B1 (de)
DE (1) DE69817328T2 (de)
WO (1) WO1998036587A2 (de)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI108192B (fi) * 1998-03-19 2001-11-30 Nokia Networks Oy Menetelmä ja laitteisto palvelun laadun kontrolloimiseksi matkaviestinjärjestelmässä
US6590901B1 (en) * 1998-04-01 2003-07-08 Mosaid Technologies, Inc. Method and apparatus for providing a packet buffer random access memory
US7020712B1 (en) * 1998-09-30 2006-03-28 Cisco Technology, Inc. Reducing CPU overhead in the forwarding process in an inbound/outbound controller for a router
US7194554B1 (en) 1998-12-08 2007-03-20 Nomadix, Inc. Systems and methods for providing dynamic network authorization authentication and accounting
US8266266B2 (en) 1998-12-08 2012-09-11 Nomadix, Inc. Systems and methods for providing dynamic network authorization, authentication and accounting
US8713641B1 (en) 1998-12-08 2014-04-29 Nomadix, Inc. Systems and methods for authorizing, authenticating and accounting users having transparent computer access to a network using a gateway device
US6546010B1 (en) * 1999-02-04 2003-04-08 Advanced Micro Devices, Inc. Bandwidth efficiency in cascaded scheme
US6678271B1 (en) * 1999-07-12 2004-01-13 Nortel Networks Limited High performance system and method having a local bus and a global bus
WO2001013590A1 (en) * 1999-08-17 2001-02-22 Conexant Systems, Inc. Integrated circuit with a core processor and a co-processor to provide traffic stream processing
WO2001022689A1 (en) * 1999-09-21 2001-03-29 Touch Technologies, Inc. Method and apparatus for receive or transmit data ordering
DE60011799T2 (de) * 1999-10-22 2005-07-14 Nomadix, Inc., Westlake Village Standortabhängige identifizierung zur verwendung in einem kommunikationsnetz
US7197556B1 (en) 1999-10-22 2007-03-27 Nomadix, Inc. Location-based identification for use in a communications network
US6717951B2 (en) * 1999-12-29 2004-04-06 Intel Corporation Method and apparatus for determining priority of network packets
US6745262B1 (en) * 2000-01-06 2004-06-01 International Business Machines Corporation Method, system, program, and data structure for queuing requests having different priorities
US7117263B1 (en) 2000-02-01 2006-10-03 Hewlett-Packard Development Company, L.P. Apparatus and method for processing requests from an external queue in a TCP/IP-based application system
US6735210B1 (en) * 2000-02-18 2004-05-11 3Com Corporation Transmit queue caching
US7197564B1 (en) * 2000-04-07 2007-03-27 Hewlett-Packard Development Company, L.P. Adaptive admission control system for a server application system
US7352770B1 (en) 2000-08-04 2008-04-01 Intellon Corporation Media access control protocol with priority and contention-free intervals
US7054949B2 (en) 2001-01-19 2006-05-30 World Streaming Network, Inc. System and method for streaming media
US8554940B2 (en) 2001-01-19 2013-10-08 Single Touch Interactive, Inc. System and method for routing media
US20040062238A1 (en) * 2001-02-14 2004-04-01 Hiroshi Yoshizawa Network switching device
US6917623B1 (en) * 2001-03-26 2005-07-12 Advanced Micro Devices, Inc. System and method for transferring data in a network device
US6839351B1 (en) * 2001-03-28 2005-01-04 Advanced Micro Devices, Inc. Parallel packet lookup in a packet-switched network
US6842423B1 (en) * 2001-05-02 2005-01-11 Advanced Micro Devices, Inc. Systems and methods for priority-based flow control masking
US6950887B2 (en) * 2001-05-04 2005-09-27 Intel Corporation Method and apparatus for gathering queue performance data
JP2003152761A (ja) * 2001-11-14 2003-05-23 Nec Miyagi Ltd Lan中継装置及びそれに用いる適応型フロー制御方法並びにそのプログラム
US20030140157A1 (en) * 2002-01-22 2003-07-24 Beverly Harlan T. Removing data from contiguous data flows
JP3872716B2 (ja) * 2002-04-30 2007-01-24 富士通株式会社 パケット出力制御装置
US7126912B2 (en) * 2002-05-30 2006-10-24 Motorola, Inc. Methods for sequencing datagram transmissions
US7826466B2 (en) 2002-06-26 2010-11-02 Atheros Communications, Inc. Communication buffer scheme optimized for VoIP, QoS and data networking over a power line
US8149703B2 (en) 2002-06-26 2012-04-03 Qualcomm Atheros, Inc. Powerline network bridging congestion control
US7272150B2 (en) * 2002-08-19 2007-09-18 World Wide Packets, Inc. System and method for shaping traffic from a plurality of data streams using hierarchical queuing
US7272149B2 (en) * 2002-08-19 2007-09-18 World Wide Packets, Inc. Bandwidth allocation systems and methods
US7277389B2 (en) * 2002-08-29 2007-10-02 World Wide Packets, Inc. Systems and methods for grouping of bandwidth allocations
US7269180B2 (en) * 2002-11-04 2007-09-11 World Wide Packets, Inc. System and method for prioritizing and queuing traffic
US7324547B1 (en) * 2002-12-13 2008-01-29 Nvidia Corporation Internet protocol (IP) router residing in a processor chipset
US8254267B2 (en) * 2003-07-15 2012-08-28 Agere Systems Inc. Extensible traffic generator for synthesis of network data traffic
CN1306759C (zh) * 2003-09-28 2007-03-21 中国科学院研究生院 一种用于交换系统中输入端两阶段排队结构的方法
US8090857B2 (en) 2003-11-24 2012-01-03 Qualcomm Atheros, Inc. Medium access control layer that encapsulates data from a plurality of received data units into a plurality of independently transmittable blocks
US20050163048A1 (en) * 2004-01-07 2005-07-28 Amit Arora Method and system for providing committed information rate (CIR) based fair access policy
US7660327B2 (en) 2004-02-03 2010-02-09 Atheros Communications, Inc. Temporary priority promotion for network communications in which access to a shared medium depends on a priority level
US7715425B2 (en) 2004-02-26 2010-05-11 Atheros Communications, Inc. Channel adaptation synchronized to periodically varying channel
US20050213500A1 (en) * 2004-03-29 2005-09-29 Dan Gaur Techniques to adaptively control flow thresholds
US20060140191A1 (en) * 2004-12-29 2006-06-29 Naik Uday R Multi-level scheduling using single bit vector
EP1718096B1 (de) * 2005-04-25 2009-11-04 Samsung Electronics Co., Ltd. Anzeige des Frame Offsets von Multicast Broadcast Service Datenbursts in einer MBS-MAP Nachricht
US7533109B2 (en) * 2005-04-26 2009-05-12 Hewlett-Packard Development Company, L.P. Item queue management
US7574578B2 (en) * 2005-05-02 2009-08-11 Elliptic Semiconductor Inc. System and method of adaptive memory structure for data pre-fragmentation or pre-segmentation
US8175190B2 (en) 2005-07-27 2012-05-08 Qualcomm Atheros, Inc. Managing spectra of modulated signals in a communication network
US7822059B2 (en) 2005-07-27 2010-10-26 Atheros Communications, Inc. Managing contention-free time allocations in a network
US7444478B2 (en) * 2005-11-18 2008-10-28 International Business Machines Corporation Priority scheme for transmitting blocks of data
US7450588B2 (en) * 2006-08-24 2008-11-11 Intel Corporation Storage network out of order packet reordering mechanism
JP4701152B2 (ja) * 2006-10-20 2011-06-15 富士通株式会社 データ中継装置、データ中継方法およびデータ中継プログラム
WO2008141165A1 (en) 2007-05-10 2008-11-20 Intellon Corporation Managing distributed access to a shared medium
EP2328074A1 (de) * 2009-11-27 2011-06-01 STMicroelectronics S.r.l. Warteschlangeverwaltung
CN102959902B (zh) 2010-04-12 2017-06-13 高通股份有限公司 检测用于在网络中进行低开销通信的定界符
US9485200B2 (en) * 2010-05-18 2016-11-01 Intel Corporation Network switch with external buffering via looparound path
US8953631B2 (en) * 2010-06-30 2015-02-10 Intel Corporation Interruption, at least in part, of frame transmission
TWI419515B (zh) * 2010-07-29 2013-12-11 Cybertan Technology Inc The network bandwidth upper limit statistics and adjustment method of network equipment
US8891605B2 (en) 2013-03-13 2014-11-18 Qualcomm Incorporated Variable line cycle adaptation for powerline communications
US9699088B2 (en) * 2014-11-10 2017-07-04 Hughes Network Systems, Llc Service plan based flow control
US10176548B2 (en) * 2015-12-18 2019-01-08 Ati Technologies Ulc Graphics context scheduling based on flip queue management
WO2017199209A2 (en) * 2016-05-18 2017-11-23 Marvell Israel (M.I.S.L) Ltd. Traffic management in a network switching system with remote physical ports
US10951523B2 (en) 2017-01-09 2021-03-16 Marvell Asia Pte, Ltd. Port extender with local switching
US10812391B1 (en) 2017-01-27 2020-10-20 Marvell Israel (M.I.S.L) Ltd. Methods and apparatus for load balancing in a network
US10944683B1 (en) * 2017-05-25 2021-03-09 Amazon Technologies, Inc. Hybrid queue system for request throttling
US10496437B2 (en) 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US10635602B2 (en) * 2017-11-14 2020-04-28 International Business Machines Corporation Address translation prior to receiving a storage reference using the address to be translated
US10901738B2 (en) 2017-11-14 2021-01-26 International Business Machines Corporation Bulk store and load operations of configuration state registers
US10558366B2 (en) 2017-11-14 2020-02-11 International Business Machines Corporation Automatic pinning of units of memory
US10552070B2 (en) * 2017-11-14 2020-02-04 International Business Machines Corporation Separation of memory-based configuration state registers based on groups
US10664181B2 (en) 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
US10761751B2 (en) 2017-11-14 2020-09-01 International Business Machines Corporation Configuration state registers grouped based on functional affinity
US10642757B2 (en) 2017-11-14 2020-05-05 International Business Machines Corporation Single call to perform pin and unpin operations
US10698686B2 (en) * 2017-11-14 2020-06-30 International Business Machines Corporation Configurable architectural placement control
US10761983B2 (en) * 2017-11-14 2020-09-01 International Business Machines Corporation Memory based configuration state registers
CN108737689A (zh) 2018-04-27 2018-11-02 浙江大华技术股份有限公司 一种视频的拼接显示方法及显示控制设备
CN111726563A (zh) * 2019-03-19 2020-09-29 中车株洲电力机车研究所有限公司 一种用于列车视频监控系统的视频存储装置
JP7188206B2 (ja) * 2019-03-20 2022-12-13 富士通株式会社 通信装置、通信システム、及び通信方法
CN112820343B (zh) * 2021-02-25 2024-08-06 记忆科技(深圳)有限公司 数据保护方法、装置、计算机设备及存储介质
US11895029B2 (en) * 2021-12-10 2024-02-06 Nokia Solutions And Networks Oy Network processor with external memory protection
CN115348218B (zh) * 2022-10-18 2022-12-27 井芯微电子技术(天津)有限公司 一种队列调度方法及装置

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4630254A (en) 1984-10-26 1986-12-16 Trw Inc. Controlled star network
JP2531275B2 (ja) 1989-09-29 1996-09-04 日本電気株式会社 Atmセル転送方式
US5247626A (en) * 1990-05-29 1993-09-21 Advanced Micro Devices, Inc. Fddi controller having flexible buffer management
US5210749A (en) * 1990-05-29 1993-05-11 Advanced Micro Devices, Inc. Configuration of srams as logical fifos for transmit and receive of packet data
US5136582A (en) * 1990-05-29 1992-08-04 Advanced Micro Devices, Inc. Memory management system and method for network controller
US5043981A (en) * 1990-05-29 1991-08-27 Advanced Micro Devices, Inc. Method of and system for transferring multiple priority queues into multiple logical FIFOs using a single physical FIFO
US5166930A (en) 1990-12-17 1992-11-24 At&T Bell Laboratories Data channel scheduling discipline arrangement and method
US5233606A (en) 1991-08-02 1993-08-03 At&T Bell Laboratories Arrangement for controlling shared-buffer-memory overflow in a multi-priority environment
US5379297A (en) * 1992-04-09 1995-01-03 Network Equipment Technologies, Inc. Concurrent multi-channel segmentation and reassembly processors for asynchronous transfer mode
JPH05153152A (ja) 1991-11-25 1993-06-18 Mitsubishi Electric Corp セル多重化装置
US5313579A (en) 1992-06-04 1994-05-17 Bell Communications Research, Inc. B-ISDN sequencer chip device
US5278828A (en) * 1992-06-04 1994-01-11 Bell Communications Research, Inc. Method and system for managing queued cells
US5274642A (en) * 1992-06-05 1993-12-28 Indra Widjaja Output buffered packet switch with a flexible buffer management scheme
FI91695C (fi) 1992-10-05 1994-07-25 Nokia Telecommunications Oy Menetelmä liikenteen priorisoimiseksi runkoverkon kautta yhteen liitettyjen lähiverkkojen välillä
EP1030483B1 (de) * 1993-02-15 2003-10-08 Mitsubishi Denki Kabushiki Kaisha ATM-Schalter
US5515376A (en) 1993-07-19 1996-05-07 Alantec, Inc. Communication apparatus and methods
JP3178949B2 (ja) 1993-09-30 2001-06-25 富士通株式会社 Atmスイッチ方式
JP3354689B2 (ja) * 1994-02-28 2002-12-09 富士通株式会社 Atm交換機、交換機及びそのスイッチングパス設定方法
US5455825A (en) * 1994-04-28 1995-10-03 Mitsubishi Electric Research Laboratories Tag-based scheduling system for digital communication switch
JP2856104B2 (ja) * 1995-04-18 1999-02-10 日本電気株式会社 Atmスイッチ
WO1997004552A1 (en) * 1995-07-19 1997-02-06 Fujitsu Network Communications, Inc. Point-to-multipoint transmission using subqueues
US5862128A (en) * 1995-12-29 1999-01-19 Gte Laboratories Inc Merged buffer signal switch
IL117134A (en) 1996-02-14 2000-01-31 Galileo Technology Ltd First-in first-out (fifo) buffer
US5923656A (en) * 1996-10-22 1999-07-13 Board Of Trustees Of The University Of Illinois Scalable broad band input-queued ATM switch including weight driven cell scheduler
US5912889A (en) * 1996-11-21 1999-06-15 Xerox Corporation ATM switch with output port clustering for dynamically allocating bandwidth between ports
US6011779A (en) * 1996-12-30 2000-01-04 Hyundai Electronics America ATM switch queuing system

Also Published As

Publication number Publication date
US6487212B1 (en) 2002-11-26
WO1998036587A2 (en) 1998-08-20
DE69817328D1 (de) 2003-09-25
WO1998036587A3 (en) 1999-01-14
EP0960536A2 (de) 1999-12-01
EP0960536B1 (de) 2003-08-20

Similar Documents

Publication Publication Date Title
DE69817328T2 (de) Warteschlangenstruktur und -verfahren zur prioritätszuteilung von rahmen in einem netzwerkkoppelfeld
DE69819303T2 (de) Verfahren und vorrichtung zur übertragung von mehrfachkopien durch vervielfältigung von datenidentifikatoren
DE69803364T2 (de) Verfahren und vorrichtung zur selektiven verwerfung von paketen für blockierte ausgangswarteschlangen in einer netzvermittlung
DE69823483T2 (de) Mehrfachkopiewarteschlangestruktur mit einem suchbaren cachespeicherbereich
DE69823337T2 (de) Vorrichtung und verfahren zur rückgewinnung von puffern
DE69803442T2 (de) Gerät und verfahren zur erzeugung von verwaltungspaketen zur übertragung zwischen einer netzwerkvermittlungsstelle und einer host steuereinheit
DE60111457T2 (de) Vermittlungsanordnung mit redundanten Wegen
DE69133569T2 (de) Netzschnittstelle
DE69428186T2 (de) Mehrfachsendeeinrichtung
DE69810961T2 (de) Hierarchische planung für unterschiedliche atm verkehrsströme
DE68926650T2 (de) Hochgeschwindigkeitspaketvermittlungsknotenentwurf
DE69430945T2 (de) Schnelle Paketvermittlungsnetze
DE10196447B4 (de) Verfahren und Vorrichtung zum Verringern der Erschöpfung des Pools in einer Vermittlung mit gemeinsam genutztem Speicher
DE69733703T2 (de) Puffer von Mehrfachsendezellen in Vermittlungsnetzen
DE69937598T2 (de) Auf Identifikationsmarken basierendes Paketvermittlungssystem
DE69803276T2 (de) Verfahren und gerät zur von den empfangenen daten abhängigen steuerung der informationsübertragungsauslösung
DE69738386T2 (de) Verbesserungen in oder sich beziehend auf eine ATM-Vermittlungsstelle
DE69332324T2 (de) Parallele Multi-Bit Koppelnetze
DE60031596T2 (de) Zeitmultiplex-Vermittlungssystem (TDM) mit sehr breitem Speicher
DE60125678T2 (de) Vermittlungstelle mit Flusssteurungverwaltung
DE60131380T2 (de) Segmentierung und wiederzusammensetzung von datenrahmen
DE60222233T2 (de) Prozessor und Verfahren zur Erhaltung der Verarbeitungsreihenfolge von Paketen basierend auf Paketstromkennungen
DE60215416T2 (de) Zeigerbasierte binäre Suchmaschine und dafür geeignetes Verfahren
DE60217988T2 (de) System und Verfahren zum zeitschlitzbasierten Erlernen und Durchsuchen von ARL Tabellen mit Blockierung der Einfügung
DE69808732T2 (de) Architektur für teilbare warteschlangen und warteschlangenverfahren

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: GLOBALFOUNDRIES INC. MAPLES CORPORATE SERVICES, KY