DE2903349C2 - Prozessor und Verfahren zur Datenverarbeitung - Google Patents
Prozessor und Verfahren zur DatenverarbeitungInfo
- Publication number
- DE2903349C2 DE2903349C2 DE2903349A DE2903349A DE2903349C2 DE 2903349 C2 DE2903349 C2 DE 2903349C2 DE 2903349 A DE2903349 A DE 2903349A DE 2903349 A DE2903349 A DE 2903349A DE 2903349 C2 DE2903349 C2 DE 2903349C2
- Authority
- DE
- Germany
- Prior art keywords
- register
- bit
- command
- instruction
- microcode
- 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 - Fee Related
Links
- 238000003672 processing method Methods 0.000 title 1
- 230000015654 memory Effects 0.000 claims description 54
- 238000012545 processing Methods 0.000 claims description 18
- 238000000034 method Methods 0.000 claims description 11
- QECABVMKPMRCRZ-UHFFFAOYSA-N acetyl(methoxy)phosphinic acid Chemical compound COP(O)(=O)C(C)=O QECABVMKPMRCRZ-UHFFFAOYSA-N 0.000 description 28
- 230000006870 function Effects 0.000 description 19
- 238000012937 correction Methods 0.000 description 14
- 238000012546 transfer Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 7
- 238000013519 translation Methods 0.000 description 6
- 230000007423 decrease Effects 0.000 description 5
- 230000008520 organization Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- FVFVNNKYKYZTJU-UHFFFAOYSA-N 6-chloro-1,3,5-triazine-2,4-diamine Chemical compound NC1=NC(N)=NC(Cl)=N1 FVFVNNKYKYZTJU-UHFFFAOYSA-N 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000001143 conditioned effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000001356 surgical procedure Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000994 depressogenic effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30069—Instruction skipping instructions, e.g. SKIP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3871—Asynchronous instruction pipeline, e.g. using handshake signals between stages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Description
Die Erfindung bezieht sich auf einen Prozessor
nach dem Oberbegriff des Anspruchs 1 bzw. ein Verfahren
zur Datenverarbeitung nach dem Oberbegriff des Anspruchs 2.
Digitalrechner gewinnen in der modernen Technik zunehmend
an Bedeutung und erhalten neue Anwendungsgebiete bei praktisch
jeder wesentlichen technologischen Verbesserung. Die Entwicklung
von Minicomputern hat es ermöglicht, daß Digitalrechner
als permanenter Bestandteil verschiedener Prozeßsteuersysteme
vorgesehen werden. Die Größe und Kosten von Minicomputern hat
jedoch deren Einsatzmöglichkeit in besonderen Anwendungsfällen
beschränkt. Die Kapazität und Leistungsfähigkeit solcher besonderer
Mikroprozessoren gehen teilweise auf eine feste oder begrenzte
Wortlänge zurück, von der der Betrieb des Mikroprozessors
abhängig ist.
Bekannt sind Datenverarbeitungseinrichtungen, die bei der
Ausführung arithmetischer Operationen in der Lage sind, entweder
Operanden mit der Länge eines Bytes miteinander zu verknüpfen
oder Operanden mit der Länge eines Vielfachen eines Bytes
(z. B. mit der Länge eines Wortes) zu verarbeiten. Diese Datenverarbeitungseinrichtungen
können unter anderem arithmetische
Operationen an Operanden ausführen, die vom Operationsbefehl
unmittelbar transportiert werden (sogenannte Direktoperanden).
Bei der Ausführung der Operation wird ein Bit verwendet, das
anzeigt, ob die Operation und zugleich sämtliche Operanden die
Länge eines Bytes oder eines Wortes haben. Hat die Operation
die Länge eines Bytes, so haben beide Operanden der arithmetischen
Operation, also auch der Direktoperand, die Länge eines
Bytes. Wenn dagegen die Operation Wort-Länge hat, so haben
beide Operanden einschließlich des Direktoperanden ebenfalls
Wort-Länge.
Aus der Firmenschrift der Texas Instruments, Inc. "SPB 9900
I²L 16-Bit Microprocessor Data Manual", Oktober 1976, S. III-20,
ist eine Adressberechnung bekannt, bei der zu einer Basisadresse
eine Verschiebung geringerer Bitlänge hinzuaddiert
wird. Dazu wird zuvor die Verschiebung durch "Auffüllen" der
höher bewerteten Bitpositionen mit dem Vorzeichenbit erweitert.
Der Erfindung liegt die Aufgabe zugrunde, eine Datenverarbeitungseinrichtung
bzw. ein Verfahren zur Datenverarbeitung zu
schaffen, bei denen bei einer arithmetischen Operation der eine
Operand Wort-Länge und der Direkt-Operand die Länge eines Bytes
oder eines Wortes haben kann, ohne daß bei der Ausführung des
Direktoperanden-Befehls zusätzliche Hardware erforderlich ist.
Diese Aufgabe wird erfindungsgemäß durch einen Prozessor
nach Anspruch 1 bzw. ein Verfahren nach Anspruch
2 gelöst. Ein wesentlicher Grundgedanke bei dieser Lösung
ist die Verwendung eines zusätzlichen 1-Bits, das anzeigt,
ob der Direktoperand Byte- oder Wort-Länge hat. Ein weiterer
Grundgedanke ist die automatische Verlängerung des kürzeren
Operanden durch Kopieren von Vorzeichen-Bits in alle Bitpositionen
höherer Ordnung.
Im folgenden wird die Erfindung anhand eines in der Zeichnung
dargestellten Ausführungsbeispiels näher erläutert.
In der Zeichnung zeigt:
Fig. 1a und 1b vereinfachte Blockschaltbilder
der internen Organisation eines Mikroprozessors
nach einem Ausführungsbeispiel der Erfindung;
Fig. 2 eine äquivalente Logikschaltung für eine besondere
Art der ALU-Schaltung, die in ASCII-Befehlen verwendet wird; und
Fig. 3 ein schematisches Zustandsdiagramm der Laderschaltung
der unteren Steuereinheit.
Die Fig. 1a und 1b zeigen vereinfachte schematische Blockschaltbilder
eines Zentralprozessors 10, der erfindungsgemäß
organisiert ist. Der Zentralprozessor, im folgenden CPU
10 genannt, zeichnet sich dadurch aus, daß er eine obere
Steuereinheit 12, schematisch in Fig. 1a gezeigt, und eine
untere Steuereinheit 14, schematisch in Fig. 1b gezeigt,
aufweist. Wie aus den Fig. 1a und 1b zu sehen ist, ist
die obere Steuereinheit 12 mit der unteren Steuereinheit
14 vor allem über einen ALU-Bus 16, einen S-Bus
18 (Quellen-Bus), einen Ziel- bzw. D-Bus 20 und einen
Q-Bus 22 (Warteschlangen-Bus) verbunden.
Ferner gibt es mehrere
Steuerleitungen oder -Busse, welche die obere Einheit
12 mit der unteren Einheit 14 in einer im folgenden noch
genauer beschriebenen Weise verbinden.
Die obere Steuereinheit 12 ist der einzige Teil der CPU 10,
der direkt in den Informationsaustausch mit der externen
Speichereinheit einbezogen ist. Bekanntlich werden alle
Zentraleinheiten bzw. CPU's in Kombination mit einem oder
mehreren Speichersystemen verwendet, wobei in dem beschriebenen
Ausführungsbeispiel unterstellt wird, daß diese Speichersysteme
durch einen Ein-Megabyte-Halbleiterspeicher gebildet
werden. Andere Arten von Speichern oder bekannten Eingabe/Ausgabe-Einrichtungen
können direkt oder indirekt mit dem
externen Adreß- und Daten-Bus gekoppelt werden,
der wiederum mit den Adreß- und Daten-Bus-
Eingabe/Ausgabe-Pins 24 der CPU 10 verbunden ist.
Sechszehn Adreß- und Daten-Bus-Pins 24 sind mit einem
Verriegelungs- und Eingabe/Ausgabe-Puffer 26 bekannter Ausführung
verbunden. Eine Binärinformation ist über eine einfache
Kreuzschaltung 30 mit einem C-Bus 28 verbunden. Die
sechzehn Pins sind in zwei Bytes von jeweils acht Bits
organisiert und bilden ein einzelnes Sechzehn-Bit-Wort.
Die Schaltung 30 verbindet die beiden ein Sechzehn-Bit-Wort
bildenden Bytes mit dem C-Bus 28 entweder in normaler oder
umgekehrter Reihenfolge. Die Erläuterung der Verwendung
und Ausbildung der Kreuzschaltung 30 folgt weiter unten.
Die obere Steuereinheit 12 enthält eine obere Registerdatei 32
mit vier 16-Bit-Verschieberegistern 34, 36, 38, 40, die im
folgenden auch als Register RC, RD, RS und RA bezeichnet
werden. Die obere Registerdatei 32 weist auch einen
16-Bit-Programmzähler 42, bezeichnet als Register PC,
ein indirektes 16-Bit-Register 44, bezeichnet als Register
IND und ein 16-Bit-Operanden-Register 46, bezeichnet als
Register OPR auf. Zusätzlich enthält die Registerdatei 32
einen Warteschlangen-Befehlspuffer 48, der bei dem beschriebenen
Ausführungsbeispiel als sechspaariges 8-Bit-Register
mit der Bezeichnung Register Q0 bis Q5 ausgebildet
ist. Die Registerdatei ist über den C-Bus 28 und den B-Bus
50 mit Zwischenregistern 52 bzw. 54 verbunden. Der C-Bus 28
ist über einen Multiplexer 56, der eingangsseitig auch mit
den Ausgängen eines Festwertspeichers oder ROM 58 gekoppelt
ist, mit dem Zwischenregister 52 verbunden. Die Ausgänge
der Zwischenregister 52 und 54 sind mit einem Addierer 60
verbunden, dessen Ausgang mit einem Zwischenregister 62
verbunden ist. Der Ausgang des Zwischenregisters 62 ist
in ähnlicher Weise mit dem C-Bus 28 verbunden und steht
dadurch mit dem externen Adreß- und Daten-Bus in Verbindung.
Vier Leitungen des C-Bus 28 sind abgetrennt und
bilden die ersten vier Bits der 20-Bit-Adresse. Eine
Leitung ist mit dem Adressenanschluß 66 der nullten
Ordnung oder A0 verbunden, während die restlichen drei
Leitungen über ein Zwischenregister 64 mit einer Adressenverriegelungs-
und Pufferschaltung 68 gekoppelt sind, deren
Ausgangssignal die drei Adressenbits A1 bis A3 bilden.
Die obere Registerdatei 32 ist ferner mit dem Alu-Bus 16,
dem S-Bus 18, dem D-Bus 20 und dem Q-Bus 22 gekoppelt und
steht über diese Busse mit der unteren Steuereinheit
14 in einer weiter unten beschriebenen Weise in Verbindung.
Die obere Steuereinheit 12 weist ferner einen T-Zustands-Generator
70, eine Zyklus-Entscheidungs-Logikschaltung 72
und eine Warteschlangen- oder Q-Steuerschaltung 74 auf. Jede dieser Schaltungen
ist in einer Anordnung vorbenutzt, die unter dem
Zeichen Intel 8086 vertrieben wird. Die obere Steuereinheit
12 weist außerdem eine externe Schnittstellenschaltung
76 auf.
Eine Zyklus-Entscheidungs-Logikschaltung 72 liefert die geeigneten
Befehle zu Verschieberegistern 32-40 zum Ausführen
der Speicher-Lese- und -Schreibzyklen unter geeigneter Zeitgabe.
Auf die Verschieberegister 32-40 wird über bestimmte,
in Fig. 1A nicht gezeigte Steuerleitungen zugegriffen, um sie
zusätzlich nach Maßgabe von Befehlen als gewöhnliche digitale Informationsregister
zu behandeln. Eine Warteschlangen-Steuerschaltung
74 hält eine Zählung von Bytes in der Befehlswarteschlange
und deren Reihenfolge aufrecht. Diese Information wird der
Logikschaltung 72 eingegeben, um die geeigneten Rechenoperationen
mit Bezug auf den Programmzähler 42, das Operanden-Register
46 und das indirekte Register 44 bei den weiter
unten beschriebenen Speicher-Lese- und -Schreiboperationen,
den Unterbrechungsoperationen und deren nachfolgenden Adreß-
und Programmzählerkorrekturen durchzuführen. Der Festwertspeicher
58 liefert selektiv eine Reihe von ganzzahligen Werten,
z. B. +6 bis -6, an den Addierer 60, die bei den Verschiebeadreßkorrekturen
und den Programmzählerkorrekturen verwendet
werden. Eine T-Zustands-Zeitgabeschaltung 70 liefert eine
Vielzahl von flipflop-getriggerten T-Zuständen und führt damit
die obere Steuereinheit 12 durch die Abruf-, Lese- und Schreibbefehlszyklen
sowie durch andere Zyklen, wie Unterbrechungszyklen,
wie sie typischerweise bei einem Allzweck-Mikroprozessor
erforderlich sind. Die Warteschlangen-Steuerschaltung 74, die
Zyklusentscheidungslogikschaltung und der T-Zustands-Taktgenerator
70 verwendet eine beliebige Logik, die in bekannter Weise
zur Ausführung der oben angegebenen Funktionen organisiert
ist.
Die untere Steuereinheit 14 weist in ähnlicher Weise eine untere
oder Hauptregisterdatei 78 auf, die über eine Kreuzschaltung
80 ähnlich der Kreuzschaltung 30 mit dem ALU-Bus 16
gekoppelt ist. Die Hauptregisterdatei 78 ist in geeigneter
Weise mit dem S-Bus 18 und dem D-Bus 20 verbunden. In dem
beschriebenen Ausführungsbeispiel weist die Hauptregisterdatei
78 acht paarige 8-Bit-Register 82-96 auf, die im folgenden
auch mit X, B, D, H, A, C, E bzw. L bezeichnet werden.
In ähnlicher Weise weist die Hauptregisterdatei 78 ein 16-Bit-Stapelzeiger-Register
98, das auch als Register SP bezeichnet wird,
ein 16-Bit-Speicherzeiger-Register 100, auch Register MP genannt,
und zwei 16-Bit-Indexregister 103 und 105 auf, welche
im folgenden auch als Register IJ bzw. IK bezeichnet werden.
Der Q-Bus 22 aus der oberen Steuereinheit 12 ist mit mehreren
Registern oder Dekodierern in der unteren Steuereinheit 14
verbunden. Alle 8 Bit-Leitungen des Q-Bus 22 sind mit einem
als Register IR bezeichneten Befehlsdekodierer 102 verbunden.
In ähnlicher Weise liegen die drei am niedrigsten bewerteten
Bits an einem M-Register 104, dessen Ausgang mit dem S-Bus 18
und dem D-Bus 20 verbunden ist. Die Bits 3-5, die in der
Bewertung viert- bis sechsthöchsten Bits, werden an ein
N-Register 106 angelegt, dessen Ausgang ebenfalls mit dem
S-Bus 18 und dem D-Bus 20 gekoppelt ist. Die Bits 3-5
werden außerdem in ein X-Register 108 eingegeben, dessen
Ausgang mit einem ALU-Befehlscode-Register 110 gekoppelt ist.
Schließlich werden alle 8 Bits des Q-Bus 22 an das Hauptfeldregister
oder AR-Register 112 angelegt. Das Ausgangssignal
des AR-Registers 112 wird an die erste Dekodierstufe
des ROM-Hauptfeldes 114 angelegt, das den größten Teil des
Mikrokode-Programms enthält. In ähnlicher Weise wird das
Ausgangssignal des Befehlsregisters 102 an einen Gruppendekodier-ROM 116 angelegt. Das Mikrokode-Ausgangssignal
aus Stufe 2 des ROM 114 wird über eine 4 : 1 Multiplexer- und
Verriegelungsschaltung 118 ausgekoppelt. Fünf Bits des Ausgangssignals
der Verriegelungsschaltung werden an einen
2 : 1 Multiplexer 120 angelegt, dessen Ausgangssignal in ähnlicher
Weise an den Eingang eines Übersetzungs-ROM 120 angelegt
wird. Das AR-Register 112 ist in paarweiser Anordnung mit
einem Zähl- und Inkrementierregister bzw. CR-Register 124 gekoppelt.
Der Ausgang des Übersetzungs-ROM 122 ist mit dem AR-Register
112 und dem CR-Register 124 gekoppelt, welche in
ähnlicher, bidirektionaler Weise mit einem entsprechenden
Unterprogramm- oder SR-Register 126 bzw. einem Unterprogramm-
Inkrementregister 128 gekoppelt sind. Die Operationen
des Gruppendekodier-ROM 116, des Übersetzungs-ROM 112 und
des Haupt-ROM 114 werden von einer Ladeschaltung 130 über
bestimmte, in der Zeichnung nicht dargestellte Befehlsleitungen
koordiniert. Die genaue Operationsweise der unteren
Steuereinheit 14 wird weiter unten beschrieben.
Der Ausgang der Multiplexer- und Verriegelungsschaltung 118
ist mit dem S-Bus 18 und dem D-Bus 20 sowie dem ALU-Befehlscode-Register
110 gekoppelt. Der Inhalt des ALU-Befehlscode-Registers 110
wird von einem ALU-ROM 132 umgesetzt, der ALU-Steuersignale
an eine 16-Bit-ALU 134 anlegt, welche die arithmetischen
und logischen Operationen für die Zentraleinheit bzw.
den Zentralprozessor 10 liefert. Die ALU 134 ist ausgangsseitig
mit dem ALU-Bus 16 und dem Programmstatuswort- oder
PSW-Register 136 gekoppelt, das zur Prüfung und Verarbeitung
des Zustandes mehrerer Kennzeichen dient. Das PSW 136 weist
herkömmliche Kennzeichnungs-Bits, z. B. Übertrag, Hilfsübertrag,
Null, Vorzeichen, Parität, Überlauf, Richtung, Unterbrechungsfreigabe
und nichtprogrammierter bedingter Sprung auf. Das Eingangssignal
zur ALU 134 wird über drei Zwischenregister 138
bis 142 geliefert. Das Eingangssignal zu jedem der Register
138-142 wird aus dem ALU-Bus 16 abgeleitet. Sowohl die
untere Registerdatei 78 als auch die Zwischenregister 138-142
sind mit dem S-Bus 18 und dem S-Bus 20 gekoppelt, wodurch
diese Register selektiv zugreifbar sind. Die untere
Steuereinheit 14 enthält auch eine bestimmte Logik,
welche die Operation und Koordination der Gesamtfunktion
der CPU 10 erleichtert. So ist beispielsweise der Ausgang
der Multiplexer- und Verriegelungsschaltung 118 mit einer
ROM-OUT-Steuerschaltung 144 gekoppelt, deren Ausgänge zumindest
teilweise mit einer Präfix-Steuerschaltung
146 gekoppelt sind.
Die ROM-OUT-Steuerschaltung 144 enthält eine herkömmliche
Logikschaltung, welche ein internes Befehlssignal
RUN-NEXT-INSTRUCTION, RNI, erzeugt, wie weiter unten erläutert
wird. Außerdem erzeugt die ROM-OUT-Steuerschaltung in
der weiter unten beschriebenen Weise den Vorletzter-Takt-Befehl,
NXT. Die Datenübertragung zwischen der unteren Steuereinheit
14 und der oberen Steuereinheit 12 ist grundsätzlich
über den Ausgangsbus, der die ROM-OUT-Steuerschaltung 144 mit
der Zyklus-Entscheidungslogikschaltung 72 verbindet. Die Datenübertragung
zwischen der oberen und unteren Steuereinheit
bezieht sich allgemein auf die Speicher-Lese- und Schreiboperationen,
die Verschieberegister-Rechen- und Verarbeitungsoperationen,
die Korrekturoperationen bezüglich der Verschiebung
in den Registern und des Programmzählers, die Unterbrechungsbestätigungsoperationen,
die Eingabe- und Ausgabeoperationen
und das Löschen der Warteschlange 48 sowie die Sperrung der
gesamten Mikroprozessoroperation während eines HALT-Modus.
Ein großer Teil der ROM-OUT-Steuerschaltung 144 ist mit einer
Programmzustandssprungschaltung 145 gekoppelt, welche die Logik zur
Prüfung der Bedingungen in Mikrokodesprüngen
zur Verfügung stellt.
Die Präfix-Steuerschaltung 146 liefert in herkömmlicher Weise
die erforderliche Logik für verschiedene Präfix-Bytes.
Außerdem bildet die Präfix-Steuerschaltung 146 die
Logik für eine Basis-Präfixanweisung, wie sie
bei der Erfindung verwendet wird. Die Schaltung weist drei mit
BPE, BPL und BPH bezeichnete Flipflops auf. Das erste Flipflop
BPE wird in Abhängigkeit von einem bestimmten Befehl freigegeben,
der in Abhängigkeit vom Laden eines Basis-Präfix in das
Befehlsregister 102 vom Gruppendekodier-ROM 116 erzeugt wird.
Das Basis-Präfix zeigt an, daß ein ausgewähltes Verschiebregister
als Stapelverschieberegister über die Dauer des nachfolgenden
Befehls anstelle des normalerweise verwendeten Registers
benutzt werden soll, wenn eine Stapeladresse über den
Speicherzeiger MP, hergestellt wird, d. h. ein anderer als ein Einkeller- oder Auskeller-Befehl (push or pop
instruction). Das beim Basis-Präfix auszuwählende
Verschieberegister wird durch den Zustand der Flipflops
BPL und BPH bestimmt. Diese Flipflops enthalten ein 2-Bit-Feld
aus einem Verschieberegisterbefehl, der den Inhalt eines besonderen
Verschieberegisters lädt, speichert oder auskellert.
Das Basis-Präfix ermöglicht eine Umschaltung von einem Verschieberegister,
das normalerweise von der Programmkonvention
zur Verwendung durch einen zu einem Verschieberegister zugreifenden
Befehl bezeichnet ist, auf ein im Basis-Präfix-Byte
bezeichnetes Verschieberegister. Die Flipflops BPL und BPH
in der Präfix-Steuerschaltung 146 sind direkt mit demjenigen
Bit-Feld gekoppelt, das dem im Basis-Präfix bezeichneten Verschieberegister
entspricht, und werden geladen, wenn das Flipflop
BPE freigegeben ist. Beim nächstfolgenden Befehl wird
BPE zusammen mit BPL und BPH gesperrt, und diese Flipflops
bleiben solange gesperrt, bis das Flipflop BPE infolge Eintreffens
eines Basis-Präfix-Bytes wieder freigegeben wird.
Eine geeignete Unterbrechungssteuerschaltung 148 kann ebenfalls
vorgesehen sein, um Unterbrechungsanforderungen zur
Verfügung zu stellen und den Zustand der Befehlsausführung
zu prüfen, wobei festgestellt wird, wann die CPU 10 eine Unterbrechungsanforderung
bestätigt. Die Unterbrechungssteuerschaltung
enthält zusammen mit einer anderen, weiter unten
beschriebenen Schaltung die Hauptfunktionsblöcke der unteren
Steuereinheit 14, deren interne Operation und Kooperation
mit der oberen Steuereinheit 12 im folgenden beschrieben
werden wird.
Es wird ein 6-Byte-First-in-first-out-Warteschlangen-
Befehlspuffer 48 verwendet. Die CPU 10 ist ein Zwei-Stufen-Abruf-
Voraussystem. Da kein Vorteil darin besteht, daß die obere
Steuereinheit 12 Bytes schneller abruft, als die untere Steuereinheit
14 sie ausführen kann, und da auch kein Nutzen darin
besteht, daß die untere Steuereinheit 14 Bytes schneller ausführt
als die obere Steuereinheit 12 sie abrufen kann, ist
die Warteschlange nur so groß, daß genügend Bytes gespeichert
werden, damit die Warteschlange während der langsamen Befehle
genügend Bytes abfragen kann, um während der langsamen Befehle
einen Durchlauf der schnellen Befehle bei voller Geschwindigkeit
zu ermöglichen. Das einzige andere Erfordernis besteht
darin, daß wenigstens zwei Bytes der Warteschlange leer
sein müssen, bevor ein neuer Befehl abgefragt wird, da 2-Byte-Befehle
zulässig sind. Unter Berücksichtigung dieser Faktoren
zusammen mit der Ausführungszeit für den gesetzten Befehl ergibt
sich eine optimale Warteschlangelänge von sechs. Selbstverständlich
können andere Warteschlangenlängen je nach der
Art der Befehle und der Ausführungsgeschwindigkeiten der CPU
optimal sein.
Die obere Steuereinheit 12 und die untere Steuereinheit 14
sind in ihrer Operation relativ zueinander im wesentlichen
unsynchronisiert, obwohl sie beide vom Taktgeber 150 getaktet
werden. Die Funktion der oberen Steuereinheit 12 besteht in
der Ausführung aller externen Zyklen zur Aufrechterhaltung
eines Programmzählers PC 42 und der Verschieberegister 34-40
mit der geeigneten Verschiebung für alle Adressen sowie
zur Aufrechterhaltung des 6-Byte-Befehlsstroms der Warteschlange
48. Die untere Steuereinheit 14 führt alle Befehls-,
Rücksetz- und Unterbrechungsfolgen aus, liefert Daten
und die 16-Bit-Basisadressen zur oberen Steuereinheit 12 und
hält die Hauptregisterdatei 78 und das PSW 136 aufrecht.
Die Schnittstellenfunktion nach außen ist beinahe ausschließlich
Sache der oberen Steuereinheit 12 mit Ausnahme gewisser
Unterbrechungsfunktionen, die direkt in der unteren Steuereinheit
14 verarbeitet werden.
Der Mikroprozessor, obwohl im Kern eine
8- oder 16-Bit-Maschine, arbeitet in einem erweiterten Speicherraum,
der bei dem beschriebenen Ausführungsbeispiel über
eine 20-Bit-Adresse zugegriffen wird. Der Addierer 60, der
ein besonderer Addierer ist, führt die Funktion des Addierens
der Verschiebungszahl zur Basisadresse und der Erhöhung
oder Verringerung der Adressen aus, letztere wenn erforderlich
durch eine versetzte 16-Bit-Adresse. Der Addierer dient auch
zur Herbeiführung einer Nach-Abruf-Korrektur für eine vorgegebene
Adresse und zum Anlegen von Korrekturen an PC 42, was
weiter unten genauer beschrieben werden wird.
PC 42 ist nicht ein realer oder echter Programmzähler, da er
oder irgendein anderes Register in der CPU 10 nicht den tatsächlichen
Ausführungspunkt zu jeder Zeit hält.
PC 42 verweist tatsächlich auf das nächste Byte, das in
die Warteschlange 48 eingegeben werden soll. Der Realprogramm-
bzw. Arbeitsprogrammzähler wird vom Befehl berechnet, wenn
ein relativer Sprung oder Aufruf erforderlich wird, durch Subtraktion der Anzahl
von zugegriffenen Befehlen, die unbenutzt in der
Warteschlange 48 bleiben, vom Befehlszähler 42. Zu beachten
ist jedoch, daß bei anderen Ausführungsbeispielen ein echter
Programmzähler in der CPU-Organisation gegebenenfalls
vorgesehen sein kann.
Der benutzte Speicherraum
organisiert digitale Informationen in Bytes. Zwei beliebige
aufeinanderfolgende Bytes können gepaart werden, um ein
16-Bit-Wort zu bilden, ohne daß die Notwendigkeit besteht, daß
die Bytes an geraden Adressengrenzen gespeichert werden. Die
verwendete Konvention besteht darin, daß
die am höchsten bewerteten acht Bits des Worts im Byte mit
der höheren numerischen Speicheradresse gespeichert werden.
Die Verschieberegister 34-40 dienen zur Gewinnung einer
Adresse in einem erweiterten Speicherraum. Vier niederwertige
Bits werden an die 16 Bits eines der Verschieberegister
angehängt, wodurch die 20-Bit-Basisadresse einer Seite geschaffen
wird. Das RC-Register 34 dient als Befehlscode-Verschieberegister;
das RD-Adreßregister 36 dient als Datenadreßregister;
das RS-Verschieberegister 38 dient als Stapeladreßregister;
und das RA-Adreßregister 40 dient als
Austauschverschieberegister. Auf die Register kann in der beschriebenen Weise
mit dem Basis-Präfix-Befehl und von Blockbewegungsbefehlen
zugegriffen werden. Eine 20-Bit-Speicheradresse, die einer
16-Bit-Datenstapel- oder Befehlscode-Adresse entspricht, wird
durch Addition einer 16-Bit-Basisadresse zum geeigneten
Verschieberegister gewonnen. So wird beispielsweise die
Speicherkodeadresse durch Addition der sechzehn Bits des
Programmzählers PC 42 mit dem RC-Register 34 gewonnen. Generell
sind daher Adreßleitungen A0-A3 direkt von der Registerdatei
32 über den C-Bus 28 abgezweigt, um die am niedrigsten
bewerteten vier Bits des ausgewählten Registers,
dessen Inhalt mit dem Inhalt des Verschieberegisters addiert
wird, direkt zu den Adreß/Daten-Anschlüssen A0-A3 zu
koppeln. Die höherwertigen zwölf Bits aus dem gewählten
Register werden sodann zu den sechzehn Bits des gewählten
Verschieberegisters im Addierer 60 addiert und über die
Kreuzschaltung 30 zum Verriegelungs- und Eingabepuffer 26
übertragen. Daher ist der Speicherraum in Seiten von
jeweils sechzehn Worten unterteilt, wobei jedes Wort eine
Länge von sechzehn Bits hat. Daten werden sodann aus dem
Speicher zugegriffen und über den C-Bus 28 zum geeigneten
Register der oberen Datei 32, nämlich zu einem der Q-Register
48 übertragen.
Entsprechend einem Befehlssignal, das von der weiter unten
genauer beschriebenen Ladeschaltung 130 erzeugt wird, wird
eines der Bytes von der Warteschlange 48 zugegriffen und an
den Q-Bus 22 angelegt, während die Q-Steuerschaltung 74 die
geeignete Abfragegeschwindigkeit und Steuerung der Funktionen
der oberen Steuereinheit 12 aufrechterhält. Die drei am geringsten
bewerteten Bits des abgerufenen Bytes werden in ein
M-Register 104 eingesetzt, dessen Grundfunktion darin besteht,
den Quell-Bus-Kode des Hauptoperanden des Befehls zu halten.
Das Register 104 setzt das Registerfeld des ersten Bytes in
den geeigneten S- und D-Bus-Kode um. In ähnlicher Weise werden
die Bits 3-5 in das N-Register 106 geladen, dessen
Hauptfunktion darin besteht, den Ziel-Bus-Kode des
zweiten Operanden des Befehls zu halten. Das X-Register 108
lädt Bits 3-6 des Byte und nimmt an, daß der Opcode des Befehls
ein ALU-Befehlscode ist. Das gesamte Byte wird in das AR-Register
112 geladen. Da einige der Befehle keine ALU-Befehlscodes
enthalten und einige Befehle 2-Byte-Befehle sind, sind die
Annahmen bezüglich der Bewertung der in Register 104, 106, 108
und 112 geladenen Information manchmal unrichtig. Eine unrichtige
Annahme bzw. Rechnung wird später korrigiert, nachdem das
in das Befehlsregister 102 geladene Byte vom Gruppendekodier-ROM
116 geeignet dekodiert worden ist. Das Korrekturschema
und der Korrekturvorgang werden weiter unten genauer beschrieben.
Die Mikrokodesteuerung besteht hauptsächlich
aus einer Haupt-PLA oder einem ROM 114, unterstützt von zwei
anderen, nämlich dem Übersetzungs-ROM 122 zum Dekodieren von Mikrokode-
Sprungadressen voller Länge und einem Gruppendekodier-ROM
116 zum Dekodieren der Maschinensprachen-Befehlscodes zum Zwecke
einer höherstufigen Organisation. Trotzdem werden viele Steuerfunktionen
nicht von den ROM's sondern von einer Logik ausgeführt,
z. B. die Präfix-Befehle gemäß nachfolgender Beschreibung,
Ein-Takt-Nicht-ALU-Befehle, das Befehlscode-Dekodieren, das Richtungs-Bit,
das P-Bit, verschiedene Idiosynkrasien (Eigenarten) bei der
Flag-Verarbeitung und gewisse Unterschiede zwischen 8- oder
16-Bit-Datenoperationen.
Der in das Register AR eingesetzte Befehlscode wird in eine ROM-Startadresse
durch Behandeln der ersten Stufe des ROM 114 als
eine PLA übersetzt, wobei der Befehlscode selbst direkt als ROM-Adresse
für diese Befehlsmikrocodefolge verwendet wird. Jeder
Befehlscode wird im ROM 114 mit einem Raum bzw. Platz für die diesem
Befehlscode zugeordnete Mikrokodefolge versehen. Die Befehlscode-Adresse
selbst kann wegen der Gefahr des Überlaufs in den
Befehlsopcoderaum eines benachbarten Befehlscodes nicht erhöht
werden. Daher wird ein 4-Bit-Inkrementierregister 124 addiert
und anfänglich auf 0 gesetzt, wenn der Befehlscode in das Register
AR 112 geladen wird. Ein neuntes Bit wird zum Register 112
addiert, um mehr Programmraum zu schaffen. Das zusätzliche
Bit ARX wird ebenfalls anfangs zurückgesetzt. Ein CR-Register
124 wird sodann über die erlaubten sechzehn getrennten Mikrocodezustände
bei jedem Befehl erhöht, während AR fest bleibt
und nur durch einen langen Sprung oder einen Rücksprung geändert
werden kann. Ein Mikrokode-Unterprogramm wird vom Register
126 zur Verfügung gestellt und in Verbindung mit dem ROM 122 verwendet,
der eine 13-Bit lange Sprungadresse von einem durch den
ROM 114 über Multiplexer 120 angelegtes 5-Bit-Mikrokode-Identifizierungskennzeichen
verschlüsselt.
Das ROM-Mikrokodeprogramm steuert den eigenen Zyklus nicht.
Wenn das Mikrokode-Unterprogramm für einen Befehl ausgeführt
worden ist, so schaltet der ROM 114 die untere Steuereinheit
14 zurück zur Hauptzeitgabeschaltung, dem Lader 130,
dessen Funktion darin besteht, den nächsten Befehl von dem
Q-Bus 22 in die geeigneten Register der unteren Steuereinheit
zu laden. Wenn die gesamte neue Befehlscode- und Feldinformation
in die untere Steuereinheit 14 geladen worden ist
und die ROM-Startadresse für den ROM 114 geeignet ausgelöst
ist, so gibt der Lader 130 ROM 114 frei und schließt die
Steuerung der unteren Steuereinheit 14 an.
Die untere Steuereinheit wechselt daher zwischen einem Vier-Zustands-Hauptzähler, der Ladeschaltung 130, und dem Mikrokode-
Haupt-ROM 114. Die Funktion der Ladeschaltung besteht darin,
Befehlsbytes mit Befehlscode- und Registerfeldern von der Befehlswarteschlange
48 über den Q-Bus 22 und in die geeigneten
Register IR 104, M 104, N 106, X 108 und AR 112 der unteren
Steuereinheit zu bewegen. Sobald ROM 114 geeignet ausgelöst
ist, läßt die Ladeschaltung 130 den ROM 114 ablaufen durch
Heben eines ROM-Freigabesignals ROME auf eine binäre Eins.
Der Hauptmikrokode ROM 114 hat keine zulässigen "Aus"-Zustände.
Die Ausführung wird durch Rücksetzen von ROME auf
Null gestoppt, wodurch die ROM-Ausgangssignale ausgeblendet
werden. Das Inkrementregister CR 124 setzt die Zähloperation
unabhängig vom Zustand von ROME fort. Wenn ROM 114
arbeitet, muß er das Ende einer Befehlsausführungsfolge abtasten
und ein bestimmtes Steuersignal "Abarbeiten des nächsten
Befehls" RNI zur Ladeschaltung 130 geben, wodurch angezeigt
wird, daß die laufende Folge der Mikrokodebefehle vorbei ist
und daß ein neuer Befehl geladen werden soll.
Eine Befehlskodierüberlappung wird von einem anderen bestimmten
Steuersignal NXT aufrechterhalten. Wenn ROM 114
das spezielle Vorletzter-Takt-Signal der Mikrokodefolge identifizieren
kann, sendet er das Signal NXT zum Lader 130.
Dadurch findet eine Überlappung des neuen Befehls mit der
Ausführung des letzten Befehls statt, wodurch sich eine Erhöhung
des Durchsatzes ergibt. Unter diesen Bedingungen arbeiten
die Ladeschaltung 130 und der ROM 114 ohne eine Unterbrechung
der ROM-Operation gleichzeitig. Der erste Ausführungstakt
des neuen Befehls wird direkt gefolgt von dem
letzten Ausführungstakt des vorhergehenden Befehls.
Die Ladeschaltung 130 erzeugt zwei Erkennungszeitgabesignale
für jede Folge in der unteren Steuereinheit 14. Diese Signale
sind ein erstes Taktsignal FC, das den ersten Schritt eines
Ladevorgangs anzeigt, und ein zweites Taktsignal SC, gefolgt
von FC bei dem nächsten oder einem späteren Takt, wodurch der
zweite Schritt des Ladevorgangs angezeigt wird. Das erste Byte
eines Befehlscodes wird bei FC über den Q-Bus 22 getaktet. Ist ein
zweites Byte vorhanden, so wird dieses bei SC übertragen. Die
Bedeutung von SC ist mehr als das einfache Laden des zweiten
Bytes, da das Ausgangssignal des Gruppendekodier-ROM 116 für
den gerade geladenen oder eingegebenen Befehl nur während
und nach dem Zeitgabesignal SC Gültigkeit hat. Daher erscheint
das Zeitgabesignal SC unabhängig davon, wieviele Bytes tatsächlich
über den Q-Bus 22 laufen. Das Zustandsdiagramm der
Ladeschaltung 130 ist in Fig. 3 schematisch gezeigt und vereinfacht
in den folgenden Gleichungen darstellbar:
2 BR ist ein entschlüsseltes Befehlssignal, das vom Gruppendekodier-ROM
116 erzeugt wird und anzeigt, daß der verfügbare
Befehl wenigstens zwei Bytes hat und zur Dekodierung die Verwendung
von ROM 114 erforderlich macht. MT ist ein von der
Q-Steuerschaltung 74 erzeugtes Signal, das anzeigt, daß die
Warteschlange 48 leer ist und mehr Bytes abgerufen werden
müssen.
Aus Fig. 3 ist zu erkennen, daß die Arbeitsweise der Ladeschaltung
130 auf zwei in herkömmlicher Weise angeordneten
Flipflops beruht. Im Nullzustand 152 sind die Flipflops auf
(00) gesetzt, die untere Steuereinheit 14 ist nicht in der
Ausführungsphase und das erste Byte des neuen Befehls wurde
noch nicht festgestellt. Das Zeitgabesignal FC tritt beim
Übergang aus dem Nullzustand 152 auf. In der durch (01) definierten
ersten Zustandsstufe 154 der Lader-Flipflops wird kein
Befehl ausgeführt, das Zeitgabesignal FC für den neuen Befehl
ist eingelaufen, während das Zeitgabesignal SC noch nicht entwickelt
wurde. SC wird beim Verlassen des ersten Zustandes 154
erzeugt. Wenn das interne Steuersignal, das Ein-Byte-Logiksignal
1 BL vom Gruppendekodier-ROM 116 erzeugt wird, kehrt die Ladeschaltung
130 wieder zum Nullzustand 152 zurück. Das Steuersignal
1BL zeigt an, daß der laufende Befehl als Ein-Byte-Logikbefehl
festgestellt wurde, mit anderen Worten, ein Ein-Byte-Befehl,
der nicht durch die Verwendung von ROM 114 sondern
von einer beliebig wählbaren Logik dekodiert worden
ist. Bei Erzeugung des Zeitgabesignals SC und Nichterscheinen
von 1BL bewegt sich die Ladeschaltung 130 in den durch den
Flipflop-Zustand (10) definierten zweiten Zustand 156. Der
zweite Zustand ist der Ablauf- oder Ausführungszustand, in
welchem die Zeitgabesignale SC und FC auftreten und die Ladeschaltung
130 auf die Befehlssignale NXT oder RNI von ROM 114
wartet, um anzuzeigen, daß ein neuer Befehl ausgeführt werden
soll oder der vorletzte Taktimpuls der Mikrokodefolge ausgeführt
worden ist.
Aus der oben angegebenen Logikgleichung ergibt sich folgendes:
Wenn im zweiten Zustand entweder die internen Befehlssignale
in NXT oder RNI vom ROM 114 erzeugt werden, so wird die Ladeschaltung
130 entweder in den ersten Zustand zurückkehren,
dies im Falle der Gültigkeit von RNI, oder wird in den dritten
Zustand im Falle des Eingangs von NXT gelangen. Der dritte
Zustand 158, definiert durch die Flipflop-Konfiguration
(11), ist ein Spiegelbild des ersten Zustandes mit der Ausnahme,
daß der vorausgegangene Befehl noch ausgeführt wird.
Wenn das Zeitgabesignal FC nicht länger aktiv ist und ROM 114
anzeigt, daß ein neuer Befehl ablaufen soll, kehrt der Lader
130 zum Nullzustand zurück, um den neuen Abruf zu beginnen.
Wenn der Befehl im dritten Zustand kein Ein-Byte-Logik-Befehl
ist und das Zeitgabesignal SC noch Gültigkeit hat, bedeutet
dies, daß der Befehl ein Zwei-Byte-Befehl des ROM-Typs ist
oder die Warteschlange 48 nicht leer ist, und der Lader 130
kehrt in den zweiten Zustand zurück. Wenn das Zeitgabesignal
SC inaktiv geworden ist, kehrt der Lader 130 auf den ersten
Zustand zurück. Andererseits wird der Lader 130 in den Nullzustand
versetzt, wobei ROM 116 abgeschaltet und abgeschaltet
gehalten wird, wenn der neue Befehl eine Ein-Byte-Logik ist.
Die Zeitgabesignale FC und SC werden auch in den verschiedenen
Registern der unteren Steuereinheit 14 zum Setzen derjenigen
Zeit verwendet, bei der das Register in der gewünschten
Funktion entsprechend bekannten Prinzipien arbeitet.
Die Ausführung wird in der erfindungsgemäßen CPU 10 dadurch
gesteigert, daß von der informationslosen Instruktion soviel
wie möglich beseitigt wird. Mit anderen Worten, die Befehlscodes
sind derart zugeordnet, daß in beinahe allen Fällen nur das
erste Byte eines Mehrbytebefehls zur Bildung der gesamten
Mikrokodeadresse herangezogen wird. Das Zeitgabesignal FC
stellt den einzigen Taktimpuls dar, bei dem das erste Byte
von der unteren Steuereinheit 14 gelesen wird. Da das Befehlsregister
102 noch seinen vorhergehenden Wert hat, gibt es
keine laufende Information in Bezug auf die Art des neuen
Befehls. Daher machen alle an den Q-Bus 22 angeschlossenen
Register der unteren Steuereinheit eine Wahrscheinlichkeitsannahme
zur Art des neuen Befehls und laden aus dem ersten
Byte auf dem Zeitgabesignal FC dementsprechend. Genauer gesagt,
das Befehlsregister IR 102 lädt normalerweise das erste
Byte. Von dem M-Register 104 wird angenommen, daß der Befehl
ein Ein-Byte-Befehl ist, und daher baut dieses Register den
16-Bit-Register-Quell-Buscode dadurch auf, daß es die drei am
geringsten bewerteten Bits des Bytes 1 als ein Registerfeld
nimmt. Im N-Register 106 wird angenommen, daß der Befehl ein
Verschieberegisterbefehl ist, wobei ein 16-Bit-Verschieberegister-
Ziel-Buskode aus den Bits 3 und 4 des ersten
Bytes als Verschieberegisterfeld genommen wird. Das X-Register
108 nimmt an, daß das erste Byte ALU-Befehlscodes in Bits 3-6
haben kann, und lädt diese Bits dementsprechend. Von dem AR-Register
112 und dem CR-Register 124 wird angenommen, daß Byte
1 eine ausreichende Startadresse ist, und Byte 1 wird in das
Register AR 112 geladen, das CR-Register 124 wird zurückgesetzt,
und der Zugriff zum Mikrokodeplatz in ROM 114 beginnt.
Wenn eine erste Annahme unrichtig war, wird sie beim Zeitgabesignal
SC korrigiert, da zu diesem Zeitpunkt das Ausgangssignal
des Gruppendekodier-ROM 116 zur Verfügung steht, und zwar in
Form bestimmter, an ausgewählte Dekodierer und die oben genannten
Register angelegten Befehlssignale, welche das Bitfeld
gegebenenfalls unter einer anderen Interpretation neu
dekodieren.
Die beschriebene CPU 10 hat neun verschiedene Adressierungsarten.
Der Speicherplatz eines Operanden in einem erfindungsgemäß verwendeten
Befehl wird von verschiedenen Feldern in dem Befehl
spezifiziert. Diese Felder weisen im besonderen ein Registerfeld
oder eine Kombination eines Modenfeldes und eines R/M-Feldes
auf. Das Registerfeld ist ein 3-Bit-Feld, welches eines
der 8- oder 16-Bit-Register als Adreß- bzw. Speicherplatz
des Operanden und daher des ersten von zwei Adressierungsmoden
bezeichnet. Das Register/Speicher-Feld oder R/M-Feld ist ein
3-Bit-Feld im Befehl, das ein 8- oder 16-Bit-Register für den
Operanden bezeichnet. Die drei Bits bezeichnen acht Arten, in
denen gewisse Register zum Operandenzugriff in möglicher Kombination
mit zwei Distanzbytes im Befehl verwendet werden können.
Das Modenfeld ist ein 2-Bit-Feld im Befehl, welches
angibt, ob der Operand im bezeichneten Register oder an einem
durch den Registerinhalt bezeichneten Speicherplatz befindlich
ist, und welches die Verarbeitung von etwa vorhandenen Distanzbits
angibt. Insbesondere kann ein bezeichnetes Register entweder
der Speicherplatz des Operanden sein oder auf den Adressenplatz
des Operanden im Speicher hinweisen. Ein W- oder Wortfeld
ist ein Ein-Bit-Feld im Befehl, das in Kombination mit
einem der Modenfeldkodes spezifiziert, ob der Operand eine
Byte- oder Wortmenge ist. Ein beliebiges der Register und eine
Kombination der 8-Bit-Register in der unteren Hauptregisterdatei 78 kann der
Speicherplatz sein und bestimmte Register können auf den Platz des Operanden
im Speicher hinzeigen, der im Befehl spezifiziert ist.
Wenn erforderlich, d. h. wenn der Befehl ein 2-Bit-ROM-Befehl
ist und den Operanden von einem Platz im Speicher gewinnt, wird
ein automatisches Adreßunterprogramm von der Ladeschaltung 130
beim Takt SC ausgelöst. Die von dem Adreßunterprogramm gefolgten
Schritte sind im wesentlichen ähnlich einem normalen langen
Sprung, bei dem die Mikrokode-Adresse in der Regel erhalten
bleibt, mit der Ausnahme, daß der Datenfluß in das und aus
dem AR-Register 112, dem CR-Register 124 und dem SR-Register 126
unter der Steuerung der Ladeschaltung 130 und nicht des ROM 114
steht. Die Moden- und Register/Speicher-Felder werden aus dem
Q-Bus 22 über den Multiplexer 120 direkt in den Übersetzungs-ROM 122
geladen, um durch eine direkte Dekodierung eine von neun
Unterprogramm-Mikrokode-Startadressen zu gewinnen. Als Folge davon
wird der adressierte Operand automatisch in die richtigen
oberen Dateiregister, gewöhnlich das OPR-Register 46 geladen,
und zwar in der gleichen Weise wie vorstehend beschriebener
normaler Befehlsabruf.
Die Operationsweise und Organisation des Mikroprozessors
können dadurch besser verständlich gemacht werden,
daß die Ausführung einer Anzahl charakteristischer Befehle
im folgenden genau beschrieben wird.
Die CPU 10 kann sogenannte Kettenbefehle ausführen,
die aus einer Gruppe primitiver Ein-Byte-Befehle bestehen,
welche entweder einmal oder wiederholt ausgeführt werden.
In wiederholter Operationsweise ermöglichen die Kettenbefehle
eine Maschinenausführung - im Gegensatz zu einer typischen
Programmausführung - einer vollständigen Sequenz- oder
Schleifenoperation. Bei einer Einzeloperation ermöglichen die
Kettenbefehle das Schreiben einer engen Programmschleife
(software loop), die zur Ausführung komplexerer Kettenbefehle
verwendet werden kann. Alle primitiven Kettenbefehle
verwenden BC-Register 84 bzw. 92 als Schleifenzähler
und IJ-Register 103 und, wenn nötig, IK-Register 105 als Hinweisadressen
auf Operanden im Speicher. Wenn ein Richtungskennzeichen
im PSW 136 gelöscht worden ist, werden die Operanden-Zeiger
nach Gebrauch inkrementiert,
da sie anderenfalls automatisch von ALU 134 dekrementiert werden.
Andere Programmbefehle sind im Befehlsvorrat zum Setzen oder
Löschen des Richtungskennzeichens in PSW 136 vorgesehen.
Die primitiven Kettenbefehle sind ÜBERTRAGEN, VERGLEICHEN,
SUCHEN, LADEN und SPEICHERN. Der Befehl ÜBERTRAGEN führt
zur Übertragung einer Zeichenkette von
einem Speicherblock zu einem anderen. Der Befehl VERGLEICHEN
ermöglicht einen Vergleich von zwei Zeichenketten, um festzustellen,
nach welchem Zeichen die Reihen bzw. Sequenzen ungleich
werden, was dazu beiträgt, eine lexigraphische Ordnung
zwischen den Reihen bzw. Sequenzen herzustellen. Der Befehl
SUCHEN ermöglicht das Suchen eines vorgegebenen Zeichens
in einer Zeichenkette. Der Befehl SPEICHERN dient dazu, einen
vorgegebenen Wert in eine Zeichenkette einzuführen. Typischerweise
werden die Befehle SPEICHERN und LADEN als
Befehls-Bausteine zur Bildung enger Programmschleifen verwendet,
welche komplexe Zeichenreihenbefehle durchführen. Jeder dieser primitiven
Befehle bietet die Möglichkeit, Wörter ebenso wie Zeichen
oder Bytes zu verarbeiten. Eingeschlossen unter den Zeichenreihenbefehlen
ist ein Präfix bzw. Vorsatz, WIEDERHOLEN,
der eine rasche Schleifensteuerung in einer wiederholten
Reihenoperation ermöglicht. Einem jeden der primitiven Befehle kann
der Ein-Byte-Präfix WIEDERHOLEN vorangestellt werden, wodurch
der Befehl solange wiederholt wird, wie die Schleifenzählung
nicht null ist. Die Prüfung der Schleifenzählung erfolgt vor
und nicht nach jeder Wiederholung der Schleife, so daß der
Anfangsschleifenwert von null die Ausführung von primitiven
Zeichenreihenbefehlen verhindert. Während jeder
Schleifenwiederholung wird der Schleifenzähler dekrementiert.
Während der Wiederholung eines Zeichenreihenbefehls bleibt der
PC-Programmzähler 42 hinweisend auf das Wiederholungspräfixbyte
und wird solange nicht auf den neuesten Stand gebracht, bis die
letzte Wiederholung des Zeichenreihenbefehls erfolgt ist. Dies
ermöglicht zusammen mit der fortlaufenden Aktualisierung der
Operanden-Zeiger und des Zählregisters, daß der wiederholte
Befehl nach einer Unterbrechung in richtiger Weise wieder
aufgenommen wird. Eine externe Unterbrechung ist vor jeder Wiederholung
des primitiven Kettenbefehls möglich.
Ein Schleifenbefehl bewirkt die gleiche Steuerung wie der Wiederholungspräfix,
jedoch in engen Programmschleifen zur Ausführung
komplexer Reihenoperationen. Ein Schleifenbefehl erniedrigt
den Schleifenzählwert im Register BC und führt einen
relativen Sprung, typischerweise zum Start der Schleife aus,
wenn entweder der Zählwert nicht null geworden ist oder das
Null-Kennzeichen von PSW 136 nicht einen speziellen Sollwert hat.
Es gibt auch eine Form eines Schleifenbefehls, bei dem
das Null-Kennzeichen nicht geprüft wird. Der Schleifenbefehl
ist typischerweise am Ende der Schleife angeordnet und prüft
nach jeder Schleifenausführung auf Schleifenwiederholungen.
Dies bedeutet, daß die Schleife noch ausgeführt wird, wenn
die Schleifenzählwerte anfänglich null waren. Ein ÜBERSPRING-
Befehl wird eingeführt, um unerwünschte Wiederholungen zu verhindern.
Ein ÜBERSPRING-Befehl führt einen relativen Sprung aus,
wenn das Register BC eine Null enthält, wobei der Inhalt von
BC nicht geändert wird. Übersetzen (XLAT) ist eine andere primitive
Zeichenreiheninstruktion, die als Baublock in engen Schleifen
verwendet wird. Der XLAT-Befehl ermöglicht einen Byte-
Abruf aus einer zu übersetzenden Zeichenreihe vor dem Speichern
des Byte in einer zweiten Zeichenreihe oder dessen Vergleich
mit einem vorgegebenen Byte. Das Übersetzen erfolgt durch Verwendung
des Werts im A-Register zum Indizieren in eine Tabelle,
auf die vom HL-Register 88 und 96 hingewiesen ist. Der aus der
Tabelle gewonnene umgesetzte Wert ersetzt dann den im
A-Register 90 anfangs enthaltenen Wert.
Der Maschinensprachenkode für die Zeichenreihenbefehle ist
nachfolgend zusammengefaßt:
Befehl LADEN
Kurzbezeichnung:
LDS (w=0)
LDSW (=1)
LDS (w=0)
LDSW (=1)
Beschreibung:
Wenn w=0 dann ((IJ)) → (A)
sonst ((IJ))+1,(IJ)) → (XA)
wenn (Richtung)=1 dann (IJ)-(1+w) → (IJ)
sonst (IJ)+(1+w) → (IJ)
Wenn w=0 dann ((IJ)) → (A)
sonst ((IJ))+1,(IJ)) → (XA)
wenn (Richtung)=1 dann (IJ)-(1+w) → (IJ)
sonst (IJ)+(1+w) → (IJ)
Beteiligte Kennzeichen (Flags):
Keine
Keine
Befehl SPEICHERN
Kurzbezeichnung:
STS (w=0)
STSW (w=1)
STS (w=0)
STSW (w=1)
Beschreibung:
Wenn w=0 dann (A) → ((IK))
sonst (XA) → ((IK))+1,(IK))
wenn (Richtung)=1 dann (IK)-(1+w) → (IK)
sonst (IK)+(1+w) → (IK)
Wenn w=0 dann (A) → ((IK))
sonst (XA) → ((IK))+1,(IK))
wenn (Richtung)=1 dann (IK)-(1+w) → (IK)
sonst (IK)+(1+w) → (IK)
Beteiligte Kennzeichen (Flags):
Keine
Keine
Befehl VERGLEICHEN
Kurzbezeichnung:
CMPS (w=0)
CMPSW (w=1)
CMPS (w=0)
CMPSW (w=1)
Beschreibung:
Wenn w=0 dann ((IJ))-((IK))
→ nirgendwohin, aber Kennzeichen (Flags) sind gesetzt
sonst ((IJ)+1,(IJ))-((IK)+1,(IK))
→ nirgendwohin, aber Kennzeichen (Flags) sind gesetzt
wenn (Richtung)=1 dann
(IJ)-(1+w) → (IJ)
(IK)-(1+w) → (IK)
sonst
(IJ)+(1+w) → (IJ)
(IJ)+(1+w) → (IK)
Wenn w=0 dann ((IJ))-((IK))
→ nirgendwohin, aber Kennzeichen (Flags) sind gesetzt
sonst ((IJ)+1,(IJ))-((IK)+1,(IK))
→ nirgendwohin, aber Kennzeichen (Flags) sind gesetzt
wenn (Richtung)=1 dann
(IJ)-(1+w) → (IJ)
(IK)-(1+w) → (IK)
sonst
(IJ)+(1+w) → (IJ)
(IJ)+(1+w) → (IK)
Kennzeichen (Flags):
ÜBERTRAG, HILFSÜBERTRAG, VORZEICHEN, NULL, PARITÄT, ÜBERLAUF
ÜBERTRAG, HILFSÜBERTRAG, VORZEICHEN, NULL, PARITÄT, ÜBERLAUF
Befehl SUCHEN
Kurzbezeichnung:
SRCHS (w=0)
SRCHSW (w=1)
SRCHS (w=0)
SRCHSW (w=1)
Beschreibung:
Wenn w=0 dann (A)-((IK))
→ nirgendwohin, aber Kennzeichen (Flags) gesetzt
sonst (XA)-((IK)+1,(IK))
→ nirgendwohin, aber Kennzeichen (Flags) gesetzt
wenn (Richtung)=1 dann (IK)-(1+w) → (IK)
sonst (IK)+(1+w) → (IK)
Wenn w=0 dann (A)-((IK))
→ nirgendwohin, aber Kennzeichen (Flags) gesetzt
sonst (XA)-((IK)+1,(IK))
→ nirgendwohin, aber Kennzeichen (Flags) gesetzt
wenn (Richtung)=1 dann (IK)-(1+w) → (IK)
sonst (IK)+(1+w) → (IK)
Beteiligte Kennzeichen (Flags):
ÜBERTRAG, HILFSÜBERTRAG, VORZEICHEN, NULL, PARITÄT, ÜBERLAUF
ÜBERTRAG, HILFSÜBERTRAG, VORZEICHEN, NULL, PARITÄT, ÜBERLAUF
Befehl ÜBERTRAGEN
Kurzbezeichnung:
MOVS (w=0)
MOVSW (w=1)
MOVS (w=0)
MOVSW (w=1)
Beschreibung:
Wenn w=0 dann ((IJ)) → ((IK))
sonst ((IJ))+1,(IJ)) → ((IK)+1,(IK))
wenn (Richtung)=1 dann
(IJ)-(1+w) → (IJ)
(IK)-(1+w) → (IK)
sonst
(IJ)+(1+w) → (IJ)
(IK)+(1+w) → (IK)
Wenn w=0 dann ((IJ)) → ((IK))
sonst ((IJ))+1,(IJ)) → ((IK)+1,(IK))
wenn (Richtung)=1 dann
(IJ)-(1+w) → (IJ)
(IK)-(1+w) → (IK)
sonst
(IJ)+(1+w) → (IJ)
(IK)+(1+w) → (IK)
Beteiligte Kennzeichen (Flags):
Keine
Keine
Wiederholungspräfix
WIEDERHOLEN:
WIEDERHOLEN:
Beschreibung:
Während (BC)<<0
Unterbrechung eines laufenden Programms (pending service) hier Durchführung eines primitiven Kettenbefehls in nachfolgendem Byte
(BC)-1 → (BC)
wenn primitiver Befehl ein solcher ist, der die NULL-Marke beeinflußt und (NULL)<<z
dann Ausgang "while" Schleife
end-of-while
(PC)+2 → (PC)
Während (BC)<<0
Unterbrechung eines laufenden Programms (pending service) hier Durchführung eines primitiven Kettenbefehls in nachfolgendem Byte
(BC)-1 → (BC)
wenn primitiver Befehl ein solcher ist, der die NULL-Marke beeinflußt und (NULL)<<z
dann Ausgang "while" Schleife
end-of-while
(PC)+2 → (PC)
SCHLEIFE
Kurzbezeichnung:
LP
LP
Beschreibung:
(BC)-1 → (BC)
wenn (BC)<<0 dann
(PC)+Verschiebung → (PC)
wobei "Verschiebung" eine vorzeichenbehaftete 8-Bit-Zahl ist
(BC)-1 → (BC)
wenn (BC)<<0 dann
(PC)+Verschiebung → (PC)
wobei "Verschiebung" eine vorzeichenbehaftete 8-Bit-Zahl ist
Beteiligte Kennzeichen (Flags):
Keine
Keine
ÜBERSPRINGEN
Kurzbezeichnung:
SKP disp
SKP disp
Beschreibung:
Wenn (BC)=0 dann (PC)+Verschiebung → (PC)
wobei die "Verschiebung" eine vorzeichenbehaftete 8-Bit-Zahl ist
Wenn (BC)=0 dann (PC)+Verschiebung → (PC)
wobei die "Verschiebung" eine vorzeichenbehaftete 8-Bit-Zahl ist
Beteiligte Kennzeichen:
Keine
Keine
Enge Schleifenbefehle
UMSETZEN:
Kurzbezeichnung:
XLAT
XLAT
Beschreibung:
((HL)+(A) → (A)
((HL)+(A) → (A)
Beteiligte Kennzeichen:
Keine
Keine
Schleifen und Prüf-Null
Kurzbezeichnung:
LPW disp für z=1 (bedeutet Schleife "während")
LPU disp für z=0 (bedeutet Schleife "bis")
LPW disp für z=1 (bedeutet Schleife "während")
LPU disp für z=0 (bedeutet Schleife "bis")
Beschreibung:
(BC)-1 → (BC)
wenn (NULL)=z und (BC)<<0 dann
(PC)+Verschiebung → (PC)
wobei die "Verschiebung" eine vorzeichenbehaftete 8-Bit-Zahl
ist
(BC)-1 → (BC)
wenn (NULL)=z und (BC)<<0 dann
(PC)+Verschiebung → (PC)
wobei die "Verschiebung" eine vorzeichenbehaftete 8-Bit-Zahl
ist
Beteiligte Kennzeichen:
Keine
Keine
Wie aus der allgemeinen Form gesehen werden kann, besteht der
primitive Zeichenreihenbefehl aus einem Byte mit einem 7-Bit-
Befehlscode und einem w-Bit, das kennzeichnet, ob der Reihenbefehl
ein Zeichen oder ein Byte (w=0) oder ein Wort (w=1) verarbeitet.
Betrachtet wird das folgende Beispiel als Benutzung von
Zeichenreihenbefehlen (spring instructions) zum Schreiben
einer engen Programmschleife. Die Aufgabe besteht darin,
eine Folge von Eingangszeichen solange abzutasten, bis ein
Zeichen festgestellt wird, das nicht alphanumerisch ist.
Das IJ-Register 103 wird initialisiert und weist auf den Beginn
der Eingangskette, und das Register BC wird initialisiert, um
die Länge der Eingabezeichenfolge aufzunehmen. Das Richtungskennzeichen
wird im PSW 136 gelöscht, und das HL-Register wurde
mit der ersten Adresse einer Umsetztabelle geladen. Die Umsetztabelle
enthält ein Byte für jedes mögliche Zeichen. Jedes
alphanumerische Zeichen ist einem speziellen, beliebig wählbaren Kode zugeordnet.
Dieser gleiche Kode wird in das E-Register 94 eingegeben.
Die Programmschleife, welche einen Zeichenreihenbefehl
zum Abtasten nach einem ersten nicht-alphanumerischen Zeichen
benutzt, ist wie folgt:
Das oben angegebene Programm löst die folgenden Operationen
aus: Bei dem Befehl SKP X1 springt das Programm auf X1, wenn
das Zählregister Null ist, indem die vom SKIP-Befehl angezeigte
Verschiebung X1 zum Programmzähler addiert wird,
wie aus der obigen Tabelle 1 zu ersehen ist. Wenn der Inhalt
des Zählers nicht Null ist, so wird das nächste Byte, nämlich
der Ladebefehl LDS zugegriffen. Wie sich aus Tabelle 1 ergibt,
wird der durch den Inhalt des Registers IJ, d. h. das erste
Zeichen in der Eingabereihe der Zeichen, bezeichnete Inhalt
des Speicherplatzes in das A-Register oder den Akkumulator 90
geladen. Das in den Akkumulator geladene Zeichen wird sodann
zu der im Register HL enthaltenen ersten Adresse der Umsetztabelle
zur Bildung einer Speicheradresse addiert. Diese
Adresse ist der Platz in der Umsetztabelle, welcher dem aus
der Zeichen-Eingabefolge gelesenen Zeichen entspricht.
Der Kode, in den das Zeichen umgesetzt wird, wird sodann von
diesem Platz bzw. dieser Adresse zurückgeholt und in den
Akkumulator 90 eingegeben. Der Vergleichsbefehl CMP A, E
subtrahiert definitionsgemäß den Inhalt des Registers E vom
Inhalt des Registers A, das zuvor mit dem alphanumerischen
umgesetzten Kode geladen war. Wenn das erste Zeichen der
Zeichenfolge kein alphanumerischer Kode ist, so führt die
Subtraktion zu einer positiven oder negativen Zahl ungleich
Null. Wenn das erste Zeichen jedoch gleich einem alphanumerischen
Kode ist, so ist die Summe Null, wodurch ein
Null-Kennzeichnungsbit im PSW 136 beeinflußt wird. Der
Schleifen- und Prüf-Null-Befehl LPW subtrahiert Eins vom
Inhalt des Zählregisters BC. Wenn das Nullkennzeichen gesetzt
ist und das BC-Register noch niocht Null ist, so wird
die im Schleifen- und Prüf-Null-Befehl enthaltene Verschiebung
X2 zum Programmzähler addiert und in den Programmzähler
wieder eingesetzt. Da die Distanzadresse eine negative
Zahl sein kann, kann der Programmzähler durch eine geeignete
Anzahl von Bytes dazu gebracht werden, daß er beim ersten
Schritt mit dem Ladebefehl LDS das Programm wieder
aufnimmt. Es ist zu beachten, daß die Ladebefehlsfolge LDS
das IJ-Register 103 um Eins erhöht, da angenommen wurde, das
W=0. Infolgedessen wird das nächste zeichen aus der Eingabezeichenfolge
zum Vergleich in den Akkumulator geladen.
Es sei nun die Situation betrachtet, bei der ein Suchbefehl
an einer Zeichenreihe ausgeführt werden soll, um ein
vorgegebenes Zeichen zu identifizieren. Diese Situation tritt
während einer gewöhnlichen Operation bei der Durchsicht und
Identifizierung spezieller Daten in einer Suchdatei auf. Um
dies durchzuführen, wird das Register IK initialisiert, um den
Beginn der zu untersuchenden Datei von Eingangszeichen anzuzeigen,
BC wird initialisiert, um die Länge der Eingabedatei zu
speichern, und ein Rücksetzkennzeichen wird gelöscht. Die
Maschinenschleife besteht einfach in folgendem:
Der Sprungbefehl führt zum Überspringen der Schleife, wenn
das Zählerregister BC Null ist. Ist dies nicht der Fall,
wird das Wiederholungspräfix RPT gelesen, das anzeigt, daß
solange das BC-Register nicht Null ist, der primitive
nachfolgende Ketenbefehl auszuführen ist, und daß
nur dann, wenn das Nullkennzeichen und Z-Bit des Wiederholungsbefehls
gleich sind, die Schleife bei X1 verlassen
werden soll. Nach dem Verlassen der Schleife wird der Programmzähler
um 2 erhöht bzw. weitergeschaltet. In dem beschriebenen
Ausführungsbeispiel ist der dem Wiederholungspräfix folgende
primitive Zeichenreihenbefehl der Befehl SUCHEN, der den Inhalt
des A-Registers 90, in das das gesuchte Zeichen geladen worden
ist, nimmt und ihn vom Inhalt der vom IK-Register 105 bezeichneten
Adresse oder Stelle subtrahiert. Solange diese
beiden Zeichen unterschiedlich sind, ist der Unterschied
ungleich Null und das Nullkennzeichen (Null-Flag)
bleibt unberührt. Daher ist zu sehen, daß eine "Maschinenschleife"
durch Verwendung des Wiederholungspräfix geschrieben
werden kann. Die Zeichenreihenbefehle können in
"Maschinen" Schleifen und in engen Programmschleifen verwendet
werden, da die einfachen Befehle VERGLEICHEN, SUCHEN, LADEN
und SPEICHERN jeweils eine Inkrementier- oder Dekrementierfunktion
unter den ausgeführten Operationen enthalten. Die Mikrokodestruktur
jedes der Reihenzeichenbefehle wird nachfolgend
genauer beschrieben.
Dezimalbefehle werden von der CPU 10 sowohl in Form eines
gepackten Binär-Dezimal-Kodes (BCD) als auch in ungepackter
BCD-Form verarbeitet. Gepackte BCD-Befehle befassen sich mit
BCD-Informationen, welche so kodiert ist, daß sie zwei Dezimalziffern
pro Byte enthält. Ungepackte BCD-Digitalinformationen
enthalten eine Dezimalziffer pro Byte. Der ASCII-Kode ist ein
besonderer Fall der ungepackten BCD-Form. Die ASCII-Informationen
liegen in Byteform vor und werden derart kodiert, daß die vier
am höchsten bewerteten Bits des Bytes nur das Paritätsbit und
der Kode 011 sind, der ausdrückt, daß die folgende Information
ein numerisches Zeichen darstellt. Die am geringsten bewerteten
vier Bits des ASCII-Bytes stellen in einem solchen Fall die
binär kodierte Dezimalzahl dar. Die erfindungsgemäße CPU 10
ist zur Ausführung arithmetischer Operationen bezüglich der
ASCII-Informationen besser und leichter befähigt als herkömmliche
Prozessoren. Die Basis der ASCII-Befehle dreht sich um
einen eingestellten Zyklus. Additions- und Subtraktionseinstellung
nach einem ASCII-Befehl ist ähnlich der entsprechenden
gepackten BCD-Einstellungen, mit der Ausnahme, daß das
X-Register aktualisiert wird, wenn eine Anpassung an den
Akkumulator, das Register A, erforderlich ist. Betrachtet
werden die Additions- und Subtraktionseinstellungen entsprechend
der nachfolgenden Tabelle 2.
ASCII Addition a+b → c
0 → (ÜBERTRAG)
DO i=1 nach N
(a[i] → (A)
(A)+(b[i]) → (A)
wobei "+" Addition mit Übertrag bezeichnet
Additionseinstellung (A) → (XA)
(A) → (c [i])
0 → (ÜBERTRAG)
DO i=1 nach N
(a[i] → (A)
(A)+(b[i]) → (A)
wobei "+" Addition mit Übertrag bezeichnet
Additionseinstellung (A) → (XA)
(A) → (c [i])
ASCII Subtraktion a-b → c
0 → (Übertrag)
DO i-1 nach N
(a [i]) → (A)
(A)-(b [i]) → (A)
wobei "-" Subtraktion mit Ausborgen bezeichnet
Subtrahieren-Einstellung (A) → (XA)
(A) → (c [i])
0 → (Übertrag)
DO i-1 nach N
(a [i]) → (A)
(A)-(b [i]) → (A)
wobei "-" Subtraktion mit Ausborgen bezeichnet
Subtrahieren-Einstellung (A) → (XA)
(A) → (c [i])
ASCII (ungepackter BCD) Einstellung für Addition
Kurzbezeichnung:
AAA
AAA
Beschreibung:
Wenn (A). Low-Tetrade<9 oder (HILFSÜBERTRAG) = 1 dann
(A) + 6 → (A)
(X) + 1 → (X)
1 → (HILFSÜBERTRAG)
(HILFSÜBERTRAG) → (ÜBERTRAG)
(A) AND OFH → (A)
Wenn (A). Low-Tetrade<9 oder (HILFSÜBERTRAG) = 1 dann
(A) + 6 → (A)
(X) + 1 → (X)
1 → (HILFSÜBERTRAG)
(HILFSÜBERTRAG) → (ÜBERTRAG)
(A) AND OFH → (A)
Beteiligte Kennzeichen (Flags):
ÜBERTRAG, HILFSÜBERTRAG, VORZEICHEN, NULL, PARITÄT auf der Basis von (A) ÜBERLAUF undefiniert
ÜBERTRAG, HILFSÜBERTRAG, VORZEICHEN, NULL, PARITÄT auf der Basis von (A) ÜBERLAUF undefiniert
ASCII (ungepackter BCD) Einstellung für Subtraktion
Kurzbezeichnung:
AAS
AAS
Beschreibung:
Wenn (A). low-Tetrade<9 oder (HILFSÜBERTRAG) = 1, dann
(A) - 6 → (A)
(X) - 1 → (X)
1 → (HILFSÜBERTRAG)
(HILFSÜBERTRAG) → (ÜBERTRAG)
(A) AND OFH → (A)
Wenn (A). low-Tetrade<9 oder (HILFSÜBERTRAG) = 1, dann
(A) - 6 → (A)
(X) - 1 → (X)
1 → (HILFSÜBERTRAG)
(HILFSÜBERTRAG) → (ÜBERTRAG)
(A) AND OFH → (A)
Beteiligte Kennzeichen bzw. Marken:
ÜBERTRAG, HILFSÜBERTRAG, VORZEICHEN, NULL, PARITÄT auf der Basis von (A), ÜBERLAUF undefiniert
ÜBERTRAG, HILFSÜBERTRAG, VORZEICHEN, NULL, PARITÄT auf der Basis von (A), ÜBERLAUF undefiniert
A und B stellen zwei Mehrfach-ASCII-Zeichen-Zahlen dar. N stellt
die Anzahl von ASCII-Zeichen in der längeren der beiden Zahlen
dar. In dem ASCII-Additionsbefehl wird die Übertragsmarke zuerst
auf Null gesetzt und danach in die Schleife eingetreten.
Beginnend mit dem ersten Zeichen der ASCII-Zahlen wird das
erste Zeichen in ein A-Register oder einen Akkumulator 90
geladen. Das erste Zeichen der zweiten Summe wird sodann mit
dem Inhalt des Akkumulators 90 in einer Addier-Mit-Übertrag-
Operation addiert. Offensichtlich sind die am höchsten bewerteten
vier Bits (oberes Halbbyte) eine bedeutungslose
Summe, da sie die Addition von zwei ASCII-Kodes und das
Paritätsbit für jedes zeichen darstellen. Eine Überschuß-
Sechs-Kode-Einstellung wird durch Prüfung des unteren
Halbbytes des Akkumulators 90 durchgeführt,
um festzustellen, ob die Zahl dort größer als 9 ist, oder
ob die Hilfsübertragsmarke in PSW 136 gesetzt worden ist.
Ist dies der Fall, so wird sechs zum Inhalt des Akkumulators
90 und Eins zum Inhalt des X-Registers 82 addiert. Das Kennzeichen
HILFSÜBERTRAG wird sodann gesetzt, und
das Übertrags-Flag wird mit HILFSÜBERTRAG in Übereinstimmung
gebracht. Der Inhalt des Akkumulators 90 wird sodann mit der
Hexidezimalzahl OF in einer UND-Funktion logisch kombiniert,
um das Halbbyte hoher Ordnung auf Null zu
setzen und das Halbbyte niedriger Ordnung, welcher die bedeutsame
numerische Information enthält, zu übertragen. Der Inhalt des
Akkumulators 90 wird sodann in dem der Summe für dieses Zeichen
entsprechenden Platz gespeichert. Die Schleife wiederholt dann
die Operation für die ASCII-Zeichen nächst höherer Ordnung
der Summanden.
In ähnlicher Weise läuft die in Tabelle 2 gezeigte ASCII-
Subtraktion ab. Die Subtraktionseinstellung erfolgt in einem
Überschuß-Sechs-Kode in der gleichen Weise wie die Einstellung
der Addition mit der Ausnahme, daß eine sechs vom Inhalt des
Akkumulators 90 abgezogen und der Inhalt des X-Registers 82
um Eins verringert wird. Es ist zu erkennen, daß weder im
Subtraktions- noch im Additionsprogramm gemäß Tabelle 2 der
Inhalt des X-Registers 82 bewertet wird (figure in). Jedoch
wird die Additionseinstellung in dem ASCII-Multiplikationsschema
in einer in der Tabelle 3 schematisch dargestellten Weise verwendet.
Die ASCII-Befehle sind besonders günstig
bezüglich der Multiplikation und Division. Betrachtet wird beispielsweise
das Multiplikationsunterprogramm entsprechend
Tabelle 3.
ASCII-Multiplikation a · b → c
(b) AND OFH → (b)
0 → - (c[1])
DO i = 1 nach N
(a[i]) AND OFG → (A)
(A) · (b) → (XA)
Multipliziereinstellung (A) → (XA)
(A) + (c[i]) → (A)
Addierstellung (A) → (XA)
(A) → (c[i])
(X) → (c[i+1])
(b) AND OFH → (b)
0 → - (c[1])
DO i = 1 nach N
(a[i]) AND OFG → (A)
(A) · (b) → (XA)
Multipliziereinstellung (A) → (XA)
(A) + (c[i]) → (A)
Addierstellung (A) → (XA)
(A) → (c[i])
(X) → (c[i+1])
ASCII-Division a/b → c
(b) AND OFH → (b)
0 → (X)
DO i = N nach 1
(a[i]) AND OFH → (A)
Divisionseinstellung (XA) → (A)
(A)/(b) → (A)
mit Quotient nach (X)
(A) → (c[i])
(b) AND OFH → (b)
0 → (X)
DO i = N nach 1
(a[i]) AND OFH → (A)
Divisionseinstellung (XA) → (A)
(A)/(b) → (A)
mit Quotient nach (X)
(A) → (c[i])
ASCII-Einstellung für Multiplikation
Kurzbezeichnung:
AAM
AAM
Beschreibung:
(A)/10 → (X)
(A) mod 10 → (A)
(A)/10 → (X)
(A) mod 10 → (A)
Beteiligte Kennzeichen (Flags):
ÜBERTRAG, HILFSÜBERTRAG undefiniert, VORZEICHEN, NULL, PARITÄT basierend auf (A), ÜBERLAUF undefiniert
ÜBERTRAG, HILFSÜBERTRAG undefiniert, VORZEICHEN, NULL, PARITÄT basierend auf (A), ÜBERLAUF undefiniert
ASCII-Einstellung für Division
Kurzbezeichnung:
AAD
AAD
Beschreibung:
(X) · 10 + (A) → (A)
0 → (X)
(X) · 10 + (A) → (A)
0 → (X)
Beteiligte Kennzeichen (Flags):
ÜBERTRAG, HILFSÜBERTRAG undefiniert, VORZEICHEN, NULL, PARITÄT basierend auf (A), ÜBERLAUF undefiniert
ÜBERTRAG, HILFSÜBERTRAG undefiniert, VORZEICHEN, NULL, PARITÄT basierend auf (A), ÜBERLAUF undefiniert
Die ASCII-Zahl b wird in einer UND-Funktion mit der Hexidezimalzahl
OF kombiniert, um die am höchsten bewerteten
vier Bits zu Null zu machen. Der Inhalt des c(1) Platzes,
das Produkt, wird auf Null gesetzt. In die Schleife wird
dadurch eingetreten, daß die am höchsten bewerteten vier Bits
des ASCII-Multiplikanden zu Null gemacht und das Ergebnis in
den Akkumulator 90 gesetzt wird. Die in Tabelle 3 angegebene
Routine ist ein Programm, welches einen Mehr-Zeichen-Multiplikanden
mit einem Einzelzeichen-Multiplikator multipliziert.
Für Mehr-Zeichen-Multiplikatoren müßte die Routine zur Gewinnung
einer Mehrzahl von Produkten wiederholt werden, wobei dann die
so gewonnenen Produkte in geeigneter Form entsprechend dem
üblichen Multiplikationsalgorithmus für Dezimalzahlen
kombiniert werden.
Der Inhalt des Akkumulators 90 wird sodann mit dem ASCII-
Multiplikator multipliziert und das Produkt in das 16-Bit-
XA-Register 82 und 90 geladen. Das 16-Bit-Binär-Produkt
wird sodann einem Multipliziereinstellungs-ASCII-Befehl unterworfen.
Eine Multiplikationseinstellung AAM teilt zunächst
den Inhalt des Akkumulators 90 durch 10 und gibt das Ergebnis
in das X-Register 82. Der Inhalt des Akkumulators 90 wird dann
auf Modulo 10 reduziert, um den Rest der Division in den Akkumulator
90 einzugeben. Das Ergebnis ist, daß das Produkt von b
mit der Zahl a(1) in ungepackter BCD-Form im 16-Bit-Register XA
zur Verfügung steht. Der Inhalt des Akkumulators 90 wird sodann
zum Produkt c(1) zuaddiert, das beim ersten Durchlauf durch
die Schleife auf null gesetzt worden ist. Die Ergebnisse der
Summe werden in den Akkumulator 90 zurückgeladen. Eine binäre
Summe ergibt sich jetzt im Akkumulator 90 und wird durch eine
Additionseinstellung AAA der oben beschriebenen Art auf die
ungepackte BCD-Form eingestellt. Der Inhalt des Akkumulators
90 wird dann in den c(1) Platz geladen und der Inhalt des
X-Registers 82 wird in den c(2) Platz bzw. in die c(2) Adresse
geladen.
Die DO-Schleife wird durch Multiplizieren des zweiten Zeichens
a(2) mit dem Multiplikator und Einsetzen des Produkts in das
16-Bit-Register XA wiederholt. Der Multiplikationseinstellbefehl
setzt den Inhalt des Akkumulators 90 in eine ungepackte
BCD-Form um und lädt das Register XA mit dem Ergebnis. Der Inhalt
des Akkumulators 90 wird sodann zum Inhalt des Platzes
bzw. der Zelle c(2) addiert, der bzw. die den Übertrag von der
vorhergehenden Multiplikation enthält. Das Ergebnis wird in
den Akkumulator 90 geladen. Da die binäre Summe neun übersteigen
kann, folgt der vorgeschriebene Additionseinstellbefehl
mit dem im Register XA erscheindenden BCD-Ergebnis. Die Erhöhung
des X-Registers 82 überträgt automatisch einen Übertrag von der
BCD-Einstellung. Die Ergebnisse im X-Register 82 und Akkumulator
90 werden in die geeigneten Produktplätze bzw. -zellen geladen.
Daher wird der Inhalt des X-Registers 82, der für die ASCII-
Additionsroutine unwesentlich war, zu einem integralen Bestandteil
der ASCII-Multiplikationsroutine über den Additionseinstellbefehl.
Die ASCII-Routine für die Division ist in ähnlicher Weise
in Tabelle 3 gezeigt und besteht aus einer DO-Schleife, die
von dem Zeichen höchster Ordnung zu demjenigen niedrigster
Ordnung wiederholt wird. Die Routine zeigt einen Ein-Zeichen-
Divisor und einen Mehr-Zeichen-Dividenden. Die in Tabelle 3
gezeigte Routine kann in geeigneter Weise als Unterprogramm
in einem größeren Schema zum Aufnehmen von Mehr-Zeichen-
Divisoren entsprechend bekannten Prinzipien verwendet werden.
Der Teil höherer Ordnung des ASCII-kodierten Divisors wird zunächst
zu null gemacht. Das X-Register 82 wird in ähnlicher
Weise auf null gesetzt. Dann wird in die DO-Schleife eingetreten,
beginnend mit dem am hächsten bewerteten Zeichen. Das
Zeichen höchster Ordnung des Dividenden, a(N) ist in den am
höchsten bewerteten Bits in ähnlicher Weise auf null gesetzt
und wird in den Akkumulator 90 geladen. Ein ASCII-Befehl Divisionseinstellung
AAD wird danach mit Bezug auf den Inhalt des
Registers XA ausgeführt.
Die Einstellung bzw. das Programm zur Division nimmt zuerst
den Inhalt des X-Registers 82 und multipliziert ihn mit 10 und
addiert das Produkt zum Inhalt des Akkumulators 90 und setzt
das Ergebnis in den Akkumulator 90 ein. Mit anderen Worten,
die ungepackte BCD-Kode-zahl wird in binäre Form umgesetzt
und in den Akkumulator 90 eingesetzt. Nullen werden wiederum
in das X-Register 82 geschreiben. Der Divisor wird sodann in
den Inhalt des Akkumulators 90 unterteilt, wobei der Quotient
in den Akkumulator 90 und der Rest in das X-Register 82 kommt.
Der Inhalt des Akkumulators 90, der Quotient, wird sodann in
einen geeigneten Platz bzw. eine geeignete Zelle für das höchste
Zeichen des Quotienten geladen. Der Zahlwert wird verringert
und das nächstniedrigere ASCII-Zeichen wird in den Akkumulator
90 geladen. Der Inhalt des Registers XA wird wiederum
einer Divisionseinstellung in der oben beschriebenen Weise unterworfen,
um das binäre Äquivalent in den Akkumulator 90 einzugeben.
Die Division wird durchgeführt, wobei das Ergebnis
in die geeigneten Quotientenzelle geladen und der Rest wieder
in das X-Register 82 für ein eventuelles nächstniedrigeres
Zeichen eingesetzt wird.
Zu beachten ist, daß in den Multiplikations- und Divisionsroutinen
die Multiplikationseinstell- und Divisionseinstellschritte
relativ zur tatsächlichen Multiplikation oder Division
in einer anderen Folge ablaufen. Die tatsächliche arithmetische
Operation wird in binärer Form durchgeführt. Da der
ASCII-Kode ein ungepackter BCD ist und für die tatsächliche
Berechnungauf null gesetzt wird, sind die Zahlen tatsächlich
in binärer Form, und die Multiplikationseinstellung braucht
nur nach der Gewinnung des Produkts durchgeführt zu werden.
Da der Rest einer Division jedoch nach jeder Zeichendivision
in das X-Register 82 eingesetzt wird, muß eine Divisionseinstellung
in jedem Fall vor der Ausführung der tatsächlichen
Division vorgenommen werden. Das Mikrokode-Format für die
ASCII-Einstellbefehle wird weiter unten genauer beschrieben.
Die erfindungsgemäße CPU verwendet auch ein zusätzliches Bit
im Befehlscode in zwei Klassen von Befehlen. Ein d-Bit wird in den
Befehlscode in der Klasse von zwei Operandenbefehlen und ein l-Bit
wird in den Befehlscode in der Klasse von Direktdatenbefehlen einbezogen.
Betrachtet wird beispielsweise der Additionsbefehl, der
in Tabelle 4 unten in tabellarischer Form gezeigt ist.
Befehlsdetails
ADDIEREN
Kurzbezeichnung:
ADD reg,ea (w = 0)
ADDW reg,ea (w = 1)
umgekehrt ea und reg wenn d = 1
ADD reg,ea (w = 0)
ADDW reg,ea (w = 1)
umgekehrt ea und reg wenn d = 1
Beschreibung:
Wenn w = 0 dann
wenn d = 1 dann (REG8) + (EA8) → (REG8)
sonst (EA8) + (REG8) → (EA8)
sonst
wenn d = 1 dann (REG16) + (EA16) → (REG16)
sonst (EA16) + (REG16) → (EA16)
Wenn w = 0 dann
wenn d = 1 dann (REG8) + (EA8) → (REG8)
sonst (EA8) + (REG8) → (EA8)
sonst
wenn d = 1 dann (REG16) + (EA16) → (REG16)
sonst (EA16) + (REG16) → (EA16)
Beteiligte Kennzeichen (Flags):
ÜBERTRAG, HILFSÜBERTRAG, VORZEICHEN, NULL, PARITÄT, ÜBERLAUF
ÜBERTRAG, HILFSÜBERTRAG, VORZEICHEN, NULL, PARITÄT, ÜBERLAUF
Die sechs am höchsten bewerteten Bits des Befehlscodes liefern in
besonderer Weise die Additionsbefehl-Befehlscodeadresse. Bit 1 des
Befehlscode ist das d-Bit und Bit 0 des Befehlscode ist das w-Bit, das
anzeigt, ob eine 8- oder 16-Bit-Operation ablaufen soll. Das
d-Bit liefert den programmierten Befehl für die Richtung, in
der die Operation abläuft. Mit anderen Worten, wie in der
obigen Tabelle 4 gezeigt ist, wenn das d-Bit auf 1 gesetzt
ist, werden der Inhalt eines ersten Registers und derjenige
eines zweiten Registers oder eines Speicherplatzes addiert
und in das erste Register eingesetzt. Wenn jedoch das d-Bit
null ist, so wird der Speicherplatz oder das zweite Register
zum ersten Register addiert und das Ergebnis in das zweite Register
oder den Speicherplatz eingesetzt. Besonders vorteilhaft
ist die Art, in der die CPU 10 das d-Bit verarbeitet.
Das d-Bit wird nicht mikrokode-dekodiert, sondern wird unter
Verwendung einer herkömmlichen beliebig wählbaren Logik dekodiert.
Der Gruppen-Dekodier-ROM 116 erzeugt ein bestimmtes internes
Befehlssignal DACT, welches anzeigt, daß der laufende Befehl,
der in die verschiedenen Register geladen ist, ein d-Feld hat.
DACT wird direkt zu einer Kreuzschaltung 172 (Fig. 1b) geleitet.
Normalerweise werden die Ausgangssignale von dem M-Register
104 und dem N-Register 106 sobehandelt, als bezeichneten sie
die Quelle und das Ziel in einer angenommenen Reihenfolge.
Mit anderen Worten, normalerweise erzeugt das M-Register 104
den Quellkode zur Auswahl des geeigneten Quellregisters, während
das N-Register 106 selektiv ein Freigabesignal und den
Zielkode für das Zielregister erzeugt. Jedoch
schafft das d-Bit eine zusätzliche Kodiermöglichkeit, um die
angenommene Quellen- und Ziel-Zuordnung durch Umkehr der
Ausgänge des M-Registers 104 und des N-Registers 106 mit herkömmlichen
Mitteln in der Kreuzschaltung 172 in Abhängigkeit
von DACT umzukehren.
Es wird jetzt die Verwendung des l-Bits im Befehlscode eines direkten
Addierbefehls betrachtet, wie schematisch in der nachfolgenden
Tabelle 5 dargestellt.
Direktes Addieren
Kurzbezeichnung:
ADDI ea,data (w = 0)
ADDIW ea,data (w = 1)
ADDI ea,data (w = 0)
ADDIW ea,data (w = 1)
Beschreibung:
Wenn ea = d8 oder d16, dann ist
data der Inhalt des oder der Bytes, das oder die dem oder den d8 oder d16 Byte(s) folgt oder folgen
sonst
data ist der Inhalt des oder der dem Befehl folgenden Byte(s)
wenn w = 0, dann ist data der Inhalt eines Bytes;
wenn w,l = 1,1 dann ist
data der Inhalt eines Bytes, das durch das Vorzeichen erweitert wurde zur Bildung einer 16-Bit-Zahl;
wenn w,l = 1,0 dann ist
data der Inhalt eines Paars von aufeinanderfolgenden Bytes, wobei das niedrig bewertete Byte dem höher bewerteten Byte vorausgeht.
wenn w = 0 dann (EA8) + data → (EA8)
sonst (EA16) + data → (EA16)
Wenn ea = d8 oder d16, dann ist
data der Inhalt des oder der Bytes, das oder die dem oder den d8 oder d16 Byte(s) folgt oder folgen
sonst
data ist der Inhalt des oder der dem Befehl folgenden Byte(s)
wenn w = 0, dann ist data der Inhalt eines Bytes;
wenn w,l = 1,1 dann ist
data der Inhalt eines Bytes, das durch das Vorzeichen erweitert wurde zur Bildung einer 16-Bit-Zahl;
wenn w,l = 1,0 dann ist
data der Inhalt eines Paars von aufeinanderfolgenden Bytes, wobei das niedrig bewertete Byte dem höher bewerteten Byte vorausgeht.
wenn w = 0 dann (EA8) + data → (EA8)
sonst (EA16) + data → (EA16)
Beteiligte Kennzeichen (Flags):
ÜBERTRAG, HILFSÜBERTRAG, VORZEICHEN, NULL, PARITÄT, ÜBERLAUF
ÜBERTRAG, HILFSÜBERTRAG, VORZEICHEN, NULL, PARITÄT, ÜBERLAUF
Der Code des Befehls zum direkten Addieren wird in ähnlicher
Weise identifiziert in den sechs am höchsten bewerteten Bits
des Befehlscodes, Bit 1 ist das l-Bit und Bit 0 ist das w-Bit wie
zuvor. Der Befehl zum direkten Addieren kann über vier Bytes
fortbestehen. Das erste Byte bezieht sich auf den Befehlscode, das
zweite Byte bezieht sich auf das Register oder den Speicherplatz
EA, und die letzten beiden Bytes enthalten die Direktdaten.
Der Einfachheit halber sei angenommen, daß die zu addierenden
Mengen Einzelbytes sind, d. h. w = 0. Die Daten im Befehl sind
dann der Inhalt eines Byte. Der Register- oder Speicherplatz
(EA8) wird dann zum Datenbyte addiert und das Ergebnis in diesen
Speicherplatz oder dieses Register eingesetzt.
Wenn die zu addierende Information jedoch Wortlänge hat,
so wird der Inhalt des 16-Bit-Speicher- oder Register-
Platzes zu den Direktdaten im Befehl addiert und zu diesem
Speicherplatz oder Register (EA16) zurückgeführt. Das l-Bit
ermöglicht die Verwendung sowohl von 8- als auch 16-Bit-
Daten in einer Wortlängenaddition. Wenn das l-Bit auf eins
gesetzt ist, so sind die Direktdaten gleich dem Inhalt des
Einzelbytes in dem Befehl, mit dem Vorzeichenbit erweitert
zur Bildung einer 16-Bit-Menge. Dies geschieht in einer
speziellen Hardware in der ALU 134 entsprechend bekannten
Konstruktionsprinzipien. Wenn das l-Bit jedoch auf
eine binäre Null gesetzt ist, so handelt es sich bei den
verarbeiteten Daten um die 16-Bit-Menge in dem Paar von
aufeinanderfolgenden Bytes, welche das letzte Paar eines
Mehr-Byte-Befehls bilden, wobei das niedriger bewertete
Byte dem höher bewerteten Byte vorausgeht. Das l-Bit ermöglicht
somit, daß sowohl 8- als auch 16-Bit-Datenwörter
übereinstimmend in Direktdatenbefehlen in einer Form verarbeitet
werden, welche hardware-identisch ist.
Schließlich kann die CPU 10 in einer Betriebsart
arbeiten, bei der eine Gleitkomma-Ankopplung zum
Koordinieren der Operation der CPU mit einem getrennten
Chip, z. B. einem Arithmetik-Chip verwendet wird, welches Gleitpunkt-
bzw. Gleitkommaoperationen durchführt und dadurch
deren Ausführung in festverdrahteter bzw. Hardware-Form
anstelle der Verwendung von Software-Unterprogrammen ermöglicht.
Das Arithmetik-Chip hat die Fähigkeit, den Adreß/Daten-
Bus zu überwachen und konstant den ausgeführten Befehl festzustellen.
Insbesondere ist das Arithmetik-Chip so eingestellt,
daß es einen speziellen Befehl FLOAT feststellt und in dessen
Abhängigkeit die notwendigen Maßnahmen trifft. Damit das
Arithmetik-Chip von der Zugriffsadresse des Befehls Kenntnis erhält,
reagiert die CPU 10 auf einen FLOAT-Befehl durch Durchführen
einer Leseoperation ohne Übertragung des Ergebnisses
der Leseoperation in die untere Steuereinheit 14. Die
gelesene Adresse wird der im FLOAT-Befehl angegebenen
Operandenadresse entnommen, wodurch die Adresse für das
Arithmetik-Chip auf dem Adreß/Daten-Bus erkennbar erscheint.
Während das Arithmetik-Chip seine Routinen ausführt, kann die
CPU 10 in einen Ruhezustand eintreten, währenddessen sie
darauf wartet, daß das Arithmetik-Chip die Verwendung des Adreß/
Daten-Bus freigibt. Ein externer Prüfanschluß an der CPU 10
zeigt letzterer an, ob das Arithmetik-Chip zur Ausführung eines
anderen Befehls bereit ist. Anderenfalls bewirkt der Befehl
WARTEN, daß die CPU 10 im Ruhezustand ist. Für das beschriebene
Ausführungsbeispiel ist die besondere Form von
FLOAT und WARTEN weiter unten in Tabelle 6 angegeben.
Gleitpunkthaken:
Kurzbezeichnung:
FLOAT ea
FLOAT ea
Beschreibung:
(EA16) → nirgendwohin, ausgenommen Adresse wird auf Bus gegeben
(EA16) → nirgendwohin, ausgenommen Adresse wird auf Bus gegeben
Beteiligte Kennzeichen (Flags):
Keine
Keine
WARTEN
Kurzbezeichnung:
WARTEN
WARTEN
Beschreibung:
Wenn kein Signal auf "Prüfanschluß" so wird dieser Befehl wieder ausgeführt.
Wenn kein Signal auf "Prüfanschluß" so wird dieser Befehl wieder ausgeführt.
Beteiligte Kennzeichen (Flags):
Keine
Keine
Jetzt sind die Mikrokode-Routinen für die oben angeführten
Befehle verständlich.
Wenn auch in dem beschriebenen Ausführungsbeispiel eine
besondere Befehlskodierung und Mikrokodierung mit Bezug auf
die Operationsweise der oben angegebenen Hardware beschrieben
wurde, ist klar, daß äquivalente Hardware-Komponenten,
welche sich aufeinander in logisch äquivalenter Weise beziehen,
verwendet werden können. Betrachtet sei beispielsweise die
Mikrokode-Routine für den ASCII-Additionseinstellungsbefehl
AAA. Tabelle 7 umfaßt die ASCII-Additions- und Substraktionseinstellungen
zusammen.
Jeder Mikrokode-Befehl besteht aus zwei Hälften, welche
parallel operieren können. Die erste Hälfte, Bits 1 bis 10,
enthält das Quell- und Bestimmungsfeld und erlaubt eine
allgemeine Übertragung zwischen beliebigen zwei Datenquellen
auf dem ALU-Bus 16. Die zweite Operation, welche parallel zur
ersten abgewickelt wird, kann eine der folgende sechs Arten
von Befehlen in den Mikrokodefeldern TYP, A, B und F sein:
Ein Kurzbereichssprung;
ein ALU-Statuseinstellungsbefehl;
ein allgemeines Verwaltungssteuerungspaar;
eine Speicherzyklusanforderung;
ein Weitbereichssprung; und
ein Weitbereichssprung mit Retten (SAVE), d. h. ein Aufruf.
Ein Kurzbereichssprung;
ein ALU-Statuseinstellungsbefehl;
ein allgemeines Verwaltungssteuerungspaar;
eine Speicherzyklusanforderung;
ein Weitbereichssprung; und
ein Weitbereichssprung mit Retten (SAVE), d. h. ein Aufruf.
Die ROM-Adresse, gespeichert im AR-Register 112, ist in
Tabelle 7 in den Bits 0 bis 7 und dem zusätzlich addierten
Bit ARX gezeigt. Der Inhalt des Inkrementregisters CR ist
in Dezimalform in einer Spalte rechts von der ROM-Adresse
gezeigt. Die Spalten S, D, TYP, A, B und F stellen in
memotechnischer Form den 21-Bit-Mikrokode dar, der im ROM
114 entprechend der ASCII-Einstellung gespeichert ist.
Die Quell- und Bestimmungsfelder belegen Bits 1 bis 10 und
identifizieren entsprechend einer Quell- und Befestimmungsbuskodezuordnung
eines der Register in den oberen oder unteren
Dateien 32, 78 oder einem der ALU-Register.
Es gibt sechs Arten von Mikrokode-Befehlen bei dem beschriebenen
Ausführungsbeispiel. Typ 1 ist ein ALU-Statuseinstellungbefehl,
welcher die mit PSW 136 zusammengenommene ALU
134 zur Ausführung einer besonderen Funktion einstellt. Ein
Typ 0-Mikrokode-Befehl ist ein kurzer Sprung, welcher innerhalb
der Mikrokodefolge einen bedingten Sprung herbeiführt.
Ein Typ-4-Befehl ist ein Buchhaltungsbefehl. Andere Typen
umfassen einen Typ-6-Speicherzyklus, einen Typ-5-Sprungzyklus
und einen Typ-6-Sprungzyklus mit Adressen-Zwischenspeicherung.
Im Falle der ASCII-Additions- und Subtraktionseinstellung
entsprechend Tabelle 7 besteht das Mikroprogramm
aus acht Mikrokodebefehlen. Der ersten Mikrokodebefehl überträgt
den Inhalt von A zu den niedrigeren acht Bits des
16-Bit-Zwischenregisters TMP A 138. Die zweite Hälfte des
Mikrokodebefehls ist ein ALU-Statuseinstellungsbefehl, welcher
die ALU 134 derart vorkonditioniert, daß sie den Inhalt von
TMP A 138 und den Inhlat von TMP B 142 ohne Übertrag addiert.
Der durch XI symbolisch dargestellte Befehlscode besteht aus
Bits 13 bis 17. Dies fünf Bits werden in das Befehlscode-Register
110 geladen und über ROM 132 zu ALU 134 dekodiert. Der Befehlscode
ist eine besondere ASCII-Einstellung entweder zur
Addition oder zur Subtraktion, ausgeführt mit dem Inhalt
des Mikrokode-B-Feldes, das im Falle eines ALU-Befehls Bits
18 bis 20 enthält. Bit 21 ist ein Kennzeichenbits, das anzeigt,
ob die PSW-Kennzeichen bzw. -marken auf den neuesten
Stand gebracht werden sollen. Die ALU ist derart vorkonditioniert,
daß sie den Inhalt des Zwischenregisters A
prüft, um festzustellen, ob er 9 übersteigt oder ob das
Hilfsübertragkennzeichen gesetzt ist. Der vorgeladene ALU-
Bus 16 wird bei Beginn jedes Taktzyklus auf ein volles
Komplement von Einsen gesetzt und durch Mikrokodebefehl 1
selektiv heruntergedrückt, indem eine geeignete Schaltung
160, die schematisch in Fig. 2 gezeigt ist, zum Entladen
der ausgewählten Leitungen des ALU-Bus 16 und zum Laden
einer binären 6 in TMP B 142 befähigt wird. Eine herkömmliche
Komparatorschaltung 162 prüft den Inhalt des Zwischenregisters
A, um festzustellen, ob dessen Inhalt größer als 9
ist. Ist dies der Fall, so ist das Ausgangssignal des
Komparators 162 wahr und wird im ODER-Gatter 164 mit dem
Hilfsübertrag-Bit vom PSW 136 verknüpft. Das Ausgangssignal
des ODER-Gatters 164 gibt den Addierer 166 frei,
der daraufhin die Inhalte von TMP A 138 und TMP B 142
addiert. Die Schaltung gemäß Fig. 2 oder deren Äquivalent
ist hin die ALU 134 einbezogen und wird vom entsprechenden
ALU-Befehlscode freigegeben.
Der Mikrokode-Befehl 2 nimmt den Inhalt der Summe aus ALU
134 und lädt diese Summe neu in den Akkumulator 90.
ALU 134 wird sodann von der zweiten Hälfte des Mikrokode-
Befehls 2 vorkonditioniert, um den Inhalt von TMP B
zu dekrementieren. Das am niedristen bewertete Bit XO
des X-Registers 108 wird sodann im Mikrokode-Befehl 3,
nämlich durch Bit 3 der Befehlsadresse geprüft. Wenn
dies Bit wahr ist, folgt der Mikrokode-Befehl einem
kurzen Sprung zum Mikrokode-Befehl 5, wo der Inhalt des
X-Registers 82 in das Register TMP B 142 geladen wird.
Die vom Mikrokode-Befehl 2 vorkonditionierte ALU 134
dekrementiert den Inhalt von TEMP B 142. Die zweite Hälfte
des Mikrokode-Befehls 5 ruft sodann einen kurzen Sprung
zum Ende des Mikrokode-Befehls hervor, wenn die
Inversion des Übertragungskennzeichens (carry flag) wahr
ist und keinen Übertrag NCY anzeigt; anderenfalls wird
Mikrokode-Befehl 6 ausgeführt, wobei die Summe in das
X-Register 82 gegeben wird. In jedem Fall erzeugt der
Buchhaltungsbefehl ein ROM-Steuersignal RNI aus der
Schaltung 144, um den nächsten Befehl zu durchlaufen,
d. h. dem Lader 130 anzuzeigen, daß der nächste Maschinensprachenbefehl
ablaufen soll.
Wenn ein ASCII-Additionsbefehl angezeigt wird, so wird der
Mikrokode-Befehl 3 fortgelassen und ALU 134 derart vorkonditioniert,
daß sie den Inhalt von TMP B inkrementiert. Wiederum setzt
der Mikrokode-Befehl 5 den Inhalt des Zwischenregisters 82 in
TMP B ein, mit dem Ergebnis, daß der inkrementierte Inhalt des X-
Registers 82 in der erforderlichen Weise geladen und eine
ASCII-Multiplikation-Division ausgeführt werden kann. Eine
Schaltung führt die anderen, für die ASCII-Additions-
und Subtraktionseinstellung erforderlichen restlichen Operationen,
z. B. Setzen des Hilfsübertragkennzeichens durch Verwendung
einer Anhebeschaltung 168 unter Verknüpfung der Summe
mit hexidezimal OF im UND-Gatter 170 (Fig. 2) aus. Die logisch
äquivalente Schaltung, die bei der ASCII-Addition und -Subtraktion
verwendet wird, ist schematisch in Fig. 2 gezeigt. Selbstverständlich
ist dort nur ein Ausführungsbeispiel dargestellt,
das ein Äquivalent dafür darstellt, wie die Vielzweckschaltung
in der ALU 134 die erforderlichen fest verdrahteten logischen
Operationen in bekannter Weise ausführt. Es ist klar, daß die
tatsächliche Schaltung eine bestimmte Architektur haben kann
und nur eine zur Darstellung in Fig. 2 äquivalente Konfiguration
annimmt, und zwar in Abhängigkeit von den oben erörterten
Mikrokode-Befehlen.
Die ASCII-Divisions- und Multiplikationseinstellbefehle AAM
und AAD sind schematisch unten in Tabelle 8 dargestellt.
Wie für AAD in Tabelle 3 gezeigt ist, wird die 8-Bit-Binärzahl
für 10 als zweites Byte des Befehls aus der Warteschlange gezogen
und in den TMP C 140 eingesetzt. Der Inhalt des X-Registers
82 wird in TMP B 142 eingesetzt. Der unbedingte
Langsprung wird dann zu CORX ausgeführt, was bei dem beschriebenen
Ausführungsbeispiel ein Teil eines Inkrementier- und Dekrementier-
Befehls ist. Mikrokode-Befehle 3 bis 11 und CORX stellen
die Ausführung des normalen binären Multiplikationsalgorithmus
dar, bei dem TMP A als Akkumulator benutzt wird. Der ALU-Befehlscode
RRCY steht für eine Rechtsdrehung einschließlich dem Übertrag.
Der Übertrag ist einbezogen, da die erfindungsgemäße ALU 134
nur in der Lage ist, das Übertragsbit statt eines ausgewählten
Bits des Bytes oder Worts zu prüfen. Daher löscht der Mikrokode-
Befehl 3 von CORX das Zwischenregister A und vorkonditioniert die
ALU 134 für eine Rechtsrotation des Inhalts des Zwischenregisters
C. Die tatsächliche Drehung bzw. Rotation erfolgt beim Mikrokode-
Befehl 4. In der zweiten Hälfte des Mikrokode-Befehls 4
setzt eine Verwaltungsinstruktion einen an sich bekannten
internen Zähler in der ALU 134 entweder auf 15 oder auf 7,
was davon abhängt, ob die verarbeitete Menge ein Byte oder
ein Wort ist.
Wie weiter unten zu erkennen ist, wird danach der Zähler
dekrementiert, wenn ein Multiplikationsalgorithmus fortgesetzt wird.
Mikrokode-Befehl 5 ist ein kurzer bedingter Sprung, bei dem
das Übertragsbit geprüft wird. Gibt es keinen Übertrag, so
wird der Sprung zum Mikrokode-Befehl 8 ausgeführt. Die letzte
Hälfte des Mikrokode-Befehls 8 und die erste Hälfte des Mikrokode-
Befehls 9 werden rechtsgedreht mit Übertrag des Inhalts
des Zwischenregisters A, gefolgt von der Rechtsdrehung mit
Übertrag des Inhalts des Registers TMP C. In der letzten Hälfte
des Mikrokode-Befehls 10 wird immer dann ein kurzer bedingter
Sprung ausgeführt, wenn die Bedingung NCZ anzeigt, daß der Inhalt
des Zählers in der ALU 134 null erreicht hat. Wenn der
Inhalt ungleich null ist, kehrt die Schleife zum Mikrokode-
Befehl 5 zurück. Am Ende der Schleife wird zum Mikrokode-
Programm mit Bezug auf AAD zurückgekehrt, wobei der Inhalt
des A-Registers 90 in das Zwischenregister B 142 geladen
und ALU 134 derart vorkonditioniert wird, daß sie den
Inhalt des Zwischenregisters B und denjenigen des Zwischenregisters
C, das jetzt das Produkt des Zehnfachen des vorhergehenden
Inhalts des X-Registers 82 enthält, addiert.
Bei dem Mikrokode-Befehl 3 wird das X-Register 82 sodann
auf null gesetzt und ein unbedingter Sprung nach ASCF
ausgeführt, wobei die Addition, vorkonditioniert durch den
Mikrokode-Befehl 2 in der ALU 134 ausgeführt wird, die Kennzeichen
aktualisiert und das ROM-Steuersignal
RNI erzeugt werden. Ein Vergleich mit Tabelle 3 zeigt, daß
dies tatsächlich die ASCII-Einstellung bzw. Programmierung
für Division ist.
In ähnlicher Weise zeigt Tabelle 8 auch die ASCII-Einstellung
bzw. Programmierung für die Multiplikation AAM. Die
Binärzahl für 10 wird der Warteschlange entnommen und während
des Mikrokode-Schritts 0 in das Zwischenregister B geladen.
Das Zwischenregister A wird während des Mikrokode-Befehls
1 gelöscht, und der Inhalt des Akkumulators 90
wird in das Zwischenregister C während des Mikrokode-Befehls
2 geladen, worauf ein unbedingter Sprung zum Unterprogramm
CORD stattfindet, das aus einem 16-Mikrobefehls-Mikroprogramm besteht.
Der erste Mikroprogramm-Befehl von CORD konditioniert ALU 134
derart vor, daß diese den Inhalt des Zwischenregisters B von
demjenigen des Zwischenregisters A subtrahiert und die Subtraktion
beim Mikrokode-Befehl 1 ausführt, ohne das Ergebnis
an einen Speicherplatz zu setzen. Das Übertragskennzeichen
wird ebenfalls gesetzt. Wenn daher der Inhalt des Zwischenregisters
B null ist, wobei angenommen wird, daß alle Inhalte
positive Zahlen sind, so wird kein Übertrag erzeugt,
da das Zwischenregister A gelöscht worden ist. In einem solchen
Falle zeigt beim Mikrokode-Befehl 2 ein bedingter Sprung
NCY zu einer herkömmlichen Fehler-Subroutine dem Benutzer an,
daß eine Division durch null versucht wird. Normalerweise wird
das Übertragungskennzeichen bzw. die Übertragsmarke beim Mikrokode-
Befehl 1 gesetzt. Wie zuvor setzt der Buchhaltungsbefehl
MAX C den Inhalt eines internen Zählers in der ALU 134 auf
15 oder 7, und zwar abhängig davon, ob Byte- oder Wortmengen
verarbeitet werden. Eine Linksdrehung mit Übertrag wird sodann
am Inhalt des Zwischenregisters C während der Mikrokode-
Befehle 3 und 4 ausgeführt. Als Ergebnis wird das gesetzte
Übertragsbit in das Zwischenregister C linksgedreht, das anfänglich
den Dividenden enthielt. In ähnlicher Weise wird das
gesetzte Übertragungsbit in das Zwischenregister A gedreht, welches
vorher von den Mikrokode-Befehlen 4 und 5 auf null gesetzt
worden ist. ALU 134 ist derart vorkonditioniert, daß
sie den Inhalt des Zwischenregisters B von demjenigen des
Zwischenregisters A in der zweiten Hälfte des Mikrokode-
Befehls 5 subtrahiert. Das Übertragungsbit wird in einem Mikrokode-
Befehl 6 geprüft, ist jedoch null beim ersten Durchlauf,
da ein Nullbit in das Übertragungsbit von dem auf null gesetzten
Inhalt des Zwischenregisters A geschoben worden ist. Während
des Mikrokode-Befehls 7 wird die Subtraktion ausgeführt,
ohne daß die Differenzen irgendwo abgespeichert werden. Jedoch
wird das Übertragungsbitkennzeichen auf den neuesten Stand
gebracht. Wenn der im Zwischenregister B enthaltene Divisor
größer als der inzwischen gedrehte Inhalt des Zwischenregisters
A ist, so wird das Übertragsbit gesetzt, so daß der bedingte
Sprung NCY und der Mikrokode-Befehl 8 durchlaufen werden.
Der Mikrokode-Befehl 9 überträgt einen kurzen Sprung zurück
zum Mikrokode-Befehl 3 zusammen mit dem Dekrementieren des
internen Zählers innerhalb der ALU 134.
Der Prozeß wird in gleicher Weise solange fortgesetzt, bis
der verschobene Inhalt des Zwischenregisters A gleich oder
größer als der im Zwischenregister B gespeicherte Divisor ist.
Wenn das Übertragsbit durch Verschiebung einer binären 1 in
das Übertragsbit gesetzt ist, und zwar als Ergebnis der Linksdrehungsverschiebung,
beginnend beim Mikrokode-Befehl 4 aus dem
Zwischenregister A, so ruft der Mikrokode-Befehl 6 einen Sprung
zum Mikrokode-Befehl 13 hervor, der das Übertragsbit rücksetzt.
Die Differenz zwischen dem Dividenden wird
während des Mikrokode-Befehls 14 in das Zwischenregister A
eingesetzt, verbunden mit einer Rückkehr in der zweiten Hälfte
dieses Befehls zum Mikrokode-Befehl 3. Wenn keine binäre 1
in das Übertragsbit gedreht worden ist, so wird der Mikrokode-
Befehl 6 durchlaufen und die Subtraktion wie vorher im
Mikrokode-Befehl 7 ausgeführt. Wenn der Dividend gleich oder
größer als der Divisor ist, wird ein Übertragskennzeichen
beim Befeh 7 rückgesetzt, woraus ein bedingter Sprung beim
Befehl 14 resultiert, wo wiederum die Summe in das Zwischenregister
A gesetzt und die Schleife fortgesetzt wird.
Am Ende der Schleife entweder vom Befehl 9 oder vom Befehl 14
wird in den Befehl 10 entweder direkt oder über einen
unbedingter Sprung beim Befehl 15 eingetreten, um eine zusätzliche
Linksdrehung mit dem Übertrag an dem Inhalt des Zwischenregisters
C auszuführen. Der Inhalt des Zwischenregisters C
wird wieder in die ALU 134 beim Befehl 12 geladen und in der
Hauptmikrokode-Routine für AAM beim Mikrokode-Befehl 3 komplementiert.
Der komplementierte Inhalt des Zwischenregisters C,
der jetzt der Quotient von 10, geteilt durch den Dividenden
ist, wird in das X-Register 82 geladen. ALU 134 wird vorkonditioniert,
um den Inhalt des Zwischenregisters A zu durchlaufen
und lädt den Inhalt beim Mikrokode-Befehl 5 in das
Akkumulatorregister 90. Das Übertragskennzeichen wird sodann
auf den neuesten Stand gebracht und ein Befehlssignal RNI erzeugt.
Ein Vergleich mit Tabelle 3 zeigt, daß die Routine
für AAM tatsächlich durch das Mikroprogramm bzw. die geschlossene
Mikrokode-Kette gemäß vorstehender Beschreibung
ausgeführt wird.
Die Mikrokode-Unterprogramme für die Zeichenreihen- bzw.
String-Befehle MOVS und LDS, wie sie bei der Erfindung ausgeführt
werden, sind in der nachstehenden Tabelle 9 angegeben.
Jeder der String-Befehle beginnt mit einem langen Sprung bei
der Bedingung F1, die wahr ist, wenn das oben beschriebene Wiederholungspräfix
RPT gerade zuvor dekodiert wurde. Wenn vorhanden
wird in das Wiederholungsunterprogramm RPTS eingetreten,
welches dazu führt, daß der String-Befehl so oft wiederholt wird,
wie durch den Inhalt des Registers BC angegeben ist.
Die String-ÜBERTRAGEN- und String-LADEN-Befehle MOVS und LDS
teilen, wie gezeigt ist, die gleichen Mikroprogramme. Im
Mikrokode-Befehl 1 wird der Inhalt des IJ-Registers 102 zum
indirekten Register < 12722 00070 552 001000280000000200012000285911261100040 0002002903349 00004 12603BOL<44 in der oberen Datei 48 übertragen.
Ein Speicher-Lesebefehl wird danach ausgeführt. Das bekannte
Adressier-Unterprogramm nimmt dann die Adresse vom IND 44
und liest den Inhalt in das Operandenregister OPR 46. Bits
17 bis 20 enthalten einen Kode, der angibt, welches Verschieberegister
verwendet werden soll, und einen Adressenfaktor
zur Korrektur der Adresse im IND-Register 44 nach
dessen Benutzung. BL stellt symbolisch einen 2-Bit-Kode
dar, der eine externe Logik die Byte- oder Wort-Leitung
prüfen und das Richtungskennzeichen im PSW-Register 136
entsprechend einer bekannten Logik den erforderlichen
Adressenfaktor erzeugen läßt. Der Adressenfaktor
erhöht oder erniedrigt selektiv den Adresseninhalt
von IND 44 um 1 oder 2, je nachdem, ob ein oder zwei
Bytes beim Zugriff beteiligt sind.
Im Mikrokode-Befehl 2 ist das XO-Bit des Registers 108 wahr,
wenn der Befehl ein String-Lade-Befehl ist; in diesem
Falle wird ein kurzer bedingter Sprung zum Mikrokode-
Befehl 6 durchgeführt. Der Mikrokode-Befehl 6 lädt den
Inhalt des OPR-Registers 46, das jetzt den Inhalt des
zugegriffenen Adressenplatzes enthält, und überträgt diesen
zum M-Register 104. In der letzten Hälfte des Mikrokode-Befehls
6 gibt es einen bedingten kurzen Sprung zurück zum
nullten Befehl, sofern ein Wiederholungspräfix vorhanden
ist, anderenfalls wird das RNI-Signal erzeugt.
Wenn der Befehl ein String-Übertragungs-Befehl ist, so wird
der bedingte Sprung vom Mikrokode-Befehl 2 durchlaufen,
und der Inhalt des IK-Registers 105 wird in das indirekte
Register IND 44 geladen. Eine Speicher-Schreiboperation
belegt die letzte Hälfte des Mikrokode-Befehls 3, wobei
wiederum der 2-Bit-Adressenkorrekturfaktor verwendet wird,
der das w oder Wort/Byte-Eingabesignal aus dem Befehl zusammen
mit dem PSW-Richtungskennzeichen zur Durchführung
einer nachträglichen Korrektur in IND durch die richtige
Erhöhung oder Verminderung benutzt. Nach der Ausführung
der Erhöhung oder Verminderung wird das Ergebnis aus dem
IND-Register 44 in das IK-Register 105 übertragen, und es
wird bei Vorhandensein eines Wiederholungspräfix ein bedingter
Sprung durchgeführt, anderenfalls wird das RNI-Signal
erzeugt.
In ähnlicher Weise zeigt Tabelle 10, daß String-Vergleichen
CMPS und String-Suchen SRCHS dieselben Mikro-Programme
teilen.
Wie vorher ist der nullte Befehl ein von einem Wiederholungspräfix
abhängiger langer Sprung. Der Mikrokode-
Befehl 1 überträgt den Inhalt des M-Registers 104 zum
Zwischenregister A, gefolgt von einem bedingten Sprung
zum Mikrokode-Befehl 5, wenn das XO-Bit des Registers
108 wahr ist, wodurch angezeigt wird, daß der Befehl ein
String-Such-Befehl ist. Der Inhalt des IK-Registers 105
wird dann in das IND-Register 44 geladen, gefolgt von
einer Speicher-Leseoperation, bei der das w-Bit und der
Richtungsbit-Adressenkorrekturfaktor gemäß obiger Beschreibung
verwendet wird. Der Inhalt der zugegriffenen
Speicherzelle wird jetzt im OPR-Register 46 gespeichert
und zum Zwischenregister B übertragen. ALU 134 wird im
Mikrokode-Befehl 6 derart vorkonditioniert, daß der Inhalt
des Zwischenregisters B vom Inhalt des Zwischenregisters
A subtrahiert wird. Die Operation wird im
Mikrokode-Befehl 7 ausgeführt, wobei das Übertragskennzeichen
auf den neuesten Stand gebracht wird. Im
Mikrokode-Befehl 8 wird der Inhalt des IND-Registers 44,
der jetzt die nachkorrigierte Adresse enthält, zum IK-
Register 105 rückübertragen. Beim Mikrokode-Befehl 9 wird
ein kurzer Sprung konditioniert, wenn das logische
Produkt des Null-Kennzeichens auf Null voreingestellt
und das Wiederholungspräfix vorhanden ist. In diesem Falle
wird die Folge durch Rückkehr auf den Mikrokode-Befehl
0 wiederholt, anderenfalls wird das RNI-Signal erzeugt.
Daher wird der Inhalt des adressierten Speicherplatzes mit
der Menge verglichen, die in das vom M-Register 104
bezeichnet Register - im Falle eines String-Such-Befehls
der Akkumulator 90 - geladen ist.
In ähnlicher Weise durchläuft der String-Vergleichen den
bedingten kurzen Sprung beim Mikrokode-Befehl 1 und lädt
den Inhalt des IJ-Registers 103 in das IND-Register 44.
Ein Speicher-Lesezyklus wird danach unter Verwendung des
RD-Verschieberegisters und des 2-Bit-w- und Richtungsbit-
Kodes für einen Nachkorrekturadressenfaktor ausgeführt.
Die nachkorrigierte Adresse wird dann dem IND-Register 44
beim Mikrokode-Befehl 3 entnommen und wieder in das IJ-
Register 103 geladen. Der Inhalt des zugegriffenen Speicherplatzes
wird dann in das Zwischenregister A beim Mikrokode-Befehl
4 geladen. Der Inhalt des IJK-Registers 105 wird in
das IND-Register 44 geladen, wobei ein anderer Speicher-
Lesezyklus das RA-Verschieberegister und das w- und Richtungsbit
zur Nachadressenkorrektur benutzt, mit dem Ergebnis, daß
der Inhalt der zugegriffenen Speicherzelle in das OPR-
Register 46 geladen wird. Beim Mikrokode-Befehl 6 wird dann
der Inhalt des OPR-Registers 46 in das Zwischenregister B
übertragen und die ALU 134 derart vorkonditioniert, daß
sie den Inhalt des Zwischenregisters B von demjenigen des
Zwischenregisters A subtrahiert. Die Operation wird beim
Mikrokode-Befehl 7 ausgeführt, wobei die Kennzeichen, einschließlich
des Null-Kennzeichens gesetzt werden. Daher
wird die Differenz zwischen den Inhalten des vom IK-Register
105 bezeichneten Speicherplatzes und des IJ-Registers 103
in die ALU 134 gesetzt. Wenn die Differenz Null ist, so ist
das Null-Kennzeichen auf eine binäre Null voreingestellt.
Der Mikrokode-Befehl 8 speichert die nachkorrigierte Adresse
im IND-Register 44 wieder in das IK-Register 105, gefolgt
von einem bedingten kurzen Sprung beim Mikrokode-Befehl
9, wenn sowohl ein Wiederholungspräfix als auch ein Vergleich
ungleich Null vorlagen, anderenfalls wird das RNI-
Signal beim Mikrokode-Befehl 10 erzeugt.
Schließlich stellt die Tabelle 11 den String-Speicher-Befehl
STS dar, der aus einem 4-Mikroprogramm besteht.
In dem nullten Befehl wird der Inhalt des IK-Registers 105
zum IND-Register 44 übertragen, gefolgt von einem langen
Sprung, der bei Vorhandensein eines Wiederholungspräfix
konditioniert wird. Beim Mikrokode-Befehl 1 wird der Inhalt
des vom M-Register 104 bezeichneten Registers, das
im beschriebenen Ausführungsbeispiel der Akkumulator 90 ist,
zum OPR-Register 46 übertragen. Ein Speicher-Schreibzyklus
wird sodann unter Verwendung des Verschieberegisters RA und
des Richtungs- und w-Bit-Nachadressenkorrekturfaktors ausgeführt.
Im Falle eines Speicher-Schreibzyklus wird die
Adresse in das IND-Register 44 eingesetzt, wobei die zu
schreibenden Daten während oder vor dem Speicherschreibwort
im OPR-Register 46 befindlich sind. Daher werden die
Daten aus dem Akkumulator 90 in den vom IK-Register 105
bezeichneten Speicherplatz geschrieben. Die nachkorrigierte
Adresse im IND-Register 44 wird sodann zum IK-Register 105
im Mikrokode-Befehl 2 zurückübertragen, gefolgt von einem
bedingten kurzen Sprung zum nullten Befehl, wenn ein Wiederholungspräfix
gefunden wird, anderenfalls wird das RNI-Signal
erzeugt.
Das Wiederholungspräfix RPTS enthält ein Mikroprogramm, das
während jedes der String-Verleich-Befehle als bedingtes
Unterprogramm verwendet wird. Das Wiederholungs-Mikrokode-
Unterprogramm ist in Tabelle 12 zeigt.
Beginnend mit dem Mikrokode-Befehl 6 wird der Inhalt des
BC-Registers 84 und 92 in das Zwischenregister B geladen,
gefolgt von einem bedingten Unterbrechungssprung, wenn ein
externes Interrust empfangen wurde. Der bedingte
Sprung zum Mikrokode-Befehl 12, bei dem es sich um einen
Verwaltungsbefehl handelt, bewirkt, daß die obere Steuereinheit
12 die Befehlsabrufe unterbricht, wodurch der Programmzähler
angehalten wird. Der nächste Verwaltungsbefehl
bewirkt, daß die obere Steuereinheit 12 einen Realprogrammzähler
neu berechnet, indem die Zahl der Bytes
in der Warteschlange von dem existierenden Programmzähler
subtrahiert wird und wieder zurück in den Programmzähler
geladen wird. Dies wird mit Hilfe einer bekannten
Logik-hardware durchgeführt. Der wahre Inhalt des
Programmzählers wird dann zum Zwischenregister B übertragen
und die ALU 134 zum Verringern des Inhalts des
Zwischenregisters B um 2 entsprechend der Wortlänge vorkonditioniert.
Der Inhalt des TMP B wird im Mikrokode-
Befehl 15 verringert und in den Programmzähler wieder eingesetzt.
Der Verwaltungsbefehl FLUSH startet die Warteschlange
erneut und löscht alle gerade in der Warteschlage befindlichen
Bytes, startet neu vom Inhalt des laufenden Programmzählers
und erzeugt das RNI-Signal.
Wenn jedoch kein Unterbrechungssignal vorhanden ist, wird
die ALU 134 derart konditioniert, daß sie den Inhalt des
Zwischenregisters B beim Mikrokode-Befehl 7 durchläuft
und dann den Inhalt des Zwischenregisters B beim Mikrokode-
Befehl 8 verringert. Ein kurzer bedingter Sprung beim
Mikrokode-Befehl 9 erscheint beim Mikrokode-Befehl 10,
wenn der Inhalt Null ist, andernfalls wird der verringerte
Zählwert wieder in das BC-Register 84 und 92 geladen, gefolgt
von einer Rückkehr zum Aufrufpunkt. Wenn der Inhalt
Null ist, wird der Mikrokode-Befehl 11 durch Erzeugung des
RNI-Signals ausgeführt.
Zu beachten ist, daß die direkten Befehle in der oben beschriebenen
Weise ein l-Bit enthalten. Das l-Bit zeigt an, ob
beim Verarbeiten einer 16-Bit-Menge die direkten Daten 8 oder
16 Bits breit sind. Die Speicher-Lesebefehle, die ein l-Bit verwenden,
enthalten als einen Mikrokode-Befehl das folgende Befehlspaar
als die ersten beiden Befehle des Mikroprogramms.
Ein Byte wird aus der Warteschlange genommen und an die Stelle
der am geringsten bewerteten Bits des Zwischenregisters B 142 eingegeben.
ALU 134 erweitert dann in herkömmlicher Weise automatisch
das Vorzeichen-Bit des am niedrigsten bewerteten Bytes
auf die 8 am höchsten bewerteten Bits des 16-Bit-Registers.
Ein bedingter kurzer Sprung wird dann zu den restlichen Mikrokode-
Befehlen des Mikroprogramms ausgeführt, wenn das l-Bit gesetzt
worden ist, d. h. L8. Anderenfalls wird das nächste Byte aus
der Warteschlange in die am höchsten bewerteten Bits des Zwischenregisters
B geladen und das Mikrokode-Befehls-Programm fortgesetzt.
Daher wird bei einem 16-Bit-Befehl, d. h. w=1, ein
Signal L8 im ROM 116 dekodiert und in einer UND-Funktion mit
dem l-Bit logisch verknüpft. Das Signal wird an einem Mikrokode-
Befehl geprüft, um entweder ein zweites Byte zu laden
oder das Vorzeichen eines Direktdaten-Einzelbytes in den direkten
Befehlen zu erweitern.
Vorstehend wurde ein Zentralprozessor beschrieben, der in gleicher
Weise zur Verarbeitung von 8- oder 16-Bit-Mengen geeignet
ist, ohne dabei die Hardware bzw. den Maschinenaufwand zu duplizieren
oder zu wiederholen. Außerdem kann der Prozessor
einen erweiterten Speicherraum adressieren, der den durch die
maximalen Wortlängen der Register des Mikroprozessors definierten
adressierbaren Raum übersteigt. Der Datendurchlauf
ist dadurch wesentlich erhöht, daß eine Befehlsüberlappung
in Kombination mit der Warteschlange vorgesehen ist, wodurch
der Mikroprozessor die oberen und unteren Steuereinheiten
asynchron betreiben kann. Die Organisation
ermöglicht außerdem einige Klassen von besonderen Befehlen,
mit denen komplexe Funktionen bei minimalem Programmaufwand bzw.
minimaler Mikrokode-Programmierung und ohne Beeinträchtigung der
Vielseitigkeit ausgeführt werden können.
Claims (3)
1. Prozessor (10) zur Verarbeitung digitaler Informationen,
wobei die digitalen Informationen Befehle mit Direktdaten und
einem w-Bit umfassen, welches angibt, ob eine Verarbeitungsoperation
des Prozessors in Byte- oder Wortlänge durchgeführt
werden soll,
dadurch gekennzeichnet,
daß die Befehle aufweisen:
dadurch gekennzeichnet,
daß die Befehle aufweisen:
- - ein Vorzeichen-Bit,
- - Direktdaten von der Länge eines Bytes oder eines Wortes,
- - ein l-Bit, das die Länge der Direktdaten angibt,
und daß eine Einrichtung (in 134) vorgesehen ist, die dann,
wenn das l-Bit Direktdaten in Bytelänge und das w-Bit eine Verarbeitungsbreite
in Wortlänge angibt, eine Erweiterung der Direktdaten
auf Wortlänge vornimmt durch Kopieren des Vorzeichen-
Bits in alle höherwertigen Bitpositionen des Wortes, so daß
Verarbeitungsoperationen unabhängig von der Länge der Direktdaten
ausführbar sind.
2. Verfahren zur Datenverarbeitung unter Verwendung einer
Datenverarbeitungseinrichtung mit einem Speicher für digitale
Informationen und einem Prozessor (10) zum Verarbeiten digitaler
Informationen,
dadurch gekennzeichnet,
daß in den digitalen Informationen ein Befehl mit einem Vorzeichen-Bit, einem l-Bit und einem w-Bit Direktdaten mit der Länge eines Bytes oder eines Wortes und mit Bits geringerer und höherer Ordnung vorgesehen werden,
daß in dem Prozessor (10) durch Decodieren des w-Bits in dem Befehl bestimmt wird, ob eine Operation an den Direktdaten Wort- oder Byte-Länge hat,
daß durch Decodieren des l-Bits in dem Befehl bestimmt wird, ob die Direktdaten Wort- oder Byte-Länge haben, und
daß die Direktdaten durch Kopieren des Wertes des Vorzeichen- Bits in sämtliche Bitspositionen höherer Ordnung verlängert werden, wenn die Operation Wort-Länge und die Direktdaten eine Byte-Länge haben,
wobei Operationen an den Daten unabhängig von der Länge der Direktdaten auf identischer Hardware ausgeführt werden können.
dadurch gekennzeichnet,
daß in den digitalen Informationen ein Befehl mit einem Vorzeichen-Bit, einem l-Bit und einem w-Bit Direktdaten mit der Länge eines Bytes oder eines Wortes und mit Bits geringerer und höherer Ordnung vorgesehen werden,
daß in dem Prozessor (10) durch Decodieren des w-Bits in dem Befehl bestimmt wird, ob eine Operation an den Direktdaten Wort- oder Byte-Länge hat,
daß durch Decodieren des l-Bits in dem Befehl bestimmt wird, ob die Direktdaten Wort- oder Byte-Länge haben, und
daß die Direktdaten durch Kopieren des Wertes des Vorzeichen- Bits in sämtliche Bitspositionen höherer Ordnung verlängert werden, wenn die Operation Wort-Länge und die Direktdaten eine Byte-Länge haben,
wobei Operationen an den Daten unabhängig von der Länge der Direktdaten auf identischer Hardware ausgeführt werden können.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US05/873,777 US4363091A (en) | 1978-01-31 | 1978-01-31 | Extended address, single and multiple bit microprocessor |
Publications (2)
Publication Number | Publication Date |
---|---|
DE2903349A1 DE2903349A1 (de) | 1979-08-09 |
DE2903349C2 true DE2903349C2 (de) | 1995-08-31 |
Family
ID=25362291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE2903349A Expired - Fee Related DE2903349C2 (de) | 1978-01-31 | 1979-01-29 | Prozessor und Verfahren zur Datenverarbeitung |
Country Status (4)
Country | Link |
---|---|
US (2) | US4363091A (de) |
DE (1) | DE2903349C2 (de) |
GB (2) | GB2013380B (de) |
HK (1) | HK14585A (de) |
Families Citing this family (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4521858A (en) * | 1980-05-20 | 1985-06-04 | Technology Marketing, Inc. | Flexible addressing and sequencing system for operand memory and control store using dedicated micro-address registers loaded solely from alu |
EP0040703B1 (de) * | 1980-05-23 | 1986-07-16 | International Business Machines Corporation | Verbesserung eines Datenverarbeitungsapparates vom Typ System/370 |
GB2077009B (en) * | 1980-05-30 | 1985-04-17 | Fairchild Camera Instr Co | Microprocessor |
US4577282A (en) | 1982-02-22 | 1986-03-18 | Texas Instruments Incorporated | Microcomputer system for digital signal processing |
US4531200A (en) * | 1982-12-02 | 1985-07-23 | International Business Machines Corporation | Indexed-indirect addressing using prefix codes |
JPS59174948A (ja) * | 1983-03-25 | 1984-10-03 | Toshiba Corp | 情報処理装置 |
US4574348A (en) * | 1983-06-01 | 1986-03-04 | The Boeing Company | High speed digital signal processor architecture |
US4739475A (en) * | 1983-09-20 | 1988-04-19 | Mensch Jr William D | Topography for sixteen bit CMOS microprocessor with eight bit emulation and abort capability |
US5175816A (en) * | 1984-10-05 | 1992-12-29 | Hitachi, Ltd. | Method and apparatus for bit operational process |
US5265204A (en) * | 1984-10-05 | 1993-11-23 | Hitachi, Ltd. | Method and apparatus for bit operational process |
US6552730B1 (en) | 1984-10-05 | 2003-04-22 | Hitachi, Ltd. | Method and apparatus for bit operational process |
JPH0776917B2 (ja) * | 1984-12-29 | 1995-08-16 | ソニー株式会社 | マイクロコンピユ−タ |
JPS621047A (ja) * | 1985-02-14 | 1987-01-07 | Nec Corp | メモリ回路を有する半導体装置 |
IT1183808B (it) * | 1985-04-30 | 1987-10-22 | Olivetti & Co Spa | Circuito elettronico per collegare un microprocessore ad una memoria ad elevata capacita |
US4972338A (en) * | 1985-06-13 | 1990-11-20 | Intel Corporation | Memory management for microprocessor system |
JPH0827716B2 (ja) * | 1985-10-25 | 1996-03-21 | 株式会社日立製作所 | データ処理装置及びデータ処理方法 |
IT1184013B (it) * | 1985-12-13 | 1987-10-22 | Elsag | Memoria ad elevata capacita accessibile a diverse agenti |
US4766531A (en) * | 1986-04-14 | 1988-08-23 | Motorola, Inc. | Method and apparatus for generating the next microaddress for a micromachine |
JPS63170736A (ja) * | 1987-01-09 | 1988-07-14 | Toshiba Corp | マイクロプロセツサ |
US4849875A (en) * | 1987-03-03 | 1989-07-18 | Tandon Corporation | Computer address modification system with optional DMA paging |
US4891752A (en) * | 1987-03-03 | 1990-01-02 | Tandon Corporation | Multimode expanded memory space addressing system using independently generated DMA channel selection and DMA page address signals |
US5233695A (en) * | 1987-03-31 | 1993-08-03 | Kabushiki Kaisha Toshiba | Microprocessor with a reduced size microprogram |
US4926322A (en) * | 1987-08-03 | 1990-05-15 | Compag Computer Corporation | Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management |
US5101339A (en) * | 1987-08-10 | 1992-03-31 | Tandon Corporation | Computer address modification system using writable mapping and page stores |
JPS6473430A (en) * | 1987-09-14 | 1989-03-17 | Hudson Soft Co Ltd | Memory access control device |
US5261113A (en) * | 1988-01-25 | 1993-11-09 | Digital Equipment Corporation | Apparatus and method for single operand register array for vector and scalar data processing operations |
US5155818A (en) * | 1988-09-28 | 1992-10-13 | Data General Corporation | Unconditional wide branch instruction acceleration |
US5653238A (en) * | 1988-12-06 | 1997-08-05 | Exergen Corporation | Radiation detector probe |
JP3063006B2 (ja) * | 1989-02-08 | 2000-07-12 | インテル・コーポレーション | マイクロプログラムされるコンピュータ装置及びマイクロコードシーケンスメモリをアドレツシングする方法 |
GB2230116B (en) * | 1989-04-07 | 1993-02-17 | Intel Corp | An improvement for pipelined decoding of instructions in a pipelined processor |
US5293592A (en) * | 1989-04-07 | 1994-03-08 | Intel Corporatino | Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline |
JP2993975B2 (ja) * | 1989-08-23 | 1999-12-27 | 株式会社リコー | 中央演算処理装置 |
JPH0398145A (ja) * | 1989-09-11 | 1991-04-23 | Hitachi Ltd | マイクロプロセッサ |
FR2652926B1 (fr) * | 1989-10-06 | 1994-07-08 | Bull Sa | Procede d'exploitation de la memoire dans un systeme informatique du type a adressage virtuel et dispositif pour la mise en óoeuvre dudit procede. |
US5278974A (en) * | 1989-12-04 | 1994-01-11 | Digital Equipment Corporation | Method and apparatus for the dynamic adjustment of data transfer timing to equalize the bandwidths of two buses in a computer system having different bandwidths |
JP2658473B2 (ja) * | 1990-02-26 | 1997-09-30 | 日本電気株式会社 | マイクロコンピュータ |
US5706460A (en) * | 1991-03-19 | 1998-01-06 | The United States Of America As Represented By The Secretary Of The Navy | Variable architecture computer with vector parallel processor and using instructions with variable length fields |
JP3181307B2 (ja) * | 1991-04-25 | 2001-07-03 | 株式会社東芝 | 命令処理装置 |
JPH07500437A (ja) * | 1991-10-24 | 1995-01-12 | インテル コーポレイシヨン | データ処理システム |
US5361370A (en) * | 1991-10-24 | 1994-11-01 | Intel Corporation | Single-instruction multiple-data processor having dual-ported local memory architecture for simultaneous data transmission on local memory ports and global port |
WO1993019416A1 (en) * | 1992-03-25 | 1993-09-30 | Zilog, Inc. | Fast instruction decoding in a pipeline processor |
EP0577875A1 (de) * | 1992-07-09 | 1994-01-12 | Siemens Nixdorf Informationssysteme Aktiengesellschaft | Befehlsverarbeitungseinheit für nach dem Fliessbandprinzip arbeitende Datenverarbeitungsanlagen |
CA2100540A1 (en) * | 1992-10-19 | 1994-04-20 | Jonel George | System and method for performing resource reconfiguration in a computer system |
GB9226463D0 (en) * | 1992-12-18 | 1993-02-10 | Univ London | Integrated circuits |
US5408674A (en) * | 1992-12-23 | 1995-04-18 | Amdahl Corporation | System for checking the validity of two byte operation code by mapping two byte operation codes into control memory in order to reduce memory size |
US5680632A (en) * | 1992-12-24 | 1997-10-21 | Motorola, Inc. | Method for providing an extensible register in the first and second data processing systems |
US6058473A (en) * | 1993-11-30 | 2000-05-02 | Texas Instruments Incorporated | Memory store from a register pair conditional upon a selected status bit |
TW234175B (en) * | 1994-02-08 | 1994-11-11 | Meridian Semiconductor Inc | Randomly-accessible instruction buffer for microprocessor |
US6204796B1 (en) | 1994-07-01 | 2001-03-20 | Gemstar Development Corporation | Apparatus and methods for generating codes for controlling appliances from a remote controller |
TW267222B (en) * | 1994-10-05 | 1996-01-01 | Ibm | Improved method and system of addressing |
US5742282A (en) * | 1995-02-28 | 1998-04-21 | Eastman Kodak Company | 16 bit address access using 8 bit registers |
US5867701A (en) * | 1995-06-12 | 1999-02-02 | Intel Corporation | System for inserting a supplemental micro-operation flow into a macroinstruction-generated micro-operation flow |
US5774711A (en) * | 1996-03-29 | 1998-06-30 | Integrated Device Technology, Inc. | Apparatus and method for processing exceptions during execution of string instructions |
US5752015A (en) * | 1996-03-29 | 1998-05-12 | Integrated Device Technology, Inc. | Method and apparatus for repetitive execution of string instructions without branch or loop microinstructions |
US5742781A (en) * | 1996-08-09 | 1998-04-21 | Hitachi America, Ltd. | Decoded instruction buffer apparatus and method for reducing power consumption in a digital signal processor |
GB2317467B (en) * | 1996-09-23 | 2000-11-01 | Advanced Risc Mach Ltd | Input operand control in data processing systems |
US5826074A (en) * | 1996-11-22 | 1998-10-20 | S3 Incorporated | Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register |
US5924117A (en) * | 1996-12-16 | 1999-07-13 | International Business Machines Corporation | Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto |
US5898865A (en) * | 1997-06-12 | 1999-04-27 | Advanced Micro Devices, Inc. | Apparatus and method for predicting an end of loop for string instructions |
US6243798B1 (en) * | 1997-10-28 | 2001-06-05 | Microchip Technology Incorporated | Computer system for allowing a two word jump instruction to be executed in the same number of cycles as a single word jump instruction |
US6105125A (en) * | 1997-11-12 | 2000-08-15 | National Semiconductor Corporation | High speed, scalable microcode based instruction decoder for processors using split microROM access, dynamic generic microinstructions, and microcode with predecoded instruction information |
JP2001067335A (ja) | 1999-06-23 | 2001-03-16 | Denso Corp | マイクロコンピュータ |
US7376814B1 (en) * | 1999-09-07 | 2008-05-20 | Nxp B.V. | Method for forming variable length instructions in a processing system |
US6614789B1 (en) * | 1999-12-29 | 2003-09-02 | Nasser Yazdani | Method of and apparatus for matching strings of different lengths |
US7334116B2 (en) * | 2004-10-06 | 2008-02-19 | Sony Computer Entertainment Inc. | Bit manipulation on data in a bitstream that is stored in a memory having an address boundary length |
US8806183B1 (en) | 2006-02-01 | 2014-08-12 | Ixys Ch Gmbh | Blank bit and processor instructions employing the blank bit |
JP5357475B2 (ja) * | 2008-09-09 | 2013-12-04 | ルネサスエレクトロニクス株式会社 | データプロセッサ |
CN102262595B (zh) * | 2011-07-29 | 2014-04-02 | 航天恒星科技有限公司 | 一种微处理器扩展寻址方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3657705A (en) * | 1969-11-12 | 1972-04-18 | Honeywell Inc | Instruction translation control with extended address prefix decoding |
US3793631A (en) * | 1972-09-22 | 1974-02-19 | Westinghouse Electric Corp | Digital computer apparatus operative with jump instructions |
US3818460A (en) * | 1972-12-29 | 1974-06-18 | Honeywell Inf Systems | Extended main memory addressing apparatus |
US3786436A (en) * | 1973-03-14 | 1974-01-15 | Gte Automatic Electric Lab Inc | Memory expansion arrangement in a central processor |
FR122199A (de) * | 1973-12-17 | |||
US4050058A (en) * | 1973-12-26 | 1977-09-20 | Xerox Corporation | Microprocessor with parallel operation |
US3949378A (en) * | 1974-12-09 | 1976-04-06 | The United States Of America As Represented By The Secretary Of The Navy | Computer memory addressing employing base and index registers |
JPS5171648A (de) * | 1974-12-18 | 1976-06-21 | Panafacom Ltd | |
US3976976A (en) * | 1975-04-04 | 1976-08-24 | The United States Of America As Represented By The Secretary Of The Navy | Method and means to access and extended memory unit |
US4042911A (en) * | 1976-04-30 | 1977-08-16 | International Business Machines Corporation | Outer and asynchronous storage extension system |
US4092715A (en) * | 1976-09-22 | 1978-05-30 | Honeywell Information Systems Inc. | Input-output unit having extended addressing capability |
US4079455A (en) * | 1976-12-13 | 1978-03-14 | Rca Corporation | Microprocessor architecture |
US4181934A (en) * | 1976-12-27 | 1980-01-01 | International Business Machines Corporation | Microprocessor architecture with integrated interrupts and cycle steals prioritized channel |
-
1978
- 1978-01-31 US US05/873,777 patent/US4363091A/en not_active Expired - Lifetime
- 1978-11-17 GB GB7845095A patent/GB2013380B/en not_active Expired
- 1978-11-17 GB GB8030534A patent/GB2059124B/en not_active Expired
-
1979
- 1979-01-29 DE DE2903349A patent/DE2903349C2/de not_active Expired - Fee Related
-
1981
- 1981-11-18 US US06/322,471 patent/US4449184A/en not_active Expired - Lifetime
-
1985
- 1985-02-28 HK HK145/85A patent/HK14585A/xx unknown
Also Published As
Publication number | Publication date |
---|---|
DE2903349A1 (de) | 1979-08-09 |
GB2059124A (en) | 1981-04-15 |
GB2013380B (en) | 1982-04-21 |
HK14585A (en) | 1985-03-08 |
GB2059124B (en) | 1983-02-09 |
US4449184A (en) | 1984-05-15 |
US4363091A (en) | 1982-12-07 |
GB2013380A (en) | 1979-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2903349C2 (de) | Prozessor und Verfahren zur Datenverarbeitung | |
DE69232232T2 (de) | Mikrocomputer | |
DE69833008T2 (de) | Prozessor mit instruktionskodierung mittels eines schablonenfeldes | |
DE69131637T2 (de) | Registerhaltige Datenbearbeitung in einem Prozessor mit reduziertem Befehlssatz | |
DE69130379T2 (de) | Datenvorausladebefehl in einem Prozessor mit reduziertem Befehlssatz | |
DE69308548T2 (de) | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. | |
DE3650602T2 (de) | Datenverarbeitungssystem | |
DE68927855T2 (de) | Verfahren und Datenverarbeitungseinheit zur Vorverarbeitung von implizierten Spezifizierern in einem Pipeline-Prozessor | |
DE69707486T2 (de) | Architektur eines integrierten bausteins zur digitalen signalverarbeitung | |
DE3685913T2 (de) | Vektorenverarbeitung. | |
DE2846495C2 (de) | Zentraleinheit | |
DE3688824T2 (de) | Datenverarbeitungssystem. | |
DE69129881T2 (de) | Verzweigung in einem Pipeline-Prozessor | |
DE3851746T2 (de) | Sprungvorhersage. | |
DE69032174T2 (de) | Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen | |
DE69729974T2 (de) | Datenverarbeitungsschaltung, Mikrocomputer und elektronische Einrichtung | |
DE3424962C2 (de) | ||
DE2230102A1 (de) | Rechenwerk fuer variable wortlaengen | |
DE1246289B (de) | Bedingungsregister fuer eine programmgesteuerte Datenverarbeitungsanlage | |
DE2411963B2 (de) | Datenverarbeitungsanlage | |
DE2847934A1 (de) | Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher | |
CH650600A5 (de) | Zentralprozessoreinheit einer datenverarbeitungsanlage mit operationscode-erweiterungsregister. | |
DE69133571T2 (de) | Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen | |
DE3741850A1 (de) | Ausfuehrungseinheit fuer einen i/o-prozessor | |
DE3121742C2 (de) | Mikroprogramm-Steuereinrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8125 | Change of the main classification |
Ipc: G06F 9/22 |
|
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |