DE2714805C2 - - Google Patents
Info
- Publication number
- DE2714805C2 DE2714805C2 DE2714805A DE2714805A DE2714805C2 DE 2714805 C2 DE2714805 C2 DE 2714805C2 DE 2714805 A DE2714805 A DE 2714805A DE 2714805 A DE2714805 A DE 2714805A DE 2714805 C2 DE2714805 C2 DE 2714805C2
- Authority
- DE
- Germany
- Prior art keywords
- register
- word
- address
- memory
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired
Links
- 230000015654 memory Effects 0.000 claims description 143
- 238000012546 transfer Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims 1
- 238000012360 testing method Methods 0.000 description 39
- 238000010586 diagram Methods 0.000 description 9
- 230000015572 biosynthetic process Effects 0.000 description 7
- 238000000034 method Methods 0.000 description 7
- 230000000873 masking effect Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000003754 machining Methods 0.000 description 1
- 238000004713 multireference configuration interaction Methods 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
Description
Die vorliegende Erfindung bezieht sich auf eine Adressiervorrichtung
nach dem Gattungsbegriff des Patentanspruchs 1.
Eine derartige Adressiervorrichtung, bei der mittels einer
Basisadresse und eines abgespeicherten Indexwertes eine
indizierte Adressierung vorgenommen wird, ist beispielsweise
aus der US-PS 33 43 138 bekannt. Ferner ist es aus der
DE-AS 12 70 305 bekannt, über Makrobefehle in einem Steuerspeicher
abgespeicherte Mikrobefehle aufzurufen, die zur
Verwirklichung eines Unterprogrammes in fortlaufender Folge
abgearbeitet werden.
Bei der bekannten indizierten Adressierung wird immer der
vollständige Indexwert von einem Indexregister in ein Steuerregister
übernommen, wodurch lediglich eine Adressierung auf
einer Wortbasis möglich ist.
Ausgehend von der bekannten indizierten Adressierung ist es
die Aufgabe der vorliegenden Erfindung, eine Adressiervorrichtung
anzugeben, mit der - ausgehend von einer Wortadressierung -
die Adressierung auch auf eine tieferliegende
Ebene ausgedehnt werden kann. Die Lösung dieser Aufgabe
gelingt gemäß den kennzeichnenden Merkmalen des Patentanspruches 1.
Vorteilhafte Ausgestaltungen der erfindungsgemäßen
Adressiervorrichtung sind den Unteransprüchen
entnehmbar.
Mit der erfindungsgemäßen Adressiervorrichtung können Bytes
und Bits zusammen mit der normalerweise vorgesehenen
Wortadressierung in wirksamer Weise adressiert werden. Die
Möglichkeit einer guten Bytebearbeitung erleichtert z. B. das
Schreiben kompakter Computerprogramme. Solche Programme
werden gewöhnlich bei einem Datendialog verwendet. Die
Möglichkeit einer Bitbearbeitung erleichtert ferner die
kompakte Speicherung von Ein/Ausgabe-Hinweisen und ähnlicher
Größen, die durch ein Bit darstellbar sind. Diese
Bearbeitungsmöglichkeit führt zu einem kompakteren und
wirksameren Programm, wenn auf die Speicherdaten Bit für Bit
Zugriff genommen wird. Die praktische Anwendung dieser
Adressiermöglichkeiten führt im Ergebnis zu einem geringeren
Zeitaufwand und zu einem geringeren Speicheraufwand.
Anhand eines in den Figuren der beiliegenden Zeichnung
dargestellten Ausführungsbeispieles sei im folgenden die
Erfindung näher erläutert. Es zeigt
Fig. 1 ein allgemeines Blockdiagramm des die vorliegende
Erfindung aufweisenden Gesamtsystems;
Fig. 2 ein allgemeines Blockdiagramm der Mikroprozessorlogik,
wie sie in dem Datenprozessor gemäß Fig. 1
benutzt wird;
Fig. 3 ein Blockdiagramm der Firmware-Routinen in dem Steuerspeicher
des Datenprozessors gemäß Fig. 1;
Fig. 4 den Aufbau eines Firmware-Wortes im Steuerspeicher;
Fig. 5 und 6 ein Flußdiagramm zur Erläuterung der Art und
Weise, in der die individuellen Formware-Worte die
Operation gemäß der vorliegenden Erfindung in Zusammenhang
mit dem Steuerspeicher und Prozessor gemäß Fig. 1
steuern;
Fig. 7 ein Blockdiagramm zur Darstellung der Art und Weise,
in der Worte, Bytes oder Bits wirksam in einem Speicher
des Datenprozessors gemäß Fig. 1 adressiert werden;
Fig. 8 ein Blockschema zur Veranschaulichung der Art und Weise,
in der ein einzelnes Byte eines Multibyte-Wortes in
Bezug auf einen Speicher des Datenprozessors gemäß Fig. 1
entweder gelesen oder geschrieben werden kann;
Fig. 9 ein Blockdiagramm zur Veranschaulichung, wie ein Byte
oder Bit wirksam durch den Datenprozessor gemäß Fig. 1
adressiert werden kann;
Fig. 10 ein detailliertes Blockdiagramm der Testlogik des
Datenprozessors gemäß Fig. 1; und
Fig. 11 ein detailliertes Blockdiagramm der Erzeugungslogik
für die nächste Adresse des Datenprozessors gemäß
Fig. 1.
Das Datenverarbeitungssystem gemäß Fig. 1 weist einen Steuerspeicher
10 auf, der beispielsweise 512 Speicherplätze mit 56
Bits umfaßt. Ein jeder solcher Speicherplatz ist in der Lage,
ein Firmware-Wort zu speichern, wobei solche Firmware-Worte benutzt
werden, um verschiedene Hardware-Operationen innerhalb des
Datenprozessors zu steuern. Es liegt auf der Hand, daß die Anzahl
dieser Speicherplätze und/oder Firmware-Worte und die Anzahl der
Bits in diesem Wort vergrößert oder verkleinert werden kann,
ohne daß hierdurch der Rahmen der vorliegenden Erfindung verlassen
wird. Die Operation eines Steuerspeichers und die Befehlsdecodierung
desselben werden in einem Artikel mit dem Titel
"Designing Optimized Microprogrammed Control Sections for
Microprocessors" von G. W. Schultz beschrieben, der in dem
Computer Design Magazine, April 1974 auf Seite 119 veröffentlicht
ist.
Der Datenprozessor gemäß Fig. 1 weist ferner eine Register- und
Logikeinheit RALU-12 auf, die auch als Mikroprozessor bezeichnet
werden kann. Fig. 2 zeigt in einem Blockdiagramm Einzelheiten der
Einheit RALU-12. Am allgemeinen ist die Einheit RALU-12 in vier
Bereiche unterteilt, die eine Registerdatei, eine Verschiebelogik,
eine Rechenlogik und eine Steuerlogik umfassen. Die Registerdatei
umfaßt Datenregister, Arbeitsregister und Basisregister.
Die Verschiebelogik wird während Verschiebeoperationen
und normaler Datenübertragungen benutzt. Die Rechenlogik umfaßt
verschiedene Verriegelungen oder Puffer, Multiplexer, Inverter
und eine Addiereinheit. Die Steuerlogik weist eine Auswahllogik
auf zum Auswahl desjenigen Teiles der Daten, der verarbeitet werden
soll.
Die Zentraleinheit gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung umfaßt verschiedene
Register, die zwar für die vorliegende Erfindung nicht von
wesentlichem Interesse sind aber zum Zwecke des allgemeinen
besseren Verständnisses hier erläutert werden. Das Status/Sicherheitsregister
14 enthält den Systemstatus und bestimmte Sicherheitskennschlüssel.
Dieses Register weist Bitgelder auf, die angeben,
ob sich das System im privilegierten Zustand (P) oder im
Benutzerzustand befindet. Während des Benutzerzustandes können
die entsprechenden Befehle anstelle ihrer Ausführung eine sogenannte
Abfangroutine aufrufen. Das Register 14 umfaßt ferner ein
Feld, das die Identifizierungsnummer des Prozessors angibt und
das während der Systemkonfiguration gesetzt wird. Das Register 14
umfaßt ferner ein Feld zur Vorgabe des Unterbrechungs-Prioritätspegels
der Zentraleinheit. Alle an das System angeschlossene Geräte
weisen einen bestimmten Unterbrechungspegel auf. Das in der
Zentraleinheit gerade ablaufende Programm wird unterbrochen, wenn
das Gerät eine Unterbrechungspegelzahl aufweist, die niedriger
ist als die Unterbrechungspegelzahl des gerade laufenden Programms.
Das Indikatorregister (I) 16 enthält den Überlauf und die Programmstatusindikatoren.
Dieses Register 16 weist ferner verschiedene
Felder auf, unter denen sich solche befinden, die das
Ergebnis irgendeines in dem System durchgeführten Vergleichs
anzeigen und auf den Status des zuletzt abgefragten peripheren
Gerätes hinweisen. Ein weiteres Feld zeigt den Status des zuletzt
geprüften Bits an.
Das Register M 1-18 enthält Steuerkennschlüssel für den Abfang-
Freigabemodus, die ein Feld für die Freigabe einer Abfangspur
aufweisen, beispielsweise eines Abfangs zur Unterstützung der Verfolgung
einer Computerprogrammoperation, wobei von Sprung und Verzweigungsbefehlen
Gebrauch gemacht wird.
Der Programmzähler P 20 wird beispielsweise durch ein 16 Bit-
Register gebildet, das normalerweise die Adresse des gerade bearbeiteten
Befehls enthält. Das Register Y-22, beispielsweise das
Speicheradressenregister, wird ebenfalls beispielsweise durch ein
16-Bit-Register gebildet, das normalerweise die Adresse enthält,
unter der auf die im Speicher angeordneten Daten Zugriff genommen
wird. Das Datenschienen-Datenregister BD-24 kann ebenfalls ein
16-Bit-Register sein, das Daten von der Datenschiene aufnimmt,
wobei dies über die Empfangslogik 26 geschieht. Die Logik 26 verteilt
die Daten in dem Prozessor über die interne Datenschiene 28.
Das Unterbrechungsregister L-30 stellt ebenfalls beispielsweise
ein 16-Bit-Register dar, das die Kanalnummer und den Pegel eines
unterbrechenden Gerätes über die Empfangsleitungen 26-R aufnimmt.
Das Register XB-32 ist beispielsweise ein 4-Bit-Register, das für
eine Bit- und Byte-Indizierung innerhalb des Prozessors benutzt
wird. Der Ausgang dieses Registers ist sowohl an die interne
Datenschiene 28 als auch an die Decodierlogik 34 angeschlossen.
Das befehlsregister S-36 ist beispielsweise ein 16-Bit-Register,
das das vom Speicher erhaltene Befehlswort aufnimmt, wobei der
Speicher an die externe Datenschiene angeschlossen sein kann.
Die Konstanten-Generatorlogik 40 erzeugt bestimmte Konstanten für
die Dreizustands-Steuerlogik 42, die zusammen mit der in dem
Steuerspeicher 10 enthaltenen Prozessor-Firmware benutzt werden.
Die Decodierlogik 34 weist einen 4 zu 16 Bit-Multiplexer auf,
der für die Erzeugung einer Maske für Bit-Operationen benutzt
wird. Dabei wird eines der 16 Bit für einen Test durch die in
dem Steuerspeicher 10 enthaltene Firmware ausgewählt. Die Eingangs-
Doppellogik 44 vermittelt die Möglichkeit, entweder das signifikanteste
(linksstehende) Zeichen (Byte) zu duplizieren oder
eine direkte Übertragung von der internen Datenschiene 28 zu
der Einheit RALU-12 durchzuführen. Die Ausgangs-Doppellogik 61
vermittelt ähnliche Möglichkeiten, wie dies anhand Fig. 8 beschrieben
wird.
Die interne Datenschiene-Steuerlogik 48 benutzt die Bits 26 bis
31 des Firmware-Wortes im Steuerspeicher 10, um den Inhalt von
ausgewählten Prozessorregistern auf die interne Datenschiene 28
über die Dreizustandslogik 42 zu schalten. Bestimmte Gatterelemente
der Logik 48 sind in Fig. 9 dargestellt. Die Multiplexerlogik
42 enthält die logischen Schaltkreise, durch die Daten zu
der internen Datenschiene 28 übertragen werden, wobei zu jedem
Zeitpunkt jeweils nur ein Eingang für die Übertragung freigegeben
wird.
Die Testlogik 50 wählt beispielsweise eine von 64 möglichen Testbedingungen
aus, wobei die Steuerspeicherbits 40 bis 45 benutzt
werden. In Abhängigkeit davon, ob die getestete Bedingung erfüllt
ist oder nicht, wird das Signal TSTRUE oder
zu der die nächste Adresse erzeugenden Logik 52 übertragen. In
diesem Zusammenhang sei auf die Fig. 10 und 11 verwiesen.
Der Prozessor benutzt eines von zwei Verfahren, um die nächste
Firmware-Adresse zu erzeugen. Das erste Verfahren benutzt die
Bits 46 bis 55 des Steuerspeicherwortes, um die nächste Adresse
zu bilden. Die Bits können beispielsweise ein 10-Bit-Adressenfeld
(nächste Adresse, NA) umfassen, wodurch einer von 1024 Steuerspeicherplätzen
direkt adressiert werden kann. Das zweite Verfahren
gewinnt die nächste Adresse durch logische Schaltkreise,
die ihrerseits verschiedene vorbestimmte Adressen aufweisen. Die
ausgewählte Adresse wird hierbei grundsätzlich durch eine Decodierung
des Inhalts des Registers S-36 und der Ausgänge des
Steuerspeichers 10 gewonnen.
Die interne Datenschiene BI-28 weist beispielsweise eine Datenbreite
von 15 Bit auf und wird primär zur Datenübertragung zwischen
den Registern des Prozessors benutzt. Speicheradressen und
Daten werden ebenfalls über die interne Datenschiene 28 zu der
externen Datenschiene übertragen. Das Adressen-Datenschienenregister
56 besitzt beispielsweise eine Breite von 16 Bit und wird
für die Übertragung von Adressen sowie von Speicherlese- und
Speicherschreibzyklen zu der Logik 26-R und 26-T benutzt. Die
Sende/Empfangslogik 26 (26-R und 26-T) umfaßt logische Schaltkreise,
die die einzige Schnittstelle zwischen der Zentraleinheit
und der externen Datenschiene bilden. Alle Daten, Adressen und
Unterbrechungssignale müssen die Sende/Empfangslogik 26 durchlaufen.
Die Auswahl-Modifizierlogik SM-58 legt fest, welche Bits des Registers
S-36 zur Modifikation der Register-Datenauswahl benutzt
werden, wobei dies durch die Felder LS und RS geschieht, d. h. durch
die Auswahlfelder des Steuerspeicherwortes des Steuerspeichers 10
für die linke und rechte Hälfte. Die Logik SM-58 schaltet die S-
Registerbits 1 bis 3, 10 bis 11 und 13 bis 15 oder 12 bis 15 in
Abhängigkeit von der Konfiguration der Steuerspeicherbits 20, 24 und 25 sowohl auf die Auswahllogik für die linke als auch für
die rechte Hälfte, d. h. auf die LS-Logik 60 und die RS-Logik 62.
Die LS- und RS-Logik benutzt den Ausgang des Auswahlmodifizierers 58
und den Inhalt der Steuerspeicherbits 0 bis 3 oder 4 bis 7 für die
Registerauswahl. Die Steuerspeicherbits 0 bis 3 werden von dem
Selektor für die linke Hälfte benutzt. Die Steuerspeicherbits 4-7
werden von dem Selektor für die rechte Hälfte benutzt.
Die externe Datenschiene gibt einen gemeinsamen Datenverbindungsweg
bzw. eine Schnittstelle für alle Einheiten einschließlich
des Speichers des Systems vor. Die externe Datenschiene weist
hierzu einen unterschiedlichen Aufbau auf und Einheiten mit
unterschiedlicher Geschwindigkeit werden von dem System betätigt,
wobei drei Arten von erlaubter Datenverbindung auftreten, nämlich
Speicherübertragungen, Ein/Ausgabeübertragungen und Unterbrechungen.
An die externe Datenschiene können die Zentraleinheit,
eine Speichereinheit, periphere Gerätesteuerungen, Datenverbindungssteuerungen
und ähnliche Einheiten angeschlossen werden.
Die zuvorerwähnten Register usw. sind in einer Veröffentlichung
der Honeywell Information Systems Ins. näher beschrieben, die im
Januar 1976 unter dem Titel "Honeywell Level 6 Minicomputer Handbook"
erschienen ist und unter der Bestellnummer AS 22 bezogen
werden kann.
Gemäß Fig. 2 ist die Register- und Logikeinheit RALU-12 in näheren
Einzelheiten dargestellt. Die Einheit RALU-12 kann 4-Mikro-
Steuereinheiten des Modelles 6701 der Monolithic Memories Inc.
aufweisen, die in einer entsprechenden Veröffentlichung dieser
Firma vom August 1974 beschrieben sind. Wie zuvor erwähnt, ist
die Einheit RALU-12 in vier Basisbereiche unterteilt, insbesondere
in eine Registerdatei, eine Verschiebelogik, eine Rechenlogik
und eine Steuerlogik. Die Registerdatei 70 umfaßt Datenregister
D 1 bis D 7, Arbeitsregister D 0 (oder D) und E und Basisregister
B 1-B 7. Die Register D 1 bis D 7 stellen beispielsweise
Operandenregister für 16 Bit-Worte dar, wobei das Bit Null als
das signifkanteste Bit zu betrachten ist. Die Register D und E
sind ebenfalls beispielsweise 16 Bit-Register und werden während
Firmware-Operationen zur Datenbehandlung benutzt. Das Register D
speichert hierbei eine Kopie des Inhalts des Befehlsregisters F-36.
Die Basisregister sind ebenfalls 26 Bit-Adreßregister, die zur
Bildung von Adressen benutzt werden können, indem auf irgendeine
Prozedur, Daten oder eine beliebige Stelle in dem System verwiesen
wird. Die Basisregister besitzen ebenfalls die Möglichkeit der
Selbstinkrementierung und Selbstdekrementierung, wodurch sie in
einfacher Weise in Stapeln, Warteschlangen und Programmschleifenoperationen
benutzt werden können.
Die Multiplexer-Verschiebelogik 80 und 82 umfaßt in erster Linie
zwei 16-Bit-Multiplexer, die sowohl für Verschiebeoperationen
als auch für normale Datenübertragungen benutzt werden. Ein zusätzliches
16-Bit-Register Q-76 ist für Deoppeloperandenverschiebungen
vorgesehen. Die Daten können um 1 Bit nach links
oder rechts zwischen den Multiplexern und irgendeinem Datenregister
innerhalb der Registerdatei 70 verschoben werden. Im
Falle der vorliegenden Erfindung enthält das Register Q-76
normalerweise eine nicht-indizierte Adresse und das Register E(B 0)
einen Indexwert.
Die Rechenlogik umfaßt zwei 16-Bit-Verriegelungsschaltkreise 84
und 86, zwei 2 zu 1-Multiplexer 88 und 90, zwei 16-Bit-Inverter
92 und 94, eine Addiereinheit 96 und einen Ausgangsmultiplexer 98.
Die dem Eingang L 100 zugeordnete Verriegelung empfängt Daten aus
der Registerdatei 70, die von der Ausfallogik 60 für die linke Hälfte
ausgewählt wurden. In gleicher Weise empfängt die an den Eingang
R-102 angeschlossene Verriegelung Daten von der Registerdatei 70,
die von der Auswahllogik 62 für die rechte Hälfte ausgewählt
wurden. Die Ausgänge dieser Veriegelungen sind sowohl auf die
beiden 2 zu 1-Multiplexer 88 und 90 als auch auf den Ausgangsmultiplexer
98 geführt. Der Multiplexer 88 erhält Daten von der
internen Datenschiene 28 über den Eingang D-104 und von den an
den Eingang L-100 angeschlossenen Verriegelungen 84. Der Multiplexer
90 erhält Daten von dem Register Q-76 über den Eingang Q-106
und von den an den Eingang R-102 angeschlossenen Verriegelungen
86. Die Ausgänge dieser Multiplexer sind über Inverter 92
und 94 an entsprechende Eingänge L und R der Addiereinheit 96
gelegt. Die Addiereinheit 96 führt alle arithmetischen Operationen
aus. Zusätzlich zu den Eingängen L und R wird ein zusätzlicher
Eingang durch das Bit 16 des Steuerspeicherwortes (Übertragseingabe)
vorgegeben. Der Ausgang des Addierers 96 ist einerseits
auf den Ausgangsmultiplexer 98 und andererseits auf die Eingangsmultiplexer/
Verschiebelogik 80 und 82 geführt. Der Ausgangsmultiplexer
98 stellt den Hauptausgang der Einheit RALU-12 dar.
Daten des Ausgangsmultiplexer 98 werden auf die interne Datenschiene
28 zwecks Verteilung in dem Prozessor gegeben.
Im folgenden sei der in den Fig. 1 und 2 dargestellte Prozessor
und seine Operation näher beschrieben. Die Zentraleinheit ist um
eine einzige interne Datenschiene 28 angeordnet, die die Bausteine
der Prozessorlogik untereinander verbindet und über die
Empfangseinheit 26-R sowie die Sendeeinheit 26-T eine Verbindung
zu der externen Datenschiene herstellt. Wie zuvor erwähnt, bildet
das Register Y-22 das Speicheradressenregister und das Register
S-36 wird während des Befehlsabrufes zur Aufnahme eines Befehlswortes
benutzt. Die verschiedenen Bits auf der internen Datenschiene
28 werden als Eingang für die Testlogik 50 benutzt, um
Firmware-Verzweigungsentscheidungen zu treffen. Die in verschiedenen
Bits der internen Datenschiene 28 enthaltene Information
kann in der Testlogik 50 und irgendeinem von verschiedenen
Hardware-Steuer-Flip-Flops 54 gespeichert werden. Die interne
Datenschiene 28 bildet ebenfalls einen Eingang für die Einheit
RALU-12.
Die interne Datenschiene 28 wird durch verschiedene Elemente gesteuert.
Diese Elemente umfassen den Konstantengenerator 40, der
durch die Firmware gesteuert wird, die Einheit RALU-12 und das
Byte-Auswahlregister XB-32, das von der Einheit RALU-12 durch
eine Verschiebung geladen wird.
Der laufende Befehl ist dynamisch am Ausgang des Steuerspeichers
10 verfügbar und wird teilweise durch verschiedene logische Elemente
decodiert und sodann zur Erzeugung von Operationen im Hinblick
auf die verbleibenden Elemente des Systems benutzt. Die
Generatorlogik 52 zur Erzeugung der nächsten Adresse benutzt das
Adreßfeld für die nächste Adresse in dem Steuerspeicherwort, d. h.
das Firmware-Wort, und erzeugt eine neue Adresse in Abhängigkeit
hiervon und in Abhängigkeit von Testbedingungen, die durch die
Testlogik 50 erzeugt werden. Der Steuerspeicher 10 schreitet zu
der nächsten Adresse fort, wobei dies pro Prozessortaktzyklus geschieht,
der sich in der Größenordnung von einigen Hundert
ns bewegt.
Eine Verzweigung in der Firmware erfolgt beispielsweise durch
Überwachen des Steuerspeichers durch die Testlogik 50. Die Testlogik
50 benutzt den Inhalt der internen Status-Flip-Flops 54,
den Zustand der internen Datenschiene 28 und den Inhalt des Registers
F-36, um zu entscheiden, ob irgendeine Testbedingung erfüllt
ist oder nicht. Diese Testbedingung bildet einen Eingang
für die Erzeugungslogik der nächsten Adresse, wie zuvor erwähnt.
Diese Testbedingung wird ferner benutzt, um zwei Arten der Adreßbildung
während verschiedener Typen der Verzweigungsoperation
auszuwählen. Die XA-Verzweigung, die unter den Eintrittsstellen
in der Firmware hinsichtlich der verschiedenen Arten der Adreßbildung
auswählt, trifft eine Entscheidung, die weitgehend auf
dem Inhalt des Registers S-36 basiert. Die XR-Verzweigung, die
den Abruf von Operanden aus dem Speicher betrifft, trifft die Entscheidung
über die Eintrittsstelle weitgehend aufgrund des
Operationscodefeldes des Registers F-36. Als weiteres Beispiel
basiert die XE-Verzweigung nahezu ausschließlich auf dem Operationscode
des Befehls und wird durch die Operationscodebits des
Registers F-36 freigegeben. Die XW-Verzweigung, die die Art und
Weise festlegt, in der der Operand in den Speicher zurückzuschreiben
ist, wird aufgrund der Art des Operationscodes und in
Abhängigkeit des Zustandes der internen Status-Flip-Flops 24
ausgeführt.
Wie zuvor erwähnt, sind dem Eingang und dem Ausgang der Einheit
RALU-12 jeweils Schaltkreise zugeordnet, die den Dateneingang und
den Datenausgang zu und von der internen Datenschiene 28 verdoppeln
können. Unter Benutzung der Eingangs-Verdopplungslogik 44
kann man entweder die 16 Bits von der internen Datenschiene 28
direkt zu der Einheit RALU-12 übertragen oder alternativ hierzu
können die acht signifikanten Bits, d. h. die acht am weitesten
links stehenden Bits in beide Byte-Positionen eines Wortes in der
Einheit RALU-12 dupliziert werden. In gleicher Weise ist ein
Verdopplungsschaltkreis 61 am Ausgang der Einheit RALU-12 vorgesehen,
durch den die interne Datenschiene 28 von beiden Hälften
des Ausgangs der Einheit RALU-12 angesteuert werden kann, wobei
dies gemäß Fig. 8 durch den linken und rechten Ausgang des
Addierers 96 geschieht. Die rechte Hälfte des Ausgangs der Einheit
RALU-12, d. h. die am wenigsten signifikanten Bits können
in beide Byte-Positionen des Wortes dupliziert werden, wenn dieses
zu der internen Datenschiene 28 übertragen wird.
Eine Verschiebung des Inhalts der Indexregister ist für eine bestimmte
Adressierung vorgesehen und wird ausgeführt, indem der in
dem Indexregister gespeicherte Indexwert verschoben wird. Gewöhnlich
geschieht des hinsichtlich des Registers E der Registerdatei
70. Während der Indizierung werden hierbei Bits auf der
linken oder rechten Seite des Registers herausgeschoben.
Die Steuer-Flip-Flops, d. h. die Hardware-Flip-Flops 54, die in
näheren Einzelheiten nicht dargestellt sind, umfassen verschiedene
Flip-Flops. Eines wird benutzt, um anzuzeigen, ob der gerade ausgeführte
Befehl ein auf den Speicher bezogener Befehl ist oder
nicht. Ein anderes Flip-Flop wird benutzt, um anzuzeigen, ob der
Ausgang der Einheit RALU-12 den Wert Null zu einem vorausgegangenen
Zeitpunkt aufwies oder nicht.
Das Register S-36 besteht aus einem statischen Register von
12 Bit und einem dynamischen Zähler von 4 Bit. Die vier rechts
stehenden Bits des Registers F, d. h. die Bits 12-15 werden als
ein Zähler benutzt, der auf Null heruntergezählt werden kann und
dessen Inhalt beim Gebrauch durch die Erzeugungslogik für die
nächste Adresse getestet werden kann. Es werden hierbei Verschiebungen
gezählt, d. h. dieser Teil des Registers F wird mit der
Verschiebedistanz geladen, wenn eine Verschiebung ausgeführt wird.
Es wird ebenfalls bei den Schleifen benutzt, die das Register im
Speicher sichern, um nacheinander durch die 16 Register der
Registerdatei 70 durchzuzählen.
Die Testlogik 50 umfaßt mehrere Selektoren, die durch verschiedene
Steuerspeicher- und Operationscodebedingungen gesteuert
werden und die jene Tests ausführen, die mit der Firmware während
der Firmware-Ausführung zum Treffen von Entscheidungen benutzt
werden.
Die Logik 80 und 82 bildet jenen Teil der Einheit RALU-12, der
entweder die Übertragung des Ausgangs des Addierers 96 nach der
Registerdatei 70 oder nach dem Register Q-76 bewirkt oder die
Verschiebung des Ausgangs des Addierers 96 um 1 Bit nach links
oder um 1 Bit nach rechts hervorruft. Die Logik 80 ist direkt
an die Register der Registerdatei 70 angekoppelt. Wenn der Eingang
der Registerdatei 70 entweder um 1 Bit nach rechts oder um 1 Bit
nach links verschoben wird, so wird der zugeordnete Verschiebeeingang
von dem Ausgang des Addierers 96 zwecks Lieferung des
fehlenden Bits erzeugt und das andere Bit wird herausgeschoben.
Das Register E wird innerhalb der Registerdatei 70 ist jenes Register,
das den Indexwert aufweist.
Die Auswahllogik 60 für die linke Hälfte, die Auswahllogik 62
für die rechte Hälfte und die Auswahlmodifizierungslogik 58, die die
Logikschaltkreise 72 und 74 umfaßt, bilden ebenfalls einen Teil
der Steuerlogik der Einheit RALU-12. Der Ausgang des Auswahlmodifizierers
58 zusammen mit den Steuerspeicherbits 0-7 bestimmt
den Ausgang der Selektoren 60 und 62 für die linke und
rechte Hälfte. Die Steuerspeicherbits 8-15 steuern die folgenden
Bereiche der Einheit RALU-12: Die Bits 8-12 steuern den
Addierer 96 und die Multiplexer und Inverter 88, 90, 92 und 94.
Die Bits 13-15 steuern die Multiplexer 80, 82 und 98. Wie
bereits erwähnt, weist der Steuerspeicher 10 eine Vielzahl von
Firmware-Worten auf, die für die Steuerung der verschiedenen
Operationen des Prozessors benutzt werden. Fig. 3 zeigt ein Flußdiagramm
dieser Firmware sowie ferner alle wichtigen Verzweigungen
zwischen den wichtigen Firmware-Routinen.
In die Initialisierungsroutine 110 wird nach einer Hauptlöschung
des Systems eingetreten. Durch diese Routine wird der Inhalt verschiedener
Register des Prozessors sowie verschiedener Flip-Flops
gelöscht und diese Routine stellt fest, ob die Steuertafel
verriegelt ist oder nicht, d. h. ob alle Steuertafelschalter
usw. gesperrt sind. Die Steuertafel stellt ein weiteres
Element dar, das in dem Prozessor enthalten sein kann, das
jedoch für den Betrieb desselben nicht von wesentlicher Bedeutung
ist und daher hier nicht dargestellt ist. Wenn die Steuertafel
verriegelt ist, so wird durch die Befehlsabrufroutine 112
eine Verzweigung ausgeführt oder andernfalls in die Steuerfeldroutine
114 eingetreten. Die Befehlsabrufroutine 112 wird benutzt,
um den nächsten Befehl zu erhalten. Wenn dieser Befehl dem Speicher
entnommen ist, so wird er in das Befehlsregister S-36 und
das Register D geladen. Während der XF-Routine werden Prüfungen
hinsichtlich der folgenden Bedingungen ausgeführt: 1. Wiederauffindbarer
Speicherfehler, 2. Überwachungszeitgeber oder Realzeittaktbehandlung
erforderlich, 3. Geräteunterbrechung oder 4. Steuerfeld
entriegelt. Wird irgendeine dieser Bedingungen festgestellt,
so wird eine Verzweigung zu der geeigneten Routine ausgeführt.
Andernfalls wird in die Adressenroutine 116 eingetreten.
Die Adressenroutine 116 wird primär zur Decodierung des sogenannten
Adreßsilbenteils des Befehls benutzt, der in dem Register S-36
enthalten ist. Die Decodierung legt fest, ob die nächste Routine
eine Leseroutine, eine Ausführungsroutine oder eine Erzeugungsroutine
ist. Einige Befehle, wie beispielsweise der Verschiebebefehl
werden insgesamt innerhalb der Adreßroutine 116 durchgeführt.
Nach Ausführung dieser Befehle wird in die XF-Routine
112 eingetreten, durch die der nächste Befehl abgerufen wird.
Die Leseroutine 118 berechnet die endgültige effektive Operandenadresse
und wählt unter den verschiedenen Stellen aus, an denen
der Operand steht. Falls erforderlich, wird der Operand während
dieser Routine gewonnen. Einige Befehle weden während der Leseroutine
ausgeführt. Die Ausführungsroutine 120 wählt eine von
verschiedenen Subroutinen aus, die zur vollständigen Ausführung
der meisten Zentraleinheitsbefehle benutzt werden. Die Schreibroutine
122 speichert den Operanden oder das Ergebnis, nachdem
der Befehl ausgeführt ist. In diese Routine wird nur eingetreten,
wenn Befehle ausgeführt werden, die die Operanden an einen Speicherplatz
zurückführen müssen, der durch eine Adreßsilbe nach der
Ausführung bestimmt ist. Fünf Eintrittsstellen sind hinsichtlich
der Schreibroutine verfügbar, wobei die spezielle benutzte Eintrittstelle
davon abhängt, ob der Operand zum Speicher oder zu
einem Register zu übertragen ist oder nicht, ob der Operand ein
Adressenoperand ist und ob es sich bei dem Operanden um einen
Halbwort- oder einen Vollwortoperanden handelt. Die Gattungsroutine 124
wird zur Ausführung verschiedener Befehle benutzt, die
von der Ausführungsroutine nicht ausgeführt werden. Beispiele
solcher Befehle sind der Haltebefehl, der Befehl, der die Rückkehr
von einer Abfangsbedingung befiehlt und jene Befehle, die von
dem Zustand des Realzeittaktes oder des Überwachungszeitgebers
abhängig sind.
In der Abfangroutine 126 kann von irgendeiner von vielen Stellen
innerhalb der Firmware eingetreten werden, wenn eine Abfangbedingung
festgestellt wird. In die Unterbrechungsroutine 128
wird von einer Vielzahl von Stellen eingetreten, wobei dies von
der gerade durch den Prozessor ausgeführten Operation abhängt.
Solche Quellen können beispielsweise durch eine Unterbrechung
vorgegeben sein. Hierbei kann die Unterbrechung durch die Benutzung
des letzten Abfang-Sicherungsbereiches, durch eine programmierte
Unterbrechung, durch ein über die externe Datenschiene angeschlossenes
externes Gerät oder durch einen Spannungsausfall verursacht
werden. In die Überwachungszeitgeber- und Realzeittaktroutine
130 wird alle paar ms eingetreten, beispielsweise alle
8,33 ms, sofern der Überwachungszeitgeber oder der Realzeittakt
freigegeben ist. Als eine weitere Routine ist die Qualitäts-
Logiktestroutine 132 vorgesehen, mit der ein grundlegender Vertrauenstest
der Prozessorlogik durchgeführt wird.
Demgemäß werden die sechs wichtigsten Verzweigungen, das sind die
Verzweigungen XF, XA, XG, XR, XE und XW wie folgt benutzt: Die
Verzweigung XA wird benutzt, wenn die Decodierung der in dem Register
F-36 enthaltenen Adreßsilbe erforderlich ist; die Verzweigung
XG wird benutzt, wenn eine Auswahl zwischen individuellen
Gattungsbefehlen erforderlich ist; die Verzweigung XR wird benutzt,
wenn ein Operand aufgrund der Decodierung des Inhalts des
Registers F gelesen werden soll; die Verzweigung XE wird benutzt,
um zwischen den verschiedenen Subroutinen auszuwählen und die
tatsächlichen Prozessorbefehle auszuführen und die Verzweigung XW
wird schließlich benutzt, wenn es erforderlich ist, einen Operanden
nach der Ausführung des Befehls zu speichern.
Das Format des Firmware-Steuerwortes ist in Fig. 4 dargestellt.
Wie ersichtlich, ist das Firmware-Wort in 12 verschiedene Felder
unterteilt. Jedes dieser Felder steuert einen verschiedenen Teil
der Hardware-Logik gemäß den Fig. 1 und 2 und den anderen Figuren.
Die das Feld bestimmenden Bits sind ebenfalls in Fig. 4 eingetragen.
Beispielsweise besteht das Feld LS aus den Bits 0-3
des Firmware-Wortes. Im folgenden sei eine Beschreibung eines
jeden dieser Felder sowie deren allgemeiner Benutzung gegeben.
Das Feld LS wird benutzt, um eines der 16 Register der Datei 70
in der Einheit RALU-12 auszuwählen. Die auf diese Weise durch
das Feld LS ausgeführte Auswahl unterliegt der Modifikation
durch das Auswahlmodifikationsfeld SM. Das Feld LS wird nur
während Leseoperationen benutzt. Das Feld RS wird ebenso wie
das Feld LS benutzt, um das gleiche oder ein anderes Register
innerhalb der 16 Register der Datei 70 auszuwählen. Das Feld RS
wird jedoch sowohl bei Lese- als auch bei Schreiboperationen benutzt.
Die Felder AFC und AF werden zusammen benutzt und erzeugen
die erforderliche Decodierung für die Steuerung alle Operationen
innerhalb der Rechen- und Addiereinheit 96. Das Feld AM steuert
den Ausgangsmultiplexer 98, wodurch jegliche Datenbewegungen und
Verschiebeoperationen innerhalb der Einheit RALU-12 gesteuert
werden.
Das Feld GC steuert verschiedene Hardware-Operationen, die in drei
Gruppen unterteilt sind. Die besondere ausgewählte Gruppe wird
durch eine Decodierung der Bits 17 und 18 des Feldes AC bestimmt. Die
erste Gruppe steuert Operationen, die dem Register P-20, dem Register
I-16 und dem Register F-36 zugeordnet sind. Die zweite
Gruppe steuert Operationen, die der Verdoppelungslogik, d. h. der
Logik 44 und 61, dem Register S-14, dem Register M 1-18, dem Register
XB-32, dem Überwachungszeitgeber und dem Realzeittakt und
den verschiedenen Hardware-Steuer-Flip-Flops 54 zugeordnet sind.
Die dritte Gruppe wird in Zusammenhang mit der Operation des
Steuerfeldes benutzt.
Das Auswahl-Modifikationsfeld SM, das die Bits 24 und 25 des
Firmware-Wortes umfaßt, benutzt zusätzlich das Bit 20 des Feldes GC.
Wenn die beiden Bits des Feldes SM beide den Wert "0" aufweisen,
was anzeigt, daß sie nicht benutzt werden, so wird die von den
Feldern LS und RS ausgeführte Auswahl nicht beeinflußtz. Wenn jedoch
die Bits 24 und 25 des Feldes SM benutzt werden, d. h. wenn sie
nicht den Wert "0" aufweisen, so werden die Bits des Registers F-36
mit den Bits der Felder LS und RS einer logischen UND-Verknüpfung
unterzogen und das Ergebnis zur Auswahl hinsichtlich der Registerdatei
benutzt. Das Steuerfeld für die interne Datenschiene BI
wird benutzt, um Information auf die interne Datenschiene zu übertragen.
Das Steuerfeld für die externe Datenschiene BS wird benutzt,
um die Zentraleinheit an die externe Datenschiene anzuschalten.
Das Verzweigungstypenfeld BR legt die Art der Verzweigung
fest, die infolge einer spezifischen Testbedingung auszuführen ist.
Das Testbedingungsfeld TC legt die spezifische Testbedingung fest,
die in Zusammenhang mit dem Verzweigungstypenfeld zu benutzen ist.
Das Feld für die nächste Adresse NA definiert die nächstfolgende
Wortadresse hinsichtlich der Firmware im Steuerspeicher 10.
Im folgenden sei eine nähere Beschreibung der Befehlsabrufroutine
112 und der Adressenroutine 116 gegeben. Gemäß Fig. 5 umfaßt die
Befehlsabrufroutine die Blöcke 200, 202 und 204. Die verbleibenden
Blöcke in Fig. 5 stellen einen Teil der Routine XA dar. Jeder der
rechteckigen Blöcke gemäß Fig. 5 stellt eine Operation dar, die aufgrund
eines Firmware-Wortes im Steuerspeicher 10 ausgeführt wird.
Die durch Rauten repräsentierten Entscheidungen stellen in Wirklichkeit
einen Teil des davorliegenden rechteckigen Blockes dar
und wurden nur zum Zwecke des besseren Verständnisses getrennt
dargestellt. Verschiedene Register werden bei den Routinen XF und
XA benutzt. Im folgenden wird eine allgemeine Beschreibung dieser
Register gegeben, wobei es sich teilweise um eine Wiederholung
handeln. Das Register P-20, d. h. der Programmzähler, enthält die
Adresse des gerade bearbeiteten Befehls. Der Ausgang des Programmzählers
20
ist an die interne Datenschiene 28 angeschlossen. Das
Register X-22 ist das Speicheradressenregister und enthält temporär
die Adresse des nächsten auszuführenden Befehls. Das Register E
der Registerdatei 70 in der Einheit RALU-12 stellt ein Arbeitsregister
dar, das für eine Datenmanipulation während Firmware-
Operationen benutzt wird. Während indizierter Operationen enthält
das Register E den Indexwert. Das Register Q-76 ist ebenfalls in
der Einheit RALU-12 enthalten, dient der Verschiebung von doppelten
Operanden und enthält typischerweise die nicht-indizierte Adresse.
Das Register F-36 ist das Befehlsregister und speichert das Befehlswort,
wie es vom Speicher erhalten wird. Das Register D ist in der
Registerdatei 70 enthalten und stellt ein Arbeitsregister dar, d. h.
es wird wie das Register E für die Datenmanipulation benutzt. Das
Register XB-32 stellt ein 4-Bit-Register dar, das für die Bit- und
Byte-Indizierung innerhalb des Prozessors benutzt wird. Der Ausgang
dieses Registers ist an die interne Datenschiene 28 und die
Decodierlogik 34 angeschlossen. Auf weitere Elemente sei während
der folgenden Beschreibung eingegangen.
Unter Bezugnahme auf die Befehlsabrufroutine, d. h. die Routine XF,
wird aufgrund des durch den Block 200 angedeuteten Firmware-Wortes
ein Speicherlesezyklus MRCI ausgelöst und der Inhalt des Programmzählers
20 über die interne Datenschiene 28 in das Speicheradressenregister
geladen. Diese Operation betrifft des Register Y-22
und den Adreßteil der externen Datenschiene BA. Unterdessen wird
das Register E gelöscht, so daß es in allen Stellen den Wert "0"
aufweist. Wenn die durch den Block 200 veranschaulichte Firmware-
Operation vervollständigt ist, wird in die Operation gemäß dem
Block 202 eingetreten. Es sei darauf verwiesen, daß im allgemeinen
zwischen den verschiedenen Firmware-Wortausführungen
Tests ausgeführt werden. Beispielsweise wird bei Beendigung
der Firmware-Operation hinsichtlich des Blockes 200 in den
Block 200 nicht eingetreten, wenn beispielsweise eine Überwachungszeitgeber-
Behandlungsanforderung vorliegt, wobei in
diesem Fall diese Anforderung zuerst behandelt wird. Unter der
Annahme jedoch, daß in den Block 202 eingetreten wird, wird
das Register X, d. h. das Speicheradressenregister 22 bezüglich
seines Inhalts um 1 erhöht und der Inhalt des Programmzählers 20
wird im Register Q-76 mittels der internen Datenschiene BI-28
abgelegt. Zusammen wird durch die Firmware-Worte 200 und 202
eine Operation ausgeführt, die zunächst einen Speicherlesezyklus
auslöst, um einen Befehl aus dem Speicher abzurufen und anschließend
die Befehlsadresse von dem Register P, d. h. dem
Programmzähler 20, zu dem Speicheradressenregister 22 überträgt.
Anschließend wird der Inhalt des Speicheradressenregister um 1
erhöht und das Register Q mit der Befehlsadresse aus dem Register
P-20 geladen. Beim Empfang der Daten aus dem Speicher
wird die in dem Block 204 angezeigte Operation ausgelöst. Wie
im Block 204 angedeutet, wird keine Operation ausgeführt, solange
keine Daten erhalten werden. Es liegt somit ein vorübergehender
Halt (STALL) vor. Die Daten werden auf die Datenleitungen
BD der externen Datenschiene zurückgeführt und direkt auf
die interne Datenschiene gegeben und in dem Register D der Einheit
RALU-12 und in dem Register F-36 abgelegt. Das Register S-36
enthält somit das vom Speicher erhaltene Befehlswert. Die Adresse
des nächsten auszuführenden Befehls ist durch den Inhalt des
Registers Y vorgegeben und wird in den Programmzähler 20 übertragen.
Nach der Übertragung des Inhalts des Speicheradressenregisters
22 in den Programmzähler wird der Inhalt des Registers 22
um 1 erhöht. Zu diesem Zeitpunkt wird in die Adressenroutine 116
eingetreten.
Als Beispiel und unter Bezugnahme auf die Firmware-Worte in
den Blöcken 200, 202 und 204 sei angenommen, daß der Programmzähler
20 den Speicherplatz 100 im Speicher adressiert und daß
nach der in dem Block 200 angezeigten Operation das Register Y
ebenfalls den Speicherplatz 100 anzeigt. Die durch das Firmware-
Wort in dem Block 202 dargestellte Operation erhöht den Inhalt
des Speicheradressenregisters 22, um auf die Adresse des nächsten
auszuführenden Befehls zu verweisen, während die Adresse in dem
Zähler B auf dem Wert 100 verbleibt. Das Register Y-22 weist
somit die Adresse 101 auf. Während der Ausführung der in dem
Block 204 angedeuteten Operation wird der Inhalt des Registers Y
in das Register P übertragen und es wird der Inhalt des Registers
Y erneut um 1 erhöht, so daß nunmehr das Register P auf
die Adresse 101 verweist, welche die Adresse des nächsten Wortes
innerhalb der laufenden Prozedur darstellt und der Inhalt des
Registers Y auf die nächste Adresse, d. h. die Adresse 102 verweist.
Gemäß Fig. 5 wird nach der Befehlsrufroutine 112 in die
Adressenroutine XA-116 eingetreten. Es gibt verschiedene Arten
von Adressenbildungen, die sich in erster Linie in Abhängigkeit
von dem Befehl in dem Register S-36 ergeben. Dieser Befehl kann
eine globale Adressierung, eine Basisadressierung, eine indizierte
Adressierung zusammen mit entweder einer globalen Adressierung
oder einer Basisadressierung sowie eine Basisadressierung
plus eine indizierte Auf-Abwärts-Stapeladressierung vorgeben.
Die indizierte Adressierung gibt ferner die Art und Weise
vor, in welcher Worte, Bytes oder Bits individuell im Speicher
adressiert werden können. Im allgemeinen wird eine indizierte
Adressierung benutzt, wenn eine Bezugnahme auf Daten oder eine
Adresse innerhalb eines Feldes homogener Elemente gefordert
wird. Eine indirekte Adressierung wird benutzt, wenn eine Bezugnahme
auf einen Speicherplatz gewünscht wird, dessen Adresse in
einem anderen Speicherplatz gespeichert ist. Die sogenannte relative
Adressierung stellt jene Adressierung dar, welche den Programmzähler
20 für die Adressierung des Speichers benutzt, während
die Basisadressierung ein Basisregister innerhalb der Registerdatei 70
für die Erzeugung der Speicheradresse benutzt.
Verschiedene Arten und Kombinationen von Adressierverfahren sind
in einer Veröffentlichung der Honeywell Information Systems Inc.
mit dem Titel "Series 60 (Level 6) Assembly Language GCOS/BES"
vom Dezember 1975 beschrieben, die unter der Bestellnummer AS 31
erhältlich ist.
Gemäß Fig. 5 sieht der Block 206 im Hinblick auf die Operation
entweder eine globale oder eine globale plus indizierte Adressierung
vor. Der Block 208 gibt den Startpunkt für die Basisadressierung
oder für die Basisadressierung plus indizierte
Adressierung vor. Der Block 210 stellt den Startpunkt für die
Basisadressierung plus indizierter Aufwärts- oder Abwärtsadressierung
dar. Im Hinblick auf die globale Adressierung oder
die globale Adressierung plus indizierter Adressierung und im
Hinblick auf die mit dem Block 206 beginnende Operation ist festzustellen,
daß eine solche globale Adressierung in jenen Situationen
verwendet werden kann, in denen eine Bezugnahme auf
Daten oder eine Adresse gewünscht ist, wobei diese Daten oder
diese Adresse keine Beziehung zu dem gerade adressierten Speicherplatz
aufweisen. Diese Adressierung gestattet eine direkte oder
indirekte Bezugnahme auf einen Speicherplatz. Im Hinblick auf
den Block 206 wird somit der Inhalt des Programmzählers 20, d. h.
die auf den gerade ausgeführten Befehl folgende Adresse, beispielsweise
die Adresse 101 auf der internen Datenschiene 28
abgelegt und schließlich auf die Adreßleitungen der externen
Datenschiene gegeben. Wie ebenfalls im Block 206 angedeutet,
wird ein Speicherreferenzzyklus ausgelöst, wobei jedoch die Operation
gemäß dem Firmware-Wort bzw. dem Block 212 nicht gestartet
wird, bis das adressierte Wort vom Speicher erhalten wird. Auf
diesen Zustand wird durch den vorübergehenden Halt (STALL) im
Block 212 hingewiesen. Das Wort vom Speicher wird über die
Datenleitungen der externen Datenschiene empfangen und über die
interne Datenschiene 28 in dem Register Q abgelegt. Das Register
Q-76 kann die nicht-indizierte Adresse aufweisen. Der Inhalt
des Speicheradressenregisters, d. h. des Registers Y-22 wird sodann
in dem Zähler P-20 abgelegt, so daß sich dementsprechend die
Adresse 102 nunmehr in dem Zähler P befindet.
Aufgrund der Speicherzyklusauslösung entsprechend der in dem
Block 212 angezeigten Firmware-Operation wird die Operandenadresse
aus dem Speicher geholt und in dem Register Q gespeichert,
so daß das Register Q die nicht-indizierte Adresse des Operanden
enthält. Nach der Übertragung des Inhalts des Registers Y in
den Zähler P wird der Inhalt des Speicheradressenregisters 22 um 1
erhöht, so daß dieses Register beispielsweise die Adresse 103
aufweist. Ein Teil der durch den Block 212 vorgegebenen Operation
betrifft die Überprüfung, ob eine Indizierung gefordert ist oder
nicht. Ist keine Indizierung gefordert, was sich durch die Prüfung
des Befehls in dem Register F-36 ergibt, so wird in die
Leseroutine XR-118 eingetreten. Ist eine Indizierung gefordert,
was in dem Block 214 entschieden wird, so wird in eine Indizierungsfolge
eingetreten. Diese Indizierungsfolge ist die gleiche
wie sie für die Basisindizierung vorgesehen ist. Dies soll nachstehend
anhand der Basisindizierung erläutert werden.
Das durch den Block 208 repräsentierte Firmware-Wort verursacht
eine Übertragung der laufenden Adresse aus dem Basisregister BB
nach dem Register Q-76 in der Registerdatei 70. Während der durch
ein solches Firmware-Wort erzeugten Operation wird ebenfalls eine
Prüfung durchgeführt, ob eine Indizierung gemäß dem Block 209
erforderlich ist oder nicht. Ist keine Indizierung erforderlich, so
wird in die Leseroutine direkt eingetreten. Ist eine Indizierung
gefordert, so wird auf das Firmware-Wort im Block 216 zurückgegriffen.
Es sei darauf verwiesen, daß in den Block 216 auch von
dem Ja-Ausgang des Blockes 214 und auch von dem Pfad eingetreten
werden kann, der mit dem in dem Block 210 repräsentierten Firmware-
Wort beginnt.
Ist eine Indizierung gefordert, so wird das in dem Block 216 repräsentierte
Firmware-Wort bearbeitet. Es wird somit der Inhalt
des ausgewählten Indexregisters PX in das Register E geladen. In
diesem Zusammemhang sei erwähnt, daß drei Indexregister, nämlich
die Datenregister, D 1, D 2 und D 3 vorgesehen sind. Zusätzlich wird
überprüft, ob die Operation eine Wortoperation betrifft oder
nicht. Liegt keine Wortoperation vor, so handelt es sich entweder
um eine Halbwort-Operation, d. h. eine Byte-Operation oder eine
Bit-Operation. Wenn der zu adressierende Speicherplatz einen
Wortspeicherplatz darstellt und demgemäß auf ein volles Wort
beim Lesen oder Schreiben hinsichtlich des Speichers zugegriffen
werden soll, so erfolgt aus dem Block 217 ein Austritt in die
Routine XR-118. Die Routine XR veranlaßt sodann das Lesen des
Wortes aus dem Speicher. Liegt keine Wortoperation vor, so gibt
der Block 217 die Nein-Bedingung aus und es wird in den Block 218
eingetreten. Das durch den Block 218 repräsentierte Firmware-
Wort verursacht die Übertragung des Inhalts des Registers E in
der Registerdatei 70 zu dem Addierer 96 und verursacht eine Verschiebung
des Inhalts des Registers E um 1 nach rechts in das
Register XB-32. Das Firmware-Wort gemäß Block 218 führt somit
eine solche Rechtsverschiebung um 1 Bit des Registers E zu dem
Register XB durch, indem zuerst der Inhalt des Registers E in
den Addierer 96 verschoben wird und sodann der Inhalt des Registers
XB und des Addierers 96 in der Weise verschoben wird,
daß eine Rechtsverschiebung um 1 vorliegt. Dies wird durch die
zweite Zeile der Anweisung im Block 218 dargestellt.
Wenn es sich bei der Operation um eine Byte- oder Halbwort-
Operation handelt, so erfolgt ein Austritt aus dem Block 219 zu
der Leseroutine XR-118. Betrifft es keine Halbwort-Operation
und lag auch keine Wort-Operation vor, so muß eine Bit-Operation
vorliegen und es geht von dem Nein-Ausgang des Blockes 219 zu
dem Block 220. Um ein Bit adressieren zu können, müssend dementsprechend
vier volle Rechtsverschiebungen ausgeführt werden,
um die vier Bits in das Register XB-32 zu übertragen. Da eine
Rechtsverschiebung bereits ausgeführt worden ist, müssen durch
den Block 220 nur noch drei zusätzliche Verschiebungen ausgeführt
werden. Der Inhalt des Registers E wird wiederum in den Addierer
96 geschoben und sodann wird die Rechtsverschiebung durchgeführt.
Der dem Block 220 zugeordnete Entscheidungsblock 221 gibt
eine Antwort auf die Frage, ob das MISC-Flip-Flop den Wert "1"
aufweist oder nicht. Da dieses Flip-Flop, wie dies bei den
meisten Status-Flip-Flops der Fall ist, zuvor gelöscht worden
ist, wird diese Frage mit Nein beantwortet und der Block 220
wird erneut wirksam, wobei jedoch während der ersten Operation
entsprechend dem Block 220 das MISC-Flip-Flop auf "1" gesetzt
wird. Die Rechtsverschiebung wird wiederum durch die Firmware-
Operation entsprechend dem Block 220 durchgeführt, wobei jedoch
in diesem Fall die Antwort des Blockes 221 mit Ja gegeben wird.
Das MISC-Flip-Flop ist mittlerweile gesetzt worden. Dementsprechend
wird auf das Firmware-Wort gemäß dem Block 222 zurückgegriffen
und es findet erneut eine Rechtsverschiebung statt.
Danach sind vier Rechtsverschiebungen durchgeführt worden und es
wird dementsprechend in die Leseroutine XR eingetreten. Wie später
noch näher zu beschreiben sein wird, wird der Inhalt, d. h. die
vier Bits des Registers XB-32 sodann durch den Decodierer 34
decodiert. Der decodierte Ausgang wird für die geforderte Bit-
Adressierung benutzt.
Die Routine XA sieht ferner die Möglichkeit, eine Auf/Abwärtsadressierung
mit Indizierung durch das Basisregister vor. Hinsichtlich
einer auf eine indizierte Basis bezogenen Abwärtsadressierung
tritt eine Abwärtszählung des Inhalts des ausgesuchten
Indexregisters um 1 auf und sodann eine Berechnung der
effektiven Adresse der zu benutzenden Daten. Hinsichtlich einer
auf eine indizierte Basis bezogenen Aufwärtsadressierung findet
eine Berechnung der effektiven Adresse des Speicherplatzes oder
der Daten, die in der Operation benutzt werden, statt. Nach der
Berechnung einer solchen effektiven Adresse wird der Inhalt des
Indexregisters um 1 erhöht. Der Unterschied zwischen der Abwärts-
und Aufwärtsadressierung liegt durch das Bit 13 des Registers F-36
fest. Bei dieser Operation wird daher von dem Block 210 Gebrauch
gemacht und es wird das Register 76 mit dem Inhalt des ausgesuchten
Basisregisters BB geladen. Liegt eine indizierte Aufwärtsoperation
vor, so wird in den Block 224 eingetreten und die durch
diesen Block festgelegte Firmware gelangt zur Ausführung. Dementprechend
wird das Register E mit dem Inhalt des ausgewählten
Indexregisters geladen und es wird das indirekte Adressierungs-
Bit FA, d. h. das Bit 12 im Register F gelöscht. Die Bits 13-15
des Registers F, die die Basisregisterzahl darstellen, werden
ebenfalls gelöscht. Der Block 226 und die durch ihn vorgegebene
Operation gelangt nunmehr zur Ausführung, wobei der Inhalt des
ausgewählten Indexregisters um 1 erhöht wird. Im Block 227 wird
entschieden, ob die Adressierung einem vollständigen Wort gilt
oder nicht. Gilt sie einem vollständigen Wort, so wird in die
Leseroutine XR eingetreten. Gilt sie keinem vollständigen Wort,
so wird der Block 218 wirksam und es wird eine Verschiebeoperation
im Register XB ausgeführt und von einer weiteren Indizierung,
wie zuvor beschrieben, Gebrauch gemacht.
Wenn andererseits eine basisindizierte Abwärtsoperation vorliegt,
so wird in den Block 228 eingetreten und der Inhalt des ausgewählten
Indexregisters DX um 1 erniedrigt, wobei die sonstigen
Vorgänge denjenigen im Block 224 entsprechen. Der Ausgang des
Blocks 228 führt auf den Block 216, indem die zuvor erläuterte
Indizierung beginnt. Es ist somit ersichtlich, daß basierend auf
der Adressierungsroutine das Register Q-76 die nicht-indizierte
Adresse aufweisen wird und falls eine Indizierung vorliegt, das
Register E den Index aufweist. Andere Arten von Adressierungs-
Subroutinen sind ebenfalls in dem System enthalten; sie bilden
jedoch keinen Teil des erfindungsgemäßen Systems.
Anhand von Fig. 6 seien Teile der Leseroutine XR-118 nachstehend
näher erläutert. Beim Eintritt in die Routine XR können verschiedene
Subroutinen derselben ausgeführt werden, was beispielsweise
von dem Operationscode des Registers 36 abhängig ist. Wenn beispielsweise
das Bit 12 des Registers F, d. h. das indirekte
Adressierungs-Bit auf "1" gesetzt ist, so wird in den Block 250
eingetreten und es wird die durch ihn dargestellte Firmware-
Operation ausgeführt. Der Speicherlesezyklus wird ausgelöst und
es wird hierbei der Inhalt des Registers Q-76, der die nichtindizierte
Adresse des Operanden enthält, auf die Adreßleitungen
der externen Datenschiene über die interne Datenschiene 28 übertragen
und anschließend werden die Bits 12-15 des Registers F
gelöscht.
Beim Empfang des adressierten Wortes, wie dies durch den vorübergehend
Halt im Block 252 angedeutet ist, wird das empfangene Wort
von den Datenleitungen der externen Datenschiene über die interne
Datenschiene 28 in das Register Q-76 der Einheit RALU-12 übertragen.
Die Operandenadresse ist somit im Register Q gespeichert
und es wird erneut in die Leseroutine eingetreten. Beim Wiedereintritt
findet typischerweise eine Lese-Operation (READ) oder
eine Nicht-Leseoperation ( ) statt. Die Leseoperation beginnt
mit dem durch den Block 254 dargestellten Firmware-Wort, während
die Nicht-Leseoperation durch den Block 256 ausgelöst wird. Bei
Beendigung der Leseoperation oder der Nicht-Lese-Operation wird
in die Ausführungsroutine 120 eingetreten.
Unter Bezugnahme auf die Lese-Subroutine der Leseroutine 118 ergibt
sich die Auslösung des Speicherlesezyklus durch das in dem
Block 254 vorhandene Firmware-Wort. Dies geschieht, indem die
Summe aus dem Inhalt des Registers Q, das die nicht-indizierte
Adresse enthält und aus dem Inhalt des Registers E, das den
Indexwert enthält, über die interne Datenschiene 28 in das Register
Y-22 eingegeben wird. Das Register Y, d. h. das Speicheradreßregister
22 enthält somit nunmehr die Adresse des herauszuholenden
Operanden, wobei diese Adresse eine indizierte Adresse
darstellt. In Zusammenhang mit dem Block 254 wird eine Prüfung
dahingehend vorgenommen, ob die Operation eine Halbwort-Operation
betrifft oder nicht. Diese Prüfung erfolgt in dem Entscheidungsblock
255. Liegt keine Halbwortoperation vor, so wird in den
Block 260 eingetreten. Wenn Daten aus dem Speicher über die Datenleitungen
BD empfangen werden, so werden sie über die interne
Datenschiene 28 in dem Register D abgelegt. Aufgrund der durch
den Block 260 verwirklichten Firmware-Operation befindet sich
nunmehr der Operand in dem Datenregister D. Solche Daten können
entweder ohne Maskierung verarbeitet werden, wenn ein volles
Wort bearbeitet wird oder sie können mit einer Maskierung bearbeitet
werden, die durch den Indexwert in dem Register E vorgegeben
wird, wobei nur 1 Bit bearbeitet wird. Während der
folgenden Ausführungsroutine wird sodann eine solche Wort- oder
Bit-Operation ausgeführt.
Liegt eine Halbwort-Operation vor, so wird von dem Entscheidungsblock
255 in den Block 262 eingetreten. Anfänglich wird das Register
D über die interne Datenschiene 28 mit der Konstanten FF 00
geladen. Die Konstante FF 00 stellt ein Bit-Muster von 8 binären
Einsen dar denen 8 binäre Nullen folgen und sie wird benutzt für
die Auswahl des linken und rechten Bytes. Wenn XB (0) den Wert "0"
aufweist, so wird über die Datenleitung BD aus dem Speicher
aufgenommene linke Byte sowohl auf den linken als auch auf den
rechten Byte-Leitungen dupliziert, während für den Fall, daß
XB (0) den Wert "1" aufweist, die rechten und linken Bytes ohne
Duplizierung übertragen werden. Durch Ablage des Bit-Musters FF 00
im Register D wird in den linken 8 Bits eine Vorzeichenerweiterung
eines negativen Operanden erzeugt, wobei das linke oder rechte
Byte in Abhängigkeit von dem Zustand von XB (0) in den rechten
8 Bits des Registers D abgelegt wird. Eine Vorzeichenerweiterung
ist erforderlich, um dem Addierer 96 die Benutzung des am weitesten
links stehend Bits eines Wortes zur wirksamen Bestimmung
des Operandenvorzeichens zu gestatten. Wenn somit einmal Daten
von den Datenleitungen der externen Datenschiene empfangen werden,
so werden diese in dem Register D abgelegt. Somit wird der
Operand, d. h. das Halbwort vom Speicher aufgenommen und im Register
D gespeichert. Ferner wird im Block 265 überprüft, ob der
Operand negativ ist oder nicht. Ist der Operand negativ, so wird
in die Ausführungsroutine direkt eingetreten. Ist der Operand
nicht negativ, so wird auf das Firmware-Wort im Block 266 zurückgegriffen
und der Operand im Register D einer Exklusiv-ODER-
Verknüpfung mit der Konstanten FF 00 unterzogen, so daß in den
8 links stehenden Bits des Registers D lauter binäre Nullen abgelegt
werden, wobei darauf verwiesen sei, daß die Exklusiv-ODER-
Verknüpfung zweier binären Einsen zu dem Binärwert Null führt.
Sodann wird in die Ausführungsroutine eingetreten.
In die Nicht-Lese-Subroutine wird in Abhängigkeit von dem Operationscode
des Registers F eingetreten. Das durch den Block 256
dargestellte Firmware-Wort führt zu einer Addition der nichtindizierten
Adresse im Register Q und des Indexwertes im Register E
und der erneuten Ablage im Register Q sowie über die interne
Datenschiene 28 im Speicheradressenregister 22. Anschließend wird
in die Ausführungsroutine eingetreten.
Zusammenfassend ist festzustellen, daß die Adreßbildung, d. h.
die Schritte bei der Operanden-Adressenbildung der Ausführung
der Abrufroutine folgen, nachdem die Register P und Y die geeigneten
Adressen aufweisen, das Register E gelöscht ist, die
Befehlsadresse aus dem Register P in das Register Q geladen ist
und der Befehl aus dem Speicher in die Register D und F geladen
ist. Der Befehl wird nunmehr während der Adreßroutine 116 behandelt.
Der erste Grundschritt besteht in der Übertragung der
nicht-indizierten Adresse in das Register Q-76. Soll eine Indizierung
erfolgen, so besteht der nächste Schritt darin, den
Indexwert in das Register E der Registerdatei 70 zu holen. Wenn
keine Wort-Operation sondern eine Byte- oder Bit-Operation vorliegt,
so besteht der nächste Schritt darin, den Indexwert im
Register E in das Register XB-32 zu verschieben. Es findet nur
eine Verschiebung statt, wenn eine Byte-Adressenoperation vorliegt
und es erfolgt eine Verschiebung um 4 Bits, wenn es sich um
eine Bit-Adressenoperation handelt. Das eine Bit gestattet die
Auswahl zwischen zwei Bytes in einem Wort und die 4 Bits gestatten
die Auswahl irgendeines von 16 Bits in einem Wort. Hierdurch wird
die Operation der Adreßroutine 116 vervollständigt, von der anschließend
in die Leseroutine XR-11 eingetreten wird.
Während der Leseroutine XR wird, falls erforderlich, durch Gebrauch
des Registers Q eine indirekte Adressierung durchgeführt. Als
nächstes wird der Inhalt der Register Q und E miteinander addiert,
um die endgültige effektive Wort- oder Bit-Adresse zu bilden.
Im nächsten Schritt werden die adressierren Daten aus dem
Speicher herausgelesen und der Inhalt des Registers XB wird benutzt,
um die Daten in der Einheit RALU-12 zu steuern. Hinsichtlich
Wort-Operationen wird das Wort aus dem Speicher gelesen und
von der Einheit RALU-12 aufgenommen, ohne daß von dem Register XB
Gebrauch gemacht wird.
Nach der Abrufroutine führt der Adreßroutinenteil zu der Zentralisierung
der nicht-indizierten effektiven Adresse im Register Q
und zur Zentralisierung des Indexwertes im Register E. Danach
folgen die Verschiebeoperationen, falls keine Wortoperation vorliegt.
Hierauf folgt die Leseroutine, in der eine erste Subroutine
sicherstellt, daß die effektive Adresse im Register Q die tatsächliche
oder endgültige Adresse ist und daß keine indirekte
Adressierung im Spiel ist. Wenn eine indirekte Adressierung gefordert
ist, so wird diese berücksichtigt und hierbei die endgültige
Adresse im Register Q abgelegt.
Gemäß Fig. 7 ist die Adressierung eines Bytes oder eines Bits
näher dargestellt. Die Basisadresse 400 ist nicht indiziert und
normalerweise im Register Q-76 enthalten. Der Indexwert 402 ist
normalerweise im Register E abgelegt, das in der Registerdatei 70
enthalten ist. In Abhängigkeit davon, ob eine Byte- oder Bit-
Operation vorliegt, wird der Inhalt des Registers E in das Register
XB einmal verschoben, wenn eine Byte-Operation vorliegt oder
viermal verschoben, wenn eine Bit-Operation vorliegt. Wenn nur
ein Wort zu adressieren ist, erfolgt keine Verschiebung. Der in
das Register XB-32 verschobene Wert ist mit β bezeichnet und
der Wortteil irgendeiner Indizierung der Basisadresse ist in dem
Indexwert 402 mit α bezeichnet, wobei der Wert α im Register E
steht. Dementsprechend adressiert die Basisadresse 400 die Speichereinrichtung
404 an einem Speicherplatz, der durch die Basisadresse
gekennzeichnet ist; der Indexwert α gibt eine Wortindizierung
für einen Wortspeicherplatz vor und der Indexwert β
erzeugt eine Indizierung entweder des linken Bytes oder des
rechten Bytes des adressierten Wortes. Diese Indizierung hängt ab
von dem einzelnen verschobenen Bit in dem Register XB-32 oder dem
Indexwert β, der beispielsweise eines von 16 Bits des adressierten
Wortes indiziert, wenn der in das Register XB geschobene Wert
eine Länge von 4 Bits aufweist. Es liegt auf der Hand, daß die
oben beschriebene Indizieroperation bei Operationen benutzt werden
kann, die zwei oder mehr Worte umfassen, indem eine Indiziertechnik
verwendet wird, mit der Linksverschiebungen des Indexwertes
anstelle der dargestellten Rechtsschiebungen erzeugt werden.
Anhand von Fig. 8 soll die Art und Weise, in der ein in einem
Wort enthaltenes Byte in den Speicher geschrieben oder aus dem
Speicher gelesen wird, erläutert werden. Die Schnittstelle zwischen
dem Speicher und dem Prozessor ist durch die interne Datenschiene
28 vorgegeben, die die externe Datenschiene anschließt,
wobei diese externe Datenschiene Datenleitungen BD und Adreßleitungen
BA aufweist. Die externe Datenschiene umfaßt ferner
Steuerleitungen gemäß Fig. 1. Die Eingangs- und Ausgangs-Verdopplungslogik
ist durch die Elemente 44 und 61 dargestellt. Das
Register D in der Registerdatei 70 ist mit dem Addierer 96 der
Einheit RALU-12 über den Multiplexer 90 angeschlossen, obgleich
auch eine Kopplung über den Multiplexer 88 möglich ist. Das Register
XB-32 ist ebenso wie die Adreßleitungen der externen
Datenschiene an die Verdopplungslogik 44 angeschlossen. Für Lese-
oder Schreiboperationen vollständiger Worte erfolgt eine Datenübertragung
in gerader Richtung. Hinsichtlich des Blockes 61
sind die Übertragungswege für vollständige Worte mit 61-1 und
61-3 bezeichnet. In gleicher Weise werden hinsichtlich Leseoperationen
im Multiplexer 44 für die Übertragung vollständiger
Worte die Pfade 44-1 und 44-3 benutzt.
Bei Halbworte betreffenden Schreiboperationen wird in Abhängigkeit
von dem Feld BI des Firmware-Wortes das zu schreibende Byte dem
rechten Ausgang des Addierers 96 entnommen und über die Byte-
Pfade 61-1 und 61-2 an beide Ausgänge des Multiplexers 61 ausgegeben.
Das linke von dem Addierer 96 erhaltene Byte wird nicht
auf die interne Datenschiene 28 ausgegeben. Dementsprechend erhält
die externe Datenschiene das gleiche Byte in beiden Byte-
Positionen der Wortleitungen zugeführt.
Hinsichtlich Halbworte betreffenden Leseoperationen werden die
Daten von der Datenleitung BD der externen Datenschiene von dem
Multiplexer 44 aufgenommen. Wenn das Bit XB (0) den Wert "0"
aufweist, so wird das linke Byte des Wortes an beidne Eingängen
des Addierers 96 dupliziert. Dies geschieht über den Multiplexer
44 unter Benutzung der Pfade 44-1 und 44-2, wobei der Pfad 44-2
anstelle des Pfades 44-3 benutzt wird. Der Pfad 44-2
wird nur benutzt, wenn der Wert XB (0) den Wert "1" aufweist. Dementsprechend
wird das rechte von der Datenleitung aufgenommene
Byte nicht benutzt. Beim Lesen werden diese Bytes über den Multiplexer
88 dem Addierer 96 zugeführt und von diesem verarbeitet
und anschließend an dem richtigen Byte-Speicherplatz des D-
Registers 70-0 abgelegt.
Gemäß Fig. 9 sind die logischen Schaltkreise aus den Fig. 1 und 2
näher dargestellt, um zu veranschaulichen, in welcher Weise die
Verschiebe- oder Indizieroperationen ausgeführt werden. Während der
Indizieroperationen ist der Indexwert im Register E abgelegt, das
in der Registerdatei 70 enthalten ist. Der Operationscode in
dem Register F-36 wird sodann getestet, um festzustellen, ob eine
Operation betreffend ein vollständiges Wort oder ein nichtvollständiges
Wort vorliegt. Eine Operation hinsichtlich eines
nicht-vollständigen Wortes betrifft entweder eine Byte- oder Bitoperation.
Liegt ein ein vollständiges Wort betreffender Befehl
vor, so ist die Indizierung bereits korrekt ausgerichtet und es
ist keine weitere Operation im Hinblick auf die Indizierung erforderlich.
Liegt ein Halbwort- oder Bit-Befehl vor, so ist es
erforderlich, den Indexwert ein oder mehrere Male zu verschieben.
Die Verschiebung erfolgt mittels der Einheit RALU-12 und der
Inhalt des Registers E wird über die Verriegelung R-86 entnommen.
Der Ausgang des Registers E wird sodann über den Multiplexer 90
und über den Addierer 96 zurück in die Verschiebelogik 80 geführt,
in welcher er nach rechts verschoben wird und anschließend
zurück in das Register E übertragen wird. Pro Prozessor-Taktzyklus
wird eine Bit-Position verschoben. Es treten keine weiteren Verschiebungen
mehr auf, wenn eine Byte-Operation vorliegt. Zur
gleichen Zeit, in der die Verschiebeopration stattfindet, wird
das signifikanteste Bit des Registers E, d. h. das Bit, das das
Vorzeichen des Indexwertes angibt, über den Multiplexer 98 und die
Logik 61 an die interne Datenschiene 28 geliefert. Hierbei ist
das Bit an der Stelle 0 im Register E als Verschiebeeingang am
Selektor 37 verfügbar, wobei dieser noch weitere im Zusammenhang
mit der vorliegenden Erfindung nicht interessierende Eingänge
aufweist. Der ausgewählte Eingang hängt von dem Operationscode
des Registers F-36 ebenso wie von dem Feld AM des Steuerspeicherwortes
oder Firmware-Wortes ab. Das Bit 0 des Registers F wird
sodann über das Gatter 39 in Abhängigkeit von dem Feld AM des
Steuerspeicherwortes als Eingang der Verschiebelogik 80 zugeführt.
Auf diese Weise wird der Verschiebeeingang der Logik 80 mit einer
Vorzeichenerweiterung beaufschlagt, d. h. mit dem gleichen Bit,
das zuvor an der Bitstelle 0 stand, welches Bit anzeigte, daß
das Vorzeichen das gleiche nach der Verschiebung in das Register F,
bleibt. Die Vorzeichenerweiterung wirkt somit auf die linksstehenden
Bits, die während der Verschiebeoperation geleert werden und
dadurch das geeignete Vorzeichen für den Indexwert erhalten. Die
Richtung der Verschiebung, die durch den Indexwert im Register F
angezeigt wird, bleibt somit vereinbarungsgemäß erhalten.
Das Bit, das während der Verschiebung des Registers F nach rechts
verschoben wird, wird als Eingang dem Register XB-32 an der Bitstelle
XB (0) zugeführt. Das Steuerspeicherfeld GC gibt die Verschiebung
des Registers XB nach rechts während der Verschiebung
des Registers F frei, so daß das verschobene Bit an der Bit-
Position XB (0) für den nachfolgenden Gebrauch bei der Auswahl
des rechten Bytes durch das linke Byte festgehalten wird, wenn
ein Wort aus dem Speicher abgerufen worden ist. Wie zuvor erwähnt,
wird nach dieser Verschiebung um 1 Bit der Operationscode im Register
F-36 durch die Testlogik 50 getestet, um festzustellen, ob
eine Byte- oder eine Bit-Operation vorliegt. Definiert der
Operations-Code eine Bit-Operation, so wird die Verschiebe-Operation
noch weitere dreimal durchgeführt. Jedesmal wenn dies geschieht,
wird das Vorzeichen im Register E verschoben oder um 1 Bit erweitert
und die Verschiebung der nachfolgenden Bits erfolgt in
der zuvor beschriebenen Weise. Hinsichtlich des Registers XB-32
befindet sich nunmehr der Inhalt an der Bit-Position XB (0) an
der Bit-Position XB (3) usw. Das am weitesten rechts stehende und
am signifikanteste Bit 15 in dem Register E wird somit bei den
Bit-Operationen übertragen und schließlich an der Position XB (3)
abgelegt, das Bit 14 wird an der Position XB (2) abgelegt usw.
Die Benutzung der in dem Register XB-32 abgelegten Information
geschieht folgendermaßen. Hinsichtlich Halbwort-Leseoperationen
enthält das Register XB-32 ein Bit in der Position XB (0). Dieses
Bit zeigt an, ob der Byte-Selektor das linke Byte oder das rechte
Byte in dem Wort ausgewählt hat, wobei der Wert "0" die linke
Hälfte und der Wert "1" die rechte Hälfte auswählt. Während Halbwort-
Leseoperationen wird dieses Bit zur Steuerung der Logik 44
mittels des Gatters 43 benutzt, wobei das Gatter 43 einen Freigabeeingang,
gebildet durch das Feld GC des Steuerspeicherwortes,
aufweist. Ein Wort wird aus dem Speicher gelesen, indem die Summe
aus der Adresse plus dem Indexwert im Register E benutzt wird. Das
zurückkommende Wort stellt einen Eingang für den Multiplexer, d. h.
für die Eingangs-Verdopplungslogik 44 dar. Wie zuvor erläutert,
wird die linke Hälfte der Daten am Eingang dieses Multiplexers
in beide Hälfte des Ausganges kopiert, wenn XB (0) den Wert "0"
aufweist, wobei die Ausgänge des Multiplexers auf beide Eingänge
des Addierers 96 geführt sind. Weist XB (0) den Wert "1" auf, so
passieren die Daten ohne Duplizierung den Multiplexer. Die Daten
werden sodann in dem Register D der Registerdatei 70 abgelegt,
wobei das Register D das Operandenregister für alle speicherbezogenen
Befehle bildet.
Während Halbwort-Schreiboperationen wird das Register D in der
Registerdatei 70, das die zu schreibenden Daten enthält, unter
Steuerung durch den Steuerspeicher über den Addier 96, den Multiplexer
98 und die Ausgangs-Verdopplungslogik 61 angeschlossen.
Die Logik 61 wird durch Feld BI des Firmware-Wortes gesteuert und
kopiert bei dieser speziellen Operationsart die rechte Hälfte des
Wortes auf beide Hälften der internen Datenschiene BI-28 und ist
somit in der Lage, über die Datenschiene BA in den Speicher einzuschreiben.
Zur gleichen Zeit erlaubt der Steuerspeicher 10 über
das Gatter 51 die Ausgabe des Bits an der Bit-Position XB (0) des
Registers XB-32 an den Speicher auf einer der Adreßleitungen BA
der externen Datenschiene sowie die Festlegung des am wenigsten
signifikanten Bits als Auswahl-Bit für das Halbwort auf der
Adreßschiene. Wenn XB (0) den Wert "0" aufweist, so wird dadurch
angezeigt, daß die linke Hälfte der Datenschiene in die linke
Hälfte des Speicherwortes zu kopieren ist und wenn dieses Bit
den Wert "1" aufweist, so zeigt dies an, daß die rechte Hälfte
der Datenschiene in die rechte Hälfte des Speicherwortes zu kopieren
ist. Bei einer Schreiboperation steuert somit das Bit XB (0)
das Einschreiben des korrekten Bytes in die entsprechende Hälfte
des Datenwortes.
Bei Bit-Operationen wird der Inhalt des Registers XB in verschiedener
Weise benutzt. Während indizierter Bit-Operationen, wenn
beispielsweise der Operationscode in dem Register F-36 eine Bitoperation
anzeigt, wird der Inhalt des Registers XB 4mal verschoben,
wodurch 4 Bits erzeugt werden, die anzeigen, welches der 16
Bits zu behandeln ist. Diese 4 Bits in dem Register XB-32 werden
dem Decodierer 34 zugeführt, welcher eine Maske von 16 Bits erzeugt,
wobei diese Maske 15 Bits mit dem Wert "0" und 1 Bit mit
dem Wert "1" oder umgekehrt aufweist, was von der Polarität der
Logik des Systems abhängt. Hierdurch wird eine Operation nur hinsichtlich
jenes Bit-Speicherplatzes freigegeben, der in Bezug auf
die anderen Speicherplätze unterschiedlich maskiert ist. Der Ausgang
der Decodiereinrichtung 34 wird in Abhängigkeit von dem Feld
BI des Steuerspeicher-Firmware-Wortes über die Gatter 41 auf die
interne Datenschiene 28 geschaltet. Diese Maskierung wird sodann
dem Addierer 96 über die Logik 44 und den Multiplexer 88 zugeführt.
Die Maske wird sodann in dem Register E in der Registerdatei 70 für
eine indizierte Operation abgelegt. Der Inhalt des Registers E
wird sodann bei der Bearbeitung des entsprechenden Bits des Operandenwortes
benutzt. Dies geschieht während des Zyklus XE durch
Maskierung des Inhalts des Registers E mit dem vom Speicher erhaltenen
Operandenwort (siehe Block 260 in Fig. 6). Diese Maskierungsoperation
ist ähnlich der Maskierung, die durch den Wert FF 00
vorgegeben ist, wie dies im Zusammenhang mit den Blöcken 262 und
264 gemäß Fig. 6 erläutert wurde.
Es sei darauf verwiesen, daß zusätzlich zu der Abgabe von XB (0)
auf die Adreßleitungen der externen Datenschiene über das Gatter 51
der Inhalt des Registers Y-22 ebenfalls auf diese Adreßleitung
gegeben wird, um den Speicher zu adressieren. Es sei ferner darauf
verwiesen, daß das Register Y-22 immer die letzte Adresse
enthält, die auf die Adreßleitungen gegeben wurde, so daß zu
jedem Zeitpunkt, in dem eine Adresse auf die Adreßleitungen ausgegeben
wird, diese Adrese im Register 22 enthalten ist.
In Fig. 10 ist die Testlogik 50 dargestellt. Die Testlogik 50
wird durch das Feld TC des Firmware-Wortes gesteuert. Wie aus
Fig. 4 ersichtlich, kann das Feld TC beispielsweise 6Bits 40-45
umfassen. Dementsprechend können 64 Testbedingungen ausgewählt
werden. Zum Zwecke der vereinfachten Darstellung veranschaulicht
Fig. 10 die Auswahl von bis zu 16 Testeingängen und diese Testlogik
ist demgemäß durch 4 Bits des Feldes TC gesteuert. Die Logik 50
umfaßt eine Auswahl- oder Decodierlogik, um einen der Testeingänge
am Ausgang der Auswahllogik SL-306 zu erzeugen. Die Logik 306
erzeugt ein Eingangssignal für verschiedenen Gatter, die durch das
Bit 36 des Feldes BR des Firmware-Wortes gesteuert werden. Hierdurch
wird grundsätzlich ein Mittel zum Invertieren des ausgewählten
Signales vorgegeben, wobei dies in Abhängigkeit von der
gewünschten Operation geschieht. Kommt beispielsweise einer der
Testeingänge von einem der Bits in dem Register F, so kann festgestellt
werden, welches Bit im Befehlswort die Art der auszuführenden
Operation anzeigt. Diese Operation kann jedoch unter
gewissen Umständen verschiedener Art sein. So gestattet die Umkehrung
die Erzeugung des Signales TCTRUE oder des Signales
wobei diese beiden Signale unterschiedliche Adressierungen
auslösen, wie dies im Zusammenhang mit der Erzeugungslogik gemäß
Fig. 11 für die nächste Adresse erläutert wird.
Die in der Testlogik 50 enthaltene typische Auswahl- oder
Decodierlogik weist die Fähigkeit auf, in Abhängigkeit von zwei
auf Freigabeleitungen erhaltenen Signalen einen von vier Eingängen
an den Ausgang weiterzuschalten. Andere Anordnungen einer
solchen Auswahllogik können verwendet werden, ohne daß der Rahmen
der vorliegenden Erfindung verlassen wird. Jeder der Auswahl-
Logikschaltkreise 302 bis 306 kann vom gleichen Typ sein. 16
Testeingänge A bis P bilden die Eingänge der vier Auswahl-Logikschaltkreise
303 bis 305. Die Ausgänge der vier genannten Auswahlschaltkreise
bilden die vier Eingänge eines weiteren Auswahl-
Logikschaltkreises 306.
Signale TC (2) und TC (3) steuern die Auswahl-Logikschaltkreise 302
bis 305 an und veranlassen die Durchschaltung eines Testeinganges
auf den Eingang des Auswahl-Logikschaltschaltkreises 306. Hierbei steuern
Signale TC (0) und TC (1) den Auswahl-Logikschaltkreis 306 an
und bewirken die Durchschaltung eines von den vier Eingängen auf
den Eingang des Gatterschaltkreises. Weisen beispielsweise die
Signale TC (0) bis TC (3) die Werte "0", "1", "0" und "1" auf, so
werden die Testeingänge C, G, K und O über die Schaltkreise 302,
303, 304 und 305 als Eingangssignale auf den Auswahl-Logikschaltkreis
306 gegeben. Danach wird der Auswahl-Logikschaltkreis 306
angesteuert, wodurch ein Eingangssignal zum Ausgang weitergeschaltet
wird, beispielsweise wird der Testeingang K hierbei auf
die Exklusiv-ODER-Gatter 300 und 310 gegeben.
Beim Empfang eines Test-Eingangssignales und in Abhängigkeit von
dem Feld BR (Bit 36) des Firmware-Wortes wird entweder das Signal
TCTRUE oder erzeugt. Mit dem Wert "1" am Eingang der
Exklusiv-ODER-Gatter 300 und 310 wird ein Signal mit dem Wert "1"
am Ausgang des Gatters 310 erzeugt und dementsprechend das Signal
TCTRUE, sofern das Bit 36 des Feldes BR ebenfalls den Wert "1"
aufweist. Weist das Bit 36 den Wert "0" auf, so wird das Gatter
300 über den Inverter 308 angesteuert und erzeugt ein Binärsignal
mit dem Wert "1", d. h. das Signal .
In Fig. 11 ist die Erzeugungslogik 52 für die nächste Adresse in
näheren Einzelheiten dargestellt. Diese Erzeugungslogik 52 für
die nächste Adresse dient der Adressierung des Steuerspeichers 10
über die 9 CSA-Leitungen (0 bis 8). Beispielsweise werden im
Steuerspeicher 10 nur 512 Worte benutzt, so daß die 10. und die
weiteren CSA-Leitungen hier nicht benötigt werden. Das auf den
CSA-Leitungen vorliegende Adreßmuster hängt von einer Anzahl
von Eingängen der Erzeugungslogik 52 für die nächste Adresse ab.
Ein solcher Eingang wird durch die Testlogik 50 gebildet, die die
Signale TCTRUE oder erzeugt. Andere Eingänge werden vom
Register F und dem zuletzt adressierten Steuerspeicherwort geliefert.
Das primäre Feld des Steuerspeicherwortes wird durch das
Feld NA gebildet, welches in allen Fällen benutzt wird, in denen
die Testbedingung nicht bestätigt ist .
Die neun Steuerspeicher-Adreß-Bits werden erzeugt, um die den
verschiedenen Firmware-Routinen gemäß Fig. 3 zugeordneten
Firmware-Worten zu adressieren. Jede solche Routine, d. h. jede
Gruppe von Firmware-Worten ist in einem bestimmten Bereich des
Steuerspeichers 10 enthalten. Der Eingang des Steuerspeichers
zu der Erzeugungslogik der nächsten Adresse umfaßt das Feld BR
in dem Firmware-Wort, welches die Art der auszuführenden Verzweigung
als Ergebnis einer speziellen Testbedingung festlegt.
Das Register F speichert das Befehlswort, das vom Speicher erhalten
wird. Dieses Register weist eine Breite von 16 Bits auf.
Wie aus Fig. 11 ersichtlich, werden verschiedene Kombinationen
solcher Bits benutzt. Das typische Befehlswort weist folgendes
Format auf: Die Bits 4 bis 8 bilden das sogenannte Operationscodefeld
und die Bits 9-15 bilden die sogenannte Adreßsilbe.
Die sogenannte Adreßsilbe kann in den Bits 9-11 eine Adressenmodifikation
enthalten. Das Bit 12 dieser Adreßsilbe stellt das
sogenannte indirekte Adressierungs-Hinweisbit dar, während die
Bits 13-15 die Registernummer angeben, d. h. irgendeines der
Basisregister B 1 bis B 7 in der Registerdatei 70 der Einheit RALU-12.
Die Bits 1-3 des Befehlswortes bestimmen die Registernummer
eines von sieben Wort-Operandenregister, d. h. die Datenregister
D 1 bis D 7 in der Registerdatei 70. Das Bit 0 des Befehlswortes
weist entweder den Wert "1" auf, um anzuzeigen, daß entweder ein
einfacher oder doppelter Operandenbefehl vorliegt oder es weist
den Wert "0" auf um anzuzeigen, daß entweder ein Befehl vom Verzweigungstyp
oder ein Befehl vom Verschiebetyp vorliegt.
Anfänglich wird das Feld BR des Firmware-Wortes im Decodierer 500
decodiert, der die dargestellten Firmware-Routinen bezeichnenden
Signale erzeugt. Wenn das Signal erzeugt wird,
so gibt das ODER-Gatter 502 ein und das UND-Gatter 504 vorbereitendes
Signal ab, wodurch die nächste Adresse aus einem von 9 Bits im
Feld NA des vorliegenden Firmware-Wortes auf die Leitungen CSA
gelangt. In Abhängigkeit vom Signal wird das Feld Na des
Firmware-Wortes unabhängig von der fortschreitenden Firmware-
Routine benutzt. In Abhängigkeit von dem Signal TCTRUE werden die
CSA-Leitungen in Abhängigkeit von der Firmware-Route, die durch
den Decodierer 500 decodiert und die durch das Feld BR des
Firmware-Wortes bestimmt wird, adressiert.
In Abhängigkeit von der Art der Firmware-Routine adressiert der
Haupt-Verzweigungsdecodierer 506 die CSA-Adreßleitungen 5-8.
Dem Decodierer 506 wird ein Freigabesignal und die Signale
des Feldes BR sowie die Signalbits 0-5 des Registers F zugeführt,
wobei diese Bits die Art des Befehls, das ausgewählte Datenregister
und die beiden signifikantesten Bits des Operationscode
anzeigen. Durch den Haupt-Verzweigungsdecodierer 506 werden die
CSA-Leitungen 5-8, d. h. die vier signifikantesten Leitungen
adressiert. Zusammen mit diesen Leitungen führen die anderen Leitungen
die vollständige Adresse des Steuerspeichers 10. Durch
Definition verbleibt jede CSA-Adreßleitung, die nicht aufgrund
einer gegebenen Decodierung angesteuert wird, auf dem Binärwert "0".
Dies kann durch den verwendeten Logiktyp vorgegeben werden.
Wie zuvor erwähnt, gestattet die Verzweigung XO die vollständige
Bestimmung der nächsten Adresse durch die 9 Bits in dem Feld NA
des Firmware-Wortes. Dies ist auch der Fall, wenn das Signal
erzeugt wird. Wenn jedoch sowohl die Verwendung XO als auch das
Signal TCTRUE vorliegt, so wird das Gatter 508 geschaltet und es
werden nur die 7 signifikantesten Bits der nächsten Adresse dem
Feld NA entnommen. Die beiden am wenigsten signifikanten Bits,
d. h. das Bit 0 und Das Bit 1 werden mit dem Binärwert "1" auf
die entsprechenden CSA-Leitungen gegeben. Dies gestattet die Verzweigung
innerhalb einer Haupt-Verzweigungs-Firmware-Routine auf
irgendeinen von drei Speicherplätzen während die Ausführung der
XO-Nebenverzweigung.
Bei allen Verzweigungen wird beim Vorliegen des Signales
die nächste Adresse mittels des Feldes NA des Firmware-Wortes
erzeugt. Dies gilt ebenso für die Abrufroutine XF. Liegt das
Signal TCTRUE vor und wird die Routine XF durch den Decodierer 500
aufgerufen, so wird für den Fall, daß der Speicher einen aufgedeckten
Fehler anzeigt, ein Speicherplatz durch die Steuerleitung 1
innerhalb der CSA-Leitungen gesetzt, so daß diese wiederauffindbare
Bedingung beispielsweise durch die Erhöhung eines
Zählerstandes notiert werden kann. Ein solche Adreßbildung
wird durch das UND-Gatter 510 vorgegeben, wenn das Signal MEMOK
vorliegt, welches den Zustand eines wiederauffindbaren Fehlrs
anzeigt, Eine solche Adresse besteht aus den Bits 5 bis 8, die
von dem Decodierer 506 erzeugt werden, während die Bits 0 und die
Bits 2 bis 4 auf dem Wert "0" verbleiben.
Bei vorliegendem Signal TCTRUE gestattet die Verzweigung XA die
Bildung der nächsten Adresse in erster Linie durch Decodierung
der Adreßsilbe des laufenden Befehlswortes in Abhängigkeit von
der Art des Befehls und des Operationscodes desselben. Wenn natürlich
das Signal vorliegt, so wird die nächste Adresse
durch das Feld NA gebildet. In Abhängigkeit von der Art des Befehles
weist das Bit 0 des Registers F entweder den Wert "1" oder
den Wert "0" auf. Wenn dieses mit F 0 bezeichnete Bit den Wert "1"
aufweist, so schaltet das Gatter 512 durch, sofern sowohl das
Signal XA als auch das Signal TCTRUE das vorgeschaltete UND-
Gatter 514 beaufschlagen. Hierdurch wird der Decodierer 516 angesteuert
und decodiert den Inhalt der sogenannten Adreßsilbe in
den Bits 9-15 des Registers F-36 zwecks Erzeugung einer Adresse
auf den Leitungen 1 bis 4, wobei das am wenigsten signifikante Bit
auf dem Wert "0" für alle Hauptverzweigungen gelassen wird. Die
anderen Bits, d. h. die Bits 5-8 der CSA-Leitungen werden in
Abhängigkeit von der Decodierung durch den Decodierer 506 erzeugt.
Weist andererseits das Bit F 0 den Wert "0" auf, was durch das
Signal angezeigt wird, so wird über das Gatter 518 der Decodierer
520 angesteuert, wodurch auf den CSA-Leitungen 1 bis 4
die Decodierung der Bits 4-8 des Registers F auftritt, wobei
die Bits 4-8 den Operationscode des Befehlswortes umfassen.
Eine Adressenverzweigung erzeugt somit eine Adresse in Abhängigkeit
von der Adreßsilbe oder dem Operationscode entsprechend dem
Befehl im Register F-36.
Aufgrund der Gattungsverzweigung XG werden die Bits 2-4 auf den
CSA-Leitungen mit einer speziellen Adresse versehen. Hierbei ist
Voraussetzung, daß das Signal TCTRUE vorliegt. Diese Bits 2-4
werden entsprechend der Decodierung der Bits 12-14 des Registers
E gebildet. Dieser Teil der Adresse wird durch Ansteuerung des
Gatters 522 gebildet. Die beiden am wenigsten signifikanten Bits
werden auf dem Wert "0" gehalten.
Die Leseverzweigung XR und die Schreibverzweigung XW benutzen
beide eine Decodierung der Bits 1-8 des Registers F durch den
Decodierer 524, wobei diese Bits die Datenregisterauswahl und den
Operationscode des Befehlswortes vorgeben. Die Signale XR und XW
steuern über das ODER-Gatter 526 das UND-Gatter 528 an, welches
für den Fall, daß das Signal TCTRUE vorliegt, den Decodierer 524
ansteuert und einen Teil der Adresse auf den Bit-Leitungen 1-4
bildet. Das Bit 0 wird auf dem Wert "0" gehalten und die Bits
5-8 werden von dem Haupt-Verzweigungsdecodierer 506 gewonnen.
Mit einer Leseverzweigung kann beipsielsweise eine indirekte
Adresse oder ein Operand im Speicher abgerufen werden. Bei der
Schreibverzweigung basiert die Firmware-Auswahl eines Wortes darauf,
ob eine Halb- oder eine Vollwertadresse vorliegt oder ob
der Operand in den Speicher oder in ein Register zu laden ist.
Die Ausführungsverzweigung XE steuert beim Vorliegen des Signales
TCTRUE über das UND-Gatter 530 den Decodierer 532 an, der in
Abhängigkeit von den Bits 0-8 des Registers F eine 00510 00070 552 001000280000000200012000285910039900040 0002002714805 00004 00391n Teil der
Adresse auf den Bit-Leitungen 2-4 erzeugt. Die Bits 0 und 1
werden auf dem Wert "0" gehalten und die Bits 5-8 werden durch
den Decodierer 506 erzeugt. Die Ausführungsverzweigung XE gestattet
Mikroroutinen zur Ausführung von Befehlen wie beispielsweise
Addieren, Laden, Multiplizieren usw.
Claims (3)
1. Adressierungsvorrichtung für eine Datenverarbeitungseinheit
mit einem Datenprozessor, mit einem mehrere
Speicherplätze aufweisenden Speicher, wobei jeder
Speicherplatz der Speicherung eines Wortes dient, jedes
Wort wenigstens zwei Bytes und jedes Byte mehrere Bits
aufweist, mit einem Bus zur Übertragung adressierter
Worte zwischen dem Prozessor und dem Speicher, wobei der
Prozessor ein Befehlsregister zur Speicherung eines
Befehlswortes, sowie ein Basisregister zum Speichern
einer Basisadresse und ein Indexregister zum Speichern
eines Indexwertes zwecks Bildung einer effektiven Adresse
aufweist, mit einem Steuerspeicher zur Speicherung von
mehreren Steuerspeicherworten und mit einer auf das
Befehlswort im Befehlsregister ansprechenden Einrichtung
zur Adressierung eines der Steuerspeicherworte; gekennzeichnet
durch
ein Steuerregister (32), dem der Indexwert des Indexregisters (E-Register in 70) über eine Übertragungslogik (80) zugeführt wird; und
eine auf das adressierte Steuerspeicherwort und das Befehlswort ansprechende Freigabeeinrichtung (39) für die Übertragungslogik (80) zur Übertragung des Indexwertes von dem Indexregister zu dem Steuerregister, wobei die Übertragungslogik (80) eine Einrichtung zum bitweisen Verschieben des Indexwertes aufweist und die Verschiebung in Abhängigkeit davon erfolgt, ob durch den Befehl im Befehlsregister eine Wort-, Byte- oder Bitadressierung vorgegeben ist.
ein Steuerregister (32), dem der Indexwert des Indexregisters (E-Register in 70) über eine Übertragungslogik (80) zugeführt wird; und
eine auf das adressierte Steuerspeicherwort und das Befehlswort ansprechende Freigabeeinrichtung (39) für die Übertragungslogik (80) zur Übertragung des Indexwertes von dem Indexregister zu dem Steuerregister, wobei die Übertragungslogik (80) eine Einrichtung zum bitweisen Verschieben des Indexwertes aufweist und die Verschiebung in Abhängigkeit davon erfolgt, ob durch den Befehl im Befehlsregister eine Wort-, Byte- oder Bitadressierung vorgegeben ist.
2. Adressiervorrichtung nach Anspruch 1, gekennzeichnet
durch steuerbare Dupliziereinrichtungen
(44, 61) zur Duplizierung eines Bytes bei
einer Halbwort-Lese- oder Schreiboperation.
3. Adressiervorrichtung nach Anspruch 2, dadurch
gekennzeichnet, daß die Dupliziereinrichtungen
(44, 61) von einem Steuerwort (GC, BI) des
Steuerspeichers (10) und die für eine Leseoperation
zuständige Dupliziereinrichtung (44) zusätzlich durch ein
Bit des Steuerregisters (32) steuerbar ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US05/674,698 US4079451A (en) | 1976-04-07 | 1976-04-07 | Word, byte and bit indexed addressing in a data processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
DE2714805A1 DE2714805A1 (de) | 1977-10-20 |
DE2714805C2 true DE2714805C2 (de) | 1988-02-25 |
Family
ID=24707588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19772714805 Granted DE2714805A1 (de) | 1976-04-07 | 1977-04-02 | Datenverarbeitungssystem |
Country Status (6)
Country | Link |
---|---|
US (1) | US4079451A (de) |
JP (1) | JPS5812606B2 (de) |
BE (1) | BE852985A (de) |
CA (1) | CA1083725A (de) |
DE (1) | DE2714805A1 (de) |
FR (1) | FR2347722A1 (de) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4093982A (en) * | 1976-05-03 | 1978-06-06 | International Business Machines Corporation | Microprocessor system |
JPS5448449A (en) * | 1977-09-26 | 1979-04-17 | Hitachi Ltd | Virtual addressing sustem |
JPS5464933A (en) * | 1977-11-01 | 1979-05-25 | Panafacom Ltd | Main storage extension system |
JPS6041769B2 (ja) * | 1977-10-31 | 1985-09-18 | 日本電気株式会社 | アドレス指定方式 |
US4447878A (en) * | 1978-05-30 | 1984-05-08 | Intel Corporation | Apparatus and method for providing byte and word compatible information transfers |
US4272828A (en) * | 1979-01-03 | 1981-06-09 | Honeywell Information Systems Inc. | Arithmetic logic apparatus for a data processing system |
US4374416A (en) * | 1979-06-27 | 1983-02-15 | Burroughs Corporation | Linear sequencing microprocessor having word and byte handling |
US4301505A (en) * | 1979-06-27 | 1981-11-17 | Burroughs Corporation | Microprocessor having word and byte handling |
US4323963A (en) * | 1979-07-13 | 1982-04-06 | Rca Corporation | Hardware interpretive mode microprocessor |
US4300208A (en) * | 1979-11-30 | 1981-11-10 | Control Data Corporation | Controlling which of two addresses is used by a microcode memory |
US4430711A (en) | 1980-05-30 | 1984-02-07 | Signetics Corporation | Central processing unit |
US4418383A (en) * | 1980-06-30 | 1983-11-29 | International Business Machines Corporation | Data flow component for processor and microprocessor systems |
US4358826A (en) * | 1980-06-30 | 1982-11-09 | International Business Machines Corporation | Apparatus for enabling byte or word addressing of storage organized on a word basis |
US4445177A (en) * | 1981-05-22 | 1984-04-24 | Data General Corporation | Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions |
US4480306A (en) * | 1981-05-22 | 1984-10-30 | Data General Corporation | Digital data processing system using unique ALU register files and micro-instruction stacks |
US4821184A (en) * | 1981-05-22 | 1989-04-11 | Data General Corporation | Universal addressing system for a digital data processing system |
US4502111A (en) * | 1981-05-29 | 1985-02-26 | Harris Corporation | Token generator |
US4654781A (en) * | 1981-10-02 | 1987-03-31 | Raytheon Company | Byte addressable memory for variable length instructions and data |
US4507732A (en) * | 1981-10-05 | 1985-03-26 | Burroughs Corporation | I/O subsystem using slow devices |
US4507731A (en) * | 1982-11-01 | 1985-03-26 | Raytheon Company | Bidirectional data byte aligner |
US4719592A (en) * | 1982-11-20 | 1988-01-12 | International Computers Limited | Sequence generator |
JPS59174948A (ja) * | 1983-03-25 | 1984-10-03 | Toshiba Corp | 情報処理装置 |
US6552730B1 (en) | 1984-10-05 | 2003-04-22 | Hitachi, Ltd. | Method and apparatus for bit operational process |
US5034900A (en) * | 1984-10-05 | 1991-07-23 | Hitachi, Ltd. | Method and apparatus for bit operational process |
US4942547A (en) * | 1985-04-11 | 1990-07-17 | Honeywell Bull, Inc. | Multiprocessors on a single semiconductor chip |
JPS62169205A (ja) * | 1986-01-22 | 1987-07-25 | Hitachi Ltd | プログラマブルコントロ−ラ |
US4956809A (en) * | 1986-11-24 | 1990-09-11 | Mark Williams Company | Method for canonical ordering of binary data for portable operating systems |
US5073969A (en) * | 1988-08-01 | 1991-12-17 | Intel Corporation | Microprocessor bus interface unit which changes scheduled data transfer indications upon sensing change in enable signals before receiving ready signal |
US5072372A (en) * | 1989-03-03 | 1991-12-10 | Sanders Associates | Indirect literal expansion for computer instruction sets |
US5179691A (en) * | 1989-04-12 | 1993-01-12 | Unisys Corporation | N-byte stack-oriented CPU using a byte-selecting control for enhancing a dual-operation with an M-byte instruction word user program where M<N<2M |
US6038584A (en) * | 1989-11-17 | 2000-03-14 | Texas Instruments Incorporated | Synchronized MIMD multi-processing system and method of operation |
GB9018990D0 (en) * | 1990-08-31 | 1990-10-17 | Ncr Co | Register control for workstation interfacing means |
JP2000010863A (ja) * | 1998-06-24 | 2000-01-14 | Sony Computer Entertainment Inc | 情報処理装置および方法、並びに提供媒体 |
US6356994B1 (en) * | 1998-07-09 | 2002-03-12 | Bops, Incorporated | Methods and apparatus for instruction addressing in indirect VLIW processors |
US6360308B1 (en) * | 1998-09-30 | 2002-03-19 | Lsi Logic Corporation | Buffer controller |
JP4703762B1 (ja) | 2009-12-22 | 2011-06-15 | 株式会社東芝 | 電子機器 |
US9208082B1 (en) * | 2012-03-23 | 2015-12-08 | David R. Cheriton | Hardware-supported per-process metadata tags |
CN112291567B (zh) * | 2020-10-23 | 2023-03-21 | 湖南国科微电子股份有限公司 | 一种yuv数据存储方法、装置、设备及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3161763A (en) * | 1959-01-26 | 1964-12-15 | Burroughs Corp | Electronic digital computer with word field selection |
GB1038710A (en) * | 1964-04-04 | 1966-08-10 | Ibm | Data processing systems |
US3343138A (en) * | 1964-10-07 | 1967-09-19 | Bell Telephone Labor Inc | Data processor employing double indexing |
US3581287A (en) * | 1969-02-10 | 1971-05-25 | Sanders Associates Inc | Apparatus for altering computer memory by bit, byte or word |
US3602896A (en) * | 1969-06-30 | 1971-08-31 | Ibm | Random access memory with flexible data boundaries |
UST843614I4 (de) * | 1969-07-22 | |||
BE752149A (nl) * | 1970-06-18 | 1970-12-18 | Bell Telephone Mfg | Gegevens verwerkend systeem, |
US3716838A (en) * | 1970-08-24 | 1973-02-13 | Honeywell Inf Systems | Data processing system with selective character addressing of system store |
FR122199A (de) * | 1973-12-17 |
-
1976
- 1976-04-07 US US05/674,698 patent/US4079451A/en not_active Expired - Lifetime
-
1977
- 1977-02-09 CA CA271,454A patent/CA1083725A/en not_active Expired
- 1977-03-29 BE BE176203A patent/BE852985A/xx not_active IP Right Cessation
- 1977-04-02 DE DE19772714805 patent/DE2714805A1/de active Granted
- 1977-04-05 FR FR7710242A patent/FR2347722A1/fr active Granted
- 1977-04-06 JP JP52039381A patent/JPS5812606B2/ja not_active Expired
Also Published As
Publication number | Publication date |
---|---|
CA1083725A (en) | 1980-08-12 |
FR2347722B1 (de) | 1984-03-30 |
DE2714805A1 (de) | 1977-10-20 |
JPS52155029A (en) | 1977-12-23 |
BE852985A (fr) | 1977-07-18 |
JPS5812606B2 (ja) | 1983-03-09 |
US4079451A (en) | 1978-03-14 |
FR2347722A1 (fr) | 1977-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2714805C2 (de) | ||
DE2722099C2 (de) | ||
DE2704842C2 (de) | Im Pipeline-Betrieb arbeitende Datenverarbeitungseinrichtung | |
DE3851488T2 (de) | Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor. | |
DE2411963C3 (de) | Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken | |
DE1815078C3 (de) | Elektronisches Datenverarbeitungssystem | |
DE2234867C2 (de) | Anordnung in einer Datenverarbeitungsanlage zum Steuern der Verarbeitung zweier voneinander unabhängiger Befehlsfolgen | |
DE2629459C2 (de) | ||
DE2456578C2 (de) | Datenverarbeitungsanlage | |
EP0097725B1 (de) | Einrichtung im Befehlswerk eines mikroprogrammgesteuerten Prozessors zur direkten hardwaregesteuerten Ausführung bestimmter Instruktionen | |
DE3638572C2 (de) | ||
DE2907181A1 (de) | Befehlssatz-modifizierregister fuer einen datenprozessor | |
DE2611892C2 (de) | Mikroprogramm-Steueranordnung | |
DE2750721A1 (de) | Ein/ausgabe-system | |
DE2657848A1 (de) | Steuereinheit fuer ein datenverarbeitungssystem | |
DE1499200B2 (de) | Datenverarbeitungsanlage mit vorranggesteuerter programm unterbrechung | |
DE2715073A1 (de) | Mikroprogrammierte rechner-steuervorrichtung | |
DE2712224A1 (de) | Datenverarbeitungsanlage | |
DE19983098B4 (de) | Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren | |
DE2023354A1 (de) | Programmierbare Einheit und Verfahren zum Betreiben einer programmierbaren Einheit | |
DE69130414T2 (de) | Prozessor und Verfahren zur parallelen Verarbeitung | |
DE1774870C3 (de) | Einrichtung zur Adressierung einer Speicherzelle eines Speichers in einer Datenverarbeitungsanlage | |
DE69130513T2 (de) | Verfahren zur Durchführung boolescher Operationen zwischen zwei beliebigen Bits von zwei beliebigen Registern | |
DE112005002370T5 (de) | Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen | |
DE4434529A1 (de) | Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8127 | New person/name/address of the applicant |
Owner name: HONEYWELL BULL INC., MINNEAPOLIS, MINN., US |
|
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |