-
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 50–56 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
232–
238 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.
wobei T
Prescale die
gewünschte
Prescale-Zeitgeberperiode und T
UCLK die
Systemtaktperiode sind. Tabelle
1: Typische Prescale-Zeitgeber-Neustartwerte
-
Die
nächste
Gleichung zeigt, wie die Sekundärzeitgeber-Neustartwerte
zu berechnen sind:
wobei T
sekundär die
gewünschte
Sekundärzeitgeberperiode
und T
Prescale die Prescale-Zeitgeberperiode
sind. Tabelle
2: Typische Sekundärzeitgeber-Neustartwerte
-
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)
-
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 232–238 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 13–20 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 22–25 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 28–43 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 50–56 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.