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
Application number
DE2714805A
Other languages
English (en)
Other versions
DE2714805A1 (de
Inventor
William E. Natick Mass. Us Woods
Philip E. Westboro Mass. Us Stanley
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull HN Information Systems Inc
Original Assignee
Honeywell Bull Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honeywell Bull Inc filed Critical Honeywell Bull Inc
Publication of DE2714805A1 publication Critical patent/DE2714805A1/de
Application granted granted Critical
Publication of DE2714805C2 publication Critical patent/DE2714805C2/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions 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.
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.
DE19772714805 1976-04-07 1977-04-02 Datenverarbeitungssystem Granted DE2714805A1 (de)

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)

* Cited by examiner, † Cited by third party
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
US4301505A (en) * 1979-06-27 1981-11-17 Burroughs Corporation Microprocessor having word and byte handling
US4374416A (en) * 1979-06-27 1983-02-15 Burroughs Corporation Linear sequencing 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
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
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
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)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
JPS5812606B2 (ja) 1983-03-09
DE2714805A1 (de) 1977-10-20
CA1083725A (en) 1980-08-12
FR2347722A1 (fr) 1977-11-04
FR2347722B1 (de) 1984-03-30
US4079451A (en) 1978-03-14
JPS52155029A (en) 1977-12-23
BE852985A (fr) 1977-07-18

Similar Documents

Publication Publication Date Title
DE2714805C2 (de)
DE2722099C2 (de)
DE2704842C2 (de) Im Pipeline-Betrieb arbeitende Datenverarbeitungseinrichtung
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE1815078C3 (de) Elektronisches Datenverarbeitungssystem
DE69628480T2 (de) Ausnahmebehandlung in einem Datenprozessor
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
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE2023354A1 (de) Programmierbare Einheit und Verfahren zum Betreiben einer programmierbaren Einheit
DE1774870C3 (de) Einrichtung zur Adressierung einer Speicherzelle eines Speichers in einer Datenverarbeitungsanlage
DE3900246C2 (de)
DE1499206B2 (de) Rechenanlage
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