WO2007099484A2 - Optimised profile-driven compilation method for conditional code for a processor with predicated execution - Google Patents

Optimised profile-driven compilation method for conditional code for a processor with predicated execution Download PDF

Info

Publication number
WO2007099484A2
WO2007099484A2 PCT/IB2007/050594 IB2007050594W WO2007099484A2 WO 2007099484 A2 WO2007099484 A2 WO 2007099484A2 IB 2007050594 W IB2007050594 W IB 2007050594W WO 2007099484 A2 WO2007099484 A2 WO 2007099484A2
Authority
WO
WIPO (PCT)
Prior art keywords
code
branch
execution
compilation
load
Prior art date
Application number
PCT/IB2007/050594
Other languages
French (fr)
Other versions
WO2007099484A3 (en
Inventor
Tomson George
Bijo Thomas
Original Assignee
Nxp B.V.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nxp B.V. filed Critical Nxp B.V.
Priority to JP2008556892A priority Critical patent/JP2009528611A/en
Priority to EP07713174A priority patent/EP1994467A2/en
Priority to US12/281,371 priority patent/US20090019431A1/en
Publication of WO2007099484A2 publication Critical patent/WO2007099484A2/en
Publication of WO2007099484A3 publication Critical patent/WO2007099484A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level

Definitions

  • This invention generally relates to computer systems, and more specifically relates to compilers that generate executable program code for computer systems.
  • compilers take the human-readable form of a computer program, known as "source code”, and convert it into
  • machine code or "object code” instructions that may be executed by a computer system. Because a compiler generates the stream of machine code instructions that are eventually executed on a computer system, the manner in which the compiler converts the source code to object code affects the execution time of the computer program code.
  • the execution time of a computer program is a function of the arrangement and type of instructions within the computer program. Loops affect the execution time of a computer program. If a computer program contains many loops, or contains any loops that are executed a relatively large number of times, the time spent for executing loops will significantly impact the execution time of a computer program.
  • the instruction scheduler is responsible for translating the sequential code produced by the core compiler into very long instruction word (VLIW) instructions each containing independent operations that are issued in parallel by the VLIW. Instruction schedulers operate on basic blocks termed as scheduling units. Decision trees and guarded decision trees are examples of scheduling units.
  • profilers In order to optimize the performance of modern computer programs, profilers have been developed to predict and/or measure the run-time performance of a computer program. profilers typically generate profile data that estimates how often different portions of the computer program are executed. Using profile data, an optimizer (such as an optimizing compiler) may make decisions to optimize loops in a computer program in order to improve the execution speed of the computer program.
  • an optimizer such as an optimizing compiler
  • Patent application number WO2003003195A1 discloses a profile driven compilation method which allows compiler to make intelligent trade-off decisions. It is been deployed in compilers of very long instruction word (VLPW) processors for predicting the branch target of a program.
  • VLPW very long instruction word
  • the compiler needs to be guided for doing the optimal selection between guarded operations or a dedicated decision tree when a conditional execution is required in the program code.
  • an improved compilation method of deciding between guarded operations or a decision tree when a conditional execution is required in the program code is provided.
  • the present invention discloses a compilation method of a program code in a digital device in a profile driven compilation.
  • An approach for optimizing the execution of program code by providing additional intelligence to the compiler is provided.
  • the present invention provides an approach for conditional branching, which is based on the information provided to the compiler to either use guarding instructions or a separate decision tree. Sections of the code, which are called 'hot spots' , are identified in a first compile-run (compile-execute) stage of profile driven compilation, and an overhead estimation is carried out to determine whether to have an additional decision tree or guarded operation on the identified conditional code branches. This information will be provided as an input to the last stage of the profile-driven compilation
  • a preliminary compilation stage of the profile driven compilation is carried out to identify the different sections of the program code.
  • the main code and branch codes are identified at this stage.
  • the branch code load (BCLD) and increased main code load (IMCLD) are also determined where BCLD is defined as the number of very long instruction words (VLIW) including the jump instructions in the branch codes.
  • the IMCLD is defined as the additional load created due to the introduction of guarding operations for incorporating the branch code into the decision tree corresponding to the main loop.
  • the probability of executing the branch code is low, then the corresponding processing load, where the processing load of the branch code is determined by taking the product of BCLD and NBE, will also be low. If the branch code processing load is less than a threshold, then the additional processing load created due to a separate decision tree for branching is less compared to the load created by using single decision tree with guarding.
  • the threshold limit is determined by taking the product of IMCLD and NME.
  • the values of NBE and NME are fed into the compiler after first run. So the compiler makes a wise decision whether to have single decision tree or multiple decision trees for hot spots in the program code. A hot spot is defined as the different sections of the program code which account for considerable amount of processing load and hence are suitable candidates for optimisation. After identifying the hot spots in the program which have conditional code, the compiler has to verify the aforementioned condition in the profile driven compilation to make the decision.
  • the program code has a main code and a branch code and the compiler decides the instruction scheduling unit for the main code and the branch code as a single decision tree using guarded operations if the processing load of executing the branch code is less than a threshold limit. If the processing load of executing the branch code is greater than a threshold limit, the compiler decides the instruction scheduling units for the main code and the branch code as two separate decision trees in which case the branch code has a separate decision tree.
  • One object of the present invention is to select optimally between guarded operations or a dedicated decision tree when a conditional execution is required in the program code.
  • Another object of the present invention is to help the programmer to have an optimized program code by doing manual optimization.
  • Another object of the present invention is to reduce the overhead of conditional code branching in a program code.
  • FIG. 1 illustrates the compilation method of a program code in a digital device, in a profile driven compilation.
  • FIG. 2 illustrates the structure of the program source code which contains a main code section and a branch code section.
  • FIG. 3 illustrates the structure of the scheduling units of a program code where the branch code and main code belong to the same decision tree.
  • FIG. 4 illustrates the structure of the scheduling units of a program code, where the branch code and the main code belong to separate decision trees.
  • FIG. 5 illustrates the decision block representing the condition to be verified for compiler to decide whether to have single decision tree or multiple decision trees for the identified sections in the program code.
  • the present invention provides a method for optimizing the execution of program code by providing additional intelligence to the compiler.
  • numerous specific details are set forth in order to provide a more thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known features have not been described in detail in order to avoid obscuring the present invention.
  • FIG. 1 illustrates the compilation method of a program code in a digital device, in a profile driven compilation.
  • a preliminary compilation of the program code is executed for selecting the optimal scheme during the compilation of the program code 101.
  • the different sections of the program code are identified by the compiler.
  • the compiler then identifies the main code and the branch codes in the program code 102, 103.
  • VLIW very long instruction words
  • BCLD branch code load
  • IMCLD increased main code load
  • a condition has to be verified so that the compiler can make a wise decision whether to have single decision tree or multiple decision trees for the identified sections in the program code.
  • the condition is explained below.
  • a threshold limit is determined by taking the product of IMCLD and NME. If the probability of execution of the branch code is low, then the corresponding total processing load (hereinafter termed as 'processing load') of the branch code will also be low.
  • the processing load of execution of the branch code is determined by taking the product of BCLD and NBE. If the processing load of executing the branch code is less than a threshold, then the additional load created due to a separate decision tree for branching is less compared to the load created by using single decision tree with guarding 108.
  • FIG. 2 illustrates the structure of a typical program source code 201.
  • This program source code 201 contains a main code section 202 and a branch code section 203.
  • the branch code section 203 is a conditional code section in the main code section 202.
  • the instruction scheduler of the compiler have options including (i) form a single decision tree for the entire code in the "main code” section 202 including the "branch_code” 203 using guarding operations for the branch code 203 (ii) form a separate decision tree for the "branch code” 203 other than the "main code” decision tree.
  • FIG. 3 illustrates the structure of the scheduling units in a program code
  • conditional code section is considered as a guarded operation, where the branch code section 303 and the main code section 302 (corresponding to the main code
  • the branch code 303 or conditional code section mainly contains "IF THEN" and "IF
  • VLIWm and VLIWb in FIG.2 are defined as follows.
  • VLIWm is an abbreviated form for the VLIW instructions in the main code 302 and
  • VLIWb is an abbreviated form for the VLIW instructions in the branch code 303.
  • FIG. 4 illustrates the structure of the scheduling units of a program code, where the branch code is separated from the main decision tree 401 (corresponding to the main code 202 in the source code 201 as in FIG. T). I.e. the main code and branch code belong to separate decision trees 401 and 402 respectively.
  • This figure relates to the case where the program code has a main code and a branch code and the compiler decides the instruction scheduling units for the main code and the branch code as two separate decision trees in which case the branch code has a separate decision tree 402.
  • the branch code 402 (corresponding to the branch code 203 in the source code 201 as in FIG. 2) or conditional code section mainly contains "IF THEN" and "IF ELSE" conditional statements.
  • VLIWm and VLIWb in FIG. 4 are defined as follows.
  • VLIWm is an abbreviated form for the VLIW instructions in the main code 401 and
  • VLIWb is an abbreviated form for the VLIW instructions in the branch code 402.
  • VLIWm the number of VLIW instructions in the main code 201 (as in FIG.2) when the branch code 203 and main code 202 belong to the same decision tree (as in FIG. 3) is greater than the number of VLIW instructions in the main code 401 (as in FIG.4) when a separate decision tree is assigned to the main code 202 and branch code 203 during compilation (as in FIG. 4). This contributes to the increased main code load (IMCLD).
  • IMCLD main code load
  • FIG. 5 illustrates the decision block representing the condition to be verified for compiler to decide whether to have single decision tree or multiple decision trees for the identified sections in the program code 501.
  • the compiler decides whether to have single decision tree or multiple decision trees by using the following condition.
  • BCLD*NBE ⁇ IMCLD*NME then go for two different trees for the main code and branch code. If BCLD*NBE > IMCLD *NME, then go for single decision tree (with guarded operation). If the processing load of executing the branch code is less than a threshold, then the additional load created due to a separate decision tree for branching is less compared to the load created by using single decision tree with guarding. In this case it will be logical for the compiler to create a new decision tree for the branch code.

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

The present invention discloses a compilation method of a program code in a digital device in a profile driven compilation. An approach for optimizing the execution of program code by providing additional intelligence to the compiler is provided, where the compiler decides whether to have single decision tree with guarded operations or multiple decision trees. The method of this invention is helpful, in reducing the overhead of conditional code branching to have an optimised program code, both in compiler driven optimisations and in manual optimisations by the programmer.

Description

OPTIMIZED COMPILATION METHOD DURING CONDITIONAL BRANCHING
This invention generally relates to computer systems, and more specifically relates to compilers that generate executable program code for computer systems.
Since the dawn of the computer age, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Dramatic advances in both hardware and software (e.g., computer programs) have drastically improved the performance of computer systems. Modern software has become very complex when compared to early computer programs. The execution time (and hence, performance) of a computer program is very closely related to the number of instructions that are executed as the computer program runs. Thus, as the size and complexity of computer programs increase, the execution time of the computer program increases as well.
Unlike early computer programs, modern computer programs are typically written in a high-level language that is easy to understand by a human programmer. Special software tools known as compilers take the human-readable form of a computer program, known as "source code", and convert it into
"machine code" or "object code" instructions that may be executed by a computer system. Because a compiler generates the stream of machine code instructions that are eventually executed on a computer system, the manner in which the compiler converts the source code to object code affects the execution time of the computer program code.
The execution time of a computer program, especially complex computer programs, is a function of the arrangement and type of instructions within the computer program. Loops affect the execution time of a computer program. If a computer program contains many loops, or contains any loops that are executed a relatively large number of times, the time spent for executing loops will significantly impact the execution time of a computer program.
An essential element for performance in VLIW architectures is the instruction scheduler of the compiler. The instruction scheduler is responsible for translating the sequential code produced by the core compiler into very long instruction word (VLIW) instructions each containing independent operations that are issued in parallel by the VLIW. Instruction schedulers operate on basic blocks termed as scheduling units. Decision trees and guarded decision trees are examples of scheduling units.
In order to optimize the performance of modern computer programs, profilers have been developed to predict and/or measure the run-time performance of a computer program. Profilers typically generate profile data that estimates how often different portions of the computer program are executed. Using profile data, an optimizer (such as an optimizing compiler) may make decisions to optimize loops in a computer program in order to improve the execution speed of the computer program.
Patent application number WO2003003195A1 discloses a profile driven compilation method which allows compiler to make intelligent trade-off decisions. It is been deployed in compilers of very long instruction word (VLPW) processors for predicting the branch target of a program. However, in these known methods the compiler needs to be guided for doing the optimal selection between guarded operations or a dedicated decision tree when a conditional execution is required in the program code. Hence, there exists an unsatisfied need for an improved compilation method of deciding between guarded operations or a decision tree when a conditional execution is required in the program code.
The present invention discloses a compilation method of a program code in a digital device in a profile driven compilation. An approach for optimizing the execution of program code by providing additional intelligence to the compiler is provided. The present invention provides an approach for conditional branching, which is based on the information provided to the compiler to either use guarding instructions or a separate decision tree. Sections of the code, which are called 'hot spots' , are identified in a first compile-run (compile-execute) stage of profile driven compilation, and an overhead estimation is carried out to determine whether to have an additional decision tree or guarded operation on the identified conditional code branches. This information will be provided as an input to the last stage of the profile-driven compilation
A preliminary compilation stage of the profile driven compilation is carried out to identify the different sections of the program code. The main code and branch codes are identified at this stage. The branch code load (BCLD) and increased main code load (IMCLD) are also determined where BCLD is defined as the number of very long instruction words (VLIW) including the jump instructions in the branch codes. The IMCLD is defined as the additional load created due to the introduction of guarding operations for incorporating the branch code into the decision tree corresponding to the main loop. Upon estimating the aforementioned parameters, the frequency of execution of branch codes (NBE) as well as the frequency of execution of main codes (NME) is also estimated during the run (execution) stage of the profile driven compilation. If the probability of executing the branch code is low, then the corresponding processing load, where the processing load of the branch code is determined by taking the product of BCLD and NBE, will also be low. If the branch code processing load is less than a threshold, then the additional processing load created due to a separate decision tree for branching is less compared to the load created by using single decision tree with guarding. The threshold limit is determined by taking the product of IMCLD and NME. The values of NBE and NME are fed into the compiler after first run. So the compiler makes a wise decision whether to have single decision tree or multiple decision trees for hot spots in the program code. A hot spot is defined as the different sections of the program code which account for considerable amount of processing load and hence are suitable candidates for optimisation. After identifying the hot spots in the program which have conditional code, the compiler has to verify the aforementioned condition in the profile driven compilation to make the decision.
In an embodiment of the present invention, the program code has a main code and a branch code and the compiler decides the instruction scheduling unit for the main code and the branch code as a single decision tree using guarded operations if the processing load of executing the branch code is less than a threshold limit. If the processing load of executing the branch code is greater than a threshold limit, the compiler decides the instruction scheduling units for the main code and the branch code as two separate decision trees in which case the branch code has a separate decision tree.
One object of the present invention is to select optimally between guarded operations or a dedicated decision tree when a conditional execution is required in the program code.
Another object of the present invention is to help the programmer to have an optimized program code by doing manual optimization.
Another object of the present invention is to reduce the overhead of conditional code branching in a program code. The above summary of the present invention is not intended to describe each disclosed embodiment of the present invention. The figures and detailed description that follow provide additional aspects of the present invention.
FIG. 1 illustrates the compilation method of a program code in a digital device, in a profile driven compilation.
FIG. 2 illustrates the structure of the program source code which contains a main code section and a branch code section.
FIG. 3 illustrates the structure of the scheduling units of a program code where the branch code and main code belong to the same decision tree.
FIG. 4 illustrates the structure of the scheduling units of a program code, where the branch code and the main code belong to separate decision trees.
FIG. 5 illustrates the decision block representing the condition to be verified for compiler to decide whether to have single decision tree or multiple decision trees for the identified sections in the program code.
The present invention provides a method for optimizing the execution of program code by providing additional intelligence to the compiler. In the following description, numerous specific details are set forth in order to provide a more thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known features have not been described in detail in order to avoid obscuring the present invention.
FIG. 1 illustrates the compilation method of a program code in a digital device, in a profile driven compilation. A preliminary compilation of the program code is executed for selecting the optimal scheme during the compilation of the program code 101. In this preliminary compilation the different sections of the program code are identified by the compiler. The compiler then identifies the main code and the branch codes in the program code 102, 103.
Upon the execution of the preliminary compilation stage, the number of very long instruction words (VLIW) including the jump instructions in the branch codes is determined. This number of VLIW, including the jump instructions, is referred to as branch code load (BCLD) 104. The frequency of execution of the branch codes during the execution of the preliminary compilation (NBE) and the frequency of execution of the main code during the execution of the preliminary compilation (NME) are determined 105 and 107. The increased main code load (IMCLD), which is the additional load created by using a single decision tree for the guarding operation, is also determined 106.
A condition has to be verified so that the compiler can make a wise decision whether to have single decision tree or multiple decision trees for the identified sections in the program code. The condition is explained below. A threshold limit is determined by taking the product of IMCLD and NME. If the probability of execution of the branch code is low, then the corresponding total processing load (hereinafter termed as 'processing load') of the branch code will also be low. The processing load of execution of the branch code is determined by taking the product of BCLD and NBE. If the processing load of executing the branch code is less than a threshold, then the additional load created due to a separate decision tree for branching is less compared to the load created by using single decision tree with guarding 108.
This condition is applied in compile-run-recompile scenario where NBE and NME could be an input to the compiler after first run. So the compiler can make a wise decision whether to have single decision tree or multiple decision trees for the identified sections in the program code. After identifying these sections in the program code, the compiler has to verify the above-mentioned condition in the profile driven compilation to make the decision.
FIG. 2 illustrates the structure of a typical program source code 201. This program source code 201 contains a main code section 202 and a branch code section 203. The branch code section 203 is a conditional code section in the main code section 202. During compilation, the instruction scheduler of the compiler have options including (i) form a single decision tree for the entire code in the "main code" section 202 including the "branch_code" 203 using guarding operations for the branch code 203 (ii) form a separate decision tree for the "branch code" 203 other than the "main code" decision tree.
FIG. 3 illustrates the structure of the scheduling units in a program code
201 (as in FIG. T) where the branch code and main code belong to the same decision tree 301. This figure relates to the case where the branch code 303
(corresponding to the branch code 203 in the source code 201 as in FIG. T) or conditional code section is considered as a guarded operation, where the branch code section 303 and the main code section 302 (corresponding to the main code
202 in the source code as in FIG. 2) belong to the same decision tree 301. The branch code 303 or conditional code section mainly contains "IF THEN" and "IF
ELSE" conditional statements. The VLIW instructions VLIWm and VLIWb in FIG.2 are defined as follows. VLIWm is an abbreviated form for the VLIW instructions in the main code 302 and VLIWb is an abbreviated form for the VLIW instructions in the branch code 303.
FIG. 4 illustrates the structure of the scheduling units of a program code, where the branch code is separated from the main decision tree 401 (corresponding to the main code 202 in the source code 201 as in FIG. T). I.e. the main code and branch code belong to separate decision trees 401 and 402 respectively. This figure relates to the case where the program code has a main code and a branch code and the compiler decides the instruction scheduling units for the main code and the branch code as two separate decision trees in which case the branch code has a separate decision tree 402. The branch code 402 (corresponding to the branch code 203 in the source code 201 as in FIG. 2) or conditional code section mainly contains "IF THEN" and "IF ELSE" conditional statements. The VLIW instructions VLIWm and VLIWb in FIG. 4 are defined as follows. VLIWm is an abbreviated form for the VLIW instructions in the main code 401 and VLIWb is an abbreviated form for the VLIW instructions in the branch code 402.
When the compiler tries to accommodate the branch code 203 in one decision tree (as in FIG. 3), then it has to execute some guarded operation which will normally increase the number of VLIW instructions in the main loop i.e. "VLIWm". This implies that the number of VLIW instructions in the main code 201 (as in FIG.2) when the branch code 203 and main code 202 belong to the same decision tree (as in FIG. 3) is greater than the number of VLIW instructions in the main code 401 (as in FIG.4) when a separate decision tree is assigned to the main code 202 and branch code 203 during compilation (as in FIG. 4). This contributes to the increased main code load (IMCLD).
FIG. 5 illustrates the decision block representing the condition to be verified for compiler to decide whether to have single decision tree or multiple decision trees for the identified sections in the program code 501.
The compiler decides whether to have single decision tree or multiple decision trees by using the following condition.
If BCLD*NBE < IMCLD*NME, then go for two different trees for the main code and branch code. If BCLD*NBE > IMCLD *NME, then go for single decision tree (with guarded operation). If the processing load of executing the branch code is less than a threshold, then the additional load created due to a separate decision tree for branching is less compared to the load created by using single decision tree with guarding. In this case it will be logical for the compiler to create a new decision tree for the branch code.

Claims

CLAIMSWhat is claimed is:
1. A compilation method of a program code in a digital device, wherein said program code comprises a main code and a branch code, in a profile driven compilation, comprising the steps of:
determining a branch code load of the branch code, wherein said branch code load comprises a number of very long instruction words, wherein the very long instruction words comprises jump instructions in the branch codes;
determining a frequency of execution of the branch code during the execution of the preliminary compilation, wherein said preliminary compilation is first stage of said profile driven compilation;
determining an increased main code load, wherein said increased main code load comprises an additional load created by using a single decision tree with guarding operation;
determining a frequency of execution of said main code during execution of the preliminary compilation; and
deciding whether the processing load of executing the branch code is less than a threshold limit and, if so, creating a separate decision tree for the branch code.
deciding whether the processing load of executing the branch code is greater than a threshold limit and, if so, using guarding operations to incorporate the branch code as part of the decision tree of the main code.
2. The method of claim 1, wherein said processing load of executing the branch code is determined by a product of the branch code load and said frequency of execution of the branch code of the preliminary compilation
3. The method of claim 1, whereby a compiler deciding between guarded operations or a separate decision tree for the execution of the branch code.
4. The method of claim 1, wherein said threshold limit is determined by a product of the increased main code load and the frequency of execution of the main code during preliminary compilation.
5. The method of claim 1, wherein the branch code comprises conditional instructions in the program code.
6. The method of claim 1, wherein said digital device comprises a computer and the program code comprises a computer program code.
7. The method of claim 1, wherein the frequency of execution of the branch code and the frequency of execution of the main code is fed into a compiler after an execution of the preliminary compilation.
8. The method of claim 1, wherein said method is applied to a compiler chain of a plurality of very long instruction word processors.
PCT/IB2007/050594 2006-03-02 2007-02-24 Optimised profile-driven compilation method for conditional code for a processor with predicated execution WO2007099484A2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008556892A JP2009528611A (en) 2006-03-02 2007-02-24 Optimized compilation method during conditional branching
EP07713174A EP1994467A2 (en) 2006-03-02 2007-02-24 Optimized compilation method during conditional branching
US12/281,371 US20090019431A1 (en) 2006-03-02 2007-02-24 Optimised compilation method during conditional branching

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US77883506P 2006-03-02 2006-03-02
US60/778,835 2006-03-02

Publications (2)

Publication Number Publication Date
WO2007099484A2 true WO2007099484A2 (en) 2007-09-07
WO2007099484A3 WO2007099484A3 (en) 2007-11-22

Family

ID=38227834

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2007/050594 WO2007099484A2 (en) 2006-03-02 2007-02-24 Optimised profile-driven compilation method for conditional code for a processor with predicated execution

Country Status (5)

Country Link
US (1) US20090019431A1 (en)
EP (1) EP1994467A2 (en)
JP (1) JP2009528611A (en)
CN (1) CN101395581A (en)
WO (1) WO2007099484A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150277878A1 (en) * 2012-09-25 2015-10-01 Facebook, Inc. Decision Tree Ensemble Compilation

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9038048B2 (en) 2010-07-22 2015-05-19 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for protecting applications from races
US9454460B2 (en) * 2010-07-23 2016-09-27 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for providing determinism in multithreaded programs
US8533698B2 (en) * 2011-06-13 2013-09-10 Microsoft Corporation Optimizing execution of kernels
US10042849B2 (en) 2014-09-22 2018-08-07 Oracle Financial Services Software Limited Simplifying invocation of import procedures to transfer data from data sources to data targets
CN105184163A (en) * 2015-08-31 2015-12-23 小米科技有限责任公司 Security protection method and apparatus for software system
CN109240793A (en) * 2017-05-16 2019-01-18 龙芯中科技术有限公司 Recognition methods, device, electronic equipment and the storage medium of hot-spots
KR102663196B1 (en) 2018-11-16 2024-05-07 삼성전자주식회사 User terminal device, server, control method of user terminal device and control method of server

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06259262A (en) * 1993-03-08 1994-09-16 Fujitsu Ltd Method and device for processing compiler for setting branch probability
US6581131B2 (en) * 2001-01-09 2003-06-17 Hewlett-Packard Development Company, L.P. Method and apparatus for efficient cache mapping of compressed VLIW instructions
US7447886B2 (en) * 2002-04-22 2008-11-04 Freescale Semiconductor, Inc. System for expanded instruction encoding and method thereof
JP2006520034A (en) * 2003-02-20 2006-08-31 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Conversion of a series of computer instructions
US7669041B2 (en) * 2006-10-06 2010-02-23 Stream Processors, Inc. Instruction-parallel processor with zero-performance-overhead operand copy

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
AUGUST D I ET AL: "A framework for balancing control flow and predication" PROCEEDINGS OF THE 30TH ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE. MICRO-30. RESEARCH TRIANGLE PARK, NC, DEC. 1 - 3, 1997, PROCEEDINGS OF THE ANNUAL INTERNATIONAL SYMPOSIUM ON MICROARCHITEC TURE, LOS ALAMITOS, CA : IEEE COMPUTER SO, vol. 30TH CONF, 1 December 1997 (1997-12-01), pages 92-103, XP010261287 ISBN: 0-8186-7977-8 *
HAZELWOOD K M ET AL: "A lightweight algorithm for dynamic if-conversion during dynamic optimization" PARALLEL ARCHITECTURES AND COMPILATION TECHNIQUES, 2000. PROCEEDINGS. INTERNATIONAL CONFERENCE ON PHILADELPHIA, PA, USA 15-19 OCT. 2000, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 15 October 2000 (2000-10-15), pages 71-80, XP010526030 ISBN: 0-7695-0622-4 *
HOOGERBRUGGE J: "Dynamic branch prediction for a VLIW processor" PARALLEL ARCHITECTURES AND COMPILATION TECHNIQUES, 2000. PROCEEDINGS. INTERNATIONAL CONFERENCE ON PHILADELPHIA, PA, USA 15-19 OCT. 2000, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 15 October 2000 (2000-10-15), pages 207-214, XP010526043 ISBN: 0-7695-0622-4 *
JAN HOOGERBRUGGE AND LEX AUGUSTEIJN: "Instruction Scheduling for TriMedia" THE JOURNAL OF INSTRUCTION-LEVEL PARALLELISM, [Online] vol. 1, February 1999 (1999-02), XP002445332 Retrieved from the Internet: URL:http://www.jilp.org/vol1/v1paper1.pdf> [retrieved on 2007-08-02] *
LEUPERS R: "Exploiting conditional instructions in code generation for embedded VLIW processors" DESIGN, AUTOMATION AND TEST IN EUROPE CONFERENCE AND EXHIBITION 1999. PROCEEDINGS MUNICH, GERMANY 9-12 MARCH 1999, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 9 March 1999 (1999-03-09), pages 105-109, XP010329391 ISBN: 0-7695-0078-1 *
MANTRIPRAGADA S ET AL: "Selective guarded execution using profiling on a dynamically scheduled processor" INNOVATIVE ARCHITECTURE FOR FUTURE GENERATION HIGH-PERFORMANCE PROCESSORS AND SYSTEMS, 1999. INTERNATIONAL WORKSHOP MAUI, HI, USA 1-3 NOV. 1999, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 1 November 1999 (1999-11-01), pages 15-22, XP010529784 ISBN: 0-7695-0650-X *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150277878A1 (en) * 2012-09-25 2015-10-01 Facebook, Inc. Decision Tree Ensemble Compilation
US9678730B2 (en) * 2012-09-25 2017-06-13 Facebook, Inc. Decision tree ensemble compilation

Also Published As

Publication number Publication date
CN101395581A (en) 2009-03-25
US20090019431A1 (en) 2009-01-15
WO2007099484A3 (en) 2007-11-22
JP2009528611A (en) 2009-08-06
EP1994467A2 (en) 2008-11-26

Similar Documents

Publication Publication Date Title
US20090019431A1 (en) Optimised compilation method during conditional branching
KR101523020B1 (en) Combined branch target and predicate prediction
US8522220B2 (en) Post-pass binary adaptation for software-based speculative precomputation
Marcuello et al. Thread-spawning schemes for speculative multithreading
CN111177733B (en) Software patch detection method and device based on data flow analysis
US7765342B2 (en) Systems, methods, and computer program products for packing instructions into register files
US7458065B2 (en) Selection of spawning pairs for a speculative multithreaded processor
US7428731B2 (en) Continuous trip count profiling for loop optimizations in two-phase dynamic binary translators
Fu et al. Value speculation scheduling for high performance processors
US20170123797A1 (en) Hardware-based run-time mitigation of conditional branches
US20150154021A1 (en) Control of switching between execution mechanisms
US20080155496A1 (en) Program for processor containing processor elements, program generation method and device for generating the program, program execution device, and recording medium
US20130232471A1 (en) Method and Apparatus for Assessing Software Parallelization
CN106325963B (en) Self-adaptive dynamic compiling and scheduling method and device
RU2206119C2 (en) Method for producing object code
CN112540764A (en) Coding optimization method for conditional branch prediction direction transformation
Wang et al. Prophet synchronization thread model and compiler support
CN107239260B (en) Multi-predicate control and compiling optimization method for digital signal processor
CN112445520B (en) Branch prediction optimization method for conditional branch instructions in loop
KR100655275B1 (en) Compiling method for conditional branch instruction
JP2005516301A (en) Instruction execution method
US10042645B2 (en) Method and apparatus for compiling a program for execution by a plurality of processing units
Ghandour et al. Position Paper: Leveraging Strength-Based Dynamic Slicing to Identify Control Reconvergence Instructions
Penagos Deep: Dependency Elimination Using Early Predictions
Asokan et al. Providing time-and space-efficient procedure calls for asynchronous software thread integration

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2007713174

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2008556892

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 200780007426.8

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 12281371

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE