DE3788354T2 - Eingangs-/ausgangssteuerungstechnik. - Google Patents

Eingangs-/ausgangssteuerungstechnik.

Info

Publication number
DE3788354T2
DE3788354T2 DE87907171T DE3788354T DE3788354T2 DE 3788354 T2 DE3788354 T2 DE 3788354T2 DE 87907171 T DE87907171 T DE 87907171T DE 3788354 T DE3788354 T DE 3788354T DE 3788354 T2 DE3788354 T2 DE 3788354T2
Authority
DE
Germany
Prior art keywords
descriptor
queue
adapter
information
status
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 - Fee Related
Application number
DE87907171T
Other languages
English (en)
Other versions
DE3788354D1 (de
Inventor
Michael Fischer
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.)
Datapoint Corp
Original Assignee
Datapoint 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
Application filed by Datapoint Corp filed Critical Datapoint Corp
Publication of DE3788354D1 publication Critical patent/DE3788354D1/de
Application granted granted Critical
Publication of DE3788354T2 publication Critical patent/DE3788354T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Logic Circuits (AREA)
  • Control Of El Displays (AREA)

Description

  • Diese Erfindung bezieht sich auf ein neues und verbessertes Verfahren zum Kommunizieren von Eingang/Ausgang (E/A)-Funktionen zwischen einem oder mehreren zentralen Verarbeitungsmoduln und einem oder mehreren E/A-Adaptermoduln in einem Computersystem durch die Verwendung von mehreren Ebenen einer Kommunikationsstruktur, die auf gemeinsam benützten Speicherstrukturen in einem gemeinsamen Hauptspeicherpool in dem Computersystem basiert.
  • Diese Erfindung bezieht sich auf eine weitere Erfindung für eine "Schlichtungstechnik für einen geteilten Transaktionsbus in einem Multiprozessorcomputersystem", das in der US-Patentanmeldung Serial Number 909,773 beschrieben und gleichzeitig hiermit eingereicht und auf die vorliegende Anmelderin übertragen worden ist. Die Offenbarung dieser gleichzeitig anhängigen Anmeldung wird hierin durch diese Bezugnahme aufgenommen.
  • Kurzer Hintergrund der Erfindung
  • Die meisten modernen Computersysteme, insbesondere Multiprozessorsysteme, führen eine Vielzahl von Benutzer- oder Applikationsaufgaben gleichzeitig aus. Jede dieser Aufgaben und das Betriebssystem selbst erzeugen Eingang/Ausgang(E/A)-Anforderungen, wenn die Programme laufen. Üblicherweise sind diese E/A-Anforderungen unkorreliert, was bedeutet, daß die Anforderungen keine besondere Beziehung zueinander zwischen den Aufgaben haben. Es ist von beträchtlicher Bedeutung, die E/A-Anforderungen effizient und effektiv zu handhaben, so daß der Datendurchsatz oder die Verarbeitungsmöglichkeiten von solchen Mehrprozeß-Computersystemen nicht übermäßig eingeschränkt werden.
  • In einem Computersystem gibt es wenigstens einen zentralen Prozessor, einen Hauptspeicher und einen oder mehrere E/A- Kanäle, die mit E/A-Vorrichtungen verbunden sind. Diese Elemente sind innerhalb dieses Prozessor-Speicher-Komplexes verbunden, um Eingang/Ausgang-Datenkommunikationen auszuführen. In vielen bekannten Systemen ist die Verbindung zwischen dem Prozessor und dem E/A-Kanal eine feste Verbindung. Wenn es nur einen Prozessor gibt, wie z. B. in einem Umprozessorcomputersystem, erzeugen die festen Verbindungen zwischen den E/A-Vorrichtungen und dem Prozessor keine Beschränkung, weil der einzelne Prozessor, der alle E/A-Vorrichtungen steuert, sich nur mit einer Funktion gleichzeitig befassen kann. In Multiprozessorsystemen, die mehrere zentrale Prozessoren enthalten, kann die feste Verbindung jedes E/A-Kanals mit einem Prozessor Probleme hervorrufen. Wenn das Programm, das auf einem Prozessor läuft, Zugriff auf eine Vorrichtung auf einem E/A-Kanal benötigt, der mit einem anderen Prozessor verbunden ist, kann die Kommunikation erfolgen, aber nur über einen weiten Umweg. Solche Umwege erzeugen im allgemeinen ineffiziente Datenübertragungen und eine unnötige Datenbewegung innerhalb des Systemspeichers. Die Ineffizienzen resultieren hauptsächlich aus der festen Anschlußfähigkeit jedes E/A-Kanals an einen besonderen Prozessor.
  • Die Datenkommunikation in einem Multiprozessorsystem erfordert manchmal die Bewegung von Daten von einem Speicherplatz zu einem anderen Speicherplatz als Ergebnis der festen Anschlußfähigkeit. Es ist üblicherweise ineffizient, Daten von einem Speicherplatz zu einem anderen Speicherplatz zu bewegen, weil diese Speicherbewegungen nicht zum nützlichen Datendurchsatz oder zur Datenverarbeitungseffizienz beitragen. Das Bewegen von Daten zwischen einer peripheren Vorrichtung und dem Speicher in jeder Richtung ist akzeptabel, aber das Bewegen von Daten zwischen verschiedenen Plätzen in dem Hauptspeicher sollte nach Möglichkeit im allgemeinen vermieden werden.
  • Ein gemeinsames Verfahren zum Handhaben von E/A-Anforderungen in bekannten Computersystemen besteht darin, Interrupts oder Unterbrechungen zum Ausführen von Eingang/Ausgang-Funktionen zu benutzen. Der Aufbau der meisten modernen Prozessoren (einschließlich der gesamten gegenwärtigen Generation von Hochleistungsmikroprozessoren) ist jedoch so, daß Interrupts nur auf Kosten des Aufwands von relativ großen Mengen an Zeit und von Verarbeitungsresourcen gehandhabt werden. Demgemäß ist das Minimieren des Auftretens von Interrupts ziemlich wichtig. Das Minimieren des Auftretens von Interrupts ist bei solchen bekannten Computersystemen außerdem ziemlich schwierig.
  • In vielen bekannten Mehrprozeß-Multiprozessorsystemen neigen die E/A-Treiber dazu, etwas komplexer Natur zu sein, und es besteht die Tendenz, daß ihre Betriebsroutinen schwierig aufrechtzuerhalten sind. Dieses Problem wird weiter verschärft, wenn die E/A-Treiber und die Prozessoren, mit denen sie auf eine feste Art und Weise verbunden sind, spezifische Betriebscodes benutzen, die nur für den besonderen Prozessor und die besonderen angeschlossenen E/A- Treiber verwendbar sind. Der Mangel an Gemeinsamkeit in solchen Anordnungen addiert sich zu der Komplexität des Systems und bringt im allgemeinen Ineffizienz der Datenverarbeitung und des Datendurchsatzes mit sich.
  • In der Vergangenheit haben einige Computersysteme E/A-Prozessoren oder periphere Prozessoren benutzt, um hauptsächlich zu versuchen, die E/A-Steuerfunktionen zwischen den E/A-Prozessoren und den zentralen Prozessoren des Systems aufzuteilen. Ein Beispiel dieses Typs von System ist in einem Dokument veranschaulicht, bei dem es sich um A MINI-MICRO CONFERENCE RECORD, Mai 1984, S. 1-9, Northeast, New York, US, von J.B. Lohmeyer et al. in "SCSI Host Adapter and Controller Command Structure" handelt. In diesem Dokument ist ein Verfahren beschrieben zum Kommunizieren zwischen wenigstens einem Prozessor und den E/A-Vorrichtungen eines Computersystems gemäß dem Oberbegriff des Anspruchs 1.
  • Einige dieser bekannten E/A-Verarbeitungssysteme haben ausreichend gut gearbeitet, aber weit mehr von ihnen haben den Datendurchsatz tatsächlich verlangsamt und haben zu schlechter Effizienz geführt, und zwar aufgrund des zusätzlichen Aufwands an Kommunikation zwischen dem zentralen Prozessor und dem E/A-Prozessor.
  • Die Erfindung ist auf die Milderung der vorgenannten Probleme gerichtet, die in bekannten Multiprozessorsystemen auftreten.
  • Um das zu erreichen, ist das Verfahren nach der Erfindung durch die Schritte gekennzeichnet, die im kennzeichnenden Teil des Anspruchs 1 angegeben sind. Allgemein zusammengefaßt schafft die Erfindung ein Verfahren zum Kommunizieren mit E/A-Adaptern und den E/A-Vorrichtungen, die an sie angeschlossen sind, durch Verwendung von gemeinsam benützten Speicherstrukturen im Hauptspeicher. Jeder Prozessor in dem Computersystem kann mit irgendeinem anderen Prozessor, einem E/A-Adapter oder einer E/A-Vorrichtung über die gemeinsam benützten Speicherstrukturen verkehren, weil die E/A-Adapter und die Prozessoren des Systems durch den Bus mit dem Hauptspeicher gemeinsam verbunden sind.
  • Das Verfahren nach der vorliegenden Erfindung benutzt eine Mehrebenenkommunikationsstruktur. Die erste Speicherstruktur, die als eine Mailbox bezeichnet wird, wird zum Halten von Daten zum Übertragen von Modulinformation zwischen jedem Prozessor und jedem E/A-Adapter etabliert. Eine zweite Speicherstruktur wird zum Halten von Daten zum Übertragen von E/A-Vorrichtungsinformation zwischen Prozessoren und den E/A-Vorrichtungen, die jedem E/A-Adapter zugeordnet sind, etabliert. Eine dritte Speicherstruktur wird zum Halten von Daten zum übertragen von E/A-Vorrichtungsoperationen und zum Übertragen von Daten zu und aus der E/A-Vorrichtung, wobei vorbestimmte Speicherplätze benutzt werden, etabliert. In einer bevorzugten Ausführungsform der Erfindung wird eine vierte Speicherstruktur optional etabliert zum Halten von Daten zum übertragen von zusätzlichen E/A-Vorrichtungsoperationen, wenn die dritte Speicherstruktur keine ausreichende Kapazität hat, um die E/A-Vorrichtungsoperation vollständig auszuführen.
  • Es gibt eine beträchtliche Gleichförmigkeit in der Struktur und im Inhalt der Daten, die in jeder Speicherstruktur plaziert werden, was zur Verwendung von nur einem Betriebscode für alle E/A-Operationen in dem System führt. Die Anordnung vermeidet außerdem die Verwendung von E/A-Prozessoren, da Daten innerhalb der Speicherstrukturen direkt interpretiert werden können, um Zustandsmaschinen oder Sequenzer in jedem E/A-Adapter zu steuern, durch den die E/A-Datenübertragungen auszuführen sind. Nachdem die Speicherstrukturen etabliert worden sind, erfolgt die Kommunikation zu und aus den Prozessoren direkt über die Strukturen, wodurch Restriktionen vermieden werden, die aus Forderungen zur Kommunikation über alle hierarchischen Ebenen der Kommunikationsstruktur resultieren. Probleme von fester Anschlußfähigkeit und von Speicher-zu-Speicher-Bewegung werden vermieden, indem die gemeinsamen Speicherstrukturen und die mehrfachen Ebenen der Kommunikationsstruktur mit Zeigern zwischen denselben benutzt werden.
  • Die vorliegende Erfindung wird unter Bezugnahme auf die beigefügte ausführliche Beschreibung einer gegenwärtig bevorzugten Ausführungsform der Erfindung und auf die beigefügten Zeichnungen vollständiger verständlich. Der Schutzbereich der Erfindung selbst wird jedoch durch die beigefügten Ansprüche definiert.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 ist ein Blockschaltbild eines eng gekoppelten Multiprozessorcomputersystems, das gemeinsam benützte Strukturen im Hauptspeicher des Systems veranschaulicht, durch die eine Kommunikation zwischen zentralen Prozessormoduln und E/A-Adaptern des Systems gemäß der E/A-Steuertechnik nach der vorliegenden Erfindung erzielt wird.
  • Fig. 2 ist eine Darstellung der vier Ebenen der Kommunikationsstruktur der bevorzugten Ausführungsform der vorliegenden Erfindung. Jeder der Blöcke, die in Fig. 2 dargestellt sind, repräsentiert die Steuerstrukturen in dem Hauptspeicher des Computersystems, das in Fig. 1 veranschaulicht ist, über die die Kommunikation zwischen den zentralen Verarbeitungsmoduln und die E/A-Adaptermoduln erzielt wird.
  • Fig. 3 ist ein Blockschaltbild ähnlich dem in Fig. 1, das zusätzlich E/A-Vorrichtungen veranschaulicht, die an E/A- Adaptermoduln angeschlossen sind, und weiter Modulabruf-, Vorrichtungsabruf- und Unterbrechungsanforderungssignale veranschaulicht, die zwischen den zentralen Verarbeitungsmoduln und den E/A-Adaptermoduln übertragen werden und einen Teil der E/A-Steuertechnik der vorliegenden Erfindung bilden.
  • Fig. 4 ist ein Blockschaltbild ähnlich dem in Fig. 3, das die in Fig. 2 gezeigten Steuerstrukturen in den Hauptspeichermoduln des Computersystems veranschaulicht sowie den Kommunikationsweg von Signalen zwischen einem zentralen Verarbeitungsmodul und einem E/A-Adaptermodul dieser gemeinsam benützten Strukturen im Hauptspeicher.
  • Fig. 5 ist ein Blockschaltbild, das die verschiedenen Steuerstrukturen, die in Fig. 2 gezeigt sind, ausführlicher veranschaulicht.
  • Die Fig. 6, 7 und 8 sind Darstellungen der Speicherlayouts von gemeinsamen Unterstrukturen, die in mehreren der Steuerstrukturen benutzt werden, welche in Fig. 5 gezeigt sind, insbesondere ein Befehl/Status-Doppelwort, Extent-Deskriptor bzw. ein Interrupt-Deskriptor.
  • Die Fig. 9, 10A und 10B gemeinsam, 11, 12 und 13 sind Darstellungen der Speicherlayouts der Steuerstrukturen für Mailbox, Warteschlange-Deskriptor, E/A-Deskriptor, Transfersteuerliste bzw. Exzeption-Status-Block, die alle in Fig. 5 gezeigt sind.
  • Fig. 14 ist ein Zustandsübergangsdiagramm, das den Betrieb einer exemplarischen Vorrichtung zeigt, die an einen E/A- Adaptermodul angeschlossen ist, gemäß der vorliegenden Erfindung.
  • Ausführliche Beschreibung
  • Ein eng gekoppeltes Multiprozessorcomputersystem, für das die vorliegende Erfindung beträchtliche Vorteile bietet, auf das sie sich aber nicht notwendigerweise beschränkt, ist in Fig. 1 dargestellt. Das System enthält eine Vielzahl von zentralen Prozessormoduln 20 und eine Vielzahl von Eingang/Ausgang(E/A)-Adaptermoduln 22, die durch einen Systembus 24 verbunden sind. Das Computersystem benutzt außerdem einen gemeinsamen Hauptspeicherpool, der durch Speichermoduln 26 gebildet wird. Jeder E/A-Adaptermodul 22 ist mit einer oder mehreren E/A-Vorrichtungen verbunden, die in Fig. 1 nicht im einzelnen gezeigt sind. Alle Kommunikationen zwischen den zentralen Prozessormoduln und den E/A-Adaptermoduln erfolgt über Strukturen 28 in einem oder mehreren der Hauptspeichermoduln 26. Jede Struktur 28 besteht aus einem oder mehreren adressierbaren Speicherplätzen in den Hauptspeichermoduln 26.
  • Da alle Moduln in dem System mit dem Bus 24 verbunden sind, können die zentralen Prozessormoduln 20 und die Adaptermoduln 22 jeweils auf die Strukturen 28 in den Hauptspeichermoduln 26 zugreifen. Es ist deshalb zu erkennen, daß es keine feste Verbindung zwischen irgendeinem der zentralen Prozessoren und irgendeinem besonderen E/A-Adapter gibt. Vielmehr kann ein zentraler Prozessor aufirgendeinen E/A-Adapter zugreifen, indem er in die Strukturen 28 im Hauptspeicher einschreibt, und anschließend kann der E/A- Adapter die Strukturen lesen. Ebenso kann irgendein Adaptermodul 22 Information zu irgendeinem zentralen Prozessormodul durch Einschreiben in die Strukturen 28 übertragen, und der zentrale Prozessor kann anschließend die Strukturen 28 lesen. Die Kommunikation zwischen den Prozessormoduln 20 und den Adaptermoduln 22 bietet somit dynamische Anschlußfähigkeit, wodurch die Verwendung von Datenumwegen und von Bewegungen von Speicher zu Speicher vermieden werden. Durch Verwendung der E/A-Steuertechnik nach der vorliegenden Erfindung zum Kommunizieren zwischen den Prozessor- und Speichermoduln werden die Erfordernisse von speziellen Codes, peripheren Prozessoren und dgl. vermieden. Die gemeinsame Verwendbarkeit der vorliegenden E/A- Steuertechnik für alle Moduln trägt zur Erhöhung des Datendurchsatzes und der Systembetriebseffizienz bei.
  • Fig. 1 veranschaulicht zwar ein Multiprozessorcomputersystem, die vorliegende Erfindung ist jedoch gleichermaßen bei Umprozessorsystemen verwendbar. Beträchtliche Vorteile ergeben sich jedoch, wenn die vorliegende Erfindung in einem Multiprozessorcomputersystem benutzt wird.
  • In der bevorzugten Ausführungsform der vorliegenden Erfindung sind alle Steuerstrukturen 28 aus Gruppen von Doppelwort-Speicherplätzen aufgebaut, die an Doppelwortgrenzen in den Hauptspeichermoduln 26 ausgerichtet sind. Ein Doppelwort besteht aus einer 32-Bit-Entität, die aus zwei benachbarten 16-Bit-Wörtern aufgebaut ist. Jedes Wort hat eine Länge von zwei Bytes. In den Steuerstrukturen sind die Doppelwörter ausgerichtet, weil ihre Bytes niedriger Ordnung an Speicheradressen angeordnet sind, die Null-Modulo ihrer Größe in Bytes sind. Ausgerichtete Wörter sind an gleichen Adressen, und ausgerichtete Doppelwörter sind an Adressen, die ganzzahlige Vielfache von vier sind.
  • Die bevorzugte Ausführungsform bietet eine Vier-Ebenen-Kommunikationsstruktur, bei der die Steuerstrukturen in dem gemeinsam benützten Hauptspeicherpool benutzt werden. Die vier Ebenen der Kommunikationsstruktur sind in Fig. 2 dargestellt. Jede Ebene hat wenigstens eine Steuerstruktur. Die Steuerstruktur der oberen Ebene ist als Mailbox (MB) 30 bezeichnet. Die Mailbox 30 wird zur Kommunikation zwischen einem Prozessormodul und einem E/A-Adapter oder zwischen zwei Prozessormoduln benutzt und dient zum Befassen mit den Prozessormoduln 20 und den Adaptermoduln 22. Funktionen, auf die in dieser Ebene zugegriffen werden kann, beinhalten Initialisierung, Diagnose und Fehlerbeseitigung.
  • Es gibt eine Mailbox für jeden physikalischen Modul 20 und 22 (Fig. 1). Jede Mailbox existiert an einer festgelegten physikalischen Stelle oder Adresse in den Hauptspeichermoduln 26 (Fig. 1), die jedem Modul eindeutig zugeordnet ist. Die festgelegte physikalische Adresse oder Stelle kann auf einer zugeordneten Modulnummer oder auf irgendeiner anderen Einrichtung basieren, durch die die einzige, unzweideutige Adresse im Hauptspeicher bestimmt werden kann. Diese einzige unzweideutige Adresse muß so sein, daß jeder Modul eindeutig bestimmen kann, welches dieser Adresse für jeden anderen Modul ist, und auf die Mailbox zugreifen kann, die jedem anderen Modul zugeordnet ist. Diese Adresse basiert vorzugsweise auf der Schlitznummer oder dem Verbinder, mit dem der Modul verbunden ist, wie es in der oben beschriebenen gleichzeitig anhängigen Anmeldung beschrieben ist.
  • Zusätzlich zu dem Zweck des Sendens von Steuerfunktionen, welche die Moduln des Systems betreffen, dient die Mailbox außerdem als Einrichtung zum Initialisieren der unteren Ebenen der Vier-Ebenen-Kommunikationsstruktur. Diese Funktionen betreffen den Modul selbst und beziehen sich nicht auf irgendeine Vorrichtung oder irgendeinen Kommunikationskanal, der mit dem Modul verbunden ist. Es gibt keine Befehle, die über die Mailboxen 30 gesendet werden, um tatsächlich zu bewirken, daß es zur Eingabe/Ausgabe kommt.
  • Die zweite Ebene in der Kommunikationsstruktur ist mit Warteschlange-Deskriptoren (QD) 32 bezeichnet. Jeder Warteschlange-Deskriptor 32 wird als ein Ergebnis eines Befehls erzeugt, der über die Mailbox 30 übertragen wird. Warteschlange-Deskriptoren werden auch als ein Ergebnis von Befehlen zerstört, die über die Mailbox 30 übertragen werden.
  • Zum Ausführen von Eingabe/Ausgabe-Funktionen oder irgendeiner anderen Kommunikation, die mit der E/A-Vorrichtungssteuerung verbunden ist, muß ein Warteschlange-Deskriptor 32 als eine Steuerstruktur im Hauptspeicher 26 (Fig. 1) erzeugt werden. Nachdem der Warteschlange-Deskriptor erzeugt worden ist, ist es möglich, mit der spezifizierten Vorrichtung zu kommunizieren, wenn der Warteschlange-Deskriptor erzeugt worden ist. Nachdem alle notwendigen Warteschlange-Deskriptoren erzeugt worden sind, ist wenig weiterer Bedarf für die Mailbox, und alle Kommunikationen, bei denen es sich nicht um die Beseitigung eines katastrophalen Fehlers handelt, können direkt über den Warteschlange-Deskriptor oder seine untergeordneten Steuerstrukturen erfolgen.
  • Mehr als ein Warteschlange-Deskriptor 32 kann für die Verwendung durch einen einzelnen E/A-Adaptermodul durch eine Sequenz von Befehlen in der Mailbox 30 erzeugt werden. Die meisten E/A-Adapter sind in der Lage, mehrere Warteschlange-Deskriptoren gleichzeitig zu stützen. Es gibt einen Warteschlange-Deskriptor für jede Vorrichtung, die an den Adapter angeschlossen ist. In diesem Zusammenhang bedeutet eine "Vorrichtung" eine Entität, die durch den E/A- Adapter auf eine Weise gestützt wird, daß sie in der Lage ist, E/A-Operationen unabhängig von und gleichzeitig mit anderen derartigen Entitäten auszuführen. In dem Fall von einzelnen Vorrichtungskontrollern, die zu mehreren gleichzeitigen Operationen in der Lage sind (z. B. die Sender- und Empfängerteile eines Vollduplexnetzwerksinterface), kann mehr als eine Warteschlange-Deskriptor-Vorrichtung einer einzelnen physikalischen Vorrichtung zugeordnet sein. In dem Fall von mehreren Vorrichtungen, die über einen Vorrichtungskontroller angeschlossen sind, der nicht zu überlappten Operationen in der Lage ist (z. B. ein Bandkontroller, an den bis zu vier Bandantriebe angeschlossen werden können, der aber nur zu einem gleichzeitig übertragen kann), kann eine einzelne Warteschlange-Deskriptor-Vorrichtung mehr als einem physikalischen Gerät oder physikalischen Vorrichtung zugeordnet sein.
  • Der funktionale Zweck jedes Warteschlange-Deskriptors 32 ist es, Steuerinformation zu halten, die durch die Prozessoren und E/A-Adapter benötigt wird, um eine Warteschlange von E/A-Deskriptoren (EAD) 34 für eine bestimmte Vorrichtung, die an den Adapter angeschlossen ist, aufrechtzuerhalten.
  • Die tatsächliche Eingang/Ausgang-Kommunikation erfolgt durch interpretierende E/A-Deskriptoren (EAD) 34, die auf der dritten Ebene der Kommunikationsstruktur benutzt werden. Jeder E/A-Deskriptor enthält die grundlegende Steuerinformation für eine einzelne E/A-Operation durch eine einzelne Vorrichtung. Die E/A-Deskriptoren für eine Vorrichtung werden jeweils in der Reihenfolge der auszuführenden Operationen miteinander verbunden, um die Vorrichtungswarteschlange für die Vorrichtung zu etablieren. Die Vorrichtungswarteschlange von miteinander verbundenen E/A-Deskriptoren gestattet dem E/A-Adapter, zu dem nächsten Befehl in einem E/A-Deskriptor bei Beendigung des vorherigen Befehls zu gehen, ohne daß die Intervention eines Prozessors in einer Operation, die als Befehlsverkettung bezeichnet wird, erforderlich ist. Das ist ein beträchtlicher Vorteil bei der vorliegenden Erfindung, weil dadurch die Notwendigkeit von extensiven Interrupts an den Prozessoren reduziert oder eliminiert wird.
  • In In dem Fall von einfachen E/A-Vorrichtungen ist es im allgemeinen möglich, die E/A-Operation in dem E/A-Deskriptor 34 vollständig zu spezifizieren. Jedoch in dem Fall von komplexeren E/A-Vorrichtungen gibt es einen Bedarf an mehr vorrichtungsspezifischer Steuerinformation. Um alle E/A-Deskriptoren 34 im Inhalt gleichmäßig zu machen, ist die ausgedehnte Steuerinformation für eine E/A-Vorrichtung nicht in dem E/A-Deskriptor enthalten. Statt dessen wird eine Hilfssteuerstruktur, die als Vorrichtungssteuerblock (DCB) 36 bezeichnet wird, erzeugt.
  • Die Inhalte des Vorrichtungssteuerblockes 36 sind beliebig und hängen von dem spezifischen Typ der E/A-Vorrichtung ab, die mit dem Adapter verbunden ist. Der Vorrichtungssteuerblock 36 ist einfach eine flexible Einrichtung zum Zuordnen von Speicher, um die vorrichtungsspezifischen Befehle zu halten, welche zum Ausführen einer einzelnen E/A-Operation für eine besondere E/A-Vorrichtung notwendig sind. Der Vorrichtungssteuerblock 36 besetzt die vierte Ebene der Kommunikationsstruktur.
  • Eine Transfersteuerliste (TCL) 38 kann ebenfalls in Verbindung mit jedem E/A-Deskriptor 34 in der vierten Ebene der Kommunikationsstruktur benutzt werden. Die Transfersteuerliste ist eine Liste von einem oder mehreren Pufferdeskriptoren, die gestatten, einen oder mehrere separate, nichtbenachbarte Bereiche des Speichers einer einzelnen E/A-Operation logisch zuzuordnen. Das erlaubt, daß Übertragungen zu und aus Datenpuffern immer dann erfolgen können, wenn es für die Datenpuffer am vorteilhaftesten ist, im Speicher zu existieren, statt Daten zu im voraus zugeordneten oder festgelegten Puffern bewegen zu müssen, um E/A-Transfers durchzuführen. Was häufig als Streu- oder Sammelmöglichkeit bezeichnet wird, wird erzielt. Für eine Ausgangsoperation können die Daten aus den separaten Speicherbereichen gesammelt werden, und für eine Eingangsoperation können die Daten auf diese separaten Speicherbereiche verstreut werden. Diese Streu- oder Sammelmöglichkeit hat den Vorteil, daß die Information in Puffern aufgezeichnet wird, wo die Betriebssoftware höherer Ebene des Systems die Daten anzuordnen wünscht, ohne eine unnötige Bewegung dieser Information von Speicher zu Speicher vornehmen zu müssen.
  • Ein Exzeption-Status-Block (ESB) 40 ist zwar in Fig. 2 veranschaulicht, der Exzeption-Status-Block ist jedoch keine besondere Ebene innerhalb der Kommunikationsstruktur. Der Exzeption-Status-Block 40 ist logisch ein Teil des Warteschlange-Deskriptors 32. Der Exzeption-Status-Block 40 ist nicht physikalisch ein Teil des Warteschlange-Deskriptors, weil es erwünscht ist, den Warteschlange-Deskriptor auf einer festgelegten Größe zu halten. Der Exzeption-Status- Block 40 wird manchmal überhaupt nicht benötigt, und wenn er benötigt wird, ist er in der Größe variabel. Demgemäß ist der Exzeption-Status-Block 40 separat von dem Warteschlange-Deskriptor 32 ausgebildet. Der Exzeption-Status- Block 40 ist mit dem Warteschlange-Deskriptor durch einen Zeiger verbunden.
  • Die Funktion des Exzeption-Status-Blockes 40 ist es, Speicherraum zum Speichern von Information bereitzustellen, die den Status von Exzeptionsbedingungen betrifft, welche bei der Ausführung von Vorrichtungsebenenbefehlen aufgetreten sein können. Ein Exzeption-Status-Block ist jedem Warteschlange-Deskriptor 32 zugeordnet. Die Exzeptionen, über die berichtet wird, treten zwar tatsächlich aufgrund der Verarbeitung von E/A-Deskriptoren auf, die Zuordnung eines Exzeption-Status-Blockes für jeden E/A-Deskriptor 34 könnte jedoch ein beträchtliches Ausmaß an Speicher vergeuden, weil Exzeptionen bei der Verarbeitung von E/A-Funktionen selten sind. Statt dessen erlaubt die Verwendung des einzelnen Exzeption-Status-Blockes 40 für jede Vorrichtung, daß er von allen E/A-Deskriptoren 34, die einem Warteschlange-Deskriptor 32 zugeordnet sind, gemeinsam benützt wird. In Wirklichkeit ist die Funktion des Exzeption-Status-Blockes 40 unten auf der vierten Ebene der Kommunikationsstruktur, wie es in Fig. 2 dargestellt ist, da er Exzeptionsbedingungen auf zeichnet, die sich auf die E/A-Vorrichtungsoperationen beziehen.
  • Solange E/A-Operationen ohne Exzeptionen erfolgreich abgeschlossen werden, wird die Verarbeitung von E/A-Deskriptoren sequentiell die Warteschlange entlang von E/A- Deskriptor zu E/A-Deskriptor weitergehen. Wenn eine Exzeption erfolgt, wird die Information, die erklärt, was falsch gelaufen ist und wann während der Operation das Problem aufgetreten ist, in dem Exzeption-Status-Block 40 plaziert, und die Verarbeitung wird gestoppt, bis die Exzeption durch Software in einem zentralen Prozessor behandelt worden ist. Wenn eine Exzeption auftritt, können Vorrichtungsoperationen für diese Vorrichtung nicht sicher weitergehen, und etwas wird als falsch angezeigt. Nachdem der Exzeptionszustand korrigiert worden ist, besteht nicht länger irgendein Grund, die Exzeptionsinformation im Speicher gespeichert zu halten, was erlaubt, denselben Exzeption-Status-Block 40 wieder zu verwenden, wenn die Verarbeitung der Vorrichtungswarteschlange wieder aufgenommen wird.
  • Um die Kommunikationsstrukturen zu benutzen, die in Fig. 2 dargestellt sind, und insbesondere die Mailbox 30, wird eine Einrichtung oder ein Signal zum Instruieren eines Moduls, seine Mailbox zu inspizieren, verlangt. Diese Instruktion an einen Modul, seine Mailbox zu inspizieren, wird durch eine logische Operation erzielt, die als Modulaufruf bezeichnet wird. Gemäß der Darstellung in Fig. 3 geht, wie veranschaulicht, ein Modulaufrufsignal von einem zentralen Verarbeitungsmodul 20a aus, das über den Systembus 24 zu einem E/A-Adapter 22b übertragen wird. Der E/A- Adaptermodul 22b empfängt den Modulaufruf mit einem eine hohe Priorität aufweisenden oder nichtmaskierbaren Interrupt. Der Modulaufruf veranlaßt den E/A-Adapter 22b, den Inhalt seiner Mailbox zu inspizieren, durch Lesen der Information, die in der Mailbox enthalten ist. Eine solche Leseoperation ist in Fig. 4 veranschaulicht, wo der E/A-Adaptermodul 22b Information aus der Mailbox über den Systembus 24 empfängt. Die aus der Mailbox empfangene Information instruiert den E/A-Adapter 22b, gewisse Funktionen auszuführen.
  • In der weiter oben erwähnten Anmeldung, die gleichzeitig mit der vorliegenden eingereicht worden ist, ist eine Steuerraumtransferoperation über den Bus beschrieben. Eine Serie von Steuerraumadressen wird für Modulaufruffunktionen in der bevorzugten Ausführungsform zugeordnet. In dem Fall der weiter oben erwähnten Anmeldung ist der Modulaufruf in Form von Steuertransfers realisiert worden, die über den parallelen Bus des Computersystems ausgeführt werden. Die Modulaufrufe können auch Zwischenmoduln durch serielle Signaltransfers über eine bitserielle, d. h. eine ein Bit breite serielle Kommunikationsverbindung übertragen werden. Irgendeine Einrichtung zum Senden eines Signals, welches den Modul als einen Modulaufruf interpretiert, der ihn veranlaßt, seine Mailbox zu inspizieren, ist für die beschriebenen Zwecke ausreichend. Die Modulaufrufsignale müssen gleichmäßig sein, und die Einrichtung zum Senden derselben muß bei allen Moduln des Systems verwendbar sein.
  • Verschiedene Vorrichtungen 42a, 42b, 42c, 44a, 44b, 44c, 46a und 46b sind verbunden mit den E/A-Adaptermoduln 22a, 22b und 22c, die in den Fig. 3 und 4 dargestellt sind, gezeigt. Gemäß der Darstellung in den Fig. 3 und 4 ist jede Vorrichtung mit jedem E/A-Adapter durch einen gemeinsamen E/A-Kanal verbunden; es ist jedoch auch möglich, einen einzelnen E/A-Adapter mit mehreren E/A-Kanälen zur Unterstützung einer Vielzahl von Vorrichtungen zu verbinden.
  • Um den E/A-Adapter zu starten, damit er eine E/A-Funktion ausführt, wird ein Vorrichtungsaufrufbefehl zwischen Moduln übertragen. Der Vorrichtungsaufruf wird an eine der Vorrichtungen gerichtet, die mit einem E/A-Adapter verbunden ist, wie es in Fig. 3 gezeigt ist. Der Vorrichtungsaufruf, der in Fig. 3 gezeigt ist, wird zwischen dem zentralen Verarbeitungsmodul 20c und dem E/A-Adaptermodul 22a übertragen. Der E/A-Adaptermodul 22a enthält Schaltungselemente, die das Vorrichtungsaufrufsignal erkennen und beginnen, die Vorrichtungswarteschlange für eine besondere identifizierte Vorrichtung, die an den Modul 22a angeschlossen ist, abzuarbeiten. Gemäß der Darstellung in Fig. 3 ist die Vorrichtung 42b das Ziel der E/A-Operationen, die als ein Ergebnis der Übertragung des Vorrichtungsaufrufs von dem Prozessor 20c zu dem E/A-Adapter 22a ausgeführt werden.
  • Das Vorrichtungsaufrufsignal instruiert den E/A-Adaptermodul, den Warteschlange-Deskriptor für die bezeichnete Vorrichtung zu inspizieren und jeden Befehl auszuführen, den er in der Vorrichtungswarteschlange findet, die durch den Warteschlange-Deskriptor gestützt wird. Fig. 4 veranschaulicht den Effekt des Vorrichtungsaufrufsignals (Fig. 3), der darin besteht, daß der E/A-Adaptermodul 22a Befehle für die Vorrichtung 42b aus einem zugeordneten Warteschlange Deskriptor 32 liest. Nachdem der Mailbox-Befehl Warteschlange-Deskriptoren für jede Vorrichtung erzeugt hat, die an jeden E/A-Adaptermodul angeschlossen ist, erfolgt die Kommunikation zwischen den zentralen Prozessoren und den E/A-Vorrichtungen direkt mit den Warteschlange-Deskriptoren und nicht über die Mailbox. Die Befehle in dem Warteschlange-Deskriptor, die am üblichsten bei Empfang eines Vorrichtungsaufrufs ausgeführt werden, sind diejenigen zum Initialisieren der Warteschlange, d. h. zum Zurücksetzen des laufenden Zeigers, um ihn gleich dem Kopfzeiger zu machen, und am Beginn zu starten; Unterbrechen der Vorrichtungswarteschlangenabarbeitung; oder Fortsetzung der Abarbeitung der Schlange, was bedeutet, daß die Warteschlangenabarbeitung wieder aufgenommen wird, was alles im folgenden ausführlicher beschrieben ist.
  • Wiederum können, wie es in der gleichzeitig anhängigen Anmeldung beschrieben ist, Vorrichtungsaufrufe über Steuerraumtransfers auf dem Systembus 24 übertragen werden. Irgendeine Einrichtung, die eine eindeutige Kommunikation eines Signals zwischen irgendeinem Modul und irgendeinem anderen Modul gestattet, wäre auch verwendbar zum übertragen eines Vorrichtungsaufrufs, vorausgesetzt, daß ein solches Signal auch zwischen den verschiedenen Vorrichtungen unterscheidet, die an einen E/A-Modul angeschlossen sind.
  • Jede der Steuerstrukturen, die bei der E/A-Steuertechnik nach der vorliegenden Erfindung benutzt werden, ist ausführlicher in Fig. 5 gezeigt. Alle Steuerstrukturen, die in Fig. 5 gezeigt sind, sind aus Doppelwörtern aufgebaut, die in ausgerichteten Doppelwortspeicherplätzen oder Grenzen in dem Hauptspeicherpool angeordnet sind. Die Anzahl von Doppelwörtern in jeder Steuerstruktur und ihr Feldlayout und die Zeigerverknüpfungen zwischen ihnen werden unten in Verbindung mit den Fig. 6 bis 13 vollständiger erläutert.
  • Zum Erzielen von Einfachheit von Interpretation und Beständigkeit unter den verschiedenen Steuerstrukturen, die in Fig. 5 veranschaulicht sind, sind viele gemeinsame Unterstrukturen innerhalb jeder dieser Steuerstrukturen vorgesehen. Die gemeinsamen Steuerunterstrukturen umfassen ein Befehl/Status-Doppelwort (CSD), einen Extent-Deskriptor (EXTD) und einen Interrupt-Deskriptor (INTD), die in den Fig. 6, 7 bzw. 8 gezeigt sind.
  • Das Befehl/Status-Doppelwort ist die grundlegende Einrichtung für Prozessoren zum Senden von Befehlen zu und zum Empfangen des Status aus E/A-Adaptern und -Vorrichtungen. Das Befehl/Status-Doppelwort sorgt auch für Synchronisation auf Indikatorbasis zwischen jedem Prozessor und den E/A-Adaptern. Ein Befehl/Status-Doppelwort erscheint als das erste Doppelwort in jeder Mailbox 30, jedem Warteschlange-Deskriptor 32 und E/A-Deskriptor 34, wie es in Fig. 5 gezeigt ist.
  • Gemäß der Darstellung in Fig. 6 ist das Befehl/Status-Doppelwort 50 eine 32-Bit-Entität, die in zwei 16-Bit-Wörter unterteilt ist. Das Wort hoher Ordnung, Bits 16 bis 31, enthält Statusinformation, sowohl grundlegende als auch erweiterte. Das Wort niedriger Ordnung, Bits 0 bis 15, enthält Befehlsinformation. Das Wort niedriger Ordnung wird benutzt, um Information vom Sender zum Empfänger über diese Steuerstruktur zu übertragen. Das Statuswort wird benutzt, um Information vom Empfänger zurück zum Sender zu übertragen. Durch den Sendermodul wird das Befehlswort vorinitialisiert, damit es den Befehl und einen Befehlsmodifizierer enthält, der für das geeignet ist, was der Sendermodul auszuführen wünscht, und initialisiert das Statuswort, damit es im wesentlichen null ist. Anschließend interpretiert der Empfänger dieses Befehl/Status-Doppelwortes 50 die Befehlsinformation, und daran anschließend wird er die übrige Information in Mailbox, Warteschlange-Deskriptor oder E/A-Deskriptor im Zusammenhang mit dieser Befehlsinformation interpretieren. Der Empfänger führt anschließend den Befehl aus und berichtet über die erfolgreiche Ausführung des Befehls oder über einen Fehlerzustand bei dem Versuch, diesen Befehl auszuführen. Dieses Berichten über den Status des Befehls wird in das Wort höherer Ordnung des Befehl/Status- Doppelwortes eingeschrieben.
  • Das grundlegende Befehlsbyte, Bits 0 bis 7, spezifiziert die fundamentale Operation, die durch den Empfänger eines Befehl/Status-Doppelwortes auszuführen ist. Alle anderen Felder in der Steuerstruktur bleiben entweder operanden zur Verwendung beim Ausführen dieses Befehls oder Raum zum Zurückleiten des Status, der den Befehl betrifft. Eindeutige Befehlscodes sind für Mailboxen, für Warteschlange-Deskriptoren und für E/A-Deskriptoren zugeordnet, so daß sie voneinander unterscheidbar sind. Das vereinfacht die Befehlsdecodierung und gestattet eine einfache Prüfung auf Fehler, die mit dem Versuch verbunden sind, einen Befehl auf der falschen Ebene der Steuerstruktur auszuführen.
  • Das Befehlsmodifiziererbyte, Bits 8 bis 15, enthält Indikatoren von Modalitäten, die zu der Verarbeitung des Befehls, der in dem grundlegenden Befehlsbyte angezeigt ist, durch einen Adapter gehören. Das Bit 15 wird in den Befehl/Status-Doppelwörtnern von Warteschlange-Deskriptoren und E/A-Deskriptoren benutzt, um ein Flag aufzunehmen, welches anzeigt, daß der EAD-Zeiger in dem Doppelwort, das diesem Befehl/Status-Doppelwort unmittelbar folgt, eine gültige Adresse enthält. Diese Anzeige ist notwendig, um 16-Bit-Prozessoren bei der vorliegenden Erfindung benutzen zu können, da solche 16-Bit-Prozessoren nicht in der Lage sind, Doppelwortadreßwerte in einem einzelnen Buszyklus zu aktualisieren. Es ist deshalb notwendig, diese Einrichtung zu haben, um diesen Zeiger als ungültig zu markieren und die Möglichkeit zu verhindern, daß ein E/A-Adapter versucht, einen Adreßzeiger zu benutzen, wenn nur eines seiner beiden Wörter gültig ist. Wenn eine Leerlauf-Warteschlange abgefragt wird, wird das Bit 15 dieses Befehl/Status-Doppelwortes tatsächlich durch den E/A-Adapter getestet. Die Benutzung der Bits 14 bis 8 des Befehlsmodifiziererbytes ist für besondere Steuerstrukturen spezifisch.
  • Das erweiterte Statusbyte, Bits 16 bis 23, ist für adapterspezifische oder vorrichtungsspezifische Statusberichte in Fällen verfügbar, in denen Statusinformation nicht in das grundlegende Statusbyte, Bits 24 bis 31, paßt. Das grundlegende Statusbyte ist die primäre Einrichtung zum übertragen eines Ausgeführt-Status des durch dieses Befehl/Status-Doppelwort spezifizierten Befehls.
  • Das grundlegende Statusbyte dient auch als eine Verriegelung zum Beschränken des Zugriffs durch irgendeinen Prozessor auf die Steuerstruktur, die dieses Befehl/Status- Doppelwort enthält, während die Steuerstruktur die Verarbeitung durch den E/A-Adapter erwartet und während der Adapter die Operation ausführt. Eine Verriegelung sorgt für gegenseitige Ausschlußverriegelung einer Steuerstruktur. Verriegelungen schließen den Zugriff durch einen verlangenden (üblicherweise einen Prozessor) aus, während eine Steuerstruktur durch einen Server (üblicherweise einen Adapter) in Benutzung ist. Die Bits 31 und 30 dienen als Steuerstrukturstatusflags, und diese Bits sind die allgemeinen Statusbits, die sich auf die Ausführung des Befehls beziehen, der in dem grundlegenden Befehlsbyte spezifiziert ist. Das Bit 31 dient auch als die Strukturverriegelung. Das Bit 29 wird in den E/A-Deskriptoren am Ende der durch das grundlegende Befehlsstatusbyte spezifizierten Operation auf "1" gesetzt, wenn die Vorrichtungsfunktion in dem Adapter, der diesen E/A-Deskriptor verarbeitet, einen Interrupt als ein Ergebnis dessen verlangte, daß er diesen Befehl auszuführen versucht, diesen Befehl ausführt oder die Verarbeitung dieses Befehls beendet. Der Zustand des Bits 29 wird durch den Adapter nicht geändert, außer dann, wenn am Ende einer Operation über den Status berichtet wird. Das Bit 28 ist ein universelles Statusbit zur Verwendung auf eine strukturabhängige Weise. Die Bits 27 bis 24 enthalten den Beendigungsstatus für den in den grundlegenden Befehlsbyte spezifizierten Befehl. Beendigungscodezuordnungen sind steuerstrukturspezifisch.
  • Die Verriegelungsfunktion, die durch die Bits 30 und 31 in dem grundlegenden Statusbyte ausgeführt wird, ist bei der vorliegenden Erfindung bedeutsam. In Multiprozessorcomputersystemen, wo irgendeiner der Prozessoren oder anderen Moduln danach trachten kann, auf einen bestimmten Speicherplatz oder eine bestimmte Steuerstruktur gleichzeitig zuzugreifen, ist es notwendig, eine Einrichtung zu haben, durch die der kritische Speicherabschnitt geschützt werden kann, so daß auf ihn nur durch einen Modul gleichzeitig und bis zur Beendigung der besonderen Transaktion eingewirkt werden kann. Eine solche Anordnung ist als Verriegelung, Drehschloß, Hartschloß od. dgl. bekannt. Die normale Art und Weise, auf die eine Verriegelung realisiert wird, verlangt eine Operation, die als Testen und Setzen bezeichnet wird. Als ein Ergebnis der vorliegenden Erfindung und der Benutzung insbesondere der Steuerstrukturstatusflags in den Bits 30 und 31 des Befehl/Status-Doppelwortes ist es jedoch möglich, daß die vorliegende Erfindung in einer Multiprozessorumgebung mit echter Gleichzeitigkeit erfolgreich arbeitet, ohne die Verwendung von Testen und Setzen durch E/A-Adaptermoduln zu verlangen.
  • Die beiden Statusflags in den Bits 30 und 31 des Befehl/Status-Doppelwortes zeigen an, daß die Prozessoren die Steuerinformation weder modifizieren sollten noch auf die Statusinformation in der besonderen Steuerstruktur einwirken sollten, während diese Struktur auf die Verarbeitung durch einen E/A-Adapter wartet oder während der E/A-Adapter die Operation ausführt, die in der Streuerstruktur spezifiziert ist.
  • Zum Liefern einer Anzeige darüber, wann dieser konkurrierende Zugriff erfolgen kann, und um ihn zu verhindern, dienen die Steuerstrukturstatusflags in den Bits 30 und 31 als eine Verriegelung.
  • Die beiden Statusflags in den Bits 30 und 31 können irgendeinen von vier Zuständen oder Statuscodes bezeichnen. Ein erster "Verfügbar"-Zustand zeigt an, daß es keine aktive Befehlsinformation in der Steuerstruktur gibt und daß irgendeine Statusinformation, die vorhanden gewesen sein kann, durch einen Prozessor bereits interpretiert worden ist. Steuerstrukturinhalte können durch Adapter nicht interpretiert werden, während der "Verfügbar"-Status angezeigt wird.
  • Die beiden Statusflags in den Bits 30 und 31 können auch "Anhängig" anzeigen. Ein anhängiger Zustand zeigt an, daß ein Prozessor Befehlsinformation in diese Steuerstruktur plaziert hat und daß die Steuerstruktur gegenwärtig auf die Verarbeitung durch einen Adapter wartet. Die Steuerstrukturinhalte können durch Prozessoren weder interpretiert noch modifiziert werden, während ein Anhängig-Status angezeigt wird. Eine Ausnahme davon ist, daß Verbindungszeiger, die als ungültig angezeigt werden (durch das Bit 15 des Befehlsmodifizierers), aktualisiert werden können, um gültig zu werden, und dann durch Prozessoren zu irgendeiner Zeit als gültig markiert werden können. Eine Steuerstruktur muß in einem anhängigen Zustand sein, wenn ein E/A-Adapter beginnt, ihre Inhalte zu verarbeiten, oder der Adapter wird einen Fehlerzustand erzeugen und seine Verarbeitung unterbrechen.
  • Ein weiterer Zustand, der durch die beiden Statusflags der Bits 30 und 31 angezeigt wird, ist "busy" (besetzt) . Ein Busy- oder Besetztzustand zeigt an, daß diese Steuerstruktur durch einen E/A-Adapter verarbeitet wird. Die Steuerstrukturinhalte können durch Prozessoren weder interpretiert noch modifiziert werden, während ein Busy-Status angezeigt wird, sofern es sich nicht um das Aktualisieren von Verbindungsinformation (bei dem Bit 15 angegeben) handelt.
  • Ein "Ausgeführt"-Status kann durch die beiden Statusflags in den Bits 30 und 31 ebenfalls angezeigt werden. Ein Ausgeführt-Status zeigt an, daß die Verarbeitung des Befehls, der durch diese Steuerstruktur spezifiziert wird, durch den Adapter abgeschlossen worden ist und daß der Beendigungsstatus zurückgeleitet worden ist. Die Steuerstrukturinhalte können durch Adapter nicht interpretiert werden, während der Ausgeführt-Status angezeigt wird.
  • Beispiele von Codes für die Statusflags sind "00" für "verfügbar", "10" für "anhängig", "11" für "besetzt" und "01" für "ausgeführt". Unter Verwendung dieses Satzes von Codewerten ist immer dann, wenn das Bit 31 des Befehl/Status-Doppelwortes auf "1" gesetzt ist, andere Statusinformation in der Steuerstruktur, die das Befehl/Status-Doppelwort enthält, nicht als gültig garantiert und darf durch Prozessoren nicht interpretiert werden. Tatsächlich ist, wenn das Bit 31 auf "1" gesetzt ist, die Steuerstruktur "im Besitz" des E/A-Adapters, und, wenn das Bit 31 auf "0" gesetzt ist, ist die Steuerstruktur "im Besitz" der zentralen Prozessoren. Die Adapter setzen das grundlegende Statusbyte, um einen Besetzt-Status anzuzeigen, bevor sie das Befehl/Status-Doppelwort lesen, um die Befehlsinformation zu gewinnen. Weil den Prozessoren nicht gestattet wird, Steuerstrukturen zu modifizieren, die mit "anhängig" markiert sind, ist es für den E/A-Adapter nicht notwendig, eine Test- und Setztransaktion zu benutzen, um die Steuerstruktur als Besetzt zu markieren.
  • Die Verwendung des "Verfügbar"-Statuscodes steht im Belieben der Systemsoftware. Die Adapter beginnen, die Steuerstrukturen zu verarbeiten, wenn sie angewiesen werden, das zu tun, und zwar entweder durch Aufrufbedingungen oder Befehlsverkettung. Die Adapter verlangen, daß die Anfangssteuerstruktur "anhängig" ist, und setzen unbedingt den Status auf "besetzt" und anschließend auf "ausgeführt". Die Fähigkeit, Verfügbar- und Ausgeführt-Status voneinander zu unterscheiden, kann für die Systemsoftware beim Erzeugen und Managen von Steuerstrukturen nützlich sein, insbesondere in einer Multiprozessorumgebung. Wenn die Systemsoftware die Wahl trifft, den "Verfügbar"-Status nicht zu benutzen, muß diese Software weiterhin verfolgen, welche Steuerstrukturen, die mit "ausgeführt" markiert sind, auf Interpretation durch E/A-Treiber-Software warten und welche Steuerstrukturen, die mit "ausgeführt" markiert sind, zur Wiederverwendung verfügbar sind. Die E/A-Adapter setzen niemals den Steuerstrukturstatus auf "verfügbar".
  • Da die Operationen zum Umschalten des Zustands des Befehl/Status-Doppelwortes mit normalen Schreiboperationen durch entweder die Prozessoren oder die E/A-Adapter ausgeführt werden können, gibt es keine Notwendigkeit, irgendwelche Tests und Einstellungen in dem Computersystem vorzunehmen, um die Verriegelung zwischen Prozessoren und E/A-Adaptern zu erzielen. Die Ausführung von Tests und Einstellungen kann sehr zeitraubend sein, und der Durchsatz des Systems wird verbessert, indem die normale Schreibfunktion benutzt wird, um den Status in dem Befehl/Status-Doppelwort anzuzeigen, wie oben beschrieben.
  • Eine Extent-Deskriptor (EXTD)-Unterstruktur ist vorgesehen zum übertragen der Startadressen und der Längen von sämtlichen Datenpuffern und von gewissen Steuerstrukturen mit variabler Länge. Ein solcher Extent-Deskriptor 52 ist in Fig. 7 gezeigt. Extent-Deskriptoren sind Unterstrukturen, die in den Warteschlange-Deskriptor-, E/A-Deskriptor-, Transfersteuerliste- und Exzeption-Status-Block-Steuerstrukturen benutzt werden.
  • Der Extent-Deskriptor 52 enthält ein erstes Doppelwort 54 und ein zweites Doppelwort 56, die im Speicher an sequentiellen Doppelwortadreßspeicherplätzen ausgerichtet sind. Das Wort hoher Ordnung in dem ersten Doppelwort 54 ist ein Längenfeld. Das Wort niedriger Ordnung bei den Bits 0 bis 15 ist für spezifischen Steuerstrukturgebrauch verfügbar. Das Längenfeld in dem Wort hoher Ordnung spezifiziert die Anzahl von sequentiell aufsteigenden Bytes in der Datenstruktur, die durch diesen Extent-Deskriptor definiert ist. Ein Längenwert von 0 ist nicht gültig und wird durch den E/A-Adapter als eine Exzeption zurückgewiesen. Das zweite Doppelwort 56 des Extent-Deskriptors 52 enthält ein Adreßfeld. Das Adreßfeld spezifiziert die Anfangsspeicherplatzadresse der Datenstruktur, die durch diesen Extent-Deskriptor definiert ist. Das Extent-Deskriptor-Format erlegt der Adresse der Zieldatenstruktur keine Ausrichtungsrestriktionen auf.
  • Ein Interrupt-Deskriptor (INTD) 58, der in Fig. 8 gezeigt ist, ist die Unterstruktur, die benutzt wird, um die Bedingungen zu übertragen, aufgrund welchen Interrupts verlangt werden, den Zielmodul, der zu unterbrechen ist, und die Ebene, in welcher der Interrupt zu verlangen ist. Interruptanforderungen werden von E/A-Adaptern zu Prozessoren übertragen, wie es in Fig. 3 gezeigt ist, wo der E/A-Adapter 22c einen Interrupt an dem Prozessor 20b verlangt. Die Interrupt-Deskriptoren 58 werden in Mailboxen und Warteschlange-Deskriptor-Steuerstrukturen benutzt.
  • Gemäß der Darstellung in Fig. 8 besetzt der Interrupt-Deskriptor 58 das Wort höherer Ordnung des Doppelwortes 58, d. h. die Bits 16 bis 31. Die Inhalte des Wortes niedriger Ordnung, die bits 0 bis 15, sind für steuerstrukturspezifischen Gebrauch verfügbar. Ein Maskenfeld in den Bits 28 bis 31 enthält Information, die zu spezifischen Klassen von Interruptbedingungen gehört. Interrupts werden nur verlangt, wenn irgendeines der Maskenbits, das zu den aktiven Bedingungen gehört, auf 1 gesetzt ist. Wenn die relevanten Maskenbits auf eine 0 gesetzt sind, wird kein Interrupt verlangt. Das Auftreten von Interruptbedingungen während der Maskierung durch den Adapter wird nicht aufgezeichnet, so daß Interrupts nicht "anhängig" sein können, um auf das Setzen ihres Maskenbits zu warten. Nachdem eine Interruptanforderung einen Prozessormodul erreicht hat, wird sie als anhängig aufgezeichnet, selbst wenn sie durch Hardware an diesem Modul maskiert ist.
  • Ein maskierter Interrupt beeinflußt normalerweise die Verarbeitung von Steuerstrukturen (mit Ausnahme des Interrupt- Deskriptors) nicht und blockiert nicht die Fortsetzung dieser Verarbeitung, wenn diese Fortsetzung nach der Interruptanforderung stattfinden sollte. Eine Exzeption ist, daß die Fortsetzung blockiert wird, falls ein vorheriger Interrupt unbestätigt bleibt und ein anschließender Zustand auftritt, der zu einem zweideutigen Statusreport führen könnte, wenn das Fortsetzen der Vorrichtungsoperation gestattet würde. Interrupts werden niemals verlangt, wenn die E/A-Steuertechnik der vorliegenden Erfindung benutzt wird, und sämtliche Aktivität kann durch Indikatoren gesteuert werden, wenn aber Interrupts benutzt werden, müssen sie auf eine zeitgerechte Weise bestätigt werden. Das Feld, das mit Modulnummer bezeichnet ist, von den Bitnummern 24 bis 27, wird benutzt, um den spezifischen Modul zu identifizieren, der unterbrochen werden soll. Die Interruptadresse in den Bits 16 bis 23 bildet ein Feld, welches die Interruptanforderungsadresse an dem spezifizierten Modul enthält. Bei Benutzung in einem System mit dem Bus, der in der oben erwähnten Anmeldung beschrieben ist, die gleichzeitig mit der vorliegenden eingereicht worden ist, werden die Bits 16 bis 27 als Steuerraumadresse für eine Steuerübertragung, die den Interrupt verlangt, benutzt.
  • Immer dann, wenn ein Befehl abgeschlossen ist oder es eine Exzeption gibt oder irgendeine andere Situation eintritt, in welcher ein Status zu berichten ist, wird ein Interruptzustand in dem E/A-Adapter erzeugt. Interruptanforderungen werden nur als ein Resultat von Interruptbedingungen erzeugt, wenn Interrupts für den geeigneten Typ von Bedingungen durch das Maskenfeld in dem Interrupt-Deskriptor freigegeben sind. Eine Interruptanforderung ist in Fig. 3 dargestellt, wo der E/A-Adaptermodul 22c eine Interruptanforderung zu dem zentralen Prozessormodul 20b sendet.
  • Die Mailboxsteuerstruktur 30 ist in Fig. 9 besser veranschaulicht. Jede Mailbox ist eine 16-Byte-Struktur, die durch vier sequentiell auf steigende, ausgerichtete Doppelwörter gebildet wird. Das erste Doppelwort ist ein Befehl/Status-Doppelwort 50a. Das zweite Doppelwort in der Steuerstruktur ist ein Interrupt-Deskriptor 58a mit einem 16-Bit-Buchstabenfeld in dem Wort niedriger Ordnung. Das dritte Doppelwort 60 enthält die ausgerichtete Doppelwortadresse des Operanden (falls vorhanden) des Mailboxbefehls. Das vierte Doppelwort 62 ist ein gemischtes Feld zum Aufnehmen von befehlsabhängigen Daten.
  • Eine Übereinkunft, die in den Fig. 9, 10A, 10B, 11, 12 und 13 verfolgt wird, ist, daß auf der rechten Seite jedes Doppelwortes seine relative sequentielle Adresse in der Steuerstruktur im Hexadezimalcode bezeichnet wird. Der Großbuchstabe "H" gefolgt von dem Code gibt die Hexadezimalschreibweise an.
  • In dem Befehl/Status-Doppelwort 50a, wie es in Fig. 9 gezeigt ist, befindet sich das Befehlsbyte in den Bits 0 bis 7 und wird zum Aufnehmen des Befehlscodes benutzt. Das Byte hoher Ordnung in den Bits 8 bis 15 des Befehlswortes wird benutzt, um Unterbefehlsfunktionen von gewissen Befehlen auszuwählen. Das erweiterte Statusbyte in den Bits 16 bis 23 ist für adapterspezifischen Gebrauch verfügbar. Die Bits 31 und 30 des grundlegenden Statusbytes in den Bits 24 bis 31 werden benutzt, um die Statusflags aufzuzeichnen, die zuvor in Verbindung mit dem Befehl/Status-Deskriptor beschrieben worden sind. Die Bits 27 bis 24 nehmen den Befehlsbeendigungsstatus auf, der in dem Falle einer Mailbox anzeigt, daß eine Operation erfolgreich abgeschlossen worden ist, ein illegaler Befehlscode spezifiziert wurde, ein Befehl zurückgewiesen wurde, weil er nicht richtig mit dem Adapter in seinem gegenwärtigen Zustand ausgeführt werden konnte, ein Spezifikationsfehler in einem Operandenfeld einen erfolgreichen Abschluß verhindert hat, eine ungültige, nichtexistente oder fehlausgerichtete Speicher- oder Steuerraumadresse spezifiziert wurde, oder einen diagnostischen Ausfall.
  • Die verschiedenen Befehlsfunktionen, die durch die Zustände der Signale in den Bits 0 bis 7 des Befehl/Status-Doppelwortes 50a bezeichnet sind, beinhalten Befehlscodes, die keine Operation bewirken und zu einem sofortigen "Ausgeführt"-Status führen. Ein weiterer Befehlscode verlangt den Bericht des Modultyps, der den Empfängermodul veranlaßt, das gemischte Doppelwort 62 zu setzen, um den Adaptertyp und die Konfiguration anzugeben. Eine Vielfalt von unterschiedlichen Anordnungen kann vorgesehen werden, um über den Modultyp zu berichten, das Format für das Modultypdoppelwort könnte jedoch vorteilhafterweise eine Beschreibung des Typs von Modul enthalten, eine Beschreibung der installierten Optionen oder zugehörige Konfigurationseinzelheiten jedes besonderen Moduls, Information über die Hardwarefunktionalität des Moduls und Information über die Firmwarefunktionalität des Moduls.
  • Ein weiterer Befehlscode bezieht sich auf die Rückkehr zu dem Diagnosestatus, der bewirkt, daß der Empfängermodul das gemischte Doppelwort 62 benutzt, um Einzelheiten über die Vollendung der Adapterselbstdiagnose zu berichten. Das Format des zurückgeleiteten Doppelwortes während Rückdiagnosestatusbefehlen ist modultypabhängig. Ein Kommunikationsweg zwischen dem Modul und dem Hauptspeicher kann während der Ausführung eines Rückdiagnosestatusbefehls getestet werden durch Einschreiben und Wiederauslesen des gemischten Doppelwortes 62. Wenn Kommunikation mit dem Hauptspeicher nicht erzielt wird, ist es zweifelhaft, daß der korrekte Status zurückgemeldet werden kann, aber der Modul sollte versuchen, den Status zu berichten, einschließlich Diagnoseausfall.
  • Ein weiterer Befehlscode besteht darin, eine Warteschlange zu erzeugen, die einen Warteschlange-Deskriptor bedeutet. Der Befehlscode zum Erzeugen des Warteschlange-Deskriptors veranlaßt den Adapter, eine Warteschlange für die Vorrichtungsnummer zu erzeugen, die durch das Byte niedriger Ordnung des l6-Bit-Buchstabenfeldes in dem Interrupt-Deskriptor 58a spezifiziert wird. Der Ort des Warteschlange-Deskriptors für diese Vorrichtung wird durch das Adreßfeld 60 spezifiziert. Die Erzeugung eines Warteschlange-Deskriptors bewirkt, daß ein impliziter Vorrichtungsaufruf zustand der Vorrichtung geliefert wird, die dem neu erzeugten Warteschlange-Deskriptor zugeordnet ist, so daß der Befehl, der in dem neu erzeugten Warteschlange-Deskriptor enthalten ist, unmittelbar im Anschluß an die Beendigung dieses Befehls ausgeführt wird. Der Beendigungsinterrupt aus dem Erzeuge-Warteschlange-Befehl wird verlangt (wenn durch das Maskenbit in der Bitposition 30 des INTD 58a freigegeben), nachdem die Warteschlange erzeugt worden ist und bevor der Befehl in dem Warteschlange-Deskriptor ausgeführt wird. Das Abgeben des Erzeuge-Warteschlange-Befehls wird zu zwei Interrupts führen, wenn sowohl der Mailbox- als auch der Warteschlange-Deskriptor-Beendigungsinterrupt freigegeben sind. Der normale Gebrauch dieses impliziten Vorrichtungsaufrufzustands ist es, die Warteschlangeninitialisierung durch Erzeugen des Warteschlange-Deskriptors mit einem "Initialisiere Warteschlange"-Code in seinem Befehlsbyte zu veranlassen oder keine zusätzliche Aktivität durch Erzeugen des Warteschlange-Deskriptors mit einem Keine-Operation- Code in seinem Befehlsbyte zu veranlassen. Dieser Erzeuge-Warteschlange-Befehl wird eine Befehlsunterdrückungsexzeption erzeugen, wenn ein Warteschlange-Deskriptor für die spezifizierte Vorrichtung bereits existiert.
  • Ein wichtiger Vorteil dieser Technik zum Erzeugen von Vorrichtungswarteschlangen ist, daß, nachdem die Warteschlange unter Verwendung dieses Mailboxbefehls erzeugt worden ist, die gesamte anschließende Kommunikation mit der Vorrichtung über den zugeordneten Warteschlange-Deskriptor erfolgt. Das bietet der Systemsoftware die Möglichkeit, den Warteschlange-Deskriptor irgendwo innerhalb des Hauptspeichers zuzuordnen, statt feste Adreßplätze zur Vorrichtungssteuerung wie bei den meisten bekannten Computersystemen benutzen zu müssen.
  • Eine weitere Befehlsfunktion, die in das Befehlsfeld des Befehl/Status-Doppelwortes 50a codiert werden kann, ist die von "Zerstöre Warteschlange". Ein Zerstöre-Warteschlange-Befehl bewirkt, daß der Adapter aufhört, auf Vorrichtungsaufrufanforderungen für die Warteschlange mit der Vorrichtungsnummer, die durch das Byte niedriger Ordnung des Buchstabenfeldes in dem Doppelwort 58a spezifiziert ist, zu antworten. Irgendwelche internen Zeiger, die durch den Adapter für Hilfsstrukturen aufrechterhalten werden, welche der Warteschlange zugeordnet sind, die zerstört wird, werden durch diesen Befehl ungültig gemacht. Keine Zugriffe auf den Hauptspeicher für irgendwelche Dienste, die mit dieser Warteschlange in Beziehung stehen, werden nach der Ausführung des Zerstöre-Warteschlange-Befehls gemacht, sofern nicht die Warteschlange anschließend wiedererzeugt wird. Wenn kein Warteschlange-Deskriptor für die bezeichnete Vorrichtung existiert, fungiert dieser Befehl als ein Keine-Operation-Befehl. Der Zerstöre-Warteschlange-Befehl wird eine Befehlsunterdrückungsexzeption erzeugen, wenn der bezeichnete Warteschlange-Deskriptor weder angehalten noch im Leerlauf ist.
  • Eine weitere Befehlsfunktion, die in das Befehlsfeld des Befehl/Status-Doppelwortes 50a codiert werden kann, ist die von Anhalten-E/A. Eine Anhalten-E/A-Befehlsfunktion bewirkt, daß der Adapter alle Eingang/Ausgang-Funktionen, die auf sämtlichen Vorrichtungen vonstatten gehen, anhält, um das Abtasten von sämtlichen Vorrichtungswarteschlangen zu beenden und das Berichten über allen Hilfsstatus bezüglich aller Vorrichtungen bis zur Auslösung durch anschließende Vorrichtungsaufrufanfordrungen zu beenden. Der Anhalten- E/A-Befehl sollte nur unter Umständen benutzt werden, unter denen es notwendig ist, die Eingang/Ausgang-Aktivität sofort zu stoppen, um zu verhindern, daß korruptierte Daten übertragen werden. Der Anhalten-E/A-Befehl erzeugt einen Interruptzustand, nachdem sämtliche E/A-Aktivität beendet worden ist.
  • Ein Befehl zum Setzen der Warteschlangeabfragerate wird ebenfalls durch einen Code in dem Befehlsbyte/Status-Doppelwort 50a definiert. Der Setze-Warteschlange-Abfragerate- Befehl bewirkt, daß der Abtaster den Zeitbasiswert, der zum Abfragen von leerlaufenden Vorrichtungswarteschlangen benutzt wird, auf den Wert aus dem Buchstabenfeld des Doppelwortes 58a einstellt. Der 16-Bit-Code in dem Buchstabenfeld des Doppelwortes 58a spezifiziert die Mindestzeit, die zwischen Abfragewarteschlangen für leerlaufende Vorrichtungen, die diesem E/A-Adapter zugeordnet sind, verstreichen muß, um zu prüfen, ob neue E/A-Deskriptoren diesen Vorrichtungswarteschlangen hinzugefügt worden sind. Jeder E/A-Adapter-Typ hat seine eigene Voreinstellabfragerate, die intern nach dem Rücksetzen des Systems oder dem Rücksetzen des Moduls gesetzt wird. Der Setze-Warteschlange-Abfragerate-Befehl braucht nur benutzt zu werden, wenn Systemsoftware wünscht, von der Voreinstellrate abzugehen. Ein Wert von null spezifiziert keine Verzögerung und wird bewirken, daß die leerlaufenden Warteschlangen so häufig abgefragt werden, wie der Adapter in der Lage ist, das zu tun. Werte, die größer als 0 sind, spezifizieren Einheiten einer systemdefinierten Zeitbasis, die in der bevorzugten Ausführungsform 8 Millisekunden beträgt.
  • Eine letzte Standardbefehlsfunktion, die durch den Code in dem Befehlsbyte des Befehl/Status-Doppelwortes 50a etabliert wird, ist die zum Durchführen von ausgedehnter Diagnose. Der Mache-Ausgedehnte-Diagnose-Befehl veranlaßt den Empfangsmodul, zusätzliche interne Diagnosen zu machen. Moduln mit Selbstdiagnosefähigkeit sind auf diesem Gebiet bekannt. Wenn ein Modul keine erweiterte Diagnosefähigkeit hat, würde er auf diesen Befehl mit einem sofortigen "Ausgeführt"-Status antworten. Der Mache-Ausgedehnte-Diagnose-Befehl wird eine Befehlsunterdrückungsexzeption erzeugen, wenn alle E/A-Warteschlangen an diesem Adapter nicht im Leerlauf sind. Die erweiterten Diagnosen werden auf eine adaptertypspezifische Weise durch das Buchstaben-, Adreß- und/oder gemischte Feld, die in den Doppelwörtern der Mailbox enthalten sind, spezifiziert. Die vorhergehende Liste spezifiziert die Standardbefehle, die durch alle Adapter gestützt werden. Zusätzliche Befehle können für spezialisierten Gebrauch durch besondere Typen von Adaptern definiert werden. Wenigstens 32 Befehlscodewerte sind für Mailbox-Befehle reserviert, wobei Werte OOH-IFH in der bevorzugten Ausführungsform benutzt werden. Alle Codes in diesem Bereich, die nicht durch oben definierte Standardbefehle benutzt werden, sind für adapterspezifischen Gebrauch verfügbar.
  • Die Warteschlange-Deskriptor-Steuerstruktur 32 ist ausführlicher in den Fig. 10A und 10B veranschaulicht. Jeder Warteschlange-Deskriptor 32 wird durch acht sequentiell aufsteigende Doppelwörter an ausgerichteten Doppelwortadreßgrenzen im Speicher gebildet. Jeder Warteschlange-Deskriptor ist deshalb eine 32-Byte-Struktur, die durch Befehle erzeugt wird, welche durch den Adapter über seine Mailbox gesendet werden. Alle E/A-Adapter müssen die Warteschlange-Deskriptoren 32 stützen.
  • Warteschlange-Deskriptoren nehmen die Steuerinformation auf, die durch die Prozessoren und die E/A-Adapter benötigt wird, um die E/A-Deskriptor-Warteschlange für jede Vorrichtung aufrechtzuerhalten, die an den Adapter angeschlossen ist. Es gibt höchstens einen Warteschlange-Deskriptor für jede Vorrichtung, die an den Adapter angeschlossen ist.
  • Solche Warteschlange-Deskriptoren werden durch Mailbox-Befehle erzeugt, wie oben erläutert. Keine E/A-Operationen sind an einer Vorrichtung möglich, bis ein Warteschlange-Deskriptor für diese Vorrichtung erzeugt worden ist.
  • Prozessoren verlangen von einem E/A-Adapter, einen besonderen Warteschlange-Deskriptor zu befragen, indem der E/A- Adapter einen Vorrichtungsaufruf für die geeignete Vorrichtung abgibt. Prozessoren müssen eine erneute Warteschlange-Deskriptor-Befragung immer dann verlangen, wenn eine Notwendigkeit besteht, neue Warteschlange-Deskriptor-Befehle auszuführen. Prozessoren müssen außerdem eine erneute Warteschlange-Deskriptor-Befragung verlangen, wenn der Prozessor eine gewisse Steuerinformation in dem Warteschlange-Deskriptor ändert, weil von den E/A-Adaptern nicht verlangt wird, Warteschlange-Deskirptor-Inhalte zwischen der Verarbeitung von E/A-Deskriptoren erneut zu überprüfen, und weil den E/A-Adaptern gestattet wird, die Warteschlange-Deskriptor-Information in privaten Speichern auf zubewahren.
  • Das erste Doppelwort der Warteschlange-Deskriptor-Struktur, die in Fig. 10A gezeigt ist, ist ein Befehl/Status-Doppelwort 50b. Das Befehl/Status-Doppelwort 50b gleicht hauptsächlich dem, welches in Verbindung mit der Mailbox beschrieben worden ist. Eine Differenz gibt es jedoch in den Bits 14 und 15 des Befehlsmodifiziererbytes. Das Bit 15 wird auf eine "1" gesetzt, um anzuzeigen, daß der E/A-Deskriptor-Zeiger in dem nächsten folgenden Doppelwort 64 gültig ist. Immer dann, wenn es keine E/A-Deskriptoren in der Vorrichtungswarteschlange gibt oder wenn der Warteschlangenkopfzeiger mit Hilfe von zwei 16-Bit-Schreiboperationen durch Prozessoren mit 16-Bit-Datenwegen aktualisiert wird, muß das Bit 15 auf "0" gesetzt werden, um den Adapter daran zu hindern, eine ungültige Adresse aus dem Doppelwort 64 zu benutzen. Das Bit 15 sollte niemals von einer "1" auf eine "0" geändert werden, während der Adapter den Warteschlange-Deskriptor verarbeitet, wie es durch das grundlegende Statusbit 31 angegeben ist, das auf eine "1" gesetzt ist. Das Bit 14 wird auf eine "1" gesetzt, um den Adapter zu veranlassen, einen neuen Interrupt zu verlangen, sobald ein neuer Interruptzustand auftritt, ohne auf eine Bestätigung einer vorherigen Interruptanforderung zu warten.
  • Das zweite Doppelwort bei 64 enthält einen Zeiger zu dem ersten E/A-Deskriptor in dieser Vorrichtungswarteschlange. Dieser Zeiger wird zum Warteschlangenmanagement benutzt und wird niemals durch den Adapter modifiziert. Der einzige Umstand, unter dem das Doppelwort 64 durch den Adapter gelesen wird, ist während der Ausführung von "Initialisiere Warteschlange" (Mailbox)-Befehlen und wenn der erste E/A- Deskriptor-Zeiger erzielt wird, wenn eine leere Warteschlange abgefragt wird. Der Zeiger an dem Doppelwort 64 wird durch den Adapter nur benutzt, wenn das EAD-Zeigergültig-Flag in dem Bit 15 des Befehl/Status-Doppelwortes 50b auf eine "1" gesetzt ist.
  • Das dritte Doppelwort bei 66 enthält einen Zeiger zu dem E/A-Deskriptor, der gegenwärtig durch den Adapter verarbeitet wird, wenn die Vorrichtung, die dieser Warteschlange zugeordnet ist, besetzt ist. Alternativ enthält das Doppelwort bei 66 einen Zeiger zu dem letzten E/A-Deskriptor, der durch den Adapter verarbeitet wird, wenn die Vorrichtung, die dieser Warteschlange zugeordnet ist, im Leerlauf ist.
  • Der Zeiger an dem Doppelwort 66 kann gelesen werden, darf aber niemals durch die Betriebssystemsoftware modifiziert werden. Der Adapter speichert eine Kopie der laufenden E/A- Deskriptor-Adresse in diesem Doppelwort bei 66 immer dann, wenn ein gültiger E/A-Deskriptor aus dem Speicher während des Prozesses der Befehlsverkettung geholt wird. Während E/A-Operationen ist die Befehlsverkettung die Aktion durch den Adapter, durch die dieser auf den nächsten Befehl für eine besondere Vorrichtung bei Beendigung des vorherigen Befehls übergeht, ohne eine Intervention durch irgendeinen Prozessor zu verlangen.
  • Das vierte Doppelwort der Warteschlange-Deskriptor-Steuerstruktur ist ein Interrupt-Deskriptor 58b. Der Interrupt- Deskriptor ist in dem Wort hoher Ordnung in dem Bit 16 bis 31 enthalten. Die Bits niedriger Ordnung bei 0 bis 15 sind ein Interrupt-Status- und Bestätigungsfeld. Die Inhalte des Doppelwortes 58b werden benutzt, um alle Interrupts zu berichten, zu maskieren, zu identifizieren und zu bestätigen, die aus der Operation der Vorrichtung resultieren, welche dieser Warteschlange zugeordnet ist. Das beinhaltet sowohl normale Beendigungsbedingungen als auch Exzeptionsbedingungen und bezieht sich auf die Ausführung sowohl von Warteschlange-Deskriptor-Befehlen als auch von E/A-Deskriptor- Befehlen.
  • Das Interruptstatuswort des Interrupt-Deskriptors 58b der Warteschlange-Deskriptor-Steuerstruktur 32 wird benutzt, um alle Interrupts zu übertragen, die sich auf Warteschlange-Deskriptor-Befehle und auf E/A-Deskriptor-Befehle beziehen. Die Hauptcharakteristiken des Interruptberichtsmechanismus, der durch den Interrupt-Deskriptor 58b bereitgestellt wird, sind, daß alle Interruptbedingungen maskiert werden können, was einen unterbrechungslosen Betrieb gestattet, wenn es durch die Systemsoftware gewünscht wird; daß über Interruptbedingungen über das Interruptstatuswort des Interrupt- Deskriptors 58b noch berichtet werden kann, wenn Interrupts maskiert sind; daß jede Interruptbedingung explizit durch die Software bestätigt werden muß, bevor über eine anschließende Bedingung berichtet wird, wodurch gewährleistet ist, daß kein zweideutiger Status einer Vorrichtung berichtet wird; und daß das Vorhandensein einer anhängigen Interruptbedingung, wenn ein vorheriger Interrupt unbestätigt bleibt, bewirkt, daß ein Indikator gesetzt wird und daß weitere Verarbeitung aufgeschoben wird.
  • Es gibt einen Unterschied zwischen einer Interruptbedingung und einer Interruptanforderung bei der vorliegenden Erfindung. Viele Adapteraktivitäten können Interruptbedingungen erzeugen, wenn sie einen Status zurück zu der Software zu berichten haben. Diese Interruptbedingungen resultieren immer im Aktualisieren der Statusinformation von mehreren der Steuerstrukturen der vorliegenden Erfindung, einschließlich des Befehl/Status-Doppelwortes der Steuerstruktur, das verarbeitet wird, wenn die Bedingung eingetreten ist, des Interruptstatuswortes des Warteschlange-Deskriptors für die Vorrichtung, des Exzeption-Status-Blockes, wenn eine Exzeption berichtet wird, und des Statusaktualisierzusammenfassung(SUS)-Indikators, wenn er durch einen Warteschlange-Deskriptor-Befehl freigegeben ist. Interruptbedingungen resultieren in einer Interruptanforderung an einem Prozessor, wenn Interrupts für den geeigneten Typ von Bedingung durch das Maskenfeld freigegeben sind, die in den Bits 28 bis 31
  • des Interrupt-Deskriptors 58b gezeigt sind. Somit führen Interruptbedingungen zu Interruptanforderungen nur, wenn die Anforderungen nicht maskiert sind.
  • Das Wort hoher Ordnung, Bits 16 bis 31, des Interrupt-Deskriptors 58b spezifiziert das Interruptziel für Exzeption, Vollendung, programmgesteuerten Interrupt (PCI) und Kettenende-Interrupts und liefert unabhängige Maskenbits für jeden dieser Typen von Interruptbedingungen. Alle Interrupts, die einer Vorrichtung zugeordnet sind, werden zu einem einzelnen Zielprozessor an dem Modul weitergeleitet, das durch die Bits 24 bis 27 des Interrupt-Deskriptors 58b spezifiziert wird. Die Bits 16 bis 23 identifizieren die spezifische Interruptebene an dem bezeichneten Zielprozessor. Information in dem Interruptstatuswort, d. h. dem Wort niedriger Ordnung des Interrupt-Deskriptors 58b gestattet dem Interrupthandhaber an diesem Prozessor, zwischen verschiedenen Typen von Interrupts zu unterscheiden. Der Interrupt- Deskriptor wird niemals durch den Adapter geschrieben, bevor ein Interrupt verlangt wird. Demgemäß kann die Interruptmasken- und Adreßinformation durch den Prozessor jederzeit geändert werden, indem ein 16-Bit-Wert in das Wort hoher Ordnung des Doppelwortes 58b eingeschrieben wird.
  • Die Interruptmaskenbits an den Bitplätzen 28 bis 31 können auf irgendeine gewünschte Weise codiert werden. Eine besondere Anordnung besteht jedoch darin, eine "1" in dem Bit 31 zu setzen, um Exzeptionsinterrupts freizugeben, die durch exzeptionelle Ausführung von Warteschlange-Deskriptor-Befehlen, exzeptionelle Ausführung von E/A-Deskriptor-Befehlen, Zeitsperren von irgendeiner Befehlsfunktion und Warteschlangenintegritätsverletzungen während Befehlsverkettung erzeugt werden. Das Bit 30 kann auf eine "1" gesetzt werden, um Warteschlange-Deskriptor-Beendigungsinterrupts freizugeben, die durch die erfolgreiche Ausführung von Warteschlange-Deskriptor-Befehlen erzeugt werden. Das Bit 29 kann auf eine "1" gesetzt werden, um PCI-Interrupts freizugeben, die durch Ausführen der Verarbeitung von E/A- Deskriptoren erzeugt werden, wobei das Befehlsmodifiziererbit 14 auf "1" gesetzt ist. Das Bit 28 kann auf "1" gesetzt werden, um Kettenende-Interrupts freizugeben, die erzeugt werden, wenn die Vorrichtung nach erfolgreicher Ausführung des letzten E/A-Deskriptors in der Schlange in den Leerlauf kommt. Der Kettenende-Zustand wird außerdem erzeugt, wenn die Vorrichtung nach erfolgreicher Ausführung eines E/A- Deskriptors angehalten wird, wobei das Bit 13 ihres Befehlsmodifizierers (Stoppe Verkettung) auf eine "1" gesetzt ist. Wenigstens ein E/A-Deskriptor muß verarbeitet worden sein, bevor ein Kettenende-Zustand auftreten kann. Das Ausführen eines Initialisiere-Warteschlange-Befehls für einen Warteschlange-Deskriptor mit einer Null-Warteschlange oder einem Fortsetzungsbefehl mit einem ungültigen Verbindungszeiger in dem laufenden E/A-Deskriptor erzeugt keinen Kettenende-Zustand.
  • Das Interruptstatus- und Bestätigungsfeld, das sich an den Bitplätzen 0 bis 15 des Doppelwortes 58b befindet, welches auch als Interruptstatuswort bezeichnet wird, enthält Information über die Ursache des jüngsten Interruptzustands aus der Vorrichtung und den gegenwärtigen Status der Vorrichtungswarteschlangeverarbeitung. Das Byte niedriger Ordnung dieses Wortes wird außerdem durch Software benutzt, um Interruptbedingungen zu bestätigen.
  • Information über die Ursache der jüngsten Interruptbedingung aus der Vorrichtung ist in dem Byte niedriger Ordnung des Interruptstatuswortes enthalten. Dieses Byte niedriger Ordnung ist zur Verwendung durch den Interrupt-Handhaber bei der Bestimmung verfügbar, wie die Interrupts, die er empfängt, handzuhaben sind. Der Adapter speichert Information über den Interrupttyp in dem Interruptstatuswort ab, unmittelbar bevor er den Interrupt verlangt, wenn der Interruptzustand freigegeben ist, oder beim Erkennen des Interruptzustands, wenn der Interruptzustand maskiert ist. Die Verwendung der Bits in den Interrupttyp-Byte-Daten beinhalten, z. B., Setzen des Bits 7 auf eine "1", um einen Exzeptionszustand als ein Resultat der Ausführung eines warteschlange-Deskriptor-Befehls anzuzeigen. Weitere Statusinformation ist in dem Statuswort des Befehl/Status-Doppelwortes dieses Warteschlange-Deskriptors verfügbar. Das Bit 6 wird auf eine "1" gesetzt, um die erfolgreiche Ausführung eines Warteschlange-Deskriptor-Befehls anzuzeigen. Das Bit 5 kann auf eine "1" gesetzt werden, um einen Exzeptionszustand als ein Resultat der Ausführung eines E/A-Deskriptor-Befehls anzuzeigen. Weitere Statusinformation ist aus dem Befehl/Status-Doppelwort des E/A-Deskriptors verfügbar, der durch den laufenden E/A-Deskriptor-Zeiger 66 angezeigt wird, sowie in dem Exzeption-Status-Block. Das Bit 4 kann auf eine "1" gesetzt werden, um die "Kettenende"-Bedingung anzuzeigen, was bedeutet, daß entweder der letzte E/A-Deskriptor in der Warteschlange oder ein E/A-Deskriptor mit einem Stoppe-Verkettung-Flag (Befehlsmodifiziererbit 13) gesetzt, angetroffen worden ist. Diese beiden Ursachen können unterschieden werden, indem das Byte hoher Ordnung des Interruptstatuswortes getestet wird, um festzustellen, ob die Vorrichtung im Leerlauf ist (Warteschlangenende) oder angehalten ist (Verkettung gestoppt).
  • Das Bit 3 in dem Interrupttypcode kann auf eine "1" gesetzt werden, um anzuzeigen, daß das Zeitsperreintervall, das in dem Warteschlange-Deskriptor (Wort 52a niedriger Ordnung, Fig. 5 und 10b) spezifiziert ist, während der Ausführung des laufenden Befehls ohne Befehlsausführung oder eine andere Exzeptionsbedingung verstrichen ist. Das Bit 3 wird zusammen mit dem Bit 5 gesetzt, da die Zeitsperre auch eine E/A-Deskriptor-Exzeptionsbedingung ist, und zusätzliche Statusinformation ist in dem Exzeption-Status-Block verfügbar. Das Bit 2 wird auf eine "1" gesetzt, um anzuzeigen, daß der E/A-Deskriptor sein PCI-Anforderungsbit (befehlsmodifiziertes Bit 14), das auf eine "1" gesetzt ist, gerade ausgeführt hat. Kein zusätzlicher Status ist relevant. Der laufende E/A-Deskriptor-Zeiger 66 braucht nicht benutzt zu werden, um die Quelle des PCI zu lokalisieren, da die Verarbeitung dieses E/A-Deskriptors ausgeführt worden ist, und der laufende E/A-Deskriptor-Zeigerwert kann aktualisiert werden, bevor die Interruptanforderung durch den Prozessor empfangen wird. Aufgrund der strikt sequentiellen Natur der Warteschlangenverarbeitung durch den Adapter kann jedoch die Software, welche die PCI-Bits setzt, den Warteschlangenverarbeitungsfortschritt verfolgen, wenn die PCIs empfangen werden. Das Bit 1 wird auf eine "1" gesetzt, um anzuzeigen, daß eine Warteschlangenintegritätsexzeption während Befehlsverkettung aufgetreten ist, was bedeutet, daß entweder das Befehl/Status-Doppelwort des E/A-Deskriptors nicht in "anhängigem" Status war oder daß ein E/A-Deskriptor- Verbindungszeiger eine fehlausgerichtete oder eine nichtexistente Speicheradresse enthielt. Diese beiden Bedingungen können unterschieden werden, indem das Bit 3 des Doppelwortes 0 des Exzeption-Status-Blockes getestet wird, wie unten beschrieben, das auf eine "1" gesetzt wird, um einen ungültigen E/A-Deskriptor-Verbindungszeiger anzuzeigen. Das Bit 0 wird gegenwärtig nicht zugeordnet und wird immer auf 0 gesetzt sein.
  • Die E/A-Adapter können mehr als ein Bit in dem Interruptstatusbyte des Doppelwortes 58b setzen, wenn mehr als eine Bedingung, die sich auf eine einzelne Vorrichtung bezieht, gleichzeitig aktiv wird. Wenn ein E/A-Adapter mehrere Interruptbedingungen hat, die auf diese Weise nicht berichtet werden können, wird die Berichtspriorität auf die Reihenfolge gegründet, in welcher die Bits in dem Interrupttypbyte zugeordnet sind. Die Interrupttypen, die Bits höherer Ordnung dieses Bytes zugeordnet sind, haben eine höhere Berichtspriorität.
  • Das Interrupttypbyte dient auch als ein Interruptbestätigungsindikator an dem Adapter. Wenn eine Interruptbedingung für die Vorrichtung durch die Systemsoftware gehandhabt worden ist, muß der Interrupt-Handhaber das Interrupttypbyte vollständig auf null löschen. Der Adapter wird für diese Vorrichtung keinen weiteren Interrupt verlangen und wird keine neue Typinformation für eine maskierte Interruptbedingung speichern, während das Interrupttypbyte von null verschieden ist (sofern nicht ein Ignoriere-Interrupt-Bestätigung-Bit (Bit 14) in dem Befehlsmodifiziererbyte des Befehl/Status-Doppelwortes des Warteschlange-Deskriptors auf eine "1" gesetzt wird). Wenn Bestätigungen ignoriert werden und Interrupts nicht maskiert sind, wird das Interrupttypbyte immer den jüngsten verlangten Interrupt wiedergeben, der an dem Zielprozessor noch anhängig sein kann.
  • Das Byte höherer Ordnung, die Bits 8 bis 15, des Interruptstatuswortes des Interrupt-Deskriptors 58b werden benutzt, um den laufenden Zustand der Warteschlange-Verarbeitung anzuzeigen. Dieses Byte hoher Ordnung wird niemals durch Prozessoren geschrieben. Der Adapter schreibt dieses Byte asynchron mit dem Rest des Warteschlange-Deskriptors, um einen anhängigen Interruptstatus und einen Vorrichtungsaktivitätsstatus zu aktualisieren. Das Bit 15 wird durch den Adapter auf eine "1" gesetzt, wenn eine zusätzliche Interruptbedingung anhängig ist und die vorherige Interruptbedingung nicht bestätigt worden ist. Dieses Bit wird nicht benutzt, wenn das Ignoriere-Interruptbestätigung-Bit (Bit 14) in dem Befehlsmodifizierer des Warteschlange-Deskriptors auf eine "1" gesetzt ist. Nachdem der Adapter dieses Bit in der Bitposition 15 auf eine "1" gesetzt hat, wird weitere Aktivität für diese Vorrichtung blockiert, bis die Interruptbedingung bestätigt worden ist, um einen Verlust des oder einen zweideutigen Bericht über den Status der Vorrichtung zu verhindern. Während des Wartens auf eine Interruptbestätigung bei einem weiteren anhängigen Interruptzustand zeigt der Adapter keinen Leerlauf zustand an und fragt das Byte niedriger Ordnung des Interruptstatuswortes auf eine Interruptbestätigung ab. Die neue Interruptbedingung wird berichtet, und das Bit an der Stelle 15 wird auf "0" gesetzt, sobald der vorherige Zustand bestätigt ist. Jede Vorrichtungsaufruf-Anforderung an einer Vorrichtung mit einem zusätzlichen anhängigen Interrupt wird dazu führen, daß der Warteschlange-Deskriptor-Befehl mit einer sofortigen "Ausgeführt"-Anzeige und einem Befehlsunterdrückungsbeendigungsstatus in dem grundlegenden Statusbyte des Warteschlange-Deskriptors unterdrückt wird.
  • Das Bit 9 des Interruptstatuswortes wird durch den Adapter auf eine "1" gesetzt, wenn die Vorrichtung in den Leerlauf gelangt, und wird auf eine "0" gesetzt, wenn die Abfrage der Warteschlange (oder ein Vorrichtungsaufruf) zum Erkennen eines gültigen E/A-Deskriptor-Zeigers an dem Verbindungszeiger führt, wo die vorherige Verkettung geendet hat.
  • Wenn die Vorrichtung im Leerlauf ist, wird der Warteschlange-Deskriptor oder der E/A-Deskriptor-Befehlsmodifizierer, dessen Bit 15 nach einem gültigen E/A- Deskriptor-Zeiger befragt wird, über den laufenden E/A-Deskriptor-Zeiger 66 lokalisiert werden. Das Bit 8 wird durch den Adapter auf eine "1" gesetzt, wenn die Vorrichtung als Ergebnis einer Stoppe-Verkettung-Anforderung in einem E/A- Deskriptor, einen "Vorrichtung-Anhalten"-Warteschlange-Deskriptor-Befehl, einen E/A-Anhalten"-Mailbox-Befehl oder einen Exzeptionszustand angehalten wird. Das Bit 8 wird auf eine "0" gesetzt, wenn die Vorrichtung als Resultat eines "Fortsetzen"- oder "Initialisieren"-Warteschlange-Deskriptor-Befehls wiedergestartet wird. Die Bits 8 und 9 werden niemals beide gleichzeitig auf eine "1" gesetzt, und wenn diese beiden Bits auf eine "0" gesetzt sind, ist die Vorrichtung aktiv (verarbeitet E/A-Deskriptoren).
  • Die Einstellung der Bits 8 und 9 des Interruptstatuswortes ist bis nach der Ausführung des ersten "Initialisiere Warteschlange"-Befehls nach Erzeugung der Warteschlange nicht bedeutungsvoll. Diese Bits geben nur den Aktivitätsstatus der E/A-Deskriptor-Verarbeitung wieder und werden als Ergebnis der Warteschlange-Deskriptor-Befehlsverarbeitung nicht aktualisiert. Irgendwelche Versuche, nach Warteschlangenbefehlsausführung unter Verwendung dieser Bits abzufragen, müssen qualifiziert sein, indem zuerst auf einen Ausgeführt-Status in dem grundlegenden Statusbyte des Befehl/Status-Doppelwortes 50b dieses Warteschlange-Deskriptors getestet wird.
  • In der Warteschlange-Deskriptor-Steuerstruktur 32, die in Fig. 10B gezeigt ist, enthalten die Doppelwörter 52a und 52b einen Extent-Deskriptor für den Exzeption-Status-Block. Immer dann, wenn ein Exzeptionszustand für diese Vorrichtung berichtet wird, speichert der Adapter Exzeptionsstatusinformation in dem Exzeption-Status-Block ab, der durch diesen Extent-Deskriptor angegeben wird. Die Exzeption-Status-Block-Länge ist vom Adaptertyp abhängig, es könnte aber erforderlich sein, daß sie wenigstens 16 Bytes beträgt, wie unten angegeben. Wenn die Länge ESB in dem Byte hoher Ordnung von 52a null ist, wird kein Exzeptionsstatus angefordert. Das Wort niedriger Ordnung des Doppelwortes 52a enthält den Zeitsperrewert für diese Vorrichtung. Dieses Feld spezifiziert die Anzahl von vorbestimmten Zeitintervallen (in der gegenwärtigen Implementierung werden Intervalle von 8 Millisekunden benutzt), die verstreichen müssen, nachdem der Adapter irgendeine Operation bei dieser Vorrichtung initiiert hat, bevor die Operation mit der Zeitsperrebedingung beendet wird, die als der Vollendungsstatus angezeigt wird. Die Zeitsperrebedingung wird als eine Exzeptionsbedingung für die Zwecke von Interruptanforderungen behandelt, mit einem zusätzlichen Bit in dem Interrupttypbyte, um Zeitsperren von anderen Formen von Exzeptionen zu unterscheiden. Ein Zeitsperrewert von 0 blockiert die Zeitsperrefunktion.
  • Das Doppelwort 72 ist für adapterspezifischen Gebrauch durch irgendwelche Adaptertypen verfügbar, die zusätzliche Information in dem Warteschlange-Deskriptor verlangen. Das Doppelwort 74 ist ein gemischtes Feld für befehlsabhängige Daten.
  • Die Vorrichtungsebenenbefehlscodes jedes Warteschlange-Deskriptors 32 sind in dem Befehlsbyte (Bits 0 bis 7) des Befehl/Status-Doppelwortes 50b (Fig. 10A) enthalten. Die Vorrichtungsebenenbefehlscodes müssen durch alle E/A-Adapter realisiert werden, sofern nichts anderes angegeben ist.
  • Ein Vorrichtungsebenenbefehlscode bewirkt keine Operation, veranlaßt aber den Adapter, die Werte der Doppelwörter 52a, 52b, 72 und 74 erneut in den privaten Speicher einzulesen. Der Befehl "keine Operation" ist nützlich, wenn es notwendig ist, den Zeitsperrewert, den Ort des Exzeption-Status- Blockes oder gemischte Information zu ändern, wenn die Warteschlange nicht erneut initialisiert zu werden braucht. Die Ausführung dieses Befehls resultiert in einem sofortigen "Ausgeführt"-Status und einem Vollendungsinterruptzustand.
  • Ein weiterer Vorrichtungsebenenbefehlscode, der in dem Befehlsbyte des Befehl/Status-Doppelwortes 50b vorhanden ist, lautet "Initialisiere Warteschlange", was bewirkt, daß der Adapter die Adresse des Warteschlange-Deskriptors in dem laufenden E/A-Deskriptor-Zeiger des Doppelwortes 66 abspeichert, die Werte der Doppelwörter 52a, 52b, 72 und 74 des Warteschlange-Deskriptors in seinen privaten Speicher einliest, aktiv wird (wenn er angehalten war) und die Warteschlangenabfrage an dem Warteschlangenkopfzeiger in dem Doppelwort 64 einleitet.
  • In bezug auf den Vorrichtungsebenenbefehl "Initialisiere Warteschlange", speichert der Adapter, wenn das Bit 15 des Befehl/Status-Doppelwortes 50b auf eine "1" gesetzt ist, um anzuzeigen, daß der E/A-Deskriptor-Warteschlange-Kopfzeiger 64 gültig ist, eine Kopie dieses Zeigers in dem laufenden E/A-Deskriptor-Zeiger in dem Doppelwort 66 ab und beginnt, den bezeichneten E/A-Deskriptor zu verarbeiten. Wenn das Bit 15 des Befehl/Status-Doppelwortes 50b auf eine "0" gesetzt ist, um anzuzeigen, daß der E/A-Deskriptor-Warteschlange-Kopfzeiger 64 nicht gültig ist, behandelt der Adapter diese Vorrichtung als im Leerlauf befindlich und beginnt das Abfragen der Warteschlange mit dem Bit 15 des Befehl/Status-Doppelwortes 50b, das periodisch getestet wird. In diesem Fall wird das Leerlaufbit (Bit 9) des erweiterten Interruptstatusbytes des Doppelwortes 58b auf eine "1" gesetzt, wenn ein "Ausgeführt"-Status an dem Ende des "Initialisiere Warteschlange"-Befehls zurückkommt. Wenn ein Warteschlange-Deskriptor mit einer Null-Warteschlange initialisiert wird (Bit 15 des Befehl/Status-Doppelwortes 50b ist auf eine "0" gesetzt), kann die Systemsoftware den ersten E/A-Deskriptor in diese Schlange bringen, indem sie seine Adresse in dem Doppelwort 64 abspeichert und dann das Bit 15 des Befehl/Status-Doppelwortes 50b auf eine "1" setzt.
  • Die Ausführung des Befehls "Initialisiere Warteschlange" führt zu einem sofortigen "Ausgeführt"-Status und einem Vollendungsinterruptzustand. Es wird ein anschließendes Ende des E/A-Deskriptor-Kette-Vollendungsinterruptzustands geben, wenn das Ende des E/A-Deskriptors geändert wird. Dieser Befehl erzeugt eine Befehlsunterdrückungsexzeption, falls er ausgeführt wird, wenn die Vorrichtung weder angehalten noch im Leerlauf ist.
  • Ein weiterer Vorrichtungsebenenbefehlscode in dem Befehl/Status-Doppelwort 50b lautet "Anhalten Vorrichtung" und bewirkt, daß der Adapter irgendeine E/A-Operation, die in der Vorrichtung vonstatten geht, anhält und aufhört, die E/A-Deskriptor-Warteschlange abzutasten, bis er durch einen anschließenden Fortsetzungsbefehl aufgehoben wird. Der Befehl "Anhalten Vorrichtung" erzeugt einen Vollendungsinterruptzustand, wenn die E/A-Aktivität angehalten worden ist. Wenn eine E/A-Deskriptor-Operation vonstatten geht, wenn dieser Befehl ausgeführt wird, wird die Operation mit dem Exzeptionsstatus beendet, der anzeigt, daß ein Anhalten von E/A erfolgt ist. Wenn die Vorrichtung im Leerlauf ist, hält der Befehl "Anhalten Vorrichtung" die Warteschlangenabfrage ohne einen Exzeptionszustand an. Wenn die Vorrichtung bereits angehalten ist, hat der Befehl "Anhalten Vorrichtung" keine Auswirkung.
  • Ein Befehl "Fortsetzen" ist ebenfalls einer der Vorrichtungsebenenbefehle, der in dem Warteschlange-Deskriptor-Befehl/Status-Doppelwort 50b verfügbar ist. Der Befehl "Fortsetzen" veranlaßt den Adapter, die Verarbeitung der E/A-Deskriptor-Warteschlange an dem nächsten Zeiger in dem E/A-Deskriptor, der durch das Doppelwort 66 bezeichnet wird, wieder aufzunehmen. Wenn dieser Zeiger mittels Flag als nicht gültig markiert ist, fragt der Adapter seinen Gültigkeitsindikator ab, bis ein Gültig-Zeiger verfügbar ist. Der Befehl "Fortsetzen" wird benutzt, um die E/A-Operation nach einem Kettenendezustand, Exzeptionszustand, Anhalten-Vorrichtung (QD)-Befehl oder Anhalten-E/A (MB)-Befehl wieder zu starten. Es sei angemerkt, daß die Fortsetzung mit dem E/A-Deskriptor erfolgt, der dem E/A-Deskriptor folgt, bei dem Leerlauf, Exzeption oder Anhalten erfolgt ist. Die Ausführung dieses Fortsetzen-Befehls führt zu einem sofortigen "Ausgeführt"-Status und zu einem Vollendungsinterruptzustand. Es wird ein anschließendes Ende des E/A-Deskriptor- Kette-Vollendungsinterruptzustands geben, wenn das Ende der E/A-Deskriptor-Kette erreicht ist.
  • Ein weiterer Vorrichtungsebenenbefehl, der in dem Befehl/Status-Doppelwort 50b verfügbar ist, ist "Lade Statistik-Zeiger". Der "Lade Statistik-Zeiger"-Befehl veranlaßt den Adapter, die Inhalte des Doppelwortes 74 zum Gebrauch als einen Zeiger in einen Pufferspeicher zu lesen, in welchem Vorrichtungsaktivitätsstatistiken abzuspeichern sind. Die Aufrechterhaltung der spezifischen Statistiken und das Format des Statistikberichtspuffers sind vom Adaptertyp abhängig. Nur Adaptertypen, welche einen E/A-Statistiksammelbedarf realisieren, brauchen diesen Befehl zu realisieren. Der Statistikzeiger wird sowohl durch den Erzeuge-Warteschlange (MB)-Befehl als auch durch den Zerstöre-Warteschlange (MB)-Befehl ungültig gemacht. Das Sammeln von Statistiken bei der Warteschlangenerzeugung wird blockiert, bis es durch diesen Befehl freigegeben wird. Das Einschreiben in einen früheren Statistikpuffer, nachdem die Warteschlange nicht länger existiert, wird ebenfalls verhindert. Nachdem das Statistiksammeln durch Ausführung dieses Befehls freigegeben worden ist, kann es nicht anders als durch Zerstören der Warteschlange unwirksam gemacht werden. Der Befehl "Lade Statistik-Zeiger" erzeugt eine Befehlsunterdrückungsexzeption, wenn er an einem E/A-Adapter ausgeführt wird, der Statistiksammeln nicht stützt.
  • Ein letzter bedeutsamer Vorrichtungsebenenbefehl, der aus dem Befehl/Status-Doppelwort 50b verfügbar ist, lautet "Lade Statusaktualisierungszusammenfassungszeiger". Der Befehl "Lade SUS-Zeiger" veranlaßt den Adapter, die Inhalte das Doppelwortes 74 zur Verwendung als einen Zeiger zu dem Doppelwort zu benutzen, für das das Byte niedriger Ordnung der SUS-Indikator ist. Der SUS-Indikator wird auf ungleich 0 gesetzt, sofort nachdem der Adapter das grundlegende Statusbyte irgendeines Befehl/Status-Doppelwortes aktualisiert hat, welches dieser Vorrichtung (QD oder EAD) zugeordnet ist, um den "Ausgeführt"-Status herzustellen. Der SUS-Indikator wird für irgendeinen Zustand auf ungleich null gesetzt, der zu einem "Ausgeführt"-Status führt, einschließlich normaler Vollendungen als auch Exzeptionszuständen. Alle Adapter implementieren diesen Befehl. Der SUS-Zeiger wird sowohl durch den Erzeuge-Warteschlange (MB)-Befehl als auch durch den Zerstöre-Warteschlange (MB)-Befehl ungültig gemacht. SUS-Berichten bei der Warteschlangenerzeugung ist blockiert, bis es durch diesen Befehl freigegeben wird. Außerdem verhindert wird das Schreiben an einen früheren SUS- Indikator, nachdem die Warteschlange nicht länger existiert. Nachdem SUS-Berichten durch Ausführung dieses Befehls freigegeben worden ist, kann es anders als durch Zerstören der Warteschlange nicht gesperrt werden. Mehr als ein SUS-Zeiger kann auf dasselbe Doppelwort zeigen, da der SUS-Indikator ohne Rücksicht auf den vorherigen Zustand des Indikators aktualisiert wird.
  • Der E/A-Deskriptor 34 ist ausführlicher in Fig. 11 gezeigt. Jeder E/A-Deskriptor enthält die grundlegende Steuerinformation für eine einzelne Vorrichtungsebenenoperation. Ein E/A-Deskriptor zusammen mit seiner Hilfstransfersteuerliste 38 und Vorrichtungssteuerblockstrukturen 36 (Fig. 2) spezifizieren vollständig eine Eingang/Ausgang-Operation sowohl für den Adapter als auch für den externen Vorrichtungskontroller (falls vorhanden). Jeder E/A-Deskriptor wird durch Systemsoftware konstruiert und mit der Vorrichtungswarteschlange für die geeignete Vorrichtung verbunden. E/A-Adapter gewinnen Zugriff auf die E/A-Deskriptoren über den Befehlsverkettungsprozeß, führen die angezeigten Operationen aus und berichten über den Vollendungsstatus an die Statusfelder der E/A-Deskriptoren. Alle E/A-Adapter müssen E/A-Deskriptoren stützen.
  • Die E/A-Deskriptoren 34 sind acht Doppelwörter in sequentiell aufsteigenden, ausgerichteten Doppelwortplätzen im Speicher.
  • Das erste Doppelwort des E/A-Deskriptors 34 ist ein Befehl/Status-Doppelwort 50c. Das Befehlsbyte in den Bits 0 bis 7 wird benutzt, um vorrichtungsspezifische Befehlscodes aufzunehmen. Die Codes können für irgendeinen besonderen Adapter spezifisch sein; die Codes und reservierten Bereiche für Lese (40H-4FH)-, Schreib(50H-5FH)-, Vorrichtungssteuerfunktionen (Suchen usw.) (60H-6FH) und andere (70H-7FH) sind jedoch vorgesehen.
  • Das Befehlsmodifiziererbyte in den Bits 8 bis 15 zeigt Aktionen an, die der Adapter während der Verarbeitung des Befehls in diesem E/A-Deskriptor auszuführen hat. Die Warteschlangensteuerfunktionen beinhalten das Bit 15, welches auf eine "1" gesetzt ist, um anzuzeigen, daß der nächste E/A-Deskriptor-Zeiger (Doppelwort 76) eine gültige E/A-Deskriptor-Adresse enthält; das Bit 14 wird auf eine "1" gesetzt, um den PCI-Interruptzustand hervorzurufen, wenn die Verarbeitung dieses E/A-Deskriptors vollendet ist; das Bit 13, welches auf "1" gesetzt ist, um zu erzwingen, daß am Ende des Verkettungsstatus die Befehlsverkettung gestoppt und diese Vorrichtung angehalten wird, unabhängig von dem Wert oder der Gültigkeit des nächsten E/A-Deskriptor-Zeigers 76; das Bit 12, welches auf eine "1" gesetzt ist, um zu erzwingen, daß die Befehlsverkettung fortgesetzt wird, selbst wenn dieser E/A-Deskriptor einen Exzeptionsstatus erzeugt (nur vorgesehen zur Verwendung durch die Vorrichtungsdiagnosesoftware, die manchmal wissend Exzeptionszustände erzeugen muß); und das Bit 11, welches auf eine "1" gesetzt ist, um zu bewirken, daß der Adapter die Doppelwörter 52c und 52d als einen Extent-Deskriptor des physikalischen E/A-Puffers benutzt, statt als einen Extent-Eeskriptor der Transfersteuerliste. Die Datenverknüpfung ist nicht möglich, wenn das Bit 11 auf eine "1" gesetzt ist. Die Datenverknüpfung ist die Aktion, durch die ein Adapter den nächsten Datenpuffer für den Zweck verarbeitet, den Datentransfer fortzusetzen, der mit einem einzelnen Befehl verbunden ist, bei Erschöpfung der Bytezählung des vorhergehenden Datenpuffers. Die Bits 12 und 13 sind in bezug aufeinander gegenseitig exklusiv.
  • Das vorrichtungsspezifische Statusbyte in den Bits 16 bis 23 des Befehl/Status-Doppelwortes 50c des E/A-Deskriptors 34 ist verfügbar zum Berichten über vorrichtungsspezifischen oder adapterspezifischen Vollendungsstatus betreffend den Befehl.
  • Das grundlegende Statusbyte in den Bits 24 bis 31 des Befehl/Status-Doppelwortes 50c wird benutzt, um über die Verarbeitung und Vollendung des E/A-Befehls zu berichten. Die Bits 30 und 31 sind die E/A-Status-Flags, die früher in Verbindung mit dem Befehl/Status-Doppelwort beschrieben worden sind. Einige Typen von Adaptern können mehr als einen E/A-Deskriptor bei der Verarbeitung einer einzelnen logischen Operation benutzen. In diesem Fall muß nur der erste E/A-Deskriptor am Beginn der Operation als besetzt markiert werden, da der Verbindungszeiger in einem besetzten E/A-Deskriptor nicht durch Software modifiziert werden kann, wodurch garantiert wird, daß der nächste E/A-Deskriptor noch verfügbar sein wird, wenn er benötigt wird. Das Bit 29 wird auf eine "1" gesetzt, wenn der "Ausgeführt"- Status in diesem Byte abgespeichert ist, falls der Adapter einen Interruptzustand als Ergebnis dieses E/A-Deskriptors erzeugt, unabhängig von dem Zustand der Interruptmaske in dem Warteschlange-Deskriptor. Das Bit 28 wird auf eine "1" gesetzt, um anzuzeigen, daß dieser Befehl mit Exzeptionsstatus vollendet worden ist und daß sich Einzelheiten über die Exzeption in dem Exzeption-Status-Block für diese Warteschlange finden lassen. Die Bits 27 bis 24 enthalten den codierten Befehlvollendungsstatus, um anzuzeigen, daß eine Operation erfolgreich vollendet worden ist, daß ein illegaler Befehlscode spezifiziert wurde, daß der Befehl zurückgewiesen wurde, weil er nicht richtig mit dem Adapter in seinem gegenwärtigen Zustand ausgeführt werden konnte, daß ein Spezifikationsfehler in einem Operandenfeld die erfolgreiche Vollendung verhinderte, daß eine ungültige oder nichtexistente oder fehlausgerichtete Speicher- oder Steuerraumadresse spezifiziert wurde, daß ein unkorrigierbarer Datenfehler oder ein anderer interner Fehler innerhalb des E/A-Adapters festgestellt wurde, daß ein unkorrigierbarer Datenfehler an dem externen E/A-Adapter-Interface während der Operation auftrat, daß die Befehlsfunktion durch einen externen E/A-Kontroller zurückgewiesen wurde, daß der erforderliche Mindestdatenpufferraum für die verlangte Operation nicht verfügbar war, daß die Operation innerhalb des Zeitsperreintervalls, das in dem Warteschlange-Deskriptor spezifiziert ist, nicht vollendet werden konnte, daß die Operation aufgrund eines "Anhalten-E/A"-Mailbox-Befehls beendet wurde, daß die Operation aufgrund eines "Anhalten Vorrichtung"-Warteschlange-Deskriptor-Befehls beendet wurde, und dgl., einschließlich diagnostischer Störung und verschiedener vorrichtungsspezifischer Bedingungen.
  • Das Doppelwort 76 ist der Verbindungszeiger für die E/A-Deskriptor-Warteschlange. Dieser Zeiger enthält die Adresse des nächsten E/A-Deskriptors für den Adapter zum Verarbeiten. Dieses Doppelwort wird niemals durch den Adapter geschrieben und wird durch den Adapter nur gelesen und benutzt, wenn das EAD-Zeiger-gültig-Flag (Bit 15) des Befehlsmodifizierers auf eine "1" gesetzt ist.
  • Die Doppelwörter 52c und 52d enthalten einen Extent-Deskriptor für die Transfersteuerliste, falls das Bit 11 des Befehlsmodifizierers auf eine "0" gesetzt ist, oder einen Extent-Deskriptor für den Datenpuffer, falls das Bit 11 des Befehlsmodifizierers auf eine "1" gesetzt ist. Ein gültiger Eintrag in diesem Extent-Deskriptor ist obligatorisch, wenn der Befehl einen Datenpuffer verlangt. Wenn der Extent-Deskriptor eine Transfersteuerliste spezifiziert, muß der Längenwert ein Vielfaches von 8 sein, wegen der (8-Byte-) Länge der Transfersteuerlisteneintragungen, und die Adresse muß ein Vielfaches von vier sein, da die Steuerstrukturen der vorliegenden Erfindung doppelwortausgerichtet sein müssen. Wenn dieser Extent-Deskriptor den Datenpuffer direkt spezifiziert, gibt es weder Längen- noch Ausrichtungsrestriktionen. In dem speziellen Fall von Befehlen, die niemals mehr als vier Bytes zum übertragen verlangen können, kann das Doppelwort 52d als ein Datenpuffer statt einer Transfersteuerliste oder eines einzelnen bezeichneten Puffers benutzt werden.
  • Die Doppelwörter 52e und 52f enthalten einen Extent-Deskriptor für den Vorrichtungssteuerblock. Die Länge des Vorrichtungssteuerblockes kann variabel sein, obgleich die Startadresse des Vorrichtungssteuerblockes doppelwortausgerichtet sein muß. Ein Vorrichtungssteuerblock muß vorhanden sein, wenn der Befehl Hilfssteuerinformation verlangt. Wenn ein Vorrichtungssteuerblock für einen besonderen Befehl optional ist, muß sein Vorhandensein durch einen von null verschiedenen Wert in dem Vorrichtungssteuerblocklängenfeld des Extent-Deskriptors 52e erkannt werden. In dem Spezialfall von Befehlen, die Hilfsinformation verlangen, die aber niemals mehr als vier Bytes an Hilfsinformation verlangen können, kann das Doppelwort 52f zum Aufnehmen dieser Steuerinformation statt eines Vorrichtungssteuerblockes benutzt werden.
  • Die Doppelwörter 78 und 80 sind für adapterspezifischen Gebrauch mit Typen von Vorrichtungen verfügbar, die zusätzliche Funktionalität in ihren E/A-Deskriptoren verlangen. Mögliche Verwendungen der Doppelwörter 78 und 80
  • beinhalten vorrichtungsbezogene Steuer- oder Statusinformation eines Typs, der es nicht rechtfertigt, daß ein Vorrichtungssteuerblock oder ein spezieller Statuspuffer zugeordnet wird. Ein Beispiel ist, über Datenverknüpfung und Netzwerksebenenstatus für ein Lokalbereichsnetzwerksinterface zu berichten.
  • Die Vorrichtungssteuerblöcke 36 (Fig. 2 und 5) stellen ausgerichteten Doppelwortspeicherplatzraum zum Speichern von vorrichtungsspezifischer Steuerinformation in Unterstützung von E/A-Deskriptor-Befehlen bereit. Als solche sind die Vorrichtungssteuerblöcke nicht speziell dargestellt. Die Größe und das Format des Vorrichtungssteuerblockes sind gänzlich vom Adapter abhängig und sind nicht darauf beschränkt, zwischen Adaptertypen gleichförmig zu sein. Vorrichtungssteuerblöcke sollten nur für Adapterfunktionen benutzt werden, die ihre vorrichtungsspezifische Steuerinformation nicht in dem E/A-Deskriptor unterbringen können. Ein Beispiel ist, SCSI (ANSI-X3T9.2-Standard)-Befehlsblöcke in Datensteuerblöcken zu speichern, die mit SCSI-Plattensteuerung-E/A-Deskriptoren benutzt werden.
  • Einzelheiten einer Transfersteuerliste 38 sind in Fig. 12 gezeigt. Eine Transfersteuerliste 38 ermöglicht Zugriff auf einen oder mehrere Datenpuffer zur Verwendung beim übertragen der Daten, die einem einzelnen E/A-Deskriptor zugeordnet sind. Die Transfersteuerliste ist eine Liste von Extent-Deskriptoren, von denen jeder einen separaten E/A- Puffer definiert. Das Format der Transfersteuerliste hat keine Restriktionen der Länge oder der Ausrichtung dieser Puffer zur Folge. Das Wort niedriger Ordnung jedes Extent- Deskriptor-Doppelwortes 52g der Transfersteuerliste-Steuerstruktur 38 ist für möglichen Gebrauch beim Halten eines Befehls oder Puffergebrauchsindikators reserviert. Ein Beispiel der Verwendung dieses Wortes niedriger Ordnung würde darin bestehen, Puffer zu unterscheiden, die Schlüssel aus Puffern enthalten, um Lesedaten zu akzeptieren oder um Schreibdaten für einen intelligenten Datenbasisprozessor zu liefern. Die Anzahl von Extent-Deskriptoren in der Transfersteuerliste ist nicht begrenzt und kann sich über den Extent-Deskriptor 52g und 52h, der in Fig. 9 gezeigt ist, hinaus erstrecken. Alle Extent-Deskriptoren in einer bestimmten Transfersteuerliste müssen sequentiell aufsteigende Adressen haben.
  • Einzelheiten des Exzeption-Status-Blockes 40 sind in Fig. 13 dargestellt. Jeder Exzeption-Status-Block 40 bietet Raum zum Speichern von Statusinformation über Exzeptionszustände, die aufgetreten sind, während Vorrichtungsebenenbefehle ausgeführt worden sind. Es ist ein Exzeption- Status-Block jedem Warteschlange-Deskriptor zugeordnet, wie es in den Fig. 2 und 5 gezeigt ist, und die Befehlsverkettung wird im allgemeinen gestoppt, wenn eine Exzeption erfolgt, um die Inspektion der Exzeption-Status-Block- Inhalte und das Einleiten von Fehlerbeseitigungsaktivität (falls notwendig) zu gestatten. Der Exzeption-Status-Block ist eine Struktur variabler Länge, die vier oder mehr sequentiell auf steigende Doppelwörter enthält, die an Doppelwortgrenzen im Speicher ausgerichtet sind.
  • Das Doppelwort 86 des Exzeption-Status-Blockes 40 enthält Vollendungsstatusinformation in dem Wort niedriger Ordnung und die restliche Transferzählung in dem Wort hoher Ordnung. Das grundlegende Statusbyte enthält Bits, die den Typ der Exzeption, die aufgetreten ist, anzeigen. Das Bit 3 wird auf eine "1" gesetzt, um anzuzeigen, daß ein ungültiger E/A-Deskriptor-Verbindungszeiger während der Befehlsverkettung angetroffen wurde. Das Bit 2 wird auf eine "1" gesetzt, um anzuzeigen, daß die Exzeption durch einen Fehlerstatus erkannt wurde, der durch das externe Interface präsentiert wurde. Das Bit 1 wird auf eine "1" gesetzt, um anzuzeigen, daß der Transfersteuerlistenzeiger in dem Doppelwort 92 des Exzeption-Status-Blockes bedeutsame Information enthält. Das Bit 0 wird auf eine "1" gesetzt, um anzuzeigen, daß ein Direktspeicherzugriffs(DMA)-Transfer (Lesen oder Schreiben eines E/A-Puffers) vonstatten ging, als die Exzeption erfolgte, was bedeutet, daß das Wort hoher Ordnung dieses Doppelwortes sowie das Doppelwort 88 dieses Exzeption-Status-Blockes bedeutsame Information enthalten. Das vorrichtungsspezifische Statusbyte in den Bits 8 bis 15 enthält zusätzliche Information über die Exzeption. Das übrige Direktspeicherzugriffstransferzählungsfeld in den Bits 16 bis 31 enthält die Anzahl von Bytes, welche zum übertragen in dem E/A-Puffer verblieben, als die Exzeption erfolgte. Dieser Wert ist nur bedeutsam, wenn das Bit 0 des Doppelwortes auf "1" gesetzt ist.
  • Das Doppelwort 88 enthält die Speicherraumadresse, die bei dem nächsten DMA-Transferzyklus benutzt worden wäre, wenn die Exzeption nicht erfolgt wäre. Dieser Wert ist nur bedeutsam, wenn das Bit 0 ,des Doppelwortes 86 auf eine "1" gesetzt ist.
  • Das Doppelwort 90 enthält die Adresse des E/A-Deskriptors, der verarbeitet worden ist, als die Exzeption erfolgte. Dieser Wert ist nur bedeutsam, wenn das Bit 3 des Doppelwortes 86 auf eine "0" gesetzt ist. Das Doppelwort 92 enthält eine Adresse, die 8 Bytes höher ist als die Transfersteuerlisteneintragung, die benutzt worden ist, als die Exzeption erfolgte. Dieser Wert ist nur bedeutsam, wenn das Bit 1 des Doppelwortes 86 auf eine "1" gesetzt ist.
  • Das Doppelwort 94 und zusätzliche Doppelwörter (nicht gezeigt) sind verfügbar, wenn sie benötigt werden, um Information aufzunehmen, die für den besonderen Typ von Adapter, Vorrichtung und/oder Fehler spezifisch ist.
  • Das typische Computersystem, bei dem die vorliegende Erfindung benutzt wird, wird eine Vielzahl von E/A-Vorrichtungen haben, die an die E/A-Adapter angeschlossen sind. Das Management dieser Vorrichtungen aus der Systemsoftware heraus kann beträchtlichen zusätzlichen Zugriff auf vielfache Steuerstrukturen beinhalten, die in dem Hauptspeicher verstreut sind. Demgemäß schafft die vorliegende Erfindung die Statusaktualisierzusammenfassungsmöglichkeit zur schnellen Bestimmung, daß Steuerstrukturen inspiziert werden müssen. Ein Statusaktualisierzusammenfassung(SUS)-Indikator 95, der in Fig. 5 gezeigt ist, kann immer dann gesetzt werden, wenn irgendein vorrichtungsbezogener Status (entweder normal oder exzeptionell) im Hauptspeicher durch den Adapter aktualisiert wird. Die obere Ebene der System- E/A-Managementsoftware kann den Statusaktualisierzusammenfassungsindikator benutzen, um den Eintrag in verschiedene untere Ebenen der Vorrichtungstreibersoftware zu steuern. Statt der Verwendung eines Interrupts zum Bestimmen, ob der Status von irgendeiner der Vorrichtungen sich geändert hat, oder zum Prüfen der verschiedenen Bereiche des Speicherprüfstatus, was beides beträchtlichen Overhead verlangt, kann der Statusaktualisierzusammenfassungsindikator geprüft werden.
  • Der Statusaktualisierzusammenfassungsindikator 95, der in Fig. 5 gezeigt ist, ist ein Doppelwortspeicherplatz, an dem der Aktualisierindikator angeordnet ist. Der Statusaktualisierzusammenfassungsindikator kann jedem Warteschlange-Deskriptor 32 zugeordnet sein. Jeder Warteschlange-Deskriptor 32 kann mit einem Statusaktualisierzusammenfassungszeiger gesetzt werden, indem ein Befehl "Lade Statuszusammenfassungsaktualisierzeiger" benutzt wird, welcher das gemischte Doppelwort 74 des Warteschlange-Deskriptors benutzt (Fig. 10B), um die Statusaktualisierzusammenfassungsindikatoradresse im Speicher zu spezifizieren. Immer dann, wenn der E/A-Adapter irgendeine Änderung an irgendeinem Befehl/Status-Doppelwort vornimmt, die einen "Ausgeführt"-Status ergibt, mit entweder normaler Vollendung oder Exzeptionsvollendung, wird der Platz, der durch diesen Zeiger spezifiziert wird, aktualisiert, indem er zur selben Zeit ungleich null gesetzt wird, zu der der Adapter den "Ausgeführt"-Status in dem Befehl/Status-Doppelwort setzt. Durch Schauen auf einen Statusaktualisierzusammenfassungsindikatorplatz kann die Software feststellen, ob irgendein Status, der sich auf irgendeinen bestimmten Warteschlange-Deskriptor bezieht, aktualisiert worden ist. Das spart beträchtlichen Overhead und Zeit beim Bestimmen von Änderungen im Status. Wenn die Gesamtzahl der aktiven Vorrichtungswarteschlangen klein ist, kann es sogar effizienter sein, mehr als einen Warteschlange-Deskriptor denselben SUS-Indikator benutzen zu lassen.
  • Aus der vorstehenden Beschreibung wird deutlich, daß es ein beträchtliches Ausmaß von Gleichförmigkeit zwischen diesen Steuerstrukturen gibt. Viele der Doppelwörter innerhalb jeder Steuerstruktur sind von demselben Typ. Diese Gleichförmigkeit steigert die Nützlichkeit der vorliegenden Erfindung in unterschiedlichen Typen von Computersystemen und zur Kommunikation mit unterschiedlichen Typen von E/A-Vorrichtungen. Die Eingang/Ausgang-Steuertechnik der vorliegenden Erfindung ist bei einer großen Vielfalt von unterschiedlichen E/A-Vorrichtungen anwendbar, ohne die Notwendigkeit, separate Adapterprozessoren vorzusehen oder spezifische Vorrichtungstreibercodes für spezifische Typen von unterschiedlichen E/A-Vorrichtungen oder -Adaptern zu schreiben.
  • Die Funktion der vorliegenden Erfindung kann nun in Anbetracht der beschriebenen Steuerstrukturen besser verstanden werden. Software oder Firmware, die auf den Prozessormoduln läuft, wird beginnen, indem Information in die Mailboxen an festen Adressen eingebracht wird. Die Prozessoren werden dann Modulaufrufsignale abgeben. Ein "Erzeuge Warteschlange"-Befehl aus der Mailbox wird zu jedem Adapter für jede angeschlossene Vorrichtung gesendet. Software oder Firmware an dem zentralen Prozessor wird die Warteschlange-Deskriptoren aufbauen. Jeder Modul, der einen "Erzeuge Warteschlange" (Mailbox)-Befehl empfängt, wird in seinem internen Speicher die Adresse seines Warteschlange-Deskriptors speichern. Anschließend, wenn der Adapter ein Vorrichtungsaufrufsignal für diese Vorrichtung empfängt, wird er in der Lage sein, den Warteschlange-Deskriptor zu lokalisieren. Nachdem jeder Warteschlange-Deskriptor erzeugt worden ist, wird er bleiben, bis ein "Zerstöre Warteschlange" (Mailbox)-Befehl gegeben wird. Ebenso, immer dann, wenn Software, die auf dem Prozessor läuft, eine E/A-Operation auszuführen verlangt, wird sie normalerweise einen E/A-Deskriptor erzeugen (oder einen früher vollendeten E/A-Deskriptor wiederbenutzen), um die Operation zu beschreiben, und ihn dann in die Warteschlange für die geeignete Vorrichtung einreihen. Schließlich wird die Vorrichtung die Warteschlange während der normalen Abfrage oder als ein Ergebnis eines Vorrichtungsaufrufsignals überprüfen.
  • Die Eingang/Ausgang-Operation wird dann als Ergebnis der Information ausgeführt, die in dem E/A-Deskriptor enthalten ist, und möglicherweise durch die Verwendung der Transfersteuerliste und Vorrichtungssteuerblöcke. Als Antwort auf die Vollendung, entweder erfolgreich oder mit Exzeption der E/A-Operation, wird der E/A-Adapter veranlaßt, die Statusfelder innerhalb von sämtlichen geeigneten Steuerstrukturen (und die gesamten Inhalte des Exzeption-Status-Blockes in dem Fall eines Exzeptionszustands) zu modifizieren. In einem etwas späteren Zeitpunkt prüft der Prozessor den Vollendungsstatus des geeigneten E/A-Deskriptors, um festzustellen, ob die E/A-Operation vollendet worden ist. Diese Überprüfung braucht nur gemacht zu werden, wenn der Statusaktualisierzusammenfassungsindikator einen geänderten Zustand anzeigt. Der Prozessor kann weitermachen und die Information benutzen, ohne je unterbrochen worden zu sein, was zu beträchtlichen Einsparungen an Zeit führt und den Datendurchsatz des Gesamtsystems erhöht. Wenn als ein Resultat der Überprüfung des Vollendungsstatus der geeigneten Steuerstruktur festgestellt worden ist, daß die besondere E/A-Operation nicht vollendet worden ist, kann der Prozessor warten, bis sie vollendet worden ist, und kann andere Verarbeitung vornehmen, bevor er den Vollendungsstatus erneut überprüft.
  • Einer der wichtigen Vorteile, die die vorliegende Erfindung bietet, ist, daß die E/A-Adapter keine E/A-Prozessoren zu sein brauchen. Demgemäß behalten die zentralen Prozessoren die Steuerung des Betriebssystems, und die Schwierigkeiten, die bei dem bekannten Versuch auftreten, E/A-Prozessoren zu benutzen, um einen Teil des Betriebssystemcodes auszuführen, werden vermieden. Die bevorzugte Einrichtung zum Realisieren des E/A-Adapters ist ein Mikrocode auf einem üblichen bipolaren Mikrosequenzer. Die Funktion des E/A-Adapters könnte jedoch auch in Hardware oder in Software realisiert werden. Sequenzer sind auf dem einschlägigen Fachgebiet bekannt, und die Funktionen, die durch einen E/A-Adapter zu erzielen sind, liegen im Rahmen fachmännischen Könnens. Es ist unter dem Realisierungsgesichtspunkt bedeutsam, daß die Unterstützung für diese E/A-Steuertechnik nicht verlangt, daß der E/A-Adapter eine universelle arithmetische/logische Einheit (ALU) hat, es sind nur Bittest- und Adreßinkrementier-/-dekrementierfähigkeiten erforderlich. Das folgende Zustandsübergangsdiagramm, das in Fig. 14 gezeigt ist, ist ein Beispiel für die Verwendung einer Vorrichtung, die mit einem der E/A-Adaptermoduln verbunden ist. Gemäß der Erläuterung in Verbindung mit den Fig. 3 und 4 kann mehr als eine Vorrichtung mit einem physikalischen E/A-Adaptermodul verbunden sein.
  • Ein Zustandsübergangsdiagramm für den Betrieb der vorliegenden Erfindung und eine mit dem E/A-Adapter verbundene Vorrichtung ist in Fig. 14 gezeigt. Ein Nullsetzen beim Einschalten der Stromversorgung ergibt eine Nullbedingung oder einen Nullzustand bei 100. Der Übergang aus dem Nullzustand ist ein Ergebnis eines Mailbox-Befehls, der aufgrund eines Modulaufrufs ausgeführt wird, welcher auf einem Befehlscode in dem Mailbox-Befehl/Status-Doppelwort basiert. Ein Übergang dient zum Erzeugen einer Warteschlange, und der andere Übergang dient zum Zerstören der Warteschlange. Der Übergang zum Erzeugen der Warteschlange ergibt einen nichtinitialisierten Zustand von 102. Der Übergang zum Zerstören der Warteschlange geht von dem nichtinitialisierten Zustand 102 auf den Nullzustand 100. Der Warteschlange-Deskriptor-Befehl zum Initialisieren der Warteschlange ist der Übergang zwischen dem nichtinitialisierten Zustand und einem Abfrageanforderungszustand 104. In dem Abfrageanforderungszustand wird eine Zeitsteuerbedingung gebildet, um die Warteschlange periodisch abzufragen. Das Abfragen der Warteschlange bedeutet überwachen des Bits 15 des Befehlsmodifiziererbytes des Warteschlange-Deskriptors oder des letzten vollendeten Tests des letzten E/A-Deskriptors, wobei dieses Bit auf "1" gesetzt wird.
  • Wenn die Warteschlange abgefragt wird und es sich zeigt, daß dieses Bit "0" ist, ist die Warteschlange leer; und unter diesen Bedingungen wird ein Übergang aus dem Abfrageanforderungszustand 104 in einen Zustand gemacht, der mit Vorrichtungsleerlauf 106 bezeichnet ist. Der Übergang aus dem Vorrichtungsleerlaufzustand 106 in den Abfrageanforderungszustand 104 ist mit "Zeitgeber oder Warteschlange-Deskriptor fortsetzen" bezeichnet. Das "Zeitgeber"-Etikett in diesem Übergang bedeutet, daß die Zeitgeberabfragerate die Zeitsperre erreicht hat und daß es Zeit ist, die Warteschlange wieder abzufragen. Die Zeitdauer des Zeitgebers wird durch den "Setze Warteschlangenabfragerate" -Befehl gesetzt. Das Etikett "Warteschlange-Deskirptor fortsetzen" bedeutet, daß ein Vorrichtungsaufrufsignal mit einem Warteschlange-Deskriptor-Befehl "Fortsetzen" gesendet worden ist, was bedeutet, daß die Vorrichtung mit dem Abfragen fortfahren sollte.
  • Wenn das Abfragen in dem Abfrageanforderungszustand ergibt, daß die Warteschlange nicht leer ist, erfolgt ein Übergang aus dem Abfrageanforderungszustand 104 auf einen Kanal anforderungszustand 108. In dem Kanalanforderungszustand 108 wird eine Anforderung gemacht, um zu versuchen, einen Kommunikationskanal zu der spezifischen externen physikalischen Vorrichtung von dem E/A-Adapter her zu aktivieren.
  • Ein Übergang aus dem Kanalanforderungszustand 108 auf einen Kanalbenutzungszustand 110 erfolgt als ein Ergebnis der erfolgreichen Aktivierung dieses Kanals. Wenn die Zuordnung eines Kanals fehlschlägt, gibt es einen Übergang aus dem Kanalgebrauchszustand 110 zurück auf den Kanalanforderungszustand 108.
  • Der Kanalbenutzungszustand 110 bedeutet die Benutzung des Kanals zum Ausführen der E/A-Operation. Wenn während des Prozesses der Benutzung des Kanals ein Trennen erfolgt, was bedeutet, daß es keine Funktionen gibt, die auf dem Kanal auftreten und daß der Kanal frei sein kann, erfolgt der Trennübergang in einen Kanaltrennzustand 112. Der Übergang von dem Kanaltrennzustand 112 auf den Kanalgebrauchszustand 110 erfolgt, wenn der Kanal wieder angeschlossen wird. Ein Beispiel dessen ist ein Plattenlaufwerk, welches von dem Kanal getrennt werden kann, während eine Suche vonstatten geht, und wieder angeschlossen werden kann, wenn seine Köpfe über dem gewünschten Zylinder positioniert sind.
  • Wenn der Gebrauch des Kanals vollendet ist, erfolgt ein Übergang aus dem Kanalgebrauchszustand 110 auf einen Abfrageinterruptzustand 114. Immer dann, wenn ein Befehl vollendet ist oder es eine Ausführung irgendeiner der Anzahl von anderen Dingen gibt, die oben in Verbindung mit den Interrupts beschrieben worden sind, tritt ein Interruptzustand auf. Die Ergebnisse des Interruptzustands können sein, nichts zu tun oder eine Interruptanforderung zu präsentieren. Das Ergebnis hängt davon ab, wie das Interruptmaskenfeld in dem Warteschlange-Deskriptor codiert ist. Wenn es einen Grund gibt, einen Interrupt zu präsentieren, wird es eine übergangsschleife am Zustand 114 geben, bis der letzte Interrupt bestätigt worden ist. Die übergangsschleife ist mit "letzter Interrupt unbestätigt" bezeichnet. Wenn es keinen Bedarf an einem Interruptzustand gibt, um tatsächlich eine Interruptanforderung zu präsentieren, oder wenn der vorhergehende Interrupt bestätigt worden ist, ist dieser Übergang aus dem Abfrageinterruptzustand 114 mit "letzter Interrupt bestätigt" bezeichnet. Bei den "1etzter Interrupt bestätigt"-Übergängen gibt es einen Übergang aus dem Abfrageinterruptzustand 114 zurück auf den Abfrageanforderungszustand 104.
  • Übergänge aus dem Vorrichtungsleerlauf zustand 106, Abfrageanforderungszustand 104, Kanalanforderungszustand 108, Kanaltrennzustand 112 und dem Abfrageinterruptzustand 114 erfolgen auf einen Vorrichtungsanhaltezustand 116. Die Bedingungen, die bewirken, daß eine Vorrichtung angehalten wird, sind ein Stoppe-Verkettung-Flag innerhalb eines E/A- Deskriptors oder ein Warteschlange-Deskriptor-Befehl "Vorrichtung Anhalten", ein Mailbox-Befehl "E/A Anhalten", irgendein Exzeptionszustand während der Verarbeitung des Warteschlange-Deskriptors oder des E/A-Deskriptors oder eine Operationszeitsperre. Irgendeine dieser Situationen bewirkt, daß in den Vorrichtungsanhaltezustand eingetreten wird. Ein Übergang aus dem Vorrichtungsanhaltezustand 116 zurück auf den Abfrageanforderungszustand 104 kann als ein Ergebnis eines Warteschlange-Deskriptor-"Fortsetzen"-Befehls oder eines "Initialisiere Warteschlange"-Befehls erfolgen. Ein Übergang auf den Nullzustand erfolgt mit einem Befehl "Zerstöre Warteschlange" in der Mailbox.
  • Unterstützungsfunktionen wie die Befehle Setze Warteschlangenabfragerate (MB) oder Setze SUS-Zeiger (QD) werden innerhalb der Zustände 100 und 102 nach Bedarf gehandhabt. Diagnosefunktionen sind in Fig. 14 nicht gezeigt.
  • Einige Vorrichtungen, die mit einem E/A-Adapter verbunden sind, sind in ihrem Betrieb relativ einfach und verlangen nicht alle Zustände, die in dem Zustandsübergangsdiagramm von Fig. 14 dargestellt sind. Ungeachtet der Einfachheit einer besonderen Vorrichtung sind jedoch der Nullzustand 100, der Nichtinitialisiert-Zustand 102, der Abfrageanforderungszustand 104, der Vorrichtungsleerlauf zustand 106, der Abfrageinterruptzustand 114 und der Vorrichtungsanhaltezustand 116 allen Typen von Vorrichtungen gemeinsam. Was sich von einer Art Vorrichtung zur anderen Art Vorrichtung unterscheiden wird, sind die niedrigeren drei Zustände 108, 110 und 112. In einer äußerst komplexen Vorrichtung kann der Zustand 110 durch viele zusätzliche Zustände ersetzt werden, was von den besonderen Erfordernissen des Typs von Vorrichtung abhängig ist, die mit dem E/A-Adapter verbunden ist. In sehr einfachen Vorrichtungen wird ein direkter Übergang von dem Abfrageanforderungszustand 104 auf den Abfrageinterruptzustand 114 erfolgen, wodurch die Zustände 108, 110 und 112 eliminiert werden. Eine weitere Beschreibung der verschiedenen Zustände wir als nicht notwendig angesehen, weil diese Zustände vorrichtungsabhängig sind.
  • Eine Erläuterung von gewissen zusätzlichen Betriebssequenzen unter dem Gesichtspunkt sowohl der Prozessorsoftware oder -firmware als auch des Adaptermikrocodes oder der Implementiereinrichtung vervollständigt das Verständnis der vorliegenden Erfindung.
  • Sofort nach dem Null setzen beim Einschalten der Stromversorgung sollte die Systemfirmware oder -software in der angegebenen Reihenfolge (a) einen Berichte-Modultyp-Befehl an jeden Modul abgeben, (b) einen Rückmelden-Diagnosestatus- Befehl an jeden Modul abgeben, der als ein E/A-Adapter oder -Prozessor ermittelt wird, und (c) Systemkonfigurationsinformation auf der Basis des Typs und des Zustands der bewußten Moduln aufbauen. Bei Empfang der Modulaufrufe, die für die Berichte-Modultyp- und Rückmelden- Diagnosestatus-Befehle gesendet werden, sollte der Empfangsprozessor oder -adapter die bezeichnete Mailbox lesen und die oben beschriebenen Befehlsfunktionen ausführen.
  • Vor dem Ausführen von irgendwelchen E/A-Operationen an einem Adapter muß wenigstens ein Warteschlange-Deskriptor erzeugt und initialisiert werden.
  • Beim Erkennen eines Modulaufrufs sollte der Empfangsmodul in der angegebenen Reihenfolge (a) die Adresse der bezeichneten Mailbox des Moduls abhängig von der Mailboxadreßanordnung, die in dem System festgelegt ist, berechnen oder festlegen, (b) das Befehl/Status-Doppelwort der bezeichneten Mailbox lesen und sicherstellen, daß das Byte 3 den "Anhängig"-Status anzeigt, (c) in das Byte 3 des Befehl/Status-Doppelwortes schreiben, um den "Besetzt"-Status zu setzen, (d) den Befehl decodieren, der in dem Byte 0 des Befehl/Status-Doppelwortes spezifiziert ist, (e) den Befehl ausführen, wenn es ein gültiger Mailbox-Befehl ist, oder ansonsten über einen Exzeptionsstatus bei Vollendung berichten, (f) Vollendungsstatusinformation zusammen mit einem "Ausgeführt"-Status in das Byte 3 des Befehl/Status- Doppelwortes schreiben; und (g) den Interrupt verlangen, der in dem Interrupt-Deskriptor spezifiziert ist, wenn das Maskenbit (Bit 30) des Interrupt-Deskriptors auf eine "1" gesetzt ist.
  • Beim Erkennen eines Vorrichtungsaufrufes sollte der Empfangs-E/A-Adapter in der angegebenen Reihenfolge (a) die Warteschlange-Deskriptor-Adresse für die bezeichnete Vorrichtung wiederauffinden; (b) prüfen, ob die bezeichnete Vorrichtung eine Warteschlange erzeugt hat, und den Vorrichtungsaufruf ignorieren, wenn es keine Warteschlange gibt; (c) wenn es eine Warteschlange gibt, das Warteschlange-Deskriptor-Befehl/Status-Doppelwort lesen; (d) eine Warteschlangenintegritätsexzeption erzeugen, wenn das Byte 3 des Befehl/Status-Doppelwortes keinen "Anhängig"- Status anzeigt; (e) in das Byte 3 des Befehl/Status-Doppelwortes schreiben, um den "Besetzt"-Status zu setzen; (f) den Befehl decodieren, der in dem Byte 0 des Befehl/Status- Doppelwortes spezifiziert ist; (g) den Befehl ausführen, wenn es ein gültiger Warteschlange-Deskriptor-Befehl ist, andernfalls bei Vollendung über einen Exzeptionsstatus berichten; (h) Vollendungsstatusinformation zusammen mit einem "Ausgeführt"-Status in das Byte 3 des Befehl/Status- Doppelwortes einschreiben; (i) Interruptstatusinformation in das Byte 0 des Interruptstatuswortes schreiben, sofern nicht ein vorheriger Interrupt unbestätigt bleibt und "Interrupt bestätigen" nicht blockiert ist; und (j) den durch den Interrupt-Deskriptor spezifizierten Interrupt anfordern, wenn das Interruptmaskenbit in dem Interrupt-Deskriptor für den geeigneten Interrupttyp (Vollendung oder Exzeption) auf "1" gesetzt ist.
  • Bei Empfang eines Interrupts aufgrund einer Interruptanforderung aus einem E/A-Adapter, der einen Mailboxbefehl abgegeben hat, sollte der Empfangsprozessor den Vollendungsstatus in dem Mailbox-Befehl/Status-Doppelwort-Statuswort abfragen. Bei Empfang eines Interrupts aufgrund einer Interruptanforderung aus einem E/A-Adapter, der einen Warteschlange-Deskriptor-Befehl abgegeben oder eine Vorrichtungswarteschlange verarbeitet hat, sollte der Empfangsprozessor in der angegebenen Reihenfolge (a) das Byte 0 des Interruptstatuswortes in dem geeigneten Warteschlange-Deskriptor abfragen, um den Typ des Interrupts zu ermitteln, der erfolgt ist, und die allgemeinen Bedingungen, unter welchen er erfolgt ist; (b) zusätzliche Information über die Ursache des Interrupts aus dem Status des Befehl/Status-Doppelwortes des E/A-Deskriptors gewinnen, der verarbeitet worden ist, als der Interruptzustand aufgetreten ist (für auf einen Warteschlange-Deskriptor-Befehl bezogene Interrupts nicht relevant), welcher über den laufenden E/A-Deskriptor-Zeiger in dem Warteschlange-Deskriptor gefunden werden kann (nur für Vollendungs-, Exzeptions- und Zeitsperreinterrupts- PCI Interrupts müssen durch die Software verfolgt werden); (c) Exzeptionsdetails aus dem Exzeptions-Status-Block gewinnen, wenn der Interrupttyp Exzeption war; (d) irgendwelche Fortsetzungs-, Logbuch und/oder Erholungsaktivitäten ausführen, die für diesen Typ von Interruptzustand geeignet sind; und (e) den Interrupt bestätigen durch Löschen des Bytes 0 des Interruptstatuswortes des Warteschlange-Deskriptors (sofern nicht die Interruptbestätigung ignoriert wird).
  • Die Integrität der E/A-Deskriptor-Warteschlange-Verknüpfung muß zu allen Zeiten aufrechterhalten werden. Das Warteschlangenmanagement wird nur durch Prozessoren ausgeführt und niemals durch Adapter. Die Funktionen des Warteschlangenmanagements müssen deshalb in Software oder Firmware realisiert werden. Zum Hinzufügen von neuen E/A-Deskriptoren am Ende der Warteschlange ist es notwendig, in der angegebenen Reihenfolge (a) das gültige Bit des E/A-Deskriptor-Zeigers in dem neuen E/A-Deskriptor auf "0" zu setzen (b) den nächsten Deskriptor-Zeiger in dem letzten E/A-Deskriptor in der Warteschlange zu setzen, damit er auf den neuen E/A-Deskriptor zeigt; und (c) das gültige Bit des E/A-Deskriptor-Zeigers zu setzen, in dem der letzte E/A-Deskriptor in der Schlange auf einer "1" gewesen ist.
  • Wenn die Warteschlangenmanagementsoftware die sofortige Verarbeitung in dem neuen E/A-Deskriptor erzwingen muß, wenn die Vorrichtung im Leerlauf ist, kann die Software einen Vorrichtungsaufruf mit einem "Fortsetzen"-Befehl in dem Warteschlange-Deskriptor abgeben. Zum Vermeiden von unnötigen Vorrichtungsaufrufanforderungen kann die Software feststellen, ob die Vorrichtung im Leerlauf ist, indem sie das Leerlaufbit (Bit 9) in dem erweiterten Interruptstatusbyte des Warteschlange-Deskriptors testet. Die relativen Positionen des gültigen E/A-Deskriptor-Zeiger- Bits (Bit 15 des Befehlsmodifizierers) und das Kopf/nächster E/A-Deskriptor-Zeiger-Doppelwort in dem Warteschlange-Deskriptor und in dem E/A-Deskriptor sind identisch. Die Handhabung des Hinzufügens eines E/A-Deskriptors zu einer leeren Warteschlange ist mit dem Hinzufügen eines E/A-Deskriptors zu dem Ende einer Warteschlange, nachdem die Adresse der geeigneten Steuerstruktur (Warteschlange-Deskriptor oder E/A-Deskriptor) gewonnen worden ist, identisch.
  • Zum Hinzufügen eines neuen E/A-Deskriptors zu der Mitte einer Warteschlange ist es notwendig, in der angegebenen Reihenfolge (a) das gültige E/A-Deskirptor-Zeiger-Bit in dem E/A-Deskriptor, nachdem die Einfügung erfolgen soll (im folgenden als der "vorhergehende E/A-Deskriptor" bezeichnet) auf "0" zu setzen (das Ändern dieses Bits als Teil dieser Sequenz ist zulässig, selbst wenn der E/A-Dexkriptor "Besetzt" ist); (b) die E/A-Deskriptor-Statusflags des vorhergehenden E/A-Deskriptors auf "Verfügbar" oder "Anhängig"-Status zu prüfen, da, wenn der Status "Besetzt" oder "Ausgeführt" ist, die Einfügung nicht an diesem Punkt in der Warteschlange gemacht werden kann; (c), wenn die E/A-Deskriptor-Statusflags "Besetzt" oder "Ausgeführt" anzeigen, das gültige E/A-Deskriptor-Zeiger-Bit wieder auf "1" einzustellen und diese Aktivität zu beenden (der neue E/A-Deskriptor kann nicht an diesem Punkt in der Warteschlange hinzugefügt werden); (d) den nächsten E/A-Deskriptor-Zeiger in dem neuen E/A-Deskriptor auf den Wert des nächsten E/A-Deskriptor-Zeigers ab dem vorhergehenden E/A- Deskriptor zu setzen und das gültige E/A-Deskriptor-Zeiger- Bit in dem neuen E/A-Deskriptor auf "1" zu setzen; (e) den nächsten E/A-Deskriptor-Zeiger in dem vorhergehenden E/A- Deskriptor zu setzen, um auf den neuen E/A-Deskriptor zu zeigen; und (f) das gültige E/A-Deskriptor-Zeiger-Bit in dem vorhergehenden E/A-Deskriptor auf "1" zu setzen.
  • Zum Entfernen von vollendeten E/A-Deskriptoren aus dem Beginn der Warteschlange ist es notwendig, in der angegebenen Reihenfolge (a) sicherzustellen, daß der erste E/A-Deskriptor ausgeführt wird durch Testen der Bits 31 und 30 seines Befehl/Status-Doppelwortes; (b) das gültige E/A-Deskriptor- Zeiger-Bit in dem Befehl/Status-Doppelwort des Warteschlange-Deskriptors auf 0 zu setzen (nur notwendig, wenn es eine Möglichkeit gibt, daß ein "Initialisiere Warteschlange"-Befehl für die Vorrichtung gerade ausgeführt wird); (c) den nächsten E/A-Deskriptor-Zeiger-Wert aus dem ersten E/A-Deskriptor in der Warteschlange in den Warteschlangenkopfzeiger des Warteschlange-Deskriptors zu kopieren; und (d) das gültige E/A-Deskriptor-Zeiger-Bit in dem Befehl/Status-Doppelwort des Warteschlange-Deskriptors auf "1" zu setzen (nur notwendig, wenn dieses Bit früher in dieser Sequenz auf 0 gesetzt wurde)
  • Zum Entfernen des letzten E/A-Deskriptors aus einer Warteschlange, um dadurch zu bewirken, daß die Warteschlange leer wird, ist es notwendig, einen Warteschlange-Deskriptor-Befehl zu benutzen. Wenn keine neuen E/A-Deskriptoren verfügbar sind und die Warteschlangenabfrage anzuhalten ist, kann der "Vorrichtung anhalten"-Befehl benutzt werden, bevor der letzte E/A-Deskriptor aus der Warteschlange entfernt wird. Wenn ein oder mehrere neue E/A-Deskriptoren den letzten E/A-Deskriptor ersetzen sollen oder wenn das Abfragen der leeren Warteschlange gewünscht wird, sollte der "Initialisiere Warteschlange"-Befehl benutzt werden. Vor dem Abgeben eines "Initialisiere Warteschlange"-Befehls ist es unter diesen Bedingungen notwendig, in der angegebenen Reihenfolge (a) den E/A-Deskriptor-Warteschlange- Kopfzeiger auf den neuen E/A-Deskriptor zu setzen, (b) das gültige E/A-Deskriptor-Zeiger-Bit in dem Befehl/Status-Doppelwort des Warteschlange-Deskriptors auf "1" zu setzen, wenn ein neuer E/A-Deskriptor in dem vorherigen Schritt spezifiziert wurde, und ansonsten dieses Bit auf 0 zu setzen; (c) das grundlegende Warteschlange-Deskriptor-Befehlsbyte zu setzen, um einen "Initialisiere Warteschlange"-Befehl anzuzeigen, und (d) einen Vorrichtungsaufruf an der passenden Vorrichtungsadresse an dem geeigneten Modul durchzuführen. Diese Prozedur kann benutzt werden, um sämtliche in der Warteschlange angeordneten E/A-Deskriptoren aus einer Leerlaufwarteschlange unabhängig von der Anzahl dieser E/A- Deskriptoren zu entfernen.
  • Der Adapter muß den Warteschlangengebrauch realisieren, da der Warteschlangengebrauch eine Verantwortlichkeit der Adapter ist. Das ist vom Warteschlangenmanagement zu unterscheiden, welches in die Verantwortlichkeit der Prozessoren fällt, da E/A-Deskriptoren zum Kommunizieren von Prozessoren zu E/A-Adaptern benutzt werden.
  • Um eine Leerlaufwarteschlange abzufragen, ist es notwendig, in der angegebenen Reihenfolge (a) auf die Erschöpfung des Warteschlangenabfrageratenzählers zu warten; (b) den Zustand des gültigen E/A-Deskriptor-Zeiger-Bits in dem Befehl/Status-Doppelwort der letzten Steuerstruktur zu testen, die verarbeitet wurde, als die Warteschlange in den Leerlauf gelangte; und (c), falls das gültige E/A-Deskriptor-Zeiger-Bit auf "0" gesetzt ist, zu dem Schritt (a) dieser Sequenz zurückzukehren oder (d), falls das gültige E/A- Deskriptor-Zeiger-Bit auf eine "1" gesetzt ist, das Doppelwort, das dem Befehl/Status-Doppelwort unmittelbar folgt, als einen Zeiger zu einem E/A-Deskriptor zu benutzen und der Prozedur zu folgen, die in dem nächsten folgenden Absatz erläutert ist.
  • Zum Verketten eines neuen E/A-Deskriptors aus entweder einem Warteschlange-Deskriptor oder einem E/A-Deskriptor ist es notwendig, in der angegebenen Reihenfolge (a) darauf zu warten, daß das gültige E/A-Deskriptor-Zeiger-Bit in dem Befehl/Status-Doppelwort der Steuerstruktur, die verkettet wird, auf eine "1" gesetzt wird, wobei der Abfrageprozedur gefolgt wird, die in dem vorhergehenden Absatz erläutert ist, wenn dieses Bit auf eine "0" gesetzt wird; (b) den Zeigerwert in dem Doppelwort zu lesen, das dem Befehl/Status-Doppelwort in der Steuerstruktur, die verkettet wird, unmittelbar folgt; (c) den E/A-Deskriptor-Zeiger in einem privaten Speicher oder in Registern abzuspeichern; (d) den E/A-Deskriptor-Zeigerwert in dem laufenden E/A-Deskriptor-Zeiger-Doppelwort des Warteschlange Deskriptors dieser Vorrichtung zu speichern; (e) das Befehl/Status-Doppelwort an der Adresse zu lesen, die durch den Zeiger angegeben ist; (f) eine Warteschlangenintegritätsexzeption zu erzeugen, wenn das Byte 3 des Befehl/Status-Doppelwortes keinen "Anhängig"-Status anzeigt; (g) in das Byte 3 des Befehl/Status-Doppelwortes einzuschreiben, um den "Besetzt"- Status zu setzen; und (h) den Befehl zu decodieren, der in dem Byte 0 des Befehl/Status-Doppelwortes spezifiziert ist.
  • Die Datenverknüpfung verlangt beträchtlich weniger Overhead in dem E/A-Adapter, als es die Befehlsverkettung tut. Wenn eine Sequenz von bezogenen Datentransfers ausgeführt werden kann unter Verwendung eines einzelnen Befehls mit Datenverknüpfung, ist diese Technik effizienter als eine Sequenz von verketteten Befehlen mit jeweils einem Puffer.
  • Wenn ein Adapter einen Fehlerzustand während der Vorrichtungsoperation erkennt, wird die Befehlsverarbeitung für die Vorrichtung generell gestoppt. Die Existenz eines Fehlerzustands kann durch den Exzeptionsstatusindikator in dem E/A-Deskriptor und/oder das Auftreten eines Interrupts mit Exzeptionsstatus, angezeigt in dem Interruptstatusbyte des Warteschlange-Deskriptors (wenn Exzeptionsinterrupts freigegeben sind), erzeugt werden. Wenn dem Prozessor das Auftreten eines Fehlers zur Kenntnis gelangt, sollte er den Vollendungsstatus und den vorrichtungsspezifischen Status in dem E/A-Deskriptor inspizieren, den Interruptstatus in dem Warteschlange-Deskriptor inspizieren und den Exzeptionsstatus in dem Exzeption-Status-Block inspizieren. Auf der Basis dieser Information sollte die Software in der Lage sein, den Typ von Problem zu ermitteln und die notwendigen Schritte zu dessen Beseitigung zu unternehmen. Nachdem dies getan worden ist, sollte die Software entweder der Vorrichtung gestatten, die Verarbeitung bei dem E/A-Deskriptor nach demjenigen, der die Exzeption erzeugt hatte, wieder aufzunehmen, indem ein "Fortsetzen"-Warteschlange-Deskriptor-Befehl gegeben wird, die Vorrichtungswarteschlange wieder aufbauen und wieder mit dem Verarbeiten am Beginn der Warteschlange beginnen durch Abgeben eines "Initialisiere Warteschlange" Warteschlange-Deskriptor-Befehls oder die Verarbeitung angehalten belassen, wenn das Problem nicht beseitigbar ist.
  • Es gibt eine architektonische Signifikanz, die Ebenen der Mehrebenensteuerstruktur der vorliegenden Erfindung zu trennen, und diese Signifikanz erzeugt Vorteile bei dem Gebrauch der vorliegenden Erfindung. Erhöhte Leistung in Form von expressiver Leistung, Flexibilität oder der Möglichkeit, verschiedene Bedingungen zu adaptieren, usw. wird in direkter Beziehung zu dem Ausmaß an Indirektion, das möglich ist, erhöht. Indirektion bedeutet in diesem Sinne die Möglichkeit, die Zieloperanden oder Daten oder was auch immer bearbeitet wird, umzuleiten. Die Mehrebenenstruktur der bevorzugten Ausführungsform ergibt wenigstens vier Ebenen, bei denen diese Indirektion vorteilhafterweise benutzt werden kann, wie es durch die vier Ebenen in Fig. 2 gezeigt ist. Allgemein ausgedrückt, es ist deshalb eine erhöhte expressive Leistung aufgrund der vorliegenden Erfindung verfügbar. Diese expressive Leistung ist viel größer als die, die aufgrund von bekannten Eingang/Ausgang-Steueranordnungen verfügbar ist.
  • Die Verwendung der Mailbox und des Warteschlange-Deskriptors schafft die Möglichkeit, die E/A-Kanal-Befehlsstruktur, die durch den Warteschlange-Deskriptor für jeden separaten Kanal angeführt wird, von der modulspezifischen Information zu entkoppeln, die auf der Mailboxebene vorhanden ist. Das ergibt den Vorteil zu gestatten, daß Kanalstrukturen dynamisch erzeugt und beseitigt werden können, ohne daß der Speicher, den sie verlangen, im voraus zugeordnet werden muß. Bei den bekannten Systemen, bei denen sowohl die Modulinformation als auch die Vorrichtungsinformation auf derselben Ebene vorgesehen sind, gibt es eine Forderung, den Speicher für diese Information statisch zuzuordnen und diesen Speicher niemals für irgendwelche anderen Zwecke zu benutzen. Solche Anordnungen erzeugen Restriktionen in der Ausnutzung des Hauptspeichers durch dessen Betriebssystem.
  • Die Indirektion zwischen Warteschlange-Deskriptoren und E/A-Deskriptoren nach der vorliegenden Erfindung gestattet zwei Typen von Funktionen, die vorteilhaft sind. Eine Funktion ist die Möglichkeit, E/A-Deskriptoren zu erzeugen, sie mit Vorrichtungswarteschlangen zu verknüpfen, sie verarbeiten zu lassen und sie dann aus den Vorrichtungswarteschlangen zu entfernen, ohne daß sie jemals im Speicher bewegt werden. E/A-Deskriptoren können deshalb sich Warteschlangen anschließen und diese verlassen, ohne tatsächlich im Speicher bewegt zu werden. Ein weiterer Vorteil der Indirektion auf dieser Ebene ist die Möglichkeit für besondere Programme, Sequenzen von E/A-Deskriptoren über Instruktionen im voraus aufzubauen, statt die Struktur dynamisch aufbauen zu müssen. Durch Trennen der Folgesteuerung der Operationen in eine Verknüpfungsliste kann die Struktur verändert werden. Bei bekannten Systemen, bei denen die Verkettung benutzt wird, besteht die Verkettung darin, zu dem nächsten sequentiellen Befehl in einer linearen Liste zu gehen. Dadurch, daß die Liste bei der vorliegenden Erfindung verknüpft wird, können verschiedene Programme Stücke der Liste aufrechterhalten und dann auf die Warteschlange nach Bedarf zugreifen.
  • Der Grund, die Transfersteuerliste unabhängig zu haben und auf sie separat von dem E/A-Deskriptor aus zu zeigen, ist, daß die Puffer, wo Daten zu senden oder zu empfangen sind, ein Teil des Applikationsprogramms sein können. Die E/A- Operationen können im Namen des Applikationsprogramms durch eine Maßnahme ausgeführt ,werden, die manchmal auch als Zugriffsmethode, Indexierroutine od. dgl. bezeichnet wird, auf einer Zwischenebene der Software, und diese Zwischenebene der Software steuert die Operationen, die auf der E/A- Deskriptor-Ebene auszuführen sind. Das Applikationsprogramm ordnet die Puffer zum Ausführen dieser Operationen zu und hebt die Zuordnung wieder auf. Dadurch, daß gestattet wird, die Beschreibung der Puffer separat in einer Transfersteuerliste aufzubauen und dann mit einem indirekten Zeiger aus dem E/A-Deskriptor zu verknüpfen, wird ein unabhängiges Management erleichtert, und die Anordnung vermeidet die Notwendigkeit, daß der E/A-Deskriptor und die Transfersteuerliste ein Teil der einzelnen Struktur sind. Die Anzahl der Puffer kann sich ändern, ohne daß die Länge geändert zu werden braucht und ohne daß deshalb möglicherweise im Speicher der E/A-Deskriptor bewegt werden muß. Eine ähnliche Situation liegt in bezug auf den Vorrichtungssteuerblock vor.
  • Weitere Vorteile werden deutlich werden, nachdem der einschlägige Fachmann die vorliegende Erfindung vollständig verstanden hat.

Claims (23)

1. Verfahren zum Kommunizieren zwischen wenigstens einem Prozessor (20) und einer ersten und einer zweiten Eingang/Ausgang(E/A)-Vorrichtung, die mit einem E/A-Adapter (22) in einem Computersystem verbunden ist, bei dem eine Vielzahl von Speicherstrukturen benutzt wird zum Kommunizieren zwischen dem Prozessor (20) und den E/A-Vorrichtungen durch Definieren von wenigstens einer Warteschlange von wenigstens einer Speicherstruktur, die Befehlsinformation enthält, wobei das Computersystem außerdem einen Hauptspeicher (26) aufweist, der gemeinsam mit jedem Prozessor (20) und dem E/A-Adapter (22) verbunden ist, wobei jede E/A-Vorrichtung die Dateneingabe in das und die Datenausgabe aus dem Computersystem bewirkt, wobei das Computersystem außerdem Software enthält, die in dem Hauptspeicher (26) aufgezeichnet ist, zum Steuern von Betriebsfunktionen des Computersystems, gekennzeichnet durch folgende Schritte:
Etablieren einer Erstebenenspeicherstruktur (30) in dem Hauptspeicher (26) für den E/A-Adapter (22) an einer vorbestimmten Speicheradresse, die dem E/A-Adapter (22) zugeordnet ist, wobei jede Erstebenenspeicherstruktur als eine Mailbox (30) bezeichnet wird;
Etablieren einer ersten und einer zweiten Zweitebenenspeicherstruktur (32) jeweils an einer vorbestimmten Speicheradresse in dem Hauptspeicher (26) für die erste bzw. zweite E/A-Vorrichtung, wobei jede Zweitebenenstruktur als ein Warteschlange-Deskriptor (32) bezeichnet wird und wobei die Speicheradresse jedes Warteschlange-Deskriptors (32) von der Speicheradresse der Mailbox (30) verschieden ist;
Etablieren einer Vielzahl von Drittebenenspeicherstrukturen (34) jeweils an einer vorbestimmten Speicheradresse in dem Hauptspeicher (26), wobei jede Drittebenenstruktur als ein E/A-Deskriptor (34) bezeichnet wird, wobei ein E/A-Deskriptor (34) für jede E/A-Operation etabliert wird, die durch die erste und zweite E/A-Vorrichtung auszuführen ist, wobei die Speicheradresse jedes E/A-Deskriptors (34) von der vorbestimmten Speicheradresse der Mailbox (30), des Warteschlange-Deskriptors (32) und der E/A-Deskriptoren (34) verschieden ist;
Plazieren von Daten im jedem E/A-Deskriptor (34), welche Befehlsinformation enthalten, die eine spezifische E/A-Datentransferoperation definiert, welche durch eine E/A-Vorrichtung auszuführen ist;
Plazieren von Daten entweder in dem Warteschlange-Deskriptor (32) oder in jedem E/A-Deskriptor (34), der jeder E/A-Vorrichtung zugeordnet ist, welche Information enthalten, die jeden E/A-Deskriptor (34), welcher jeder E/A- Vorrichtung zugeordnet ist, in einer Warteschlange in der Reihenfolge verknüpft, in welcher E/A-Operationen durch diese E/A-Vorrichtung auszuführen sind, wobei dadurch eine erste und eine zweite Warteschlange gebildet und der ersten bzw. zweiten E/A-Vorrichtung zugeordnet werden;
Plazieren von Daten in jedem ersten und zweiten Warteschlange-Deskriptor (32), welche i) Information enthalten, die eine Speicheradresse zum Zugriff jeweils auf die erste und zweite Warteschlange definiert, und ii) Befehlsinformation enthalten zum Abfragen der verknüpften E/A-Deskriptoren (34) jeder ersten bzw. zweiten Warteschlange;
Plazieren von Daten in der Mailbox (30), die Information enthalten, welche i) die Speicheradresse eines Warteschlange-Deskriptors (32) definiert, und ii) Befehlsinformation enthalten, um den E/A-Adapter (22) zu veranlassen, die Befehlsinformation in dem warteschlange-Deskriptor (32) auszuführen; und
dem E/A-Adapter (22) Signalisieren durch Aktion des Prozessors (20) unter der Steuerung der Software, um den E/A- Adapter (22) zu veranlassen, folgende Schritte für jede E/A-Vorrichtung auszuführen:
Lokalisieren der Mailbox (30) an ihrer vorbestimmten Speicheradresse und Lesen und Decodieren der Information in der Mailbox (30) und Ausführen von durch die Befehlsinformation in der Mailbox (30) definierten Befehlen als Ergebnis, daß dem E/A-Adapter (22) durch Aktion des Prozessors (20) signalisiert wird;
Lokalisieren des warteschlange-Deskriptors (32) an seiner vorbestimmten Speicheradresse durch Benutzen der Speicheradreßinformation, die durch Decodieren der Information in der Mailbox (30) gewonnen wird, und Lesen und Decodieren der Information in dem Warteschlange-Deskriptor (32) und Ausführen von durch die Befehlsinformation in dem Warteschlange-Deskriptor (32) definierten Befehlen; und
Lokalisieren jedes E/A-Deskriptors (34) an seiner vorbestimmten Speicheradresse durch Verwenden der Warteschlangenverknüpfungsinformation, die durch Decodieren der Information entweder in dem warteschlange-Deskriptor (32) oder in den E/A-Deskriptoren (34) gewonnen wird, und Lesen und Decodieren der Information in jedem E/A-Deskriptor (34) und Ausführen von durch die Befehlsinformation in jedem E/A-Deskriptor (34) definierten Befehlen, um E/A-Datentransfers zu und aus der einen E/A-Vorrichtung vorzunehmen; übertragen der E/A-Daten zu dem E/A-Adapter (22) über die Verbindung jeder E/A-Vorrichtung mit dem E/A-Adapter (22); und
Übertragen von E/A-Daten zwischen dem Prozessor (20) und dem E/A-Adapter (22) durch Ausführen von Operationen, die durch die Information angezeigt werden, welche in den Daten enthalten ist, die in wenigstens den Warteschlange-Deskriptoren (32) und den E/A-Deskriptoren (34) in dem Hauptspeicher (26) enthalten sind, nachdem die Befehlsinformation in der Mailbox (30) ausgeführt worden ist.
2. Verfahren nach Anspruch 1, weiter gekennzeichnet durch die Schritte:
separates Anzeigen jeweils für die Mailbox (30), den Warteschlange-Deskriptor (32) und den E/A-Deskriptor (34), durch Plazieren von Daten in jedem, einer ersten Statusanzeige, daß die Information gegenwärtig Verarbeitung erwartet, einer zweiten Statusanzeige, daß die Information verarbeitet wird, und einer dritten Statusanzeige, daß die Information verarbeitet worden ist; und
Hindern jedes Prozessors (20) am Plazieren von neuen Daten in der Mailbox (30), dem Warteschlange-Deskriptor (32) oder dem E/A-Deskriptor (34) immer dann, wenn die Mailbox (30), der warteschlange-Deskriptor (32) und der E/A-Deskriptor (34) in dem ersten oder zweiten Status sind.
3. Verfahren nach Anspruch 2, weiter gekennzeichnet durch den Schritt, jeweils für die Mailbox (30), den Warteschlange-Deskriptor (32) und den E/A-Deskriptor (34) separat durch Plazieren von Daten in jedem eine vierte Statusanzeige, daß die Information zuvor interpretiert worden ist, anzuzeigen.
4. Verfahren nach Anspruch 1, weiter gekennzeichnet durch die Schritte:
Verriegeln der Daten jeweils innerhalb der Mailbox (30), dem Warteschlange-Deskriptor (32) oder dem E/A-Deskriptor (34) durch Plazieren von Daten in jedem, die eine Statusanzeige anzeigen, daß der durch die Daten repräsentierte Befehl noch nicht vollendet ist; und
Hindern jedes Prozessors (20) am Plazieren von neuen Daten in der Mailbox (30), dem Warteschlange-Deskriptor (32) oder dem E/A-Deskriptor (34), für den angezeigt wird, daß er eine noch nicht vollendete Statusanzeige aufweist.
5. Verfahren nach Anspruch 1, weiter gekennzeichnet durch die Schritte:
Beschränken von im wesentlichen sämtlichen Verarbeitungsfunktionen des Computersystems auf den Prozessor (20); und Durchführen von sämtlichen Lokalisier-, Lese-, Decodier- und Ausführungsbefehlen durch den E/A-Adapter (22) als eine Serie von sequentiellen Operationen, die aus der Information erzeugt werden, welche in den Daten enthalten ist, die in der Mailbox (30), dem Warteschlange-Deskriptor (32) und jeder Warteschlange von verknüpften E/A-Deskriptoren (34) plaziert sind.
6. Verfahren nach Anspruch 1, weiter gekennzeichnet durch den Schritt:
dem E/A-Adapter (22) Signalisieren, die Befehle auszuführen, die durch die Befehlsinformation definiert werden, welche in einem Warteschlange-Deskriptor (32) und seiner Warteschlange von verknüpften E/A-Deskriptoren (34) für eine ausgewählte E/A-Vorrichtung enthalten ist, durch Senden eines Vorrichtungsaufrufsignals zu dem E/A-Adapter (22); und
den E/A-Adapter (22) Veranlassen, die Befehlsinformation in dem Warteschlange-Deskriptor (32) zu verarbeiten, der der ausgewählten E/A-Vorrichtung zugeordnet ist, aufgrund des Empfangs des Vorrichtungsaufrufsignals.
7. Verfahren nach Anspruch 1, weiter gekennzeichnet durch den Schritt:
dem E/A-Adapter (22) Signalisieren, die Befehle auszuführen, die durch die Befehlsinformation definiert sind, welche in der Mailbox (30) enthalten sind, durch Senden eines Modulaufrufsignals zu dem ausgewählten E/A-Adapter (22) separat von irgendeinem anderen Signal; und
den E/A-Adapter (22) Veranlassen, die Befehlsinformation in der Mailbox (30) auf das Signal hin zu verarbeiten.
8. Verfahren nach Anspruch 1, weiter gekennzeichnet durch den Schritt:
dem Prozessor (20) für einen Interrupt Signalisieren durch selektives Plazieren von Daten in dem Warteschlange-Deskriptor (32) und der Mailbox (30), welche Information enthalten, die einen Interrupt spezifiziert.
9. Verfahren nach Anspruch 1, weiter gekennzeichnet durch die Schritte:
Etablieren einer zusätzlichen Speicherstruktur (36), die wenigstens einem der E/A-Deskriptoren (34) an einer vorbestimmten Speicheradresse in dem Hauptspeicher (26) zugeordnet ist, wobei jede zusätzliche Speicherstruktur als ein Vorrichtungssteuerblock (36) bezeichnet wird und wobei die Speicheradresse jedes Vorrichtungssteuerblockes (36) anders ist als die vorbestimmten Speicheradressen jeweils der Mailbox (30), des Warteschlange-Deskriptors (32) und des E/A-Deskriptors (34);
Plazieren von Daten in dem Vorrichtungssteuerblock (36), welche Information enthalten, die eine Fortsetzung der Befehlsinformation in dem zugeordneten E/A-Deskriptor (34) definiert; und
Plazieren von Daten in dem zugeordneten E/A-Deskriptor (34), die Information enthalten, welche die Speicheradresse des Vorrichtungssteuerblockes (36) definiert,
Lokalisieren des Vorrichtungssteuerblockes (36) an seinem vorbestimmten Speicherplatz durch Verwendung der Speicheradreßinformation, die durch Decodieren der Information gewonnen wird, welche in dem zugeordneten E/A-Deskriptor (34) enthalten ist, und Lesen, Decodieren und Ausführen der Befehlsinformation, die in dem Vorrichtungssteuerblock (36) enthalten ist, während der Ausführung der Befehlsinformation des zugeordneten E/A-Deskriptors (34) durch die E/A- Vorrichtung.
10. Verfahren nach Anspruch 1, weiter gekennzeichnet durch die Schritte:
Aufzeichnen an einer vorbestimmten Speicheradresse im Hauptspeicher (26), die von jeder anderen Speicherstruktur verschieden ist, von E/A-Daten, die während der Ausführung der Befehlsinformation von jedem E/A-Deskriptor (34) übertragen werden;
Anzeigen für jeden E/A-Deskriptor (34), durch Plazieren von Daten darin, einer Statusanzeige, daß die Befehlsinformation in dem E/A-Deskriptor (34) ausgeführt worden ist; Plazieren von Daten in einem Warteschlange-Deskriptor (32), die Information enthalten, welche das Aktualisieren der Statusanzeige von irgendeinem der E/A-Deskriptoren (34) in der Warteschlange anzeigt, der dem einen Warteschlange-Deskriptor (32) zugeordnet ist; und
Überprüfen der Statusanzeigedaten, die in dem einen Warteschlange-Deskriptor (32) plaziert sind, um festzustellen, ob die E/A-Daten, die zu der vorbestimmten anderen Speicheradresse während der Ausführung der Befehlsinformation jedes E/A-Deskriptors (34) übertragen werden, durch den Prozessor (20) unter der Steuerung der Software überprüft werden sollten.
11. Verfahren nach Anspruch 1, weiter gekennzeichnet durch die Schritte:
Etablieren einer weiteren Speicherstruktur (40) an einer vorbestimmten Speicheradresse im Hauptspeicher (26) durch Aktion des Prozessors (20) unter der Steuerung der Software, wobei die weitere Speicherstruktur als ein Exzeption- Status-Block (40) bezeichnet wird und wobei die Speicheradresse des Exzeption-Status-Blockes (40) anders ist als die vorbestimmten Speicheradressen der Mailbox (30), des Warteschlange-Deskriptors (32) oder des E/A-Deskriptors (34); und
Plazieren von Daten in dem Exzeption-Status-Block (40) durch den E/A-Adapter (22) beim Erkennen von irgendeinem Fehlerzustand des Betriebes des E/A-Adapters (22) oder der E/A-Vorrichtung.
12. Verfahren nach Anspruch 1, weiter gekennzeichnet durch den Schritt:
periodisches Abfragen der Warteschlange von E/A-Deskriptoren (34), die jedem Warteschlange-Deskriptor (32) zugeordnet sind.
13. Verfahren nach Anspruch 1, weiter gekennzeichnet durch den Schritt:
Veranlassen, daß der E/A-Adapter (22) fortschreitend von einem E/A-Deskriptor (34) zu dem nächsten verknüpften E/A- Deskriptor (34) in der Warteschlange von E/A-Deskriptoren (34) alle E/A-Datentransfers, die jeder E/A-Vorrichtung zugeordnet sind, auf eine kontinuierliche Weise ausführt.
14. Verfahren nach Anspruch 1, weiter gekennzeichnet durch den Schritt:
Anzeigen jeweils für die Mailbox (30), den Warteschlange-Deskriptor (32) und den E/A-Deskriptor (34) separat, durch Plazieren von Daten in jedem, einer ersten Statusanzeige, daß die Information gegenwärtig Verarbeitung erwartet, einer zweiten Statusanzeige, daß die Information verarbeitet wird, und einer dritten Statusanzeige, daß die Information verarbeitet worden ist; und
Hindern jedes E/A-Adapters (22) am Plazieren von neuen Daten in der Mailbox (30), dem Warteschlange-Deskriptor (32) und dem E/A-Deskriptor (34) immer dann, wenn die Mailbox (30), der Warteschlange-Deskriptor (32) bzw. der E/A-Deskriptor (34) in dem dritten Status ist.
15. Verfahren nach Anspruch 1, weiter gekennzeichnet durch den Schritt:
Verriegeln der Daten jeweils innerhalb der Mailbox (30), des Warteschlange-Deskriptors (32) und des E/A-Deskriptors (34) durch Plazieren von Daten in jedem, die eine Statusanzeige liefern, daß der Befehl, der durch die Daten in jedem von ihnen repräsentiert wird, vollendet worden ist; und Hindern jedes E/A-Adapters (22) am Plazieren von neuen Daten jeweils in der Mailbox (30), dem Warteschlange-Deskriptor (32) und dem E/A-Deskriptor (34), der anzeigt, daß er eine Anzeige für vollendeten Status aufweist.
16. Verfahren nach Anspruch 1, weiter gekennzeichnet durch den Schritt:
Etablieren einer weiteren Speicherstruktur (38), die dem E/A-Deskriptor (34) zugeordnet ist, an einer vorbestimmten Speicheradresse im Hauptspeicher (26), wobei jede weitere Speicherstruktur als eine Transfersteuerliste (38) bezeichnet wird, wobei die Speicheradresse der Transfersteuerliste (38) von den vorbestimmten Adressen der Mailbox (30), des Warteschlange-Deskriptors (32) und des E/A-Deskriptors (34) verschieden ist;
Plazieren von Daten in der Transfersteuerliste (38), die Information enthalten, welche eine sequentielle Liste von Puffern an vorbestimmten Speicheradressen im Hauptspeicher (26) und die Startadresse sowie die Längenzählung jedes Pufferplatzes definiert;
Plazieren von Daten in dem E/A-Deskriptor (34), dem die Transfersteuerliste (38) zugeordnet ist, die Befehlsinformation enthalten, welche die Verwendung der Transfersteuerliste (38) spezifiziert, wenn E/A-Datentransfers zu und aus der E/A-Vorrichtung ausgeführt werden; und
Übertragen von E/A-Daten zu und aus den Puffern, welche durch Information spezifiziert werden, die in der Transfersteuerliste (38) enthalten ist, indem am Ende der Längenzählung eines Puffers auf die Startadresse des nächsten sequentiellen Puffers übergegangen wird, als ein Ergebnis des Ausführens der Befehlsinformation, die in den Daten enthalten ist, welche in dem zugeordneten E/A-Deskriptor (34) plaziert sind.
17. Verfahren nach Anspruch 1, weiter gekennzeichnet durch den Schritt:
der Prozessor (20) addiert unter der Steuerung der Software einen zusätzlichen E/A-Deskriptor (34) zu der Warteschlange von E/A-Deskriptoren (34), während der E/A-Adapter (22) die Befehlsinformation eines anderen E/A-Deskriptors (34) in der Warteschlange ausführt.
18. Verfahren nach Anspruch 1, weiter gekennzeichnet durch den Schritt:
der Prozessor (20) entfernt unter der Steuerung der Software einen E/A-Deskriptor (34) aus der Warteschlange von E/A-Deskriptoren (34), während der E/A-Adapter (22) die Befehlsinformation eines anderen E/A-Deskriptors (34) in der Warteschlange ausführt.
19. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Schritte Etablieren der Zweitebenen- und Drittebenenspeicherstrukturen (32, 34) und Plazieren von Daten in den Erstebenen-, Zweitebenen- und Drittebenenspeicherstrukturen (30, 32, 34) durch den Prozessor (20) unter der Steuerung der Software ausgeführt werden.
20. Verfahren nach Anspruch 6, weiter gekennzeichnet durch den Schritt:
Senden von ersten und zweiten Vorrichtungsaufrufsignalen zu dem E/A-Adapter (22), um den E/A-Adapter (22) zu veranlassen, mit dem gleichzeitigen Verarbeiten der ersten und zweiten Warteschlange-Deskriptoren (32) und ihrer zugeordneten ersten und zweiten Warteschlangen von verknüpften E/A-Deskriptoren (34) zu beginnen.
21. Verfahren nach Anspruch 1, weiter gekennzeichnet durch die Schritte:
Plazieren von Daten in einem Warteschlange-Deskriptor (32), die Statusinformation und Maskierinformation enthalten, wobei die Statusinformation einen vorbestimmten Zustand anzeigt, der während der Verarbeitung der Warteschlange von verknüpften E/A-Deskriptoren (34) aufgetreten ist, die dem einen Warteschlange-Deskriptor (32) zugeordnet sind, wobei die Maskierinformation selektiv anzeigt, ob ein Interruptanforderungssignal von dem E/A-Adapter (22) an den Prozessor (20) bei Auftreten des vorbestimmten Zustands abgegeben werden sollte oder nicht; und
der E/A-Adapter (22) liefert ein Interrupt-Anforderungssignal zu dem einen Prozessor (20) nur, wenn die Maskierinformation anzeigt, daß ein Interruptsignal geliefert werden sollte, und liefert nicht das Interruptanforderungssignal, wenn die Maskierinformation anzeigt, daß das Interruptanforderungssignal nicht geliefert werden sollte.
22. Verfahren nach Anspruch 1, wobei das Computersystem eine Vielzahl von Prozessoren (20) aufweist und wobei das Verfahren weiter gekennzeichnet ist durch die Schritte:
Plazieren von Daten in einem Warteschlange-Deskriptor (32), der Statusinformation, Maskierinformation und Prozessorbezeichnungsinformation enthält, wobei die Statusinformation einen vorbestimmten Zustand anzeigt, der während der Verarbeitung des Warteschlange-Deskriptors (32) aufgetreten ist, wobei die Maskierinformation selektiv anzeigt, ob ein Interruptanforderungssignal nicht von dem E/A-Adapter (22) an einen Prozessor (20) bei Auftreten des vorbestimmten Zustands abgegeben werden sollte, und wobei die Prozessorbezeichnungsinformation einen aus der Vielzahl von Prozessoren (20) bezeichnet, an den erwünschtermaßen ein Interruptanforderungssignal bei Auftreten des vorbestimmten Zustands abgegeben werden sollte; und
der E/A-Adapter (22) liefert ein Interruptanforderungssignal an den bezeichneten Prozessor (20) nur dann, wenn die Maskierinformation anzeigt, daß ein Interruptsignal geliefert werden sollte, und liefert nicht das Interruptanforderungssignal, wenn die Maskierinformation anzeigt, daß das Interruptanforderungssignal nicht geliefert werden sollte.
23. Verfahren nach Anspruch 1, weiter gekennzeichnet durch: gleichzeitiges Ausführen der Befehle, die durch den Warteschlange-Deskriptor (32) für die erste Warteschlange und den Warteschlange-Deskriptor (32) für die zweite Warteschlange definiert sind, durch Aktion des E/A-Adapters (22) und der zugeordneten ersten und zweiten E/A-Vorrichtungen nachdem dem E/A-Adapter (22) für jede erste und zweite E/A-Vorrichtung signalisiert worden ist.
DE87907171T 1986-09-19 1987-09-18 Eingangs-/ausgangssteuerungstechnik. Expired - Fee Related DE3788354T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/910,006 US4783730A (en) 1986-09-19 1986-09-19 Input/output control technique utilizing multilevel memory structure for processor and I/O communication
PCT/US1987/002394 WO1988002149A1 (en) 1986-09-19 1987-09-18 Input/output control technique

Publications (2)

Publication Number Publication Date
DE3788354D1 DE3788354D1 (de) 1994-01-13
DE3788354T2 true DE3788354T2 (de) 1994-04-28

Family

ID=25428176

Family Applications (1)

Application Number Title Priority Date Filing Date
DE87907171T Expired - Fee Related DE3788354T2 (de) 1986-09-19 1987-09-18 Eingangs-/ausgangssteuerungstechnik.

Country Status (6)

Country Link
US (1) US4783730A (de)
EP (1) EP0329680B1 (de)
AU (1) AU614502B2 (de)
CA (1) CA1286787C (de)
DE (1) DE3788354T2 (de)
WO (1) WO1988002149A1 (de)

Families Citing this family (128)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0670787B2 (ja) * 1984-06-29 1994-09-07 富士通株式会社 処理装置間指令転送制御システム
JPS6375955A (ja) * 1986-09-19 1988-04-06 Fujitsu Ltd プログラムモ−ド・アクセス制御方式
EP0273083B1 (de) * 1986-12-30 1993-10-06 International Business Machines Corporation Nicht-sperrender Warteschlangenmechanismus
US4855899A (en) * 1987-04-13 1989-08-08 Prime Computer, Inc. Multiple I/O bus virtual broadcast of programmed I/O instructions
US5136718A (en) * 1987-09-04 1992-08-04 Digital Equipment Corporation Communications arrangement for digital data processing system employing heterogeneous multiple processing nodes
US5367688A (en) * 1987-09-04 1994-11-22 Digital Equipment Corporation Boot system for distributed digital data processing system
US4864532A (en) * 1987-09-21 1989-09-05 Unisys Corporation Small computer systems interface--data link processor
US4942517A (en) * 1987-10-08 1990-07-17 Eastman Kodak Company Enhanced input/output architecture for toroidally-connected distributed-memory parallel computers
IL88165A (en) * 1987-12-21 1993-01-31 Honeywell Bull Apparatus and method for a data processing system having a peer relationship among a plurality of central processing units
EP0321694B1 (de) * 1987-12-21 1995-06-07 Bull HN Information Systems Inc. Verfahren für ein Datenverarbeitungssystem mit Verwendung von nichtkompatiblen Zentralverarbeitungseinheit/ Betriebssystem- Kombinationen
US5077664A (en) * 1988-03-08 1991-12-31 Fujitsu Limited Direct memory access controller
JPH01246656A (ja) * 1988-03-29 1989-10-02 Nec Corp プロセッサ間共有メモリ管理方式
JP2664950B2 (ja) * 1988-08-31 1997-10-22 日本電気株式会社 入出力処理装置
JPH0823805B2 (ja) * 1988-09-20 1996-03-06 株式会社日立製作所 情報入力装置
JPH02128267A (ja) * 1988-11-09 1990-05-16 Fujitsu Ltd 共有メモリによる通信方式
US5150465A (en) * 1988-11-30 1992-09-22 Compaq Computer Corporation Mode-selectable integrated disk drive for computer
US5093918A (en) * 1988-12-22 1992-03-03 International Business Machines Corporation System using independent attribute lists to show status of shared mail object among respective users
US5097410A (en) * 1988-12-30 1992-03-17 International Business Machines Corporation Multimode data system for transferring control and data information in an i/o subsystem
US5129072A (en) * 1989-03-08 1992-07-07 Hewlett-Packard Company System for minimizing initiator processor interrupts by protocol controller in a computer bus system
US5163131A (en) * 1989-09-08 1992-11-10 Auspex Systems, Inc. Parallel i/o network file server architecture
EP0490980B1 (de) * 1989-09-08 1999-05-06 Auspex Systems, Inc. Betriebssystemaufbau mit mehreren verarbeitungseinheiten
GB9012970D0 (en) * 1989-09-22 1990-08-01 Ibm Apparatus and method for asynchronously delivering control elements with pipe interface
CA2010591C (en) * 1989-10-20 1999-01-26 Phillip M. Adams Kernels, description tables and device drivers
KR950008837B1 (ko) * 1990-03-09 1995-08-08 후지쓰 가부시끼가이샤 멀티 프로세서 시스템용 제어시스템
US5165024A (en) * 1990-04-12 1992-11-17 Apple Computer, Inc. Information transfer and receiving system with a ring interconnect architecture using voucher and ticket signals
US5165019A (en) * 1990-05-29 1992-11-17 Apple Computer, Inc. Ring interconnect system architecture
FR2662830B1 (fr) * 1990-06-05 1992-08-28 Bull Sa Procede de dialogue entre les processeurs d'un systeme, systeme pour sa mise en óoeuvre et utilisation pour la repartition des processus aux processeurs.
US5471639A (en) * 1990-10-24 1995-11-28 At&T Global Information Solutions Company Apparatus for arbitrating for a high speed direct memory access bus
US5165021A (en) * 1991-01-18 1992-11-17 Racal-Datacom, Inc. Transmit queue with loadsheding
DE4227346C2 (de) * 1991-08-19 1999-09-09 Sequent Computer Systems Inc Gerät zur Datenübertragung zwischen mehreren, mit einem SCSI-Bus verbundenen Einheiten
EP0535284A1 (de) * 1991-09-30 1993-04-07 International Business Machines Corporation Verfahren und Vorrichtung zur Erweiterung der Verbindungsfähigkeit eines Kommunikationssystems
US5321698A (en) * 1991-12-27 1994-06-14 Amdahl Corporation Method and apparatus for providing retry coverage in multi-process computer environment
EP0600623B1 (de) * 1992-12-03 1998-01-21 Advanced Micro Devices, Inc. Servoregelkreissteuerung
US5519883A (en) * 1993-02-18 1996-05-21 Unisys Corporation Interbus interface module
US5483640A (en) * 1993-02-26 1996-01-09 3Com Corporation System for managing data flow among devices by storing data and structures needed by the devices and transferring configuration information from processor to the devices
US6138126A (en) 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
JP3751018B2 (ja) * 1993-06-03 2006-03-01 ネットワーク・アプライアンス・インコーポレイテッド ライトエニウエアファイルシステムレイアウト
EP0701716B1 (de) * 1993-06-03 2002-08-14 Network Appliance, Inc. Verfahren und Dateisystem zur Zuordnung von Datei-Blöcken zu Speicherplatz in einem RAID-Plattensystem
US7174352B2 (en) 1993-06-03 2007-02-06 Network Appliance, Inc. File system image transfer
EP0701715A4 (de) * 1993-06-04 1999-11-17 Network Appliance Corp Verfahren zur paritätsdarstellung in einem raid-untersystem unter verwendung eines nichtflüchtigen speichers
US5513368A (en) * 1993-07-16 1996-04-30 International Business Machines Corporation Computer I/O adapters for programmably varying states of peripheral devices without interfering with central processor operations
EP0640929A3 (de) * 1993-08-30 1995-11-29 Advanced Micro Devices Inc Zwischenprozessorkommunikation durch RAM-Postamt.
US5857084A (en) * 1993-11-02 1999-01-05 Klein; Dean A. Hierarchical bus structure access system
US5446869A (en) * 1993-12-30 1995-08-29 International Business Machines Corporation Configuration and RAM/ROM control of PCI extension card residing on MCA adapter card
US6076102A (en) * 1994-03-29 2000-06-13 The United States Of America As Represented By The Secretary Of The Navy SCSI controller with target status retrieval
US5652839A (en) * 1994-03-29 1997-07-29 The United States Of America As Represented By The Secretary Of The Navy Method of non-intrusively sensing status in a computer peripheral
US5991829A (en) * 1994-03-29 1999-11-23 The United States Of America As Represented By The Secretary Of The Navy Method of sensing target status in a local area network
US6016506A (en) * 1994-03-29 2000-01-18 The United States Of America As Represented By The Secretary Of The Navy Non-intrusive SCSI status sensing system
US6021431A (en) * 1994-03-29 2000-02-01 The United States Of America As Represented By The Secretary Of The Navy Method of retrieving and storing computer peripheral data
BR9507958A (pt) * 1994-06-08 1998-05-26 Intel Corp Interface de conector de unidade de disco para uso em barramento de pci
US5592622A (en) * 1995-05-10 1997-01-07 3Com Corporation Network intermediate system with message passing architecture
US5802278A (en) * 1995-05-10 1998-09-01 3Com Corporation Bridge/router architecture for high performance scalable networking
US5832492A (en) 1995-09-05 1998-11-03 Compaq Computer Corporation Method of scheduling interrupts to the linked lists of transfer descriptors scheduled at intervals on a serial bus
US5826045A (en) * 1995-12-11 1998-10-20 Ncr Corporation Arbitration parking apparatus and method for a split transaction bus in a multiprocessor computer system
US5838994A (en) * 1996-01-11 1998-11-17 Cisco Technology, Inc. Method and apparatus for the dynamic allocation of buffers in a digital communications network
US5768621A (en) * 1996-03-15 1998-06-16 Adaptec, Inc. Chain manager for use in executing a chain of I/O command blocks
US5812877A (en) * 1996-03-15 1998-09-22 Adaptec, Inc. I/O command block chain structure in a memory
US5758187A (en) * 1996-03-15 1998-05-26 Adaptec, Inc. Method for enhancing performance of a RAID 1 read operation using a pair of I/O command blocks in a chain structure
US5797034A (en) * 1996-03-15 1998-08-18 Adaptec, Inc. Method for specifying execution of only one of a pair of I/O command blocks in a chain structure
US5946490A (en) * 1996-03-22 1999-08-31 Northeastern University Automata-theoretic approach compiler for adaptive software
US5781897A (en) * 1996-04-18 1998-07-14 International Business Machines Corporation Method and system for performing record searches in a database within a computer peripheral storage device
US5901326A (en) * 1996-11-26 1999-05-04 International Business Machines Corporation Memory bus address snooper logic for determining memory activity without performing memory accesses
US5996030A (en) * 1996-12-31 1999-11-30 Emc Corporation System for providing an interrogating host computer with group status information about disk devices including status information regarding disk devices not accessible to said host
US5950014A (en) * 1997-03-21 1999-09-07 Lsi Logic Corporation Methodology for pull model invocation
US6477584B1 (en) 1997-03-21 2002-11-05 Lsi Logic Corporation Message FIFO empty early warning method
US6049842A (en) * 1997-05-01 2000-04-11 International Business Machines Corporation Efficient data transfer mechanism for input/output devices
US6078970A (en) * 1997-10-15 2000-06-20 International Business Machines Corporation System for determining adapter interrupt status where interrupt is sent to host after operating status stored in register is shadowed to host memory
US6085277A (en) * 1997-10-15 2000-07-04 International Business Machines Corporation Interrupt and message batching apparatus and method
US20040236877A1 (en) * 1997-12-17 2004-11-25 Lee A. Burton Switch/network adapter port incorporating shared memory resources selectively accessible by a direct execution logic element and one or more dense logic devices in a fully buffered dual in-line memory module format (FB-DIMM)
US7197575B2 (en) 1997-12-17 2007-03-27 Src Computers, Inc. Switch/network adapter port coupling a reconfigurable processing element to one or more microprocessors for use with interleaved memory controllers
US7373440B2 (en) * 1997-12-17 2008-05-13 Src Computers, Inc. Switch/network adapter port for clustered computers employing a chain of multi-adaptive processors in a dual in-line memory module format
US6070194A (en) * 1997-12-17 2000-05-30 Advanced Micro Devices, Inc. Using an index and count mechanism to coordinate access to a shared resource by interactive devices
US7565461B2 (en) * 1997-12-17 2009-07-21 Src Computers, Inc. Switch/network adapter port coupling a reconfigurable processing element to one or more microprocessors for use with interleaved memory controllers
US7424552B2 (en) * 1997-12-17 2008-09-09 Src Computers, Inc. Switch/network adapter port incorporating shared memory resources selectively accessible by a direct execution logic element and one or more dense logic devices
US6457130B2 (en) 1998-03-03 2002-09-24 Network Appliance, Inc. File access control in a multi-protocol file server
US6317844B1 (en) 1998-03-10 2001-11-13 Network Appliance, Inc. File server storage arrangement
US6243770B1 (en) * 1998-07-21 2001-06-05 Micron Technology, Inc. Method for determining status of multiple interlocking FIFO buffer structures based on the position of at least one pointer of each of the multiple FIFO buffers
US7181548B2 (en) 1998-10-30 2007-02-20 Lsi Logic Corporation Command queueing engine
US6202107B1 (en) * 1998-11-19 2001-03-13 Sun Microsystems, Inc. Host controller interface descriptor fetching unit
US6343984B1 (en) * 1998-11-30 2002-02-05 Network Appliance, Inc. Laminar flow duct cooling system
US6292856B1 (en) * 1999-01-29 2001-09-18 International Business Machines Corporation System and method for application influence of I/O service order post I/O request
US6564271B2 (en) 1999-06-09 2003-05-13 Qlogic Corporation Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter
US6453401B1 (en) * 1999-07-02 2002-09-17 Rambus Inc. Memory controller with timing constraint tracking and checking unit and corresponding method
JP5220974B2 (ja) * 1999-10-14 2013-06-26 ブルアーク ユーケー リミテッド ハードウェア実行又はオペレーティングシステム機能の加速のための装置及び方法
US6327625B1 (en) 1999-11-30 2001-12-04 3Com Corporation FIFO-based network interface supporting out-of-order processing
US6526463B1 (en) * 2000-04-14 2003-02-25 Koninklijke Philips Electronics N.V. Dynamically selectable stack frame size for processor interrupts
EP1299749B1 (de) * 2000-06-29 2011-10-05 Object Reservoir, Inc. Verfahren und vorrichtung zur modellierung einer radialen strömung neben einer singularität unter verwendung einer koordinatentransformation
US7215360B2 (en) * 2001-04-06 2007-05-08 Triveni Digital, Inc. Error propagation tree technology
US6970921B1 (en) 2001-07-27 2005-11-29 3Com Corporation Network interface supporting virtual paths for quality of service
US7860120B1 (en) 2001-07-27 2010-12-28 Hewlett-Packard Company Network interface supporting of virtual paths for quality of service with dynamic buffer allocation
US7444642B2 (en) * 2001-11-15 2008-10-28 Intel Corporation Method for indicating completion status of asynchronous events
US7302503B2 (en) * 2002-04-01 2007-11-27 Broadcom Corporation Memory access engine having multi-level command structure
US7243353B2 (en) * 2002-06-28 2007-07-10 Intel Corporation Method and apparatus for making and using a flexible hardware interface
US7154886B2 (en) 2002-07-22 2006-12-26 Qlogic Corporation Method and system for primary blade selection in a multi-module fiber channel switch
US20040022204A1 (en) * 2002-07-31 2004-02-05 Matthew Trembley Full duplex/half duplex serial data bus adapter
US6963955B1 (en) * 2002-08-20 2005-11-08 Juniper Networks, Inc. Scattering and gathering data for faster processing
US7724740B1 (en) * 2002-08-27 2010-05-25 3Com Corporation Computer system and network interface supporting class of service queues
US7894480B1 (en) 2002-08-27 2011-02-22 Hewlett-Packard Company Computer system and network interface with hardware based rule checking for embedded firewall
US7397768B1 (en) 2002-09-11 2008-07-08 Qlogic, Corporation Zone management in a multi-module fibre channel switch
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US7319669B1 (en) 2002-11-22 2008-01-15 Qlogic, Corporation Method and system for controlling packet flow in networks
US7646767B2 (en) 2003-07-21 2010-01-12 Qlogic, Corporation Method and system for programmable data dependant network routing
US7234101B1 (en) 2003-08-27 2007-06-19 Qlogic, Corporation Method and system for providing data integrity in storage systems
KR100532471B1 (ko) * 2003-09-26 2005-12-01 삼성전자주식회사 입출력 데이터 위스 조절이 가능한 메모리 장치 및 그위스 조절 방법
US7219263B1 (en) 2003-10-29 2007-05-15 Qlogic, Corporation Method and system for minimizing memory corruption
US7930377B2 (en) 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
US20050240727A1 (en) * 2004-04-23 2005-10-27 Shishir Shah Method and system for managing storage area networks
US7669190B2 (en) 2004-05-18 2010-02-23 Qlogic, Corporation Method and system for efficiently recording processor events in host bus adapters
US7577772B2 (en) 2004-09-08 2009-08-18 Qlogic, Corporation Method and system for optimizing DMA channel selection
US20060064531A1 (en) * 2004-09-23 2006-03-23 Alston Jerald K Method and system for optimizing data transfer in networks
US7380030B2 (en) 2004-10-01 2008-05-27 Qlogic, Corp. Method and system for using an in-line credit extender with a host bus adapter
US7676611B2 (en) 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
US7398335B2 (en) * 2004-11-22 2008-07-08 Qlogic, Corporation Method and system for DMA optimization in host bus adapters
US7164425B2 (en) * 2004-12-21 2007-01-16 Qlogic Corporation Method and system for high speed network application
US7392437B2 (en) * 2005-01-20 2008-06-24 Qlogic, Corporation Method and system for testing host bus adapters
US8510491B1 (en) * 2005-04-05 2013-08-13 Oracle America, Inc. Method and apparatus for efficient interrupt event notification for a scalable input/output device
US7231480B2 (en) * 2005-04-06 2007-06-12 Qlogic, Corporation Method and system for receiver detection in PCI-Express devices
US7281077B2 (en) * 2005-04-06 2007-10-09 Qlogic, Corporation Elastic buffer module for PCI express devices
US7484055B1 (en) * 2005-06-13 2009-01-27 Sun Microsystems, Inc. Fast handling of state change notifications in storage area networks
JP4527640B2 (ja) * 2005-09-15 2010-08-18 株式会社ソニー・コンピュータエンタテインメント データ読出装置
US7461195B1 (en) 2006-03-17 2008-12-02 Qlogic, Corporation Method and system for dynamically adjusting data transfer rates in PCI-express devices
US8972616B2 (en) * 2013-03-15 2015-03-03 Dell Products, L.P. System and method for prioritizing iSCSI data transmission using data center bridging enabled switches
JP6356624B2 (ja) * 2015-03-23 2018-07-11 東芝メモリ株式会社 メモリデバイスおよび情報処理装置
US10063376B2 (en) 2015-10-01 2018-08-28 International Business Machines Corporation Access control and security for synchronous input/output links
US9678674B2 (en) * 2015-10-01 2017-06-13 International Business Machines Corporation Synchronous input/output command with partial completion
US10120818B2 (en) 2015-10-01 2018-11-06 International Business Machines Corporation Synchronous input/output command

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4253146A (en) * 1978-12-21 1981-02-24 Burroughs Corporation Module for coupling computer-processors
US4402046A (en) * 1978-12-21 1983-08-30 Intel Corporation Interprocessor communication system
FR2479532B1 (fr) * 1980-04-01 1986-09-19 Bull Sa Procede et dispositif pour gerer les transferts d'informations entre un ensemble memoire et les differentes unites de traitement d'un systeme de traitement numerique de l'information
US4426679A (en) * 1980-09-29 1984-01-17 Honeywell Information Systems Inc. Communication multiplexer using a random access memory for storing an acknowledge response to an input/output command from a central processor
FI76893C (fi) * 1980-09-29 1988-12-12 Honeywell Inf Systems Kommunikationsmultiplexer med dubbla mikroprocessorer.
US4644463A (en) * 1982-12-07 1987-02-17 Burroughs Corporation System for regulating data transfer operations

Also Published As

Publication number Publication date
EP0329680B1 (de) 1993-12-01
DE3788354D1 (de) 1994-01-13
AU8157687A (en) 1988-04-07
EP0329680A1 (de) 1989-08-30
WO1988002149A1 (en) 1988-03-24
US4783730A (en) 1988-11-08
EP0329680A4 (en) 1991-03-13
AU614502B2 (en) 1991-09-05
CA1286787C (en) 1991-07-23

Similar Documents

Publication Publication Date Title
DE3788354T2 (de) Eingangs-/ausgangssteuerungstechnik.
DE69030861T2 (de) Bus-Master-Steuerprotokoll
DE69317481T2 (de) Ein-/Ausgabesteuerungssystem und Verfahren
DE69032614T2 (de) Verfahren zur Datenverteilung in einer Speicherplattenanordnung
DE69117371T2 (de) Hintergrund-Plattenoberflächenanalyse durch eine Steuerung für intelligente Speicherplattenanordnung ausgeführt
DE69610157T2 (de) Ein Ein-/Ausgabeprozessor der gemeinsame Betriebsmittel einem Ein-/Ausgabebus in einem Rechner zur Verfügung stellt
DE68913914T2 (de) Multiprozessorsystem mit Vervielfältigung von globalen Daten.
DE69223303T2 (de) Verfahren und Gerät für die dynamische Zuweisung von unadressierten Unterbrechungen
DE2856483C2 (de)
DE2209282C3 (de) Datenverarbeitungsanlage
DE69227939T2 (de) Gerätetreibersystem mit einer Schnittstelle zu einem generischen Betriebsystem
DE3851928T2 (de) Steuerung von asynchron arbeitenden Peripheriegeräten.
DE69905287T2 (de) Unterbrechungsarchitektur für ein rechnersystem mit nichtuniformem speicherzugriff
DE3650036T2 (de) Mehrfachport-Diensterweiterungsadapter für Übertragungssteuerung.
DE3689990T2 (de) Flexible Datenübertragung für nachrichtenorientierte Protokolle.
DE69534616T2 (de) System und Verfahren zum Verarbeiten von E/A-Anfragen über einen Schnittstellenbus zu einer Speicherplattenanordnung
DE69429279T2 (de) Multiprozessor-programmierbares unterbrechungskontrollersystem mit prozessor-integrierten unterbrechungskontrollern
DE69326272T2 (de) Verfahren und Gerät zur Ausführung von konditionellen Operationen auf externe gemeinsam genutzte Daten
DE3751399T2 (de) Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen.
DE69031547T2 (de) Befehlsausgabe für ein Rechnersystem
DE3650092T2 (de) E/a-steuerung mit zwei funktionen.
EP0006164B1 (de) Multiprozessorsystem mit gemeinsam benutzbaren Speichern
DE2750721A1 (de) Ein/ausgabe-system
DE2755897A1 (de) Ein/ausgabe-system
DE69621212T2 (de) Busfehlerverarbeiter in einem Zweifachbussystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee