DE2910839A1 - Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktion - Google Patents

Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktion

Info

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
Application number
DE19792910839
Other languages
English (en)
Inventor
Richard Gerhardt Forster
John Kenyon Howard
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE2910839A1 publication Critical patent/DE2910839A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address 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:
Code Bedingung
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,
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
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)

  1. - -K PATENTAN SPRÜCHE
    Iy 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 061
    forderliche 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 und
    SA 977 061
    909840/OS4S
    zweite 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 061
    909840/0643
DE19792910839 1978-03-31 1979-03-20 Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktion Withdrawn DE2910839A1 (de)

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)

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

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

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