DE19527031C2 - Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems - Google Patents

Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems

Info

Publication number
DE19527031C2
DE19527031C2 DE19527031A DE19527031A DE19527031C2 DE 19527031 C2 DE19527031 C2 DE 19527031C2 DE 19527031 A DE19527031 A DE 19527031A DE 19527031 A DE19527031 A DE 19527031A DE 19527031 C2 DE19527031 C2 DE 19527031C2
Authority
DE
Germany
Prior art keywords
branch
instruction
instructions
destination address
processor
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
DE19527031A
Other languages
English (en)
Other versions
DE19527031A1 (de
Inventor
Michael S Schlansker
Vinod Kathail
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE19527031A1 publication Critical patent/DE19527031A1/de
Application granted granted Critical
Publication of DE19527031C2 publication Critical patent/DE19527031C2/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Description

Die vorliegende Erfindung bezieht sich auf einen Ver­ zweigungsprozessor für ein Datenverarbeitungssystem zum Ausführen eines Programms und auf ein Verfahren zum Betreiben eines Datenverarbeitungssystems, um Verzwei­ gungsoperationen zu verarbeiten, die Bedingungen aufweisen und einer geordneten Sequenz von Befehlen zugeordnet sind.
Trotz der zahlreichen Verbesserungen bei der Betriebsge­ schwindigkeit von Computern besteht weiterhin ein Bedarf nach Computern, die mit einem höheren wirksamen Durchsatz arbeiten. Eine verbesserte Computergeschwindigkeit wurde durch ein Erhöhen der Geschwindigkeit, mit der die Compu­ ter-Hardware arbeitet, und durch Einführen einer parallelen Verarbeitung auf die eine oder andere Art erreicht. Eine Klasse von Verbesserungen, die durch eine Parallelverarbei­ tung erreicht wird, reduziert die Verzögerungen aufgrund der Latenzzeit, die zu den Computerbefehlen gehört. Zu Zwecken dieser Erörterung wird die Latenzzeit als die Verzögerung zwischen der Einleitung eines Befehls und der Zeit, zu der der Befehl tatsächlich ausgeführt wird, definiert.
Es wird ein Befehl betrachtet, der auf Daten verweist, die in einem spezifizierten Register gespeichert sind. Dieser Befehl kann fünf Maschinenzyklen zur Ausführung benötigen. In dem ersten Zyklus wird der Befehl vom Speicher abgerufen. In dem zweiten Zyklus wird der Befehl decodiert. In dem dritten Zyklus wird der Inhalt des Registers abgerufen. In dem vierten Zyklus wird der Befehl tatsächlich ausgeführt und in dem fünften Zyklus werden die Daten zurück an die geeignete Position geschrieben. Wenn einer warten müßte, bis die Befehlsausführung vollendet ist, würde alle fünf Maschinenzyklen lediglich ein Befehl ausgeführt werden.
Die Wirkungen der Latenzzeit werden bei Pipeline-artig ar­ beitenden Prozessoren durch Einleiten der Verarbeitung eines zweiten Befehls reduziert, bevor die tatsächliche Ausführung des ersten Befehls vollendet ist. Bei dem obigen Beispiel würden sich zu jeder beliebigen gegebenen Zeit fünf Befehle in verschiedenen Verarbeitungsstufen befinden. Der Prozessor würde fünf Pipeline-Stufen aufweisen, die parallel arbeiten, wobei jede Stufe eine von fünf Aufgaben ausführt, die zum Ausführen eines Befehls gehören. Während die Daten für den ältesten Befehl in einen Speicher oder ein Register zu­ rückgeschrieben werden, würde der zweitälteste Befehl durch die Ausführungs-Hardware ausgeführt werden. Der für den nächsten auszuführenden Befehl benötigte Registerinhalt würde gleichzeitig durch die Register-Hardware wiedergewon­ nen werden, usw..
Im Prinzip können Pipeline-artig arbeitende Prozessoren die Ausführung eines Befehls pro Maschinenzyklus vollenden, wenn eine bekannte Befehlssequenz ausgeführt wird. Ungünstiger­ weise weisen Computerprogramme Verzweigungsbefehle auf, wel­ che den Befehlsfluß unterbrechen. Es wird die folgende Be­ fehlssequenz betrachtet:
wenn x = 0, dann gehe zu Neustart
y = z
gehe zu Irgendwohin
Neustart: y = k.
Der erste Befehl wird in einen Verzweigungsbefehl übersetzt, der auf dem Inhalt von x basiert. Zu dem Zeitpunkt, zu dem dieser Befehl die Ausführungseinheit in der Pipeline er­ reicht, werden mehrere zusätzliche Befehle in die Pipeline eingetreten sein. Der Computer weist jedoch kein Verfahren auf, um zu bestimmen, ob der Befehl, der der Verzweigung folgt, "y = z" oder "y = k" sein sollte, bis er die Verzwei­ gung tatsächlich ausführt. Somit ist es unmöglich, zu be­ stimmen, welche Befehle nach dem Verzweigungsbefehl in die Pipeline geladen werden sollen. Bekannte Systeme haben versucht, Verzweigungsverzögerungen durch Vorhersagen des Resultates des Verzweigungsbefehls und durch darauffolgendes Laden der Befehle, die dem vorhergesagten Resultat entspre­ chen, zu reduzieren. Es existiert jedoch kein Vorhersage­ schema, welches 100% genau ist. Daher treten noch Verzöge­ rungen auf.
Wenn die falsche Befehlssequenz geladen ist, muß der Compu­ ter für eine Zeit, die ausreichend ist, um die Pipeline zu leeren und wieder aufzufüllen, angehalten werden. Wenn daher die Befehle, die "y = z" entsprechen, nach dem ersten Ver­ zweigungsbefehl geladen worden wären, und die Verzweigung durchgeführt wird, dann muß die Pipeline geräumt werden und die Befehle, die "y = k" entsprechen, zur Ausführung geladen werden. Dies verzögert die Programmausführung um eine Zeit, welche von der Anzahl von Stufen in der Pipeline abhängt.
Verzweigungsbefehle bewirken ferner speicherbezogene Latenz­ verzögerungen. Die meisten modernen Comuputersysteme ver­ wenden Cache-Untersysteme, um die wirksame Zugriffszeit auf den Hauptspeicher des Computers zu verbessern. Der Cache besteht aus einem schnellen Assoziativspeicher, welcher die zuletzt verwendeten Befehle und Daten speichert. Wenn der Prozessor den Inhalt einer bestimmten Speicherposition anfordert, fängt der Cacheprozessor die Anforderung ab und prüft den Cachespeicher, um zu bestimmen, ob sich die an­ geforderten Informationen in dem Cache befinden. Wenn sich die angeforderten Informationen in dem Cache befinden, wer­ den sie dem Prozessor mit minimaler Verzögerung zurückge­ geben. Wenn sich die angeforderten Informationen jedoch in dem Hauptspeicher befinden, wird der Prozessor angehalten, während der Cache die Informationen wiedergewinnt. Da Haupt­ speichergeschwindigkeiten wesentlich niedriger als die Cachegeschwindigkeit sind, führen derartige Cache-"Fehl­ schläge" wesentliche Verzögerungen ein.
Verzweigungsbefehle haben oft Cachefehlschläge zur Folge. Eine Verzweigung bewirkt oft, daß der Computer den Betrieb an einer Speicherposition fortsetzt, die von der des Ver­ zweigungsbefehls weit entfernt ist. Cachespeicher speichern die zuletzt verwendeten Informationen und Informationen, die sich in dem Hauptspeicher in der Nähe dieser Informationen befinden. Wenn die Verzweigung daher an einer entfernten Po­ sition ist und in letzter Zeit nicht aufgerufen wurde, ist es unwahrscheinlich, daß sich der nächste Befehl in dem Cache befindet.
Ein weiteres Problem, das bei bekannten Systemen zum Behan­ deln von Verzweigungsbefehlen auftritt, ist die Unfähigkeit dieser Systeme, Daten, die beim Verarbeiten eines ersten Verzweigungsbefehls erzeugt wurden, zu verwenden, um den Verarbeitungsaufwand, der für einen zweiten Verzweigungsbe­ fehl benötigt wird, zu reduzieren. Ein bedingter Verzwei­ gungsbefehl kann betrachtet werden, als ob er drei ver­ knüpfte Befehle aufweist. Der erste Befehl berechnet die Zieladresse, d. h. die Adresse des nächsten auszuführenden Befehls, wenn die Verzweigung durchgeführt wird. Der zweite Befehl berechnet das Verzweigungsresultat, wobei das Resul­ tat derselben bestimmt, ob die Verzweigung durchgeführt werden soll. Der dritte Befehl stellt die tatsächliche Steuerungsübergabe dar.
In vielen Fällen wird eine Anzahl von Verzweigungsbefehlen, die die gleiche Zieladresse aufweisen, in dem Programm vor­ handen sein. Daher könnte prinzipiell ein wesentlicher Be­ trag an Verarbeitungszeit eingespart werden, wenn die Er­ gebnisse der Zieladressberechnung von dem ersten Befehl bei den restlichen Befehlen verwendet werden könnten. Herkömmli­ che Computerarchitekturen schaffen kein wirksames Verfahren, um dies zu erreichen. Daher wird die Zieladresse für jede Verzweigung neu berechnet. Auf ähnliche Weise kann die Ver­ gleichsberechnung das Resultat von mehreren Verzweigungen bestimmen.
Schließlich schaffen bekannte Systeme lediglich eine Ein­ richtung zum Ausführen der Berechnungen, die einem Verzwei­ gungsbefehl zu einem beliebigen gegebenen Zeitpunkt ent­ sprechen. Eine wichtige Strategie beim Reduzieren der Wir­ kungen der Latenzzeiten umfaßt ein Bewegen von Befehlen innerhalb der Befehlssequenz. Wenn der Compiler beispiels­ weise weiß, daß eine Ladeoperation eine Latenzverzögerung aufweist, kann der Compiler andere Befehle in der Befehls­ sequenz derart bewegen, daß diese Befehle während der La­ tenzperiode ausgeführt werden. Diese Strategie reduziert die Wirkungen der Latenzverzögerung. Ungünstigerweise ist die Fähigkeit des Compilers, diese Latenzverzögerungen durch eine Durchführung von Berechnungen, die für Verzweigungs­ befehle benötigt werden, aufzufüllen, durch die Unfähigkeit begrenzt, die gesamte Verzweigungsberechnung zu vollenden. Bekannte Systeme schaffen beispielsweise keine wirksame Ein­ richtung, um die Zieladressberechnung von der Vergleichsope­ ration zu trennen, um zu ermöglichen, daß die Zieladresse außerhalb der Reihenfolge berechnet wird. Bekannte Systeme können zu einem Zeitpunkt höchstens auf einem Verzweigungs­ befehl arbeiten, und wenn die Informationen für diesen Ver­ zweigungsbefehl nicht verfügbar sind, können die Verzwei­ gungsinformationen nicht vor dem Zeitpunkt berechnet werden.
Die oben erwähnte Computerarchitektur und der Befehlssatz, welche in dem US-A-5,615,386 offenbart sind, schaffen hin­ sichtlich der oben beschriebenen Probleme eine bedeutende Verbesserung gegenüber dem Stand der Technik. Das in dem­ selben beschriebene Computersystem verwendet eine Register­ datei, die mit dem Befehlsprozessor verbunden ist, um die Ausführung von Verzweigungsbefehlen zu erleichtern. Die Re­ gisterdatei weist eine Anzahl von Registern auf. Jedes Regi­ ster wird verwendet, um Informationen, die beim Ausführen eines Verzweigungsbefehls benötigt werden, zu speichern. Je­ des Register weist Platz zum Speichern einer Zieladresse eines Verzweigungsbefehls und Platz zum Speichern einer Flag mit einem ersten und zweiten Zustand auf, wobei der erste Zustand anzeigt, daß ein Verzweigungsbefehl, der auf das Re­ gister verweist, bewirken sollte, daß der Befehlsprozessor zu dem Befehl, der durch die Zieladresse spezifiziert ist, abzweigt, wenn ein Führe-Verzweigung-Aus-Befehl, der auf das Register verweist, ausgeführt wird. Der zweite Zustand zeigt an, daß der Befehlsprozessor die Befehlsausführung in der sequentiellen Reihenfolge fortsetzen soll, wenn ein Führe- Verzweigung-Aus-Befehl, der auf das Register verweist, durch den Befehlsprozessor ausgeführt ist. Das Computersystem ver­ wendet einen "Bereite-Verzweigung-Vor"-Befehl, um ein Regi­ ster zuzuweisen und dasselbe mit einer Zieladresse zu laden. Bedingte Verzweigungsbefehle werden mit Hilfe eines Ver­ gleichsbefehls implementiert, welcher die Flag in einem Re­ gister setzt, auf das durch den Befehl verwiesen wird, wenn eine spezifizierte Bedingung erfüllt ist.
Ein Vorabrufbefehl wird zu einem Cachespeicher gesendet, wenn eine Flag in einem der Register gesetzt ist, um anzu­ zeigen, daß eine Verzweigung durchgeführt werden soll. Der Vorabruf wartet nicht auf den endgültigen Wert der Flag. Der Vorabrufbefehl bewirkt, daß die Cachezeile, welche die Ziel­ adresse enthält, in den Cache geladen wird, wenn sich die fragliche Cachezeile nicht bereits in dem Cache befindet.
Das Register, auf das durch einen Bereite-Verzweigung-Vor-, einen Führe-Verzweigung-Aus- und einen Vergleichs-Befehl verwiesen wird, ist durch ein Zeigerregister spezifiziert. Der Inhalt des Zeigerregisters kann mit Hilfe eines getrenn­ ten Befehls eingestellt werden. Alternativ kann unter Ver­ wendung von in der Registerdatei gespeicherten Daten der Inhalt des Zeigerregisters durch einen Führe-Verzweigung- Aus-Befehl eingestellt werden.
Während diese Computerarchitektur die durch Verzweigungen verursachten Verzögerungen bedeutend reduziert, stellt die­ selbe bei Computern, welche mehrere Befehle pro Maschinen­ zyklus ausgeben, wie z. B. Superskalar- oder VLIW-Computern, nicht das Optimum dar. Bei derartigen Computern werden in jedem Maschinenzyklus zwei oder mehr Befehle ausgeführt. Daher können mehrere Verzweigungen prinzipiell zum gleichen Zeitpunkt verarbeitet werden.
Selbst bei Architekturen, die nur einen Befehl pro Maschi­ nenzyklus ausführen, kann die Bestimmung des Resultats einer Verzweigung verwendet werden, um Handlungen zu bewirken, welche auf einer Mehrzahl von Registern ausgeübt werden. Wie vorher angemerkt wurde, verwendet das vorher beschriebene System vorzugsweise Vorabrufbefehle, um die Wirkungen der Speicherlatenzzeit zu reduzieren. Es wird der Fall betrach­ tet, bei dem der Computer bestimmt, daß eine besondere Ver­ zweigung durchgeführt werden wird und daß eine Anzahl von Verzweigungen in dem anderen Weg existieren, welche bereits anderen Registern zugewiesen wurden. Vorabrufbefehle für die Adressen, die in diesen anderen Registern angezeigt werden, werden auch durch die Registersteuerungs-Hardware verar­ beitet. Da auf diese Adressen nicht verwiesen werden wird, stellt es eine Verschwendung von Computerbetriebsmitteln dar, mit den Vorabrufoperationen fortzufahren. In der Tat kann die Bewegung der entsprechenden Daten in den Cache durch Verdrängen nützlicherer Daten aus dem Cache die Cache­ leistung tatsächlich reduzieren.
Allgemein wird die Registersteuerungs-Hardware tatsächlich eine Schlange von Vorabrufbefehlen aufweisen, welche die­ selbe in den Cache einspeist. Wenn es bekannt ist, daß eine besondere Verzweigung nicht durchgeführt wird, kann jeder beliebige entsprechende Vorabrufbefehl, welcher noch nicht ausgegeben wurde, prinzipiell aus der Schlange entfernt werden, wodurch die Priorität der Daten, auf die wahrschein­ licher durch den Cache zugegriffen wird, erhöht wird. Ungün­ stigerweise muß die Steuerungs-Hardware einer verknüpften Liste mit einem Eintrag pro Register nachgehen, um zu be­ stimmen, welche Register und entsprechende Vorabrufbefehle durch eine Bestimmung eines Resultats einer beliebigen gege­ benen Verzweigung zurückgezogen werden sollen. Die Zeit, die benötigt wird, um diese verknüpfte Liste zu durchqueren, macht diesen Lösungsansatz unhaltbar.
Die US-A-3,577,189 betrifft eine Vorrichtung und ein Verfah­ ren in einem digitalen Computer, die eine verbesserte Pro­ grammverzweigung mittels einer Verzweigungsvorhersehung er­ möglicht, um dadurch die Anzahl von Verzweigungen und die Verzweigungsverzögerungen zu reduzieren. Es ist eine Vor­ richtung vorgesehen, um einen Verzweigungsbefehl in einer ersten Sequenz zu bewirken, der die Tatsache anzeigt, daß im Fall einer erfolgreichen Bestimmung der Verzweigungsbedin­ gung, die in dem Verzweigungsbefehl angegeben ist, eine Pro­ grammverzweigung von einem Punkt in der ersten Sequenz, die durch einen Typmarkierungsbefehl (welcher als Exit-Befehl bezeichnet wird) angezeigt ist, zu einem Zielbefehl in der zweiten Sequenz von Befehlen erfolgt. Ein Puffer mit z. B. vier Reihen ist vorgesehen, durch den die jeweiligen Befehle während einer vorbestimmten Anzahl von Zyklen geschoben wer­ den. Die jeweiligen Befehle werden durch den Puffer während einer bestimmten Anzahl von Zyklen geschoben, wobei der Ver­ zweigungsbefehl I dann verarbeitet wird, wenn dieser die Reihe 0 erreicht. Sobald der Exit-Befehl in den Puffer ein­ tritt, und wenn die Verzweigungsbedingung als erfolgreich bestimmt wurde, wird die sogenannte EBA (= effektive Ver­ zweigungsadresse) bestimmt. Auf der Grundlage der effektiven Verzweigungsadresse wird eine Operation oder ein Befehl in der zweiten Sequenz der Befehle ausgeführt. Es dauert jedoch vier Zyklen bis der neue Befehl in der zweiten Sequenz von Befehlen in den Puffer eintritt.
Der vorliegenden Erfindung liegt die Aufgabe zugrunde, einen Verzweigungsprozessor für ein Datenverarbeitungssystem und ein Verfahren zum Betreiben eines Datenverarbeitungssystems zu schaffen, um mehrere Verzweigungen von einem Quellpro­ gramm in einem einzigen Maschinenzyklus auszuführen.
Diese Aufgabe wird durch einen Verzweigungsprozessor gemäß dem Patentanspruch 1 sowie durch ein Verfahren gemäß dem Patentanspruch 8 gelöst.
Gemäß einer vorteilhaften Weiterbildung der vorliegenden Erfindung wird ein Verzweigungsprozessor geschaffen, der die Anzahl von unnötigen Vorabrufbefehlen, die den Cache-Spei­ cher erreichen, reduziert.
Die vorliegende Erfindung stellt eine verbesserte Computer­ architektur und einen Befehlssatz dar, welcher die Verzöge­ rungen, die durch Verzweigungsbefehle erzeugt werden, redu­ ziert. Ein Datenverarbeitungssystem gemäß der vorliegenden Erfindung weist einen Befehlsprozessor auf, um die Befehle eines Programms sequentiell auszuführen. Die Befehle weisen einen Verzweigungsbefehl auf, der bewirkt, daß der Befehls­ prozessor den Befehl, der durch eine Zieladresse, die sich auf den Verzweigungsbefehl bezieht, als den nächsten Befehl im dem Programm statt des nächsten Befehls in der Programm­ sequenz ausführt, wenn eine Bedingung, die dem Verzwei­ gungsbefehl zugeordnet ist, erfüllt ist. Ein Datenverarbei­ tungssystem gemäß der vorliegenden Erfindung weist einen Verzweigungsprozessor auf, welcher einen Verzweigungsspei­ cher zum Speichern von Informationen aufweist, die eine Mehrzahl von Verzweigungsbefehlen spezifizieren, die in ei­ ner Codesequenz enthalten sind. Der Verzweigungsspeicher speichert Informationen, die die Zieladresse jedes Verzwei­ gungsbefehls und die Position des Verzweigungsbefehls be­ züglich des Beginns der Codesequenz spezifizieren. Der Ver­ zweigungsprozessor empfängt die Ergebnisse der verschiedenen Vergleiche, die bestimmen, ob die Bedingungen, die den in dem Verzweigungsspeicher gespeicherten verschiedenen Ver­ zweigungen zugeordnet sind, erfüllt sind. Der Verzweigungs­ prozessor speichert vorzugsweise die Identität der Verzwei­ gung, die dem Beginn der Codesequenz am nächsten ist, für welche die Bedingung, die derselben zugeordnet ist, erfüllt wurde. Diese Verzweigung wird als die höchste freigegebene Verzweigung bezeichnet. Die tatsächliche Verzweigungsopera­ tion wird als Reaktion auf den Empfang eines Führe-Verzweig­ ung-Aus-Befehls, welcher eine oder mehrere Verzweigungen, die in dem Verzweigungsspeicher gespeichert sind, spezifi­ ziert. Wenn eine der Verzweigungen, die in dem Führe-Ver­ zweigung-Aus-Befehl spezifiziert sind, mit der höchsten freigegebenen Verzweigung übereinstimmt, wird der nächste Befehl, der durch das Datenverarbeitungssystem ausgeführt wird, die Zieladresse der höchsten freigegebenen Verzweigung sein. Wenn dies nicht der Fall ist, wird der nächste Befehl der Befehl sein, der dem Führe-Verzweigung-Aus-Befehl folgt. Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung gibt der Verzweigungsprozessor ferner Vorabrufbe­ fehle an den Cachespeicher aus, der normalerweise an die zentrale Verarbeitungseinheit Daten liefert. Bei diesem Aus­ führungsbeispiel speichert der Verzweigungsspeicher auch In­ formationen, die die Reihenfolge spezifizieren, in der Vor­ abrufbefehle für die Zieladressen, die den verschiedenen gespeicherten Verzweigungen entsprechen, gesendet werden sollen. Wenn der Verzweigungsprozessor vor dem Senden eines Vorabrufbefehls bestimmt, daß die höchste freigegebene Ver­ zweigung näher an dem Anfang der Codesequenz ist, als die Verzweigung, die einer bestimmten Zieladresse entspricht, dann verhindert der Verzweigungsprozessor, daß der Vorab­ rufbefehl, der dieser Zieladresse entspricht, zu dem Cache­ speicher gesendet wird. Auf ähnliche Weise verhindert der Verzweigungsprozessor, daß der Vorabrufbefehl ausgegeben wird, wenn vor dem Senden des entsprechenden Vorabrufbefehls bestimmt ist, daß die Bedingung, die einem bestimmten Verzweigungsbefehl entspricht, nicht erfüllt ist.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend bezugnehmend auf die beiliegenden Zeich­ nungen näher erläutert. Es zeigen:
Fig. 1 ein Flußdiagramm für einen beispielhaften Über­ block.
Fig. 2 ein Blockdiagramm eines Verzweigungsprozessors ge­ mäß der vorliegenden Erfindung und die weiteren Elemente eines typischen Datenverarbeitungssystems.
Fig. 3 ein detaillierteres Blockdiagramm der Registerda­ tei, die in Fig. 2 gezeigt ist.
Die vorliegende Erfindung erreicht ihre Vorteile durch Be­ handeln einer Anzahl von Verzweigungen als eine Gruppe und durch Trennen der Operationen, die bei einer herkömmlichen Verzweigung inhärent sind, in Teiloperationen, die getrennt durchgeführt werden können. Die vorliegende Erfindung behan­ delt eine Anzahl von Verzweigungen, die einem Codeblock zu­ geordnet sind, der als Überblock bezeichnet wird, als eine Gruppe. Ein Überblock ist eine Sequenz von Basisblöcken, die durch Verzweigungsbefehle verknüpft sind, der am Beginn des ersten Basisblocks betreten wird. Zu Zwecken dieser Erörte­ rung stellt ein Basisblock einen Codeblock dar, in den am Beginn des Blocks eingetreten wird, und der eine einzelne Verzweigung an dem Ende aufweist. Ein beispielhafter Über­ block ist in Fig. 1 bei 10 gezeigt. Der Überblock 10 weist Basisblöcke 11 bis 14 auf, welche jeweils durch Verzwei­ gungen 15 bis 18 verknüpft sind. Bei dem bevorzugten Ausfüh­ rungsbeispiel der vorliegenden Erfindung werden die Verzwei­ gungen, die die Basisblöcke verknüpfen, als die gewählt, von denen erwartet wird, daß sie am wahrscheinlichsten auftre­ ten. Die weniger wahrscheinlichen Verzweigungen führen zu einem Code außerhalb des Überblocks. Die weniger wahrschein­ lichen Resultate der Verzweigungen 15 bis 18 sind jeweilige Befehle I1 bis I4. Wenn eines dieser Resultate nicht verwen­ det wird, dann wird von dem Überblock auf einen Befehl I5 gesprungen, der in der folgenden Erörterung als der Durch­ gang-Befehl bezeichnet wird.
Um die folgende Erörterung zu vereinfachen, wird zuerst ein einzelner bedingter Verzweigungsbefehl betrachtet. Ein der­ artiger Befehl bewirkt, daß der durch den Computer als näch­ stes auszuführende Befehl entweder der Befehl nach dem Ver­ zweigungsbefehl oder der Befehl, der an einer Zieladresse, die in dem Verzweigungsbefehl spezifiziert ist, positioniert ist. In dem allgemeinen Fall wird die Wahl des nächsten Be­ fehls durch Vergleichen von zwei Argumenten, die in dem Verzweigungsbefehl spezifiziert sind, bestimmt. Ein Verzwei­ gungsbefehl der Form "Verzweigung zu einer Adresse A, wenn der Inhalt eines spezifizierten Registers Null ist" ist ein Beispiel für einen derartigen bedingten Verzweigungsbefehl. Wenn der Inhalt des Registers nicht Null ist, dann ist der nächste Befehl der, der in der Programmsequenz dem Verzwei­ gungsbefehl folgt.
Der Befehl kann aufgefaßt werden, als ob er drei Teilopera­ tionen aufweist, die bei herkömmlichen Computersystemen se­ quentiell ausgeführt werden. Die erste Teiloperation berech­ net die Zieladresse. Die Zieladresse ist oft bezüglich eines Registers spezifiziert, weshalb einige Berechnungen benötigt werden können, um die tatsächliche Adresse zu erzeugen. Bei­ spielsweise ist eine Zieladresse, die aus dem Inhalt eines spezifizierten Registers mit vielleicht einem Versatz be­ steht, der zu dem Inhalt addiert wird, Fachleuten in der Computertechnik vertraut.
Die zweite Teiloperation umfaßt die Vergleichsoperation, die vorher beschrieben wurde, um zu bestimmen, ob die Verzwei­ gung durchgeführt werden soll. Wenn die Verzweigung durchge­ führt werden soll, kann der Vergleich ein Bit setzen, das von der dritten Operation verwendet wird.
Die dritte Teiloperation ist die tatsächliche Verzweigungs­ operation, d. h. Ändern des Programmzählers auf die Ziel­ adresse, wenn in der Vergleichsoperation die spezifizierte Bedingung erfüllt wurde. Die ersten zwei Operationen können als Initialisierungsoperationen für die dritte Operation aufgefaßt werden.
Bei herkömmlichen Computersystemen werden die drei Opera­ tionen sequentiell ausgeführt, wenn der Computer einem Ver­ zweigungsbefehl begegnet. Diese starre Ausführung verhin­ dert, daß der Compiler die Teiloperationen bewegt, um eine wirksamere Verwendung der Computerbetriebsmittel zu schaf­ fen. Gemäß dem Stand der Technik wird die Zieladresse zu dem Zeitpunkt berechnet, zu dem die Vergleichsoperation durchge­ führt wird, und die Verzweigung wird unmittelbar nach dem Vergleich durchgeführt. Daher können die Informationen, die für einen bedingten Verzweigungsbefehl benötigt werden, nicht früher berechnet werden, da die Teiloperationen in dieser starren Sequenz durchgeführt werden. Zusätzlich kann der nächste Befehl nicht in dem Cache sein, wenn die Ver­ zweigung durchgeführt wird, weswegen der Prozessor gezwungen wird, anzuhalten, während der Befehl an der Zieladresse in den Cache geladen wird.
Dagegen ermöglicht die Trennung des Verzweigungsbefehls in die Komponenten-Teiloperationen, daß die Zieladresse sobald wie möglich berechnet wird, da die Argumente für den Ver­ gleich nicht benötigt werden. Daher kann diese Arbeit ver­ wendet werden, um die Latenzperioden anderer Befehle aufzu­ füllen. Auf ähnliche Weise kann der Vergleich durchgeführt werden, sobald die Argumente bekannt sind. Daher kann diese Arbeit ferner bewegt werden, um die Latenzperioden einiger anderer Befehle aufzufüllen. Schließlich kann ein Vorabruf­ befehl an den Cachespeicher gesendet werden, um sicherzu­ stellen, daß der Befehl an der Zieladresse in dem Cache ist, wenn die Verzweigung durchgeführt wird. Dieser Vorabrufbe­ fehl kann zu dem Zeitpunkt ausgegeben werden, zu dem die Zieladresse berechnet wird. Bei bekannten Systemen hilft ei­ ne Vorabrufoperation an den Cache nicht viel, da die Ver­ zweigung unmittelbar nach der Zieladressberechnung ausge­ führt wird. Daher ist eine sehr geringe vorgezogenen Warnung verfügbar.
Die obige Beschreibung bezog sich auf einen einzelnen Ver­ zweigungsbefehl. Bei der vorliegenden Erfindung werden die Verzweigungsbefehle in einem Überblock als eine Gruppe be­ handelt. Fig. 2 stellt ein Blockdiagramm eines Verzweigungs­ prozessors 100 gemäß der vorliegenden Erfindung dar. Daten, die jede Verzweigung in dem Überblock spezifizieren, sind in einer Registerdatei 102 gespeichert. Die Daten weisen die Zieladresse, die der Verzweigung zugeordnet ist, und die Po­ sition der Verzweigung in dem Überblock auf. In der folgen­ den Erörterung werden die Verzweigungen numeriert, indem mit der Verzweigung begonnen wird, die am nächsten bei dem Be­ ginn des Überblocks liegt. Die Verzweigung, die dem Beginn des Überblocks am nächsten liegt, wird als die höchste Ver­ zweigung bezeichnet. Weitere optionale Informationen, die in der Registerdatei 102 gespeichert werden können, werden nachfolgend detaillierter erläutert.
Die Verzweigungsdaten werden durch Bereite-Verzweigung-Vor- Befehle (PT-Befehle; PT = Prepare To Branch), die durch den Compiler erzeugt und durch eine Steuerung 104 verarbeitet werden, in die Registerdatei 102 geladen. Ein PT-Befehl kann den gesamten Überblock oder nur eine Verzweigung in dem Überblock spezifizieren. In einem späteren Fall wird eine Anzahl von getrennten PT-Befehlen benötigt werden, um den Verzweigungsprozessor 100 zu initialisieren. Wenn die PT- Befehle vollendet sind, wird ein Register in der Register­ datei 102 sein, das jeder Verzweigung in dem Überblock ent­ spricht. Fig. 3 ist ein Blockdiagramm einer Registerdatei, die geeignet ist, um bei der vorliegenden Erfindung verwen­ det zu werden. Jedes Register 160 wird die Zieladresse 161 des entsprechenden Verzweigungsbefehls und die Position des Verzweigungsbefehls bezüglich des Beginns des Überblocks enthalten. Die Positionsinformationen können in einem Feld des Registers 162 gespeichert werden, oder sie können von der Position des Registers in der Registerdatei selbst im­ pliziert werden.
Die Vergleichsbefehle, die dem Überblock entsprechen, ver­ weisen durch Spezifizieren der Verzweigungsposition in dem Überblock auf einzelne Register in der Registerdatei. Sobald die Ergebnisse der verschiedenen Vergleichsbefehle empfangen worden sind, werden sie durch einen Prozessor 110 verarbei­ tet, welcher ein Register 112 aktualisiert, welches die Identität der Verzweigung hält, die dem Beginn des Über­ blocks am nächsten liegt, für welchen die Bedingung, die in dem entsprechenden Vergleichsbefehl spezifiziert ist, er­ füllt ist. Diese Verzweigung wird als die höchste freigege­ bene Verzweigung bezeichnet. Nachdem alle Vergleiche voll­ endet sind, hält das Register 112 die Identität der Verzwei­ gung, die aus dem Überblock durchgeführt werden soll.
Es wird bemerkt, daß der Prozessor 110 derart gezeigt ist, als ob er mehrere Eingaben erhält. Bei Superskalar- und VLIW-Computerarchitekturen können eine Mehrzahl von Ver­ gleichsbefehlen in jedem Maschinenzyklus ausgeführt werden. Daher können die Ergebnisse von mehr als einer Vergleichs­ operation in jedem beliebigen gegebenen Maschinenzyklus ver­ fügbar sein. Der Prozessor 110 vergleicht alle Eingaben, die er in einem gegebenen Maschinenzyklus empfangen hat, mit dem Inhalt des Registers 112 und gibt dann die Identität der höchsten Verzweigung, für die die entsprechende Vergleichs­ bedingung erfüllt wurde, an das Register 112 zurück. Nachdem alle Vergleichsbefehle ausgeführt worden sind, spezifiziert das Register 112 das Register in der Registerdatei 102, das die Zieladresse für die Verzweigung aus dem Überblock, die durchgeführt werden soll, enthält.
Die PT- und Vergleichs-Befehle können als Initialisierungs­ befehle für den tatsächlichen Verzweigungsbefehl (EB-Befehl; EB = Execute Branch) aufgefaßt werden, d. h. der Befehl, der bewirkt, daß der Programmzähler 130 auf die Zieladresse zeigt, wenn die Verzweigung durchgeführt wird. Bei dem be­ vorzugten Ausführungsbeispiel der vorliegenden Erfindung weist der EB-Befehl eine Maske mit einem Bit pro jedem möglichen Register in der Registerdatei 102 auf. Wenn das Bit auf eine "Eins" gesetzt ist, wird die Verzweigung zum Testen freigegeben. Der EB-Befehl bewirkt, daß der Computer auf die Zieladresse der höchsten freigegebenen Verzweigung springt, vorausgesetzt, daß die Verzweigung in dem EB-Befehl nicht maskiert ist. Wenn die höchste freigegebene Verzwei­ gung zu dem Zeitpunkt, zu dem der EB-Befehl empfangen wird, durch den EB-Befehl maskiert ist, geht die Verzweigung durch.
Die Fähigkeit, mehrere Verzweigungen in einem Befehl zu te­ sten, schafft Vorteile bei einer Anzahl von Situationen. In vielen Fällen ist bekannt, daß die Wahrscheinlichkeit sehr klein ist, daß irgendeine Verzweigung durchgeführt werden wird. D. h., daß I5, das in Fig. 1 gezeigt ist, in der großen Mehrheit der Fälle der Ausgang aus dem Überblock sein wird. Diese Situation würde beispielsweise erwartet werden, wenn allen Verzweigungen in dem Überblock Fehlerbedingungen zu­ geordnet wären. Statt des Ausführens von vier getrennten EB-Befehlen, wie es in Fig. 1 gezeigt ist, könnte ein ein­ zelner EB-Befehl, bei dem alle vier Verzweigungen freige­ geben wären, am Ende des Überblocks ausgeführt werden. Wenn das Register 112 auf ein Register in der Registerdatei 102, das einer der freigegebenen Verzweigungen entspricht, zeigt, kann das Programm auf die Zieladresse, die in dem Register gezeigt ist, springen. Somit kann eine beträchtliche Anzahl von EB-Befehlen beseitigt werden, was wiederum die Geschwin­ digkeit verbessert, mit der das Programm bei Abwesenheit von Fehlern ausgeführt wird.
Das oben beschriebene Schema setzt voraus an, daß der Über­ block bis zur Vollendung arbeiten kann, selbst wenn eine oder mehrere Verzweigungen, die durchgeführt worden wären, wenn sie an der ursprünglichen Position ausgeführt worden wären, verzögert wurden. In vielen Fällen können der Com­ piler oder der Programmierer sicherstellen, daß diese Be­ dingung erfüllt ist.
Das oben beschriebene Schema zum Kombinieren von Verzwei­ gungen nimmt an, daß alle Verzweigungen in eine Verzweigung am Ende des Überblocks kombiniert werden. Wie oben bemerkt wurde, trifft dies lediglich bei Fällen zu, bei denen eine Ausführung des Codes bis zu dem Verzweigungspunkt wirksam ist, und es trifft sicher sogar in den Fällen zu, in denen eine frühere Verzweigung durchgeführt worden wäre, wenn die Verzweigungen nicht in eine Verzweigung zusammengefaßt wor­ den wären. Die Verzweigungen könnten prinzipiell in Gruppen zusammengefaßt werden. Die Verzweigungen 15 und 16 könnten beispielsweise in eine einzelne Verzweigung zusammengefaßt werden, welche an der Position der Verzweigung 16 positio­ niert ist, wobei die restlichen Verzweigungen in eine Ver­ zweigung am Ende des Überblocks zusammengefaßt werden könnten.
Es wird wieder auf Fig. 2 Bezug genommen. Bei modernen Com­ putersystemen werden die tatsächlichen Daten und Befehle, die zu dem Prozessor 135 geliefert werden, in einem Cache­ speicher 133 gespeichert, bevor sie zu dem Prozessor 135 ge­ liefert werden. Wenn sich die Daten nicht in dem Cache 133 befinden, wenn der Prozessor 135 die Daten anfordert, wird der Prozessor 135 angehalten, bis der Cache 133 die Daten von dem Hauptspeicher 134 abruft. Diese Situation wird als ein Cachefehlschlag bezeichnet. Cachefehlschläge reduzieren den Wirkungsgrad von Computersystemen und sollten daher ver­ mieden werden. Die vorliegende Erfindung schafft eine Ein­ richtung zum Reduzieren der Anzahl von Cachefehlschlägen.
Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung gibt eine Steuerung 104 Vorabrufbefehle an den Cache 133 aus, um zu ermöglichen, daß der Cache 133 vorher von dem Hauptspeicher 134 Informationen anfordert, wodurch die Anzahl von Zyklen reduziert wird, in denen der Prozessor aufgrund von Cachefehlschlägen angehalten wird. Die Vorab­ rufbefehle werden in einer Reihenfolge ausgegeben, die durch Informationen in den PT-Befehlen spezifiziert ist. Diese In­ formationen sind bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung ferner in dem entsprechenden Register in der Registerdatei 102 gespeichert. Die Informationen kön­ nen durch den Programmierer oder den Compiler erzeugt wer­ den.
Der Cache 133 ist in der Lage, lediglich eine begrenzte An­ zahl von Vorabrufbefehlen, typischerweise einen pro Maschi­ nenzyklus, zu empfangen. Daher können die Vorabrufbefehle in einer Reihenfolge, die in dem PT-Befehl spezifiziert ist, in einer Vorabrufschleife 140 plaziert sein. Die Informationen über die Reihenfolge können ferner in der Registerdatei 102 in einem Feld 165 des Registers, das dem Verzweigungsbefehl entspricht, gespeichert sein. Alternativ können die Vorab­ rufbefehle direkt an den Cache 133 ausgegeben werden, ohne daß sie in einer Schlange plaziert werden. In diesem Fall wird beim Entscheiden, welcher Vorabrufbefehl als nächstes zu erteilen ist, durch die Steuerung 104 auf die Informatio­ nen über die Reihenfolge in dem Feld 165, verwiesen.
Während ein Vorabrufbefehl eine Ausgabe erwartet, kann es klar werden, daß die spezifizierten Daten niemals gebraucht werden. In diesem Fall bewirkt die Steuerung 104, daß der Vorabrufbefehl aus der Schlange entfernt oder auf irgendeine Art und Weise markiert wird, wodurch vermieden wird, daß der Vorabrufbefehl dem Cache 133 erteilt wird. Es wird der Fall betrachtet, bei dem ein Vorabrufbefehl auf Informationen verweist, die an der Zieladresse einer Verzweigung in dem Überblock gespeichert sind. Wenn bekannt ist, daß die der Verzweigung zugeordnete Bedingung nicht erfüllt ist, werden die Informationen an der Zieladresse durch den Prozessor nicht angefordert. Daher entfernt die Steuerung 104 den Vor­ abrufbefehl für die Zieladresse aus der Schlange, wenn der entsprechende Vergleichsbefehl anzeigt, daß die in demselben spezifizierte Bedingung nicht erfüllt ist. Auf ähnliche Wei­ se wird der Fall betrachtet, bei dem das Register 112 auf eine Verzweigung zeigt, die sich über der Verzweigung, die einem bestimmten Vorabrufbefehl entspricht, befindet. In diesem Fall ist bekannt, daß die Verzweigung, die dem Vorab­ rufbefehl entspricht, niemals ausgeführt wird, selbst wenn die Bedingung, die derselben zugeordnet ist, erfüllt ist, da die in dem Register 112 spezifizierte Verzweigung oder eine Verzweigung über derselben durchgeführt werden wird. Daher überwacht die Steuerung 104 ferner den Inhalt des Registers 112 und entfernt jeden Vorabrufbefehl aus der Schlange 140, der auf die Zieladresse einer Verzweigung unter der höchsten freigegebenen Verzweigung verweist.
Es können ferner Fälle existieren, bei denen gewünscht wird, einen Vorabrufbefehl auszuführen, wenn es sicher bekannt ist, daß die entsprechende Verzweigung durchgeführt werden soll. Dies sind beispielsweise Fälle, bei denen der Vorab­ rufbefehl selbst bestimmte Systemverzögerungen bewirken kann. In derartigen Fällen gibt die Steuerung 104 nur den Vorabrufbefehl aus, wenn die fragliche Verzweigung die höchste freigegebene Verzweigung ist, wobei es bekannt ist, daß die Vergleichsbefehle für alle weiteren Verzweigungs­ befehle über dem Verzweigungsbefehl bewertet worden sind. In diesem Fall muß die Steuerung 104 die Verzweigungsbefehle verfolgen, für die noch keine Vergleichsbefehle ausgeführt worden sind. Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung ist ein Feld, wie z. B. ein Feld 164, das in Fig. 3 gezeigt ist, in jedem der Register in der Re­ gisterdatei 102 vorgesehen, um zu verfolgen, welche Ver­ gleichsbefehle nicht vollendet sind.
Die oben beschriebenen Ausführungsbeispiele der vorliegenden Erfindung verwenden eine Registerdatei zum Speichern der Informationen, die für jede Verzweigung relevant sind, und ein Register 112 zum Speichern der Identität der Verzwei­ gung, die durchgeführt werden soll. Für Fachleute ist es jedoch offensichtlich, daß weitere Speichereinrichtungen für diese Informationen verwendet werden können. Es könnten beispielsweise die gesamten oder ein Teil der Informationen in einem herkömmlichen Speicher gespeichert werden.
Ferner wird bemerkt, daß die Ergebnisse der Aktualisierungs­ berechnungen, die verwendet werden, um den Zustand des Re­ gisters 112 beizubehalten, in dem Prozessor 110 verfügbar sind, bevor diese Ergebnisse in dem Register 112 erscheinen. In diesem Fall können Systeme, die eine Vergleichsoperation direkt vor der Verzweigungsoperation in demselben Maschi­ nenzyklus durchführen, implementiert werden.

Claims (12)

1. Verzweigungsprozessor (100) für ein Datenverarbeitungs­ system zum Ausführen eines Programms, welches eine Be­ fehlssequenz aufweist, die eine Mehrzahl von Befehlen in einer geordneten Sequenz aufweist, wobei die geord­ nete Sequenz einen Beginn und eine Mehrzahl von Ver­ zweigungsbefehlen aufweist, wobei jeder Verzweigungsbe­ fehl bewirkt, daß das Datenverarbeitungssystem einen Befehl ausführt, der durch eine Zieladresse spezifi­ ziert ist, wenn eine spezifizierte Bedingung erfüllt ist, wobei der Verzweigungsprozessor (100) folgende Merkmale aufweist:
eine Einrichtung (102) zum Speichern von Informationen, die eine Mehrzahl von Verzweigungsbefehlen spezifizie­ ren, wobei die Informationen eine Zieladresse (161), die jedem Verzweigungsbefehl entspricht, und die Posi­ tion des Verzweigungsbefehls in der geordneten Sequenz relativ zu dem Beginn der geordneten Sequenz aufweisen;
eine Vergleichsergebniseinrichtung (110) zum Empfangen von Informationen, die anzeigen, ob die Bedingung, die sich auf einen der Verzweigungsbefehle bezieht, erfüllt wurde; und
eine Steuerungseinrichtung (104), die
  • 1. einen Bereite-Verzweigung-Vor-Befehls empfängt, wobei der Bereite-Verzweigung-Vor-Befehl Informationen auf­ weist, die eine Zieladresse (161) und eine Position, die einem der Verzweigungsbefehle entspricht, aufwei­ sen, und zum Bewirken, daß die Informationen in der Speichereinrichtung (102) gespeichert werden,
  • 2. einen Führe-Verzweigung-Aus-Befehls empfängt, wobei der Führe-Verzweigung-Aus-Befehl einen der Verzwei­ gungsbefehle identifiziert, die in der Speicherein­ richtung (102) gespeicherte Informationen aufweisen, und
  • 3. auf das Empfangen des Führe-Verzweigung-Aus-Befehls anspricht, um zu bewirken, daß das Datenverarbei­ tungssystem den Befehl ausführt, der durch die Ziel­ adresse (161), die dem identifizierten Verzweigungs­ befehl entspricht, spezifiziert ist, wenn die Bedin­ gung, die sich auf den identifizierten Verzweigungs­ befehl bezieht, erfüllt wurde und keine Bedingung, die sich auf einen Verzweigungsbefehl bezieht, der sich näher als der identifizierte Verzweigungsbefehl an dem Beginn der geordneten Sequenz befindet, er­ füllt wurde.
2. Verzweigungsprozessor (100) gemäß Anspruch 1, bei dem die Vergleichsergebniseinrichtung (110) ein Register (112) zum Speichern der Identität des Verzweigungsbe­ fehls, der dem Beginn der geordneten Sequenz, für wel­ che die Bedingung erfüllt wurde, am nächsten liegt, aufweist.
3. Verzweigungsprozessor (100) gemäß Anspruch 2,
bei dem der Führe-Verzweigung-Aus-Befehl Informationen aufweist, die eine Mehrzahl von Verzweigungsbefehlen spezifizieren; und
bei dem die Steuerungseinrichtung (104) eine Einrich­ tung zum Bestimmen, ob irgendeiner der Verzweigungsbe­ fehle, die in dem Führe-Verzweigung-Aus-Befehl spezifi­ ziert sind, der Verzweigungsbefehl ist, dessen Identi­ tät in dem Register (112) gespeichert ist, und zum Be­ wirken, daß das Datenverarbeitungssystem den Befehl ausführt, der durch die Zieladresse (161) identifiziert ist, die dem Verzweigungsbefehl entspricht, dessen Identität in dem Register (112) gespeichert ist, auf­ weist.
4. Verzweigungsprozessor (100) gemäß Anspruch 2 oder 3, das ferner eine Cachespeichereinrichtung (133) zum Speichern von Daten, die normalerweise in einem Haupt­ speicher (134) gespeichert sind, und zum Liefern dieser Daten direkt zu einer Verarbeitungseinheit (135) auf­ weist, wobei die Cachespeichereinrichtung (133) fol­ gende Merkmale aufweist:
eine Einrichtung zum Empfangen eines Vorabrufbefehls, der eine Datenadresse in dem Hauptspeicher (134) auf­ weist; und
eine Einrichtung, die auf den Empfang des Vorabrufbe­ fehls anspricht, zum Bewirken, daßp die Daten, die an der Datenadresse gespeichert sind, in den Cachespeicher (133) kopiert werden, wenn sich nicht bereits eine Ko­ pie der Daten in dem Cachespeicher (133) befindet;
wobei die Steuerungseinrichtung (104) in dem Verzwei­ gungsprozessor (100) ferner eine Einrichtung (140) zum Senden eines der Vorabrufbefehle, der eine Datenadresse aufweist, die mit einer der Zieladressen (161) überein­ stimmt, zu dem Cachespeicher (133) aufweist.
5. Verzweigungsprozessor (100) gemäß Anspruch 4, bei dem die Speichereinrichtung (102) in dem Verzweigungspro­ zessor (100) ferner eine Einrichtung zum Speichern von Informationen aufweist, welche eine anfängliche Reihen­ folge (165) spezifizieren, in der die Vorabrufbefehle zu dem Cachespeicher (133) gesendet werden sollen.
6. Verzweigungsprozessor (100) gemäß Anspruch 4 oder 5, bei dem die Steuerungseinrichtung (104) ferner eine Einrichtung zum Verhindern des Sendens einer Einleitung oder Beendigung der Vorabrufbefehle für eine beliebige Zieladresse (161) aufweist, die einen entsprechenden Verzweigungsbefehl aufweist, der weiter von dem Beginn der Befehlssequenz entfernt ist als der Verzweigungsbe­ fehl, der durch das Register (112) identifiziert ist.
7. Verzweigungsprozessor (100) gemäß Anspruch 5,
bei dem die Vergleichsergebniseinrichtung (110) ferner eine Einrichtung zum Empfangen von Informationen auf­ weist, die spezifizieren, daß die Bedingung, die sich auf einen der Verzweigungsbefehle bezieht, nicht er­ füllt wurde; und
bei dem die Steuerungseinrichtung (104) ferner eine Einrichtung zum Verhindern des Sendens einer Einleitung oder Beendigung des Vorabrufbefehls, der eine Daten­ adresse aufweist, die gleich der Zieladresse (161) des Verzweigungsbefehls ist, dessen Bedingung nicht erfüllt wurde, zu dem Cachespeicher (133) aufweist.
8. Verfahren zum Betreiben eines Datenverarbeitungssy­ stems, um Verzweigungsoperationen zu verarbeiten, die Bedingungen aufweisen und einer geordneten Sequenz von Befehlen zugeordnet sind, wobei einem Verzweigungsbe­ fehl eine Position in der geordneten Sequenz zugeordnet ist, wobei das Datenverarbeitungssystem eine Mehrzahl von Speicherorten zum Speichern von Verzweigungsinfor­ mationen aufweist, wobei die Verzweigungsinformationen eine Zieladresse (161), die jeder Verzweigungsoperation entspricht, und die Position der Verzweigungsoperation in der geordneten Sequenz relativ zu dem Beginn der ge­ ordneten Sequenz aufweisen;
mit folgenden Schritten:
als Reaktion auf einen Bereite-Verzweigung-Vor-Befehl, der einer Verzweigungsoperation zugeordnet ist, wobei der Bereite-Verzweigung-Vor-Befehl eine Zieladresse und eine Position der zugeordneten Verzeigungsoperation be­ stimmt, Speichern der Verzweigungsinformationen, ein­ schließlich der Position an einem der Speicherorte;
als Reaktion auf einen Vergleichsbefehl, der einer Ver­ zweigungsoperation zugeordnet ist, Berechnen der Bedin­ gung für die Verzweigungsoperation;
Berechnen einer Zieladresse für eine Verzweigungsopera­ tion, die an einem Speicherort gespeicherte Informa­ tionen hat, und Speichern der Zieladresse an dem Spei­ cherort für die Verzweigungsoperation; und
als Reaktion auf einen Führe-Verzweigung-Aus-Befehl, der eine Verzweigungsoperation bestimmt, die an einem der Speicherorte gespeichert ist, Ändern des Programm­ zählers auf die Zieladresse für die Verzweigungsopera­ tion, wenn die der Verzweigungsoperation zugeordnete Bedingung erfüllt wurde, es sei denn, eine Bedingung einer Verzweigungsoperation ist erfüllt, die näher am Beginn der geordneten Sequenz von Befehlen liegt, zu denen die Verzweigung gehört.
9. Verfahren gemäß Anspruch 8, bei dem beim Verarbeiten der Befehle der geordneten Sequenz von Befehlen für je­ de Verzweigungsoperationen in der geordneten Sequenz von Befehlen, die Verzweigungsoperation in einen Be­ reite-Verzweigung-Vor-Befehl, einen Vergleichsbefehl und einen Führe-Verzweigung-Aus-Befehl geteilt wird.
10. Verfahren gemäß Anspruch 9, bei dem eine Mehrzahl von Bereite-Verzweigung-Vor-Befehlen vor dem Ausführen irgendeines Führe-Verzweigung-Aus-Befehls verarbeitet werden.
11. Verfahren gemäß Anspruch 8, bei dem jeder Führe-Ver­ zweigung-Aus-Befehl einer Mehrzahl von Verzweigungsope­ rationen zugeordnet sein kann, und bei dem der Führe- Verzweigung-Aus-Befehls eine Maske einschließt, um an­ zuzeigen, welchen Verzweigungsoperationen der Führe- Verzweigung-Aus-Befehl zugeordnet ist, und bei dem der Schritt des Änderns des Programmzählers ferner den Schritt des Änderns des Programmzählers auf die höchste aktivierte Verzweigung umfaßt, vorausgesetzt die Ver­ zweigung ist nicht in dem Führe-Verzweigung-Aus-Befehl maskiert.
12. Verfahren gemäß Anspruch 8, das ferner folgende Schritte umfaßt:
Vorholen von Befehlen, die einer Mehrzahl von Verzwei­ gungsoperationen zugeordnet sind, in einer Sequenz, die durch die Führe-Verzweigung-Aus-Befehle, die der Mehr­ zahl von Verzweigungsoperationen zugeordnet sind, be­ stimmt sind; und
wenn der Vergleichsbefehl, der einer Verzweigung zuge­ ordnet ist, anzeigt, daß die Verzweigung nicht durchge­ führt wird, schließt die Vorhol-Operation das Verhin­ dern des Vorholens von Befehlen ein, die der Verzwei­ gung zugeordnet sind.
DE19527031A 1994-09-28 1995-07-24 Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems Expired - Fee Related DE19527031C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/313,980 US5664135A (en) 1994-09-28 1994-09-28 Apparatus and method for reducing delays due to branches

Publications (2)

Publication Number Publication Date
DE19527031A1 DE19527031A1 (de) 1996-04-04
DE19527031C2 true DE19527031C2 (de) 1998-12-24

Family

ID=23218024

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19527031A Expired - Fee Related DE19527031C2 (de) 1994-09-28 1995-07-24 Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems

Country Status (4)

Country Link
US (1) US5664135A (de)
JP (1) JPH08106386A (de)
DE (1) DE19527031C2 (de)
GB (1) GB2293671A (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19928260A1 (de) * 1999-06-21 2000-08-31 Siemens Ag Schaltungsanordnung zur Steuerung von Programmverzweigungen in einem Prozessor

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1186995B1 (de) * 1993-11-05 2003-09-03 Intergraph Corporation Befehlsspeicher mit assoziativem Kreuzschienenschalter
US5802346A (en) * 1995-06-02 1998-09-01 International Business Machines Corporation Method and system for minimizing the delay in executing branch-on-register instructions
US5774737A (en) * 1995-10-13 1998-06-30 Matsushita Electric Industrial Co., Ltd. Variable word length very long instruction word instruction processor with word length register or instruction number register
GB2318959B (en) * 1996-03-27 1998-10-07 Mitsubishi Electric Corp Geometrical operation apparatus
JP3203180B2 (ja) * 1996-03-27 2001-08-27 三菱電機株式会社 幾何学演算装置
JPH09319569A (ja) * 1996-05-31 1997-12-12 Mitsubishi Electric Corp マイクロコンピュータ
US5740419A (en) * 1996-07-22 1998-04-14 International Business Machines Corporation Processor and method for speculatively executing an instruction loop
JP3745039B2 (ja) * 1996-08-01 2006-02-15 株式会社ルネサステクノロジ 遅延命令を有するマイクロプロセッサ
KR100240591B1 (ko) * 1996-11-06 2000-03-02 김영환 분기명령어의 효율적인 처리를 위한 브랜치 타겟 버퍼 및 그를 이용한 분기 예측방법
US5920716A (en) * 1996-11-26 1999-07-06 Hewlett-Packard Company Compiling a predicated code with direct analysis of the predicated code
JP3535354B2 (ja) * 1997-08-27 2004-06-07 株式会社東芝 ストール検出表示装置及び方法
JPH1185515A (ja) * 1997-09-10 1999-03-30 Ricoh Co Ltd マイクロプロセッサ
US5948095A (en) * 1997-12-31 1999-09-07 Intel Corporation Method and apparatus for prefetching data in a computer system
US5881260A (en) * 1998-02-09 1999-03-09 Hewlett-Packard Company Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction
US6253306B1 (en) 1998-07-29 2001-06-26 Advanced Micro Devices, Inc. Prefetch instruction mechanism for processor
JP3741870B2 (ja) * 1998-08-07 2006-02-01 富士通株式会社 命令及びデータの先読み方法、マイクロコントローラ、疑似命令検出回路
US6243805B1 (en) * 1998-08-11 2001-06-05 Advanced Micro Devices, Inc. Programming paradigm and microprocessor architecture for exact branch targeting
US6430682B1 (en) * 1998-09-11 2002-08-06 Agere Systems Guardian Corp. Reliable branch predictions for real-time applications
US6289442B1 (en) 1998-10-05 2001-09-11 Advanced Micro Devices, Inc. Circuit and method for tagging and invalidating speculatively executed instructions
US6175897B1 (en) * 1998-12-28 2001-01-16 Bull Hn Information Systems Inc. Synchronization of branch cache searches and allocation/modification/deletion of branch cache
JP3867427B2 (ja) * 1999-01-11 2007-01-10 ソニー株式会社 プロセッサ装置および集積回路
US6401144B1 (en) * 1999-02-26 2002-06-04 Intel Corporation Method and apparatus for managing data transfers between peripheral devices by encoding a start code in a line of data to initiate the data transfers
US6289444B1 (en) 1999-06-02 2001-09-11 International Business Machines Corporation Method and apparatus for subroutine call-return prediction
US6304962B1 (en) 1999-06-02 2001-10-16 International Business Machines Corporation Method and apparatus for prefetching superblocks in a computer processing system
US6523110B1 (en) * 1999-07-23 2003-02-18 International Business Machines Corporation Decoupled fetch-execute engine with static branch prediction support
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
US6449712B1 (en) * 1999-10-01 2002-09-10 Hitachi, Ltd. Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions
US6820193B1 (en) * 1999-12-17 2004-11-16 Koninklijke Philips Electronics N.V. Branch instructions with decoupled condition and address
WO2001065362A1 (en) * 2000-02-28 2001-09-07 Koninklijke Philips Electronics N.V. Data processor with multi-command instruction words
US6874171B2 (en) * 2003-05-22 2005-04-05 Deanna Erves Overspray shield for toilet
JP2009163624A (ja) * 2008-01-09 2009-07-23 Nec Electronics Corp プロセッサ装置及び条件分岐処理方法
JP2011065565A (ja) * 2009-09-18 2011-03-31 Toshiba Corp キャッシュシステム及びマルチプロセッサシステム
GB2551574B (en) 2016-06-24 2019-11-27 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
CN112905237A (zh) 2019-12-04 2021-06-04 北京百度网讯科技有限公司 指令预取方法、装置、设备和介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3570006A (en) * 1968-01-02 1971-03-09 Honeywell Inc Multiple branch technique
JPS6051948A (ja) * 1983-08-31 1985-03-23 Hitachi Ltd 情報処理装置
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
US5317703A (en) * 1990-06-29 1994-05-31 Hitachi, Ltd. Information processing apparatus using an advanced pipeline control method
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19928260A1 (de) * 1999-06-21 2000-08-31 Siemens Ag Schaltungsanordnung zur Steuerung von Programmverzweigungen in einem Prozessor

Also Published As

Publication number Publication date
JPH08106386A (ja) 1996-04-23
DE19527031A1 (de) 1996-04-04
GB9517268D0 (en) 1995-10-25
US5664135A (en) 1997-09-02
GB2293671A (en) 1996-04-03

Similar Documents

Publication Publication Date Title
DE19527031C2 (de) Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems
DE3116100C2 (de) Datenverarbeitungseinheit
DE3751474T2 (de) Verzweigungsstrom-Koprozessor.
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE3210816C2 (de)
DE3752100T2 (de) Befehlsvorabrufgerät mit einer Schaltung zum Prüfen der Vorhersage eines Verzweigungsbefehls vor seiner Ausführung
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE69031991T2 (de) Verfahren und Gerät zur Beschleunigung von Verzweigungsbefehlen
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE68921906T2 (de) Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren.
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE3750935T2 (de) Verfahren und System zum Erleichtern der Befehlsausführung in einem digitalen Rechner.
DE4222776C2 (de) Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE68927029T2 (de) Pipelineprozessor
DE4345028A1 (de) Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
DE4211245B4 (de) Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung
DE68925397T2 (de) Pipelineprozessor
DE68924719T2 (de) Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung.
DE3854142T2 (de) Vektorrechner.
DE19824289C2 (de) Pipelineverarbeitungsmaschine

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee