DE69919114T2 - Verfahren und Vorrichtung zur Netzwerküberlastkontrolle - Google Patents

Verfahren und Vorrichtung zur Netzwerküberlastkontrolle Download PDF

Info

Publication number
DE69919114T2
DE69919114T2 DE69919114T DE69919114T DE69919114T2 DE 69919114 T2 DE69919114 T2 DE 69919114T2 DE 69919114 T DE69919114 T DE 69919114T DE 69919114 T DE69919114 T DE 69919114T DE 69919114 T2 DE69919114 T2 DE 69919114T2
Authority
DE
Germany
Prior art keywords
frame
memory
data
fifo memory
fifo
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
DE69919114T
Other languages
English (en)
Other versions
DE69919114D1 (de
Inventor
Christian D. Carrollton Kasper
Elmer H. Flower Mound Guritz
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.)
STMicroelectronics lnc USA
Original Assignee
STMicroelectronics lnc USA
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 STMicroelectronics lnc USA filed Critical STMicroelectronics lnc USA
Publication of DE69919114D1 publication Critical patent/DE69919114D1/de
Application granted granted Critical
Publication of DE69919114T2 publication Critical patent/DE69919114T2/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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • 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/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)
  • Computer And Data Communications (AREA)

Description

  • Diese Patentanmeldung bezieht sich auf ein Verfahren und auf eine Vorrichtung zum Steuern des Flusses von Netzwerkdaten, die in Rahmen angeordnet sind, und zum Minimieren von Stauungen und insbesondere zum Steuern von Stauungen in einer Netzwerkeinrichtung wie etwa in einem HDLC-Controller mit einem FIFO-Speicher an jedem Port.
  • Datennetzwerke erlangen in den täglichen Aktivitäten und Geschäftsanwendungen zunehmend Bedeutung. Die meisten dieser Netzwerke sind paketvermittelte Netzwerke wie etwa das Internet, das ein Transmission Control Protocol (TCP) und ein Internet Protocol (IP) verwendet, die häufig als TCP/IP bezeichnet werden. Das Transmission Control Protocol führt das Management des zuverlässigen Empfangs und der zuverlässigen Sendung des Netzwerkverkehrs aus, während das Internet Protocol für das Routing verantwortlich ist, das sicherstellt, dass die Pakete an ein richtiges Ziel gesendet werden.
  • In einem typischen Netzwerk ist ein Maschennetz aus Übertragungsstrecken sowie Vermittlungsknoten und Endknoten vorgesehen. Die Endknoten stellen typisch sicher, dass irgendein Paket auf der richtigen herausgehenden Strecke empfangen und gesendet wird, um sein Ziel zu erreichen. Die Vermittlungsknoten werden typisch als Paketvermittlungen oder Router oder Zwischensysteme bezeichnet. Die Quellen und Ziele im Datenverkehr (die Endknoten) können als Hosts und Endsysteme bezeichnet werden. Diese Hosts und Endsysteme sind typisch die Personal Computer, Workstations und weitere Endgeräte.
  • Als Hilfe, um Informationen zwischen Computern zu verschieben, ist das Open-System-Interconnection-Modell (OSI-Modell) entwickelt worden. In dem Modell ist jedes Problem der Verschiebung von Informationen zwischen Computern durch eine Schicht repräsentiert, womit es ein System von Normen aufstellt. Zwei Systeme kommunizieren lediglich zwischen Schichten in einem Protokollstapel. Allerdings ist es wünschenswert, mit einer reinen Schicht in dem anderen System zu kommunizieren, wobei Informationen mittels auch als Pakete bekannten Protokolldateneinheiten (PDUs) ausgetauscht werden, um diese Ergebnisse zu erzielen. Die PDUs enthalten Anfangsblöcke, die Steuerinformationen wie etwa Adressen enthalten, sowie Daten. Wie dem Fachmann auf dem Gebiet wohlbekannt ist, fügt an einer Quelle jede Schicht ihren eigenen Anfangsblock hinzu. Beginnend bei der Bitübertragungsschicht enthalten die sieben Schichten: (1) die Bitübertragungs-; (2) die Sicherungs-; (3) die Vermittlungs-; (4) die Transport-; (5) die Kommunikationssteuer-; (6) die Darstellungs-; und (7) die Anwendungsschicht.
  • Die Netzwerksysteme verwenden typisch Router, die unter Verwendung von Routing-Algorithmen optimale Wege bestimmen können. Außerdem vermitteln die Router an einem Eingangsport hereinkommende Pakete anhand des Routing-Wegs für jedes Paket an einen Ausgangsport. Die Routing-Algorithmen (oder Routing-Protokolle) werden zum Initialisieren und Unterhalten von Routing-Tabellen verwendet, die aus Einträgen bestehen, die auf einen nächsten Router zum Senden eines Pakets mit einer gegebenen Zieladresse zeigen. Jeder Strecke in dem Netzwerk sind typisch Festkosten zugewiesen, wobei die Kosten die Streckenbandbreite und/oder die Streckenkosten widerspiegeln. Nachdem ein Router mit anderen Routern Netzwerktopologie- und Streckenkosteninformationen ausgetauscht hat, können durch ihn die Minimalkostenwege bestimmt werden.
  • Die zwei unteren Schichten, die Bitübertragungs- und die Sicherungsschicht, sind typisch durch eine Norm für lokale Netzwerke bestimmt, die durch den IEEE-802-Ausschuss entwickelt worden ist. Die Sicherungsschicht ist typisch in zwei Teilschichten, die Teilschicht der logischen Verbindungssteuerung (LLC-Teilschicht), die Funktionen wie etwa Rahmung, Flusssteuerung, Fehlersteuerung und Adressierung bestimmt, unterteilt. Das LLC-Protokoll ist eine Modifizierung des HDLC-Protokolls. Eine Zugriffskontroll-Teilschicht (MAC-Teilschicht) steuert den Sendezugriff auf ein gemeinsames Medium.
  • Die High Level Data Link Control (HDLC) ist eine Kommunikationssteuerungsprozedur zum Prüfen der Genauigkeit von Datenübertragungsoperationen zwischen fernen Einrichtungen, in der Daten in Einheiten übertragen werden, die als Rahmen bekannt sind, und in der Prozeduren vorhanden sind, um die Folge von Rahmen zu prüfen und Fehler wegen Bits zu erfassen, die während Übertragungsoperatoren verloren gehen oder invertiert werden. Außerdem gibt es Funktionen, die den Aufbau und den Abschluss der Datenübertragungsstrecke steuern. In der HDLC wird die bitsynchrone Datenkommunikation über eine Übertragungsstrecke gesteuert. Die HDLC ist in der ITU-Paketvermittlungsschnittstellen-Norm enthalten, die als X.25 bekannt ist.
  • Üblicherweise werden in diesen Systemen programmierbare HDLC-Protokoll-Controller verwendet. Ein HDLC-Controller ist eine Computerperipheriegerät- Schnittstelleneinrichtung, die die High Level Data Link Control (HDLC) der International Standards Organization (ISO) unterstützt. Er verringert durch Unterstützen eines Anweisungssatzes auf der Rahmenebene und durch Hardware-Implementierung der niederen Aufgaben, die dem Rahmenzusammenbau/der Rahmenzerlegung und der Datenintegrität zugeordnet sind, die Zentraleinheits- oder Mikroprozessoreinheits-Software (MPU-Software).
  • Die meisten Kommunikationsprotokolle sind bitorientiert, codeabhängig und ideal für die Vollduplexkommunikation. Einige übliche Anwendungen umfassen Endgerät-Endgerät-, Endgerät-MPU-, MPU-MPU-, Satellitenkommunikations-, Paketvermittlungs- und andere Hochgeschwindigkeits-Datenübertragungsstrecken.
  • Ein Kommunikations-Controller entlastet eine Zentral-MPU von vielen der Aufgaben, die der Konstruktion und dem Empfang von Rahmen zugeordnet sind. Ein Rahmen (gelegentlich als ein Paket bezeichnet) ist ein einzelnes Kommunikationselement, das sowohl für Streckensteuerungs- als auch für Datenübertragungszwecke verwendet werden kann.
  • Die meisten Controller enthalten eine Einrichtung oder Funktion mit direktem Zugriff (DMA-Einrichtung oder -Funktion), die Zugriff auf ein externes Gemeinschaftsspeicherbetriebsmittel schafft. Der Controller ermöglicht entweder DMA- oder Nicht-DMA-Datenübertragungen. Der Controller nimmt einen Befehl von der MPU an, führt den Befehl aus und liefert eine Unterbrechung und ein Ergebnis an die MPU zurück.
  • In einem Netzwerk wie etwa dem Ethernet besitzt ein HDLC-Controller oder eine ähnliche Einrichtung einen Kommunikationsprozessor und eine Kommunikations-Firmware, die einen entsprechenden Empfänger eines Ports steuern, wo Daten hereinkommen oder herausgehen. Der Port enthält typisch einen Empfangs-FIFO-Speicher und einen Sende-FIFO-Speicher. Hereinkommende Rahmen werden in dem Empfangs-FIFO-Speicher aufgenommen. Zu dieser Zeit wird ein Bus angefordert und werden die Rahmen entlang des Busses übertragen. Allerdings tritt häufig eine Buslatenzzeit auf, die der Verzögerung zwischen der Zeit, zu der der Bus angefordert wird, und der Zeit, zu der der Bus tatsächlich erhalten wird, um Daten und Rahmen zu übertragen, entspricht. In dem System wie etwa einem Personal Computer könnten andere Peripherieschaltungen wie etwa ein Lochstreifenleser oder ein CD-ROM verwendet werden und inhärent eine größere La tenzzeit verursachen.
  • Die Empfangs-FIFO-Speicher besitzen eine endliche Größe. Bei hohen Geschwindigkeiten wie etwa T2- und T3-Frequenzen könnte es viele Stauungen geben, die einen Überlauf verursachen. Diese Stauungen beeinflussen irgendwelche Pakete und Rahmen, die auf der Leitung herunterkommen, so dass es vorteilhaft wäre, falls die Rahmen gesichert werden könnten, bevor eine große Datenkatastrophe auftritt. Außerdem könnte sich anstelle eines einzelnen netzwerkabwärts gerichteten Knotens mit einem Rahmenverlustproblem schnell eine Situation entwickeln, in der viele netzwerkabwärts gerichtete Knoten gezwungen sind, die Sendefenster neu zu takten, was das Problem leicht verschärft.
  • Außerdem ist es wünschenswert, keine lange Zeitdauer zu warten, um irgendwelche Unterbrechungen zu erzeugen, wie etwa, wenn eine Reihe von Rahmen-Enden empfangen und Rahmen ausrangiert werden. Viele der Rahmensendegeschwindigkeiten sind in Millisekunden, wobei ein 120-Wort-FIFO (in einigen bevorzugten Anwendungen 512 Bytes) in einer Ethernet-Anwendung in Millisekunden gefüllt werden kann. Obgleich Software auf hoher Ebene irgendwelche Rahmen, die ausrangiert worden sind, neu senden könnte, würde dies stärkere Stauungen erzeugen und eine größere Bandbreite erfordern. Dies könnte noch größere Probleme verursachen.
  • Die europäische Patentanmeldung EP 0602806 bezieht sich auf eine High-Level-Data-Link-Controller-Empfängerzustandsmaschine (HDLC-Empfängerzustandsmaschine) zum Steuern der Datenempfangsfunktionen in einem HDLC-Empfänger, der Rahmen serialisierter Daten über eine Datenübertragungsstrecke empfängt. Die Datenrahmen können verschiedene Längen haben. Je nach dem spezifischen Systemprotokoll kann eine minimale Rahmengröße definiert werden.
  • Das Patent der Vereinigten Staaten 4.942.553 bezieht sich auf eine FIFO-Einrichtung, in der ein erstes und ein zweites Anforderungsniveau definiert sind. Das Füllungs- und das Leerungsniveau eines FIFO werden erfasst und mit dem ersten Anforderungsniveau verglichen. Wenn das Niveau größer als das erste Anforderungsniveau ist, wird eine Ankündigung an den direkten Speicherzugriff (DMA) oder an den Coprozessor erzeugt. Außerdem wird das Füllungs- oder Leerungsniveau mit dem zweiten Anforderungsniveau verglichen und, wenn dieses Niveau das zweite Anforderungsniveau überschreitet, eine Ankündigung an die CPU er zeugt. Dies erfolgt mittels einer CPU-Unterbrechung.
  • Es ist eine Aufgabe der vorliegenden Erfindung, Stauungen in einem Port-Empfänger wie etwa bei dem Empfangs-FIFO-Speicher einer Netzwerkeinrichtung, z. B. einem HDLC-Controller, zu verringern und die Möglichkeit fallen gelassener Rahmen zu verringern.
  • In Übereinstimmung mit der vorliegenden Erfindung wird nun ein Statusfehleranzeiger innerhalb eines Empfangs-FIFO-Speichers einer Netzwerkeinrichtung erzeugt, der einen Rahmen-Überlauf innerhalb des FIFO-Speichers anzeigt. Dieser Statusfehleranzeiger kann durch einen Kommunikationsprozessor gelesen werden, und es kann eine frühe Stauungsunterbrechung bzw. ein Stauungsinterrupt für einen Hostprozessor erzeugt werden, die anzeigt, dass ein Rahmen-Überlauf innerhalb des Empfangs-FIFO-Speichers aufgetreten ist. Der hereinkommende Rahmen kann ausrangiert werden. Das Verfahren kann ferner die Verstärkung der Bedienung von Empfangsrahmen innerhalb des FIFO-Speichers durch eines von entweder der Steigerung der Anzahl von Worten einer Einheitssignalgröße eines direkten Speicherzugriffs (DMA) oder Verändern der Zeitschachtelung oder durch andere aktive Prozesse, die das System gemeinsam nutzen, umfassen.
  • In Übereinstimmung mit der vorliegenden Erfindung steuert ein Verfahren die Flussnetzwerkdaten, die in Rahmen angeordnet sind, und minimiert Stauungen. Das Verfahren umfasst den Schritt des Erzeugens eines Statusfehleranzeigers innerhalb eines Empfangs-FIFO-Speichers, der einen Rahmen-Überlauf innerhalb des FIFO-Speichers anzeigt. In Reaktion auf den Statusfehleranzeiger kann eine frühe Stauungsunterbrechung bzw. ein Stauungsinterrupt für einen Hostprozessor erzeugt werden, die anzeigt, dass ein Rahmen-Überlauf in dem Empfangs-FIFO-Speicher aufgetreten ist. Der hereinkommende Rahmen, der den Rahmen-Überlauf verursacht hat, kann ausrangiert werden und die Bedienung von Rahmen, die innerhalb des FIFO-Speichers empfangen werden, kann durch eines von entweder der Steigerung der Anzahl von Worten einer Einheitssignalgröße eines direkten Speicherzugriffs (DMA) oder Verändern der Zeitschachtelung oder durch andere aktive Prozesse verstärkt werden.
  • Ferner kann das Verfahren den Schritt des Erzeugens einer bzw. eines frühen Stauungsunterbrechung bzw. Interrupts von dem FIFO-Speicher für einen Kommunikationsprozessor aufweisen, nachdem der Statusfehleranzeiger erzeugt wor den ist. Außerdem kann das Verfahren den Schritt zum Setzen eines frühen Stauungsanzeigebits innerhalb eines Unterbrechungs- bzw. Interrupt-Registers einer Speichereinheit mit direktem Zugriff aus Steuersignalen, die durch den Kommunikationsprozessor erzeugt worden sind, aufweisen. Die Speichereinheit mit direktem Zugriff kann eine frühe Stauungsanzeigeunterbrechung über einen Hostprozessor erzeugen, um den hereinkommenden Rahmen auszurangieren, der den Rahmen-Überlauf innerhalb des FIFO-Speichers verursacht hat. Um die Erzeugung der frühen Stauungsanzeigeunterbrechung von der Speichereinheit mit direktem Zugriff zu ermöglichen, ist ein Systembus vorgesehen. Der Statusfehleranzeiger wird durch Erzeugen eines Statusfehlerbits erzeugt. Außerdem wird das Statusfehlerbit durch Setzen eines Flip-Flops erzeugt. Ferner umfasst ein Statusfehleranzeiger innerhalb des FIFO-Speichers den Schritt zum Setzen bzw. Einstellen eines Überlaufbits innerhalb des FIFO-Speichers, das eine Überlaufbedingung anzeigt.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung wird eine Netzwerkeinrichtung zum Steuern des Flusses von Netzwerkdaten, die in Rahmen angeordnet sind, und zur Stauungsminimierung geschaffen, die Mittel zum Erzeugen eines Statusfehleranzeigers innerhalb eines FIFO-Speichers, der einen Rahmen-Überlauf innerhalb des FIFO-Speichers anzeigt, Mittel zum Lesen des Statusfehleranzeigers und, in Reaktion darauf zum Erzeugen einer frühen Stauungsunterbrechung bzw. -interrupts zu einem Verarbeitungsprozessor bzw. Hostprozessor, die bzw. der anzeigt, dass ein Rahmen-Überlauf innerhalb des FIFO-Speichers aufgetreten ist, und Mittel zum Ausrangieren des hereinkommenden Rahmens, der den Rahmen-Überlauf innerhalb des FIFO-Speichers verursacht hat, umfasst.
  • Es wird eine Vorrichtung zum Steuern des Flusses von Netzwerkdaten, die in Rahmen angeordnet sind, und zur Stauungsminimierung offenbart, die einen FIFO-Speicher enthält, der Mittel zum Erzeugen eines Statusfehlerindikators enthält, die einen Rahmen-Überlauf innerhalb des FIFO-Speichers anzeigen. Eine Speichereinheit mit direktem Zugriff hat ein Unterbrechungs- bzw. Interruptregister und frühe Anzeigebits, die in Reaktion auf den Statusfehleranzeiger gesetzt werden, gemäß dem Überlauf innerhalb des FIFO-Speichers. Mittel erzeugen eine frühe Stauungsunterbrechung bzw. -interrupt von der Einheit mit direktem Speicherzugriff, und ein Verarbeitungsprozessor bzw. Hostprozessor empfängt die Unterbrechung von der Speichereinheit mit direktem Zugriff. Daraufhin erzeugen Mittel Befehle von dem Verarbeitungsprozessor bzw. Hostprozessor zu dem FIFO- Speicher, um den hereinkommenden Rahmen, der den Rahmen-Überlauf verursacht hat, auszurangieren. Ferner kann die Einrichtung einen Systembus aufweisen, der die Einheit mit direktem Speicherzugriff mit dem Verarbeitungsprozessor bzw. Hostprozessor verbindet und auf dem die frühe Anzeige der Stauungsunterbrechung bzw. -interrupts durchgeht. Der Statusfehleranzeiger könnte ein Statusfehlerbit aufweisen und zur Anzeige des Statusfehlerbits könnte ein Flip-Flop eingestellt werden. Außerdem stellen Mittel ein Überlaufbit innerhalb des FIFO-Speichers ein, das die Überlaufbedingung anzeigt. Außerdem wird eine Netzwerkeinrichtung offenbart, die den Fluss von Daten, die in Rahmen angeordnet sind, steuert und die Stauungen minimiert.
  • Weitere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden ausführlichen Beschreibung der Erfindung sichtbar, wenn sie im Licht der beigefügten Zeichnung betrachtet wird, in der:
  • 1 ein Blockschaltplan auf hoher Ebene von vier Netzwerkeinrichtungen ist, die als Netzwerk-Controller der vorliegenden Erfindung gezeigt und mit einem 32-Bit-Systembus verbunden sind, wobei er das Hostsystem-Mikroprozessor-, das Buszuteilungs-Logikeinheits- und das Gemeinschaftsspeicher-Teilsystem zeigt.
  • 2 ein Blockschaltplan auf hoher Ebene eines Netzwerk-Controllers der vorliegenden Erfindung ist, der vier Ports, einen Kommunikationsprozessor und eine Systembus-Schnittstellensteuerungseinheit zeigt.
  • 3 ein Blockschaltplan auf hoher Ebene des Puffermanagements und des Systemspeichers ist, die von einer Vorrichtung und von dem Netzwerk-Controller der vorliegenden Erfindung verwendet werden, wobei er die verschiedenen Deskriptorringe zeigt.
  • 4 ein Blockschaltplan auf hoher Ebene der Datenstruktur und des Systemspeichers ist, der den Organisationsblock, den Deskriptorring und den Rahmendatenpuffer zeigt.
  • 5 ein Blockschaltplan auf hoher Ebene eines Deskriptors und eines Puffers ist.
  • 6 ein Blockschaltplan auf hoher Ebene des Zeitgeberbetriebs des Netzwerk- Controllers der vorliegenden Erfindung ist.
  • 7 Einzelheiten des Organisationsblocks und des Systemspeichers zeigt, die in der vorliegenden Erfindung verwendet werden.
  • 8 einen Blockschaltplan und ein Diagramm des Organisationsblocks, der Statistikbilder und des Systemspeichers der vorliegenden Erfindung zeigt.
  • 8A eine Tabelle ist, die verschiedene Bitwerte und Beschreibungen für ein Grundelement-Befehlsregister der in der vorliegenden Erfindung verwendeten Speichereinheit mit direktem Zugriff zeigt.
  • 8B eine Tabelle ist, die verschiedene Bitwerte und Beschreibungen für ein Master-Unterbrechungsregister der in der vorliegenden Erfindung verwendeten Speichereinheit mit direktem Zugriff zeigt.
  • 9 ein Blockschaltplan ist, der die hierarchische Konfiguration verschiedener Anfangsblöcke als ein Beispiel der Schichtung zeigt.
  • 10 ein Blockschaltplan ist, der einen 802.3-Sicherungsschicht-Anfangsblock zeigt.
  • 11 ein Blockschaltplan ist, der einen Internet-IP-Anfangsblock zeigt.
  • 12 ein Blockschaltplan ist, der einen TCP-Anfangsblock zeigt.
  • 13-20 jeweils einen Blockschaltplan auf hoher Ebene der Grundkomponenten des Netzwerk-Controllers und des externen Hostprozessors, der Buszuteilungs-, Logikeinheit und des Gemeinschaftssystemspeichers zeigen, wobei sie ausführlich die Folge der Schritte für die Rahmenadressenankündigung der vorliegenden Erfindung zeigen.
  • 21 ein allgemeiner Zeitablaufplan ist, der allgemein den Sendeunterbrechungsereignis-Zeitablaufplan der Rahmenadressenankündigung der vorliegenden Erfindung zeigt.
  • 22 ein Grundblockschaltplan ist, der einen Vergleich einer klassischen Zuerst eingeben/Zuerst-ausgeben-Flusssteuerung gegenüber einer Flusssteuerung unter Verwendung einer Vorverarbeitungs-Wasserstandsmarke der vorliegenden Erfindung zeigt.
  • 23 ein Ablaufplan ist, der den Prozess der Verwendung einer Vorverarbeitungs-Wasserstandsmarke der vorliegenden Erfindung veranschaulicht.
  • 24a ein Zeitablaufplan ist, der eine unterbrechungsvermittelte Rahmensendung zeigt.
  • 24b ein Zeitablaufplan ist, der eine mittels Vorverarbeitungs-Wasserstandsmarke vermittelte Rahmensendung zeigt.
  • 25 eine graphische Darstellung veranschaulicht, die erläutert, wie ein Wasserstandsmarkenwert eine inverse Wirkung auf die Gesamtzahl der erzeugten Unterbrechungen besitzt.
  • 26 ein Ablaufplan ist, der den Grundprozess der Verwendung eines frühen Stauungsankündigungssignals der vorliegenden Erfindung veranschaulicht.
  • 27A–G Blockschaltpläne auf hoher Ebene dessen, wie der Zuerst-eingeben/Zuerst-ausgeben-Speicher bei einem zweiten Paket in einen Empfangs-FIFO-Speicher überläuft, sowie der verschiedenen Lese- und Schreibstatuszeiger veranschaulichen.
  • 28-43 Blockschaltpläne auf hoher Ebene des externen Hostprozessors, der Buszuteilungs-Logikeinheit und des Gemeinschaftsspeichers sowie der Grundkomponenten des Netzwerk-Controllers der vorliegenden Erfindung sind, wobei sie den Prozess zeigen, wenn ein frühes Stauungsankündigungssignal für drei verschiedene hereinkommende Pakete bei einem Überlauf beim dritten Paket verwendet wird.
  • 44 eine graphische Darstellung ist, die ausführlich die geschätzte Verkehrszusammensetzung des Hostbusses unter Verwendung regulärer Deskriptoren und der "Zaunpfähle" zeigt, wenn lediglich der erste und der letzte Deskriptor aktualisiert werden.
  • 45 ein Diagramm ist, das die Grundelement-Signalisierung zwischen dem Hostsystem und der Netzwerkeinrichtung, z. B. dem Netzwerk-Controller der vorliegenden Erfindung, zeigt.
  • 46 ein Ablaufplan ist, der den Prozess des Baus von Deskriptoren innerhalb der Netzwerkeinrichtung zeigt.
  • 47-50 Tabellen sind, die die verschiedenen Felder der Empfangs- und Sendenachricht-Deskriptoren zeigen.
  • Im Folgenden wird die vorliegende Erfindung nun mit Bezug auf die beigefügte Zeichnung, in der bevorzugte Ausführungsformen der Erfindung gezeigt sind, umfassender beschrieben. Allerdings kann diese Erfindung in vielen verschiedenen Formen ausgeführt werden und sollte nicht als auf die hier dargestellten Ausführungsformen beschränkt verstanden werden. Vielmehr werden diese Ausführungsformen zur Verfügung gestellt, damit diese Offenbarung umfassend und vollständig ist und dem Fachmann auf dem Gebiet den Umfang der Erfindung umfassend vermittelt. Gleiche Bezugszeichen beziehen sich überall auf gleiche Elemente.
  • Anhand der 1-3 und insbesondere der 1 und 2 ist ein Diagramm auf hoher Ebene eines Netzwerk-Controllers und eines Hostsystems veranschaulicht, die beispielhaft für die vorliegende Erfindung sind. In einer spezifischen Ausführungsform der Erfindung ist der Netzwerk-Controller ein HDLC-Controller.
  • Die vorliegende Erfindung kann in einer Anzahl verschiedener Netzwerke einschließlich eines herkömmlichen Netzwerks, das Netzwerk-Controller verwendet, verwendet werden. Zum Beispiel könnte die Erfindung in vielen lokalen Netzwerken verwendet werden, wo Computer durch ein Kabel verbunden sind, das von Schnittstellenkarte zu Schnittstellenkarte verläuft. Ein Verkabelungsverteiler könnte einen Mittelpunkt für die an jede Netzwerkschnittstellenkarte angeschlossenen Kabel bereitstellen. Die Verteiler könnten Verbinder wie etwa Koaxial-, Glasfaser- und Aderpaarkabel verbinden. Ein Konfigurationstyp könnte ungeschirmtes Aderpaarkabel, das als Zehn-Base-T bekannt ist, da es eine Signalisierungsgeschwindigkeit von 10 Megabits pro Sekunden (NBps) verwendet, Gleichstrom- oder Basisbandsignalisierungs- und Aderpaarkabel verwenden.
  • Das Netzwerk könnte typisch Router enthalten wie etwa jene, die die im Netware-IPX-Protokoll enthaltenen Zieladressen untersuchen. Die Router würden das Internetpaket, den Wählrahmen oder andere Informationen entfernen und könnten ein IPX-Paket und irgendwelche seiner gekapselten Daten über eine Strecke senden. Irgendwelche Brücken könnten die Adresse jedes Internetpakets untersuchen und sie über die Schaltung senden.
  • 1 veranschaulicht ein typisches Systemdiagramm auf hoher Ebene, das das allgemeine Verfahren, die Vorrichtung und das System der vorliegenden Erfindung veranschaulicht. Wie veranschaulicht ist, sind vier Netzwerk-Controller 40, die auch als Netzwerkeinrichtungen bekannt sind, mit einem 32-Bit-Systembus 42 verbunden, der mit dem Hostsystem 43 verbunden ist. Mit dem Systembus 42 sind ein Hostmikroprozessor 44 sowie das Gemeinschaftsspeicher-Teilsystem 46 verbunden. Jeder Controller 40 besitzt vier Ports 50, 52, 54 und 56, die mit den Vollduplex-Protokollleitungen 58 der jeweiligen Datenübertragungssteuerungs-Schichten auf hoher Ebene verbunden sind.
  • Jeder Netzwerk-Controller 40 ist ein Hochleistungs-Vier-Port-Hochgeschwindigkeits-Netzwerk-Controller, der für die Verwendung in Brücken- und Routerausrüstung der nächsten Generation sowie für irgendeine Ausrüstung, die den HDLC-Betrieb bei T3-Geschwindigkeiten erfordert, bestimmt ist. Vorzugsweise ist jeder Netzwerk-Controller als ein einzelner Chip hergestellt.
  • Wie in 2 gezeigt ist, enthält der Netzwerk-Controller 40 auf der Netzwerkseite wie zuvor angemerkt vier mit 0 bis 3 nummerierte Ports 50, 52, 54 und 56, jeweils mit getrennten Sende- und Empfangs-FIFOs, die einen Halb- oder Vollduplexbetrieb ermöglichen. Jeder Port 5056 besitzt eine Sende-Datenbehandlungseinrichtung 60, die Sendetaktsignale (TCLK) empfängt und Datensignale (T Data) an die Leitungs-Sender-Empfänger 62 weiterleitet. Die Empfangs-Datenbehandlungseinrichtung 64 empfängt ebenfalls Taktsignale (RCLK) und sendet Daten an und von den Leitungs-Sender-Empfängern 62. Außerdem enthalten die Ports jeweils die veranschaulichten Sende- und Empfangs-Zuerst-eingeben/Zuerst-ausgeben-Logikschaltungen (Sende- und Empfangs-FIFO-Logikschaltungen) 66, 68; den 512-Byte-Sende-FIFO 70, die Steuerschaltung 74 und den 512-Byte-Empfangs-FIFO 72. Die 512-Byte-FIFOs 70, 72 sind mit dem Rahmenbus 76 verbunden und die Steuerschaltung 74 ist mit dem Managementbus 78 verbunden. Die FIFO-Logikschaltungen 66, 68 und die Datenbehandlungseinrichtung 60, 64 und die Steuerung 74 arbeiten als geeignete Sende- und Empfangsschaltungsanordnung für die 512-Byte-Sende-FIFOs und 512-Byte-Empfangs-FIFOs (512-Byte-Tx-FIFOs, 512-Byte-Rx-FIFOs).
  • Auf der Systemseite besitzt der Controller 40 eine Hochgeschwindigkeits- (von 25 bis 33 MHz) 32-Bit-Systembus-Schnittstellensteuerungseinheit (SBI) 80, die Einzykluswortübertragungen verwendet, um die Nutzung des Systembusses des Controllers zu minimieren und seine Leistung zu maximieren. Der Betrieb der Speichereinheit mit direktem Zugriff (DMA-Betrieb) ermöglicht, dass die Einrichtung zu einem Bus-Master wird und kann einen effizienten Puffermanagementalgorithmus für Speicherungs- und Weiterleitungsanwendungen verwenden. Die Systembus-Schnittstellensteuerungseinheit 80 enthält die Gemeinschaftsbus-Schnittstellenschaltungsanordnung 82, den Bus-Slave-Controller 84, den DMA-Bus-Master-Controller 85, auch DMA-Controller 85 oder Speichereinheit 85 mit direktem Zugriff, die Konfigurationsdaten-Übertragungsmaschine 86, die Managementdaten-Übertragungsmaschine 88 (die beide mit dem Managementbus 78 kommunizieren) und die Rahmendaten-Übertragungsmaschine 90, die mit dem Rahmenbus 76 kommuniziert.
  • Außerdem enthält der Netzwerk-Controller einen eingebetteten 32-Bit-RISC-Prozessor, der der Kommunikationsprozessorkern oder einfach der Kommunikationsprozessor (CPC) 92 genannt wird, obgleich er für den Anwender nicht direkt zugänglich ist. Der CPC behandelt solche Aktivitäten wie das Aufsammeln der Port-Statistiken, das DMA-Betriebsart-Puffermanagement und Datenübertragungen, den Chip-Selbsttest sowie Host/Chip-Grundelement-Befehls/Antwort-Austausche. Der CPC 92 enthält eine CPU 94, eine ALU 96, die Zeitgeber 98, einen RAM 100, einen Firmware-ROM 102 und eine Unterbrechungsbehandlungseinrichtung 104.
  • Die internen Busse verbinden alle Teilsysteme des Controllers miteinander, um das Management und Rahmendatenübertragungen auf effiziente Weise zu unterstützen. Um den Parallelismus zu erhöhen und dadurch die Leistung zu erhöhen, werden für die jeweiligen Managementdaten und Rahmendaten getrennte Busse sowie der Managementbus 78 und der Rahmenbus 76 verwendet. Der Controller 40 ist mit dem Fachmann auf dem Gebiet bekannten Mitteln auf einem Chip ausgebildet worden.
  • Der für Speicherungs- und Weiterleitungsanwendungen bestimmte Netzwerk-Controller 40 verwendet eine chipintegrierte DMA-Maschine und einen effizienten Puffermanagementalgorithmus, um Rahmen über den 32-Bit-Daten- oder -Rahmenbus 42 zwischen dem Systemspeicher und den acht chipintegrierten 512-Byte-FIFOs 70, 74 zu übertragen. In dieser Operation verhandelt der Controller 40 darüber, dass er zu einem Bus-Master wird, ergreift er Besitz von dem Systembus und verschiebt er daraufhin direkt Rahmen- und Organisationsdaten zwischen dem Chip und dem Systemspeicher 46. Unter Verwendung desselben Busses, der in einer Bus-Slave-Betriebsart arbeitet, kann der Hostprozessor 44 direkt auf die chipintegrierten Konfigurations-/Statusregister des Controllers zugreifen.
  • Der Kommunikationsprozessor 92 verwendet eine Harvard-Architektur mit getrenntem Programm- und Datenbus, die gleichzeitige Datenübertragungen unterstützen. Wie typisch wird eine vierstufige Pipeline-Steuerungseinheit verwendet, um effektiv eine Anweisung pro Taktzyklus auszuführen. Um die von dieser Architektur geforderte hohe Leistungsfähigkeit bereitzustellen, könnte der von dem Kommunikationsprozessor verwendete interne SRAM 100 drei Ports haben, wobei er typisch als ein Drei-Port-RAM (TPR) bezeichnet wird. Die Verwendung dieser Architektur könnte ermöglichen, dass eine Leseoperation aus einem Register (oder TPR), eine ALU-Operation und eine Schreiboperation in ein anderes Register oder an einen anderen TPR-Platz innerhalb einer Anweisung alle innerhalb desselben Taktzyklus stattfinden.
  • In dem ROM 102, der ein chipintegrierter 8 k-ROM sein könnte, ist ein Firmware-Programm enthalten, das den Betrieb des Controllers (einschließlich des Puffermanagements und der Datenübertragungen, des Chip-Selbsttests und Host/Chip-Grundelement-Befehls/Antwort-Austausche sowie die Statistikaufsammlung) steuert.
  • Der Netzwerk-Controller 40 verwendet einen Phasenregelkreis (PLL), um aus dem extern bereitgestellten Systemtakt einen internen Systemtakt zu erzeugen. Dieser von der PLL erzeugte Systemtakt wird zeitlich verzögert, so dass er die Signal-Systemtakt-Verzögerungen, die sich auf die Leistungsfähigkeit auswirken können, minimiert. Folglich muss der Controller-Systemtakt 25 oder 33 MHz sein.
  • Für Verständniszwecke wird anhand der 1-8 eine umfassende Übersicht über den Betrieb gegeben, worauf anhand der nachfolgenden Figuren weitere Einzel heiten des Betriebs folgen. Wenn der Controller initialisiert worden ist und die Ports im Gang sind, verläuft ein typischer Rahmenempfang wie folgt. Durch die HDLC-Port-Empfängerschaltungsanordnung, die die Rx-FIFO-Logik 68, die Rx-Datenbehandlungseinnchtung 64 und die Leitungs-Sender-Empfänger 62 enthält, wird das binäre Muster 01111110 des Eröffnungsmerkers des Rahmens erfasst. Dieser serielle digitale Datenstrom fließt zu der Empfängerschaltungsanordnung des HDLC-Ports, wo eine Suche nach dem Rahmenanfang (einem Nicht-Merker-Muster) ausgeführt wird, um die Oktettausrichtung und den Beginn des Rahmens festzusetzen. Bei dem ersten Oktett nach dem tatsächlichen Rahmen beginnt die Rahmenprüfsequenzberechnung (FCS-Berechnung).
  • Durch die Empfängerschaltungsanordnung wird eine Seriell/32-Bit-Parallelwort-Umsetzung ausgeführt, wobei die Datenworte in dem Empfänger-FIFO (Rx-FIFO) 74 gespeichert werden. Unter der Annahme, dass der Rx-FIFO 74 zu Beginn dieses Szenariums leer war, füllen die Empfangsdaten den Empfangs-FIFO 74 weiter, bis die Anzahl der Worte darin größer als die programmierte Wasserstandsmarkeneinstellung ist. Wie im Folgenden ausführlicher erläutert wird, wird an diesem Punkt an die in dem chipintegrierten RISC 92 laufende Firmware 102 eine Unterbrechung ausgegeben, die eine Datenübertragung für den Empfangs-FIFO 74 anfordert. Diese Unterbrechung ist intern gegenüber dem Netzwerk-Controller 40 und für das Hostsystem 44 unsichtbar.
  • Beim Empfang der Unterbrechung prüft die Firmware 102 ihre (zuvor geholte) chipintegrierte Kopie eines momentanen Empfangsdeskriptors für den anfordernden Port. Falls sie nicht in Besitz eines Puffers ist, weist sie den chipintegrierten DMA an, den richtigen Deskriptor zur Prüfung erneut zu holen. Der Controller 40 holt den Deskriptor wiederholt, bis eines von zwei Ereignissen auftritt: (1) Er erhält den Besitzt des Puffers oder (2) der Empfangs-FIFO läuft über (wobei der Rahmen in diesem Fall verloren geht). Wenn der Pufferbesitz gewährt worden ist, antwortet die Firmware auf die Unterbrechung damit, dass sie die DMA anweist, eine Bündelgröße der Rahmendatenworte von dem Empfangs-FIFO (Rx-FIFO) 74 an einen Empfangspuffer im Systemspeicher zu übertragen. Bei der Übertragung des ersten Bündels des Empfangsrahmens an den Systemspeicher kann daraufhin über ein Master-Unterbrechungsregister (MIR) eine FAN-Unterbrechung (Rahmenadressenankündigungs-Unterbrechung) für den Host erzeugt werden.
  • Bis durch die Empfängerschaltungsanordnung das Rahmen-Ende festgestellt wird, wird ein Zyklus aus Füllen des Empfangs-FIFO 74 (durch die Netzwerk-Controller-Empfängerschaltungsanordnung), Empfänger-Firmware-Unterbrechungen und Leeren des FIFO (durch die DMA) fortgesetzt. An diesem Punkt wird durch die Empfängerschaltungsanordnung die Rahmenprüfsequenz (FCS) des Rahmens geprüft und ein Empfangsstatuswort erzeugt und hinter dem Rahmen in dem Empfangs-FIFO 74 angehängt. Wie im Folgenden erläutert wird, werden die Empfänger-Firmware-Unterbrechungen fortgesetzt, bis der Rest des Rahmens und das Empfangsstatuswort an den Empfangspuffer im Systemspeicher übertragen worden sind. Die Firmware verwendet den chipintegrierten DMA 85, um den Besitz, die Nachrichtengröße, Fehlermerker usw. in dem Empfangsdeskriptor zu aktualisieren, und gibt daraufhin über das Master-Unterbrechungsregister (MIR) (8B) eine "Rahmen-Empfangen"-Unterbrechung (RINT), die einen abgeschlossenen Empfang anzeigt, an den Host aus.
  • Eine typische Rahmensendung findet wie folgt statt. Alle Rahmen werden durch den Netzwerk-Controller 40 von Senderahmendatenpuffern 204 gesendet, die Einträgen in einem Sendedeskriptorring 202 (3) zugewiesen sind. Wenn das System für den Netzwerk-Controller 40 zum Senden eines Rahmens bereit ist, verzichtet es auf den Besitz des zugeordneten Sendedeskriptors bzw. der zugeordneten Sendedeskriptoren und tut daraufhin eines von zwei Dingen: (1) Es wartet darauf, dass der Sendeabfragezeitgeber des Controllers abläuft, was veranlasst, dass der Chip den Tx-Deskriptor auf der Suche nach einem Puffer abfragt, den er besitzt, oder (2) es wird durch den Host eine Sendeanforderung (TDMD) über das Systembetriebsartregister (SRM) ausgegeben. In beiden Fällen weist die Firmware die DMA an, mit dem Holen bündelgroßer Mengen von Rahmendaten von dem Puffer zu beginnen und sie in dem Sende-FIFO des richtigen Ports anzuordnen. Dies wird fortgesetzt, bis der FIFO über die programmierte Wasserstandsmarke gefüllt ist oder bis das Rahmen-Ende festgestellt wird.
  • Wenn genügend Worte in dem Sende-FIFO 70 sind, um den programmierten Sendestartpunkt zu erfüllen, beginnt die Senderschaltungsanordnung, die die Sende-Datenbehandlungseinrichtung 60, die Sende-FIFO-Logik 66 und die Leitungs-Sender-Empfänger 62 enthält, die Sendung. Die Senderschaltungsanordnung führt eine Parallel-Seriell-Umsetzung aus und sendet einen ununterbrochenen seriellen Datenstrom. Es wird ein Eröffnungsmerker bzw. es werden mehrere Eröffnungsmerker gesendet, auf die die Rahmendaten und daraufhin die zyklische Redundanzprüfung (CRC) oder die FCS für den Rahmen folgen. Die Rahmenprüfse quenz-Berechnung (FCS-Berechnung) beginnt bei dem ersten Oktett des Rahmens. Während sich der Sende-FIFO 70 unter eine Wasserstandsmarkeneinstellung leert, gibt die Senderschaltungsanordnung an die chipintegrierte Firmware 102 eine private Unterbrechung aus, die anfordert, dass weitere Daten aus dem Systemspeicher kopiert werden.
  • Bis das Rahmen-Ende (EOF) in den FIFO geschrieben worden ist, wird ein Zyklus aus Leeren (durch die Sendereinheit) und Gefülltsein (durch die DMA) fortgesetzt. Wenn der Sender die letzten Daten des Rahmens aus dem Sende-FIFO entfernt, hängt er optional die FCS an, die er berechnet hat (die durch den Controller angehängte FCS kann auf rahmenweiser Grundlage gesteuert werden). Der Sender schließt den Rahmen, indem er einen oder mehrere Schließmerker sendet.
  • Der eingebettete Prozessor 92 in dem Netzwerk-Controller 40 unterhält zur Verwendung für das Hostsystem 12 Statistiken in chipintegrierten Registern. Auf diese Statistiken wird durch den Host unter Verwendung einer Bus-Slave-Konfigurations/Statusregister-Operation zugegriffen. Wie im Folgenden erläutert wird, kann als ein zusätzliches Merkmal angefordert werden, dass der Controller seinen chipintegrierten DMA verwendet, um eine vollständige Kopie der chipintegrierten Statistiken im Systemspeicher anzuordnen.
  • Die Systembus-Schnittstelleneinheit (SBI) 80 führt in der DMA-Betriebsart drei Schlüsselfunktionen aus: (1) DMA-Maschine für HDLC-Rahmen-Datenübertragungen (Bus-Master); (2) Mikroprozessor-Port für den Zugriff auf Konfigurations/Status-Register (Bus-Slave); (3) und Quelle für vorzugsweise zwei Unterbrechungsanschlussstifte (MINTR# und PEINTR#). Sowohl Bus-Master- als auch Bus-Slave-Operationen nutzen den gleichen 32-Bit-Datenbus und nutzen einige derselben Steuersignale gemeinsam. Es gibt getrennte Anschlussstifte zur Auswahl einer richtigen Betriebsart für Bus-Slave-Operationen (CBIG) und für Bus-Master-Operationen (DBIG).
  • Die Systembus-Schnittstelleneinheit (SBI) 80 enthält die Mehrkanal-DMA-Einheit 85 zur Ausführung von Blockdatenübertragungen mit dem Systemspeicher 46 über einen Gemeinschaftsbus 42 ohne Beteiligung des Hostprozessors 44. Wie im Folgenden anhand von 3 erläutert wird, fordert der Controller jedes Mal, wenn er auf einen Organisationsblock 200, auf einen Sende- oder Empfangsdeskriptor 206 oder auf einen Sende- oder Empfangsrahmendatenpuffer 204 zugreifen muss, den Besitz des Systembusses an.
  • Jedes Mal, wenn der Netzwerk-Controller 40 auf eine dieser Datenstrukturen zugreift, verhandelt er über den Busbesitz, überträgt er Daten (diese können mehrere Worte sein) und verzichtet er daraufhin auf den Busbesitz. Für einen gegebenen Busbesitz wird lediglich auf aufeinander folgende Adressen zugegriffen. Die Größe jeder Bustransaktion (die Anzahl der übertragenen Worte oder die "Bündelgröße") kann sich ändern und ist für Rahmendatenübertragungen und Statistikdatenausgaben programmierbar. Die Größe des Organisationsblocks 200 und der Deskriptorübertragung wird durch den Netzwerk-Controller 40 auf Bedarfsgrundlage bestimmt und kann von einem bis zu zweiunddreißig aufeinander folgenden Worten reichen. Die DMA-Einheit 85 innerhalb der Systembus-Schnittstelleneinheit 80 stellt die erforderliche Zeitgebung für Einzyklenzugriffe bereit, um die Systembusnutzung durch den Controller zu minimieren.
  • Der Konfigurations/Status-Registerzugriff auf den Netzwerk-Controller 40 könnte unter Verwendung desselben 32-Bit-Datenbusses erfolgen, der für DMA-Übertragungen verwendet wird. Aus diesem Grund können keine Registerzugriffe ausgeführt werden, wenn der Controller der Bus-Master ist. Die Konfigurations/Status-Operation (kurz: "Konfig"-Operation) ist so konstruiert, dass sie mit den am weitesten verbreiteten Mikroprozessoren arbeitet. Alle Stellen innerhalb des Netzwerk-Controllers könnten als 32-Bit-Register implementiert sein. Über diese Schnittstelle könnte auf alle Konfigurations- und Statusregister zusammen mit allen Netzwerkstatistiken zugegriffen werden.
  • Nunmehr anhand von 4 umfasst der Betrieb des Controllers der vorliegenden Erfindung drei wichtige Systemspeicher-Datenstrukturen: (1) den Organisationsblock 200; (2) die Deskriptorringe 202 mit den Deskriptoren 206; und (3) die Rahmendatenpuffer 204. Für irgendeine gegebene Anwendung werden ein Organisationsblock 200, acht Deskriptorringe 202 (3) und mehrere Rahmendatenpuffer 204 verwendet. Wie in 3 gezeigt ist, gibt es für jeden FIFO 70, 72 an jedem Port einen Deskriptorring 202. Vor der Initialisierung des Controllers 40 wird erwartet, dass der Host 44 diese Datenstrukturen im Systemspeicher zuordnet und konfiguriert. Der Organisationsblock 200 wird für die Chip-Initialisierung und als ein Austauschpunkt für durch den Controller unterhaltene Netzwerkstatistiken verwendet.
  • Wie dem Fachmann auf dem Gebiet bekannt ist, ist jeder Deskriptorring 202 eine Ringwarteschlange mit Einträgen oder Deskriptoren 206, die Zeiger und Informationen für Rahmendatenpufter 204 enthalten. Beispiele der Einrichtungen und Systeme, die die Verwendung von Deskriptoren und Deskriptorringen zeigen, sind in den US-Patenten Nr. 5.299.313 und 5.136.582 offenbart, deren Offenbarungen hiermit durch Literaturhinweis eingefügt sind. Jeder Deskriptorring 202 ist für einen spezifischen FIFO 70, 72 innerhalb des Controllers 40 vorgesehen und jeder Zweiwort-Deskriptoreintrag 206 innerhalb eines Rings ist einem spezifischen Rahmendatenpuffer 204 im Systemspeicher zugeordnet (5). Die Datenpuffer sind als Speicherblöcke definiert (die typisch von 512 bis 2048 Bytes reichen), die Rahmen für die Sendung enthalten oder Raum für die Rahmenaufnahme bereitstellen.
  • Als Teil der Initialisierung des Controllers 40 muss der Host einen Abschnitt des Systemspeichers reservieren. Dieser Speicher wird zum Halten von Puffermanagementzeigern, Konfigurationsinformationen und portspezifischen Netzwerkstatistiken verwendet. Da der Organisationsblock 200 periodisch mit Statistiken aktualisiert werden kann und der Controller 42 auf ihn Bezug nehmen kann, muss er während des gesamten Betriebs der Einrichtung eine aktive Speicherzuordnung bleiben.
  • Der (auch Initialisierungsblock genannte) Organisationsblock 200 besteht aus 512 zusammenhängenden Bytes und ist im Speicher wortbündig. 7 veranschaulicht weitere Einzelheiten des Organisationsblocks 200 und seiner Einzelheiten. Die ersten 15 Worte 200a des Organisationsblocks enthalten Informationen, die zur Chip-Initialisierung verwendet werden. Der Controller nimmt immer auf eine chipintegrierte Kopie dieses Abschnitts Bezug, es sei denn, er wird angewiesen, einen Teil oder alles erneut aus dem Gemeinschaftssystemspeicher 46 zu holen. Der Initialisierungsabschnitt 200a des Organisationsblocks 200 enthält Systemspeicherzeiger auf die acht Deskriptorringe 202 und Einrichtungsinformationen für sechs chipintegrierte Zeitgeber und neun DMA-Bus-Master-Bündelgrößen (die maximale Anzahl von Worten, die für verschiedene Datentypen pro Busbesitz übertragen werden).
  • Wie im Folgenden erläutert wird, können die nächsten zusammenhängenden vier Worte 200b von dem Host 43 verwendet werden, um die Geometrie der Deskriptorringe 202 und die zugeordneten Rahmendatenpufferdimensionen im externen Gemeinschaftsspeicher 46 zu definieren. Der Controller 40 kann die (Sende-)TX- Deskriptorringe und (Empfangs-)RX-Deskriptorringe 202 automatisch konstruieren (3).
  • Die verbleibenden Worte 200c des Organisationsblocks 200 stellen einen Raum für den Controller 40 bereit, um Bilder seiner chipintegrierten HDLC-Rahmenstatistiken in den Gemeinschaftssystemspeicher 46 zu kopieren, wenn er durch das richtige Grundelement dazu angewiesen wird. Diese periodischen Statistikschnappschüsse sind zur Verwendung durch das System. Wenn das Statistikdatenausgabemerkmal nicht verwendet wird, ist die Zuordnung dieser Worte des Organisationsblocks 200 nicht erforderlich.
  • Nachdem das Rücksetzen des Chips abgeschlossen ist und wenn ein Rücksetzen-im-Gang-Anschlussstift inaktiv geworden ist, kann die Initialisierungsprozedur beginnen, wie sie in den 45 und 46 gezeigt ist und im Folgenden anhand von Abschnitt V ausführlicher erläutert wird. Zunächst richtet der Host im Systemspeicher den Organisationsblock 200, die Deskriptorringe 202 und die Rahmendatenpuffer 204 ein. Zweitens schreibt der Host 44 die Startsystemadresse des Organisationsblocks 200 in ein "Zeiger auf den Organisationsblock" (PAB) genanntes Register innerhalb des Controllers 40, wobei er optional Grundelementunterbrechungen freigibt. Nachfolgend wird durch den Host 44 ein Unterbrechungsgrundelement (INT-Grundelement) an den Netzwerk-Controller ausgegeben. Dies veranlasst, dass der Controller die ersten 32 Worte (7) des Organisationsblocks 200 zur Verarbeitung in den Chip des Netzwerk-Controllers kopiert. Der Netzwerk-Controller antwortet daraufhin mit einer Quittierungsgrundelementunterbrechung INIT_COMPLETE oder ACK (INIT) zu dem Host. An diesem Punkt darf der Host 44 alle Register des Controllers organisieren oder konfigurieren, für jeden HDLC-Port Betriebsarten festsetzen, Sender und Empfänger freigeben und verschiedene Unterbrechungen freigeben und maskieren. Wie weiter in 45 gezeigt ist, gibt der Host, wenn er fertig ist, ein START-Grundelement an den Netzwerk-Controller 40 aus, um den normalen Betrieb zu beginnen. Das START-Grundelement veranlasst, dass der Controller die ersten zwei Deskriptoren in jedem der acht Sende- und Empfangsdeskriptorringe vorausliest und für Rahmensendungen vorbereitet.
  • Die ersten acht Einträge in dem Organisationsblock 200 sind Systemadressen, die als Zeiger auf das obere Ende jedes Deskriptorrings 202 (3) wirken. Da die Deskriptoren 206 im Speicher wortbündig (oder bytebündig) sein müssen, sollten diese Zeiger immer mit Nullen in den niedrigstwertigen zwei Adressenbits (der Byteadresse) programmiert sein. Mit anderen Worten, alle Deskriptorringzeiger sollten in gleiche Teile durch vier teilbar sein. Aus nicht bündigen Deskriptorringzeigeradressen ergibt sich eine nicht voraussehbare Operation. Wenn das INIT-Grundelement abgeschlossen ist, nimmt der Netzwerk-Controller 40 auf seine Kopie dieser Zeiger Bezug, wobei das Ändern der Zeiger im Systemspeicher nach dem INIT keine Wirkung hat, wenn kein weiteres INIT ausgeführt wird und kein Deskriptorring-Auffrischungsgrundelement ausgegeben wird.
  • Wie zuvor angemerkt wurde, verwendet jeder Sendekanal und jeder Empfangskanal innerhalb jedes Ports 50, 52, 54 und 56 für insgesamt acht Ringe (einen Sendering und einen Empfangsring pro Port) einen hierfür vorgesehenen Deskriptorring 202 (3 und 4). Ein Deskriptorring 202 (4) ist eine Ringwarteschlange, die mehrere Zweiworteinträge umfasst, die die "Deskriptoren 206" genannt werden. Jeder Deskriptoreintrag 206 beschreibt einen Rahmendatenpuffer 204. Das erste Wort 208 des Eintrags eines Deskriptors 206 enthält Informationen über seinen Rahmendatenpuffer 204 und den Rahmen oder Teilrahmen, den der Rahmendatenpuffer enthält (5). Das zweite Wort 210 des Eintrags eines Deskriptors 206 ist eine Systemadresse, ein Zeiger auf das obere Ende seines zugeordneten Rahmendatenpuffers. Die Größe der Deskriptorringe 202 kann von 1- bis 8-k-Einträgen reichen. Der Netzwerk-Controller 40 erhält bei der Initialisierung einen Zeiger auf das obere Ende jedes Rings in dem Organisationsblock 200. Beginnend beim oberen Ende des Rings wird auf die Deskriptoreinträge 206 immer aufeinander folgend zugegriffen. Der letzte Deskriptor in einem Deskriptorring 202 enthält einen Merker, der das Ende des Rings kennzeichnet. Jedes Mal, wenn der Controller einen Ring-Ende-Merker feststellt, kehrt er zum ersten Eintrag in dem Ring zurück oder wird er auf ihn zurückgesetzt.
  • Ein Besitzbit (OB) 212 in dem ersten Wort jedes Deskriptors 206 zeigt, ob der Host oder der Controller den zugeordneten Rahmendatenpufter besitzt. Der Besitz folgt einem spezifischen Protokoll, das von dem Controller und dem Host eingehalten werden muss. Die Vorschrift ist einfach: Kein Teil des Deskriptors oder seines zugeordneten Puffers kann geändert werden, wenn der Besitz eines Deskriptors 206 dem anderen Teil überlassen wurde. Der Host gibt dem Controller den Besitz leerer Puffer für den Rahmenempfang und voller Rahmendatenpufter für die Rahmensendung. Umgekehrt übergibt der Netzwerk-Controller den Besitz für Sendepuffer, die er verwendet hat, und für Empfangspuffer, die er gefüllt hat, zurück an den Host.
  • Für den Rahmenempfang an irgendeinem gegebenen Port muss der Host 44 den Controller 40 mit dem Besitz zusammenhängender Deskriptoren versehen, die auf leere Rahmendatenpuffer 204 zeigen. Nachdem die allerersten Worte des Rahmens an den Speicher 46 übertragen worden sind, wird eine Rahmenadressenankündigungs-Unterbrechung (FAN-Unterbrechung) ausgegeben (die im Folgenden im Abschnitt I ausführlicher erläuterten 13-21). Wenn ein Rahmen von dem Controller vollständig empfangen worden ist, wird daraufhin der Besitz dieser Komponentendeskriptoren neu zugewiesen. Der Host wird hinsichtlich dieses Ereignisses über eine RINT-Unterbrechung signalisiert. Der Host 44 ist verpflichtet, ein Master-Unterbrechungsregister (MIR) (8B) zu lesen, um den spezifischen Port zu vermuten, der das Signal ausgibt. Wenn dies ausgeführt ist, kann der Rahmen auf gewisse Weise abgesendet werden, wobei der Besitz der relevanten Deskriptoren an den Controller zurückgegeben wird.
  • In einer typischen Operation "folgt" der Host 44 dem Netzwerk-Controller 40 um den Deskriptorring 202, wobei er "leere" Pufferdeskriptoren 206 in seinem Gefolge zur Verwendung für den Netzwerk-Controller 40 lässt. Falls der Netzwerk-Controller 40 dem Host 44 zu weit voraus ist, kann er um den Deskriptorring 202 zurückgesetzt werden und Deskriptoren 206 feststellen, die er nicht besitzt. Falls dies geschieht, können hereinkommende Rahmen verloren gehen. Der Host wird über irgendwelche Überläufe des Empfangs-FIFO 70 über eine frühe Stauungsankündigungsunterbrechung (ECN-Unterbrechung) informiert (46-43, anhand von Abschnitt III im Folgenden ausführlicher erläutert). Daraufhin kann der Host reagieren, um sein Verhalten zu ändern, um zusätzliche verlorene Rahmen zu vermeiden.
  • Der Netzwerk-Controller "folgt" dem Host 44 für Rahmensendungen an einem gegebenen Port 40 um einen Sendedeskriptorring 202, wobei er verwendete Pufferdeskriptoren in seinem Gefolge für den Host nutzbar lässt. Der Host gibt dem Controller 40 nur dann den Besitz der Deskriptoren 206, wenn er einen oder mehrere Rahmen sendebereit hat. Wenn ein Rahmen durch den Controller vollständig gesendet worden ist, wird der Besitz dieses Komponentendeskriptors 206 zur Wiederverwendung an den Host 44 zurückgegeben. Der Host 44 wird hinsichtlich dieses Ereignisses über eine TINT-Unterbrechung signalisiert.
  • In einigen Anwendungen kann sich der Host 44 dafür entscheiden, Rahmendaten puffer 206 zu verwenden, deren Größe kleiner als die der Empfangs- oder Senderahmen ist. Ein einzelner Rahmen erstreckt sich über mehrere Puffer. Dies ermöglicht, dass Rahmen durch den Netzwerk-Controller 40 zerlegt (beim Empfang gestreut) oder zusammengesetzt (bei der Sendung aufgesammelt) werden. Durch "Verkettung" der zugeordneten Deskriptoren 206 miteinander können mehrere Datenpuffer die Komponententeile eines Rahmens halten. Definitionsgemäß sind verkettete Deskriptoren aufeinander folgende Einträge in einem Deskriptorring, wobei in dem Abschluss-Deskriptor der Kette der Rahmen-Ende-Merker (EOF-Merker) 214 gesetzt ist. Mit anderen Worten, der Puffer eines Deskriptoreintrags, der in Besitz ist, dessen Rahmen-Ende-Merker aber nicht gesetzt ist, wird als Teil eines Rahmens und nicht als ein gesamter Rahmen betrachtet.
  • Während des Empfangs eines großen Rahmens verkettet der Netzwerk-Controller 40 die Deskriptoren 206 einzeln miteinander, während er jeden Rahmendatenpuffer 204 vollständig füllt. Wenn das Rahmen-Ende empfangen und an den Systemspeicher übertragen worden ist, wird in dem Abschluss-Deskriptor der Kette der Rahmen-Ende-Merker (EOF) gesetzt. Während der Sendung kann der Netzwerk-Controller 40 aus den Inhalten der verketteten Puffer aufeinander folgend einen einzelnen Rahmen konstruieren. Die Sendung des Rahmens wird nur dann abgeschlossen, wenn er einen Puffer feststellt, dessen Deskriptor den Rahmen-Ende-Merker gesetzt hat.
  • Jedes Mal, wenn drei oder mehr Rahmendatenpuffer miteinander verkettet worden sind, optimiert der Netzwerk-Controller 40 durch Aktualisieren des betroffenen ersten und letzten Deskriptoreintrags die Busnutzung (4). Wenn der Netzwerk-Controller 40 mit den an einem verketteten Rahmen beteiligten Puffern fertig ist, gibt er zuerst den Besitz des letzten Deskriptors und daraufhin den Besitz des ersten Deskriptors zurück. Diese sind die "Zaunpfähle" des Rahmens (44 und Abschnitt IV unten). Der Host 44 nimmt den Besitz aller dazwischenliegenden Rahmendatenpuffer an, auch wenn sie im Besitz des Controllers sind. Somit sollte der Host jedes Mal, wenn er einen Deskriptor im Besitz des Hosts feststellt, der nicht durch den Rahmen-Ende-Merker gekennzeichnet ist, den Besitz aller aufeinander folgender Deskriptoren bis zu einschließlich dem nächsten Deskriptor im Besitz des Hosts mit dem gesetzten Rahmen-Ende-Merker annehmen.
  • Um genaue Informationen über einen Rahmen zu liefern, wenn er vollständig gesendet oder empfangen worden ist, werden sämtliche Merker und Felder des ers ten und des letzten Deskriptors in einer "Zaunpfahl"-Kette durch den Controller 40 aktualisiert. Das erste Wort 208 des Deskriptors 206 enthält außerdem eine Puffergröße 216 und eine Nachrichtengröße 218. Für Empfangsrahmen wird das Feld der Nachrichtengröße 218 (MSIZE-Feld) des ersten Deskriptors in der Kette mit der Byteanzahl des gesamten Rahmens und nicht einfach mit der Byteanzahl des zugeordneten Rahmendatenpuffers (da diese gleich der Puffergröße ist) aktualisiert. Allerdings enthält das Nachrichtengrößefeld 218 des Abschluss-Deskriptors lediglich die tatsächliche Anzahl der von den Rahmendaten in ihrem zugeordneten Puffer belegten Bytes. Dies ermöglicht, dass der Host das Empfangsstatuswort, das in dem ersten vollständigen Wort, das auf die Rahmendaten in dem Puffer folgt, gespeichert ist, leicht auffindet (es wird angemerkt, dass die vier Bytes des Statusworts in der in den MSIZE-Feldern gespeicherten Anzahl nicht enthalten sind).
  • In einem einzelnen Rahmendatenpufter 204 sollte nie mehr als ein Rahmen vorhanden sein. Ein einzelner Rahmen kann sich über den Rahmendatenpufter 204 mehrerer Deskriptoren 206 erstrecken, falls sie in dem Deskriptorring 202 zusammenhängend sind. Dies wird Pufferverkettung genannt. Der Netzwerk-Controller 40 sollte immer im Besitz mehrerer leerer und zusammenhängender Empfangspuffer sein. Der Netzwerk-Controller 40 sollte lediglich in den Besitz von Sendepuffern gelangen, die sendebereite Rahmen enthalten.
  • Obgleich dies nicht erforderlich ist, wird die beste Leistungsfähigkeit erhalten, wenn die Rahmendatenpufter 204 im Speicher wortbündig und groß genug sind, dass keine Verkettung erforderlich ist.
  • In einer typischen Speicherungs- und Weiterleitungsanwendung unterhält der Host im Systemspeicher einen "Pool" leerer nicht zugeordneter Rahmendatenpuffer 204. Die Zuweisung eines Rahmendatenpuffers 204 zu einem Empfangsdeskriptor 206 entfernt ihn effektiv aus diesem Pool. Wenn ein Rahmendatenpufter 204 gefüllt worden ist, wird er neu zugewiesen oder zu einem oder mehreren Sendedeskriptoren umgeschaltet. Wenn die Sendung abgeschlossen ist, wird der Rahmendatenpufter 204 zur Wiederverwendung an den Pool zurückgegeben und der Zyklus wiederholt.
  • Die nächsten zwei Worte in dem Organisationsblock 200 nach den Deskriptorringzeigern 200d enthalten die Zeitgeber-Neustart- und Zeitgeber-Steuerungsinforma tionen 200e. Der Controller verwendet einen Hardware-Prescale-Zeitgeber 220 (6) und einen Teiler 222, um die UCLK-Frequenz 224 herunterzuteilen. Zum Einstellen der Ausgangsfrequenz des Prescale-Zeitgebers wird ein Prescale-Zeitgeber-Neustartwert 226 verwendet. Obgleich schnellere und langsame Perioden möglich sind, wird ein Prescale-Neustartwert typisch so ausgewählt, dass er zu einer 20-Millisekunden- Prescale-Zeitgeberperiode (50-Hz-Prescale-Zeitgeberperiode) führt. Das Ausgangssignal des Prescale-Zeitgebers 226 wird als die Grundinkrementfrequenz für mehrere 8-Bit-Sekundärzeitgeber 228 verwendet, die innerhalb des Netzwerk-Controllers 40 unterhalten werden. Diese Sekundärzeitgeber können sein: ein Statistikdatenausgabe-Zeitgeber 230, (vier) Sendedeskriptor-Abfragezeitgeber 232238 der Ports 0–3. Jeder der fünf 8-Bit-Zeitgeber besitzt einen zugeordneten Neustartwert, der in dem Organisationsblock 200 festgesetzt ist. Die folgende Gleichung zeigt, wie die Prescale-Zeitgeber-Neustartwerte zu berechnen sind.
    Figure 00240001
    wobei TPrescale die gewünschte Prescale-Zeitgeberperiode und TUCLK die Systemtaktperiode sind. Tabelle 1: Typische Prescale-Zeitgeber-Neustartwerte
    Figure 00240002
  • Die nächste Gleichung zeigt, wie die Sekundärzeitgeber-Neustartwerte zu berechnen sind:
    Figure 00240003
    wobei Tsekundär die gewünschte Sekundärzeitgeberperiode und TPrescale die Prescale-Zeitgeberperiode sind. Tabelle 2: Typische Sekundärzeitgeber-Neustartwerte
    Figure 00250001
  • Jeder der Sekundärzeitgeber besitzt ein entsprechendes Freigabesteuerungsbit, das in dem Zeitgeberfreigabefeld des Organisationsblocks (7) enthalten ist. Eine "Eins" gibt den Zeitgeber frei; eine "Null" sperrt den Zeitgeber. Die folgende Tabelle zeigt die Bitstellen jeder der fünf Sekundärzeitgeberfreigaben. Wenn INIT abgeschlossen ist, nimmt der Controller auf seine chipintegrierte Kopie der Freigaben Bezug. Eine Änderung der Freigaben im Systemspeicher hat keine Wirkung, wenn nicht ein weiteres INIT ausgeführt oder ein TIMER_ENABLE-Grundelement (0×0F) ausgegeben wird. Falls keiner der Sekundärzeitgeber freigegeben ist, wird der Prescale-Zeitgeber automatisch gesperrt. Tabelle 3: Organisationsblockzeitgeber-Freigabefeld (1 = freigegeben: 0 = gesperrt)
    Figure 00250002
  • Die Granularität des Prescale-Zeitgebers 220 ermöglicht einen weiten Bereich der Zeitgeberauflösung. Wenn ein Prescale-Zeitgeber-Neustartwert 226 ausgewählt wird, verbraucht jeder Prescale-Zeitgeber-Ablauf einen kleinen Anteil der chipintegrierten Verarbeitungsbandbreite des Controllers. Die Auswahl einer sehr kleinen Prescale-Zeitgeberperiode (eines großen Neustartwerts) kann unbeabsichtigt die Fähigkeit des Controllers zum Bedienen hereinkommender und herausgehender Rahmen behindern und dadurch die Gesamtleistungsfähigkeit der Einrichtung beeinflussen. Es wird empfohlen, den Prescale-Zeitgeber nicht unter einer Periode von einer Millisekunde zu betreiben (6).
  • Bei der Auswahl der Sekundärzeitgeber-Neustartwerte für die Sendedeskriptor-Abfragezeitgeber 232238 sollten zwei Faktoren betrachtet werden: (1) die Halb- oder Vollduplexbetriebsart des Ports; und (2) der erwartete Verkehr an einem gegebenen Port, z. B. der tatsächlich verwendete Prozentsatz der verfügbaren Bandbreite. Im Allgemeinen ist die Abfragefrequenz umso höher, je größer der Verkehr ist. Einige Systeme können sich entscheiden, die Sendedeskriptorabfrage nicht zu verwenden und sich stattdessen auf die Sendeanforderungsbits (TD-Bits) in dem Systembetriebsartregister (SMR) zu stützen, um die Rahmensendung zu beginnen.
  • Die nächsten zwei Worte 200f in dem Organisationsblock 200 nach den Zeitgebungsworten 200e beziehen sich auf die Bündelgröße (die vier Bytes bei PAB + 40) (7) und zeigen die einzelnen Bündelgrößen für die DMA-Datenübertragung an die entsprechenden Sendeports an. Die nächsten vier Bytes (PAB + 44) bestimmen die Bündelgrößen für die DMA-Rahmensendung von den entsprechenden Empfangsports. Die DMA 85 überträgt Daten immer in einer Bündelgröße, die durch die in diesen Feldern eingestellten Werte bestimmt ist, bis die verbleibenden zu übertragenden Daten kleiner als die gewählte Bündelgröße sind. Wenn das INIT-Grundelement abgeschlossen worden ist, nimmt der Controller auf eine chipintegrierte Kopie dieser Werte Bezug. Nachfolgende Änderungen müssen über die Übergabe des richtigen Grundelementbefehls angezeigt werden.
  • Die Einstellung des Bündel- und Rahmenpuffergrößenäquivalents minimiert die erforderliche Anzahl der Busübertragungen pro Rahmen und liefert eine verbesserte Leistungsfähigkeit, falls die Systembeschränkungen große DMA-Bündel zulassen.
  • Eine Systemtaktperiode 200g im Byte Nr. 1 von PAB + 48 sollte den Wert "0×28" enthalten, falls mit einem Systemtakt von 25 MHz gearbeitet wird, oder sollte den Wert "0×1E" enthalten, wenn mit dem Systemtakt von 33 MHz gearbeitet wird. Wenn das INIT-Grundelement abgeschlossen worden ist, nimmt der Controller ausschließlich auf die chipintegrierte Kopie dieses Werts Bezug, wobei er diesen Wert im Systemspeicher ändert, nachdem INIT keine Wirkung gehabt hat, sofern kein weiteres INIT ausgeführt wird.
  • "N1" ist eine 16-Bit-Variable, die durch den Host für die maximal zu empfangende Rahmengröße wählbar ist. Die N1-Werte für die Ports Nr. 0 und Nr. 1 befinden sich bei PAB + 52, 200h, und für die Ports Nr. 2 und Nr. 3 bei PAB + 56, 200i. Der N1-Wert wird typisch bei der Initialisierung durch den Host programmiert und könnte sich irgendwo zwischen einem Byte bis zu 64 kBytes erstrecken. N1 ist für die meisten Anwendungen typisch 2 kBytes oder weniger. Irgendein empfangener Rahmen, der N1 überschreitet, veranlasst, dass die Statistik "Rahmen größer als N1" für diesen Port inkrementiert wird. Wenn das INIT-Grundelement abgeschlossen ist, nimmt der Controller 40 auf eine chipintegrierte Kopie dieser Werte Bezug, wobei er diese Werte im Systemspeicher ändert, nachdem INIT keine Wirkung hat, sofern kein weiteres INIT ausgeführt wird.
  • Falls die Werte der Felder "Senderinggröße (TX-Ringgröße)" oder "Empfangsringgröße (RX-Ringgröße)" (PAB + 60 bis PAB + 72), 200b, nicht null sind, baut der Netzwerk-Controller 40 automatisch die spezifischen Sende- und/oder Empfangsdeskriptorringe 202 im Gemeinschaftsspeicher 46. Falls diese Felder andernfalls null sind, baut die Controller-Firmware 102 die zugeordneten Deskriptorringe nicht, sondern erwartet vielmehr, dass der Host 44 diese Strukturen bereits im Gemeinschaftsspeicher 46 gebaut hat.
  • Ein Grundelement-Befehlsregister (PCR) (8A) stellt für die Hostsystem-Software einen Mechanismus bereit, um Befehle/Anweisungen zur Verarbeitung an die interne Firmware 102 des Netzwerk-Controllers 40 auszugeben. Jedes einzelne (in der unteren Hälfte dieses Registers) ausgegebene Hostgrundelement wird durch die Firmware über ein Anbietergrundelement (in der oberen Hälfte dieses Registers) quittiert.
  • Damit der Grundelementmechanismus richtig arbeitet, muss sowohl von dem Host als auch von der Firmware ein Grundelementaustauschprotokoll befolgt werden. Der Host darf immer nur ein Grundelement ausgeben, wobei er auf die Anbietergrundelementquittierung wartet, bevor er ein weiteres Grundelement ausgibt. Andererseits erzeugt die Firmware für jedes ausgegebene Hostgrundelement ein und nur ein Anbietergrundelement.
  • Ein Master-Unterbrechungsregister (MIR) (8B) zeichnet Ereignisse auf, um sie über einen Anschlussstift MINTR# an den Hostprozessor zu berichten. Das Register ist grob in einem Byte von Unterbrechungsereignissen pro HDLC-Port organisiert, wobei einige verschiedene Bits (d. h. PINT, SPURINT, MERR, PPLOST, SERR, HPLOST, WERR) für die Bytestellenkonsistenz verteilt sind.
  • Weitere nicht ausführlich beschriebene Register wie etwa ein Master-Unterbrechungsmaskenregister (MIMR) und ein Portfehler-Unterbrechungsmaskenregister (PEIMR) ermöglichen, dass der Host wählt, welche entsprechenden MIR- und PEIR-Unterbrechungsereignisse an verschiedenen Anschlussstiften tatsächlich eine Unterbrechung erzeugen. Diese Register beeinflussen nicht die Setzung der Bits in dem MIR und in dem PEIR, sondern maskieren lediglich die Erzeugung von Hostunterbrechungen im Ergebnis des Sendens eines Unterbrechungsbits.
  • I. Rahmenadressenankündigung (FAN)
  • Nunmehr anhand der 9-21 werden weitere Einzelheiten und Zeichnungen veranschaulicht, die die Rahmenadressenankündigungs-Unterbrechung (FAN-Unterbrechung) zeigen, die eine Hybridoption zwischen der klassischen Speicherungs- und Weiterleitungsarchitektur (SF-Architektur) und der Durchschaltarchitektur (C/T-Architektur) ermöglicht. In Übereinstimmung mit der vorliegenden Erfindung ist die Rahmenadressenankündigung (FAN) eine Unterbrechung, die an einen Hostprozessor 44 signalisiert wird, wenn alle relevanten Adressenfelder für einen Empfangsrahmen momentan im Gemeinschaftsspeicher 46 liegen. Daraufhin kann der Rahmen durch eine Adressierungs- und Nachschlagemaschine mit dem geeigneten Algorithmus und der geeigneten Nachschlagetabelle 46c (20) verarbeitet und an den richtigen Port und an das richtige Ziel abgesendet werden. Da das Routing parallel stattfinden kann, während der Rest eines Rahmens von dem Netzwerkkabel hereinkommen könnte, stellt dies die Pipelinewirkung sicher.
  • Außerdem kann durch die sorgfältige Auswahl der Bündelgröße der DMA 85 irgendein geeignetes Adressenfeld zur Verfügung gestellt werden, wenn das Anfangsbündel des Rahmens gelesen wird. Je nach Größe des Bündels könnten die Anfangsblöcke der MAC-Ebene, die IP-Adressen oder sogar die TCP/UDP-Ports in den Speicher gelesen werden. Dies erleichtert L2-L3- oder L4-Rahmen-Vermittlungsanwendungen.
  • Die 9, 10, 11 und 12 veranschaulichen, wie der TCP/UDP-Anfangsblock in einem IP-Datenbereich und in dem IP-Anfangsblock gekapselt ist, die in einem MAC-Datenbereich enthalten sind. 9 gibt eine gute Anzeige der Schichtung. Es sind der TCP/UDP-Datenbereich 240 und der TCP/UDP-Anfangsblock 240a, der IP-Datenbereich 242, der Anfangsblock 242a, der MAC-Datenbereich 244 und der MAC-Anfangsblock 244a veranschaulicht.
  • 10 zeigt einen 802.3-(MAC-)-Sicherungsschicht-Anfangsblock mit 18 Bytes, während in 11 ein 20-Byte-Internet-IP-Anfangsblock veranschaulicht ist. 12 veranschaulicht einen 20-Byte-TPC-Anfangsblock. Die richtigen Adressenfelder sind aufgeführt.
  • Die 1320 veranschaulichen den Grundprozess des Verfahrens und des Systems des Routings eines Datenrahmens in Übereinstimmung mit der vorliegenden Erfindung. Wie veranschaulicht ist, enthält der als SWIFT bezeichnete Netzwerk-Controller 40 die vier HDLC-Ports 50, 52, 54 und 56, wobei jeder Port einen Sende-FIFO 70 und einen Empfangs-FIFO 72 enthält. Außerdem enthält der Netzwerk-Controller den auch als ein Steuerprozessor (CPC) 92 bekannten RISC-Prozessor und die Speichereinheit mit direktem Zugriff (DMA) 85. Ein CPC-Bus 250 verbindet den CPC 92 und die DMA-Einheit 85 miteinander. Der Unterbrechungsbus 252 verbindet zwischen den verschiedenen HDLC-Ports und dem CPC 92. Ein FIFO-Bus 254 verbindet die DMA und die verschiedenen HDLC-Ports.
  • Wie in 14 gezeigt ist, tritt anfangs ein Rahmen in den HDLC-Port 3 ein, wobei er in dem Empfangs-FIFO 72 des Netzwerk-Controllers 40 empfangen wird. In 14 hat der Rahmen die durch den Pfeil 258 angezeigte Wasserstandsmarke erreicht, wobei der Port über den Unterbrechungsbus 252 eine Paketstartunterbrechung (SOP-Unterbrechung) (15) zu dem CPC 92 beginnt. Zu dieser Zeit gibt der CPC 92 einen Befehl zur Datenübertragung an die DMA 85 (16) aus, während weiter Daten von dem Rahmen in den FIFO 72 übertragen werden. Die DMA 85 gibt über den Systembus 42 eine Abfrage an die Buszuteilungs-Logikeinheit 47 aus, wobei sie fragt, ob sie den Systembus verwenden kann (17). Falls der Systembus 42 verfügbar ist, tritt die Buszuteilungs-Logikeinheit 47 daraufhin mit einem Ja in die Bejahung ein. Zur gleichen Zeit wird der Rahmen weiter innerhalb des FIFO 72 empfangen. Wie in 18 gezeigt ist, überträgt die DMA 85 zu dieser Zeit Daten von dem FIFO 72 an den Gemeinschaftssystemspeicher 46. Wie in 18 veranschaulicht ist, veranlasst das erste Bündel dieser DMA 85, dass der CPC 92 über den Systembus 42 an den Hostprozessor 44 ein als das FAN- oder Rahmenadressenankündigungs-Ereignis bekanntes Unterbrechungssignal ausgibt, das anzeigt, dass die im Voraus gewählten Adressenfelder des Rahmens in dem Gemeinschaftsspeicher 46 vorhanden sind (19). Der Betrag der DMA-Bündelgröße ist für die besonderen Anfangsblöcke und Adressen, die betrachtet werden, und für welche Schichten eingestellt worden.
  • Wie in 20 gezeigt ist, beginnt der Hostprozessor 44 daraufhin den Nachschlagealgorithmus, wobei er bestimmt, wie das Paket und der Rahmen zu adressieren und zu übertragen sind. Dieses Nachschlagen und das FAN-Ereignis können selbst dann eintreten, wenn innerhalb des Rahmenempfangspuffers weiter ein Rahmen empfangen wird.
  • Wenn ein Rahmen vollständig innerhalb des Gemeinschaftsspeichers 46 empfangen worden ist, wird eine Rahmen-Ende-Unterbrechung (EOF-Unterbrechung) ausgegeben. Somit bedeutet dies, wann der Host übertragen oder den Übertragungsprozess abschließen kann.
  • 21 veranschaulicht einen Zeitablaufplan, der das Rahmenadressenankündigungsereignis (FAN-Ereignis) zeigt. Wie oben bei der MAC-Schicht gezeigt wurde, wird zuerst ein als P1 gezeigter Paketstart ausgegeben, auf den die Firmware-Anweisung (FW-Anweisung) an die DMA folgt, den Paketstartbefehl bei dem Empfänger zu bauen. Es wird ein Paketfortsetzungsbefehl (COP-Befehl) ausgegeben, woraufhin die DMA wie veranschaulicht Daten überträgt. Außerdem gibt die DMA die Rahmenadressenankündigung und daraufhin das Paket-Ende (EOP) aus. Wie oben in der MAC-Schicht gezeigt wurde, tritt bei dem als P2 bekannten zweiten Paket ein ähnlicher Umstand auf.
  • II. Vorverarbeitungs-Wasserstandsmarke
  • Nunmehr anhand der 2225 werden weitere Einzelheiten der in der vorliegenden Erfindung verwendeten Vorverarbeitungs-Wasserstandsmarke offenbart. Die Vorverarbeitungs-Wasserstandsmarke (LAWM) wirkt als Synchronisierungssignal, bei dem der FIFO-Speicher (Zuerst-eingeben/Zuerst-ausgeben-Speicher), der den Sende-FIFO 70 und den Empfangs-FIFO 72 enthält, eine Vorverarbeitungs-Wasserstandsmarke (LAWM) zur Anzeige liefert, dass ausreichend Speicher zur Aufnahme eines oder mehrerer zusätzlicher Schreibbündel vorhanden ist. Durch diese Technik kann die Sendung der Rahmen beschleunigt werden, da sie die Bus- und Speicherbetriebsmittelnutzung erhöht, während sie die Last auf den Kommunikationsprozessor 92 verringert.
  • Das Vorverarbeitungs-Wasserstandsmarkensignal bedeutet, dass der FIFO ein zusätzliches DMA-Bündel der angezeigten Größe aufnehmen kann. Die DMA- Bündelgröße braucht nicht die gleiche Größe wie die des durch die Vorverarbeitungs-Wasserstandsmarke vermittelten Bündels zu sein. Die Vorverarbeitungs-Wasserstandsmarke wirkt eher als ein "Kapazitätsanzeiger" als ein herkömmlicher "niveauempfindlicher" Sende-Wasserstandsmarkenmechanismus. In anderer Beziehung ist die Vorverarbeitungs-Wasserstandsmarke ein "Von-oben-nach-unten"-Kapazitätsanzeiger gegenüber einer Standard-"Von-unten-nach-oben"-Wasserstandsmarke.
  • Die Vorverarbeitungs-Wasserstandsmarke besitzt Vorteile und hilft bei der Datenverarbeitung. Sie ermöglicht eine Verringerung oder Beseitigung von FIFO-Unterlauffehlern. Sie verbessert die Nutzung der Speichereinheit mit direktem Zugriff. Außerdem beschleunigt sie die Rahmensendung. Sie ermöglicht die frühere Erfassung eines nächsten Rahmens zur Sendung. Sie verbessert die Nutzung aufwändiger FIFO-Speicher und verringert Netzwerk-Rahmenzwischenraum-Zeitgebungs-"Verzögerungen". Außerdem ermöglicht sie eine Verringerung der Zyklen pro Rahmen, d. h. der Mikroprozessorarbeitsbelastung, und sowohl für kleine als auch für große Rahmen eine Verbesserung der Effizienz. Sie ist transparent für das Hostsystem und verringert die CPU-Kontextumschaltung.
  • Die Vorverarbeitungs-Wasserstandsmarke ermöglicht, dass die Einrichtung (Firmware/Hardware-Zustandsmaschine) in den FIFO-Speicher "sieht", um zu bestimmen, ob er zusätzliche Datenbündel (einer bekannten Menge) unterstützen und somit eine oder mehrere CPU-Kontextumschaltungen pro Rahmen beseitigen/verringern kann. Um das nächste Rahmenbündel zu dem Ziel-FIFO zu verschieben, kann mit wenig zusätzlichem Organisationsaufwand einzweiter DMA-Befehl in die Warteschlange eingereiht werden.
  • 22 veranschaulicht eine herkömmliche FIFO-Flusssteuerung gegenüber der Vorverarbeitungs-Wasserstandsmarke. Die Zeichnung ist eine abstrakte Darstellung des Grundkonzepts einer FIFO-Speicherstruktur, die die Systemseite und die Netzwerkseite zeigt. Die Sendewasserstandsmarke ist bei 260 angezeigt. Der Zeitgebungsmechanismus ist auf der unteren horizontalen Linie gezeigt und zeigt die Zeit, wobei das am Punkt 1 angezeigte Datenbündel für ein Datenbündel X ist, während das Vorverarbeitungs-Wasserstandsmarken-Datenbündel Y an den Punkten 2 und 3 ist. Ein Vorverarbeitungs-Wasserstandsmarken-Zeitablaufplan veranschaulicht die Firmware-Vorverarbeitungs-Wasserstandsmarken-Prüfung. In dem herkömmlichen Beispiel ist der FIFO leer (Daten = 0), woraufhin die Unter brechung erzeugt wird und daraufhin ein Datenbündel den FIFO füllt, so dass die momentanen Daten X sind. Bei der Firmware-Vorverarbeitungs-Wasserstandsmarken-Prüfung legt die Firmware einen Befehl für die DMA für die Datenübertragung an den FIFO vor, wobei wie durch das Bezugszeichen 2 gezeigt das zweite Datenbündel auftritt und die momentanen Daten X + Y werden. Daraufhin prüft die Firmware die Vorverarbeitungs-Wasserstandsmarke, wobei wie durch das Bezugszeichen 3 angezeigt ein drittes Datenbündel auftritt, so dass die momentanen Daten X + 2Y werden.
  • Wie in dem Ablaufplan in 23 gezeigt ist, ist beginnend beim Block 300 das Verfahren der vorliegenden Erfindung zum Steuern des Datenflusses in einem datenbasierten Netzwerk unter Verwendung des Netzwerk-Controllers der vorliegenden Erfindung mit einer Vorverarbeitungs-Wasserstandsmarke veranschaulicht. Im Block 300 werden die DMA-Bündelgröße sowie eine Vorverarbeitungs-Wasserstandsmarken-Bündelgröße gespeichert. Die zwei Bündelgrößen können im Wesentlichen dieselben oder verschieden sein. Daraufhin wird der Kanal freigegeben. Im Block 302 wird daraufhin die Wasserstandsmarkenunterbrechung für die DMA erzeugt. Im Block 304 gibt die Firmware einen Datenübertragungsbefehl an die DMA aus. Als Teil dieses Befehls fordert die Firmware daraufhin über eine Anforderung für ein Befehls-Ende (REOC), dass die DMA quittiert, wenn die Aufgabe abgeschlossen ist: REOC = wahr. Im Block 306 teilt die DMA daraufhin für den Erweiterungsbus zu und überträgt daraufhin Daten zu dem Sende-FIFO. Wenn sie fertig ist, signalisiert sie über einen EOC-Merker.
  • Im Block 308 tritt eine Entscheidung auf, um zu bestimmen, ob die DMA-Übertragung abgeschlossen ist, was EOC = wahr entspricht. Falls die DMA-Übertragung nicht abgeschlossen ist, wird der Block 306 wiederholt. Falls die DMA-Übertragung abgeschlossen ist, bestimmt die FIFO-Steuerlogik im Block 310 die Datenkapazität. Wie veranschaulicht ist, berechnet die FIFO-Steuerlogik die Datenkapazität dadurch, dass sie den momentanen in dem FIFO gehaltenen Datenwert von dem Maximalwert subtrahiert, der innerhalb des FIFO gehalten werden kann. Daraufhin wird dieses Ergebnis durch die Vorverarbeitungs-Wasserstandsmarken-Bündelgröße dividiert, um die Datenkapazität zu erhalten. Wie im Block 312 gezeigt ist, ist der Vorverarbeitungs-Wasserstandsmarkenwert (wie etwa ein Merker) wahr, falls die Datenkapazität größer als oder gleich 1 ist. Falls der Vorverarbeitungs-Wasserstandsmarkenwert kleiner als 1 ist, ist er falsch. Falls der Vorverarbeitungs-Wasserstandsmarkenmerker im Block 314 wahr ist, wird im Block 316 ein zusätzlicher Befehl an die DMA ausgegeben, wobei die DMA im Block 318 Daten an den Sende-FIFO überträgt. Falls die Vorverarbeitungs-Wasserstandsmarke falsch ist, wird die Routine abgeschlossen.
  • Die 24a und 24b veranschaulichen zunächst eine unterbrechungsvermittelte Rahmensendung (24a) und eine mittels Vorverarbeitungs-Wasserstandsmarke vermittelte Rahmensendung (24b). Diese Zeitgebungsmechanismen zeigen die Vorteile der Vorverarbeitungs-Wasserstandsmarke und helfen bei der Quantifizierung der Wirksamkeit der Vorverarbeitungs-Wasserstandsmarke in Bezug auf die Taktzyklen. Die Diagramme zeigen die zeitlich versetzte Verzögerung der Unterbrechungen wie etwa, wenn sie ausgegeben und bedient werden und wenn Daten in den FIFO geschrieben werden. In einer verkehrsstarken Mehrkanaleinrichtung ist dies wichtig, um sicherzustellen, dass sie vollständig genutzt wird. Dies kann die Latenzzeit einer Standardunterbrechung mit der Effizienz der Vorverarbeitungs-Wasserstandsmarke vergleichen.
  • Unterbrechungsvermittelte Rahmensendung (24a)
    • 1. Die DMA beginnt die Rahmensendung über einen Start eines Paketunterbrechungssignals (SOP).
    • 2. Die Firmware (FW) gibt den Sendekanal frei, baut einen Befehl (zwei 32-Bit-Worte) und legt diesen Befehl der DMA zur Ausführung vor.
    • 3. Die DMA decodiert den Befehl, entscheidet für den externen Bus, liest die richtigen Daten aus dem externen Gemeinschaftsspeicher und schreibt diese in den richtigen Sende-FIFO-Speicher.
    • 4. Nachdem die DMA-Übertragung abgeschlossen ist und falls die Sende-Wasserstandsmarke nicht überschritten worden ist, wird eine Paketfortsetzungsunterbrechung (COP-Unterbrechung) erzeugt.
    • 5. Die Firmware konstruiert noch einmal einen Befehl und gibt ihn an die DMA zur Ausführung aus.
    • 6. Falls die Firmware die COP-Unterbrechung nicht gesperrt hat und die Daten in dem FIFO die Standard-Wasserstandsmarke nicht überschritten haben, kann eine weitere COP erzeugt werden.
    • 7. Wenn das letzte Byte des Rahmens aus dem FIFO in das Netzwerk herausgetaktet worden ist, wird eine "Paket-Ende-Unterbrechung" (EOP-Unterbrechung) erzeugt.
    • 8. Die Firmware prüft, ob ein weiterer Rahmen sendebereit (d. h. verkettet) ist.
    • 9. Falls ein verketteter Rahmen vorhanden ist, wird daraufhin ein DMA-Befehl konstruiert und ausgegeben.
    • 10. Das erste Bündel des zweiten Rahmens wird aus dem externen RAM geholt und in den Sende-FIFO-Speicher geschrieben.
    • 11. Wenn das Schreibbündel abgeschlossen ist und falls die FIFO-WM nicht überschritten ist, wird ein weiteres COP ausgegeben.
    • 12. Die Firmware baut einen vierten Befehl, um das zweite Bündel für diesen zweiten Rahmen zu beginnen.
    • 13. Falls die Firmware die COP-Unterbrechung nicht gesperrt hat und die Daten in dem FIFO die Standardwasserstandsmarke nicht überschritten haben, kann ein weiteres COP erzeugt werden.
    • 14. Wenn das letzte Byte des Rahmens aus dem FIFO in das Netzwerk herausgetaktet worden ist, wird eine "Paket-Ende"-Unterbrechung (EOP-Unterbrechung) erzeugt.
    • 15. Die Firmware prüft, ob ein weiterer Rahmen sendebereit (d. h. verkettet) ist und sperrt den Sendekanal, wenn dies nicht der Fall ist.
  • LAWM-vermittelte Rahmensendung (24b)
    • 1. Die DMA beginnt die Rahmensendung über einen Start eines Paketunterbrechungssignals (SOP).
    • 2. Die Firmware (FW) gibt die Sendekanäle frei, baut einen Befehl (zwei 32-Bit-Worte) und legt diesen Befehl der DMA zur Ausführung vor.
    • 3. Die DMA decodiert den Befehl, entscheidet für den externen Bus, liest die richtigen Daten aus dem externen Gemeinschaftsspeicher und schreibt diese in den richtigen Sende-FIFO-Speicher. Falls das LAWM-Signal anzeigt, dass innerhalb des FIFO ausreichend Kapazität für ein zusätzliches Bündel vorhanden ist, legt die Firmware der DMA einen zweiten Befehl zur Ausführung vor.
    • 4. Nachdem jede DMA-Übertragung abgeschlossen ist und falls die Sende-Wasserstandsmarke nicht überschritten worden ist, kann eine Paketfortsetzungsunterbrechung (COP-Unterbrechung) erzeugt werden.
    • 5. Wenn das letzte Byte des Rahmens aus dem FIFO in das Netzwerk herausgetaktet worden ist, kann eine "Paket-Ende-Unterbrechung" (EOP-Unterbrechung) erzeugt werden.
    • 6. Die Firmware prüft, ob ein weiterer Rahmen sendebereit (d. h. verkettet) ist.
    • 7. Falls ein verketteter Rahmen vorhanden ist, wird daraufhin ein DMA-Befehl konstruiert und ausgegeben.
    • 8. Die DMA decodiert den dritten Befehl, entscheidet für den externen Bus, liest die richtigen Daten aus dem externen Gemeinschaftsspeicher und schreibt diese in den richtigen Sende-FIFO-Speicher. Falls das LAWM-Signal anzeigt, dass innerhalb des FIFO ausreichend Kapazität für ein zusätzliches Bündel vorhanden ist, legt die Firmware der DMA einen vierten Befehl zur Ausführung vor.
    • 9. Falls die Sende-Wasserstandsmarke nach jeder DMA-Übertragung nicht überschritten worden ist, kann eine Paketfortsetzungsunterbrechung (COP-Unterbrechung) erzeugt werden.
    • 10. Wenn das letzte Byte des Rahmens aus dem FIFO in das Netzwerk herausgetaktet worden ist, kann eine "Paket-Ende-Unterbrechung" (EOP-Unterbrechung) erzeugt werden.
    • 11. Die Firmware prüft, ob ein weiterer Rahmen sendebereit (d. h. verkettet) ist, und sperrt den Sendekanal, wenn dies nicht der Fall ist.
  • Offensichtlich ist die mittels Vorverarbeitungs-Wasserstandsmarke vermittelte Rahmensendung vorteilhaft und effizient und überwindet die bei Verfahren des Standes der Technik beteiligte Latenzzeit.
  • 25 zeigt eine graphische Darstellung, die Wasserstandsmarkenwirkungen auf die Unterbrechungserzeugung hinsichtlich der Paketgröße veranschaulicht. Die graphische Darstellung zeigt die Anzahl der erzeugten Unterbrechungen in Abhängigkeit von der FIFO-Wasserstandsmarkengröße. Aus der graphischen Darstellung kann beobachtet werden, dass die Anzahl der erforderlichen Unterbrechungen bei einer Zunahme der Paketgröße ebenfalls zur Zunahme neigt. Die Wasserstandsmarkenwerte besitzen eine inverse Wirkung auf die Gesamtzahl der erzeugten Unterbrechungen. Häufiger als nicht ist die Manipulation der Wasserstandsmarke allein bei der Abstimmung der Leistungsfähigkeit einer Einrichtung unzureichend. Bei hoher Veränderlichkeit der Netzwerkpaketgrößen und der Konkurrenz für Gemeinschaftssystembetriebsmittel ist ein zusätzlicher Mechanismus erwünscht. Die Vorverarbeitungs-Wasserstandsmarke der vorliegenden Erfindung ist ein solcher Mechanismus, wobei an sich leicht beobachtet werden kann, dass sie die Kurven in 25 absenkt.
  • III. Frühe Stauungsankündigung
  • Außerdem verwendet die vorliegende Erfindung ein frühes Stauungsankündigungssignal oder eine frühe Stauungsankündigungsunterbrechung (ECN) für die vorgezogene Hostankündigung der Stauungen in einem entsprechenden Port-Empfänger wie etwa einem der Empfangs-FIFOs 70. Der Begriff "vorgezogen" kann verwendet werden, da vor dem fehlerhaften Rahmen weiter früher empfangene Rahmen in dem FIFO gespeichert sein können. Je nach den relativen Größen des FIFO und den Größen der Rahmen könnte es irgendwo zwischen null bis zu einem Stand von Rahmen geben, die darauf warten, abgesendet zu werden. Somit gibt es potentiell eine erhebliche Verzögerung zwischen dem Zeitpunkt, zu dem eine frühe Stauungsankündigung (ECN) zuerst signalisiert wird, und dem Zeitpunkt, zu dem der fehlerhafte Rahmen verarbeitet wird. Zuvor hatte der Host 44 keine Kenntnis von diesem Fehlertyp, bis sich seine Verarbeitungs schaltungsanordnung durch die vorangehenden Rahmen durchgearbeitet und das Statuswort jedes einzelnen Rahmens verarbeitet hatte, bis sie zu dem verhängnisvollen Rahmen kam. Da der Hostprozessor 44 keine Kenntnis von dem Überlaufproblem hatte, wurde sein Verarbeitungsverhalten weiter ungeändert fortgesetzt, so dass weiter zahlreiche Überlaufrahmen den FIFO zum Überlaufen brachten und verloren gingen. Natürlich erzeugte dies eine viel stärkere Forderung an die höhere Software zur Neuübertragung von Rahmen und somit Bandbreitenprobleme in dem Netzwerk. Anstelle eines einzelnen netzwerkabwärtsgerichteten Knotens mit einem Rahmenverlustproblem entwickelte sich die Situation schnell zu einer, bei der viele netzwerkabwärtsgerichtete Knoten gezwungen waren, ihre Sendefenster neu zu takten, was das Problem leicht verschärfte.
  • Wie in dem Ablaufplan aus 26 gezeigt ist, enthält ein Verfahren zum Steuern von Netzwerkdatenstauungen in dem Empfangs-FIFO-Speicher in Übereinstimmung mit der vorliegenden Erfindung den Schritt des Erzeugens eines Statusfehleranzeigers in einem Empfangs-FIFO-Speicher, der einen Rahmen-Überlauf in dem FIFO-Speicher anzeigt (Block 340). Daraufhin wird in Reaktion auf einen Statusfehleranzeiger eine frühe Stauungsunterbrechung aus dem FIFO-Speicher zu einem Kommunikationsprozessor erzeugt (Block 342). Die Unterbrechung wird verarbeitet und wenigstens ein frühes Stauungserkennungsbit in dem Master-Unterbrechungsregister (MIR) der Speichereinheit mit direktem Zugriff gesetzt (Block 344).
  • Daraufhin wird eine frühe Stauungsunterbrechung, die anzeigt, dass innerhalb des FIFO-Speichers ein Rahmen-Überlauf aufgetreten ist, von der Speichereinheit mit direktem Zugriff zum Hostprozessor erzeugt (Block 346). Von dem Hostprozessor werden Anweisungen für den FIFO-Speicher erzeugt, um den hereinkommenden Rahmen, der den Rahmen-Überlauf verursacht hat, auszurangieren (Block 348). Die Bedienungen der Empfangsrahmen können entweder durch Steigerung der Anzahl der Worte einer Bündelgröße der Speichereinheit mit direktem Zugriff (DMA-Einheit) oder durch Modifizieren des Zeitschlitzes anderer aktiver Prozesse verstärkt werden (Block 350).
  • Die 27A–G zeigen eine Blockübersicht auf hoher Ebene des frühen Stauungsankündigungsverfahrens der vorliegenden Erfindung. 27A zeigt an, dass der Empfangs-FIFO leer ist und dass der Lesezeiger (RD-Zeiger) und der Schreibzeiger (WR-Zeiger) bei 0,0 dieselben sind. Daraufhin beginnen Daten anzukommen, wobei der Lesezeiger bei null ist und der Schreibzeiger wie in 27B gezeigt vorrückt. Während das Paket empfangen wird, wird, wie durch das Stat 1 angezeigt ist, der Status eingeschrieben. Ein zweiter Rahmen oder ein zweites Paket kommt an (Data 2) und beginnt überzulaufen (27C und 27D). Wenn die Überlaufbedingung auftritt, wird ein Flip-Flop für einen Fehler gesetzt, so dass ein Überlaufbit gesetzt wird (27G). An diesem Punkt wird die frühe Stauungsankündigung (ECN) ausgesendet. Der Schreibzeiger wird auf den Beginn des Pakets zurückgesetzt und eingefroren, bis das Paket-Ende auftritt, an dem das Zeitfehlerstatusfeld des unteren Pakets eingegeben wird. Das Lesen des Status 1 durch die DMA kopiert es in das Empfangsstatusregister an der Hostadresse. Bis der Kommunikationsprozessor den Status gelesen hat, tritt keine Anforderung der DMA für eine weitere Datenübertragung auf. Dies verhindert ein Überschreiten des Statusregisters durch den Überlaufstatus (27E und 27F).
  • Nunmehr findet insbesondere anhand der 2843 eine ausführlichere Beschreibung mit drei hereinkommenden verschiedenen Paketen statt, wobei das Verfahren und die Vorrichtung der vorliegenden Erfindung veranschaulicht werden. 28 zeigt den Netzwerk-Controller und das Hostsystem, wo keine Daten innerhalb des Empfangs-FIFO 72 empfangen worden sind. In 29 treten erstmals Daten in den Empfangs-FIFO 72 ein und in 30 ist die Wasserstandsmarke 258 erreicht, wobei über den Unterbrechungsbus 252 eine Paketstartunterbrechung an den Kommunikationsprozessor 92 gesendet wird. Der Kommunikationsprozessor 92 gibt einen Befehl zur Datenübertragung an die DMA 85 aus (31). Wie durch den Pfeil angezeigt ist, treten zum gleichen Zeitpunkt weiter Daten in den Empfangs-FIFO 72 ein.
  • Wie in 32 gezeigt ist, verhandelt die DMA mit der Buszuteilungs-Logikeinheit 47 über den Besitz des Systembusses 42, während weiter Daten in den Empfangs-FIFO-Speicher 72 übertragen werden. In 33 überträgt die DMA 85 Daten aus dem Empfangs-FIFO 72 an den Gemeinschaftssystemspeicher 46. Wie in 34 gezeigt ist, tritt daraufhin ein zweites Paket oder ein zweiter Rahmen in den Empfangs-FIFO-Speicher 72 ein. Mit Ausnahme dessen, dass der Zugriff auf den Systembus 42 verweigert worden ist, sind die 35, 36 und 37 ähnlich den 30, 31 und 32. Zu dieser Zeit tritt mit dem zweiten Paket (diagonale Schattierung) ein drittes Paket (dunkle Schattierung) ein (38). In 39 läuft der hereinkommende Rahmen in dem Empfangs-FIFO-Speicher 72 über, wobei die interne Unterbrechung an den Kommunikationsprozessor 92 gesendet wird, nach dem ein frühes Stauungsankündigungsbit (ECN-Bit) gesetzt worden ist (27G). In 41 setzt der Kommunikationsprozessor 92 daraufhin in dem richtigen Registerblock der DMA 85 die ECN-Bits für den Port. In 42 signalisiert die DMA 85 die frühe Stauungsunterbrechung entlang des Systembusses 42 zu dem Hostprozessor 44, woraufhin die DMA 85 wie in 43 gezeigt Daten von dem Empfangs-FIFO 72 an den Gemeinschaftssystemspeicher 46 überträgt. Der dritte Rahmen ist verloren gegangen. Allerdings kann die höhere Software den Rahmen daraufhin senden.
  • IV. Zaunpfähle
  • Noch einmal anhand der 3, 4, 5 und 7 wird noch einmal ausführlicher auf die obige Diskussion der Deskriptorringe 202 und der Deskriptoren 206 Bezug genommen. Zusätzlich zu der graphischen Darstellung aus 44 ist offensichtlich, dass das vorliegende Verfahren und die vorliegende Vorrichtung die Übertragung von in Rahmen angeordneten Daten zwischen dem Host 44 und dem Netzwerk-Controller 40 steuern. Beide nutzen den Systemspeicher 46 gemeinsam. Um die Busnutzung zu verbessern und dem gewünschten Host oder Controller den Besitz des ersten und des letzten Deskriptors und irgendwelcher Zwischendeskriptoren zu gewähren, werden in Übereinstimmung mit der vorliegenden Erfindung lediglich der erste und der letzte Deskriptor 206 in einer Deskriptor-"Kette" aktualisiert.
  • Wie oben angemerkt wurde, kann sich der Host 44 entscheiden, Rahmendatenpuffer 204 zu verwenden, die eine kleinere Größe als die Rahmen haben, die empfangen oder gesendet werden, womit sich ein einzelner Rahmendatenpuffer über mehrere Rahmendatenpuffer 204 erstrecken kann. Dies würde ermöglichen, dass Rahmen durch den Netzwerk-Controller 40 zerlegt oder zusammengesetzt werden. Wie oben angemerkt wurde, könnten natürlich mehrere Rahmendatenpuffer 204 die Bestandteile des Rahmens dadurch halten, dass die zugeordneten Deskriptoren 206 miteinander sowie aufeinander folgende Einträge in dem Deskriptorring 202 miteinander "verkettet" werden, wobei in dem letzten Deskriptor der Kette der Rahmen-Ende-Merker gesetzt wird. Der jeweilige Rahmendatenpuffer eines Deskriptoreintrags 206, der in Besitz ist, dessen Rahmen-Ende-Merker aber nicht gesetzt ist, wird als Teil eines Rahmens und nicht als ein ganzer Rahmen betrachtet. Der Controller 40 kann die Deskriptoren 206 einzeln miteinander verketten, während er jeden aufeinander folgenden Rahmendatenpuffer 204 füllt. Wenn schließlich das Rahmen-Ende empfangen und an den externen Ge meinschaftsspeicher 46 übertragen worden ist, wird in dem letzten Deskriptor der Deskriptorkette der Rahmen-Ende-Merker gesetzt (4).
  • Während der Sendung kann der Controller 40 aufeinander folgend einen einzelnen Rahmen und die Inhalte der "verketteten" Rahmendatenpuffer 204, auf die natürlich die "verketteten" Deskriptoren 206 zeigen, konstruieren. Die Sendung des Rahmens wird nur dann abgeschlossen, wenn er einen Rahmendatenpuffer 204 feststellt, dessen Deskriptor 206 den Rahmenendmerker gesetzt hat. Diese starke Verbesserung der Busnutzung wird durch die vorliegende Erfindung herbeigeführt, wo anstelle des Standes der Technik der aufeinander folgenden Aktualisierung jedes sich erstreckenden Deskriptors 206 lediglich der erste und der letzte Deskriptor wie etwa durch Aktualisieren des Besitzbits innerhalb des Deskriptors für vom Netzwerk empfangene Rahmen geändert werden. Dieser erste und dieser letzte aktualisierte Deskriptor bilden die "Zaunpfähle" der Kette.
  • Um genaue Informationen über einen Rahmen zu liefern, wenn er vollständig gesendet oder empfangen worden ist, werden alle Merker und Felder des ersten und des letzten Deskriptors in einer "Zaunpfahl"-Kette aktualisiert. Zum Beispiel wird für die Empfangsrahmen das Nachrichtengrößefeld 218 des ersten Deskriptors in der Kette mit der Byteanzahl des gesamten Rahmens und nicht einfach mit der Byteanzahl des zugeordneten Puffers aktualisiert, da diese gleich der Puffergröße ist.
  • Wie oben angemerkt wurde, veranschaulicht 4 den Organisationsblock 200 mit dem Chip-Initialisierungsabschnitt 200a und den vier Ports mit dem Statistikbild 200b-e. Der Deskriptorring 202 ist mit den verschiedenen Deskriptoren 206 gezeigt, die unter Verwendung von Adressen auf Rahmendatenpuffer zeigen. Rechts ist ein Rahmendatenpuffer gezeigt. 5 zeigt einen Rahmendatenpuffer 204 mit einem Deskriptor 26 als einem Zweiworteintrag mit einem Besitzbit (OB) 212 und mit einem Paket-Ende (EOP) 214. Die Puffergröße 216 und die Nachrichtengröße 218 sind in dem einen Wort 208 enthalten und die Pufferadresse 219 ist in dem anderen Wort 210 enthalten. Die graphische Darstellung in 44 veranschaulicht ausführlich, dass die Verwendung lediglich des ersten und des letzten Deskriptors wie oben erläutert eine flache Linie erzeugt, die den Verkehr entlang des Busses verringert.
  • Außerdem veranschaulicht 3 ausführlich, wie der Organisationsblock 200 Zei ger 200d besitzt (7), die direkt auf die verschiedenen Senderinge 202 zeigen, die die Deskriptoren 206 mit den Pufferinformationen 206a wie etwa der Geometrie und den Pufferadressen 206b besitzen.
  • V. Erzeugung der Deskriptorringe
  • Die vorliegende Erfindung ist vorteilhaft, da die Netzwerkeinrichtung nun die Verantwortung für die Erzeugung der Daten- und Pufferstrukturen wie etwa der Deskriptorringe übernimmt. Die Netzwerkeinrichtung 40 konstruiert die Sende- und/oder Empfangsdeskriptorringe 202 (3) im externen Gemeinschaftsspeicher 46. In der vorliegenden Erfindung wird eine Unterstützung für Vollduplexkanäle bereitgestellt. Die Parameter schreiben die Anzahl der Deskriptoren entweder in den Sende- oder in den Empfangsdeskriptorringen 202 vor, wobei ihre jeweiligen Rahmendatenpufferdimensionen über einen Parameterblock (oder Organisationsblock) übermittelt werden.
  • Der Organisationsblock 200 wird bei der Initialisierung (45) über ein Kommunikationsgrundelement gemäß der Hoststeuerung zwischen einem Hostsystem 43 und der Netzwerkeinrichtung 40 ausgetauscht. Dieser Organisationsblock 200 ist in zahlreichen variablen Feldern des Speichers 46 gespeichert (oder abgebildet). Wie oben angemerkt wurde, kann die Konstruktion begonnen werden, falls die Feldwerte für die Sendedeskriptorringgröße oder für die Empfangsdeskriptorringgröße nicht null sind. Falls die Felder andernfalls null sind, baut die Netzwerkeinrichtung 40 die zugeordneten Deskriptorringe 202 nicht. Die Netzwerkeinrichtung 40 erwartet, dass der Host 43 die Daten- und Speicherstrukturen in dem Gemeinschaftsspeicher 46 bereits gebaut hat. Die Geometrie oder die Länge des Deskriptorrings 202 und die Größen der zugeordneten Rahmendatenpuffer 204 ändern sich, wobei sich die Länge der Deskriptorringe 202 häufig von 50 bis 500 Deskriptoren ändert, während sich die Rahmendatenpuffer 204 von etwa 256 Bytes bis zu etwa 2000 oder 5000 Bytes ändern. Die Rahmendatenpuffergröße wird anhand der maximal unterstützten Rahmengröße der Schnittstellennetzwerke gewählt. Der pro Port 5056 zugeordnete Gesamtspeicher liegt im Zwei-Megabyte-Bereich.
  • Die Rahmendatenpuffergröße hat verhältnismäßig wenig Wirkung auf die Zeit, die für den tatsächlichen Bau der Deskriptorringe 202 erforderlich ist. Allerdings ist die Deskriptorringgröße der begrenzende Faktor für die Konstruktionszeit. Zur Ver ringerung der Bauzeit wird eine Blockbetriebsart-Konstruktionsoptimierungstechnik verwendet. Die Deskriptoren 206 können chipintegriert in Blöcken zu Zweien gebaut und über die Speichereinheit 85 mit direktem Zugriff an den externen Speicher 46 übertragen werden.
  • Diese Blockgröße ist änderbar und könnte in Zukunft leicht in die Parameter der Blöcke aufgenommen werden. Das Verfahren und die Netzwerkeinrichtung der vorliegenden Erfindung bieten Vorteile für den Markt einschließlich einer verringerten Zeit, die für die Host-Software-Entwicklung erforderlich ist; und einer Größenverringerung eines Hostcodes. Es kann beschleunigte Tests und eine schnellere Netzwerkeinrichtungsinitialisierung geben. Außerdem beschleunigt die vorliegende Erfindung die Systemimplementierung für Anwendungsentwicklungsingenieure.
  • In Übereinstimmung mit der vorliegenden Erfindung wird ein Speicherblock innerhalb des Gemeinschaftsspeichers 46 durch das Hostsystem 43 zugeordnet, das wie zuvor angemerkt den Organisationsblock 200 mit den Deskriptorringparametern 200b abbildet (7). Diese Parameter enthalten die Geometrie des Deskriptorrings 202 und die Deskriptoren 204, die innerhalb des Gemeinschaftsspeichers zu bilden sind. 7 zeigt den Organisationsblock, wobei sie an den vier Adressen PAD + 60 bis PAD + 72 die Puffergröße, die Senderinggröße und die Empfangsringgröße anzeigt.
  • Wie in 45 gezeigt ist, wird im Punkt 0 in dem Diagramm der Basiszeiger des Organisationsblocks 200 eingerichtet. Das Hostsystem 43 gibt ein Grundelement zur Initialisierung (INIT am Punkt 1) an die Netzwerkeinrichtung aus. Gleichzeitig schreibt der Host 44 die Basisadresse des Organisationsblocks 200 in die Netzwerkeinrichtung 40. Daraufhin "holt" oder liest die Netzwerkeinrichtung 40 den Organisationsblock aus dem Gemeinschaftsspeicher (Punkt 2) und sendet daraufhin an den Host eine Quittierung (ACK) zurück, dass der Organisationsblock empfangen worden ist. Dieser Organisationsblock wird verarbeitet, während das Hostsystem nach Empfang der Quittierung einen zusätzlichen Organisationsaufwand durchführen kann (Punkt 3).
  • Während der Organisationsblock 200 verarbeitet wird, konstruiert die Netzwerkeinrichtung 40 entsprechende Deskriptoren als Datenblöcke, die auf die innerhalb des Gemeinschaftsspeichers zu bildenden Rahmendatenpuffer zeigen.
  • 46 zeigt ausführlicher einen Ablaufplan, der veranschaulicht, wie die Deskriptoren durch die Netzwerkeinrichtung gebildet werden können. Im Block 400 liefert der Host die Zeiger zu den Basisdeskriptorringen und zugeordneten Puffern. Wie oben angemerkt wurde, wird die Konstruktion sofort begonnen, falls die Feldwerte für das Senderinggrößenfeld oder für das Empfangsringgrößenfeld von null verschieden sind. Falls diese Felder andernfalls null sind, baut die Netzwerkeinrichtung die zugeordneten Deskriptorringe nicht, sondern erwartet sie, dass der Host die Strukturen bereits im Gemeinschaftsspeicher gebaut hat.
  • Der Organisationsblock wird durch die Netzwerkeinrichtung gelesen (Block 402) und ein Deskriptoranfangsblockwort gebaut (Block 404). Es werden die Deskriptoradressenworte gebaut (Block 406) und die Deskriptoradresse wird aktualisiert (Block 408). Die Pufferpunktadresse wird ebenfalls aktualisiert (Block 410) und daraufhin der Deskriptorblock durch die Netzwerkeinrichtung in den Host-RAM hinaus gelesen, der Teil des Gemeinschaftssystemspeichers ist (Block 412).
  • Daraufhin wird der Prozess getestet, um zu sehen, ob er abgeschlossen ist (Block 414), wobei die Deskriptoradressen erneut aktualisiert werden, wenn dies nicht der Fall ist. Falls der Prozess abgeschlossen ist, wird das EOR-Bit für den Abschluss-Deskriptor gesetzt (Block 416) und der Abschluss-Deskriptor in den Host des RAM herausgeschrieben (Block 418). Daraufhin ist der Prozess abgeschlossen (Block 420).
  • Es gibt eine Anzahl von Annahmen wie etwa die Verwendung zusammenhängender Deskriptoren und eine gleiche Anzahl. Die Puffer sind typisch zusammenhängend und besitzen typisch eine gleiche Größe. Falls die Pufferzeiger nicht bereitgestellt worden sind, startet die Firmware 102 die Puffer an einem Zweiwortversatz von dem berechneten Abschluss eines Deskriptorrings. Falls das Hexadezimalwort des Organisationsblock-Deskriptorparameters "0X00000000" ist, werden keine zugeordneten Deskriptorringe 202 gebaut. Da der Block die Einstellungen überschreibt, wird die Organisationsblockübertragung vor anderen Konfigurationsgrundelementen benötigt. Alle Deskriptorringdimensionen müssen gleiche Werte sein und die Rahmendatenpuffergröße kann eine 0 oder eine 1 sein, oder es wird kein Deskriptorring 202 gebaut. Alle Pufferzeiger sind gezwungen, die Ausrichtung unabhängig von den Ringdimensionen zu gewähren. Der kleinste Deskriptorring, der gebaut werden kann, besitzt eine Größe von drei Deskriptoren, wobei es zwei Deskriptoren pro Block mit einem Block pro DMA-Übertragung sind.
  • Die 47-50 veranschaulichen eine Tabelle, die weitere Einzelheiten der Sende- und Empfangsnachricht-Deskriptoren sowie die verschiedenen Felder und Bitwerte, die verwendet werden können, zeigt.
  • Weitere Offenbarungen, die mit der vorliegenden Erfindung verwandt sind, sind in den Patentanmeldungen mit den Titeln "METHOD AND SYSTEM OF CONTROLLING TRANSFER OF DATA BY UPDATING DESCRIPTORS IN DESCRIPTOR RINGS", "METHOD AND SYSTEM OF ROUTING NETWORK-BASED DATA USING FRAME ADDRESS NOTIFICATION", "LOOK-AHEAD WATERMARK FOR ADDITIONAL DATA BURST INTO FIFO MEMORY" und "METHOD AND NETWORK DEVICE FOR CREATING BUFFER STRUCTURES IN SHARED MEMORY", die zum gleichen Datum und durch den gleichen Anmelder eingereicht sind, dargestellt, wobei ihre Offenbarungen hiermit durch Literaturhinweis eingefügt sind.
  • Dem Fachmann auf dem Gebiet fallen viele Änderungen und weitere Ausführungsformen der Erfindung ein, die die in den vorstehenden Beschreibungen und der zugeordneten Zeichnung dargestellte Lehre nutzen. Somit ist die Erfindung selbstverständlich nicht auf die spezifischen offenbarten Ausführungsformen beschränkt, sondern sollen die Änderungen und Ausführungsformen in dem Umfang der beigefügten Ansprüche enthalten sein.

Claims (19)

  1. Verfahren zum Steuern eines Flusses von Netzwerkdaten, die in Rahmen angeordnet sind, und zum Minimieren von Stauungen, dadurch gekennzeichnet, dass das Verfahren die Schritte aufweist: – ein Statusfehleranzeiger wird innerhalb eines FIFO-Speichers (56) einer Netzwerkeinrichtung (40) erzeugt, der einen Rahmen-Überlauf innerhalb des FIFO-Speichers (56) anzeigt; – in Reaktion auf die Statusfehleranzeige wird eine frühe Stauungsunterbrechung bzw. ein Stauungsinterrupt für einen Verarbeitungs- bzw. Hostprozessor (44) erzeugt, der anzeigt, dass ein Rahmen-Überlauf innerhalb des FIFO-Speichers (56) aufgetreten ist; und – der hereinkommende Rahmen, der den Rahmen-Überlauf innerhalb des FIFO-Speichers (56) verursacht hat, wird ausrangiert.
  2. Verfahren nach Anspruch 1, das ferner den Schritt zur Verstärkung der Bedienung von Rahmen aufweist, die innerhalb des FIFO-Speichers (56) empfangen werden, durch eines von entweder der Steigerung der Anzahl von Worten einer Einheitssignalgröße eines direkten Speicherzugriffs (DMA) oder Verändernder Zeitschachtelung von anderen aktiven Prozessen.
  3. Verfahren nach Anspruch 1, das ferner den Schritt zum Setzen von zumindest eines frühen Stauungs-Ankündigungsbits innerhalb eines Unterbrechungs- bzw. Interrupt-Registers einer Speichereinheit (85) mit direkten Zugriff in der Netzwerkeinrichtung (40) aufweist, nachdem der Statusfehleranzeiger innerhalb des FIFO-Speichers (56) erzeugt worden ist.
  4. Verfahren nach Anspruch 2, das ferner den Schritt zum Erzeugen einer bzw. eines frühen Stauungsunterbrechung bzw. Interrupts von dem FIFO-Speicher (56) für einen Kommunikationsprozessor (92) aufweist, nachdem der Statusfehleranzeiger erzeugt worden ist.
  5. Verfahren nach Anspruch 4, das ferner den Schritt zum Setzen eines frühen Stauungsanzeigebits innerhalb eines Unterbrechungs- bzw. Interrupt-Registers einer Speichereinheit mit direktem Zugriff (85) aus Steuersignalen aufweist, die durch den Kommunikationsprozessor (92) erzeugt worden sind.
  6. Verfahren nach Anspruch 1, Anspruch 2 oder Anspruch 3, das ferner den Schritt zum Erzeugen einer frühen Stauungsanzeigeunterbrechung bzw. -interrupt aus der Speichereinheit (85) mit direktem Zugriff für den Verarbeitungsprozessor bzw. Hauptprozessor (44) aufweist, um den hereinkommenden Rahmen auszurangieren, der den Rahmenüberlauf innerhalb des FIFO-Speichers (56) verursacht hat.
  7. Verfahren nach Anspruch 2 oder Anspruch 4, das ferner den Schritt zum Erzeugen der frühen Stauungsanzeigeunterbrechung bzw. -interrupts von der Speichereinheit (85) mit direktem Zugriff entlang eines bzw. über einen Systembus aufweist.
  8. Verfahren nach Anspruch 1, Anspruch 2 oder Anspruch 3, wobei der Schritt zum Erzeugen des Statusfehleranzeigers innerhalb des FIFO-Speicher (56) ferner den Schritt zum Setzen bzw. Einstellen eines Überlaufbits innerhalb des FIFO-Speichers (56) aufweist, das eine Überlaufbedingung anzeigt.
  9. Verfahren nach Anspruch 1, Anspruch 2 oder Anspruch 3, wobei der Statusfehleranzeiger durch Erzeugen eines Statusfehlerbits erzeugt wird.
  10. Verfahren nach Anspruch 9, wobei das Statusfehlerbit durch Einstellen bzw. Setzen eines Flip-Flops erzeugt wird.
  11. Netzwerkeinrichtung (40) zum Steuern des Flusses von Netzwerkdaten, die in Rahmen angeordnet sind, und zur Stauungsminimierung, dadurch gekennzeichnet, dass die Netzwerkeinrichtung (40) aufweist: – Mittel zum Erzeugen eines Statusfehleranzeigers innerhalb eines FIFO-Speichers (56), der einen Rahmenüberlauf innerhalb des FIFO-Speichers (56) anzeigt; – Mittel zum Lesen des Statusfehleranzeigers und, in Reaktion darauf zum Erzeugen einer frühen Stauungsunterbrechung bzw. -interrupts zu einem Verarbeitungsprozessor bzw. Hostprozessor (44), die bzw. der anzeigt, dass ein Rahmenüberlauf innerhalb des FIFO-Speichers (56) aufgetreten ist; und – Mittel zum Ausrangieren des hereinkommenden Rahmens, der den Rahmenüberlauf innerhalb des FIFO-Speichers (56) verursacht hat.
  12. Netzwerkeinrichtung (40) gemäß Anspruch 11, die ferner aufweist, eine direkte Speicherzugriffseinheit (85), die ein Unterbrechungs- bzw. interruptregister und frühe Anzeigebits hat, die in Reaktion auf den Statusfehleranzeiger gesetzt werden, gemäß dem Überlauf innerhalb des FIFO-Speichers (56).
  13. Netzwerkeinrichtung (40) gemäß Anspruch 12, wobei die frühe Stauungsunterbrechung bzw. -interrupt zu dem Hostprozessor bzw. Verarbeitungsprozessor (44) von der Einheit (85) mit direktem Speicherzugriff (DMA) ist.
  14. Netzwerkeinrichtung (40) gemäß Anspruch 13, die ferner Mittel zum Erzeugen von Befehlen von dem Verarbeitungsprozessor bzw. Hostprozessor (44) zu dem FIFO-Speicher (56) aufweist, um den hereinkommenden Rahmen, der den Rahmenüberlauf verursacht hat, auszurangieren.
  15. Netzwerkeinrichtung (40) gemäß Anspruch 11, die ferner Mittel aufweist, um die Bedienung von empfangenen Rahmen durch eine von entweder der Erhöhung der Anzahl von Worten einer Signalbündelgröße eines direkten Speicherzugriffs (DMA) zu verstärken oder die Zeitschachtelung von anderen aktiven Prozessen zu verändern.
  16. Netzwerkeinrichtung (40) gemäß Anspruch 11 oder Anspruch 15, die ferner einen Systembus aufweist, der die Einheit mit direktem Speichergriff (5) mit dem Verarbeitungsprozessor bzw. Hostprozessor (44) verbindet und auf dem die frühe Anzeige der Stauungsunterbrechung bzw. -interrupts durchgeht.
  17. Netzwerkeinrichtung (40) gemäß Anspruch 11 oder Anspruch 14, wobei der Statusfehleranzeiger ein Statusfehlerbit aufweist.
  18. Netzwerkeinrichtung (40) gemäß Anspruch 11 oder Anspruch 15, die ferner einen Flip-Flop aufweist, der eingestellt ist, um das Statusfehlerbit anzuzeigen.
  19. Netzwerkeinrichtung (40) gemäß Anspruch 11 oder Anspruch 15, die ferner Mittel zum Einstellen eines Überlaufbits innerhalb des FIFO-Speichers (56) aufweist, das die Überlaufbedingung anzeigt.
DE69919114T 1998-09-30 1999-09-28 Verfahren und Vorrichtung zur Netzwerküberlastkontrolle Expired - Lifetime DE69919114T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/163,819 US6717910B1 (en) 1998-09-30 1998-09-30 Method and apparatus for controlling network data congestion
US163819 1998-09-30

Publications (2)

Publication Number Publication Date
DE69919114D1 DE69919114D1 (de) 2004-09-09
DE69919114T2 true DE69919114T2 (de) 2005-07-28

Family

ID=22591719

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69919114T Expired - Lifetime DE69919114T2 (de) 1998-09-30 1999-09-28 Verfahren und Vorrichtung zur Netzwerküberlastkontrolle

Country Status (4)

Country Link
US (2) US6717910B1 (de)
EP (1) EP1014626B1 (de)
JP (1) JP2000115252A (de)
DE (1) DE69919114T2 (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6717910B1 (en) * 1998-09-30 2004-04-06 Stmicroelectronics, Inc. Method and apparatus for controlling network data congestion
US7480242B2 (en) * 1998-11-24 2009-01-20 Pluris, Inc. Pass/drop apparatus and method for network switching node
US8346971B2 (en) 1999-05-04 2013-01-01 At&T Intellectual Property I, Lp Data transfer, synchronising applications, and low latency networks
CN100499872C (zh) * 2000-06-02 2009-06-10 雷迪塞斯公司 没有回声消除的ip语音通信的装置和方法
WO2002062023A1 (en) * 2001-01-31 2002-08-08 Teldix Gmbh Modular and scalable switch and method for the distribution of fast ethernet data frames
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
AU2002337537A1 (en) * 2002-09-16 2004-04-30 Telefonaktiebolaget L M Ericsson (Publ) Bus control arrangement and method
CN1689312B (zh) * 2002-10-08 2010-04-14 皇家飞利浦电子股份有限公司 用于建立事务的集成电路和方法
US7284074B2 (en) * 2002-10-31 2007-10-16 Force10 Networks, Inc. Pipelined network processing with FIFO queues
US7453802B2 (en) * 2003-07-16 2008-11-18 Qlogic, Corporation Method and apparatus for detecting and removing orphaned primitives in a fibre channel network
US7792115B2 (en) 2003-07-21 2010-09-07 Qlogic, Corporation Method and system for routing and filtering network data packets in fibre channel systems
US7684401B2 (en) 2003-07-21 2010-03-23 Qlogic, Corporation Method and system for using extended fabric features with fibre channel switch elements
US7894348B2 (en) 2003-07-21 2011-02-22 Qlogic, Corporation Method and system for congestion control in a fibre channel switch
JP4210922B2 (ja) * 2003-10-27 2009-01-21 ソニー株式会社 撮像装置および方法
US7433364B2 (en) * 2003-12-24 2008-10-07 Intel Corporation Method for optimizing queuing performance
US20050232298A1 (en) * 2004-04-19 2005-10-20 Beverly Harlan T Early direct memory access in network communications
US7930377B2 (en) 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
JP4567373B2 (ja) * 2004-05-20 2010-10-20 ルネサスエレクトロニクス株式会社 データ転送装置及び通信データ処理システム
US7606236B2 (en) * 2004-05-21 2009-10-20 Intel Corporation Forwarding information base lookup method
US8295299B2 (en) 2004-10-01 2012-10-23 Qlogic, Corporation High speed fibre channel switch element
US7366958B2 (en) * 2004-12-14 2008-04-29 Intel Corporation Race condition prevention
US20070005833A1 (en) * 2005-06-30 2007-01-04 Pak-Lung Seto Transmit buffers in connection-oriented interface
JP4664243B2 (ja) * 2006-06-29 2011-04-06 富士通株式会社 通信装置
US7725556B1 (en) * 2006-10-27 2010-05-25 Hewlett-Packard Development Company, L.P. Computer system with concurrent direct memory access
US7624310B2 (en) 2007-07-11 2009-11-24 Micron Technology, Inc. System and method for initializing a memory system, and memory device and processor-based system using same
ES2346165T3 (es) 2007-07-27 2010-10-11 Research In Motion Limited Aparato y metodos para el funcionamiento de un servidor inalambrico.
US20090175277A1 (en) * 2008-01-09 2009-07-09 Schultz Gary E System and method for eliminating malformed packets in a multimedia-content digital transport stream
US8665281B2 (en) * 2008-02-07 2014-03-04 Microsoft Corporation Buffer management for real-time streaming
US7896714B2 (en) * 2008-06-13 2011-03-01 Hubbell Incorporated Submersible electrical set-screw connector
US9405592B2 (en) * 2014-05-16 2016-08-02 Teradata Us, Inc. Workload balancing to handle skews for big data analytics
US10585689B1 (en) * 2017-12-20 2020-03-10 Cisco Technology, Inc. Shared memory interface for application processes
JP7145117B2 (ja) * 2019-04-05 2022-09-30 ルネサスエレクトロニクス株式会社 通信装置
US11637739B2 (en) * 2021-01-10 2023-04-25 Mellanox Technologies, Ltd. Direct memory access (DMA) engine for diagnostic data
US11876735B1 (en) 2023-04-21 2024-01-16 Cisco Technology, Inc. System and method to perform lossless data packet transmissions

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4942553A (en) 1988-05-12 1990-07-17 Zilog, Inc. System for providing notification of impending FIFO overruns and underruns
US4953157A (en) 1989-04-19 1990-08-28 American Telephone And Telegraph Company Programmable data packet buffer prioritization arrangement
US5136582A (en) 1990-05-29 1992-08-04 Advanced Micro Devices, Inc. Memory management system and method for network controller
US5313454A (en) * 1992-04-01 1994-05-17 Stratacom, Inc. Congestion control for cell networks
US5412782A (en) 1992-07-02 1995-05-02 3Com Corporation Programmed I/O ethernet adapter with early interrupts for accelerating data transfer
US5299313A (en) 1992-07-28 1994-03-29 3Com Corporation Network interface with host independent buffer management
DE69330399T2 (de) 1992-12-18 2002-05-02 Advanced Micro Devices Inc HDLC-Empfänger
US6026088A (en) * 1993-10-20 2000-02-15 Lsi Logic Corporation Network architecture
US5473604A (en) 1994-11-21 1995-12-05 At&T Corp. Method for avoiding node overload in a packet switching network
US6351780B1 (en) 1994-11-21 2002-02-26 Cirrus Logic, Inc. Network controller using held data frame monitor and decision logic for automatically engaging DMA data transfer when buffer overflow is anticipated
US5909427A (en) * 1995-07-19 1999-06-01 Fujitsu Network Communications, Inc. Redundant switch system and method of operation
US6031843A (en) * 1996-11-21 2000-02-29 Alcatel Data Networks Inc. Digital communications switching fabric
US6717910B1 (en) * 1998-09-30 2004-04-06 Stmicroelectronics, Inc. Method and apparatus for controlling network data congestion

Also Published As

Publication number Publication date
DE69919114D1 (de) 2004-09-09
US20040174813A1 (en) 2004-09-09
EP1014626B1 (de) 2004-08-04
JP2000115252A (ja) 2000-04-21
EP1014626A3 (de) 2002-10-16
EP1014626A2 (de) 2000-06-28
US7072294B2 (en) 2006-07-04
US6717910B1 (en) 2004-04-06

Similar Documents

Publication Publication Date Title
DE69919114T2 (de) Verfahren und Vorrichtung zur Netzwerküberlastkontrolle
US6526451B2 (en) Method and network device for creating circular queue structures in shared memory
DE60219047T2 (de) Eine allgemeine eingabe-/ausgabearchitektur und entsprechende verfahren zum aufbau virtueller kanäle darin
DE60119224T2 (de) Speicherverwaltungseinheit für eine Vermittlungsstelle
DE69533230T2 (de) Verfahren und vorrichtung zur verbesserung der fehlertoleranz eines netzwerkes
US6715002B2 (en) Watermark for additional data burst into buffer memory
DE60033529T2 (de) Netzprozessor, speicherorganisation und verfahren
DE60217221T2 (de) Ein-Chip System zur Paketverarbeitung
DE69836812T2 (de) Verfahren und gerät zum dynamischen warteschlange-abschätzen
DE60027404T2 (de) Kreditbasiertes flusskontrollverfahren
US6327615B1 (en) Method and system of controlling transfer of data by updating descriptors in descriptor rings
US7337253B2 (en) Method and system of routing network-based data using frame address notification
DE69637275T2 (de) Verfahren zur auf Quittung basierten Flusssteuerung
DE69735740T2 (de) Asynchrone paketvermittlung
DE69533425T2 (de) Atm anpassungseinrichtung für desktop anwendungen
DE69732086T2 (de) Netzwerkschalter mit verschachteltem Speichersystem
DE69731519T2 (de) Mehrfachtor-Abfragesystem für ein Netzwerkkoppelfeld
DE19531749A1 (de) Verkehrsgestaltungseinrichtung und Paket-Kommunikationsgerät
DE60125300T2 (de) Schaltungsanordnung zum Übertragen von Daten mit Datenpacketierung und-Depacketierung
DE60215416T2 (de) Zeigerbasierte binäre Suchmaschine und dafür geeignetes Verfahren
DE60305560T2 (de) Eingebettetes System für die Überlastregelung von Rundfunkverkehr in einem Kommunikationsnetzwerk
DE60014178T2 (de) Vorrichtung und verfahren zur speicherteilung in einer konfiguration mit einzelring-datenbusverbindung
DE60121727T2 (de) Vermittlungsstelle mit virtuellem geteiltem Speicher
DE60120072T2 (de) Verfahren und Vorrichtung zur Verteilung eines Zwischenchipbusses für Nachrichtenübertragung und Speicherzugriff
DE102004035843A1 (de) Netzwerkprozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition