CN101369235A - 程序转换装置以及编译程序 - Google Patents
程序转换装置以及编译程序 Download PDFInfo
- Publication number
- CN101369235A CN101369235A CNA2008101269630A CN200810126963A CN101369235A CN 101369235 A CN101369235 A CN 101369235A CN A2008101269630 A CNA2008101269630 A CN A2008101269630A CN 200810126963 A CN200810126963 A CN 200810126963A CN 101369235 A CN101369235 A CN 101369235A
- Authority
- CN
- China
- Prior art keywords
- instruction
- parallelization
- mentioned
- dependence
- code
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3404—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/023—Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- 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/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- 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/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种更彻底地实现指令执行的高速化的程序转换装置和编译程序。本发明的程序转换装置以及编译程序,对程序源代码进行转换,并生成包含多个指令的中间代码,从该中间代码,抽出由两个并行化候补指令构成的至少一个组合,并且对每个该并行化候补指令,抽出具有依赖关系的依赖关系指令。而且,对每个该并行化候补指令,基于对于该并行化候补指令所抽出的依赖关系指令的执行位置,判别该并行化候补指令的可移动范围,且通过将该两个并行化候补指令移动到在该两个并行化候补指令的共同可移动范围中所包含的一个执行位置上,来修改该中间代码,生成指令代码。
Description
技术领域
本发明涉及一种程序转换装置以及编译程序,其将用C语言等程序语言所记载的源代码转换为用电子计算机可执行的指令代码。
背景技术
近年来,逐渐发展为,在电子计算机的处理器中,使用独立地具有地址生成单元和运算执行单元的体系结构。在这样的体系结构中,例如,可以并行执行转送指令和运算指令。当设一个指令的执行周期数为一个周期时,以往执行转送指令和运算指令需要两个周期,然而通过独立地具有地址生成单元和运算执行单元,将转送指令和运算指令置换为同时即并行执行指令,由此可以将执行时间缩短为一个周期。
然而,对于将用C语言所记载的源代码转换为转送指令和运算指令等指令代码时,通过使用作为软件的C编译器,以该源代码为基础生成暂时中间代码,以所生成的中间代码为基础,进一步进行各种优化,生成最终的指令代码。此时,对于如上所述的并行执行指令,C编译器以中间代码为基础,将两个指令转换为一个并行执行指令。对于用于在这样的中间代码层次中的并行化的程序转换技术,参照专利文献1。
专利文献1:日本特开2001-282549号公报
然而,在以往的方法中,存在如下的缺点:当存在成为并行化的候补的两个指令,而要将它们移动到同时执行位置时,在它们之间存在具有依赖关系的其他指令的情况下,判别为不能统一地进行指令移动,不能进行并行化。在此,所谓依赖关系是指,由于后续指令参照由在先执行的指令更新的数据和标记等,导致某个指令的执行条件为先行指令的执行结果,或者,某个指令的执行结果为后行指令的执行条件的关系,在存在这样的关系的情况下,执行指令的指令顺序受到制约。
图1表示,由于存在依赖关系而不进行指令移动的具体例。在此,为了说明使用下述的伪中间指令。即,INSTPn(n为按指令顺序分配的编号)为可以成为并行化的对象的指令,例如,INSTP1及INSTP2意味着彼此之间可并行化。INSTNn表示不是并行化的对象的指令。在各指令后面的括弧内记载有其他指令的情况,是表示在该指令与本身之间有依赖关系。按图面的向下方向按指令顺序执行各指令。
参照图1中(a),分别地,INSTN1和INSTP5、INSTP2和INSTN4、INSTN3和INSTP5、INSTN4和INSTP2、INSTP5和INSTN1及INSTN3,在指令间有依赖关系。另外,INSTP2和INSTP5的两个指令为可并行化的指令。
在该情况下,可以尝试将INSTP2和INSTP5移动到同时执行位置。然而,由于INSTP2和INSTN4之间的依赖关系,不能移动到INSTP5的位置,另外,INSTP5,由于与INSTN3之间的依赖关系,而被判别为不能移动到INSTP2的位置。其结果,导致不能进行INSTP2和INSTP5的并行化,不能实现指令执行的高速化。
参照图1中(b),分别地,INSTN1和INSTP5、INSTP2和INSTN3、INSTN3和INSTP2、INSTN4和INSTP5、INSTP5和INSTN1及INSTN4,在指令间有依赖关系。另外,INSTP2和INSTP3的两个指令为可并行化的指令。
这种情况下,尝试将INSTP2和INSTP5移动到同时执行位置。然而,INSTP2,由于和INSTN3之间的依赖关系,而被判别为不能移动到INSTP5的位置,另外,INSTP5,由于和INSTN4之间的依赖关系,而被判别为不能移动到INSTP2的位置。其结果,这种情况下,也导致不能进行INSTP2和INSTP5的并行化。如以上的具体例,在以往的方法中,基于执行位置并行化的高速化是不充分的。
发明内容
本发明的目的在于,提供一种更彻底地实现指令执行的高速化的程序转换装置和编译程序。
本发明的程序转换装置,其特征在于,是一种将程序源代码转换为指令代码的程序转换装置,包含:中间代码生成单元,其将该源代码进行转换,并生成包含多个指令的中间代码;并行化候补指令抽出单元,其从该中间代码中,抽出由两个并行化候补指令构成的至少一个组合;依赖关系指令抽出单元,其对每个该并行化候补指令,从该中间代码中抽出与该并行化候补指令具有依赖关系的依赖关系指令;可移动范围判别单元,其对每个该并行化候补指令,基于对于该并行化候补指令所抽出的依赖关系指令的执行位置,判别该并行化候补指令的可移动范围;指令代码生成单元,其通过将该两个并行化候补指令移动到在该两个并行化候补指令的共同可移动范围中所包含的一个执行位置上,来修改该中间代码,通过对修改后的中间代码进行转换,来生成该指令代码。
本发明的编译程序,其特征在于,是一种用于使计算机作为将程序源代码转换为指令代码的单元而发挥功能的编译程序,使如下单元发挥功能:中间代码生成单元,其对该源代码进行转换,并生成包含多个指令的中间代码;并行化候补指令抽出单元,其从该中间代码中,抽出由两个并行化候补指令构成的至少一个组合;依赖关系指令抽出单元,其对每个该并行化候补指令,从该中间代码中抽出与该并行化候补指令具有依赖关系的依赖关系指令;可移动范围判别单元,其对每个该并行化候补指令,基于关于该并行化候补指令的所抽出的依赖关系指令的执行位置,判别该并行化候补指令的可移动范围;指令代码生成单元,其通过将该两个并行化候补指令移动到在该两个并行化候补指令的共同可移动范围中所包含的一个执行位置上,来修改该中间代码,通过对修改后的中间代码进行转换,来生成该指令代码。
根据本发明的程序转换装置及编译程序,能够完成更细致的指令代码的执行位置并行化,并使指令执行的高速化更加彻底。
附图说明
图1为表示以往的方法中的指令执行顺序的并行化的具体例的图。
图2表示第一实施例,是表示包含程序转换装置的整体的构成的框图。
图3为表示图2所示的可并行化指令表的设定例的图。
图4为表示第一实施例中的并行化的处理过程的流程图。
图5为说明在图3所示的处理过程中移动指令的情况的说明图。
图6为表示第二实施例中的并行化的处理过程的流程图。
图7A为说明在图6所示的处理过程中成为前提的指令排列的说明图。
图7B为说明在图6所示的处理过程中以组为单位进行指令移动的情况的说明图。
图8为表示通过执行图6所示的处理过程而得到的并行化的实际例的图。
图中:10-源代码;20-程序转换装置;21-中间代码生成部;22-依赖关系指令抽出部;23-并行化候补指令抽出部;24-并行化执行部;25-指令代码生成部;26-可并行化指令表;30-编译程序;40-指令代码。
具体实施方式
参照附图,对于本发明的实施例进行详细说明。
(第一实施例)
图2表示第一实施例,且表示包含程序转换装置的整体的构成。程序转换装置20为,将源代码10作为输入而读入,并将该源代码转换为指令代码40而输出的装置。源代码10,是用C语言等程序语言记载的源代码的数据,并通过通讯网络和存储介质等多种单元读入到程序转换装置20。指令代码40,是作为目的的可由电子计算机执行的指令代码的数据,并通过通讯网络和存储介质等多种方法向电子计算机输出。在本实施例中,作为执行指令代码40的电子计算机,是以具备并行体系结构的处理器的电子计算机为前提的,且该并行体系结构的处理器,通过独立地具有地址生成单元和运算执行单元,可将多个指令并行来执行。
程序转换装置20,包含:中间代码生成部21、依赖关系指令抽出部22、并行化候补指令抽出部23、并行化执行部24、指令代码生成部25及可并行化指令表26。也可以作为将程序转换装置20设为一个计算机装置时的编译程序30来实现这些各部21~26。
中间代码生成部21,具备以下功能:以读入的源代码10为基础,生成中间代码,并将生成的中间代码提供给依赖关系指令抽出部22及并行化候补指令抽出部23。在利用C语言生成源代码10的数据的情况下,例如可以利用汇编语言记载中间代码。
依赖关系指令抽出部22,具备以下功能:以所提供的中间代码为基础,检查各指令间的依赖关系,对每个指令抽出有依赖关系的依赖关系指令,并将这样的依赖关系通知到并行化执行部24。并行化候补指令抽出部23,具备以下功能:以所提供的中间代码为基础,抽出可同时执行即可并行化的并行化候补指令的组合,并将所抽出的组合通知到并行化执行部24。某个指令和其他的指令是否可以并行化的判定,是通过参照可并行化指令表26来进行的,且该可并行化指令表26预先设定了可并行化的指令的组合。
并行化执行部24,具备以下功能:以由依赖关系指令抽出部22所通知的依赖关系,和由并行化候补指令抽出部23所通知的并行化候补指令为基础,划定作为并行化候补指令的两个指令的移动位置并对中间代码执行并行化。指令代码生成部25,具备以下功能:以由并行化执行部24完成了并行化的中间代码为基础,重新通过通常的编译处理来生成指令代码。
此外,也可以通过一台个人电脑等的电子计算机来实现程序转换装置20。这种情况下,中间代码生成部21、依赖关系指令抽出部22、并行化候补指令抽出部23、并行化执行部24、指令代码生成部25,作为一个编译程序30,而使作为计算机的程序转换装置20发挥功能。
图3表示图2所示的可并行化指令表的设定例。如图所示那样,在可并行化指令表26中,例如将指令A的存储器转送指令、指令B的算术运算指令、逻辑运算指令及移位运算指令设定为可并行化。作为指令的种类的例,在图面右侧表示汇编语言下的列表。
图4表示第一实施例中的并行化处理过程。作为前提,设将源代码输入到程序转换装置,并已将该源代码利用程序转换装置所包含的中间代码生成部(参照图2)转换为中间代码。利用程序转换装置中所包含的依赖关系指令抽出部、并行化候补指令抽出部及并行化执行部(参照图2)来执行该并行化处理过程。
首先,对中间代码所包含的每个指令抽出依赖关系指令(步骤S1)。在此,依赖关系指令是指如下的指令:对于某个指令,先行于该指令并具有给与其执行条件的依赖关系的指令,或者后行于该指令并具有依据其执行结果的依赖关系的指令。
与步骤S1并行或者在其之后,从中间代码中抽出可并行化的指令的组合(步骤S2)。参照可并行化指令表来判定是否为可并行化的指令的组合,由此进行可否并行化的判定。接着,从可并行化指令的组合中抽出成为并行化的对象的并行化候补指令的组合的两个指令(步骤S3)。即,从可并行化的指令中,抽出相互不包含依赖关系指令的两个指令的组合。
然后,在该两个指令中判别可移动的指令(步骤S4)。具体而言,首先通过对能否将该两个指令中的哪一个移动到其他的位置进行判定,来判别可移动的指令(步骤S41)。这种情况下,在该两个指令的执行位置之间,在不存在与要移动的指令对应的依赖关系指令的情况下,判别为,该要移动的指令可移动到其他的位置。接着,与以往的方法同样执行步骤S5的并行化。
另一方面,在判别为不能移动的情况下,判定能否移动到两个指令的各自的共同可移动范围(步骤S42)。即,对每两个指令,基于该指令的依赖关系指令的执行位置来算出可移动范围。所谓指令的可移动范围,对于该指令而言,是从先行的依赖关系指令的下一个执行位置,到紧挨着后行的依赖关系指令的执行位置之前。而且,抽出该两个指令的可移动范围的重复的位置、即共同可移动范围。即使在有多个重复的位置的情况下,也可以在抽出了一个位置的时刻结束抽出即可。如果,在存在共同可移动范围的情况下,在该共同可移动范围的例如前头位置执行并行化(步骤S5)。另一方面,在不存在共同可移动范围的情况下,对于该两个指令判定为不能并行化并返回到步骤S3,重新抽出其他的并行化候补指令的两个指令。
步骤5的并行化的执行,是将该两个指令中的任何一方移动到其他位置,或通过将该两个指令共同移动到共同可移动范围内的同一位置,来实现并行化(步骤5)。对于成为处理对象的中间代码的全体进行以上的并行化执行的过程,且将完成基于并行化的修改的中间代码,在指令代码生成部中进行转换,来生成指令代码。
图5说明了图3所示的处理过程中移动指令的情况。参照图5中(a),INSTP2和INSTP5为,通过图4所示的过程步骤S1~S3所算出的可并行化的两个指令的组合。然而,INSTP2,由于与INSTN4之间的依赖关系,因此不能移动到INSTP5的位置。另外,INSTP5,由于与INSTN3之间的依赖关系而不能移动到INSTP2的位置,因此应执行共同可移动位置的抽出处理的过程(步骤42)。
参照图5中(b),表示在上述具体例中标记了用于进行说明的位置识别名的情况。在此,INSTP2的可移动范围,是从上述例的“位置A”到“位置D”的范围。另外,INSTP5的可移动位置,是从“位置D”到“位置F”的范围。由此,作为INSTP2和INSTP5的可移动范围的重复部分,而算出“位置D”。因此,可以通过将两指令移动到共同的可移动位置、即“位置D”,来进行并行化。
在以上的第一实施例中,通过应用本发明的程序转换装置及编译程序,即使,在以往,由于成为并行化的对象的两个指令之间存在有依赖关系的指令,而被判定为不能移动不进行并行化的情况下,如果对于两个指令有重复的可移动范围,就可以进行并行化。由此,能够实现更彻底的程序的执行高速化。
(第二实施例)
图6表示第二实施例中的并行化的处理过程。第二实施例构成为,在第一实施例中的同样的装置构成(参照图2)中,包含与第一实施例中不同的处理过程。即,将指令移动以由多个指令构成的组为单位进行移动。在该方法中,在第一实施例中所示的并行化过程中的、步骤S4的“可移动指令抽出处理”中,在判别为作为并行化候补指令的两个指令的任何一个都不能移动的情况下,通过将两个指令中的一方的指令,以与该指令有依赖关系的指令群的组为单位集中移动,来进行两个指令的并行化。
参照图6,仅表示可移动的指令的抽出所涉及的处理过程。作为前提,设已经进行了第一实施例中的步骤S1~S3的处理过程。即,设抽出了并行化候补指令的至少一个组合。
因此,与第一实施例的情况相同,判定能否将并行化候补指令的两个指令的哪一个移动到其他位置(步骤S41)。当判定为不能移动的情况下,判定能否移动到两个指令的共同可移动范围(步骤S42)。若在步骤S41和步骤S42的任何一个中判定为可移动,则执行步骤S5中的以组为单位的并行化。
另一方面,在步骤S42中,在判定为不存在共同可移动范围的情况下,对于两个指令,判定能否以组为单位移动到其他位置(步骤S43)。若判定为不能以组为单位移动的情况下,放弃关于该两个指令的并行化并返回到步骤S3,重新抽出并行化候补指令。另一方面,在判定为可以以组为单位移动的情况下,对于该两个指令可以进行为了进行以组为单位的并行化的步骤S5的并行化的执行。以下说明其具体例。
如图7A所示,作为前提,INSTP1和INSTP4为已经通过步骤4以前的过程所抽出的作为并行化候补指令的两个指令的组合。INSTP1的可移动范围,为从“位置A”到“位置B”的范围。另外,INSTP4的可移动位置为,从“位置D”到“位置E”的范围。由此,不存在INSTP1和INSTP4的可移动范围的重复部分,因此判定为不能进行基于针对两指令共同的可移动位置的移动的并行化。
如图7B所示,根据INSTP1和INSTP4的各自的依赖关系设定指令的组。设定为:INSTP1及与其有依赖关系的INSTN2的组1、INSTP4及与其有依赖关系的INSTN3的组2、以及INSTP4及与其有依赖关系的INSTN5的组3。而且,对每个组设定用于将INSTP1和INSTP4并行化的移动位置候补。为了使INSTP1和INSTP4处于相同的指令执行位置,组1的移动位置候补为“位置E”,组2的移动位置候补为“位置A”,而且组3的移动位置候补为“位置B”。
接着,识别各组能否向其移动位置候补移动。关于各组中所包含的各指令,在从该指令到组的移动位置候补之间,对在除了该指令的组以外的其他组内,是否存在与该指令对应的依赖关系指令进行扫描,来进行该识别。
若对组1进行扫描,则由于从INSTP1或者INSTN2的位置到“位置E”之间不存在依赖关系指令,因此组1被判别为可以移动到“位置E”,若对组2进行扫描,则由于从INSTN3或者INSTP4的位置到“位置A”之间不存在依赖关系指令,因此组2被判别为可以移动到“位置A”。若对组3进行扫描,则由于从INSTP4或者INSTN5的位置到“位置B”之间,对于INSTP4而言,由于存在作为依赖关系指令的INSTN3,因此组3被判别为不能移动到“位置B”。由此,判别为通过移动组1和组2可进行并行化。在这种情况下,例如设采用先前所判别的“将组1移动到位置E”,进行INSTP1和INSTP4的并行化。
图8表示通过执行图6所示的处理过程而得到的并行化的实际例。观察列表L1,表示了并行化之前的中间代码的记载例。在此,属于组1的MOVX指令(指令1)和属于组2的SUB指令(指令4)为并行化候补指令。观察列表L2,表示了将列表L1的内容并行化后的中间代码。在此,MOVX指令(指令1)和SUB指令(指令4)被横向并排记入。由此成为同时执行指令1和指令4。
在以上的第二实施例中,通过使用本发明的程序转换装置及编译程序,即使如第一实施例中那样,由于不存在共同可移动范围,而不进行并行化的情况下,如果能将并行化候补指令与依赖关系指令以组为单位进行移动,则可以进行并行化。由此,实现更彻底的并行化。
在以上的多个实施例中,虽然对由C语言记载源代码的例进行了说明,然而本发明不限定于此,源代码也可以由C语言以外的多种程序语言来记载。另外,将指令代码作为提供给电子计算机的指令代码而进行了说明,然而本发明中的指令代码,只要是提供给并行化体系结构的处理器的指令代码即可,不仅是个人电脑和服务器计算机,也可以是提供给被嵌入特定的功能装置而实现指定的处理功能的DSP(Digital Signal Processor)的指令代码。
Claims (6)
1.一种程序转换装置,其特征在于,是将程序源代码转换为指令代码的程序转换装置,包含:
中间代码生成单元,其将上述程序源代码进行转换,并生成包含多个指令的中间代码;
并行化候补指令抽出单元,其从上述中间代码,抽出由两个并行化候补指令构成的至少一个组合;
依赖关系指令抽出单元,其对上述每个并行化候补指令,从上述中间代码中抽出与该并行化候补指令具有依赖关系的依赖关系指令;
可移动范围判别单元,其对上述每个并行化候补指令,基于对于该并行化候补指令所抽出的依赖关系指令的执行位置,判别该并行化候补指令的可移动范围;
指令代码生成单元,其通过将上述两个并行化候补指令移动到在上述两个并行化候补指令的共同可移动范围中所包含的一个执行位置上,来修改上述中间代码,并通过对修改后的中间代码进行转换,来生成上述指令代码。
2.根据权利要求1所述的程序转换装置,其特征在于,
上述依赖关系指令抽出单元,用于抽出如下指令作为上述依赖关系指令:先行于该并行化候补指令并具有给与其执行条件的依赖关系的指令,或者后行于该并行化候补指令并具有依据其执行结果的依赖关系的指令。
3.根据权利要求1或2所述的程序转换装置,其特征在于,
上述指令代码生成单元,在不存在上述共同可移动范围的情况下,通过以包含上述并行化候补指令及与其相对应的依赖关系指令的指令群为单位,移动执行位置,来修改上述中间代码。
4.一种编译程序,其特征在于,是一种用于使计算机作为将程序源代码转换为指令代码的单元而发挥功能的编译程序,使如下单元发挥功能:
中间代码生成单元,其将上述程序源代码进行转换,并生成包含多个指令的中间代码;
并行化候补指令抽出单元,其从上述中间代码,抽出由两个并行化候补指令构成的至少一个组合;
依赖关系指令抽出单元,其对上述每个并行化候补指令,从上述中间代码中抽出与该并行化候补指令具有依赖关系的依赖关系指令;
可移动范围判别单元,其对上述每个并行化候补指令,基于对于该并行化候补指令所抽出的依赖关系指令的执行位置,判别该并行化候补指令的可移动范围;
指令代码生成单元,其通过将上述两个并行化候补指令移动到在上述两个并行化候补指令的共同可移动范围中所包含的一个执行位置上,来修改上述中间代码,并通过对修改后的中间代码进行转换,来生成上述指令代码。
5.根据权利要求4所述的编译程序,其特征在于,
上述依赖关系指令抽出单元,用于抽出如下指令作为上述依赖关系指令:先行于该并行化候补指令并具有给与其执行条件的依赖关系的指令,或者后行于该并行化候补指令并具有依据其执行结果的依赖关系的指令。
6.根据权利要求4或5所述的编译程序,其特征在于,
上述指令代码生成单元,在不存在上述共同可移动范围的情况下,通过以包含上述并行化候补指令及与其相对应的依赖关系指令的指令群为单位,移动执行位置,来修改上述中间代码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007211289A JP2009048252A (ja) | 2007-08-14 | 2007-08-14 | プログラム変換装置及びコンパイラプログラム |
JP2007211289 | 2007-08-14 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101369235A true CN101369235A (zh) | 2009-02-18 |
Family
ID=40364006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008101269630A Pending CN101369235A (zh) | 2007-08-14 | 2008-06-20 | 程序转换装置以及编译程序 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20090049434A1 (zh) |
JP (1) | JP2009048252A (zh) |
KR (1) | KR20090017400A (zh) |
CN (1) | CN101369235A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662720A (zh) * | 2012-03-12 | 2012-09-12 | 天津国芯科技有限公司 | 一种多发射嵌入式处理器编译器的优化方法 |
WO2017107154A1 (zh) * | 2015-12-24 | 2017-06-29 | 华为技术有限公司 | 一种矩阵运算的源到源转换方法及源到源编译器 |
CN107003884A (zh) * | 2014-12-04 | 2017-08-01 | 华为技术有限公司 | 编译器以及用于编译源代码的方法 |
CN111125644A (zh) * | 2018-11-01 | 2020-05-08 | 百度在线网络技术(北京)有限公司 | 应用产品的信息隐藏方法和装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2008072334A1 (ja) * | 2006-12-14 | 2010-03-25 | 富士通株式会社 | コンパイル方法及びコンパイラ |
EP2361408A4 (en) * | 2008-12-01 | 2012-05-23 | Kpit Cummins Infosystems Ltd | METHOD AND SYSTEM FOR PARALLELIZING SEQUENCEL COMPUTER PROGRAM CODES |
KR101245494B1 (ko) * | 2011-01-06 | 2013-03-25 | 대한민국(환경부 국립환경과학원장) | 배열의 병렬화 포인트 탐색 방법 및 장치 |
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
CN103870310B (zh) * | 2014-02-18 | 2017-07-14 | 小米科技有限责任公司 | 程序编译方法及相关装置 |
CN104866369B (zh) * | 2015-05-22 | 2018-05-08 | 广州华多网络科技有限公司 | 一种数据处理的方法以及装置 |
KR102236700B1 (ko) * | 2019-11-18 | 2021-04-05 | 연세대학교 산학협력단 | 패킷 프로세싱 프로그램 병렬화 컴파일 장치 및 방법 |
WO2021117186A1 (ja) * | 2019-12-12 | 2021-06-17 | 三菱電機株式会社 | データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58149570A (ja) * | 1982-02-27 | 1983-09-05 | Fujitsu Ltd | ベクトル命令のスケジユ−リング処理方式 |
JPS6336337A (ja) * | 1986-07-30 | 1988-02-17 | Nec Corp | スカラ/ベクトル命令の融合スケジユ−リング処理方式 |
JP3175768B2 (ja) * | 1990-06-19 | 2001-06-11 | 富士通株式会社 | 複合型命令スケジューリング処理装置 |
JP3311462B2 (ja) * | 1994-02-23 | 2002-08-05 | 富士通株式会社 | コンパイル処理装置 |
US6139199A (en) * | 1997-06-11 | 2000-10-31 | Sun Microsystems, Inc. | Fast just-in-time (JIT) scheduler |
US6988183B1 (en) * | 1998-06-26 | 2006-01-17 | Derek Chi-Lan Wong | Methods for increasing instruction-level parallelism in microprocessors and digital system |
US6526572B1 (en) * | 2000-02-09 | 2003-02-25 | Hewlett-Packard Company | Mechanism for software register renaming and load speculation in an optimizer |
JP3641997B2 (ja) * | 2000-03-30 | 2005-04-27 | 日本電気株式会社 | プログラム変換装置及び方法並びに記録媒体 |
US6651247B1 (en) * | 2000-05-09 | 2003-11-18 | Hewlett-Packard Development Company, L.P. | Method, apparatus, and product for optimizing compiler with rotating register assignment to modulo scheduled code in SSA form |
JP3902147B2 (ja) * | 2003-03-04 | 2007-04-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ装置、コンパイル方法、コンパイラプログラム、及び記録媒体 |
US7689958B1 (en) * | 2003-11-24 | 2010-03-30 | Sun Microsystems, Inc. | Partitioning for a massively parallel simulation system |
JP4778286B2 (ja) * | 2005-09-28 | 2011-09-21 | パナソニック株式会社 | コンパイラ装置 |
US20090125894A1 (en) * | 2007-11-14 | 2009-05-14 | Nair Sreekumar R | Highly scalable parallel static single assignment for dynamic optimization on many core architectures |
-
2007
- 2007-08-14 JP JP2007211289A patent/JP2009048252A/ja active Pending
-
2008
- 2008-04-11 KR KR1020080033556A patent/KR20090017400A/ko not_active Application Discontinuation
- 2008-06-20 CN CNA2008101269630A patent/CN101369235A/zh active Pending
- 2008-06-20 US US12/142,815 patent/US20090049434A1/en not_active Abandoned
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662720A (zh) * | 2012-03-12 | 2012-09-12 | 天津国芯科技有限公司 | 一种多发射嵌入式处理器编译器的优化方法 |
CN102662720B (zh) * | 2012-03-12 | 2015-01-28 | 天津国芯科技有限公司 | 一种多发射嵌入式处理器编译器的优化方法 |
CN107003884A (zh) * | 2014-12-04 | 2017-08-01 | 华为技术有限公司 | 编译器以及用于编译源代码的方法 |
WO2017107154A1 (zh) * | 2015-12-24 | 2017-06-29 | 华为技术有限公司 | 一种矩阵运算的源到源转换方法及源到源编译器 |
CN111125644A (zh) * | 2018-11-01 | 2020-05-08 | 百度在线网络技术(北京)有限公司 | 应用产品的信息隐藏方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2009048252A (ja) | 2009-03-05 |
US20090049434A1 (en) | 2009-02-19 |
KR20090017400A (ko) | 2009-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101369235A (zh) | 程序转换装置以及编译程序 | |
CN102541437B (zh) | 方向性输入到手势的转换 | |
CN100390735C (zh) | 用于产生图形用户接口模型的方法和系统 | |
CN100465895C (zh) | 编译器、编译方法 | |
CN103077064A (zh) | 一种解析并执行程序语言方法及解释装置 | |
EP0583117A2 (en) | A device and method for converting computer programming languages | |
CN102193811B (zh) | 消除内存访问冲突的编译装置及其实现方法 | |
CN1271891A (zh) | 用于在多平台环境的指令选择的装置和方法 | |
CN115878003B (zh) | 一种基于Transformer的RPA网页操作自动化方法及系统 | |
Rico-Garcia et al. | Parallel implementation of metaheuristics for optimizing tool path computation on CNC machining | |
CN101976187A (zh) | 反编译过程中的堆栈跟踪方法、装置及反编译器 | |
CN1127688C (zh) | 转变位结构体系中的指令的方法、系统 | |
CN101344856B (zh) | 增加任务执行速度的方法和设备 | |
CN105426504A (zh) | 一种基于内存计算的分布式数据分析处理方法 | |
CN102541614B (zh) | 基于代码分析的计算模块输入输出数据自动解析方法 | |
CN101980546B (zh) | 智能网平台、业务执行方法和分析业务异常的方法 | |
CN106033370A (zh) | 64位Java虚拟机的实现方法及装置 | |
CN101344855A (zh) | 一种基于编译的跟踪代码中特定对象的控制方法及装置 | |
CN103838616B (zh) | 基于树型程序分支的计算机程序即时编译方法 | |
CN116594622A (zh) | 基于类型推导与数据流分析的Python程序编译方法及系统 | |
CN105446747A (zh) | 一种可视化立体码触屏编译器与编程技术 | |
Valvano | Introduction to Embedded Systems | |
CN108874395A (zh) | 一种组件化流处理过程中的硬编译方法及装置 | |
CN107203406A (zh) | 一种面向分布式存储结构的处理方法 | |
CN105446788B (zh) | 一种信息处理方法及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20090218 |