-
Diese
Erfindung betrifft im Allgemeinen Netzwerkadapter, die bei der Datenverarbeitung
in Nahbereichsnetzwerken und Weitbereichsnetzwerken und zum Verwalten
der Speicherung und des Abrufens von Datenblöcken in und aus mehreren Speichern,
etwa von Knoten und Host-Prozessorspeichern, innerhalb eines Netzwerkes
verwendet werden können.
Eine Anwendung der Erfindung ist eine Glasfaserverteilungsdatenschnittstelle
(FDDI).
-
Diese
Anmeldung betrifft auch unsere folgenden anhängigen Anmeldungen, die am
29. Mai 1990 eingereicht wurden:
- 1) US-Patentanmeldung
Nr. 07/529,364 (europäische
Patentanmeldung A-0459 753)
- 2) US-Patentanmeldung Nr. 07/529,363 (europäische Patentanmeldung A-0459
758)
- 3) US-Patentanmeldung Nr. 07/529,365 (europäische Patentanmeldung A-0459
756)
- 4) US-Patentanmeldung Nr. 07/529,366 (europäische Patentanmeldung A-0459
757)
-
Die
Rate des Datendurchsatzes eines Speicherverwaltungssystems ist durch
die Anzahl der Schritte zum Kopieren von Daten in und aus einem Speichersystem
begrenzt, das in einem Datenbus enthalten ist, der in einem Netzwerk
aus Prozessoren vorgesehen sein kann. Ein Aspekt dieser Erfindung betrifft
das Einrichten von Sende- und Empfangsdeskriptoren, die die Datenverarbeitungseffizienz
eines Systemsspeichers mit mindestens zwei getrennten Speichern
optimieren. Daten mit einem unterschiedlichen Grad an Priorität oder anderen
Eigenschaften werden auf dem Bus empfangen, um diese in dem Speicher
abzulegen, oder diese werden aus dem Speicher für das Weitersenden erhalten.
Der Systemspeicher kann einen Knoten und Host- bzw. Leitrechner-Speicher
eines Nahbereichsnetzwerkes oder eines Weitbereichsnetzwerkes aufweisen.
-
Beispielsweise
wird die Erfindung unter Bezugnahme auf eine verteilte Faserdatenschnittstelle (FDDI)
dargestellt, die in den zuvor angegebenen anhängigen Anmeldungen beschrieben
ist. Da die hierin gelehrten Prinzipien jedoch in breiter Weise
auf Speicherverwaltungssysteme anwendbar sind, ist die Erfindung
nicht auf die hierin beschriebene Betriebsumgebung eingeschränkt.
-
In
Datenverarbeitungssystemen, in denen Pakete aus Daten gehandhabt
werden, die in Blöcken
bzw. Datenrahmen angeordnet sind (ein Paket oder eine Sequenz aus
Daten mit gewissen einrahmenden oder die interne Verwaltung betreffenden" Bits ist definiert
als ein „Rahmen" bzw. „Block"; Daten, die in Form
von Rahmen- bzw. Blöcken
gesendet werden, werden als „Rahmendaten
bzw. Blockdaten" bezeichnet),
gibt es häufig
das Erfordernis, Datenblöcke
zwischen einem System an einer Stelle und einem System an einer
anderen Stelle in einem Netzwerk zu übertragen. Die Datenblöcke können in
Reihen angeordnet werden, die den gleichen oder einen unterschiedlichen
Grad an Priorität repräsentieren.
Eine Schnittstellenschaltung, die zwischen einem lokalen System
und einem Netzwerk angeordnet ist, und die als eine „Netzwerksteuerung" bezeichnet wird,
verwaltet den Datenfluss zwischen dem System und dem Netzwerk. Dies
beinhaltet das Zwischenspeichern der Daten, um Laufzeitunterschiede
zwischen dem System und dem Netzwerk zu kompensieren, das Bereitstellen
einer notwendigen Protokollumwandlung und das Ausführen der „internen
Verwaltung" durch
Hinzufügen
von Bits zu oder durch das Wegnehmen von Bits aus den Daten, die die
Steuerung durchlaufen. Es sind diverse Arten von Netzwerksteuerungsarchitekturen
auf der Grundlage des verwendeten Netzwerkbetriebssystems und auf Grundlage
anderer Kriterien eingerichtet.
-
Beispielsweise
gibt es in einem Netzwerk, wie es in der anhängigen EP-A-0459 753 beschrieben
ist, eine Netzwerksteuerung mit einer Busleitarchitektur bzw. Busmasterarchitektur,
wobei Warteschlangen aus Blockdaten von Puffern, die in einem Systemspeicher
eingerichtet sind, zu entsprechenden Bereichen übertragen werden, die durch
logische FIFO's
in einem Ausgabepuffer zum Übertragen an
ein Netzwerk gebildet sind. Zwischen dem Systemspeicher und dem
Ausgabepuffer liegt ein physikalischer FIFO mit einer bestimmten
Speicherkapazität,
beispielsweise 32 Bytes, um die Blockdaten temporär auf dem
Weg zum Ausgabepuffer zu speichern. Ein Zweck des physikalischen
FIFO's besteht darin, eine
Zwischenspeicherung der Daten bereitzustellen, wie sie entsprechend
den Unterschieden in den Taktraten des Systemtaktgebers und des
Netzwerktaktgebers erforderlich sind. In der anhängigen EP-A-0 454 758 werden
in Reaktion auf eine Anforderung zum Übertragen an das Netzwerk beim
Erhalt einer „Berechtigungsmarke
bzw. eines Belegungsbits" in dem
Netzwerk und unter der Annahme, dass Daten für das Übertragen verfügbar sind,
Daten von dem Systemspeicher als Pakete nacheinander zu dem Sende-FIFO übertragen,
und anschließend
von dem Sende-FIFO zu dem Netzwerk, während noch Daten aus dem Netzwerk
eintreffen. Dies ermöglicht
es, dass der FIFO an das Netzwerk Daten überträgt, bevor ein vollständiger Block
bzw. Rahmen empfangen wird. Die auf diese Weise übertragenen Datenblöcke werden
in entsprechenden Warteschlangen gespeichert, die durch die in dem
Ausgabepuffer gebildeten logischen FIFO's gebildet sind.
-
Es
werden Daten in der Reihenfolge der Priorität beginnend mit der höchsten Priorität übertragen,
bis keine weiteren Daten mit der gleichen Priorität für das Übertragen
verfügbar
sind, oder bis die noch nicht abgelaufene Aufbewahrzeit für die Berechtigungsmarke
(THT) während
des Empfangs der Berechtigungsmarke kleiner ist als ein Schwellwert für diese
Priorität.
Details über
dieses Protokoll sind in der anhängigen
EP-A-0459 756 angegeben.
-
Nach
jeder Übertragung
von Datenblöcken aus
dem Systemspeicher über
den physikalischen FIFO zu dem Ausgabepuffer muss eine Entscheidung
getroffen werden, um weitere Daten mit der gleichen Priorität an den
physikalischen FIFO zu übertragen,
die nachfolgend zu der gleichen Warteschlange des Ausgabepuffers
zu übertragen
sind, oder um Daten mit einer anderen Priorität über den physikalischen FIFO
zu einer weiteren Ausgabepufferwarteschlange zu übertragen, wenn weitere Daten verfügbar sind.
Die anhängige
EP-A-0459 757 beschreibt eine Einrichtung, um ein „Verriegeln" des FIFO's zu verhindern.
Das Verriegeln tritt ein, wenn die Größe des verbleibenden Speicherbereichs,
der in dem logischen FIFO verfügbar
ist, der eine spezielle Warteschlange enthält, in die gerade geschrieben
ist, kleiner ist als die Speicherkapazität des physikalischen FIFO's. Unter dieser Bedingung
kann der physikalische FIFO Daten nicht an dem logischen FIFO in
dem Puffer weitergeben.
-
Ein
System in der Art, auf die ein Aspekt der Erfindung besonders vorteilhaft
anwendbar ist, umfasst nicht nur einen Host- bzw. Leitprozessor,
sondern auch einen Prozessorknoten, wobei dieses jeweils einen eigenen
zugeordneten Speicher aufweisen. Diese Architektur ist vorteilhaft,
da der Knotenprozessor den Host-Prozessor von Kommunikationsaufgaben,
die bei der Protokollpaketübertragung
auftreten, entbindet. Beispielsweise können Protokollkopfbereiche
in dem Knotenprozessorspeicher verarbeitet werden, während Daten
direkt an den Ausgabepuffer übertragen
oder davon empfangen werden, und diese Kopfbereiche können später einem
Paket für
das Übertragen
hinzugefügt
werden. Die Rate des Datendurchsatzes wird erhöht, indem die Notwendigkeit
aufgehoben wird, zwei Schritte für
das Kopieren von Daten für
jeden Speichertransfer auszuführen.
-
Die
anhängigen
Anmeldungen verwenden sogenannte Sende- und Empfangs-„Deskriptoren", die Bits für Information
enthalten, die den Status, die Länge
und den Adressenzeiger jedes der Pufferbereiche definiert, die in
dem Systemspeicher ausgebildet sind. Für einen ersten „Zuerst-hinein-zuerst-heraus"-(FIFO)Speicher,
wobei der Speicherplatz im Anschluss an die letzte Speicherposition
des FIFO's zu der
ersten Speicherstelle zurückführt, nehmen
die Deskriptoren die Form eines Ringes an. Somit wird ein Deskriptor
dieser Art als ein „Deskriptorring" bezeichnet. Es wird
eine effiziente Pufferverwaltung innerhalb eines Systems mit mehreren
Systemspeichern beschrieben, wobei Blöcke oder Pakete aus Daten in
Pufferbereichen gespeichert werden, auf die durch mehrere Deskriptorringe
gezeigt wird. Deskriptorringe verwalten Datenpakete oder Datenblöcke, die
durch einen Kopfbereich sowie durch Datenbereiche gekennzeichnet
sind. Für
gewöhnlich
können
der Kopfbereich und die Datenbereiche des Blocks voneinander nicht
in effizienter Weise getrennt werden, da die zwei Bereiche als nicht
miteinander korreliert auftreten, oder da diese die zwischen den
Pufferspeichern bestehende „Synchronität" verlieren.
-
Es
wird ein System beschrieben, das den Speicherbereich von Blockdaten
mit einem Kopfbereich und Datenbereichen optimiert, wobei gleichzeitig
die Synchronität
zwischen Datenblöcken
und ihren entsprechenden Kopfbereichen bewahrt bleibt.
-
In
einer Netzwerksteuerung der beschriebenen Art besitzt ein Empfangsdatenweg,
der zu dem Systemspeicher über
einen einzelnen physikalischen FIFO-Speicher führt, die Tendenz, unter gewissen Umständen blockiert
zu werden. Wenn beispielsweise der Empfangs-Deskriptorring voll ist oder ein Paritätsfehler
auftritt, werden nachfolgende Pakete, die für einen Deskriptorring in den
Empfangsweg über den
FIFO bestimmt sind, blockiert. Obwohl die nachfolgenden Pakete in
Empfangswarteschlangen in dem Ausgabepuffer gespeichert werden,
bis die Ursache der Blockade aufgehoben ist, wird der Ring erneut
blockiert, wenn der Puffer seine begrenzte Speicherkapazität erreicht.
-
Computerkommunikationsreview,
Band 18, Nr. 4, August 1988, New York, US-Seiten 175–187, H.
Kanakia et al. „Das
VMP-Netzwerkadapter-Board" (NAB),
hochleistungsfähige
Netzwerkkommunikation für
Multiprozessoren" offenbart
eine DMA-Steuerung mit einem Pufferspeicher unter Anwendung von RAM-Komponenten
mit statischen Spalten mit Zweifachanschluss bzw. Dualport. Der
Pufferspeicher stellt mehrerer Puffer bereit, um Pakete zu halten
und zu verarbeiten, während
ein Paket empfangen oder gesendet wird. Details im Hinblick auf
eine Netzwerksteuerung sind nicht angegeben.
-
Dobinson,
Konigsfeld und Szpak beschreiben eine Anordnung zur Anwendung in
Ethernetz-Nahbereichsnetzwerken unter Anwendung von VLSI-Protokollchips.
Es wird ein AMD-Lance-Chip beschrieben,
in welchem ein chipinterner DMA eine autonome Übertragung von Daten zu und
Empfang von externen Puffern ermöglicht.
Seite 179 beschreibt die Pufferverwaltung der Block-Deskriptoren.
-
Computerdesign
23 (1984), Februar Nr. 2, Winchester, Massachusetts, USA, „Steuerung
und Mikro-Verbundsystem für
intelligente Ethernet-Knoten",
von James A. Fontaine, beschreibt den AMD-Lance-Chip. Der Lance-Chip
ist ferner in Elektronikdesign, 14. Oktober, 1992, Seite 193 bis
200 „Lokale
Netzwerke" von Sunill
P. Joshi beschrieben.
-
Gemäß einem
ersten Aspekt stellt die Erfindung eine Netzwerksteuerung für einen
Netzwerkadapter bereit, wobei vorgesehen sind: mehrere Prozessoren
und mindestens ein erster und ein zweiter Speicher zum Speichern
von Daten, die in Blöcken angeordnet
sind, wobei die Datenblöcke
eine eine Blockeigenschaft kennzeichnende Information enthalten,
wobei die Netzwerksteuerung einen FIFO-Speicher, einen Empfangsweg
mit einem FIFO-Speicher
und den ersten und den zweiten Speicher aufweist und ferner Mittel
aufweist, um Empfangsblöcke
zu speichern, die über
den Empfangsdatenweg bei einem Entschlüsselungsring entsprechend der
Blockeigenschaft eintreffen,
eine Einrichtung zum Bilden mehrerer
Puffer an beliebigen Positionen in dem ersten und dem zweiten Speicher;
und
eine Einrichtung zum Bilden in willkürlicher Weise in dem ersten
und dem zweiten Speicher von Deskriptoren an zusammenhängenden
Bereichen, um mehrere Deskriptorringe, die auf die Puffer zeigen,
zu bilden;
wobei die Deskriptoren jedes Ringes auf den ersten oder
den zweiten Speicher zeigen und
eine Einrichtung zum Erkennen
eines blockierten Empfangsringes und, in Reaktion darauf, zum Verwerfen
nachfolgender Datenblöcke,
die für
den blockierten Deskriptorring eintreffen.
-
Vorzugsweise
weisen die Deskriptoren jedes Ringes jeweils ein Kennzeichen auf,
das auf den ersten oder den zweiten Speicher zeigt, und wobei jeder Datenblock
ein Blocksteuerfeld mit Daten enthält, die eine Blocksteuercodierung
repräsentieren,
und wobei ein spezieller Ring aus den mehreren Deskriptorringen
zum Speichern eines Empfangsblockes entsprechend dem Inhalt des
Blocksteuerfeldes des Empfangsblockes ausgewählt wird.
-
Die
Erfindung stellt auch eine derartige Netzwerksteuerung für ein Netzwerk
mit verteilter Faserdigitalschnittstelle (FDDI) mit Host- und Knotenprozessoren
bereit, die entsprechend einen ersten Speicher und einen zweiten
Speicher zum Speichern von in Blöcken
angeordneten Daten aufweisen, wobei jeder Block ein Blocksteuerfeld
aufweist; des weiteren ist eine Einrichtung zum Auswählen eines
Ringes zum Speichern eines Empfangsblockes entsprechend dem Inhalt
des Blocksteuerfeldes des empfangenen Blockes vorgesehen. Vorzugsweise
besitzen die Puffer in dem ersten und dem zweiten Speicher jeweils
eine erste und eine zweite Länge;
eine
Einrichtung zum Speichern erster Deskriptoren an zusammenhängenden
Speicherplätzen,
die einen erste Deskriptorring in dem ersten Speicher bilden, und
auf die Puffer zum Speichern eines ersten empfangenen Anteils jedes
Blockes aus empfangenen Daten in jedem des ersten und des zweiten
Speichers zeigen; und
eine Einrichtung zum Speichern zweiter
Datendeskriptoren an zusammenhängenden
Speicherplätzen, die
einen zweiten Deskriptorring in dem zweiten Speicher bilden, der
auf die Puffer zeigt, die nachfolgend empfangene Bereiche jedes
Empfangsblocks in dem entsprechenden ersten und zweiten Speicher enthalten.
-
Vorzugsweise
ist jeder Deskriptorring mit den zugehörigen Puffern in dem gleichen
Speicher angeordnet. Es können
Mittel vorgesehen sein, um Daten eines gemeinsamen Blockes, der
unterschiedlichen Deskriptorringen zugeführt wird, zu korrelieren.
-
Die
Korreliereinrichtung kann ferner eine Blockzahl in jedem Block der
empfangenen Daten enthalten.
-
Vorzugsweise
besitzt jeder Block einen Kopfbereich und einen Datenbereich mit:
einer
Einrichtung zum Speichern von Kopfbereichdeskriptoren an zusammenhängenden
Speicherplätzen,
die einen Kopfbereichsdeskriptorring in dem ersten Speicher bilden,
wobei auf Puffer gezeigt wird, die Kopfbereiche von Empfangdaten
in dem ersten oder dem zweiten Speicher enthalten,
einer Einrichtung
zum Einrichten von Datendeskriptoren an zusammenhängenden
Speicherplätzen,
die einen Datendeskriptorring in dem zweiten Speicher bilden, der
auf Puffer zeigt, die Empfangsdaten in dem ersten oder dem zweiten
Speicher enthalten, wobei jeder Puffer mindestens einen Teil der
Empfangsdaten innerhalb eines Blockes speichert.
-
Vorzugsweise
enthalten die Blöcke
Information zum Kennzeichnen einer Blockeigenschaft, wobei die Netzwerksteuerung
aufweist:
einen FIFO-Speicher;
einen Empfangsdatenweg
mit dem FIFO-Speicher und den Speichereinrichtungen;
eine Einrichtung
zum Speichern von Empfangsblöcken,
die auf dem Empfangsdatenweg zu einem Deskriptorring gelangen, der
der ersten Blockeigenschaft entspricht; und
eine Einrichtung
zum Erkennen eines blockierten Empfangsringes und in Reaktion darauf
zum Verwerfen nachfolgender Blöcke,
die zu dem blockierten Deskriptorring zugeführt werden.
-
Die
Netzwerksteuerung kann ferner umfassen:
eine Einrichtung zum
Empfangen eintreffender Datenpakete, wobei jedes Paket Daten enthält, die
einen Deskriptor kennzeichnen, der auf einen entsprechenden Puffer
zeigt, und wobei die Einrichtung ferner zum Weiterleiten der Pakete
durch einen Pufferspeicher zu dem Speicher ausgebildet ist;
eine
Einrichtung zum Speichern des eintreffenden Datenpaketes in dem
Puffer, auf den von dem zugeordneten Deskriptor gezeigt wird;
eine
Einrichtung zum Erkennen eines blockierten Rings;
eine erste
Einrichtung, die auf einen erkannten blockierten Ring und auf einen
normalen Steuerungsmodus der Netzwerksteuerung zum Speichern nachfolgender
Pakete, die für
den Pufferspeicher eintreffen, reagiert; und
eine zweite Einrichtung,
die auf den erkannten blockierten Ring und einen Steuerungsmodus
zum Verwerfen in der Netzwerksteuerung reagiert, um nachfolgende
eintreffende Pakete zu verwerfen.
-
Gemäß einem
weiteren Aspekt stellt die Erfindung ein Verfahren bereit zum Steuern
eines Empfangsdatenflusses für
einen Netzwerkadapter mit mehreren Prozessoren und Speichereinrichtungen zum
Speichern von Paketen von Empfangsdaten, die in Blöcken angeordnet
sind, die Information zur Kennzeichnung einer Blockeigenschaft enthalten,
einem FIFO-Speicher und einem Empfangsdatenflusspfad durch den FIFO-Speicher
zu der Speichereinrichtung, einer Einrichtung zum Einrichten mehrerer Empfangspuffer
an beliebigen Positionen in der Speichereinrichtung und zum Einrichten
von Deskriptoren an zusammenhängenden
Speicherplätzen
der Speichereinrichtung, die Deskriptorringe bilden, die auf die
Empfangspuffer zeigen, und eine Einrichtung zum Zuführen von
Empfangsblöcken,
die über
den Empfangdatenweg eintreffen, zu einem Deskriptorring, der der
Blockeigenschaft entspricht, wobei das Verfahren zum Steuern des
Empfangsdatenflusses die Schritte umfasst:
Erkennen eines blockierten
Deskriptorringes in dem Empfangsdatenflussweg und in Reaktion darauf,
Verwerfen
nachfolgender Blöcke,
die den blockierten Deskriptorring zugeführt werden.
-
Wenn
der Netzwerkadapter wahlweise in einem Normalmodus und einem Modus
zum Verwerfen betrieben wird, umfasst das Verfahren zum Steuern des
Empfangsdatenflusses vorzugsweise die Schritte:
in Reaktion
auf einen erkannten blockierten Ring und auf die normale Betriebsweise
des Adapters, Speichern nachfolgender Pakete, die dem Adapter zugeführt werden,
in dem Pufferspeicher; und
in Reaktion auf das Erkennen eines
blockierten Ringes und auf den Betriebmodus zum Verwerfen des Adapters,
Verwerfen nachfolgender Pakete, die dem Adapter zugeführt werden.
-
Gemäß einem
weiteren Aspekt stellt die Erfindung ein Verfahren zum Verarbeiten
von Empfangsblöcken
für ein
Netzwerk mit verteilter Faserdigitalschnittstelle (FDDI) mit Host- und Knotenprozessoren
mit jeweils einem ersten und einem zweiten Speicher zum Speichern
von Daten, die in Blöcken angeordnet
sind, bereit, wobei die Blöcke
jeweils ein Blocksteuerfeld enthalten, und wobei das Verfahren zum
Verarbeiten der Empfangsblöcke
die Schritte umfasst:
Einrichten mehrerer Puffer an beliebigen
Speicherplätzen
in dem ersten und dem zweiten Speicher;
Einrichten in beliebiger
Weise von Deskriptoren in dem ersten und dem zweiten Speicher an
zusammenhängenden
Speicherplätzen,
um Deskriptorringe zu bilden, die auf die Puffer zeigen; und
Auswählen eines
Rings zum Speichern eines Empfangsblockes gemäß dem Inhalt des Blocksteuerfeldes
des Empfangsblocks.
-
Gemäß einem
weiteren Aspekt stellt die Erfindung ein Verfahren zum Verarbeiten
von Empfangsblöcken
für einen
Netzwerkadapter mit mehreren Prozessoren und mindestens einem ersten
Speicher und einem zweiten Speicher zum Speichern von empfangenen
Daten, die in Blöcken
angeordnet sind, in Puffern bereit, wobei das Verfahren zum Verarbeiten
von Empfangsblöcken
die Schritte umfasst:
Speichern mehrerer Puffer an beliebigen
Speicherplätzen
in dem ersten und dem zweiten Speicher;
Einrichten erster Deskriptoren
an zusammenhängenden
Speicherplätzen,
um einen ersten Deskriptorring in dem ersten Speicher zu bilden,
der auf Puffer zum Speichern eines ersten empfangenen Bereichs jedes Blockes
aus Empfangsdaten in dem ersten oder dem zweiten Speicher zeigt;
und
Einrichten von zweiten Datendeskriptoren an zusammenhängenden
Speicherplätzen,
um einen zweiten Deskriptorring in dem zweiten Speicher zu bilden,
der Puffer mit nachfolgend empfangenen Bereichen jedes Empfangsblockes
in dem ersten oder dem zweiten Speicher enthält.
-
Vorzugsweise
besitzen der erste und der zweite Speicher entsprechend eine erste
und eine zweite Länge,
wobei die erste Länge
kleiner als die zweite Länge
ist.
-
Vorzugsweise
sind die ersten Deskriptoren Kopfdeskriptoren und die zweiten Deskriptoren
Datendeskriptoren.
-
Gemäß einem
weiteren Aspekt stellt die Erfindung ein Verfahren zum Verarbeiten
von Blöcken aus
empfangenen Daten für
einen Netzwerkadapter mit mehreren Prozessoren und einem ersten
und einem zweiten Speicher zum Speichern von in Blöcken angeordneten
Daten bereit, wobei das Verfahren zum Verarbeiten von Blöcken aus
Empfangsdaten die Schritte umfasst:
Einrichten mehrerer Puffer
an beliebigen Speicherplätzen
in dem ersten und dem zweiten Speicher; und
Einrichten in beliebiger
Weise von Deskriptoren in dem ersten Speicher und dem zweiten Speicher
an zusammenhängenden
Speicherplätzen
zur Bildung mehrerer Deskriptorringe, die auf die Puffer zeigen;
wobei
die Deskriptoren jedes Ringes jeweils ein Erkennungsmerkmal aufweisen,
das auf einen oder den anderen des ersten oder des zweiten Speichers verweist;
Erkennen
von Informationscodierungssignalen in eintreffenden Blöcken von
Empfangsdaten;
Korrelieren jedes Informationskodierungssignals
mit einem speziellen Deskriptorring; und
Speichern jedes eintreffenden
Blocks aus Empfangsdaten in einem Puffer, auf den der spezielle
Deskriptorring zeigt.
-
Das
erfindungsgemäße Verfahren
und die Vorrichtung werden vorteilhafterweise auf eine FDDI-Netzwerkschnittstelle
angewendet, obwohl die hierin gelehrten Prinzipien auch den allgemeinerer Weise
auf die Pufferspeicherverwaltung angewendet werden können.
-
Weitere
Aufgaben und Vorteile der vorliegenden Erfindung werden für den Fachmann
unter Zuhilfenahme der folgenden detaillierten Beschreibung offenkundig,
wobei lediglich die bevorzugte Ausführungsform der Erfindung hierin
gezeigt und beschriebenen ist, indem einfach die Art und Weise dargestellt
wird, die gegenwärtig
als die beste Art zum Ausführen
der Erfindung erachtet wird. Man erkennt, dass die Erfindung in
anderen und unterschiedlichen Ausführungsformen praktiziert werden
kann und dass diverse Details in zahlreicher Hinsicht Modifizierungen
unterliegen können,
ohne damit von dem Schutzbereich der Erfindung abzuweichen. Daher sind
die Beschreibung und die Zeichnungen anschaulich und nicht als einschränkend zu
bewerten.
-
Kurze Beschreibung der Zeichnungen
-
1 ist
eine Blockansicht einer typischen Implementierung eines FDDI-Netzwerkes,
wie es im Stand der Technik her bekannt ist.
-
2 ist
eine Ansicht, die das Format eines FDDI-Pakets zeigt.
-
3(a) und 3(b) sind
Ansichten, die die Funktion der MAC-Unterschicht in FDDI-Spezifikationen zeigen.
-
4 ist
eine Blockansicht einer Implementierung der Netzwerkschnittstelle
(separater Knotenrechner und Host- bzw. Leitrechner).
-
5 ist
eine detailliertere Ansicht der Mediumszugriffssteuerung, die in 4 gezeigt
ist.
-
6 ist
eine Ansicht, die den Datenfluss darstellt, der zwischen den Elementen
der Netzwerkschnittstelle auftritt.
-
7 ist
eine Ansicht, die die Organisation des Pufferspeichers in Warteschlangen
zeigt, die in der Netzwerkschnittstelle eingerichtet sind.
-
8 ist
eine detailliertere Ansicht der Netzwerk-DMA-Steuerung in der Netzwerkschnittstellenarchitektur,
die in 4 gezeigt ist.
-
9 ist
eine Ansicht, die eine Pufferspeichersendewarteschlange zeigt.
-
10 ist
ein verallgemeinertes Flussdiagramm, das zeigt, wie Daten, die über das
Netzwerk zu senden sind, von dem Systemspeicher heraus geführt werden.
-
11 ist
eine Ansicht von Sendepaketen, die in dem Pufferspeicher als Warteschlange
aufgereiht sind.
-
12 ist
ein verallgemeinertes Flussdiagramm, das zeigt, wie über das
Netzwerk zu empfangende Daten zu dem Systemspeicher geführt werden.
-
13 ist
eine Ansicht, die den Aufbau einer Pufferspeicherempfangswarteschlange
zeigt.
-
14 zeigt
das Format von Empfangspaketen, die in dem Pufferspeicher gespeichert
sind.
-
15 ist
eine Ansicht, die den Ablauf von Signalen zwischen der Mediumszugriffssteuerung, der
Netzwerk-DMA-Steuerung und dem Pufferspeicher zeigt;
-
16(a) ist eine Blockansicht, in der Knoten-
und Host-Prozessorspeicher auf separaten Knoten- und Host-Prozessorbussen
gezeigt sind.
-
16(b) ist eine Ansicht, die die Datenübergabe
zwischen dem Knotenprozessorspeicher und dem Host-Prozessorspeicher
und der Netzwerk-DMA-Steuerung zeigt, um eine Auftrennung zwischen
Kopfbereich/Daten zu erreichen.
-
17 ist
ein Signalzeitablaufdiagramm, wobei das Herausladen von Empfangsblöcken durch den
Pufferspeicher gezeigt ist.
-
18 ist
ein Signalablaufdiagramm, das das Einladen von Sendeblöcken in
dem Pufferspeicher zeigt.
-
19 ist
ein Zeitablaufdiagramm, das einen „Rücken an Rücken"- bzw. „Back-to-Back"-Lese- und Schreibvorgang durch den Pufferspeicher
zeigt.
-
20 ist
ein Diagramm, das den allgemeinen Aufbau von Empfangs- und Sendedeskriptoren zeigt.
-
21 ist
ein Diagramm eines Deskriptorrings.
-
22 ist
ein Diagramm, das die Verknüpfung
von Sendeblöcken
unter Anwendung von Deskriptoren zeigt.
-
23 ist
eine Ansicht, die mehrere Empfangsringe in einem Systemspeicher
zeigt, der Pakete auf Grundlage einer Kopfbereiche/Daten-Auftrennung
erhält.
-
24 ist
eine Ansicht von Empfangsblöcken,
die zu unterschiedlichen physikalischen Speichern auf der Grundlage
einer Kopfbereich-Aufteilung geführt
werden.
-
25 ist
eine Ansicht, die mehrere Empfangsringe in dem Systemspeicher zeigt,
der Pakete auf Grundlage von FC-Feldern empfängt.
-
26 ist
eine Ansicht von Empfangsblöcken,
die zu unterschiedlichen Deskriptorringen auf der Grundlage von
FC-Feldern geführt
werden.
-
27 ist
eine Ansicht, die den „Verwerfungs-
oder blockierten Empfangs"-Betriebsmodus der
Netzwerk-DMA-Steuerung zeigt.
-
Detaillierte Beschreibung
einer bevorzugten Ausführungsform
-
Obwohl
eine spezielle Anwendung der Erfindung ein FDDI-Netzwerk betrifft,
ist die Erfindung allgemein auf dem Gebiet der Blockdatenverarbeitung oder
Paketdatenverarbeitung einsetzbar. Obwohl die Offenbarung dieser
Erfindung im Zusammenhang mit FDDI-Schnittstellen dargelegt wird, sollte
daher klar sein, dass die Aspekte der Erfindung nicht darauf eingeschränkt sind.
-
FDDI: Allgemein
-
Es
wird nun eine gewisse Hintergrundinformation über FDDI angegeben, die zum
Verständnis der
Erfindung in diesem Zusammenhang hilfreich ist.
-
„Glasfaserdatenverteilungsschnittstelle" (FDDI) basierend
auf optischen Glasfaserkomponenten und Systemen und entwickelt von
amerikanischen Institut für
nationale Standards (ANSI) X3T9.5 definiert ein Protokoll mit Zeitsteuerung
und Berechtigungsmarke für
100 Megatbit pro Sekunde, wodurch gegenläufige physikalische Doppelringe
eingerichtet werden.
-
1 ist
eine vereinfachte Blockansicht eines FDDI-Rings, der aus mehreren
Stationsarten zusammengesetzt ist. Stationen der Klasse A, die manchmal
auch als „Stationen
mit dualer Verbindung" bezeichnet
werden, sind mit primären
und sekundären
Ringen des Netzwerkes verbunden. Daten laufen in den beiden Ringen
in der entgegensetzten Richtung, wie dies durch die Pfeile angegeben
ist. Die Stationen der Klasse A können als Verdrahtungszentrale
dienen, und mehrere Einzelverbindungsstationen oder Klasse B-Stationen
mit dem Ring zu verbinden. In 1 ist die
Station 2 eine Verdrahtungszentrale für die Station 3, 4 und 5. Die
Konzentrations"-
bzw. Zentralstationen ergeben für
den Netzwerkverwalter einen einzelnen Wartungspunkt für eine große Anzahl
von Stationen. Die zwischen den Stationen ausgetauschten Daten liegen
in Form von „eingerahmten" Paketen bzw. Blockpaketen
vor.
-
Das
Format eines FDDI-Paketes ist in 2 gezeigt.
Den Pakten eilen mindestens 16 Leerlaufsteuersymbole (Präambel) voraus.
Pakete beginnen mit einem Startbegrenzungszeichen (ST), das aus dem
J- und K-Steuersymbolen der 4B/5B-Kodierung zusammengesetzt ist,
wie dies bekannt ist. Danach folgt ein 2-Daten-Symbol-Blocksteuer-(FC)Feld,
das die Art des Paketes angibt. Die Zieladresse (DA) gibt den beabsichtigten
Empfänger
des Pakets an. Die Quellenadresse (SA) gibt den Sender des Paketes an.
Adressen können
26 oder 48 Bits lang sein. Das DA-Feld kann auf eine einzelne Station,
eine Gruppe aus Stationen oder alle Stationen auf dem Ring zeigen.
-
Auf
die SA folgt das Informationsfeld mit variabler Länge. Ein
Blockprüfsequenz-(FCS)Feld
enthält
4 Bytes aus Daten. Diese Daten sind das Ergebnis eines 32-Bit-Autodin-II-Polynoms für zyklische Redundanzprüfung. Die
FCS stellt die Datenintegrität der
FC, DA, SA, INFO- und PCS-Felder sicher.
-
Im
Anschluss an das FCS-Feld wird ein Endbegrenzungszeichen (ED), das
mit dem T-Symbol gebildet
ist, übertragen.
Das Blockstatus-(FS)Feld wird für
Symbole verwendet, die bestimmen, ob das Paket mit Fehler empfangen
wurde, wenn die Adresse erkannt wurde, oder das Paket kopiert wurde.
-
Pakete
werden aus der FDDI für
die paketerzeugenden Station entfernt. In diesem Vorgang, der als „Abstreifen
bzw. Stripping" bezeichnet
wird und in den 3(a) und 3(b) gezeigt ist, wählt eine Mediumzugriffsteuerung
(MAC) 20 eine Quelle von Leerlaufsteuersymbolen für das Übertragen
auf dem Ring aus. Wenn ein Startbegrenzungszeichen eintrifft, schaltet
die Steuerung auf einen Wiederholungspfad um. Das Paket wird überwacht,
bei Bedarf kopiert und gleichzeitig wiederholt. Die Mediumzugriffssteuerung 20 kann
auch umschalten, um die eigenen Pakete zu erzeugen oder kann ein
Berechtigungszeichen ausgeben.
-
Bei
der Übergabe
mit Berechtigungszeichen bzw. "Token" verteilen Stationen
das Recht zum Senden über
das Medium durch Zirkulieren eines Berechtigungszeichens bzw. Tokens", das ein spezielles
Bitmuster ist, das das Recht zum Senden der Station zuweist, die
das Bit-Muster empfängt.
Eine Station, die senden will, wartet, bis sie das Berechtigungszeichen
von der vorhergehenden Station in der Reihenfolge der Weiterleitung
der Berechti gungszeichen empfängt.
Wenn die Station das Berechtigungszeichen erhält, sendet sie ihre Daten und
gibt dann das Berechtigungszeichen an die nächste Station weiter.
-
Eine
FDDI-Station, die auf das Senden wartet, muss zunächst das
Berechtigungszeichen „einfangen
bzw. erhalten",
indem der Vorgang des Abstreifens bzw. Strippens ausgeführt wird.
Es wird nur das Berechtigungszeichen-SD-Feld auf dem Ring wiederholt.
Sobald das Berechtigungszeichen erhalten wird, kann die Station
mit dem Senden der Station mit dem Senden von Paketen beginnen.
Wenn das letzte Paket gesendet ist, gibt die Station unmittelbar
danach ein neues Berechtigungszeichen aus.
-
Die
Regeln für
das Empfangen des Berechtigungszeichens und die Länge der
Zeitdauer, die für die
Datenübertragung
verfügbar
ist, werden durch das „zeitgesteuerte
Berechtigungszeichenprotokoll" geregelt,
das in dem FDDI-Spezifikationen definiert ist und in einer anhängigen Anmeldung
(3) zusammengefasst und hierin durch Bezugnahme aufgenommen ist.
Das Protokoll ist so gestaltet, dass eine maximale Rotationszeitdauer
für Berechtigungszeichen
(TRT) sichergestellt ist, wobei diese in einem Nachfrageprozess
zwischen Stationen während
eines Anbietens bei der Initialisierung festgelegt wird. Der Nachfrageprozess
ermöglicht
es der Station, die die geringste Zeitdauer zwischen eintreffenden
Berechtigungszeichen fordert, eine angestrebte Berechtigungszeichenrotationszeitdauer
(TTRT) für
den Ring vorzugeben.
-
Ein
zeitgesteuertes Berechtigungszeichenprotokoll bietet zwei Arten
an Übertragungsdiensten, d.
h. einen synchronen Dienst und einen asynchronen Dienst. Den Stationen
wird eine vorbestimmte Größe der Übertragungsbandbreite
bei jeder Berechtigungszeichenrotation mit synchroner Dienstleistung zugewiesen.
Die verbleibende Ringbandbreite wird zwischen den Stationen unter
Anwendung asynchroner Dienste aufgeteilt. Stationen können asynchrone Übertragungen
tätigen,
wenn das Berechtigungszeichen früher
als erwartet eintrifft. Die Zeitdauer, die für eine asynchrone Übertragung
zugewiesen ist, wird durch den Unterschied der tatsächlichen
Zeit des Eintreffens des Berechtigungszeichens und der erwarteten
Ankunftszeit für
das Berechtigungszeichen begrenzt. Die Zuweisung einer Bandbreite
für die asynchrone Übertragung
ist dynamisch, wobei ungenutzte Bandbreite für eine synchrone Übertragung automatisch
für asynchrone Übertragungen
bei einer Rotation der Berechtigungszeichen neu zugewiesen wird.
-
FDDI; Schnittstellenschaltungsimplementierung
-
Gemäß 4 wird
in einer FDDI-Schnittstelle gemäß der bevorzugten
Ausführungsform
der Erfindung eine Leitbusarchitektur bzw. Masterbusarchitektur,
die allgemein als 116 bezeichnet ist, zwischen einem Systembus
oder Anwenderbus und einem Netzwerk in Form eines optischen Glasfasermediums
vorgesehen. Die wesentlichen Komponenten der Leitbusarchitektur 116 beinhalten
eine Mediumzugriffssteuerung (MAC) 120 zum Zugreifen auf
das Medium über
einen Kodierer bzw. Dekodierer (ENDEC) 132, der Datenblöcke von
der Steuerung 120 empfängt
und eine geeignete Kodierung der Blöcke vor dem Umwandeln der Daten
vom parallelen Format in das serielle Format ausführt und
andere "interne
Verwaltungsfunktionen" ausführt, um
den FDDI-Erfordernissen zu dienen. Eine Netzwerk-DMA(direkter Speicherzugriffs-)Steuerung 124 steuert
den Datenaustausch zwischen Host- und Knotenprozessorspeichern (nicht
gezeigt) über
den Systembus und einen Ausgabepuffer 126, der so gestaltet
ist, dass er zumindest einen FIFO-(zuerst-hinein-zuerst-heraus)Speicher
aufweist, der zwischen der DMA-Steuerung und der Mediumzugriffssteuerung
angeschlossen ist. Die Mediumzugriffssteuerung 120 richtet
ein geeignetes Netzwerkzugriffsprotokoll ein, empfängt und
sendet Datenblöcke,
während
erforderliche interne Verwaltungsfunktionen, etwa das Entfernen
von Datenblöcken,
die Fehlerprüfung
und die Buszuweisung ausgeführt
werden. Die Netzwerk DMA-Steuerung 124 arbeitet als eine vordere
Busleiteinrichtung bzw. Master, wobei mit dem Host-Prozessor und
dem Knotenprozessor kommuniziert wird, um Daten zwischen dem Systemspeicher
und dem Puffer zu verteilen und zusammenzuführen, wobei die Verschiebung
von Daten in dem Speicher minimiert wird.
-
Die
Mediumzugriffssteuerung 120 ist mit einem Pufferspeicher 126 über einen
Datenbus 134 und einen Adressenbus 136 verbunden,
und ist mit der Netzwerk DMA-Steuerung 124 über den
Datenbus 134 verbunden. Es wird eine Übergabe zwischen den Steuerungen 124 und 120 auf
einem Bus 140 ausgeführt,
um die Verschiebung von Daten zu und aus dem Medium zu steuern.
Die Steuerung 120, die in 5 gezeigt
ist, wird nachfolgend detaillierter beschrieben.
-
Die
Netzwerk-DMA-Steuerung 124 befindet sich in einem Host-Bus 142 mit
einem gemeinsam genutzten Datenbus 144 und Adressen- und
Steuerbussen 146, 148. Steuersignale zu der Netzwerk-DMA-Steuerung 124 werden über Schnittstellen
an die Host- und Knoten busse 143a, b über Busanforderungs- und Bestätigungsleitungen 150a, b übermittelt.
Die Mediumzugriffssteuerung und die Netzwerk-DMA-Steuerung 120 und 124 arbeiten
mit dem Ausgabepufferspeicher 126 zusammen, um Netzwerkschnittstellenfunktionen
auf den diversen gezeigten Bussen auszuführen, wie detaillierter in der
anliegenden Anmeldung (1) beschrieben ist, die damit durch Bezugnahme
mit eingeschlossen ist.
-
Gemäß der Blockansicht
aus 6 ist der Ausgabepuffer 126 (7)
mit einem Empfangs-FIFO 175 versehen,
der eine Warteschlange aus Daten enthält, die über das Medium empfangen werden,
und es ist mindestens einer aber vorzugsweise vier Sende-FIFO's 177 ebenfalls
vorgesehen, die jeweils eine Warteschlange aus Daten enthalten, die
dem Medium zuzuführen
sind. Die vier in 7 gezeigten Warteschlangen repräsentieren
eine synchrone Warteschlange und Warteschlangen mit Daten, die unterschiedliche
zugeordnete Prioritäten
entsprechend den FDDI-Spezifikationen aufweisen. Der Ausgabepuffer 126,
der vorzugsweise ein statischer Speicher mit wahlfreiem Zugriff
(SRAM) ist, ist durch Firmware so programmiert, dass dieser vier
FIFO's aufweist,
die jeweils eine Datenwarteschlange mit unterschiedlicher Priorität enthalten;
insbesondere ist jeder FIFO als ein Pufferbereich in dem Systemspeicher
unter Anwendung von „Deskriptoren" definiert, wie dies
nachfolgend detaillierter beschrieben ist.
-
Daten,
die über
das Medium empfangen werden, werden von der Netzwerk-DMA-Steuerung 124 dem
Systemspeicher über
Verbindungslistenwarteschlangen 178 zugeführt, und
in ähnlicher
Weise werden Daten an das Medium aus dem Systemspeicher über Verbindungslistenwarteschlangen 180 übertragen,
die der synchronen Priorität
und den drei Ebenen aus asynchroner Priorität entsprechen.
-
Vor
einer Operation mit Einbeziehung des Ausgabepuffers 126 muss
der Knotenprozessor die Endadressen aller Warteschlangen in dem
Puffer einladen. Warteschlangenzeiger sind in der in 7 gezeigten
Reihenfolge angeordnet, d. h. Zeiger definieren zunächst das
Ende eines speziellen Blockbereichs, dann folgen eine Empfangswarteschlange und
nächste
Sendewartschlangen in der Reihenfolge: synchronisierte Warteschlange
gefolgt von asynchronen Warteschlangen mit drei Prioritätsebenen. Ferner
werden von dem Knotenprozessor auch die Lese/Schreib-Zeiger verwendeter
Warteschlangen programmiert, wie in der rechten Spalte aus 7 gezeigt
ist; Endadressenzeigen sind in der linken Spalte der Figur dargestellt.
-
Insbesondere
ist jede Warteschlange des in 7 gezeigten
FIFO's durch einen „Ende der Adresse" Zeiger gekennzeichnet,
der das Präfix „EA" besitzt. Beispielsweise
definiert die EA den speziellen Blockbereich. Die SYNC-Warteschlange,
die die synchronen Daten enthält,
ist durch einen „Ende
der Adresse"-Zeiger „EAS" gekennzeichnet.
Die drei asynchronen Warteschlangen sind durch „Ende der Adresse"-Zeiger „EAA0–EAA2" gekennzeichnet. Jede
Warteschlange ist ferner durch Lese- und Schreib-Zeiger definiert,
die zu Speicherplätzen
zeigen, aus denen Daten ausgelesen werden und in die Daten geschrieben
werden, wie dies konventioneller Weise auch der Fall ist. Der Unterschied
zwischen den Lese- und
Schreib-Zeigern stellt die Menge der in der Warteschlange gespeicherten
Daten dar. Beispielweise repräsentieren
in 7 RPR und RPXA0–RPXA2 die Lese-Zeiger für die synchrone Datenwarteschlange
und die drei Ebenen der asynchronen Warteschlangen gemäß den FDDI-Standards.
Alle diese Lese-Zeiger sind am Anfang der entsprechenden Warteschlange.
Die Zeiger WPXS und WPXA0–WPXA2
repräsentieren
Schreib-Zeiger für
die synchronen Daten und die drei Ebenen der asynchronen Daten am
Ende der jeweiligen Warteschlange.
-
Ein „Schatten-Schreib"-Zeiger (SWP) zeigt auf
das Ende des Blockes, der als letztes in einer Warteschlange gespeichert
wurde. Die Funktion des Schatten-Schreib-Zeigers (SWP) und seine
Beziehung zu den anderen Zeigern, die in 7 dargestellt
sind, wird detaillierter in der anhängigen Anmeldung (2) beschrieben,
die hiermit durch Bezugnahme mit eingeschlossen ist.
-
Wie
die Netzwerkzugriffssteuerung und die Netzwerk-DMA-Steuerung 120, 124 zusammen
mit dem Pufferspeichern 126 zusammenwirken, um die Netzwerkschnittstellenoperationen
an den diversen gezeigten Bussen auszuführen, wird nachfolgend beschrieben.
In unmittelbarem Anschluss wird eine detailliertere Beschreibung
der wesentlichen Komponenten der Schnittstelle, d. h. der Netzwerk-DMA-Steuerung 124,
der Mediumzugriffssteuerung 120 und des Ausgangspuffers 126 angegeben.
-
Netzwerk-DMA-Steuerung 124
-
Die
Netzwerk-DMA-Steuerung 124, die detailliert in 8 gezeigt
ist, umfasst eine Schnittstellenschaltung 150, die zwischen
der Mediumzugriffssteuerung 120 und der Netzwerk- DMA-Steuerung 124 angeschlossen
ist. Die Schnittstelle 150 kommuniziert mit einem Sendeabschnitt,
der mindestens einen und vorzugsweise vier FIFO's 152, einen Empfangsabschnitt 154 mit
einem FIFO und eine Paketpufferverwaltungsschaltung 156 enthält. Die
Schnittstelle 150 überträgt Daten,
die in dem Sendeabschnitt 152 gespeichert sind, zu dem
Pufferspeicher 126 und überträgt auch
Daten von dem Puffer 126 zu dem Empfangsabschnitt 154.
Datenübertragungen von
dem Puffer 126 zu dem Empfangsabschnitt 154 werden
auf Befehl der Mediumzugriffssteuerung 120 veranlasst,
wenn Daten auf dem Netzwerk für
das System verfügbar
sind und andere Bedingungen einschließlich des Empfangs mindestens
einer vorbestimmten Menge an Empfangsdaten in dem Puffer erfüllt sind.
Datenübertragungen
von dem Sendeabschnitt 152 werden ausgeführt, wenn
Daten aus dem Systemspeicher in dem Sendeabschnitt verfügbar sind,
die Datenwarteschlange darin freigegeben ist und andere Bedingungen
erfüllt
sind, wozu zumindest ein voller Datenblock oder zumindest eine vorbestimmte
Menge an Sendedaten, die in dem Puffer gespeichert sind, gehört, wie
dies in der anhängigen Anmeldung
(2) beschrieben ist.
-
Die
Paketpufferverwaltungsschaltung 156 zeigt der Mediumzugriffssteuerung 120 an,
welche Art von Daten in dem Sendeabschnitt vorhanden ist, so dass
der Pufferspeicher mit geeigneten Warteschlangen in Abhängigkeit
der Priorität
der Daten entsprechend den FIFO-Spezifikationen geladen wird. Wenn
eine Warteschlange voll wird, signalisiert die Schnittstelle 150 der
Paketpufferverwaltungsschaltung 156, diese Warteschlange
zu verriegeln, um das Leeren des aktuellen FIFO's zu beenden und diese Warteschlange
in Wartezustand zu versetzen. Wenn ein Datentransfer unvollständig ist,
setzt die Schaltung 156 andere anhängige Transferereignisse fort,
bis die Schnittstelle 150 signalisiert, dass die Warteschlange
freigegeben ist. Zu diesem Zeitpunkt wird ein anhängiger Datentransfer
fortgesetzt. Wenn Sende- und Empfangsdaten von den FIFO's in den Abschnitten 152 und 154 gleichzeitig
angefordert werden, gewichtet die Schnittstelle 150 diese
Datenübertragungen
nach einer Priorität
auf der Grundlage der Sequenz aus Ereignissen in Übereinstimmung mit
einer vorbestimmten Sende- und Empfangsprioritätsreihenfolge.
-
Die
Paketpufferverwaltungsschaltung 156 dekodiert Befehlswörter, sendet,
fordert Befehle zum Rücksetzen
von Fehlern an und sendet geeignete Informationen zu der Systemspeicherschnittstelle 160 sowie
zu dem Sendeabschnitt 152. Die Paketpufferverwaltungsschaltung 156 legt
die Priorität
von Befehlsanforderungen, Sendeanforderungen von dem FIFO 152 und
Empfangsanforderungen von dem FIFO 154 fest. Die Verwaltungsschaltung 156 gibt dann
Befehle an die Systemspeicherschnittstelle 160 aus, um
Sendeoperationen oder Empfangsoperationen zu gewähren oder um einen der Befehle
auszuführen,
wobei eine Verbindung zu dem System über die CPU-Schnittstelle 161 vorliegt.
-
Der
Sendeabschnitt 152 bewahrt alle Sendewarteschlangen und
führt Operationen
in einer vorbestimmten Prioritätsreihenfolge
aus. Der FIFO 152 führt
eine Byteordnung und Datensammlung aus und formatiert die Daten-geeigneten
Paketen, die von der Mediumzugriffssteuerung 120 zu verarbeiten
sind. Diverse Sendewarteschlangen in dem Sendeabschnitt 152 werden
so gesteuert, dass, wenn der Pufferspeicher 126 eine Warteschlange
auffüllt,
ein Umschalten der Warteschlange ausgeführt wird. Alle für die verriegelte
Warteschlange erforderlichen Informationen werden gespeichert, so
dass der Betrieb fortgesetzt werden kann, wenn die Warteschlange freigegeben
wird. Der in dem Sendeabschnitt 152 enthaltene FIFO wird
auch für
die Datenspeicherung und die Ratenanpassung zwischen der Systemspeicherschnittstelle 160 und
der Netzwerkzugriffssteuerschnittstelle 150 verwendet.
Ein Zwischenspeicher ist in der Netzwerk-DMA-Steuerung 138 erforderlich, da
die Datenübertragungsraten über dem
Systemspeicherbus und in dem Netzwerk unabhängig voneinander sind.
-
Der
Empfangsabschnitt 154 empfängt die FIFO-geeigneten Blöcke von
den Ausgabepufferspeicher 126 und verteilt diese in den
Empfangspuffern in dem Systemspeicher. Die Empfangspuffer werden
von den Diskriptorringen angezeigt. Der Abschnitt 154 enthält ferner
einen FIFO, um eine Ratenanpassung zwischen dem Netzwerk und dem Systemspeicher
in der gleichen Weise wie in dem Sende-FIFO 152 zu ermöglichen.
-
Die
Systemspeicherschnittstelle (SMI) 160 umfasst eine programmierbare
Hochgeschwindigkeitsbusschnittstelle, eine Adressenerzeugungsschaltung
und Speicherplatz für
den Systemspeicher. Die Schnittstelle 160 enthält ferner
Schaltungen zum Erkennen des Endes eines Rings für die Pufferverwaltung in dem
Systemspeicher, und enthält
ferner eine primäre
Steuerzustandsmaschine für
die Systemspeicherschnittstelle.
-
Signale,
die von der Systemspeicherschnittstelle 160 aus Leitungen 163 dem
System zugeführt werden,
sind synchron zu einem Systemtaktsignal SCLK (nicht gezeigt). Diese
Signale fordern Zugriff für
einen einzelnen Systemspeicher durch eine externe Zuweisungseinrichtung
(nicht gezeigt). Ein weiteres Signal gewährt der Netzwerk-DMA-Steuerung 124 das Recht,
auf den Systemspeicher zuzugreifen. Ein Adressbus am Ausgang der
SMI 160 adressiert alle Systemspeicherzugriffe, und ein
Systemspeicher-Lese-Schreib-Leitung gibt an, ob Daten von dem Systemspeicher
zu der Steuerung 124 oder von der Steuerung zu dem Systemspeicher übertragen werden.
Andere Signale am Ausgang der SMI 160 geben den Status
des Systemspeichers an, geben Fehler an und aktivieren oder deaktivieren
externe Datenpuffer, um eine Konkurrenz auf dem Bus zwischen Leseoperationen
und Schreiboperationen für den
Systemspeicher zu verhindern. Ein weiteres SMI-Signal aktiviert
einen Signalspeicher in der SMI, um Daten für einen Schreibvorgang in den
Systemspeicher zu speichern.
-
Signalleitungen
in der CPU-Schnittstelle 161 enthalten ein Signal, das
anzeigt, dass die Netzwerk-DMA-Steuerung 124 einen Befehl
aus dem Speicher auslesen muss, und das angibt, dass die Steuerung
den Speicherzugriff ausführen
soll. Eine weitere Leitung zeigt der CPU an, dass die Netzwerk-DMA-Steuerung
ein neues Statuswort in den Speicher geschrieben hat, und eine weitere
Leitung setzt das Interruptereignis zurück.
-
Am
Ausgang der Schnittstelle 150 liegt ein Host-Anforderungsbus
an, der kodierte Anforderungen zum Zugreifen auf den Pufferspeicher 126 über die
Mediumzugriffssteuerung 120 enthält. Abhängig von der auf dem Host-Anforderungsbus übermittelten Kodierung
wird auf den Pufferspeicher 126 zugegriffen, um Daten auszulesen
oder Daten in eine der vier Sendewarteschlangen zu schreiben. Die
Leseanforderung ruft Empfangspakete aus dem Puffer 126 ab und
speichert diese in dem Systemspeicher. Schreibanforderungen übertragen
Pakete in den Pufferspeicher zur weiteren Übertragung. Auch ist an dem
Ausgang der Schnittstelle 150 eine Host-Bestätigungsleitung
angeordnet, die ein Signal übermittelt, das
anzeigt, dass die aktuelle Schreib- oder Leseanforderung der Netzwerk-DMA-Steuerung 124 von
der Mediumzugriffssteuerung 120 gewährt wird. Zusammen mit diesem
Signal wird der Pufferspeicher 126 aktiviert und es sind
Daten auf einem Datenbus, einem Datenparitätsbus und einem Datenmarkierungsbus
vorhanden, wie sie nachfolgend beschrieben werden (15).
Die Schnittstelle stellt ferner eine Leseaufgabe bereit, um Daten
in der Netzwerk-DMA-Steuerung 124 zu speichern, wenn die Mediumzugriffssteuerung 120 Daten
aus dem Pufferspeicher 126 in die DMA-Steuerung ausliest.
Eine Empfangsdatenleitung gibt an, dass die Empfangsdaten in dem
Puffer 126 vorhanden sind und für das Übertragen zu dem Systemspeicher
bereit sind. Andere Leitungen, die nachfolgend beschrieben wer den,
geben den Status der Sendewarteschlangen in dem Puffer 126 an,
auf die aktuell zugegriffen wird.
-
Gemäß einem
Aspekt der Erfindung umfasst der von der Netzwerk-DMA-Steuerung 124 gesteuerte
Systemspeicher: einen ersten Speicher 125(a) und einen
zweiten Speicher 125(b), die in der bevorzugten Ausführungsform
Speicher für
den Knotenprozessor und den Host-Rechner sind, und den Knotenprozessorbus
und den Host-Bus 143(a), 143(b), wie in 4 gezeigt
ist. Die Busse für
den Knotenprozessor und den Host 143(a), 143(b) sind
mit der Netzwerk-DMA-Steuerung 124 über einen Systembus 147 verbunden,
der einen gemeinsamen Datenbus 144 und Steuerbusse 146, 148 enthält. Treiber 149(a), 149(b) werden
von der Netzwerk-DMA-Steuerung 124 so angesteuert, dass
der NP-Bus 143(a) oder der Host-Bus 143(b) mit
dem Systembus 147 verbunden wird. Gemäß den 16(a) und 16(b) werden Daten aus dem NP-Speicher
oder Host-Speicher 125(a), 143(b) auf den beiden
Bussen 143(a), 143(b) ausgelesen oder in diese
geschrieben, wobei ein Übergabeprotokoll
zwischen der Steuerung 124 und den Speichern eingesetzt
wird und wobei die Treiber 149(a), 149(b) verwendet
werden.
-
Die
Architekturen der 16(a) und 16(b) mit einem separaten Knotenprozessorspeicher
und Host-Speicher 125(a), 125(b) ist vorteilhaft,
da damit ermöglicht
wird, dass Sendeblöcke
von zwei physikalischen Speichern zur Übertragung in ein Netzwerk gesammelt
werden können.
Dies ermöglicht
eine Datenmanipulation unter Anwendung von Deskriptoren in effizienter
Weise, wobei der Knotenprozessor eine Protokollverarbeitung ausführt, während der Host-Prozessor
die Daten liefert. In 16(b) wird beispielsweise
gemäß einem
Aspekt der Erfindung, wie dies nachfolgend detaillierter beschrieben
ist, die Kopfbereichsinformation aus dem Speicher 125(a) des
Knotenprozessors (NP) ausgelesen und die Daten werden aus dem Host-Speicher 125(b) ausgelesen,
um ein zusätzliches
Kopieren der Daten zu vermeiden. Die Netzwerk-DMA-Steuerung 124 führt diese
Funktion durch Übergabe
bzw. Handschlag" mit den
beiden Speichern unter Anwendung zweier Gruppen aus Anforderungs/Gewährungssignalen aus.
-
In 16(b) wird ein Paar einer Kopfbereichsanforderung-Gewährung (HBREQ/HBGRT) verwendet,
um auf den NP-Speicher 135(a) zuzugreifen, und ein Paar
bestehend aus einem Datenanforderungs- und Gewährungsvorgang (DBREQ/DBGRT)
greift auf den Host-Speicher 125(b) zu.
In diesem Beispiel werden Kopfbereichsdaten zusammen mit einem Deskriptorring
in dem Speicher 135(a) des Knotenprozessors gespeichert; Daten
werden nur in dem Host-Speicher 135(b) gespeichert. Der
Kopfbereich und die Daten in den beiden Speichern sind in Puffern
angeordnet, die durch den Deskriptorring DR definiert sind, der
in dem NP-Speicher 125(a) abgelegt ist.
-
In ähnlicher
Weise kann die Netzwerk-DMA-Steuerung 124 Empfangsdatenblöcke in Puffern
speichern, die durch zwei separate Deskriptorringe definiert sind.
Dies ermöglicht
einen direkten Transfer von empfangenen Daten in zwei physikalische
Speicherstellen, ohne dass eine zusätzliche Kopie erforderlich
ist. Z. B. können
Kopfbereiche und Deskriptoren für
Empfangsdaten in dem NP-Speicher 125(a) gespeichert werden;
und Empfangsdaten können
in dem Host-Speicher 125(b) gespeichert werden.
-
Um
auf den NP-Speicher 125(a) zuzugreifen, legt die Netzwerk-DMA-Steuerung
ein Anforderungssignal HBREQ auf den Systembus 147. Die
Anforderung HBREQ wird über
die Treiber 149(a) und 149(b) an jeweils die Speicher 125(a) und 125(b) des Knotenprozessors
und des Host-Prozessors geleitet. Lediglich der NP-Speicher 125(a) reagiert
auf das Gewährungssignal
HBGNT, um einen Zugriff auf den Speicher über einen Weg zu ermöglichen,
der aus dem NP-Bus 143(a), dem Treiber 143(a) und
dem Systembus 147 besteht. Da der Speicher 125(b) nicht
auf das Anforderungssignal HBREQ regiert, erzeugt der Speicher 125(b) kein
Gewährungssignal und
Zugriff auf den Host-Speicher ist nicht möglich.
-
Wenn
andererseits ein Zugriff auf den Host-Speicher 125(b) erforderlich
ist, legt die Netzwerk-DMA-Steuerung 124 ein Anforderungssignal DBREQ
auf den Systembus 147. Das Anforderungssignal DBREQ wird über die
Treiber 149(a), 149(b) dem Knotenprozessorspeicher 125(a) und
dem Host-Prozessorspeicher 125(b) zugeleitet. Nur der Host-Prozessorspeicher 125(b) erzeugt
ein Gewährungssignal
DBGNT, das von der Steuerung 124 über einen Weg empfangen wird,
der aus dem Host-Bus 143(b), dem Treiber 149(b) und
dem Systembus 147 besteht. Es wird nun ein Zugriff auf
den Host-Speicher 125(b) durch die Netzwerk-DMA-Steuerung 124 eingerichtet.
Deskriptorringe der Art, wie sie als DR in 16(b) angegeben
sind, sind eine Verwirklichung gut bekannter Techniken, um einen
Puffer in einem zugewiesenen Gebiet bzw. Bereich eines Speichers zur
Speicherung von Daten zu beschreiben. Ein Deskriptor, wie er in 20 gezeigt
ist, umfasst zwei lange Wörter
LW1 und LW2. Das Wort LW1 enthält den
Status und die Länge
des Puffers, der in dem Speicher zu definieren ist; das Wort LW2
ist ein Zeiger, der auf die Startadresse des Puffers verweist. Die
Strukturen der Sende- und Empfangsdeskriptoren sind ähnlich zueinander.
-
Ein
Statusbereich jedes Deskriptors repräsentiert den Status des Datenpuffers
sowie den Status des Datenpakets, das in dem Puffer zu speichern ist.
Wenn ein Empfangspaket mehr als einen Puffer erfordert, dann wird
der Status des Pakets nur von dem letzten Pufferdeskriptor dieses
Paketes beachtet.
-
Pufferstatusbits
enthalten ein OWN-Bit, das von dem Host-Prozessor gesetzt wird,
um anzugeben, dass dieser Eintrag ein zulässiger Eintrag zur Verwendung
durch die DMA-Steuerung 124 ist,
und dass die DMA-Steuerung den Deskriptor „besitzt". Wenn die Netzwerk-DMA-Steuerung 124 den
Datentransfer zu dem entsprechenden Puffer beendet, setzt sie das
OWN-Bit zurück
und übergibt
diesen Puffer, d. h. das Besitzrecht daran, dem Host-Prozessor. Dieses
Bit ist gültig
für jeden
Deskriptor.
-
Ein „Ende des
Pakets" (EOP) markiert,
wenn es gesetzt ist, den letzten Puffer eines Pakets. Wenn das Paket
lediglich in einem Puffer liegt, muss dieses Bit für den entsprechenden
Deskriptor gesetzt werden. Wenn das Bit auf tiefen Wert ist, geht
das Paket in den nächsten
Puffer weiter.
-
Ein
Abort-Bit zeigt an, wenn es gesetzt ist, dass ein aktuelles Paket
kein vollständiges
Paket ist. Das EOP-Bit eines Sendedeskriptors wird nur von dem Prozessor
gesteuert und gilt für
jeden Deskriptor. Das EOP-Bit eines empfangenen Deskriptors ist nur
für den
Puffer 126 zulässig,
wenn das EOP-Bit auf eins gesetzt ist, und wird von der Netzwerk-DMA-Steuerung 124 gesteuert.
-
Andere
Statusbits, die zum Beschreiben anderer Eigenschaften des Puffers
eingerichtet werden können,
sind der Kürze
hier weggelassen.
-
Eine
Reihe von Puffern wird durch den Deskriptorring DR aus 16 beschrieben, der detaillierter in 21 gezeigt
ist. In diesem Beispiel beginnt der Puffer B bei der Adresse An in dem Systemspeicher und erstreckt sich
bis zur Adresse An+m, so dass eine Länge Am erreicht wird. Der Puffer B kann, ohne dass
dies erforderlich ist, in dem gleichen physikali schen Speicher wie
der Deskriptor DR liegen. Beim Senden können Deskriptoren DR unabhängig in
dem Host-Speicher und dem Knotenprozessorspeicher 125(a), 125(b) enthalten
sein. Beim Empfangen liegen die Deskriptoren und die entsprechenden
Puffer in dem gleichen Speicher.
-
Sendedaten
werden aus den Puffern, die in den beiden physikalischen Speichern 125(a), 125(b) verteilt
sind, in Puffern gesammelt, die durch einen Deskriptorring DR definiert
sind, der in einem beliebigen Speicher liegt. Unter Bezug auf 2 sei
angenommen, dass zwei aufeinanderfolgende Datenblöcke, die
zu einem Netzwerk zu übertragen
sind, der Block A und der Block B sind. Der Block A umfasst einen
Kopfbereich in einem Puffer A und Daten, die in einem Puffer 1a
und 2a verteilt sind; der Block B enthält einen Kopfbereich in einem
Puffer 1b und Daten nur in dem Puffer 1b. Der Deskriptorring DR
greift auf die Daten des Blocks A und des Blocks B nacheinander
zu, um die Daten zu dem Netzwerk zu übertragen, wie dies gezeigt
ist. Die in den beiden Blöcken enthaltenen
Daten können
auf beide physikalischen Speicher 125(a), 125(b) verteilt
sein.
-
Zum
Beispiel nehme man an, dass 10 000 Bytes an Daten an das Netzwerk
zu übertragen
sind. In einem FDDI-Netzwerk können
lediglich 4500 Bytes pro Block gleichzeitig übertragen werden. Jeder Block
aus 4500 Bytes erfordert den Kopfbereich. Man nehme an, dass synchrone
Daten mit Priorität "0", d. h. mit höchster Priorität, an das
Netzwerk zu übertragen
sind. Der erste Deskriptor in dem Ring zeigt auf den Puffer 1a,
der den Sendekopfbereich enthält,
und der zweite Deskriptor zeigt auf den ersten Puffer 1a, der die
Sendedaten speichert. Ein dritter Deskriptor zeigt auf einen dritten
Puffer, der die Sendedaten 2a enthält. Die ersten drei Dreskriptoren beinhalten
daher gemeinsam den ersten Block aus Daten, die an das Netzwerk
zu übertragen
sind. Der vierte Deskriptor zeigt auf einen vierten Puffer, der den
Sendekopfbereich 1b des Blocks b enthält, und der fünfte Deskriptor
zeigt auf einen weiteren Puffer, der die Sendedaten 1b enthält, wodurch
der Block B vervollständig
wird. Wenn der Block B die gleichen Kopfbereichsdaten wie der Block
A enthält,
zeigt der vierte Deskriptor auf den ersten Kopfbereich, der mit den
Daten 1b zu kombinieren ist, um den zweiten Block zu vervollständigen.
-
Bei
einer Sendeanforderung erstellt der Host-Prozessor einen Sendedeskriptor
und setzt das OWN-Bit in dem Statusfeld des Deskriptors. Der Prozessor
leitet der Netzwerk DMA-Steuerung 124 einen Befehl
zum Senden zu. Die Steuerung 124 ruft den Deskriptor ab, ermittelt
die entsprechenden Puffer, liest Daten in dem internen FIFO und überträgt die Daten
an dem Pufferspeicher 126. Dieser Prozess geht weiter,
bis die Steuerung 124 einen Deskriptor erreicht, der ein
gesetztes EOP-Bit aufweist, wodurch angegeben wird, dass das Ende
eines Paketes erreicht ist. Zu diesem Zeitpunkt setzt die Steuerung 124 ein
Markierungsbit im letzten Wort des Pakets und in dem Statuswort,
das auf das Paket in dem Pufferspeicher folgt, wie in 11 gezeigt
ist.
-
Die
Netzwerk-DMA-Steuerung 124 liest weiterhin Deskriptoren
aus dem Ring aus, bis das OWN-Bit eines Deskriptors zurückgesetzt
ist. In diesem Falle beendet die Steuerung 124 das Auslesen aus
diesem Ring, bis ein neuer Befehl zum Senden von dem Host-Prozessor
eintrifft. Wenn Daten aus den zwei physikalischen Speichern 125(a), 125(b) zum Übertragen
eines Netzwerks gesammelt werden, wird durch Übergabe zwischen den Speichern und
der Netzwerk-DMA-Steuerung 124 durch die Paare aus REQ/GNT-Signalen
ein Zugriff auf den jeweils richtigen Speicher gewährleistet,
wie dies zuvor beschrieben ist.
-
Es
gibt einen separaten Deskriptorring für jede Priorität der Daten.
In diesem Beispiel sind vier separate Deskriptorringe verwendet,
d. h. einer für synchrone
Daten und drei für
asynchrone Prioritäten 0
bis 2. Jedoch ist die Anzahl der möglichen Deskriptorringe beliebig.
Ferner sind die Positionen in den beiden physikalischen Speichern
der Sendedatenpuffer beliebig, die unter Steuerung eines Deskriptorringes
zusammenzuführen
sind, der selbst in einem der beiden Speicher gespeichert sein kann.
Dies ermöglicht
ein beliebiges Zusammenfügen
von Blöcken,
ohne dass tatsächlich
gespeicherte Daten kopiert und verschoben werden.
-
Die
Position jedes Puffers in dem einen oder dem anderen der beiden
Speicher wird als ein Status-Bit jedes Deskriptors kodiert. Folglich
ist die Netzwerk-DMA-Steuerung 124 in der Lage festzustellen, welcher
der beiden physikalischen Speicher, d. h. der Knoten-Prozessor-Speicher
oder der Host-Speicher, den Puffer enthält.
-
Das
Einrichten von Positionen für
Empfangspuffer ist komplexer. Die Länge der Sendepakete ist gleich
und bekannt und ihre Positionen in dem Speicher sind ebenfalls bekannt;
demgegenüber
können Empfangspakete
in ihrer Länge
variabel sein und Positionen müssen
dynamisch beim Eintreffen von Paketen aus dem Netzwerk definiert
werden. Die Netzwerk-DMA-Steuerung 134 erstellt unter Anwendung von
Deskriptorringen eine Ansamm lung freier Puffer in dem Systemspeicher.
Wenn Pakete empfangen werden, ermittelt die Steuerung drei Puffer
und ordnet diese an, um die empfangenen Daten zu speichern und weist
Pakete den Puffern entsprechend dem Deskriptor zu, der mit jedem
Paket verknüpft
ist.
-
Leere
Puffer in dem Systemspeicher werden zunehmend mit empfangenen Daten
beim Eintreffen der Daten aufgefüllt,
wobei diese von der Medienzugriffssteuerung 120 akzeptiert
werden. Wenn ein Puffer gefüllt
ist, greift die Netzwerk-DMA-Steuerung 124 auf den Deskriptorring
zu, um den nächsten
Puffer zu positionieren, etc., bis das Ende des Pakets durch dessen
EOP-Bit erkannt wird. Wenn ein neues Paket eintrifft, werden freie
Puffer in der Ansammlung aus freien Puffern, die durch den entsprechenden Deskriptorring
bezeichnet sind, gefüllt.
-
Unter
gewissen Umständen
ist es vorteilhaft, empfangene Pakete in unterschiedlichen Puffern
unter Anwendung separater Deskriptorringe zu speichern. Z. B. können ein
erster und ein zweiter Teil von empfangenen Daten erfindungsgemäß in zwei
separate Deskriptorringe aufgeteilt werden. Der erste Deskriptorring
empfängt
den ersten Teil eines Blocks, der üblicherweise zumindest einen
Teil des Kopfbereichs enthält,
und der Rest des Blocks wird dem zweiten Deskriptor zugeteilt. Das
Trennen des Kopfbereichs und der Datenanteile eines Blocks ermöglicht es,
dass der Kopfbereich effizient für
unterschiedliche Daten gemeinsam benutzt wird.
-
Vorzugsweise
definiert jeder Deskriptor des ersten Deskriptorrings eine Pufferlänge, die
deutlich kleiner ist als jene, die von den Dekriptoren des zweiten
Rings definiert ist. In der bevorzugten Ausführungsform ist die Länge jedes
Puffers, der durch den ersten Ring definiert ist, gleich oder geringfügig größer als
die Länge
des längsten
Kopfbereichs, der beim Empfang erwartet wird.
-
Entsprechende
Bereiche eines gemeinsamen Blocks werden zueinander "synchronisiert", indem jeden Puffer
eine Anzahl an Bits als Kennung für Puffer, die Daten oder einen
Kopfbereich enthalten, die zu dem gleichen Block gehören, zugewiesen wird.
-
Wenn
der Prozessor programmiert ist, um eine Kopfbereich/Datenaufteilung
auszuführen,
arbeiten zwei Empfangsdeskriptorringe als ein Funktionspaar. Wenn
gemäß 23 eintref fende
Daten einem Deskriptorring 1 zuzuführen sind, und eine Kopfbereich/Daten-Auftrennung auszuführen ist,
wird der erste Empfangspuffer, der durch den Deskriptorring 1 bezeichnet
ist, mit dem Empfangspaket gefüllt.
Wenn der Puffer voll wird, aber das Paket noch nicht beendet ist,
schaltet die Steuerung 124 auf den zweiten Deskriptorring
um und setzt das Speichern des Restes des Paketes in den Puffern
fort, die durch diesen Ring definiert sind. Der erste Deskriptor
definiert den ersten Puffer jedes Blocks, während der zweite Ring die Puffer
definiert, die den Rest des Blockes speichern. Dies ist detailliert
in 24 gezeigt. Mittlerweise wird ein Zugriff auf
den Kopfbereich und die Daten in den zwei physikalischen Speichern 125(a), 125(b) unter
Anwendung einer Übergabeprozedur
mit der Steuerung 124 ausgeführt, wie in 16(b) gezeigt ist.
-
Der
Kopfbereich und Datenbereiche des gleichen Blocks sind miteinander
durch Erkennungsbits in dem Statusfeld des Empfangsdeskriptors korreliert.
Die Blockanzahlbits repräsentieren
vorzugsweise eine Modulo-8-Zahl für jedes empfangene Paket in
dem ersten und dem zweiten Empfangsring. Aufeinanderfolgende Pakete
mit aufeinanderfolgenden Nummern und alle Deskriptoren eines einzelnen Paketes
besitzen die gleiche Nummer, d. h. ein Kopfbereichspuffer in dem
ersten Empfangsring und Datenpuffer in dem zweiten Empfangsring
besitzen alle die gleiche Blocknummer. Dies vereinfacht die Korrelation
der Deskriptoren, die Kopfbereiche und Daten der gleichen Blöcke enthalten,
in den beiden Empfangsringen.
-
Gemäß einem
weiteren Aspekte der Erfindung werden Empfangspakete über spezielle
Deskriptorringe hinweg in dem Systemspeicher auf der Grundlage einer
Eigenschaft jedes Paketes verteilt. In der FDDI kann die Paketeigenschaft
durch Daten in dem FC-Feld definiert werden, das in 2 gezeigt
ist. Wenn gemäß 25 das
FC-Feld eines eintreffenden Paketes mit einer Eigenschaft des ersten Deskriptorring übereinstimmt,
wird das Paket in einem Puffer gespeichert, auf den durch die ersten
Deskriptors dieses Ringes verwiesen wird. Wenn das Paket die Kapazität des ersten
Puffers übersteigt, wird
ein zweiter Puffer gefüllt,
auf dem von dem zweiten Deskriptor des gleichen Ringes verwiesen
wird.
-
Es
sei angenommen, dass das nächste
Paket (Paket 2) ein FC-Feld aufweist, das mit dem Deskriptorring
2 übereinstimmt,
und dass die Größe des Pakets
geringfügig
kleiner ist als die Kapazität
des ersten Puffers. Das Paket 2 füllt teilweise den ersten Puffer
des Rings 2, wie in 25 gezeigt ist. Ein drittes
Paket von Empfangsdaten besitzt ein FC-Feld, das dem Deskriptorring
1 entspricht, und wird in dem nächsten
verfügbaren
Puffer gespeichert, auf das von dem Deskriptor 3 in dem Deskriptorring
1 gezeigt wird. Ein viertes Empfangspaket enthält ein FC-Feld, das dem Deskriptorring
2 entspricht, und das Paket wird in den nächsten verfügbaren Puffer gespeichert, auf
den der zweite Ring zeigt, wie dies dargestellt ist. Die Speicherung
empfangener Pakete auf der Grundlage einer gleichen Blockart ist
detaillierter in 26 gezeigt. Die Auswahl physikalischer
Speicher zum Speichern von Deskriptoren und Empfangsdaten wird durch Übergabeverfahren
bzw. „Handschütteln" mit der Steuerung 124 ausgeführt, wie
dies zuvor beschrieben ist.
-
Unter
gewissen Umständen
kann ein Empfangsring, zu dem ein Paket geleitet wird, blockiert sein.
Ein Beispiel besteht darin, wenn der Ring voll ist und dieser kann
keine weiteren Daten zur Speicherung in den jeweiligen Puffern empfangen.
Ein weiteres Beispiel ist, wenn ein Paritätsfehler für diesen Deskriptor auftritt.
In jedem Falle werden im „normalen" Betriebsmodus der
Netzwerk-DMA-Steuerung 124 alle nachfolgenden Pakete in
dem Empfangsweg blockiert, bis die Ursache der Blockierung abgestellt
ist. Dieser Betriebsmodus nimmt an, dass ein großer Pufferspeicher für das Empfangen
von Paketen in Empfangswarteschlangen eingerichtet werden kann, bis
der blockierte Ring wieder einsatzfähig ist. Gemäß einem
weiteren Aspekt der Erfindung gibt es einen Modus zum „Verwerfen
bei blockierten Empfang",
wobei Pakete, die zu einem blockierten Empfangsring zu leiten sind,
verworfen werden und nachfolgende Pakete zu ihren entsprechenden
Empfangswarteschlangen geleitet werden können. Dieser Modus ist nützlich,
wenn ein kleiner Pufferspeicher (FIFO) in der Netzwerk-DMA-Steuerung
verwendet wird.
-
Der
Modus „Verwerfen
bei blockiertem Empfang" ist
in 27 gezeigt. Der Empfangs-FIFO 154 (siehe
auch 8) bildet einen einzelnen Signalweg für Empfangspakete,
die den vier Deskriptorringen auf der Grundlage des FC-Pakets zuzuführen sind. Alternativ
werden in dem Betriebsmodus zum Trennen von Kopfbereichen/Daten
der Steuerung 124 Pakete lediglich auf die beiden ersten
Deskriptorringen DR1 und DR2 aufgeteilt. Ein Schalter 133,
der vorzugsweise durch Firmware in der Netzwerk-DMA-Steuerung 124 eingerichtet
ist, reagiert auf ein Signal, das von der Steuerung 124 erzeugt wird
und anzeigt, dass einer der Deskriptorringe, der gerade ein Paket
empfängt,
nun blockiert ist. In Reaktion darauf leitet der Schalter 133 eintreffende
Pakete, die zu verwerfen sind, um, wie gezeigt ist, anstatt dass
diese einem zugeordneten Deskriptorring DR1 bis DRA4 zugeführt werden.
-
In
dem normalen Betriebsmodus der Netzwerk-DMA-Steuerung 124 werden,
wenn die Steuerung einen blockierten Deskriptorring erkennt, eintreffende
Pakete weiterhin in dem FIFO 124 angesammelt. Wie erwähnt ist,
ist eine Ansammlung nur dann akzeptabel, wenn der FIFO 154 relativ
groß ist. Der
normale Betriebsmodus der Steuerung 124 ist vorteilhaft,
wenn ein großer
FIFO 154 verfügbar
ist, da dann keine Empfangsdaten verloren gehen.
-
Andererseits
ist der Betriebmodus mit "Verwerfen
bei blockiertem Empfang",
der in 24 gezeigt ist, vorteilhaft,
wenn ein relativ kleiner FIFO in dem System eingerichtet ist, da
der FIFO 154 dann nie blockiert wird. Dies ermöglicht es,
dass eintreffende Pakete weiterhin zu nicht blockierten Deskriptorringen
weitergeleitet werden.
-
Mediumzugriffssteuerung 120
-
Die
detaillierte in 5 gezeigte Mediumzugriffssteuerung 120 umfasst
eine Kernmediumzugriffssteuerung (MAC) 162 zum Handhaben
des FDDI-MAC-Protokolls. Der Daten-I/O-(Eingabe/Ausgabe)Anschluss der MAC 162 ist
mit Sende- und Empfangs-FIFO's 164 und 166 verbunden.
Daten, die aus dem Netzwerk erhalten werden, werden durch den Empfangs-FIFO 166 dem
externen Pufferspeicher 126 zugeführt; Daten aus dem externen Puffer,
die dem Netzwerk zuzuführen
sind, werden in dem Sende-FIFO 164 gespeichert. Eine FIFO-Steuerschaltung 168 koordiniert
das Einladen und Ausladen des Sende-FIFO's 164 und des Empfangs-FIFO's 166 auf
der Grundlage von Speicherverteilungsentscheidungen, die von einer
Speicherverteilungseinrichtung 170 getroffen werden.
-
Ein
Adressengenerator 172 liefert die erforderlichen Adressen
für den
externen Pufferspeicher auf dem Adressenbus 136 auf der
Grundlage der Zugriffsentscheidung der Verteilungseinrichtung, die bestimmt,
ob das Netzwerk oder der Knotenprozessor auf den Pufferspeicher
zugreifen kann. Eine Knotenprozessorschnittstelle 174,
dessen Dateneingang durch den Adressengenerator 172 über ein
Gatter bzw. ein Tor 173 gesteuert wird, dekodiert Befehle von
dem Knotenprozessor, sammelt Chipstatusinformation und verteilt
Steuerinformation durch die Steuerung 124.
-
Die
Sende- und Empfangs-FIFO's 164 und 166,
die chipintern zusammen mit der Mediumzugriffssteuerung 130 ausgebildet
sind, speichern eine Anzahl von Datenpaketen in Abhängigkeit
von hauptsächlich
der Verarbeitungszeit des Systembusses und der Sequenz länge in ähnlicher
Weise wie die Sende- und Empfangsabschnitte 152 und 154 der Netzwerk-DMA-Steuerung 124.
-
Pufferspeicher 126
-
Der
Ausgabepufferspeicher 126, der allgemein in 6 und
detailliert in 7 gezeigt ist, ist so ausgebildet,
dass dieser aufweist: einen Empfangs-FIFO 175, der eine
Warteschlange aus Daten enthält,
die aus dem Netzwerk empfangen wurden, und mindestens einen und
besser vier Sende/FIFO's 177,
die jeweils eine Warteschlange aus Daten enthalten, die dem Netzwerk
zuzuführen
sind. Es sind in 7 vier Warteschlangen gezeigt,
wie sie zuvor beschrieben sind, um eine einzelne synchrone Warteschlange
und Warteschlangen zu repräsentieren,
die drei Ebenen aus asynchronen Prioritäten für Daten entsprechend den FDDI-Spezifikationen
enthalten. Wie die Datenprioritäten
zueinander in Beziehung stehen und wie diese dem Netzwerk zugeführt werden,
ist detailliert in den anhängigen
Anmeldungen (3) und (4) dargelegt, die hiermit durch Bezugnahme mit
eingeschlossen sind.
-
Das
Format der Sendeblöcke,
die in 9 gezeigt sind, besteht aus Daten an den Bitpositionen 0
bis 31 und einem Markierungsbit, woran sich ein Deskriptorwort anschließt. Das
letzte Wort jedes Blocks sowie ein Deskriptorwort haben das Markierungsbit
auf „1" gesetzt, wodurch
das Ende des Blockes angegeben wird. Zu sendende Pakete werden in
dem Systemspeicher durch den Host-Prozessor oder Knotenprozessor
erstellt. Zeiger für „Lesen
bzw. READ, „Schattenschreiben" bzw. SHADOW WRITE, „Schreiben" bzw. WRITE und „Ende der
Andresse" bzw. END
OF ADDRESS sind so positioniert, wie dies gezeigt ist.
-
Einladen von Sendeblöcken in
den Pufferspeicher
-
Der
Sendevorgang ist im Überblick
in 10 dargestellt. Nach dem Erstellen der Daten in
dem Systemspeicher im Schritt 182 überträgt die Netzwerk-DMA-Steuerung 124 (Schritt 184)
die Daten von dem Systemspeicher zu dessen internen Sende-FIFO 152,
der in 8 gezeigt ist, wenn die aktuelle Sendewarteschlange
in dem Ausgabepuffer 126 als nicht „nahezu voll" entsprechend der
anhängigen Anmeldung
(4) bestimmt wird. Die Daten werden als nächstes von dem Sende-FIFO 152 zu
dem (externen) Ausgabepufferspeicher 126 übertragen
(Schritt 186). Genauer gesagt, die in 9 gezeigten
Sendeblöcke
werden von dem Host- und der Netzwerk-DMA-Steuerung 124 in
dem Pufferspeicher 126 unter Steue rung der Mediumzugriffssteuerung 120 eingeladen.
Diese wird in Reaktion auf eine Anforderung durch die Netzwerk-DMA-Steuerung 124 veranlasst,
Daten in den Puffer 126 zu schreiben, die auf der Grundlage
der speziellen Warteschlange, die angefordert wird, kodiert sind.
Pakete werden vorzugsweise in den Puffer 126 zur gleichen
Zeit eingeladen, wenn der Puffer für das Senden zu dem Netzwerk ausgelesen
wird, um die Busauslastungseffizienz zu maximieren und die Verarbeitungszeiten
zu minimieren, und um Überlastungs-
oder Unterlastungsbedingungen zu vermeiden, wie dies in Verbindung
mit 10(b) nachfolgend beschrieben
ist.
-
Ausladen bzw. Abrufen von Sendeblöcken aus
dem Pufferspeicher
-
Nachdem
ein Block in den Pufferspeicher 126 eingeladen ist, wenn
durch die Mediumzugriffssteuerung 124 bestätigt ist,
dass ein gesamter Block eingeladen ist oder dass die Anzahl an Wörtern des Blockes,
die in den Speicher geschrieben sind, einen Sendeschwellwert übersteigt,
ist der Block für
das Senden an das Netzwerk bereit.
-
Wenn
eine Übertragung
an das Netzwerk für das
System möglich
ist, d. h. wenn ein Berechtigungszeichen auf dem FDDI-Netzwerk zum
Senden einer Warteschlange erkannt wird und die Übertragungsbedingungen für diese
Warteschlange erfüllt sind,
beginnt die Übertragung
und der Block wird von der Mediumzugriffssteuerung 124 ausgelesen,
bis das Ende des Blockes, das durch eine logische „1" im Markierungsbit
gekennzeichnet ist, erkannt wird. In dieser Phase werden Datenblöcke bereits
in den Puffer für
die nachfolgende Sendung eingelesen, bevor der Puffer geleert wird.
D. h., während
des Sendens und nach dem vollständigen Übertragen
eines Blockes liest die Mediumzugriffssteuerung 124 mehr
Daten aus der ausgewählten
Warteschlange des FIFO's in
ihren chipinternen Sende-FIFO's 164 zur Übertragung
aus, wenn ein vollständiger
Block in dem Puffer vorhanden ist oder wenn der Inhalt des Puffers
den Sendeschwellwert übersteigt.
Wenn keine der Bedingungen erfüllt
ist, prüft
die Mediumzugriffssteuerung 124 andere Warteschlangen in
der Reihenfolge ihrer Priorität
für das Übertragen.
-
Die Übertragung
aus einer Warteschlange heraus ist abgeschlossen, wenn die Warteschlange leer
ist. Wenn jedoch der Sende-FIFO 164 mitten in einem Block
geleert wird, wird eine Unterlaufbedingung erzeugt und der aktuelle
Block wird abgebrochen.
-
Wie
die Übertragung
von Daten von dem System zu dem Netzwerk ausgeführt wird, wenn zumindest ein
voller Block oder zumindest eine vorbestimmte Menge an Sendedaten
in dem Puffer 126 vorhanden ist, wird detaillierter in
der anhängigen
Anmeldung (2) beschrieben.
-
Warteschlangen
mit Sendedaten, die in dem Pufferspeicher gespeichert sind, besitzen
das in 11 gezeigte Format, wobei jeder
Block lange Wörter,
die durch ein Markierungsbit „0" und mindestens ein
langes Wort, das durch ein Markierungsbit „1" gekennzeichnet ist, enthält. Nach
dem letzten Wort des Pakets befindet sich ein Statuswort, das ebenfalls
durch das Markierungsbit „1" gekennzeichnet ist.
Das Statuswort gibt den Status des Datenpuffers sowie den Status
des Pakets an, das eine Anzahl vorbestimmter Bits enthält, d. h.,
Bits, die angeben, an welcher Bytegrenze das letzte Wort der Daten
endet, und Bits, die aus dem Status kopiert werden, den die Netzwerk-DMA-Steuerung
aus dem Systemspeicher erhält,
und ein Bit, das angibt, ob das Paket einen Fehler enthält und abgebrochen
werden sollte.
-
Einladen von Empfangspaketen
in dem Pufferspeicher
-
Der
Empfang von Paketen im Blockformat, wie dies im Überblick in 12(a) gezeigt
ist, erfordert das Empfangen von Datenpaketen durch die Mediumzugriffssteuerung 124 zur
Speicherung in dem externen Pufferspeicher 126 (Schritt 190)
und das Übertragen
der Paketdaten von Puffer zu dem internen Empfangs-FIFO 154 der
Netzwerk-DMA-Steuerung 124 (Schritt 192). Das
Format der Empfangsblöcke,
die in dem Pufferspeicher 126 gespeichert sind, ist in 13 gezeigt.
-
Pakete,
die von dem Netzwerk empfangen und von der Mediumzugriffssteuerung 120 in
dem Pufferspeicher 126 gespeichert werden, sind in dem Speicher
in einer Weise angeordnet, wie dies in 14 gezeigt
ist. Die Empfangspakete in dem Pufferspeicher werden zusammenhängend aufeinanderfolgend
abgelegt, so dass bewirkt wird, dass der Pufferspeicherempfangsbereich
die Konfiguration einer ringartigen Warteschlange aufweist. Am Ende
jedes Pakets speichert die Mediumzugriffssteuerung 120 den
Status des Pakets. Das Markierungsbit wird auf 0 für Daten
und auf 1 zur Kennzeichnung des Statusworts gesetzt.
-
Ausladen bzw. Abrufen von Empfangsblöcken aus dem
Pufferspeicher
-
Wenn
die in dem Puffer 126 gespeicherte Datenmenge einen Empfangsschwellwert übersteigt, überträgt die Netzwerk-DMA-Steuerung 124 die
Paketdaten von dem internen Empfangs-FIFO 154 zu dem Systemspeicher,
der von dem Host- oder Knotenprozessor zu verarbeiten ist. Dies
wird durch die Mediumzugriffssteuerung 120 gesteuert, die
die Netzwerk-DMA-Steuerung 124 anweist,
Daten von dem Pufferspeicher 126 in dem Systemspeicher
zu übertragen.
Dies findet statt, wenn die Anzahl an Wörtern in dem Pufferspeicher
einen programmierten Empfangsschwellwert übersteigt. Eine Überlaufbedingung
der Empfangspufferwarteschlange während des Empfangs von Blöcken wird
durch das Statuswort angegeben, wodurch angezeigt wird, dass der Block
geleert werden sollte.
-
Wie
das Empfangen von Daten durch das System ausgeführt wird, wenn mindestens eine
vorbestimmte Menge an Empfangsdaten in dem Empfangs-FIFO oder dem
Puffer 126 enthalten ist, ist detaillierter in der anhängigen Anmeldung
(2) beschrieben.
-
Schnittstelle zwischen Netzwerkzugriff
und DMA-Steuerung
-
15 zeigt
Signallaufwege zwischen der Mediumzugriffssteuerung 120,
der Netzwerk-DMA-Steuerung 124 und
dem Pufferspeicher 126. Ein Pufferdatenbus BDATA, der zwischen
der Mediumzugriffssteuerung 120 und der Netzwerk-DMA-Steuerung 124 angeschlossen
ist und auch mit dem Puffer 126 verbunden ist, ist vorzugsweise
ein 32-Bit-Bus, und eine zusätzliche
Leitung BTAG transportiert das Markierungsbit, das definiert, ob
der BD-Bus Blockdaten oder den Blockstatus des Blockes enthält. Der
Bus BDP überträgt Pufferspeicherdatenparitätsbits für den BD-Bus
und den BDATA-Bus. Diese drei Busse, d. h. BDATA, BTAG und BDP sind
dem Pufferspeicher 126 zugeleitet. Ferner ist dem Pufferspeicher 126 auch
ein Adressenbus BADDR zugeleitet, der eine Adresse führt, die
von Mediumzugriffssteuerung 120 bereitgestellt wird, vorzugsweise
eine 16-Bit-Adresse ist.
-
Signale,
die zum Übermitteln
an das Netzwerk erforderlich sind, werden in jeder geeigneten Anzahl
unterschiedlicher Warteschlangen bereitgestellt, abhängig von
der Priorität,
wie dies in der anhängigen
Anmeldung (3) zuvor beschrieben ist, wobei dies durch die Daten
auf dem Steuerbus QCNTRL bestimmt ist. Der Steuerungsbus QCNTRL
gibt auch der Netzwerk-DMA-Steuerung 124 bekannt, dass
eine Warteschlange, die zuvor voll war, nunmehr bereit ist, weitere
Daten aufzunehmen.
-
Der
QCMTRL-Bus überträgt auch
Daten, die Übertragungsbedingungen
von Daten zu jeweils einer der Warteschlangen angeben, d. h., für die synchrone
Warteschlange und die drei Ebenen der asynchronen Warteschlangen,
um Daten zu dem Medium zu übertragen.
Die Übertragungsbedingungen,
die von der Mediumzugriffssteuerung 120 bereitgestellt werden,
informieren die Netzwerk-DMA-Steuerung 124, dass die Steuerung 120 das
Berechtigungszeichen besitzt und aktuell diese spezielle Warteschlange
von dem Pufferspeicher 126 zu dem Medium überträgt.
-
Ein
Bus HSACK (Host-Bestätigung) überträgt ein Signal,
das angibt, dass eine aktuelle Schreib- oder Leseanforderung der
Netzwerk-DMA-Steuerung von der Mediumzugriffssteuerung 120 gewährt bzw.
akzeptiert ist. Zusammen mit diesem Signal wird der Pufferspeicher 126 aktiviert und
Daten liegen auf dem BD-(Busdaten), BDP-(Busdatenpriorität) und BDTAG-Bus.
-
RDATA
wird gesetzt, wenn die Mediumzugriffssteuerung 120 empfangene
Daten aus dem Netzwerk in dem Pufferspeicher abgelegt hat, wobei diese
Daten von der Netzwerk-DMA-Steuerung 124 zu
dem Systemspeicher zu übertragen
sind. In Reaktion darauf fordert die Netzwerk-DMA-Steuerung Zugriff
zum Bus, was von der Mediumzugriffssteuerung 120 bestätigt wird.
Die Mediumzugriffssteuerung 120 speichert Netzwerkdaten
in dem Pufferspeicher 126 an der Adresse, die durch die
Daten auf dem BADDR-Bus spezifiziert ist, und die in dem Puffer
gespeicherten Daten werden anschließend zu der Netzwerk-DMA-Steuerung 124 übertragen
in Reaktion auf ein Setzen des Lese-Anschlusses des Puffers durch
die Mediumzugriffssteuerung 120.
-
Die Übergabeprozedur
bzw. das "Handschütteln" zwischen der Netzwerk-DMA-Steuerung 124 und
der Mediumzugriffssteuerung 120, das über dem Host-Anforderungsbus
HSREQ ausgeführt
wird, ist in 15 und in den Zeitablaufdiagrammen
der 17 bis 19 gezeigt.
Gemäß 15 und 17 wird
die zeitliche Abfolge der Signale auf den Bussen, die eine Verbindung
zwischen der Netzwerkzugriffssteuerung 120, der Netzwerk-DMA-Steuerung 124 und
dem Puffer 126 herstellen, mit einem Pufferspeichertaktsignal
BMCLK, das in der Figur gezeigt ist, synchronisiert, und RDATA wird
gesetzt, um anzugeben, dass die Empfangsdaten in dem Pufferspeicher 126 bereit
sind, von der Netzwerk-DMA-Steuerung 124 ausgelesen zu
werden. In Reaktion auf RDATA führt
die Netzwerk-DMA-Steuerung 124 eine Host-Anforderung auf
dem Host-Anforderungsbus HSREQ aus, wobei eine geeignete Kodierung
angewendet wird, um die Netzwerkzugriffssteuerung 120 anzuweisen,
Datenblöcke
aus dem Netzwerk auszulesen. Die Netzwerkzugriffssteuerung bzw.
Mediumzugriffssteuerung 120 verwaltet die Verteilung am
Bus des Pufferspeichers 126 und liefert eine Bestätigung über HSACK.
Die Netzwerkzugriffssteuerung adressiert ferner den Pufferspeicher 126 durch
Zeigen auf die Position, an der die Daten liegen, setzt einen Lesebefehl
für den
Puffer und speichert Daten aus dem Puffer über BDATA für die Speicher-DMA-Steuerung 124.
-
Somit
speichert die Netzwerkzugriffssteuerung 120 Netzwerkdaten
in Blöcken
in dem Pufferspeicher 126 und wenn die Datenmenge darin
den Empfangsschwellwert RTHR übersteigt,
setzt die Steuerung 120 das Signal RDATA, um die Netzwerk-DMA-Steuerung 124 zu
veranlassen, Deskriptoren aus dem Systemspeicher abzuholen, um zu
bestimmen, wo die Netzwerkdaten in dem Systemspeicher zu speichern
sind. Wenn der Puffer in dem Systemspeicher, auf den der Deskriptor
zeigt, verfügbar wird,
liefert die DMA-Steuerung 124 ein Host-Bestätigungssignal
HSACK zu der Netzwerkzugriffssteuerung 120. Die Netzwerkzugriffssteuerung 120 führt in Reaktion
darauf eine Aufgabenverteilungsfunktion durch, da diese bereits
durch das Senden von Daten zum Netzwerk oder durch das Ausführen anderer Funktionen
beschäftigt
sein kann. Wenn die Netzwerkzugriffssteuerung 120 verfügbar ist,
liefert diese eine Bestätigung
(HSACK) an die DMA-Steuerung 124 zurück und gibt dann eine Speicheradresse
mit einem anschließenden
Lesebefehl an den Puffer 126 aus. Die in dem Puffer 126 adressierten
Daten werden auf BDATA ausgegeben und in der Netzwerk-DMA-Steuerung 124 zwischengespeichert,
um den zugewiesenen Puffer in dem Systemspeicher zugeführt zu werden,
um damit die Übergabe
zu vervollständigen,
die zum Empfangen von Daten aus dem Netzwerk erforderlich ist.
-
Aus 18 wird
durch die Abfolge der Signale auf den Bussen während des Sendens von Blöcken zu
dem Netzwerk angenommen, dass die Netzwerk-DMA-Steuerung 124 bereits
auf Puffer in dem Systemspeicher zugegriffen hat, auf die von den
Deskriptoren gezeigt wird, wobei die Daten zu dem Netzwerk zu übertragen
sind, da entweder ein voller Block von Sendedaten vorhanden ist
oder die Datenmenge in dem Puffer den Sendeschwellwert XTH übersteigt.
Die aktuell zu übertragenden
Daten sind in dem chipinternen FIFO 152 in 8 abgelegt
und sind bereit, zu dem logischen FIFO in dem Pufferspeicher 126 übertragen
zu werden. In Reaktion auf eine Host-Anforderung zum Übertragen
von Daten zum Netzwerk liefert die Netzwerk-DMA-Steuerung ein Host-Anforderungssignal
HSREQ an die Netzwerkzugriffssteuerung 120, wodurch angegeben wird,
dass der Host eine Schreiboperation in das Netzwerk anfordert. Die
spezielle Warteschlange, in die der Host schreiben will, wird durch
die Kodierung auf dem HSREQ-Bus bestimmt. In dem vorliegenden Beispiel
wird angenommen, dass der Host anfordert, in die synchronisierte
Warteschlange zu schreiben, so dass die synchronisierten Datenblöcke dem
Netzwerk zugeführt
werden. Daraufhin trifft die Netzwerkzugriffssteuerung 120 eine
Entscheidung und wenn Zeit verfügbar
ist, wird ein Bestätigungssignal
zu dem Host (HSACK) gesendet. Die Netzwerkzugriffssteuerung 120 liefert
die Adresse an den Pufferspeicher 126, wo darin Datenblöcke, die
an das Netzwerk zu übertragen
sind, zeitweilig abgelegt sind, und liefert einen Schreibpuls an
den Puffer. Daten, die von der Netzwerk-DMA-Steuerung 124 auf
dem BDATA-Bus entsprechend bereitgestellt werden, werden in den logischen
FIFO geschrieben, der in dem Pufferspeicher 126 an der
Position gebildet ist, die durch die Netzwerkzugriffssteuerung 120 auf
dem BDADDR spezifiziert ist.
-
Wenn
keine weiteren Daten mehr zum Netzwerk zu übertragen sind, liefert die
Netzwerk-DMA-Steuerung 124 keine
weiteren Anforderungen auf den HSREQ zu der Netzwerkzugriffssteuerung 120.
Wenn zusätzliche
Daten zum Netzwerk zu übertragen
sind, bleibt andererseits der HSREQ-Bus aktiv, und wenn die Netzwerkzugriffssteuerung 120 entscheidet,
dass Zeit verfügbar
ist, liefert diese eine weitere Adresse und einen Schreibpuls zum
Puffer 126, nachdem eine Bestätigung für die Steuerung 124 auf
den Bus HSACK erfolgte.
-
19 zeigt
die zeitliche Abhängigkeit
von Daten auf den Bussen während
Lese- und Schreibopertionen mit „Rücken an Rücken" bzw. back-to-back. In dem gezeigten
Beispiel ist die Netzwerkzugriffssteuerung 120 anfänglich mit
einem Schreibvorgang beschäftigt
und führt
danach eine Leseoperation aus und kehrt dann zu einer Schreiboperation
zurück.
Die Signale, die den diversen beteiligten Bussen zugeführt werden,
entsprechen aufeinanderfolgend jenen, die in den 17 und 18 gezeigt
sind.
-
Es
ist eine effiziente Verwaltung von Daten in einer Netzwerkschnittstelle
in mehrfacher Hinsicht beschrieben. Daten können von einer DMA-Steuerung
von einem beliebigen von zwei oder mehr physikalischen Speichern
auf separaten Bussen zusammengestellt werden. Die beiden Speicher
können
ein Host-Speicher und ein Knotenprozessorspeicher in einer Systemarchitektur
sein, in der ein Knotenprozessor die Protokollverarbeitung ausführt, wäh rend ein
Host die Daten bereitstellt. Sendeblöcke werden aus zwei Speichern
selektiv zusammengestellt, indem ein Übergabe- bzw. „Handschlag"-Protokoll mit zwei
Gruppen aus Anforderungs/Gewährungssignalen
eingerichtet wird. Ein Deskriptorring zusammen mit dem ersten Puffer,
der jeden Block speichert, ist in einem der Speicher vorgesehen
(beispielsweise dem Knotenprozessorspeicher). Verbleibende Puffer für den Block
sind in dem anderen Speicher (beispielsweise dem Host) vorgesehen.
Der erste Puffer ist dimensioniert, um lediglich den Kopfbereich
des Blocks zu speichern.
-
Empfangsblöcke können in
mehreren Deskriptorringen in den beiden Speichern gespeichert werden.
Deskriptoren und Kopfbereiche von Empfangsblöcken können in einem einzelnen Speicher gespeichert
werden, während
Datenbereiche und Deskriptoren in dem anderen Speicher gespeichert werden
können.
-
Das Übergabeprotokoll
bzw. „Handschlag"-Protokoll ermöglicht Zugriff
auf den einen Speicher oder den anderen, die auf separaten Bussen
untergebracht sind, durch die DMA-Steuerung. Puffer, die den Kopfbereich
und Datenbereichen jedes Blockes enthalten, werden miteinander „synchronisiert" durch eine gemeinsame
Blocknummer, die von dem Kopfbereich und Datendeskriptoren übermittelt
wird.
-
Jeder
Empfangsblock enthält
ein Erkennungsfeld, etwa ein FC-Feld in einem FDDI-Protokoll. Der Deskriptorring,
in welchem der Block gespeichert wird, wird dadurch erkannt, dass
der Inhalt des Erkennungsfeldes mit einer entsprechenden Kennung,
die mit dem Ring verknüpft
ist, übereinstimmt. Wenn
es einen blockierten Deskriptorring gibt, was beim vollen Ring oder
bei den Paritätsfehler
auftreten kann, wird in einem weiteren Aspekt der Erfindung ein
Blockieren des Empfangsweges verhindert, um damit zu ermöglichen,
dass Blöcke
mit Zielen, die keine markierten Ringe sind, weiterhin empfangen werden
können.
In einem Betriebsmodus „verwerfen" und in Reaktion
auf einen blockierten Ring verwirft die DMA-Steuerung nachfolgende
Blöcke,
die für
den blockierten Ring eintreffen. Während dem normalen Betriebsmodus
der Steuerung werden für
den blockierten Deskriptorring eintreffende Blöcke in einem FIFO-Speicher
mit begrenzter Kapazität
innerhalb des Empfangswegs gespeichert.
-
In
dieser Beschreibung ist lediglich die bevorzugte Ausführungsform
der Erfindung gezeigt und beschrieben, wobei zu beachten ist, wie
zuvor dargelegt ist, dass die Erfindung in di versen anderen Verbindungen
und Umgebungen eingesetzt werden kann und dass Änderungen oder Modifizierungen
innerhalb des Schutzbereichs des erfindungsgemäßen Konzepts, wie es hierin
dargestellt ist, durchführbar sind.
Obwohl die Erfindung beispielsweise im Zusammenhang mit FDDI beschrieben
ist, ist die Erfindung nicht darauf eingeschränkt.