CN102265257A - 程序变换装置及程序变换方法 - Google Patents
程序变换装置及程序变换方法 Download PDFInfo
- Publication number
- CN102265257A CN102265257A CN200980152097.5A CN200980152097A CN102265257A CN 102265257 A CN102265257 A CN 102265257A CN 200980152097 A CN200980152097 A CN 200980152097A CN 102265257 A CN102265257 A CN 102265257A
- Authority
- CN
- China
- Prior art keywords
- instruction
- mentioned
- instruction scheduling
- processor
- pattern
- 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.)
- Granted
Links
Images
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
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- 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/31—Programming languages or programming paradigms
- G06F8/314—Parallel programming languages
Abstract
编译程序(1)能够适应近些年搭载了多线程功能的处理器,实施有效的指令调度以及控制由程序员做出的指令调度,其具备:指令调度指示输入部(2),受理用来指定指令调度方法的程序员指示的输入;指令调度部(41),有关对源程序所对应的中间代码进行排列的指令调度,能够实施基于多种指令调度方法的指令调度;指令调度部(41)根据由指令调度指示输入部(2)所受理的指示从多种指令调度方法之中选择任一个,执行与选择出的指令调度方法相应的指令调度。
Description
技术领域
本发明涉及一种将用C语言等高级语言所描述的源程序变换为机器语言程序的程序变换装置,特别涉及到实施具备并行处理机构的处理器所对应的指令调度的程序变换装置。
背景技术
在处理器具备的指令集中,一般情况下延迟时间也就是1条指令的执行所用的需要周期数根据指令的不同而不同。从而,即便是同一指令串,根据其执行顺序的不同,指令执行开始之前的等待时间也不同,整体的执行周期数一直在变化。具体而言,越是可以在其他指令的执行中隐藏延迟时间长的指令的等待时间,整体的执行周期数变得越短。
在生成处理器之可执行代码的编译程序中,鉴于上述特性,一般实施在满足指令间的依赖限制的范围内进行指令的排列,缩短整体的执行周期数的优化。这就是指令调度,指令调度的能力给所生成的可执行代码的性能带来较大的影响。
但是,最佳的指令序列的导出是NP(Non-deterministic Polynomial time)困难的问题,另外由于其他优化功能的影响,可执行代码的性能也不同。因此,作为指令调度功能一般采用启发式的算法,由哪个算法导出更好的结果根据状况的不同而不同。
对此,以往例如象专利文献1那样,有一种检查寄存器的使用状况,根据检查结果,来选择并行性优先的指令调度方法和减少寄存器之同时运行数的指令调度方法的任一个,并根据选择出的指令调度方法来执行指令调度的方法。
另外,例如像专利文献2那样,还有一种参照在作为优化方法一种的公共表达式删除(common sub-expression elimination)中删除后的公共表达式的信息,根据是否实施了公共表达式删除的信息来选择指令调度方法,并根据选择出的指令调度方法来执行指令调度的方法。
现有技术文献
专利文献
专利文献1:日本专利第3311381号公报
专利文献2:日本特开2001-159983号公报
发明内容
发明的概要
发明要解决的问题
作为近年来处理器的趋势,与指令并行处理有关,具有多个动作模式的处理器,或者适应多线程动作的处理器已经出现。
就以往技术而言,虽然可以按照单个动作模式内的输入程序或者中间代码的优化状况,选择指令调度方法,但是对多个动作模式的转换却不适应。另外,还无法根据伴随多线程动作而变化的指令并行度变化或者指令延迟时间变化,来转换动作模式。再者,有关指令调度方法却不能由程序进行控制。
因此,在结果上,采用以往技术对于近年来的处理器而言,存在无法生成与状况相应的有效的可执行代码这样的问题。
本发明是为了解决上述课题而做出的,其目的为提供程序变换装置等,使(i)动作模式的转换、(ii)与多线程动作相伴的动作模式的变动因素或者(iii)适应程序员要求的有效的可执行代码的生成成为可能。
为了实现上述目的,本发明的某一方面所涉及的程序变换装置用来将用高级语言或者汇编语言所描述的源程序变换为在目标处理器中进行动作的机器语言代码,其特征为,具备:存储部,存储上述源程序;程序员指示输入部,受理用来指定指令调度方法的程序员指示的输入;指令调度部,有关对存储在上述存储部中的上述源程序所对应的中间代码进行排列的指令调度,能够实施基于多种指令调度方法的指令调度;上述指令调度部根据由上述程序员指示输入部所受理的上述指示从上述多种指令调度方法之中选择任一个,执行与选择出的指令调度方法相应的指令调度。
据此,能够生成具有多个动作模式的处理器的各动作模式所对应的执行效率高的机器语言代码。
优选的是,由上述程序员指示输入部受理的上述指示是与上述目标处理器的动作模式有关的指示。
更为优选的是,上述目标处理器是超长指令字VLIW(Very LongInstruction Word)处理器,上述目标处理器的动作模式是VLIW处理器的动作模式。
在目标处理器为能够执行按照VLIW方式所描述的指令群的处理器(下面称为“VLIW处理器”。)的情况下,可以生成与各动作模式的限制相符的机器语言代码。
优选的是,由上述程序员指示输入部受理的上述指示是与指令调度方法有关的指示。
可以由程序员直接指定指令调度方法,能够实施细致的性能调谐。
本发明的其他方面所涉及的程序变换装置用来将用高级语言或者汇编语言所描述的源程序变换为在目标处理器中进行动作的机器语言代码,其特征为,具备:存储部,存储上述源程序;指令调度部,有关对存储在上述存储部中的上述源程序所对应的中间代码进行排列的指令调度,能够根据多种指令调度方法的各自执行指令调度;代码生成部,将由上述指令调度部根据上述多种指令调度方法进行指令调度后的多种上述中间代码,分别变换为机器语言代码。
据此,能够由用户选取具有多个动作模式的处理器的各动作模式所对应的执行效率高的机器语言代码。
优选的是,上述指令调度方法按上述目标处理器的动作模式的每种进行了设置。
更为优选的是,上述目标处理器是VLIW处理器,上述目标处理器的动作模式是VLIW处理器的动作模式。
在目标处理器为VLIW处理器的情况下,能够由用户选取与各动作模式的限制相符的机器语言代码。
还有,本发明不仅仅可以作为这种具备特征性处理部的程序变换装置来实现,还可以作为以程序变换装置中包含的特征性处理部为步骤的程序变换方法来实现。另外,也可以作为下述程序来实现,该程序是作为程序变换装置中包含的特征性机构使计算机发挥作用所需的。而且,不言而喻,那种程序可以通过CD-ROM(Compact Disc-Read Only Memory)等记录介质或因特网等通信网络使之流通。
发明效果
根据本发明,通过按照硬件的动作模式转换指令调度方法,就能够生成与动作模式相符的执行效率高的可执行代码(机器语言代码)。在目标处理器为VLIW处理器的情况下,能够生成与动作模式的限制相符的可执行代码。另外,因为由程序员指示的方法提供该指令调度方法的转换,所以能够细致地实施生成的机器语言代码的调谐。
附图说明
图1是执行本发明实施方式1及2所涉及的编译程序的计算机外观图。
图2是表示本发明实施方式1所涉及的编译程序构成的框图。
图3A是表示目标处理器的多线程动作模式(模式1)的附图。
图3B是表示目标处理器的多线程动作模式(模式2)的附图。
图3C是表示目标处理器的多线程动作模式(模式3)的附图。
图3D是表示目标处理器的多线程动作模式(模式4)的附图。
图4是表示指令调度方法设定部411的处理内容的流程图。
图5是表示本发明实施方式2所涉及的编译程序构成的框图。
图6是表示多个代码生成控制部66的处理内容的流程图。
图7是表示指令调度指示和指令调度设定之间的对应表的附图。
具体实施方式
(实施方式1)
下面,一边参照附图,一边说明本发明实施方式1所涉及的编译程序系统。
编译程序系统通过在图1所示的那种包含存储器和CPU的普通计算机上,执行下面说明的编译程序,来实现。
图2是表示实施方式1所涉及的编译程序1构成的框图。
编译程序1接受程序员用C语言所描述的源程序101来作为输入,将其变换为中间代码并实施优化或资源的分配之后,生成面向目标处理器的可执行代码102。源程序101及可执行代码102被存储于计算机具备的存储器或者硬盘中。另外,由编译程序得到的处理执行时的中间数据也被存储于计算机具备的存储器或者硬盘中。
这里,说明本发明所涉及的编译程序为目标的处理器的结构。
本处理器是具备每1周期4条指令的指令并行机构的超标量处理器。本处理器还具备最大3个线程的多线程执行机构。为了使3个线程进行并行动作,本处理器分别保持3组程序计数器及上下文寄存器群。针对多线程执行,存在4个动作模式,可以通过体系结构寄存器的设定来选择动作模式。
图3A~图3D是表示本处理器的多线程动作模式概要的附图。图3A~图3D的各行表示出1个周期,横轴表示出指令并行度,纵轴表示出时间方向。这里,所谓的指令并行度表示,在同一周期内进行动作的每1线程中可并行执行的指令数。
图3A表示出模式1,也就是单线程模式。在该模式下只有1个线程进行动作,能够实现每个周期最大4条指令的并行执行。也就是说,能够在同一周期内执行1个线程。
图3B表示出模式2,也就是分时的2个线程执行模式。在该模式下,线程1和线程2在每周期内交替进行动作。从而,在各线程的观点上,在2个周期内循环回来1次本线程的执行周期。因此,若仅仅着眼于本线程进行动作的周期,则好象和模式1相比各指令的延迟时间变成2分之1,进行动作。针对各周期,能够实现最大4条指令的并行执行。也就是说,能够在同一周期内执行1个线程。
图3C表示出模式3,也就是分时的3个线程执行模式。在该模式下,线程1、线程2和线程3按序号以轮转的形式进行动作。从而,在各线程的观点上,在3个周期内循环回来1次本线程的执行周期。因而,若仅仅着眼于本线程进行动作的周期,则好象和模式1相比各指令的延迟时间变成3分之1,进行动作。针对各周期,能够实现最大4条指令的并行执行。也就是说,能够在同一周期内执行1个线程。
图3D表示出模式4,也就是2个线程的SMT(SimultaneousMultithreading)执行模式。在该模式下,虽然各线程和模式1相同,可以每周期都进行动作,但是指令并行度被限制到各周期2条指令。也就是说,能够在同一周期内执行2个线程。
在下面,说明本发明所涉及的编译程序1各构成要素的详细构成和其动作。
编译程序1由在计算机上执行的程序来实现,在功能上(作为在计算机上执行时发挥作用的处理部)具备指令调度指示输入部2、分析部3、优化部4及代码生成部5。
指令调度指示输入部2受理由程序员发出的与指令调度有关的指示,来作为编译选项。具体而言,使之执行编译程序1的程序员以下面的形式输入目标处理器的多线程动作模式,来作为编译选项。
-fhardware-thread-mode=NUM
在“NUM”的部分中,指定作为参照图3A~图3D所说明的多线程动作模式之编号的1~4任一个的数字。由此,编译程序1获得是否应当生成与某个多线程动作模式相适的代码的信息。
分析部3是一种处理部,对于编译程序1中所输入的源程序101,提取预定字(关键字)等进行词法分析及语法分析,将各语句根据一定规则变换为中间代码。
优化部4对于从分析部3所输出的中间代码,实施冗余性的去除、指令调度或者寄存器的分配之类的优化处理。
代码生成部5对于从优化部4所输出的中间代码,通过参照保持于内部的变换表等,将全部的代码转换为机器语言代码,以此生成可执行代码102。
优化部4具备指令调度部41,实施按指令级的机器语言代码的排列。指令调度部41具备指令调度方法设定部411,设定指令的调度方法。
图4是表示指令调度方法设定部411的处理内部的流程图。
指令调度方法设定部411根据由指令调度指示输入部2所受理的多线程动作模式,来设定指令调度之时的参数。
具体而言,指令调度方法设定部411判定由指令调度指示输入部2所受理的多线程动作模式(步骤S1)。在判定模式为模式1的情况下(步骤S1中的模式1),指令调度方法设定部411将指令并行度和下述指令延迟时间比分别设定为4和1(步骤S2),该指令延迟时间比表示从执行某个线程到下次执行和该线程同一种类的线程为止的周期数。在判定模式为模式2的情况下(步骤S1中的模式2),指令调度方法设定部411将指令并行度和指令延迟时间比分别设定为4和2(步骤S3)。在判定模式为模式3的情况下(步骤S1中的模式3),指令调度方法设定部411将指令并行度和指令延迟时间比分别设定为4和3(步骤S4)。在判定模式为模式4的情况下(步骤S1中的模式4),指令调度方法设定部411将指令并行度和指令延迟时间比分别设定为2和1(步骤S5)。这样与指令调度方法有关的设定完成。这里,所谓的指令延迟时间比指的是,对于单线程模式下的指令延迟时间的指令延迟时间之比的倒数。
在此后的由指令调度部41做出的指令调度处理中,按照所设定的指令并行度来限制按各周期配置的指令的数目。另外,关于各指令的指令延迟时间,要事先作为基准的指令延迟时间保持单线程模式的指令延迟时间的表,使用将该表的值除以所设定的指令延迟时间比后的值,来作为各指令的延迟时间。这样一来,指令调度部41就可以实施与所设定的条件相适合的指令调度。
通过采取如上的编译程序1的构成,就可以按照所输入的目标处理器的动作模式,转换为恰当的指令调度方法,能够生成执行效率高的代码。另外,还可以按照编译单位,由程序员直接指定指令调度方法,能够实现细致的性能调谐。
(实施方式2)
下面,一边参照附图,一边说明本发明实施方式2所涉及的编译程序系统。实施方式1所涉及的编译程序系统按照程序员所指定的指令调度方法,执行指令调度,而实施方式2所涉及的编译程序系统其不同之处为,按照取得的全部指令调度方法的各自,执行指令调度。
实施方式2所涉及的编译程序系统和实施方式1所涉及的编译程序系统相同,通过在图1所示的那种包含存储器和CPU的普通计算机上,执行下面说明的编译程序,来实现。
图5是表示本发明实施方式2所涉及的编译程序61构成的框图。
本实施方式2所涉及的编译程序61的大部分和实施方式1中所示的编译程序1相同,但是在实施方式1中存在的指令调度指示输入部2却不存在。另外,添加了对优化部4和代码生成部5的动作进行控制的多个代码生成控制部66。关于此外的结构要件,则和实施方式1所涉及的编译程序相同。另外,作为目标的处理器的结构也相同。因此,其详细的说明在此不重复。
在下面说明所添加的多个代码生成控制部66的动作。
图6是表示多个代码生成控制部66的处理内容的流程图。
多个代码生成控制部66与目标处理器具备的所有多线程动作模式相对应,重复下面的处理(步骤S11)。具体而言,与从模式1到模式4相对应,重复4次下面的处理。对各模式的处理如下。
首先,多个代码生成控制部66在给予了预定的多线程动作模式的设定后的状态下启动优化部4(步骤S12)。若启动了优化部4,则在优化部4内的指令调度方法设定部411中,设定与所给予的多线程模式对应的指令并行度及指令延迟时间。指令调度部41执行与所设定的指令并行度及指令延迟时间对应的指令调度。由此,获得优化后的中间代码。
多个代码生成控制部66启动代码生成部5(步骤S13)。若启动了代码生成部5,则代码生成部5根据从优化部4输出的中间代码,生成可执行代码。还有,代码生成部5在可执行代码的文件名最后附加多线程动作模式的数值。由此,能够识别是与哪个多线程动作模式对应的可执行代码。
多个代码生成控制部66对于各多线程动作模式,重复执行上面的处理(S12及S13)。
通过形成为如上的编译程序61的构成,就可以与目标处理器的所有多线程动作模式的各自相对应,启动优化部及代码生成部,并生成适于各多线程动作模式的多个可执行代码。程序员可以从所生成的多个可执行代码之中,按照程序的执行环境下硬件的设定或用途,选择恰当的可执行代码加以使用。作为结果,可以使程序的执行效率得到提高。
上面,对于本发明所涉及的编译程序系统及其结构要素,根据实施方式1及实施方式2进行了说明,但是本发明不限于这些实施方式。也就是说,
(1)在上述实施方式1及实施方式2中,假定了面向C语言的编译程序系统,但是本发明作为对象的源程序的描述语言并不仅仅限定为C语言。例如,即便在采用汇编语言等其他的编程语言时,本发明的意义也保持不变。
(2)在上述实施方式1及实施方式2中,假定了面向高级语言的编译程序系统,但是本发明并不限定于此。例如,在以汇编程序为输入的汇编优化器或者汇编指令调度器中,也可以同样适用本发明。
(3)在上述实施方式1及实施方式2中,作为目标处理器假定了能够在1个周期内进行4条指令发放,并且同时能够使3个线程进行并行动作的处理器,但是本发明并不限定为该同时发放指令数及线程数。再者,作为同时发放指令数及线程数的变化,对于指令并行度为1的场合或者线程数为1的场合,也能够适用本发明。
(4)在上述实施方式1及实施方式2中,作为目标处理器假定了超标量处理器,但是本发明并不限定于此。对于VLIW处理器,也可以适用本发明。这种情况下,不仅仅使指令并行执行效率提高,还有能够按照处理器的动作模式生成与各周期的发放限制相适合的指令串这样的效果。
(5)在上述实施方式1中,作为对指令调度指示输入部的指示方法假定了编译选项,但是本发明并不限定为该指示方法。例如,也可以是在程序中,设为#pragma命令或伪指令来描述指示的方法,还可以是在编译时编译程序对程序员提示生成代码备选由程序员选择期望的代码之类的指示方法。
(6)在上述实施方式1中,作为对指令调度指示输入部的指示内容,假定了目标处理器的多线程动作模式,但是本发明并不限定为该指示内容。例如,也可以是与处理器的其他动作模式有关的指示。另外,也可以不是处理器的动作模式,而直接指示指令调度方法。再者,也可以直接指示指令并行度或者指令延迟时间之类的设定指令调度方法所用的值。
(7)在上述实施方式1中,假定了通过指令调度方法设定部根据由程序员发出的指示的值,来设定指令调度方法,但是本发明的设定方法并不限定于此。例如,也可以采取事先保持下述表,通过参照该表来设定指令调度方法之类的方法,该表使图7所示的那种指示的值(多线程动作模式)和设定指令调度方法所用的值(指令并行度及指令延迟时间比)相关联。
(8)在上述实施方式1及实施方式2中,假定了将下述延迟时间值使用于指令调度,该延迟时间值是在指令调度部中,通过将作为基准的指令延迟时间表的延迟时间值除以由指令调度方法设定部所设定的延迟时间比而得到的。但是,本发明的延迟时间值导出方法并不限定于此。例如,也可以采取事先保持与处理器的多个多线程动作模式的各自对应的多个指令延迟时间表,通过参照与动作模式相应的表来获得延迟时间值之类的方法。
(9)在上述实施方式2中,假定了在多个代码生成控制部中对于处理器的所有多线程模式重复处理,但是本发明并不限定于此。既可以重复针对处理器其他动作模式变化的处理,也可以由编译程序重复针对预先规定的指令调度参数或者算法变化的处理。
(10)在上述实施方式2中,假定了在多个代码生成控制部中生成多个代码时,在文件名的最后附加多线程动作模式的编号,但是本发明文件名的命名方法并不限定于此。例如,既可以将多线程动作模式的编号附加于文件名的起始,也可以附加预先规定的字符串或者在编译程序内部所生成的随机数。
(11)在上述实施方式2中,假定了在多个代码生成控制部中生成与多个多线程动作模式对应的多个执行形式文件,但是本发明可执行代码的输出方法并不限定于此。也可以事先将与各动作模式对应的可执行代码结合于一个文件中进行输出,选择在执行环境下执行哪个可执行代码。
(12)也可以分别组合上述实施方式及上述异例。
此次公示出的实施方式应当认为,在所有方面是示例,并且不用来限制。本发明的范围不是上面的说明,而是由权利要求书来表示,意图包含和权利要求书均等的意义及范围内所有的变更。
产业上的可利用性
本发明可以适用于将用C语言等高级语言所描述的源程序变换为目标处理器所对应的机器语言程序的编译程序系统等。
符号说明
1 编译程序
2 指令调度指示输入部
3 分析部
4 优化部
41 指令调度部
411 指令调度方法设定部
5 代码生成部
66 多个代码生成控制部
101 源程序
102 可执行代码
Claims (19)
1.一种程序变换装置,用来将用高级语言或者汇编语言所描述的源程序变换为在目标处理器中进行动作的机器语言代码,其特征为,
具备:
存储部,存储上述源程序;
程序员指示输入部,受理用来指定指令调度方法的程序员指示的输入;以及
指令调度部,有关对存储在上述存储部中的上述源程序所对应的中间代码进行重新排列的指令调度,能够实施基于多种指令调度方法的指令调度;
上述指令调度部根据由上述程序员指示输入部所受理的上述指示从上述多种指令调度方法之中选择任一个,执行与选择出的指令调度方法相应的指令调度。
2.如权利要求1所述的程序变换装置,其特征为,
由上述程序员指示输入部受理的上述指示是与上述目标处理器的动作模式有关的指示。
3.如权利要求2所述的程序变换装置,其特征为,
上述目标处理器是具备多线程执行机构的处理器,
上述目标处理器的动作模式是与多线程动作有关的动作模式。
4.如权利要求3所述的程序变换装置,其特征为,
上述与多线程动作有关的动作模式是与分时进行动作的线程的个数或者在同一周期内进行动作的线程的个数有关的指定。
5.如权利要求2所述的程序变换装置,其特征为,
上述目标处理器是超长指令字处理器,即VLIW处理器,
上述目标处理器的动作模式是VLIW处理器的动作模式。
6.如权利要求1所述的程序变换装置,其特征为,
由上述程序员指示输入部受理的上述指示是与指令调度方法有关的指示。
7.如权利要求6所述的程序变换装置,其特征为,
上述目标处理器是具备多线程执行机构的处理器,
上述与指令调度方法有关的指示是与指令并行度有关的指示,该指令并行度表示在上述目标处理器中,能够按在同一周期内进行动作的每1线程并行执行的指令数。
8.如权利要求6所述的程序变换装置,其特征为,
上述与指令调度方法有关的指示是与指令延迟时间或者指令延迟时间比有关的信息,该指令延迟时间是在上述目标处理器中1条指令的执行所用的需要周期数,该指令延迟时间比是对于单线程模式下的指令延迟时间的指令延迟时间之比的倒数。
9.一种程序变换装置,用来将用高级语言或者汇编语言所描述的源程序变换为在目标处理器中进行动作的机器语言代码,其特征为,
具备:
存储部,存储上述源程序;
指令调度部,有关对存储在上述存储部中的上述源程序所对应的中间代码进行重新排列的指令调度,根据多种指令调度方法的各自来执行指令调度;以及
代码生成部,将由上述指令调度部根据上述多种指令调度方法进行指令调度后的多种上述中间代码,分别变换为机器语言代码。
10.如权利要求9所述的程序变换装置,其特征为,
上述指令调度方法按上述目标处理器的动作模式的每种进行了设置。
11.如权利要求10所述的程序变换装置,其特征为,
上述目标处理器是具备多线程执行机构的处理器,
上述目标处理器的动作模式是与多线程动作有关的动作模式。
12.如权利要求11所述的程序变换装置,其特征为,
上述与多线程动作有关的动作模式是与分时进行动作的线程的个数或者在同一周期内进行动作的线程的个数有关的指定。
13.如权利要求10所述的程序变换装置,其特征为,
上述目标处理器是超长指令字处理器,即VLIW处理器,
上述目标处理器的动作模式是VLIW处理器的动作模式。
14.如权利要求9所述的程序变换装置,其特征为,
上述目标处理器是具备多线程执行机构的处理器,
上述指令调度方法按指令并行度的每个值进行了设置,该指令并行度表示在上述目标处理器中,能够按在同一周期内进行动作的每1线程并行执行的指令数。
15.如权利要求9所述的程序变换装置,其特征为,
上述指令调度方法按指令延迟时间的每个值进行了设置,该指令延迟时间是用于在上述目标处理器中执行1条指令的所需周期数。
16.一种程序变换方法,通过计算机,将用高级语言或者汇编语言所描述的源程序变换为在目标处理器中进行动作的机器语言代码,其特征为,
包含:
程序员指示输入步骤,受理用来指定指令调度方法的程序员指示的输入;以及
指令调度步骤,有关对上述源程序所对应的中间代码进行重新排列的指令调度,能够实施基于多种指令调度方法的指令调度;
在上述指令调度步骤中,根据在上述程序员指示输入步骤中所受理的上述指示从上述多种指令调度方法之中选择任一个,执行与选择出的指令调度方法相应的指令调度。
17.一种程序变换方法,通过计算机,将用高级语言或者汇编语言所描述的源程序变换为在目标处理器中进行动作的机器语言代码,其特征为,
包含:
指令调度步骤,有关对上述源程序所对应的中间代码进行重新排列的指令调度,根据多种指令调度方法的各自来执行指令调度;以及
代码生成步骤,将由上述指令调度部根据上述多种指令调度方法进行指令调度后的多种上述中间代码,分别变换为机器语言代码。
18.一种程序,其特征为,
使计算机执行权利要求16或17任一项所述的程序变换方法具备的各步骤。
19.一种记录介质,其特征为,
记录着权利要求18所述的程序,并且计算机可读取。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008331632A JP5576605B2 (ja) | 2008-12-25 | 2008-12-25 | プログラム変換装置およびプログラム変換方法 |
JP2008-331632 | 2008-12-25 | ||
PCT/JP2009/005870 WO2010073463A1 (ja) | 2008-12-25 | 2009-11-05 | プログラム変換装置およびプログラム変換方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102265257A true CN102265257A (zh) | 2011-11-30 |
CN102265257B CN102265257B (zh) | 2013-12-25 |
Family
ID=42287123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980152097.5A Active CN102265257B (zh) | 2008-12-25 | 2009-11-05 | 程序变换装置及程序变换方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8612958B2 (zh) |
JP (1) | JP5576605B2 (zh) |
CN (1) | CN102265257B (zh) |
WO (1) | WO2010073463A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104350465A (zh) * | 2012-06-11 | 2015-02-11 | 英派尔科技开发有限公司 | 调整计算机程序的动态优化 |
CN104750533A (zh) * | 2013-12-31 | 2015-07-01 | 上海海尔集成电路有限公司 | C程序编译方法及编译器 |
WO2021056277A1 (zh) * | 2019-09-25 | 2021-04-01 | 西门子股份公司 | 一种执行程序的方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662720B (zh) * | 2012-03-12 | 2015-01-28 | 天津国芯科技有限公司 | 一种多发射嵌入式处理器编译器的优化方法 |
JP6340886B2 (ja) * | 2014-04-10 | 2018-06-13 | 株式会社ジェイテクト | プログラマブルロジックコントローラ用プログラムの作成支援装置及びプログラマブルロジックコントローラ用プログラムの作成支援方法 |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6059908A (ja) | 1983-09-09 | 1985-04-06 | 日新電機株式会社 | ガス絶縁開閉装置 |
US5692139A (en) * | 1988-01-11 | 1997-11-25 | North American Philips Corporation, Signetics Div. | VLIW processing device including improved memory for avoiding collisions without an excessive number of ports |
US5127092A (en) * | 1989-06-15 | 1992-06-30 | North American Philips Corp. | Apparatus and method for collective branching in a multiple instruction stream multiprocessor where any of the parallel processors is scheduled to evaluate the branching condition |
JP3311381B2 (ja) | 1992-03-18 | 2002-08-05 | 富士通株式会社 | コンパイラにおける命令スケジューリング処理方法 |
JPH0659908A (ja) * | 1992-08-11 | 1994-03-04 | Toshiba Corp | プログラム実行装置 |
JP3318051B2 (ja) * | 1993-06-17 | 2002-08-26 | 富士通株式会社 | 翻訳処理方法 |
DE69431998T2 (de) * | 1993-11-05 | 2004-08-05 | Intergraph Hardware Technologies Co., Las Vegas | Superskalare Rechnerarchitektur mit Softwarescheduling |
US5790845A (en) * | 1995-02-24 | 1998-08-04 | Hitachi, Ltd. | System with reservation instruction execution to store branch target address for use upon reaching the branch point |
JP3218932B2 (ja) * | 1995-07-06 | 2001-10-15 | 株式会社日立製作所 | データプリフェッチコード生成方法 |
US5835776A (en) * | 1995-11-17 | 1998-11-10 | Sun Microsystems, Inc. | Method and apparatus for instruction scheduling in an optimizing compiler for minimizing overhead instructions |
US6026240A (en) * | 1996-02-29 | 2000-02-15 | Sun Microsystems, Inc. | Method and apparatus for optimizing program loops containing omega-invariant statements |
JP2882475B2 (ja) * | 1996-07-12 | 1999-04-12 | 日本電気株式会社 | スレッド実行方法 |
US6021275A (en) * | 1996-08-05 | 2000-02-01 | General Magic, Inc. | Object code structure and method for translation of architecture independent program implementations |
US6085186A (en) * | 1996-09-20 | 2000-07-04 | Netbot, Inc. | Method and system using information written in a wrapper description language to execute query on a network |
US5872990A (en) * | 1997-01-07 | 1999-02-16 | International Business Machines Corporation | Reordering of memory reference operations and conflict resolution via rollback in a multiprocessing environment |
US5966537A (en) * | 1997-05-28 | 1999-10-12 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing an executable computer program using input data |
US6044222A (en) * | 1997-06-23 | 2000-03-28 | International Business Machines Corporation | System, method, and program product for loop instruction scheduling hardware lookahead |
US5941983A (en) * | 1997-06-24 | 1999-08-24 | Hewlett-Packard Company | Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues |
US5966534A (en) * | 1997-06-27 | 1999-10-12 | Cooke; Laurence H. | Method for compiling high level programming languages into an integrated processor with reconfigurable logic |
US5978588A (en) * | 1997-06-30 | 1999-11-02 | Sun Microsystems, Inc. | Method and apparatus for profile-based code placement using a minimum cut set of the control flow graph |
US6230317B1 (en) * | 1997-07-11 | 2001-05-08 | Intel Corporation | Method and apparatus for software pipelining of nested loops |
US6170051B1 (en) * | 1997-08-01 | 2001-01-02 | Micron Technology, Inc. | Apparatus and method for program level parallelism in a VLIW processor |
JPH11134197A (ja) * | 1997-10-29 | 1999-05-21 | Fujitsu Ltd | Vliw方式計算機用のコンパイル装置及び方法並びにコンパイル実行プログラムを格納した記録媒体 |
US6112299A (en) * | 1997-12-31 | 2000-08-29 | International Business Machines Corporation | Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching |
US6192515B1 (en) * | 1998-07-17 | 2001-02-20 | Intel Corporation | Method for software pipelining nested loops |
EP0997815A3 (en) * | 1998-10-29 | 2004-05-26 | Texas Instruments Incorporated | Interactive translation system and method |
US6629312B1 (en) * | 1999-08-20 | 2003-09-30 | Hewlett-Packard Development Company, L.P. | Programmatic synthesis of a machine description for retargeting a compiler |
US6385757B1 (en) * | 1999-08-20 | 2002-05-07 | Hewlett-Packard Company | Auto design of VLIW processors |
US6922829B2 (en) | 1999-10-12 | 2005-07-26 | Texas Instruments Incorporated | Method of generating profile-optimized code |
US6718544B1 (en) | 2000-02-22 | 2004-04-06 | Texas Instruments Incorporated | User interface for making compiler tradeoffs |
JP2001159983A (ja) | 1999-12-02 | 2001-06-12 | Hitachi Ltd | 共通式認識型命令スケジューリング方法 |
JP2001243077A (ja) * | 2000-02-22 | 2001-09-07 | Texas Instr Inc <Ti> | アプリケーションプログラムの最適コンパイルの方法 |
JP2002024029A (ja) * | 2000-07-11 | 2002-01-25 | Toshiba Corp | コンパイラ、コンパイル方法及びコンパイルプログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP3564445B2 (ja) * | 2001-09-20 | 2004-09-08 | 松下電器産業株式会社 | プロセッサ、コンパイル装置及びコンパイル方法 |
US20030066060A1 (en) * | 2001-09-28 | 2003-04-03 | Ford Richard L. | Cross profile guided optimization of program execution |
GB2380825B (en) * | 2001-10-12 | 2004-07-14 | Siroyan Ltd | Processors and compiling methods for processors |
US7237234B2 (en) * | 2001-12-13 | 2007-06-26 | Texas Instruments Incorporated | Method for selective solicitation of user assistance in the performance tuning process |
JP3847672B2 (ja) | 2002-07-03 | 2006-11-22 | 松下電器産業株式会社 | コンパイラ装置及びコンパイル方法 |
US7493607B2 (en) * | 2002-07-09 | 2009-02-17 | Bluerisc Inc. | Statically speculative compilation and execution |
US7269827B2 (en) * | 2002-10-21 | 2007-09-11 | Intel Corporation | Method and apparatus for compiling code |
JP3896087B2 (ja) | 2003-01-28 | 2007-03-22 | 松下電器産業株式会社 | コンパイラ装置およびコンパイル方法 |
JP2004303113A (ja) | 2003-04-01 | 2004-10-28 | Hitachi Ltd | 階層メモリ向け最適化処理を備えたコンパイラおよびコード生成方法 |
US7559050B2 (en) * | 2003-06-30 | 2009-07-07 | Microsoft Corporation | Generating software development tools via target architecture specification |
US7434209B2 (en) * | 2003-07-15 | 2008-10-07 | Transitive Limited | Method and apparatus for performing native binding to execute native code |
JP4934267B2 (ja) | 2003-10-17 | 2012-05-16 | パナソニック株式会社 | コンパイラ装置 |
JP4549652B2 (ja) * | 2003-10-27 | 2010-09-22 | パナソニック株式会社 | プロセッサシステム |
JP4283131B2 (ja) * | 2004-02-12 | 2009-06-24 | パナソニック株式会社 | プロセッサ及びコンパイル方法 |
JP2006268070A (ja) * | 2005-03-22 | 2006-10-05 | Hitachi Ltd | 並列化コンパイル処理方法及び並列化されたオブジェクトコードを実行する並列計算機 |
-
2008
- 2008-12-25 JP JP2008331632A patent/JP5576605B2/ja not_active Expired - Fee Related
-
2009
- 2009-11-05 CN CN200980152097.5A patent/CN102265257B/zh active Active
- 2009-11-05 WO PCT/JP2009/005870 patent/WO2010073463A1/ja active Application Filing
-
2011
- 2011-06-17 US US13/163,035 patent/US8612958B2/en not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104350465A (zh) * | 2012-06-11 | 2015-02-11 | 英派尔科技开发有限公司 | 调整计算机程序的动态优化 |
CN104350465B (zh) * | 2012-06-11 | 2018-02-16 | 英派尔科技开发有限公司 | 调整计算机程序的动态优化 |
CN104750533A (zh) * | 2013-12-31 | 2015-07-01 | 上海海尔集成电路有限公司 | C程序编译方法及编译器 |
CN104750533B (zh) * | 2013-12-31 | 2018-10-19 | 上海东软载波微电子有限公司 | C程序编译方法及编译器 |
WO2021056277A1 (zh) * | 2019-09-25 | 2021-04-01 | 西门子股份公司 | 一种执行程序的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102265257B (zh) | 2013-12-25 |
US8612958B2 (en) | 2013-12-17 |
WO2010073463A1 (ja) | 2010-07-01 |
JP2010152762A (ja) | 2010-07-08 |
US20110252410A1 (en) | 2011-10-13 |
JP5576605B2 (ja) | 2014-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6059840A (en) | Automatic scheduling of instructions to reduce code size | |
US8893080B2 (en) | Parallelization of dataflow actors with local state | |
US7765342B2 (en) | Systems, methods, and computer program products for packing instructions into register files | |
US20100169887A1 (en) | Apparatus and Method for Parallel Processing of A Query | |
CN107003885B (zh) | 用于低级别可组合高性能计算库的技术 | |
Ying et al. | T4: Compiling sequential code for effective speculative parallelization in hardware | |
CN102265257B (zh) | 程序变换装置及程序变换方法 | |
US20020083423A1 (en) | List scheduling algorithm for a cycle-driven instruction scheduler | |
Anantpur et al. | Runtime dependence computation and execution of loops on heterogeneous systems | |
KR102062208B1 (ko) | 멀티스레드 프로그램 코드의 변환 장치 및 방법 | |
Edwards et al. | Compiling Esterel into static discrete-event code | |
US10089088B2 (en) | Computer that performs compiling, compiler program, and link program | |
Kessler | Compiling for VLIW DSPs | |
CN113791770A (zh) | 代码编译器、代码编译方法、代码编译系统和计算机介质 | |
KR101783312B1 (ko) | 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치 및 방법 | |
Stripf et al. | A compiler back-end for reconfigurable, mixed-ISA processors with clustered register files | |
Wu et al. | Parallelizing CLIPS-based expert systems by the permutation feature of pattern matching | |
Ringenburg et al. | Optimizing loop-level parallelism in Cray XMTTM applications | |
Madsen et al. | Streaming nested data parallelism on multicores | |
Shobaki et al. | Optimal trace scheduling using enumeration | |
Lin et al. | KeSCo: Compiler-based Kernel Scheduling for Multi-task GPU Applications | |
CN112558978B (zh) | 支撑异构众核全芯片视角的加速编程和编译方法 | |
So et al. | Software thread integration for instruction-level parallelism | |
Waduge | Taming Irregular Control-Flow with Targeted Compiler Transformations | |
Zhong et al. | Long-life Sensitive Modulo Scheduling with Adaptive Loop Expansion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20151106 Address after: Kanagawa Patentee after: Co., Ltd. Suo Si future Address before: Osaka Japan Patentee before: Matsushita Electric Industrial Co., Ltd. |