DE69334165T2 - Netzwerkanpassungseinrichtung mit hauptrechnerunterbrechung und indikationsverwaltung - Google Patents

Netzwerkanpassungseinrichtung mit hauptrechnerunterbrechung und indikationsverwaltung Download PDF

Info

Publication number
DE69334165T2
DE69334165T2 DE69334165T DE69334165T DE69334165T2 DE 69334165 T2 DE69334165 T2 DE 69334165T2 DE 69334165 T DE69334165 T DE 69334165T DE 69334165 T DE69334165 T DE 69334165T DE 69334165 T2 DE69334165 T2 DE 69334165T2
Authority
DE
Germany
Prior art keywords
host
xmit
register
data
adapter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69334165T
Other languages
English (en)
Other versions
DE69334165D1 (de
Inventor
Scott Andrew San Jose EMERY
Brian Los Altos PETERSEN
W. Paul Sunnyvale SHERER
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
3Com Corp
Original Assignee
3Com Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=21755544&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69334165(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 3Com Corp filed Critical 3Com Corp
Application granted granted Critical
Publication of DE69334165D1 publication Critical patent/DE69334165D1/de
Publication of DE69334165T2 publication Critical patent/DE69334165T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Description

  • 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.

Claims (15)

  1. Vorrichtung zum Verwalten der Unterbrechung eines Hauptrechnerprozessors (5) durch einen Netzwerkadapter (3), der dazu eingerichtet ist, Daten zwischen einem externen Kommunikationsnetzwerk und dem Hauptrechnerprozessor zu übertragen, aufweisend: eine Quelle für Hinweissignale, die entsprechende asynchrone Ereignisse bezeichnen; eine erste Maskenlogik (202, 204); eine zweite Maskenlogik (208) und ein Unterbrechungsmittel, wobei die Vorrichtung dadurch gekennzeichnet ist, dass die erste Maskenlogik selektiv die Hinweissignale maskiert, um Hinweiswerte zu liefern; ein für den Hauptrechnerprozessor zugänglicher erster Speicher (205, 206) die Hinweiswerte speichert; die zweite Maskenlogik selektiv die gespeicherten Hinweiswerte maskiert, um Unterbrechungswerte zu liefern; ein für den Hauptrechnerprozessor zugänglicher zweiter Speicher (209, 210) die Unterbrechungswerte speichert; und das Unterbrechungsmittel mit der zweiten Speicherstelle zum Erzeugen eines Unterbrechungssignals für den Hauptrechnerprozessor gemäß einem in diesem gespeicherten Unterbrechungswert gekoppelt ist; wobei der Hauptrechnerprozessor auf die Speicher zugreifen kann, um die Art von anstehenden asynchronen Ereignissen festzustellen.
  2. Vorrichtung nach Anspruch 1, wobei die erste Maskenlogik eine zählergesteuerte Maske (202) für die Maskierung einer Vielzahl der Hinweissignale umfasst.
  3. Vorrichtung nach Anspruch 2, wobei die erste Maskenlogik eine Hinweismaske (204) zum selektiven Maskieren der Hinweissignale, wie bereits von der zählergesteuerten Maske (202) maskiert, umfasst.
  4. Vorrichtung nach Anspruch 2 oder Anspruch 3, wobei der Hauptrechner dazu eingerichtet ist, die zählergesteuerte Maske (202) für die Maskierung und Demaskierung der Hinweissignale zu steuern.
  5. Vorrichtung nach einem der Ansprüche 2-4, wobei die zählergesteuerte Maske (202) so beschaffen ist, dass sie in Reaktion auf Signale, die in entsprechenden Subroutinen des Hauptrechnerprozessors (5) erzeugt werden, inkrementiert und dekrementiert wird.
  6. Vorrichtung nach einem vorangehenden Anspruch, wobei der Hauptrechner mit den Speichern (205, 206, 209, 210) zum Lesen und Schreiben gekoppelt ist.
  7. Vorrichtung nach einem vorangehenden Anspruch, wobei das Unterbrechungsmittel die Unterbrechungssignale auf einem Datenbus (4) zum Hauptrechnerprozessor (5) liefert.
  8. Vorrichtung nach einem vorangehenden Anspruch, wobei die Maskenlogik Register zum Steuern der von der entsprechenden Logik durchgeführten Maskierung umfasst und die Register für den Hauptrechner zugänglich sind.
  9. Vorrichtung nach einem vorangehenden Anspruch, wobei die Unterbrechungswerte im zweiten Speicher (209, 210) einen Hinweis (REQUESTED INT), ob der Hauptrechner eine Unterbrechung angefordert hat, umfassen.
  10. Vorrichtung nach einem vorangehenden Anspruch, wobei die Hinweissignale aus einer Bitmaske bestehen, von der zumindest einige der Bits jeweils das Auftreten oder Nicht-Auftreten eines entsprechenden Ereignisses bezeichnen.
  11. Verfahren zum Steuern der Unterbrechung eines Hauptrechnerprozessors, der dazu eingerichtet ist, die Übertragung von Daten zwischen einem Hauptrechner und einem Netzwerkadapter zu steuern, aufweisend: (a) Liefern eines Hinweissignals, von welchem zumindest einige der Teile jeweils ein entsprechendes Ereignis bezeichnen, das wahrscheinlich eine Unterbrechung des Hauptrechnerprozessors anfordert; (b) selektives Maskieren von Teilen des Hinweissignals und Speichern des maskierten Signals in einem ersten Speicher als Hinweisgrund-(INDICATION REASON) Signal; (c) selektives Maskieren von Teilen des Hinweisgrundsignals und Speichern des maskierten Hinweisgrundsignals in einem zweiten Speicher (208) als Unterbrechungsgrund-(INT REASON) Signal, von dem einzelne Teile jeweils einen entsprechenden Grund für die Unterbrechung des Hauptrechners bezeichnen; (d) Erzeugen eines Unterbrechungssignals aus dem zweiten Speicher; und (e) Zugreifen auf mindestens einen der Speicher durch den Hauptrechnerprozessor, um die Art von anstehenden Unterbrechungen festzustellen.
  12. Verfahren nach Anspruch 11, wobei das Maskieren der Teile des Hinweissignals das Maskieren einer Vielzahl von Teilen als Gruppe und das selektive Maskieren von einzelnen Teilen, die sich nicht in der Gruppe befinden, umfasst.
  13. Verfahren nach Anspruch 12, wobei das Maskieren von Teilen als Gruppe durch einen Zähler gesteuert wird.
  14. Verfahren nach Anspruch 13, wobei der Zähler durch eine entsprechende Subroutine des Hauptrechnerprozessors inkrementiert oder dekrementiert wird.
  15. Verfahren nach einem der Ansprüche 11 bis 14, wobei jeder der Teile ein einzelnes Bit ist.
DE69334165T 1993-02-02 1993-12-28 Netzwerkanpassungseinrichtung mit hauptrechnerunterbrechung und indikationsverwaltung Expired - Lifetime DE69334165T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12561 1993-02-02
US08/012,561 US5530874A (en) 1993-02-02 1993-02-02 Network adapter with an indication signal mask and an interrupt signal mask
PCT/US1993/012652 WO1994018627A2 (en) 1993-02-02 1993-12-28 Network adapter with host interrupt and indication management

Publications (2)

Publication Number Publication Date
DE69334165D1 DE69334165D1 (de) 2007-10-18
DE69334165T2 true DE69334165T2 (de) 2008-05-29

Family

ID=21755544

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69334165T Expired - Lifetime DE69334165T2 (de) 1993-02-02 1993-12-28 Netzwerkanpassungseinrichtung mit hauptrechnerunterbrechung und indikationsverwaltung

Country Status (9)

Country Link
US (1) US5530874A (de)
EP (1) EP0682791B1 (de)
JP (1) JPH08506674A (de)
KR (1) KR0161101B1 (de)
AT (1) ATE372552T1 (de)
AU (1) AU675501B2 (de)
CA (1) CA2152392C (de)
DE (1) DE69334165T2 (de)
WO (1) WO1994018627A2 (de)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5412782A (en) 1992-07-02 1995-05-02 3Com Corporation Programmed I/O ethernet adapter with early interrupts for accelerating data transfer
AU706450B2 (en) * 1993-07-06 1999-06-17 Tandem Computers Incorporated A processor interface circuit
GB2298295B (en) * 1995-02-23 2000-01-19 Sony Uk Ltd Data processing systems
US5797037A (en) * 1995-03-31 1998-08-18 Cirrus Logic, Inc. Interrupt request control logic reducing the number of interrupts required for I/O data transfer
JP2625402B2 (ja) * 1995-05-24 1997-07-02 日本電気株式会社 マイクロプロセッサ
US5740448A (en) * 1995-07-07 1998-04-14 Sun Microsystems, Inc. Method and apparatus for exclusive access to shared data structures through index referenced buffers
US5909582A (en) * 1996-04-26 1999-06-01 Nec Corporation Microcomputer having user mode interrupt function and supervisor mode interrupt function
US5922046A (en) * 1996-09-12 1999-07-13 Cabletron Systems, Inc. Method and apparatus for avoiding control reads in a network node
US5999980A (en) * 1996-09-12 1999-12-07 Cabletron Systems, Inc. Apparatus and method for setting a congestion indicate bit in an backwards RM cell on an ATM network
US5966546A (en) * 1996-09-12 1999-10-12 Cabletron Systems, Inc. Method and apparatus for performing TX raw cell status report frequency and interrupt frequency mitigation in a network node
US5995995A (en) * 1996-09-12 1999-11-30 Cabletron Systems, Inc. Apparatus and method for scheduling virtual circuit data for DMA from a host memory to a transmit buffer memory
US5970229A (en) * 1996-09-12 1999-10-19 Cabletron Systems, Inc. Apparatus and method for performing look-ahead scheduling of DMA transfers of data from a host memory to a transmit buffer memory
US5941952A (en) * 1996-09-12 1999-08-24 Cabletron Systems, Inc. Apparatus and method for transferring data from a transmit buffer memory at a particular rate
US5881296A (en) * 1996-10-02 1999-03-09 Intel Corporation Method for improved interrupt processing in a computer system
US5854908A (en) * 1996-10-15 1998-12-29 International Business Machines Corporation Computer system generating a processor interrupt in response to receiving an interrupt/data synchronizing signal over a data bus
US6115776A (en) * 1996-12-05 2000-09-05 3Com Corporation Network and adaptor with time-based and packet number based interrupt combinations
US6098105A (en) * 1997-04-08 2000-08-01 International Business Machines Corporation Source and destination initiated interrupt method for message arrival notification
US6012121A (en) * 1997-04-08 2000-01-04 International Business Machines Corporation Apparatus for flexible control of interrupts in multiprocessor systems
US6098104A (en) * 1997-04-08 2000-08-01 International Business Machines Corporation Source and destination initiated interrupts for message arrival notification, and related data structures
US6105071A (en) * 1997-04-08 2000-08-15 International Business Machines Corporation Source and destination initiated interrupt system for message arrival notification
US5875342A (en) * 1997-06-03 1999-02-23 International Business Machines Corporation User programmable interrupt mask with timeout
US6243785B1 (en) * 1998-05-20 2001-06-05 3Com Corporation Hardware assisted polling for software drivers
US6189066B1 (en) * 1999-01-26 2001-02-13 3Com Corporation System and method for dynamically selecting interrupt time interval threshold parameters
US6192440B1 (en) * 1999-01-26 2001-02-20 3Com Corporation System and method for dynamically selecting interrupt storage time threshold parameters
US6189067B1 (en) * 1999-01-26 2001-02-13 3Com Corporation System and method for dynamically selecting interrupt quantity threshold parameters
US6351785B1 (en) * 1999-01-26 2002-02-26 3Com Corporation Interrupt optimization using varying quantity threshold
US6574694B1 (en) * 1999-01-26 2003-06-03 3Com Corporation Interrupt optimization using time between succeeding peripheral component events
US6529986B1 (en) * 1999-01-26 2003-03-04 3Com Corporation Interrupt optimization using storage time for peripheral component events
US6137734A (en) * 1999-03-30 2000-10-24 Lsi Logic Corporation Computer memory interface having a memory controller that automatically adjusts the timing of memory interface signals
US6526514B1 (en) * 1999-10-11 2003-02-25 Ati International Srl Method and apparatus for power management interrupt processing in a computing system
US6754755B1 (en) * 2000-08-10 2004-06-22 Hewlett-Packard Development Company, L.P. Service request system using an activity indicator to reduce processing overhead
US6889278B1 (en) * 2001-04-04 2005-05-03 Cisco Technology, Inc. Method and apparatus for fast acknowledgement and efficient servicing of interrupt sources coupled to high latency paths
MXPA03011599A (es) 2001-07-02 2005-03-07 Pfizer Prod Inc Vacunacion en dosis unica con micoplasma hyopneumoniae.
US20040128418A1 (en) * 2002-12-30 2004-07-01 Darren Abramson Mechanism and apparatus for SMI generation
US7389496B2 (en) * 2003-07-02 2008-06-17 Agere Systems Inc. Condition management system and a method of operation thereof
US7596779B2 (en) * 2004-02-19 2009-09-29 Agere Systems Inc. Condition management callback system and method of operation thereof
US20120166687A1 (en) * 2010-12-22 2012-06-28 Stmicroelectronics, Inc. Computer Architecture Using Shadow Hardware
US11476928B2 (en) 2020-03-18 2022-10-18 Mellanox Technologies, Ltd. TDMA networking using commodity NIC/switch
US11336383B2 (en) 2020-06-24 2022-05-17 Mellanox Technologies, Ltd. Packet scheduling system with desired physical transmission time for packets
US11388263B2 (en) 2020-10-11 2022-07-12 Mellanox Technologies, Ltd. Packet transmission using scheduled prefetching
US11711158B2 (en) 2021-06-28 2023-07-25 Mellanox Technologies, Ltd. Accurate time-stamping of outbound packets

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1397438A (en) * 1971-10-27 1975-06-11 Ibm Data processing system
JPS55123736A (en) * 1979-03-16 1980-09-24 Hitachi Ltd Interrupt control system
GB2212291B (en) * 1980-08-14 1989-11-29 Marconi Co Ltd Sighting system
US4807117A (en) * 1983-07-19 1989-02-21 Nec Corporation Interruption control apparatus
US4631659A (en) * 1984-03-08 1986-12-23 Texas Instruments Incorporated Memory interface with automatic delay state
JPS619748A (ja) * 1984-06-25 1986-01-17 Nec Corp 入出力制御装置
JPS6118059A (ja) * 1984-07-05 1986-01-25 Nec Corp メモリ回路
US4768149A (en) * 1985-08-29 1988-08-30 International Business Machines Corporation System for managing a plurality of shared interrupt handlers in a linked-list data structure
US4933846A (en) * 1987-04-24 1990-06-12 Network Systems Corporation Network communications adapter with dual interleaved memory banks servicing multiple processors
JPH01126751A (ja) * 1987-11-11 1989-05-18 Fujitsu Ltd グルーピング装置
JPH0769783B2 (ja) * 1987-11-16 1995-07-31 日本電気株式会社 例外処理方式
US5161228A (en) * 1988-03-02 1992-11-03 Ricoh Company, Ltd. System with selectively exclusionary enablement for plural indirect address type interrupt control circuit
JP2591181B2 (ja) * 1989-09-22 1997-03-19 日本電気株式会社 マイクロコンピュータ
JP2855298B2 (ja) * 1990-12-21 1999-02-10 インテル・コーポレーション 割込み要求の仲裁方法およびマルチプロセッサシステム
US5179704A (en) * 1991-03-13 1993-01-12 Ncr Corporation Method and apparatus for generating disk array interrupt signals
EP0584257B1 (de) * 1991-05-17 2004-08-04 Packard Bell NEC, Inc. Leistungsmanagementsfunktion für einen rückwärtskompatiblen mikroprozessor
JP3176093B2 (ja) * 1991-09-05 2001-06-11 日本電気株式会社 マイクロプロセッサの割込み制御装置
US5319752A (en) * 1992-09-18 1994-06-07 3Com Corporation Device with host indication combination

Also Published As

Publication number Publication date
EP0682791B1 (de) 2007-09-05
AU675501B2 (en) 1997-02-06
CA2152392A1 (en) 1994-08-18
WO1994018627A2 (en) 1994-08-18
WO1994018627A3 (en) 1994-09-29
ATE372552T1 (de) 2007-09-15
CA2152392C (en) 2000-11-07
KR960700479A (ko) 1996-01-20
US5530874A (en) 1996-06-25
AU5987394A (en) 1994-08-29
JPH08506674A (ja) 1996-07-16
KR0161101B1 (ko) 1999-01-15
EP0682791A4 (de) 1999-02-03
DE69334165D1 (de) 2007-10-18
EP0682791A1 (de) 1995-11-22

Similar Documents

Publication Publication Date Title
DE69334165T2 (de) Netzwerkanpassungseinrichtung mit hauptrechnerunterbrechung und indikationsverwaltung
DE60217221T2 (de) Ein-Chip System zur Paketverarbeitung
DE3043894C2 (de)
DE3238532C3 (de) Datenübertragungseinrichtung
DE69233194T2 (de) Verfahren und vorrichtung für simultane paketbus.
DE4121446C2 (de) Terminal-Server-Architektur
DE60204213T2 (de) Level 2 Cache mit lokaler Beibehaltung von Kohärenzblöcken
DE3642324C2 (de) Multiprozessoranlage mit Prozessor-Zugriffssteuerung
DE4023471C2 (de) Steuerungssystem mit Hostcomputer und Kommunikationsschnittstellenschaltung
DE3820544C2 (de) Ortsbereichsnetzsystem mit einem hiermit gekoppelten Mehrcomputersystem und Verfahren zur Steuerung hiervon
EP1069731B1 (de) Netzwerk und Verfahren zum Austausch von Botschaften
DE3114934A1 (de) Zentrales subsystem fuer eine datenverarbeitungsanlage
DE102005048581B4 (de) Teilnehmerschnittstelle zwischen einem FlexRay-Kommunikationsbaustein und einem FlexRay-Teilnehmer und Verfahren zur Übertragung von Botschaften über eine solche Schnittstelle
DE60109060T2 (de) Interkommunikationsvorprozessor
DE60038703T2 (de) Asynchrone Datenübertragung
EP0895165B1 (de) Kommunikationssystem mit einer DMA-Einheit
DE60029924T2 (de) Verfahren zum Schreiben von Identifikationsinformation einer Back-Nachricht in ein Identifikationsregister und Can Mikrokontroller zu dessen Implementierung
DE60029167T2 (de) Arbiter und Arbitrierungsverfahren
DE60305560T2 (de) Eingebettetes System für die Überlastregelung von Rundfunkverkehr in einem Kommunikationsnetzwerk
EP3759871B1 (de) Master-slave bussystem und verfahren zum betrieb eines bussystems
EP2411921B1 (de) Schaltungsanordnungen und verfahren zur steuerung eines datenaustauschs in einer schaltungsanordnung
EP1121645B1 (de) Elektronische steuereinrichtung mit einem parallelen datenbus und verfahren zum betreiben der steuereinrichtung
DE3247083A1 (de) Mehrprozessorsystem
DE19501674A1 (de) Verwaltung der Datenübertragung zwischen Prozessoren
DE3333847C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition