-
Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft Architekturen von Netzwerkadaptern
und insbesondere die Verwaltung von Hinweis- und/oder Unterbrechungssignalen
für ein
Hauptrechnersystem.
-
Beschreibung des Standes der
Technik
-
Netzwerkadapter,
die an der Übertragung von
Daten zwischen einem Kommunikationsnetzwerk und einem Hauptrechnersystem
beteiligt sind, müssen
typischerweise das Hauptrechnersystem über asynchrone Ereignisse benachrichtigen.
Unter vielen Umständen
muss der Hauptrechnerprozessor eine gewisse Handlung auf der Basis
dieser asynchronen Ereignisse unternehmen. Wenn der Netzwerkadapter
beispielsweise begonnen hat, einen Datenblock zu empfangen, kann
der Hauptrechnerprozessor wissen wollen, wann ein vollständiger Datenblock
empfangen wurde. Überdies
kann der Hauptrechnerprozessor die Benachrichtigung der Vollendung
der Übertragung
des Datenblocks vom Netzwerkadapter-Pufferspeicher zum Hauptrechnersystem
benötigen.
-
In
Bezug auf den Übertragungspfad
kann der Hauptrechnerprozessor ebenso auch die Benachrichtigung über die
Vollendung eines Herunterladens vom Hauptrechnersystem in den Netzwerkadapter-Pufferspeicher
sowie eine Benachrichtigung, dass eine Übertragung vom Netzwerkadapter-Pufferspeicher
auf das Kommunikationsnetzwerk vollendet wurde, benötigen.
-
Bei
Systemen des Standes der Technik, wie z.B. dem National Semiconductor
DP83932B, einer systemorientierten, Netzwerkschnittstellensteuereinheit
(SONIC), und dem Coprozessor Intel 82586 eines lokalen Netzwerks,
wird eine Unterbrechung vom Netzwerkadapter an den Hauptrechnerprozessor
erzeugt, die ein asynchrones Ereignis signalisiert. Der Hauptrechnerprozessor
muss dann die Ursache der Unterbrechung durch Untersuchen der entsprechenden
Netzwerkadapter-Statusregister
feststellen und die geeignete Handlung in einer Unterbrechungsdienstroutine
vornehmen.
-
Wenn
der Hauptrechnertreiber beispielsweise aus dem Netzwerkadapter-Statusregister feststellt,
dass ein Datenblock empfangen wurde, ruft der Hauptrechnertreiber
eine Datenblockempfangs-Subroutine auf. Sobald die Subroutine aufgerufen
ist, können
jedoch die meisten Hauptrechnertreiber-Datenblockempfangs-Subroutinen nicht
wieder aufgerufen werden oder wieder in diese eingetreten werden. Daher
müssen
Unterbrechungen, die verursachen, dass der Hauptrechnertreiber die
Datenblockempfangs-Subroutine aufruft, während zumindest der Datenblockempfangs-Subroutine
deaktiviert werden.
-
Netzwerkadapter
des Standes der Technik deaktivieren Unterbrechungen unter Verwendung
eines Maskenregisters, um Unterbrechungen zu maskieren; die Maskierung
von Unterbrechungen verhindert jedoch, dass der Hauptrechner weiß, dass
ein zweites asynchrones Ereignis während einer Unterbrechungsdienstroutine
aufgetreten ist, die durch ein erstes asynchrones Ereignis erzeugt
wurde. Selbst wenn eine Unterbrechung zu einem gegebenen Zeitpunkt
in einer Unterbrechungsdienstroutine nicht erwünscht sein kann, kann der Hauptrechnertreiber
immer noch einen Hinweis wünschen,
dass das zweite Ereignis aufgetreten ist, um das zweite Ereignis
in nur einer Unterbrechungsdienstroutine abzuarbeiten. Obwohl Unterbrechungen
während
einer Datenblockempfangs-Unterroutine deaktiviert werden sollten, könnte der
Hauptrechnertreiber beispielsweise immer noch einen zweiten Datenblock
abarbeiten, der während
der Datenblockempfangs-Subroutine empfangen wurde, wenn der Hauptrechnertreiber
wissen könnte,
dass ein zweiter Datenblock empfangen wurde, nachdem er die Datenblockempfangs-Subroutine verlässt, jedoch
bevor er die Unterbrechungsdienstroutine verlässt. Trotzdem bieten die vorliegenden Systeme
nur ein Niveau von Statusinformation, das Unterbrechungen erzeugt.
Das einzelne Niveau einer Statusinformation ermöglicht nicht, dass der Hauptrechner
weiß,
dass andere asynchrone Ereignisse während einer einzelnen Unterbrechungsdienstroutine
aufgetreten sind, was verursacht, dass zusätzliche Unterbrechungen für den Hauptrechner
die Hauptrechner/Netzwerkadapter-Leistung verschlechtern.
-
Außerdem kann
eine Hauptrechner-Subroutine erfordern, dass Unterbrechungen deaktiviert werden,
während
eine andere Hauptrechner-Subroutine aufgerufen wird, die auch erfordert,
dass Unterbrechungen deaktiviert werden. Der Hauptrechnerprozessor
kann beispielsweise Daten in einer Datenblockübertragungs-Subroutine zum Netzwerkadapter übertragen,
was erfordert, dass Unterbrechungen deaktiviert werden, wenn der
Netzwerkadapter ein Netzwerkadapter-Gesundheitszustandssignal über das
Netzwerk senden muss. Der Hauptrechnerprozessor muss eine Gesundheitszustands-Subroutine innerhalb
der Datenblockübertragungs-Subroutine aufrufen,
was auch erfordert, dass Unterbrechungen deaktiviert werden. Wenn
die Gesundheitszustands-Subroutine Unterbrechungen einfach beim Verlassen
der Subroutine durch einen expliziten Softwarebefehl aktiviert,
wird ermöglicht,
dass Unterbrechungen in der Datenblockübertragungs-Subroutine auftreten.
Daher ist eine zusätzliche
Hauptrechnersoftware erforderlich, die die Deaktivierung und Aktivierung
von Unterbrechungen vielmehr während
verschiedener Subroutinen verfolgt, als ermöglicht, dass der Netzwerkadapter
die Anzahl von Aktivierungs- und Deaktivierungsbefehlen zählt.
-
Daher
ist es erwünscht,
einen Netzwerkadapter mit verwalteten Hinweis- und Unterbrechungssignalen
bereitzustellen, der ermöglicht,
dass das Hauptrechnersystem auswählt,
welche Unterbrechungen und welche Hinweissignale für asynchrone Ereignisse
für den
Hauptrechner zu einem gegebenen Zeitpunkt erzeugt werden. Überdies
ist ein Netzwerkadapter, der automatisch Unterbrechungen mit und
ohne explizite und zusätzliche
Hauptrechner-Softwarebefehle in Hauptrechner-Subroutinen deaktiviert
und/oder aktiviert, erwünscht.
-
Der
Stand der Technik ist durch das Dokument
WO92/21081-A dargestellt.
-
Die
vorliegende Erfindung ist in den unabhängigen Ansprüchen definiert.
Sie stellt eine Vorrichtung zum Verwalten von Hinweis- und Unterbrechungssignalen,
die ein Ereignis für
einen Hauptrechner darstellen, bereit. Die Vorrichtung umfasst eine
erste und eine zweite Maskenlogik, die eine Hierarchie von Statusinformationen
für den
Hauptrechner erzeugen. Die erste Maskenlogik verhindert, dass ein
Hinweissignal, das ein Ereignis darstellt, in einer ersten Speicherstelle
gespeichert wird, in Reaktion auf ein Schreiben vom Hauptrechner
in eine erste Maskenspeicherstelle. Die mit der ersten Speicherstelle
gekoppelte zweite Maskenlogik verhindert, dass das Hinweissignal
in einer zweiten Speicherstelle gespeichert wird, in Reaktion auf
ein Schreiben vom Hauptrechner in eine zweite Maskenspeicherstelle.
Obwohl beide Speicherstellen vom Hauptrechner während einer Unterbrechungsdienstroutine
gelesen werden können,
die eine Hierarchie von Statusinformationen erzeugt, erzeugen nur
die Werte in der zweiten Speicherstelle ein Unterbrechungssignal.
-
Gemäß einem
weiteren Aspekt der vorliegenden Erfindung verwaltet ein Netzwerkadapter eine
Vielzahl von Hinweissignalen, die asynchrone Ereignisse für einen
Hauptrechner darstellen, der einen Hauptrechnerprozessor mit Hauptrechner-Softwaresubroutinen
aufweist. Der Netzwerkadapter umfasst eine Zählermaskenlogik zum Deaktivieren
einer Teilmenge der Vielzahl von Hinweissignalen. Die Zählermaskenlogik
besitzt ein Zählermaskenregister, das
die Teilmenge von Hinweissignalen in Reaktion darauf, dass der Hauptrechnerprozessor
in das Zählermaskenregister
schreibt, selektiv deaktiviert. Eine Hinweismaskenlogik, die mit
der Zählermaskenlogik gekoppelt
ist, deaktiviert selektiv individuelle Hinweissignale in Reaktion
auf ein Schreiben durch den Hauptrechnerprozessor in eine Hinweisregistermaske.
Eine Hinweisspeicherstelle ist mit der Hinweismaskenlogik gekoppelt,
die Hinweiswerte speichert, die asynchrone Ereignisse darstellen.
Die Unterbrechungsmaskenlogik ist mit der Hinweisspeicherstelle zum
selektiven Verhindern, dass Hinweiswerte in einer Unterbrechungsspeicherstelle
gespeichert werden, in Reaktion auf ein Schreiben durch den Hauptrechnerprozessor
in ein Unterbrechungsmaskenregister, das ein zweites Niveau von
Statusinformationen erzeugt, gekoppelt. Die Unterbrechungsspeicherstelle
ist mit der Unterbrechungsmaskenlogik zum Speichern eines Unterbrechungswerts,
der Hinweise auf asynchrone Ereignisse darstellt, gekoppelt, wobei
ein Unterbrechungsmittel eine Unterbrechung in Reaktion auf einen
Unterbrechungswert in der Unterbrechungsspeicherstelle erzeugt.
-
Schließlich umfasst
gemäß einem
weiteren Aspekt der vorliegenden Erfindung die Zählermaskenlogik ein Register,
das einen Zählerwert
enthält, und
ein Mittel zum Inkrementieren und Dekrementieren des Zählerwerts
im Register in Reaktion auf Hauptrechnersoftware-Subroutinen. Das
Mittel zum Deaktivieren oder Aktivieren einer Teilmenge der Vielzahl
von Hinweisen reagiert auf den Zählerwert im
Register, was ermöglicht,
dass der Hauptrechnerprozessor die Teilmenge von Hinweissignalen
mit und ohne explizite Softwarebefehle deaktiviert oder aktiviert.
-
Weitere
Aspekte und Vorteile der vorliegenden Erfindung sind für einen
Fachmann bei der Durchsicht der Figuren, der detaillierten Beschreibung
und der Ansprüche,
die folgen, zu sehen.
-
KURZBESCHREIBUNG DER FIGUREN
-
1 ist
eine Netzwerkadapter-Konfiguration gemäß der vorliegenden Erfindung.
-
2 ist
ein Funktionsblockdiagramm des Netzwerkadapters mit einer Unterbrechungs-
und Hinweislogik zum Verwalten von Hinweis- und Unterbrechungssignalen
gemäß der vorliegenden
Erfindung.
-
3 ist
ein Blockdiagramm des Netzwerkschnittstellenadapters gemäß der vorliegenden
Erfindung.
-
4 ist
ein Funktionsblockdiagramm des in 3 gezeigten
Schnittstellensteuereinheitschips.
-
5 ist
ein schematisches Diagramm, das einen Datenfluss vom Hauptrechnerspeicherraum durch
den Adapterspeicher zum Netzwerk gemäß der vorliegenden Erfindung
darstellt.
-
6 ist
eine Abbildung des Hauptrechnersystem-Adressenraums, der für irgendeine Übertragung
von Daten verwendet wird, gemäß der vorliegenden
Erfindung.
-
7 ist
eine Speicherabbildung des Adapterspeichers, der vom Hauptrechnersystem-Adressenraum unabhängig ist.
-
8a-b
stellen die Sende- und Übertragungsdeskriptor-Datenstrukturen
gemäß einem
Aspekt der vorliegenden Erfindung dar.
-
9 stellt
die Verwaltung des Sendedeskriptor-Ringpuffers und Sendedatenpuffers
und Zeiger, die während
der Sendeoperation verwendet werden, gemäß der vorliegenden Erfindung
dar.
-
10a-10e sind
eine schematische Darstellung der Verwaltung der Zeiger für den Sendedeskriptor-Ringpuffer
und Sendedatenpuffer.
-
11 ist
ein heuristisches Diagramm, das die Operation des Empfangsringpuffers
und eines Übertragungsdeskriptorpuffers
zusammen mit Zeigern, die vom Hauptrechner und von Netzwerkschnittstellen
zur Verwaltung dieser Puffer erzeugt werden, darstellt.
-
12 stellt
die Beziehung zwischen Hinweissignalen, Unterbrechungssignalen und
ihren jeweiligen Masken dar.
-
13 ist
ein Diagramm, das darstellt, wie das Signal zum Zugreifen auf die
in 4 gezeigte Unterbrechungssteuereinheit 60 erzeugt
wird.
-
14 ist
ein Diagramm, das darstellt, wie das Signal zum Schreiben in die
Unterbrechungssteuereinheit erzeugt wird.
-
15 zeigt
eine Tabelle der Codes, die zum Auswählen eines Unterbrechungssteuereinheitsregisters
verwendet werden.
-
16 ist
ein Diagramm, das darstellt, wie die Unterbrechungssteuereinheits-Registerschreibfreigabeimpulse
erzeugt werden.
-
17 ist
ein Diagramm der Hinweismasken- und Unterbrechungsmaskenregister.
-
18 ist
ein Diagramm, das darstellt, wie das Signal zum Identifizieren,
wenn eine Unterbrechung angefordert wurde, erzeugt wird.
-
19 ist
ein Diagramm, das darstellt, wie das Signal zum Identifizieren eines
Schreibens in ein Register RCV DONE erzeugt wird.
-
20 ist
ein Diagramm, das die Erzeugung der Registersignale RCV INDICATE
darstellt.
-
21 ist
ein Diagramm, das darstellt, wie das Signal zum Identifizieren,
wenn der Hinweiszähler
Null ist, erzeugt wird.
-
22 ist
ein Diagramm, das die Erzeugung der anderen Hinweis- und anderen
Unterbrechungssignale darstellt.
-
23 ist
ein Diagramm, das die Erzeugung der Hinweisgrund- und Unterbrechungsgrundsignale darstellt.
-
24 ist
ein Diagramm, das darstellt, wenn ein Unterbrechungssignal erzeugt
werden sollte.
-
25 ist
ein Diagramm, das die Erzeugung von Unterbrechungsebenensignalen
darstellt.
-
26 ist
ein Diagramm, das darstellt, wie die Unterbrechungssteuereinheitsregister
gelesen werden.
-
27 ist
ein Diagramm, das darstellt, wie das Lesen von der Unterbrechungssteuereinheit
verzögert
wird.
-
28 ist
ein Diagramm, das die Erzeugung des Signals zum Identifizieren,
wenn das Register INTERRUPT REQUEST gelesen wird, darstellt.
-
29 ist
ein Diagramm, das einen Hinweiszähler
gemäß der vorliegenden
Erfindung darstellt.
-
BESCHREIBUNG DER BEVORZUGTEN
AUSFÜHRUNGSBEISPIELE
-
Eine
ausführliche
Beschreibung der bevorzugten Ausführungsbeispiele der vorliegenden
Erfindung wird mit Bezug auf die Figuren vorgesehen. 1 bis 4 beschreiben
ein repräsentatives System,
das gemäß der vorliegenden
Erfindung implementiert wird. 5 bis 11 stellen
die Datenorganisation und den Datenfluss bei einem bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung dar. 12 bis 29 beschreiben
die Unterbrechungs- und Hinweislogik, die zum Verwalten von Hinweisen
und Unterbrechungen für
den Hauptrechner verwendet wird.
-
1 ist
eine Netzwerkadapter-Konfiguration gemäß der vorliegenden Erfindung.
Der Netzwerkadapter 3 mit der Unterbrechungs- und Hinweislogik 10 ist
mit einem Netzwerk 2 und mit einem Hauptrechnersystem 1 gekoppelt.
Der Netzwerkadapter 3 ist für die Übertragung von Datenblöcken zwischen dem
Netzwerk 2 und dem Hauptrechnersystem 1 verantwortlich.
Beim bevorzugten Ausführungsbeispiel ist
das Netzwerk 2 ein ETHERNET-Netzwerk. Das Hauptrechnersystem
umfasst einen Hauptrechnerbus 4 wie z.B. einen EISA-Bus.
Der Hauptrechnersystembus 4 umfasst Adressenleitungen,
die einen Hauptrechnersystem-Adressenraum festlegen. Typischerweise
sind für
einen EISA-Bus 32 Adressenleitungen vorhanden, die einen
Hauptrechnersystem-Adressenraum von etwa 4 Gigabytes festlegen. Das
Hauptrechnersystem umfasst ferner einen Hauptrechnerspeicher 6,
einen Hauptrechnerprozessor 5 und andere Hauptrechnervorrichtungen 7,
die mit dem Hauptrechnerbus 4 gekoppelt sind. Typischerweise
fordern Vorrichtungen am Hauptrechnerbus 4 wie z.B. der
Netzwerkadapter 3 einen Dienst vom Hauptrechnerprozessor 5 durch
Erzeugen einer Unterbrechung auf dem Hauptrechnerbus 4 an.
Der Hauptrechnerprozessor 5 muss dann seine Systemparameter
speichern und feststellen, welche Vorrichtung die Unterbrechung
verursacht hat und welcher Dienst angefordert wird. Während der
Unterbrechungsdienstroutine des Hauptrechnerprozessors 5 untersucht
der Hauptrechnerprozessor 5 Statusregister im Netzwerkadapter 3,
um festzustellen, was die Unterbrechung verursacht hat und ob andere Übertragungsereignisse
aufgetreten sind. Der Hauptrechnerprozessor 5 unternimmt
dann die geeignete Handlung auf der Basis der Statusregister des
Netzwerkadapters 3.
-
Die
Unterbrechungs- und Hinweislogik 10 im Netzwerkadapter 3 ist
dazu ausgelegt, dem Hauptrechnersystem zu ermöglichen, sich zu ändern, wenn eine
Unterbrechung erzeugt wird, und welche Datenübertragungsereignisse dem Hauptrechnerprozessor
angegeben werden. Die Unterbrechungs- und Hinweislogik umfasst drei
Masken, die vom Hauptrechner geändert
werden können.
Die erste Maske oder die erste Hinweiszählermaske deaktiviert selektiv
eine Teilmenge der vom Netzwerkadapter erzeugten Hinweissignale,
die asynchrone Netzwerkadapterereignisse angeben. Die zweite Maske
deaktiviert selektiv einzelne Hinweissignale und die dritte Maske deaktiviert
selektiv die Erzeugung von Unterbrechungssignalen.
-
2 ist
ein Funktionsblockdiagramm des Netzwerkadapters 3 mit einer
Unterbrechungs- und Hinweislogik 10, das die verschiedenen Übertragungspfade darstellt.
Der Netzwerkadapter 3 enthält einen Sendeempfänger 12,
der Datenblöcke über das
Netzwerk 2 sendet und empfängt. Die Netzwerkschnittstellenlogik 11 ist
für die Übertragung
eines Datenblocks zwischen dem Netzwerkpuffer 9 und dem
Sendeempfänger 12 verantwortlich.
Ebenso enthält
der Netzwerkadapter 3 eine Hauptrechner-Schnittstellenlogik 8,
die für
die Übertragung
eines Datenblocks zwischen dem Netzwerkpuffer 9 und dem
Hauptrechnersystem 1 verantwortlich ist. Die Unterbrechungs-
und Hinweislogik 10 umfasst Maskenspeicherstellen 10a-c,
die die Maskenwerte enthalten, die zum selektiven Deaktivieren von
Hinweisen und Unterbrechungen verwendet werden. Die Maskenspeicherstellen 10a-c
können
vom Hauptrechnersystem gelesen werden, um die Konfiguration der
Masken zu ermitteln. In die Maskenspeicherstellen 10a-c
kann auch vom Hauptrechner geschrieben werden, der die Maskenkonfigurationen ändert. Obwohl
explizite Softwarebefehle vom Hauptrechnerprozessor die Maskenspeicherstelle 10a neu
konfigurieren können,
sieht die interne Zählermaske,
die Hinweis- und Unterbrechungslogik 10 auch eine automatische
Neukonfiguration der internen Zählermaske
ohne explizite Schreibvorgänge
des Hauptrechnerprozessors in die interne Zählermaske vor. Das Ändern der
Maskenwerte deaktiviert oder aktiviert wiederum selektiv Hinweise
und Unterbrechungen für
das Hauptrechnersystem.
-
Zusätzlich zu
den Maskenspeicherstellen 10a-c umfasst die Hinweis- und
Unterbrechungslogik 10 vier Speicherstellen (nicht dargestellt)
zum Speichern von Hinweis- und Unterbrechungswerten, die nicht durch
die Masken selektiv deaktiviert wurden. Die vier Speicherstellen
können
vom Hauptrechnerprozessor gelesen werden, um das Auftreten von Netzwerkadapterereignissen
festzustellen. Die erste und die zweite Speicherstelle enthalten
Werte, die Hinweise auf Netzwerkadapterereignisse darstellen; während die
dritte und die vierte Speicherstelle Unterbrechungswerte enthalten,
die Netzwerkadapterereignisse darstellen und auch bewirken, dass
Unterbrechungen erzeugt werden.
-
I. Systemüberblick
-
3 ist
ein schematisches Diagramm des Hauptrechnersystems 1 mit
dem Netzwerkschnittstellenadapter der vorliegenden Erfindung. Die
Netzwerkschnittstellen-Steuereinheit
umfasst einen Netzwerkschnittstellenprozessor 14, der in
einem bevorzugten System als anwendungsspezifische integrierte Schaltung
implementiert wird, die dazu ausgelegt ist, die nachstehend umrissenen
Funktionen unter Verwendung von VERILOG-Entwurfswerkzeugen zu implementieren,
wie auf dem Fachgebiet bekannt. Die VERILOG-Entwurfswerkzeuge sind
von Cadence, Inc., San Jose, Kalifornien, erhältlich. Der Netzwerkschnittstellenprozessor 14 ist über geeignete
Puffer mit dem Bus 2 gekoppelt. Der Netzwerkschnittstellenprozessor 14 ist
auch mit einem Direktzugriffsspeicher 15, einem BIOS-ROM 16 und
einem INFO-EEPROM 17, einem Testanschluss 18,
einem Codierungs/Decodierungs-Chip 19 und einem Netzwerk-Sendeempfänger 20 gekoppelt.
Der Netzwerk-Sendeempfänger 20 ist
wiederum mit einem Netzwerkmedium gekoppelt.
-
Der
größte Teil
der Funktionalität
ist in den Netzwerkschnittstellenprozessor 14 eingebettet. Beim
bevorzugten Ausführungsbeispiel
befinden sich alle Register, die über den Bus 2 für das Hauptrechnersystem
zugänglich
sind, entweder im Prozessor 14 oder im RAM 15.
Wenn sie sich im RAM 15 befinden, wird ihr Zugriff durch
den Netzwerkschnittstellenprozessor 14 verwaltet.
-
Der
RAM 15 ist ein primäres
Betriebsmittel an der Netzwerkschnittstellen-Steuereinheit. Dieses Betriebsmittel
stellt Pufferspeicher außerhalb
des Hauptrechneradressenraums bereit, der bei Sende- und Empfangsoperationen
der Netzwerkschnittstelle verwendet wird. Details hinsichtlich der
Organisation und Verwendung dieses RAM 15 werden nachstehend
beschrieben.
-
Der
BIOS-ROM 16 stellt eine Erweiterung für den Basis-Eingabe/Ausgabe-Code
des Hauptrechnersystems durch den Netzwerkschnittstellenprozessor 14 während der
Initialisierung bereit. Die Adressen für den BIOS-ROM 16 und
die Daten aus dem BIOS-ROM 16 sind mit dem Netzwerkschnittstellenprozessor 14 über Busse 21 bzw. 22 gekoppelt,
die auch vom RAM 15 gemeinsam genutzt werden.
-
Der
INFO-EEPROM 17 speichert kritische für den Adapter spezifische Daten,
die von Treibern, einer Diagnose- und einer Netzwerkverwaltungssoftware
verwendet werden. Diese Daten werden während des Herstellungsprozesses
gespeichert. Während
der Initialisierung der Schnittstellensteuereinheit wird der Inhalt
des EEPROM 17 in einen im Voraus festgelegten Bereich des
RAM 15 zur Verwendung während
des Betriebs geladen.
-
Mit
dem Schnittstellenprozessor 16 ist ein Codierungs/Decodierungs-Chip 19 wie
z.B. der Codierungs/Decodierungs-Chip National Semiconductor 8391
Manchester gekoppelt. Die mit dem AUI-Verbindungsstecker gekoppelten
Signale werden geliefert, um die Verwendung von Sendeempfängern außerhalb
der Platine zu ermöglichen.
-
Der
Sendeempfänger 20 umfasst
bei einem bevorzugten System entweder einen Thin-Ethernet-(Koax/BNC) Sendeempfänger oder
einen 10BaseT-(Typ 3/RJ-45) Sendeempfänger. Steuersignale für den Sendeempfänger 20 werden
an der Netzwerkschnittstellen-Steuereinheit 14 unter Verwendung
der Umwandlungslogik auf dem Codierer/Decodierer-Chip 14 erzeugt.
-
Ein
Testanschluss 18 ist bei einem bevorzugten System zur Verwendung
während
der Herstellung und des Testens vorgesehen.
-
II. Funktionseinheiten der Steuereinheit
-
4 stellt
ein Blockdiagramm des Netzwerkschnittstellenprozessors 14 von 3,
einschließlich
Funktionsblöcken
und Datenpfaden, bereit. Es sind zahlreiche Verbindungen vorhanden,
die nicht gezeigt sind und die mit der Steuerung der verschiedenen
Datenflusspfade zu tun haben. Die dargestellten Schnittstellen umfassen
eine RAM-Schnittstelle 50, eine Hauptrechnerbusschnittstelle 51 und eine
Sendeempfängerschnittstelle 52.
Die Busschnittstelle 51 wird für einen EISA-Bus implementiert
und arbeitet gelegentlich entweder als Master oder als Slave am
Bus. Jede der Funktionseinheiten der in 4 gezeigten
Implementierung wird nachstehend beschrieben.
-
A. EISA-Slave-Schnittstelle 54
-
Die
EISA-Slave-Schnittstelle 54 stellt einen Pfad für den EISA-Hauptrechnerbus
zum Zugreifen auf die Register und Puffer, die von der Netzwerkschnittstellen-Steuereinheit
verwaltet werden, bereit. Das Modul enthält Konfigurationsregister für die Steuereinheit
und führt
eine rohe Decodierung des EISA-Busses zum Zwecke der Lenkung von
Signalen durch. Die EISA-Slave-Schnittstelle 54 interpretiert
keine der Adressierungen von individuellen Registern, die über die
ganze Steuereinheit verteilt sind.
-
Im
Betrieb überwacht
die EISA-Slave-Schnittstelle kontinuierlich den EISA-Adressenbus und stellt
fest, wenn auf die Konfigurationsregister, die speicherabgebildeten
Netzwerkregister oder den BIOS-ROM des Adapters zugegriffen wird.
-
Für jeden
Speicher-Slave-Zyklus, der vom EISA-Bus eingeleitet wird, stellt
die EISA-Slave-Schnittstelle
außerdem
eine Zyklusanforderung an den Zykluszuteiler 56 auf. Der
Zykluszuteiler erlegt dem Hauptrechnersystem Wartezustände auf, bis
die Anforderung gewährt
wurde.
-
Die
EISA-Slave-Schnittstelle stellt auch eine allgemeine 32-Bit-Busschnittstelle
für den
Rest der Netzwerksteuereinheit bereit. Die allgemeine Art der Schnittstelle
ermöglicht
eine leichte Anpassung der Konstruktion an andere Bustypen, wie
z.B. den Mikrokanal, ohne eine Neukonstruktion des Rests des Chips
zu erfordern.
-
Die
Bits 14-2 des EISA-Adressenbusses werden zwischengespeichert und
laufen zu anderen Modulen durch. Die niedrigstwertigen zwei Bits
der Adresse werden durch 4-Byte-Freigaben
dargestellt, die auch über
einen ganzen Datenübertragungszyklus
gültig
sind. Vier 8-Bit-Byte-Bahnen bilden den Slave-Datenkanal. Der Datenbus
ist tatsächlich
ein Paar von unidirektionalen Bussen, einer für Schreibvorgänge und
einer für
Lesevorgänge
in einem bevorzugten System. Der Datenschreibbus ist auf eine Weise
mit mehreren Stationen mit allen Modulen, die eine Verbindung mit
dem EISA-Datenbus
erfordern, über
die Slave-Schnittstelle verdrahtet. Der Lesebus wird im RAM-Schnittstellenmodul 50 multiplexiert und
maskiert. Schreibanforderungen vom EISA-Bus können gehalten werden, bis sie
vom Zykluszuteiler 56 bestätigt werden. Wenn ein Zyklus
gehalten wird, kann der EISA-Bus von den Wartezuständen freigegeben
werden, während
der Zyklus am Adapter abgeschlossen wird. Wenn ein zweiter Zyklus
vom EISA-Bus erzeugt wird, während
der erste noch anhängig
ist, dann wird der EISA-Bus mit Wartezuständen abgehalten, bis das anhängige Schreiben
durchgeführt
wird. Bei diesem speziellen Ausführungsbeispiel
wird eine Pipelineverarbeitung von EISA-Lesevorgängen nicht unterstützt.
-
Die
EISA-Slave-Schnittstelle stellt auch eine Schnittstelle zum EEPROM 17 bereit.
Diese Schnittstelle arbeitet zur Übertragung des Inhalts des
EEPROM 17 in den Adapterspeicher nach dem Rücksetzen.
-
Es
gibt zahlreiche Register im EISA-Slave-Schnittstellenmodul 54,
die hauptsächlich
mit der Konfiguration des Adapters in Beziehung stehen und die der
EISA-Busspezifikation
entsprechen. Diese Register tun solche Dinge wie Einrichtung der Speicherbasisadresse
des Adapters, der Unterbrechungsebene, der Sendeempfängertypauswahl
und der BIOS-ROM-Freigabe. Die Konfigurationsregister versehen auch
den Hauptrechner mit einem zwangsläufigen Mittel zum Identifizieren
des Adaptertyps und zum globalen Deaktivieren des Adapters.
-
B. EISA-Master-Schnittstelle 55
-
Die
EISA-Master-Schnittstelle 55 behandelt Anforderungen vom
Hochlade-DMA 57 und Herunterlade-DMA 58 zum Durchführen von
Bus-Master-Operationen über
den EISA-Bus. Die EISA-Master-Schnittstelle 55 entscheidet
autonom zwischen anstehenden Hochlade- und Herunterladeanforderungen
aufgrund dessen, dass der EISA-Bus gemischte Lesevorgänge und
Schreibvorgänge
verweigert, während
Burstübertragungen
durchgeführt
werden, die von den DMA-Operationen des bevorzugten Ausführungsbeispiels
verwendet werden.
-
Die
Bus-Master-Übertragungen
werden immer durch entweder den Hochlade-DMA 57 oder den Herunterlade-DMA 58 eingeleitet.
Die Übertragungen
können
von entweder den DMA-Modulen bei der Beendung einer Übertragung
oder durch die EISA-Master-Schnittstelle
beim Betriebsmittelentzug durch eine andere willkürliche Vorrichtung
auf dem EISA-Bus beendet werden.
-
Folglich
besteht die Funktion der EISA-Master-Schnittstelle 55 darin,
den Zugriff auf den EISA-Bus zuzuteilen, wenn Übertragungsanforderungen von
einem oder beiden des Hochlade-DMA 57 und des Herunterlade-DMA 58 anstehen.
Die EISA-Master-Schnittstelle 55 führt die
Signalisierung durch, die erforderlich ist, um erste Übertragungen mit
Adressen-Slaves auf dem Bus herzustellen. Sie stellt auch eine Kompatibilität mit den
EISA-Bus-Definitionen sicher.
-
Dieses
Modul wandelt auch echte Modus-Segment:Versatz-Adressen in lineare 20-Bit-Adressen um, wenn
es durch die Adaptermoduslogik 59 aktiviert wird.
-
C. Master/Slave-Vereinigungsmodul 53
-
Das
Master/Slave-Vereinigungsmodul 53 stellt die gemeinsame
Nutzung von Verbindungen mit dem EISA-Bus durch die EISA-Master-Schnittstelle 55 und
die EISA-Slave-Schnittstelle 54 bereit. Dieses Vereinigungsmodul 53 besteht
hauptsächlich
aus einer Reihe von 2:1-Multiplexern.
-
D. Unterbrechungssteuereinheitsmodul 60
-
Die
Steuereinheit umfasst auch ein Unterbrechungssteuereinheitsmodul 60.
Das Unterbrechungssteuereinheitsmodul 60 implementiert
verschiedene Unterbrechungs- und
Hinweisfunktionen, einschließlich
Maskierungs- und Aktivierungs/Deaktivierungs-Mechanismen. Unterbrechungssignale werden
durch verschiedene Module innerhalb der Steuereinheit erzeugt und
werden zum Unterbrechungssteuereinheitsmodul 60 gelenkt.
Das Unterbrechungssteuereinheitsmodul 60 leitet dann die
Unterbrechungssignale über
verschiedene Freigaben und Masken, bevor sie miteinander einer ODER-Verknüpfung unterzogen
werden und das Ergebnis auf den Hauptrechnerbus geführt wird.
-
Das
Unterbrechungssteuereinheitsmodul 60 erfasst nicht einer
Unterbrechung werte Ereignisse oder bestätigt die zum Hauptrechner geleiteten
Unterbrechungen. Es umfasst eine Anzahl von in der ASIC befindlichen
Registern, die bei den Unterbrechungsbehandlungsfunktionen verwendet
werden.
-
E. Adaptermodusmodul 59
-
Das
Adaptermodusmodul 59 stellt eine Anzahl von Funktionen
bereit, einschließlich
Einstellung von verschiedenen Basisbetriebsarten der Steuereinheit
und Melden des Status von verschiedenen Bedingungen der Steuereinheit.
Das Adaptermodul 59 legt auch die Basisadresse eines Fensterregisters fest,
das für
die Diagnose durch das Hauptrechnersystem verwendet wird. Ferner
erzeugt das Adaptermodusmodul 59 Rücksetzfunktionen für den Adapter. Dieses
Modul stellt auch das MAC-ID-Register bereit, das die Medienzugriffssteuereinheit,
die von der Vorrichtung implementiert wird, für die Kommunikation mit verschiedenen
Modulen innerhalb der Steuereinheit und mit dem Hauptrechnersystem
identifiziert.
-
F. Zykluszuteilermodul 56
-
Das
Zykluszuteilermodul 56 ist für die Verteilung des Zugriffs
auf die im RAM des Adapters befindlichen und in der ASIC befindlichen
Register über die
RAM-Schnittstelle 50 unter
verschiedenen Anfordernden verantwortlich. Es funktioniert, um einen rechtzeitigen
Zugriff auf den RAM durch die Module, die am meisten gefährdet sind,
unter einer Überlauf- oder
Unterlaufbedingung zu leiden, in Reaktion auf ein Prioritätsschema
zu ermöglichen.
-
G. Multicast-Vergleichermodul 61
-
Die
in 4 dargestellte Steuereinheit umfasst auch ein
Multicast-Vergleichermodul 61. Wenn es durch das Adaptermodusmodul 59 aktiviert
wird, führt
das Multicast-Vergleichermodul 61 einen
bitweisen Vergleich eines Zieladressenfeldes eines empfangenen Datenblocks
mit dem Inhalt der Multicast-Adressentabelle durch. Die Multicast-Adressentabelle
wird im Hauptrechner erstellt und im RAM 15 gespeichert.
Eine Fehlübereinstimmung
während dieses
Vergleichs, die mit weder einem Einzeladressen- noch einem Sammeladressenvergleich
gekoppelt ist, führt
zur Ablehnung eines eingehenden Datenblocks.
-
Folglich überwacht
das Multicast-Vergleichermodul 61 die Aktivität des Ethernet-Empfängermoduls 62 und
des Empfangs-DMA-Moduls 63, um festzustellen, wenn ein
neuer Datenblock empfangen wird. Jedes Byte, das vom Ethernet-Empfänger 62 empfangen
wird und an der parallelen Schnittstelle 64 des Empfängers übergeben
wird, wird durch das Multicast-Vergleichermodul 61 schattiert.
Diese Bytes werden dann mit gültigen
Einträgen
in einer Multicast-Adressentabelle verglichen, auf die vom Multicast-Vergleicher 61 zugegriffen
werden kann.
-
Der
Multicast-Vergleicher 61 legt nicht den Inhalt der Multicast-Adressentabelle
fest oder hält
ihn aufrecht. Das Modul erfasst jedoch die Hauptrechnerzugriffe
auf die Tabelle und liefert geeignete Umlenkungsversätze zum
RAM-Schnittstellenmodul 50.
-
H. Statistiksteuereinheitsmodul 65
-
Das
bevorzugte System umfasst auch ein Statistiksteuereinheitsmodul 65.
Dieses Modul überwacht
die Aktivität
von verschiedenen anderen Modulen innerhalb der Steuereinheit, am
speziellsten des Ethernet-Sendermoduls 66 und des Ethernet-Empfängermoduls 62 und
aktualisiert die im RAM 15 verwaltete Statistik, wenn anwendbare
Ereignisse auftreten.
-
I. Herunterlade-DMA-Modul 58
-
Das
Herunterlade-DMA-Modul 58 ist für die Ausgabe von Anforderungen
für Bus-Master-Herunterladevorgänge von
Daten vom Hauptrechnersystem in den Adapterspeicher verantwortlich.
Diese Daten werden dann innerhalb des Sendedatenpuffers auf der
Platine des Adapters für
entweder eine sofortige oder zukünftige Übertragung
abgelegt.
-
Sobald
Pufferdeskriptoren definiert sind und einer der Sendedatenpuffer
verfügbar
wird, wie nachstehend beschrieben, übermittelt das Herunterlade-DMA-Modul
Anforderungen für
Herunterlade-Bus-Master-Operationen an die EISA-Master-Schnittstelle 55.
Das Herunterlade-DMA-Modul 58 führt eine Byteausrichtung durch,
einschließlich
irgendeiner erforderlichen Packung und Entpackung, um die Daten
auszurichten, wie von den jeweiligen Startadressen des Hauptrechners
und des Adapters impliziert.
-
Das
Herunterlade-DMA-Modul 58 umfasst auch eine Logik zum Verwalten
des Sendedeskriptor-Ringpuffers innerhalb des RAM des Adapters. Das
Herunterlade-DMA-Modul 58 erzeugt
eine Unterbrechung im geeigneten Modus, um den Abschluss der Herunterladeoperation
anzugeben. Das Herunterlade-DMA-Modul 58 informiert auch
das Sende-DMA-Modul 67, wenn es Zeit ist, die Übertragung
zu beginnen. Verschiedene Register, die an der Herunterlade-DMA-Operation
beteiligt sind, werden nachstehend genauer beschrieben, da sie direkt
am Datenpufferprozess der vorliegenden Erfindung beteiligt sind.
-
J. Sende-DMA-Modul 67
-
Das
Sende-DMA-Modul 67 arbeitet zum Abrufen von Bytes aus dem
Sendedeskriptorpuffer, dem Sendedatenpuffer oder beiden, wie nachstehend
beschrieben, wenn es durch die Herunterlade-DMA-Logik 58 dazu
angewiesen wird. Die abgerufenen Bytes werden dann der Reihe nach
an das Ethernet-Sendermodul 66 übergeben.
-
Folglich
dient das Sende-DMA-Modul 67 dem Lesen des Inhalts des
Sendedeskriptor-Ringpuffers,
um den Umfang von unmittelbaren Daten und die Länge des gesamten zu sendenden
Datenblocks zu bestimmen. Wenn ein festgelegter Datenblock nicht
den Spezifikationen für
das Netzwerk entspricht, beispielsweise kürzer ist als das 802.3-Minimum,
und der Adapter so aktiviert wird, liefert dieses Modul zusätzliche
Bytes von undefinierten Daten zum Ethernet-Sendermodul 66 als
Füllung.
-
Kollisionsneuversuche
im CSMA/CD-Netzwerk werden vom Sende-DMA-Modul 67 behandelt. Wenn
eine Kollision durch den Ethernet-Sender 66 angezeigt wird, übermittelt
das Sende-DMA-Modul 67 erneut denselben Datenblock durch
Neuinterpretieren des Datenblockdeskriptors im Puffer.
-
Wenn
aktiviert und wenn die Bedingung vollständiger Übertragung erfüllt ist,
wird eine Unterbrechung für
eine vollständige Übertragung
für die
Behandlung durch die Unterbrechungssteuereinheit 60 im
Sende-DMA-Modul 67 erzeugt.
-
Das
Sende-DMA-Modul 67 speichert auch den entsprechenden Datenblockstatus
im Sendedeskriptor-Ringpuffer des Adapters bei der Vollendung der Übertragung.
-
Das
Sende-DMA-Modul 67 erfasst auch Unterlaufbedingungen, wenn
ein Fehlbetrag an Daten, die zur Übertragung zur Verfügung stehen,
auftritt.
-
Wiederum
werden die an der Operation des Sende-DMA-Moduls 67 beteiligten
Register nachstehend im Detail beschrieben.
-
K. Ethernet-Sendermodul 66
-
Das
Ethernet-Sendermodul 66 ist eine wesentliche Implementierung
für ein
802.3-Standardnetzwerk.
Dieses Modul nimmt parallele Datenbytes vom Sende-DMA-Modul 67 an
und wendet die 802.3-Zugriffsregeln an und liefert serielle Daten
zum externen Codierer/Decodierer-Chip.
-
L. Ethernet-Empfängermodul 62
-
Ebenso
stellt das Ethernet-Empfängermodul 62 eine
wesentliche 802.3-Implementierung
dar. Dieses Modul nimmt serielle Daten von einem externen Codierer/Decodierer
an, wendet die 802.3-Regeln auf die Daten an und übergibt
die Daten in paralleler Form zur Verwendung vom Empfangs-DMA-Modul 63.
Folglich führen
der Ethernet-Sender 66 und die Ethernet-Empfänger die
Standard-CSMA/CD-Funktionen
durch.
-
M. Empfangs-DMA-Modul 63
-
Das
Empfangs-DMA-Modul 63 stellt eine Komplementfunktion zum
Sende-DMA-Modul 67 dar. Dieses Modul ist für die Annahme
von parallelen Datenbytes am Ethernet- Empfänger 62 und
die Ablage derselben im Empfangsringpuffer des Adapters verantwortlich.
-
Das
Empfangs-DMA-Modul 62 ist für die Assemblierung von Bytes
vom Ethernet-Empfänger in 32-Bit-Worte
vor der Speicherung im RAM des Adapters verantwortlich. Bei der
Vollendung des Datenblockempfangs werden der Status und die Länge des Datenblocks
innerhalb des Empfangsringpuffers für die Verwendung durch das
Hauptrechnersystem abgelegt.
-
Das
Empfangs-DMA-Modul 63 ist auch für die Festlegung und Verwaltung
des Empfangspufferrings innerhalb des RAM des Adapters verantwortlich,
wie nachstehend im Einzelnen beschrieben. Ferner wird die Positionierung
des "LOOKBUF"-Registers, das ermöglicht,
dass der Hauptrechner empfangene Daten betrachtet, wie nachstehend
beschrieben, vom Empfangs-DMA-Modul 63 behandelt.
-
Das
Empfangs-DMA-Modul 63 behandelt auch Unterbrechungshinweise
unter geeigneten Bedingungen.
-
N. Hochlade-DMA-Modul 57
-
Das
Hochlade-DMA-Modul 57 führt
Datenübertragungen
vom Empfangspuffer über
die RAM-Schnittstelle 50 zum Hauptrechnersystem durch.
Folglich wird der Empfangsringpuffer vom Empfangs-DMA-Modul 63 verwaltet
und vom Hochlade-DMA 57 interpretiert. Tatsächliche
Bus-Master-Übertragungen
werden durch das EISA-Master-Schnittstellenmodul 55 ausgeführt.
-
Das
Hochlade-DMA-Modul 67 interpretiert Datenstrukturen, die
im Empfangsringpuffer durch das Empfangs-DMA-Modul 63 abgelegt
werden, einschließlich
des Orts und der Länge
eines empfangenen Datenblocks. Es liest auch den Übertragungsdeskriptor,
der durch das Hauptrechnersystem definiert wird, um festzustellen,
wie viele Bytes des Datenblocks zu übertragen sind und wohin im
Hauptrechnerspeicher der Datenblock zu übertragen ist.
-
Das
Hochlade-DMA-Modul 57 fordert Bus-Master-Zyklen vom EISA-Master-Schnittstellenmodul 55 in
Reaktion auf gültige Übertragungsanforderungen,
die vom Hauptrechner abgelegt werden, an.
-
Das
Hochlade-DMA-Modul 57 verwendet auch eine Verriegelung
zwischen dem Empfangs-DMA-Modul 63 und dem Hochlade-DMA-Modul 57,
um die Übertragungsrate
zum Hauptrechnersystem zu verringern, um ein "Überholen" des über das
Empfangs-DMA-Modul 63 empfangenen Datenblocks zu verhindern.
Schließlich
erzeugt dieses Modul Unterbrechungen, die die Vollendung einer Übertragung
zur Verwendung durch den Hauptrechner angeben. Verschiedene Register,
die an dieser Prozedur beteiligt sind, werden nachstehend beschrieben.
-
O. RAM-Schnittstellenmodul 50
-
Das
RAM-Schnittstellenmodul 50 stellt Multiplexer und Masken
für verschiedene
Funktionen bereit, die an der Adressierung des RAM beteiligt sind. Das
Modul multiplexiert die verschiedenen Adressen- und Datenquellen
miteinander, um Parameter für
RAM-Zugriffszyklen zu bilden. Dieses Modul 50 ist für das Sammeln
von Daten von den verschiedenen anderen Modulen an der Steuereinheit,
die vom Hauptrechnersystem gelesen werden können, verantwortlich. Außerdem wendet
dieses Modul eine Maske auf die Daten an, um ungenutzte obere Bits auf
Null zu bringen, und speichert Datenworte für Lesevorgänge mit mehreren Zyklen.
-
P. JTAG-Modul
-
In
der Steuereinheit ist, obwohl nicht gezeigt, auch ein JTAG-Modul
enthalten, das eine Zustandsmaschine implementiert, wie im IEEE-Standard 1149.1-1990,
21. Mai 1990, spezifiziert. Dieses Modul sieht einen Abtasttest
der Anschlussstifte der ASIC zur Verwendung während der Herstellung vor.
-
III. Sende- und Empfangsdatenfluss und
-struktur
-
5 stellt
ein heuristisches Datenflussdiagramm eines Adapters gemäß der vorliegenden
Erfindung bereit, das die Hauptrechnerschnittstelle, den Adapterspeicher
und den Netzwerkschnittstellen-Datenfluss für das Senden und Empfangen
betont.
-
Wie
vorstehend erwähnt,
umfasst das Hauptrechnersystem einen Hauptrechnerspeicherraum (im
Allgemeinen 100), der durch die Adressen auf dem Hauptrechnerbus
definiert wird. Ein im Voraus festgelegter Block 101 des
Hauptrechnerspeicherraums wird für
die Adapterschnittstellenadressen beiseite gelegt. Der Adapter umfasst
eine Hauptrechnerschnittstellenlogik 102, die auf Zugriffe über den
Hauptrechnerbus innerhalb des Adapterschnittstellen-Adressenblocks 101 reagiert.
Im Adapter befindet sich auch ein vom Hauptrechner unabhängiger Speicher 103.
Die Hauptrechnerschnittstellenlogik verarbeitet die Übertragungsdaten
zwischen dem festgelegten Block 101 von Adressen und dem
unabhängigen
Speicher. Der Adapter umfasst auch eine Netzwerkschnittstellenlogik 104,
die mit dem Adapterspeicher gekoppelt ist. Die Netzwerkschnittstellenlogik
verwaltet Übertragungen
von Daten von Puffern im unabhängigen
Speicher 103 und im Netzwerk-Sendeempfänger 12. Der Netzwerk-Sendeempfänger 12 liefert
dann die Daten auf das Netzwerkmedium 106.
-
Die
Hauptrechnerschnittstellenlogik umfasst eine Sendedeskriptorlogik
und eine Herunterlade-DMA-Logik (im Allgemeinen 107), die
im Sendeprozess verwendet werden, und eine Ansichtslogik, eine Übertragungsdeskriptorlogik
und eine Hochlade-DMA-Logik
(im Allgemeinen 108), die im Empfangsprozess verwendet
werden. Diese Module verwalten grundsätzlich die Übertragung von Daten zwischen
dem unabhängigen
Speicher 103 und dem Hauptrechner in Reaktion auf Schreibvorgänge durch
das Hauptrechnersystem in den Adapterschnittstellen-Adressenblock 101.
Dies entlastet den Hauptrechner von irgendwelchen Adressenübersetzungen
oder Pufferverwaltungsfunktionen für die Sende- und Empfangsoperationen.
-
Die
Netzwerkschnittstellenlogik 104 umfasst eine Sende-DMA-Logik
(im Allgemeinen 109) und eine Empfangs-DMA-Logik (im Allgemeinen 110). Die
Sende-DMA-Logik 109 reagiert auf Deskriptoren, die im Adapterspeicher 103 gespeichert
sind, wie nachstehend beschrieben, zum Bewegen von Daten aus dem
unabhängigen
Adapterspeicher 103 zum Netzwerk-Sendeempfänger 12.
Ebenso ist die Empfangs-DMA-Logik 110 für das Bewegen
von Daten vom Sendeempfänger 12 in
den unabhängigen
Adapterspeicher 103 verantwortlich. Folglich sind alle Übertragungen
von Daten vom Netzwerkmedium 106 direkt mit dem vom Hauptrechner
unabhängigen Speicher 103 gekoppelt.
Datenübertragungen
vom vom Hauptrechner unabhängigen
Speicher 103 werden dann durch die Hauptrechnerschnittstellenlogik 102 in
Reaktion auf einen im speicherabgebildeten Bereich im Hauptrechnerspeicherraum
gesteuert, was die Protokollsoftware, die zur Kommunikation mit
dem Netzwerk erforderlich ist, erheblich vereinfacht.
-
6 stellt
eine vereinfachte Abbildung des Adapterschnittstellen-Hauptrechneradressenblocks 101 bereit.
Die Adressen innerhalb dieses Blocks erscheinen in einem bevorzugten
System zu den Hauptrechner-ähnlichen speicherabgebildeten
Speicherregistern in einem zusammenhängenden 8K-Block des Hauptrechneradressenraums.
-
Für das EISA-Ausführungsbeispiel
befinden sich "Register" oder abgebildete
Bereiche im Block 101 an Doppelwort-Adressengrenzen, folglich
sind Adressen ein Vielfaches von Vier. Viele der "Register" belegen mehrere
Doppelworte (nicht weniger als 509) des Speicherraums.
-
Obwohl
die "Register" auf einen willkürlichen im
Voraus festgelegten Block des Hauptrechneradressenraums speicherabgebildet
werden, greift keiner der Lesevorgänge oder Schreibvorgänge, der vom
Hauptrechnersystem an diesen Registern durchgeführt wird, tatsächlich direkt
auf den Adapterspeicher zu. Vielmehr werden die Zugriffe auf den speicherabgebildeten
Raum durch die Hauptrechnerschnittstellenlogik 104, die
für das
Hauptrechnersystem transparent ist, interpretiert. Folglich ist
der Speicher im Adapter vom Hauptrechneradressenraum und von der
Hauptrechnerverwaltung unabhängig. 5 stellt
eine Überblickabbildung
des Adapterschnittstellen-Hauptrechneradressenraums, die zum Zugriff
auf diese Register verwendet wird, bereit. Die Register umfassen
hauptsächlich
ein Sendebereichsregister (XMIT AREA) am Versatz 0010 (hex), ein Übertragungsbereichsregister
(XFER AREA) am Versatz 0800 (hex) und einen Suchpuffer (LOOKBUF)
am Versatz 100C (hex). Verschiedene Status-, Statistik-, Informations-
und Hinweisregister sind über
den ganzen Rest des Bereichs verteilt.
-
Das
Register XMIT AREA wird vom Hauptrechner verwendet, um Sendedeskriptoren
in den Adapter zu schreiben. Die Sendedeskriptoren werden nachstehend
genauer beschrieben, umfassen jedoch Daten, die zu kompilierende
und als Datenblock zu übertragende
Daten identifizieren, und können
unmittelbare Daten umfassen. Das XMIT AREA am Versatz 0010 (hex)
besitzt eine Größe von ungefähr 2K Bytes.
Diese Daten werden in einen Sendedeskriptorring im unabhängigen Adapterspeicher
abgebildet, wie nachstehend beschrieben.
-
Das
XFER AREA am Versatz 0800 (hex) im Adapterschnittstellen-Hauptrechneradressenblock ist
ein Puffer mit ungefähr
1K Byte, durch den Übertragungsdeskriptoren
in den unabhängigen
Speicher des Adapters geschrieben werden. Der LOOKBUF-Bereich am
Versatz 100C (hex) ist ein Puffer von ungefähr 2K Bytes, der ein Nur-Lese-Fenster
in einen Empfangsringpuffer innerhalb des vom Hauptrechner unabhängigen Adapterspeichers
liefert.
-
7 stellt
eine Abbildung des vom Hauptrechner unabhängigen Speichers am Adapter
bereit. Dieser Speicher ist in einen Sendedatenpuffer am Versatz
0 von ungefähr
3K Bytes, einen Sendedeskriptorring am Versatz 0C00 (hex) von ungefähr 5K Bytes,
einen Empfangspufferring am Versatz 2000 (hex) von ungefähr 22k Bytes
und einen Übertragungsdeskriptorbereich
am Versatz 7800 (hex) von ungefähr
1K Bytes organisiert, die im unabhängigen Speicher vorgesehen
sind. Die letzten drei Speicherbereiche umfassen Adapterinformationen,
eine Netzwerkstatistik und Multicast-Adressentabellen zur Verwendung
durch den Adapter.
-
Beim
bevorzugten System verwendet der Adapter 32K Bytes von statischem
RAM für
die Sendepuffer, Empfangspuffer, Steuerstrukturen und verschiedenen
Status- und Statistikregister. Mehrere der Bereiche im Speicher
des Adapters, die in 7 definiert sind, stellen definierte
Datenstrukturen bereit.
-
A. Sendedatenpuffer
-
Der
Sendedatenpuffer belegt 3K Bytes, wie vorstehend erwähnt. Dieser
Bereich ist in zwei Puffer mit 1,5K unterteilt. Nur die Daten, die
in den Adapter über
Bus-Master-Übertragungen
heruntergeladen werden, werden in diesen Puffern gespeichert. Die Steuereinheit
verwendet sowohl den Inhalt des Sendedatenpuffers als auch den unmittelbaren
Datenteil der Sendedeskriptoren, wenn ein Datenblock zur Übertragung
eingekapselt wird. Der Adapter wechselt die Verwendung der Puffer
nach dem Wählen des
Puffers, der am nächsten
zur Basis des Speichers liegt, als Einschaltvorgabe automatisch
ab.
-
Die
Sendepuffer werden von der Herunterlade-DMA-Logik und der Sende-DMA-Logik
gemeinsam genutzt. Die Sende-DMA-Logik kann vom Puffer 0 zum Puffer
1 und wieder zurück
frei umschalten. Die einzige Einschränkung ist die Verfügbarkeit
von Sendedaten, wie durch das Sendestart-Schwellenregister definiert.
Das Sende-DMA-Modul
schaltet von einem Puffer zum anderen um, sobald es eine Übertragung
beendet hat. Das Pufferumschalten geschieht ungeachtet dessen, ob
die Übertragung
erfolgreich war oder nicht, und ungeachtet dessen, ob Bus-Master-Herunterladedaten
in der vorangehenden Übertragung
verwendet wurden oder nicht.
-
Das
Herunterlade-DMA-Modul kann nur von einem Puffer zum anderen umschalten,
wenn der Puffer, auf den es umschaltet, nicht vom Sende-DMA-Modul
verwendet wird.
-
Der
Herunterlade-DMA versucht jedes Mal, wenn er eine Verarbeitung eines
Sendedeskriptors beendet, vom einen Puffer auf den anderen umzuschalten,
wie nachstehend beschrieben, ungeachtet dessen, ob irgendwelche
Bus-Master-Operationen im
vorangehenden Deskriptor aufgerufen wurden oder nicht. Er wechselt
jedoch nicht zu einem Puffer, der vom Sende-DMA-Modul in Gebrauch
ist.
-
B. Sendedeskriptoren
-
Sendedeskriptoren
definieren Datenblöcke, die
eine anstehende Übertragung
darstellen, und halten den Status von Datenblöcken, die übertragen wurden. Diese Deskriptoren
weisen eine variable Länge
auf und sind in einer sequentiellen Weise um einen 5K-Byte-Ringpuffer
angeordnet, wie vorstehend erwähnt.
Der erste Eintrag des Deskriptors muss auf eine Doppelwortgrenze
ausgerichtet werden. 8a stellt die Sendedeskriptor-Datenstruktur dar.
-
Die
Masse des Inhalts eines Eintrags in den Sendedeskriptorbereich wird
Wort für
Wort von den vom Hauptrechnerprozessor über das in 6 dargestellte
XMIT AREA gelieferten Daten kopiert. Um den Formatanforderungen
der Register XMIT PROT ID und XMIT FRAME STATUS zu entsprechen und genügend Informationen
für die
Datenblockübertragung
und Pufferverwaltung zu liefern, muss jedoch ein Wert verlagert
werden und mehrere müssen
automatisch abgelegt werden.
-
Die
Schreibvorgänge
des Hauptrechnerprozessors in das XMIT AREA werden automatisch durch
den Adapter derart versetzt, dass der erste geschriebene Wert XMIT
PROT ID und XMIT REQ HANDLE – an
der fünften
32-Bit-Wort-Stelle (Versatz 10 (hex)) in der nächsten verfügbaren Datenstruktur im Ring
endet. Dies bedeutet, dass der Wert XMIT REQ HANDLE durch den Hauptrechner
an die Stelle geschrieben wird, die für den MACID-Wert reserviert ist.
Unmittelbar, nachdem der Wert XMIT REQ HANDLE in den RAM des Adapters
geschrieben ist, muss der Adapter den Inhalt der niedrigstwertigen
16 Bits der fünften
32-Bit-Wort-Stelle in die höchstwertigen
16 Bits der vierten 32-Bit-Wort-Stelle kopieren. Nach dem Kopieren
von XMIT REQ HANDLE ruft der Adapter den MACID-Wert vom MACID-Register
ab und schreibt diesen an die Stelle, die vom XMIT REQ HANDLE freigemacht
wurde. Später,
nach der Datenblockübertragung,
werden die niedrigstwertigen 16 Bits der vierten 32-Bit-Stelle (Versatz
C (hex)) mit dem Status des Sendedatenblocks aktualisiert.
-
Der
Eintrag NEXT DESCRIPTOR POINTER kann durch den Adapter jederzeit,
nachdem die Werte XMIT BUFFER COUNT und XMIT IMMED LEN in den Adapter
geschrieben wurden, aktualisiert werden. Da die in das Register
XMIT AREA geschriebenen Daten in einer genauen Reihenfolge in exakte Stellen
geschrieben werden müssen,
können
die Schreibvorgänge
dieser zwei Werte leicht erfasst und für die Deskriptor-Größenberechnungen
verwendet werden, die erforderlich sind, um den Start des nächsten Deskriptors
zu bestimmen, ohne die Werte vom RAM abrufen zu müssen.
-
Sobald
der letzte Wert XMIT DATA LEN in den Adapter geschrieben wurde,
kann schließlich
die Datenblocklänge
berechnet und in der Position FRAME LENGTH der Datenstruktur abgelegt
werden. Dieser Wert wird auch in das Register XMIT FRAME LENGTH
im Steuereinheitschip für
die unmittelbare Verwendung durch den Hauptrechner kopiert.
-
Die
nächsten
mehreren Absätze
definieren jedes der Felder der Sendedeskriptor-Datenstruktur.
-
Der
Wert NEXT DESCRIPTOR POINTER zeigt auf das erste Wort des nächsten Deskriptors. Dieser
Wert wird unmittelbar, nachdem der Hauptrechner XMIT QUEUE STATUS
liest, aktualisiert. Der definierte NEXT DESCRIPTOR POINTER impliziert nicht
notwendigerweise, dass die Stelle, auf die gezeigt wird, einen gültigen Deskriptor
enthält.
Er gibt lediglich an, wo der nächste
gültige
Deskriptor gefunden werden kann, sobald er definiert ist.
-
Das
Feld FRAME LENGTH wird durch den Adapter berechnet und aktualisiert.
Die Datenblocklänge
wird durch Summieren aller Werte XMIT DATA LEN und des Werts XMIT
IMMED LEN berechnet. Die resultierende Summe ist die Gesamtzahl
von Bytes im Sendedatenblock. Wenn die Summe geringer ist als die
minimale 802.3-Datenblocklänge, dann wird
die Summe auf den minimalen Datenblocklängenwert gesetzt. Die Summe
wird in die Zeile FRAME LENGTH des Sendedeskriptors geschrieben
und wird auch für
den Hauptrechner über
das Register XMIT FRAME LENGTH zur Verfügung gestellt.
-
Das
Feld XMIT FAILURE enthält
den Fehlercode, der aus den Statusbits besteht, die vom Ethernet-Sender
nach der Vollendung der Übertragung
gesammelt werden.
-
Dieses
Feld wird auf das Register XMIT FAILURE für den Hauptrechnerzugriff abgebildet.
-
Der
Wert XMIT REQ HANDLE wird von der Sende-DMA-Steuereinheit interpretiert,
um festzustellen, ob ein Hinweis bei der Vollendung des Übertragungsversuchs
(der Übertragungsversuche)
für den
zugehörigen
Datenblock erzeugt werden soll oder nicht. Wenn das Feld von Null
verschieden ist, wird ein Hinweis erzeugt. Der Eintrag des Datenblocks
im Sendedeskriptorring wird auch aufrechterhalten, bis der Hauptrechner
eine Gelegenheit hatte, den Sendestatus zu untersuchen. Die Felder
XMIT REQ HANDLE, XMIT STATUS, XMIT PROT ID und MACID werden alle
für den
Hauptrechner zur Verfügung
gestellt, wenn ein Hinweis erzeugt wird. Wenn XMIT REQ HANDLE eine
Null ist, dann wird der Sendedeskriptor-Warteschlangeneintrag nach
der Übertragung
verworfen, ohne den Hauptrechner auf irgendeine Weise zu benachrichtigen.
Sendeunterlaufbedingungen werden ungeachtet eines XMIT REQ HANDLE
von Null aufgestellt.
-
Das
Feld XMIT STATUS enthält
den Sendestatus für
den zugehörigen
Datenblock. Der Inhalt dieses Feldes wird unmittelbar nach dem Übertragungsversuch
(den Übertragungsversuchen)
aktualisiert. Die Rückführcodes
sind in der Definition des Registers XMIT STATUS definiert.
-
Der
Wert XMIT PROT ID in diesem Feld wird nur innerhalb der Warteschlange
zur Verwendung durch den Hauptrechner bei der Vollendung der Übertragung
aufrechterhalten, um das für
den Datenblock verantwortliche spezielle Protokoll zu identifizieren.
Es ermöglicht
eine gleichzeitige Aktivität
von mehreren Protokollen. Zusammen identifizieren XMIT PROT ID und
XMIT REQ HANDLE eindeutig einen Datenblock, der durch den Adapter
läuft.
-
Das
MACID wird wie XMIT PROT ID innerhalb der Warteschlange zur Verwendung
bei der Vollendung der Übertragung
aufrechterhalten. Der Hauptrechner schreibt jedoch nicht diesen
Wert in den Adapter über
das Register XMIT AREA. Vielmehr speichert der Hauptrechner diesen
Wert einmal im MACID-Register und es hängt dann vom Adapter ab, um
diesen Wert in die Deskriptor-Datenstruktur abzulegen, nachdem XMIT
REQ HANDLE in seine endgültige
Position kopiert wurde.
-
Die
Inhalte des Feldes XMIT BUFFER COUNT werden vom Hauptrechner über einen Schreibvorgang
in XMIT AREA geliefert. Dieses Feld legt die Anzahl von Puffern innerhalb
des Speichers des Hauptrechners fest, die verwendet werden, um den
Sendedatenblock zu bilden. Jeder der Puffer wird in der aufgelisteten
Reihenfolge vom Speicher des Hauptrechners zum Sendedatenpuffer
des Adapters übertragen,
sobald einer der zwei Sendedatenpuffer verfügbar wird. Wenn XMIT BUFFER COUNT
Null ist, werden dann keine Bus-Master-Operationen für diesen
Datenblock durchgeführt.
-
Das
Feld XMIT IMMED LEN, das durch einen Schreibvorgang vom Hauptrechner
in XMIT AREA definiert ist, legt die Anzahl von "unmittelbaren" Datenbytes fest, die vom Hauptrechner
geliefert werden. Wenn dieses Feld Null ist, dann enthält die nächste 32-Bit-Wort-Stelle den
ersten Hauptrechnerdatenpuffer-Deskriptor und der ganze Datenblock wird über Bus-Master-Zyklen
zum Adapter übertragen.
Der Wert XMIT IMMED LEN ist nicht notwendigerweise ein Vielfaches
von vier. Die Stelle des ersten Hauptrechnerdatenpuffer-Deskriptors
ist folgendermaßen
definiert: DESCRIPTOR OFFSET = ((XMIT IMMED LEN + 3) & fffc (hex)) +
18 (hex).
-
Das
Feld IMMEDIATE DATA mit variabler Länge enthält die unmittelbaren Daten,
die vom Hauptrechner unter Verwendung von Speicherschreibvorgängen in
XMIT AREA im Adapter abgelegt werden. Dieses Feld kann in der Länge von
0 bis 1514 Bytes variieren. Unmittelbare Daten werden in einen Sendedatenblock
zwischen der Präambel
und die Sendepufferdaten (falls vorhanden) durch den Adapter während der Übertragung
eingefügt.
Im Allgemeinen bestehen unmittelbare Daten aus den Ziel- und Quellenadressen
und irgendwelchen protokollspezifischen Kopfdaten. Es ist jedoch
vernünftig, dass
der ganze Sendedatenblock als unmittelbare Daten betrachtet wird.
Dies würde
es unnötig
machen, dass der Adapter irgendwelche Bus-Master-Operationen durchführt, um den Rest des Sendedatenblocks
abzurufen. Wenn XMIT IMMED LEN Null ist, wird dieses Feld dann übersprungen
und es wird angenommen, dass der ganze Datenblock sich in den im
Hauptrechnerspeicher befindlichen Datenpuffern befindet. Wenn XMIT
IMMED LEN keine ganze Zahl von Doppelworten festlegt, dann kann
der Hauptrechner auf das nächste
Vielfache von 4 aufrunden und bis auf diese Anzahl von Bytes schreiben.
Die zusätzlichen
Bytes jenseits XMIT IMMED LEN werden ignoriert und nicht als Teil
des übertragenen
Datenblocks aufgenommen.
-
Das
Feld XMIT DATA LEN, einer der zwei Einträge pro Hauptrechnerdatenpuffer-Deskriptor, definiert
die Anzahl von Bytes im zugehörigen
Hauptrechnerpuffer. Dieser Wert muss kein Vielfaches von vier sein.
-
Der
32-Bit-Wert XMIT DATA PTR ist die physikalische Startadresse des
zugehörigen
Hauptrechnerdatenpuffers. Dieser Wert muss kein Vielfaches von vier
sein.
-
C. Empfangspuffer
-
Der
Empfangspuffer ist ein 22K-Bytering von Empfangsdatenblocken mit
variabler Länge.
Jedem Datenblock geht ein Kopf voran, der die Größe und den Status des Datenblocks
und den Ort des Kopfs des nächsten
Datenblocks im Ringpuffer definiert.
-
Der
Beginn eines Empfangsdatenblockeintrags im Ring kann an irgendeiner
32-Bit-Wort-Grenze
beginnen.
-
Der
32-Bit-Wert NEXT RCV PTR enthält
die Adresse des Werts NEXT RCV PTR des nächsten Eintrags im Ring. Dieser
Wert wird bei der Vollendung des Empfangs des vorliegenden zugehörigen Datenblocks
gültig.
Der Puffer, auf den von NEXT RCV PTR gezeigt wird, kann nicht notwendigerweise einen
gültigen
Datenblock enthalten. Dies muss durch die Ringverwaltungszeiger
bestimmt werden, die den Beginn und das Ende der gültigen Einträge innerhalb
des Rings bestimmen.
-
Das
Wort RCV FRAME STATUS enthält
die verschiedenen Fehlercodes hinsichtlich des Zustandes des zugehörigen Datenblocks.
RCV FRAME STATUS wird unmittelbar nach dem Datenblockempfang aktualisiert.
Der Inhalt dieses Eintrags wird für den Hauptrechner über das
Register RCV FRAME STATUS zur Verfügung gestellt.
-
Das
obere 16-Bit-Wort des Eintrages RCV FRAME SIZE wird vom MACID-Wert
des Adapters belegt. Dieser Wert wird vom MACID-Register abgerufen
und in diesem Wort der Empfangspuffer-Datenstruktur zur gleichen
Zeit, wie der Wert RCV FRAME SIZE aufgestellt wird, abgelegt.
-
Die
Länge des
empfangenen Datenblocks wird im Register RCV FRAME SIZE abgelegt,
unmittelbar nachdem der Datenblock empfangen wurde. Der Inhalt dieses
Eintrags wird für
den Hauptrechner über
das Register RCV FRAME SIZE zur Verfügung gestellt.
-
Das
Feld RECEIVE DATA variiert in der Länge von 1 bis 1514 Bytes. Der
Empfangsdatenblock – der
mit der Zieladresse beginnt – wird
in diesem Feld gespeichert, wenn der Datenblock empfangen wird.
-
D. Übertragungsdeskriptor
-
Der
Adapter nimmt bei einer bevorzugten Implementierung einen und nur
einen Übertragungsdeskriptor
auf einmal auf. Versuche, einen zweiten Deskriptor herunterzuladen,
während
der erste verarbeitet wird, führen
zu einem Rückgabecode
vom Register XFER QUEUE STATUS, der auf einen Mangel an Betriebsmitteln
zum Annehmen der Anforderung hinweist. Nur der derzeit über LOOKBUF
sichtbare Datenblock wird durch die Übertragungsspezifikation innerhalb
des Registers XFER AREA verarbeitet.
-
Der Übertragungsdeskriptor
wird im Adapter-RAM unter Verwendung des Formats von 8b gespeichert.
-
Das
Wort TD OFFSET definiert den Versatz in den empfangenen Datenblock,
ab dem die Übertragung
beginnt. Dieser Wert muss nicht ein Vielfaches von vier sein. Daten,
die der Hauptrechner bereits untersucht hat (über LOOKBUF), müssen nicht zum
Hauptrechner übertragen
werden. Daher verursacht ein von Null verschiedener Wert, der in
das Feld TD OFFSET geschrieben wird, dass die Bus-Master-Schaltung
ihre Startadresse um TD OFFSET Bytes versetzt, bevor die Übertragung
begonnen wird. Dieser Wert kann im Bereich von Null (Übertragung
ab dem Beginn des Datenblocks) bis 1514 reichen.
-
Die
Anzahl von Längen/Zeiger-Paaren
ist im Feld TD BUFFER COUNT definiert. Nicht weniger als 127 Einträge sind
zugelassen. Darüber
hinaus wird eine Erschöpfung
des Puffers XFER AREA sichergestellt. Dieser Wert muss von Null
verschieden sein.
-
Das
Feld TD DATA LEN enthält
die Größe des Empfangspuffers
des Hauptrechners, in den empfangene Daten übertragen werden. Der Adapter ist
nicht auf die Übertragung
von nur 32-Bit-Worten eingeschränkt.
Der Versuch, mehr als die maximale Datenblocklänge von 1514 Bytes zu übertragen,
verursacht, dass der Adapter die Übertragung beim Lesen des Endes
des Datenblocks beendet.
-
Der
32-Bit-Wert TD DATA PTR ist die physikalische Adresse des ersten
Bytes des Empfangspuffers des Hauptrechners. Dieser Wert muss kein Vielfaches
von vier sein.
-
Die
physikalische Adresse des Datenpuffers im Hauptrechner, in den ein
empfangener Datenblock hochgeladen wird, wird in den Adapter als 32-Bit-Wert
TD DATA PTR im XFER AREA geschrieben. Der Adapter verwendet diesen
Wert als Zeiger auf das erste Byte im Empfangspuffer. Es bestehen keine
Einschränkungen,
die dem Wert dieses Zeigers vom Adapter auferlegt werden. Die Byte-,
Wort- und Doppelwortausrichtung der Pufferdaten werden alle unterstützt.
-
E. Adapterinfo-, Netzwerkstatistik-, Multicast-Adressentabellen
-
Die
Adapterinfo-, Netzwerkstatistik- und Multicast-Adressentabellen
im Adapter-RAM-Speicher werden
vom Adapter für
verschiedene Funktionen verwendet, wie für Fachleute verständlich ist,
die nicht direkt für
die Sende- und Empfangsoperation, die Gegenstand der vorliegenden
Anmeldung sind, relevant sind.
-
IV. Übertragungsprozess
-
9 stellt
die Netzwerkschnittstellenlogik und die Hauptrechnerschnittstellenlogik
dar, die beim Verwalten des Sendedatenpuffers und Sendedeskriptor-Ringpuffers
im unabhängigen
Speicher am Adapter verwendet werden. Auf der Hauptrechnerschnittstellenseite
umfasst die Logik eine Hauptrechnerdeskriptorlogik 150 und
eine Herunterlade-DMA-Logik 151. Die Hauptrechnerdeskriptorlogik 150 und
die Herunterlade-DMA-Logik 151 sind mit dem Hauptrechneradressenraum über die
Sende-"Register" gekoppelt, einschließlich des
Registers XMIT AREA, des Registers XMIT COMPLETE THRESH, des Registers
XMIT FAILURE, des Registers XMIT FRAME LENGTH, des Registers XMIT FRAME
STATUS, des Registers XMIT PROT ID, des Registers XMIT QUEUE STATUS
und des Registers XMIT START THRESH. Details dieser Register werden
nachstehend beschrieben.
-
Die
in 8a dargestellten Deskriptoren werden im Sendedeskriptorbereich
des vom Hauptrechner unabhängigen
RAM am Adapter durch Hauptrechnerschreibvorgänge in den Adressenblock XMIT
AREA gespeichert. Drei verschiedene Prozesse wirken auf Einträge in der
Deskriptor-Warteschlange. Der Hauptrechner schreibt, um anfänglich Sendedeskriptoren,
Bus-Master-Herunterladevorgänge
zum Bewegen von Pufferdaten vom Hauptrechnerspeicher in den Sendedatenpuffer
und die Übertragung
von beschriebenen Datenblöcken
im Netzwerk zu erzeugen. Die ersten zwei Prozesse geschehen innerhalb
der Herunterlade-DMA-Logik 151 und der Hauptrechnerdeskriptorlogik 150.
Die Übertragung
wird durch die Sende-DMA-Logik 155 durchgeführt. Während des
Verlaufs von Adapteroperationen variieren die Anzahl und der Status
von Deskriptoren im Sendedeskriptor-Ringpuffer 152 gemäß den relativen
Geschwindigkeiten der Hauptrechnerschreib-, -herunterlade- und -übertragungsprozesse.
-
Zwei
Variablen innerhalb der Herunterlade-DMA-Logik 151 helfen,
den Status der Sendedeskriptor-Warteschlange zu beschreiben. ZERO DOWNLOADS
PENDING gibt an, dass keine noch von der Herunterlade-DMA-Logik 151 zum
Herunterladen zu verarbeitenden vollständigen Datenblockdeskriptoren
vorhanden sind. Die Variable ZERO FRAMES RESIDENT gibt an, dass
keine Deskriptoren vorhanden sind, die bereits durch den Herunterladeprozess
verarbeitet wurden, sondern noch zu übertragen sind.
-
Jeder
der drei Prozesse, die den Übertragungsmechanismus
bilden, verwaltet seinen eigenen Satz von Zeigern auf die Deskriptor-Warteschlange.
-
Die
Hauptrechnerdeskriptorlogik 150 erzeugt Zeiger für den Sendedeskriptor-Ringpuffer 152 am Adapterspeicher,
die die aktuelle Position von Hauptrechnerzugriffen zum Schreiben
von Deskriptoren in den Sendedeskriptor-Ringpuffer 152 identifizieren. Diese
Zeiger sind als aktueller Hauptrechnerdeskriptorzeiger CHD und Hauptrechnerschreibzeiger
HW bezeichnet. Der aktuelle Hauptrechnerdeskriptorzeiger CHD zeigt
auf die Basisadresse eines Deskriptors, der gerade geschrieben wird
oder von dem erwartet wird, dass er vom Hauptrechner geschrieben wird.
Der Hauptrechnerschreibzeiger HW zeigt auf die Stelle innerhalb
des aktuellen Deskriptors (auf den vom CHD-Zeiger gezeigt wird),
von dem erwartet wird, dass der Hauptrechner als nächstes in
ihn schreibt. Das heißt,
der HW-Zeiger sagt den Versatz innerhalb des Adressenblocks XMIT
AREA voraus, an dem der Hauptrechner schreiben wird, um den aktuellen
Deskriptor zu vollenden.
-
Die
Herunterlade-DMA-Logik 151 erzeugt 3 Zeiger und ein Pufferauswahlsignal,
während
Herunterladevorgänge
vom Hauptrechnersystem in die Sendedatenpuffer XMIT DATA BUF0 153 und
XMIT DATA BUF1 154 verwaltet werden. Die von der Herunterlade-DMA-Logik 151 erzeugten
Zeiger umfassen den aktuellen Herunterladedeskriptorzeiger CDD,
der auf die Basisadresse eines Deskriptors zeigt, der gerade von
der Bus-Master-Herunterlade-DMA-Logik 151 verarbeitet wird.
Der zweite von der Herunterlade-DMA-Logik erzeugte Zeiger umfasst
den Herunterladedatenzeiger DD, der auf die Stelle innerhalb des
aktuellen Sendedatenpuffers (entweder XMIT DATA BUF0 oder XMIT DATA
BUF1) zeigt, in die der Herunterladeprozess Daten schreibt. Der
dritte von der Herunterlade-DMA-Logik 151 erzeugte Zeiger
umfasst den aktuellen Herunterladepuffer-CDB-Zeiger. Der CDB-Zeiger zeigt auf
den Pufferdeskriptor innerhalb des Sendedeskriptors, auf den durch
den CDD-Zeiger gezeigt wird, in dem sich die Spezifikation des Puffers
im Hauptrechnerspeicher, der der Gegenstand eines aktuellen Herunterladeprozesses
ist, befindet.
-
Die
Herunterlade-DMA-Logik wählt
auch den aktuellen Sendedatenpuffer 153 und 154 aus,
in den die Herunterlade-DMA-Logik Daten in der Bus-Master-Operation überträgt, wie
heuristisch durch das Signal BUF1/0 dargestellt.
-
Die
Sende-DMA-Logik 155 erzeugt drei Zeiger für den Übertragungsprozess.
Diese Zeiger umfassen den aktuellen Sendedeskriptor-CXD-Zeiger, der
auf die Basisadresse des Deskriptors im Sendedeskriptor-Ringpuffer 152 zeigt,
der gerade von der Sendelogik 155 verarbeitet wird. Der
Sendelese-XR-Zeiger gibt die Stelle innerhalb des aktuellen Deskriptors
oder aktuellen Sendedatenpuffers (153 oder 154)
an, von der der Übertragungsprozess
zu übertragende
Daten liest.
-
Der
Zeiger XMIT TAIL (XT) zeigt auf das Hinterende der Warteschlange.
Der XT-Zeiger zeigt
auf einen älteren
Deskriptor im Sendedeskriptor-Ringpuffer 152 als der CSD-Zeiger,
wenn Datenblöcke vorhanden
sind, die die Übertragung
vollendet haben, ihre Statusinformation jedoch noch nicht vom Hauptrechnersystem
gelesen wurde.
-
Das
bevorzugte System arbeitet in zwei Betriebsarten in Bezug auf das
Erzeugen von Hinweisen für
den Hauptrechner über
die Vollendung einer Übertragung.
Die vorangehenden Absätze
beschrieben die Datenstrukturen, die den Hauptrechnerschreib-, Bus-Master-Herunterlade-
und Übertragungsprozessen
zugeordnet sind, wenn eine Variable XMIT COMPLETE ON DOWNLOAD falsch
ist und der Indikator erzeugt wird, wenn die Übertragung vollendet ist, oder
wenn XMIT COMPLETE THRESH (nachstehend beschrieben) erfüllt ist.
Wenn XMIT COMPLETE ON DOWNLOAD wahr ist, ist die Herunterlade-DMA-Logik 151 auch
für das
Verfolgen der Datenblöcke,
für die
der Status nicht gelesen wurde, verantwortlich. In dieser Betriebsart
empfängt
der Hauptrechner den Hinweis für
vollständiges
Senden für
einen Datenblock beim Herunterladen des Datenblocks. Somit ist es
möglich,
dass der Datenblock übertragen
werden kann, bevor der Hauptrechner auf den Hinweis antworten kann.
Diese Bedingung ermöglicht,
dass der Zeiger XMIT TAIL nicht mehr den ältesten nützlichen Eintrag im Deskriptorringpuffer definiert.
Daher ist ein Datenblockstatusprozess erforderlich. Der Datenblockstatuszeiger
FS zeigt auf die Basisadresse des ältesten Deskriptors, für den der
Status noch nicht vom Hauptrechner gelesen wurde, in dieser Betriebsart.
Da der FS-Zeiger mit dem Sendeprozess in Beziehung steht, ist er
heuristisch in der Sende-DMA-Logik 155 in 9 dargestellt.
Beim bevorzugten System ist er jedoch mit der Herunterlade-DMA-Logik 151 logisch
gekoppelt.
-
Die
Sende-DMA wählt
auch den aktuellen Sendedatenpuffer 153 oder 154 aus,
aus dem ein aktueller Sendedatenblock zusammengesetzt wird, wie heuristisch
durch das Signal BUF0/1 angegeben.
-
Die
Schnittstelle zum Adapter ist für
den Hauptrechner zu sehen, als ob sie ein Satz von Registern an
einem im Voraus festgelegten Adressenblock wäre. Die an der Übertragung
beteiligten signifikanten "Register" werden nachstehend
umrissen.
-
A. XMIT AREA
-
Der
Zweck dieses Registers besteht darin, einen Mechanismus für den Hauptrechner
zu schaffen, um den Adapter mit unmittelbaren Daten und einer Datenstruktur,
die definiert, wo sich im Speichersystem des Hauptrechners der Rest
des Datenblocks (falls vorhanden) befindet, zu beliefern. Der Adapter speichert
diese Information im Sendedeskriptorring 152 zur Verwendung,
wenn der beschriebene Datenblock schließlich übertragen werden kann.
-
Der
Adapter verwendet die Adresse, in die die Daten geschrieben werden,
und die Reihenfolge, in der sie geschrieben werden, um zu ermitteln,
was die Daten darstellen. Die Daten müssen unter Verwendung der vorstehend
in Bezug auf 6 beschriebenen Struktur und
Reihenfolge in den Adapter geschrieben werden.
-
Bus-Master-Herunterladevorgänge beginnen,
nachdem ein Deskriptor in XMIT AREA geschrieben wurde und XMIT QUEUE
STATUS (nachstehend beschrieben) vom Hauptrechner gelesen wurde.
-
Sobald
der Hauptrechner die Übertragung der
Sendedeskriptor-Pufferstrukturen in XMIT AREA beendet hat, kann
der Hauptrechner XMIT FRAME LENGTH lesen, um die Anzahl von Bytes
zu ermitteln, die der Hauptrechner als im Sendedatenblock enthalten
festgelegt hat. XMIT QUEUE STATUS sollte dann gelesen werden, um
den CHD-Zeiger vorzuschieben, so dass ein anderer Datenblock in
dieses Register geschrieben werden kann. Nach dem Lesen von XMIT
QUEUE STATUS ist der Inhalt von XMIT FRAME LENGTH undefiniert, bis
XMIT AREA wieder gefüllt
ist.
-
Die
tatsächliche
Datenblockübertragung
auf das Netzwerk beginnt, wenn zwei Bedingungen erfüllt sind:
(1) die Bedingung XMIT START THRESH (nachstehend beschrieben) wurde
erfüllt,
oder wenn XMIT START THRESH Null ist, wenn der ganze Datenblock
in den RAM des Adapters kopiert wurde, und (2) wenn keine vorher
in die Warteschlange gestellten Sendeanforderungen vorhanden sind.
Wenn mehr als XMIT START THRESH Bytes von unmittelbaren Daten in
XMIT AREA geschrieben werden, dann kann die Netzwerkübertragung
beginnen, bevor XMIT QUEUE STATUS gelesen wird.
-
Wenn
dem Adapter die Betriebsmittel von XMIT AREA ausgehen, während der
Hauptrechner Daten in XMIT AREA schreibt, wird an den Hauptrechner
ein Wert von 6 zurückgegeben,
wenn er XMIT QUEUE STATUS liest. Die Schreibvorgänge, die "vor dem Ende" des Speichers geendet haben, schaden
keinen bereits am Adapter in die Warteschlange gestellten Daten.
-
Die
Ziel- und Quellenadressen des Sendedatenblocks müssen explizit für jeden
Sendedatenblock vom Hauptrechner zum Adapter geliefert werden. Diese
Information kann als Teil der unmittelbaren Daten oder, wenn keine
unmittelbaren Daten vorliegen, als erste vierzehn Bytes des im Deskriptor festgelegten
ersten Datenpuffers bereitgestellt werden.
-
Im
Wesentlichen liefert der Hauptrechner jedes Byte des Datenblocks
zwischen dem Start eines Datenblockbegrenzers und der Datenblockprüfsequenz
(CRC) über
das Register XMIT AREA oder eine Herunterlade-DMA-Operation.
-
Obwohl
Daten im Allgemeinen in XMIT AREA in der festgelegten Reihenfolge
geschrieben werden müssen,
existiert eine Ausnahme. XMIT BUFFER COUNT/XMIT IMMED LEN kann umgeschrieben
werden, nachdem die Anfangswerte für diese Felder geschrieben
wurden, und bevor irgendwelche Pufferdeskriptoreinträge geschrieben
wurden.
-
Die
folgenden Einschränkungen
gelten:
- 1. Wenn XMIT BUFFER COUNT/XMIT IMMED LEN
umgeschrieben wird, kann der neue Wert von XMIT IMMED LEN keinen
Wert festlegen, der kleiner ist als die Anzahl von unmittelbaren
Datenbytes, die bereits in XMIT AREA geschrieben sind. Es kann eine
größere Zahl
festlegen. Wenn die Zahl größer ist,
dann sollen die restlichen unmittelbaren Datenbytes (und irgendwelche
Pufferdeskriptoren) geschrieben werden, nachdem der neue Wert XMIT
BUFFER COUNT/XMIT IMMED LEN geschrieben ist.
- 2. Wenn XMIT BUFFER COUNT/XMIT IMMED LEN umgeschrieben wird,
muss die vollständige 32-Bit-Menge
umgeschrieben werden, selbst wenn einer der Werte gleich bleibt.
Die Fähigkeit zum
Umschreiben von XMIT IMMED LEN ist enthalten, um die direkte Bewegung
von Daten von einem Empfangsadapter zum anderen Sendeadapter im
Hauptrechnersystem zu erleichtern.
-
Die
Betriebssequenz ist folgendermaßen:
- 1. Der Empfangsadapter gibt einen frühen Empfangshinweis
an den Hauptrechner.
- 2. Der Hauptrechner richtet bei der Feststellung, dass der Empfangsdatenblock
zum zweiten Adapter weiter übertragen
werden sollte, einen Sendedeskriptor in XMIT AREA für den zweiten
Adapter ein, der einen ganzen unmittelbaren Datenblock mit maximaler
Länge festlegt.
- 3. Der Hauptrechner richtet dann eine Bus-Master-Übertragung
auf dem Empfangsadapter ein, die den Sendeadapter als Ziel der übertragenen Daten
festlegt. Wenn Daten an einem Adapter empfangen werden, werden sie
durch den Empfangsadapter in XMIT AREA des anderen busverarbeitet.
- 4. Wenn der Datenblockempfang endet, ermittelt der Hauptrechner
die Datenblocklänge
und schreibt diesen Wert in das Feld XMIT IMMED LEN des Sendeadapters.
-
B. XMIT COMPLETE THRESH
-
XMIT
COMPLETE THRESH stellt einen frühen
Hinweis auf die Übertragungsvollendung
bereit. (Lesen/Schreiben, 4 Bytes, 1 32-Bit-Wort).
-
Das
Register XMIT COMPLETE THRESH wird verwendet, um die Anzahl von
Sendebytes anzugeben, die entweder zur Übertragung oder zum Herunterladen
zum Adapter (in Abhängigkeit
von der Adapterbetriebsart) verbleiben, bevor der Adapter einen
Hinweis XMIT COMPLETE ausgibt. Nur die Bits 10 bis 0 werden in diesem
Register implementiert. Werte, die größer sind als die maximale Datenblocklänge verhindern,
dass diese Funktion korrekt arbeitet. Das Verfahren zum Deaktivieren
dieser Funktion besteht darin, das Register auf Null zu setzen.
Der Wert in XMIT FRAME LENGTH (siehe nachstehend) wird verwendet,
um festzustellen, wo das Ende des Sendedatenblocks liegt.
-
Wenn
dieser Schwellenwert zu hoch gesetzt wird, dann reagiert der Hauptrechner
auf den Hinweis, bevor der Adapter einen gültigen Sendestatushinweis liefern
kann. Wenn XMIT FRAME STATUS ein ff (hex) zurückgibt, dann sollte XMIT COMPLETE THRESH
eingestellt werden, um den Hinweis geringfügig zu verzögern. Dies wird durch Verringern
des Werts im Register XMIT COMPLETE THRESH bewerkstelligt. Die Funktion
dieses Registers wird während
der Übertragung
der ersten 60 Bytes des Datenblocks deaktiviert. Dieses Register
wird während
eines Rücksetzens
auf 0 gelöscht.
-
C. XMIT FAILURE
-
XMIT
FAILURE gibt die Ursache für
einen Sendefehler zurück.
(Nur Lesen, 4 Bytes, 1 32-Bit-Wort).
-
Dieses
Register gibt die Ursache des Fehlers des Versuchs (der Versuche),
einen in die Warteschlange gestellten Datenblock zu senden, zurück. Ein
von Null verschiedener Wert gibt an, dass der Datenblock während des Übertragungsversuchs
auf ein oder mehrere Fehler getroffen ist.
-
Die
Bits in diesem Register sind folgendermaßen definiert:
Bit
0 | DMA
UNDERRUN |
Bit
1 | LOSS
OF CARRIER SENSE |
Bit
2 | MAX
COLLISIONS |
Bit
3 | SQE
TEST FAILED |
-
Dieses
Register enthält
gültige
Daten ungeachtet des Erfolgs oder Misserfolgs des Versuchs, einen
Datenblock zu senden. Wenn kein Fehler bestand, dann enthält dieses
Register einen Wert von 0 (hex). Der Inhalt dieses Registers ist
gültig,
nachdem der Datenblock die Übertragung
vollendet hat (niedriges Byte von XMIT FRAME STATUS nicht gleich
ff (hex)) und bevor XMIT PROT ID gelesen wird.
-
Wenn
ein Datenunterlauf auftritt, bringt der Adapter einen CRC-Fehler
in den Datenblock während
der Übertragung,
um sicherzustellen, dass der Datenblock als schlechter Datenblock
empfangen wird und von der Zielvorrichtung verworfen wird.
-
D. XMIT FRAME LENGTH
-
XMIT
FRAME LENGTH gibt die Anzahl von zu übertragenden Bytes zurück (Nur
Lesen, 4 Bytes, 1 32-Bit-Wort).
-
Das
Register XMIT FRAME LENGTH gibt die Gesamtzahl von Bytes zurück, die
für die Übertragung
durch den aktuellen Sendedatenblock-Deskriptor, der durch den CXD-Zeiger identifiziert
ist, in die Warteschlange gestellt werden. Dieser Wert ist die Summe
der Anzahl von unmittelbaren Datenbytes und aller Pufferlängenfelder,
die in den Adapter für diesen
Datenblock heruntergeladen werden. Der von diesem Register zurückgegebene
Wert spiegelt nicht die Effekte irgendeiner Füllung des Datenblocks wider,
die vom Adapter durchgeführt
werden kann, wenn der Datenblock weniger als 60 Bytes lang ist.
-
Das
Register XMIT FRAME LENGTH wird gültig, unmittelbar nachdem der
Hauptrechner das letzte Byte in XMIT AREA schreibt, und bleibt bis
zum ersten Schreiben in XMIT AREA nach einem Lesen von XMIT QUEUE
STATUS gültig.
-
E. XMIT FRAME STATUS
-
XMIT
FRAME STATUS gibt die Ergebnisse eines Sendeversuchs zurück. (Nur
Lesen, 4 Bytes, 1 32-Bit-Wort).
-
Die
niedrigstwertigen 16 Bits dieses Registers geben den Status des
Versuchs (der Versuche), einen in die Warteschlange gestellten Datenblock
zu senden, zurück.
Die höchstwertigen
16 Bits geben den XMIT REQ HANDLE für den Datenblock zurück. Ein
Wert von XXXX0000 (hex) (XXXX ist der XMIT REQ HANDLE für diesen
speziellen Datenblock) wird für
eine erfolgreiche Übertragung
zurückgegeben, während XXXX000a
(hex) für
eine misslungene Übertragung
zurückgegeben
wird. XXXX00fe (hex) wird zurückgegeben,
wenn sich der Adapter im Prozess des erneuten Versuchs einer Übertragung
nach einer Kollision befindet. Wenn die Übertragung noch in Gang ist,
gibt XMIT FRAME STATUS ein XXXX00ff (hex) zurück.
-
Wenn
der Datenblock nicht erfolgreich übertragen wurde, ist die spezielle
Ursache für
den Übertragungsfehler
in XMIT FAILURE erhältlich.
Das Lesen von XMIT PROT ID schiebt XMIT FRAME STATUS auf den Status
des nächsten übertragenen
Datenblocks, falls vorhanden, vor. Wenn der "Neuversuchs"-Statuswert zurückgegeben wird, wenn XMIT FRAME
STATUS gelesen wird, dann löscht
das Lesen von XMIT FRAME STATUS auch den Hinweis XMIT COMPLETE.
-
F. XMIT PROT ID
-
XMIT
PROT ID gibt die Protokoll-ID des Sendedatenblocks zurück. (Nur
Lesen, 4 Bytes, 1 32-Bit-Wort).
-
Sobald
der Adapter seine(n) Versuch(e), einen in die Warteschlange gestellten
Datenblock zu senden, vollendet hat und seinen Status aufgestellt hat,
kann XMIT PROT ID vom Hauptrechner als Verfahren zum Identifizieren
des Datenblocks gelesen werden. Der hier zurückgegebene Wert ist derselbe Wert,
der in das Feld XMIT PROT ID während
der Warteschlangeneinreihung des Datenblocks über XMIT AREA geschrieben wurde.
-
Das
Lesen dieses Registers löscht
den Hinweis XMIT COMPLETE, außer
wenn der "Neuversuchs"-Statuswert vom XMIT
FRAME STATUS gelesen wird. Wenn "Neuversuch" gelesen wurde, dann hat
das Lesen von XMIT FRAME STATUS XMIT COMPLETE gelöscht.
-
Der
Wert XMIT PROT ID befindet sich in den oberen 16 Bits des 32-Bit-Registers.
Die niedrigstwertigen 16 Bits dieses Registers geben den in das MACID-Register
geschriebenen MACID-Wert zurück.
Ein Doppelwortlesen gibt beide Werte gleichzeitig zurück.
-
Da
mehrere Datenblöcke
zur Übertragung
in die Warteschlange gestellt werden können, können somit mehrere Übertragungsergebnisse
in die Warteschlange gestellt werden. Das Lesen beider Worte von
XMIT PROT ID schiebt den Vollendungsstatus in XMIT FRAME STATUS,
XMIT FAILURE und XMIT PROT ID auf den Status des nächsten Datenblocks vor,
der die Übertragung
beendet hat, falls vorhanden.
-
G. XMIT QUEUE STATUS
-
XMIT
QUEUE STATUS gibt die Ergebnisse der Warteschlangeneinreihung eines
Sendedatenblocks zurück
(Nur Lesen, 4 Bytes, 1 32-Bit-Wort).
-
Ein
Lesen des Registers XMIT QUEUE STATUS gibt den Status des Versuchs
des Hauptrechners zurück,
einen Sendedatenblock über
XMIT AREA in die Warteschlange zu stellen.
- 2 (hex) – Erfolg:
Wenn die Sendeanforderung erfolgreich in die Warteschlange gestellt
wurde, wird dieser Wert zurückgegeben,
wenn XMIT QUEUE STATUS gelesen wird.
- 6 (hex) – Ausgegangene
Betriebsmittel: Wenn dem Adapter Warteschlangenspeicher-RAM ausgeht, dann
wird ein Status von 6 (hex) zurückgegeben.
- 7 (hex) – Datenblock
zu lang: Wenn die Gesamtzahl von in einem einzelnen Datenblock zu übertragenden Bytes
die maximale Datenblocklänge übersteigt,
gibt dieses Register 7 (hex) zurück.
- a (hex) – Reihenfolgeverletzung:
Wenn die in XMIT AREA geschriebenen Daten außerhalb der Reihenfolge geschrieben
werden, dann wird dieser Fehlercode zurückgegeben.
- ff (hex) – Adapter
nicht bereit: wenn XMIT QUEUE STATUS zu schnell nach der Vollendung
der Schreibvorgänge
in XMIT AREA gelesen wird, ist es möglich, den Statuswert zu lesen,
bevor der Warteschlangenprozess vollständig ist.
-
Das
Lesen dieses Registers schiebt auch XMIT AREA vor, so dass ein weiteres
Senden in die Warteschlange gestellt werden kann. Dieses Register
MUSS gelesen werden, nachdem alle Daten in XMIT AREA geschrieben
wurden und bevor die nächste
Sendeanforderung in XMIT AREA geschrieben wird.
-
Wenn
ein Fehlercode (6 (hex), 7 (hex), a (hex) oder ff (hex)) von XMIT
QUEUE STATUS zurückgegeben
wird, dann wurde der Datenblock nicht in die Warteschlange gestellt
und der Hauptrechner muss versuchen, ihn ein anderes Mal in die
Warteschlange zu stellen. Wenn der Datenblock als zu lang gekennzeichnet
wurde, muss er natürlich
in mehrere Datenblöcke
zerlegt werden, bevor ein weiterer Warteschlangenversuch durchgeführt werden
kann.
-
Wenn
der Code, der einen Erfolg angibt (2 (hex)), zurückgegeben wird, dann kann der
Hauptrechner unmittelbar fortfahren, zu versuchen, einen zusätzlichen
Datenblock in die Warteschlange zu stellen. Die Anzahl von Datenblöcken, die
in die Warteschlange gestellt werden können, hängt von der Menge an RAM am
Adapter, der für
diesen Zweck zugewiesen ist, und von der Menge an unmittelbaren Daten,
die in jedem Datenblock enthalten sind, ab.
-
Wenn
der Hauptrechner versucht, einen Datenblock in die Warteschlange
zu stellen, der zu groß ist
und auch den verfügbaren
freien Raum von TRANSMIT DESCRIPTOR überschreitet, übernimmt der
Fehler, der zuerst auftritt, den Vorrang und wird zum Hauptrechner
zurückgegeben.
-
H. XMIT START THRESH
-
XMIT
START THRESH stellt einen frühen Beginn
der Übertragung
bereit (Lesen/Schreiben, 4 Bytes, 1 32-Bit-Wort).
-
Das
Register XMIT START THRESH wird verwendet, um die Anzahl von Sendebytes
anzugeben, die sich am Adapter befinden müssen, bevor er die Übertragung
beginnt. Nur die Bits 10 bis 0 werden in diesem Register implementiert.
Werte, die größer sind
als die maximale Datenblocklänge
verhindern, dass diese Funktion korrekt arbeitet. Das Verfahren zum
Deaktivieren dieser Funktion besteht darin, das Register auf Null
zu setzen. Bytes werden beginnend mit dem ersten Byte des Zielfeldes
des Sendedatenblocks gezählt.
-
Die
Anzahl von Bytes, die als verfügbar
betrachtet werden, ist die Summe der unmittelbaren Daten, die vom
Hauptrechner in XMIT AREA geschrieben werden, und jener Bytes, die
zu den Sendedatenpuffern im Adapter unter Verwendung von Bus-Master-DMA-Operationen übertragen
werden. Die Sendeanforderung wird unmittelbar, nachdem XMIT START
THRESH Sendedatenblockbytes von den unmittelbaren Daten zur Verfügung gestellt
werden oder wenn der Adapter XMIT START THRESH – XMIT IMMED LEN Bytes auf
dem Adapter busverarbeitet hat, aufgestellt.
-
Die
Anzahl von Bytes, die sich am Adapter befinden, muss gleich dem
oder größer als
der Wert in XMIT START THRESH sein, damit die Übertragung beginnt, wenn nicht
die gesamte Datenblockgröße geringer
ist als XMIT START THRESH. In diesem Fall beginnt der Datenblock
die Übertragung, wenn
der ganze Datenblock in den Adapter kopiert wurde. Die tatsächliche Übertragung
des Datenblocks kann durch vorherige anstehende Sendedatenblöcke und
durch Rückstellungen
am Netzwerkverkehr verzögert
werden. Dieses Register wird während
eines Rücksetzens
auf Null gesetzt.
-
I. ÜBERTRAGUNGSRINGVERWALTUNG
-
10A-10E stellen den Fortschritt
der in der Sendeoperation verwendeten Zeiger dar. In 10A-10E sind ein Teil des Sendedeskriptorrings,
im Allgemeinen 200, und die Sendedatenpuffer 201-0 und 201-1 gezeigt.
Die wie vorstehend erörtert abgekürzten Zeiger
sind auch angegeben.
-
In 10A schreibt die Hauptrechnerdeskriptorlogik einen
ersten Deskriptor in den Sendedeskriptorring 200. Folglich
zeigt der CXD-Zeiger auf die Basisadresse des ersten Deskriptors,
der HW-Zeiger zeigt auf den Versatz von der Basisadresse, auf den erwartet
wird, dass der Hauptrechner das nächste Doppelwort des Deskriptors
schreibt. Die Herunterladezeiger, einschließlich CDD, CDB, zeigen auch
auf die Basisadresse des ersten Deskriptors, da keine Herunterladeoperationen
begonnen haben. Ebenso zeigen die Sendedeskriptoren CXD und XR auf
dieselbe Basisadresse. Schließlich
zeigt das Hinterende des Ring-XT auf den Anfangsdeskriptor. Der
Herunterladedatenzeiger DD zeigt auf die Oberseite eines ersten
Puffers, beispielsweise des Puffers Null.
-
Wie
in 10B dargestellt, hat der erste Deskriptor das
Schreiben vollendet und hat den Herunterladeprozess begonnen und
der Hauptrechner hat das Schreiben eines zweiten Deskriptors begonnen. Folglich
zeigt der Hauptrechnerdeskriptorlogik-Zeiger CHD auf die Basisadresse
des nächsten
Deskriptors und der HW-Zeiger zeigt auf die erwartete Adresse des
nächsten
Bytes. Der Herunterladezeiger CDD zeigt auf die Basisadresse des
ersten Deskriptors. Es wird angenommen, dass die Herunterlade-DMA-Logik sich im
Prozess der Übertragung
von Puffern vom Hauptrechner in den Sendedatenpuffer befindet. Folglich
zeigt der CDB-Zeiger auf einen Deskriptor eines Herunterladepuffers
im ersten Deskriptor und der DD-Zeiger zeigt auf einen Versatz innerhalb
des Sendedatenpuffers, an dem Daten heruntergeladen werden. Keine
Sendeoperationen sollen schon beginnen, da die Schwelle nicht erreicht
wurde. Folglich zeigen die Sendezeiger und der Hinterendzeiger immer
noch auf den ersten Deskriptor.
-
In 10C verarbeitet die Hauptrechnerdeskriptorlogik
einen dritten Deskriptor, die Herunterladelogik verarbeitet den
zweiten Deskriptor und die Sendelogik verarbeitet dem ersten Deskriptor.
Die Hauptrechnerdeskriptorlogik-Zeiger CXD und XR verarbeiten den
ersten Deskriptor. Folglich zeigt der CXD-Zeiger auf die Basisadresse
des ersten Deskriptors und der XR-Zeiger zeigt auf unmittelbare
Daten, die zur Übertragung
durch die Sende-DMA-Logik gelesen werden.
-
Der
Sendelesezeiger XR vollendet das Lesen der unmittelbaren Daten und
bewegt sich dann zum Sendedatenpuffer, der von der Herunterlade-DMA-Logik
gefüllt
wird, wenn der erste Deskriptor verarbeitet wird, wie in 10B dargestellt.
-
Der
Sendehinterendzeiger XT zeigt immer noch auf die Basisadresse des
ersten Deskriptors.
-
Die
Herunterladelogik verarbeitet den zweiten Deskriptor. Folglich zeigt
der CDD-Zeiger auf
die Basisadresse des zweiten Deskriptors, der CDB-Zeiger zeigt auf
einen Pufferdeskriptor innerhalb des zweiten Deskriptors, der DD-Zeiger
zeigt auf einen Versatz innerhalb des zweiten Sendedatenpuffers, zu
dem die Herunterlade-DMA-Logik
Daten vom Hauptrechner überträgt.
-
In 10C schreibt der Hauptrechner einen dritten Deskriptor
in das Register XMIT AREA. Folglich zeigt der CHD-Zeiger auf die
Basisadresse des dritten Deskriptors und der HW-Zeiger zeigt auf
den Versatz, auf den erwartet wird, dass das nächste Byte vom Hauptrechner
geschrieben wird.
-
In 10D hat sich der Prozess weiterbewegt, so dass
der Hauptrechner in einen vierten Deskriptor schreibt. Folglich
zeigt der CHD-Zeiger auf die Basisadresse des vierten Deskriptors
und der HW-Zeiger zeigt auf die erwartete Adresse des nächsten Schreibvorgangs
in das Register XMIT AREA.
-
Die
Herunterladelogik verarbeitet den dritten Deskriptor. Folglich zeigt
der CDD-Zeiger auf die Basisadresse des dritten Deskriptors, der
CDB-Zeiger zeigt auf einen Pufferdeskriptor innerhalb des dritten Deskriptors
und der Herunterladedaten-DD-Zeiger zeigt
auf einen Ort im ersten Datenpuffer, an dem das Herunterladen geschieht.
Diese Operation nimmt an, dass das Senden des ersten Deskriptors
den ersten Datenpuffer zur Verwendung durch die Herunterladelogik
freigegeben hat.
-
Die
Sendelogik verarbeitet den zweiten Deskriptor. Folglich zeigt der
CXD-Zeiger auf die Basisadresse des zweiten Deskriptors und der
XR-Zeiger zeigt auf eine Stelle im Sendedatenpuffer, von der Daten
durch die Sendelogik gelesen werden. Da der Status des ersten Deskriptors
noch zu lesen ist, zeigt der Sendehinterende-XT-Zeiger immer noch
auf die Basisadresse des ersten Deskriptors.
-
In 10E wird angenommen, dass der Prozess so fortgeschritten
ist, dass das Schreiben des vierten Deskriptors vollendet ist, aber
der Hauptrechner mit dem Schreiben neuer Deskriptoren vorübergehend
aufgehört
hat. In diesem Fall zeigen der CHD-Zeiger und der HW-Zeiger auf
die Basisadresse eines fünften
Deskriptors in Erwartung auf weitere Handlungen durch den Hauptrechner.
Es wird angenommen, dass der Herunterladeprozess noch das Herunterladen
des dritten Deskriptors zu vollenden hat. Folglich zeigt der aktuelle
CDD-Zeiger auf die Basisadresse des dritten Deskriptors und der CDB-Zeiger
zeigt auf einen Pufferdeskriptor innerhalb des dritten Deskriptors.
Der DD-Zeiger zeigt auf eine Stelle im Sendedatenpuffer, in die
der Herunterladeprozess Daten herunterlädt.
-
In 10E wird auch angenommen, dass die Übertragung
des durch den zweiten Deskriptor identifizierten Datenblocks beendet
ist und die Sendelogik wartet, bis die Herunterladeoperation an
einem dritten Deskriptor entweder vollständig ist oder ausreichend Daten
heruntergeladen sind, dass die Sendelogik die Übertragung beginnen kann. Folglich zeigen
der CXD- und der XR-Zeiger auf die Basisadresse des dritten Deskriptors.
-
Dieser
Prozess fährt
mit einem automatischen Ringumlauf der vom Adapter behandelten Deskriptoren
fort. Die Unterlaufbedingung wird auch überwacht und entsprechende
Fehlersignale vom Adapter angezeigt.
-
V. Empfangsprozess
-
11 ist
ein heuristisches Diagramm der Hauptrechnerschnittstellenlogik und
der Netzwerkschnittstellenlogik, die an der Empfangsfunktion beteiligt
sind. Die Hauptrechnerschnittstellenlogik umfasst die Hochlade-DMA-Logik 300 und
die Betrachtungslogik 301. Die Hochlade-DMA-Logik 300 ist
mit dem Hauptrechner über
den nachstehend beschriebenen XFER-Adressenblock gekoppelt. Die
Betrachtungslogik 301 ist mit dem Hauptrechner über LOOKBUF
und zugehörige
Adressenblöcke
gekoppelt, die nachstehend beschrieben sind.
-
Die
Netzwerkschnittstellenlogik umfasst die Empfangs-DMA-Logik 302.
Sowohl die Hauptrechnerschnittstellenlogik als auch die Netzwerkschnittstellenlogik
sind mit dem Empfangsringpufferbereich 303 in dem vom Hauptrechner
unabhängigen
Adapterspeicher gekoppelt. Die Hochlade-DMA-Logik 300 ist
auch mit dem Übertragungsdeskriptorbereich 304 innerhalb
des vom Hauptrechner unabhängigen
Adapterspeichers gekoppelt.
-
Diese
Logik ist auch für
das Verwalten des Empfangspufferrings verantwortlich. Folglich sind eine
Vielzahl von Zeigern beteiligt. Die Hochlade-DMA-Logik erzeugt einen
Empfangshinterendzeiger RT, der auf die Basisadresse eines hochgeladenen
Datenblocks zeigt, der auch das Hinterende des Rings ist. Die Ansichtslogik
erzeugt einen aktuellen Datenblockzeiger CF, der auf die Basisadresse
von LOOKBUF im Adapterspeicher oder einen von der Betrachtungslogik 301 betrachteten
Datenblock zeigt.
-
Die
Empfangs-DMA-Logik 302 erzeugt einen aktuellen Empfangszeiger
CR, der auf die Basisadresse eines empfangenen Datenblocks zeigt,
einen Empfangsschreibzeiger RW, der auf eine Stelle zeigt, an der
Daten im aktuellen Datenblock geschrieben werden. Die Empfangs-DMA-Logik 302 erzeugt
auch einen nächsten
Empfangszeiger NR, der auf die Startposition eines nächsten Empfangsdatenblocks während der
Statusaufstellung zeigt.
-
Das
Verständnis
des Empfangsprozesses kann aus einem Verständnis der beteiligten Hauptrechneradressenabbildung
erlangt werden.
-
A. LOOKBUF
-
Das
LOOKBUF-Register wird vom Hauptrechner verwendet, um empfangene
Datenblöcke
zu untersuchen und/oder zu übertragen.
(Nur Lesen, 2036 Bytes, 509 32-Bit-Worte).
-
Der
Hauptrechner kann das LOOKBUF-Register verwenden, um alles eines
Teils eines empfangenen Datenblocks zu untersuchen. Diese Lesevorgänge können von
beliebiger Breite und von beliebiger Reihenfolge sein. LOOKBUF verwendet
die niedrigstwertigen elf Adressenbits des Adressenbusses des Hauptrechners,
um die Bytes, auf die zugegriffen wird, auszuwählen. Der Hauptrechner kann
einen Teil des Datenblocks untersuchen und dann die Bus-Master-Fähigkeiten
der Hochlade-DMA-Logik 300 verwenden,
um den restlichen Teil des Datenblocks zu übertragen. Alternativ kann
der Hauptrechner sowohl den Datenblock untersuchen als auch den
Inhalt unter Verwendung von Speicherbewegungsbefehlen zum Hauptrechnerspeicher übertragen.
-
Die
empfangenen Datenblöcke
sind immer auf LOOKBUF ausgerichtet, so dass das Zieladressenfeld
am Byte Null des Registers beginnt. Der Hauptrechner kann nichts über das
Datenlesen jenseits des Endes des aktuellen Datenblocks annehmen.
Für den
nächsten
Empfangsdatenblock wird nicht garantiert, dass er dort ist. Der
Hauptrechner muss einen Schreibvorgang in RCV DONE verwenden, um
LOOKBUF auf den nächsten
Empfangsdatenblockpuffer vorzuschieben.
-
B. RCV BYTES AVAIL
-
RCV
BYTES AVAIL gibt die Anzahl von gültigen Bytes in LOOKBUF zurück. (Nur
Lesen, 4 Bytes, 1 32-Bit-Wort).
-
Dieses
Register stellt einen laufenden Zählwert der Anzahl von Bytes
bereit, die für
den aktuellen Datenblock empfangen wurden. Der Maximalwert, auf
den dieses Register zählen
kann, ist durch den Wert eines Registers RCV MAX AVAIL (nicht weiter
beschrieben) begrenzt.
-
Wenn
sie als Bytes gelesen werden, speichert das Register den Wert der
Bits 10 bis 8, wenn die Bits 7 bis 0 gelesen werden. Dies stellt
die Integrität
des Lesens dieses dynamischen Registers sicher.
-
C. RCV DONE
-
RCV
DONE ermöglicht,
dass LOOKBUF zum nächsten
Datenpuffer weitergeht. (Nur Schreiben, 4 Bytes, ein 32-Bit-Wort).
-
Ein
Schreiben eines willkürlichen
Werts in das niedrigstwertige Byte dieses Registers bewirkt, dass
LOOKBUF zum nächsten
Empfangsdatenblock (falls vorhanden) vorgeht. RCV BYTES AVAIL, RCV FRAME
SIZE und RCV FRAME STATUS werden alle ähnlich aktualisiert.
-
Der
Datenblock, der sich zu dem Zeitpunkt, zu dem in RCV DONE geschrieben
wurde, in LOOKBUF befand, kann nicht in LOOKBUF wiederhergestellt
werden. Der Adapter bewahrt den Datenblock sowohl in seinem internen
Empfangspuffer als auch in LOOKBUF, bis schließlich in RCV DONE geschrieben
wird. Obwohl die Daten in LOOKBUF nicht mehr sichtbar sind, sobald
in RCV DONE geschrieben wird, enden irgendwelche Datenübertragungen,
die durch Schreiben in XFER AREA eingeleitet wurden, erfolgreich.
Die Daten des empfangenen Datenblocks werden bewahrt, bis die Datenübertragung endet.
-
D. RCV FRAME SIZE
-
RCV
FRAME SIZE gibt die Größe des aktuellen
Empfangsdatenblocks zurück.
(Nur Lesen, 4 Bytes, 1 32-Bit-Wort).
-
RCV
FRAME SIZE gibt die Größe (in Bytes) des
aktuellen Empfangsdatenblocks in den unteren 16 Bits und den MACID-Wert
in den oberen 16 Bits zurück.
Der Längenwert
wird nicht aufgestellt und ist daher ungültig, bis der Adapter den Empfang
des Datenblocks vollendet hat. Während
sich der Adapter im Prozess des Empfangens des Datenblocks befindet, gibt
das Register XXXX0000 (hex) zurück,
wobei XXXX der MACID-Wert ist, der in das MACID-Register geschrieben
wurde.
-
Dieser
Längenwert
bleibt gültig,
bis der Hauptrechner in RCV DONE schreibt. Wenn ein RCV DONE ausgegeben
wird, kehren die niedrigstwertigen 16 Bits von diesem Register auf
0 (hex) zurück. Der
Längenwert
wird durch Zählen
aller Bytes vom ersten Byte des Zieladressenfeldes bis zum letzten Byte
des Datenfeldes einschließlich
berechnet.
-
Wenn
ein Hinweis für
den Hauptrechner erzeugt wird, bevor der ganze Datenblock empfangen ist,
wird die Größe des Datenblocks
in diesem Register bei der Vollendung des Datenblockempfangs ungeachtet
des Endstatus des empfangenen Datenblocks aufgestellt. Das Register
RCV FRAME STATUS sollte untersucht werden, um festzustellen, ob der
Datenblock ohne Fehler empfangen wurde. Dieses Register kann einen
falschen Wert für
Datenblöcke
enthalten, die mit Fehlern empfangen werden (wie z.B. OVERSIZED
FRAME).
-
E. RCV FRAME STATUS
-
RCV
FRAME STATUS gibt den Status des aktuellen Empfangsdatenblocks zurück. (Nur
Lesen, 4 Bytes, 1 32-Bit-Wort).
-
RCV
FRAME STATUS gibt den Zustand des aktuellen Empfangsdatenblocks
zurück.
Dieser Status wird nicht aufgestellt und ist daher ungültig, bis der
Adapter den Empfang des Datenblocks vollendet hat.
-
Die
Bits in diesem Register sind folgendermaßen definiert:
Bit
0 | DMA
OVERRUN |
Bit
1 | ALIGNMENT
ERROR |
Bit
2 | BAD
CRC |
Bit
3 | RUNT
FRAME |
Bit
4 | OVERSIZED
FRAME |
-
Der
Inhalt dieses Registers wird unmittelbar nach der Vollendung des
Empfangsprozesses gültig und
bleibt gültig,
bis der Hauptrechner in RCV DONE schreibt. Wenn der Adapter dazu
ausgelegt ist, die Datenblockdaten zum Hauptrechner zu übertragen, wenn
er empfangen wird, und der Datenblock mit einem Fehler empfangen
wird, bricht der Adapter die Bus-Master-DMA-Sequenz ab und führt einen
Fehlercode an den Hauptrechner hinsichtlich der Vollendung der Übertragung
zurück.
Der Hauptrechner kann zu diesem Zeitpunkt RCV FRAME STATUS lesen,
um festzustellen, ob der Datenblock tatsächlich fehlerhaft war.
-
Im
Fall eines Empfangsfehlers und wenn der Adapter entweder dazu ausgelegt
ist, schlechte Datenblöcke
zu empfangen, oder er aktiviert wird, um Datenblöcke während des Empfangs zu übertragen, muss
der Hauptrechner in RCV DONE schreiben, um den Empfangspuffer am
Adapter freizugeben.
-
Wenn
der Adapter einen Hinweis EARLY RCV erzeugt oder das Register LENGTH
LEFT THRESH einen Hinweis RCV COMPLETE verursacht, empfängt der
Adapter den Datenblock und stellt den Empfangsstatus ungeachtet
dessen auf, ob der Datenblock mit Fehlern empfangen wurde oder nicht,
selbst wenn der Adapter nicht dazu ausgelegt ist, schlechte Datenblöcke zu empfangen.
In diesem Fall muss ein Schreiben in RCV DONE stattfinden, um den
Empfang zu bestätigen
und den Datenblock zu verwerfen.
-
Das
Lesen dieses Registers bestätigt
RCV COMPLETE.
-
F. XFER AREA
-
Das
Register XFER AREA wird verwendet, um den Adapter mit Pufferzeigern
für die Übertragung
von empfangenen Datenblöcken
zu beliefern. (Nur Schreiben, 1024 Bytes, 256 32-Bit-Worte).
-
Der
Zweck dieses Registers besteht darin, dem Adapter mitzuteilen, wohin
im Hauptrechnerspeichersystem der "aktuelle" Empfangsdatenblock übertragen werden sollte. Dies
wird durch Schreiben von einem oder mehreren Sätzen von Zeigern in dieses
Register durchgeführt.
-
XFER
AREA ist ein Nur-Schreib-Register, das die niedrigstwertigen elf
Bits des Adressenbusses des Hauptrechners verwendet, um die Funktion von
jedem Parameter zu bestimmen. Die Übertragungsspezifikation muss
unter Verwendung der Struktur von 6 in XFER
AREA geschrieben werden.
-
Die
tatsächliche
Datenübertragung
wird durch Lesen von XFER QUEUE STATUS eingeleitet. Wenn der Adapter
die Übertragungsanforderung
annehmen konnte, ohne dass der RAM ausgeht, dann beginnt der Adapter
die Übertragung
von Daten zum Speicher des Hauptrechners. Wenn dem Adapter Speicher
in seinem Übertragungswarteschlangenpuffer
ausgeht, werden irgendwelche zusätzlichen Schreibvorgänge in XFER
AREA ignoriert. Der Hauptrechner muss irgendwelche abgelehnten Übertragungsanforderungen
erneut übermitteln.
-
Der "aktuelle" Empfangsdatenblock
ist als derjenige Empfangsdatenblock definiert, der derzeit für den Hauptrechner über LOOKBUF
zur Verfügung steht.
Empfangsdatenblöcke
werden in derselben Reihenfolge behandelt, in der sie vom Netzwerk empfangen
werden. Sobald er vom Hauptrechner verworfen wird, kann ein empfangener
Datenblock weder untersucht werden noch kann eine Übertragung
für ihn
eingerichtet werden.
-
Empfangene
Datenblöcke
werden durch Schreiben in RCV DONE entsorgt. Bis dieses Schreiben
stattfindet, bleibt der aktuelle Datenblock in LOOKBUF und kann
zum Hauptrechner eine unbegrenzte Anzahl von Malen übertragen
werden. Sobald er entsorgt ist, kann der Datenblock nicht untersucht
oder übertragen
werden. Die Entsorgung geschieht unmittelbar, wenn keine Übertragung
in Gang ist. Wenn eine Übertragung
in Gang ist, dann geschieht die Entsorgung des Datenblocks bis zur
Vollendung der Übertragung
nicht.
-
G. XFER COMPLETE THRESH
-
XFER
COMPLETE THRESH liefert einen frühen
Hinweis auf eine vollendete Übertragung
auf der Basis von zur Übertragung übrigen Bytes.
(Lesen/Schreiben, 4 Bytes, 1 32-Bit-Wort).
-
Das
Register XFER COMPLETE THRESH wird verwendet, um die Anzahl von
Bytes vom Ende des Datenblocks, die zum Hauptrechner durch den Adapter übertragen
werden müssen,
bevor er einen Hinweis XFER COMPLETE für den Hauptrechner erzeugt,
festzulegen. Wenn die Anzahl von zur Übertragung verbleibenden Bytes
gleich dem oder geringer als der Wert in XFER COMPLETE THRESH ist,
wird der Hinweis XFER COMPLETE gesetzt (wenn er nicht maskiert ist).
Nur die Bits 10 bis 0 werden in diesem Register implementiert. Werte,
die größer sind als
die maximale Datenblocklänge,
verhindern jedoch, dass diese Funktion korrekt arbeitet. Das bevorzugte
Verfahren zum Deaktivieren dieser Funktion besteht darin, das Register
auf Null zu setzen.
-
Wenn
die Bedingung XFER COMPLETE THRESH erfüllt ist, während der übertragene Datenblock immer
noch empfangen wird, wird XFER COMPLETE unterdrückt, bis der Datenblock empfangen ist.
Wenn XFER COMPLETE auf diese Weise unterdrückt wird, setzt LENGTH LEFT
THRESH den Wert in diesem Register außer Kraft und wird verwendet, um
einen frühen
Hinweis XFER COMPLETE zu erzeugen.
-
Wenn
der Datenblock vollständig
empfangen ist, wenn die Übertragung
eingeleitet wird, dann ist die Übertragungslänge das
Geringere der tatsächlichen
Datenblocklänge
und der Anzahl von Bytes, die zur Übertragung über XFER AREA angefordert werden.
Wenn der Datenblock immer noch empfangen wird, wenn die Übertragung
eingeleitet wird, dann wird angenommen, dass seine Länge der
Wert des Längenfeldes
plus 14 ist. Wenn der Wert des Längenfeldes
größer ist
als 1500, aber nicht gleich 8137 (hex) (d.h. ein Identifikator eines
speziellen Datenblocktyps), dann wird angenommen, dass die Datenblocklänge 1500
Bytes ist. Wenn das Längenfeld 8137
(Hex) enthält,
dann wird schließlich
angenommen, dass das Byte 17 und 18 des Empfangsdatenblocks den
Längenwert
des Datenblocks enthalten. Diese angenommene Länge wird, wenn der Datenblock
vollständig
empfangen ist, auf das Geringere der tatsächlichen Datenblockgröße und der
Anzahl von Bytes, deren Übertragung
angefordert wird, geändert.
-
Dieser
Wert kann vom Hauptrechner abgestimmt werden, wenn er bestimmt,
wie häufig
er zu früh
auf den Hinweis auf eine vollständige Übertragung
antwortet, gegen das, wie häufig
er spät
oder rechtzeitig ankommt. Wenn der Hauptrechner zu früh antwortet,
gibt XFER STATUS ff (hex) zurück,
das angibt, dass der Status undefiniert ist und dass die Übertragung
bald beendet wird. Dieses Register wird während einer Rücksetzung
auf 0 gesetzt.
-
H. XFER STATUS
-
XFER
STATUS gibt den Status einer Empfangsdatenblockübertragung zurück. (Nur
Lesen, 4 Bytes, 1 32-Bit-Wort).
-
Das
Lesen dieses Registers gibt den Status des Empfangsdatenblock-Übertragungsversuchs zurück. Die
möglichen
Rückgabewerte
sind 0 (hex) für Erfolg,
a (hex) für
Fehler und ff (hex) für
unbekannt. XFER STATUS wird auf ff (hex) gesetzt, während eine Übertragung
in Gang ist. Übertragungsfehler können durch übermäßige Wartezustände, die
auf dem Hauptrechnerbus angetroffen werden, oder dadurch, dass der
Empfangsdatenblock fehlerhaft ist, verursacht werden. Das Lesen
dieses Registers bestätigt
XFER COMPLETE in einem Register INDICATION REASON (setzt es zurück).
-
VI. Unterbrechungs- und Hinweislogik
-
Unterbrechungen
werden vom Netzwerkadapter erzeugt, um den Hauptrechner darauf hinzuweisen,
dass asynchrone Ereignisse die Aufmerksamkeit des Hauptrechners
verdienen. Bei einem Ausführungsbeispiel
verwendet der Netzwerkadapter eine gemeinsam genutzte EISA-Unterbrechungskonstruktion
mit offenem Kollektor und Ebenenabtastung. Bei der EISA-Konstruktion
muss der Netzwerkadapter eine Unterbrechung aktivieren und die Aktivierung
des Signals aufrechterhalten, bis die Ursache der Unterbrechung
vom Hauptrechner abgearbeitet wurde. Mehrere Netzwerkadapter können dieselbe
Unterbrechungsleitung aktivieren. Die Unterbrechungsleitung bleibt
aktiviert, bis alle Netzwerkadapter ihre Unterbrechungsaktivierung
aufheben.
-
Vor
dem Verlassen der Unterbrechungsdienstroutine sollte der Hauptrechner
erneut die Netzwerkadapter-Statusregister prüfen. Die Register können darauf
hinweisen, dass andere asynchrone Netwerkadapterereignisse während der
Unterbrechungsdienstroutine aufgetreten sind.
-
Bei
einem Ausführungsbeispiel
der vorliegenden Erfindung befinden sich die folgenden Register
im Unterbrechungssteuereinheitsmodul 60 von 4 und
werden verwendet, um für
den Hauptrechnerprozessor Unterbrechungen und/oder Hinweise auf
Netzwerkadapterereignisse zu erzeugen. Viele der Register sind für einen
Hauptrechnerprozessor zugänglich,
der die Erzeugung von Hinweisen und Unterbrechungen durch Schreiben
in Maskenregister aktivieren und/oder deaktivieren kann.
-
A. INT REASON
-
Wenn
auf eine Unterbrechung geantwortet wird, kann der Hauptrechner das
Register INT REASON lesen, das verwendet wird, um dem Hauptrechner
die Ursache aller anstehenden Unterbrechungen anzugeben. Die Bits
5 bis 1 werden in diesem Register implementiert. Das Bit 0 wird
auf Null gesetzt. Dies ermöglicht,
dass eine Verteilungstabelle von 16-Bit-Versätzen verwendet wird, um die
anstehenden Unterbrechungen zu verarbeiten. Alle Bits in diesem
Register hängen
von dem in der INDICATION MASK und INT MASK gespeicherten Wert ab, während einige
Bits (RCV COMPLETE, EALRY RCV und OTHER INT) von INDICATION COUNTER
abhängen.
-
Die
Bits in diesem Register sind folgendermaßen definiert:
Bit
1 | XMIT
COMPLETE |
Bit
2 | RCV
COMPLETE |
Bit
3 | EARLY
RCV |
Bit
4 | XFER
COMPLETE |
Bit
5 | OTHER
INT |
-
Jedes
dieser Bits besitzt dieselbe Definition und denselben Zweck wie
die Bits in INDICATION REASON, das nachstehend beschrieben wird.
-
Keine
der Unterbrechungsquellen am Netzwerkadapter wird durch Lesen von
INT REASON bestätigt.
Jede Quelle der Unterbrechungen muss individuell auf eine Weise
bestätigt
werden, die für
die Art von Unterbrechung spezifisch ist. Im Allgemeinen ist der
Bestätigungsmechanismus
ein Teil des normalen Statussammelprozesses und erlegt dem Hauptrechnerprozessor
keinen zusätzlichen
Mehraufwand auf. Unterbrechungen werden durch den Hauptrechner, der
für die
Unterbrechung spezifische Handlungen ausführt, bestätigt. Diese Handlungen sind
folgendermaßen:
XMIT
COMPLETE wird durch Lesen von XMIT PROT ID bestätigt.
RCV COMPLETE wird
durch Lesen von RCV FRAME STATUS bestätigt.
EARLY RCV wird durch
Lesen von RCV BYTES AVAIL bestätigt.
XFER
COMPLETE wird durch Lesen von XFER STATUS bestätigt.
OTHER INT wird durch
Bestätigen
der verschiedenen im Register OTHER INT gezeigten Unterbrechungshinweise
bestätigt.
-
B. OTHER INT
-
Das
Register OTHER INT wird verwendet, um dem Hauptrechner die Ursache
von verschiedenen vermischten anstehenden Unterbrechungen anzugeben.
Nur die Bits 1 bis 4 werden in diesem Register implementiert. Das
Bit 0 ist immer auf NULL gesetzt, um die Verwendung einer Verteilungstabelle von
16-Bit-Versätzen
zu ermöglichen.
-
Das
Hinweisbit OTHER INT wird in INT REASON gesetzt, wenn irgendwelche
der Hinweisquellen in diesem Register gesetzt sind.
-
Die
Bits in diesem Register sind folgendermaßen definiert.
Bit
1 | REQUESTED
INT |
Bit
2 | XMIT
UNDERRUN |
Bit
3 | STATISTICS
UPDATE |
Bit
4 | XMIT
RESOURCES AVAILABLE |
-
Das
Bit REQUESTED INT wird gesetzt, wenn eine Unterbrechung aufgrund
dessen, dass der Hauptrechner in INT REQUEST schreibt, erzeugt wird.
Diese Unterbrechung wird durch Lesen von INT REQUEST bestätigt.
-
Das
Bit XMIT UNDERRUN wird gesetzt, wenn eine Unterbrechung erzeugt
wird, da ein Sendeunterlauffehler aufgetreten ist. Diese Unterbrechung
weist darauf hin, dass die Rate von Daten, die vom Hauptrechner
zum Adapter übertragen
wurden, langsamer war als die Rate von Daten, die vom Adapter zum
Netzwerk übertragen
wurden. Die Unterbrechung XMIT UNDERRUN kann verwendet werden, um
einen geeigneten Wert in XMIT START THRESH zu programmieren. Dieses
Bit wird ungeachtet des Werts vom XMIT REQ HANDLE, der in XMIT AREA
geschrieben ist, gesetzt. Die Unterbrechung wird durch Lesen von
XMIT START THRESH bestätigt.
Der Bithinweis STATISTICS UPDATE tritt auf, wenn das höchstwertige
Bit (Bit 31) einer durch den Adapter verwalteten Statistik von Null
auf eine Eins übergeht.
STATISTICS UPDATE wird durch Löschen
von STATISTICS COLLECTION EN in der Adapterbetriebsart bestätigt.
-
Der
Hinweis XMIT RESOURCES AVAILABLE wird gesetzt, wenn Betriebsmittel
innerhalb des TRANSMIT DESCRIPTOR BUFFER AREA des Netzwerkadapters
freigegeben wurden. Dieser Hinweis wird durch Schreiben in XMIT
AREA bestätigt.
-
C. INT MASK
-
Das
Register INT MASK wird verwendet, um zu verhindern, dass die Hinweisquellen,
die in INDICATION REASON und OTHER INDICATION gesetzt werden, in
INT REASON und OTHER INT gesetzt werden. Dies verhindert, dass die
Hinweisquellen tatsächlich
verursachen, dass der Adapter die Unterbrechungsleitung zum Hauptrechner
aktiviert. Beim vorliegenden Ausführungsbeispiel werden nur die Bits
6 bis 1 in diesem Register implementiert, während ein Register unter Verwendung
eines einzelnen Bits oder von n Bits bei anderen Ausführungsbeispielen
verwendet werden kann, um eine einzelne oder n Hinweisquellen zu
maskieren. Das Bit 0 wird dauerhaft auf Null gesetzt. Individuelle
Hinweisquellen werden durch Setzen der entsprechenden Maskenbits auf
1 maskiert. Die Bits sind innerhalb des Registers folgendermaßen eingerichtet:
Bit
1 | XMIT
COMPLETE |
Bit
2 | RCV
COMPLETE |
Bit
3 | EARLY
RCV |
Bit
4 | XFER
COMPLETE |
Bit
5 | REQUEST
INT |
Bit
6 | XMIT
UNDERRUN |
-
Hinweisquellen,
die durch Einträge
in diesem Register maskiert werden, verhindern, dass die entsprechenden
Bits in INT REASON und OTHER INT gesetzt werden. Dieses Register
beeinflusst nicht, welche Bits in INDICATION REASON oder OTHER INDICATION
gesetzt werden können.
Während
eines Rücksetzens
werden alle Bits im aktiven Teil des Registers auf 1 gesetzt, wenn
das Bit 10 von RESET MASK gelöscht
ist.
-
Das
Maskieren einer Unterbrechung ist nicht dasselbe wie das Maskieren
eines Hinweises. Wenn eine Unterbrechung maskiert wird, aber der
Hinweis nicht maskiert wird, können
die Unterbrechungshinweisbits immer noch in INDICATION REASON gesetzt
werden, aber die Unterbrechungen, die maskiert werden, werden nicht
aktiviert, um den Hauptrechner zu unterbrechen.
-
D. INDICATION REASON
-
Wie
bei INT REASON kann der Hauptrechner das Register INDICATION REASON
lesen, wenn er auf eine Unterbrechung antwortet. Das Register wird
verwendet, um dem Hauptrechner die asynchronen Netzwerkadapterereignisse
anzugeben, die die Unterbrechung verursacht haben können oder
nicht. Nur die Bits 5 bis 1 werden in diesem Register implementiert.
Das Bit 0 ist auf Null gesetzt. Dies ermöglicht, dass eine Verteilungstabelle
von 16-Bit-Versätzen
verwendet wird, um die anstehenden Unterbrechungen zu verarbeiten.
Alle Bits in diesem Register hängen
von dem in INDICATION MASK und INT MASK gespeicherten Wert ab, während einige
Bits (RCV COMPLETE, EARLY RCV und OTHER INT) von INDICATION COUNTER
abhängen.
-
Die
Bits in diesem Register sind folgendermaßen definiert:
Bit
1 | XMIT
COMPLETE |
Bit
2 | RCV
COMPLETE |
Bit
3 | EARLY
RCV |
Bit
4 | XFER
COMPLETE |
Bit
5 | OTHER
INDICATION |
-
Jedes
von diesen Bits besitzt dieselbe Definition und denselben Zweck
wie die Bits in INT REASON, das vorstehend beschrieben ist.
-
E. OTHER INDICATION
-
Das
Register OTHER INDICATION hat exakt dasselbe Format wie OTHER INT.
Der Unterschied zwischen den zwei Registern besteht darin, dass
irgendein in OTHER INT gesetztes Bit eine Unterbrechung auf dem
EISA-Bus verursacht, während
das OTHER INDICATION verwendet wird, um nur dem Hauptrechner verschiedene
vermischte Netzwerkadapterereignisse anzugeben. Nur die Bits 1 bis
4 werden in diesem Register implementiert. Das Bit 0 ist immer auf
NULL gesetzt. Dies ermöglicht
die Verwendung einer Verteilungstabelle von 16-Bit-Versätzen.
-
Das
Bit OTHER INDICATION wird in INDICATION REASON gesetzt, wenn irgendwelche
der Hinweisquellen in diesem Register gesetzt sind.
Bit
1 | REQUESTED
INT |
Bit
2 | XMIT
UNDERRUN |
Bit
3 | STATISTICS
UPDATE |
Bit
4 | XMIT
RESOURCES AVAILABLE |
-
Das
Bit REQUESTED INT wird gesetzt, wenn eine Unterbrechung aufgrund
dessen, dass der Hauptrechner in INT REQUEST schreibt, erzeugt wird.
Diese Unterbrechung wird durch Lesen von INT REQUEST bestätigt.
-
Das
Bit XMIT UNDERRUN wird gesetzt, wenn eine Unterbrechung erzeugt
wird, da ein Sendeunterlauffehler aufgetreten ist. Diese Unterbrechung
weist darauf hin, dass die Rate von Daten, die vom Hauptrechner
zum Adapter übertragen
werden, langsamer war als die Rate von Daten, die vom Adapter zum
Netzwerk übertragen
werden. Die Unterbrechung XMIT UNDERRUN kann verwendet werden, um
einen geeigneten Wert in XMIT START THRESH zu programmieren. Dieses
Bit wird ungeachtet des Werts von XMIT REQ HANDLE, der in XMIT AREA
geschrieben wird, gesetzt. Diese Unterbrechung wird durch Lesen
von XMIT START THRESH bestätigt.
-
Der
Bithinweis STATISTICS UPDATE tritt auf, wenn das höchstwertige
Bit (Bit 31) einer vom Adapter verwalteten Statistik von Null auf
eine Eins übergeht.
STATISTICS UPDATE wird durch Löschen von
STATISTICS COLLECTION EN in der Adapterbetriebsart bestätigt.
-
Der
Hinweis XMIT RESOURCES AVAILABLE wird gesetzt, wenn Betriebsmittel
innerhalb des TRANSMIT DESCRIPTOR BUFFER AREA des Netzwerkadapters
freigegeben wurden. Dieser Hinweis wird durch Schreiben in XMIT
AREA bestätigt.
-
F. INDICATION MASK
-
INDICATION
MASK besitzt eine Struktur, die zu INT MASK identisch ist, und eine
Funktion, die dazu ähnlich
ist. Das Register INDICATION MASK wird verwendet, um zu verhindern,
dass gewisse Quellen von Hinweisen innerhalb INDICATION REASON und
OTHER INDICATION gesetzt werden. Beim vorliegenden Ausführungsbeispiel
werden nur die Bits 6 bis 1 in diesem Register implementiert, während ein
Register unter Verwendung eines einzelnen Bits oder von n Bits bei
anderen Ausführungsbeispielen
verwendet werden kann, um eine einzelne oder n Hinweisquellen zu
maskieren. Das Bit 0 ist dauerhaft auf Null gesetzt. Individuelle
Hinweisquellen werden durch Setzen der entsprechenden Maskenbits
auf eine 1 maskiert. Die Bits sind innerhalb des Registers folgendermaßen eingerichtet:
Bit
1 | XMIT
COMPLETE |
Bit
2 | RCV
COMPLETE |
Bit
3 | EARLY
RCV |
Bit
4 | XFER
COMPLETE |
Bit
5 | REQUESTED
INT |
Bit
6 | XMIT
UNDERRUN |
-
Hinweisquellen,
die durch dieses Register deaktiviert werden, setzen keine Bits
innerhalb INDICATION REASON, OTHER INDICATION, INT REASON und auch
nicht OTHER INT. Während
eines Rücksetzens
werden alle Bits im aktiven Teil dieses Registers auf 1 gesetzt,
wenn das Bit 10 von RESET MASK gelöscht ist.
-
G. INDICATION COUNTER
-
INDICATION
COUNTER wird verwendet, um den Wert des internen Hinweiszählers zu
bestimmen. Der interne Hinweiszähler
entlastet den Hauptrechnertreiber vom Erfordern einer zusätzlichen
Software, um die Aktivierung und Deaktivierung von Unterbrechungen
in mehreren Hauptrechnersubroutinen zu verfolgen, die erfordern,
dass Unterbrechungen deaktiviert werden. Das Lesen dieses Registers
hat keine Auswirkung auf den Wert von INDICATION COUNTER. Das Schreiben
in INDICATION OFF und INDICATION ON inkrementiert bzw. dekrementiert INDICATION
COUNTER.
-
Der
interne Zähler
ist ein 8-Bit-Zähler,
der auf einen Zählwert
von ff (hex) begrenzt wird, bis er dekrementiert wird. Die Anzahl
von Schreibvorgängen in
INDICATION OFF sollte die Anzahl von Schreibvorgängen in INDICATION ON nicht
um mehr als 255 übersteigen.
Der INDICATION COUNTER wird auch auf 00 (hex) begrenzt, wenn die
Anzahl von Schreibvorgängen
in INDICATION ON die Anzahl von Schreibvorgängen in INDICATION OFF übersteigt. Es
wird garantiert, dass INDICATION COUNTER auf 0 gesetzt wird, indem
255 Schreibvorgänge
in INDICATION ON durchgeführt
werden.
-
Ein
von Null verschiedener INDICATION COUNTER verhindert, dass alle
Hinweisquellen außer
XMIT COMPLETE, XFER COMPLETE und XMIT UNDERRUN in INDICATION REASON,
OTHER INDICATION, INT REASON und OTHER INT gesetzt werden.
-
H. INDICATION OFF
-
Ein
Schreiben eines willkürlichen
Werts in das niedrigstwertige Byte von INDICATION OFF verursacht,
dass der Wert INDICATION COUNTER des Netzwerkadapters um 1 inkrementiert
wird.
-
Nur
das niedrigstwertige Byte dieses Registers ist aktiv, Schreibvorgänge in die
höchstwertigen drei
Bytes werden ignoriert. Während
eines Rücksetzens
wird der Wert INDICATION COUNTER auf Null gesetzt, wenn das Bit
10 von RESET MASK gelöscht ist.
-
I. INDICATION ON
-
Ein
Schreiben eines willkürlichen
Werts in das niedrigstwertige Byte dieses Registers bewirkt, dass
der Wert INDICATION COUNTER des Adapters um 1 dekrementiert wird.
Nur das niedrigstwertige Byte dieses Registers ist aktiv. Schreibvorgänge in die
höchstwertigen
drei Bytes werden ignoriert. Während
eines Rücksetzens
wird INDICATION COUNTER auf Null gesetzt, wenn das Bit 10 von RESET MASK
gelöscht
ist.
-
J. RCV INDICATE
-
Das
Register RCV INDICATE stellt ein zweckmäßiges Mittel für den Hauptrechnertreiber
bereit, um Hinweise nach der Behandlung von Datenblockempfängen sowie
einige andere Hinwiese automatisch erneut zu aktivieren. Da die
meisten Hauptrechnertreiber nicht ermöglichen, dass in die Datenblockempfangs-Subroutine
erneut eingetreten wird, muss der Treiber normalerweise RCV COMPLETE durch
Inkrementieren von INDICATION COUNTER durch Schreiben in INDICATION
OFF maskieren, bevor die Datenblockempfangs-Subroutine aufgerufen wird. Nachdem
das Protokoll von der Datenblockempfangs-Subroutine zurückgekehrt ist, schreibt der Treiber
in RCV DONE, um den aktuellen Datenblock fallen zu lassen.
-
Die
aktuelle Architektur des Netzwerkadapters erspart dem Hauptrechnertreiber,
dass er explizit INDICATION COUNTER dekrementieren muss. Wenn das
Register RCV INDICATE einen von Null verschiedenen Wert enthält, wenn
der Hauptrechnertreiber in RCV DONE schreibt, dann wird INDICATION
COUNTER automatisch dekrementiert, wobei der Hinweis RCV COMPLETE
demaskiert wird.
-
Wenn
jedoch der Hauptrechnertreiber will, dass RCV COMPLETE nach dem
Schreiben in RCV DONE maskiert bleibt, muss der Treiber RCV INDICATE
vor dem Schreiben in RCV DONE löschen. Das
Löschen
von RCV INDICATE sperrt den Adapter am automatischen Dekrementieren
des INDICATION COUNTER, wenn der Treiber in RCV DONE schreibt.
-
Dieses
Register wird verwendet, wenn die Software des Hauptrechnertreibers
keine expliziten Befehle zum Schreiben in INDICATION ON und INDICATION
OFF durchführen
will. Damit INDICATION COUNTER automatisch dekrementiert wird, wenn
in RCV DONE geschrieben wird oder INT REQUEST gelesen wird, muss
der Hauptrechner zuerst sicherstellen, dass RCV INDICATE auf einen
von Null verschiedenen Wert gesetzt ist. Während jedes Schreibens in RCV
DONE oder Lesens aus INT REQUEST wird RCV INDICATE auf ff (hex)
zurückgesetzt.
Damit vermieden wird, dass INDICATION COUNTER dekrementiert wird,
muss der Hauptrechner ausschließlich
RCV INDICATE vor dem Schreiben in RCV DONE oder Lesen aus INT REQUEST
löschen. Wenn
INDICATION COUNTER Null ist und RCV INDICATE einen von Null verschiedenen
Wert enthält, wenn
in RCV DONE geschrieben wird oder INT REQUEST gelesen wird, dann
wird INDICATION COUNTER nicht dekrementiert, sondern bleibt auf Null.
Während
eines RESET wird dieses Register auf ff (hex) gesetzt.
-
a. Unterbrechungssteuereinheits-Registerkonfiguration
-
12 stellt
die Beziehung zwischen den obigen Registern dar. Die verschiedenen
Register sind verbunden, um eine Hierarchie von Statusinformationen
und eine Steuerebene von verschiedenen Hinweis- und Unterbrechungssignalen
mit ihren verschiedenen Masken zu erzeugen. Hinweisquellen laufen
durch drei Masken, bevor sie Unterbrechungen für den Hauptrechner verursachen.
INDICATION COUNTER 202 ist die erste Maske, die selektiv
die Hinweise REQUESTED INT, XFER COMPLETE und EARLY RCV deaktivieren
kann. INDICATION COUNTER 202 wird durch INDICATION ON,
INDICATION OFF und RCV INDICATE gesteuert. Wenn INDICATION COUNTER 202 von
Null verschieden ist, werden RCV COMPLETE, EARLY RCV und REQUESTED INT
maskiert und werden nicht in INDICATION REASON 206, OTHER
INDICATION 205, INT REASON 210 oder OTHER INT 209 gesetzt.
Die Hinweissignale XMIT UNDERRUN, XFER COMPLETE und XMIT COMPLETE
können
nicht durch INDICATION COUNTER 202 selektiv deaktiviert
werden.
-
INDICATION
MASK 204 ist die zweite Maske für die Hinweissignale. INDICATION
MASK 204 deaktiviert vielmehr selektiv jedes Hinweissignal
als eine Teilmenge von Hinweissignalen, die durch INDICATION COUNTER 202 deaktiviert
werden. Die Hinweissignale, die durch INDICATION MASK 204 nicht demaskiert
werden, werden dann in OTHER INDICATION 205 und INDICATION
REASON 206 gespeichert.
-
Die
dritte Maske ist INT MASK 208, die verhindert, dass ein
Hinweissignal eine Unterbrechung für den Hauptrechner aktiviert.
INT MASK 208 verhindert, dass Hinweissignale in OTHER INT 209 oder INT
REASON 210 gespeichert werden.
-
b. Schreiben in die Unterbrechungssteuereinheitsregister
-
Damit
der Hauptrechner Zugriff auf die Register erlangt, muss INTERRUPT
CONTROLLER SELECT aktiviert werden, wie in 13 dargestellt. Dies
wird durch Eingeben von HOST SLAVE ADDRESS [7:6] in die Logik 220,
die mit dem Eingang eines UND-Gatters 222 verbunden ist,
zusammen mit ASIC REGISTER DECODE und HOST SLAVE ACK durchgeführt. Das
UND-Gatter 222 gibt dann Register INTERRUPT CONTROLLER
SELECT aus, wenn auf die Adressen 1C00 (hex) bis 1C3C (hex) zugegriffen
wird. Die Logik 220 stellt sicher, dass HOST SLAVE ACK
angibt, dass keine anderen Module gerade autonome Zyklen durchführen und ihre
Auswahlsignale auswählen.
ASIC REGISTER DECODE gibt an, dass nur auf ASIC-Register zugegriffen wird.
-
Das
Signal INTERRUPT CONTROLLER SELECT wird verzögert, um nur Störimpulse
zu entfernen, wie in 14 dargestellt. Damit DELAYED
INTERRUPT CONTROLLER WRITE aktiviert wird, müssen HOST SLAVE ADDRESS [5]
und HOST SLAVE ADDRESS [4] entweder 01 oder 10 sein. Der Logikblock 230 erfordert,
dass die Register, in die geschrieben werden soll, zwischen 1C10
(hex) und 1C2C (hex) liegen. HOST SLAVE ADDRESS [4:5] wird in den
Logikblock 230 eingegeben, wobei die Ausgabe des Logikblocks 230 in
das UND-Gatter 231 zusammen mit INTERRUPT CONTROLLER SELECT
eingegeben wird. Außerdem
werden HOST LOW BYTE EN und HOST WRITE in das UND-Gatter 231 eingegeben.
Die Ausgabe des UND-Gatters 231 ist INTERRUPT CONTROLLER
WRITE, das um einen Taktzyklus durch das Register 232 verzögert wird,
das durch CLOCK verriegelt wird und DELAYED INTERRUPT CONTROLLER
WRITE am Q-Ausgang ausgibt.
-
HOST
SLAVE ADDRESS [4:2] zusammen mit DELAYED INTERRUPT CONTROLLER WRITE werden
verwendet, um in die individuellen Register zu schreiben, wie in 16 gezeigt.
DELAYED INTERRUPT CONTROLLER WRITE und CYCLE DONE werden in das
UND-Gatter 240 eingegeben, um INTERRUPT CONTROLLER WRITE
STROBE zu erzeugen, das in den E-Eingang des Multiplexers 242 eingegeben
wird. HOST SLAVE ADDRESS [4:2] wird in den D-Eingang des Registers 241 eingegeben,
das durch CLOCK verriegelt wird. Die Ausgabe des Registers 241 ist
DELAYED HOST SLAVE ADDRESS [4:2], das in S[2:0] des Multiplexers 242 eingegeben
wird. DELAYED HOST SLAVE ADDRESS [4:2] wählt das geeignete Register
aus, in das INTERRUPT CONTROLLER WRITE STROBE multiplexiert wird.
Die Schreibfreigabeausgaben umfassen: RCV INDICATE WRITE STROBE,
INT REQUEST WRITE STROBE, INDICATION MASK WRITE STROBE, INT MASK
WRITE STROBE, INDICATION OFF WRITE STROBE und INDICATION ON WRITE
STROBE. Die Ausgaben E2 und E3 werden nicht verwendet.
-
15 zeigt
eine Tabelle von Codes, die für DELAYED
HOST SLAVE ADDRESS [4:2] bei der Auswahl eines Registers verwendet
werden.
-
Das
Register 250 INDICATION MASK und das Register 251 INT
MASK sind in 17 gezeigt. INDICATION MASK
WRITE STROBE wird verwendet, um das Register 250 INDICATION
MASK zu takten, während
HOST WRITE DATA [6:1] in die D-Eingänge des Registers 250 INDICATION
MASK und des Registers 251 INT MASK eingegeben wird. Die fallende
Flanke des Schreibfreigabeimpulses, die der fallenden Flanke von
CYCLE DONE entspricht, wird verwendet, um die Daten zu verriegeln.
Die fallende Flanke des Signals INT MASK WRITE STROBE wird jedoch
als Takt zum Verriegeln von HOST WRITE DATA [6:1] im Register 251 INT
MASK verwendet. INTERRUPT CONTROLLER RESET wird verwendet, um die
Register 250 und 251 zurückzusetzen.
-
REQUESTED
INT in 18 wird aktiviert, wenn INT
REQUEST WRITE STROBE aktiviert wird. REQUESTED INT wird deaktiviert,
wenn die Unterbrechung durch Lesen des Registers INT REQUEST bestätigt wird.
Das Schreiben in und Lesen des Registers INT REQUEST setzen REQUESTED
INT und setzen es zurück.
Das INT REQUEST WRITE STROBE taktet das Register 260, das
REQUEST INT am Q-Ausgang
ausgibt, wobei der D-Eingang auf 1 gesetzt ist. DELAYED INT REQUEST
READ und CYCLE DONE werden in das UND-Gatter 261 eingegeben,
das INT REQUEST READ STROBE an das ODER-Gatter 262 zusammen
mit INTERRUPT CONTROLLER RESET ausgibt. Die Ausgabe des ODER-Gatters 262 wird
dann verwendet, um das Register 260 zurückzusetzen.
-
Die
Erzeugung des Signals DELAYED RCV DONE WRITE, wie in 19 gezeigt,
gibt an, wenn in RCV DONE geschrieben wird. HOST SLAVE ADDRESS [7:2]
wird in den Logikblock 265 eingegeben, um festzustellen,
ob das Register RCV DONE ausgewählt
wurde. Die Ausgabe des Logikblocks 265 wird dann in das
UND-Gatter 266 zusammen mit ASIC REGISTER DECODE, HOST
WRITE, HOST SLAVE ACK und HOST LOW BYTE EN eingegeben. Die Ausgabe
des UND-Gatters 266 ist RCV DONE WRITE, das um einen Taktzyklus
verzögert
wird, um eine störimpulsfreie
Operation vorzusehen, indem das Signal in den D-Eingang des Registers 267 eingegeben
wird, das durch CLOCK synchronisiert wird und das dann DELAYED RCV
DONE WRITE am Q-Ausgang ausgibt.
-
20 stellt
die Erzeugung von RCV INDICATE REGISTER [7:0] dar. Der Wert von
RCV INDICATE REGISTER [7:0] ändert
sich, wenn der Hauptrechner in das Register RCV INDICATE schreibt
oder der Hauptrechner in das Register RCV DONE schreibt oder aus
dem Register INT REQUEST liest. Wenn der Hauptrechner in das Register
RCV INDICATE schreibt, wie durch das Signal RCV INDICATE WRITE STROBE,
das in das ODER-Gatter 272 eingegeben wird, angegeben,
werden die Daten an HOST WRITE DATE [7:0] im Register 271 als
RCV INDICATE INPUT [7:0] gespeichert. Wenn der Hauptrechner in das
Register RCV DONE schreibt, wie durch das Signal DELAYED RCV DONE
WRITE angegeben, das in das ODER-Gatter 276 eingegeben
wird, wird der Wert FF (hex) im Register 271 RCV INDICATE
gespeichert. Wenn der Hauptrechner das Register INT REQUEST liest,
wie durch das Signal DELAYED INT REQUEST READ, das in das ODER-Gatter 271 eingegeben
wird, angegeben, wird der Wert FF (hex) im Register 271 RCV
INDICATE gespeichert.
-
Die
Ausgabe des ODER-Gatters 276, DELAYED SET RCV INDICATE,
wird in das UND-Gatter 275 mit CYCLE DONE eingegeben, um
einen Freigabeimpuls zu erzeugen, der SET RCV INDICATE STROBE genannt
wird. SET RCV INDICATE STROBE wird in das ODER-Gatter 272 mit
RCV INDICATE WRITE STROBE eingegeben, was einen Freigabeimpuls erzeugt,
der von hoch auf niedrig schaltet, sobald ein neuer Wert in das
Register RCV INDICATE geladen werden sollte. INTERRUPT CONTROLLER
RESET setzt das Register 271 RCV INDICATE zurück.
-
Um
die Anforderung zu implementieren, dass der INDICATION COUNTER dekrementiert wird,
wenn das Register RCV INDICATE einen von Null verschiedenen Wert
enthält
und in RCV DONE geschrieben oder INT REQUEST gelesen wird, wird die
Ausgabe des Registers RCV INDICATE in das ODER-Gatter 273 eingegeben.
Die Ausgabe des ODER-Gatters 273 wird in das UND-Gatter 274 mit dem
SET RCV INDICATE STROBE eingegeben, um RCV IND DECREMENT auszugeben.
RCV IND DECREMENT wird verwendet, um INDICATION COUNTER zu dekrementieren.
-
c. Erzeugen von Unterbrechungssteuereinheitsanforderungen
-
Die
Unterbrechungen REQUESTED INT, EARLY RCV und RCV COMPLETE können maskiert werden,
wenn der INDICATION COUNTER von Null verschieden ist. 21 zeigt
ein Diagramm, wobei INDICATION COUNTER IS ZERO erzeugt wird, das verwendet
wird, um festzustellen, wenn INDICATION COUNTER Null ist. INDICATION
COUNTER IS ZERO wird durch ODER-Verknüpfung aller Bits von INDICATION
COUNTER [7:0] und Invertieren des Ergebnisses durch das ODER-Gatter 280 aktiviert.
-
22 ist
eine schematische Darstellung dessen, wie die Werte für die Register
OTHER INDICATION und OTHER INT erzeugt werden. Die Register OTHER
INDICATION und OTHER INT werden durch UND-Verknüpfung der Signale REQUESTED INT
und XMIT UNDER RUN gebildet, um Werte zu maskieren. INDICATION COUNTER
IS ZERO und REQUESTED INT werden in das UND-Gatter 281 eingegeben.
Die Ausgabe des UND-Gatters 281 wird dann in das UND-Gatter 282 zusammen
mit INDICATION MASK REGISTER [5] eingespeist. Die Ausgabe des UND-Gatters 282 ist
OTHER INDICATION [1]. INT MASK REGISTER [5] wird in das UND-Gatter 283 zusammen
mit OTHER INDICATION [1] eingegeben. Die Ausgabe des UND-Gatters 283 ist OTHER
INT [1]. XMIT UNDER RUN und INDICATION MASK REGISTER [6] werden
in das UND-Gatter 284 eingegeben, um OTHER INDICATION [2]
auszugeben. INT MASK REGISTER [6] wird in das UND-Gatter 285 zusammen
mit OTHER INDICATION [2] eingegeben, um OTHER INT [2] auszugeben.
-
Die
Erzeugung der Werte in den Registern INDICATION REASON und INT REASON
werden ähnlich
zu den vorstehend beschriebenen Registern OTHER INDICATION und OTHER
INT gebildet. 23 zeigt die Erzeugung der Registerwerte
INDICATION REASON und INT REASON. DOWNLOAD XMIT COMPLETE zusammen
mit TRANSMIT XMIT COMPLETE wird in das ODER-Gatter 290 eingegeben,
wobei die Ausgabe in das UND-Gatter 291 zusammen mit INDICATION
MASK REGISTER [1] eingegeben wird. Die Ausgabe des UND-Gatters 291 ist der
erste Bitwert von INDICATION REASON [1]. INT MASK REGISTER [1] wird
dann in das UND-Gatter 292 zusammen mit INDICATION REASON
[1] eingegeben, um INT REASON [1] auszugeben. Ebenso werden INDICATION
COUNTER IS ZERO und RCV COMPLETE in das UND-Gatter 293 eingegeben,
wobei die Ausgabe zum UND-Gatter 294 zusammen mit INDICATION
MASK REGISTER [2] zugeführt
wird. Die Ausgabe des UND-Gatters 294 ist dann INDICATION
REASON [2], das auch in das UND-Gatter 295 zusammen mit
INT MASK REGISTER [2] eingegeben wird. Die Ausgabe des UND-Gatters 295 ist
dann INT REASON [2].
-
INDICATION
COUNTER IS ZERO und EARLY RCV werden in das UND-Gatter 296 eingegeben, wobei
die Ausgabe dem UND-Gatter 297 zugeführt wird. Die andere Eingabe
in das UND-Gatter 297 ist INDICATION MASK REGISTER [3],
wobei die Ausgabe INDICATION REASON [3] ist. INT REASON [3] wird
durch INDICATION REASON [3] und INT MASK REGISTER [3] erzeugt, die
in das UND-Gatter 298 eingegeben werden.
-
XFER
COMPLETE und INDICATION MASK REGISTER [4] werden in das UND-Gatter 299 eingegeben,
um INDICATION REASON [4] auszugeben. INT MASK REGISTER [4] und INDICATION
REASON [4] werden in das UND-Gatter 300 eingegeben, um
INT REASON [4] auszugeben. INDICATION REASON [5] und INT REASON
[5] werden durch ODER-Gatter 301 und 302 erzeugt,
die Eingaben von OTHER INDICATION [1], OTHER INDICATION [2], OTHER
INT [1] bzw. OTHER INT [2] als Eingaben haben.
-
24 ist
ein Diagramm, das die Erzeugung des Signals GENERATE AN INTERRUPT
darstellt. Wenn irgendwelche der Signale in INT REASON [5:1] aktiviert
werden, wird das Signal GENERATE AN INTERRUPT durch Eingeben von
INT REASON [5:1] in das ODER-Gatter 303 aktiviert.
-
25 ist
ein Diagramm, das die Erzeugung der Signale INTERRUPT REQUEST darstellt.
Um eine Unterbrechungsanforderung an INTERRUPT REQUEST 9-12 oder
PRIVATE INTERRUPT zu erzeugen, muss CARD ENABLE aktiviert werden. CARD
ENABLE und GENERATE AN INTERRUPT werden in das UND-Gatter 305 eingegeben,
wobei die Ausgabe in den Y-Eingang des Multiplexers 306 eingegeben
wird. PRIVATE INT SELECT wird in den S-Eingang des Multiplexers 306 eingegeben.
PRIVATE INT SELECT wird verwendet, um festzustellen, ob die Unterbrechung
zum Signal PRIVATE INTERRUPT oder einem der Signale INTERRUPT REQUEST
9-12 gelenkt wird. Der 0-Ausgang des Multiplexers 306 wird
in den Y-Eingang des Multiplexers 304 eingegeben, während der
1-Ausgang des Multiplexers 306 das Signal PRIVATE INTERRUPT
ist. Wenn die Unterbrechung an einem der Signale INTERRUPT REQUEST
9-12 erzeugt werden soll, werden INTERRUPT SELECT [1:0], das in
S[1:0] des Multiplexers 304 eingegeben wird, verwendet,
um die Ebene der ausgewählten
Unterbrechung zu bestimmen. Die Ausgänge 0-3 des Multiplexers 304 sind
INTERRUPT REQUEST 9, INTERRUPT REQUEST 10, INTERRUPT REQUEST 11
bzw. INTERRUPT REQUEST 12.
-
d. Lesen von Unterbrechungssteuereinheitsregistern
-
Damit
der Hauptrechner Daten von den Unterbrechungssteuereinheitsregistern
liest, muss er zuerst eine geeignete Adresse des Registers an HOST
SLAVE ADDRESS [5:2] am S[0:3] Eingang des Multiplexers 310 liefern,
wie in 26 gezeigt. Die Unterbrechungssteuereinheit
steuert RAW INTERRUPT DATA [7:0] am Y-Ausgang des Multiplexers 310,
wobei die Daten vom Register durch HOST SLAVE ADDRESS [5:2] ausgewählt werden.
INDICATION REASON [5:1] wird in den 0-Eingang des Multiplexers 310 eingegeben.
Ebenso werden INT REASON [5:1], OTHER INDICATION [2:1], OTHER INT
[2:1], INDICATION MASK REGISTER [6:1] und INT MASK REGISTER [6:1]
in die Eingänge
1 bis 5 des Multiplexers 310 jeweils eingegeben. RCV INDICATES
REGISTER [7:0] und INDICATION COUNTER [7:0] werden in die 8- und
10-Eingänge
des Multiplexers 310 eingegeben. Die restlichen Eingänge sind
auf 0 gesetzt.
-
27 stellt
dar, wie RAW INTERRUPT DATA [7:0] sich während eines Lesevorgangs nicht ändert. HOST
SLAVE ACK wird in den D-Eingang des Registers 316 eingegeben,
das durch CLOCK synchronisiert wird, um DELAYED HOST SLAVE ACK am
Q-Ausgang auszugeben, das zum D-Eingang des Registers 317 zugeführt wird,
das auch durch CLOCK synchronisiert wird. HOST SLAVE ACK wird um
zwei Taktzyklen verzögert,
um DELAYED HOST SLAVE ACK und DOUBLE DELAYED HOST SLAVE ACK zu erzeugen,
das verwendet wird, um RAW INTERRUPT DATA [7:0] zu verriegeln. Dies
stellt sicher, dass INTERRUPT DATA [7:0], das aus dem Q-Ausgang des Registers 315 ausgegeben wird,
sich um die Zeit, zu der CYCLE DONE aktiviert wird, nicht ändert.
-
Das
Signal DELAYED INT REQUEST READ in 28 gibt
an, wenn das Register INT REQUEST gelesen wird. INTERRUPT CONTROLLER
SELECT, HOST LOW BYTE EN und HOST WRITE werden in das UND-Gatter 320 eingegeben,
um INTERRUPT CONTROLLER READ auszugeben. INTERRUPT CONTROLLER READ
wird dann in das D-Flip-Flop-Register 321 eingegeben, das
durch TACKT synchronisiert wird und am Q-Ausgang DELAYED INTERRUPT
CONTROLLER READ ausgibt, das in das UND-Gatter 324 eingegeben
wird. HOST SLAVE ADDRESS [5:2] wird dann in die Logik 322 eingegeben
und gibt INT REQUEST ADDRESS aus, wenn HOST SLAVE ADDRESS [5:2]
auf das Register INT REQUEST zugreift. INT REQUEST ADDRESS wird
dann in den D-Eingang des Flip-Flop-Registers 323 eingegeben,
das durch TACKT synchronisiert wird, welches am Q-Ausgang DELAYED
INT REQUEST ADDRESS an das UND-Gatter 324 ausgibt. DELAYED
INT REQUEST READ wird dann aus dem UND-Gatter 324 ausgegeben.
-
29 ist
ein Diagramm, das den 8-Bit-Hinweiszähler der Unterbrechungssteuereinheit
darstellt. Der Zähler
wird inkrementiert, wenn in das Register INDICATION OFF geschrieben
wird, und dekrementiert, wenn in das Register INDICATION ON geschrieben
wird. INDICATION OFF WRITE STROBE, das in das ODER-Gatter 334 eingegeben
wird, gibt an, ob in das Register INDICATION OFF geschrieben wird,
während
das Signal INDICATION ON WRITE STROBE, das in das ODER-Gatter 335 eingegeben
wird, angibt, wenn in das Register INDICATION ON geschrieben wird.
Der Zähler
wird auch dekrementiert, wenn in das Register RCV DONE geschrieben
wird oder das Register INT REQUEST gelesen wird, während das
Register RCV INDICATE einen von Null verschiedenen Wert enthält. INTERRUPT
CONTROLLER RESET wird in das ODER-Gatter 334 und das ODER-Gatter 335 eingegeben.
RCV IND DECREMENT wird auch in das ODER-Gatter 335 eingegeben.
Die Ausgabe des ODER-Gatters 334 und 335 wird
in die S0- bzw. S1-Eingänge
des Multiplexers 332 eingegeben.
-
INDICATION
COUNTER [7:0] wird zur Logik 330 und 331 zurückgeführt, die
IND COUNT PLUS ONE [7:0] und IND COUNT MINUS ONE [7:0] an den 1-Eingang
bzw. 2-Eingang des Multiplexers 332 ausgibt. INDICATION
COUNTER [7:0] wird auch zum 0-Eingang und zum 3-Eingang des Multiplexers 332 zurückgeführt, der
wiederum am S-Ausgang NEXT INDICATION COUNTER [7:0] an den D-Eingang
des Registers 333 ausgibt, das durch TACKT synchronisiert
wird und INDICATION COUNTER [7:0] am Q-Ausgang ausgibt.
-
Wenn
der Zähler
auf Null steht und eines der Dekrementierungssignale aktiviert wird,
bleibt der Zähler
auf Null und wird nicht auf FF (hex) dekrementiert. Wenn der Zähler auf
FF (hex) steht und ein Inkrementierungssignal aktiviert wird, bleibt
der Zähler ebenso
auf FF (hex) und wird nicht auf Null inkrementiert.
-
IX. Schlussfolgerung
-
Daher
ermöglicht
die vorliegende Erfindung, dass der Hauptrechner Hinweise und Unterbrechungen
von asynchronen Netzwerkadapterereignissen aktiviert und/oder deaktiviert.
Der Netzwerkadapter umfasst ein Unterbrechungssteuereinheitsmodul, das
eine Unterbrechungs- und Hinweislogik aufweist, die Hinweis- oder
Unterbrechungssignale aktiviert und/oder deaktiviert. Die Unterbrechungs-
und Hinweislogik umfasst drei für
den Hauptrechner zugängliche
Register, die zum Maskieren von Hinweis- und Unterbrechungssignalen
für den
Hauptrechner verwendet werden. Außerdem umfasst die Unterbrechungs-
und Hinweislogik vier Speicherstellen, die Werte enthalten, die
das Auftreten von asynchronen Ereignissen angeben.
-
INDICATION
COUNTER, INDICATION MASK und INT MASK sind Register, die verwendet werden,
um Hinweis- und Unterbrechungssignale selektiv zu deaktivieren oder
zu aktivieren. INDICATION COUNTER wird verwendet, um die Teilmenge von
Hinweissignalen REQUESTED INT, EARLY RCV und RCV COMPLETE zu deaktivieren
oder zu aktivieren. Diese Teilmenge von Netzwerkadapter-Hinweissignalen kann
eine Unterbrechung erzeugen, die von einem Hauptrechnerprozessor
während
einer Hauptrechner-Datenblockempfangssubroutine nicht abgearbeitet
werden kann. Überdies
kann ein interner Hinweiszähler
automatisch diese Teilmenge von Hinweissignalen ohne explizite Schreibvorgänge in INDICATION
COUNTER aktivieren oder deaktivieren. Die automatische Deaktivierung
oder Aktivierung kann durch explizite Schreibvorgänge in INDICATION
OFF und INDICATION ON außer
Kraft gesetzt werden.
-
INDICATION
MASK wird verwendet, um selektiv die obigen individuellen Hinweissignale
sowie XMIT UNDER Run, XFER COMPLETE und XMIT COMPLETE zu deaktivieren.
-
Schließlich wird
INT MASK verwendet, um selektiv Hinweissignale zu deaktivieren,
was die Erzeugung von Unterbrechungssignalen, die individuellen
Hinweissignalen entsprechen, verhindert.
-
OTHER
INDICATION, INDICATION REASON, OTHER INT und INT REASON sind Speicherstellen
in der Unterbrechungs- und Hinweislogik, die vom Hauptrechner gelesen
werden können.
Diese Speicherstellen enthalten Hinweise und Unterbrechungswerte,
die asynchrone Netzwerkadapterereignisse darstellen. OTHER INDICATION
und INDICATION REASON enthalten Werte, die die Hinweissignale darstellen,
die nicht durch INDICATION COUNTER und INDICATION MASK maskiert
wurden. OTHER INT und INT REASON enthalten Unterbrechungswerte,
die ein Hauptrechnerunterbrechungssignal erzeugen, das nicht durch
INT MASK maskiert wird.
-
Die
vorangehende Beschreibung von bevorzugten Ausführungsbeispielen der vorliegenden
Erfindung wurde für
die Zwecke der Erläuterung
und Beschreibung bereitgestellt. Sie soll nicht erschöpfend sein
oder die Erfindung auf die offenbarten genauen Formen begrenzen.
Offensichtlich sind viele Modifikationen und Variationen für Fachleute
ersichtlich. Die Ausführungsbeispiele
wurden gewählt
und beschrieben, um die Prinzipien der Erfindung und ihre praktische
Anwendung am besten zu erläutern, wodurch
anderen Fachleuten ermöglicht
wird, die Erfindung für
verschiedene Ausführungsbeispiele
und mit verschiedenen Modifikationen zu verstehen, die für die in
Betracht gezogene spezielle Verwendung geeignet sind. Es ist vorgesehen,
dass der Schutzbereich der Erfindung durch die folgenden Ansprüche und
ihre Äquivalente
definiert ist.