DE3741850A1 - Ausfuehrungseinheit fuer einen i/o-prozessor - Google Patents

Ausfuehrungseinheit fuer einen i/o-prozessor

Info

Publication number
DE3741850A1
DE3741850A1 DE19873741850 DE3741850A DE3741850A1 DE 3741850 A1 DE3741850 A1 DE 3741850A1 DE 19873741850 DE19873741850 DE 19873741850 DE 3741850 A DE3741850 A DE 3741850A DE 3741850 A1 DE3741850 A1 DE 3741850A1
Authority
DE
Germany
Prior art keywords
register
sequencer
task
access
command
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.)
Withdrawn
Application number
DE19873741850
Other languages
English (en)
Inventor
Jun William Lamar Bain
Camargo Marcos De Oliveira
Robert Calvin Duzett
Arthur Hans Lederhofer
Craig B Peterson
John Leonard Wipfli
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE3741850A1 publication Critical patent/DE3741850A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Description

Die Erfindung bezieht sich auf ein Datenverarbeitungssystem und insbesondere auf ein Gerät zum Ausführen von Befehlen, welche den Datenstrom zwischen einem Rechen-Untersystem und einem Eingangs/Ausgangs(I/O)-Untersystem steuern.
Bei einer älteren US-Patentanmeldung Nr. 9 21 313 wird das grundsätzliche I/O(Eingabe/Ausgabe)-Problem der Kopplung von zwei unterschiedlichen Bustypen angegangen. Auf dem I/O-Bus werden verschiedene Geräte mit einem Spektrum von durch verschiedene Peripheriegeräte erzeugten Datenübertragungsgeschwindigkeiten bedient. Einige Geräte haben das zusätzliche Problem von ruhigen Perioden, gefolgt von starken Verkehrsperioden mit sprunghaften Übergängen zwischen diesen beiden Perioden. Dieses Problem wird dadurch gelöst, daß man eine Prozessor-Bus-Ablauffolgesteuereinrichtung (-Sequenzer), eine I/O-Bus-Ablaufsteuereinrichtung und eine Ausführungseinheit vorsieht, die alle asynchron arbeiten und einen Registerdateispeicher gemeinsam nutzen.
In der älteren US-Patentanmeldung Nr. 0 46 633 ist ein I/O-Bus- Sequenzer (Ablauffolgesteuereinrichtung) beschrieben. Der I/O-Bus-Sequenzer ist mit dem I/O-Bus und der Registerdatei verbunden. Die Registerdatei wird einheitlich adressiert und ist geeignet ausgebildet, um eine gemeinsame Nutzung durch die Ausführungseinheit, den System-Bus-Sequenzer und den I/O-Bus- Sequenzer zu ermöglichen. Die Registerdatei besteht aus einer Vielzahl von Multiport-Registersätzen.
Die vorliegende Erfindung befaßt sich mit der Ausführungseinheit, welche den Rest des in den oben genannten Patentanmeldungen beschriebenen Systems steuert. In moderner VLSI-Technologie sind der Taktgeschwindigkeit, der Chipfläche und der Leistungsaufnahme Grenzen gesetzt, damit eine hohe Leistungsfähigkeit erreicht werden kann. Diese Grenzen lassen sich einhalten, indem man das Gerät für Parallelfunktionen geeignet konzipiert, und für die Ausführungseinheit bedeutet dies die Fähigkeit, mehrere Aufgaben gleichzeitig zu handhaben bzw. auszuführen.
Der Erfindung liegt daher die Aufgabe zugrunde, die Parallelität in einem I/O-Kanal-Prozessor dadurch zu erreichen, daß eine Ausführungseinheit zur Unterstützung von Mehrfach-Task- Zuweisungen zur Verfügung gestellt wird.
Diese Aufgabe wird erfindungsgemäß mit Hilfe einer Ausführungseinheit gelöst, die einen programmierten Prozessor mit Mitteln zur Zuordnung von Registersätzen unter auf dem Prozessor laufenden Aufgaben bzw. Tasks aufweist, wobei Registersatzdeskriptoren zwischen den Tasks in Form von Nachrichten bewegt werden.
Entsprechend einem Aspekt der Erfindung ist eine Registersatzverriegelung vorgesehen, um zu ermöglichen, daß Aufgaben bzw. Tasks Registersätze (Puffer) zwischen Bedienern (servers) übertragen, wobei ein Bediener eine von einer Vielzahl von Tasks oder ein Bus-Sequenzer sein kann und einen auf ein Registersatz wirkenden Agenten darstellt.
Die Erfindung hat den Vorteil, daß durch Unterteilung der Registerdatei in Registersätze jede (Task) Aufgabe einige Sätze haben kann. Einige der Sätze können dann private Zustandsdaten enthalten und stets einer besonderen Task zugeordnet sein, während andere Sätze als Puffer oder Nachrichten verwendet und zwischen Tasks übertragen werden können.
Die Registersatzverriegelung hat den Vorteil, das Tasks gemeinsame Registersätze benutzen können (z. B. für Pipeline-Algorithmen), während gewährleistet ist, daß mehrere Tasks nicht denselben Registersatz gleichzeitig manipulieren.
Im folgenden wird die Erfindung anhand eines schematisch in der Zeichnung dargestellten Ausführungsbeispiels näher erläutert. In der Zeichnung zeigt
Fig. 1 ein Funktionsblockdiagramm eines I/O-Kanal-Prozessors, in welchem die Erfindung verwirklicht ist;
Fig. 2 ein Diagramm, das eine Adressierung unter Verwendung von Registersatz-Zeigern veranschaulicht;
Fig. 3 ein Diagramm des Formats einer von einem Mikroport gelieferten Antwortnachricht;
Fig. 4 ein Diagramm des Formats von logischen Adressen in einer Registerdatei;
Fig. 5 ein Diagramm zur Veranschaulichung der Zugriffs- Befehlsoperation; und
Fig. 6 ein Diagramm des Formats von Sequenzernachrichten.
Ausführungseinheit (EU)
Im folgenden wird auf Fig. 1 Bezug genommen. Die Ausführungseinheit 10 führt Programme aus, welche die Datenübertragung über den Kanal-Prozessor (CP) steuern bzw. verwalten. Sie sorgt für einen Multiprozeßbetrieb, der die Steuerung von Datenübertragungen und Hintergrundfunktionen, wie Schnittstellenbildung zum Rechen-Subsystem (CS) auf dem lokalen Bus und zum I/O(Eingabe/Ausgabe)-Subsystem auf dem I/O-Bus, vereinfacht.
Adreßräume
Die EU hat fünf logische Adreßräume: den Befehlsraum, einen allgemeinen Registerraum, einen CS-Datenraum, einen I/O-Raum und einen lokalen Registerraum.
Befehlsraum
Der Befehlsraum in der EU enthält 64k Befehle. Der untere 1,5k Teil ist ein On-Chip-ROM und enthält die gemeinsamen Subfunktionen, die den CP-Kernel ausmachen. Der obere Teil erstreckt sich von den Plätzen 1,5k bis 64k und wird vom CS-Speicher einer dynamischen Cache-Speicherung unterworfen.
Alle Tasks nutzen denselben 64k Befehlsraum gemeinsam. Physikalisch hat der CP eine feste Befehlszone, welche im CS-Speicher verriegelt ist. Ein Code für alle Tasks muß innerhalb dieser Zone vorhanden sein, welche auf einem 4k Byte-Rand im Adreßraum des CS-Speichers liegt. Der Ort des festen Codes wird an den CP im Systemspeicher gegeben.
Genereller Registerraum
Jede Task kann bis auf zweiunddreißig 33-Bit-Universalregister (das dreiunddreißigste Bit dient für Zustandskennzeichen) in seinem Universalregisterraum zugreifen. Der Rauch ist in acht vier-Wort-Gruppierungen organisiert, die Registersätze genannt werden. Jeder Registersatz wird über Registersatzzeiger bzw. -hinweisadressen (Fig. 2) indirekt zugegriffen. Daten im Universalregisterraum können als Bytes, Halbwörter (16 Bits) oder Wörter behandelt werden, und alle Daten müssen auf ihren natürlichen Grenzen ausgerichtet sein.
CS-Datenraum
Der Rechen-Untersystem(CS)-Datenraum kann bis zu vier Gigabytes lang sein. Auf den Raum wird über den Zugriffsbefehl zugegriffen, der Eingaben in der Registerdatei 16 zum Aufbau einer physikalischen Adresse benutzt. Der Zugriffsbefehl implementiert Datenübertragungen zwischen Universalregistern und dem CS-Speicher.
I/O-Raum
Der Adreßraum an der I/O-Bus-Seite des CP ist linear adressierbar und kann bis zum 16 Megabytes lang sein. Auf ihn wird ebenfalls unter Verwendung des Zugriffs(ACCESS)-Befehls zugegriffen. Dieser Befehl verwendet Register in der Registerdatei zur Adressenberechnung und implementiert Datenübertragungen zwischen Universalregistern und I/O-Geräten.
Lokalregisterraum
Der lokale Registerraum ermöglicht einen Zugriff auf einige Speichertypen einschließlich
  • - spezielle CP-Register, auf die gewöhnlich nicht durch Mikrocode zugegriffen wird, z. B. die Befehlscache-Adreßtabelleneingabe; und
    - andernfalls unzugreifbare CP-Speicherzonen, z. B. die Task- Rahmenregister.
Register im lokalen Adreßraum werden unter Verwendung des ACCESS-LOCAL-Befehls zugegriffen.
Registerdatei
Der CP weist einen Satz von On-Chip-Universalregistern in der Registerdatei auf. Die Registerdatei 16 ist ein RAM mit einhundertachtundzwanzig 33-Bit Plätzen. Diese einhundertachtundzwanzig Register sind als zweiunddreißig 4-Wort-Registersätze organisiert.
Diese Registersätze und die in ihnen befindlichen Daten werden indirekt über die Registersatz-Zeiger jeder Task zugegriffen. Die Register werden daher logisch und nicht physikalisch adressiert. Registeradressen werden bei Bedarf auf Byte-Körnigkeit (granularity) spezifiziert. Befehle gehen davon aus, daß Halbwort- und Wort-Operanden auf geeigneten Grenzen angeordnet sind.
Registersatz-Zeiger
Im folgenden wird auf Fig. 2 Bezug genommen. Registersätze können dynamisch oder statisch einer Task zugeordnet werden, indem man die physikalische Registersatzadresse in einen der Task-Registersatz-Zeiger lädt. Registersatz-Zeiger liefern den Mechanismus zur Einteilung (mapping) zwischen logischen Adressen (welche in den Befehlen benutzt werden) und physikalischen Registersatz-Adressen. Jede Task hat acht Registersatz-Zeiger. Diese Zeiger sind im lokalen Raum zugreifbar. Ihr Format ist in Fig. 2 gezeigt. Die bodenseitigen sechs Bits (0-5) enthalten die physikalische Adresse eines Registersatzes in der Registerdatei 16 der Fig. 1. Die oberen drei Bits (6-8) dienen zur Zugriffssteuerung.
Ein Fehlerbit wird gesetzt, wenn eine Folgesteuereinrichtung, im folgenden Sequenzer genannt, (12 oder 14 in Fig. 1), ein auf einen Registersatz bezogenes Problem hat. Wenn beispielsweise der lokale Bus-Sequenzer 14 einen Registersatz mit 16 Bytes laden soll und aus irgendeinem Grund nur 9 Bytes in diesem Satz unterbringen kann, so setzt der Sequenzer das Fehlerbit, bevor der Registersatz zur Bestimmungstask übertragen bzw. durchgeleitet wird. Wenn eine Task auf einen Registersatz zuzugreifen versucht, dessen Fehlerbit gesetzt ist, so erzeugt die Hardware einen Kontext-Niveau-Fehler.
Das Gültig-Bit zeigt an, daß der Registersatz-Zeiger eine gültige Adresse enthält und auch in einem Ausschlußmechanismus benutzt wird, der weiter unten beschrieben wird.
Ein Block-Bit wird gesetzt, wenn eine Task auf einen Registersatz Zugriff zu nehmen versucht, dessen gültiges Bit nicht gesetzt ist. Dieses Bit zeigt der Hardware an, bei welchem Registersatz die Task blockiert ist. Wenn der blockierte Registersatz- Zeiger aktualisiert und das gültige Bit gesetzt ist, so wird die Task entblockiert, wenn das Block-Bit für diesen Registersatz gesetzt ist.
Der Bewegungs-Zeiger-Befehl ermöglicht das Laden und Speichern von Registersatz-Zeigern. Dieser Befehl wird in erster Linie dann benutzt, wenn eine nachrichtenbasierte Registersatzübertragung abgewickelt wird.
Registersatzverriegelung
Im Rahmen der vorliegenden Beschreibung werden die Ausdrücke "Task" und "Teilnehmer" austauschbar verwendet. Ein "Teilnehmer" wird hier als Agent definiert, der auf einen Registersatz einwirkt. Ein Teilnehmer kann eine von acht Tasks oder ein Bus-Sequenzer sein.
Jeder Teilnehmer (z. B. Task) der auf einen Registersatz über einen Registersatz-Zeiger mit rückgesetztem Gültig-Bit zuzugreifen versucht, blockiert. Dieser Mechanismus ist vorgesehen, um einen Zugriff auf Registersätze für Tasks zu steuern, welche die Registersätze untereinander übertragen.
Gültig-Bits werden gesetzt und rückgesetzt von Befehlen, die einen Registersatz von einer Task zu einer anderen logisch übertragen. Das Gültig-Bit des Registersatz-Zeigers der sendenden Task wird rückgesetzt und das Gültig-Bit des Registersatz- Zeigers der Zieltask gesetzt. Gültig-Bits werden ebenfalls rückgesetzt durch den ACCESS-Befehl und gesetzt von Registersatz-Antworten von den Bussequenzern, wodurch eine Registersatzsynchronisation zwischen der EU und den Sequenzern hervorgerufen wird.
Stapeloperationen
Die Hardware unterstützt eine Stapelung für jede der acht Tasks (0-7). Die Stapel sind im logischen Registerraum der Tasks angeordnet. Die Stapel werden durch einen Stapel-Zeiger zugegriffen, der in Task-Rahmen-Registern 25 angeordnet ist. Task-Rahmen-Register sind als solche in der eingangs genannten älteren Anmeldung beschrieben. Der Stapel-Zeiger enthält eine logische Adresse, welche auf ein Halbwort in der Registerdatei hinweist.
Jede Eingabe auf dem Stapel ist ein Halbwort. Wenn ein Rufbefehl ausgeführt wird, wird der Stapel-Zeiger dekrementiert und ein Programmzähler PC auf den Stapel gedrückt. Wenn eine Rückkehr oder ein Rücksprung auftritt, wird der Stapel-Zeiger inkrementiert. Der Stapel kann sich über den gesamten logischen Registerraum der Task erstrecken. Der Stapel läuft in dem logischen Raum der Task um, wenn der Zeiger über den Bereich der logischen Adressen hinaus inkrementiert oder dekrementiert wird.
Der Stapel kann zum Halten von 16-Bit-Werten, z. B. Fehlerbehandlungsadressen, benutzt werden. Die Stapel- bzw. Kellerspeicherbefehle bewegen Daten zwischen der Registerdatei und dem Stapel und aktualisieren den Stapel-Zeiger in geeigneter Weise.
Typischerweise wird der Stapelzeiger derart initialisiert, daß er auf das obere Ende des Registerraums der Task (d. h. das letzte Halbwort im logischen Registersatz 7) hinweist.
In die Stapelarchitektur einbezogen ist ein Stapeloberseite- Register, das eine Kopie des Inhalts der Topeingabe des Rufstapels enthält. Dieses Register bewirkt eine Leistungoptimierung für den Rückkehrbefehl und wirkt als Cache-Speicher für den Stapel.
Befehlssatzarchitektur
Der EU-Befehlssatz ist in die folgenden Gruppen unterteilt:
Register-Operationsbefehle
Ablaufsteuerbefehle
Speicher- und I/O-Zugriffs-Befehle
Task-Steuerbefehle
Zwischen-Task-Kommunikationsbefehle
andere Befehle.
Diese Befehlsgruppen werden nachfolgend beschrieben.
Register-Operationsbefehle
Register-Operationsbefehle enthalten alle Befehle, welche die ALU 22 beim Manipulieren von Registeroperanden benutzen. Diese Befehle führen eine Operation mit den Quellen- und Zieloperanden durch und legen das Ergebnis in das Ziel. ALU-Operationen können durchgeführt werden an 8-, 16- und 32-Bit-Mengen.
ARITHMETISCHE OP
Dieser Befehl führt arithmetische Operationen an seinen Operanden durch. Diese Operationen enthalten Addition, Subtraktion, Multiplikation, Vergleich und Links- und Rechtsverschiebungen. Die meisten Operationen können unter Verwendung von entweder vorzeichenbehafteten oder vorzeichenfreien arithmetischen Setz- oder Nicht-Setz-Kennzeichen ausgeführt werden.
LOGISCHE OP
Dieser Befehl führt logische Operationen an seinen Operanden durch. Diese Operationen enthalten UND, ODER, Exklusiv-ODER usw..
BIT OP
Dieser Befehl schafft zwei Funktionen. Die erste ist die Fähigkeit zum Testen, Setzen oder Löschen eines Einzelbits innerhalb eines Operanden eines beliebigen Typs. Die zweite ist die Fähigkeit zur Durchführung einer unteilbaren Test-und-Setz-Operation an einem Bit, wodurch eine binäre Semaphore zum Implementieren kritischer Bereiche geschaffen wird.
ROTATION
Dieser Befehl dreht einen 32-Bit-Zieloperanden um die gewünschte Anzahl von Bitpositionen. Der Quelloperand enthält die Anzahl von Bitpositionen, und der Befehl gibt Links- oder Rechtsdrehung an.
LADE LITERAL
Dieser Befehl lädt einen 16- oder 32-Bit- Zieloperanden mit einem 16-Bit-Wert.
Ablaufsteuerbefehle
Ablaufsteuerbefehle sind diejenigen, welche den Befehlsfluß zum verzweigen bringen.
VERZWEIGEN UND RUFEN
Diese Befehlszieladressen werden im Befehl codiert. Verzweigen oder Rufen können konditionell spezifiziert sein, und in diesem Falle tritt eine Verzweigung oder Abzweigung nur dann auf, wenn die Operationskennzeichen in geeigneter Weise gesetzt sind. Rufbefehle bewirken auch, daß die Rückkehradresse dem Rufstapel der Task aufgedrückt wird.
FALL
Diese Befehlszieladresse wird während der Laufzeit berechnet. Der Befehl enthält eine Basisadresse, und der Operand gibt ein Offset von dieser Adresse an. Fall- bzw. Case- Befehle nehmen stets die Verzweigung.
RÜCKKEHR
Dieser Befehl bewirkt eine Verzweigung der im oberen Ende des Rufstapels der Task enthaltenen Adresse. Der Rückkehrbefehl holt den Rufstapel.
RÜCKKEHR VON FEHLERKORREKTUR
Dieser Befehl ist identisch mit dem Rückkehr-Befehl mit der Ausnahme, daß der ICE-Betrieb rückgesetzt wird, wenn der Rückkehrbefehl ausgeführt wird.
AUSNAHME
Dieser Befehl dient zum Aufrufen des Ausnahmemechanismus des CP. Tasks sind in der Lage, Kontextniveauausnahmen unter Verwendung dieses Befehls hervorzurufen. Dieser Befehl bewirkt, daß die Task auf die von der Software definierte Fehler-Verzweigungsadresse abzweigt. Der Abzweig zum Fehlerverarbeiter wird als ein Ruf implementiert und drückt dem Rufstapel daher die Rückkehradresse auf.
FEHLERKORREKTURUNTERBRECHUNG
Dieser Befehl ist der Weg des Programmierers zum Eintritt in den ICE-Modus. Der Befehl hat zwei Moden, bedingt und unbedingt. Ein unbedingter Fehlerkorrekturbreak ruft stets einen Prozessorniveaufehler hervor, und der CP tritt in den ICE-Modus ein. Ein konditioneller Fehlerkorrekturbreak bewirkt, daß der CP in den ICE-Modus eintritt, wenn das Ablaufverfolgungsaktivierungskennzeichen gesetzt ist.
Zugriffsbefehl
Eine Task bewegt Daten zwischen ihrer Registerdatei und dem Speicher (entweder über den lokalen Bus oder den I/O-Bus) unter Verwendung des Zugriffsbefehls. Dieser Befehl bewegt zwischen 1 und 16 Datenbytes. Die sendende Task kann angeben, welche Task bei Beendigung der Operation benachrichtigt werden soll. Die Zieltask kann unter Verwendung einer Synchronisation auf Registersatzbasis oder auf Nachrichtenbasis bezeichnet werden.
Die Versorgungsvariante des Zugriffsbefehls wird für Blockbewegungen auf der I/O-Seite verwendet.
Zugriffsbefehlsdefinition
FELDBESCHREIBUNGEN:
IDDDDDD- Vollwort-Parameterreg., Wort ausgerichtet ISSSSSS- 8-Bit-Literalverschiebung oder Register enthaltend Vollwortverschiebung L- zeigt Literalverschiebung P- zeigt physikalische Adressierung an (keine Adreßberechnung); der Verschiebungsoperand dient als physikalische Adresse, und das BBBBB-Feld des Parameterregisters wird ignoriert M- Antworttyp-Registersatz-Einteiler (mapper) (0) oder Mikroport (1). Dieses Bit wird für Zugriffe auf den lokalen Bus ignoriert. S- zeigt einen Versorgungsbefehl an (1 = Versorgung, 0 = Zugriff). Die Versorgung kann nur für Zugriffe zur I/O-Seite benutzt werden. Wenn S ansteht, müssen P und L ebenfalls anstehen.
EEEE- Bus-Sequenzer-Kanal (0-9 sind I/O-Bus- Kanäle, 14-15 lokale Bus-Kanäle) MFFFRRR- logischer Zeiger (Hinweis) auf die Antwort erhaltenden Registersatz (MFFF = Rahmen id (M = 0 bedeutet meine Task). RRR = Registersatz) BBBBB- Zeiger auf die Basisadresse enthaltendes Register LLLL- Länge des Zugriffs (# Bytes - 1) CCCC- Spez. oder Befehlsbits AAAAAAA- logische Adresse von Datenblock in aktuellem Taskrahmen (Adresse des ersten Bytes).
Die Lokal-Bus-Zugriffsspez.-Bits werden wie folgt verschlüsselt:
C- Cache-speicherbar - dies zeigt an, daß die bezeichneten Daten in einem gegenüber dem CP-externen Cache-Speicher angeordnet werden können. W- Schreibe. P- Vorausholen - dies zeigt an, daß der Zugriff einen Vorausholkanal einer Bus-Erweiterungseinheit (BXU) (oder eine in bezug auf den CP externe andere Komponente), welche solche Kanäle bildet, benutzen kann. R- RMW - Lese-Modifiziere-Schreibe.
Die Codierungen der I/O-Befehlsbits werden vom Programmierer der I/O-Sequenzer-PLA für eine vorgegebene I/O-Busanwendung definiert.
Der Zugriffsbefehl ruft eine Anforderung an die spezifizierte Bus-Sequenzer-Einheit hervor und schafft dadurch einen Anforderungs- Antwort-Kanal zwischen dem CP und einem an dem zugehörigen Bus liegenden Agenten. Der Ort und die Länge des Datenblocks in der Registerdatei werden im Parameterregister des Zugriffsbefehls angegeben. Der Datenblockplatz ist eine logische Registeradresse und wird von der Hardware in eine physikalische Adresse umgesetzt, bevor er zum Bus-Sequenzer (Ablauffolgesteuereinrichtung) geleitet wird.
Sobald die Adresse übersetzt ist, wird der logische Registersatz- Zeiger im Registersatz-Einteiler 24 ungültig gemacht, da der Bus-Sequenzer jetzt die Steuerung über den Registersatz übernommen hat. Das Parameterregister enthält auch die Adresse eines Basisregisters in der Registerdatei. Die Basis dient zur Basis/Offset-Adressierung und zeigt an, welche Seite oder welches Segment im Speicher adressiert werden soll. Das Indexfeld des Parameterregisters ist der Index in die I/O-Servicetabelle 27 oder den LB-Sequenzer, so daß einer von zehn verfügbaren I/O-Kanälen auf dem I/O-Bus oder von drei Systemspeicherkanälen auf dem lokalen Bus bezeichnet wird.
Das EEEE-Feld wird wie folgt verschlüsselt:
Die Adreßverschiebung ist im ISSSSSS-Register angeordnet oder ist ein 8-Bit-Literal, das im Befehl einbezogen ist (ISSSSSSX). Die Verschiebung wird zur Segmentenbasis (gewonnen aus der Registerdatei mit der Wortadresse BBBBB) addiert, um die physikalische Adresse zu gewinnen. Das CCCC-Feld im Parameterregister spezifiziert den Typ der durchzuführenden Zugriffsoperation genauer (Schreibe, Lese, Schreibe-Modifiziere- Schreibe usw.).
Das Parameterregister enthält auch das Rahmen-ID der Task, welche die Antwort erhält, und den logischen Registersatz (der zum Empfangstask gehört), der bei der Antwort validisiert wird und die spezifizierten Daten enthält.
Zwei getrennte und unterschiedliche Antwortmechenismen stehen dem Programmierer zur Verfügung. Ein Mechanismus schreibt den physikalischen Daten-Zeiger in den angegebenen Logikregistersatz- Zeiger der Antworttask und validisiert gleichzeitig diesen Zeiger. Dieser "Antwort auf Registersatz-Einteiler"-Mechanismus wird wie folgt beschrieben:
Die physikalische Registeradresse der Antwortdaten werden explizit in den spezifizierten Logikregistersatz-Zeiger der Antworttask geschrieben. Der Logikzeiger wird validisiert, so daß der spezifizierten Antworttask voller Zugriff zum Registersatz gegeben wird. Auf diese Weise kann die Steuerung eines Registersatzes von der den Zugriff anfordernden Task an eine andere Task zur Durchführung einer anderen Registersatzbearbeitung übergeben werden, wenn der Zugriff beendet ist. Auf diese Weise kann ein Pipelining von Tasks derart konzipiert werden, daß jede die Daten in einem Registersatz manipuliert und danach den Registersatz an einen Bus-Sequenzer oder eine andere Task weitergibt.
Wenn der Sequenzer einen Fehler oder eine andere abnorme Bedingung erfährt, wird das Fehlerbit des Registersatz-Zeigers als Teil der Antwort angelegt.
Der zweite Antwortmechanismus sendet eine Antwortnachricht an den Mikroport der bezeichneten Antworttask und puffert die Nachricht am Bus-Sequenzer bis die Nachricht übertragbar ist. Die übertragene Nachricht enthält sowohl die physikalische Datenadresse als auch die Logikregistersatz-Adresse. Die Antwortnachricht, die am Mikroport zur Verfügung gestellt wird, ist in der in Fig. 3 gezeigten Weise formatiert. Der gleiche Task-Pipelining-Mechanismus, der im ersten Antwortschema zur Verfügung steht, ist auch hier anwendbar. Wenn Pipelining nicht implementiert ist, kann die aktuelle Task natürlich als Antworttask spezifiziert werden (durch Setzen von MFFF = 0-); in diesem Falle wird angenommen, daß der Antwort-Logikregistersatz der gleiche wie derjenige im Logikdaten-Zeiger (AAAAAAA) ist. Mit anderen Worten, die FFF- und RRR-Felder des Parameterregisters werden ignoriert, wenn M = 0.
Eine spezielle Version der Zugriffsinstruktion wird für Zugriffe implementiert, welche nur einen Registersatz an eine I/O-Servicetabellenzeile liefern und keine Adreßberechnung erforderlich machen ("Versorgungsregistersatz"-Zugriff). Diese Version wird durch das "S"-Bit (Versorgungsvariante) im Befehl spezifiziert. Sie wird ausgeführt ohne Zugriff zu einem Basisregister oder eine Adreßberechnung.
Eine einfache physikalische Adressierung wird durch das "P"- Bit des Zugriffsbefehls aktiviert. Bei Aktivierung wird kein Basis-Offset-Rechenvorgang durchgeführt. Stattdessen wird die physikalische Adresse direkt aus dem Verschiebungsoperanden genommen.
Ein Versuch zum Überqueren einer Registersatzgrenze wird zum Zeitpunkt der Ausführung der Zugriffsinstruktion nicht festgestellt. Jedoch überquert die Hardware die Registersatzgrenze nicht, sondern läuft um die Zone innerhalb des Registersatzes herum.
Ein fehlerhafter Registersatz, der entweder durch den Befehl oder das Parameterregister zugegriffen wird, verfälscht den Befehl. Eine fehlerbehaftete I/O-Tabellenzeile macht einen Versorgungsbefehl fehlerhaft.
Ein ungültiger Registersatz blockt die Task. Auch der aktuelle Task wird gesperrt, wenn die spezifizierte Service-Tabelleneingabe oder LB-Bus-Warteschlange voll ist. Wenn die Zeile oder Schlange zur Verfügung steht, entblockiert die Task, und die Ausführung wird am Zugriffsbefehl wieder aufgenommen.
Wenn die "Versorgungsregistersatz"-Form des Zugriffsbefehls spezifiziert wird, braucht keine Adresse geliefert zu werden.
Indirekte Adressierung der Verschiebung oder des Parameterregisters oder beider fügt einen Extrazyklus hinzu. Eine beliebige Anzahl von zusätzlichen Zyklen können aufgrund der Entscheidung über den lokalen Bus geleitet werden, der die Zugriffsanforderung zu den Bus-Sequenzern überträgt. Diese Entscheidung ist notwendig, da asynchrone Ereignisse auf dem Bus ebenfalls übertragen werden (z. B. Zugriffsantworten).
Task-Steuerbefehle
Task-Steuerbefehle bilden Mittel zum Prüfen und Kontrollieren des Status einer Task.
SETZE STATUS
Dieser Befehl ermöglicht das Setzen oder Rücksetzen der Ablauf-planbaren und fehlerbehafteten Modusbits. Wenn die Operation das falsche Modusbit setzt, verzweigt sich die gewählte Task auch in die Software-entwickelte Fehlerzweigadresse.
Inter-Task-Kommunikation(ITC)-Befehle
Die Sende- und Empfangsbefehle ermöglichen es den Tasks, untereinander zu kommunizieren. Die Kommunikation wird durch Übertragung von Nachrichten an Task-Mikroports erreicht.
Andere Befehle
Nachfolgend wird eine kurze Beschreibung der anderen Befehle gegeben.
NOP
Der NOP-Befehl führt weder eine Operation noch Zustandsänderungen aus. Er arbeitet stets in einem Zyklus.
PUSH
Dieser Befehl drückt dem Stapel einen Wert auf. Der Wert kann entweder ein Literal oder ein 16-Bit-Wert aus der Registerdatei sein.
POP
Dieser Befehl holt die Kopfeingabe vom Stapel.
ZUGRIFFSKENNZEICHEN
Dieser Befehl dient zur Manipulation der Kennzeichenbits in der Registerdatei. Die vier Kennzeichenbits in einem Registersatz (z. B. die dreiunddreißigsten Bits der vier Worte im Registersatz) können geladen (oder gespeichert) werden von (in) ein Byte, das in dem Befehl angegeben ist.
ZEITGEBER-OP
Der Zeitgeber-OP-Befehl steuert die Operationen eines Task-Zeitgebers. Er schafft Funktionen zum Laden, Starten, Stoppen und Speichern des Zeitgebers. Der Befehl kann auch (optionell) bewirken, daß die Task blockiert wird, bis der Zeitgeber abgelaufen ist.
BEWEGUNGSZEIGER
Dieser Befehl bewegt Daten zwischen einem Task-Registersatz-Zeiger und der Registerdatei. Er wird in erster Linie bei der nachrichtenbasierenden Synchronisation verwendet.
ZUGRIFF LOKAL
Dieser Befehl schafft den Programmiererzugriff zum Verbindungs- und Lokalregisterraum. Er ermöglicht die Bewegung von Daten zwischen lokalen Registern und der Registerdatei.
TEST-RESOURCE
Dieser Befehl findet den Index der am höchsten bewerteten 1 in einem Byte. Ein "Test-Resource", ausgeführt an diesem Byte, führt einen der ersten verfügbaren Resource entsprechenden Wert zurück. Der Befehl ist zweckmäßig zur Resourcenzuordnung, wenn jedes Bit in einem Byte die Verfügbarkeit irgendeiner Resource bezeichnet.
LADE-CACHE
Dieser Befehl ermöglicht das Vorladen von Zeilen im Cache-Speicher. Der Programmierer gibt eine Adresse an, die im Cache-Speicher sein sollte, und die diese Adresse enthaltende Zeile wird geholt bzw. abgerufen. Die die spezifizierte Adresse enthaltende Zeile kann wahlweise verriegelt oder entriegelt werden.
LESE-BEFEHL
Dieser Befehl lädt Befehle in die Registerdatei. Der Programmierer gibt die Befehlsadresse und ein 32-Bit- Zielregister an, und der Befehl an dieser Adresse wird in die Registerdatei gelegt. Dies gilt für Befehle, welche im ROM und im Cache-Speicher sind, sowie für externe Befehle. Der Befehl ist zweckmäßig zum Komponententesten.
Adressiermoden
Die meisten CP-Befehle sind so konzipiert, daß sie zwei Operanden, die Quelle und das Ziel, haben. Alle Operanden kommen aus der Registerdatei. Alle Registeroperanden können indirekt zugegriffen werden.
Die Befehle enthalten Operandenspezifizierer, welche von der Form ISSSSSSS oder IDDDDDDD sind. Diese Operandenspezifizierer können auf einen Operanden in einer von drei Weisen bezugnehmen: literal, direkt oder indirekt literal. Wenn der Befehl einen Literal-Operanden bezeichnet, so wird der Operandenspezifizierer als 8-Bit-Literal verwendet.
Direkte Operanden haben I = 0, und der Rest des Feldes wird als eine logische Adresse interpretiert. Ein Befehl, der wortorganisierte Operanden (4 Bytes) benutzt, muß die beiden Bodenbits des Operandenspezifizierers gleich Null haben. Bei Halbwortoperanden muß das Bodenbit gleich Null sein.
Wenn ein Befehl einen indirekten Operanden I = 1 hat, weist der Operand im Befehl auf ein Halbwort in der Registerdatei hin, das die Logikadresse des Operanden darstellt. Das Format der Logikadresse in der Registerdatei ist in Fig. 4 gezeigt. Einige Befehle, die nur Vollwortoperanden benutzen, haben Operandenspezifizierer der Form ISSSSSSO anstatt ISSSSSOO, da sie indirekte Adressen zulassen, welche Halbwortzeiger bzw. -hinweise sind.
Logische Adressen, die bei der Umleitung (indirection) verwendet werden, müssen stets ein ausgerichtetes Halbwort sein, wenn das M-Bit (Bit 7 in Fig. 4) eine 1 ist. Wenn das M-Bit eine Null ist, wird die obere Hälfte des Halbworts ignoriert, und es werden die aktuellen Task-Registersatz-Zeiger verwendet; andernfalls geben die FFF-Bits an, welche Task-Registersatz- Zeiger beim Auflösen der Adresse benutzt werden. Die RRR-Bits geben an, welcher Registersatz-Zeiger zu benutzen ist, und die vier Bodenbits geben die Byteadresse innerhalb des Registersatzes an.
Befehlscache-Operation
Der Befehlscache 20, der in Fig. 1 gezeigt ist, enthält 256 Befehle. Er bewirkt eine vollassoziative Adreßzuordnung mit 32 Adreßblöcken, zwei Zeilen pro Block und vier Befehlen pro Zeile. Jeder Befehl ist 28 Bits breit, wird jedoch im Hauptspeicher in ein 32-Bit-Wort mit vorangestellten Nullen eingesetzt.
Das Management des Befehlscache ist für die Tasks transparent, sobald die anfängliche Bindung zwischen dem Befehlssegment im CS-Speicher und dem Cache-Speicher vervollständigt worden ist. Wenn eine Task einen Cache-Fehlgriff hat, wird die Task blockiert, bis die den Befehl enthaltende Zeile aus dem CS- Speicher geholt worden ist. Andere Tasks können während dieser Zeit operieren. Wenn die Cache-Zeile geholt worden ist, wird die Task entriegelt bzw. entblockiert.
Vorausholen
Cache-Zeilen werden unter Verwendung einer als "gekennzeichnete Vorausholung innerhalb eines Adreßblocks" bezeichneten Strategie vorausgeholt. Dies bedeutet, daß die zweite Zeile in einem Adreßblock vorausgeholt wird, sobald die erste Zeile einmal zugegriffen worden ist.
Ein Vorausholen findet nicht statt, wenn die Cache-Anforderungswarteschlange besetzt ist.
Zeilenverriegelung
Gewisse Anwendungen können es erforderlich machen, daß ihr Code vollständig im Cache-Speicher vorhanden und stets verfügbar ist, bevor und während er ausgeführt wird. Zeit-kritische Übertragungsschleifen sind ein Beispiel. Der Lade-Cache-Befehl ermöglicht es einem Programmierer, eine einen speziellen Befehl enthaltende Zeile zu laden und sie optionell im Cache- Speicher zu verriegeln. Derselbe Befehl dient zum Entriegeln der Zeile. Verriegelte Zeilen werden nicht ersetzt.
L(Orts-)Bus und I/O-Bus-Sequenzer
Es gibt zwei Module zur Herstellung einer Nachrichtenverbindung mit anderen Geräten: den L-Bus-Sequenzer (LBS) und den I/O-Bus-Sequenzer (IOS), gezeigt als Blöcke 14 und 12 in Fig. 1. Sie erleichtern die Kommunikation mit dem Rechen-Subsystem (CS) und dem I/O-Subsystem.
Die folgenden Schritte werden durchgeführt, um eine Übertragung zu bewirken (zu beachten ist: die dritten und vierten Schritte können in entgegengesetzter Reihenfolge als hier angegeben auftreten):
  • 1. Die EU führt einen Zugriffsbefehl aus. Dieser gibt eine Anforderung an einen der Sequenzer. Die Task kann blockiert werden, bis der Sequenzer die Anforderung akzeptieren kann.
  • 2. Der Sequenzer führt die geforderte Operation aus. Dies führt gewöhnlich zu einer Datenübertragung in die oder aus der Registerdatei.
  • 3. Eine Task führt einen Befehl aus, der blockiert, bis die Sequenzersignale komplettiert sind. Diese Task kann u. a. diejenige Task sein, welche die Anforderung ausgegeben hat.
  • 4. Der Sequenzer signalisiert die Beendigung der Operation.
  • 5. Die Task wird entblockiert und nimmt die Ausführung bei dem Synchronisationsbefehl wieder auf.
Der oben beschriebene Zugriffsbefehl ist das Mittel der EU zum Richten von Anforderungen an den IOS 12 und den LBS14. Fig. 5 zeigt ein typisches Zugriffsbefehl- 40 und Parameterregister 42 und wie die benötigte Information von einem Sequenzer erzeugt wird. Der Zugriffsbefehl liefert die notwendige Information an jeden Sequenzer, damit letzterer die Datenübertragung durchführen kann. Die gelieferte Information ist:
  • - Sequenzer-Code
    - Antwortmethode
    - Versorgungsvariante (nur für den IOS)
    - Länge
    - Befehl
    - Antworttask
    - Antwortregistersatz
    - physikalische Adresse (32-Bit für LBS; 24-Bit für IOS)
    - Daten-Zeiger
Der Sequenzer-Code informiert die Hardware darüber, an welchen Sequenzer der Zugriff gebunden ist. Codes von 0 bis 9 geben eine Zeile in der I/O-Servicetabelle an. Codes 14 und 15 sind für den LBS und werden weiter unten definiert. Das Antwortmethodenbit sagt dem Sequenzer, wie die Beendigung einer Anforderung zu signalisieren ist. Das Versorgungsbit wird nur von dem IOS verwendet (es wird vom LBS ignoriert). Es sagt dem IOS, daß der Zugriff Teil einer Blockübertragung ist.
Die Länge sagt, wieviele Bytes bei der Übertragung zu bewegen sind. Das Befehlsbit sagt dem Sequenzer, was er tun soll. Die Antworttask sagt, an welche Task zu antworten ist. Der Antwortregistersatz sagt, welcher Registersatz in der Antworttask zu beantworten ist. Die physikalische Adresse ist der Ort auf jeder Seite des CP, wo die Übertragung beginnt. Der Daten-Zeiger ist die Registerdatei-physikalische Adresse des ersten Datenbyte.
Die oben beschriebene Information wird aus Parametern und Feldern des Zugriffsbefehls erzeugt. Der Befehl enthält einen Zeiger auf ein 32-Bit-Parameterregister, das die von den Sequenzern benötigte Information enthält.
Die ersten sechs Informationsteile, die oben beschrieben wurden, kommen direkt entweder aus dem Befehls- oder dem Parameterregister. Der Daten-Zeiger wird dadurch erzeugt, daß man das Logikbyte im Parameterregister nimmt und durch den Registersatz- Zuordner leitet, um eine Registerdatei-physikalische Adresse zu erzeugen.
Die 32-Bit-physikalische Adresse, die von den Sequenzern benötigt wird, kann auf drei verschiedene Weisen erzeugt werden. Fig. 5 zeigt die physikalische Adresse, die durch Addition einer 32-Bit-Verschiebung zu einer 32-Bit-Basisadresse erzeugt wird. Der Zeiger bzw. Hinweis auf das Verschiebungsregister befindet sich im Befehl, und der Zeiger bzw. Hinweis auf die Basisadresse ist im Parameterregister.
Die physikalische Adresse kann auch dadurch erzeugt werden, daß man abwechselnd den Zeiger auf das 32-Bit-Verschieberegister als einen Literalwert verwendet. Dieser 8-Bit-Literalwert wird zur 32-Bit-Basisadresse addiert, wodurch positive Literalverschiebungen bis zu 255 ermöglicht werden.
Der dritte Weg ist die direkte physikalische Adressierung. Der Basiszeiger im Parameterregister wird ignoriert, und der 32-Bit-Wert im Verschiebungsregister oder der 8-Bit-Literal wird als physikalische Adresse verwendet.
Die Art der Erzeugung der physikalischen Adresse wird durch Bits in dem Zugriffsbefehl bestimmt. Wenn ein Sequenzer eine Zugriffsanforderung nicht akzeptieren kann, so wird der Zugriffsbefehl blockiert und in einem Neuversuch aktiviert, wenn der Sequenzer eine Anforderung akzeptieren kann.
Der Zugriffsbefehl blockiert stets den Logikregistersatz, den die Task zum Sequenzer gerade überträgt. Dies hält die Task und den Sequenzen davon ab, gleichzeitig den Registersatz zu bearbeiten.
Bus-Sequenzer zur EU-Synchronisation
Es gibt zwei Methoden zur Synchronisation von Übertragungen zwischen Bus-Sequenzern und der EU: Registersatzverriegelung und Mikroport-Nachrichten. Die Auswahl der gewünschten Methode geschieht durch den EU-Code, der den Zugriffsbefehl für eine spezielle Bus-Operation ausgibt. Die Versorgungsvariante kann die Methode nicht ändern, so daß ein spezieller Datenstrom entweder eine Registersatz-Verriegelung oder Mikroport-Nachrichten benutzt, aber nicht beide.
Synchronisation auf Nachrichtenbasis
Wenn diese Operation gewählt worden ist, sendet der Sequenzer eine Mikroport-Nachricht an die Zieltask. Die Zieltask wird von der Task angegeben, welche den Zugriffsbefehl ausführt. Die Nachricht wird in dem Sequenzerformat gegeben, das in Fig. 6 gezeigt ist.
Die Nachricht ist 16 Bits lang, und das am höchsten bewertete Bit ist stets 0. Die sechs Bodenbits des niedrigeren Bytes der Nachricht enthalten die physikalische Adresse desjenigen Registersatzes, der an der Übertragung beteiligt wurde. Das Bit über der physikalischen Registersatzadresse (Bit 6 im Byte) enthält das abnormale Beendigungsbit. Dieses Bit wird vom Sequenzer gesetzt, wenn die Sequenzeroperation abnormal beendet wurde. Im unteren Byte ist das höchste Bit (Bit 7) stets 1. Die nächsten vier Bits (8-11) identifizieren, von welchem Sequenzersignal die Nachricht kam. Die nächsten drei Bits (12-14) enthalten den Wert, den der Sequenzer durchlaufen wurde als Antwortregistersatz. Da der Programmierer den Wert dieses Feldes angibt, wenn er den Zugriffsbefehl ausführt, können andere Informationen als der Antwortregistersatz gegebenenfalls durchgelassen werden.
Die Nachricht ist mit dem Bewegungszeigerbefehl kompatibel gemacht. Durch Einsetzen eines Bewegungszeigerbefehls unmittelbar nach dem Empfang kann der gerade an der Übertragung teilnehmende Registersatz in den logischen Raum der Zieltask abgebildet werden.
Synchronisation auf Registersatzbasis
Wenn diese Synchronisationsart gewünscht ist, schreibt der Sequenzer die physikalische Adresse des betreffenden Registersatzes in den "Antwortregistersatz"-Zeiger der "Antworttask".
Sowohl der "Antwortregistersatz" als auch die "Antworttask" wurden dem Sequenzer bei Start der Anforderung angegeben. Wenn er den Registersatz-Zeiger schreibt, setzt er auch das abnormale Beendigungsbit in diesem Zeiger, wenn der Zugriff an einer ungewöhnlichen Stelle, d. h. abnormal beendet wird. In allen Fällen ist das gültige Bit des Registersatz-Zeigers gesetzt (d. h. der Registersatz ist entriegelt).
Lokaler Bus-Sequenzer
Alle Nachrichten und Übertragungen zu und von der Systemseite des CP gehen über den lokalen Bus-Sequenzer (LBS). Dies wird sowohl von der EU als auch vom Cache-Speicher ausgenutzt.
Einreihen von LBS-Anforderungen in eine Warteschlange
Es gibt einige Mechanismen, welche die Verwendung des LBS (lokaler Bus-Sequenzer) durch die EU und den Cache-Speicher steuern.
Zugriffsanforderungen an den Systemspeicher werden vom lokalen Bus-Sequenzer (LBS) bearbeitet. Diese Anforderungen werden in eine von zwei Warteschlangen eingereiht, nämlich die Warteschlange mit niedriger Priorität und diejenige mit hoher Priorität. Die Warteschlange wird vom Programmierer dadurch bezeichnet, daß er bei Ausführung des Zugriffsbefehls eine Kanalnummer bezeichnet. Die niedrige Warteschlange ist Kanal 14 und die hohe Warteschlange ist Kanal 15. Jede dieser Warteschlangen ist zwei tief und, wie ihre Namen sagen, werden Anforderungen in der Warteschlange mit hoher Priorität gegenüber denjenigen in der Warteschlange mit niedriger Priorität bevorzugt bedient.
Neben Zugriffsanforderungen bearbeitet der LBS auch Cache- Füll-Anforderungen und bildet so eine Cache-Anforderungswarteschlange separat von den beiden anderen Warteschlangen. Die Cache-Warteschlange ist drei tief. Die Reihenfolge der Bedienung zwischen der Cache-Warteschlange und den Zugriffswarteschlangen ist so, daß die beiden Warteschlangentypen abwechselnd bedient werden, d. h. eine Anforderung von Zugriffswarteschlangen wird bedient, danach eine Anforderung von der Cache- Warteschlange und dann wiederum die Zugriffswarteschlangen usw.
Von dem Cache kommende Anforderungen werden entweder von einem Cache-Fehlgriff oder von einem Zeilen-Vorausholbefehl erzeugt. Wenn eine Anforderung vom Cache kommt, so wird die Anforderung in die Cache-Anforderungswarteschlange eingegliedert. Diese Warteschlange ist drei tief, und jede Eingabe kann eine Anforderung zum Füllen einer Cache-Zeile halten. Wenn die Anforderung auf einen Cache-Fehlgriff zurückgeht, wird die Task, welche den Fehlgriff hervorgerufen hat, blockiert, und ihr Cache-Blockier-Bit wird gesetzt. Wenn die Cache-Anforderung abgeschlossen ist, wird die Task entblockiert.
Wenn die Cache-Anforderungswarteschlange voll ist und eine Task einen Cache-Fehlgriff erfährt, wird die Task blockiert und das Cache-Warteschlange-blockiert-Bit gesetzt. Wenn eine Cache-Anforderung erfüllt ist, steht die Warteschlange zur Verfügung, und alle Tasks, die bei ihrem Warten auf eine Lücke blockiert wurden, werden entblockiert. Die Task bewirkt danach wiederum einen Cache-Fehlgriff, um eine Cache-Anforderung in die Warteschlange eingegliedert zu bekommen. Keine Vorausholungen werden ausgeführt, wenn die Cache-Anforderungswarteschlange voll ist.
Datenabgleichbeschränkungen
Es gibt einige Beschränkungen bei der Herstellung von Rechen- Subsystem-Speicherzugriffen. Speicheranforderungen, welche 16-Byte-Grenzen im Rechen-Subsystem-Speicherraum kreuzen, sind nicht erlaubt. Auch müssen alle der Anforderung zugeordneten Daten aus einem Registersatz kommen oder in diesen eingesetzt werden.
Alle durch den LBS gelesenen oder geschriebenen Bytes müssen die gleiche Ausrichtung (alignement) im Speicher wie in der Registerdatei haben. Dies bedeutet, daß die niegrigeren beiden Bits der physikalischen Adresse im Speicher und die niedrigeren beiden Bits der Registeradresse gleich sein müssen.
Der LBS und der Zugriffsbefehl
Ein Zugriffsbefehl, dessen Sequenzercode 14 oder 15 ist, wird an den LBS gerichtet. 14 ist der Code für den Kanal mit niedriger Priorität und 15 derjenige für den Kanal mit hoher Priorität.
Zwischenstationskommunikations(IAC)-Empfang
Der IOS hat eine spezielle IAC-Anforderungszeile, die aufgebaut werden kann, um den CP den Empfang IAC's zu ermöglichen. Die Zeile enthält Informationen darüber, welche Task zu benachrichtigen ist (stets Task 7), wenn ein IAC ankommt, und wie der Antworttask Antwort zu geben ist (stets Synchronisation auf Nachrichtenbasis).
Die IAC-Anforderungszeile ist von den anderen IOS-Zeilen bzw. -Leitungen getrennt und ist fest verdrahtet, um dem Mikroport der Task 7 zu antworten, wenn der IAC-Stift angesteuert wird. Der IAC-Kanal ist ständig aktiviert und gültig. Wenn ein IAC empfangen wird, so wird die Task 7 über ihren Mikroport benachrichtigt.

Claims (7)

1. Ausführungseinheit zur Verwendung in einem I/O-Prozessor, der eine Registerdatei (16), einen I/O-Bus-Sequenzer (12), einen lokalen Bus-Sequenzer (14) und Mittel zum Decodieren von Befehlen aufweist, wobei einer der Befehle ein Zugriffsbefehl mit einer Anzahl von Feldern ist, von denen eines einen Zeiger bzw. Hinweis auf ein eine Anzahl von Feldern enthaltendes Parameterregister (42) ist,
dadurch gekennzeichnet, daß die Ausführungseinheit (10) aufweist:
Mittel zum Speichern der Parameterregisterfelder einschließlich Plätzen zum Speichern
  • eines Sequenzercodes, der einen der Sequenzer (12, 14) identifiziert,
    logischer Byte-Mittel, die einen Platz in einem zu addressierenden Speicher bezeichnen,
    eines Antwortregistersatzzeigers auf einen Registersatz in der Registerdatei (16), der zum Empfang einer Antwort auf den Zugriffsbefehl (40) bezeichnet ist, und
    von die Lage und die Länge eines als Datenquelle vorgesehenen Datenblocks in der Registerdatei spezifizierenden Längenmitteln;
und
Befehlsregistermittel einschließlich einer Anordnung zur Speicherung des auf das Parameterregister hinweisenden Zeigers.
2. Ausführungseinheit nach Anspruch 1, dadurch gekennzeichnet, daß die logischen Byte-Mittel ein gültiges Bit enthalten, daß der I/O-Prozessor außerdem einen mit der Registerdatei (16) und der Ausführungseinheit (10) verbundenen Registersatzzuordner (Fig. 5) enthält und daß die Ausführungseinheit (10) mit dem Parameterregister (42) zur Erzeugung eines Datenzeigers verbundene Mittel, einschließlich Mitteln, die das logische Byte im Parameterregister nehmen und durch den Registersatzzuordner zur Erzeugung einer physikalischen Registerdateiadresse leiten und Mittel zum Abschalten des gültigen Bits des logischen Bytes bei dessen Übersetzung durch den Registersatzzuordner aufweist, so daß der Bus-Sequenzer (12 bzw. 14) die Kontrolle über den entsprechenden Registersatz übernehmen kann.
3. Ausführungseinheit nach Anspruch 2, gekennzeichnet durch Mittel zum Schreiben der physikalischen Registeradresse der Antwortdaten in den Logikregistersatzzeiger, der vom Antwortregistersatzzeiger im Parameterregister bezeichnet ist, wobei der Antwortregistersatzzeiger einer Antworttask entspricht, und Mittel zum Einstellen eines gültigen Bits des Logikzeigers derart, so daß der spezifizierten Antworttakts voller Zugriff zum Antwortregistersatz gegeben wird.
4. Ausführungseinheit nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet,
daß das logische Byte ein gültiges Bit und ein Blockbit enthält und
daß die Ausführungseinheit (10) außerdem aufweist: Mittel zum Setzen des Blockbits auf die Bedingung, daß der Zugriffsbefehl auf einen Registersatz, dessen gültiges Bit nicht gesetzt ist, Zugriff zu nehmen sucht, und Mittel zum Rücksetzen des Blockbits bei der Bedingung, daß die den Zugriffsbefehl ausführende Task auf einen Registersatz, dessen Block- und Gültig-Bits gesetzt sind, Zugriff zu nehmen sucht.
5. Ausführungseinheit nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet,
daß der I/O-Bus-Sequenzer (12) eine fest verdrahtete Zwischenstationskommunikations(IAC)- Anforderungszeile (request line) enthält,
daß der Sequenzercode zum Identifizieren desjenigen Sequenzers (12, 14), an den der Zugriff gebunden ist, der Sequenzercode der IAC ist, wobei der Sequenzercode auf eine vorgegebene Zahl (Codezugriff) eingestellt ist,
daß die IAC-Zeile Informationen darüber enthält, welche Task bei Ankunft einer IAC zu benachrichtigen ist und wie eine Antworttask zu beantworten ist, wobei die Informationen ein "erledigt"-Bit enthält,
daß Mittel zum Lesen und und Schreiben des "erledigt"-Bit der IAC-Zeile und Mittel zum Angeben der Antworttask vorgesehen sind, wobei die Mittel zum Angeben der Antworttask Mittel zum Markieren der Zeile als "erledigt" enthalten, bis die Angabe vervollständigt ist.
6. Ausführungseinheit für einen I/O-Prozessor, dadurch gekennzeichnet,
daß sie (10) mit einem eine I/O-Servicetabelle (27) enthaltenden I/O-Sequenzer (12) und einem lokalen Bus-Sequenzer (14) verbunden ist und die Sequenzer steuert und
daß ein Zugriffsbefehl (40) zur Lieferung der notwendigen Informationen entweder an den I/O-Sequenzer (damit der I/O-Sequenzer eine Datenübertragung über einen mit dem I/O-Sequenzer verbundenen I/O-Bus vornehmen kann) oder mit dem lokalen Bus-Sequenzer (damit der lokale Bus-Sequenzer eine Datenübertragung über einen mit dem lokalen Bus-Sequenzer verbundenen lokalen Bus vornehmen kann) vorgesehen ist, wobei die genannten Informationen enthalten:
einen Sequenzercode, der angibt, für welchen Sequenzer der Zugriff vorbehalten ist,
Codes zum Spezifizieren einer Zeile in der I/O-Servicetabelle (27) oder einem Speicherkanal auf dem lokalen Bus,
ein Antwortmethodenbit, das einem Sequenzer angibt, wie die Beendigung einer Anforderung zu signalisieren ist,
ein Versorgungsbit, das dem I/O-Sequenzer (12) angibt, daß der Zugriff Teil einer Blockübertragung ist,
ein Längenfeld zur Bezeichnung der Anzahl von bei der Übertragung zu bewegenden Bytes,
ein Befehlsfeld, welches einen Sequenzer von der durchzuführenden Operation informiert,
ein Antworttaskfeld zur Spezifizierung einer zu beantwortenden Task,
ein Antwortregistersatzfeld, welches den zu beantwortenden Registersatz in der Antworttask bezeichnet,
eine physikalische Adresse zum Bezeichnen eines Ortes, wo die Übertragung beginnen wird, und
einen auf die physikalische Registerdateiadresse des ersten Datenbytes hinweisenden Datenzeiger,
wobei der Zugriffsbefehl (40) einen Zeiger bzw. Hinweis auf ein Parameterregister enthält, das einige der für die Sequenzer (12, 14) notwendigen Informationen hält.
DE19873741850 1986-12-17 1987-12-10 Ausfuehrungseinheit fuer einen i/o-prozessor Withdrawn DE3741850A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/942,608 US4853849A (en) 1986-12-17 1986-12-17 Multi-tasking register set mapping system which changes a register set pointer block bit during access instruction

Publications (1)

Publication Number Publication Date
DE3741850A1 true DE3741850A1 (de) 1988-06-30

Family

ID=25478349

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19873741850 Withdrawn DE3741850A1 (de) 1986-12-17 1987-12-10 Ausfuehrungseinheit fuer einen i/o-prozessor

Country Status (3)

Country Link
US (1) US4853849A (de)
JP (1) JP2741594B2 (de)
DE (1) DE3741850A1 (de)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293594A (en) * 1986-05-24 1994-03-08 Hitachi, Ltd. Data processing system having a plurality of register groups and a logical or circuit for addressing one register of one of the register groups
US5307494A (en) * 1987-08-05 1994-04-26 Fuji Xerox Co., Ltd. File name length augmentation method
JP2553698B2 (ja) * 1989-03-28 1996-11-13 松下電器産業株式会社 時分割マルチタスク実行装置
JPH0353328A (ja) * 1989-07-20 1991-03-07 Hitachi Ltd レジスタ退避回復方法ならびに処理装置
US5390304A (en) * 1990-09-28 1995-02-14 Texas Instruments, Incorporated Method and apparatus for processing block instructions in a data processor
JP2665081B2 (ja) * 1991-07-08 1997-10-22 三菱電機株式会社 マイクロコンピュータのレジスタ間データ転送方式
CA2078913A1 (en) * 1991-12-12 1993-06-13 John J. Reilly Interprocessor communication system and method for multiprocessor circuitry
US5379392A (en) * 1991-12-17 1995-01-03 Unisys Corporation Method of and apparatus for rapidly loading addressing registers
US5414821A (en) * 1991-12-17 1995-05-09 Unisys Corporation Method of and apparatus for rapidly loading addressing environment by checking and loading multiple registers using a specialized instruction
US5325496A (en) * 1991-12-24 1994-06-28 Intel Corporation Selectable pointer validation in a computer system
US5522051A (en) * 1992-07-29 1996-05-28 Intel Corporation Method and apparatus for stack manipulation in a pipelined processor
US6073231A (en) * 1993-10-18 2000-06-06 Via-Cyrix, Inc. Pipelined processor with microcontrol of register translation hardware
US5666556A (en) * 1993-12-30 1997-09-09 Intel Corporation Method and apparatus for redirecting register access requests wherein the register set is separate from a central processing unit
WO1995032466A1 (en) * 1994-05-19 1995-11-30 Vlsi Technology, Inc. Flexible register mapping scheme
US5734817A (en) * 1995-03-01 1998-03-31 Unisys Corporation Method for making a data base available to a user program during data base recovery
US6356918B1 (en) 1995-07-26 2002-03-12 International Business Machines Corporation Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution
US5761740A (en) * 1995-11-30 1998-06-02 Unisys Corporation Method of and apparatus for rapidly loading addressing registers
JPH1011352A (ja) * 1996-06-19 1998-01-16 Hitachi Ltd データ処理装置およびそのレジスタアドレス変換方法
US5893928A (en) * 1997-01-21 1999-04-13 Ford Motor Company Data movement apparatus and method
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6105051A (en) * 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6134650A (en) * 1997-12-12 2000-10-17 Advanced Micro Devices, Inc. Apparatus and method for predicting a first scanned instruction as microcode instruction prior to scanning predecode data
US6061775A (en) * 1997-12-12 2000-05-09 Advanced Micro Devices, Inc. Apparatus and method for predicting a first microcode instruction of a cache line and using predecode instruction data to identify instruction boundaries and types
US5890006A (en) * 1997-12-12 1999-03-30 Advanced Micro Devices, Inc. Apparatus for extracting instruction specific bytes from an instruction
US6134653A (en) * 1998-04-22 2000-10-17 Transwitch Corp. RISC processor architecture with high performance context switching in which one context can be loaded by a co-processor while another context is being accessed by an arithmetic logic unit
JP3763518B2 (ja) * 2001-05-29 2006-04-05 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ、そのコンパイル方法およびプログラム
US9626294B2 (en) * 2012-10-03 2017-04-18 International Business Machines Corporation Performance-driven cache line memory access

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3651482A (en) * 1968-04-03 1972-03-21 Honeywell Inc Interlocking data subprocessors
US3760365A (en) * 1971-12-30 1973-09-18 Ibm Multiprocessing computing system with task assignment at the instruction level
FR2253428A5 (de) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US4099229A (en) * 1977-02-14 1978-07-04 The United States Of America As Represented By The Secretary Of The Navy Variable architecture digital computer
JPS5443644A (en) * 1977-09-13 1979-04-06 Fujitsu Ltd Processing system for deadlock automatic release at exclusive control time
JPS5498134A (en) * 1978-01-20 1979-08-02 Toshiba Corp Input/output control system
US4320453A (en) * 1978-11-02 1982-03-16 Digital House, Ltd. Dual sequencer microprocessor
US4493020A (en) * 1980-05-06 1985-01-08 Burroughs Corporation Microprogrammed digital data processor employing microinstruction tasking and dynamic register allocation
JPS57768A (en) * 1980-06-04 1982-01-05 Hitachi Ltd Message transmission and reception system between processor
JPS57106938A (en) * 1980-12-24 1982-07-03 Fujitsu Ltd Continuous processing system for undefined-length data
JPS5894038A (ja) * 1981-11-30 1983-06-04 Nec Corp 電子計算機
US4460061A (en) * 1982-08-30 1984-07-17 Pennwalt Corporation Apparatus for increasing directivity of a sound source
US4511964A (en) * 1982-11-12 1985-04-16 Hewlett-Packard Company Dynamic physical memory mapping and management of independent programming environments
US4661900A (en) * 1983-04-25 1987-04-28 Cray Research, Inc. Flexible chaining in vector processor with selective use of vector registers as operand and result registers
GB8329509D0 (en) * 1983-11-04 1983-12-07 Inmos Ltd Computer
JPS6151243A (ja) * 1984-08-20 1986-03-13 Toshiba Corp レジスタ式演算処理装置
JPS6194166A (ja) * 1984-10-16 1986-05-13 Fujitsu Ltd ダイレクトメモリアクセスにおけるアドレス変換回路
US4727510A (en) * 1985-05-24 1988-02-23 Unisys Corporation System for addressing a multibank memory system
US4777588A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. General-purpose register file optimized for intraprocedural register allocation, procedure calls, and multitasking performance
US4794515A (en) * 1986-01-17 1988-12-27 International Business Machines Corporation Protection of data in a multiprogramming data processing system
US4791566A (en) * 1987-03-27 1988-12-13 Digital Equipment Corporation Terminal device session management protocol

Also Published As

Publication number Publication date
JPS63238631A (ja) 1988-10-04
US4853849A (en) 1989-08-01
JP2741594B2 (ja) 1998-04-22

Similar Documents

Publication Publication Date Title
DE3741850A1 (de) Ausfuehrungseinheit fuer einen i/o-prozessor
DE3114961C2 (de)
DE3789104T2 (de) Netzwerkübertragungsadapter.
DE3685876T2 (de) Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher.
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
DE2854485C2 (de) Datenverarbeitungsanlage
DE4208924B4 (de) Verfahren zur Kommunikation zwischen Prozessoren und Parallelverarbeitungscomputer hierfür
DE3785897T2 (de) Steuervorrichtung zum vorabruf von befehlen.
DE60006270T2 (de) Parallele prozessorarchitektur
DE69233412T2 (de) Vorrichtung und Rechnerprogrammprodukt zur Ausführung von Verzweigungsbefehlen
DE2903349C2 (de) Prozessor und Verfahren zur Datenverarbeitung
DE3486399T2 (de) Zentrale Verarbeitungseinheit mit der Fähigkeit, Befehle mit variablen Längen zu unterstützen.
EP0006164B1 (de) Multiprozessorsystem mit gemeinsam benutzbaren Speichern
DE3852928T2 (de) Datenprozessor mit A/D-Umsetzer, um mehrere analoge Eingabekanäle in Digitaldaten umzusetzen.
DE2459956A1 (de) Prozessor und diesen verwendendes peripheres verarbeitungssystem
DE69325566T2 (de) Verfahren und System zur Befehlszuteilung in einem superskalaren Prozessorsystem mit unabhängig zugänglichem Zwischenspeicher
DE2517276A1 (de) Datenverarbeitungssystem
CH619309A5 (de)
DE3716229A1 (de) Mikroprozessorchip mit einem stapelrahmen-cache
DE2612083A1 (de) Verfahren und vorrichtung zur ein/ausgang-datenverarbeitung
DE2243956A1 (de) Speicherprogrammierte datenverarbeitungsanlage
DE2411963B2 (de) Datenverarbeitungsanlage
DE2750721A1 (de) Ein/ausgabe-system
EP0010185B1 (de) Virtuell-Adressiervorrichtung für einen Computer
DE2130299B2 (de) Eingabe-/Ausgabekanal für eine Datenverarb eitungsanlage

Legal Events

Date Code Title Description
8141 Disposal/no request for examination