DE10332311B3 - Pipeline processing method for implementation of jump commands in which to speed processing jump command addresses and control information are stored in a special jump memory - Google Patents

Pipeline processing method for implementation of jump commands in which to speed processing jump command addresses and control information are stored in a special jump memory Download PDF

Info

Publication number
DE10332311B3
DE10332311B3 DE2003132311 DE10332311A DE10332311B3 DE 10332311 B3 DE10332311 B3 DE 10332311B3 DE 2003132311 DE2003132311 DE 2003132311 DE 10332311 A DE10332311 A DE 10332311A DE 10332311 B3 DE10332311 B3 DE 10332311B3
Authority
DE
Germany
Prior art keywords
jump
command
memory
control information
pipeline
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
DE2003132311
Other languages
German (de)
Inventor
Michael Smola
Gerd Dirscherl
Berndt M. Dr. Gammel
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE2003132311 priority Critical patent/DE10332311B3/en
Application granted granted Critical
Publication of DE10332311B3 publication Critical patent/DE10332311B3/en
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
    • 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)

Abstract

Method for accelerated implementation of a jump command that is carried out by a microprocessor using pipeline processing, whereby: if a jump command is present in a write stage (5) a jump memory (6) is interrogated and control information produced via a decoding stage (2, 3). If an entry is found in the jump memory the control information is simultaneously transmitted to a pipeline loading stage. If the entry is not found in the jump memory then jump address and control information for this command are stored in memory after execution of the jump command.

Description

Die vorliegende Erfindung betrifft ein Verfahren zur beschleunigten Ausführung eines Sprungbefehls, der mittels einer Pipeline-Verarbeitung eines Mikroprozessors ausgeführt wird.The present invention relates to a method for accelerated execution of a jump instruction, which is executed by pipeline processing a microprocessor.

Um die Effizienz moderner Mikroprozessoren zu steigern wird die mittlere Ausführungszeit von Befehlen durch eine Pipeline-Architektur mit mehreren Stufen beschleunigt. Dabei bearbeitet jede Pipeline-Stufe eine spezifische Aufgabe, bevor die Ausführung an die nächste Stufe der Pipeline weitergegeben wird. Somit kann auf jeder Stufe im Prozeß schneller an der jeweils spezifischen Aufgabe gearbeitet werden, wodurch die Pipeline insgesamt mit höheren Geschwindigkeiten arbeitet und der Gesamtdurchsatz und somit die Performance des Mikroprozessors erhöht wird.The efficiency of modern microprocessors the average execution time of instructions is increased by accelerated a pipeline architecture with multiple stages. there each pipeline stage processes a specific task before the execution to the next Stage of the pipeline is passed. So at every level faster in the process be worked on the specific task, whereby the Pipeline overall with higher Speeds works and the total throughput and thus the Performance of the microprocessor is increased.

Ein zu verarbeitender Befehl wird in nacheinander auszuführende Verarbeitungsschritte zerlegt und in den separaten Pipelinestufen ausgeführt. Ein Befehl kann beispielsweise in den folgenden Stufen einer Pipeline verarbeitet werden:

  • – Laden des Befehls aus dem Befehlsspeicher oder aus einem externen Speicher,
  • – Dekodieren des Befehls,
  • – Bestimmung der Operanden des Befehls,
  • – Laden der Operanden aus dem Speicher,
  • – Ausführen der für den Befehl erforderlichen einen oder mehreren Operationen in einer oder mehreren Stufen und
  • – Zurückschreiben der Ergebnisse der Operation oder der Adresse eines Sprungziels in Register oder Speicher.
An instruction to be processed is broken down into processing steps to be executed one after the other and executed in the separate pipeline stages. For example, a command can be processed in the following stages of a pipeline:
  • - loading the command from the command memory or from an external memory,
  • - decoding the command,
  • - determination of the operands of the instruction,
  • Loading the operands from the memory,
  • - Perform the one or more operations required for the command in one or more stages and
  • - Write back the results of the operation or the address of a jump destination in register or memory.

Zur Ausführung des Befehls kann die Pipeline weitere hier nicht aufgeführte Stufen umfassen. So kann beispielsweise das Dekodieren eines Befehls mehrere Dekodierstufen erfordern, um Steuerinformationen der zur Ausführung des Befehls erforderlichen Schritte zu erhalten und diese an eine Ausführungseinheit eines Mikroprozessors weiterleiten zu können.To execute the command, the Pipeline include other stages not listed here. So can for example the decoding of a command several decoding stages require to provide control information of those required to execute the command Receive steps and these to an execution unit of a microprocessor to be able to forward.

Beim Vorliegen von Kontroll- und Datenabhängigkeiten zwischen nacheinander auszuführenden Befehlen muß die Pipeline angehalten werden.In the presence of control and data dependencies between successive executions The must command Pipeline to be stopped.

Kontrollabhängigkeiten liegen beispielsweise bei bedingten Sprüngen vor, da der nächste auszuführende Befehl erst bekannt ist, wenn die Bedingung des Sprungs ausgewertet ist. Die Abarbeitung des nächsten Befehls kann im Allgemeinen nicht überlappend gestartet werden.There are control dependencies, for example with conditional jumps before since the next one executed Command is only known when the condition of the jump is evaluated is. Processing the next one Command generally cannot be started overlapping.

Von Datenabhängigkeiten spricht man, wenn das Ergebnis eines Befehls in einem nachfolgenden Befehl als Operand benötigt wird.One speaks of data dependencies if that Result of an instruction in a subsequent instruction as an operand needed becomes.

Die Verarbeitung aller Befehle nach einer Abhängigkeit wird somit blockiert, bis die Bearbeitung aller Befehle vor der Abhängigkeit abgeschlossen ist. Dies hat zur Folge, daß die Pipeline angehalten wird und die Abarbeitung des Befehls um einige Prozeßzyklen verzögert ausgeführt wird.Processing all commands after a dependency is blocked until all commands have been processed before dependence is completed. As a result, the pipeline is stopped and the execution of the command is delayed by a few process cycles.

Eine Standardmethode, die einen Zeitverlust bei der Abarbeitung des Befehls in der Pipeline möglichst gering hält, stellt die Sprungvorhersage, die sogenannte Branch-Prediction, dar. Die dynamische Sprungvorhersage zur Beschleunigung der Ausführung von Sprüngen wird über einen sogenannten Branch-Prediction-Buffer, einem kleinen Speicher, realisiert, der zum Beispiel durch den niederwertigen Adreßteil des Sprungbefehls indiziert wird. Ein Speicher beinhaltet bestimmte Bits, die sogenannten Prediction-Bits als zum Beispiel 1-Bit oder 2-Bit Informationen, anhand derer es möglich ist, vorherzusagen, ob ein Sprung mit hoher Wahrscheinlichkeit ausgeführt wird oder nicht. Die Erzielung einer ho hen Genauigkeit einer Sprungvorhersage erfordert bei dieser Methode eine komplexe Logik für die Berechnung von Sprungwahrscheinlichkeiten.A standard method of wasting time keeps the execution of the command in the pipeline as low as possible represents the branch prediction. The dynamic branch prediction to speed up execution of jumps is about a so-called branch prediction buffer, a small memory, which is indicated, for example, by the low-order address part of the jump instruction becomes. A memory contains certain bits, the so-called prediction bits than 1-bit or 2-bit information, for example possible is to predict whether a jump is likely to occur or not. Achieving high accuracy of a jump prediction This method requires complex logic to calculate Jump probabilities.

Eine weitere Methode zur virtuellen Verkürzung der Pipeline im Zusammenhang mit der Branch-Prediction stellt die Verwendung eines Sprungziels-Speichers, eines sogenannten Branch-Target-Buffers, dar. Der Branch-Target-Buffer ist ein kleiner zusätzlicher Cachespeicher, der die vorhergesagte Zielsprungadresse für einen Sprungbefehl aufbewahrt und in der Regel mit den niederwertigsten Bits der Adresse des Sprungbefehls adressiert wird. Auf den Branch-Target-Buffer wird bereits während des Ladens des Befehls mit Hilfe der Befehlsadresse des aktuellen Befehls zugegriffen. Sollte es sich um einen Sprungbefehl handeln, kennt man die Zielsprungadresse bereits zum Ende des Befehls. Wird also im Branch-Target-Buffer zu einem Sprungbefehl ein Eintrag einer Sprungzieladresse gefunden, wird der zugeordnete Programmzähler als neuer Programmzähler gesetzt, wenn der Sprung genommen werden soll. Der unter der Zielsprungadresse befindliche Befehl muß von der vorhergesagten Adresse aus dem Befehlsspeicher geladen und anschließend in den vorgesehenen Dekodierstufen dekodiert werden, so daß die Steuerinformation zur Ausführung des Befehls der Ausführungsstufe der Pipeline zugeführt werden kann.Another method of virtual shortening the pipeline related to the branch prediction represents the Use of a jump target memory, a so-called branch target buffer. The branch target buffer is a small additional cache that keeps the predicted destination jump address for a jump instruction and usually addressed with the least significant bits of the address of the jump instruction becomes. The branch target buffer is already in use during the Load the command using the command address of the current command accessed. If it is a jump command, you know the destination jump address at the end of the command. So in Branch target buffer for a branch instruction found an entry of a branch target address, becomes the assigned program counter as a new program counter set if the jump should be taken. The one under the destination jump address command must be from the predicted address from the instruction memory and then in the intended decoding stages are decoded so that the control information for execution the execution level command fed to the pipeline can be.

In der US 5511175 A wird beim Vorliegen eines auszuführenden Sprungbefehls, der mittels einer Pipeline-Verarbeitung eines Mikroprozessors ausgeführt wird, der Branch-Target-Buffer nach einem Eintrag einer bekannten Sprungzieladresse und einem unter dieser Adresse befindlichen Befehl abgefragt. Ist der Eintrag vorhanden, erfolgt die Weiterleitung des Befehls an eine Stufe der Pipeline sowie das Laden des auf den Befehl unter der Sprungzieladresse folgenden Befehls in eine Ladestufe der Pipeline. Ist kein Eintrag vorhanden, wird die Sprungzieladresse sowie der unter dieser Adresse befindliche Befehl mit der Ausführung des Sprungbefehls in dem Branch-Target-Buffer gespeichert.In the US 5511175 A If there is a jump instruction to be executed, which is executed by pipeline processing of a microprocessor, the branch target buffer is queried for an entry of a known jump target address and a command located under this address. If the entry is present, the command is forwarded to a stage of the pipeline and the command following the command at the jump destination address is loaded into a loading stage of the pipeline. If there is no entry, the jump target address and the command located at this address are stored in the branch target buffer when the jump command is executed.

Eine weitere Methode, das Anhalten einer Pipeline zu verkürzen, wird über die in einem sogenannten Trace-Cache gespeicherten dekodierten Befehle verwirklicht. In diesem Trace-Cache wird unabhängig davon, ob es sich bei dem Befehl um einen Sprungbefehl handelt oder nicht, der dekodierte Befehl gespeichert. Auch diese Methode zeichnet sich durch einen hohen Implementierungsaufwand aus.Another method of stopping to shorten a pipeline, is about the decoded instructions stored in a so-called trace cache realized. In this trace cache becomes independent whether the instruction is a jump instruction or not, the decoded instruction is saved. This method also draws is characterized by a high implementation effort.

Die DE 69031229 T2 schlägt zur Beschleunigung der Ausführung von bedingten Sprungbefehlen eine Zwischenspeicherung von dekodierten Befehlen vor, in dem die einem bedingten Sprungbefehl direkt nachfolgenden Befehle vordekodiert und vorübergehend gespeichert werden, so dass diese Befehle, falls kein Sprung erfolgt, direkt einer Ausführungsstufe zugeführt werden können.The DE 69031229 T2 proposes, in order to accelerate the execution of conditional jump instructions, to temporarily store decoded instructions in which the instructions immediately following a conditional jump instruction are pre-decoded and temporarily stored, so that these instructions, if no jump occurs, can be fed directly to an execution stage.

Aufgabe der vorliegenden Erfindung ist es, ein Verfahren vorzuschlagen, bei dem Programme mit Sprungbefehlen beschleunigt ausgeführt werden.Object of the present invention is to propose a procedure in which programs with jump instructions accelerated become.

Die Aufgabe wird durch ein Verfahren gelöst, bei dem beim Vorliegen eines auszuführenden Sprungbefehls von einer Schreibstufe ein Sprung-Speicher nach einem Eintrag einer bekannten Sprungzieladresse und einer über zumindest eine Dekodierstufe erzeugte Steuerinformation des unter dieser Adresse befindlichen Befehls abgefragt wird,

  • – beim Auffinden des Eintrags im Sprung-Speicher gleichzeitig die Steuerinformation an eine Ausführungsstufe der Pipeline weitergeleitet und der auf den Befehl unter der Sprungzieladresse folgende Befehl in eine Ladestufe der Pipeline geladen wird und
  • – bei Nichtauffinden des Eintrags die Sprungzieladresse und der Steuerinformation des unter dieser Adresse befindlichen Befehls nach der Ausführung des Sprungbefehls in dem Sprung-Speicher abgespeichert wird.
The object is achieved by a method in which, when a jump command to be executed is available, a jump memory is queried for an entry of a known jump destination address and control information of the command located at this address generated via at least one decoding step,
  • - When the entry in the jump memory is found, the control information is simultaneously forwarded to an execution stage of the pipeline and the command following the command under the jump destination address is loaded into a loading stage of the pipeline and
  • - If the entry is not found, the jump destination address and the control information of the command located at this address are stored in the jump memory after the execution of the jump command.

Das erfindungsgemäße Verfahren weist den Vorteil auf, daß Sprungbefehle, die im Laufe einer Programmausführung vorher bereits ausgeführt wurden, beschleunigt werden. Dadurch daß ein Sprung-Speicher vorgesehen ist, der eine Zielsprungadresse und den dekodierten Befehl, d.h. die Steuerinformation des unter dieser Adresse befindlichen Befehls, speichert, kann die Dekodierstufe bzw. mehrere Dekodierstufen übersprungen werden. Dies hat zur Folge, daß die Pipeline virtuell um die Stufe des Dekodierens verkürzt wird und somit auch der Zeitverlust bei Sprüngen, da Taktzyklen eingespart werden, effektiv verkürzt wird.The method according to the invention has the advantage on that jump commands, which in the course of a program execution previously executed were accelerated. In that a jump memory is provided which is a destination hop address and the decoded instruction, i.e. the control information of the command located at this address, stores, the decoding stage or several decoding stages can be skipped become. As a result, the Pipeline is virtually shortened by the level of decoding and thus also the loss of time when jumping, since clock cycles are saved are effectively shortened becomes.

Zur Realisierung des Verfahrens bedarf es lediglich der Nutzung eines Speicherbereichs eines bereits verfügbaren Speichers eines Mikroprozessors oder der Verwendung eines zusätzlichen kleinen Cache-Speichers, so daß hierzu nur in geringem Umfang zusätzliche Hardware erforderlich ist.Requires to implement the procedure it is simply the use of a memory area of an already available memory a microprocessor or the use of an additional one small cache, so this only minor additional ones Hardware is required.

In Abhängigkeit der Verfügbarkeit von Speicherressourcen bietet das Verfahren auch die Möglichkeit, lediglich eine Vorstufe der dekodierten Steuerinformation eines Befehls in dem Sprung-Speicher abzuspeichern. Selbst das Einsparen der Ausführung einer einzelnen Dekodierstufe bewirkt bereits eine deutliche Steigerung in der Performance.Depending on availability of storage resources, the method also offers the possibility of just a preliminary stage of the decoded control information Command to store in the jump memory. Even saving the execution a single decoding stage already results in a significant increase in performance.

Werden die abzuspeichernden Steuerinformationen komprimiert, werden weitere Speicherressourcen eingespart. Die benötigten Steuerinformationen müssen lediglich beim Auslesen zur weiteren Verarbeitung beispielsweise durch eine Dekompressionsstufe dekomprimiert werden.Will the tax information to be saved compressed, additional memory resources are saved. The tax information required have to only when reading out for further processing, for example be decompressed by a decompression stage.

Nachfolgend werden Einzelheiten des erfindungsgemäßen Verfahrens anhand eines Beispiels unter Bezugnahme auf die Zeichnung näher erläutert.Below are details of the inventive method explained in more detail using an example with reference to the drawing.

Es zeigt:It shows:

1 Verarbeitungsschritte eines auszuführenden Sprungbefehls am Beispiel einer 5-stufigen Pipeline. 1 Processing steps of a jump instruction to be executed using the example of a 5-stage pipeline.

Die 1 zeigt eine Pipeline-Architektur mit fünf Stufen 1, 2, 3, 4, 5, wobei jede einzelne Stufe für die Bearbeitung einer spezifischen Aufgabe zur Abarbeitung eines Befehls vorgesehen ist, und einen Sprung-Speicher 6, dessen Inhalt durch die Ausführung von Sprungbefehlen bestimmt ist.The 1 shows a pipeline architecture with five stages 1 . 2 . 3 . 4 . 5 , wherein each individual stage is provided for the processing of a specific task for processing a command, and a jump memory 6 whose content is determined by the execution of jump commands.

In der ersten Stufe 1, der Ladestufe, wird ein Befehl aus einem Befehlsspeicher 7 oder einem hier nicht gezeigten externen Speicher geladen und von nachfolgenden zweiten und dritten Stufen 2, 3, den Dekodierstufen, dekodiert, um die Steuerinformationen der für die Ausführung des Befehls erforderlichen Schritte zu erhalten. Die Steuerinformationen werden an eine vierte Stufe 4, eine Ausführungsstufe, weitergeleitet, die den Befehl ausführt. Die aufgrund der Ausführung des Befehls erzielten Ergebnisse werden einer fünften Stufe 5, einer Schreibstufe, zugeführt, die die Ergebnisse der Operation oder auch die Adresse eines Sprungziels bei der Ausführung eines Sprungbefehls in ein hier nicht gezeigtes Register oder einen hier nicht gezeigten Speicher zurückschreibt.In the first stage 1 , the loading level, a command from a command memory 7 or loaded from an external memory, not shown here, and from subsequent second and third stages 2 . 3 , the decoding stages, is decoded to obtain the control information of the steps required to execute the command. The tax information is at a fourth stage 4 , an execution stage that executes the command. The results obtained from executing the command become a fifth stage 5 , a write stage, which writes the results of the operation or the address of a jump target when executing a jump instruction into a register (not shown here) or a memory (not shown here).

Wird beispielsweise in die Ladestufe 1 ein bedingter Sprungbefehl geladen, der aufgrund einer Bedingung auszuführen ist, initiiert die Schreibstufe einen Zugriff (A) auf den Sprung-Speicher 6 und sucht einen Eintrag der entsprechenden Adresse des Sprungziels. Liegt im Sprung-Speicher 6 der Eintrag dieser Adresse vor, wird aus dem Sprung-Speicher 6 die Steuerinformation des unter dieser Adresse befindlichen Befehls direkt an die Ausführungsstufe 4 weitergeleitet (B). Gleichzeitig lädt die Ladestufe 1 den auf den Befehl unter der Sprungzieladresse folgenden Befehl aus dem Befehlsspeicher 7 (C).For example, in the charging stage 1 If a conditional jump instruction is loaded, which is to be executed on the basis of a condition, the write stage initiates an access (A) to the jump memory 6 and looks for an entry of the corresponding address of the jump destination. It is in the jump memory 6 the entry of this address before, is from the jump memory 6 the control information of the command located at this address directly to the execution stage 4 forwarded (B). At the same time, the charging stage charges 1 the command from the command memory following the command at the jump destination address 7 (C).

Wird in dem Sprung-Speicher 6 kein entsprechender Eintrag der Adresse des Sprungziels und des unter dieser Adresse befindlichen dekodierten Befehls gefunden, wird der unter der Adresse des Sprungziels befindliche Befehl aus dem Befehlsspeicher 7 in die Ladestufe 1 geladen, nachfolgend in den Dekodierstufen 2, 3 dekodiert, die Steuerinformation des unter der Adresse des Sprungziels befindlichen Befehls und die Adresse des Sprungziels in dem Sprung-Speicher 6 abgespeichert (D) und der Befehl in der Ausführungsstufe 4 ausgeführt. Die erhaltenen Ergebnisse werden in entsprechenden hier nicht gezeigten Registern gesichert.Will in the jump memory 6 no correspond If the entry of the address of the jump destination and the decoded instruction located at this address is found, the instruction located at the address of the jump destination is extracted from the instruction memory 7 in the charging stage 1 loaded, subsequently in the decoding stages 2 . 3 decodes the control information of the instruction located at the address of the branch destination and the address of the branch destination in the branch memory 6 saved (D) and the command in the execution stage 4 executed. The results obtained are saved in corresponding registers, not shown here.

Somit wird die Ausführung von Sprungbefehlen, die im Laufe einer Programmausführung bereits ausgeführt wurden, wesentlich beschleunigt, da beim erneuten Laden des Sprungbefehls die Informationen zur Ausführung des unter dem Sprungziel befindlichen Befehls bereits im Sprung-Speicher vorliegen und somit einzelne Stufen der Pipeline übersprungen werden können. Hierdurch wird die Gesamtperformance des Mikroprozessors wesentlich erhöht.Thus the execution of Jump commands that have already been executed during program execution significantly accelerated because the reload of the jump command the execution information of the command located under the jump target is already in the jump memory are available and individual stages of the pipeline are thus skipped can. This makes the overall performance of the microprocessor essential elevated.

Claims (8)

Verfahren zur beschleunigten Ausführung eines Sprungbefehls, der mittels einer Pipeline-Verarbeitung eines Mikroprozessors ausgeführt wird, bei dem: – beim Vorliegen des auszuführenden Sprungbefehls von einer Schreibstufe (5) ein Sprung-Speicher (6) nach einem Eintrag einer bekannten Sprungzieladresse und einer über zumindest eine Dekodierstufe (2, 3) erzeugte Steuerinformation des unter dieser Adresse befindlichen Befehls abgefragt wird, – beim Auffinden des Eintrags im Sprung-Speicher (6) gleichzeitig die Steuerinformation an eine Ausführungsstufe (4) der Pipeline weitergeleitet und der auf den Befehl unter der Sprungzieladresse folgende Befehl in eine Ladestufe (1) der Pipeline geladen wird und – bei Nichtauffinden des Eintrags die Sprungzieladresse und die Steuerinformation des unter dieser Adresse befindlichen Befehls nach der Ausführung des Sprungbefehls in dem Sprung-Speicher (6) abgespeichert wird.Method for accelerated execution of a jump instruction, which is executed by means of pipeline processing of a microprocessor, in which: - when the jump instruction to be executed is present from a write stage ( 5 ) a jump memory ( 6 ) after an entry of a known jump destination address and one via at least one decoding stage ( 2 . 3 ) control information generated for the command located at this address is queried, - when the entry is found in the jump memory ( 6 ) at the same time the control information to an execution stage ( 4 ) forwarded to the pipeline and the command following the command under the jump destination address into a loading stage ( 1 ) the pipeline is loaded and - if the entry is not found, the jump destination address and the control information of the command located under this address after the execution of the jump command in the jump memory ( 6 ) is saved. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß beim Vorliegen eines nicht auszuführenden Sprungbefehls das Laden des auf den Sprungbefehl folgenden Befehls in die Ladestufe (1) der Pipeline unverzögert erfolgt.Method according to Claim 1, characterized in that when a jump command which is not to be carried out is present, the loading of the command following the jump command into the loading stage ( 1 ) the pipeline takes place without delay. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Verdrängung der im Sprung-Speicher (6) gespeicherten Einträge in einer festgelegten Abfolge erfolgt (round-robin).A method according to claim 1, characterized in that the displacement of the in the jump memory ( 6 ) stored entries are made in a defined sequence (round-robin). Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die im Sprung-Speicher (6) am wenigsten genutzten gespeicherten Einträge zuerst verdrängt werden (least recently used).A method according to claim 1, characterized in that the in the jump memory ( 6 ) least used stored entries are displaced first (least recently used). Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Verdrängung der im Sprung-Speicher (6) gespeicherten Einträge nach Häufigkeit gewichtet erfolgt (branch history table).A method according to claim 1, characterized in that the displacement of the in the jump memory ( 6 ) stored entries weighted according to frequency (branch history table). Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Steuerinformationen im Sprung-Speicher (6) komprimiert abgespeichert sind.Method according to Claim 1, characterized in that the control information is stored in the jump memory ( 6 ) are stored compressed. Verfahren nach Anspruch 1 oder 6, dadurch gekennzeichnet, daß die Steuerinformationen nach dem Auslesen aus dem Sprung-Speicher (6) dekomprimiert werden.Method according to claim 1 or 6, characterized in that the control information after reading out from the jump memory ( 6 ) can be decompressed. Verfahren nach einem der vorherigen Ansprüche, dadurch gekennzeichnet, daß nur eine Vorstufe der dekodierten Steuerinformation des unter der Sprungadresse befindlichen Befehls im Sprung-Speicher (6) abgespeichert ist.Method according to one of the preceding claims, characterized in that only one preliminary stage of the decoded control information of the instruction located under the jump address in the jump memory ( 6 ) is saved.
DE2003132311 2003-07-16 2003-07-16 Pipeline processing method for implementation of jump commands in which to speed processing jump command addresses and control information are stored in a special jump memory Expired - Fee Related DE10332311B3 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE2003132311 DE10332311B3 (en) 2003-07-16 2003-07-16 Pipeline processing method for implementation of jump commands in which to speed processing jump command addresses and control information are stored in a special jump memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE2003132311 DE10332311B3 (en) 2003-07-16 2003-07-16 Pipeline processing method for implementation of jump commands in which to speed processing jump command addresses and control information are stored in a special jump memory

Publications (1)

Publication Number Publication Date
DE10332311B3 true DE10332311B3 (en) 2004-10-07

Family

ID=32946478

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2003132311 Expired - Fee Related DE10332311B3 (en) 2003-07-16 2003-07-16 Pipeline processing method for implementation of jump commands in which to speed processing jump command addresses and control information are stored in a special jump memory

Country Status (1)

Country Link
DE (1) DE10332311B3 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5511175A (en) * 1990-02-26 1996-04-23 Nexgen, Inc. Method an apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
DE69031229T2 (en) * 1989-02-03 1998-05-07 Nec Corp Pipeline microprocessor with an instruction decoder that performs early decoding

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69031229T2 (en) * 1989-02-03 1998-05-07 Nec Corp Pipeline microprocessor with an instruction decoder that performs early decoding
US5511175A (en) * 1990-02-26 1996-04-23 Nexgen, Inc. Method an apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency

Similar Documents

Publication Publication Date Title
DE10084556B4 (en) Optimized execution of statically most likely predicted branch instructions
DE69534113T2 (en) Compression of the command words of a computer
DE2715073C3 (en) Microprogrammed computer control device
DE69932066T2 (en) MECHANISM FOR "STORE-TO-LOAD FORWARDING"
DE69738188T2 (en) METHOD AND APPARATUS FOR INCREASED ACCURACY IN THE BRANCHING FORECAST IN A SUPERSCALAR MICROPROCESSOR
EP0689694B1 (en) Process for the machine-generation of parallel processable command groups from a program for super-scalar microprocessors
DE60004640T2 (en) METHOD AND DEVICE FOR JUMP FORECASTING USING A HYBRID BRANCH HISTORY WITH A COMMON ACCESS STRUCTURE
DE60032794T2 (en) BIT DECOMPRESSION PROCESSING WITH A VERSATILE ALIGNMENT TOOL
DE69133571T2 (en) Data processor with the ability to execute two instructions simultaneously
DE10306051B4 (en) A method for optimizing the processing of instructions by a processor and processors for performing the methods
DE112004001040T5 (en) Method and data processor with reduced operation interruption due to operand dependencies
DE4134392C2 (en) Method and apparatus for invalidating commands in devices with parallel processing
DE102005001679B4 (en) Microprocessor device, and method for branch prediction for conditional branch instructions in a microprocessor device
DE10332311B3 (en) Pipeline processing method for implementation of jump commands in which to speed processing jump command addresses and control information are stored in a special jump memory
CH635451A5 (en) ARRANGEMENT FOR SWITCHING BETWEEN PROGRAMS TO BE PROCESSED IN A DATA PROCESSING SYSTEM.
DE2702722A1 (en) INSTRUCTION INTERPRETATION IN ELECTRONIC DATA PROCESSING SYSTEMS
DE69835159T2 (en) MICROPROCESSOR with extreme value commands and comparison commands
DE10028064B4 (en) Computer system with ROM correction units
DE10196152B3 (en) Programmable control device
DE102016108081A1 (en) Microprocessor with additional commands for binary search and associated search method
DE102005036605B4 (en) Fast universal computer architecture with automatic program variant selection
DE19983210B4 (en) Programmable control device
DE19950784B4 (en) A branch instruction prediction system for a computer instruction pipeline and a method for prefetching a instruction code during execution of a conditional branch instruction
WO1991019251A1 (en) Method of processing a user programme in a parallel-computer system
DE3740877A1 (en) System and method to increase the data throughput performance in a pipeline microprocessor

Legal Events

Date Code Title Description
8100 Publication of patent without earlier publication of application
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee