DE2910839A1 - Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktion - Google Patents
Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktionInfo
- Publication number
- DE2910839A1 DE2910839A1 DE19792910839 DE2910839A DE2910839A1 DE 2910839 A1 DE2910839 A1 DE 2910839A1 DE 19792910839 DE19792910839 DE 19792910839 DE 2910839 A DE2910839 A DE 2910839A DE 2910839 A1 DE2910839 A1 DE 2910839A1
- Authority
- DE
- Germany
- Prior art keywords
- register
- instruction
- branch
- value
- zero
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000012546 transfer Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 2
- 238000000034 method Methods 0.000 claims 6
- 238000010586 diagram Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 101100091501 Mus musculus Ros1 gene Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Description
Anmelderin: International Business Machines
Corporation, Armonk, N.Y. 10504
jo/se
inrichtung zur Ausführung einer speziellen Verzweigungsstruktion
Die Erfindung betrifft eine Einrichtung zur Ausführung einer speziellen Verzweigungsinstruktion nach dem Oberbegriff des
Anspruchs 1.
Mikrorechner gewinnen immer mehr an Bedeutung für die Steuerung und ihren Einsatz in speziellen Anwendungen und Geräten.
Ein Grund für diese Zunahme ist in der Entwicklung von Mikrorechnern zu sehen, bei denen auf einem Chip sowohl der Mikroprozessor,
als auch die Speicher (Hauptspeicher für das Anwendungsprogramm und Steuerspeicher für den Mikrocode), als
auch die Steuerungen und Adapter für anschließbar.e Ein-/Ausgabegeräte untergebracht sind. Da sich insbesondere der Benutzerprogrammspeicher
auf dem gleichen Halbleiterchip befindet wie der Mikroprozessor selbst, ergibt sich eine sehr
wirkungsvolle Anwendung der Instruktionswörter.
Die direkte Adressierung eines Mikrorechners macht es erforderlich,
daß jede Verzweigungsinstuktion die gesamte Adresse der nächsten auszuführenden Instruktion enthält,
wodurch sich aber für einen großen Adressenraum große Wortlängen ergeben. Für eine bedingte Verzweigung ist so eine
weiwort-Instruktion erforderlich, wohingegen für nicht bedingte Verzweigungen Einwort-Instruktionen verwendet werden
können.
Wenn in einer Programmschleife gearbeitet werden soll, muß. die Instruktion ein Indexregister aufsetzen und jedesmal am
nde der Schleife eine bedingte Verzweigung ausführen. Diese
SA 977 061
909840/0643
2910833
Verzweigung testet den Inhalt des Indexregisters und führt eine bedingte Verzweigung zurück zum Anfang der Schleife durch.
Bei den meisten Anwendungen tritt eine Zweiwort-Verzweigungsinstruktion beträchtlich oft im Instruktionspeicher auf. Dadurch
entsteht der Nachteil, daß für Verzweigungsanwendungen der genannten Art erhebliche Programmspeicherkapazität zur
Verfügung gestellt werden muß.
Es ist daher die Aufgabe der vorliegenden Erfindung, eine Lösung für die Handhabung von Programmschleifen anzugeben, die
weniger Speicherkapazität erfordert. Weniger Speicherkapazität aber bedeutet die Verwendung kleinerer und somit preislich
günstigerer Speicher.
Gelöst wird diese Aufgabe der Erfindung durch die im Hauptanspruch
angegebenen Merkmale. Vorteilhafte Ausgestaltungen und Weiterbildungen des Gegenstandes der Erfindung sind den
Unteransprüchen zu entnehmen.
Durch die Erfindung wird also der Vorteil erzielt, daß bei der Durchführung von Programmschleifen, insbesondere bei einem
Mikrorechner der genannten Art, durch Verwendung nur ein Wort langer nicht bedingter Verzweigungsinstruktionen anstelle
von zwei Wörter langen bedingten Verzweigungsinstruktionen beträchtlicher Speicherplatz eingespart wird. Im folgenden wird
ein Ausführungsbeispiel der Erfindung anhand der beiliegenden Figuren näher beschrieben.
Es zeigen:
Fig. 1 ein Blockschaltbild eines Einchip-Mikrorechners,
in dem die Verzweigungssteuerung nach der vor-' liegenden Erfindung eingebaut ist,
Fig. 2 eine Tabelle, welche die Instruktionsbit-Vert
teilung des Instruktionssatzes für den Einchip-
SA 977 061
909840/08*:?
2310839
- 6 mikrorechner nach Fig. 1 angibt,
Fig. 3 eine schematische Darstellung des Instruktionsformats von kurzen Instruktionen,
Pig. 4 eine schematische Darstellung des Instruktionsformats langer Instruktionen,
Fig. 5 eine Darstellung des allgemeinen Formats eines
Operandenfeldes für Instruktionen, die einen Zugriff zum Lese-/Schreibspeicher (RAS) erfordern,
Fig. 6 eine Darstellung des Adressenformats für den Lese-/Schreibspeicher,
ig. 7 eine Darstellung des Formats einer besonderen nicht bedingten Verzweigungsinstruktion (ÜBR),
Fig. 8 ein Zeitdiagramm, das eine Übersicht über die
relative Zeitsteuerung der Komponenten des Mikro rechners gibt,
Fig. 9 ein Flußdiagramm, das die Schritte aufzeigt,
die zur Ausführung einer speziellen nicht beding ten Verzweigungsinstruktion erforderlich sind unä
ig. 10 ein Blockschaltbild des Operationsdecodierers und der Operationsausführungseinheit, die für
die Ausführung einer Verzweigungsinstruktion erforderlich sind.
er Verzweigungsmechanismus der vorliegenden Erfindung ist für eine Verwendung in solchen Rechnern geeignet, die mit einem
!gespeicherten Programm betrieben werden, in dem Verzweigungsoperationen auszuführen sind. Als Beispiel eines Rechners ist
SA 977 061
909840/0643
2810839
im vorliegenden Fall der in Fig. 1 schematisch dargestellte Einschip-Mikrorechner verwendet worden.
3er Mikrorechner wird zusammen mit einem Zeitsteuerchip und
einem Verbraucher verwendet, der im vorliegenden Beispiel eine Sommunikationsschleife ist. Einzelheiten des Zusammenspiels
zwischen dem Mikrorechner und der Kommunikationsschleife werden
im folgenden nicht erörtert, da sie für das Verständnis der Erfindung nicht notwendig sind. Über die Eingangssammelleitung
42 werden mehrere Signale herangeführt, einschließlich vier kommunikationsorientierter und sechs verbraucherbezogener Signale. Jedes Eingangssignal wird verriegelt und
dem Mikrorechner angeboten. Über die AusgangsSammelleitung
werden mehrere Signale abgegeben, einschließlich sieben kommunikationsorientierter
und neun verbraucherorientierter Signale. MIe Ausgangssignale werden verriegelt und dem externen System
angeboten. Das Blockdiagramm der Fig. 1 zeigt die wesentlichen Teile des als Ausführungsbeispiel verwendeten Mikrorechners.
Es ist zu sehen, daß der Mikrorechner über einen Festwertspeicher (ROS) 12 und einen Lese-/Schreibspeicher (RAS) 14
/erfügt. Der Festwertspeicher 12 enthält eine große Anzahl,
beispielsweise 1024 Instruktionswörter zu 12 Bits. Er dient
zur Speicherung des Programms, welches das System betreibt. Der Lese-/Schreibspeicher 14 enthält beispielsweise 96 lese-/schrei3-Eähige
Einbit-Speicherzellen, die in drei Seiten zu 32 Bits Drganisiert sind.
Oie generelle Taktsteuerung des Mikrorechners wird von einem
(nicht dargestellten) Taktsteuerchip ausgeübt. Die Taktsignale (vgl. Fig. 8) bestehen aus den Takt 2-Signalen und den Zeittaktsignalen
RCA für den Festwertspeicher 12 und RCB für den Lese-/Schreibspeicher 14. Das Takt 2-Signal dient zur Weiterschaltung
des Instruktionszählers. Während jedes Takt 2-Zyklus
rd eine Instruktion ausgeführt. Die Taktsignale RCA und RCB sind die Signale, die für einen kontinuierlichen Betrieb des
SA 977 061
9098A0/0643
2310839
·· 8 —
ese-ZSchreibspeichers 14 auf dem Chip erforderlich sind,
wohingegen die Signale ROS SEL und ROS REST die Signale darstellen,
die für den Betrieb des Festwertspeichers 12 auf dem tfikrorechnerchip benötigt werden. Der A-Taktgeber 16 befindet
sich auf dem Chip und erzeugt die A-Taktsignale. Alle Werte, d für eine Instruktionsausführung erforderlich sind, müssen bis
zur Rückflanke eines A-Taktsignals vorliegen. Der Α-Takt dient
zur Durchschaltung der Ergebnisse der laufenden Instruktion in die internen Register und Schieberegister. Die Festwertpeicher-Taktsignale
steuern die Adressierung der Programminstruktionen, die von der Adresse im Instruktionsadressenregister
(IAR) 18 spezifiziert sind. Diese Instruktion wird dann vom Festwertspeicher 12 in das Instruktionsregister 20 aus
gelesen. Der Operationscodeteil der Instruktion, der. in das Operationsregister (OP) 22 übertragen wird, wird zur Durchführung
der Operation decodiert (vgl. Fign. 3 und 4 bezüglich des Operationscodes). Das Operationsregister 22 enthält logische
Schaltkreise für die Decodierung eines Operationscodes, deren Ausgangssignale die Ausführung der Instruktion steuern.
Der Operationscode wird mit der Rückflanke des Α-Taktes decodiert,
so daß alle für die Ausführung der Instruktion bis zu diesem Zeitpunkt vorliegen müssen. Der Rest der Instruktion
ird in das Operandenregister 24 übertragen, wo dieser Teil der Instruktion gespeichert wird, über die Leitung 26 werden
Daten, gesteuert von den Ausgangssignalen des Operationsregisters 22 vom Register 24 zu dem Lese-/Schreibspeicher 14
und mehreren internen Registern übertragen, einschließlich eines ersten Indexregisters (XR1) 28, eines nicht bedingten
erzweigungsregisters (UBR) 30, eines zweiten Indexregisters
XR2) 32 und eines Bankregisters (BAK) 34. Das "x" in Fig. 1, lit dem verschiedene Leitungen gekennzeichnet sind, bedeuten
orschaltungen, die von den Steuerbits gesteuert werden, die
us dem Operationscode und/oder der Instruktionsausführung .bgeleitet werden.
SA 977 061
909840/0643
2310833
Das erste Indexregister 28 ist ein vier Bit langer, rückgecoppelter
Schieberegisterzähler einer geeigneten Ausführungs-Eorm. Er wird jedesmal weitergeschaltet, wenn eine nicht beding
be Verzweigungsinstruktionsoperation UBR mit diesem ersten Indexregister
28 ausgeführt wird. Das erste Indexregister wird nit den Festwertspeicherbits 8, 9, 10 und 11, die sich im
Operandenregister 24 befinden, geladen, wenn eine LRI-Operation
decodiert wird (vgl. fünfte Zeile von unten in der Tabelle in Pig. 2). Die lauter Nullen-Bedingung wird decodiert und als
Bedingung dafür benutzt, bei Verzweigungsinstruktionen nicht zu verzweigen.
Das UBR-Register 30 ist ein Einbit-Register, das in einer bestimmten Ausführung aus einer einzigen Verriegelungsschaltung
besteht. Dieses Register dient zur Modifizierung der Ausführung einer nicht bedingten Verzweigungsoperation, damit
diese für die Steuerung von Schleifen verwendet werden kann. Das UBR-Register verhindert, wenn es eingestellt ist, eine
nicht bedingte Verzweigung, wenn der Inhalt des XRI-Registers 28 Null ist.
Das zweite Indexregister 32, das in einer bestimmten Ausführungsform
aus einem Dreibit-Binärzähler besteht, wird jedesmal
weitergeschaltet, wenn eine Lese-ZSchreibspeicheradresse durch Indizierung und Inkrementierung (Bits 5 und 11) gebildet
wird. Das XR2-Register wird mit einer LRI-Operation mit dem Festwertspeicherbit 4=0 zurückgestellt. Die Ausgangssignale
dieses Registers dienen zur Bildung der Lese-/ Schreibspeicheradresse, wenn eine Indizierung spezifiziert
wird.
Der Datenpfad innerhalb des Mikrorechners umfaßt eine arithmetische
und logische Einheit (ALU) 36, deren Ausgang mit einem Akkumulator (ACU) 38 und mit einer übertragsverriege-
- lungsschaltung (C VERR) 40 verbunden ist. Die Daten aus dem
Lese-ZSchreibspeicher 14 können über die Eingangssammellei-
SA 977 061
909840/0813
2310839
- ίο -
tung 42 zu der arithmetischen und logischen Einheit 36, und
die Ausgangsdaten des Akkumulators 38 über die Ausgangssammelleitung 44 zu einem zugeordneten Ein-/Ausgabegerät
über die E/A-Geräte-Schnittstellenlogik 46 oder zu einem oder mehreren der anderen Ausgänge der Ausgangssammelleitung
44 übertragen werden.
Die Eingangssammelleitung 42 verfügt über logische Steuerschaltungen,
um die verschiedenen Signalquellen auf eine gemeinsame Leitung zu schalten. Die Eingangssammelleitung bedi
die selektive Durchschaltung von Daten von der Eingangssammelleitungslogik
oder von Daten aus dem Lese-/Schreibspeicher 14. Die Auswahl wird von dem Festwertspeicherbit 4 gebildet,
das eine binäre Null ist, wenn der Lese-/Schreibspeicher als Quelle dient und das binär Eins für Spezialzweckregister
oder andere Eingangsquellen ist. Die Decodierlogik für die Quellenbestimmung decodiert die Festwertspeicherbits 6 bis
11. Es ergeben sich dabei individuelle Leitungen für die Durchschaltung sowohl für Quellen, als auch für Verbraucher.
Die Eingangssammelleitung, die Ausgangsleitungen des Akkumulators 38 und die Ausgangsleitung der Übertragungsverriegelung
40 stellen die Dateneingänge für die arithmetische und logische Einheit 36 dar. Die Op-Codebits 0 bis 4 schalten
selektiv das entsprechende Ausgangssignal der arithmetischen und logischen Einheit über ein komplexes ODER-Tor auf den
Dateneingang des Akkumulators 38 und über die Ausgangsleitung der Übertragsverriegelungsschaltung 40 auf den Eingang der
Über tr agsverriegelungs schaltung 40, die wiederum eine der Ausgangssammelleitungs-Verriegelungsschaltungen ist. Diese
Logik bedient alle Quelloperationen.
Der verwendete Einchip-Mikrorechner ist eine Einadreßmaschine
mit einem Einbit-Akkumulator als der besagten Lokation des zweiten Operanden und des Resultatoperanden. Der In-
SA 977 061
9Q9940/GS&?
291083S
struktionssatz {vgl, Fig. 2) verfügt über vier verbindende .
(Operationen (AND, ORA, 0IA, EOR), zwei Übertragungsopera- tionen
{LDA, TA), eine Direktlaäeoperation (LRl), eine arithmetische
Operation (ADD) und drei Verzweigungsoperationen (UBR, LBR und EBR) sowie zwei Einstelloperationen (SET und
RST). Die bedingten Verzweigungsoperationen verzweigen bei Akkumulator 1,2 oder nicht bedingt. Die bedingten Verzweigungs
Instruktionen haben die Länge von zwei Festwertspeicherwörtern (vgl. Fig. 4)r während alle übrigen Instruktionen die Länge
eines Festwertspeicherwortes haben (vgl. Fig. 3). Die Funktion der nicht bedingten Verzweigungsinstruktion (UBR) kann
durch ein internes Register modifiziert werden; das UBR-Register 30 wird ein "Tester und Verzweiger bei Index"-Register
1 (28}, wie im folgenden noch ausführlich beschrieben werden
wird.
Das allgemeine Instruktionsforaict ist in Fig» 3 für kurze"
Instruktionen und in Fig. 4 für lange Instruktionen gezeigt.
Bei kurzen Instruktionen definieren die hochstelligen Bits
0 bis 3 den Operationscode, Bit 4, das Feld a, den Lese-/ Schreibspeicher 14 als Quelle oder Bestimmung, wenn es Binär
Null und ein Spezialzweckregister als Quelle oder Bestimmung, wenn es binär Eins ist. Das Feld b, also die Bits 5 bis 11,
beinhalten den Operanden, und wenn Bit 4 den Lese-/Schreibspeicher 14 spezifiziert, das Format des Operandenfeldes,
wie es in Fig. 5 dargestellt ist. Für die Lese-/Schreibspeicheradressierung
spezifiziert Bit 5, wenn das d-Feld binär Eins enthält, daß der Inhalt des XR2-Registers 32 als
die drei niedrigstelligen Adressenbits (Indizierung) für den Lese-/Schreibspeicher verwendet werden. Wenn Bit 4 den
Lese-/Schreibspeicher 14 spezifiziert, dann wird Feld e,
also das Bit 6, als hochstelliges Adressenbit für den Lese-/ Schreibspeicher verwendet (vgl. Fig. 6). Wenn dieses Bit 6
binär Eins ist, dann wird das nächstniedrigere Bit auf binär Null gezwungen. Wenn das Bit 6 binär Null ist, dann werden
die im BANK-Register 34 enthaltenen Bits als die nächsthöheren
SA 977 061 ~
2910833
Adreßbits des Lese-ZSchreibspeichers verwendet (Seitenadressierung)
.
Wenn Bit 4 der Instruktion binär Eins ist, dann dienen alle
sieben Bits des Operanden (Bits 5 bis 11) zur Bestimmung der Quelle oder Bestimmung, je nachdem, was die Instruktion im
Op-Codefeld spezifiziert.
Lange Instruktionen bestehen aus zwei Festwertspeicherwörtern, von denen das erste das gleiche Format hat wie die kurzen Instruktionen.
Das zweite Wort (vgl. Fig. 4) verwendet die Bits O und 1 (Feld c), um einen Verzweigungsbedingungscode
zu bilden, der folgenden Aufbau hat:
01 verzweige, wenn ACU = O
10 verzweige, wenn ACU = 1
11 nicht bedingte Verzweigung
Die Bits 2 bis 11 definieren dann die Verzweigungsadresse.
Die Tabelle in Fig. 2 zeigt die Bitzuteilungen innerhalb des Instruktionssatzes, der über folgende Instruktionen verfügt:
Op Code 0 (Nummernbezeichnung Spalte 2) betrifft eine kurze Instruktion LDA (Op Name Spalte 3) zum
Laden des Akkumulators von einer Quelle,
Op Code 1 bezieht sich auf eine kurze Instruktion AND
zur Durchführung einer logischen UND-Operation mit den Inhalten des Akkumulators und einer
Quelle,
Op Code 3 bezieht sich auf eine kurze Instruktion ORA
zur Durchführung einer logischen ODER-Operation mit den Inhalten des Akkumulators und einer
Quelle/
909840/0643
2310833
Op Code 3 bezieht sich auf eine kurze Instruktion ΟΙΑ
zur Durchführung einer logischen ODER-Operation mit den Inhalten des Akkumulators und einer
Quelle mit anschließender Invertierung des
Resultats,
Resultats,
Op Code 4 bezieht sich auf eine kurze Instruktion EOR für die Durchführung einer EXKLUSIV-ODER-Operation
mit den Inhalten des Akkumulators und einer Quelle,
Op Code 5 bezieht sich auf eine lange Instruktion EBR
zur Durchführung einer EXKLUSIV-ODER-Operation
mit den Inhalten des Akkumulators und einer Quelle und einer anschließenden Verzweigung
bei Auftreten einer bestimmten Bedingung,
Op Code 6 bezieht sich auf eine kurze Instruktion ADD zur Durchführung einer Additionsoperation mit
Übertrag bezüglich des Inhaltes des Akkumulators und einer Quelle,
Op Code 7 bezieht sich auf eine lange Instruktion LBR zum Laden des Akkumulators von einer Quelle und
zur Durchführung einer Verzweigung bei Auftreten einer bestimmten Bedingung,
Op Code 8 ist eine spezielle kurze Instruktion LRI zum
direkten Laden des Indexregisters, des UBR-Registers und des Bankregisters,
Op Code 9 bezieht sich auf eine kurze Instruktion STA zur Speicherung des Inhalts des Akkumulators
an einer Bestimmung (unter Bestimmung ist jede Stelle in einer Datenverarbeitungsanlage
zu verstehen, zu der Daten oder Steuersignale gesendet werden),
SA 977 061
2310839
Op Code 10 bezieht sich auf eine kurze Instruktion RST zur Rückstellung der Bestiinmungsangabe auf
Null,
Op Code 11 betrifft eine kurze Instruktion SET zur Einstellung
der Bestiinmungsangabe auf Eins und
Op Code 12 bezieht sich auf eine kurze Instruktion UBR zur Durchführung einer nicht bedingten Verzweigung.
Diese Instruktion kann aber in Abhängigkeit von dem Inhalt eines internen Registers
zu einer bedingten Verzweigung modifiziert werden.
Die nicht bedingte Verzweigungsinstruktion UBR ist als eine
bedingte Verzweigung hilfreich, wobei der Zustand des UBR-Registers
30 das Bestimmungsglied ist. Zur Erläuterung der UBR-Instruktion kann folgender Ablauf dienen:
LRI | Schleifenzählung | |
Schleife 1 | ADD | Eins |
UBR | Schleife 1 | |
SET | Durchlaufen |
Die LRI-Instruktion überträgt Daten über die Sammelleitung
zu den internen Registern, wenn sie im Operationsregister 22 decodiert wird auf folgende Weise: Die niedrigstelligen vier
Bits 8 bis 11 dienen als direkte Daten, die in das erste
Indexregister 28 geladen werden. Bit 7 wird in das UBR-Register 30 eingegeben. Bit 5 gelangt zum BANK-Register 34, wenn
Indexregister 28 geladen werden. Bit 7 wird in das UBR-Register 30 eingegeben. Bit 5 gelangt zum BANK-Register 34, wenn
SA 977 061 "
909840/064^
Bit 6 eine binäre Eins ist. Wenn das Bit 4 eine binäre Eins ist, wird das zweite Indexregister 32 zurückgestellt. Der
im ersten Indexregister 28 gespeicherte Wert repräsentiert die Anzahl der gewünschten Durchläufe durch die Schleife,
wohingegen der im UBR-Register 30 gespeicherte Wert festlegt,
ob die Verzweigungen nicht bedingt (wenn binär Null) oder bedingt {binär Eins) ist.
Die UBR-Instruktion wird im Operationsregister 22 und deren
logischen Schaltungen in Steuersignale decodiert, die auf der Abfühlung des UBR-Operationscode in den beiden hochstelligen Bitpositionen und der gleichzeitigen Abfühlung
des Zustandes des UBR-Registers 30 basieren. Wenn der Inhalt des UBR-Registers binär Null ist, dann ist die Verzweigung
eine nicht bedingte, so daß die nächste auszuführende Instruktion diejenige ist, die in der Verzweigungsadresse,
in der UBR-Instruktion spezifiziert ist.
Wenn der Inhalt des UBR-Registers 30 eine binäre Eins ist, dann wird der Inhalt des ersten Indexregisters 28 abgefühlt.
Wenn dieser binär Null ist, dann wird keine Verzweigung durchgeführt und die nächste auszuführende Instruktion ist
die SET-Instruktion, die nächste sequentielle Instruktion in der dargestellten Ablauffolge ist. Wenn aber der Inhalt
des ersten Indexregisters 28 nicht binär Null ist, dann wird er um Eins vermindert, und es wird eine bedingte Verzweigung
zum Anfang der Schleife durchgeführt. Diese Operationsfolge
wird solange durchgeführt, bis der Inhalt des ersten Indexregisters 28 binär Null geworden ist. Wenn dieses auftritt,
wird keine Verzweigung mehr durchgeführt und die Schleife somit beendet. Der Inhalt des UBR-Registers 30 wird dann
auf binär Null zurückgestellt, um die nicht bedingte Verzweigungsinstruktion UBR auf ihre ursprüngliche Punktion
einzustellen.
SA 977 061
96984Q/Q&43
29T0839
Fig. 10 zeigt ein Blockdiagrainiti des Operationsdecodierers
22, der, wie bereits erwähnt wurde, nicht nur ein Operationsre·
gister ist, sondern auch die Schaltkreise zur Decodierung und Ausführung einer Instruktion beinhaltet. Sie weist im wesentliches
ein UND-Tor 52 auf, das ein Ausgangssignal NBV (nicht bedingte Verzweigung) erzeugt, wenn die Festwertspeicherbits
1 und 0 beide binär Eins sind und der Inhalt des UBR-Registers 30 binär Null ist. Unter Bezugnahme auf Fig. 2 wird deutlich,
daß die Verzweigungsinstruktion UBR die einzige Instruktion ist, in der die beiden hochstelligen Bits des Operationscodes, das sind die Festwertspeicherbits 0 und 1, binär
Eins sind. Das UND-Tor 52 zeigt daher eine Verzweigungsinstruktion UBR und den binär Null-Inhalt im UBR-Register
30 an, beides Bedingungen für die Ausführung der UBR-Instruktion als eine nicht bedingte Verzweigung.
Das UND-Tor 50 erzeugt ein Ausgangssignal, wenn die Festwertspeicherbits
0 und 1 (ROS 0, ROS 1), beide binär Eins sind und wenn der Inhalt des UBR-Registers 30 nicht binär
Null ist. Dieses Ausgangssignal wird zu jeweils einem Eingang der beiden UND-Tore 54 und 56 übertragen. Das UND-Tor
54 erzeugt das Ausgangssignal "keine Verzweigung", wenn Koinzidenz des Ausgangssignales des UND-Tores 50 und eines
Signales vorliegt, das angibt, daß der Inhalt des ersten Indexregisters 28 binär Null ist. Der Inhalt des ersten
Indexregisters 28 wird von einem UND-Tor 58 überprüft, das über mehrere Eingänge verfügt und jeweils ein Eingang mit
dem Null-Ausgang einer anderen Stufe des genannten Registers verbunden ist.
Wenn der im ersten Indexregister 28 gespeicherte Wert nicht gleich binär Null ist und außerdem das UND-Tor 50 leitend
ist, dann wird von dem UND-Tor 56 das Signal "Verzweigung"· erzeugt. Dieses Signal wird auch zu dem Schiebeeingang des
ersten Indexregisters 28 übertragen, damit es den in diesem
SA 977 041
909840/0643
Register gespeicherten Wert um Eins vermindern kann, wodurch die Funktion der Schleifendurchlaufzählung während der Ausführung
der UBR-Instruktion wahrgenommen wird.
SA 977 061
909840/0643
Claims (1)
- - -K PATENTAN SPRÜCHEIy Einrichtung zur Ausführung einer speziellen Verzweigungsinstruktion in einer elektronischen Datenverarbeitungsanlage mit einem Prozessor, einem Haupt- und Mikrocodespeicher und mehreren internen Registern, gekennzeichnet durch- ein erstes Register (30; Fig. 1) zur Speicherung einer Information, welche die Verzweigungsart (bedingt, nicht bedingt) definiert,- ein zweites Register (28) zur Speicherung eines Wertes, der eine gewünschte Anzahl von Schleifendurchläufen definiert,- eine Steuerschaltung (50 bis 58;- Fig. 10) zur Ausführung einer speziellen Verzweigungsinstruktion als eine nicht bedingte Verzweigung zu einer in der Instruktion spezifizierten Verzweigungsadresse, wenn der erforderliche Identifierungscode (z.B. binär Null) im ersten Register vorliegt, oder als bedingte Verzweigung zu einer in der Instruktion spezifizierten Adresse und Verminderung des Wertes im zweiten Register, wenn der erforderliche Identifizierungscode (z.B. binär Eins) im ersten Register und ein Wert φ 0 im zweiten Register vorliegen oder als keine Verzweigung (Fortsetzung mit der nächsten linearen Adresse), wenn der erforderliche Identifizierungscode (z.B. binär Eins) im ersten und ein Wert = Null im zweiten.Register vorliegen.2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet,daß die Verzweigungsinstruktionen und andere Instruktionen des Mikrocodes in einem Festwertspeicher (12; Fig. 1) gespeichert sind.3. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß eine Schaltungsanordnung vorgesehen ist, die die er-SA 977 061forderliche Information in das erste (30) und zweite Register (28) unmittelbar vor der Ausführung der Verzweigungsinstruktion überträgt.4. Einrichtung nach Anspruch 1, gekennzeichnet durch eine Anordnung zur Rückstellung des Inhalts des ersten Registers (30; Fig. 1) vor der Ausführung der nächsten sequentiellen Instruktion, wenn keine Verzweigung durchgeführt wird.5. Verfahren zum Betrieb einer in den Ansprüchen 1 bis 4 gekennzeichneten Einrichtung, gekennzeichnet durch folgende Verfahrensschritte:- Decodierung der in einer Instruktion der ersten Instruktionsfolge enthaltenen Information, welche die Verzweigungsart und Adresse angibt,- Erkennung des im ersten Register (30; Fig. 1) enthaltenen Identifizierungscodes,- nicht bedingtes Verzweigen zu einer zweiten Instruktions folge, welche durch die Verzweigungsadresse gekennzeichnet ist, bei Vorhandensein eines Identifizierungscodes (z.B. binär Null) im ersten Register,- Feststellen, nach dem Fehlen des Identifizierungscodes (z.B. binär Null), im ersten Register das Vorhandensein eines Wertes Null im zweiten Register (28),- Verzweigung zu einer zweiten Instruktionsfolge, die durcja die Verzweigungsadresse spezifiziert ist und- Verminderung des im zweiten Register enthaltenen Wertes um Eins in Abhängigkeit davon, ob dieser Wert zu Beginn mit Null festgestellt wurde oder nicht und- keine Verzweigung, wenn der Wert Null im zweiten Register festgestellt wird.Verfahren nach Anspruch 5, gekennzeichnet durch folgenden weiteren Verfahrensschritt:- Übertragen der erforderlichen Daten in das erste undSA 977 061909840/OS4Szweite Register unmittelbar vor der Ausführung einer Verzweigungsinstruktion.7. Verfahren nach Anspruch 5 und/oder 6, gekennzeichnet durch folgenden zusätzlichen Verfahrensschritt: - Rückstellen des ersten Registers auf den Wert Null vor der Ausführung der nächsten sequentiellen Instruktion, wenn keine Verzweigung durchgeführt wird.SA 977 061909840/0643
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US05/892,243 US4181942A (en) | 1978-03-31 | 1978-03-31 | Program branching method and apparatus |
Publications (1)
Publication Number | Publication Date |
---|---|
DE2910839A1 true DE2910839A1 (de) | 1979-10-04 |
Family
ID=25399625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19792910839 Withdrawn DE2910839A1 (de) | 1978-03-31 | 1979-03-20 | Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktion |
Country Status (7)
Country | Link |
---|---|
US (1) | US4181942A (de) |
JP (1) | JPS54131843A (de) |
BR (1) | BR7901934A (de) |
DE (1) | DE2910839A1 (de) |
FR (1) | FR2421423B1 (de) |
GB (1) | GB2017984B (de) |
IT (1) | IT1166705B (de) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4309753A (en) * | 1979-01-03 | 1982-01-05 | Honeywell Information System Inc. | Apparatus and method for next address generation in a data processing system |
JPS6064235A (ja) * | 1983-09-20 | 1985-04-12 | Toshiba Corp | Ctスキヤナ |
JPS61229134A (ja) * | 1985-04-03 | 1986-10-13 | Nec Corp | マイクロコンピユ−タ |
JPS6341932A (ja) * | 1985-08-22 | 1988-02-23 | Nec Corp | 分岐命令処理装置 |
JPS63197232A (ja) * | 1987-02-12 | 1988-08-16 | Toshiba Corp | マイクロプロセツサ |
JP3452655B2 (ja) * | 1993-09-27 | 2003-09-29 | 株式会社日立製作所 | ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法 |
US6732253B1 (en) | 2000-11-13 | 2004-05-04 | Chipwrights Design, Inc. | Loop handling for single instruction multiple datapath processor architectures |
US6931518B1 (en) | 2000-11-28 | 2005-08-16 | Chipwrights Design, Inc. | Branching around conditional processing if states of all single instruction multiple datapaths are disabled and the computer program is non-deterministic |
US20020194461A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc | Speculative branch target address cache |
US7134005B2 (en) * | 2001-05-04 | 2006-11-07 | Ip-First, Llc | Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte |
US6895498B2 (en) * | 2001-05-04 | 2005-05-17 | Ip-First, Llc | Apparatus and method for target address replacement in speculative branch target address cache |
US7165169B2 (en) * | 2001-05-04 | 2007-01-16 | Ip-First, Llc | Speculative branch target address cache with selective override by secondary predictor based on branch instruction type |
US7200740B2 (en) * | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
US6886093B2 (en) * | 2001-05-04 | 2005-04-26 | Ip-First, Llc | Speculative hybrid branch direction predictor |
US7707397B2 (en) * | 2001-05-04 | 2010-04-27 | Via Technologies, Inc. | Variable group associativity branch target address cache delivering multiple target addresses per cache line |
US7165168B2 (en) * | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
US7162619B2 (en) * | 2001-07-03 | 2007-01-09 | Ip-First, Llc | Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer |
US7203824B2 (en) * | 2001-07-03 | 2007-04-10 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US7234045B2 (en) * | 2001-07-03 | 2007-06-19 | Ip-First, Llc | Apparatus and method for handling BTAC branches that wrap across instruction cache lines |
US6823444B1 (en) * | 2001-07-03 | 2004-11-23 | Ip-First, Llc | Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap |
US7159097B2 (en) * | 2002-04-26 | 2007-01-02 | Ip-First, Llc | Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts |
US7493607B2 (en) * | 2002-07-09 | 2009-02-17 | Bluerisc Inc. | Statically speculative compilation and execution |
US7152154B2 (en) * | 2003-01-16 | 2006-12-19 | Ip-First, Llc. | Apparatus and method for invalidation of redundant branch target address cache entries |
US7143269B2 (en) * | 2003-01-14 | 2006-11-28 | Ip-First, Llc | Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor |
US7185186B2 (en) | 2003-01-14 | 2007-02-27 | Ip-First, Llc | Apparatus and method for resolving deadlock fetch conditions involving branch target address cache |
US7178010B2 (en) * | 2003-01-16 | 2007-02-13 | Ip-First, Llc | Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack |
US7237098B2 (en) * | 2003-09-08 | 2007-06-26 | Ip-First, Llc | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
US20050114850A1 (en) | 2003-10-29 | 2005-05-26 | Saurabh Chheda | Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control |
US7996671B2 (en) * | 2003-11-17 | 2011-08-09 | Bluerisc Inc. | Security of program executables and microprocessors based on compiler-architecture interaction |
US8607209B2 (en) | 2004-02-04 | 2013-12-10 | Bluerisc Inc. | Energy-focused compiler-assisted branch prediction |
US20070294181A1 (en) * | 2006-05-22 | 2007-12-20 | Saurabh Chheda | Flexible digital rights management with secure snippets |
US20080126766A1 (en) | 2006-11-03 | 2008-05-29 | Saurabh Chheda | Securing microprocessors against information leakage and physical tampering |
US20080154379A1 (en) * | 2006-12-22 | 2008-06-26 | Musculoskeletal Transplant Foundation | Interbody fusion hybrid graft |
EP2120244A1 (de) | 2008-05-15 | 2009-11-18 | ABB Technology AG | Hochspannungs-Leistungsschalter |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3058658A (en) * | 1957-12-16 | 1962-10-16 | Electronique Soc Nouv | Control unit for digital computing systems |
US3239820A (en) * | 1962-02-16 | 1966-03-08 | Burroughs Corp | Digital computer with automatic repeating of program segments |
US3292153A (en) * | 1962-10-01 | 1966-12-13 | Burroughs Corp | Memory system |
US3292155A (en) * | 1963-03-15 | 1966-12-13 | Burroughs Corp | Computer branch command |
US3297998A (en) * | 1963-06-10 | 1967-01-10 | Beckman Instruments Inc | List control |
US3366929A (en) * | 1964-12-30 | 1968-01-30 | Ibm | Computing system embodying flexible subroutine capabilities |
FR1536616A (fr) * | 1966-09-21 | Ibm | Système de traitement d'instructions avec des perfectionnements pour le branchementet les boucles du programme | |
GB1506840A (en) * | 1967-09-12 | 1978-04-12 | Licentia Gmbh | Method of advancing the point of impact for passive-location missiles guided by means of proportional navigation in the self-guide phase |
DE1578299B2 (de) * | 1967-10-14 | 1976-03-11 | Licenti a Patent-Verwaltung s-GmbH, 6000 Frankfurt | Verfahren zur treffpunktvorverlegung fuer passiv ortende in der eigenlenkphase mittels proportionalnavigation gelenkte geschosse |
US3577190A (en) * | 1968-06-26 | 1971-05-04 | Ibm | Apparatus in a digital computer for allowing the skipping of predetermined instructions in a sequence of instructions, in response to the occurrence of certain conditions |
US3573853A (en) * | 1968-12-04 | 1971-04-06 | Texas Instruments Inc | Look-ahead control for operation of program loops |
US3577189A (en) * | 1969-01-15 | 1971-05-04 | Ibm | Apparatus and method in a digital computer for allowing improved program branching with branch anticipation reduction of the number of branches, and reduction of branch delays |
US3665402A (en) * | 1970-02-16 | 1972-05-23 | Sanders Associates Inc | Computer addressing apparatus |
FR2226066A5 (de) * | 1970-10-13 | 1974-11-08 | Bodenseewerk Geraetetech | |
US3737867A (en) * | 1971-02-12 | 1973-06-05 | D Cavin | Digital computer with accumulator sign bit indexing |
US3713108A (en) * | 1971-03-25 | 1973-01-23 | Ibm | Branch control for a digital machine |
US3728686A (en) * | 1971-06-07 | 1973-04-17 | Rca Corp | Computer memory with improved next word accessing |
US3728689A (en) * | 1971-06-21 | 1973-04-17 | Sanders Associates Inc | Program branching and register addressing procedures and apparatus |
US3793631A (en) * | 1972-09-22 | 1974-02-19 | Westinghouse Electric Corp | Digital computer apparatus operative with jump instructions |
JPS5324151B2 (de) * | 1972-12-25 | 1978-07-19 | ||
IT1000638B (it) * | 1973-12-28 | 1976-04-10 | Olivetti & Co Spa | Calcolatore elettronico con dispo sitivo di deviazione dei micropro grammi |
US3958227A (en) * | 1974-09-24 | 1976-05-18 | International Business Machines Corporation | Control store system with flexible control word selection |
-
1978
- 1978-03-31 US US05/892,243 patent/US4181942A/en not_active Expired - Lifetime
-
1979
- 1979-02-01 JP JP976179A patent/JPS54131843A/ja active Granted
- 1979-02-09 GB GB7904698A patent/GB2017984B/en not_active Expired
- 1979-02-22 FR FR7905119A patent/FR2421423B1/fr not_active Expired
- 1979-03-16 IT IT21036/79A patent/IT1166705B/it active
- 1979-03-20 DE DE19792910839 patent/DE2910839A1/de not_active Withdrawn
- 1979-03-29 BR BR7901934A patent/BR7901934A/pt unknown
Also Published As
Publication number | Publication date |
---|---|
IT7921036A0 (it) | 1979-03-16 |
FR2421423A1 (fr) | 1979-10-26 |
US4181942A (en) | 1980-01-01 |
IT1166705B (it) | 1987-05-06 |
JPS54131843A (en) | 1979-10-13 |
JPS5732814B2 (de) | 1982-07-13 |
GB2017984A (en) | 1979-10-10 |
GB2017984B (en) | 1982-05-12 |
FR2421423B1 (fr) | 1987-04-24 |
BR7901934A (pt) | 1979-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2910839A1 (de) | Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktion | |
DE2542740C2 (de) | Datenverarbeitungsanlage mit einer Mikroprogrammsteuerung | |
DE69115344T2 (de) | Vorverarbeitungsprozessor zur Verbindung von Befehlen für einen Cache-Speicher | |
DE68928213T2 (de) | Inhaltadressierte Speicherzellenanordnung | |
DE69027348T2 (de) | Speicherblockadressenermittlungsschaltkreis | |
DE1499722C2 (de) | Einrichtung zur Modifizierung von Informationswörtern | |
DE68907518T2 (de) | Inhaltsadressierte Speicheranordnung. | |
DE1931966C3 (de) | Datenverarbeitungsanlage mit Assoziativspeichern | |
DE2753062C2 (de) | Einrichtung zur wiederholten Durchführung von Programmschleifen | |
DE3424962C2 (de) | ||
DE60224774T2 (de) | Datenverarbeitungssystem mit Lese-, Änderungs- und Schreibeinheit | |
DE2542751C2 (de) | Datenverarbeitungsanlage | |
DE2524046C2 (de) | Elektronische Datenverarbeitungsanlage | |
DE1303416B (de) | ||
DE2719635A1 (de) | Anordnung fuer eine erweiterung einer mikroprogrammsteuerung einer datenverarbeitungsanlage | |
DE2847934A1 (de) | Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher | |
DE2230102A1 (de) | Rechenwerk fuer variable wortlaengen | |
DE3689389T2 (de) | Datenverarbeitungsprozessor. | |
EP0010186B1 (de) | Vorrichtung zum Bearbeiten bezeichneter Hinweise | |
DE3751108T2 (de) | Mikroprozessor mit der Fähigkeit, an einen Koprozessor geschaltet zu werden. | |
DE1285219B (de) | Steuerwerk zur Ausfuehrung von Unterprogrammen | |
DE2332971C2 (de) | Mikroprogrammsteuereinrichtung | |
DE3043653A1 (de) | Datenverarbeitungsanlage | |
DE2533737A1 (de) | Datenprozessor | |
DE2336676B2 (de) | Einrichtung zur Modifizierung von Mikroprogrammbefehlen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8139 | Disposal/non-payment of the annual fee |