DE3741850A1 - Ausfuehrungseinheit fuer einen i/o-prozessor - Google Patents
Ausfuehrungseinheit fuer einen i/o-prozessorInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program 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/126—Program 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Ablaufsteuerbefehle
Speicher- und I/O-Zugriffs-Befehle
Task-Steuerbefehle
Zwischen-Task-Kommunikationsbefehle
andere Befehle.
Diese Befehlsgruppen werden nachfolgend beschrieben.
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.
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.
Dieser Befehl führt logische Operationen an
seinen Operanden durch. Diese Operationen enthalten UND, ODER,
Exklusiv-ODER usw..
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.
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.
Dieser Befehl lädt einen 16- oder 32-Bit-
Zieloperanden mit einem 16-Bit-Wert.
Ablaufsteuerbefehle sind diejenigen, welche den Befehlsfluß
zum verzweigen bringen.
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.
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.
Dieser Befehl bewirkt eine Verzweigung der im
oberen Ende des Rufstapels der Task enthaltenen Adresse. Der
Rückkehrbefehl holt den Rufstapel.
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.
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.
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.
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.
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 bilden Mittel zum Prüfen und Kontrollieren
des Status einer Task.
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.
Die Sende- und Empfangsbefehle ermöglichen es den Tasks, untereinander
zu kommunizieren. Die Kommunikation wird durch
Übertragung von Nachrichten an Task-Mikroports erreicht.
Nachfolgend wird eine kurze Beschreibung der anderen Befehle
gegeben.
Der NOP-Befehl führt weder eine Operation noch Zustandsänderungen
aus. Er arbeitet stets in einem Zyklus.
Dieser Befehl drückt dem Stapel einen Wert auf. Der
Wert kann entweder ein Literal oder ein 16-Bit-Wert aus der
Registerdatei sein.
Dieser Befehl holt die Kopfeingabe vom Stapel.
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.
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.
Dieser Befehl bewegt Daten zwischen einem
Task-Registersatz-Zeiger und der Registerdatei. Er wird in
erster Linie bei der nachrichtenbasierenden Synchronisation
verwendet.
Dieser Befehl schafft den Programmiererzugriff
zum Verbindungs- und Lokalregisterraum. Er ermöglicht
die Bewegung von Daten zwischen lokalen Registern und der
Registerdatei.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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)
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)
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 |
-
1986
- 1986-12-17 US US06/942,608 patent/US4853849A/en not_active Expired - Lifetime
-
1987
- 1987-12-10 DE DE19873741850 patent/DE3741850A1/de not_active Withdrawn
- 1987-12-17 JP JP62317620A patent/JP2741594B2/ja not_active Expired - Lifetime
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 |