DE2854400A1 - Anordnung zum wechsel zwischen verzahnt zu verarbeitenden programmen - Google Patents
Anordnung zum wechsel zwischen verzahnt zu verarbeitenden programmenInfo
- Publication number
- DE2854400A1 DE2854400A1 DE19782854400 DE2854400A DE2854400A1 DE 2854400 A1 DE2854400 A1 DE 2854400A1 DE 19782854400 DE19782854400 DE 19782854400 DE 2854400 A DE2854400 A DE 2854400A DE 2854400 A1 DE2854400 A1 DE 2854400A1
- Authority
- DE
- Germany
- Prior art keywords
- register
- command
- address
- bits
- data
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Information Transfer Between Computers (AREA)
Description
BC9-77-002
Anmelderin: International Business Machines
Corporation, Armonk, N. Y. 10504
jo-bz
ANORDNUNG ZUM WECHSEL· ZWISCHEN VERZAHNT ZU VERARBEITENDEN PROGRAMMEN
Die vorliegende Erfindung betrifft eine Anordnung zum Wechsel zwischen
verzahnt zu verarbeitenden, voneinander unabhängigen Programmen oder Programmsegmenten in einer Datenverarbeitungsanlage nach dem Oberbegriff
des Anspruchs 1.
In manchen Funktionseinheiten einer Datenverarbeitungsanlage müssen
verschiedene Routinen quasi gleichzeitig ausgeführt werden, so z.B. in einer Eingabe/Ausgabe-Steuereinheit, die mehrere Eingabe/Ausgabe-Geräte
bedient. Praktisch wird dabei so verfahren, dass man zwischen den Routinen oder Programmsegmenten, die voneinander unabhängig sein und asynchron
ablaufen können, hin- und herwechselt. Die "Umschaltung" von einer Routine auf eine andere kann auf verschiedene Arten bewerkstelligt
werden.
So ist z.B. das Verfahren der Programmunterbrechung allgemein bekannt,
bei dem aufgrund einer besonderen Anforderung zunächst die Ausführung eines ersten Programms unterbrochen wird, dessen Parameter in
einem besonderen Registersatz oder im Arbeitsspeicher abgespeichert werden, wonach die Parameter eines zweiten Programms in die entsprechenden
Register geladen und dann mit d.er Ausführung begonnen wird. Dies ist jedoch aufwendig und zeitraubend, weil eine besondere Unterbrechungsprozedur durchgeführt werden muss und Speicherzugriffe nötig sind. Für
einfachere Anlagen oder Steuereinheiten ist deshalb eine weniger aufwendige Umschaltmethode zum Programmwechsel nötig.
Es ist auch allgemein bekannt, in einem Hauptprogramm Unterprogramme
durch einen besonderen Befehl aufzurufen, bei dessen Ausführung auch die Adresse der nächstfolgenden Instruktion des Hauptprogramms
909827/0737
(Rückkehradresse) in einem besonderen Verbindungsregister gespeichert
wird, um so nach Beendigung des Unterprogramms leicht zur richtigen Stelle des Hauptprogramms zurückkehren zu können. Dieser Vorgang ist
jedoch einseitig, und der Uebergang zum Unterprogramm ist umständlicher und erfordert mindestens Zugriffe auf andere Register oder zum Speicher.
Es ist auch bekannt, z.B. aus dem USA-Patent 3'972'029, ein einzelnes
Verbindungsregister zu benutzen, aus dem,beim Wechsel zwischen
Programmsegmenten jeweils die Eintrittsadresse des als nächsten auszuführenden
Programmsegmentes entnommen, und in das dann die Wiedereintrittsadresse des zuletzt ausgeführten Programmsegments abgespeichert
wird. Hierbei werden aber jeweils zwei Befehle ausgeführt, und die im Hilfsregister zu speichernde Wiedereintrittsadresse muss in dem einen
Befehl enthalten sein und diesem entnommen werden. Ausserdem ist keine Rettung bestimmter Zustandsdaten möglich, die nötig wären, um beim
Wiedereintritt in ein Programmsegment die gleichen Bedingungen wie beim
letzten Verlassen des Programmsegmentes wiederherzustellen.
Der Erfindung liegt die Aufgabe zugrunde, hier eine Verbesserung zu
schaffen und eine Anordnung anzugeben, mit deren Hilfe der Wechsel zwischen unabhängigen Programmen oder Programmsegmenten erleichtert
wird.
Gelöst wird diese Aufgabe der Erfindung für eine Anordnung durch die
im Anspruch 1, für ein Verfahren durch die im Anspruch 8 genannten
Merkmale.
Auf diese Weise wird der Vorteil erreicht, daß auf einfache und zuverlässige
Weise zwischen zwei Mikroprogrammroutinen in einer elektronischen Datenverarbeitungsanlage umgeschaltet werden kann.
Ein Ausführungsbeispiel der Erfindung wird im folgenden anhand einer
Zeichnung beschrieben. In der Zeichnung ist eine Steuereinheit mit
Rechenwerk und Mikroprogramm-Steuerung für Eingabe/Ausgabe-Vorgänge als Blockschaltbild dargestellt.
909827/0737
BC9-77-002
Die Zeichnung zeigt den Datenfluss einer als Ausführungsbeispiel gewählten Steuereinheit mit Programmspeicher. In die Steuereinheit
hineinkommende Eingabedaten gelangen in die Positionen PRO und PRl eines
Programmregisterstapels 1. Die vier werthohen Bits der Daten gelangen in
die Position PRO und die vier wertniederen Bits in die Position PRl. Die Steuerung verlassende Ausgabedaten kommen von PRO und PRl des Programmregisterstapels.
Daten von einem jeden der beiden Register und/oder von einem Datenadressregisterstapel (DAR) 2 können über ein Rechenwerk (ALU)
3 gesendet und das Ergebnis in einen der beiden Stapel eingegeben werden. Das Rechenwerk kann die Funktionen Addieren, Subtrahieren, UND, ODER und
EXKLUSIV-ODER (ANTIVALENZ) ausführen. Ausserdem können die Funktionen
Uebertragen, Vergleichen, Prüfen und Verschieben in sechs verschiedenen Betriebsarten (d.h. mit verschiedenen Paaren von Quelle und Ziel) ausgeführt
werden.
Daten von einem Festwertspeicher können in die Registerstapel eingegeben
werden. Bei Verwendung eines Lese-Schreib-Speichers können Daten aus den Stapeln auch in den Speicher geschrieben werden. Befehle
werden gemäss Adressierung durch ein Befehlsadressregister (IAR) 4 in
ein Operationsregister 5 eingegeben. Eine Verzweigungs-Zieladresse kann von den direkten Daten im Befehl, von einem Datenadressregister DAR oder
von einem Verbindungsregister 6 kommen.
Zustandsmerker (bistabile Kippglieder) 7 werden durch die das Rechenwerk (ALU) benutzenden Befehle gesetzt. Diese Merker können mit
Prüf- und Verzweigungsbefehlen dazu benutzt werden, den Befehlsfluss zu ändern.
In der Zeichnung sind die Haupteinheiten im Datenfluss der als Ausführungsbeispiel
gewählten Steuereinheit dargestellt.
Der Datenadressregisterstapel (DAR) 2 besteht aus 16 jeweils vier Bit grossen Vielzweckregistern, von denen jedes mit der binären Darstellung
der Dezimalzahlen.0 bis 15 geladen werden kann. Die Datenadressregister
0, 1 und 2 werden.ausserdem zum Adressieren des Speichers
909827/0737
BC9-77-002
benutzt und enthalten bei Speicheroperationen eine 12 Bit grosse Speicheradresse.
Die Datenadress-Hilfsregister (Hilfs-DAR) 8 sind drei je
vier Bit grosse Register, in die ebenfalls die binäre Darstellung der Dezimalzahlen 0 bis 15 geladen werden kann. Der Datenadressregisterstapel
2 oder die Datenadress-Hilfsregister 8 werden zur Speicheradressierung bei Speicheroperationen nach Programmbefehlen "DAR aktiv wählen"
oder "DAR-HiIfsregister aktiv wählen" benutzt.
Der Programmregisterstapel 1 besteht aus 16 je vier Bit grossen Vielzweckregistern, in die die Dezimalzahlen 0 bis 15 in binärer Darstellung
geladen werden können. Daten von den E/A-Geräten werden in die beiden ersten Programmregister (die Register 0 und 1) geladen, von wo
auch Daten für die E/A-Geräte entnommen werden.
Das 16 Bit grosse Operationsregister 5 empfängt alle Befehle vom
Speicher. Die Bits 0 bis 7 eines Befehlswortes enthalten den Operationscode und die Bits 8 bis 11 und 12 bis 15 die Adressen und/oder Maskierungsdaten
.
Das 12 Bit grosse Befehlsadressregister (IAR) 4 enthält die Adresse
des nächsten auszuführenden Befehles. Während der ersten Programmladung (IPL) enthält das Befehlsadressregister die Byteadresse der Daten vom
E/A-Gerät, die in aufeinanderfolgende Speicheradressen, beginnend bei der Adresse 0 geladen werden. Das wertniedere Bit (Bit 11) wählt entweder
das hohe oder niedrige Byte eines Wortes. Zur Vergrösserung der Speicherkapazität ist ein Paar bistabile Kippglieder 9 vorgesehen. Die
12 Bit grossen Adressregister, das Befehlsadressregister (IAR) 4 und das Speicheradressregister (SAR) 10 können 4 096 Bytes oder 2 048 Wörter
adressieren. Die Kippglieder 9 umfassen ein Datenkippglied (D) 27 und ein Befehlskippglied (I) 28 für die Adressierung, wenn sie für Daten
über 2K Wörter (2048) und für Befehle über 4K Wörter (4096) hinausgeht. Wenn eines dieser beiden Kippglieder gesetzt ist, adressiert das Datenadressregister
oder das Befehlsadressregister die oberen 2K Speicherwörter; wenn das Kippglied rückgestellt ist, adressieren das DAR oder
das IAR die unteren 2K Wörter. Diese Kippglieder v/erden gesetzt bzw. rückgestellt durch die Befehle "Datenspeicher hoch" (SDH), "Datenspeicher
niedrig" (SDL), "Befehlsspeicher hoch" (SIH) bzw. "Befehlsspeicher
niedrig "(SIL).
909827/0737
BC9-77-002
nd die
Es gibt drei Register, nämlich das Verbindungsregister 6 und
beiden Rückgriffregister 11 und .12, die die Möglichkeit bieten, die
Steuerung von einem Programm zum anderen oder von einem Programm zu einem Unterprogramm zu übertragen. Im vorliegenden Ausführungsbeispiel
hat das Verbindungsregister 15 Bitpositionen. Aus Gründen, die mit der Erfindung nicht zusammenhängen, sind die beiden werthohen Bits 0. Die
Bits.3 und 4 geben die Einstellung der beiden bistabilen Kippglieder
an. Die Bits 5 bis 15 sind elf Adressbits (Bits 0 bis 10). (Das wertniedere Adressbit 11 ist während, der Verbindungsoperationen immer 0, da
in diesem Ausführungsbeispiel nur mit Vollwort-Befehlsadressierung
gearbeitet, wird.) Die beiden Rückgriffregister 11 und 12 haben je 13
Bitpositionen, und zwar zwei Zustandsbits für "Daten hoher Teil" und
"Befehl hoher Teil", sowie elf Adressbits (Bits 0 bis 10). Bei einem
Befehl "Verzweigen, und Verbinden" (BAL) wird das Verbindungsregister
mit dem Inhalt des IAR 4 (Adresse hinter dem BAL-Befehl) und den Bits
für die beiden Kippglieder 9 geladen. Dadurch kann ein späterer Rückkehrbefehl (RTN) das Programm auf den nächstfolgenden Befehl im gespeicherten
Programm zurückführen und die beiden Kippglieder 9, das D-Kippglied 27 und das I-Kippglied 28, so einstellen, wie sie vor der
Ausführung des BAL-Befehles standen. Sollte ein zweiter BAL-Befehl ausgeführt
werden, bevor ein RTN-Befehl ausgeführt wird, wird der Inhalt
des Verbindungsregisters 6 in das erste Rückgriffregister 11 übertragen
und der neue IAR-Wert und die Zustandsbits für die Kippglieder 9 in das
Verbindungsregister gesetzt. Wenn ein dritter BAL-Befehl ausgeführt
wird, geht der Inhalt des ersten Rückgriffsregisters in das zweite Rückgriffregister 12. Der Verbindungsregisterinhalt wird in das Rückgriff
register 11 übertragen,·und der neue IAR-Wert und der Zustand der
Kippglieder 9 werden in das Verbindungsregister gesetzt (der Inhalt der
Rückgriffregister kann im vorliegenden Ausführungsbeispiel per Programmierung
weder adressiert noch Verändert-werden.)
Bei Ausführung eines RTN-Befehles laufen dieselben Schritte ab wie
bei einem BAL-Befehl, jedoch in umgekehrter Reihenfolge. Wenn mehrere RTN-Befehle vor einem weiteren .BAL-Befehl aufeinanderfolgen, verzweigt
das Programm.zu der Adresse im.Verbindungsregister 6, um die Programmausführung
fortzusetzen, und überträgt den Inhalt.des Rückgriffsregisters
11 in das Verbindungsregister 6 und den Inhalt des Rückgriffregisters
12 in das Rückgriffregister 11.
909827/0737
BC9-77-002
y
28SU00
Wenn ein Befehl "Rückkehren und Verbinden" (PAL) ausgeführt wird, wird durch diesen mit der vorliegenden Erfindung implementierten Befehl
der Inhalt des Verbindungsregisters 6 für die nächste Befehlsadresse benutzt (wie bei einem RTN-Befehl) und dadurch der. Inhalt des IAR 6 und
der beiden Kippglieder 9 im Verbindungsregister 6 gespeichert. Der Inhalt des IAR und der beiden Kippglieder 9 wird in das Verbindungsregister 6 ähnlich übertragen wie bei der Ausführung eines BAL-Befehles,
im vorliegenden Ausführungsbeispiel wird durch die Ausführung des RAL-Befehles
jedoch der Inhalt der Rückgriffregister 11 und 12 nicht beeinflusst.
Das Speicheradressregister (SAR) 10 ist ein 12 Bit grosses Register
(Bits 0 bis 11), das die Adresse des im Speicher adressierten Befehlsoder Datenwortes enthält. Wenn der.über 2K.Wörter (2048) hinaus erweiterte
Speicher benutzt wird, bestimmt der Zustand des D-Kippgliedes bei Datenabrufen oder des I-Kippgliedes bei Befehlsabrufen, ob die obere
oder untere Hälfte des Speichers adressiert wird.
Die Befehlsadresse wird vom IAR 4 in das SAR 10 übertragen, wenn der nächstfolgende Befehl auszuführen ist, oder vom Operationsregister
5, wenn eine Verzweigung auftritt. Bei einem RTN- oder RAL-Befehl, wird
der Inhalt des Verbindungsregisters 6 in das SAR 10 übertragen. Speicherbyte-Datenadressen
v/erden vom Operationsregister oder vom DAR-Stapel 2 in das SAR übertragen. Für die Bildung einer 12 Bit grossen Adresse
werden drei Register des DAR 2 benötigt.
Das Α-Register 13 und das B-Register 14 sind je vier Bit gross und
enthalten die werthohen bzw. wertniederen Bits während der Datenbyte-Übertragung
von der Eingangsbusleitung oder zur Ausgangsbusleitung. Das A-Register 13 und das B-Register 14 enthalten die im Rechenwerk (ALU)
3 bei arithmetisch-logischen Operationen zu bearbeitenden Daten. Während dieser Operationen wird der Inhalt des durch das X-FeId oder die Maskendaten
bezeichneten Registers in das Α-Register gesetzt. Der Inhalt des durch das Y-FeId bezeichneten Registers wird in das B-Register gesetzt.
Eine 12 Bit grosse Inkrementierschaltung 15 erhöht den Inhalt des
DAR 2 oder des IAR 4 über das SAR 10 um 1 oder 2 je nach Bedarf der ausgeführten
Operation.
909827/0737
BC9-77-002
~A'
2854A00
Die Assembler-Schaltung 16 ist eine Matrix, die Daten vom Programmregisterstapel
1, dem DAR 2, den Datenadress-Hilfsregistern 8, dem Operationsregister
5 und der Speicherdaten-Busleitung 17 an das A-Register 13 und/oder das B-Register 14 leitet.
Das Rechenwerk (ALU) 3 empfängt Daten vom Α-Register und vom B-Register
und gibt Daten und Ergebnisse an das Programm, das Datenadressregister oder die Datenadress-Hilfsregister aus. Durch die ALU laufende
Daten können addiert, subtrahiert oder logisch manipuliert werden. Die Zustandsmerker 7 für "Uebertrag", "Null" und "Nicht-Null" können abhängig
von den Operationsergebnissen gesetzt werden.
Die Parität der auf der Speicherdaten-Busleitung 17 hereinkommenden
Bits wird im Paritätsprüfer 18 geprüft. Zu den auf der Ausgangsdaten-Busleitung 19 ausgegebenen Datenbits gehört auch ein Paritätsbit, das
nach Bedarf vom Paritätsbitgenerator 20 erzeugt wird, Um im vorliegenden
Ausführungsbeispiel· eine ungerade Parität zu bekommen.
Ein Ausgangstor 21 am Ausgang des SAR 10 lässt Bits zur Speicheradressierung
durchlaufen. (Wenn die Steuereinheit im Prüfbetrieb läuft, verhindert das Ausgangstor 21 die Ausgabe von Bits vom SAR 10 auf die
Speicheradress-Busleitung 22.)
Die drei Zustandsmerker 7 können aufgrund der ALU-Ergebnisse eines
Rechenbefehles, eines Ladebefehles oder eines Eingabebefehles gesetzt werden. Diese Merker (Kippglieder) bleiben gesetzt, bis sie durch eine
andere Operation zurückgestellt werden (die reine Abfrage ändert ihren Zustand nicht). Alle bistabilen Kippglieder werden gleichzeitig zurückgestellt,
auch wenn der ausgeführte Befehl nicht alle Merker (Kippglieder) setzen kann. Der Uebertragsmerker 24 hat zwei abfragbare Zustände,
nämlich "Uebertrag" und "kein Uebertrag". "Uebertrag" wird bei Vorliegen eines Ausgangsübertrags vom ALU-Bit 0 während einer Addition gesetzt.
Dieser Zustand kann auch während eines Befehles zur rückgekoppelten Links- oder Rechtsverschiebung gesetzt werden, wenn in der Position 3
des zu verschiebenden Registers ein Eins-Bit steht. Der Null-Merker 25 wird gesetzt, wenn das Rechenwerk (ALU) Nullen ausgibt. Dieser Merker
kann gleichzeitig mit dem Merker "Uebertrag - kein Uebertrag" gesetzt
sein. Während Zusammenfassungs-, Eingabe- und Ladeoperationen können sowohl der Merker (Kippglied) für Null als auch der für Nicht-Null eingeschaltet
sein. Der Nicht-Nuli-Merker 26 wird gesetzt, wenn ein von
909827/0737
BC9-77-002
Null verschiedener Wert vom Rechenwerk (ÄLU) ausgegeben wird. Dieser
Merker kann gleichzeitig mit dem Merker "Uebertrag - kein Uebertrag" gesetzt
sein. Die Zustandsmerker werden gesetzt, wenn man Daten durch das Rechenwerk (ALU) weiterleitet. Wenn ein Befehl (wie IN, SNS oder LD)
ausgeführt wird, der zwei je vier Bit lange Datenwörter (Kleinwörter)
durch das Rechenwerk (ALU) leitet, werden für das zweite dieser Datenwörter die Zustandsmerker nicht zurückgestellt. Diese Betriebsart ist
als Zusammenfassungsbetrieb definiert. Der Zusammenfassungsbetrieb wird auch für einige Rechenbefehle eingeschaltet, damit mehrere Operationen
mit einem einzigen bedingten Verzweigungsbefehl ausgeführt und geprüft werden können.
Mit dem Datenkippglied D und dem Befehlskippglied I, zusammengefasst
als Kippglieder 9, werden hohe oder niedrige Speicheradressen bei Speicherdatenzyklen bzw. Befehlsabrufen gewählt. Das D-Kippglied 27 und
das I-Kippglied 28 werden separat mittels Programmierung ein- oder
ausgeschaltet, indem man das Zustandsbit "Daten niedriger Teil" (SDH) für die Datenzyklen und das Zustandsbit "Befehl niedriger Teil" (SIL)
oder "Befehl hoher Teil" (SIH) für die Befehlsabrufzyklen benutzt. Diese
Kippglieder werden auch aufgrund der Ausführung von RAL- oder RTN-Befehlen ein- oder ausgeschaltet. Während der Ausführung dieser Befehle
werden das D- und I-Kippglied ein- oder ausgeschaltet, entsprechend dem Zustand der D/l-Bits im Verbindungsregister. Sie werden gesetzt (eingeschaltet)
, wenn das Zustandsbit eine Eins ist, und sie werden rückgestellt (ausgeschaltet), wenn das Zustandsbit eine Null ist. Eingeschaltet
veranlassen diese Kippglieder die Steuereinheit dazu, Speicherstellen zwischen den Wortadressen 2048 und 4095 im hohen Speicherteil zu
wählen. Ausgeschaltet veranlassen diese Kippglieder die Steuereinheit dazu, nur den niedrigen Speicher oder die ersten Wörter bis zur Adresse
2048 zu wählen. Wenn nur 2K Wörter (2048) oder weniger im Speicher zur Verfügung stehen, dürfen diese Merker (Kippglieder) in der Programmierung
nicht benutzt (eingeschaltet) werden. Wenn mehr als 2K Wörter im Speicher zur Verfügung stehen, können diese Merker (Kippglieder) zusammen
oder einzeln benutzt werden. Bei der Einzelbenutzung können Daten beispielsweise im niedrigen Speicher und Befehle im hohen Speicher (oder
umgekehrt) abgerufen werden.
90 9827/0737
BC9-77-002
Während der Maschinenzyklen, in denen SDL-, SDH-, SIL- und SIH-Befehle
decodiert und die Kippglieder D und I zurückgestellt bzw. eingeschaltet werden, wird der Speicher für den nächsten Befehl angesteuert,
basierend auf dem Zustand des I-Kippgliedes zu Beginn des Zyklus.
Daher wird der zweite Befehl.nach dem SIL-Befehl oder dem SIH-Befehl
ausgeführt vor den Zugriffen zum hohen oder niedrigen Teil des Speichers,
entsprechend dem neuen Zustand des I-Kippgliedes 28. Speicherdatenbefehle nach dem SDL- oder SDH-Befehl adressieren jedoch den hohen
oder niedrigen Speicherteil, entsprechend dem neuen Zustand des D-Kippgliedos
27, da es sich hier um Zwei-Zyklus-Operationen handelt. Nach den SDH-, SDL-, SIH- und SIL-Befehlen kann man mit dem Befehl "Verzweigen
und Verbinden" die Speicherseitenfolgen von Daten und/oder Befehlszugriffen zum hohen und niedrigen Speicherteil verfolgen und zu Unterroutinen
verzweigen. Der RTN-Befehl gestattet eine Rückkehr zur unterbrochenen
Befehlsreihe und für Speicherzugriffe zum früheren Zustand der D-.und I-Kippglieder. Während des IPL-Befehls wird das D-Kippglied eingeschaltet,
nachdem 4096 Bytes geladen wurden, damit ein IPL bis zu 8192 Datenbytes möglich ist.
Mit dem bistabilen Kippglied 23 für das Datenbit X werden Speicher/Wortadressen
zwischen 4096 und 8191 gewählt. In der Programmierung wird dieses Kippglied gesetzt durch den Befehl SXN und zurückgestellt
durch den Befehl SXF. Wenn das Kippglied für das Datenbit X gesetzt ist, erfolgen alle Speicherzugriffe zwischen den Adressen 4096 und 8191,
wobei der Zustand der Merker (Kippglieder) D und I bestimmt, ob die unteren Adressen 4096 bis 6143 oder die oberen Adressen von 6144 bis 8191
gewählt werden. Die Befehle SXN und SXF können mit SIL und SIH so kombiniert werden, dass Verzweigungen von und zu jeder Adresse im Speicher
nach der entsprechenden Speicherwahl vorgenommen werden können.
Die Adressierung durch die Steuerung ist auf Speichermoduln von 1024 Wörtern ausgelegt (ROS oder RAM), wobei jedes Wort 16 Datenbits (2
Bytes + 2 Paritätsbits) umfasst. Die acht Speicherwahlleitungen 30 gestatten die Wahl einzelner Speichermoduln. Die Bits 1 bis 10 auf der
Speicheradressbusleitung 22 adressieren ein Modulwort zwischen 0 und 1023. Für eine Speicherschreiboperation wird die Bytewahl innerhalb des
2 Byte grossen Wortes eingestellt.über die Schreibleitung 32 (hohes/
niedriges Byte), die das Speicheradressbit 11 vom SAR 10 führt.
909827/0737
BC9-77-002
Der Datenadressdecodierer 29 hat drei Eingänge, und zwar einen vom
bistabilen Kippglied 23 für das Datenbit X, einen von den Kippgliedern 9 (abhängig von der Adressierung der Daten oder Befehle), und einen von
dem werthohen Bit vom SAR 10 (über das Ausgangstor 21). Der Datenadressdecodierer
29 wandelt den aus drei Bits bestehenden Eingangswert in eine l-aus-8-Darstellung am Ausgang um, um einen der acht Blöcke aus Speicherwörtern
(Kapazität je IK) durch Anheben des Signales auf einer der acht Speicherwahlleitungen 30 zu wählen.
Die Zyklussteuerung 31 ist ein Mikrobefehlsdecodierer. Sie decodiert
Mikrobefehle, die im Operationsregister 5 stehen, und erzeugt
aufgrund dieser Befehle zusammen mit Taktsignalen und verschiedenen Systemsteuersignalen, wie beispielsweise Rückstellsignalen, die Leitsignale
für jeden Operationszyklus. Konstruktive Einzelheiten der Zyklussteuerung 31 sind Fachleuten allgemein bekannt und werden daher nicht
genauer beschrieben. Diese Einheit ist weitgehend durch den Befehlssatz eines Datenprozessors definiert, und daher ändert sich ihre spezifische
Ausführung von einem System zum anderen weitgehend.
Wie oben schon gesagt, empfängt das Operationsregister 5 Mikrobefehle
vom Speicher über die Speicherdaten-Busleitung 17. Im vorliegenden Ausführungsbeispiel des Systems enthält jeder Mikrobefehl 16 Bits. Die
ersten vier Bits definieren eine Verarbeitungsart für das System und werden immer zur Decodierung an die Zyklussteuerung 31 gesendet. Das
vorliegende Ausführungsbeispiel der Erfindung ist Teil eines Systems mit elf Betriebsarten, die durch die ersten vier Bits des Mikrobefehles wie
folgt definiert sind.
0000 Programmregister an Programmregister
0001 Datenadressregister an Datenadressregister
0010 Programmregister an Datenadressregister
0011 Datenadressregister an Programmregister
0100 Maske an Programmregister
0101 Maske an Datenadressregister
909827/0737
BC9-77-002
0110 | Exngabe |
Olli | Ausgabe |
lOOx | Laden |
lOlx | Speichern |
llxx | Verzweigen |
(x heisst: | nicht signifikant) |
Die Bedeutung der übrigen Felder (Bits 4 bis 15) des Mikrobefehls hängt von der jeweiligen Betriebsart ab. Die in jeder Betriebsart ausgeführte
Funktion wird nachstehend beschrieben. Ausserdem sind die zu jeder Betriebsart gehörenden Befehle aufgelistet. Abgesehen von der Kurzdarstellung
in dieser Liste sind die nachfolgenden Befehle grösstenteils nur so weit beschrieben, wie sie für die Erfindung von Bedeutung
sind.
Die oben aufgeführten ersten sechs Betriebsarten werden alle für arithmetische und logische Operationen im Rechenwerk (ALU) 3 benutzt.
In diesen Betriebsarten definieren die Bits 4 bis 7 die vom Rechenwerk mit zwei erhaltenen Datenfeldern auszuführenden Operationen. Dieses
Feld ist ein ALU-Befehl und wird vom Operationsregister 5 an die Zyklussteuerung 31 übertragen, die es zur Erzeugung der Steuersignale
für das Rechenwerk (ALU) decodiert. Die Bits 8 bis 11 definieren eine X-Feldadresse für die Betriebsarten PR an PR, DAR an DAR, PR and DAR
und DAR an PR, und eine Maske für die Betriebsarten MASKE an PR und MASKE an DAR. Die Bits 12 bis 15 definieren ein Y-Adressfeld für alle
sechs Betriebsarten.
Betriebsart PR an PR (0000): Der Inhalt des durch das X-FeId angegebenen
Programmregisters wird mit dem Inhalt des durch das Y-FeId bezeichneten Programmregisters in der vom ALU-Befehl gesteuerten Art
kombiniert. Die Ergebnisse werden in das durch das Y-FeId bezeichnete
PR-Register gesetzt, wenn sie gespeichert werden. Durch die Rechen-
und Schiebeoperationen kann jeder der Zustandsmerker 7 gesetzt werden.
Die logischen Befehle können die Merker für Null oder Nicht-Null setzen. Die Zusammenfassungsbefehle stellen die Merker (Kippglieder) nicht zurück,
sondern nehmen ODER-Verknüpfungen der Ergebnisse mit den vorhandenen Zustandsanzeigen vor.
909827/0737
BC9-77-002
Betriebsart DAR an DAR (0001) : In dieser Betriebsart arbeitet das
System genau so wie in der Betriebsart PR an PR, jedoch bezeichnen das X-FeId und das Y-FeId Datenadressregister.
Betriebsart PR an DAR (0010): In dieser Betriebsart funktioniert das System genau so wie in der Betriebsart PR an PR, jedoch bezeichnet
das Y-FeId ein Datenadressregister.
Betriebsart DAR an PR (0011): In dieser Betriebsart funktioniert das System genau so wie in der Betriebsart PR an PR, jedoch bezeichnet
das X-FeId ein Datenadressregister.
Betriebsart Maske an PR (0100): In dieser Betriebsart funktioniert
das System genau so wie in der Betriebsart PR an PR, jedoch bezeichnen die Bits 8 bis 11 eine Maske und keine Adresse.
Betriebsart Maske an DAR (0101): In dieser Betriebsart funktioniert
das System genau so wie in der Betriebsart Maske an PR, jedoch bezeichnet das Y-FeId ein Datenadressregister.
Die 16 Funktionen werden vom Rechenwerk (ALU) aufgrund der nachstehenden
ALU-Befehle ausgeführt (in den oben aufgeführten sechs Betriebsarten die Bits 4 bis 7):
Funktion | ALU-Befehl (Bits 4 bis 7) |
Addiere | 0000 |
Addiere mit Uebertrag | 0001 |
Uebertragen | 0010 |
Subtrahieren mit Borgen | 0011 |
Subtrahieren | 0100 |
Vergleichen | 0101 |
Subtrahieren Zusammengefasst | 0110 |
Vergleichen Zusammengefasst | Olli |
UND | 1000 |
Prüfung | 1001 |
UND Zusammengefasst | 1010 |
Prüfung Zusammengefasst | 1011 |
ODER | 1100 |
* Rechtsverschiebung | 1101 |
BXKLUSIV-ODER (ANTIVALENZ) | 1110 |
* Rechtsverschiebung mit Rückkopplung | 1111 |
* Diese beiden Funktionen werden im Maskenbetrieb nicht ausgeführt.
909827/0737
BC9-77-002
~15~ 285U00
Im Eingabebetrieb (0110) werden die acht Datenbits (1 Byte) auf der
Eingangsdaten-Busleitung 33 übertragen und/oder geprüft. Daten werden
auf diese Busleitung von dem gewählten Gerät gegeben, dessen Adresse im
Operandenfeld des Befehls in den Bits 8 bis 15 definiert ist. Die Adresse kann jeder Wert zwischen 0 und .225 dezimal oder FF hexadezimal sein.
Im Eingabebetrieb gibt es zwei Befehle, und zwar Eingabe vom Gerät (IN) und Gerät abfragen (SNS). Bei dem Befehl IN leitet das System die Daten
von der Eingangsdaten-Busleitung 33 (auf die sie vom gewählten Gerät gegeben wurden) weiter und speichert sie im PRO und PR 1. PRO enthält die
Bits 0 bis 3 und PRl die Bits 4 bis 7. Die Operation beim SNS-Befehl
unterscheidet sich nur dadurch, dass die Daten nicht in einem Register gespeichert, sondern auf den Zustand Null oder Nicht-Null geprüft werden.
Die Befehle IN und SNS stellen alle Zustandsmerker 7 zu Beginn der Operation zurück, und es können nur die Merker Null und Nicht-Null gesetzt
werden. Das zweite Byte läuft durch das Rechenwerk (ALU) 3 im Zusammenfassungsbetrieb, und die Zustandsmerker zeigen das ODER-verknüpfte
Ergebnis der beiden durch das Rechenwerk (ALU) laufenden Bytes an. Die beiden Merker (Kippglieder) 25 und 26 für Null und Nicht-Null
können am Ende der Operation beide gesetzt sein.
Im Ausgabebetrieb (Olli) werden acht Bits (ein Datenbyte) über die
Ausgangsdaten-Busleitung 19 an das gewählte Gerät übertragen. Wie im Eingabebetrieb wird das Datenempfangsgerät durch die entsprechende Geräteadresse
im Operandenfeld des Befehles gewählt. Die Geräteadresse im Operandenfeld kann höchstens dezimal 255 oder hexadezimal FF sein. Im
Ausgabebetrieb gibt es zwei Befehle, und zwar den Befehl Ausgabe an Gerät (OUT) und direkte Eingabe und Ausgabe (DIO). Bei dem Befehl OUT
wird ein Datenbyte von PRO und PRl an das Gerät gesendet. PRO enthält die Bits 0 bis 3 und PRl die Bits 4 bis 7. Mit dem Befehl DIO werden die
Daten von der Eingangsdaten-Busleitung 33 an die Ausgangsdaten-Busleitung 19 übertragen. (Das Gerät, das die Daten auf die Eingangsdaten-Busleitung
gibt, muss dieselbe Adresse haben wie das Gerät, das die Daten von der Ausgangsdaten-Busleitung in diesem System empfängt.) Die
Befehle OUT und DIO ändern die Zustandsmerker nicht.
90 9 8 27/0737
BC9-77-Ü02
Ladebetrieb (1000) (ausgenommen "Laden absolute Adresse", dessen Kennzeichen 1001 ist): Im Ladebetrieb haben alle Befehle eine Ausführungslänge
von zwei Zyklen. Während des zweiten Zyklus (Datenzyklus) wird ein volles Datenwort aus dem Speicher auf die Speicherdaten-Busleitung
17 gelesen. Das hohe (HO) oder niedrige (NI) Byte des Datenwortes wird zur Verarbeitung geleitet, abhängig davon, ob die DAR-Ädresse
(Bit 11) oder die Operandenadresse gerade bzw. ungerade ist. Das Byte wird an PR, DAR oder das E/A-Gerät geleitet. Bei den zwei Befehlen
"Verbindungsregisterladen" (LDL) werden beide Bytes des Datenwortes in.
das Verbindungsregister 6 geleitet. Es gibt zehn verschiedene Ladebefehle.
Der Befehl "Laden PR" (LDR) veranlasst das System dazu, ein Datenbyte
von der durch die drei Datenadressregister (DAR) definierten Speicherstelle zu holen. Die Daten werden in zwei Programmregister (PR) gesetzt,
die durch das X-FeId und Y-FeId definiert sind. Die erste Hälfte
des Datenfeldes wird in das X-Feld-Register und die zweite Hälfte in das
Y-Feld-Register gesetzt. Die drei DAR's bilden die 12 Bit grosse Byteadresse
aus dem Inhalt des DAR 0 für die Bits 0 bis 3, des DAR 1 für die
Bits 4 bis 6 und des DAR 2 für die Bits 8 bis 11. Die DAR 0, 1 und 2 müssen auf die gewünschte Speicheradresse gesetzt werden, bevor der
Ladebefehl ausgeführt wird. Für die Operation LDR sind die Bits 4 bis 7 des Mikrobefehles 1001.
Der Befehl "Laden PR und Erhöhen DAR +1" (LDRP) ist derselbe wie der LDR-Befehl, erhöht jedoch den Inhalt von DAR 0, 1 und 2 um +1. Die
Bits 4 bis 7 dieses Mikrobefehles sind 1011.
Der Befehl "Laden DAR" (LDD) veranlasst das System zum Abruf eines
Datenbytes aus der durch die drei DAR 0, 1 und 2 definierten Speicherstelle. Die Daten werden in die beiden DAR gesetzt, die durch das X-FeId
und das Y-FeId definiert sind, und zwar wird die erste Hälfte des Datenbyte
in das X-Feld-Register und die zweite Hälfte in das Y-Feld-Register gesetzt. Die drei DAR bilden die 12 Bit grosse Adresse mit dem Inhalt
des DAR 0 für die Bits 0 bis 3, des DAR 1 für die Bits 4 bis 7 und des
DAR 2 für die Bits 8 bis 11. Das DAR muss auf die gewünschte Adresse eingestellt sein, bevor der Ladebefehl ausgeführt wird. Für diesen
Mikrobefehl sind die Bits 4 bis 7 0100.
909827/0737
BC9-77-002
Der Befehl "Laden DAR und Erhöhen DAR +1" (LDDP) ist derselbe wie der Befehl LDD, erhöht jedoch den Inhalt von DAR 0, 1 und 2 um +1. Die
Bits 4 bis 7 sind 0110.
Der Befehl "Laden Speicher indexiert" (LDI) benutzt DAR 0 und 1 und
den Wert, der in den Bits 12 bis 15 des Befehles codiert ist, zur Definition
der Speicheradresse. Die 12 Bit grosse Adresse wird gebildet unter Verwendung des Inhaltes des DAR 0 als Adressbits 0 bis 3, des
DAR 1 als Adressbits 4 bis 7 und des Wertes im Befehl als Adressbits 8 bis 11. Die geladenen Daten gehen in die PR 0 und 1. Das PR 0 enthält
die ersten vier Bits und das PR 1 die nächsten vier Bits. Dieser Befehl gestattet dem Programmierer die Adressierung von bis zu 16 Speicherstellen,
ohne den Inhalt des DAR 0 und 1 zu verändern. Die Bits 4 bis 7 sind 1010. Die Bits 8 bis 11 können ignoriert werden oder eine besondere
Konfiguration wie z.B. 0000 haben.
Der Befehl "Speicher an E/A-Gerät" (MIO) benutzt die in den DAR 0,
1 und 2 enthaltene Adresse zur Definition der Speicheradresse für die an
ein E/A-Gerät zu sendenden Daten, wobei das Gerät durch die Bits 8 bis 15 des Befehles definiert ist. Die drei DAR bilden die 12 Bit grosse
Adresse aus dem Inhalt des DAR 0 für die Adressbits 0 bis 3, das DAR 1
für die Adressbits 4 bis 7 und das DAR 2 für die Adressbits 8 bis 11. Die gewünschte Adresse muss in den DAR vor Ausführung des MIO-Befehls
enthalten sein. Die Identifikation für das zu adressierende Gerät ist im Operandenbefehl codiert und muss zwischen dezimal 0 und 255 liegen. Die
Bits 4 bis 7 sind 1100.
Der Befehl "Speicher an E/A-Gerät und DAR +1 erhöhen" (MIOP) tut dasselbe wie der MIO-Befehl, erhöht aber ausserdem noch den Inhalt von
DAR 0, 1 und 2 um +1. Die Bits 4 bis 7 sind 1110.
Der Befehl "Verbindungsregister Laden" (LDL) veranlasst das System
dazu, das Verbindungsregister 6 aus dem Speicher unter Benutzung der durch die DAR 0, 1 und 2 definierten Adresse zu laden. Die DAR 0, 1 und
2 müssen vor Benutzung dieses Befehles eingestellt sein und eine gerade
Adresse enthalten, da diese Operation ein ganzes Wort im Speicher adressiert. Die Bits 4 bis 7 des ersten Speicherbyte und die Bits 0 bis 6 des
zweiten Speicherbyte bilden die in das Verbindungsregister geladene Adresse. Bit 2 des ersten Byte ist das Steuerbit für die Wahl des hohen
oder niedrigen Teils des Datenspeichers (Einstellung des D-Kippglieds),
909827/0737
BC9-77-002
- L8 -
und Bit 3 des ersten Byte ist das Steuerbit für die Wahl des hohen oder
niedrigen Teils des Befehlsspeichers (Einstellung des I-Kippglieds).
Gleichzeitig mit der Ausführung des LDL-Befehles wird der Inhalt des
ersten Rückgriffregisters 11 in das zweite Rückgriffregister 12 und
der Inhalt des Verbindungsregisters 6 in das erste Rückgriffregister genauso übertragen, wie bei einem BAL-Befehl. Dieser Befehl kann zur
Initialisierung des Verbindungsregisters 6 für den RAL-Befehl benutzt
werden. Die Bits 4 bis 7 sind 0000. Die Bits 8 bis 15 können ignoriert werden.
Der Befehl "Verbindungsregister Laden und DAR +2 erhöhen" (LDLP)
tut dasselbe wie der Befehl LDL, erhöht jedoch den laufenden Inhalt von DAR 0, 1 und 2 um +2. Die Bits 4 bis 7 sind 0010.
In den Bits 4 bis 15 des Befehles "Laden absolute Adresse" (LDA) ist die Adresse des Speicherplatzes definiert, dessen Inhalt (1 Byte)
in die PRO und 1 zu übertragen ist. Das PRO erhält die Bits 0 bis 3 und das PRl die Bits 4 bis 7 des abgerufenen Byte. Die Bits 0 bis 3
dieses Befehles sind 1001.
Die Ladebefehle mit Ausnahme von MIO, MIOP, LDL und LDLP stellen die Zustandsmerker 7 für das Rechenwerk (ALU) zu Beginn einer jeden
Operation zurück. Es können nur die Merker (Kippglieder) 25 und 26 für Null bzvj. Nicht-Null gesetzt werden. Das zweite Halbbyte läuft durch
das Rechenwerk (ALU) 3 im Zusammenfassungsbetrieb und die Zustandsmerker enthalten das ODER-verknüpfte Ergebnis der beiden durch das Rechenwerk
(ALU) laufenden Halbbytes. Die Merker für Null und Nicht-Null können am Ende der Operation beide eingeschaltet sein. Die Befehle MIO, MIOP, LDL,
und LDLP verändern den Schaltzustand der Zustandsmerker nicht.
Speicherbetrieb (1010) (mit Ausnahme "Speichern in absoluter Adresse"
, dessen Kennzeichen 1011 ist): Diese Befehle sind im wesentlichen
das Gegenstück für die Befehle des Ladebetriebes. Im Ladebetrieb finden Uebertragungen vom Speicher in die Register statt und im Speicherbetrieb
Uebertragungen von den Registern in den Speicher.
Mit Ausnahme von STI und STA speichern alle Speicherbefehle ein Datenbyte in einem Speicherplatz, dessen Adresse durch die aktiven DAR
0, 1 und 2 definiert ist. Diese Register bilden eine 12 Bit grosse Adresse aus dem Inhalt des DAR 0 für die Adressbits 0 bis 3, des DAR
für die Adressbits 0 bis 7 und des DAR 2 für die Adressbits 8 bis 11.
909827/0737
BC9-77-002
Im EINS-Zustand veranlasst das Bit 11 eine Speicherung im hohen Byte und
im NULL-Zustand im niedrigen Byte des Wortes. Die DAR 0, 1 und 2 müssen
auf die gewünschte Adresse eingestellt sein, bevor der Speicherbefehl ausgeführt wird. Ein Speicherbefehl wird für einen Pestwertspeicher wie
eine Null-OP-Operation behandelt. Die Speicherbefehle ändern den Schaltzustand
der Zustandsmerker nicht.
Die folgenden acht Speicherbefehle sind einfach die Umkehrung der entsprechenden Ladebefehle (Bits 4 bis 15 sind dieselben): Speichern PR
(STR) , Speichern PR und DAR +1 erhöhen (SDRP), Speichern DAR (STD), Speichern DAR und DAR +1 erhöhen (STDP), E/A-Daten an Speicher (IOM),
E/A-Daten an Speicher und DAR +1 erhöhen (IOMP), Speicher indexiziert
speichern (STI) und Speichern in absoluter Adresse (STA).
Im Speicherbetrieb sind vier Befehle auf das Verbindungsregister bezogen (im Ladebetrieb waren es zwei). Diese Befehle sind nachfolgend
definiert.
Der Befehl "Speichern hohen Teil aus Verbindungsregister" (SLH) veranlasst das System zum Speichern der werthohen Bits des Verbindungsregisters 6 im Speicherplatz mit der Adresse, die durch die ersten drei
DAR definiert ist. Diese müssen eingestellt sein, bevor dieser Befehl ausgeführt wird. Dadurch werden die Zustandsbits D und I des Verbindungsregisters
in die Speicherbits 2 und 3 gesetzt, und die Speicherbits 0 und 1 auf Null gesetzt. Die Speicherbits 4 bis 7 empfangen die Bits
bis 3 des Verbindungsregister-Adressfeldes. Dieser Befehl muss die
werthohen Bits des Verbindungsregisters in eine gerade Byteadresse speichern, so dass sie als der werthohe Teil eines Vollwortes für die
Befehle LDL und LDLP zur Verfügung stehen.
Der Befehl "Speichern hohen Teil aus Verbindungsregister und DAR +1 erhöhen" (SLHP) tut dasselbe wie der Befehl SLH, erhöht jedoch den
Inhalt von DAR 0, 1 und 2 um +1.
Der Befehl "Speichern niedrigen Teil aus Verbindungsregister" (SLL)
veranlasst das System dazu, die Bits 4 bis 10 des Adressfeldes des Verbindungsregisters
6 in die Bitposition 0 bis 6 der Speicherstelle zu speichern, die durch den Inhalt von DAR 0, 1 und 2 definiert ist.
909827/0737
BC9-77-002
Bit 7 der Speicherstelle wird auf Null gestellt. Der SLL-Befehl
muss die wertniederen Bits des Verbindungsregisters in eine ungerade Byteadresse speichern, und es muss das Byte nach dem geraden Byte sein,
das im SLH-Befehl benutzt wurde. Dadurch kann der gespeicherte Inhalt
des Verbindungsregisters 6 für das Neuladen durch die LDL-Befehle zur
Verfügung gestellt werden.
Der Befehl "Speichern niedrigen Teil aus Verbindungsregister und DAR +1 erhöhen" (SLLP) tut dasselbe wie der Befehl SLL, erhöht jedoch
den Inhalt von DAR 0, 1 und 2 um +1.
Verzweigungsbetrieb (UXX): Die die Umgebung des vorliegenden Ausführungsbeispieles
der Erfindung bildende Steuerung kann sechs unbedingte Verzweigungsbefehle ausführen. Drei benutzen das Verbindungsregister
6. Einer von ihnen, der Befehl "Rückkehren und Verbinden" (RAL) ist ein direktes Ergebnis der Ausführung dieser Erfindung. Alle Verzweigungszieladressen
sind Vollwortadressen (Zwei-Byte-Adressen) und durch die Bits 4 bis 14 definiert. Die Adressen müssen gerade sein, weil
alle Befehle an einer geraden Bytegrenze beginnen. Bit 15 ist Teil der Betriebsfunktion für Verzweigungsbefehle. Der an der Verzweigungs-Zieladresse
stehende Befehl wird für die Ausführung aus dem Speicher geholt. Die Verzweigungs-Zieladresse wird um 1 erhöht und in das Befehls-Adressregister
IAR 4 gesetzt, so dass dieses die Adresse des nächsten auszuführenden Befehles enthält.
Der Befehl "Verzweigen und Warten" (BAW) veranlasst das System zum
Verzweigen und anschliessenden Stoppen des Steuerungstaktes nach Ausführung der Verzweigung. Die Steuerung startet, wenn ein Start-Taktimpuls
empfangen wird. Ein System-Rückstellsignal nimmt die Steuerung ebenfalls aus dem Verzweigungs- und Wartezustand heraus. Die Bits 1 bis
3 dieses Mikrobefehles sind 1100. Die Bits 4 bis 14 geben die Verzweigungs-Zieladresse
an, und Bit 15 ist Null.
Der Befehl "Verzweigen" (B) ist ein unbedingter Verzweigungsbefehl
zu der in den Bits 4 bis 14 definierten Adresse. Die Bits 0 bis 3 sind 1101, Bit 15 ist 1.
Der Befehl "Verzweigen und Verbinden" (BAL) ist ein unbedingter Verzweigungsbefehl zu der in den Bits 4 bis 14 definierten Adresse, der
auch die Adresse des nächstfolgenden Befehles (nach dem Befehl BAL) und den Zustand der Kippglieder (Merker) D und I in das Verbindungsregister
909827/0737
BC9-77-002
zur künftigen Benutzung durch einen der Befehle RTN oder RAL setzen
lässt. Die Bits 0 bis 3 sind 1110, Bit 15 ist Null. Im vorliegenden System können bis zu 3 BAL-Befehle gegeben werden, bevor ein RTN-Befehl
gegeben wird, ohne dass die Rückkehradresse verloren geht. Der BAL-Befehl lässt ausserdem den Inhalt des Verbindungsregisters in das
erste Rückgriffregister 11 und dessen Inhalt in das zweite Rückgriffregister
12 übertragen. Wenn mehr als drei BAL-Befehle gegeben werden, werden nur die jeweils letzten drei Adressen gerettet. Der Befehl "Verzweigen
über Verbindungsregister" (RTN) löst eine unbedingte Verzweigung zu der im Verbindungsregister enthaltenen Adresse aus. Die Kippglieder
(Merker) D und I werden ausserdem entsprechend den Zustandsbits im Verbindungsregister eingestellt. Ausserdem wird der Inhalt des ersten
Rückgriffregisters 11 in das Verbindungsregister und der Inhalt des
zweiten Rückgriffregisters 12 in das erste Rückgriffregister 11 übertragen. Der Befehl RTN hat das Format 1111 0000 0000 0001.
Der Befehl "Rückkehren und Verbinden" (RAL) benutzt das Verbindungsregister
6, die Kippglieder 9 und das Befehlsadressregister IAR 4. Vor der Ausführung des RAL-Befehles muss das Verbindungsregister geladen
worden sein (z.B. durch BAL, LDL oder LDLP). Zur Zeit der Ausführung wird der Inhalt des Verbindungsregisters 6 für die nächste Befehlsadresse
benutzt und dann der Inhalt des IAR 4 und der Kippglieder 9 in das Verbindungsregister 6 gesetzt. Dieser Befehl verändert den Inhalt
der beiden Rückgriffregister 11 oder 12 nicht (im Gegensatz zu den
Befehlen BAL und RTN, die das tun). Im vorliegenden Ausführungsbeispiel
hat der RAL-Befehl das Format 1111 0010 0000 0001.
Der Befehl "Verzweigen über DAR" (BVD) löst eine Verzweigung zu der
durch die drei DAR gebildeten Adresse aus. Das DAR 0 liefert die Adressbits 0 bis 3, das DAR 1 die Adressbits 4 bis 7 und das DAR 2 die Adressbits
8 bis 10 der Speicherzieladresse. Das wertniedere Bit vom DAR 2 (Bit 11) wird für den Speicherzugriff nicht gebraucht. Damit ist sichergestellt,
dass alle Verzweigungen zu einer geraden Bytegrenze erfolgen. Der Inhalt der DAR wird durch diesen Befehl nicht verändert. Der BVD-Befehl
hat das Format 1111 1000 0000 0001.
909827/0737
Bits O bis 3 | Bit 15 |
1100 | 1 |
1101 | 0 |
1110 | 1 |
1111 | 0 |
1100 | 1 |
1101 | 0 |
1110 | 1 |
1111 | 0 |
1110 1111 |
1 0 |
BC9-77-002
285U00
Im umgebenden System gibt es auch zehn bedingte Verzweigungsbefehle,
die nachfolgend zusammen mit der Bitkonfiguration für die Bits bis 3 und 15 aufgelistet sind. Die Bits 4 bis 14 definieren die Verzweigungs-Zieladresse.
Befehl
Verzweigung Kein Uebertrag
Verzweigung Uebertrag
Verzweigung Nicht-Null
Verzweigung Null
Verzweigung Hoch
Verzweigung Niedrig bei Gleich
Verzweigung Nicht Gleich
Verzweigung Gleich
Verzweigung Wahr
Verzweigung Falsch
Verzweigung Uebertrag
Verzweigung Nicht-Null
Verzweigung Null
Verzweigung Hoch
Verzweigung Niedrig bei Gleich
Verzweigung Nicht Gleich
Verzweigung Gleich
Verzweigung Wahr
Verzweigung Falsch
Die Bitkonfiguration einiger dieser Befehle ist mit anderen identisch.
So haben z.B. die Befehle Verzweigung Nicht-Null, Verzweigung Nicht Gleich und Verzweigung Wahr alle dieselbe Bitkonfiguration 1110..
..1 und sind somit tatsächlich derselbe Befehl. Die eigentliche Bedeutung dieser Befehle hängt von ihrer Benutzung in einem Programm ab.
Die ersten vier oben aufgelisteten Befehle werden nach einer Rechenoperation benutzt. Die nächsten vier Befehle werden nach einer Vergleichsoperation
benutzt und die letzten zwei Befehle nach einer Prüfoperation. Jeder dieser Verzweigungsbefehle fragt tatsächlich die
Stellung eines Kippgliedes (Merker) ab, die Bedeutung der Stellung der verschiedenen Kippglieder (Merker) wird jedoch durch die vorhergehende
Operation bestimmt.
Bei Verwirklichung dieser Erfindung in einem System sind wesentliche
Elemente (und ihre Realisierung im vorliegenden Ausführungsbeispiel) : eine Verbindungseinrichtung zum Retten von Adressen (Verbindungsregister
6), eine Einrichtung zur Initialisierung der Verbindungseinrichtung (Zyklussteuerung 31, die die Reaktion des Systems auf die
Befehle BAL, LDL und LDLP steuert) und eine Einrichtung zur Uebertragung
der Steuerung an einen Befehl mit der in der Verbindungseinrichtung geretteten
Adresse und zur Einstellung der Verbindungseinrichtung auf
909827/0737
BC9-77-002
einen neuen Wert (Zyklussteuerung 31 veranlasst aufgrund eines RAL-Befehles
die Uebertragung des Inhaltes des Verbindungsregisters 6 in die Kippglieder 9 und das Befehls-Adressregister 4 und lässt den Inhalt der
Kippglieder 9 und des Befehls-Adressregisters 4 in das Verbindungsregister 6 übertragen).
Im vorliegenden Ausführungsbeispiel wird ein Verzögerungselement (das z.B. aus einem Paar Kippgliedern zur vorübergehenden Speicherung
bestehen kann) benutzt, während der Inhalt des Verbindungsregisters 6 gegen
den Inhalt der Kippglieder 9 und des IAR 4 ausgetauscht wird. Bevor
eine Eingangsinformation empfangen wird, die die Stellung der Kippglieder 9 ändern würde, wird deren Inhalt in das Verzögerungselement 35
übertragen„ Wenn die Zyklussteuerung 31 einen RAL-Befehl decodiert, wird
der Inhalt des Verbindungsregisters gegen den Inhalt der Kippglieder 9 und des IAR 4 wie folgt vertauscht: Die Bahnen vom Verbindungsregister
zum Speicher-Adressregister (SAR) 10 und vom Verbindungsregister 6 zu den Kippgliedern 9 werden so aktiviert, dass der Inhalt des Verbindungsregisters
in das SAR 10 und die Kippglieder 9 wie bei einem RTN-Befehl
übertragen wird (in diesem Fall wird der Inhalt der Rückgriffregister
und 12 jedoch nicht betroffen). Dadurch wird der Adressmechanismus des Systems so eingestellt, dass als nächster aus dem Speicher ein Befehl
geholt wird, der an einem vorher festgelegten Rückkehrpunkt steht. Dann
werden die Bahnen vom IAR 4 zum Verbindungsregister 6 und vom Verzögerungselement
35 (das den früheren Inhalt der Kippglieder 9 enthält) zum Verbindungsregister 6 aktiviert und der Inhalt des IAR 4 sowie der
alte Inhalt der Kippglieder 9 in das Verbindungsregister 6 übertragen (wie bei einem BAL-Befehl, jedoch sind hier die Rückgriffregister 11 und
12 nicht betroffen). Dadurch wird in das Verbindungsregister 6 die
Information eingegeben, die später durch einen anderen RAL-Befehl (oder einen RTN-Befehl) dazu benutzt wird, zu~ dem Befehl zurückzukehren, der
diesem RAL-Befehl folgt. Dann wird die Bahn vom SAR 10 über die Inkrementierschaltung
15 zum IAR 4 aktiviert und der neue Inhalt des SAR 10 (empfangen vom Verbindungsregister.6) um· +2 erhöht (weil die Befehlsadressierung auf Wortgrenzeh läuft) und im IAR 4 gespeichert. Somit
enthält das IAR 4 jetzt die Adresse desjenigen Befehles,.der dem Befehl
an dem vorher festgelegten Rückkehrpunkt folgt.
909827/0737
BC9-77-002
Die Erfindung erleichtert die Verbindung zwischen Computerprogrammen
und ermöglicht so einen im wesentlichen gleichzeitigen Betrieb zweier separater Programme. Diese Möglichkeit wird ohne die allgemeine
Belastung (z.B. Komplexität, Kosten, Programmxeraufwand usw.) geschaffen, die durch ein Unterbrechungssystem eingeführt würde. Ausserdem wird
durch eine erfindungsgemässe Anordnung die Verbindung zwischen Programmen
schneller hergestellt als bei den anfangs beschriebenen herkömmlichen Einrichtungen. Gerade der letzte Punkt ist bei einem E/A-Steuergerät besonders
wichtig, das zwei Geräte gleichzeitig überwachen und jeweils einem von beiden sehr schnell antworten muss.
909827/0737
Claims (8)
- BC9-77-002PATENTANSPRUECHE/ij) Anordnung zum Wechsel zwischen verzahnt zu verarbeitenden, voneinander unabhängigen Programmen oder Programmsegmenten in einer Datenverarbeitungsanlage, die ein Speicheradressregister für die jeweils benutzte Befehlsadresse, ein Instruktionsadressregister für die als nächste zu benutzende Befehlsadresse, ein Verbindungsregister für eine
Wiedereintrittsadresse sowie separate Speicherglieder zur Aufnahme von Zustandsangaben enthält, dadurch gekennzeichnet, dass Eingänge des
Verbindungsregisters (6) einerseits mit dem Instruktionsadressregister (4) und andererseits mit den separaten Speichergliedern (9) verbunden
sind, und dass Ausgänge des Verbindungsregisters einerseits mit dem
Speicheradressregister (10) als auch mit den separaten Speichergliedern verbunden sind, wobei aufgrund der Decodierung eines einzelnen bestimmten Befehls (RAL) sowohl das Speicheradressregister und die separaten
Speicherglieder aus dem Verbindungsregister geladen als auch das Verbindungsregister mit dem Inhalt des Instruktionsadressregisters und dem vorherigen Inhalt der separaten Speicherglieder geladen wird. - 2. Anordnung nach Patentanspruch 1, dadurch gekennzeichnet, dass Ausgänge der separaten Speicherglieder (9) über ein Verzögerungselement
(35) mit Eingängen des Verbindungsregisters (6) verbunden sind. - 3. Anordnung nach Patentanspruch 1, dadurch gekennzeichnet, dass Ausgänge der separaten Speicherglieder (9) mit Steuereinrichtungen (29,
30) zur Auswahl von Speicherbereichen verbunden sind.9098 27/0737 °R1GINAL INSPECTEDEC9-77-0Q2 - 4. Anordnung nach Patentanspruch 1, dadurch gekennzeichnet, dass Ausgänge des Verbindungsregisters (6) auch mit Eingängen des Instruktionsadressregisters (4) verbunden sind.
- 5. Anordnung nach Patentanspruch 1, dadurch gekennzeichnet, dass das Verbindungsregister (6) weitere Eingänge zum Laden dieses Registers aus einer anderen Quelle als dem Instruktionsadressregister aufweist.
- 6. Anordnung nach Patentanspruch 1, dadurch gekennzeichnet, dass mindestens ein Rückgriffregister (11) vorgesehen ist, dessen Eingänge mit Ausgängen des Verbindungsregisters (6) und dessen Ausgänge mit Eingängen des Verbindungsregisters verbunden sind, so dass beim Laden des Verbindungsregisters dessen Inhalt in das Rückgriffregister verschoben v;erden kann, und dass bei Entnahme des Inhaltes des Verbindungsregisters dieses aus dem Rückgriffregister nachgeladen werden kann.
- 7. Anordnung nach Patentanspruch 6, dadurch gekennzeichnet, dass bei Decodierung des einzelnen bestimmten Befehls (RAL) das Verschieben der Inhalte zwischen Rückgriffregister (11) und Verbindungsregister (6) unterbunden wird.
- 8. Verfahren zum Betrieb der Anordnung nach Patentanspruch 1, dadurch gekennzeichnet, dass zum Wechsel zwischen zwei Programmen in beiden Programmen der einseine bestimmte Befehl (RAL) verwendet wird, so dass nach Initialisieren des Inhaltes des Verbindungsregisters jeweils nur die Ausführung dieses einen Befehls zum Wechsel in beiden Richtungen erforderlich ist.9Θ9827/0737
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US05/866,425 US4173782A (en) | 1978-01-03 | 1978-01-03 | Return and link mechanism |
Publications (2)
Publication Number | Publication Date |
---|---|
DE2854400A1 true DE2854400A1 (de) | 1979-07-05 |
DE2854400C2 DE2854400C2 (de) | 1983-12-22 |
Family
ID=25347587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE2854400A Expired DE2854400C2 (de) | 1978-01-03 | 1978-12-16 | Anordnung zum Wechsel zwischen verzahnt zu verarbeitenden Programmen |
Country Status (12)
Country | Link |
---|---|
US (1) | US4173782A (de) |
JP (1) | JPS5495140A (de) |
AU (1) | AU4306079A (de) |
BR (1) | BR7900028A (de) |
CA (1) | CA1103365A (de) |
CH (1) | CH635451A5 (de) |
DE (1) | DE2854400C2 (de) |
ES (1) | ES476361A1 (de) |
FR (1) | FR2413715B1 (de) |
GB (1) | GB2011674A (de) |
IT (1) | IT1160340B (de) |
SE (1) | SE7813379L (de) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4309753A (en) * | 1979-01-03 | 1982-01-05 | Honeywell Information System Inc. | Apparatus and method for next address generation in a data processing system |
US4296470A (en) * | 1979-06-21 | 1981-10-20 | International Business Machines Corp. | Link register storage and restore system for use in an instruction pre-fetch micro-processor interrupt system |
US4410940A (en) * | 1980-12-05 | 1983-10-18 | International Business Machines Corporation | Transfer of control method and means among hierarchical cooperating sequential processes |
US4649472A (en) * | 1981-02-04 | 1987-03-10 | Burroughs Corporation | Multi-phase subroutine control circuitry |
US4467410A (en) * | 1981-02-04 | 1984-08-21 | Burroughs Corporation | Multi-phase subroutine control circuitry |
US4939640A (en) * | 1981-05-22 | 1990-07-03 | Data General Corporation | Data processing system having unique microinstruction control and stack means |
US4494193A (en) * | 1982-09-30 | 1985-01-15 | At&T Bell Laboratories | Deadlock detection and resolution scheme |
GB8602964D0 (en) * | 1986-02-06 | 1986-03-12 | Metaforth Computer Systems Ltd | Computer architecture |
JP2545789B2 (ja) * | 1986-04-14 | 1996-10-23 | 株式会社日立製作所 | 情報処理装置 |
JPS6378231A (ja) * | 1986-09-22 | 1988-04-08 | Nec Corp | 部分的プログラム結合方式 |
US5835743A (en) * | 1994-06-30 | 1998-11-10 | Sun Microsystems, Inc. | Application binary interface and method of interfacing binary application program to digital computer |
US6154865A (en) * | 1998-11-13 | 2000-11-28 | Credence Systems Corporation | Instruction processing pattern generator controlling an integrated circuit tester |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2258460A1 (de) * | 1971-11-30 | 1973-06-07 | Matsushita Electric Ind Co Ltd | Programmierbare steueranordnung |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3309672A (en) * | 1963-01-04 | 1967-03-14 | Sylvania Electric Prod | Electronic computer interrupt system |
US3676852A (en) * | 1970-07-20 | 1972-07-11 | Ibm | Multiple program digital computer |
US3693162A (en) * | 1970-10-14 | 1972-09-19 | Hewlett Packard Co | Subroutine call and return means for an electronic calculator |
JPS535140B2 (de) * | 1973-07-11 | 1978-02-24 | ||
US3972029A (en) * | 1974-12-24 | 1976-07-27 | Honeywell Information Systems, Inc. | Concurrent microprocessing control method and apparatus |
-
1978
- 1978-01-03 US US05/866,425 patent/US4173782A/en not_active Expired - Lifetime
- 1978-10-27 CA CA314,552A patent/CA1103365A/en not_active Expired
- 1978-12-05 FR FR7836052A patent/FR2413715B1/fr not_active Expired
- 1978-12-11 GB GB7847970A patent/GB2011674A/en not_active Withdrawn
- 1978-12-12 JP JP15277078A patent/JPS5495140A/ja active Granted
- 1978-12-15 IT IT30868/78A patent/IT1160340B/it active
- 1978-12-16 DE DE2854400A patent/DE2854400C2/de not_active Expired
- 1978-12-19 CH CH1290978A patent/CH635451A5/de not_active IP Right Cessation
- 1978-12-27 ES ES476361A patent/ES476361A1/es not_active Expired
- 1978-12-28 SE SE7813379A patent/SE7813379L/xx unknown
-
1979
- 1979-01-02 AU AU43060/79A patent/AU4306079A/en not_active Abandoned
- 1979-01-03 BR BR7900028A patent/BR7900028A/pt unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2258460A1 (de) * | 1971-11-30 | 1973-06-07 | Matsushita Electric Ind Co Ltd | Programmierbare steueranordnung |
Non-Patent Citations (1)
Title |
---|
US-Firmendruckschrift: Advanced Micro Devices, Microprogramming Handbook, 1976, S. 1-1 bis 1-6 * |
Also Published As
Publication number | Publication date |
---|---|
ES476361A1 (es) | 1979-07-16 |
GB2011674A (en) | 1979-07-11 |
CH635451A5 (de) | 1983-03-31 |
SE7813379L (sv) | 1979-07-04 |
DE2854400C2 (de) | 1983-12-22 |
US4173782A (en) | 1979-11-06 |
FR2413715A1 (fr) | 1979-07-27 |
CA1103365A (en) | 1981-06-16 |
FR2413715B1 (fr) | 1986-02-21 |
IT1160340B (it) | 1987-03-11 |
JPS5495140A (en) | 1979-07-27 |
AU4306079A (en) | 1979-07-12 |
JPS5715422B2 (de) | 1982-03-30 |
IT7830868A0 (it) | 1978-12-15 |
BR7900028A (pt) | 1979-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2755273C2 (de) | ||
DE2555963C2 (de) | Einrichtung zur Funktionsmodifizierung | |
DE2251876C3 (de) | Elektronische Datenverarbeitungsanlage | |
DE1931966C3 (de) | Datenverarbeitungsanlage mit Assoziativspeichern | |
DE2318069C2 (de) | Mikroprogrammierte Rechenanlage mit Erweiterung von Steuerfunktionen mittels festverdrahteter logischer Matrix | |
DE2935906C2 (de) | Mikroprozessor | |
DE2322674B2 (de) | Mikroprogramm-Steuereinrichtung | |
CH650600A5 (de) | Zentralprozessoreinheit einer datenverarbeitungsanlage mit operationscode-erweiterungsregister. | |
DE1275800B (de) | Steuerwerk fuer datenverarbeitende Maschinen | |
DE2339636A1 (de) | Programmsteuereinrichtung | |
EP0010185A1 (de) | Virtuell-Adressiervorrichtung für einen Computer | |
DE2854400A1 (de) | Anordnung zum wechsel zwischen verzahnt zu verarbeitenden programmen | |
DE3802025C1 (de) | ||
DE2245284A1 (de) | Datenverarbeitungsanlage | |
DE2418921C2 (de) | Vorrichtung zum Speichern von Mikroprogrammen in einer Datenverarbeitungsanlage | |
DE3344340C2 (de) | Datenverarbeitungsanordnung zum Durchführen von Mikrobefehlen | |
EP1278120A1 (de) | Controller und Verfahren zum Ansteuern einer zentralen Verarbeitungseinheit für eine Speicheradressierung | |
DE2622140C3 (de) | Einrichtung zur Steuerung manueller Operationen | |
EP0073004B1 (de) | Zentraleinheit eines digitalen Mehrbit-Rechensystems | |
DE2951405A1 (en) | A computer system having enhancement circuitry for memory accessing | |
DE2261221C2 (de) | Steuerwerk in einer Datenverarbeitungsanlage | |
DE2345098C3 (de) | Steuerwerk für einen Prozessor eines Rechners | |
DE2033709A1 (de) | Assoziativspeicheranlage | |
DE2013259B2 (de) | Datenverarbeitungsanlage | |
DE2122659A1 (de) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OAP | Request for examination filed | ||
OD | Request for examination | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |