DE69534148T2 - Rechnersystem zur Ausführung von Verzweigungsbefehlen - Google Patents

Rechnersystem zur Ausführung von Verzweigungsbefehlen Download PDF

Info

Publication number
DE69534148T2
DE69534148T2 DE69534148T DE69534148T DE69534148T2 DE 69534148 T2 DE69534148 T2 DE 69534148T2 DE 69534148 T DE69534148 T DE 69534148T DE 69534148 T DE69534148 T DE 69534148T DE 69534148 T2 DE69534148 T2 DE 69534148T2
Authority
DE
Germany
Prior art keywords
instruction
branch
instructions
command
address
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
Application number
DE69534148T
Other languages
English (en)
Other versions
DE69534148D1 (de
Inventor
Andrew Craig Montpelier Sturges
Nathan Mackenzie St.Werburghs Sidwell
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.)
STMicroelectronics Ltd Great Britain
Original Assignee
STMicroelectronics Ltd Great Britain
SGS Thomson Microelectronics Ltd
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 STMicroelectronics Ltd Great Britain, SGS Thomson Microelectronics Ltd filed Critical STMicroelectronics Ltd Great Britain
Application granted granted Critical
Publication of DE69534148D1 publication Critical patent/DE69534148D1/de
Publication of DE69534148T2 publication Critical patent/DE69534148T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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, 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • Diese Erfindung betrifft ein Computersystem zum Ausführen von Verzweigungsbefehlen und ein Verfahren zum Betreiben eines derartigen Computersystems.
  • Programme bestehen aus Blöcken oder Folgen (engl.: strings) sequenzieller Befehle, die eine einzelne Eintrittsstelle (der erste Befehl) und eine einzelne Ausgangsstelle (der letzte Befehl) aufweisen. Es gibt ein oder zwei Wahlmöglichkeiten von auszuführenden Befehlsblöcken nach einem speziellen Block. Wenn es zwei mögliche Blöcke gibt, muss eine Bedingung verwendet werden, um festzulegen, welcher Block zu wählen ist. Das Muster von Verbindungen zwischen Blöcken wird als Steuerung oder Flussgraph des Programms bezeichnet.
  • Diese Befehlsblöcke sind zusammen in einem Speicher gepackt. Wenn es keine Wahlmöglichkeit eines nachfolgenden Blocks (Block B) gibt, kann er normalerweise unmittelbar nach dem ersten Block (Block A) angeordnet sein. Das bedeutet, dass keine explizite Änderung der Steuerung notwendig ist, um vom Block A zum Block B zu gelangen. Manchmal ist dies nicht möglich, beispielsweise wenn mehr als ein Block den Block B als Nachfolger aufweist. Alle dieser Vorgänger bis auf einen müssen angeben, dass der nachfolgende Block nicht der nächste sequenzielle Block, sondern der Block B ist. Dies sind nicht bedingte Verzweigungen. Einige Blöcke haben eine Wahlmöglichkeit von Nachfolgeblöcken. Klarerweise kann nur einer der Nachfolger, beispielsweise der Block B, danach sequenziell angeordnet sein. Der andere Block, der Block C, ist explizit innerhalb des Blocks A angegeben. Ein Bedingungsverfahren wird verwendet, um zu ermitteln, welcher Block zu wählen ist. Wenn die Bedingung erfüllt ist, dann ist der gewählte Nachfolgeblock der Block C. Wenn die Bedingung nicht erfüllt ist, dann ist der gewählte Nachfolger der Block B. Dies sind bedingte Verzweigungen.
  • Verzweigungen sind auf dem Gebiet gut bekannt und für ein Computersystem bedeutsam, um ein Programm auszuführen. Bekannte Computer enthalten ein spezielles Register, das Befehls- Pointer-Register, das eine Angabe der Adressen des nächsten, auszuführenden Befehls bereitstellt. Dieses Register wird üblicherweise automatisch nach einer Befehlsausführung inkrementiert, so dass es nun die Adresse des nächsten sequenziellen Befehls angibt. Verzweigungsbefehle werden verwendet, um dieses Verhalten zu ändern. Diese Verzweigungsbefehle spezifizieren eine alternative Adresse (die Zielstelle) für den nächsten ausführbaren Befehl. Bedingte Verzweigungsbefehle spezifizieren auch eine Bedingung, die für die alternative, zu verwendende Adresse erfüllt sein muss – ansonsten wird der Befehlspointer wie üblich inkrementiert. Diese Verzweigungsbefehle definieren daher das Ende eines Blocks von Befehlen.
  • Der Computer in einem Computersystem ohne Pipeline-Verarbeitung ruft ab, dekodiert und führt aus, um einen einzelnen Befehl zu Ende zu bringen, bevor er zu dem nächsten Befehl weiter geht. In einem System mit Pipeline-Verarbeitung, in dem Abruf-, Dekodier- und Ausführungsstufen allesamt gleichzeitig an einem Strom von Befehlen arbeiten, ist es jedoch möglich, Befehle abzurufen, die nicht benötigt werden. Man betrachte beispielsweise ein System mit einer vierstufigen Befehls-Pipeline mit Abruf-, Dekodier-, Ausführungs- und Schreibstufen. Der früheste Zeitpunkt, zu dem ein Verzweigungsbefehl detektiert werden kann, befindet sich in der Dekodier-Stufe, wobei zu diesem Zeitpunkt der nächste sequenzielle Befehl in dem Speicher bereits abgerufen worden ist. Für eine nicht bedingte Verzweigung muss dieser verworfen werden, und neue Befehle werden von der Zielstelle abgerufen. Für bedingte Verzweigungen ist es komplizierter. Der Zustand muss evaluiert werden, um zu ermitteln, ob die Zielstelle zu ändern ist oder nicht. Dies geschieht in der Ausführungs-Stufe, wobei daher der sequenziell abgerufene Befehl in der Abruf-Stufe zurückgestellt werden muss und die Pipeline-Verarbeitung nur dann fortschreiten kann, nachdem die Verzweigung ausgeführt worden ist. Wenn die Bedingung wahr war, muss der sequenziell abgerufene Befehl ignoriert werden, und neue Befehle werden von der Zielsstelle abgerufen. Die erste Pipelinebearbeitung, die auf eine Prozessorarchitektur angewendet wird, soll Befehle vorab ausgeben, weil dies eine der einfachsten Beschleunigungen ist.
  • Aus der vorherigen Beschreibung ist es klar, dass der Befehl nach einem Verzweigungsbefehl immer abgerufen wird, aber nur manchmal erforderlich ist, und dass daher eine Pipeline-Verarbeitungsblase erzeugt wird, während ermittelt wird, was zu tun ist. Ein Versuch, dies zu verbessern, ist durchgeführt worden, indem die Semantik von Verzweigungsbefehlen geändert wurde, so dass der nachfolgende Befehl immer ausgeführt wird und die Verzweigung festlegt, ob der Befehl, der nach diesem ausgeführt wird, der eine sequenziell nach diesem ist oder der Befehl an der Zielstelle. Diese werden als verzögerte Verzweigungen bezeichnet und der Befehl, der dem Verzweigungsbefehl unmittelbar folgt, wird als Verzweigungsverzögerungszeitschlitz bezeichnet. 1 veranschaulicht schematisch diese Operation. In der Dekodierungsstufe wird der Verzweigungsbefehl detektiert. Der Verzweigungsverzögerungszeitschlitz ist Inst 1, der immer ausgeführt wird. Wenn die Verzweigung gewählt wird, dann ist der nächste ausgeführte Befehl Inst D0, der der erste Befehl eines anderen Blocks ist, wohingegen, wenn die Verzweigung nicht gewählt wird, er Inst 2 ist, der der erste Befehl des nächsten folgenden Blocks ist. Inst 1 muss ein Befehl sein, der immer ausgeführt werden kann, unabhängig von dem Ergebnis der (bedingten) Verzweigung, und es darf kein Befehl sein, der festlegt, ob die bedingte Verzweigung zu wählen ist. Wenn kein Befehl innerhalb des Programms zu finden ist, der diese Bedingungen erfüllt, dann muss ein Befehl, der keine Wirkung hat (NO OP), stattdessen eingefügt werden.
  • Pipeline-Verarbeitungen können so ausgelegt sein, dass die optimale Anzahl an Verzögerungszeitschlitzen mehr als 1 beträgt. Je tiefergehend ein Computer mit einer Pipeline-Verarbeitung ausgestattet ist, desto mehr Verzögerungszeitschlitze werden im Allgemeinen benötigt. Unglücklicherweise ist es immer schwieriger, brauchbare Befehle aufzufinden, die in jede zusätzlichen Zeitschlitz eingebracht werden können, so dass vie le von diesen mit Befehlen gefüllt werden, die nichts bewirken. Dies ordnet große Blasen von NO-OP-Befehlen in der Ausführungs-Pipeline an, was den Geschwindigkeitsvorteil verringert, der erhalten wird, indem eine tiefe Pipeline-Verarbeitung durchgeführt wird.
  • Ein weiteres bedeutsames Problem bei diesem Ansatz besteht darin, dass, wenn ein neues Computersystem eines vorhandenen Befehlssatzes mit einer neuen Pipeline-Organisation und daher einer anderen Anzahl an Verzweigungsverzögerungszeitschlitzen ausgelegt wird, es vorhandene Binärfunktionen nicht ausführen kann. Programme müssen erneut kompiliert werden, um ausgeführt zu werden.
  • Beim Versuch, Verzweigungsverzögerungszeitschlitze überflüssig zu machen, verwendet ein bekanntes System zwei Einrichtungen zum Abrufen von Befehlen in der Abruf-Stufe einer Pipeline-Verarbeitung, wobei jede Einrichtung zum Abrufen von Befehlen in der Lage ist, eine Folge von Befehlen abzurufen und zu speichern. Eine Einrichtung zum Abrufen von Befehlen weist ihr zugeordnet eine lokale Dekodierschaltkreisanordnung auf, die ausgelegt ist, um Verzweigungsbefehle zu detektieren. Es ist ersichtlich, dass diese lokale Dekodierschaltkreisanordnung zusätzlich zu der normalen Dekodierstufe der Pipeline vorhanden ist. Wenn ein Verzweigungsbefehl von der aktiven Einrichtung zum Abrufen detektiert wird, initialisiert sie die andere Einrichtung zum Abrufen von Befehlen, um damit zu beginnen, Befehle von dem neuen Block abzurufen, wobei die Befehle bis zu dem Verzweigungsbefehl des ersten Blocks weiterhin zum Dekodieren und Ausführen in die Pipeline eingebracht werden. Dieses System benötigt nicht nur eine zusätzliche lokale Dekodierschaltkreisanordnung, um Verzweigungsbefehle vor der normalen Dekodierstufe der Pipeline zu dekodieren, sondern es schließt auch ein spekulatives Abrufen von Befehlen aus dem Speicher ein, von denen viele nicht erforderlich sein können.
  • EP-A-355069 (Evans & Sutherland Computer Corporation) definiert ein System, in dem es eine Trennung des Befehls gibt, um eine Verzweigung in zwei unterschiedliche Teile zu erreichen. Der Befehl zum Festlegen einer Verzweigung gibt die Zielstelle für die Verzweigung an und kann so nah wie möglich am Anfang der Folge von Befehlen angeordnet sein.
  • Eine tatsächliche Implementierung der Verzweigung wird später in Antwort auf ein Trennbit durchgeführt, das in einem späteren Befehl angeordnet ist.
  • Die Bereitstellung der Zielstelle für die Verzweigung durch den Befehl zum Festlegen einer Verzweigung sorgt für eine frühe Angabe des Umstandes, dass ein Speicherzugriff durchzuführen ist (oder wahrscheinlich durchzuführen ist) und stellt die Speicheradresse (die Zielstelle) für diesen Zugriff bereit. Wenn das Trennbit bewirkt, dass die Verzweigung gewählt wird und daher der Zeitpunkt eintritt, auf diese Speicheradresse zuzugreifen, hat das System keine Chance, eine Einstellung für den Zugriff vorzunehmen, beispielsweise indem die erforderlichen Daten in einen lokalen Cache gebracht werden.
  • Ein mit dem System von EP-A-355069 verbundenes Problem besteht darin, dass die Zielstelle, von der neue Befehle abzurufen sind, zurückgesetzt wird, nachdem ein Trennbitsignal ausgegeben worden ist. Dies bedeutet, dass es dort keine mehrfachen Verzweigungen unter Verwendung der Zielstelle geben kann, die von einem einzelnen Befehl zum Festlegen einer Verzweigung festgelegt wird. Es ist vorteilhaft, diese Situation zuzulassen, und es ist eine Aufgabe der vorliegenden Erfindung, ein verbessertes System zur Implementierung von Verzweigungen bereitzustellen, die dies ermöglichen.
  • IBM Technical Disclosure Bulletin, Band 37, Nummer 04B betrifft ein Verfahren, Verzweigungen zu behandeln, bei dem, wenn eine Anzahl an bedingten Verzweigungsbefehlen die gleiche Zieladresse aufweist, die Bedingungen für jeden dieser Befehle gleichzeitig überprüft werden können. Dies wird erreicht, indem ein "bedingte Verzweigung zu vorherigem Ziel"-Befehl [engl.: "conditional branch to previous target" instruction] verwendet wird.
  • Das Patent der Vereinigten Staaten Nummer 4,200,927 betrifft einen Hochleistungscomputer, der Befehle vorab abruft und vorab kodiert, um sie sequenziell einer Ausführungseinheit bereitzustellen. Ein Funktionsmechanismus zum Vorverarbeiten von Befehlen weist drei separate Mechanismen auf, um Befehle abzurufen. Eine Anzahl von Verzweigungsbefehlstypen wird definiert und das offenbarte Verfahren schließt ein, zu raten, ob eine bedingte Verzweigung gewählt wird oder nicht.
  • "An Instruction Cache Design for use with a Delayed Branch" von A. R. Pleszkun & M. K. Farrens, Universität von Visconsin, betrifft einen Befehlscache, der einen PBR-Befehl zum Vorbereiten einer Verzweigung [engl: prepare to branch PBR instruction] verwendet. Dieser Befehl versucht eine Pipeline-Stufe arbeitend zu halten, nachdem eine bedingte Verzweigung aufgefunden worden ist, indem spezifiziert wird, dass bis zu sieben der folgenden Befehle unbedingt ausgeführt werden.
  • Gemäß einem Aspekt der vorliegenden Erfindung ist ein Computersystem zum Abrufen, Dekodieren und Ausführen von Befehlen bereitgestellt, das umfasst:
    eine Speicherschaltkreisanordnung zum Speichern einer Mehrzahl von Befehlen an entsprechenden Speicherstellen, wobei die Mehrzahl von Befehlen in Befehlsfolgen angeordnet ist, wobei jede Befehlsfolge einen ersten Befehl und eine Gruppe von nachfolgenden Befehlen umfasst,
    eine Befehlsabrufschaltkreisanordnung zum Abrufen einer Reihe von Befehlen von der Speicherschaltkreisanordnung und mit einer Angabeeinrichtung, um eine Angabe einer nächsten Adresse bereitzustellen, an der eine nächste Abrufoperation auszuführen ist,
    eine Ausführungsschaltkreisanordnung zum Ausführen abgerufener Befehle, wobei wenigstens einige der Befehlsfolgen jeweils aufweisen
    • (a) einen Befehl (SET) zum Festlegen einer Verzweigung, der eine Angabe über eine Zielstelle bereitstellt, von der ein nachfolgender Befehl abgerufen werden kann, wobei der nachfolgende Befehl von einer anderen Befehlsfolge ist,
    • (b) einen Befehl (DO) zum Bewirken einer Verzweigung,
    dadurch gekennzeichnet,
    dass wenigstens einige der Befehlsfolgen ferner aufweisen
    • (c) einen Bedingungsbefehl, der eine Bedingung definiert und festlegt, dass weitere, auszuführende Befehle nur dann neue Befehle sind, wenn die Bedingung erfüllt ist,
    dass die Befehlsabrufschaltkreisanordnung erste und zweite Befehlsabrufeinrichtungen umfasst, um nachfolgende Befehle bzw. neue Befehle abzurufen, und in Antwort auf ein Ausführen des Befehls (SET) zum Festlegen einer Verzweigung betrieben wird, um beginnend bei der Zielstelle nachfolgende Befehle von der Zeichenfolge, die den Befehl zum Festlegen einer Verzweigung enthält, und die neuen Befehle aus der anderen Befehlsfolge parallel abzurufen, während die nachfolgenden Befehle weiter ausgeführt werden,
    und dass das Computersystem eine Auswahlschaltkreisanordnung umfasst, um in Antwort auf ein Ausführen des Befehls (DO) zum Bewirken einer Verzweigung die Ausführungsschaltkreisanordnung zu veranlassen, die neuen Befehle auszuführen, wenn die von dem Bedingungsbefehl definierte Bedingung erfüllt ist, wobei die Auswahlschaltkreisanordnung betriebsfähig ist, eine Ausgewählte der ersten und zweiten Befehlsabrufeinrichtungen mit der Ausführungsschaltkreisanordnung zu verbinden.
  • Die Erfindung stellt auch ein Verfahren zum Betreiben eines Computers, um Befehle abzurufen, zu dekodieren und auszuführen, bereit, wobei der Computer eine Speicherschaltkreisanordnung aufweist, die eine Mehrzahl von Befehlen an entsprechenden Speicherstellen speichert, wobei die Mehrzahl von Befehlen in Befehlsfolgen angeordnet ist, wobei jede Befehlsfolge einen ersten Befehl und eine Gruppe von nachfolgenden Befehlen aufweist, wobei das Verfahren umfasst:
    Abrufen einer Reihe von Befehlen von der Speicherschaltkreisanordnung und Bereitstellen einer Angabe einer nächsten Adresse, an der eine nächste Abrufoperation auszuführen ist, wobei eine erste Befehlsabrufeinrichtungen nachfolgende Befehle abruft und eine zweite Befehlsabrufeinrichtung neue Befehle abruft,
    Dekodieren der Befehle,
    Ausführen jedes Befehls der Reihe nach, wobei wenigstens einige der Befehlsfolgen jeweils aufweisen
    • (a) einen Befehl (SET) zum Festlegen einer Verzweigung, der eine Angabe über eine Zielstelle bereitstellt, von der ein nachfolgender Befehl abgerufen werden kann, wobei der nachfolgende Befehl von einer anderen Befehlsfolge ist,
    • (b) einen Befehl zum Bewirken einer Verzweigung, und
    • (c) einen Bedingungsbefehl, der eine Bedingung für eine zu verwendende Verzweigung definiert,
    Speichern der Angabe der Zielstelle in einem Zielspeicher (65) nach einem Ausführen des Befehls zum Festlegen einer Verzweigung,
    paralleles Abrufen der nachfolgenden Befehle aus der Folge, die den Befehl zum Festlegen einer Verzweigung enthält, und der neuen Befehle aus der anderen Befehlsfolge beginnend bei der Zielstelle,
    Fortsetzen des Ausführens der nachfolgenden Befehle bis der Befehl (DO) zum Bewirken einer Verzweigung ausgeführt wird, was angibt, dass weitere, auszuführende Befehle die neuen Befehle sind, wenn die von dem Bedingungsbefehl definierte Bedingung erfüllt ist, und
    Antworten auf den Befehl (DO) zum Bewirken einer Verzweigung durch Beginnen der Ausführung der neuen Befehle, wobei der Befehl zum Bewirken einer Verzweigung auswählt, welche der ersten und zweiten Befehlsabrufeinrichtungen Befehle zur Ausführung zuführt.
  • Bei einer Ausführungsform umfasst die Befehlsabrufschaltkreisanordnung zwei Befehlspuffer, einen ersten, mit der Ausführungsschaltkreisanordnung verbundenen Puffer zum Speichern nachfolgender Befehle und einen zweiten Puffer zum Speichern neuer Befehle, wobei in Antwort auf ein Ausführen des Befehls (DO) zum Bewirken einer Verzweigung die Inhalte des zweiten Puffers in den ersten Puffer kopiert werden.
  • Bei der beschriebenen Ausführungsform weist die Befehlsabrufsschaltkreisanordnung zwei Befehlsabrufeinrichtungen auf, um jeweils den nachfolgenden Befehl und den neuen Befehl abzurufen, und wobei die Auswahlschaltkreisanordnung betriebsfähig ist, eine gewählte der Befehlsabrufeinrichtungen mit der Ausführungsschaltkreisanordnung zu verbinden.
  • Im einfachsten Fall kann der Zielspeicher die Speicheradresse der Zielstelle speichern. Um einen Kernel-Eintrag zuzulassen, kann der Befehl zum Festlegen einer Verzeigung die Zielstelle unter Verwendung eines implizierten Werts identifizieren, der ein spezielles Register adressiert, das die Speicheradresse des neuen Befehls speichert.
  • Um zu ermöglichen, Deskriptor-Verzweigungen auszuführen, kann der Zielspeicher einen Pointer zu einer Speicherstelle speichern, die die Speicheradresse der Zielstelle enthält.
  • Das Signal, um eine Verzweigung zu bewirken, wird erzeugt, wenn die Verzweigungsstelle, an der die Verzweigung vorzunehmen ist, identifiziert wird. Dies kann auf eine Anzahl von Arten durchgeführt werden. Beispielsweise kann ein weiterer Befehl in der Folge von vor der Verzweigungsstelle ausgeführten Befehle angeordnet sein, wobei in diesem Fall der genannte weitere Befehl die Verzweigungsstelle identifiziert, die in einem Verzweigungsstellenregister gespeichert ist. Die Inhalte des Verzeigungsstellenregisters können dann mit einem Befehlspointerregister verglichen werden, das eine Angabe der Adresse speichert, von der ein nächster Befehl normalerweise abgerufen würde, wobei das Signal, um eine Verzweigung zu bewirken, erzeugt wird, wenn die zwei gleich sind. Alternative Verfahren zum Identifizieren der Verzweigungsstelle sind ebenfalls hier diskutiert.
  • Die Bereitstellung eines weiteren Befehls, der die Verzweigungsstelle identifiziert, der aber vor der Verzweigungsstelle angeordnet ist, verringert die Anzahl von unerwünschten Befehlen, die abgerufen werden, bevor die Verzweigung gewählt wird.
  • Als weitere Alternative kann der Befehl zum Festlegen einer Verzweigung selbst die Verzweigungsstelle identifizieren, die in dem Verzweigungsstellenregister gespeichert ist, wodurch das Erfordernis eines weiteren Befehls beseitigt wird.
  • Bei einer speziell bevorzugten Ausführungsform wird die Verzweigungsstelle jedoch durch einen weiteren, speziell vorgesehenen, sich von dem Befehl zum Festlegen einer Verzweigung unterscheidenden Befehl identifiziert, der an der Verzweigungsstelle in der Folge von ausgeführten Befehlen angeordnet ist. Um zu ermöglichen, dass zusätzliche Verzweigungen bewirkt werden, kann dieser Befehl zum Bewirken einer Verzweigung selbst die Bedingung definieren, die zu erfüllen ist, so dass eine Verzweigung nur dann gewählt wird, wenn die Bedingung erfüllt ist, und nicht gewählt wird, wenn die Bedingung nicht erfüllt ist.
  • Dies sorgt für einen weiteren technischen Vorteil gegenüber dem oben diskutierten System gemäß EP-A-355069. In diesem System muss der Befehl selbst angeben, ob die Verzweigung bedingt ist oder nicht und bewirken, dass sich verschiedene unterschiedliche Zustandsdetektoren in einem betriebsbereiten Zustand befinden, um bereit zu sein, eine Bedingung zu erfassen. Die Bedingung selbst wird in einem Befehl definiert, der sich von dem Befehl zum Festlegen einer Verzweigung und von dem Trennbitbefehl unterscheidet.
  • Um die Notwendigkeit von Zustandsindikatoren zu vermeiden, stellt die vorliegende Erfindung gemäß einem anderen Aspekt ein Computersystem zum Abrufen, Dekodieren und Ausführen von Befehlen bereit, das umfasst:
    eine Speicherschaltkreisanordnung zum Speichern einer Mehrzahl von Befehlen an entsprechenden Speicherstellen, wobei die Mehrzahl von Befehlen in Befehlsfolgen angeordnet ist, wobei jede Folge einen ersten Befehl und eine Gruppe von nachfolgenden Befehlen umfasst,
    eine Befehlsabrufschaltkreisanordnung zum Abrufen einer Reihe von Befehlen aus der Speicherschaltkreisanordnung und mit einer Angabeeinrichtung, um eine Angabe einer nächsten Adresse bereitzustellen, an der eine nächste Abrufoperation auszuführen ist,
    eine Ausführungsschaltkreisanordnung zum Ausführen abgerufener Befehle, wobei wenigstens eine der Befehlsfolgen einen Befehl (SET) zum Festlegen einer Verzweigung, der eine Angabe über eine Zielstelle bereitstellt, von der ein nachfolgender Befehl abgerufen werden kann, wobei der nachfolgende Befehl von einer anderen Befehlsfolge ist, und einen Befehl (DO) zum Bewirken einer Verzweigung umfasst, der sich von dem Befehl zum Festlegen einer Verzweigung unterscheidet und an der Verzweigungsstelle angeordnet ist, nach der die neuen Befehle auszuführen sind, und wobei die Befehlsabrufschaltkreisanordnung in Antwort auf eine Ausführung des Befehls (SET) zum Festlegen einer Verzweigung betrieben wird, um bei der Zielstelle beginnend nachfolgende Befehle aus der Folge, die den Befehl zum Festlegen einer Verzweigung enthält, und neue Befehle aus der anderen Befehlsfolge parallel abzurufen, während die nachfolgenden Befehle weiter ausgeführt werden; und
    eine Auswahlschaltkreisanordnung, die in Antwort auf ein Ausführen des Befehls (DO) zum Bewirken einer Verzweigung die Ausführungsschaltkreisanordnung veranlasst, die neuen Befehle auszuführen, wenn eine durch den Befehl zum Bewirken einer Verzweigung festgelegte Bedingung erfüllt ist.
  • Gemäß einem weiteren Aspekt stellt die Erfindung auch ein Verfahren zum Betreiben eines Computers, um Befehle abzurufen, zu dekodieren und auszuführen, bereit, wobei der Computer eine Speicherschaltkreisanordnung aufweist, die eine Mehrzahl von Befehlen an entsprechenden Speicherstellen speichert, wobei die Mehrzahl von Befehlen in Befehlsfolgen angeordnet ist, wobei jede Folge einen ersten Befehl und eine Gruppe von nachfolgenden Befehlen aufweist, wobei das Verfahren umfasst:
    Abrufen einer Reihe von Befehlen aus der Speicherschaltkreisanordnung und Bereitstellen einer Angabe einer nächsten Adresse, an der eine nächste Abrufoperation auszuführen ist,
    Dekodieren der Befehle,
    Ausführen jedes Befehls der Reihe nach, wobei wenigstens eine der Befehlsfolgen einen Befehl (SET) zum Festlegen einer Verzweigung, der eine Angabe über eine Zielstelle bereitstellt, von der ein nachfolgender Befehl abgerufen werden kann, wobei der nachfolgende Befehl von einer anderen Befehlsfolge ist,
    paralleles Abrufen von nachfolgenden Befehlen aus der Befehlsfolge, die den Befehl zum Festlegen einer Verzweigung enthält, und von neuen Befehlen aus der anderen Befehlsfolge beginnend bei der Zielstelle bei Ausführung des Befehls zum Festlegen einer Verzweigung;
    paralleles Abrufen der nachfolgenden Befehle von der Zeichenfolge, die den Befehl zum Festlegen einer Verzweigung und die neuen Befehle von der anderen Befehlsfolge enthält, die an der Zielstelle beginnt,
    Fortsetzen des Ausführens der nachfolgenden Befehle, bis ein Befehl zum Bewirken einer Verzweigung ausgeführt wird, der an der Verzweigungsstelle angeordnet ist, nach der neue Befehle auszuführen sind, und der angibt, dass weitere, auszuführende Befehle die neuen Befehle sind, wenn eine durch den Befehl zum Bewirken einer Verzweigung festgelegte Bedingung erfüllt ist; und
    Antworten auf den Befehl zum Bewirken einer Verzweigung, indem eine Ausführung der neuen Befehle begonnen wird.
  • Als alternative Anordnung, um das Computersystem in die Lage zu versetzen, bedingte Verzweigungen auszuführen, kann es eine Schaltkreisanordnung aufweisen, um einen Zustandindikator in einem eines bestätigten Zustands und eines zurückgewiesenen Zustands zu speichern. Der bestätigte Zustand ist einer, bei dem weitere, auszuführende Befehle neue Befehle beginnend bei der Zielstelle sind. Der zurückgewiesene Zustand ist einer, bei dem weitere, auszuführende Befehle nachfolgende Befehle im Speicher und keine neuen Befehle sind. Einer der Zustände kann in Antwort auf ein Ausführen des Befehls zum Festlegen einer Verzweigung festgelegt sein, und der andere der Zustände kann in Antwort auf ein Ausführen eines zweiten Befehls selektiv festgelegt sein, der sich von dem Befehl zum Festlegen einer Verzweigung unterscheidet und einer Bedingung unterworfen ist.
  • Der zweite Befehl kann ein Bestätigungsbefehl sein, der den bestätigten Zustand einstellt, wenn die Bestätigungsbedingung erfüllt ist.
  • Alternativ könnte der zweite Befehl ein Zurückweisungsbefehl sein, der den zurückgewiesenen Zustand einstellt, wenn die Zurückweisungsbedingung erfüllt ist.
  • Die Bereitstellung dieser Zurückweisungs- oder Bestätigungsbefehle ermöglicht eine weitere Verbesserung dahingehend vorzunehmen, dass der Befehl zum Festlegen einer Verzweigung der erste Befehl der Folge ist und es eine Mehrzahl aneinander anschließender Befehlsfolgen gibt, wobei der Befehl zum Festlegen einer Verzweigung als weiterer Befehl dient, um das Signal zum Bewirken einer Verzweigung zu erzeugen, wenn sich der Zustandsindikator in dem bestätigten Zustand befindet. Es ist ersichtlich, dass der als weiterer Befehl dienende Befehl zum Festlegen einer Verzweigung auch den Zustand des Zustandsindikators zurück in seinem ursprünglichen Zustand ändert. Vorzugsweise kann der Beschädigungs-/Zurückweisungsbefehl so früh wie möglich in der Folge angeordnet werden (nachdem die Bedingung erzeugt worden ist), so dass der Ausführungsschaltkreisanordnung eine frühe Angabe bereitgestellt werden kann, welchen Weg die Verzweigung gehen wird.
  • Für ein besseres Verständnis der vorliegenden Erfindung und um zu zeigen, wie dieselbe umgesetzt werden kann, wird nun beispielshalber auf die beigefügten Zeichnungen Bezug genommen, in denen:
  • 1 eine schematische Veranschaulichung eines bekannten Verzweigungssystems der vorliegenden Erfindung für nicht bedingte Verzweigungen ist;
  • 2 eine schematische Veranschaulichung des Verzweigungssystems der vorliegenden Erfindung für nicht bedingte Verzweigungen ist;
  • 3 eine schematische Veranschaulichung des Verzweigungssystems der vorliegenden Erfindung für bedingte Verzweigungen ist;
  • 4 ein einfaches Blockdiagramm eines Prozessors mit Pipeline-Verarbeitung ist;
  • 5 ein Schaltkreisdiagramm einer Befehlsabrufeinrichtung ist;
  • 6 ein Schaltkreisdiagramm eines Computersystems zum Implementieren von Verzweigungsbefehlen ist;
  • 7 ein Schaltkreisdiagramm einer Befehlsabrufeinrichtung mit Kernel- und Deskriptor-Funktionen ist;
  • 8 ein schematisches Diagramm ist, das ein Aufrufen einer Prozedur veranschaulicht;
  • 9 eine Skizze ist, die Zustände zum Durchführen von Prozeduraufrufen veranschaulicht;
  • 10 ein Blockdiagramm ist, das eine alternative Implementierung eines Befehlsabrufschaltkreises veranschaulicht;
  • 11 ein Blockdiagramm ist, das eine Einrichtung zum nicht vorhersagenden Abrufen veranschaulicht; und
  • 12 ein Blockdiagramm ist, das eine Einrichtung zum vorhersagenden Abrufen veranschaulicht.
  • Zuerst wird auf die 2 und 3 Bezug genommen, um das Konzept zu erläutern, das dem Verzweigungssystem der vorliegenden Erfindung zugrunde liegt. 2 veranschaulicht drei Blöcke von Befehlen in einem Speicher, Block A, Block B und Block C. Jeder Block umfasst einen ersten Befehl, der im jeweiligen Fall ein Befehl Set B, Set C, Set D zum Festlegen einer Verzweigung ist, eine Reihe von nachfolgenden Befehlen, zum Beispiel Inst A1, Inst A2 ... Inst Ai – 1 in Block A, und wenigstens einen Befehl, der in jedem Fall ein Befehl zum Bewirken einer Verzeigung ist, der hier als D0 bezeichnet wird. Es wird angenommen, dass in einem Computersystem mit Pipeline-Verarbeitung die Reihe von Befehlen in Block A abgerufen, dekodiert und ausgeführt wird. Bei Ausführung des ersten Befehls Set B, wird eine Zielstelle für eine Verzweigung gespeichert, die in diesem Fall die Speicheradresse des ersten Befehls Set C von Block B identifiziert. In dieser Stufe wird jedoch abgesehen davon, die Zielstelle zu speichern und möglicherweise den Speicher, der den Block B enthält, für einen Zugriff einzustellen, beispielsweise indem die relevanten Speicheradressen in einen lokalen Cache bewegt werden, kein Vorgang durchgeführt. Die Befehle in Block A werden weiter abgerufen, dekodiert und ausgeführt, bis der letzte Befehl D0 ausgeführt wird. Die Ausführung dieses Befehls bewirkt, dass ein Signal zum Bewirken einer Verzweigung erzeugt wird, was die Ausführungseinheit veranlasst, die Zielstelle, die durch den Einstellbefehl Set B eingestellt worden ist, als ihren nächsten Befehl zu adressieren. Daher ist der nächste, vom Speicher abzurufende Befehl der erste Befehl Set C von Block B. Dies ist in 2 durch den gepunkteten Pfeil angegeben.
  • 2 veranschaulicht den Fall nicht bedingter Verzweigungen, das sind Verzweigungen, die zwangsläufig gewählt werden. 3 veranschaulicht die Position für bedingte Verzweigungen, das sind Verzweigungen, die abhängig davon, ob eine Bedingung, die beurteilt worden ist, erfüllt wird oder nicht, gewählt werden können oder nicht. 3 veranschaulicht den Fall, in dem ein dritter Befehl zusätzlich zu dem Befehl zum Festlegen ei ner Verzweigung und dem Befehl zum Bewirken einer Verzweigung, die oben unter Bezugnahme auf 2 beschrieben wurden, verwendet wird. In 3 wird dieser dritte Befehl als CONFIRM bezeichnet, auch wenn es im Folgenden ersichtlicher wird, dass es möglich ist, bedingte Verzweigungen zu implementieren, wobei ein Zurückweisungsbefehl mit entgegengesetzter Semantik verwendet wird.
  • Es ist auch möglich, bedingte Verzweigung unter Verwendung eines bedingten D0-Befehls zu implementieren.
  • 3 veranschaulicht drei Reihe von Befehlen, die im Speicher als Block A, Block B und Block C gespeichert sind. Block B ist als an den Block A anschließend gezeigt und ist im Speicher so angeordnet, dass, wenn Befehle aus dem Speicher unter Verwendung von sequenziellen Speicheradressen abgerufen werden, Befehle dann normalerweise in der Folge von Block A gefolgt von Block B abgerufen werden. Block C ist als irgendwo im Speicher angeordnet gezeigt. Wie in 2 umfasst jeder Block einen ersten Befehl, der ein Befehl zum Festlegen einer Verzweigung ist (Set C in Block A, Set D in Block B und Set in Block C). Block A umfasst zusätzlich eine Reihe von auszuführenden Befehlen, die einen Bestätigungsbefehl und den letzten Befehl umfassen, der der Befehl zum Bewirken einer Verzweigung ist. Wie oben unter Bezugnahme auf 2 beschrieben, werden Befehle abgerufen, dekodiert und ausgeführt. Wenn der erste Befehl von Bock A ausgeführt wird, wird er als Befehl zum Festlegen einer Verzweigung mit einer Zielstelle identifiziert, die die Speicheradresse für den ersten Befehl Set E in Block C identifiziert. Befehle in Block A werden weiterhin abgerufen, dekodiert und ausgeführt, bis der Bestätigungsbefehl erreicht wird, der einen ihm zugeordnete Bedingung aufweist. Wenn die Bedingung erfüllt ist, wird die Verzweigung bestätigt und die Ausführung des Befehls D0 zum Bewirken einer Verzweigung an dem Ende von Block A bewirkt, dass die durch die Zielstelle identifizierte Verzweigung, wie durch die gepunktete Linie in 3 angegeben, gewählt wird. Daher ist der nächste abzurufende, dekodierende auszuführende Befehl der erste Befehl Set E von Block C. Wenn die Bestätigungsbedingung nicht erfüllt ist, wird die Verzweigung nicht gewählt, wenn der Befehl zum Bewirken einer Verzweigung ausgeführt wird, aber stattdessen ist der nächste, abzurufende, zu dekodierende und auszuführende Befehl der erste Befehl Set D von Block B, der dem Block A im Speicher sequenziell folgt. Es ist auf einfache Weise zu erkennen, dass es erforderlich ist, sobald Betätigungsbefehle eingeführt worden sind, auch nicht bedingte Verzweigungen zu bestätigen, wie zum Beispiel der, der beispielshalber in Block C veranschaulicht ist, wo die Verzweigung immer bestätigt wird und keiner Bedingung unterworfen ist.
  • Zwecks der vorliegenden Beschreibung wird angenommen, dass jedes brauchbare Computersystem in der Lage sein muss, zusätzlich zu nicht bedingten Verzweigungen bedingte Verzweigungen zum implementieren. Es ist ersichtlich, dass, um Verzweigungen, wie oben unter Bezugnahme auf die 2 und 3 beschrieben, zu implementieren, ein Zielregister vorgesehen sein muss, um die Zielstelle zu speichern, die durch den Befehl zum Festlegen einer Verzweigung angegeben wird. Für bedingte Verzweigungen muss außerdem ein Zustandsindikator vorgesehen sein, um anzugeben, ob sich die Verzweigung in einem bestätigten Zustand befindet oder nicht. Eine detaillierte Erläuterung von Schaltkreisanordnungen, die in der Lage sind, die vorliegende Erfindung zu implementieren, erfolgt später. Zuerst folgt eine Erläuterung der verschiedenen unterschiedlichen Wege, auf die Verzweigungsbefehle gemäß der vorliegenden Erfindung implementiert werden können.
  • Verfahren A
    Figure 00170001
  • Dieses Schema ist unten umrissen. Es gibt drei charakteristische Befehle. Ein Zustandsbit wird benötigt, um zu spezifizieren, ob die Verzweigung bestätigt worden ist oder nicht. Es könnte mehrfache Bestätigungsbefehle geben, wobei die Verzweigung gewählt wird, wenn die für einen Bestätigungsbefehl bewertete Bedingung zutrifft ist.
  • Verfahren B
    Figure 00180001
  • Diese Technik ist mit Verfahren A abgesehen davon vergleichbar, dass die Verzweigung nicht bestätigt, sondern zurückgewiesen werden muss. Wie zuvor wird Zustandsbit benötigt, um festzuhalten, ob die Verzweigung zurückgewiesen worden ist oder nicht. Der Befehl zum Festlegen initialisiert das Verzweigungsbefehlsregister und setzt den Zustand auf Verzweigung.
  • Der do-Befehl führt die initialisierte Verzweigung aus, wenn der Zustand weiterhin auf Verzweigung steht. Bei dieser Semantik ist der Zurückweisungsbefehl optional, nicht bedingte Verzweigung würden keinen benötigen. Es kann mehr als einen Zurückweisungsbefehl geben, wenn einer die Verzweigung annulliert, wird die Verzweigung nicht gewählt.
  • Verfahren C
    Figure 00180002
  • Dieses Verfahren kombiniert die Bestätigungs- und do-Befehle, so dass do ein bedingtes do wird. Eine Zustandsmaschine ist nicht erforderlich, um festzuhalten, ob die Verzweigung zu wählen ist oder nicht.
  • Verfahren D
    Figure 00190001
  • Dieses Schema verzögert die Wirkung des do-Befehls um eine variable Größe ("Offset"). Dies ermöglicht es, das Abrufen unnötiger Befehle am Ende des Blocks von Befehlen zu beenden.
  • Das Ende des Blocks (Verzweigungsstelle) ist in dem do-Befehl entweder als Offset zu dem letzten Befehl in dem Block, als der erste Block in dem nachfolgenden Block oder als eine Befehlsanzahl zu bis zu dem Ende des Blocks angegeben. Es sind zwei Register erforderlich, eine Zustandsbit, um aufzuzeichnen, ob die Verzweigung bestätigt worden ist oder nicht, und ein Verzweigungsstellenregister, um die Blockendadresse oder einen Zählerstand als Angabe der Verzweigungsstelle zu speichern.
  • Verfahren E
    Figure 00190002
  • Diese Schema ist mit Verfahren D abgesehen davon vergleichbar, dass die Verzweigung nicht bestätigt, sondern bedingt zurückgewiesen wird. Der Zurückweisungsbefehl ist optional.
  • Verfahren F
    Figure 00200001
  • Dieses Schema ist mit Verfahren D abgesehen davon vergleichbar, dass die Verzweigungsstelle zusammen mit dem Befehl zum Festlegen spezifiziert wird, wobei die Erfordernis eines do-Befehls beseitigt wird. Die Verzweigung muss weiterhin bestätigt werden, ansonsten wird sie ignoriert. Zwei zusätzliche Register werden benötigt, ein Zustandsbit, um aufzuzeichnen, ob die Verzweigung bestätigt worden ist oder nicht, und ein Verzweigungsstellenregister, um den Blockabschlussoffset oder einen Zählerstand als Angabe der Verzweigungsstelle zu speichern.
  • Verfahren G
    Figure 00200002
  • Diese Schema ist mit Verfahren F abgesehen davon vergleichbar, dass die Verzweigung optional zurückgewiesen werden kann. Nicht bedingte Befehle benötigen keinen Zurückweisungsbefehl. Der gleiche zusätzliche Zustand ist erforderlich.
  • Verfahren H
    Figure 00200003
  • Figure 00210001
  • Dieses Verfahren ist eine Kombination des Verfahrens C und des Verfahrens D. Der Befehl zum Festlegen spezifiziert die Verzweigungszielstelle, während der do-Befehl sowohl eine Verzweigungsstelle als auch die Bedingung spezifiziert, ob die Verzweigung auszuführen ist. Zwei Zustandsobjekte sind erforderlich, um dies zu unterstützten, ein Verzweigungsstellenregister, um die Verzweigungsstelle zu speichern, und eines, um festzuhalten, ob die Verzweigung auszuführen ist oder nicht. Beide derselben werden durch den do-Befehl eingestellt. Wenn die Bedingung falsch ist, bleibt der Prozessor in dem Zustand ohne Verzweigung. Nicht bedingte Verzweigungen könnten entweder eine zutreffende Bedingung spezifizieren oder einen speziellen nicht bedingten do-Befehl.
  • Dieses Verfahren ist interessant, weil es nicht erfordert, die Verzweigungszielstelle für jeden Block festzulegen, wenn das Ziel aufeinander folgender Blöcke das gleiche ist. Dies geschieht in engen Schleifen. Beispielsweise ist der folgende Kode gültig.
  • Figure 00210002
  • Der Befehl zum Festlegen wird nur einmal ausgeführt. Das gleiche Verzweigungsziel wird für jede Durchlauf der Schleife benötigt.
  • Einige der oben genannten Verfahren können weiter modifiziert werden. Beispielsweise ist es ersichtlich, dass für eine Mehrzahl von aneinander grenzenden Blöcken im Speicher, wie beispielsweise in 3 veranschaulicht, wo der Befehl zum Festlegen einer Verzweigung der erste Befehl eines Blocks ist und der do-Befehl der letzte Befehl eines Blocks ist, es bei jeder Blockgrenze einen do-Befehl gibt, dem ein Befehl zum Festlegen unmittelbar folgt. Dies ist in 3 insbesondere dort veranschaulicht, wo der Block A den Block B trifft. Für Verfahren, die eine Angabe darüber speichern, ob sich das System in einem Verzweigungszustand befindet oder nicht, ist es möglich, den do-Befehl an dem Ende eines Blocks zu beseitigen und auf den Befehl zum Festlegen am Anfang eines anschließenden Blocks zurück zu greifen. Daher könnend die Verfahren A und B modifiziert werden, um einen anderen do-Befehl zu beseitigen und den Befehl zum Festlegen wie folgt zu interpretieren. Wenn sich das System in einem Verzweigungszustand befindet, wird der nachfolgende Befehl zum Festlegen am Anfang des nächsten Blocks ausgeführt, als ob es dort einen do-Befehl gäbe, um die Verzweigung zu bewirken. Wenn sich das System nicht in einem Verzweigungszustand befindet, wird, wenn sich der Befehl zum Festlegen am Anfang des nächsten Blocks ausgeführt wird, die Verzweigung nicht gewählt und der Befehl zum Festlegen wird auf normale Weise ausgeführt, um eine Verzweigung mit einer Zielstelle festzulegen.
  • Nun wird ein Computersystem zum Implementieren von Verzweigungen beschrieben, das einen Befehl zum Trennen von Verzweigungen verwendet. 4 ist ein vereinfachtes Blockdiagramm eines Computersystems mit Pipeline-Verarbeitung. Diese zeigt einen Speicher 41, der bei diesem Beispiel ein herkömmliches RAM umfasst. Das Computersystem weist einen Adressbus 39 und einen Datenbus 43 auf, die mit dem Speicher 41 verbunden sind. Es ist ersichtlich, dass Lese- und Schreib-Steuersignale für den Speicher erforderlich sind, diese sind in 4 aber nicht veranschaulicht. Der Speicher 41 speichert ein Programm, das Folgen von Befehlen an unterschiedlichen adressierbaren Stellen umfasst, wie bereits oben unter Bezugnahme auf die 2 und 3 beschrieben. Der Speicher 41 kann auch Daten speichern. Der Datenbus 43 überträgt Datenwerte zu und von dem Speicher 41. Der Adressbus 39 überträgt Speicheradressdaten für Lese- und Schreiboperationen. Das Computersystem umfasst einen Schaltkreis 10 zum Abrufen von Befehlen, der ausgelegt ist, dem Speicher über eine Adressleitung 12 Adressen zuzuführen und über eine Datenleitung 14 Befehle vom Speicher zu empfangen. Ein Dekodierschaltkreis 16 ist angeschlossen, um Befehle zu empfangen, die von dem Abrufschaltkreis abgerufen werden und auf einer Befehlsleitung 22 zugeführt werden, und dekodiert diese. Der Dekodierschaltkreis 16 führt Befehle einem Ausführungsschaltkreis 18 zu, der Befehle ausführt und einen Ergebnisschreibschaltkreis 20 steuert, um Ergebnisse der Ausführung in ein temporäres Register 11 zu schreiben. Für die Zwecke der vorliegenden Erfindung sind der Dekodierschaltkreis 16, der Ausführungsschaltkreis 18, der Ergebnisschreibschaltkreis 20 und die Register 11 herkömmlich und werden hier nicht weiter beschrieben. Sie werden zusammen im Folgenden als der Prozessor 17 bezeichnet.
  • Der Abrufschaltkreis 10 ist ausgelegt, um vier Bytes gleichzeitig aus dem Speicher 41 abzurufen und um Befehle über die Befehlsleitung 22 dem Dekodierschaltkreis 16 bereit zu stellen.
  • Dort, wo die Befehle von variabler Länge sind, ist es ersichtlich, dass ein Abgleichmechanismus in dem Schaltkreis zum Abrufen von Befehlen erforderlich ist, um mit Befehlen umzugehen, die nicht genau vier Bytes lang sind und um diese Befehle korrekt abzugleichen. Eine Schaltkreisanordnung, um dies zu erreichen, ist in unserer parallel anhängige europäischen Patentanmeldung mit der Nummer 95 303 608.4 beschrieben. Die vorliegende Erfindung kann mit Befehlsgruppen gleicher Länge oder variabler Länge implementiert werden.
  • Der Abrufschaltkreis 10 umfasst zwei Einrichtungen zum Abrufen von Befehlen, von denen eine nun unter Bezugnahme auf 5 beschrieben wird. Die Datenleitung 14a und die Adressleitung 12a sind mit entsprechenden, in 4 veranschaulichten Leitungen 14 und 12 verbunden. Die Einrichtung zum Abrufen weist einen Abrufpointer 65 auf, der eine 32-Bit-Verriegelung umfasst, die die nächste Adresse im Speicher enthält, aus der ein 32-Bit-Wort zu lesen ist. Wann immer ein Wert aus dem Speicher gelesen wird, wird der Abrufpointer 65 normalerweise über eine Inkrementiereinheit 38 um vier Bytes auf eine neue Pointeradresse erhöht. Die Abrufeinrichtung ist ausgelegt, um vom Speicher Befehle auf der Datenleitung 14 und einen Befehlspuffer 66 zu lesen, von dem sie entlang der Befehlsleitung 22 zu dem Prozessor 17 ausgegeben werden. Für Befehle variabler Länge ist ein Längenindikator 74 vorgesehen, der auf einer Leitung 70 eine Angabe von dem Befehlspuffer 66 über die Länge des Befehls, der ausgegeben worden ist, empfängt. Der Längenindikator 74 erzeugt ein Mengensignal 86, das die Anzahl von Bytes angibt, die von dem ausgegebenen Befehl verwendet wird. Ein Bytezähler 75 speichert zu jedem Zeitpunkt einen Zählerstand der Anzahl von Bytes in dem Befehlspuffer 66 und erzeugt ein Auswahlsignal 24, das festlegt, ob von dem Speicher 41 abgerufene Bytes in den Befehlspuffer 66 eingefügt werden müssen. Der Befehlspuffer 66 empfängt auch ein Beseitigungssignal 26, das bewirkt, dass ein Befehl aus dem Puffer entfernt wird. Nicht entfernte Befehle werden weitergeschoben, wodurch am Ende des Puffers Raum für mehr Bytes aus dem Speicher 41 geschaffen wird. Der Befehlspuffer 66 spricht auch auf ein Speichersignal 28, das bewirkt, dass Bytes aus dem Speicher in dem Puffer an der Stelle gespeichert werden, die von dem Auswahlsignal 24 angegeben wird. Das Speichersignal 28 wird aus einem Verriegelungssignal 30 erhalten, das verwendet wird, um anzugeben, dass Daten aus dem Speicher gespeichert werden können.
  • Der Abrufpointer 65 wird mit einer Adresse auf der Leitung 32 von einem Abrufmultiplexer 34 zugeführt, der einen Eingang aufweist, der angeschlossen ist, um eine nächste Adresse auf Leitung 36 von der Inkrementiereinheit 38 zu empfangen. Die Inkrementiereinheit 38 aktualisiert die Abrufadresse auf übliche Weise, bei diesem Beispiel jedes Mal um vier Bytes. Der andere Eingang des Abrufmultiplexers 34 ist mit einer Startleitung 40 verbunden, auf der eine neue Adresse zugeführt wird, von der aus ausgehend ein Abrufen zu beginnen ist. Es ist auf einfache Weise ersichtlich, dass zum Verzweigen die neue Adresse aus der Zielstelle erhalten wird, die in dem Befehl zum Festlegen einer Verzweigung identifiziert ist. Ein Startsignal 42 steuert den Abrufmultiplexer 34 dahingehend, ein Abrufen ausgehend von einer neuen Adresse auf der Startleitung 40 zu beginnen. Der Verriegelungseingang des Abrufpointers 65 ist mit einem OR-Gatter 44 verbunden, das das Startsignal 42 und das Verriegelungssignal empfängt, um ein Verriegeln nachfolgender Adressen in den Abrufpointer 65 hinein zu steuern. Das Haltesignal 30 wird auch einem Gatter 46 zugeführt, das mit dem Verriegelungseingang des Bytezählers 75 verbunden ist und das an seinem anderen Eingang ein Nächster-Signal 48 empfängt, das verwendet wird, um anzugeben, dass ein Befehl aus dem Befehlspuffer 66 gelesen worden ist, und das daher den geeigneten Bytezählerstand verriegelt.
  • Das Startsignal 42 wird auch dem Löscheingang des Bytezählers 75 und dem Löscheingang einer Stoppverriegelung 50 zugeführt. Die Stoppverriegelung 50 empfängt an der Stopp-An-Leitung 52 die Adresse, nach der keine weiteren Befehle abzurufen sind. Diese Adresse wird in die Stoppverriegelung 50 unter Steuerung eines Stoppsignals 54 gesteuert. Die Ausgabe der Stoppverriegelung 50 wird einem Komparator 56 zugeführt, der auf der Leitung 12 auch die Speicheradresse empfängt. Der Komparator 12 ermittelt, ob die Speicheradresse auf der Leitung 12 die bei der Stoppverriegelung 50 gespeicherte Adresse erreicht hat oder nicht. Die Ausgabe des Komparators 56 wird einem Gatter 58 zugeführt, das auch die Ausgabe einer Einheit 80 zum Überprüfen des Füllstands erhält. Die Einheit 80 zum Überprüfen des Füllstands empfängt die Ausgabe des Bytezählers 75 und aktiviert seinen Eingang immer dann, wenn der Puffer 66 voll ist. Der Ausgang des Gatters 58 stellt auf einer Leitung 82 ein Gefüllt-Signal bereit, das angibt, dass entweder der Befehlspuffer 66 voll ist, oder dass die Stopp-Adresse erreicht worden ist. Wenn das Gefüllt-Signal 82 aktiviert ist, werden keine weiteren Speicheranfragen durchgeführt. Die Ausgabe des Bytezählers 75 wird auch einer zweiten Inkrementiereinheit 84 zugeführt, deren Ausgabe einem Eingang eines Zählmultiplexers 85 zugeführt wird. Der andere Eingang des Zählmultiplexers 85 wird von einer Subtraktionseinheit 90 versorgt, die die Ausgabe des Bytezählers 75 und die Ausgabe des Längenindikators 74 empfängt. Die Subtraktionseinheit 90 aktiviert ein Mehr-Signal 92 immer dann, wenn der Befehlspuffer nicht wenigstens einen Befehl enthält.
  • Der Betrieb der Einrichtung zum Abrufen von Befehlen wird nun beschrieben. Eine Startadresse, die die Speicheradresse ist, die die ersten vier Bytes am Anfang eine Blocks von Befehlen angibt, wird auf der Leitung 40 dem Abrufmultiplexer 34 zugeführt. Das Startsignal 42 wird aktiviert, um die Stoppverriegelung 50 zu löschen und die Startadresse in dem Abrufpointer 65 zu verriegeln. An dieser Adresse wird ein Speicherzugriff durchgeführt und die ersten vier Bytes werden entlang der Datenleitung 14 dem Befehlspuffer 66 zugeführt. Das Verriegelungssignal 30 bewirkt, dass diese vier Bytes in dem Puffer gespeichert werden, und verriegelt die nächste Adresse in den Abrufpointer 65 hinein. Diese nächste Adresse ist nun die Startadresse durch die Inkrementiereinheit 38 inkrementiert um vier Bytes, sofern, wie später vollständiger beschrieben, eine Verzweigung nicht gewählt wird. Der Befehlspuffer 66 führt über die Leitung 22 einen Befehl dem Längenindikator 74 zu und gibt diesem die Länge des Befehls auf der Leitung 70 an. Der Ausgang des Längenindikators 74 führt das Mengensignal 86 zu, um die Größe des Befehls anzugeben, der entfernt worden ist, und versorgt auch einen Eingang der Subtraktionseinheit 90, die dem Bytezähler einen Zählerstand bereitstellt, um diesen in die Lage zu versetzen, das Auswahlsignal 24 zu aktivieren, um zu ermitteln, ob die nächsten vier, aus dem Speicher abgerufenen Bytes in dem Puffer gespeichert werden sollten.
  • Wie bereits beschrieben worden ist, findet die Entfernung eines Befehls aus dem Puffer auf der Leitung 22 unter Steuerung des Nächster-Signals 48 statt. Wenn nicht wenigstens ein Befehl in dem Befehlspuffer gespeichert ist, wird das Mehr-Signal 92 aktiviert. Wenn der Befehlspuffer voll ist, bewirkt die Einheit 80 zur Füllstandsüberprüfung, dass das Gefüllt-Signal 82 aktiviert wird, um weitere Speicherzugriffe zu verhindern.
  • Die Stoppverriegelung 50 wird verwendet, um eine Adresse zu speichern, an der die Einrichtung zum Abrufen nicht vorbei gehen sollte. Bei Beginn des Abrufens an der Startadresse wird die Stoppverriegelung 50 durch das Startsignal 42 auf eine ungültige Adresse zurückgesetzt. Das Speichern einer speziellen Adresse in der Stoppverriegelung 50 beendet das Abrufen. Die Verwendung der Stoppverriegelung 50 wird in der folgenden Beschreibung der Anwendung der Abrufeinheit klarer.
  • Wenn ein Verzweigungsbefehl abgerufen, dekodiert und ausgeführt worden ist, wird die durch den Verzweigungsbefehl identifizierte Zielstelle verwendet, um der Einrichtung zum Abrufen von Befehlen auf der Leitung 40 die Startadresse bereitzustellen, wenn das Signal zum Bewirken einer Verzweigung zugeführt worden ist, um zu bewirken, dass eine Verzeigung gewählt wird. Die Abrufeinheit beginnt daher das Abrufen von Befehlen beginnend bei der neuen Zielstelle.
  • Der Abrufschaltkreis 10 von 4 weist zwei Einrichtungen zum Abrufen von Befehlen des oben unter Bezugnahme auf 5 beschriebenen Typs auf. Nun wird auf 6 Bezug genommen, um detaillierter zu beschreiben, wie Verzweigungsbefehle die Aktivität der Einrichtungen zum Abrufen von Befehlen steuern. In 6 sind die Einrichtungen zum Abrufen als Abrufeinrichtung A und Abrufeinrichtung B veranschaulicht. Das System weist eine Entscheidungseinheit 100 auf, die zwischen der Abrufeinrichtung A und der Abrufeinrichtung B zum Zugriff auf den Speicher unter Verwendung der Gefüllt- und Mehr-Signale von jeder Abrufeinrichtung entscheidet, um zu ermitteln, welche Daten benötigt. Die Gefüllt- und Mehr-Signale für die Abrufeinrichtung A werden an der Entscheidungseinrichtung als Mehr-A und Gefüllt-A bezeichnet und die Gefüllt- und Mehr-Signale für die Abrufeinrichtung B werden an der Entscheidungseinrichtung als Mehr-B und Gefüllt-B bezeichnet. Bezugszeichen, die die Abrufeinrichtung A betreffen, entsprechen denjenigen für die in 5 gezeigte Einrichtung zum Abrufen von Befehlen. Diese Bezugszeichen werden für die Abrufeinrichtung B nicht wiederholt, da diese genau die gleichen Signale und Betrieb wie die Abrufeinrichtung A aufweist. Die Adressausgaben 12a der Abrufeinrichtung A und B werden über einen Adressmultiplexer 102 der Adressleitung 12 zugeführt. Der Multiplexer wird durch ein Sel-A-Signal auf der Leitung 104 von der Entscheidungseinrichtung 100 gesteuert, die der Abrufeinrichtung Priorität verleiht, die aktuell Befehle zur Ausführung abruft. Es ist ersichtlich, dass eine der Abrufeinrichtungen verwendet wird, um Befehle in dem aktuellen Block (und möglicherweise in dem nächsten sequenziellen Block) abzurufen, und die andere Abrufeinrichtung verwendet wird, um beginnend bei der Zielstelle Befehle abzurufen. Beide Abrufeinrichtungen empfangen Befehle über die Datenleitung 14 und führen ihre Befehle auf der Leitung 22a einem Auswahlmultiplexer 104 zu. Der Ausgang 22 des Multiplexers 104 ist mit dem Prozessor 17 verbunden, der Befehle dekodiert und Ausführungen und die Ergebnisse in das temporäre Register 11 schreibt. Der Prozessor 17 führt das nächste Signal zu, das auf die Leitung 48 den Einrichtungen zum Abrufen von Befehlen zugeführt wird. Der Prozessor 17 empfängt auf der Leitung 106 ein Wartesignal, das aus den Mehr-Signalen 92 der Abrufeinrichtungen abgeleitet wird. So wie der Prozessor 17 Befehle ausführt, wird ein Befehlspointerregister 108 aktualisiert, um auf den nächsten auszuführenden Befehl zu weisen, indem eine Ausgabe auf der Leitung 110 für neue IP [Befehlspointer; engl.: Instruction Pointer] über einen Pointermultiplexer 112 zugeführt wird. Ein Verriegelungs-IP-Signal auf der Leitung 114 gibt an, wenn das Befehlspointerregister 108 zu aktualisieren ist. Der Ausgang des Befehlspointerregisters 108 stellt den aktuellen Wert des Befehlspointers einer Leitung 116 für aktuelle IP bereit.
  • Das Computersystem von 6 weist auch ein Zielpointerregister 118, um eine durch einen Befehl zum Festlegen einer Verzweigung identifizierte Zielstelle zu speichern, und ein Verzweigungspointerregister 120 auf, um einen Wert zu speichern, der die Stelle identifiziert, an der die Verzweigung zu wählen ist. Das Computersystem weist auch einen aktiven Abrufeinrichtungsschalter 122 auf, der steuert, welche der Abrufeinrichtungen A und B dem Prozessor 17 Befehle zuführt. Es gibt auch eine Vergleichseinheit 124, die angeschlossen ist, um die Ausgaben des Verzweigungspointerregisters 120 und des Befehlspointerregisters 108 zu empfangen. Eine Überprüfungsausgabe von dem Prozessor 17 auf der Leitung 126 wird über ein Gatter 128 zugeführt, um den Pointermultiplexer 112 und den aktiven Abrufeinrichtungsschalter 122 zu steuern. Das Gatter 128 weist auch eine Eingabe auf der Leitung 130 von der Vergleichseinheit 124 auf.
  • Der Ausführungsschaltkreis des Prozessors 17 weist eine Ausführungseinheit 136 für Befehle zum Festlegen einer Verzweigung und eine Ausführungseinheit 142 für do-Befehle auf. Das Computersystem weist auch einen Zustandsindikator 132 auf, um eine Angabe des Zustands des Systems zu speichern, das heißt, ob es sich in einem Verzweigungszustand befindet oder nicht.
  • Die übrigen, in 6 veranschaulichten Gatter sind hier nicht beschrieben, weil sie lediglich der Vollständigkeit halber veranschaulicht sind, um auf klarere Weise die Verbindungen zwischen den Signalleitungen darzulegen.
  • Der Betrieb des Computersystems von 6 wird nun beschrieben. Es wird angenommen, dass der Prozessor 17 den Block A von 3 ausführt. Die Startadresse, die den Anfang des ersten Befehls von Block A identifiziert, wird der Abrufeinrichtung A zugeführt. Der erste Befehl wird auf der Leitung 22a dem Multiplexer 104 zugeführt, der durch ein Signal auf der Leitung 134 von dem aktiven Abrufeinrichtungsschalter 122 gesteuert wird, so dass Befehle von der Abrufeinrichtung A dem Prozessor 17 zugeführt werden. Der erste Befehl ist ein Befehl Set C zum Festlegen einer Verzweigung, der von der Ausführungseinheit 136 zum Festlegen einer Verzweigung identifiziert wird, die einen Teil des Prozessors 17 bildet. Die Ausführungseinheit 136 zum Festlegen einer Verzweigung erzeugt die geeignete Zielstelle auf der Zielleitung 138 und ein Einstellsignal auf der Leitung 140. Das Einstellsignal wird verwendet, um das Startsignal 42 für die Abrufeinrichtung B zu aktivieren, dass diese Abrufeinrichtung initialisiert wird, um den Beginn, Be fehle von der Zielstelle abzurufen, einzuleiten. Die Zielstelle wird auch in dem Zielpointerregister 118 gespeichert. Befehle im Block A werden weiterhin von der Abrufeinrichtung A aus dem Speicher dem Prozessor 17 zugeführt und ausgeführt. Bei Ausführung des Bestätigungsbefehls wird die Bedingung für den Bestätigungsbefehl überprüft und der Zustandsindikator 132 wird in geeigneter Weise eingestellt. Die Bedingungsleitung 45 gibt den Zustand des Systems an, der, wie später beschrieben, selektiv den Stoppleitungen 54 und den Abrufeinrichtungen zugeführt wird. Die folgende Beschreibung geht davon aus, dass die Bedingung für den Bestätigungszustand positiv war, so dass sich das System in einem Verzweigungszustand befindet. Nach dem Abrufen, Dekodieren und Ausführen weiterer Befehle bis zu und einschließlich von Inst A –1 in Block A ist der nächste Befehl ein Befehl zum Bewirken einer Verzweigung. Dieser wird von der Ausführungseinheit 142 für do-Befehle ausgeführt, die einen Teil des Prozessors 17 bildet. Bei Ausführung des Befehls zum Bewirken einer Verzweigung durch diese Einheit 142 wird die Verzweigungsstelle berechnet (die erste Adresse des ersten Befehls am Anfang des nächsten sequenziellen Blocks) und wird über die Leitung 144 dem Verzweigungspointerregister 120 zugeführt. Der Verzweigungspunkt wird auch den Stopp-Haltekreisen 50 der Abrufeinrichtungen zugeführt. In diesem Fall wird das Stopp-Signal 54 für die Abrufeinrichtung A über die Bedingungsleitung 145 aktiviert und nicht für die Abrufeinrichtung B. Daher hält die Abrufeinrichtung A die Stopp-Adresse, so dass sie aufhört, abzurufen, wenn diese Adresse erreicht wird. Wenn die Verzweigungsstelle, die in dem Verzweigungspointerregister 21 gespeichert ist, der Adresse des nächsten Befehls entspricht, der in dem Befehlspointerregister 108 gespeichert ist, bewirkt die Ausgabe der Vergleichseinheit 24, dass ein Signal zum Bewirken einer Verzweigung auf der Leitung 146 aktiviert wird. Dies steuert den Befehlspointermultiplexer 112 dahingehend, dass das Befehlspointerregister 108 ausgehend von dem Zielpointerregister 118 aktualisiert wird, das, wie man sich erinnert, die Zielstelle speichert, die in dem Befehl zum Festlegen einer Verzweigung identifiziert ist. Das Signal 146 zum Bewirken einer Verzweigung wird ferner dem aktiven Abrufeinrichtungsschalter 112 zugeführt, der bewirkt, dass die Abrufeinrichtung B die aktive Abrufeinrichtung wird, die beginnt, ausgehend von der Zielstelle abzurufen, so dass die Verzweigung gewählt wird. Die Ausgabe des aktiven Abrufeinrichtungsschalters 112 steuert den Befehlsmultiplexer 104, seine Eingänge umzuschalten.
  • Wenn die Bedingung, die für den Bestätigungsbefehl überprüft worden ist, angibt, dass die Verzweigung nicht zu wählen ist, wird bei Ausführung des do-Befehls durch die Ausführungseinheit 142 für do-Befehle eine ungültige Adresse auf der Verzweigungsleitung 144 zur Speicherung in dem Stopp-Haltekreis 50 der aktiven Abrufeinrichtung, die Abrufeinrichtung A, zu geführt. Dabei ruft die aktive Abrufeinrichtung weiter sequenzielle Befehle aus dem Speicher ab, so dass die Verzweigung nicht gewählt wird. Auf vergleichbare Weise wird die ungültige Adresse, die als Verzweigungsstelle in dem Verzweigungspointerregister 120 gespeichert ist, niemals mit der Adresse übereinstimmen, die in dem Befehlspointerregister 108 gespeichert ist, so dass die Vergleichseinheit niemals bewirkt, dass das Signal 146 zum Bewirken einer Verzweigung aktiviert wird.
  • Die obige Beschreibung, die das Computersystem von 6 betrifft, gilt für ein System, das ein Verzweigungspointerregister und einen Zustandsindikator zum Speichern des Zustands des Systems aufweist. Wie früher erwähnt, können diese weggelassen werden, wenn ein Verfahren, wie zum Beispiel das Verfahren C, verwendet wird, bei dem das Signal zum Bewirken einer Verzweigung ein Bedingungssignal ist, das an der Verzweigungsstelle angeordnet ist. Der Befehl zum Festlegen einer Verzweigung gibt die Zielstelle in das Zielpointerregister 118, wie oben beschrieben, ein. Wenn der Befehl zum Bewirken einer Verzweigung ausgeführt wird, wird die in dem Befehl definierte Bedingung überprüft. Wenn die Bedingung zutrifft, wird das Signal 146 zum Bewirken einer Verzweigung zugeführt, um zu bewirken, dass die Abrufeinrichtung B die aktive Abrufeinrichtung wird, die beginnt, ausgehend von der Zielstelle abzurufen, so dass die Verzweigung gewählt wird. Die Zielstelle bleibt in dem Zielpointerregister 118 gültig und, statt die Abrufeinrichtung A so zu steuern, dass sie wie oben beschrieben aufhört, abzurufen, wird sie veranlasst, ausgehend von der Zielstelle das Abrufen neuer Befehle zu beginnen. Dies hat den Vorteil, dass, wenn eine weitere Verzweigung erforderlich sein sollte, die eine durch den Befehl zum Festlegen definierte Zielstelle aufweist, die neuen Befehle bereits abgerufen worden sind.
  • Wenn ein Befehl zum Bewirken einer Verzweigung, für den die in dem Befehl definierte Bedingung zutrifft, ausgeführt worden ist, werden alle Befehle, die nach dem Befehl zum Bewirken einer Verzweigung in die Ausführungseinheit 142 gelangen, gelöscht, weil sie nicht ausgeführt werden sollten. Stattdessen wird die Ausführung der neuen Befehle begonnen.
  • Daher wechselt die Abrufeinrichtung A und die Abrufeinrichtung B bei Ausführung eines Befehls zum Bewirken einer Verzweigung, für den die Bedingung erfüllt ist, ihre Rollen.
  • Wenn ein Befehl zum Bewirken einer Verzweigung ausgeführt wird, für den die Bedingung festlegt, dass die Verzweigung nicht zu wählen ist, gibt es keine Änderung der Rollen der Abrufeinrichtungen.
  • Bis zur Ausführung des nächsten Befehls zum Einstellen, der eine neue Zielstelle in dem Zielpointerregister 118 neu einstellt, bleibt die Zielstelle in dem Zielpointerregister 118 gültig und gespeichert.
  • 11 ist ein Blockdiagramm, das dieses Prinzip veranschaulicht. In 11 bezeichnen die Bezugszeichen 39 und 43, wie in vorherigen Figuren, den Adressbus und den Datenbus. Die Abrufschaltkreisanordnung 10 in 4 ist durch eine Ausführungsbefehlsabrufeinrichtung 402 und eine Zielbefehlsabrufeinrichtung 404 implementiert. Diese sind als Abrufeinrichtung E bzw. Abrufeinrichtung T bezeichnet. Gleiche Elemente in jeder Abrufeinrichtung weisen das gleiche Bezugszeichen in geeigneter Weise mit einem Suffix E oder T versehen auf. Jede Abruf einrichtung umfasst einen Abrufpointer 406, um eine Angabe der nächsten Adresse zu speichern, von der aus ausgehend Befehle abzurufen sind, und einen Startpointer 408, um die Zielstelle zu speichern, die den ersten Befehl in einer neuen Folge von Befehlen angibt. Jede Abrufeinrichtung weist auch einen Puffer 410 auf, um eine Reihe von Befehlen zu speichern.
  • Das Bezugszeichen 118 bezeichnet, wie zuvor, das Zielpointerregister, das in Antwort auf die Ausführung eines Befehls zum Festlegen einer Verzweigung eine Angabe der Zielstelle speichert. Das Bezugszeichen 412 bezeichnet einen Auswahlschaltkreis, um eine der Abrufeinrichtungen auszuwählen, die als die Ausführungsabrufeinrichtung E arbeitet, um ihre Befehle dem Dekodierschaltkreis 16 von 4 zuzuführen.
  • Ein Sortierer 414 empfängt das Signal 146 zum Bewirken einer Verzweigung und weist einen Zustand auf, der sich bei Empfang dieses Signal ändert, um zu bewirken, dass sich die Rolle der Abrufeinrichtungen, wie oben beschrieben, ändern, indem der Auswahlschaltkreis 412 über die Leitung 411 gesteuert wird.
  • Der Sortierer 414 kann den Abrufeinrichtungen 408E, 408T jeweils über Leitungen 418E, 418T auch Signale bereitstellen. Wenn das Signal zum Bewirken einer Verzweigung auftritt, führt der Sortierer auf der Leitung 418E ein Signal zu, um zu bewirken, dass die Abrufeinrichtung E beginnt, Befehle von der Zielstelle zu erhalten.
  • Manchmal ist es nützlich, mehr als zwei Einrichtungen zum Abrufen von Befehlen vorzusehen, um bedingte Befehle, die wahrscheinlich erfüllt werden, und bedingte Befehle, die wahrscheinlich nicht erfüllt werden, zu berücksichtigen. Dies ist insbesondere dort der Fall, wo die Ausführungseinheit mit einer Pipeline-Verarbeitung ausgestattet ist und die Bestimmung der Bedingung zum Bewirken einer Verzweigung in einer letzten Stufe in der Pipeline durchgeführt wird.
  • 12 ist ein Blockdiagramm, das ein System zum Implementieren einer derartigen Anordnung veranschaulicht. In 12 bezeichnen gleiche Bezugszeichen gleiche Teile wie in 11 für die Ausführungsbefehlsabrufeinrichtung und die Zielbefehlsabrufeinrichtung und die anderen Merkmale, die den 11 und 12 gemeinsam sind.
  • Das System von 12 weist zusätzlich eine Fehlvorhersageabrufeinrichtung 403, die Abrufeinrichtung M, auf. Diese weist ebenso ein Abrufpointerregister 406M zum Speichern der Adresse, von der aus ausgehend nächste Befehle abzurufen sind, einen Puffer 410M, um eine Reihe von Befehlen zu speichern, und ein Startpointerregister 408M auf, um die Startadresse zu speichern, von der aus ausgehend Befehle abzurufen sind. Der Auswahlschaltkreis 412 ist ausgelegt, um eine der drei Abrufeinrichtungen auszuwählen, die als die Ausführungsabrufeinrichtung E arbeitet, um der Dekodierschaltkreisanordnung 16 Befehle zuzuführen.
  • Wie zuvor ruft die Ausführungsabrufeinrichtung 402 die normale Folge von Befehlen zur Zufuhr zu der Ausführungseinheit ab. Die Zielabrufeinrichtung 404 ruft beginnend bei der Zielsstelle Befehle ab und speichert daher den nächsten Verzweigungszielbefehl.
  • Zusätzlich zu diesen zwei Abrufeinrichtungen ruft die Fehlvorhersageabrufeinrichtung 403 Befehle ab, die an einer Verzweigung angeordnet sind, die aus einem bedingten Befehl resultiert, der wahrscheinlich nicht erfüllt werden wird. Dies wird als ein als nicht zu verwendender vorhergesagter Arm einer Verzweigung bezeichnet. Wenn nachfolgend festgestellt wird, dass ein bedingter Befehl falsch vorhergesagt wurde, ist die korrekte Folge von Befehlen in dieser Abrufeinrichtung gespeichert.
  • Bei Ausführung eines Befehls zum Festlegen einer Verzweigung wird wie zuvor eine Angabe der Zielstelle in das Zielpointerregister 118 geladen. Die Zielabrufeinrichtung 404 wird zu rückgesetzt und beginnt, ausgehend von der Zielstelle Befehle abzurufen.
  • Wenn ein bedingter DO-Befehl, der wahrscheinlich nicht gewählt wird, (oder ein nicht bedingter DO-Befehl) zu der Ausführungseinheit gesendet wird, werden die Funktionen der drei Abrufeinrichtungen so geändert, dass die Ausführungsabrufeinrichtung 402 die Fehlvorhersageabrufeinrichtung wird, die Zielabrufeinrichtung 404 die Ausführungsabrufeinrichtung wird und die Fehlvorhersageabrufeinrichtung 403 die Zielabrufeinrichtung wird. Die neue Zielabrufeinrichtung (formal die Fehlvorhersageabrufeinrichtung M) wird zurückgesetzt und beginnt, ausgehend von der in dem Zielpointerregister 118 gespeicherten Zielstelle Befehle abzurufen. Wenn ein bedingter DO-Befehl, der eine Bedingung angibt, die wahrscheinlich nicht erfüllt werden wird, zu der Ausführungseinheit gesendet wird, ändern sich die Rollen der Ziel- und Vorhersageabrufeinrichtungen wie folgt. Die Zielabrufeinrichtung, Abrufeinrichtung T, wird die Fehlvorhersageabrufeinrichtung und die Fehlvorhersageabrufeinrichtung, Abrufeinrichtung M wird die Zielabrufeinrichtung. Die neue Zielabrufeinrichtung wird zurückgesetzt und beginnt, an der Zielstelle, die in dem Zielpointerregister 118 gespeichert ist, Befehle abzurufen.
  • Eine Detektion einer Absendung dieses bedingten DO-Befehls zu der Ausführungseinheit wird durch eine Detektionseinheit 413 vorgenommen. Diese führt dem Sortierer 414 Vorhersage-Gewählt- und Vorhersage-Nicht gewählt-Signale zu.
  • Wenn ein DO-Befehl durch die Ausführungseinheit ausgeführt wird, wird ermittelt, ob die Verzweigung zu wählen ist oder nicht. Wenn dies mit der Vorhersage übereinstimmt, dann ist alles in Ordnung. Wenn jedoch die Auswahl der Verzweigung nicht korrekt vorhergesagt worden ist, werden alle Befehle, die in die Ausführungseinheit nach dem nicht korrekt vorhergesagten bedingten DO-Befehl gelangt sind, gelöscht, und die Fehlvorhersageabrufeinrichtung und die Ausführungsabrufein richtung wechseln die Rollen. Hierfür empfängt der Sortierer ein Fehlvorhergesagt-Signal von der Ausführungseinheit.
  • Diese Anordnung kann auf vielerlei unterschiedliche Arten implementiert werden, ohne dabei das Konzept zu beeinträchtigen. Beispielsweise könnten die Inhalte der ausgehenden Zieleinrichtung zu der eingehenden Zieleinrichtung kopiert werden, wenn die Abrufeinrichtungen umbenannt werden. Dies bedeutet, dass die neue Zielabrufeinrichtung keine Zeit vergeudet, diese Befehle erneut abzurufen. Sie würde das Abrufen von dort aus fortsetzen, wo die ausgehende Zielabrufeinrichtung aufgehört hat, vorausgesetzt sie ist nicht voll. Alternativ müssen die Abrufeinrichtungen nicht dynamisch umbenannt werden, aber ihre Inhalte werden wie geeignet übertragen. Dies würde jede Erfordernis an einem Zustand in dem Sortierer 414 beseitigen.
  • Die oben beschriebenen Einrichtungen zum Abrufen von Befehlen und Schaltkreisanordnung sind in der Lage, sogenannte einfache Verzweigungen zu implementieren. Andere spezialisierte Typen von Verzweigungsbefehlen sind ebenfalls brauchbar. Einer dieser ist eine Kernel-Verzweigung. Viele Prozessoren weisen zwei Betriebsarten auf, eine für normale Programme und eine für spezielle Programme. Diese werden als Benutzer- und Kernel-Modi bezeichnet. Ein Kernel-Modus weist mehrere ihm verfügbare Befehle auf, die verwendet werden, um den Betrieb des Computers zu beeinflussen. Diese Trennung ist erforderlich, um zu verhindern, dass ein fehlerhaftes oder schädliches Benutzermodusprogramm Schaden an anderen Benutzermodusprogrammen verursacht. Kernel-Modusprogramme können als korrekt vorausgesetzt werden. Daher wird ein Verfahren benötigt, um von einem Benutzer- zu einem Kernel-Programmmodus zu wechseln. Dies wird bewerkstelligt, indem eine Verzweigung zu einer speziellen Zielstelle, die als Kernel-Eingangsstelle bezeichnet wird, vorgenommen wird. Bei der vorliegenden Erfindung wird dies unter Verwendung eines speziellen Befehls zum Festlegen einer Verzweigung implementiert, der die Verzweigungszielstelle nicht explizit spezifiziert, sondern einen implizierten Wert verwendet. Irgendein Zustand muss verwendet werden, um zu spezifi zieren, dass, wenn die Verzweigung auftritt, der Prozess zum Kernel-Modus wechseln muss.
  • Eine andere spezialisierte Art eines Verzweigungsbefehls ist eine sogenannte Deskriptor-Verzweigung, die ein Aufruf über einen Pointer darstellt. Dieser Verzweigungsbefehl spezifiziert eine Adresse im Speicher, aber es ist nicht die Adresse, die die Zielstelle der Verzweigung angibt. Stattdessen ist es eine Speicherstelle, die die Zielstelle für die Verzweigung enthält.
  • 7 veranschaulicht eine Einrichtung zum Abrufen von Befehlen, die verwendet werden kann, um Kernel- und Deskriptor-Verzweigungen zu implementieren. Gleiche Bezugszeichen in der 7 bezeichnen gleiche Teile in 5. Die Abrufeinrichtung von 7 weist die folgende zusätzliche Schaltkreisanordnung auf. Eine Kernel-Verriegelung 200 speichert die Adresse zur Verwendung zum Aufrufen des Kernels und kann nur mittels eines sicheren Kodes programmiert werden. Sie empfängt an ihrem Verriegelungseingang ein Speicher-Kernel-Signal 202, um die Kernel-Adresse auf der Leitung 204 zu verriegeln. Ein Kernel-Multiplexer 206 empfängt an einem Eingang desselben die Kernel-Adresse und die normale Startadresse auf der Leitung 40 an dem anderen Eingang desselben. Der Kernel-Multiplexer 206 wird durch ein Verzweigungs-Kernel-Signal auf der Leitung 208 gesteuert. Das Verzweigungs-Kernel-Signal wird zu dem gleichen Zeitpunkt aktiviert, an dem das Startsignal 40 normalerweise aktiviert würde, um eine Verzweigung zu initialisieren. Wenn das Signal aktiviert ist, wird die in der Kernel-Verriegelung 200 gespeicherte Adresse in dem Abrufhaltekreis 65 über den Multiplexer 206 und einen weiteren Multiplexer 208 gespeichert, anstelle der durch das Startsignal zugeführten Adresse.
  • Die Abrufeinrichtung umfasst auch eine Deskriptor-Verriegelung 210, die angibt, ob der Abrufpointer 65 eine Befehlsadresse oder eine Deskriptor-Adresse speichert. Er wird durch das Desktriptor-Signal auf der Leitung 212 gesteuert. Wenn die Deskriptor-Verriegelung 210 angibt, dass die Adresse eine De skriptor-Adresse ist, wird sie über ein Pointer-Register 214 aus in dem Puffer 66 gespeicherten Daten geladen. Der Multiplexer 208 steuert, ob die dem Abrufpointer 65 zugeführte Adresse von dem Pointer-Register 214 oder von dem Multiplexer 206 stammt. Eine Deskriptor-Angabe-Einheit 216 signalisiert, ob der Puffer 66 genug Information für das Pointer-Register 214 speichert oder nicht, um die korrekte Dekriptor-Adresse zu speichern.
  • Die Abrufeinrichtung von 7 ist daher in der Lage Kernel-Verzweigungen und Deskriptor-Verzweigungen auszuführen.
  • Ein anderer Verzweigungsbefehlstyp ist ein Prozeduraufruf. Dieser erfordert es, dass ein geeigneter Befehlspointerwert so gesichert wird, dass die Prozedur zurück zu dem Teil eines Programms zurückkehrt, von dem sie ausgegangen ist. Daher kann die Prozedur aus unterschiedlichen Teilen des Programms aufgerufen werden. 8 veranschaulicht die Flussgrafik für einen Prozeduraufruf. 8 veranschaulicht ein Programm, das einen Teil 1, einen Teil 2 und eine Prozedur enthält. Der Teil 1 weist sequenzielle Blöcke von Befehlen Block A, Block B auf, zwischen denen ein Aufrufbefehl angeordnet ist. Auf vergleichbare Weise weist der Teil 2 sequenziell Blöcke von Befehlen Block C, Block D auf, zwischen denen sich ein Aufrufbefehl befindet. Die Prozedur weist eine Folge von Prozedurbefehlen PROC und einen Rücksprungbefehl auf. Die zwei Teile des Kodes, sowohl der Teil 1 als auch der Teil 2 rufen die Prozedur auf und beide kehren zu ihren entsprechenden Steuerflüssen zurück. Der Aufrufbefehl kann als spezieller Typ eines Befehls zum Festlegen oder zum Ausführen einer Verzweigung implementiert sein, der nicht nur eine Zielstelle (SET) oder eine Verzweigungsstelle (D0) identifiziert, sondern auch bewirkt, dass die Rücksprungadresse des ersten Befehls des nächsten sequenziellen Blocks in einem Rücksprungregister gespeichert wird. Dann kann der Rücksprungbefehl als spezieller Typ eines Befehls zum Festlegen implementiert sein, der eine Verzweigung zu der Rücksprungadresse bewirkt, die in dem Register gespeichert worden ist.
  • 9 gibt das Zustandsregister an, das erforderlich ist, um Prozeduraufrufe zu implementieren. Dieses weist Register 230 mit einem Auswahlregister 132 auf, die durch ein Registerauswahlsignal 234 gesteuert werden. Bei Ausführung eines Befehls zum Festlegen oder Bewirken (oder Abrufen) einer Verzweigung wird die Adresse des nächsten Befehls nach dem Aufrufbefehl, zu der das Programm zurückspringen soll, in Antwort auf das Speichersignal 238 in den Registern 230 auf der Verzweigungsleitung 236 gespeichert. Wenn der spezielle Befehl zum Festlegen (oder Zurückspringen) implementiert ist, wird die Verzweigung zu der Zielstelle bewirkt, die in dem spezifizierten Register 230 gespeichert ist.
  • Bei der oben beschriebenen Ausführungsform gibt es zwei Einrichtungen zum Abrufen von Befehlen, die beide als aktive Abrufeinrichtung in Abhängigkeit des Zustands des Schaltermultiplexers arbeiten können. 10 veranschaulicht in Blockdiagrammform eine alternative Ausführungsform, bei der der Befehlsabrufschaltkreis zwei Einrichtungen zum Abrufen von Befehlen umfasst, von denen eine immer die aktive Abrufeinrichtung ist. Diese Ausführungsform wird unter Bezugnahme auf 10 nun klarer beschrieben. Gleiche Bezugszeichen in 10 bezeichnen gleiche Teile von 6, aber mit Strichindizes versehen. Somit veranschaulicht 10 einen Prozessor 17' mit Pipeline-Verarbeitung, der eine Ausführungsschaltkreisanordnung mit einem Ausführungsschaltkreis 136' für Befehle zum Festlegen einer Verzweigung und einem Ausführungsschaltkreis 142' für Befehle zum Bewirken einer Verzweigung aufweist. Es gibt ein Befehlspointerregister 108' und ein Zielpointerregester 118'. Der Abrufschaltkreis weist eine aktive Abrufeinrichtung eine Zielabrufeinrichtung auf. Die aktive Abrufeinrichtung weist einen Abrufpointer 65' und einen Befehlspuffer 66' auf. Auf vergleichbare Weise weist die Zielabrufeinrichtung einen Abrufpointer 65'' und einen Zielbefehlspuffer 66'' auf.
  • Bei Ausführung eines Befehls zum Festlegen einer Verzweigung wird das Zielpointerregister 118' initialisiert, um den Abrufpointer 65' der Zielabrufeinrichtung anzuweisen, ausgehend von der Zielstelle mit dem Abrufen von Befehlen zu beginnen. Zwischenzeitlich ruft die aktive Abrufeinrichtung Befehle sequenziell aus dem Speicher ab und führt diese dem Prozessor 17' zu. Bei Ausführung des Befehls zum Bewirken einer Verzweigung dient eine Kopiereinheit 300 dazu, die Inhalte des Zielbefehlspuffer 66' der Zielabrufeinrichtung zu dem Befehlspuffer 66' der aktiven Abrufeinrichtung zu kopieren, so dass die nächsten, dem Prozessor 17' zuzuführenden Befehle diejenigen sind, die von der Zielstelle stammen.
  • Weitere Einzelheiten einer Implementierung des Schaltkreises von 10 sind hier nicht ausgeführt, weil sie aus der oben hinsichtlich des Schaltkreises der 5, 6 und 7 gegebenen Information ersichtlich ist, wie der Schaltkreis von 10 implementiert werden könnte.

Claims (17)

  1. Computersystem zum Abrufen, Dekodieren und Ausführen von Befehlen mit: einer Speicherschaltkreisanordnung (41) zum Speichern einer Mehrzahl von Befehlen an entsprechenden Speicherstellen, wobei die Mehrzahl von Befehlen in Befehlsfolgen angeordnet ist, wobei jede Befehlsfolge einen ersten Befehl und eine Gruppe von nachfolgenden Befehlen umfasst, einer Befehlsabrufschaltkreisanordnung (10) zum Abrufen einer Reihe von Befehlen von der Speicherschaltkreisanordnung (41) und mit einer Angabeeinrichtung (65), um eine Angabe einer nächsten Adresse bereitzustellen, an der ein nächster Abrufbefehl auszuführen ist, einer Ausführungsschaltkreisanordnung (18) zum Ausführen abgerufener Befehle, wobei wenigstens einige der Befehlsfolgen jeweils aufweisen (a) einen Befehl (SET) zum Festlegen einer Verzweigung, der eine Angabe über eine Zielstelle bereitstellt, von der ein nachfolgender Befehl abgerufen werden kann, wobei der nachfolgende Befehl von einer anderen Befehlsfolge ist, (b) einen Befehl (DO) zum Bewirken einer Verzweigung, dadurch gekennzeichnet, dass wenigstens einige der Befehlsfolgen ferner aufweisen (c) einen Bedingungsbefehl, der eine Bedingung definiert und festlegt, dass weitere, auszuführende Befehle nur dann neue Befehle sind, wenn die Bedingung erfüllt ist, dass die Befehlsabrufschaltkreisanordnung erste und zweite Befehlsabrufeinrichtungen umfasst, um nachfolgende Befehle bzw. neue Befehle abzurufen, und in Antwort auf ein Ausführen des Befehls (SET) zum Festlegen einer Verzweigung betrieben wird, um beginnend von der Zielstelle nachfolgende Befehle aus der Folge, die den Befehl zum Festlegen einer Verzweigung enthält, und die neuen Befehle aus der anderen Befehlsfolge parallel abzurufen, während die nachfolgenden Befehle weiter ausgeführt werden, und dass das Computersystem eine Auswahlschaltkreisanordnung (112, 122, 104) umfasst, um in Antwort auf ein Ausführen des Befehls (DO) zum Bewirken einer Verzweigung die Ausführungsschaltkreisanordnung (18) zu veranlassen, die neuen Befehle auszuführen, wenn die von dem Bedingungsbefehl definierte Bedingung erfüllt ist, wobei die Auswahlschaltkreisanordnung betriebsfähig ist, eine Ausgewählte der ersten und zweiten Befehlsabrufeinrichtungen mit der Ausführungsschaltkreisanordnung zu verbinden.
  2. Computersystem nach Anspruch 1, bei dem die Befehlsabrufschaltkreisanordnung (10) zwei Befehlspuffer (66) umfasst, einen ersten, mit der Ausführungsschaltkreisanordnung (18) verbundenen Puffer (66') zum Speichern nachfolgender Befehle und einen zweiten Puffer (66'') zum Speichern neuer Befehle, wobei in Antwort auf ein Ausführen des Befehls (DO) zum Bewirken einer Verzweigung die Inhalte des zweiten Puffers in den ersten Puffer kopiert werden.
  3. Computersystem nach Anspruch 1, bei dem Befehlsabrufsschaltkreisanordnung (10) eine dritte Befehlsabrufeinrichtungen (Abrufeinrichtung M) zum Abrufen von Befehlen zum Implementieren von prädiktiven Bedingungsbefehlen umfasst.
  4. Computersystem nach Anspruch 1, 2 oder 3, das ein erstes Register (108) aufweist, um eine Angabe der Adresse zu Speichern, von der ein nächster Befehl abzurufen ist.
  5. Computersystem nach einem der vorherigen Ansprüche, bei dem ein Zielspeicher (65) die Adresse speichert, von der der erste Befehl einer Zeichenfolge neuer Befehle abzurufen ist.
  6. Computersystem nach einem der Ansprüche 1 bis 4, bei dem der Befehl zum Festlegen einer Verzweigung ein spezielles Register (118) identifiziert, das die Adresse speichert, von der der erste Befehl einer Zeichenfolge neuer Befehle abzurufen ist.
  7. Computersystem nach einem der Ansprüche 1 bis 4, bei dem ein Zielspeicher (200) die Adresse speichert, von der der erste Befehl einer Zeichenfolge neuer Befehle abzurufen ist.
  8. Computersystem nach einem der vorherigen Ansprüche, das eine Dekodierungsschaltkreisanordnung (16) umfasst, um die abgerufenen Befehle zu dekodieren, wobei die Befehlsabrufschaltkreisanordnung (10), die Dekodierungsschaltkreisanordnung (16) und die Ausführungsschaltkreisanordnung (18) in einer Pipeline angeordnet sind.
  9. Computersystem nach einem der vorherigen Ansprüche, bei dem der Befehl (DO) zum Bewirken einer Verzweigung an der Verzweigungsstelle angeordnet ist, nach der die neuen Befehle auszuführen sind.
  10. Computersystem nach einem der Ansprüche 1 bis 8, bei dem der Befehl (DO) zum Bewirken einer Verzweigung in der Zeichenfolge vor der Verzweigungsstelle angeordnet ist, nach der weitere, auszuführende Befehle die neuen Befehle sind, wobei der Befehl (DO) zum Bewirken einer Verzweigung die Verzweigungsstelle angibt und wobei das Computersystem ein Verzweigungsstellenregister (120) umfasst, um die Verzweigungsstelle zu speichern.
  11. Computersystem nach einem der vorherigen Ansprüche, das ein Rücksprungregister (230) umfasst, zum Speichern einer Rücksprungadresse, die die Adresse des nächsten Befehls nach der Verzweigungsstelle ist, wobei der Befehl (DO) zum Bewirken einer Verzweigung wirksam ist, die Rücksprungadresse in dem Rücksprungregister (230) zu speichern, und wobei Befehl zum Bewirken einer Verzweigung das Rücksprungregister identifiziert, um die Zielstelle anzugeben.
  12. Verfahren zum Betreiben eines Computers, um Befehle abzurufen, zu dekodieren und auszuführen, wobei der Computer eine Speicherschaltkreisanordnung (41) aufweist, die eine Mehrzahl von Befehlen an entsprechenden Speicherstellen speichert, wobei die Mehrzahl von Befehlen in Befehlsfolgen angeordnet ist, wobei jede Befehlsfolge einen ersten Befehl und eine Gruppe von nachfolgenden Befehlen aufweist, wobei das Verfahren umfasst: Abrufen einer Reihe von Befehlen von der Speicherschaltkreisanordnung (41) und Bereitstellen einer Angabe einer nächsten Adresse, an der eine nächste Abrufoperation auszuführen ist, wobei eine erste Befehlsabrufeinrichtungen nachfolgende Befehle abruft und eine zweite Befehlsabrufeinrichtung neue Befehle abruft, Dekodieren der Befehle, Ausführen jedes Befehls der Reihe nach, wobei wenigstens einige der Befehlsfolgen jeweils aufweisen (a) einen Befehl (SET) zum Festlegen einer Verzweigung, der eine Angabe über eine Zielstelle bereitstellt, von der ein nachfolgender Befehl abgerufen werden kann, wobei der nachfolgende Befehl von einer anderen Befehlsfolge ist, (b) einen Befehl (DO) zum Bewirken einer Verzweigung, und (c) einen Bedingungsbefehl, der eine Bedingung für eine zu verwendende Verzweigung definiert, Speichern der Angabe der Zielstelle in einem Zielspeicher (65) nach einem Ausführen des Befehls zum Festlegen einer Verzweigung, paralleles Abrufen der nachfolgenden Befehle aus der Folge, die den Befehl zum Festlegen einer Verzweigung enthält, und die neuen Befehle von der anderen Befehlsfolge beginnend bei der Zielstelle, Fortsetzen des Ausführens der nachfolgenden Befehle bis der Befehl (DO) zum Bewirken einer Verzweigung ausgeführt wird, was angibt, dass weitere, auszuführende Befehle die neuen Befehle sind, wenn die von dem Bedingungsbefehl definierte Bedingung erfüllt ist, und Antworten auf den Befehl (DO) zum Bewirken einer Verzweigung durch Beginnen der Ausführung der neuen Befehle, wobei der Befehl zum Bewirken einer Verzweigung auswählt, welche der ersten und zweiten Befehlsabrufeinrichtungen Befehle zur Ausführung zuführt.
  13. Verfahren nach Anspruch 12, bei dem die nachfolgenden Befehle in einem ersten Puffer (66') gespeichert sind und die neuen Befehle in einem zweiten Puffer (66'') gespeichert sind, und bei dem der Befehl (DO) zum Bewirken einer Verzweigung bewirkt, dass die Inhalte des zweiten Puffers in den ersten Puffer kopiert werden.
  14. Verfahren nach Anspruch 12 oder 13, bei dem der Befehl zum Bewirken einer Verzweigung als die Zielstelle die Adresse identifiziert, von der der erste Befehl einer Zeichenfolge neuer Befehle abzurufen ist.
  15. Verfahren nach einem der Ansprüche 12 bis 14, bei dem der Befehl zum Bewirken einer Verzweigung ein spezielles Register (118) identifiziert, das die Zielstelle speichert.
  16. Verfahren nach einem der Ansprüche 12 bis 14, bei dem der Befehl zum Bewirken einer Verzweigung die Adresse einer Speicherstelle identifiziert, die die Zielstelle speichert.
  17. Verfahren nach Anspruch 12, bei dem ein Ausführen des Befehls zum Bewirken einer Verzweigung bewirkt, dass eine Rücksprungadresse in einem Rücksprungregister (230) gespeichert wird, und bei dem der Befehl zum Festlegen einer Verzweigung das Rücksprungregister identifiziert, um die Zielstelle anzugeben.
DE69534148T 1994-06-22 1995-06-16 Rechnersystem zur Ausführung von Verzweigungsbefehlen Expired - Fee Related DE69534148T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9412487A GB9412487D0 (en) 1994-06-22 1994-06-22 A computer system for executing branch instructions
GB9412487 1994-06-22

Publications (2)

Publication Number Publication Date
DE69534148D1 DE69534148D1 (de) 2005-05-19
DE69534148T2 true DE69534148T2 (de) 2006-02-16

Family

ID=10757116

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69522385T Expired - Lifetime DE69522385D1 (de) 1994-06-22 1995-06-16 Computersystem zur Ausführung von Verzweigungsbefehlen
DE69534148T Expired - Fee Related DE69534148T2 (de) 1994-06-22 1995-06-16 Rechnersystem zur Ausführung von Verzweigungsbefehlen

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE69522385T Expired - Lifetime DE69522385D1 (de) 1994-06-22 1995-06-16 Computersystem zur Ausführung von Verzweigungsbefehlen

Country Status (5)

Country Link
US (2) US5961637A (de)
EP (2) EP0689131B1 (de)
JP (1) JP2746549B2 (de)
DE (2) DE69522385D1 (de)
GB (1) GB9412487D0 (de)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9412487D0 (en) * 1994-06-22 1994-08-10 Inmos Ltd A computer system for executing branch instructions
KR100240591B1 (ko) * 1996-11-06 2000-03-02 김영환 분기명령어의 효율적인 처리를 위한 브랜치 타겟 버퍼 및 그를 이용한 분기 예측방법
US6157988A (en) * 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US6467035B2 (en) * 1997-09-08 2002-10-15 Agere Systems Guardian Corp. System and method for performing table look-ups using a multiple data fetch architecture
JP3741870B2 (ja) * 1998-08-07 2006-02-01 富士通株式会社 命令及びデータの先読み方法、マイクロコントローラ、疑似命令検出回路
US6611910B2 (en) * 1998-10-12 2003-08-26 Idea Corporation Method for processing branch operations
US6233676B1 (en) * 1999-03-18 2001-05-15 Ip-First, L.L.C. Apparatus and method for fast forward branch
JP3606435B2 (ja) * 1999-09-29 2005-01-05 富士通株式会社 モードを変更する分岐命令を制御する命令処理装置および方法
US6912650B2 (en) * 2000-03-21 2005-06-28 Fujitsu Limited Pre-prefetching target of following branch instruction based on past history
US6772325B1 (en) * 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
US6446197B1 (en) 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6820193B1 (en) * 1999-12-17 2004-11-16 Koninklijke Philips Electronics N.V. Branch instructions with decoupled condition and address
US6604191B1 (en) * 2000-02-04 2003-08-05 International Business Machines Corporation Method and apparatus for accelerating instruction fetching for a processor
US7085915B1 (en) * 2000-02-29 2006-08-01 International Business Machines Corporation Programmable prefetching of instructions for a processor executing a non-procedural program
GB0025053D0 (en) 2000-10-12 2000-11-29 Sgs Thomson Microelectronics Compiling computer programs including branch instructions
GB0025052D0 (en) 2000-10-12 2000-11-29 Sgs Thomson Microelectronics Compiling computer programs including branch instructions
FR2821450B1 (fr) * 2001-02-27 2004-07-09 St Microelectronics Sa Procede de gestion d'instructions de branchement au sein d'un processeur, en particulier un processeur de traitement numerique du signal, et processeur correspondant
JP3804941B2 (ja) * 2002-06-28 2006-08-02 富士通株式会社 命令フェッチ制御装置
DE10254653B4 (de) * 2002-11-22 2009-05-28 Infineon Technologies Ag Vorrichtung zur Steuerung der Verarbeitung von Datenwörtern eines Datenstroms
US20050055544A1 (en) * 2003-07-30 2005-03-10 International Business Machines Corporation Central processing unit having a module for processing of function calls
JP2005078234A (ja) * 2003-08-29 2005-03-24 Renesas Technology Corp 情報処理装置
GB2409060B (en) * 2003-12-09 2006-08-09 Advanced Risc Mach Ltd Moving data between registers of different register data stores
GB2409068A (en) * 2003-12-09 2005-06-15 Advanced Risc Mach Ltd Data element size control within parallel lanes of processing
GB2409066B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2411975B (en) * 2003-12-09 2006-10-04 Advanced Risc Mach Ltd Data processing apparatus and method for performing arithmetic operations in SIMD data processing
GB2411974C (en) * 2003-12-09 2009-09-23 Advanced Risc Mach Ltd Data shift operations
GB2411976B (en) * 2003-12-09 2006-07-19 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409065B (en) * 2003-12-09 2006-10-25 Advanced Risc Mach Ltd Multiplexing operations in SIMD processing
GB2409063B (en) * 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409064B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd A data processing apparatus and method for performing in parallel a data processing operation on data elements
GB2411973B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
GB2409067B (en) * 2003-12-09 2006-12-13 Advanced Risc Mach Ltd Endianess compensation within a SIMD data processing system
GB2409061B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd Table lookup operation within a data processing system
GB2410097B (en) * 2004-01-13 2006-11-01 Advanced Risc Mach Ltd A data processing apparatus and method for performing data processing operations on floating point data elements
GB2411978B (en) * 2004-03-10 2007-04-04 Advanced Risc Mach Ltd Inserting bits within a data word
US20050223202A1 (en) * 2004-03-31 2005-10-06 Intel Corporation Branch prediction in a pipelined processor
US20050257035A1 (en) * 2004-05-12 2005-11-17 International Business Machines Corporation Linked instruction buffering of basic blocks for asynchronous predicted taken branches
JP3760999B2 (ja) * 2004-06-15 2006-03-29 セイコーエプソン株式会社 情報処理装置、マイクロコンピュータ及び電子機器
US9557994B2 (en) 2004-07-13 2017-01-31 Arm Limited Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
US8046569B2 (en) * 2007-04-30 2011-10-25 Hewlett-Packard Development Company, L.P. Processing element having dual control stores to minimize branch latency
US20090276537A1 (en) * 2007-12-20 2009-11-05 Deverick James W Mechanisms for role negotiation in the establishment of secure communication channels in peer-to-peer environments
US8671202B2 (en) 2007-12-20 2014-03-11 Ooma, Inc. Mechanisms for role negotiation in the establishment of secure communication channels in peer-to-peer environments
US9952869B2 (en) 2009-11-04 2018-04-24 Ceva D.S.P. Ltd. System and method for using a branch mis-prediction buffer
US20130305017A1 (en) * 2012-05-08 2013-11-14 Alexander Rabinovitch Compiled control code parallelization by hardware treatment of data dependency
US9535701B2 (en) * 2014-01-29 2017-01-03 Telefonaktiebolaget Lm Ericsson (Publ) Efficient use of branch delay slots and branch prediction in pipelined computer architectures
US9430245B2 (en) 2014-03-28 2016-08-30 Telefonaktiebolaget Lm Ericsson (Publ) Efficient branch predictor history recovery in pipelined computer architectures employing branch prediction and branch delay slots of variable size
GB2551548B (en) * 2016-06-22 2019-05-08 Advanced Risc Mach Ltd Register restoring branch instruction
JP6374454B2 (ja) * 2016-08-08 2018-08-15 株式会社Dnpハイパーテック モジュールの暗号化/復号化プログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3426330A (en) * 1966-02-14 1969-02-04 Burroughs Corp Central data processor
US3551895A (en) * 1968-01-15 1970-12-29 Ibm Look-ahead branch detection system
US3573854A (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
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4742451A (en) * 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
US4974155A (en) 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system
DE4345028A1 (de) * 1993-05-06 1994-11-10 Hewlett Packard Co Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen
GB9412487D0 (en) * 1994-06-22 1994-08-10 Inmos Ltd A computer system for executing branch instructions

Also Published As

Publication number Publication date
EP1003095B1 (de) 2005-04-13
JPH0844562A (ja) 1996-02-16
GB9412487D0 (en) 1994-08-10
US5961637A (en) 1999-10-05
DE69522385D1 (de) 2001-10-04
EP0689131A1 (de) 1995-12-27
EP0689131B1 (de) 2001-08-29
US7047399B2 (en) 2006-05-16
JP2746549B2 (ja) 1998-05-06
DE69534148D1 (de) 2005-05-19
EP1003095A2 (de) 2000-05-24
EP1003095A3 (de) 2001-02-28
US20020078330A1 (en) 2002-06-20

Similar Documents

Publication Publication Date Title
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69908193T2 (de) Ausführung von speicher- und ladeoperationen mittels einer linkdatei
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE69932066T2 (de) Mechanismus zur "store-to-load forwarding"
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE4447238B4 (de) Schaltungsanordnung und Verfahren zum Gewinnen von Informationen zur Verzweigungsvorhersage
DE3116100C2 (de) Datenverarbeitungseinheit
DE69724771T2 (de) Zentralprozessoreinheit mit x86 und dsp kern und einem dsp funktions-dekoder zum abbilden von x 86-befehlen auf dsp-befehle
DE10085375B4 (de) Verfahren und Einrichtung für einen pipeline-verschachtelten Multi-Thread-Befehlsdecodierer
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE60005860T2 (de) Ablaufsteuerung zum ausgeben und wiederausgeben von ketten abhängiger befehle
DE60203612T2 (de) Datenverarbeitung mit mehrfachbefehlssätzen
DE69738188T2 (de) Verfahren und apparat für eine erhöhte genauigkeit bei der verzweigungsvorhersage in einem superskalaren mirkroprozessor
DE69908175T2 (de) Verbesserte befehlsdekodierung durch paralleldekodierungsalgorithmus
DE69734403T2 (de) Verfahren im bezug auf die behandlung von konditionellen sprüngen in einer multietagen-pipeline-struktur
DE102004013676A1 (de) Schleifenbetrieb mit null Overhead in einem Mikroprozessor mit Anweisungspuffer
DE102014000382A1 (de) Vorhersage indirekter Abzweigungen
DE4211245B4 (de) Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE4345028A1 (de) Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen
DE4134392C2 (de) Verfahren und Vorrichtung zum Ungültigmachen von Befehlen in Geräten mit Parallelverarbeitung
DE60210613T2 (de) Behandlung von unbehandelten operationen in systemen mit mehreren befehlssätzen
DE69530895T2 (de) Befehlsvorausladungsschaltung und Cachespeicher
DE19824289A1 (de) Pipelineverarbeitungsmaschine

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee