DE102013210529A1 - Computer-implemented method for carrying out selective jump instruction prediction in e.g. digital special or general purpose computer, involves blocking jump instruction prediction after prediction blocking instruction is executed - Google Patents

Computer-implemented method for carrying out selective jump instruction prediction in e.g. digital special or general purpose computer, involves blocking jump instruction prediction after prediction blocking instruction is executed Download PDF

Info

Publication number
DE102013210529A1
DE102013210529A1 DE201310210529 DE102013210529A DE102013210529A1 DE 102013210529 A1 DE102013210529 A1 DE 102013210529A1 DE 201310210529 DE201310210529 DE 201310210529 DE 102013210529 A DE102013210529 A DE 102013210529A DE 102013210529 A1 DE102013210529 A1 DE 102013210529A1
Authority
DE
Germany
Prior art keywords
instruction
instructions
jump
prediction
branch prediction
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.)
Ceased
Application number
DE201310210529
Other languages
German (de)
Inventor
James J. Bonanno
Ulrich Mayer
Anthony Saporito
Chung-Lung K. Shum
Timothy J. Slegel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/524,402 external-priority patent/US9891922B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102013210529A1 publication Critical patent/DE102013210529A1/en
Ceased legal-status Critical Current

Links

Images

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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • 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/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Abstract

The method involves detecting an instruction for blocking jump instruction prediction in a stream of instructions by a processor e.g. CPU. The jump instruction prediction is blocked by a prediction blockage module (124) at a predetermined number of jump instructions after the instruction for blocking the jump instruction prediction is executed by the processor based on detection of prediction blocking instruction. A preset condition e.g. type of code, is detected by a condition detection module (121) based on the stream of instructions by the processor. Independent claims are also included for the following: (1) a computer system for carrying out selective jump instruction prediction (2) a computer program product comprising instructions to carry out selective jump instruction prediction.

Description

QUERVERWEIS AUF VERWANDTE ANMELDUNGENCROSS-REFERENCE TO RELATED APPLICATIONS

Dies ist eine Nachanmeldung der US-Patentanmeldung Nr. 13/524,402 auf die sie Prioritätsanspruch erhebt, eingereicht am 15. Juni 2012, deren vollständiger Inhalt durch Verweis einen integralen Bestandteil der vorliegenden Anmeldung bildet.This is a subsequent application of US Patent Application No. 13 / 524,402, to which it claims priority, filed on Jun. 15, 2012, the entire contents of which form an incorporated part of the present application by reference.

HINTERGRUNDBACKGROUND

Die vorliegenden Ausführungsformen betreffen selektives Blockieren von Sprunganweisungsvorhersage und insbesondere Bereitstellen einer Anweisung in einem Strom an auszuführenden Anweisungen, um Sprungvorhersage an einer vorgegebenen Anzahl von zukünftigen Sprunganweisungen zu blockieren.The present embodiments relate to selectively blocking jump instruction prediction, and more particularly to providing an instruction in a stream of instructions to be executed to block branch prediction on a predetermined number of future branch instructions.

Prozessoren verwenden Pipelines zum Erhöhen der Geschwindigkeit, mit der ein Anweisungsstrom verarbeitet werden kann. Die Pipeline kann eine Anzahl von Verarbeitungsstufen aufweisen, und wenn eine Anweisung in einer Stufe verarbeitet wird, kann eine nächste Anweisung in einer vorgeordneten Stufe verarbeitet werden. Umfasst ein Strom von Anweisungen eine Sprunganweisung, muss der Prozessor möglicherweise die Sprunganweisung ausführen oder die Sprunganweisung durch die gesamte Pipeline führen, um eine nächste Anweisung, die ausgeführt werden soll, zu ermitteln. Zur Steigerung der Effizienz können Prozessoren ermitteln, wann der Anweisungsstrom eine Sprunganweisung aufweist und vorhersagen, welche Anweisung der Sprunganweisung in der Pipeline folgen sollte.Processors use pipelines to increase the speed at which an instruction stream can be processed. The pipeline can have a number of processing stages, and when a statement is processed in one stage, a next instruction can be processed in an upstream stage. If a stream of instructions includes a jump instruction, the processor may have to execute the jump instruction or pass the jump instruction all the way through the pipeline to determine a next instruction to be executed. To increase efficiency, processors can determine when the instruction stream has a jump instruction and predict which instruction should follow the jump instruction in the pipeline.

Falsche Vorhersagen durch den Prozessor können jedoch zu einer verminderten Verarbeitungseffizienz führen. Sagt der Prozessor beispielsweise vorher, dass eine nächste Anweisung einer bedingten Sprunganweisung folgt, der Sprung jedoch nicht ausgeführt wird, müssen die nächste Anweisung sowie jegliche nachfolgenden Anweisungen, die in verschiedenen Stufen der Pipeline verarbeitet worden sind, gelöscht (cleared) werden, und es müssen neue Anweisungen von dem ursprünglichen Strom einschließlich der Sprunganweisung am Anfang der Pipeline bereitgestellt werden. Im Ergebnis befinden sich nach einer falschen Sprungvorhersage vorgeordnete Stufen der Pipeline über mehrere Zyklen in einem Leerlauf.However, incorrect predictions by the processor may result in reduced processing efficiency. For example, if the processor previously predicts that a next instruction follows a conditional jump instruction, but the jump is not executed, the next instruction and any subsequent instructions that have been processed in different stages of the pipeline must be cleared, and must new instructions are provided from the original stream including the jump instruction at the beginning of the pipeline. As a result, upstream stages of the pipeline are idle for several cycles after an incorrect branch prediction.

KURZDARSTELLUNGSUMMARY

Beispielhafte Ausführungsformen weisen ein Computersystem zum Durchführen von selektiver Sprungvorhersage auf. Das System weist auf, einen Speicher, der so konfiguriert ist, dass er Anweisungen speichert und einen Prozessor, der so konfiguriert ist, dass er die Anweisungen zum Steuern des Computersystems zum Durchführen von Funktionen, die durch die Anweisungen angezeigt sind, ausführt. Das System ist so konfiguriert, dass es ein Verfahren durchführt, aufweisend Erfassen einer Anweisung zum Blockieren der Sprungvorhersage in einem Strom von Anweisungen durch den Prozessor und Blockieren der Sprungvorhersage an einer vorgegebenen Anzahl von Sprunganweisungen durch den Prozessor, die der Anweisung zum Blockieren der Sprungvorhersage folgen, auf der Grundlage des Erfassens der Anweisung Blockieren der Sprungvorhersage.Exemplary embodiments include a computer system for performing selective branch prediction. The system includes a memory configured to store instructions and a processor configured to execute the instructions for controlling the computer system to perform functions indicated by the instructions. The system is configured to perform a method comprising detecting, by the processor, an instruction to block the branch prediction in a stream of instructions and to block the branch prediction on a predetermined number of branch instructions following the instruction to block the branch prediction based on detecting the instruction blocking the jump prediction.

Zusätzliche beispielhafte Ausführungsformen weisen ein computerimplementiertes Verfahren zum Durchführen selektiver Sprungvorhersage auf. Das Verfahren weist Erfassen einer Anweisung zum Blockieren einer Sprungvorhersage in einem Strom von Anweisungen durch den Prozessor und Blockieren der Sprungvorhersage einer vorgegebenen Anzahl von Sprunganweisungen durch den Prozessor, die der Anweisung zum Blockieren einer Sprungvorhersage folgen, auf der Grundlage des Erfassens der Anweisung zum Blockieren einer Sprungvorhersage auf.Additional exemplary embodiments include a computer-implemented method of performing selective branch prediction. The method includes detecting, by the processor, an instruction to block a branch prediction in a stream of instructions and blocking the branch prediction of a predetermined number of branch instructions following the instruction to block a branch prediction based on detecting the instruction to block one Jump prediction on.

Weitere beispielhafte Ausführungsformen weisen ein Computerprogrammprodukt zum Durchführen selektiver Sprungvorhersage auf. Das Computerprogrammprodukt weist ein materielles Speichermedium auf, das von einer Verarbeitungsschaltung lesbar ist und Anweisungen zur Ausführung durch die Verarbeitungsschaltung speichert. Das Verfahren weist Erfassen einer Anweisung zum Blockieren von Sprungvorhersage durch den Prozessor in einem Strom von Anweisungen und Blockieren der Sprungvorhersage einer vorgegebenen Anzahl von Sprunganweisungen durch den Prozessor nach der Anweisung zum Blockieren von Sprungvorhersage auf der Grundlage des Erfassens der Anweisung zum Blockieren von Sprungvorhersage auf.Other exemplary embodiments include a computer program product for performing selective branch prediction. The computer program product comprises a physical storage medium readable by a processing circuit and storing instructions for execution by the processing circuitry. The method includes detecting, by the processor, an instruction to block branch prediction in a stream of instructions and blocking the branch prediction of a predetermined number of branch instructions by the processor after the instruction to block branch prediction based on detecting the branch prediction blocking instruction.

Es werden weitere beispielhafte Ausführungsformen und Vorteile mit den Verfahrensweisen der offenbarten Ausführungsformen umgesetzt. Hierin werden weitere Ausführungsformen und Aspekte der vorliegenden Erfindung ausführlich beschrieben. Für ein besseres Verständnis der Ausführungsformen und ihrer Vorteile und Merkmale wird auf die Beschreibung und die Zeichnungen verwiesen.Other exemplary embodiments and advantages are implemented with the practices of the disclosed embodiments. Herein further embodiments and aspects of the present invention will be described in detail. For a better understanding of the embodiments and their advantages and features, reference is made to the description and the drawings.

KURZE BESCHREIBUNG DER MEHREREN ANSICHTEN DER ZEICHNUNGENBRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

Der die Erfindung bildende Gegenstand wird insbesondere in den am Schluss der Patentschrift angeführten Ansprüchen beschrieben und ausdrücklich darin beansprucht. Die vorstehenden sowie weitere Merkmale und Vorteile der Erfindung sind anhand der folgenden ausführlichen Beschreibung ersichtlich, die zusammen mit den begleitenden Zeichnungen gelesen wird, in denen:The article forming the invention is described in particular in the claims cited at the end of the patent and expressly claimed therein. The above as well Further features and advantages of the invention will become apparent from the following detailed description, read in conjunction with the accompanying drawings, in which:

1 ein Blockschaubild eines Systems zum selektiven Blockieren von Sprungvorhersage gemäß einer Ausführungsform der vorliegenden Offenbarung veranschaulicht; 1 FIG. 12 illustrates a block diagram of a jump prediction selective blocking system according to an embodiment of the present disclosure; FIG.

2 eine Anweisungsausführungsanordnung gemäß einer Ausführungsform veranschaulicht; 2 an instruction execution arrangement according to an embodiment;

3 eine Anweisungskompilierungsanordnung gemäß einer Ausführungsform veranschaulicht; 3 illustrates an instruction compilation arrangement according to an embodiment;

4 einen Ablaufplan eines Verfahrens zum selektiven Blockieren von Sprungvorhersage gemäß einer Ausführungsform veranschaulicht; 4 Figure 12 illustrates a flowchart of a method for selectively blocking branch prediction according to an embodiment;

5 einen Ablaufplan eines weiteren Verfahrens zum selektiven Blockieren von Sprungvorhersage gemäß einer anderen Ausführungsform veranschaulicht; 5 Figure 3 illustrates a flowchart of another method for selectively blocking jump prediction according to another embodiment;

6 ein Computersystem gemäß einer Ausführungsform veranschaulicht; und 6 illustrates a computer system according to an embodiment; and

7 ein computerlesbares Medium gemäß einer Ausführungsform der vorliegenden Offenbarung veranschaulicht. 7 illustrates a computer readable medium according to an embodiment of the present disclosure.

AUSFÜHRLICHE BESCHREIBUNGDETAILED DESCRIPTION

In beispielhaften Ausführungsformen verhindert eine Anweisung zum Blockieren von Sprungvorhersage in einem Strom von Anweisungen, dass eine Sprungvorhersagefunktion an einer vorgegeben Anzahl von Sprunganweisungen nach der Blockierungsanweisung durchgeführt wird.In exemplary embodiments, an instruction to block branch prediction in a stream of instructions prevents a branch prediction function from being performed on a predetermined number of branch instructions after the block instruction.

1 veranschaulicht ein funktionales Blockschaubild eines Systems zum selektiven Blockieren von Sprungvorhersage 100 gemäß einer Ausführungsform der vorliegenden Offenbarung. Das System 100 kann eine Anweisungskompilierungsanordnung 110 und eine Anweisungsausführungsanordnung 120 aufweisen. Die Anweisungskompilierungsanordnung 110 kann als eine Eingabe einen Computercode in einer Highlevel-Computerprogrammiersprache empfangen und den Computercode in ausführbare Anweisungen umwandeln. Die Anweisungskompilierungsanordnung 110 kann ein Blockierungsanweisungs-Einfügemodul 112 aufweisen, das eine Anweisung zum Blockieren einer Sprungvorhersage in einen Strom von Anweisungen entweder in den Computercode oder in die ausführbaren Anweisungen einfügt. Das Blockierungsanweisungs-Einfügemodul 112 kann von einem Benutzer oder einem Computerprogramm gesteuert werden. So kann die Anweisungskompilierungsanordnung 110 beispielsweise ein Bedingungserfassungsmodul 111 aufweisen, das so konfiguriert ist, dass es eine vorgegebene Bedingung in einem oder mehreren der Highlevel-Programmiercodes, einem Zwischen-Programmiercode oder den ausführbaren Anweisungen erfasst. Wurde die Bedingung erfasst, kann das Bedingungserfassungsmodul 111 ein Signal oder eine Anweisung an das Blockierungsanweisungs-Einfügemodul 112 senden, um das Blockierungsanweisungs-Einfügemodul anzuweisen, eine Anweisung zum Blockieren von Sprungvorhersage in einen Strom von Anweisungen einzufügen. 1 Figure 12 illustrates a functional block diagram of a system for selectively blocking branch prediction 100 according to an embodiment of the present disclosure. The system 100 may be an instruction compilation arrangement 110 and an instruction execution order 120 exhibit. The statement compilation arrangement 110 may receive as input a computer code in a high level computer programming language and convert the computer code into executable instructions. The statement compilation arrangement 110 may be a blocking instruction insert module 112 which inserts an instruction to block a branch prediction into a stream of instructions either in the computer code or in the executable instructions. The blocking instruction insert module 112 can be controlled by a user or a computer program. So can the statement compilation arrangement 110 for example, a condition acquisition module 111 configured to detect a predetermined condition in one or more of the high level programming codes, an intermediate programming code or the executable instructions. If the condition has been detected, the condition acquisition module 111 a signal or an instruction to the blocking instruction insert module 112 to instruct the blocking instruction insert module to insert an instruction to block branch prediction into a stream of instructions.

Obgleich 1 ein Bedingungserfassungsmodul 111 und ein Blockierungsanweisungs-Einfügemodul 112 veranschaulicht, umfassen Ausführungsformen der vorliegenden Offenbarung jede beliebigen Mittel zum Bereitstellen einer Anweisung zum Blockieren von Sprungvorhersage in einem Strom von Anweisungen. So kann beispielsweise ein Benutzer eine Blockierungsanweisung in einen Programmiercode oder in ausführbare Anweisungen einfügen, und die Anweisungsausführungsanordnung 120 kann die Blockierungsanweisung in einem Strom von Anweisungen ausführen. Mit anderen Worten bedeutet dies, dass das Einfügen der Blockierungsanweisung auf der Grundlage einer Analyse durch eine Anweisungskompilierungsanordnung erfolgen kann oder einer Analyse von einem Benutzer erfolgen kann, der die Anweisungskompilierungsanordnung 110 zum Einfügen der Blockierungsanweisung in einen Strom von Anweisungen in einer Stufe verwenden kann, in der der Programmiercode, der Zwischencode oder vom Prozessor ausführbare Anweisungen geschrieben werden.Although 1 a condition acquisition module 111 and a blocking instruction insert module 112 1, embodiments of the present disclosure include any means for providing an instruction to block branch prediction in a stream of instructions. For example, a user may insert a blocking instruction into a programming code or executable instructions, and the instruction execution arrangement 120 can execute the blocking instruction in a stream of instructions. In other words, this means that the insertion of the blocking instruction can be performed on the basis of an analysis by an instruction compilation arrangement or an analysis can be made by a user having the instruction compilation arrangement 110 for inserting the blocking instruction into a stream of instructions in a stage in which the programming code, intermediate code or processor executable instructions are written.

Eine Bedingung, die von dem Bedingungserfassungsmodul 111 erfasst werden kann, kann Erfassen eines bestimmten Typs von Sprunganweisung, Erfassen eines bestimmten Typs von Code, in dem die Sprunganweisung vorhanden ist, Erfassen bestimmter Adressen, Operanden oder Register, auf die von der Sprunganweisung zugegriffen wird, Erfassen, dass die Sprunganweisung eine spezielle vorab festgelegte Sprunganweisung ist oder jede beliebige andere Bedingung aufweisen. So kann beispielsweise eine bestimmte Sprunganweisung dazu führen, dass ein Sprung in 60% der Zeit nicht ausgeführt wird, während das Durchführen der Sprungvorhersage zu einer Rate korrekter Vorhersage von 10% führten kann. Die bestimmte Sprunganweisung kann als schwer vorhersagbar oder unvorhersagbar identifiziert werden, und ein Benutzer oder ein Bedingungserfassungsmodul 111 kann eine Blockierungsanweisung in einen Strom von Anweisungen einfügen, der der unvorhersagbaren Anweisung vorgeordnet ist. Als Ergebnis wird, wenn der Strom von Anweisungen ausgeführt wird, an der unvorhersagbaren Anweisung möglicherweise keine Sprungvorhersage ausgeführt.A condition that comes from the condition acquisition module 111 may be detected, detecting a particular type of jump instruction, detecting a certain type of code in which the jump instruction is present, detecting particular addresses, operands or registers accessed from the jump instruction, detecting that the jump instruction is a special advance specified jump instruction or have any other condition. For example, a particular jump instruction may result in a jump not being performed in 60% of the time, while performing the jump prediction may result in a rate of correct prediction of 10%. The particular jump instruction may be identified as difficult to predict or unpredictable, and a user or condition detection module 111 can insert a blocking instruction into a stream of instructions that precedes the unpredictable instruction. As a result, when the stream of instructions is executed, at the unpredictable statement may not execute a jump prediction.

Die Anweisungsausführungsanordnung 120 führt einen Strom von Anweisungen durch, indem sie die Anweisungen abruft, decodiert, ausgibt und. ausführt. Die Anweisungsausführungsanordnung 120 kann des Weiteren ein Bedingungserfassungsmodul 121 zum Erfassen einer Bedingung in dem Strom von Anweisungen, und ein Blockierungsanweisungs-Einfügemodul 122 zum Einfügen einer Blockierungsanweisung in den Strom von Anweisungen auf der Grundlage des Erfassens der Bedingung durch das Bedingungserfassungsmodul 121 aufweisen. Die Bedingungserfassungsmodule 111 und 121 sowie die Blockierungsanweisungs-Einfügemodule 112 und 122 sind mit gestrichelten Linien dargestellt, um anzuzeigen, dass Ausführungsformen der vorliegenden Erfindung ein System zum selektiven Blockieren von Sprungvorhersage einschließen, das alle der Bedingungserfassungsmodule 111 und 121 und der Blockierungsanweisungs-Einfügemodule 112 und 122 aufweist, das nur das Bedingungserfassungsmodul 111 und das Blockierungsanweisungs-Einfügemodul 112 aufweist, das nur das Bedingungserfassungsmodul 121 und des Blockierungsanweisungs-Einfügemodul 122 aufweist, das nur eins oder beide der Blockierungsanweisungs-Einfügemodule 112 oder 122 aufweist, oder das keines der Bedingungserfassungsmodule 111 und 121 und der Blockierungsanweisungs-Einfügemodule 112 und 122 aufweist. In solch einem Beispiel kann ein Benutzer einen Code in einer Programmiersprache entwerfen, der normalerweise durch die Anweisungskompilierungsanordnung 110 ausgeführt und der Anweisungsausführungsanordnung 120 zur Ausführung bereitgestellt wird, ohne dass Bedingungen von der Anweisungskompilierungsanordnung 110 oder der Anweisungsausführungsfanordnung 120 erfasst werden.The instruction execution arrangement 120 performs a stream of instructions by retrieving, decoding, issuing, and executing the instructions. performs. The instruction execution arrangement 120 may further include a condition acquisition module 121 for detecting a condition in the stream of instructions, and a blocking instruction insertion module 122 for inserting a blocking instruction into the stream of instructions based on detecting the condition by the condition detection module 121 exhibit. The condition acquisition modules 111 and 121 and the blocking instruction insert modules 112 and 122 are shown with dashed lines to indicate that embodiments of the present invention include a system for selectively blocking jump prediction, all of the condition detection modules 111 and 121 and the blocking instruction insert modules 112 and 122 that only the condition detection module 111 and the blocking instruction insert module 112 that only the condition detection module 121 and the blocking instruction insert module 122 comprising only one or both of the blocking instruction insert modules 112 or 122 or none of the condition detection modules 111 and 121 and the blocking instruction insert modules 112 and 122 having. In such an example, a user may design a code in a programming language that is normally executed by the instruction compilation arrangement 110 executed and the instruction execution order 120 is provided for execution without conditions from the instruction compilation arrangement 110 or the instruction execution order 120 be recorded.

Eine Bedingung, die durch das Bedingungserfassungsmodul 121 erfasst werden kann, kann Erfassen eines bestimmten Typs von Sprungvorhersage, Erfassen eines bestimmten Typs von Code, in dem die Sprunganweisung vorhanden ist, Erfassen bestimmter Adressen, Operanden oder Register, auf die von der Sprunganweisung zugegriffen wird, Erfassen, dass es sich bei der Sprunganweisung um eine spezielle vorab festgelegte Sprunganweisung handelt, oder jede andere beliebige Bedingung aufweisen.A condition imposed by the condition acquisition module 121 may be detected, detecting that a particular type of branch prediction, detecting a particular type of code in which the branch instruction is present, detecting particular addresses, operands or registers accessed from the branch instruction, detecting that it is in the branch instruction is a special predefined jump instruction or any other condition.

Die Anweisungsausführungsanordnung weist ein Blockierungsanweisungs-Erfassungsmodul 123 zum Erfassen der Blockierungsanweisung in dem Strom von Anweisungen auf. Wird die Blockierungsanweisung erfasst, steuert das Blockierungsanweisungs-Erfassungsmodul 123 das Sprungvorhersage-Blockierungsmodul 124, um Sprungvorhersage an einer vorgegebenen Anzahl von Sprunganweisungen nach der Blockierungsanweisung zu überspringen oder zu blockieren. Das Blockierungsanweisungs-Erfassungsmodul 123 kann das Sprungvorhersage-Blockierungsmodul 124 so steuern, dass es jede Sprunganweisung, jede bedingte Sprunganweisung, bestimmte Klassen oder Typen von Sprunganweisungen oder spezielle Sprunganweisungen mit bestimmten Zieladressen blockiert.The instruction execution arrangement has a blocking instruction acquisition module 123 for detecting the blocking instruction in the stream of instructions. When the blocking instruction is detected, the blocking instruction detection module controls 123 the jump prediction blocking module 124 to skip or block branch prediction on a predetermined number of jump instructions after the blocking instruction. The blocking instruction detection module 123 can the jump prediction blocking module 124 so that it blocks any jump instruction, any conditional jump instruction, certain classes or types of jump instructions or special jump instructions with particular destination addresses.

Sobald die vorgegebene Anzahl von Sprunganweisungen übersprungen oder blockiert worden ist, kann das Sprungvorhersage-Blockierungsmodul 124 das Durchführen von Sprungvorhersageoperationen, die von der Blockierungsanweisung spezifiziert sind, automatisch an den Sprunganweisungen wiederaufnehmen. In einer Ausführungsform ist die vorgegebene Anzahl von Sprunganweisungen programmierbar und änderbar. So kann die Blockierungsanweisung beispielsweise eine Ganzzahl aufweisen, die die Anzahl von Sprunganweisungen darstellt, für die Sprungvorhersageoperationen übersprungen oder blockiert werden. In einer anderen Ausführungsform weist die Blockierungsanweisung möglicherweise keine ausdrücklichen Informationen im Hinblick auf eine Anzahl von zu überspringenden oder zu blockierenden Sprunganweisungen auf, und das Blockierungsanweisungs-Erfassungsmodul 123 kann eine Standardanzahl von zu überspringenden Sprunganweisungen bereitstellen, wobei es sich bei der Standardanzahl um eine endliche Zahl handelt.Once the predetermined number of jump instructions have been skipped or blocked, the skip prediction blocking module may 124 performing branch prediction operations specified by the blocking instruction automatically at the branch instructions. In one embodiment, the predetermined number of jump instructions is programmable and changeable. For example, the blocking instruction may include an integer representing the number of branch instructions for which skip prediction operations are skipped or blocked. In another embodiment, the blocking instruction may not have any explicit information regarding a number of jump instructions to be skipped or blocked, and the blocking instruction detection module 123 may provide a default number of skip statements to skip, the default number being a finite number.

Das Bedingungserfassungsmodul 111 kann beispielsweise während des Kompilierens eine bestimmte Sprunganweisung erfassen, wobei die bestimmte Sprunganweisung als eine Sprunganweisung definiert ist, für die Sprungvorhersage nicht durchgeführt werden soll. Das Bedingungserfassungsmodul 111 kann dem Blockierungsanweisungs-Einfügemodul 112 anzeigen, dass die bestimmte Sprunganweisung erfasst worden ist, und das Blockierungsanweisungs-Einfügemodul 112 kann eine Anweisung zum Blockieren der Sprungvorhersage in die ausführbaren Anweisungen einfügen, die der bestimmten Sprunganweisung vorgeordnet sind. Die Anweisung zum Blockieren der Sprungvorhersage kann eine Ganzzahl des Wertes „1” aufweisen, um der Anweisungsausführungsanordnung anzuzeigen, dass die Sprungvorhersageoperationen nur für eine folgende Sprunganweisung übersprungen werden sollten.The condition acquisition module 111 For example, during compilation, it may capture a particular jump instruction, where the particular jump instruction is defined as a jump instruction for which jump prediction should not be performed. The condition acquisition module 111 may be the blocking instruction insert module 112 indicating that the particular jump instruction has been detected and the blocking instruction insert module 112 may insert an instruction to lock the branch prediction into the executable instructions preceding the particular branch instruction. The jump prediction blocking instruction may have an integer value of "1" to indicate to the instruction execution arrangement that the jump prediction operations should only be skipped for a subsequent jump instruction.

In einem weiteren Beispiel kann das Bedingungserfassungsmodul 111 einen bestimmten Typ von Code erfassen, der gerade kompiliert wird, wie beispielsweise einen Code, der als „kritisch” spezifiziert ist, für den keine Sprungvorhersagen durchgeführt werden sollten. Das Bedingungserfassungsmodul 111 kann dem Blockierungsanweisungs-Einfügemodul 112 anzeigen, dass der bestimmte Typ von Code erfasst worden ist, und das Blockierungsanweisungs-Einfügemodul 112 kann eine Anweisung zum Blockieren der Sprungvorhersage in die ausführbaren Anweisungen einfügen, die dem bestimmten Typ von Code vorgeordnet sind. Das Blockierungsanweisungs-Einfügemodul 112 kann eine Anzahl von Sprunganweisungen ermitteln, die in dem kritischen Code vorhanden sind, und eine Anweisung zum Blockieren der Sprungvorhersage erzeugen, um der Anweisungsausführungsanordnung anzuzeigen, dass nur für die Anzahl der Sprunganweisungen, die der Anzahl von Sprunganweisungen in dem kritischen Code entspricht, Sprungvorhersageoperationen übersprungen werden sollten. Das Blockierungsanweisungs-Einfügemodul 112 kann die Blockierungsanweisung in eine vorgegebene Anzahl von Anweisungen einfügen, die dem kritischen Code vorgeordnet sind, so dass, wenn die Blockierungsanweisung von der Anweisungsausführungsanordnung 120 ausgeführt wird, der kritische Code möglicherweise noch nicht in einer Anweisungsausführungs-Pipeline vorhanden ist, wodurch Verlust von Verarbeitungszeit dadurch vermieden wird, dass Sprungvorhersage verhindert wird, wenn ein Sprung des kritischen Codes abgerufen wird.In another example, the condition acquisition module 111 detect a particular type of code being compiled, such as a code specified as "critical" for which no jump predictions should be made. The condition acquisition module 111 may be the blocking instruction insert module 112 show that the specific type has been detected by code, and the blocking instruction insert module 112 may insert an instruction to block the branch prediction into the executable instructions preceding the particular type of code. The blocking instruction insert module 112 may determine a number of branch instructions present in the critical code and generate a branch prediction blocking instruction to indicate to the instruction execution arrangement that branch prediction operations are skipped only for the number of branch instructions corresponding to the number of branch instructions in the critical code should be. The blocking instruction insert module 112 may insert the blocking instruction into a predetermined number of instructions preceding the critical code such that, if the blocking instruction is from the instruction execution arrangement 120 is executed, the critical code may not yet be present in an instruction execution pipeline, thereby avoiding loss of processing time by preventing branch prediction when a critical code branch is fetched.

Obgleich vorstehend zu Veranschaulichungszwecken ein Beispiel zu einem „kritischen” Code beschrieben wurde, ist bekannt, dass Ausführungsformen der vorliegenden Offenbarung das Einfügen von Anweisungen zum Blockieren der Sprungvorhersage auf der Grundlage des Erfassens von jeden beliebigen vorgegebenen oder vorab festgelegten Typen von Anweisungen oder Blöcken von Anweisungen einschließen.Although an example of a "critical" code has been described above for purposes of illustration, embodiments of the present disclosure are known to include instructions for blocking branch prediction based on detecting any predetermined or predetermined types of instructions or blocks of instructions lock in.

In einem weiteren Beispiel kann die Anweisungsausführungsanordnung 120 auf der Grundlage einer Historie ausgeführter Sprungoperationen ermitteln, dass ein bestimmter Typ von Sprunganweisung unvorhersagbar ist oder eine erfolgreiche Sprungvorhersage ergeben wird, die unter einem vorgegeben Schwellenwert liegt. Die Anweisungsausführungsanordnung 120 kann das Bedingungserfassungsmodul 112 anweisen, den bestimmten Typ von Sprunganweisung zu erfassen. Die bestimmte Sprunganweisung kann beispielsweise durch Identifizieren einer Adresse der Sprunganweisung und einer Adresse einer nächsten Anweisung, auf die die Sprunganweisung abzielt, identifiziert werden. Wenn das Bedingungserfassungsmodul 121 den bestimmten Typ von Sprunganweisung erfasst, steuert das Bedingungserfassungsmodul 121 das Blockierungsanweisungs-Einfügemodul 122 so, dass es eine Anweisung in einen Strom von gerade ausgeführten Anweisungen einfügt, um die Sprungvorhersage für die bestimmte Anweisung zu überspringen oder zu blockieren. Das Blockierungsanweisungs-Einfügemodul 122 kann eine Ganzzahl, wie beispielsweise eine „1” in der Anweisung bereitstellen, um dem Sprungvorhersage-Blockierungsmodul 124 anzuzeigen, dass nur bei einer folgenden Sprunganweisung eine Sprungvorhersagefunktion übersprungen oder blockiert werden sollte.In another example, the instruction execution arrangement 120 determine, based on a history of jump operations, that a particular type of jump instruction is unpredictable or will result in a successful branch prediction that is below a predetermined threshold. The instruction execution arrangement 120 can the condition acquisition module 112 instruct to capture the particular type of jump instruction. The particular jump instruction may be identified, for example, by identifying an address of the jump instruction and an address of a next instruction targeted by the jump instruction. If the condition acquisition module 121 detects the particular type of jump instruction, controls the condition detection module 121 the blocking instruction insert module 122 such that it inserts an instruction into a stream of instructions being executed to skip or block the branch prediction for the particular instruction. The blocking instruction insert module 122 may provide an integer, such as a "1" in the instruction, to the branch prediction blocking module 124 indicate that a jump prediction function should only be skipped or blocked on a subsequent jump instruction.

In einer Ausführungsform befindet sich die bestimmte Sprunganweisung in einem Codestrom (stream of code), und das Blockierungsanweisungs-Einfügemodul 122 fügt die Blockierungsanweisung in den Codestrom ein, der der bestimmten Sprunganweisung vorgeordnet ist. Die Blockierungsanweisung kann der bestimmten Sprunganweisung ausreichend weit vorgeordnet sein, so dass, wenn der Strom von Anweisungen einer Anweisungsausführungs-Pipeline bereitgestellt wird, die bestimmte Sprunganweisung noch nicht decodiert wird, wenn die Blockierungsanweisung ausgeführt wird.In one embodiment, the particular jump instruction is in a stream of code, and the blocking instruction insert module 122 inserts the blocking instruction into the code stream upstream of the particular jump instruction. The blocking instruction may be sufficiently upstream of the particular branch instruction such that when the stream of instructions is provided to an instruction execution pipeline, the particular branch instruction is not yet decoded when the blocking instruction is executed.

Das Blockierungsanweisungs-Erfassungsmodul 123 erfasst die Blockierungsanweisung, die die Ganzzahl aufweist, welche eine Anzahl von Sprunganweisungen anzeigt, für die die Sprungvorhersage übersprungen oder blockiert werden soll. Das Sprungvorhersage-Blockierungsmodul 124 blockiert die Ausführung der Sprungvorhersage für die vorgegebene Anzahl von Sprunganweisungen und löscht die Blockierungsanweisung zum Durchführen von Sprungvorhersage an dem bestimmten Typ von Sprunganweisung in dem Strom von Anweisungen, nachdem für die vorgegebene Anzahl von Sprunganweisungen, die von der Blockierungsanweisung angezeigt wurde, die Ausführung der Sprungvorhersage übersprungen oder blockiert wurde.The blocking instruction detection module 123 detects the blocking instruction having the integer indicating a number of jump instructions for which the jump prediction is to be skipped or blocked. The jump prediction blocking module 124 blocks the execution of the branch prediction for the predetermined number of branch instructions and clears the block instruction for performing branch prediction on the particular type of branch instruction in the stream of instructions after execution of the branch prediction for the predetermined number of branch instructions indicated by the block instruction was skipped or blocked.

2 veranschaulicht ein Blockschaubild einer Anweisungsausführungsanordnung 200 gemäß einer Ausführungsform der vorliegenden Offenbarung. Die Anweisungsausführungsanordnung 200 kann der Anweisungsausführungsanordnung 120 von 1 entsprechen. So können in einigen Ausführungsformen beispielsweise eine oder mehrere der Anweisungsabrufeinheiten 202, der Sprungvorhersageeinheit 206 und der Ausführungseinheiten 205 dem Blockierungsanweisungs-Erfassungsmodul 123 und dem Sprungvorhersage-Blockierungsmodul 124 entsprechen. Des Weiteren können die Abrufeinheit 202 und die Sprungvorhersageeinheit 206 dem Bedingungserfassungsmodul 121 und dem Blockierungsanweisungs-Einfügemodul 122 von 1 entsprechen. Obgleich in 2 eine Ausführungsform einer Anweisungsausführungsanordnung 200 dargestellt ist, ist bekannt, dass Ausführungsformen der vorliegenden Offenbarung jede beliebige Anweisungsausführungsanordnung einschließen, die eine Blockierungsanweisung erfasst und die eine vorgegebene Anzahl von Sprungvorhersageoperationen auf der Grundlage der erfassten Blockierungsanweisung blockiert oder überspringt. 2 Figure 12 illustrates a block diagram of an instruction execution arrangement 200 according to an embodiment of the present disclosure. The instruction execution arrangement 200 may the instruction execution order 120 from 1 correspond. For example, in some embodiments, one or more of the instruction fetch units 202 , the leap prediction unit 206 and the execution units 205 the blocking instruction detection module 123 and the jump prediction blocking module 124 correspond. Furthermore, the polling unit 202 and the jump prediction unit 206 the condition acquisition module 121 and the blocking instruction insert module 122 from 1 correspond. Although in 2 an embodiment of an instruction execution arrangement 200 12, it is known that embodiments of the present disclosure include any instruction execution arrangement that detects a blocking instruction and that blocks or skips a predetermined number of branch prediction operations based on the detected blocking instruction.

Die Anweisungsausführungsanordnung 200 kann einen Verarbeitungskern aus einer Vielzahl von Verarbeitungskernen in einem Multi-Threading-Prozessor aufweisen. Die Anweisungsausführungsanordnung 200 weist einen Level-1-Anweisungs-Cachespeicher (L1 Icache) 201, der Programmanweisungen speichert, sowie eine Anweisungsabrufeinheit 202 auf, die die Anweisungen aus dem L1 Icache 201 abruft. Insbesondere stellt der L1 Icache 201 Laden von Anweisungsströmen zusammen mit der Anweisungsabrufeinheit 202 bereit. The instruction execution arrangement 200 may comprise a processing core of a plurality of processing cores in a multi-threading processor. The instruction execution arrangement 200 has a level 1 instruction cache (L1 Icache) 201 which stores program instructions, and an instruction fetch unit 202 on which the instructions from the L1 Icache 201 retrieves. In particular, the L1 represents cache 201 Loading instruction streams together with the instruction fetch unit 202 ready.

Die abgerufenen Anweisungen werden von einer Anweisungs-Decodiereinheit (IDU) 203 zu Anweisungsverarbeitungsdaten decodiert. Die IDU 203 stellt die Anweisungen einer Ausgabeeinheit 204 bereit, die das Ausgeben der Anweisungen an verschiedene Ausführungseinheiten 205 wie beispielsweise an eine oder mehrere Festkomma-Einheiten zum Ausführen grundlegender Operationen und an eine oder mehrere Gleitkomma-Einheiten zum Ausführen von Gleitkomma-Operationen steuert.The retrieved instructions are issued by an instruction decoding unit (IDU). 203 decoded into instruction processing data. The IDU 203 Represents the instructions of an output device 204 ready to issue the statements to different execution units 205 such as controlling one or more fixed-point units to perform basic operations and one or more floating-point units to perform floating-point operations.

Die Anweisungsausführungsanordnung 200 weist eine Sprungvorhersage-Einheit 206 in Kommunikation mit der Anweisungsabrufeinheit 202 zum Vorhersagen von Zieladressen der Sprunganweisungen auf. Die Sprungvorhersage-Einheit 206 kann beispielsweise einen Sprungzielpuffer (branch target buffer BTB) 207 zum Speichern von Zieladressen aufweisen, die zu den vorhergesagten Sprüngen gehören. Die Sprungvorhersage-Einheit 206 kann des Weiteren eine Sprunghistorie-Einheit 208 zum Speichern von Mustern und nicht genommenen Sprungergebnissen (not-taken branch results) für bisher abgeschlossene Sprunganweisungen aufweisen. Die Sprunghistorie-Einheit 208 kann als Teil des BTB 207 implementiert sein. In einer Ausführungsform weist die Sprungvorhersageeinheit 206 eine Sprungvorhersage-Steuereinheit 209 auf, die unter Verwendung einer Vorhersage-Blockiereinheit 210 die Sprungvorhersagefunktion ein- und ausschalten kann, die die Sprunghistorie analysiert, um unvorhersagbare Sprünge zu ermitteln, und die jede weiteren beliebigen Steuer- oder Analysefunktionen im Zusammenhang mit Sprungvorhersagefunktionen durchführen kann.The instruction execution arrangement 200 has a jump prediction unit 206 in communication with the instruction fetch unit 202 for predicting destination addresses of the jump instructions. The jump prediction unit 206 For example, a branch target buffer BTB may be used. 207 for storing destination addresses belonging to the predicted jumps. The jump prediction unit 206 may further include a jump history unit 208 for storing patterns and not-taken branch results for previously completed jump statements. The jump history unit 208 can as part of the BTB 207 be implemented. In one embodiment, the branch prediction unit 206 a branch prediction control unit 209 on, using a prediction blocking unit 210 can switch on and off the jump prediction function, which analyzes the jump history to determine unpredictable jumps, and which can perform any other arbitrary control or analysis functions associated with branch prediction functions.

Obgleich die Sprungvorhersageeinheit 206 in einem von der Anweisungsabrufeinheit 202 getrennten funktionalen Block veranschaulicht wird, schließen Ausführungsformen der vorliegenden Offenbarung eine Anweisungsabrufeinheit 202 ein, die eine Sprungvorhersageeinheit 206 in der Anweisungsabrufeinheit 202 aufweist. Es können beispielsweise ein oder mehrere Prozessoren, Speicher, Logikschaltungen und Programmcodes gemeinsam von der Anweisungsabrufeinheit 202 und der Sprungvorhersageeinheit 206 genutzt werden.Although the jump prediction unit 206 in one of the instruction fetch unit 202 As illustrated in the separate functional block, embodiments of the present disclosure include an instruction fetch unit 202 a, which is a branch prediction unit 206 in the instruction fetch unit 202 having. For example, one or more processors, memories, logic circuits, and program codes may be shared by the instruction fetch unit 202 and the jump prediction unit 206 be used.

Darüber hinaus schließen Ausführungsformen der vorliegenden Offenbarung, obgleich die Sprungvorhersage-Steuereinheit 209 als von den Ausführungseinheiten 205 getrennt veranschaulicht ist, Ausführungseinheiten 205 mit ein, die Blockierungsanweisungen ausführen, um die Anweisungsabrufeinheit 202 und die Sprungvorhersageeinheit 206 an dem Durchführen von Sprungvorhersageoperationen zu blockieren.In addition, embodiments of the present disclosure, although the leap prediction controller, exclude 209 as of the execution units 205 is illustrated separately, execution units 205 with the blocking instructions execute at the instruction fetch unit 202 and the jump prediction unit 206 at blocking branch prediction operations.

Während des Betriebes fließt ein Strom von Anweisungen durch die Anweisungsausführungsanordnung 200. Die Anweisungsabrufeinheit 202 kann die Anweisungen aus dem L1 Icache 201 in einer vorgegebenen Reihenfolge auf der Grundlage von bisherigen Anweisungen abrufen. Die Anweisungsabrufeinheit 202 kann einen Block von Anweisungen mit einem Mal aus dem L1 Icache 201 abrufen und den Block von Anweisungen zusammen mit beliebigen nicht decodierten Anweisungen von bisherigen Abrufoperationen in dem Anweisungsspeicher 210 speichern.During operation, a stream of instructions flow through the instruction execution arrangement 200 , The instruction fetch unit 202 can Icache the instructions from the L1 201 retrieve in a given order based on previous instructions. The instruction fetch unit 202 Can Icache a block of statements at once from the L1 201 and the block of instructions along with any non-decoded instructions from previous fetch operations in the statement memory 210 to save.

In einer Ausführungsform weist der Strom von Anweisungen eine Anweisung zum Blockieren der Sprungvorhersage auf, die von einem Benutzer oder einem Compiler bereitgestellt worden ist. Die Anweisung zum Blockieren der Sprungvorhersage kann durch die Pipeline fließen und von den Ausführungseinheiten 205 ausgeführt werden. Auf der Grundlage der Ausführung der Blockierungsanweisung können die Ausführungseinheiten 205 der Vorhersage-Blockiereinheit 210 Steuersignale zum Blockieren von Sprungvorhersageoperationen an einer vorgegebenen Anzahl von folgenden Sprunganweisungen bereitstellen. Die Vorhersageoperationen können beispielsweise dadurch blockiert werden, dass die Anweisungsabrufeinheit 202 an dem Zugreifen auf den Sprungzielpuffer 207 gehindert wird. Darüber hinaus können die Ausführungseinheiten 205 von der Blockierungsanweisung daran gehindert werden, dass sie der Sprunghistorie-Einheit 208 Sprunginformationen zu der vorgegebenen Anzahl von Sprunganweisungen bereitstellt, wenn die vorgegebene Anzahl von Sprunganweisungen durch die Ausführungseinheiten 205 ausgeführt wird.In one embodiment, the stream of instructions includes an instruction to block the branch prediction provided by a user or a compiler. The instruction to block the branch prediction can flow through the pipeline and from the execution units 205 be executed. Based on the execution of the blocking instruction, the execution units 205 the prediction blocking unit 210 Provide control signals for blocking branch prediction operations on a predetermined number of subsequent branch instructions. The prediction operations may be blocked, for example, by the instruction fetch unit 202 on accessing the jump destination buffer 207 is prevented. In addition, the execution units 205 be inhibited by the blocking instruction from being the jump history unit 208 Provides jump information on the predetermined number of jump instructions when the predetermined number of jump instructions by the execution units 205 is performed.

In einer weiteren Ausführungsform kann die Anweisungsabrufeinheit 202 eine bestimmte Sprunganweisung, einen Typ von Sprunganweisung oder einen Typ von Anweisung, die die Sprunganweisungen umgibt, identifizieren. Die identifizierte bestimmte Sprunganweisung kann einem Typ von Sprunganweisung entsprechen, von dem bestimmt wurde, dass zu ihm keine Sprungvorhersageoperation durchgeführt wurde. Eine Zeichenfolge von Anweisungen kann beispielsweise die folgenden aufweisen:
Load, add, store, store, multiply, branch, load, load, add, store
(laden, hinzufügen, speichern, speichern, multiplizieren, Sprung, laden, laden, hinzufügen, speichern)
In another embodiment, the instruction fetch unit 202 identify a particular jump instruction, a type of jump instruction, or a type of instruction that surrounds the jump instructions. The identified particular jump instruction may correspond to a type of jump instruction that has been determined to have no jump prediction operation performed on it. For example, a string of statements may include the following:
Load, add, store, store, multiply, branch, load, load, add, store
(load, add, save, save, multiply, jump, load, load, add, save)

Die bestimmte Sprunganweisung oder der Typ von Sprunganweisung können beispielsweise anhand von Ermitteln einer Adresse der Sprunganweisung und von Adressen, auf die die Sprunganweisung abzielt, identifiziert werden. Wenn die bestimmte Sprunganweisung, der Typ von Sprunganweisung oder der Typ von Anweisung, der die Sprunganweisungen umgibt, von der Anweisungsabrufeinheit 202 oder der Sprungvorhersageeinheit 206 identifiziert wurde, kann die Sprungvorhersage-Steuereinheit 209 eine Anweisung erzeugen, die in den Strom von Anweisungen der identifizierten Sprunganweisung vorgeordnet eingefügt werden soll. Bei Ausführung der Blockierungsanweisung können die Ausführungseinheiten 205 der Vorhersage-Blockiereinheit 210 Steuersignale bereitstellen, um Sprungvorhersageoperationen an einer vorgegebenen Anzahl von folgenden Sprunganweisungen zu blockieren. Die Vorhersageoperationen können beispielsweise dadurch blockiert werden, dass die Anweisungsabrufeinheit 202 an dem Zugreifen auf den Sprungzielpuffer 207 gehindert wird. Darüber hinaus können die Ausführungseinheiten 205 von der Blockierungsanweisung daran gehindert werden, dass sie der Sprunghistorie-Einheit 208 Sprunginformationen zu der vorgegebenen Anzahl von Sprunganweisungen bereitstellen, wenn die vorgegebene Anzahl von Sprunganweisungen durch die Ausführungseinheiten 205 ausgeführt wird.The particular jump instruction or type of jump instruction may be identified, for example, by determining an address of the jump instruction and of addresses to which the jump instruction is directed. If the particular jump instruction, the type of jump instruction, or the type of instruction that surrounds the jump instructions, from the instruction fetch unit 202 or the jump prediction unit 206 has been identified, the branch prediction control unit 209 generate an instruction to be inserted in the stream of instructions of the identified jump instruction upstream. When executing the blocking instruction, the execution units 205 the prediction blocking unit 210 Provide control signals to block branch prediction operations on a predetermined number of subsequent branch instructions. The prediction operations may be blocked, for example, by the instruction fetch unit 202 on accessing the jump destination buffer 207 is prevented. In addition, the execution units 205 be inhibited by the blocking instruction from being the jump history unit 208 Provide jump information on the predetermined number of jump instructions when the predetermined number of jump instructions by the execution units 205 is performed.

In einer Ausführungsform kann die Sprungvorhersage-Steuereinheit 209 die Sprungvorhersage-Historie analysieren, um eine bestimmte Sprunganweisung zu ermitteln, die unvorhersagbar ist oder die einen Grad an erfolgreicher Vorhersage aufweist, der unter einem vorgegebenen Schwellenwert liegt. Die Sprungvorhersage-Steuereinheit 209 kann die identifizierten Sprungvorhersageinformationen speichern und sie mit den abgerufenen Sprunganweisungen vergleichen, um zu ermitteln, ob die Blockierungsanweisung erzeugt werden soll.In one embodiment, the branch prediction controller may 209 analyze the jump prediction history to determine a particular jump instruction that is unpredictable or that has a degree of successful prediction that is below a predetermined threshold. The jump forecast control unit 209 may store the identified jump prediction information and compare it with the retrieved jump instructions to determine if the blocking instruction should be generated.

Ein Beispiel des Einfügens der Anweisung zum Blockieren der Sprunganweisung lautet wie folgt:
Load, add, store, blk_bpl_branch_1, store, multiply, branch, load, load, add, store
An example of inserting the instruction to block the jump instruction is as follows:
Load, add, store, blk_bpl_branch_1, store, multiply, branch, load, load, add, store

In der beispielhaften vorstehenden Zeichenfolge von Anweisungen weist die Anweisung blk_bpl_branch_1 die Sprungvorhersageeinheit 206 und/oder die Anweisungsabrufeinheit 202 an, eine Sprungvorhersageoperation zu überspringen. Mit anderen Worten bedeutet dies, dass, wenn der nächste Sprung in der Zeichenfolge der Anweisungen erfasst wird, die Anweisungsabrufeinheit 202 keine Sprungvorhersageinformationen von dem BTB 207 der Sprungvorhersageeinheit 206 bezieht.In the exemplary preceding string of instructions, the instruction blk_bpl_branch_1 has the branch prediction unit 206 and / or the instruction fetch unit 202 to skip a jump prediction operation. In other words, when the next jump in the string of instructions is detected, it means the instruction fetch unit 202 no jump prediction information from the BTB 207 the jump prediction unit 206 refers.

Wird eine Sprunganweisung in der Zeichenfolge der Anweisungen identifiziert, kann die Sprungvorhersage-Steuereinheit 209 ermitteln, ob eine Sprungvorhersageoperation durchgeführt werden soll, und die Anweisungsabrufeinheit 202 kann den Sprungzielpuffer 207 konsultieren, um vorherzusagen, welche Anweisungen nach der Sprunganweisung zum Decodieren abgerufen werden sollte. Insbesondere kann der Sprungzielpuffer 207 der Anweisungsabrufeinheit 202 eine vorhergesagte Zieladresse einer vorhergesagten Sprunganweisung bereitstellen, die der Sprunganweisung entspricht, die von der Anweisungsabrufeinheit 202 identifiziert wurde, womit die Anweisungsabrufeinheit 202 Anweisungen an der vorhergesagten Zieladresse abrufen kann.If a jump statement is identified in the string of instructions, the jump prediction controller may 209 determine whether a branch prediction operation should be performed and the instruction fetch unit 202 can the jump destination buffer 207 to predict which instructions should be fetched after the jump instruction for decoding. In particular, the jump destination buffer 207 the instruction fetch unit 202 provide a predicted destination address of a predicted branch instruction corresponding to the branch instruction issued by the instruction fetch unit 202 with which the instruction fetch unit 202 Can retrieve instructions at the predicted destination.

Die abgerufenen Anweisungen werden von der Anweisungs-Decodiereinheit 203 decodiert und von der Ausgabeeinheit 204 auf der Grundlage eines Typs von Operation, die von der Anweisung ausgeführt wird, an die geeigneten Ausführungseinheiten 205 ausgegeben. Die Ausführungseinheiten 205 ermitteln, ob Bedingungen von bedingten Sprunganweisungen erfüllt sind und ob ein Sprung einer bedingten Sprunganweisung oder ein unbedingter Sprung ausgeführt wird. Die Ausführungseinheiten 205 können der Sprunghistorie-Einheit 208 Informationen in Bezug darauf bereitstellen, ob Sprünge ausgeführt worden sind, was später zum Vorhersagen von zukünftigen Sprüngen verwendet werden kann.The instructions fetched are from the instruction decode unit 203 decoded and from the output unit 204 based on a type of operation performed by the instruction to the appropriate execution units 205 output. The execution units 205 determine whether conditions of conditional jump instructions are met and whether a jump of a conditional jump instruction or an unconditional jump is performed. The execution units 205 can the jump history unit 208 Provide information regarding whether jumps have been performed, which can later be used to predict future jumps.

In Ausführungsformen der vorliegenden Offenbarung kann die Anweisung zum Blockieren von Sprungvorhersage, die von der Sprungvorhersage-Steuereinheit 209 bereitgestellt werden kann, einen Ganzzahlwert aufweisen, der für eine Anzahl von Sprunganweisungen steht, für die die Sprungvorhersagefunktion übersprungen oder blockiert werden soll. Bei dem Ganzzahlwert kann es sich um jede beliebige Zahl von 1 bis zu jeder gewünschten Zahl handeln. Nach Blockieren der Sprungvorhersage für eine Anzahl von Sprunganweisungen, die dem Ganzzahlwert entsprechen, können die Sprungvorhersageeinheit 206 und die Anweisungsabrufeinheit 202 die Sprungvorhersageoperationen für Sprunganweisungen in dem Strom von Anweisungen wiederaufnehmen. Die von der Sprungvorhersage-Steuereinheit 209 bereitgestellte Anweisung kann des Weiteren Informationen wie beispielsweise einen Typ von Sprung aufweisen, für den die Sprungvorhersagefunktion übersprungen oder blockiert werden soll. Mit anderen Worten bedeutet dies, dass die Anweisung die Sprungvorhersage an einer vorgegebenen Anzahl eines Typs von Sprunganweisung verhindern kann, während Sprungvorhersageoperationen für alle anderen Typen von Sprunganweisungen zugelassen werden.In embodiments of the present disclosure, the jump prediction blocking instruction provided by the branch prediction controller may be used 209 may have an integer value representing a number of jump instructions for which the branch prediction function is to be skipped or blocked. The integer value can be any number from 1 to any number you want. After blocking the branch prediction for a number of branch instructions corresponding to the integer value, the branch prediction unit may 206 and the instruction fetch unit 202 resume the jump prediction operations for jump instructions in the stream of instructions. The from the jump forecast control unit 209 The instruction provided may further include information such as a type of jump for which the branch prediction function should be skipped or blocked. In other words, this means that the instruction can inhibit branch prediction on a predetermined number of one type of branch instruction while allowing branch prediction operations for all other types of branch instructions.

3 veranschaulicht ein Blockschaubild einer Anweisungskompilierungsanordnung 300 gemäß einer Ausführungsform der vorliegenden Offenbarung. Die Anweisungskompilierungsanordnung 300 kann beispielsweise der Anweisungskompilierungsanordnung 110 von 1 entsprechen. 3 Figure 12 illustrates a block diagram of an instruction compilation arrangement 300 according to an embodiment of the present disclosure. The statement compilation arrangement 300 may, for example, the statement compilation arrangement 110 from 1 correspond.

Die Anweisungskompilierungsanordnung 300 weist einen Speicher 310 und einen Compiler 320 auf. Der Speicher 310 kann einen Programmiercode 311 wie beispielsweise einen Highlevel-Programmiercode, der von einem Benutzer oder einem Computerprogramm erzeugt wird, speichern. Der Programmiercode 311 wird einem Code-Analyseelement 321 des Compilers 323 bereitgestellt, das den Programmiercode analysieren kann, und auf der Grundlage der Analyse kann der Generator ausführbarer Anweisungen 322 den Programmiercode in ausführbare Anweisungen 312 umwandeln, die in dem Speicher 310 gespeichert werden können. Die ausführbaren Anweisungen können von einem Prozessor wie beispielsweise von der Anweisungsausführungsanordnung 200 von 2 gelesen werden, um die Anweisungen zum Steuern eines Computers zum Durchführen der von den ausführbaren Anweisungen 312 angezeigten Funktionen durchzuführen.The statement compilation arrangement 300 has a memory 310 and a compiler 320 on. The memory 310 can be a programming code 311 such as high level programming code generated by a user or computer program. The programming code 311 becomes a code analysis element 321 the compiler 323 which can analyze the programming code, and based on the analysis, the generator of executable instructions 322 the programming code into executable statements 312 transform that into the store 310 can be stored. The executable instructions may be from a processor, such as the instruction execution assembly 200 from 2 to read the instructions for controlling a computer to perform the executable instructions 312 to perform displayed functions.

In einer Ausführungsform weist der Programmiercode Anweisungen zum Blockieren der Sprungvorhersage auf. Eine Blockierungsanweisung kann eine vorgegebene Anzahl von Sprunganweisungen aufweisen, für die Sprungvorhersage nach der Blockierungsanweisung übersprungen oder blockiert werden sollen. Die Blockierungsanweisung kann des Weiteren Informationen über eine Sprunganweisung wie beispielsweise einen Typ von Sprunganweisung oder eine Anweisung für eine spezielle Sprunganweisung, für die die Sprungvorhersagefunktion übersprungen oder blockiert werden soll, aufweisen. Das Code-Analyseelement 321 kann den Programmiercode 311 analysieren und dem Generator ausführbarer Anweisungen 322 anzeigen, dass die Blockierungsanweisung des Programmiercodes einer Blockierungsanweisung entspricht, die von dem Generator ausführbarer Anweisungen 322 erzeugt werden soll. Der Generator ausführbarer Anweisungen 322 erzeugt die ausführbaren Anweisungen 312 einschließlich der Blockierungsanweisung. Die ausführbaren Anweisungen 312 können erzeugt und als ein Strom von in Sequenz ausführbaren Anweisungen gespeichert werden.In one embodiment, the programming code includes instructions for blocking the branch prediction. A blocking instruction may comprise a predetermined number of branch instructions for which branch prediction after the blocking instruction is to be skipped or blocked. The blocking instruction may further include information about a jump instruction such as a type of jump instruction or an instruction for a special jump instruction for which the jump prediction function is to be skipped or blocked. The code analysis element 321 can the programming code 311 analyze and the generator of executable instructions 322 indicating that the blocking instruction of the programming code corresponds to a blocking instruction issued by the generator of executable instructions 322 should be generated. The generator of executable instructions 322 generates the executable statements 312 including the blocking instruction. The executable instructions 312 can be generated and stored as a stream of instructions executable in sequence.

In einer weiteren Ausführungsform ist das Code-Analyseelement 321 so konfiguriert oder programmiert, dass es den Programmiercode 311 analysiert und dem Generator ausführbarer Anweisungen 322 und einer Blockierungsanweisungs-Einfügeeinheit 323 eine Analyse des Programmiercodes bereitstellt. Wenn das Code-Analyseelement 321 den Code entsprechend einer oder mehrerer vorgegebenen Bedingungen analysiert, kann die Blockierungsanweisungs-Enfügeeinheit 323 das Code-Analyseelement 321 so steuern, dass es eine Anweisung in den Programmiercode 311 einfügt, die einer Anweisung zum Blockieren von Sprungvorhersage entspricht. Alternativ dazu kann die Blockierungsanweisungs-Einfügeeinheit 323 den Generator ausführbarer Anweisungen 322 so steuern, dass er eine ausführbare Anweisung zum Blockieren von Sprungvorhersage in die Zeichenfolge ausführbarer Anweisungen 312 einfügt. So kann das Code-Analyseelement 321 beispielsweise den Programmiercode 321 analysieren und eine bestimmte Sprunganweisung in dem Programmiercode identifizieren. Die Blockierungsanweisungs-Einfügeeinheit 323 kann die bestimmte Sprunganweisung als einen Typ von Sprunganweisung erkennen, für den Sprungvorhersage übersprungen oder blockiert werden soll und das Code-Analyseelement 321 oder den Generator ausführbarer Anweisungen 322 anweisen, eine Anweisung zum Blockieren der Sprungvorhersage der bestimmten Sprunganweisung vorgeordnet bereitzustellen, um Sprungvorhersage für die bestimmte Sprunganweisung während der Verarbeitung der ausführbaren Anweisungen 312 zu verhindern. Die Blockierungsanweisung kann eine vorgegebene Anzahl von Anweisungen vorgeordnet eingefügt werden, so dass während der Verarbeitung Unterbrechungen einer Anweisungsausführungs-Pipeline minimiert werden können. So kann die Blockierungsanweisung beispielsweise mit genügend Abstand vorgeordnet eingefügt werden, so dass, wenn die Blockierungsanweisung ausgeführt wird, die bestimmte Sprunganweisung möglicherweise noch nicht decodiert worden ist.In a further embodiment, the code analysis element is 321 configured or programmed to use the programming code 311 analyzed and the generator of executable instructions 322 and a blocking instruction inserting unit 323 provides an analysis of the programming code. If the code analysis element 321 parses the code according to one or more predetermined conditions, the blocking-instruction-inserting unit may 323 the code analysis element 321 So control that there is a statement in the programming code 311 which corresponds to a jump prediction blocking instruction. Alternatively, the blocking instruction inserting unit may 323 the generator of executable instructions 322 so that it controls an executable statement to block branch prediction into the string of executable statements 312 fits. So can the code analysis element 321 for example, the programming code 321 analyze and identify a particular jump instruction in the programming code. The blocking instruction inserting unit 323 may recognize the particular jump instruction as a type of jump instruction for which jump prediction is to be skipped or blocked and the code parsing element 321 or the generator of executable instructions 322 instructing to provide an instruction to block the branch prediction of the particular branch instruction upstream to branch prediction for the particular branch instruction during processing of the executable instructions 312 to prevent. The blocking instruction may be pre-populated a predetermined number of instructions so that interruptions to an instruction execution pipeline may be minimized during processing. For example, the blocking instruction may be inserted pre-empted with sufficient spacing, so that when the blocking instruction is executed, the particular jump instruction may not yet have been decoded.

Obgleich die 1 bis 3 Erfassen von Bedingungen auf der Grundlage eines Anweisungsstroms von einer Anweisungsausführungsanordnung 200 und einer Anweisungskompilierungsanordnung 300 veranschaulichen, schließen Ausführungsformen der vorliegenden Offenbarung jedes beliebige Mittel zum Erfassen von Bedingungen auf der Grundlage des Anweisungsstroms ein. So kann beispielsweise in einer Ausführungsform ein zu der Anweisungsausführungsanordnung 200 externes Computerprogramm die Ausführung von Sprunganweisungen überwachen und Sprunganweisungen identifizieren, für die Sprungvorhersage blockiert werden soll. Das Computerprogramm kann der Anweisungsausführungsanordnung 200 oder dem Speicher die Anweisung zum Blockieren der Sprungvorhersage vor dem Verarbeiten einer bestimmten Sprungvorhersage bereitstellen.Although the 1 to 3 Detecting conditions based on an instruction stream from an instruction execution order 200 and an instruction compilation arrangement 300 For example, embodiments of the present disclosure include any means for detecting conditions based on the instruction stream. For example, in one embodiment, a to the instruction execution arrangement 200 external computer program to monitor the execution of jump instructions and to identify jump instructions for which branch prediction is to be blocked. The computer program may be of the instruction execution arrangement 200 or provide the instruction to block the jump prediction prior to processing a particular branch prediction.

4 veranschaulicht einen Ablaufplan eines Verfahrens gemäß einer Ausführungsform der vorliegenden Offenbarung. In Block 401 wird ermittelt, ob während der Ausführung eines Stroms von Anweisungen eine Anweisung zum Blockieren von Sprunganweisungen erfasst wird. So kann beispielsweise eine Ausführungseinheit einer Anweisungsausführungs-Pipeline eine Anweisung zum Blockieren von Sprungvorhersage ausführen. In Block 402 veranlasst die Blockierungsanweisung, dass ein Vorhersageblock eingestellt wird. Eine Ausführungseinheit kann zum Beispiel einer Anweisungs-Abrufschaltung Anweisungen zum Steuern der Anweisungs-Abrufschaltung bereitstellen, so dass sie für eine Anzahl von Sprunganweisungen nach der Blockierungsanweisung keine Sprungvorhersageoperation ausführt. Die Anzahl blockierter Sprungvorhersageoperationen ist eine endliche Zahl von mindestens 1. In einer Ausführungsform wird die Anzahl von der Blockierungsanweisung definiert. In einer Ausführungsform spezifiziert die Blockierungsanweisung des Weiteren einen Typen von Sprunganweisung, für den Sprungvorhersage übersprungen werden soll. 4 FIG. 12 illustrates a flowchart of a method according to an embodiment of the present disclosure. FIG. In block 401 It is determined whether, during the execution of a stream of instructions, an instruction to block Jump instructions is detected. For example, an execution unit of an instruction execution pipeline may execute a jump prediction blocking instruction. In block 402 causes the blocking instruction to set a prediction block. For example, an execution unit may provide instructions to the instruction fetch circuit to control an instruction fetch circuit such that it does not execute a jump prediction operation for a number of jump instructions after the blocking instruction. The number of blocked branch prediction operations is a finite number of at least 1. In one embodiment, the number is defined by the blocking instruction. In one embodiment, the blocking instruction further specifies a type of jump instruction for which branch prediction is to be skipped.

In Block 403 wird ermittelt, ob eine Sprunganweisung erfasst wurde, die dem Typ von Sprunganweisung entspricht, für den keine Sprungvorhersage durchgeführt werden soll. Wird die unzulässige Sprunganweisung in Block 403 erfasst, wird in Block 404 eine Sprungvorhersagefunktion für diese Anweisung blockiert. Blockieren der Sprungvorhersage kann beispielsweise das Hindern einer Abrufeinheit am Zugreifen auf einen Sprungzielpuffer und Verhindern, dass Informationen von der Sprunganweisung in den Sprungzielpuffer und eine Sprunghistorie-Einheit eingegeben werden, aufweisen.In block 403 it is determined whether a jump instruction corresponding to the type of jump instruction for which no jump prediction is to be performed has been detected. If the illegal jump instruction is in block 403 is captured in block 404 blocks a branch prediction function for this statement. Blocking the jump prediction may include, for example, preventing a fetch unit from accessing a jump destination buffer and preventing information from the jump instruction from being input to the jump destination buffer and a jump history unit.

In Block 405 wird ermittelt, ob eine Anzahl N von Sprunganweisungen, die von der Anweisung zum Blockieren von Sprungvorhersage spezifiziert worden ist, erfasst wurde. Die Anweisung zum Blockieren von Sprungvorhersage kann beispielsweise einen Ganzzahlwert von 1 bis zu jeder beliebigen Zahl größer als 1 aufweisen, um eine Anzahl von Sprunganweisungen anzuzeigen, für die eine Sprungvorhersageoperation übersprungen oder blockiert werden soll.In block 405 It is determined whether a number N of jump instructions specified by the jump prediction blocking instruction has been detected. For example, the jump prediction blocking instruction may have an integer value from 1 to any number greater than 1 to indicate a number of jump instructions for which a jump prediction operation is to be skipped or blocked.

Wenn in Block 405 ermittelt wird, dass die festgelegte Anzahl N von Sprunganweisungen erfasst wurde, wird in Block 406 die Anweisung zum Blockieren der Sprungvorhersage gelöscht, und anschließende Sprunganweisungen können normalen Sprungvorhersageoperationen unterzogen werden.If in block 405 it is determined that the specified number N of jump instructions has been detected is in block 406 the instruction to block the jump prediction is cleared, and subsequent jump instructions may be subjected to normal jump prediction operations.

5 veranschaulicht einen Ablaufplan eines Verfahrens gemäß einer weiteren Ausführungsform der vorliegenden Offenbarung. In Block 501 wird ermittelt, ob eine Bedingung zum Blockieren der Sprungvorhersage erfüllt wird. Die Blockierungsbedingung kann auf einer identifizierten Sprunganweisung in einem Strom von abgerufenen Anweisungen, auf Eigenschaften anderer Anweisungen in dem Strom von Anweisungen, auf vorab programmierten Anweisungen hinsichtlich darauf, wann Sprungvorhersage oder an welchen Typen von Sprunganweisungen Sprungvorhersage durchgeführt werden sollte, auf einer Analyse vorheriger Sprunganweisungen wie beispielsweise einer Erkenntnis, dass bestimmte Sprunganweisungen nicht vorhersagbar sind, oder auf jeder anderen gewünschten Bedingung beruhen. 5 FIG. 12 illustrates a flowchart of a method according to another embodiment of the present disclosure. FIG. In block 501 it is determined whether a condition for blocking the branch prediction is satisfied. The blocking condition may be performed on an identified branch instruction in a stream of retrieved instructions, on properties of other instructions in the stream of instructions, on pre-programmed instructions as to when branch prediction or on which types of branch instructions branch prediction should be performed, on an analysis of previous branch instructions such as for example, a realization that certain jump instructions are unpredictable or based on any other desired condition.

Wird die Bedingung in Block 501 erfasst, wird in Block 502 eine Anweisung zum Blockieren von Sprungvorhersage in den Strom von Anweisungen eingefügt. Bezieht sich die Bedingung beispielsweise auf eine identifizierte Sprunganweisung in einem Strom von Anweisungen, kann die Blockierungsanweisung der identifizierten Sprunganweisung vorgeordnet eingefügt werden, um Sprungvorhersage für die identifizierte Sprunganweisung zu verhindern. Die Anweisung zum Blockieren von Sprungvorhersage kann einen sehr engen Bereich von Sprunganweisungen spezifizieren, für die Sprungvorhersage übersprungen wird, oder die Anweisung zum Blockieren von Sprungvorhersage kann Sprungvorhersage für einen beliebigen Typ von bedingter Sprunganweisung verhindern.Will the condition be in block 501 is captured in block 502 an instruction to block branch prediction inserted into the stream of instructions. For example, if the condition relates to an identified jump instruction in a stream of instructions, the blocking instruction of the identified jump instruction may be inserted upstream to prevent jump prediction for the identified jump instruction. The jump prediction blocking instruction may specify a very narrow range of branch instructions for which branch prediction is skipped, or the branch prediction blocking instruction may prevent branch prediction for any type of conditional branch instruction.

In Block 503 wird ermittelt, ob eine Sprunganweisung erfasst wird, die dem Typ von Sprunganweisung entspricht, für den keine Sprungvorhersage durchgeführt werden soll. Wird die nicht zulässige Sprunganweisung in Block 503 erfasst, wird in Block 504 eine Sprungvorhersagefunktion für diese Anweisung blockiert. Blockieren der Sprungvorhersage kann beispielsweise das Hindern einer Abrufeinheit am Zugreifen auf einen Sprungzielpuffer und Verhindern, dass Informationen von der Sprunganweisung in den Sprungzielpuffer und eine Sprunghistorie-Einheit eingegeben werden, aufweisen.In block 503 it is determined whether a jump instruction corresponding to the type of jump instruction for which no jump prediction is to be performed is detected. If the invalid jump instruction is in block 503 is captured in block 504 blocks a branch prediction function for this statement. Blocking the jump prediction may include, for example, preventing a fetch unit from accessing a jump destination buffer and preventing information from the jump instruction from being input to the jump destination buffer and a jump history unit.

In Block 505 wird ermittelt, ob eine Anzahl N von Sprunganweisungen, die von der Anweisung zum Blockieren von Sprungvorhersage spezifiziert worden ist, erfasst wurde. Die Anweisung zum Blockieren von Sprungvorhersage kann beispielsweise einen Ganzzahlwert von 1 bis zu jeder beliebigen Zahl größer als 1 aufweisen, um eine Anzahl von Sprunganweisungen anzuzeigen, für die eine Sprungvorhersageoperation übersprungen oder blockiert werden sollte.In block 505 It is determined whether a number N of jump instructions specified by the jump prediction blocking instruction has been detected. For example, the instruction to block branch prediction may have an integer value from 1 to any number greater than 1 to indicate a number of branch instructions for which a branch prediction operation should be skipped or blocked.

Wenn in Block 505 ermittelt wird, dass die festgelegte Anzahl N von Sprunganweisungen erfasst wurde, wird in Block 506 die Anweisung zum Blockieren der Sprungvorhersage gelöscht, und anschließende Sprunganweisungen können normalen Sprungvorhersageoperationen unterzogen werden.If in block 505 it is determined that the specified number N of jump instructions has been detected is in block 506 the instruction to block the jump prediction is cleared, and subsequent jump instructions may be subjected to normal jump prediction operations.

6 veranschaulicht ein Blockschaubild eines Systems 600 zum selektiven Blockieren von Sprungvorhersageoperationen gemäß einer Ausführungsform. Die hierin beschriebenen Verfahren können in Hardware, Software (z. B. Firmware) oder einer Kombination daraus implementiert werden. In einer beispielhaften Ausführungsform werden die hierin beschriebenen Verfahren in Hardware als Teil des Mikroprozessors eines digitalen Spezial- oder Universalcomputers wie beispielsweise eines Personalcomputers, einer Workstation, eines Minicomputers oder eines Mainframe-Computers implementiert. Das System 600 weist dementsprechend einen Universalcomputer 601 auf. 6 illustrates a block diagram of a system 600 for selectively blocking branch prediction operations according to one embodiment. The methods described herein may be implemented in hardware, software (eg, firmware), or a combination of these can be implemented. In an exemplary embodiment, the methods described herein are implemented in hardware as part of the microprocessor of a special purpose or general purpose digital computer such as a personal computer, workstation, minicomputer, or mainframe computer. The system 600 accordingly has a universal computer 601 on.

Im Hinblick auf Hardware-Architektur weist der Computer 601 in einer beispielhaften Ausführungsform einen Prozessor 605, bei dem es sich um einen Multi-Threading-Prozessor 605 handeln kann, der so konfiguriert ist, dass er Anweisungen gleichzeitig oder außerhalb der Programmreihenfolge (out-of-order) ausführen kann, einen Speicher 610, der mit einem Speicher-Controller 615 verbunden ist, sowie eine oder mehrere Eingabe/Ausgabe (E/A) Einheiten 640, 645 (oder Peripheriegeräte) auf, die über einen lokalen Eingabe/Ausgabe-Controller 635 über Datenübertragung verbunden sind, wie dies in 6 dargestellt ist. Bei dem Eingabe/Ausgabe-Controller 635 kann es sich beispielsweise um einen oder mehrere Busse oder andere drahtgebundene oder drahtlose Verbindungen, jedoch nicht darauf beschränkt, handeln, wie dies auf dem Gebiet der Technik bekannt ist. Der Eingabe/Ausgabe-Controller 635 kann zum Herstellen einer Datenübertragung zusätzliche Elemente aufweisen, die im Sinne der Einfachheit weggelassen werden, wie beispielsweise Controller, Puffer (Cachespeicher), Treiber, Repeater und Receiver. Des Weiteren kann die lokale Schnittstelle Adressen-, Steuer- und/oder Datenverbindungen aufweisen, die eine geeignete Datenübertragung zwischen den vorstehenden Komponenten ermöglichen.In terms of hardware architecture, the computer points 601 In an exemplary embodiment, a processor 605 , which is a multi-threaded processor 605 A memory configured to execute instructions out-of-order concurrently or out of program order 610 that with a memory controller 615 and one or more input / output (I / O) units 640 . 645 (or peripherals) through a local input / output controller 635 connected via data transmission, as in 6 is shown. In the input / output controller 635 For example, it may be one or more buses or other wired or wireless connections, as is known in the art. The input / output controller 635 For example, to fabricate a data transfer, it may have additional elements that are omitted for simplicity, such as controllers, buffers (caches), drivers, repeaters, and receivers. Furthermore, the local interface may include address, control, and / or data connections that facilitate appropriate communication between the above components.

Bei dem Prozessor 605 handelt es sich um eine Hardware-Einheit zum Ausführen von Software, insbesondere der Software, die in der Speichereinheit 620, die ein Cachespeicher oder ein Speicher 610 sein kann, gespeichert ist. Bei dem Prozessor 605 kann es sich um einen kundenspezifischen oder einen marktüblichen Prozessor, eine zentrale Verarbeitungseinheit (CPU), einen Hilfsprozessor von mehreren zu dem Computer 601 gehörende Prozessoren, einen auf Halbleiter basierenden Mikroprozessor (in Form eines Mikrochips oder eines Chip-Sets), einen Makroprozessor oder ganz allgemein um jede beliebige Einheit zum Ausführen von Anweisungen handeln. Der Prozessor 605 kann Abschnitte der Anweisungsausführungsanordnung 200 von 2 wie beispielsweise die Sprungvorhersageeinheit 206, die Anweisungsabrufeinheit 202 und die Sprungvorhersage-Blockierungseinheit 210 aufweisen.At the processor 605 it is a hardware unit for running software, especially the software that resides in the storage unit 620 that is a cache or memory 610 can be saved. At the processor 605 It can be a custom or off-the-shelf processor, a central processing unit (CPU), an auxiliary processor of several to the computer 601 belonging to processors, a semiconductor-based microprocessor (in the form of a microchip or a chip set), a macro processor or, more generally, any unit for executing instructions. The processor 605 may include sections of the instruction execution order 200 from 2 such as the jump prediction unit 206 , the instruction retrieval unit 202 and the jump prediction blocking unit 210 exhibit.

Der Speicher 610 kann einen beliebigen oder eine Kombination aus flüchtigen Speicherelementen (z. B. Arbeitsspeicher (RAM, wie DRAM, SRAM, SDRAM, usw.)) und nichtflüchtigen Speicherelementen (z. B. ROM, löschbaren programmierbaren Nur-Lese-Speicher (EPROM), elektronischen löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), programmierbaren Nur-Lese-Speicher (PROM), Band, CD-Nur-Lese-Speicher (CD-ROM), Platte, Diskette, Speicherkarte, Kassette oder Ähnliches usw.) handeln. Des Weiteren kann der Speicher 610 elektronische, magnetische, optische und/oder andere Typen von Speichermedien aufweisen. Hierbei ist zu beachten, dass der Speicher 610 eine verteilte Architektur aufweisen kann, bei der verschiedene Komponenten voneinander entfernt vorhanden sind, auf die der Prozessor 605 jedoch zugreifen kann.The memory 610 may include any or a combination of volatile memory elements (eg, random access memory (RAM, such as DRAM, SRAM, SDRAM, etc.)) and nonvolatile memory elements (eg, ROM, erasable programmable read only memory (EPROM), electronic erasable programmable read only memory (EEPROM), programmable read only memory (PROM), tape, CD read only memory (CD-ROM), disk, floppy disk, memory card, cassette or the like, etc.) , Furthermore, the memory can 610 electronic, magnetic, optical and / or other types of storage media. It should be noted that the memory 610 may have a distributed architecture in which there are various components remote from each other to which the processor belongs 605 however, can access.

Die Anweisungen in dem Speicher 610 können eine oder mehrere separate Programme aufweisen, von denen jedes eine geordnete Auflistung von ausführbaren Anweisungen zum Implementieren logischer Funktionen aufweist. In dem Beispiel von 6 sind die Anweisungen in dem Speicher 610 in einem geeigneten Betriebssystem (OS) 611 enthalten. Das Betriebssystem 611 steuert im Wesentlichen die Ausführung von anderen Computerprogrammen und stellt Zeitplanung, Eingabe-Ausgabe-Steuerung, Dateien- und Datenverwaltung, Speicherverwaltung und Datenübertragungssteuerung sowie damit zusammenhängende Dienste bereit.The instructions in the memory 610 may include one or more separate programs, each of which has an ordered listing of executable instructions for implementing logical functions. In the example of 6 are the instructions in the memory 610 in a suitable operating system (OS) 611 contain. The operating system 611 essentially controls the execution of other computer programs and provides scheduling, input-output control, file and data management, memory management and data transfer control, and related services.

In einer beispielhaften Ausführungsform können eine herkömmliche Tastatur 650 und eine Maus 655 mit dem Eingabe/Ausgabe-Controller 635 verbunden sein. Zu anderen Ausgabeeinheiten wie den E/A-Einheiten 640, 645 können Eingabeeinheiten, einschließlich einem Drucker, einem Scanner, einem Mikrophon und Ähnlichem, jedoch nicht darauf beschränkt, gehören. Schließlich können die E/A-Einheiten 640, 645 des Weiteren Einheiten aufweisen, die sowohl Eingaben als auch Ausgaben übertragen, beispielsweise eine Netzwerkschnittstellenkarte (NIC) oder einen Modulator/Demodulator (zum Zugriff auf andere Dateien, Einheiten, Systeme oder ein Netzwerk), einen Hochfrequenz-(HF) oder anderen Transceiver, eine Telefonieschnittstelle, eine Brücke, einen Router und Ähnlichem, jedoch nicht beschränkt auf. Das System 600 kann des Weiteren einen Display-Controller 625 aufweisen, der mit einem Display 630 verbunden ist. in einer beispielhaften Ausführungsform kann das System 600 des Weiteren eine Netzwerkschnittstelle 660 zum Verbinden mit einem Netzwerk 665 aufweisen. Bei dem Netzwerk 665 kann es sich um ein IP-basiertes Netzwerk zur Datenübertragung zwischen dem Computer 601 und einem beliebigen externen Server, Client und Ähnliches über eine Breitbandverbindung handeln. Das Netzwerk 665 sendet und empfängt Daten zwischen dem Computer 601 und externen Systemen. In einer beispielhaften Ausführungsform kann es sich bei dem Netzwerk 665 um ein verwaltetes IP-Netzwerk, das von einem Service Provider verwaltet wird, handeln. Das Netzwerk 665 kann drahtlos implementiert sein, z. B. unter Verwendung von Drahtlosprotokollen wie WiFi, WiMax usw. Bei dem Netzwerk 665 kann es sich auch um ein Netzwerk mit Paketvermittlung wie beispielsweise ein lokales Netz, ein Weitverkehrsnetz, ein Stadtbereichsnetz, ein Internet-Netzwerk oder einen ähnlichen Typ von Netzwerkumgebung handeln. Das Netzwerk 665 kann ein Drahtlosnetzwerk, ein drahtloses lokales Netz (LAN), ein drahtloses Weitverkehrsnetz (WAN), ein Personal Area Network, ein virtuelles privates Netz, Intranet oder ein anderes geeignetes Netzwerksystem sein, und es kann Geräte zum Empfangen und Senden von Signalen aufweisen.In an exemplary embodiment, a conventional keyboard 650 and a mouse 655 with the input / output controller 635 be connected. To other output devices like the I / O units 640 . 645 may include input devices including, but not limited to, a printer, a scanner, a microphone, and the like. Finally, the I / O units 640 . 645 further comprising units that transmit both inputs and outputs, such as a network interface card (NIC) or modulator / demodulator (for accessing other files, devices, systems, or a network), a radio frequency (RF), or other transceiver Telephony interface, a bridge, a router and the like, but not limited to. The system 600 Furthermore, a display controller 625 have that with a display 630 connected is. In an exemplary embodiment, the system 600 furthermore a network interface 660 to connect to a network 665 exhibit. At the network 665 It can be an IP-based network for data transfer between the computer 601 and any external server, client, and the like over a broadband connection. The network 665 sends and receives data between the computer 601 and external systems. In an exemplary embodiment, the network may be 665 to a managed IP network managed by a service provider will, act. The network 665 can be implemented wirelessly, eg. Using wireless protocols such as WiFi, WiMax, etc. on the network 665 it may also be a packet-switched network, such as a local area network, wide area network, metropolitan area network, Internet network, or similar type of network environment. The network 665 may be a wireless network, a wireless local area network (LAN), a wireless wide area network (WAN), a personal area network, a virtual private network, intranet, or other suitable network system, and may include devices for receiving and transmitting signals.

Wenn es sich bei dem Computer 601 um einen PC, eine Workstation, ein intelligentes Gerät oder Ähnliches handelt, können die Anweisungen in dem Speicher 610 des Weiteren ein BIOS (im Sinne der Einfachheit nicht dargestellt) aufweisen. Bei dem BIOS handelt es sich um einen Satz an essentiellen Software-Routinen, die Hardware beim Hochfahren initialisieren und testen, das OS 611 starten und die Übertragung von Daten zwischen den Hardware-Geräten unterstützen. Das BIOS ist im ROM gespeichert, so dass das BIOS ausgeführt werden kann, wenn der Computer 601 aktiviert wird.If it is the computer 601 The instructions in the memory may be about a PC, a workstation, a smart device, or the like 610 Furthermore, a BIOS (not shown in the sense of simplicity) have. The BIOS is a set of essential software routines that initialize and test hardware at startup, the OS 611 start and support the transfer of data between the hardware devices. The BIOS is stored in ROM so that the BIOS can be run when the computer 601 is activated.

Befindet sich der Computer 601 in Betrieb, ist der Prozessor 605 so konfiguriert, dass er Anweisungen, die in dem Speicher 610 gespeichert sind, ausführt, Daten zu und von dem Speicher überträgt und ganz allgemein Operationen des Computers 601 gemäß den Anweisungen steuert.Is the computer 601 in operation, is the processor 605 configured to have instructions in the memory 610 are stored, data transfers to and from the memory and more generally computer operations 601 controls according to the instructions.

In einer beispielhaften Ausführungsform können hierin beschriebene Verfahren zur selektiven Sprungvorhersage mit einer beliebigen oder einer Kombination aus den folgenden Technologien implementiert werden, die alle jeweils gut auf dem Gebiet der Technik bekannt sind: (eine) diskrete logische Schaltung(en) mit Logik-Gattern zum Implementieren logischer Funktionen an Datensignalen, eine anwendungsspezifische integrierte Schaltung (ASIC) mit geeigneten kombinierbaren Logik-Gattern, (ein) programmierbare/s Gate-Array(s), ein Field Programmable Gate Array (FPGA), usw.In an exemplary embodiment, selective branch prediction techniques described herein may be implemented with any or a combination of the following technologies, all of which are well known in the art: (a) discrete logical circuit (s) having logic gates Implement logical functions on data signals, an application specific integrated circuit (ASIC) with appropriate combinable logic gates, programmable gate array (s), Field Programmable Gate Array (FPGA), etc.

Wie den Fachleuten ersichtlich ist, können ein oder mehrere Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgebildet sein. Dementsprechend können ein oder mehrere Aspekte der vorliegenden Ausführungsformen als vollständige Hardware-Ausführungsform, vollständige Software-Ausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) ausgebildet sein oder als eine Ausführungsform ausgebildet sein, die Software- und Hardwareaspekte kombiniert, die allesamt im Allgemeinen hierin als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Des Weiteren können ein oder mehrere Aspekte der vorliegenden Ausführungsformen als ein Computerprogrammprodukt ausgebildet sein, das in einem oder mehreren computerlesbaren Medium oder Medien mit darin enthaltenen computerlesbaren Programmcodes ausgebildet ist.As those skilled in the art will appreciate, one or more aspects of the present invention may be embodied as a system, method, or computer program product. Accordingly, one or more aspects of the present embodiments may be embodied as a complete hardware embodiment, complete software embodiment (including firmware, resident software, microcode, etc.), or configured as an embodiment that combines software and hardware aspects, all in general may be referred to herein as a "circuit," "module," or "system." Further, one or more aspects of the present embodiments may be embodied as a computer program product embodied in one or more computer readable media or media having computer readable program codes therein.

Es kann jede beliebige Kombination aus einem oder mehreren computerlesbaren Medium/Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Ein computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, solche Vorrichtung oder Einheit oder jede beliebige geeignete Kombination der vorstehend Genannten, jedoch nicht darauf beschränkt, sein. Konkretere Beispiele (eine ergänzbare Liste) des computerlesbaren Speichermediums weisen die Folgenden auf: eine elektrische Verbindung mit einer oder zwei Leitungen, eine tragbare Computerdiskette, eine Festplatte, einen Arbeitsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen elektronisch löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Memory), einen Lichtwellenleiter, einen tragbaren CD-Nur-Lesespeicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede beliebige geeignete Kombination der vorstehend Genannten. Im Kontext dieses Dokumentes kann ein computerlesbares Speichermedium jegliches materielle Medium sein, das ein Programm zur Verwendung durch ein oder im Zusammenhang mit einem Befehlsausführungssystem, einer solchen Vorrichtung oder Einheit ein Programm enthalten oder speichern kann.Any combination of one or more computer readable media may be used. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer-readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, such device or device, or any suitable combination of the foregoing. More concrete examples (a suppliable list) of the computer readable storage medium include: a one or two wire electrical connection, a portable computer diskette, a hard disk, random access memory (RAM), read only memory (ROM), and an electronically erasable one programmable read-only memory (EPROM or flash memory), an optical fiber, a portable CD-ROM (read only memory), an optical storage unit, a magnetic storage unit, or any suitable combination of the foregoing. In the context of this document, a computer-readable storage medium may be any tangible medium that a program may contain or store a program for use by or in connection with an instruction execution system, apparatus, or device.

In Bezug auf 7 weist in einem Beispiel ein Computerprogrammprodukt 710 beispielsweise ein oder mehrere Speichermedien 712 auf, wobei die Medien materiell und/oder nichtflüchtig sein können, zum Speichern eines computerlesbaren Programmcodemittels oder solcher Logik 714 darauf, um einen oder mehrere Aspekte von hierin beschriebenen Ausführungsformen bereitzustellen und umzusetzen.In relation to 7 In one example, shows a computer program product 710 for example, one or more storage media 712 on, wherein the media may be physical and / or non-volatile, for storing computer readable program code means or logic 714 to provide and implement one or more aspects of embodiments described herein.

Oftmals wird der Programmcode, wenn er erstellt und auf einem materiellen Medium (einschließlich elektronischer Speichermodule (RAM), Flash-Speicher, Compact Discs (CDs), DVDs, Magnetband und Ähnliches, jedoch nicht darauf beschränkt) gespeichert wird, als „Computerprogrammprodukt” bezeichnet. Das Medium des Computerprogrammproduktes ist normalerweise von einer Verarbeitungsschaltung lesbar, vorzugsweise in einem Computersystem zur Ausführung durch die Verarbeitungsschaltung. Solch ein Programmcode kann unter Verwendung eines Compilers oder Assemblers erstellt werden, beispielsweise um Anweisungen zusammenzustellen, die bei ihrer Ausführung Aspekte der Ausführungsformen durchführen.Often, the program code, when created and stored on a physical medium (including electronic memory modules (RAM), flash memory, compact discs (CDs), DVDs, magnetic tape, and the like, is referred to as a "computer program product." , The medium of the computer program product is normally readable by a processing circuit, preferably in a computer system for execution by the processing circuitry. Such a program code may be created using a compiler or assembler, for example instructions that perform aspects of the embodiments as they are executed.

Zu Ausführungsformen gehören ein Computersystem, ein Verfahren und ein Computerprogrammprodukt sowie jegliches andere Gerät oder andere Vorrichtung zum Durchführen von selektiver Sprungvorhersage. Ausführungsformen weisen Erfassen einer Anweisung zum Blockieren einer Sprungvorhersage in einem Strom von Anweisungen und Blockieren der Sprungvorhersage von einer vorgegebenen Anzahl von Sprunganweisungen auf der Grundlage des Erfassens der Anweisung zum Blockieren der Sprungvorhersage auf. Erfassen und Blockieren können von einem Prozessor durchgeführt werden.Embodiments include a computer system, a method, and a computer program product, as well as any other device or device for performing selective branch prediction. Embodiments include detecting an instruction to block a branch prediction in a stream of instructions and blocking the branch prediction from a predetermined number of branch instructions based on detecting the instruction to block the branch prediction. Capture and blocking can be performed by a processor.

In einer Ausführungsform wird die vorgegebene Anzahl von der Anweisung zum Blockieren von Sprungvorhersage spezifiziert. Eine weitere Ausführungsform weist Verhindern, dass Informationen in Bezug auf die vorgegebene Anzahl von Sprungvorhersageoperationen für spätere Sprungvorhersageoperationen gespeichert werden, auf. Das Verhindern kann von einem Prozessor durchgeführt werden.In one embodiment, the predetermined number is specified by the jump prediction blocking instruction. Another embodiment includes preventing information from being stored with respect to the predetermined number of branch prediction operations for subsequent branch prediction operations. The prevention can be performed by a processor.

Eine weitere Ausführungsform weist Erfassen einer vorgegebenen Bedingung auf der Grundlage eines Stroms von Anweisungen und Einfügen der Anweisung zum Blockieren von Sprungvorhersage auf der Grundlage des Erfassens der vorgegebenen Bedingung auf. In einer Ausführungsform handelt es sich bei dem Strom von Anweisungen um einen Strom von Anweisungen in einer Verarbeitungs-Pipeline eines Prozessors, wobei die vorgegebene Bedingung Ermitteln aufweist, dass eine abgerufene Sprunganweisung einem vorgegebenen Typ von Sprunganweisung entspricht und Einfügen der Anweisung zum Blockieren der Sprungvorhersage in den Strom von Anweisungen Einfügen der Anweisung zum Blockieren der Sprungvorhersage der abgerufenen Sprunganweisung vorgeordnet aufweist.Another embodiment includes detecting a predetermined condition based on a stream of instructions and inserting the jump prediction blocking instruction based on the detection of the predetermined condition. In one embodiment, the stream of instructions is a stream of instructions in a processing pipeline of a processor, wherein the predetermined condition comprises determining that a fetched jump instruction corresponds to a predetermined type of jump instruction and inserting the instruction to block the jump prediction includes the stream of instructions inserting the instruction to block the branch prediction of the retrieved branch instruction upstream.

In einer Ausführungsform handelt es sich bei der vorgegebenen Bedingung um eine Erkenntnis, dass eine Sprunganweisung in dem Strom von Anweisungen auf der Grundlage von früheren Sprungvorhersagen schwer vorhersagbar ist. In einer Ausführungsform handelt es sich bei der vorgegebenen Bedingung um eine Eigenschaft von Nicht-Sprunganweisungen in dem Strom von Anweisungen. Eine weitere Ausführungsform weist Zulassen der Sprungvorhersageoperation an Sprunganweisungen auf der Grundlage eines Ermittelns auf, dass die vorgegebene Anzahl von Sprungvorhersageoperationen blockiert worden ist.In one embodiment, the predetermined condition is a realization that a jump instruction in the stream of instructions based on previous jump predictions is difficult to predict. In one embodiment, the predetermined condition is a property of non-jump instructions in the stream of instructions. Another embodiment includes allowing the jump prediction operation to jump instructions based on determining that the predetermined number of branch prediction operations has been blocked.

Zu den technischen Ergebnissen und Vorteilen gehört das Verbessern der Verarbeitungsleistung durch Verhindern von Sprungvorhersagen an Sprunganweisungen, die zu einer verringerten Verarbeitungseffizienz führen könnten, wie beispielsweise Sprunganweisungen, die eine Historie der Unvorhersagbarkeit aufweisen. Darüber hinaus können die Sprunganweisungen selektiv durch Bereitstellen einer Anweisung zum Blockieren von nur einer vorgegebenen Anzahl von Sprunganweisungen blockiert werden, einschließlich Blockieren von lediglich einer nächsten Sprungvorhersageoperation. Dementsprechend kann in einem Anweisungsstrom mit einer großen Anzahl von Sprungoperationen, oder in einem Anweisungsstrom, in dem nur eine kleine Anzahl von bekannten Sprunganweisungen unvorhersagbar ist, die Anzahl von Sprungvorhersagen, die durchgeführt wird, maximiert werden, während nur die gewünschten Sprunganweisungen für ein Blockieren des Durchführens der Sprungvorhersage vorgesehen werden.The technical benefits and benefits include improving processing performance by preventing jump prediction of jump instructions that could result in reduced processing efficiency, such as jump instructions that have a history of unpredictability. In addition, the jump instructions may be selectively blocked by providing an instruction to block only a predetermined number of jump instructions, including blocking only a next branch prediction operation. Accordingly, in an instruction stream having a large number of jump operations, or in an instruction stream in which only a small number of known jump instructions are unpredictable, the number of jump predictions that are performed can be maximized while only the desired jump instructions for blocking the jump Performing the jump prediction.

Obgleich Ausführungsformen der vorliegenden Offenbarung in Bezug auf Vorhersage und Blockieren von Sprunganweisungen lediglich im beispielhaften Sinne beschrieben worden sind, ist bekannt, dass Ausführungsformen der vorliegenden Offenbarung auch Erfassen eines jeden beliebigen Typs von Anweisung und Einfügen einer Blockierungsanweisung in einen Strom von Anweisungen einschließt, um jeden beliebigen Typ von Vorhersageschema an seiner Durchführung zu blockieren.While embodiments of the present disclosure have been described in terms of predicting and blocking jump instructions by way of example only, it is known that embodiments of the present disclosure include detecting any type of instruction and inserting a blocking instruction into a stream of instructions at any one time block any type of prediction scheme in its execution.

Die hierin verwendete Terminologie dient lediglich dem Zwecke der Beschreibung bestimmter Ausführungsformen und beabsichtigt keine Beschränkung der Erfindung. In ihrer hierin verwendeten Form umfassen die Singularformen „ein”, „eine”, und „der(/die/das)” ebenso die Pluralformen, es sei denn, der Kontext gibt eindeutig etwas Anderes vor. Des Weiteren ist offensichtlich, dass die Begriffe „weist auf” und/oder „aufweisend”, wenn sie in dieser Patentschrift verwendet werden, das Vorhandensein von dargestellten Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten angeben, jedoch nicht das Vorhandensein oder die Hinzufügung einer oder mehrerer weiterer Merkmale, Ganzzahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen davon ausschließen.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to limit the invention. As used herein, the singular forms "a," "an," and "the / the" also include the plural forms unless the context clearly dictates otherwise. Furthermore, it is to be understood that the terms "pointing to" and / or "having" when used in this specification indicate the presence of illustrated features, integers, steps, operations, elements and / or components, but not the presence or preclude the addition of one or more further features, integers, steps, operations, elements, components, and / or groups thereof.

Die entsprechenden Strukturen, Materialien, Schritte und Entsprechungen aller Mittel oder Schritte plus Funktionselemente in den folgenden Ansprüchen beabsichtigen die Einbeziehung jeglicher Struktur, jeglichen Materials oder Schrittes zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen in ihrer im Speziellen beanspruchten Form. Die Beschreibung der vorliegenden Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung dargestellt, sie beabsichtigt jedoch weder Anspruch auf Vollständigkeit, noch stellt sie eine Beschränkung auf die Ausführungsformen in ihrer offenbarten Form dar. Den Fachleuten sind viele Modifizierungen und Varianten offensichtlich, ohne vom Schutzumfang und Geist der Ausführungsformen abzuweichen. Die Ausführungsformen wurden ausgewählt und beschrieben, um die Prinzipien der Erfindung und die praktische Anwendung bestmöglich zu erläutern und um andere Fachleute dazu zu befähigen, die Erfindung für verschiedene Ausführungsformen mit verschiedenen Modifizierungen zu verstehen, die für die bestimmte angestrebte Verwendung geeignet sind.The corresponding structures, materials, steps, and equivalents of all means or steps plus functional elements in the following claims are intended to include any structure, material, or step to perform the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or to be limited to Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the embodiments. The embodiments have been chosen and described in order to best explain the principles of the invention and its practical application, and to enable others skilled in the art to understand the invention for various embodiments with various modifications suitable for the particular use contemplated.

Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder beliebigen Kombination aus einer oder mehreren Programmiersprachen, unter anderem einer objektorientierten Programmiersprache wie beispielsweise JavaTM, Smalltalk, C++ oder Ähnlichen und herkömmlichen prozeduralen Programmiersprachen wie beispielsweise die Programmiersprache ”C” oder ähnlichen Programmiersprachen, geschrieben werden. Der Programmcode kann gänzlich auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als ein eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder gänzlich auf dem fernen Computer oder Server ausgeführt werden. In dem letzten Szenario kann der ferne Computer über jede beliebige Art von Netzwerk, unter anderem ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN) mit dem Computer des Benutzers verbunden sein, oder die Verbindung kann zu einem externen Computer (beispielsweise über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.Computer program code for performing operations for aspects of the present invention may be in any combination of one or more programming languages, including an object-oriented programming language such as Java , Smalltalk, C ++, or similar and conventional procedural programming languages such as the "C" programming language or similar programming languages , to be written. The program code may be executed entirely on the user's computer, partly on the user's computer, as a standalone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (for example, over the Internet using an Internet service provider).

Aspekte von Ausführungsformen werden vorstehend in Bezug auf die Veranschaulichungen der Ablaufpläne und/oder die schematischen Schaubilder der Verfahren, Vorrichtungen (Systeme) und Computerprogrammprodukte gemäß Ausführungsformen beschrieben. Es ist offensichtlich, dass jeder Block der Veranschaulichungen der Ablaufpläne und/oder der Blockschaltbilder sowie Kombinationen aus Blöcken in den Veranschaulichungen der Ablaufpläne und/oder der Blockschaltbilder von Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universal-Computers, eines Spezial-Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine bereitgestellt werden, und zwar so, dass mit den Anweisungen, die über den Prozessor des Computers oder andere Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zur Implementierung der in dem Ablaufplan und/oder dem/den Block/Blöcken der Blockschaubilder spezifizierten Funktionen/Schritte geschaffen werden.Aspects of embodiments are described above with reference to flowchart illustrations and / or schematic diagrams of the methods, apparatus (systems), and computer program products according to embodiments. It will be understood that each block of the flowchart illustrations and / or block diagrams as well as combinations of blocks may be implemented in the flowchart illustrations and / or block diagrams of computer program instructions. These computer program instructions may be provided to a processor of a general-purpose computer, a special purpose computer, or other programmable data processing apparatus for manufacturing a machine, such that instructions implementing the processor of the computer or other data processing apparatus include means for implementation the functions / steps specified in the flowchart and / or the block (s) of the block diagrams are created.

Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden und weisen einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten an, auf eine bestimmte Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel produzieren, der die Anweisungen enthält, mit denen die/der in dem Ablaufplan und/oder dem/den Block oder Blöcken der Blockschaltbilder spezifizierten Funktion/Schritt implementiert wird.These computer program instructions may also be stored in a computer readable medium and instruct a computer, other programmable data processing devices, or other entities to function in a particular manner so that the instructions stored in the computer readable medium produce an article of manufacture containing the instructions with which which is implemented in the flowchart and / or the block or blocks of block diagrams specified function / step.

Die Computerprogrammanweisungen können auch auf einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten geladen werden, um eine Reihe von Arbeitsschritten zu veranlassen, die auf dem Computer, anderen programmierbaren Datenverarbeitungsvorrichtungen oder Einheiten auszuführen sind, um ein computerimplementiertes Verfahren so zu schaffen, dass die Anweisungen, die auf dem Computer oder anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zum Implementieren der in dem Ablaufplan und/oder dem/den Block oder Blöcken des Blockschaltbildes spezifizierten Funktionen/Schritte bereitstellen.The computer program instructions may also be loaded onto a computer, other programmable computing devices, or other devices to perform a series of operations to be performed on the computer, other programmable computing devices, or devices to provide a computer-implemented method that includes the instructions to: which are executed on the computer or other programmable devices, provide processes for implementing the functions / steps specified in the flowchart and / or the block or blocks of the block diagram.

Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Betriebsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in dem Ablaufplan oder den Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere Anweisungen zum Implementieren der spezifizierten logischen Funktion(en) aufweist. Es sollte darüber hinaus beachtet werden, dass in einigen alternativen Implementierungen die in dem Block vermerkten Funktionen außerhalb der in den Figuren dargestellten Reihenfolge auftreten können. So können beispielsweise zwei Blöcke, die nacheinander dargestellt sind, im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal auch in umgekehrter Reihenfolge je nach der beteiligten Funktion ausgeführt werden. Es ist des Weiteren ersichtlich, dass jeder Block der Blockschaubilder und/oder Ablaufplanveranschaulichung und Kombinationen von Blöcken in den Blockschaltbildern und/oder Ablaufplanveranschaulichung durch spezielle hardwarebasierte Systeme implementiert werden können, die die spezifizierten Funktionen oder Schritte oder Kombinationen von speziellen Hardware- und Computeranweisungen ausführen.The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or code section having one or more instructions for implementing the specified logical function (s). It should also be noted that in some alternative implementations, the functions noted in the block may occur outside the order shown in the figures. For example, two blocks displayed one after the other may be executed substantially simultaneously, or the blocks may sometimes be executed in reverse order depending on the function involved. It will be further appreciated that each block of the block diagrams and / or flowchart illustration and combinations of blocks in the block diagrams and / or flowchart illustration may be implemented by specific hardware-based systems that perform the specified functions or steps or combinations of specific hardware and computer instructions.

Claims (15)

Computerimplementiertes Verfahren zum Durchführen selektiver Sprungvorhersage, wobei das Verfahren aufweist: Erfassen einer Anweisung zum Blockieren von Sprungvorhersage in einem Strom von Anweisungen durch einen Prozessor; und Blockieren von Sprungvorhersage an einer vorgegebenen Anzahl von Sprunganweisungen nach der Anweisung zum Blockieren von Sprungvorhersage durch den Prozessor auf der Grundlage des Erfassens der Anweisung zum Blockieren von Sprungvorhersage.A computer-implemented method of performing selective branch prediction, the method comprising: Detecting an instruction to block branch prediction in a stream of instructions by a processor; and Blocking branch prediction on a predetermined number of branch instructions after the instruction to block branch prediction by the processor based on detecting the branch prediction blocking instruction. Verfahren nach Anspruch 1, des Weiteren aufweisend: Verhindern, dass Informationen in Bezug auf die vorgegebene Anzahl von Sprungoperationen für spätere Sprungvorhersageoperationen gespeichert werden.The method of claim 1, further comprising: Prevent information from being stored with respect to the predetermined number of jump operations for later jump prediction operations. Verfahren nach Anspruch 1, des Weiteren aufweisend: Erfassen einer vorgegebenen Bedingung auf der Grundlage des Stroms von Anweisungen durch den Prozessor; und Einfügen der Anweisung zum Blockieren von Sprungvorhersage in den Strom von Anweisungen durch den Prozessor auf der Grundlage des Erfassens der vorgegebenen Bedingung.The method of claim 1, further comprising: Detecting a predetermined condition based on the stream of instructions by the processor; and Inserting the instruction to block branch prediction into the stream of instructions by the processor based on detecting the predetermined condition. Verfahren nach Anspruch 3, wobei die vorgegebene Bedingung Ermitteln aufweist, dass eine abgerufene Sprunganweisung einem vorgegebenen Typ von Sprunganweisung entspricht.The method of claim 3, wherein the predetermined condition comprises determining that a fetched jump instruction corresponds to a predetermined type of jump instruction. Verfahren nach Anspruch 4, wobei Einfügen der Anweisung zum Blockieren der Sprungvorhersage in den Strom von Anweisungen Einfügen der Anweisung zum Blockieren der Sprungvorhersage der abgerufenen Sprungvorhersage vorgeordnet aufweist.The method of claim 4, wherein inserting the instruction to block the branch prediction into the stream of instructions includes inserting the instruction to block the branch prediction of the retrieved branch prediction upstream. Verfahren nach Anspruch 3, wobei es sich bei der vorgegebenen Bedingung um eine Erkenntnis auf der Grundlage einer Sprungvorhersage-Historie handelt, dass eine abgerufene Sprunganweisung schwer vorhersagbar ist.The method of claim 3, wherein the predetermined condition is a discovery based on a jump prediction history that a retrieved jump instruction is difficult to predict. Verfahren nach Anspruch 1, des Weiteren aufweisend: Zulassen der Sprungvorhersageoperation für Sprunganweisungen auf der Grundlage einer Erkenntnis, dass die vorgegebene Anzahl von Sprungvorhersageoperationen blockiert worden ist.The method of claim 1, further comprising: Permitting the jump prediction operation for jump instructions based on a recognition that the predetermined number of branch prediction operations has been blocked. Computersystem zum Durchführen selektiver Sprungvorhersage, wobei das System aufweist: Speicher, der so konfiguriert ist, dass er Anweisungen speichert; und einen Prozessor, der so konfiguriert ist, dass er die Anweisungen zum Steuern des Computersystems zum Durchführen von Funktionen ausführt, die von den Anweisungen angezeigt werden, wobei das System so konfiguriert ist, dass es ein Verfahren ausführt, aufweisend: Erfassen einer Anweisung zum Blockieren von Sprungvorhersage durch den Prozessor in einem Strom von Anweisungen; und Blockieren der Sprungvorhersage durch den Prozessor an einer vorgegebenen Anzahl von Sprunganweisungen nach der Anweisung zum Blockieren von Sprungvorhersage, auf der Grundlage des Erfassens der Anweisung zum Blockieren von Sprungvorhersage.A computer system for performing selective branch prediction, the system comprising: Memory configured to store instructions; and a processor configured to execute the instructions for controlling the computer system to perform functions displayed by the instructions, the system being configured to perform a method comprising: Detecting an instruction to block branch prediction by the processor in a stream of instructions; and Blocking the branch prediction by the processor at a predetermined number of branch instructions after the instruction to block branch prediction, based on detecting the branch prediction blocking instruction. Computersystem nach Anspruch 8, wobei die vorgegebene Anzahl in der Anweisung zum Blockieren von Sprungvorhersage spezifiziert ist.The computer system of claim 8, wherein the predetermined number is specified in the instruction to block branch prediction. Computersystem nach Anspruch 8, wobei das Verfahren des Weiteren aufweist: Verhindern, dass Informationen in Bezug auf die vorgegebene Anzahl von Sprunganweisungen für spätere Sprungvorhersageoperationen gespeichert werden, durch den Prozessor.The computer system of claim 8, wherein the method further comprises: Preventing the processor from storing information regarding the predetermined number of jump instructions for later branch prediction operations. Computersystem nach Anspruch 8, wobei das Verfahren des Weiteren aufweist: Erfassen einer vorgegebenen Bedingung durch den Prozessor auf der Grundlage des Stroms von Anweisungen; und Einfügen der Anweisung zum Blockieren von Sprungvorhersage in den Strom von Anweisungen durch den Prozessor auf der Grundlage des Erfassens der vorgegebenen Bedingung.The computer system of claim 8, wherein the method further comprises: Detecting, by the processor, a predetermined condition based on the stream of instructions; and Inserting the instruction to block branch prediction into the stream of instructions by the processor based on detecting the predetermined condition. Computersystem nach Anspruch 11, wobei es sich bei dem Strom von Anweisungen um einen Strom von Anweisungen in einer Verarbeitungs-Pipeline des Prozessors handelt, die vorgegebene Bedingung Ermitteln aufweist, dass eine abgerufene Sprunganweisung einem vorgegebenen Typ von Sprunganweisung entspricht, und Einfügen der Anweisung zum Blockieren von Sprungvorhersage in den Strom von Anweisungen Einfügen der Anweisung zum Blockieren von Sprungvorhersage der abgerufenen Sprunganweisung vorgeordnet aufweist.The computer system of claim 11, wherein the stream of instructions is a stream of instructions in a processing pipeline of the processor, the predetermined condition comprises determining that a fetched jump instruction corresponds to a predetermined type of jump instruction, and Inserting the instruction to block branch prediction into the stream of instructions inserting the instruction to block branch prediction of the retrieved branch instruction upstream. Computersystem nach Anspruch 11, wobei es sich bei der vorgegebenen Bedingung um eine Erkenntnis auf der Grundlage vorheriger Sprungvorhersagen handelt, dass eine Sprunganweisung in dem Strom von Anweisungen schwer vorhersagbar ist.The computer system of claim 11, wherein the predetermined condition is a discovery based on previous branch predictions that a branch instruction in the stream of instructions is difficult to predict. Computersystem nach Anspruch 4, wobei es sich bei der vorgegebenen Bedingung um eine Eigenschaft einer Nicht-Sprunganweisung in dem Strom von Anweisungen handelt.The computer system of claim 4, wherein the predetermined condition is a property of a non-jump instruction in the stream of instructions. Computerprogrammprodukt zum Durchführen von selektiver Sprungvorhersage, wobei das Computerprogrammprodukt aufweist: ein materielles Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Anweisungen zur Ausführung durch die Verarbeitungsschaltung zum Durchführen eines Verfahrens speichert, das aufweist: Erfassen einer Anweisung zum Blockieren von Sprungvorhersage in einem Strom von Anweisungen durch einen Prozessor; und Blockieren von Sprungvorhersage an einer vorgegebenen Anzahl von Sprunganweisung nach der Anweisung zum Blockieren von Sprungvorhersage auf der Grundlage des Erfassens der Anweisung zum Blockieren von Sprungvorhersage. A computer program product for performing selective branch prediction, the computer program product comprising: a tangible storage medium readable by a processing circuit and storing instructions for execution by the processing circuit to perform a method comprising: detecting an instruction to block branch prediction in a stream of instructions through a processor; and blocking branch prediction on a predetermined number of branch instructions after the instruction for blocking branch prediction on the basis of detecting the instruction for blocking branch prediction.
DE201310210529 2012-06-15 2013-06-06 Computer-implemented method for carrying out selective jump instruction prediction in e.g. digital special or general purpose computer, involves blocking jump instruction prediction after prediction blocking instruction is executed Ceased DE102013210529A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/524,402 2012-06-15
US13/524,402 US9891922B2 (en) 2012-06-15 2012-06-15 Selectively blocking branch prediction for a predetermined number of instructions
US13/804,524 2013-03-14
US13/804,524 US9898294B2 (en) 2012-06-15 2013-03-14 Selectively blocking branch prediction for a predetermined number of instructions

Publications (1)

Publication Number Publication Date
DE102013210529A1 true DE102013210529A1 (en) 2013-12-19

Family

ID=49668198

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201310210529 Ceased DE102013210529A1 (en) 2012-06-15 2013-06-06 Computer-implemented method for carrying out selective jump instruction prediction in e.g. digital special or general purpose computer, involves blocking jump instruction prediction after prediction blocking instruction is executed

Country Status (1)

Country Link
DE (1) DE102013210529A1 (en)

Similar Documents

Publication Publication Date Title
DE102014011332B4 (en) PRIORITIZE INSTRUCTIONS BASED ON TYPE
DE112017000677T5 (en) Processor enhancements to protect stacks during ring transitions
DE112010003595T5 (en) A method, system, and machine processable medium for providing distributed predicate prediction
US10025592B2 (en) Selectively blocking branch prediction for a predetermined number of instructions
DE102014119281A1 (en) PROCESSOR WITH VIRTUALIZED COMMAND STRUCTURE & PROCESS
DE112016004441T5 (en) Help jump prediction with utility tracking
DE102015101541A1 (en) PROCESSOR WITH GRANULAR ADDIER DIRECT VALUE & PROCESS
DE102015002383A1 (en) Method and apparatus for implementing a dynamic out-of-order processor pipeline
DE102015002124A1 (en) Return Destination Restricted Procedural Return Instructions, Processors, Methods, and Systems
DE112017004962T5 (en) Control flow integrity
DE102014003671A1 (en) PROCESSORS, METHODS AND SYSTEMS FOR RELAXING THE SYNCHRONIZATION OF ACCESS TO A SHARED MEMORY
DE112013000656T5 (en) System and method for reducing memory usage by optimally placing virtual machines in a virtualized data center
DE112006002237T5 (en) Method of self-initiating synchronization in a computer system
DE112018000202T5 (en) Bypass memory access for a load statement using an instruction address map
DE112019005729T5 (en) DETECTING SECURITY RISKS ASSOCIATED WITH A SOFTWARE COMPONENT
DE102014003799A1 (en) Systems and methods for transfer elimination with bypass multiple instantiation table
DE112005003343T5 (en) Mechanism for instruction set-based thread execution on multiple command schedules
DE102018004290A1 (en) Cryptographic memory protection with multiple keys
DE112013007300T5 (en) Storage systems with adaptive erase code generation
DE202017105834U1 (en) Manage application updates
DE102007039431A1 (en) Technology for memory reference filtering
DE102013206381A1 (en) Instruction Optimizing Processor with Branching Count Table in Hardware
DE102014002898A1 (en) Branch target buffer with efficient return predictive capability
DE102014003687A1 (en) DEVICE AND METHOD FOR PROTECTING DIGITAL CONTENTS
DE102020108281A1 (en) PROCEDURES AND DEVICES FOR RECOMMENDING INSTRUCTION ADAPTATIONS TO IMPROVE COMPUTING PERFORMANCE

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final