WO2008072334A1 - コンパイル方法及びコンパイラ - Google Patents
コンパイル方法及びコンパイラ Download PDFInfo
- Publication number
- WO2008072334A1 WO2008072334A1 PCT/JP2006/324966 JP2006324966W WO2008072334A1 WO 2008072334 A1 WO2008072334 A1 WO 2008072334A1 JP 2006324966 W JP2006324966 W JP 2006324966W WO 2008072334 A1 WO2008072334 A1 WO 2008072334A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- processing block
- processing
- scheduler
- statement
- block
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/458—Synchronisation, e.g. post-wait, barriers, locks
Definitions
- the present invention relates to a compiling method and a conoiler, and more particularly to a compiling method and a conoiler that automatically generates an execution code of software on an embedded device.
- FIG. 1 is a diagram showing a configuration of a conventional compiler that generates an execution code of software on an embedded device.
- the compiler shown in Fig. 1 optimizes the executable code in order to efficiently execute the embedded device software as a single application.
- the compiler shown in FIG. 1 has a translation device (front end) 2, an optimization device (middle path) 4, and a code generation device (back end) 5.
- Front end 2 generates intermediate language 3-1 from source code 1
- middle path 4 generates intermediate language 3-2 from intermediate language 3-1.
- Knock end 5 generates optimized execution code 6 from intermediate language 3-2.
- simple restructuring restructuring
- simple restructuring such as deletion of unnecessary variables, packing of instructions, and inline expansion of calling functions is performed in the middle path 4.
- FIG. 2 is a diagram for explaining a delay in time series processing (sequential processing).
- P1 to P4 indicate processes
- tl is a start condition judgment time
- t2 is a process
- P 3 is the actual end time of process P
- t4 is the actual end time of process P
- t5 is the expected end time of process P3.
- the actual end time t4 of the process P4 is later than the expected end time t3 of the process P4, and the delay D1 occurs.
- FIG. 3 is a diagram for explaining avoidance of delay in time series processing.
- P3y and P4y are the y-th processes
- P4 and P4z are the z-th processes
- P4 and t2y are the actual end times of the processes
- P3 y and t3y is the expected end time of the processes
- P4y T5y is the expected end time of process P3y.
- FIG. 4 is a diagram showing an image of a conventional dynamic scheduler.
- 11 is a task or thread
- 12 is an execution information table reported from the task or thread
- 13 is a dynamic scheduler that performs scheduling based on the information table
- 14 is within the operating system (OS) 16.
- Context switch of 'Process management function, 15 indicates a switch under the direction of the dynamic scheduler 13.
- the dynamic scheduler 13 shown in FIG. 4 provides a dynamic profiling function to the application, so that memory and CPU Report usage to OS16 as needed.
- the dynamic scheduler 13 dynamically defines the priority of the task or thread 11 with reference to the information table 12 of the constantly collected information, and the OS 16 context switch. I do.
- the dynamic scheduler 13 for efficiently executing a plurality of tasks or threads 11 is software that operates differently from an application linked with the OS 16, that is, an external (or external) scheduler. It is. For this reason, from the viewpoint of the amount of CPU computation required by the target software, such a dynamic scheduler 13 is regarded as pure overhead.
- the static scheduler focuses on branch instructions at the time of control, and uses branch instruction power to jump to dependent processing memory and CPU usage. Therefore, scheduling is determined at the time of connec- tion based on a probable information table multiplied by a branch prediction coefficient.
- the static scheduler has a smaller overhead for execution scheduling than the dynamic scheduler that performs optimal processing dynamically, but has a structure in which the amount of computation and the amount of data handled change with each execution. With this software, scheduling accuracy is reduced and processing time is not always the shortest. For this reason, static schedulers are generally
- Patent Document 1 and Patent Document 2 propose dynamic schedulers.
- a multi-level scheduler is proposed in Patent Document 2, for example.
- Patent Document 1 Japanese Patent Laid-Open No. 6-110688
- Patent Document 2 Japanese Patent Laid-Open No. 2003-84989
- Patent Document 3 Japanese Patent Laid-Open No. 8-212070
- the scheduler is activated in the case of a software configuration in which a code optimization level without restructuring is activated, or a software configuration in which multiple tasks or threads are activated. Is done.
- an object of the present invention is to realize a compiling method and a compiler that can efficiently generate an execution code of software even in a limited software execution environment.
- the above-described problem is a compiling method for compiling software that outputs intermediate results at a predetermined timing and that is processed in a time series by a computer, and the source of the software by the computer
- the above-described problem is a compiler that outputs intermediate results at a predetermined timing by a computer and compiles software that is processed in time series.
- a front end that translates the source code of the software into a first intermediate language by a computer and stores it in a storage unit; and the source code based on the first intermediate language stored in the storage unit by the computer
- a middle path that extracts processing blocks related to parallelism and conditional branching from the processing sequence included in the processing sequence, restructures the extracted processing blocks, generates a second intermediate language, and stores it in the storage unit; and
- This can be achieved by a compiler comprising a back end that automatically generates an execution code based on the second intermediate language stored in the storage unit.
- FIG. 1 is a diagram showing a configuration of a conventional compiler.
- FIG. 2 is a diagram for explaining a delay in time series processing.
- FIG. 3 is a diagram for explaining avoidance of delay in time series processing.
- FIG. 4 is a diagram showing an image of a conventional dynamic scheduler.
- FIG. 5 is a diagram showing a configuration of an embodiment of a compiler of the present invention.
- FIG. 6 is a diagram for explaining the classification of source codes constituting software.
- FIG. 7 is a diagram illustrating an example of a dependency graph expressing a dependency relationship between statements.
- FIG. 8 is a diagram showing an example in which the processing order is changed based on the dependency graph of FIG.
- FIG. 9 is a diagram showing an example of a software flow configuration.
- FIG. 10 is a flowchart showing a first stage process of the embodiment.
- FIG. 11 is a diagram for explaining redefinition of an unconditional jump and loop processing block as an operation substitution processing block.
- FIG. 12 is a diagram for explaining redefinition between operation substitution processing blocks.
- FIG. 13 is a diagram for explaining redefinition of a thread processing block and a scheduler processing block.
- FIG. 14 is a diagram for explaining a thread processing block and a scheduler processing block.
- FIG. 15 is a flowchart showing a second stage process of the embodiment.
- FIG. 16 is a diagram for explaining a method for adding a statement to a thread processing block.
- FIG. 17 is a diagram for explaining a method of adding a statement to a scheduler processing block
- FIG. 18 is a diagram for explaining timer processing of the outermost scheduler processing block.
- FIG. 20 is a diagram showing an image of a timing chart during operation of the example.
- FIG. 21 is a diagram comparing timing chart images of the conventional method of FIG. 2 and an example.
- FIG. 22 is a diagram illustrating an image of a scheduler processing block according to an embodiment.
- FIG. 23 is a diagram showing the measurement results of resource utilization efficiency when compiling an actual program for the conventional method and the embodiment.
- the source code that is the source of the execution target software can be analyzed and classified at the intermediate language level of the compiling process, and can be processed in parallel (simultaneously) from the extracted processing block modules.
- unnecessary external statements (codes) can be deleted, and a dedicated scheduler for the target software can be realized by restructuring.
- FIG. 5 is a diagram showing the configuration of an embodiment of the conoiler of the present invention.
- This embodiment of the compiler employs an embodiment of the compiling method of the present invention.
- the present invention is applied when generating an execution code of software on an embedded device.
- the embedded device is a computer (or computer system) having a known hardware configuration that includes a processor such as a CPU and a storage unit such as a memory, and the processor executes a program stored in the storage unit.
- the compiler shown in FIG. 5 optimizes the execution code in order to efficiently execute the software of the embedded device as a single application.
- the compiler shown in FIG. 5 has a translation device (front end) 32, an optimization device (middle path) 34, and a code generation device (back end) 35.
- the front end 32 generates the intermediate language 33-1 from the source code 31 and stores it in the storage unit
- the middle path 34 generates the intermediate language 33-2 from the intermediate language 33-1 stored in the storage unit and stores it in the storage unit. save.
- Backend 35 stored in storage
- the optimized execution code 36 is generated from the intermediate language 33-2 and stored in the storage unit as necessary.
- simple restructuring such as deleting unnecessary variables, packing instructions, and inline expansion of calling functions in the middle path 34 is performed.
- the front end 32 and back end 35 are simple translation devices, and do not actively optimize execution code. If the execution code is not optimized, the middle path 34 is not used because the back end 35 directly decodes the intermediate language 33-1 generated by the front end 32 and generates the
- the processing sequence indicated by the source code is converted into an execution code that can be interpreted by an arithmetic device (processor) such as a CPU.
- processor arithmetic device
- more efficient execution code is generated by general-purpose optimization methods such as deleting non-propagating variables and mathematical statements, inline expansion of subroutines, or unrolling processing that expands loops in units of iterations. To do.
- the present embodiment is characterized by an efficient execution code generation method incorporated in the middle path 34.
- the middle path 34 shown in Fig. 5 receives the intermediate language 33-1 as input, and performs restructuring according to the following procedure to generate the intermediate language 32-2. Restructuring at the intermediate language 33-1 level. For this reason, the front end 32 and the backend 35 can be used without modification, and the middle path 34 can be incorporated in an existing compiler for general use.
- FIG. 6 is a diagram for explaining the classification of the source code 31 constituting the software.
- Figure 6 shows the case where the source code 31 that composes the software is classified at the statement level.
- the processing category psl indicates that the operation is an assignment process that assigns the result of the operation to a storage unit such as a memory or a register.
- the process section P s2 indicates a loop process indicated by a jump instruction including a back edge, that is, a back edge jump.
- Process category ps3 indicates that the branch process is indicated by a conditional branch or conditional jump instruction.
- Processing category ps4 indicates a subroutine or function call, and indicates an unconditional jump instruction.
- restructuring is performed by focusing on an intermediate language 33-1 having an arbitrary configuration. Therefore, it does not matter where general-purpose optimization processing is performed, but since the loop structure is used as it is, loop optimization methods such as unrolling methods are not applied before restructuring.
- the compiler always has a variable table when generating the intermediate language 33-2, and each statement of the intermediate language 33-2 is numbered in ascending order, and the variable to be referenced (the right side of the expression) And a variable to define (the left side of the expression).
- the set of reference variables of S X is expressed by (Expression 1)
- the set of definition variables of Sx is expressed by (Expression 2).
- Equation 1 and (Equation 2) also apply to the aggregated statement group SG, and define (Equation 3) and (Equation 4) in the same way for the yth statement group SGy.
- empty set is used as an expression when there are no variables to be defined and referenced.
- Equation 8 is defined as an expression expressing that Sm and Sn are positive direction dependent ⁇ .
- Expression 11 is defined as an expression that expresses that Sm and Sn are output-dependent ⁇ 0.
- Equation 8 (Equation 8), (Equation 9), and (Equation 11) are generally called dependency equations, and by deriving (Equation 1) and (Equation 2) for all statements, the dependency of each statement is determined.
- a dependency graph can be created.
- FIG. 7 is a diagram illustrating an example of a dependency graph expressing the dependency relationship of statements.
- Sa to Sf indicate statements.
- the statement Sd refers to the definition result of the statement Sa
- the statement Sd refers to the definition of the variable defined by the statement Sf. Since the definition variable of statement Sb is redefined in statement Sf that will be used everywhere, (Equation 12) is deemed to hold, and statement Sb will be deleted from the code.
- FIG. 8 is a diagram showing an example in which the processing order of statements is changed based on the dependency graph of FIG.
- FIG. 9 is a diagram illustrating an example of a software flow configuration.
- psl to ps4 indicate processing blocks corresponding to the processing of the processing sections psl to ps4 shown in FIG.
- the sequence of statements developed in the intermediate language takes a form in which a processing block ps3 for conditional branching or a processing block ps4 for unconditional jump is sandwiched between processing blocks psl for multiple assignment processing.
- the processing block ps3 for conditional branch and the processing block ps4 for unconditional jump indicate control structures, not data dependence, and the processing flow is considered to be interrupted. Therefore, the processing unit of the middle path 34 shown in FIG.
- FIG. 10 is a flowchart showing the first stage of this embodiment.
- the input is the intermediate language 33-1 and the output is the intermediate language 33-1.
- step Stl the variables defined and referred to are extracted in step Stl, and the dependency graph is defined in step St2. Also unnecessary at step St3 Statement is deleted, and the statement based on the dependency graph is sorted in step St4.
- statement groups are combined and redefined according to the method described later with respect to the statement strings arranged at the intermediate language level.
- the processing blocks classified by the above processing divisions are combined, but general software includes nested loops, nested conditional branches, loops under subroutines, conditional branches, etc. It has a hierarchical structure. For this reason, the operation performed in the second stage of this embodiment is performed in the order of the processing block power of the innermost hierarchy in the nested or nested structure.
- the innermost processing block of the nested or nested structure is always a processing block for arithmetic substitution processing. In the first stage, if a statement that exists in the innermost processing block is deleted by the solution of the dependency equation, the corresponding nested structure is also deleted.
- the processing block of the caller When processing the innermost processing block of a nested or nested structure, the processing block of the caller must be accompanied by a control block such as a conditional branch in the loop processing block (back edge jump). If this is the body of a simple loop, Regroup and redefine as an operation substitution processing block.
- a control block such as a conditional branch in the loop processing block (back edge jump). If this is the body of a simple loop, Regroup and redefine as an operation substitution processing block.
- FIG. 11 is a diagram for explaining redefinition of an unconditional jump and loop processing (back edge jump) processing block as an operation substitution processing block.
- the processing block of the call source is an unconditional jump processing block, it is combined with the unconditional jump processing block of the previous processing section, regrouped, and arithmetic substitution processing Redefine as a block.
- the processing block of the caller is a loop processing (back edge jump) processing block, it is regrouped and redefined as an operation substitution processing block.
- the operation substitution processing blocks may be arranged in a column in the same nested or nested hierarchy.
- the operation substitution processing blocks arranged in a column are combined and redefined as an operation substitution processing block.
- FIG. 12 is a diagram for explaining redefinition between operation substitution processing blocks.
- “assignment operation” indicates an assignment operation processing block
- processing blocks surrounded by a broken line indicate combined processing blocks.
- the processing block of the caller is a processing block for conditional branch processing, that is, if it is true or false of a conditional branch or any subordinate clause, there is no need to perform processing for combining the processing blocks. Redefine this as a threaded processing block.
- FIG. 13 is a diagram for explaining redefinition of the thread processing block and the scheduler processing block. Due to the hierarchical analysis of nested or nested structures, a threaded processing block component is not necessarily a single processing block, and a threaded processing block component is not necessarily an arithmetic substitution processing block.
- the threading processing block and the scheduler processing block are closely related, and the threading processing block is a subordinate clause of the conditional branching force, the threading processing block always includes the scheduler processing block including the corresponding conditional branch. It will be linked.
- FIG. 6 is a diagram for explaining a code processing block and a scheduler processing block.
- 41 is a scheduler processing block that belongs to the highest level in FIG. 14, 42 is a thread processing block that is subordinate to the scheduler processing block 41, and 43 is one layer of the scheduler processing block 41.
- the scheduler processing block included below, 44 is a thread processing block subordinate to the scheduler processing block 43, 45 is a scheduler processing block included one level below the thread processing block 42, and 46 is a scheduler
- Each of the threading processing blocks subordinate to processing block 45 is shown.
- FIG. 15 is a flowchart showing the second stage process of the present embodiment.
- the input is the intermediate language 33-1 and the output is also the intermediate language 33-1.
- step Stll starts processing in order of processing block power of the innermost hierarchy in a nested or nested structure for the code of the program targeted for processing block formation.
- step Stl2 it is determined whether or not the calling process block is a conditional branch process. If the decision result power WES at step Stl2, step Stl3 redefines the subordinate clause of the conditional branch as a thready processing block, and the process returns to step Stll, where the innermost hierarchy in the nested or nested structure The processing block of the next level is started.
- step Stl4 judges whether or not the subsequent processing block follows the conditional branch process, and if the judgment result power SNO, the process goes to step Stll. Return, start processing the processing block of the next layer of the innermost layer in the nested or nested structure. If the subsequent processing block is a conditional branch process and the determination result power is YES in step Stl4, step Stl5 combines these processing blocks and the subsequent processing blocks and redefines them as scheduler processing blocks. After step Stl5, the process returns to step Stll and starts processing the processing block of the next layer of the innermost layer in the nested or nested structure.
- statement groups are combined and redefined according to the method described later with respect to the statement strings arranged at the intermediate language level.
- the processing blocks classified by the above processing divisions are combined, but general software uses nested loops, nested conditional branches, subroutines, etc. It has a hierarchical structure such as loops and conditional branches. For this reason, the operation performed in the second stage of this embodiment is performed in the order of the processing block power of the innermost hierarchy in the nested or nested structure.
- control statements are attached to the scheduler processing block and thread processing block that have been grouped in the second stage, so that the final intermediate between the thread and the scheduler is performed.
- Generate language intermediate code
- conditional branch and the calculation for calculating the condition and the calling of the processing block subordinate thereto are equivalent to the relationship between the dynamic scheduler and the scheduled thread.
- a mechanism that operates in the same manner as the context switch function of a thread is provided in the structure of the scheduler processing block.
- the threading processing block is provided with a mechanism that operates only when requested by the scheduler.
- the following operation is performed on the scheduler processing block and the subordinate thread processing block.
- FIG. 16 is a diagram for explaining a method for adding a statement to the thread processing block.
- the threading processing block 55 is surrounded by a loop, and as shown by 52, a signal is waited for reception at the entrance part (first part) of the loop. Insert an OS service call, such as a wait mechanism to be released.
- the processing blocks that are executed in parallel are expressed by (Equation 8), (Equation 9), and (Equation 11).
- an exclusive control code by semaphore or mutex is inserted.
- the exclusive lock is applied as indicated by 53 and the exclusive lock is released as indicated by 54.
- FIG. 17 is a diagram for explaining a method of adding a statement to the scheduler processing block. is there.
- the scheduler processing block includes conditional branch processing, and the timing at which the conditional branch occurs is considered to be the timing at which the event processing thread 59 is activated (scheduled). Therefore, a statement that issues a signal expected by the subordinate event processing thread 59 (that is, a signal for an event to be activated when the condition A or B is satisfied) as shown in 61 in FIG. Code) and define it as the scheduler processing block 69.
- the scheduler processing block 65 when the scheduler processing block 65 is in a nested structure, the scheduler processing block 65 is activated by the scheduler processing block in its parent hierarchy.
- the scheduling processing block inside the nesting indicated by 45 is the upper level scheduler processing processing block indicated by 41. It will be activated dynamically when the signal is sent from.
- a program written in a general-purpose programming language that mainly outputs time-series processing, that is, an intermediate operation result at a predetermined timing is assumed.
- Such a program generally has a loop structure at the highest level of the program.
- FIG. 18 is a diagram for explaining timer processing of the outermost scheduler processing block.
- the same parts as those in FIG. 17 are denoted by the same reference numerals, and the description thereof is omitted.
- FIG. 19 is a flowchart for explaining the third stage of processing according to the present embodiment.
- the input is the intermediate language 33-1 and the output is the intermediate language 32-2.
- step St21 it is determined whether the processing block to be processed is a threading processing block or a scheduler processing block.
- processing for adding a statement to the threaded processing block in steps St22 to St25 is performed.
- processing for adding a statement to the scheduler processing block in steps St26 to St28 is performed.
- step St22 the threading processing block 55 is surrounded by a loop as indicated by 51 in FIG.
- Step St23 waits to receive a signal at the entrance of the loop as shown at 52 in FIG. 16, and inserts an OS service call such as a wait mechanism that releases (releases) the CPU until the signal is received.
- OS service call such as a wait mechanism that releases (releases) the CPU until the signal is received.
- step St24 processing blocks that are executed in parallel (simultaneously executed) are processed in consideration of the fact that the threaded processing blocks operate in parallel as shown by 53 and 54 in Fig. 16 (Equation 8) and (Equation 9). And based on the dependency equation derived from (Equation 11), it is analyzed to determine whether or not there is a dependency relationship.
- step S25 inputs an exclusive control code by a semaphore or a mutex, and the process ends. On the other hand, the process ends if the decision result in the step St24 is NO.
- Step St26 is a signal expected by the event processing thread 59 dependent on the subordinate clause after the conditional branch as shown by 61 in FIG. 17 (ie, a signal for the event to be operated when the condition A or B is satisfied). Insert a sending mechanism (statement) that issues, and define it as a scheduling block 69.
- step St27 it is determined whether or not the scheduler processing block is the outermost scheduler processing block. If the determination result in step St27 is YES, step St28 incorporates a timer handler and the process ends. On the other hand, the process ends if the decision result power at step St27 is zero.
- each processing block incorporates a mechanism that uses the CPU when necessary, that is, a mechanism that releases the CPU when processing operations are unnecessary, so that CPU resources can be used efficiently. become.
- FIG. 20 is a diagram showing an image of a timing chart during operation of the present embodiment.
- Figure 20 shows the timing of the periodic signal (timer signal) obtained by using the OS timer function, the dynamic scheduler realized by the scheduler processing block, and the event processing threads ET1 and ET2.
- the idea of two-pass compilation can be introduced as an optimization method using a general coniler.
- profiling is performed by actually operating an embedded device etc. based on the execution code generated by the first conn, and the second compilation is performed based on the profiling result. I do.
- the middle path 34 is an intermediate language 33—decipherable by the back end 35 in FIG. 2 is generated, and the compiler generates execution code 36.
- FIG. 21 is a diagram comparing the image of the timing chart of this example with the conventional method of FIG.
- the upper part of FIG. 21 shows the operation timing of this embodiment, and the lower part shows the operation timing of the conventional method of FIG.
- OH1 indicates the overhead caused by a plurality of threads in this embodiment
- R1 indicates the CPU release period in this embodiment.
- the actual end time of the process P3 is slightly later than the end time t2 in the conventional method.
- the power process P4 can be surely ended by the expected end time t3.
- FIG. 22 is a diagram showing an image of the scheduler processing block of this embodiment, that is, the dynamic scheduler.
- 81 is a task or thread
- 82 is an idle state of a CPU
- 83 is a dynamic scheduler that has a context switch function and performs scheduling
- the dynamic scheduler 83 shown in FIG. 22 dynamically performs tasks or threads based on signals from the OS86 timer function 88.
- the priority of 81 is defined, and the switch 85 of the task or thread 81 is performed by the context switch function and the process management function 84 of OS86.
- the source code 31 decomposed into a thread and a timer handler actively releases the CPU to enter the idle state 82, so that unnecessary CPU resources are not used.
- the scheduler processing block constituting the dynamic scheduler 83 is a code originally existing in the source code 31, the overhead caused by a plurality of threads is very small.
- FIG. 23 is a diagram showing measurement results of resource utilization efficiency when the actual program is compiled for the conventional method and the embodiment.
- program PA is the video player software
- program PB is the communication processing software. Air.
- Programs PA and PB are both software based on time-series processing and outputting intermediate results at a predetermined timing.
- Program PC is still image processing software
- program PD is arithmetic operation software.
- Program PC is software that decompresses XGA compressed images.
- Program PD is fluid calculation software that has already been optimized at the source code level by programmers.
- the amount of CPU and memory that is, the amount of resources used is 30 compared to the case of using the conventional method. It was confirmed that it was reduced by around%. In addition, as a secondary effect, it is possible to generate an idle state of the CPU, and it has been confirmed that there is an effect of reducing the power consumption of the CPU.
- the present invention is applicable to various electronic devices having resources such as a CPU and a memory, and is particularly suitable for embedded devices with limited resources.
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
Description
Claims
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2006/324966 WO2008072334A1 (ja) | 2006-12-14 | 2006-12-14 | コンパイル方法及びコンパイラ |
KR1020097011902A KR101085330B1 (ko) | 2006-12-14 | 2006-12-14 | 컴파일 방법 및 컴파일러 |
CNA2006800566376A CN101563673A (zh) | 2006-12-14 | 2006-12-14 | 编译方法以及编译器 |
JP2008549167A JPWO2008072334A1 (ja) | 2006-12-14 | 2006-12-14 | コンパイル方法及びコンパイラ |
EP06834720A EP2093667A4 (en) | 2006-12-14 | 2006-12-14 | COMPILATION METHOD AND COMPILER |
US12/457,441 US20090254892A1 (en) | 2006-12-14 | 2009-06-10 | Compiling method and compiler |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2006/324966 WO2008072334A1 (ja) | 2006-12-14 | 2006-12-14 | コンパイル方法及びコンパイラ |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/457,441 Continuation US20090254892A1 (en) | 2006-12-14 | 2009-06-10 | Compiling method and compiler |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2008072334A1 true WO2008072334A1 (ja) | 2008-06-19 |
Family
ID=39511366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2006/324966 WO2008072334A1 (ja) | 2006-12-14 | 2006-12-14 | コンパイル方法及びコンパイラ |
Country Status (6)
Country | Link |
---|---|
US (1) | US20090254892A1 (ja) |
EP (1) | EP2093667A4 (ja) |
JP (1) | JPWO2008072334A1 (ja) |
KR (1) | KR101085330B1 (ja) |
CN (1) | CN101563673A (ja) |
WO (1) | WO2008072334A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10089088B2 (en) | 2015-06-16 | 2018-10-02 | Fujitsu Limited | Computer that performs compiling, compiler program, and link program |
US10540156B2 (en) | 2016-06-21 | 2020-01-21 | Denso Corporation | Parallelization method, parallelization tool, and in-vehicle device |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2352087A4 (en) | 2008-10-24 | 2012-08-08 | Ibm | PROCESS, SYSTEM AND PROGRAM FOR SOURCE COD PROCESSING |
US8875111B2 (en) * | 2009-04-23 | 2014-10-28 | Microsoft Corporation | Intermediate language representation and modification |
US8689191B2 (en) * | 2010-03-05 | 2014-04-01 | International Business Machines Corporation | Correct refactoring of concurrent software |
US8863128B2 (en) * | 2010-09-30 | 2014-10-14 | Autodesk, Inc | System and method for optimizing the evaluation of task dependency graphs |
US9430204B2 (en) | 2010-11-19 | 2016-08-30 | Microsoft Technology Licensing, Llc | Read-only communication operator |
US9507568B2 (en) | 2010-12-09 | 2016-11-29 | Microsoft Technology Licensing, Llc | Nested communication operator |
US9395957B2 (en) * | 2010-12-22 | 2016-07-19 | Microsoft Technology Licensing, Llc | Agile communication operator |
US8464232B2 (en) * | 2010-12-27 | 2013-06-11 | Aleksandr F. Urakhchin | Compiler compiler system with syntax-controlled runtime and binary application programming interfaces |
US9239732B2 (en) * | 2011-02-16 | 2016-01-19 | Microsoft Technology Licensing Llc | Unrolling aggregation operations in asynchronous programming code having multiple levels in hierarchy |
CN102193812B (zh) * | 2011-06-03 | 2014-03-26 | 深圳市茁壮网络股份有限公司 | 一种代码编译方法、主机及系统 |
KR101277145B1 (ko) * | 2011-12-07 | 2013-06-20 | 한국과학기술연구원 | 공통 표현을 이용한 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체 |
WO2013109860A1 (en) * | 2012-01-18 | 2013-07-25 | Smart Online, Inc. | Software builder |
US9251554B2 (en) | 2012-12-26 | 2016-02-02 | Analog Devices, Inc. | Block-based signal processing |
KR101449657B1 (ko) * | 2013-03-05 | 2014-10-13 | 한국과학기술연구원 | 연산자의 값의 범위를 이용한 중간 언어 변환 방법과 그를 위한 시스템 및 컴퓨터로 읽을 수 있는 기록매체 |
US9298433B2 (en) * | 2013-05-02 | 2016-03-29 | Facebook, Inc. | Optimizing intermediate representation of script code for fast path execution |
JP6287018B2 (ja) * | 2013-10-04 | 2018-03-07 | 富士通株式会社 | 可視化方法、表示方法、情報処理装置、可視化プログラム及び表示プログラム |
CN103699377B (zh) * | 2013-12-04 | 2017-02-01 | 国家电网公司 | 一种对程序代码进行重构操作组合的方法 |
US8978010B1 (en) * | 2013-12-18 | 2015-03-10 | Sap Ag | Pruning compilation dependency graphs |
US20150193358A1 (en) * | 2014-01-06 | 2015-07-09 | Nvidia Corporation | Prioritized Memory Reads |
CN104391733B (zh) * | 2014-12-10 | 2017-11-24 | 华中科技大学 | 一种依据依赖关系动态编译软件包的方法 |
US9830134B2 (en) * | 2015-06-15 | 2017-11-28 | Qualcomm Incorporated | Generating object code from intermediate code that includes hierarchical sub-routine information |
US10558441B2 (en) * | 2018-03-12 | 2020-02-11 | International Business Machines Corporation | Compiler for restructuring code using iteration-point algebraic difference analysis |
US11416228B2 (en) | 2018-09-13 | 2022-08-16 | The University Of Chicago | System and method of optimizing instructions for quantum computers |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06110688A (ja) | 1991-06-13 | 1994-04-22 | Internatl Business Mach Corp <Ibm> | 複数の順序外れ命令を並行処理するためのコンピュータ・システム |
JPH08212070A (ja) | 1994-11-14 | 1996-08-20 | Sun Microsyst Inc | プロセッサ・アーキテクチャにおける分散制御のための装置および方法 |
JP2001282549A (ja) * | 2000-03-30 | 2001-10-12 | Nec Corp | プログラム変換装置及び方法並びに記録媒体 |
JP2003084989A (ja) | 2001-09-12 | 2003-03-20 | Nec Corp | プライオリティ動的制御方式、プライオリティ動的制御方法およびプライオリティ動的制御用プログラム |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5255385A (en) * | 1990-02-26 | 1993-10-19 | Hitachi, Ltd. | Method of testing program, and compiler and program testing tool for the method |
US5347654A (en) * | 1992-02-03 | 1994-09-13 | Thinking Machines Corporation | System and method for optimizing and generating computer-based code in a parallel processing environment |
JPH0736680A (ja) | 1993-07-23 | 1995-02-07 | Omron Corp | 並列化プログラム開発支援装置 |
JP2882475B2 (ja) * | 1996-07-12 | 1999-04-12 | 日本電気株式会社 | スレッド実行方法 |
JPH10228382A (ja) * | 1997-02-14 | 1998-08-25 | Nec Corp | コンパイル方式 |
JPH11259437A (ja) * | 1998-03-12 | 1999-09-24 | Hitachi Ltd | 不要バリア命令の削減方式 |
JP2000207223A (ja) * | 1999-01-12 | 2000-07-28 | Matsushita Electric Ind Co Ltd | 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体 |
JP2002007364A (ja) * | 2000-06-22 | 2002-01-11 | Fujitsu Ltd | 並列計算機システムのジョブスケジューリングを行うスケジューリング装置 |
JP3664473B2 (ja) * | 2000-10-04 | 2005-06-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの最適化方法及びこれを用いたコンパイラ |
US7089557B2 (en) * | 2001-04-10 | 2006-08-08 | Rusty Shawn Lee | Data processing system and method for high-efficiency multitasking |
JP4783005B2 (ja) * | 2004-11-25 | 2011-09-28 | パナソニック株式会社 | プログラム変換装置、プログラム変換実行装置およびプログラム変換方法、プログラム変換実行方法。 |
US8010956B1 (en) * | 2005-01-28 | 2011-08-30 | Oracle America, Inc. | Control transfer table structuring |
US7613595B2 (en) * | 2005-03-01 | 2009-11-03 | The Math Works, Inc. | Execution and real-time implementation of a temporary overrun scheduler |
US7966610B2 (en) * | 2005-11-17 | 2011-06-21 | The Mathworks, Inc. | Application of optimization techniques to intermediate representations for code generation |
JP4923240B2 (ja) * | 2006-01-17 | 2012-04-25 | 国立大学法人東京工業大学 | プログラム処理装置、並列処理プログラム、プログラム処理方法、並列処理コンパイラ、並列処理コンパイラを格納した記録媒体およびマルチプロセッサシステム |
US8146066B2 (en) * | 2006-06-20 | 2012-03-27 | Google Inc. | Systems and methods for caching compute kernels for an application running on a parallel-processing computer system |
JP2009048252A (ja) * | 2007-08-14 | 2009-03-05 | Oki Electric Ind Co Ltd | プログラム変換装置及びコンパイラプログラム |
-
2006
- 2006-12-14 WO PCT/JP2006/324966 patent/WO2008072334A1/ja active Application Filing
- 2006-12-14 CN CNA2006800566376A patent/CN101563673A/zh active Pending
- 2006-12-14 JP JP2008549167A patent/JPWO2008072334A1/ja active Pending
- 2006-12-14 EP EP06834720A patent/EP2093667A4/en not_active Withdrawn
- 2006-12-14 KR KR1020097011902A patent/KR101085330B1/ko not_active IP Right Cessation
-
2009
- 2009-06-10 US US12/457,441 patent/US20090254892A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06110688A (ja) | 1991-06-13 | 1994-04-22 | Internatl Business Mach Corp <Ibm> | 複数の順序外れ命令を並行処理するためのコンピュータ・システム |
JPH08212070A (ja) | 1994-11-14 | 1996-08-20 | Sun Microsyst Inc | プロセッサ・アーキテクチャにおける分散制御のための装置および方法 |
JP2001282549A (ja) * | 2000-03-30 | 2001-10-12 | Nec Corp | プログラム変換装置及び方法並びに記録媒体 |
JP2003084989A (ja) | 2001-09-12 | 2003-03-20 | Nec Corp | プライオリティ動的制御方式、プライオリティ動的制御方法およびプライオリティ動的制御用プログラム |
Non-Patent Citations (1)
Title |
---|
See also references of EP2093667A4 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10089088B2 (en) | 2015-06-16 | 2018-10-02 | Fujitsu Limited | Computer that performs compiling, compiler program, and link program |
US10540156B2 (en) | 2016-06-21 | 2020-01-21 | Denso Corporation | Parallelization method, parallelization tool, and in-vehicle device |
Also Published As
Publication number | Publication date |
---|---|
JPWO2008072334A1 (ja) | 2010-03-25 |
KR20090089382A (ko) | 2009-08-21 |
KR101085330B1 (ko) | 2011-11-23 |
EP2093667A4 (en) | 2012-03-28 |
US20090254892A1 (en) | 2009-10-08 |
EP2093667A1 (en) | 2009-08-26 |
CN101563673A (zh) | 2009-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2008072334A1 (ja) | コンパイル方法及びコンパイラ | |
US8893080B2 (en) | Parallelization of dataflow actors with local state | |
US5828886A (en) | Compiling apparatus and method for promoting an optimization effect of a program | |
Raman et al. | Parcae: a system for flexible parallel execution | |
Buck et al. | The token flow model | |
JP5036523B2 (ja) | プログラム並列化装置 | |
US6675380B1 (en) | Path speculating instruction scheduler | |
WO2010140883A4 (en) | Improvements in embedded system development | |
Ha et al. | Decidable dataflow models for signal processing: Synchronous dataflow and its extensions | |
Muller et al. | Competitive parallelism: Getting your priorities right | |
JP2006505061A (ja) | プロセッサのパイプラインの設計方法および設計システム | |
Castrillon et al. | Dataflow Models of computation for programming heterogeneous multicores | |
Benkner et al. | High-level support for pipeline parallelism on many-core architectures | |
US20080271041A1 (en) | Program processing method and information processing apparatus | |
Lee et al. | Dynamic scheduling of stream programs on embedded multi-core processors | |
JP2016143378A (ja) | 並列化コンパイル方法、並列化コンパイラ、及び、電子装置 | |
JP4946323B2 (ja) | 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム | |
Ha et al. | Decidable signal processing dataflow graphs | |
Dooley | Intelligent runtime tuning of parallel applications with control points | |
JP6488738B2 (ja) | 並列化コンパイル方法、及び、並列化コンパイラ | |
Bhattacharyya et al. | Model-based representations for dataflow schedules | |
Nobre et al. | Bounded Stream Scheduling in Polyhedral OpenStream | |
Dooley et al. | Detecting and using critical paths at runtime in message driven parallel programs | |
Tran et al. | Parallel programming with data driven model | |
Schuele | A coordination language for programming embedded multi-core systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 200680056637.6 Country of ref document: CN |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 06834720 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2008549167 Country of ref document: JP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1020097011902 Country of ref document: KR |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2006834720 Country of ref document: EP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |