DE4345028A1 - Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen - Google Patents

Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen

Info

Publication number
DE4345028A1
DE4345028A1 DE4345028A DE4345028A DE4345028A1 DE 4345028 A1 DE4345028 A1 DE 4345028A1 DE 4345028 A DE4345028 A DE 4345028A DE 4345028 A DE4345028 A DE 4345028A DE 4345028 A1 DE4345028 A1 DE 4345028A1
Authority
DE
Germany
Prior art keywords
instruction
branch
command
register
registers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE4345028A
Other languages
English (en)
Inventor
Frederic C Amerson
Rajiv Gupta
Balasubramanian Kumar
Michael S Schlansker
William S Worley
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 DE4345028A1 publication Critical patent/DE4345028A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Description

Die vorliegende Erfindung bezieht sich auf Computersysteme, und insbesondere auf eine verbesserte Maschinenarchitektur und einen verbesserten Befehlssatz, der die Verzögerungen aufgrund von Verzweigungsbefehlen reduziert.
In Anbetracht der zahlreichen Verbesserungen der Betriebs­ geschwindigkeit von Computern gibt es immer einen Bedarf an Computern, die mit einem effektiveren Durchsatz arbeiten. Verbesserte Berechnungsgeschwindigkeiten wurden durch Er­ höhen der Geschwindigkeit, mit der die Computer-Hardware arbeitet, und durch Einführen der Parallelverarbeitung in der einen oder anderen Form erreicht. Eine Klasse von Ver­ besserungen, die durch die parallele Verarbeitung erreicht wurde, reduziert die Verzögerungen aufgrund der Wartezeit, die mit den Computerbefehlen zusammenhängt. Für diese Be­ schreibung ist die Wartezeit definiert als die Verzögerung zwischen der Auslösung eines Befehls und der Zeit, zu der der Befehl tatsächlich ausgeführt wird.
Es sei ein Befehl angenommen, der sich auf Daten bezieht, die in einem bestimmten Register gespeichert sind. Dieser Befehl kann fünf Maschinenzyklen benötigen, um ausgeführt zu werden. In dem ersten Zyklus wird der Befehl aus dem Spei­ cher geholt. In dem zweiten Zyklus wird der Befehl deko­ diert. Im dritten Zyklus wird der Inhalt des Registers ge­ holt. In dem vierten Zyklus wird der Befehl tatsächlich aus­ geführt, und in dem fünften Zyklus werden die Daten an den geeigneten Ort zurückgeschrieben. Wenn man warten wurde, bis die Befehlsausführung beendet ist, würde lediglich ein Be­ fehl alle fünf Maschinenzyklen ausgeführt werden.
Die Auswirkungen der Wartezeit werden in Pipelines durch Auslösen der Verarbeitung eines zweiten Befehls, bevor die eigentliche Ausführung des ersten Befehls beendet ist, reduziert. Bei dem obigen Beispiel würden zu jeglicher Zeit fünf Befehle in verschiedenen Verarbeitungsstufen sein. Der Prozessor würde fünf Prozessoren einschließen, die parallel arbeiten, wobei jeder Prozessor eines der fünf Ziele, das an der Ausführung eines Befehls beteiligt ist, ausführt. Während die Daten für den ältesten Befehl zurück in den Speicher oder in das Register geschrieben werden, würde der zweitälteste Befehl durch die Ausführungshardware ausge­ führt. Die Registerinhalte, die für den als nächsten auszu­ führenden Befehl benötigt werden, würden durch die Register­ hardware gleichzeitig ausgelesen, und so weiter.
Im Prinzip können Pipelines die Ausführung eines Befehls pro Maschinenzyklus durchführen, wenn eine bekannte Folge von Befehlen ausgeführt wird. Unglücklicherweise schließen Computerprogramme Verzweigungsbefehle ein, die den Befehls­ fluß unterbrechen. Es sei die folgende Befehlsfolge ange­ nommen:
if x = 0 then goto newstart
y=z
goto somewhere
newstart: y=k
Der erste Befehl wird in einen Verzweigungsbefehl basierend auf dem Inhalt von x übersetzt. Zu der Zeit, zu der dieser Befehl die Ausführungseinheit in der Pipeline erreicht, wer­ den bereits einige zusätzliche Befehle in die Pipeline ein­ getreten sein. Der Computer hat jedoch kein Verfahren, um festzustellen, ob der Befehl, der der Verzweigung folgt, "y=z" oder "y=k" sein sollte, bis er die Verzweigung tatsäch­ lich ausführt. Folglich ist es unmöglich, festzustellen, welche Befehle nach dem Verzweigungsbefehl in die Pipeline geladen werden sollten. Normalerweise wird eines von zwei Verzweigungsergebnissen als das korrekte Verzweigungsergeb­ nis angenommen, und die Befehle, die dem gewählten Verzwei­ gungsergebnis entsprechen, werden dann in die Pipeline ge­ laden.
Wenn die falsche Folge von Befehlen geladen ist, muß der Computer für eine Zeit, die ausreichend ist, um die Pipeline zu leeren und erneut zu füllen, angehalten werden. Wenn die Befehle, die "y=z" entsprechen, nach dem Verzweigungsbefehl und x=0 geladen wurden, dann muß die Pipeline folglich ge­ räumt werden und die Befehle, die "y=k" entsprechen, müssen zur Ausführung geladen werden. Dies verzögert die Ausführung des Programms um eine Zeit, die durch die Anzahl der Stufen in der Pipeline bestimmt ist.
Bekannte Systeme haben versucht, diese Verzögerungen durch Vorhersagen des Ergebnisses des Verzweigungsbefehls und durch Laden der Befehle, die dem vorausgesagten Ergebnis entsprechen, zu reduzieren. Es gibt jedoch kein Vorhersage­ schema mit einer 100%igen Genauigkeit. Daher werden Ver­ zögerungen immer noch angetroffen.
Verzweigungsbefehle verursachen ebenfalls speicherbezogene Wartezeitverzögerungen. Die meisten modernen Computersysteme verwenden Cache-Speicher-Untersysteme, um die wirksame Zu­ griffszeit auf den Hauptspeicher des Computers zu verbes­ sern. Der Cache-Speicher besteht aus einem sehr schnellen Assoziativspeicher, der die zuletzt verwendeten Befehle und Daten speichert. Wenn der Prozessor den Inhalt eines bestim­ mten Speicherortes abfragt, fängt der Cache-Prozessor die Abfrage ab und überprüft den Cache-Speicher, um festzustel­ len, ob die abgefragten Informationen in dem Cache-Speicher sind. Wenn die abgefragten Informationen in dem Cache-Spei­ cher sind, werden sie mit einer minimalen Verzögerung an den Prozessor zurückgegeben. Wenn die abgefragten Informationen jedoch in dem Hauptspeicher sind, wird der Prozessor ange­ halten, während der Cache-Speicher die Informationen aus­ liest. Nachdem die Hauptspeichergeschwindigkeiten bedeutend langsamer sind als die der Cache-Speicher, erzeugen solche "Fehlgriffe" des Cache-Speichers bedeutende Verzögerungen.
Verzweigungsbefehle führen oft zu Cache-Speicherfehlgriffen. Eine Verzweigung veranlaßt den Computer oft, den Betrieb an einem Speicherort fortzuführen, der weit von dem des Ver­ zweigungsbefehl entfernt war. Cache-Speicher speichern die zuletzt verwendeten Informationen und Informationen, die nahe an diesen Informationen in dem Hauptspeicher sind. Wenn die Verzweigung zu einem entfernten Ort führt, ist es daher unwahrscheinlich, daß der nächste Befehl in dem Cache-Spei­ cher ist.
Ein weiteres Problem, das bei bekannten Systemen zum Hand­ haben von Verzweigungsbefehlen angetroffen wird, ist die Un­ fähigkeit dieser Systeme, Daten zu verwenden, die bei der Verarbeitung eines ersten Verzweigungsbefehls verwendet wur­ den, um die benötigte Verarbeitung für einen zweiten Ver­ zweigungsbefehl zu reduzieren. Ein bedingter Verzweigungs­ befehl kann als Befehl betrachtet werden, der drei verbunde­ ne Befehle umfaßt. Der erste Befehl berechnet die Zieladres­ se, d. h. die Adresse des nächsten auszuführenden Befehls, wenn die Verzweigung genommen wird. Der zweite Befehl be­ rechnet das Verzweigungsergebnis, dessen Ergebnis bestimmt, ob die Verzweigung zu nehmen ist. Der dritte Befehl ist die eigentliche Übertragung der Steuerung.
In vielen Fällen wird eine Anzahl von Verzweigungsbefehlen, die dieselbe Zieladresse haben, in dem Programm vorhanden sein. Daher könnte im Prinzip ein bedeutender Betrag an Ver­ arbeitungszeit eingespart werden, wenn die Ergebnisse der Berechnung der Zieladresse des ersten Befehls für die rest­ lichen Befehle verwendet werden könnten. Bekannte Computer­ architekturen sehen kein effektives Verfahren vor, um dieses zu erreichen; daher wird die Zieladresse für jede Verzwei­ gung neu berechnet. Auf ähnliche Weise kann die Vergleichs­ berechnung das Ergebnis von verschiedenen Verzweigungen be­ stimmen.
Abschließend sehen bekannte Systeme lediglich eine Einrich­ tung zum Ausführen der Berechnungen vor, die einem Verzwei­ gungsbefehl zu irgendeinem gegebenen Zeitpunkt entsprechen. Eine wichtige Strategie bei der Reduzierung der Auswirkungen der Wartezeiten schließt die Bewegung von Befehlen innerhalb der Befehlsfolge ein. Wenn der Kompiler z. B. weiß, daß eine Ladeoperation eine Wartezeit hat, kann der Kompiler andere Befehle derart in der Befehlsfolge bewegen, daß diese Befeh­ le während der Wartezeitperiode ausgeführt werden. Diese Strategie reduziert die Auswirkungen der Wartezeitverzöge­ rung. Unglücklicherweise ist die Fähigkeit des Kompilers, diese Wartezeitverzögerungen durch Durchführen von Berech­ nungen, die für Verzweigungsbefehle benötigt werden, einzu­ füllen, durch die Unfähigkeit, die gesamte Verzweigungsbe­ rechnung durchzuführen, begrenzt. Bekannte Systeme sehen z. B. keine wirksame Einrichtung zum Teilen der Berechnung der Zieladresse von der Vergleichsoperation vor, um die Be­ rechnung der Zieladresse außerhalb der Reihenfolge zu er­ lauben. Bekannte Systeme können höchstens mit einem Ver­ zweigungsbefehl arbeiten, und wenn die Informationen für diesen Verzweigungsbefehl nicht erhältlich sind, kann die Verzweigung nicht vorher berechnet werden.
Es ist die Aufgabe der vorliegenden Erfindung, eine verbes­ serte Computerarchitektur und einen verbesserten Befehlssatz zur Ausführung von Verzweigungsbefehlen zu schaffen.
Diese Aufgabe wird durch ein Datenverarbeitungssystem nach Patentanspruch 1 gelöst.
Es ist ein Vorteil der vorliegenden Erfindung, daß sie eine Computerarchitektur schafft, die die Verzögerungen redu­ ziert, die bei bekannten Systemen aufgrund der Notwendig­ keit, die Pipeline zu räumen, angetroffen werden, wenn ein unerwartetes Verzweigungsergebnis auftritt.
Ein weiterer Vorteil der Erfindung ist es, daß eine Compu­ terarchitektur geschaffen wird, die Speicherwartezeiten, die durch die Ausführung von Verzweigungsbefehlen erzeugt wer­ den, reduziert werden.
Wiederum ein Vorteil der vorliegenden Erfindung ist es, daß eine Computerarchitektur geschaffen wird, bei der die Be­ rechnungen, die der Ausführung eines Verzweigungsbefehls eigen sind, durch eine Anzahl von Verzweigungsbefehlen ge­ teilt werden kann.
Ein weiterer Vorteil der vorliegenden Erfindung ist es, daß eine Computerarchitektur geschaffen wird, bei der eine Mehr­ zahl von Verzweigungsbefehlen zu jeglicher gegebener Zeit auf verschiedenen Stufen der Verarbeitung sein kann.
Ein Vorteil der vorliegenden Erfindung ist es, daß eine Computerarchitektur geschaffen wird, bei der die Reihenfol­ ge, als auch der zeitliche Verlauf, der Adreßberechnung und der Zustandsberechnung relativ zu der verändert werden kann, die durch die Reihenfolge der Befehle in dem Kode nahegelegt wird.
Bei einem Datenverarbeitungssystem gemäß der vorliegenden Erfindung führt der Befehlsprozessor nacheinanderfolgend die Befehle eines Programms aus, bis er einen Verzweigungsbefehl ausführt, der anzeigt, daß der Befehlsprozessor den Befehl, der durch eine Zieladresse bestimmt ist, als nächsten Befehl in dem Programm anstelle des nächsten Befehls in der Pro­ grammfolge ausführen soll. Das Datenverarbeitungssystem ver­ wendet eine Registerdatei, die mit dem Befehlsprozessor ver­ bunden ist, um die Ausführung von Verzweigungsbefehlen zu vereinfachen. Die Registerdatei schließt ein oder mehrere Register ein. Jedes Register wird verwendet, um Informatio­ nen zu speichern, die für die Ausführung eines Verzweigungs­ befehls benötigt werden. Jedes der Register schließt Raum zum Speichern einer Zieladresse eines Verzweigungsbefehls und Raum zum Speichern einer Flagge mit einem ersten und einem zweiten Zustand ein, wobei der erste Zustand anzeigt, daß ein Verzweigungsbefehl, der sich auf das Register be­ zieht, den Befehlsprozessor veranlassen sollte, zu dem Be­ fehl, der durch die Zieladresse bestimmt ist, zu verzweigen, wenn ein "führe Verzweigung aus"-Befehl, der sich auf das Register bezieht, ausgeführt wird.
Der zweite Zustand zeigt an, daß der Befehlsprozessor fort­ fahren sollte, die Befehle in der Reihenfolge auszuführen, wenn ein "führe Verzweigung aus"-Befehl, der sich auf das Register bezieht, durch den Befehlsprozessor ausgeführt wird. Die vorliegende Erfindung verwendet einen "bereite Verzweigung vor"-Befehl, um ein Register mit einer Ziel­ adresse zu laden. Bedingte Verzweigungsbefehle werden mit der Hilfe von Vergleichsbefehlen ausgeführt, die die Flagge in dem Register, auf das durch den Befehl Bezug genommen wird, eingestellen, wenn eine bestimmte Bedingung angetrof­ fen wird.
Bei einem Ausführungsbeispiel der vorliegenden Erfindung wird ein Vorabrufbefehl an einen Cache-Speicher gesendet, wenn eine Flagge in einem der Register eingestellt ist, um anzuzeigen, daß eine Verzweigung genommen wird. Der Vorabruf wartet nicht auf den endgültigen Wert der Flagge. Der Vorab­ rufbefehl veranlaßt, daß die Cache-Leitung, die die Ziel­ adresse enthält, in den Cache-Speicher geladen wird, wenn diese Cache-Leitung nicht bereits in dem Cache-Speicher ist. Bei Systemen, die eine hierarchische Cache-Speicherstruktur haben, kann die Flagge mehr als zwei Zustände haben. Diese zusätzlichen Zustände können verwendet werden, um die Stufe in der Cache-Hierarchie anzuzeigen, auf der die Kopie der Cache-Leitung gespeichert ist, oder daß die Informationen direkt aus dem Hauptspeicher übertragen werden müssen.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf die beiliegenden Zeichnungen näher erläutert. Es zeigt
Fig. 1 ein Blockdiagramm eines ersten Ausführungsbeispiels eines Datenverarbeitungssystems gemäß der vorlie­ genden Erfindung;
Fig. 2 ein Blockdiagramm eines zweiten Ausführungsbei­ spiels eines Datenverarbeitungssystems gemäß der vorliegenden Erfindung;
Fig. 3 ein Blockdiagramm eines Ausführungsbeispiels eines Datenverarbeitungssystems, das ein Mehr-Ebenen- Cache-Speichersystem verwendet, gemäß der vorlie­ genden Erfindung; und
Fig. 4 ein Blockdiagramm eines vierten Ausführungsbei­ spiels der vorliegenden Erfindung.
Die vorliegende Erfindung verwendet eine spezielle Register­ datei, auf die als Befehlsadreßregisterdatei Bezug genommen wird, um einen verbesserten Befehlssatz und eine verbesserte Architektur zur Ausführung von Verzweigungsbefehlen zu schaffen. Jedes Register in dieser Datei wird verwendet, um die Informationen zu speichern, die notwendig sind, um einen Verzweigungsbefehl auszuführen. Die einfachste Ausführung einer Befehlsadreßregisterdatei ist bei 10 in Fig. 1 ge­ zeigt. Die Registerdatei 10 stellt Informationen bereit, die für den Befehlsprozessor 12 benötigt werden, um einen Führe-Verzweigung-Aus-Befehl auszuführen, wie unten be­ schrieben. Die Registerdatei 10 schließt bevorzugterweise eine Mehrzahl von Befehlsadreßregistern 14 ein. Jedes Re­ gister 14 schließt Raum zum Speichern einer Zieladresse 16 und einer Flagge 18 ein, die bestimmt, ob die Steuerung an die Zieladresse 16 übertragen wird, wenn der Befehlsprozes­ sor 12 einen Führe-Verzweigung-Aus-Befehl ausführt, der sich auf dieses Register bezieht.
Bei einem Datenprozessor, der die vorliegende Erfindung ver­ wendet, ist der herkömmliche Verzweigungsbefehl über drei Befehle ausgeführt, auf die als Bereite-Verzweigung-Vor (PTB = Prepare To Branch), Zustand-Berechnung (CMP = Condition Compute), und Führe-Verzweigung-Aus (EB = Execute Branch) Bezug genommen wird. Diese Befehle führen die drei Ziele aus, die notwendig sind, um einen bedingten Verzweigungsbe­ fehl auszuführen. Die Befehle beziehen sich auf die Register in der Befehlsadreßregisterdatei. Der PTB-Befehl stellt die Zieladresse für die Verzweigung bereit und speicherte die Adresse in einem der Befehlsadreßregister in der Befehlsa­ dreßregisterdatei. Das bestimmte Register ist entweder als Teil des Befehls bestimmt oder durch einen Mechanismus, der unten genauer beschrieben wird. Für diese Beschreibung wird angenommen, daß das Register als Teil des Befehls bestimmt wird.
Der CMP-Befehl vergleicht zwei Argumente, um festzustellen, ob die Verzweigung genommen wird und setzt die Sprungflagge 18 in dem Register, das durch den Vergleich-Befehl bestimmt ist, entsprechend. Bei einer Ausführung der vorliegenden Er­ findung wird die Sprungflagge auf einen ersten Zustand ge­ setzt, um anzuzeigen, daß ein Sprung gemacht wird, wenn zwei Argumente identisch sind. Wenn die zwei Argumente nicht identisch sind, wird die Sprungflagge auf einen zweiten Zu­ stand gesetzt, der anzeigt, daß der Sprung nicht durchge­ führt wird.
Der EB-Befehl führt die Verzweigung eigentlich aus. Wenn der Befehlsprozessor 12 einen EB-Befehl ausführt, greift er auf das Befehlsadreßregister, das in dem EB-Befehl bestimmt ist, zu und untersucht die Sprungflagge in dem Register. Wenn die Sprungflagge anzeigt, daß die Verzweigung genommen wird, wird der nächste Befehl, der durch den Befehlsprozessor 12 ausgeführt wird, der Befehl sein, der sich an der Ziel­ adresse befindet. Wenn die Sprungflagge anzeigt, daß der Sprung nicht genommen wird, wird der nächste Befehl, der durch den Befehlsprozessor 12 ausgeführt wird, der nächste nachfolgende Befehl sein.
Die vorliegende Erfindung schafft eine bedeutende Verbesse­ rung gegenüber der Hardware und den Verfahren für eine be­ dingte Verzweigungsausführung, die im Stand der Technik ver­ wendet werden. Beim Stand der Technik wird die Zieladresse zu dem Zeitpunkt berechnet, zu dem die Vergleichsoperation durchgeführt wird. Daher können die Informationen, die für einen bedingten Verzweigungsbefehl benötigt werden, nicht früh berechnet werden, weil die in dem Vergleich zu verwen­ denden Argumente nicht erhältlich sind oder sich vor dem Punkt in dem Kode, an dem der bedingte Sprung ausgeführt wird, ändern können. Im Gegensatz dazu gestattet es die vor­ liegende Erfindung, die Zieladresse sobald als möglich zu berechnen, nachdem die Argumente für den Vergleich nicht be­ nötigt werden. Daher kann diese Arbeit verwendet werden, um die Wartezeitperioden mit anderen Befehlen zu füllen. Auf ähnliche Weise kann der Vergleich durchgeführt werden, so­ bald die Argumente bekannt sind; daher kann diese Arbeit ebenfalls bewegt werden, um die Wartezeitperiode mit einigen anderen Befehlen aufzufüllen.
Es wird darauf hingewiesen, daß, wenn ein EB-Befehl in die Pipeline eintritt, das wahrscheinlichste Ergebnis des Be­ fehls bereits in der Sprungflagge des entsprechenden Be­ fehlsadreßregisters gespeichert ist. Das System kann daher eine gute Vermutung über den richtigen Ort treffen, von dem die Befehle, die dem EB-Befehl folgen, zu laden sind. Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfin­ dung liest der EB-Befehl das geeignete Befehlsadreßregister, wenn er in die Pipeline eintritt. Bei der großen Mehrheit der Fälle wird sich die Sprungfrage nicht verändert haben, wenn der EB den Ausführungspunkt in der Pipeline erreicht. In diesem Fall werden die ordnungsgemäßen Befehle hinter dem EB-Befehl in der Pipeline sein und ein Räumen der Pipeline wird nicht erforderlich sein. In solchen Fällen, in denen die Befehle vor dem EB in der Pipeline dazu führen, daß die Flagge geändert wird, wird die Pipeline auf herkömmliche Art geräumt. Von diesen Fällen wird jedoch erwartet, nur selten aufzutreten, nachdem es typischerweise nur wenige Befehle vor dem EB gibt, die eine solche Änderung des Flaggenwertes verursachen könnten. Weiterhin kann der Kompiler die Be­ fehlsfolge fast immer umstellen, um zu garantieren, daß keiner dieser Befehle ein Vergleich ist, der sich auf dieses Befehlsadreßregister bezieht.
Die Unterteilung des herkömmlichen bedingten Verzweigungs­ befehls in die oben beschriebenen drei Befehle kann eben­ falls zu bedeutenden Berechnungseinsparungen führen. Es sei ein Programm mit einer Schleife angenommen, die eine be­ dingte Verzweigung enthält, z. B.:
While i= 0
instructions
if x=y then goto error_exit
end
Bei bekannten Systemen erfordert jede Iteration der Schleife von dem Prozessor, die Adresse von "error_exit" zu bestim­ men, x und y zu vergleichen und dann zu entscheiden, ob ver­ zweigt wird oder nicht. Mit der vorliegenden Erfindung kann der PTB-Befehl außerhalb der Schleife bewegt werden, d. h.:
PTB error_exit, iarx
While i=0
instructions
CMP x,y,iarx
EB iarx
end
Hierbei identifiziert "iarx" eines der Register in der Re­ gisterdatei. Daher muß der PTB-Befehl lediglich einmal aus­ geführt werden. Wenn die Werte von x und y innerhalb der Schleife nicht verändert werden, kann der CMP-Befehl auf ähnliche Weise ebenfalls aus der Schleife bewegt werden, wo­ durch zusätzliche Einsparungen geschaffen werden.
Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Er­ findung stellt der PTB-Befehl ebenfalls die Sprungflagge auf einen anfänglichen Wert ein. Dies ist aus zwei Gründen nütz­ lich. Erstens kann durch Einstellen der Sprungflagge zu dem Zeitpunkt, zu dem der PTB-Befehl ausgeführt wird, dieselbe Architektur verwendet werden, um sowohl bedingte als auch nicht-bedingte Verzweigungsbefehle auszuführen. In dem Fall eines nicht-bedingten Verzweigungsbefehls wird kein CMP-Be­ fehl zwischen dem PTB- und dem EB-Befehl ausgeführt.
Zweitens kann das fortgeschrittene Wissen bezüglich des Er­ gebnisses der Verzweigung verwendet werden, um Wartezeiten zu reduzieren. Wenn die Verzweigung genommen wird, ist es wahrscheinlich, daß die Befehle für den Kode, der dem Ver­ zweigungspunkt folgt, derzeit nicht in dem Cache-Speicher des Datenverarbeitungssystems vorhanden sind. Der Cache- Speicher enthält normalerweise die Befehle, die zuletzt aus­ geführt wurden, und die Befehle, die diesen in dem Haupt­ speicher am nächsten sind, d. h. Befehle, die in derselben Cache-Speicherleitung liegen, wie die, die zuletzt ausge­ führt wurden. Verzweigungsbefehle schicken das Programm oft an einen Ort, der von dem derzeitigen Ort in dem Hauptspei­ cher entfernt ist; die Befehle auf dem neuen Weg werden da­ her sehr wahrscheinlich immer noch im Hauptspeicher sein.
Bekannte Systeme erleiden typischerweise eine Speicherwarte­ zeitverzögerung, wenn der erste Befehl nach einer Ver­ zweigung ausgeführt wird, nachdem der Prozessor angehalten wird, während das Cache-Speicheruntersystem die geeignete Cache-Speicherleitung aus dem Hauptspeicher abruft. Die vor­ liegende Erfindung verwendet einen "Vorabruf"-Befehl, der durch die Informationen in den Befehlsadreßregistern akti­ viert wird, um solche Wartezeitverzögerungen zu reduzieren. Im einfachsten Ausführungsbeispiel der vorliegenden Erfin­ dung, das diese Technik verwendet, gibt ein Speicherprozes­ sor einen Befehl an ein Cache-Speicheruntersystem aus, so­ bald es bekannt ist, daß die Verzweigung genommen werden kann. Dieser Befehl veranlaßt das Cache-Speicheruntersystem, die Cache-Speicherleitung, die die Zieladresse enthält, aus dem Hauptspeicher zu laden, wenn die Cache-Speicherleitung nicht bereits in dem Cache-Speicher enthalten ist. Sobald ein PTB- oder CMP-Befehl veranlaßt, daß die Sprungflagge ge­ setzt wird, beginnt das Cache-Speicheruntersystem folglich damit, die erforderliche Cache-Leitung aus dem Speicher ab­ zurufen. Das Ausmaß der Verbesserung hängt offensichtlich davon ab, wie früh vor der Ausführung des EB-Befehls die Sprungflagge gesetzt wird. Wenn sie ausreichend früh gesetzt wird, kann die gesamte Wartezeitverzögerung eliminiert wer­ den.
Ein Ausführungsbeispiel der vorliegenden Erfindung, das einen solchen Vorabruf-Befehl verwendet, ist in Fig. 2 bei 100 gezeigt. Die Befehlsadreßregisterdatei 101 schließt eine Steuerung 102 ein, die die Sprungflaggen in den Befehls­ adreßregistern 104 abtastet. Wenn der Befehlsprozessor 106 veranlaßt, daß eine dieser Flaggen gesetzt wird, gibt die Steuerung 102 einen Vorabruf-Befehl an den Cache-Speicher 108 aus. Der Vorabruf-Befehl schließt die Zieladresse ein, die in dem Befehlsadreßregister mit der gesetzten Sprung­ flagge gespeichert ist. Wenn die Cache-Speicherleitung, die diese Zieladresse enthält, derzeitig nicht im Cache-Speicher 108 gespeichert ist, veranlaßt der Cache-Speicher 108, daß die Cache-Speicherleitung aus dem Hauptspeicher 110 geladen wird.
Obwohl der Vorabruf-Befehl, der oben beschrieben wurde, die Auswirkung der Speicherwartezeit, die angetroffen wird, wenn die Verzweigung genommen wird, reduziert, kann er in dem Cache-Speicher 108 Probleme verursachen. Jedesmal, wenn ein neuer Eintrag in einen Cache-Speicher eingelesen wird, muß ein existierender Eintrag in dem Cache-Speicher gelöscht werden. Wenn es bei dem Eintrag, der gelöscht wird, wahr­ scheinlich ist, daß er in der nahen Zukunft wieder verwendet wird, während der ankommende Eintrag wahrscheinlich nur ein­ mal verwendet wird, kann eine Verschlechterung beim Ver­ halten des Cache-Speichers auftreten. Diese Verschlechterung rührt von der Notwendigkeit her, den gelöschten Eintrag er­ neut zu laden, wenn er das nächste Mal verwendet wird. Diese Rückladeoperation kann eine Verzögerung hervorrufen, während der Eintrag aus dem Hauptspeicher geladen wird. Es wird da­ rauf hingewiesen, daß Befehle für einen Verzweigungsweg oft von der Art "benutze einmal vor der Ersetzung" sind, nachdem der Verzweigungsweg oft nur einmal in dem Programm beschrit­ ten wird.
Ein Ausführungsbeispiel der vorliegenden Erfindung, das ein Mehr-Ebenen-Cache-Speichersystem 210 verwendet, ist in Fig. 3 bei 200 gezeigt. Dieses Ausführungsbeispiel der vorliegen­ den Erfindung reduziert die Probleme, die angetroffen wer­ den, wenn Einträge, bei denen es wahrscheinlich ist, daß sie nur einmal verwendet werden, zu dem Cache-Speicher gesendet werden. Das Cache-Speichersystem 210 schließt zwei Ebenen von Cache-Speichern ein, die bei 212 und 213 gezeigt sind. Die erste Ebene, Ebene 1, arbeitet auf eine herkömmliche Art. Diese Ebene wird zur Speicherung von Einträgen verwen­ det, bei denen erwartet wird, daß sie mehr als einmal während ihrer Anwesenheit in dem Cache-Speichersystem 210 verwendet werden. Die Ebene 1 führt eine herkömmliche Er­ setzungsstrategie aus. Die ältesten Einträge in der Ebene 1 können z. B. die sein, die durch ankommende Einträge ersetzt werden. Die Ebene 2 wird verwendet, um Einträge zu spei­ chern, bei denen es wahrscheinlich ist, daß sie nur einmal während ihrer Anwesenheit in dem Cache-Speichersystem 210 verwendet werden. Daher ist die Ebene 2 Ersetzungsstrategie gewählt, um dieses Fehlen der erneuten Verwendung zu reflek­ tieren. Es kann z. B. eine Ersetzungsstrategie verwendet wer­ den, bei der ein Eintrag zur Ersetzung markiert ist, sobald er an den Befehlsprozessor abgegeben wurde. Nachdem Ein­ träge, bei denen es wahrscheinlich ist, daß sie nur einmal verwendet werden, nicht in die Ebene 1 des Cache-Speichers eingeführt werden, werden die oben beschriebenen Probleme vermieden.
Bei diesem Ausführungsbeispiel der vorliegenden Erfindung wird die Auswahl der Cache-Speicherebene durch ein zusätz­ liches Feld 207 in jedem der Befehlsadreßregister in der Befehlsadreßregisterdatei 201 bestimmt. Diese Informationen können durch den Kompiler oder den Programmierer bereitge­ stellt werden. Zusätzlich zur Bestimmung der Cache-Speicher­ ebene können die Speichersteuerungsinformationen 207 eben­ falls verwendet werden, um zu bestimmen, ob die Steuerung 208 einen Vorabruf-Befehl an das Cache-Speichersystem 210 sendet. D.h., die Speichersteuerungsinformationen können anstelle der Sprungflagge 206 verwendet werden, um festzu­ stellen, ob ein Vorabruf gesendet wird. Es ist für Fachleute offensichtlich, daß die Speichersteuerungsinformationen als eine Erweiterung der Sprungflagge angesehen werden können.
Zusätzlich können die Speichersteuerungsinformationen, die in Feld 207 gespeichert sind, Informationen einschließen, die die Priorität der Vorabruf-Operation bestimmen. In vie­ len Systemen beschränkt die Speicherbandbreite zwischen dem Hauptspeicher 214 und den Cache-Speicherebenen die Anzahl von Vorabruf-Operationen, die in der Zeit zwischen der Init­ ialisierung eines Verzweigungsbefehls und der eigentlichen Ausführung dieses Befehls wirksam durchgeführt werden kön­ nen. Weiterhin sind nicht alle Verzweigungen gleich wahr­ scheinlich; daher ist es vorteilhaft, einen Mechanismus vor­ zusehen, um die Vorabruf-Operationen mit einer Priorität zu versehen. Die Prioritätsinformationen können durch den PTB- Befehl oder einen anderen geeigneten Befehl geladen werden. Die Prioritätsinformationen bei einem Ausführungsbeispiel der vorliegenden Erfindung schließen die Wahrscheinlichkeit ein, mit der die Verzweigung genommen wird, wie sie durch den Binder (Linker) oder Kompiler bestimmt wurde. Diese In­ formationen können durch die Steuerung 208 verwendet werden, um Prioritäten für Vorabruf-Operationen einzustellen.
Es wird darauf hingewiesen, daß die Größe der Ebene 1 des Cache-Speicherteilsystems nicht groß sein muß. Dieses Unter­ system muß lediglich groß genug sein, um die Cache-Speicher­ leitungen für die Verzweigungsbefehle, die zur Ausführung vorbereitet sind, in den Befehlsadreßregistern 201 zu hal­ ten. Pro Befehlsadreßregister ist höchstens ein Eintrag not­ wenig.
Die obigen Ausführungsbeispiele der vorliegenden Erfindung erreichen ihre Vorteile durch Ersetzen des herkömmlichen Vergleich- und Verzweigungsbefehls durch die oben beschrie­ benen drei Befehle. Während diese Ausführungsbeispiele we­ sentliche Vorteile schaffen, kann die Einführung der drei Befehle für einen Befehl die Größe des Programms erhöhen. Diese Erhöhung kann durch Verwendung einiger "Kombina­ tions"-Befehle, die zwei Funktionen von zwei der drei Be­ fehle kombinieren, etwas reduziert werden. Ein CMP- und ein EB-Befehl könnten z. B. zu einem einzigen Befehl kombiniert werden, bei dem der EB-Befehl automatisch nach dem CMP-Teil des Befehls ausgeführt wird. Die Ausführung kann sofort nach dem CMP-Befehl erfolgen oder eine bestimmte Anzahl von Ma­ schinenzyklen nach dem CMP-Befehl. Auf ähnliche Art könnten ein PTB- und ein EB-Befehl zu einem einzigen Befehl zur Aus­ führung von nicht-bedingten Verzweigungen kombiniert werden. In diesem Fall würde der EB-Befehl eine vorbestimmte Anzahl von Maschinenzyklen, nachdem der PTB-Abschnitt des Befehls ausgeführt wurde, ausgeführt. Die Anzahl von Maschinenzyklen kann fest sein oder ein Teil des Kombinationsbefehls. Es ist ebenfalls offensichtlich, daß ein Kombinationsbefehl, der einen PTB-Befehl gefolgt von einem CMP-Befehl umfaßt, vor­ teilhafterweise verwendet werden kann.
Bei den oben beschriebenen Ausführungsbeispielen der vor­ liegenden Erfindung bestimmt jeder der drei Befehle, PTB, CMP und EB, ein bestimmtes Befehlsadreßregister. Obwohl die­ se Ausführungsbeispiele der vorliegenden Erfindung bedeuten­ de Vorteile gegenüber dem Stand der Technik schaffen, er­ fordern sie, daß der Befehlsprozessor Informationen, die das Befehlsadreßregister bestimmen, dekodiert. Dies erfordert einen bedeutenden Anteil von schneller Hardware. Ein Aus­ führungsbeispiel der vorliegenden Erfindung, das diese Hard­ ware vermeidet, ist in Fig. 4 bei 300 gezeigt. Bei diesem Ausführungsbeispiel der vorliegenden Erfindung beziehen sich die PTB-, CMP- und EB-Befehle auf das Befehlsadreßregister 302, das durch den Inhalt eines Registers 309 bestimmt ist. Daher müssen diese Informationen das Befehlsadreßregister nicht in dem Befehl selbst bestimmen. Der Inhalt des Regis­ ters 309 kann unter Verwendung eines getrennten Befehls, der für diese Aufgabe vorgesehen ist, geändert werden.
Zusätzlich kann bei diesem bevorzugten Ausführungsbeispiel der Inhalt des Registers 309 durch einen EB-Befehl geändert werden. Bei diesem Ausführungsbeispiel schließt jedes der Befehlsadreßregister 302 ein Feld 305 ein, das das nächste Befehlsadreßregister bestimmt, das das aktive Befehlsadreß­ register ist, nachdem der EB-Befehl, der das derzeitig ak­ tive Befehlsadreßregister bestimmt, ausgeführt ist. Der In­ halt des Felds 305 kann in einem PTB-Befehl bestimmt sein, der an dieses Befehlsadreßregister gerichtet ist. Alternativ kann ein bestimmter Befehl für diese Aufgabe vorgesehen sein. Das Feld 305 kann verwendet werden, um zwei alterna­ tive Werte für das Register 309 zu speichern. Der erste Wert wird verwendet, wenn der Sprung durchgeführt wird, der zweite Wert wird verwendet, wenn der Sprung nicht durchge­ führt wird.
Prozeduraufrufe sind eine bestimmte Klasse von Verzweigungs­ anwendungen, auf die als Verzweigung und Verbindung (EBL = Execute Branch and Link) Bezug genommen wird, bei denen die Adresse des nächsten Befehls nach dem Prozeduraufrufin einem Register abgelegt wird. Die Adresse in dem Register bestimmt den Ort, an dem das Programm nach der Rückkehr aus der Prozedur wieder aufgenommen werden soll. In dem Fall, in dem der EBL-Befehl das Befehlsadreßregister explizit bestim­ mt, unterscheidet sich ein Prozeduraufruf von einer normalen Verzweigung lediglich darin, daß die Adresse des Befehls nach dem Prozeduraufruf in einem bestimmten Register abge­ legt ist. Es wird jedoch darauf hingewiesen, daß dieses Re­ gister ein weiteres Befehlsadreßregister sein könnte.
In dem Fall, in dem ein Zeiger, wie z. B. das Register 309, verwendet wird, um das Befehlsadreßregister, das durch den EBL-Befehl zu verwenden ist, zu bestimmen, verwendet das be­ vorzugte Ausführungsbeispiel der vorliegenden Erfindung einen Befehl, der sich von dem oben beschriebenen EBL-Befehl darin unterscheidet, daß die Inhalte des Registers 309, auf das als Benennungsregister Bezug genommen wird, in dem Be­ fehlsadreßregister, das durch den Verzweigungs- und Verbin­ dungs-Befehl für den Fall, in dem die Verzweigung nicht ge­ nommen wird, verwendet wird, bestimmt werden. Dies läßt zu, daß ein nicht durchgeführter Verzweigungs- und Verbindungs- Befehl für den Prozeß, durch den die Inhalte des Benennungs­ registers bestimmt werden, transparent ist. Diese Informa­ tionen können in dem Befehlsadreßregister durch einen Vor­ bereitung-Auf-Verzweigungs- und Verbindungs-Befehl in einer Art analog zu der, die oben für andere Bereite-Verzweigung- Vor-Befehle beschrieben wurde, in dem Befehlsadreßregister gespeichert werden.
Wenn die Verzweigung und die Verbindung durchgeführt werden, treten unglücklicherweise zwei Probleme auf. Als erstes ist es sehr unwahrscheinlich, daß das Befehlsadreßregister, das als nächstes benannt wird, für die aufgerufene Prozedur irgendeinen Sinn hat. Überdies wird die aufgerufene Prozedur die Kette der Benennungsregisterwerte wieder herstellen müssen, um die Werte anzupassen, die verwendet worden wären, wenn die Verzweigung nicht ,durchgeführt worden wäre, wenn die aufgerufene Prozedur zu der aufruf enden Prozedur zurück­ kehrt. Im Prinzip kann dies durch sichern des Benennungs­ registerinhalts in der aufgerufenen Prozedur und durch Wie­ derherstellen des Inhalts des Benennungsregisters vor der Rückkehr erreicht werden. Dies erfordert jedoch zusätzliche Befehle, um die Inhalte des Benennungsregisters zu sichern und wieder herzustellen. Zusätzlich überlagert sich dieses Verfahren mit dem Vorabruf von Informationen aus dem Cache- Speicher, wie oben beschrieben.
Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Er­ findung ist das Ziel des Sicherns des Inhalts des Benen­ nungsregisters ein Nebeneffekt des EBL-Befehls. Zwei Werte werden in dem nächsten aktiven Feld 305 gespeichert. Der erste bestimmt den Inhalt des Benennungsregisters, wenn die Verzweigung und die Verbindung nicht durchgeführt wurden, und der zweite bestimmt das Register, in welches die Rück­ kehradresse durch den EBL-Befehl abgelegt wird, wenn die Verzweigung durchgeführt wird. Wenn die Verzweigung und die Verbindung nicht durchgeführt werden, wird der Inhalt des Benennungsregisters wie vorher der Wert sein, der durch den ersten Wert in dem Befehlsadreßregister, auf das durch den EBL-Befehl Bezug genommen wird, bestimmt ist. Wenn die Ver­ zweigung und die Verbindung ausgeführt werden, wird die Rückkehradresse in dem Befehladreßregister gespeichert, das durch den zweiten Wert in dem nächsten aktiven Feld des Be­ fehlsadreßregisters, das durch den EBL-Befehl verwendet wird, bestimmt wird. Zusätzlich wird das nächste aktive Feld des Befehlsadreßregisters, in dem die Rückkehradresse ge­ speichert ist, auf den Wert des ersten Feldes, das oben be­ schrieben ist, eingestellt, und die Inhalte des Benennungs­ registers werden eingestellt, um auf das Befehlsadreßre­ gister, das die Rückkehradresse enthält, zu zeigen.
Es sei z. B. angenommen, daß ein EBL-Befehl unter Verwendung des IAR2 (d. h. des Befehlsadreßregisters 2) vorbereitet wird. D.h., das Benennungsregister zeigt auf IAR2, wenn der EBL-Befehl ausgeführt wird. Es sei angenommen, daß das IAR4 als nächstes benannt wird, wenn die Verzweigung nicht durch­ geführt wird, und daß das IAR8 als das Befehlsadreßregister bestimmt ist, in welchem die Rückkehradresse der Verzweigung und der Verbindung zu der Zeit abgelegt wird, wenn die Ver­ zweigung durchgeführt wird. Wenn der EBL-Befehl auf das IAR2 zugreift, werden daher Zeiger auf das IAR4 und das IAR8 in das nächste aktive Feld des IAR2 geladen.
Wenn die Verzweigung und die Verbindung nicht durchgeführt werden, zeigt das Benennungsregister nach dem EBL-Befehl auf das IAR4. Wenn der Verzweigungs- und Verbindungs-Befehl durchgeführt werden, dann ändert der EBL-Befehl nicht nur den Befehlsfluß zu der Zieladresse, die in dem IAR2 gespei­ chert ist, sondern speichert ebenfalls die Rückkehradresse in dem Zieladreßfeld des IAR8 und benennt IAR8 als nächstes aktives Befehlsadreßregister. Zusätzlich wird das Benenne­ nächstes-Feld (Feld 305) des IAR8 eingestellt, um auf das IAR4 zu zeigen. D.h., daß das IAR8 nach dem EBL-Befehl das aktive Befehlsadreßregister sein wird, und daß das IAR8 be­ reits derart initialisiert ist, daß eine Ausführung des Ver­ zweigungsbefehls unter Verwendung des IAR8 dazu führt, daß das IAR4 nominiert ist, nachdem die Ausführung des Verzwei­ gungsbefehls ausgeführt ist. Die Benennungskette wird nun derart initialisiert, daß die aufgerufene Prozedur lediglich einen Führe-Verzweigung-Aus-Befehl bestimmen muß, um zu der aufgerufenen Prozedur mit dem benannten Zeiger, der auf IAR4 zeigt, zurückzukehren. Dies gestattet es, daß die aufgeruf­ ene Prozedur bezüglich der aufruf enden Prozedur zumindest bezüglich der Benennungskette transparent ist.
Dieser Mechanismus kann ebenfalls bei Ausführungsbeispielen verwendet werden, bei denen eine Verzweigung unabhängige Be­ fehlsadreßregister bestimmt, die als nächste auf dem durch­ geführten bzw. nicht-durchgeführten Weg benannt werden. In diesem Fall wird ein Zeiger auf ein benanntes nicht-durchge­ führtes Befehlsadreßregister das nächste aktive Register, das in dem Befehlsadreßregister, in dem die Rückkehradresse gespeichert ist, bestimmt wird.
Nicht programmierte Sprünge (traps) und Unterbrechungen sind zu EBL-Befehlen dahingehend analog, daß beim Auftreten einer Bedingung der Computer eine Verzweigung an einen neuen Ort durchführt, um eine Ausnahmeabhandlungsroutine auszuführen, und bei der Rückkehr aus dieser Routine muß der Computer seinen Betrieb wieder aufnehmen, als ob der nicht program­ mierte Sprung oder die Unterbrechung nicht aufgetreten wären. Es ist offensichtlich, daß die oben beschriebenen Ausführungsbeispiele erweitert werden können, um einen impliziten Führe-nicht-programmierten-Sprung-aus- oder Unterbrechungs-Befehl einzuschließen, der sich auf eines der Register bezieht, die zugeordnet sind, um die Zieladresse für die nicht-programmierte-Sprung- oder Unterbrechungs- Routine zu enthalten. Dieses Register kann mit einem geeig­ neten Bereite-Verzweigung-Vor-Befehl geladen werden. Die Hardware führt dann beim Erfassen der nicht-programmierten- Sprung- oder Unterbrechungs-Bedingung das Gegenstück zu einem Verzweigungs- und Verbindungs-Befehl aus. Zusätzlich speichert die Hardware die derzeitigen Benennungsregister­ inhalte, um sie als die benannten Register bei der Rückkehr von dem nicht programmierten Sprung oder der Unterbrechung zu verwenden.
Während die oben beschriebenen Ausführungsbeispiele der vor­ liegenden Erfindung in den Worten eines CMP-Befehls be­ schrieben wurden, bei dem zwei Argumente verglichen werden, ist es für Fachleute offensichtlich, daß jegliche Bedingung, die durch den Prozessor festgestellt wird, verwendet werden kann. Es ist ebenfalls offensichtlich, daß ein Befehl mit einer Mehrzahl von CMP-Befehlen ausgeführt werden kann, bei dem jeder CMP eine unterschiedliche Bedingung verwendet.
Bei den oben beschriebenen Ausführungsbeispielen der vor­ liegenden Erfindung wurde die Registerdatei verwendet, um die Zieladressen der Sprung-Befehle zu speichern. Es ist jedoch für Fachleute offensichtlich, daß die Registerdatei verwendet werden kann, um Zeiger zu speichern, die die Orte bestimmen, an denen diese Informationen gespeichert sind.
Aus den oben beschriebenen Ausführungsbeispielen der vor­ liegenden Erfindung ist es offensichtlich, daß die Erfindung bedeutende Vorteile gegenüber bekannten Lösungen für die Ausführung von Sprung-Befehlen schafft. Die vorliegende Er­ findung erreicht diese Vorteile durch Teilen der herkömm­ lichen Sprung-Befehle in die drei Komponenten-Befehle, die oben beschrieben wurden.
Bei den einfachsten Schemata nach dem Stand der Technik, werden die Operationen der Adreßberechnung, der Bedingungs­ feststellung und der Sprungausführung in einem einzelnen Befehl gebündelt. Obwohl diese Schemata vorteilhafterweise eine Sprungvoraussagung verwenden, um die Frequenz zu redu­ zieren, mit der die Pipeline geräumt werden muß, erfordern sie immer noch, daß die Pipeline einen bedeutenden Bruchteil der Zeit geräumt werden muß. Zusätzlich schaffen diese Schemata nicht die Vorteile, daß zugelassen wird, den Be­ rechnungszeitablauf und die Reihenfolge neu anzuordnen, um die Wartezeiten, die den meisten Befehlen eigen sind, besser zu nutzen. Ferner schaffen diese Schemata keine Einrichtung zum Vorabruf des Inhalts der Zieladresse im Fall, daß die Voraussage inkorrekt war. Diese Nachteile resultieren aus der Bündelung der Komponentenbefehle und aus dem Warten bis zur Sprungausführung, um die korrekte Zieladresse zu bestim­ men.
Eine Lösung aus dem Stand der Technik für das Problem der fehlerhaften Voraussage schließt die Verwendung von Sprung- Befehlen ein, die für eine feste Anzahl von Maschinenzyklen nicht ausgeführt werden. Diese Architektur vermeidet die Probleme der fehlerhaften Voraussage, nachdem die korrekte Verzweigung bekannt ist, bevor der Befehl in die Pipeline eintritt. Diese Lösung ist jedoch weit von einem Optimum entfernt, nachdem die Komponentenbefehle immer noch zusam­ mengebündelt sind. Zuerst muß der Kode fähig sein, die feste Anzahl von Maschinenzyklen vorteilhafterweise zu verwenden. Um dies zu tun, müssen Befehle bewegt werden, um diese War­ tezeit auszufüllen. Es ist nicht immer möglich, Befehle zu bewegen, um die Wartezeit genau auszufüllen. Zusätzlich ist die Wartezeit Hardware-abhängig; ein Kode, der für eine Hardware-Plattform optimiert ist, wird daher nicht auch auf einer weiteren Plattform laufen. Solange die Wartezeit nicht recht lang ist, erhält man abschließend nicht die vollstän­ digen Vorteile der Vorabrufung der Zieladressen in dem Cache-Speicher, nachdem es eine unzureichende Zeit zwischen dem Feststellen der Zieladresse und der Ausführung des Sprungbefehls gibt.
Eine zweite teilweise bekannte Lösung der Probleme war, die Zieladreßberechnung von der Bedingungsberechnung und der Sprungausführung zu trennen. Während diese Lösung im Prinzip zulassen würde, eine Vorabrufstrategie für die vorausgesagte Zieladresse auszuführen, wären die Probleme, die einer feh­ lerhaften Voraussage eigen sind, immer noch vorhanden. D.h., daß die eigentliche Zieladresse immer noch nicht bestimmt wird, bis der Sprungbefehl ausgeführt ist. Daher wird es nötig sein, die Pipeline bei einem bedeutenden Bruchteil der Sprungbefehlsausführungen zu räumen und es wird notwendig sein, den Cache-Speicher mit den Inhalten der korrekten Zieladressen zu laden.

Claims (10)

1. Datenverarbeitungssystem (100,200), gekennzeichnet durch folgende Merkmale:
einen Befehlsprozessor (12, 106, 301) zum nacheinander­ folgenden Ausführen der Befehle eines Programms, wobei die Befehle einen Führe-Verzweigung-Aus-Befehl ein­ schließen, der den Befehlsprozessor (12, 106, 301) ver­ anlaßt, den Befehl, der durch eine Zieladresse (16, 205, 306) bestimmt ist, als den nächsten Befehl in dem Pro­ gramm anstelle des nächsten Befehls in der Programmfolge auszuführen; und
eine Registerdatei (10, 101, 201, 300), die wirksam mit dem Befehlsprozessor (12, 106, 301) verbunden ist und die ein oder mehrere Register (14, 104, 302) umfaßt, wo­ bei jedes der Register eine Einrichtung zum Speichern der Zieladresse (16, 205, 306) eines Verzweigungsbefehls und eine Einrichtung zum Speichern einer Flagge (18, 104, 206, 307) mit einem ersten und einem zweiten Zu­ stand einschließt, wobei der erste Zustand anzeigt, daß der Verzweigungsbefehl den Befehlsprozessor (12, 106, 301) veranlassen sollte, den Befehl, der durch die Ziel­ adresse (16, 205, 306) bestimmt ist, auszuführen, wenn ein Führe-Verzweigung-Aus-Befehl, der sich auf das Regi­ ster (14, 104, 302) bezieht, durch den Befehlsprozessor (12, 106, 301) ausgeführt wird, und wobei der zweite Zustand anzeigt, daß der Befehlsprozessor (12, 106, 301) den nächsten Befehl in der Reihenfolge ausführen sollte, wenn ein Führe-Verzweigung-Aus-Befehl, der sich auf das Register (14, 104, 302) bezieht, durch den Befehlspro­ zessor (12, 106, 301) ausgeführt wird.
2. Datenverarbeitungssystem (100, 200) nach Anspruch 1, dadurch gekennzeichnet, daß die Registerdatei (10, 101, 201, 300) mindestens zwei Register (14, 104, 302) umfaßt.
3. Datenverarbeitungssystem (100, 200) nach Anspruch 1 oder 2, dadurch gekennzeichnet,
daß die Befehle ferner einen Bereite-Verzweigung-Vor- Befehl umfassen, der eine Adresse als Teil dessen ein­ schließt, und
daß der Befehlsprozessor (12, 106, 301) veranlaßt, daß die Adresse in der Zieladreßeinrichtung (16, 205, 306) eines der bestimmten Register (14, 104, 302) gespeichert wird.
4. Datenverarbeitungssystem (100, 200) nach Anspruch 3,
dadurch gekennzeichnet,
daß der Bereite-Verzweigung-Vor-Befehl ferner einen Vorgabewert umfaßt, und
daß der Befehlsprozessor (12, 206, 301) veranlaßt, daß der Vorgabeflaggenwert in der Flaggeneinrichtung (18, 104, 206, 307) eines der bestimmten Register (14, 104, 302) gespeichert wird.
5. Datenverarbeitungssystem (100, 200) nach einem der An­ sprüche 1 bis 4, dadurch gekennzeichnet, daß der Befehl ferner einen Vergleichsbefehl umfaßt, wo­ bei der Vergleichsbefehl den Befehlsprozessor (12, 106, 301) veranlaßt, festzustellen, ob ein Zustand, der durch den Befehl bestimmt ist, wahr ist, und um die Flagge in einem der Register (14, 104, 302) auf einen der Zustände zu setzen.
6. Datenverarbeitungssystem (100, 200) nach einem der An­ sprüche 1 bis 5, ferner gekennzeichnet durch:
einen Cache-Speicher (210) zum Speichern von Kopien von Informationen, die normalerweise in einem langsameren Hauptspeicher (214) gespeichert sind, wobei der Cache- Speicher (210) wirksam mit dem Befehlsprozessor (12, 106, 301) verbunden ist; und
eine Cache-Speicherladeeinrichtung (208), die wirksam mit der Registerdatei (10, 101, 201, 300) und dem Cache-Speicher (210) verbunden ist, um den Cache-Spei­ cher (210) zu veranlassen, eine Kopie des Befehls, der durch die Zieladresse (16, 205, 306) in einem der Re­ gister (14, 104, 302) bestimmt ist, zu speichern, wenn die Flaggeneinrichtung (18, 104, 204, 307) in einem der Register (14, 104, 302) anzeigt, daß die Flagge in einem vorbestimmten Zustand ist.
7. Datenverarbeitungssystem nach Anspruch 6, dadurch ge­ kennzeichnet, daß der Cache-Speicher (210) eine Mehrzahl von Speicher­ ebenen (212, 213) einschließt, wobei die Flaggenein­ richtung (18, 104, 206, 307) mehr als zwei Zustände hat, und wobei der Flaggenzustand die Speicherebene bestimmt, auf der die Kopie des Befehls, der durch die Zieladresse (16, 205, 306) bestimmt ist, gespeichert ist.
8. Datenverarbeitungssystem (100, 200) nach einem der An­ sprüche 1 bis 7, dadurch gekennzeichnet, daß die Registerdatei (10, 101, 201, 300) ferner ein Zeigerregister (309) umfaßt, das bestimmt, auf welches der Register (14, 104, 302) der Registerdatei (10, 101, 201, 300) durch den nächsten Führe-Verzweigung-Aus-Be­ fehl Bezug genommen wird.
9. Datenverarbeitungssystem (100, 200) nach Anspruch 8, da­ durch gekennzeichnet,
daß jedes der Register (302) in der Registerdatei (100, 101, 201, 300) ferner eine Einrichtung (305) zum Spei­ chern eines Wertes umfaßt, der in dem Zeigerregister (309) gespeichert ist, und
daß der Führe-Verzweigung-Aus-Befehl veranlaßt, daß der gespeicherte Wert in das Zeigerregister (309) geladen wird, wenn der Führe-Verzweigung-Aus-Befehl, der sich auf das Register bezieht, durch den Befehlsprozessor (12, 106, 301) ausgeführt wird.
10. Datenverarbeitungssystem (100, 200) nach Anspruch 8 oder 9, dadurch gekennzeichnet, daß die Befehle ferner einen Führe-Verzweigung- und Führe-Verbindung-Aus-Befehl umfassen, wobei die Register (302) jeweils eine Einrichtung zum Speichern eines ersten und eines zweiten Wertes umfassen, und wobei die Ausführung des Verzweigung-und-Verbindung-Befehls veran­ laßt, daß eine Rückkehradresse in ein Register geladen wird, daß durch den zweiten Wert bestimmt ist, wobei der erste Wert in dem bestimmten Register gespeichert wird und das Zeigerregister (309) mit dem zweiten Wert gela­ den wird.
DE4345028A 1993-05-06 1993-12-30 Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen Withdrawn DE4345028A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US5885893A 1993-05-06 1993-05-06

Publications (1)

Publication Number Publication Date
DE4345028A1 true DE4345028A1 (de) 1994-11-10

Family

ID=22019331

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4345028A Withdrawn DE4345028A1 (de) 1993-05-06 1993-12-30 Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen

Country Status (4)

Country Link
US (1) US5615386A (de)
JP (1) JPH06332697A (de)
DE (1) DE4345028A1 (de)
GB (1) GB2277819B (de)

Families Citing this family (24)

* 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
US5928357A (en) * 1994-09-15 1999-07-27 Intel Corporation Circuitry and method for performing branching without pipeline delay
US5790845A (en) * 1995-02-24 1998-08-04 Hitachi, Ltd. System with reservation instruction execution to store branch target address for use upon reaching the branch point
US6185674B1 (en) 1995-04-05 2001-02-06 International Business Machines Corporation Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor
US5881276A (en) * 1996-07-30 1999-03-09 Intel Corporation Manipulation of protected pages to reduce conditional statements
JP3745039B2 (ja) * 1996-08-01 2006-02-15 株式会社ルネサステクノロジ 遅延命令を有するマイクロプロセッサ
JPH1091441A (ja) * 1996-09-13 1998-04-10 Sanyo Electric 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
US6105123A (en) * 1998-03-10 2000-08-15 Hewlett-Packard Company High speed register file organization for a pipelined computer architecture
US6253306B1 (en) 1998-07-29 2001-06-26 Advanced Micro Devices, Inc. Prefetch instruction mechanism for processor
TW455814B (en) * 1998-08-06 2001-09-21 Intel Corp Software directed target address cache and target address register
US6470444B1 (en) * 1999-06-16 2002-10-22 Intel Corporation Method and apparatus for dividing a store operation into pre-fetch and store micro-operations
US6523110B1 (en) * 1999-07-23 2003-02-18 International Business Machines Corporation Decoupled fetch-execute engine with static branch prediction support
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
US7085915B1 (en) * 2000-02-29 2006-08-01 International Business Machines Corporation Programmable prefetching of instructions for a processor executing a non-procedural program
US7861071B2 (en) * 2001-06-11 2010-12-28 Broadcom Corporation Conditional branch instruction capable of testing a plurality of indicators in a predicate register
US7127593B2 (en) * 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
US6986025B2 (en) * 2001-06-11 2006-01-10 Broadcom Corporation Conditional execution per lane
US7010675B2 (en) * 2001-07-27 2006-03-07 Stmicroelectronics, Inc. Fetch branch architecture for reducing branch penalty without branch prediction
US6772179B2 (en) * 2001-12-28 2004-08-03 Lucent Technologies Inc. System and method for improving index performance through prefetching
US20060015866A1 (en) * 2004-07-16 2006-01-19 Ang Boon S System installer for a reconfigurable data center
US10496647B2 (en) * 2017-04-18 2019-12-03 Microsoft Technology Licensing, Llc Delay detection in query processing

Citations (3)

* 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
US4430706A (en) * 1980-10-27 1984-02-07 Burroughs Corporation Branch prediction apparatus and method for a data processing system
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4334268A (en) * 1979-05-01 1982-06-08 Motorola, Inc. Microcomputer with branch on bit set/clear instructions
US4435758A (en) * 1980-03-10 1984-03-06 International Business Machines Corporation Method for conditional branch execution in SIMD vector processors
JPS6051948A (ja) * 1983-08-31 1985-03-23 Hitachi Ltd 情報処理装置
US4764861A (en) * 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
EP0199009A3 (de) * 1985-02-28 1989-05-31 Kabushiki Kaisha Toshiba Ausführungsbahnmesssystem für ein Programm
US4755935A (en) * 1986-01-27 1988-07-05 Schlumberger Technology Corporation Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction
US5197136A (en) * 1987-11-12 1993-03-23 Matsushita Electric Industrial Co., Ltd. Processing system for branch instruction
US4933847A (en) * 1987-11-17 1990-06-12 International Business Machines Corporation Microcode branch based upon operand length and alignment
JPH081602B2 (ja) * 1988-02-23 1996-01-10 三菱電機株式会社 データ処理装置
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
US5134701A (en) * 1989-02-10 1992-07-28 Hewlett-Packard Co. Test apparatus performing runtime replacement of program instructions with breakpoint instructions for processor having multiple instruction fetch capabilities
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 (3)

* 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
US4430706A (en) * 1980-10-27 1984-02-07 Burroughs Corporation Branch prediction apparatus and method for a data processing system
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
US - Firmenschrift der Advanced Micro Devices Inc. "Build a Microcomputer", Chapter II, Microprogrammed Design, 1978, S. 1-26 *

Also Published As

Publication number Publication date
GB2277819B (en) 1997-07-02
JPH06332697A (ja) 1994-12-02
GB2277819A (en) 1994-11-09
GB9408738D0 (en) 1994-06-22
US5615386A (en) 1997-03-25

Similar Documents

Publication Publication Date Title
DE4345028A1 (de) Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen
DE19527031C2 (de) Verzweigungsprozessor für ein Datenverarbeitungssystem und Verfahren zum Betreiben eines Datenverarbeitungssystems
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE102004013676B4 (de) Schaltung in einem Prozessor zur Steuerung einer iterativen Ausführung einer Gruppe von Programmanweisungen
DE2855106C2 (de) Einrichtung zur Durchführung von bedingten Verzweigungen
DE69816044T2 (de) Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE4222776C2 (de) Parallelverarbeitungseinheit und Verfahren zum Ausführen von Befehlen
DE4237417C2 (de) Datenverarbeitungssystem
DE69233313T2 (de) Hochleistungsarchitektur für RISC-Mikroprozessor
DE3116100C2 (de) Datenverarbeitungseinheit
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE69734403T2 (de) Verfahren im bezug auf die behandlung von konditionellen sprüngen in einer multietagen-pipeline-struktur
DE69820027T2 (de) Vorrichtung zur ausführung virtueller maschinenbefehle
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE69931288T2 (de) Ermittlung der Latenzzeit eines Rechnerspeichers
DE60131864T2 (de) Speichern von stapeloperanden in registern
DE4211245B4 (de) Prozessorsystem in Parallelverarbeitungsbauart und Verfahren zu dessen Steuerung
DE3638572C2 (de)
DE69634315T2 (de) Verfahren und Gerät zur Verwendung eines Ladebefehls der keinen Fehler verursacht
DE69727177T2 (de) Emulation von asynchronen Signalen mit Verzweigungsmechanismus
DE19526008C2 (de) Befehlsvorholeinheit für einen Computer
DE19824289C2 (de) Pipelineverarbeitungsmaschine

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal