CN100514295C - 程序变换方法及程序变换系统 - Google Patents
程序变换方法及程序变换系统 Download PDFInfo
- Publication number
- CN100514295C CN100514295C CNB200610071807XA CN200610071807A CN100514295C CN 100514295 C CN100514295 C CN 100514295C CN B200610071807X A CNB200610071807X A CN B200610071807XA CN 200610071807 A CN200610071807 A CN 200610071807A CN 100514295 C CN100514295 C CN 100514295C
- Authority
- CN
- China
- Prior art keywords
- mentioned
- information
- data
- program
- optimization
- 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.)
- Expired - Fee Related
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/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
Abstract
在系统软件的开发中,提高计算机整体的执行性能、且减少系统软件开发工时的程序开发系统,其具有编译系统等。编译系统是读入源程序及系统级提示信息并变换成机器语言程序的程序,生成机器语言程序,并且输出有关该程序信息的任务信息。系统级提示信息收集编译系统中的优化的提示的信息,由评测器的分析结果、程序员的指示、有关源程序的任务信息、及有关与源程序不同的其他源程序的任务信息构成。
Description
技术领域
本发明是关于将用C语言等高级语言描述的源程序变换成机器语言程序的程序变换方法及程序变换装置,特别是关于对编译器(compiler)的信息输入及编译器中的优化。
背景技术
以往,已提出了各种将由高级语言描述的源程序变换成机器语言指令串的编译器。但是,简单的编译器却不能避免例如由高速缓冲存储器的错误等的影响所造成的性能恶化。因此,近些年来,提出了根据该源程序内的信息及该源程序的评测(profile)信息,实现减少高速缓冲存储器错误的优化的编译器(例如,参照日本专利特开2001—166948号公报及日本专利特开平7-129410号公报)。
但是,在现有的技术中,只着眼于自身的任务实现优化处理。为此,依然不能考虑到系统内其他任务产生的影响,当在单一处理器上多个任务分时操作时、及在各具有本地高速缓冲存储器的多个处理器上多个任务进行操作时,由于高速缓冲存储器的高速缓冲存储错误等影响,以计算机系统整体看时,存在性能大幅下降的问题。这样的问题不仅限于编译器,在OS(Operating System)、及硬件调度器(hardware scheduler)进行任务调度(task scheduling)时,也会根据任务调度的结果,性能大幅度下降。
因此,需要系统软件的程序员人工进行试行错误性的数据配置等工作,需要大量的开发工时。
发明内容
本发明是为了解决上述课题而提出的,其目的在于提供程序变换方法等,在系统软件开发时,提高计算机系统整体的执行性能,并且可以减少系统软件的开发工时。
为了达到上述目的,本发明所涉及的程序变换方法,是将由高级语言描述的源程序变换成机器语言程序的程序变换方法,其特征在于,包括:对上述源程序进行词法分析和语法分析的解析(parse)步骤;根据上述解析步骤的分析结果,将上述源程序变换成中间代码的中间代码变换步骤;接受为提高上述机器语言程序执行效率的提示(hint)信息的提示信息接受步骤;根据上述提示信息,对上述中间代码进行优化的优化步骤;以及将优化后的上述中间代码变换成机器语言程序的机器语言程序变换步骤;在上述提示信息中,包括与对应于成为变换对象的上述源程序的执行对象以外的执行对象有关的信息。
这样,也考虑了与成为变换对象的执行对象以外的执行对象有关的信息,即与成为变换对象的任务或线程(thread)以外的任务或线程有关的信息,在系统级上的优化成为可能。因此,可以提供在系统软件开发中提高计算机系统整体的执行性能、并可减少系统软件的开发工时的程序变换方法。
另外,上述优化步骤,也可以包括根据上述提示信息、对优化对象的数据进行可有效使用高速缓冲存储器的调整的高速缓存行(cache line)调整步骤。
这样,可以考虑与变换对象以外的任务或线程有关的信息,并确定数据的配置,可以避免在高速缓冲存储器的特定集(set)上映射(mapping)偏离而产生相互冲突。从而可提高计算机系统整体的性能及提高系统软件的易开发性。
另外,上述优化步骤,也可以包括根据上述提示信息,将成为变换对象的上述执行对象分配给执行该执行对象的某个处理器的处理器分配步骤。
这样,可以考虑与变换对象以外的任务或线程有关的信息,并为在多处理器系统中,提高本地高速缓冲存储器的利用效率,而进行数据配置的确定及分配处理器的确定。从而可提高计算机系统整体的性能及提高系统软件的易开发性。
另外,这种程序变换方法中的各种步骤,也可以适用于将机器语言程序装入(load)在主存储器的载入器(loader)中。
本发明另一方面所涉及的程序开发系统,是由源程序开发机器语言程序的程序开发系统,其特征在于,包括:编译系统;执行由上述编译系统(compiler system)所生成的机器语言程序,并输出执行日志(log)的模拟器(simulator)装置;以及对由上述模拟器装置输出的上述执行日志进行分析,并对用于上述编译系统优化的执行分析结果进行输出的评测(profile)装置。上述编译系统包括第1程序变换装置、及第2程序变换装置,上述第1程序变换装置是将由高级语言描述的源程序变换成机器语言程序的程序变换装置,其包括:对上述源程序进行词法分析和语法分析的解析单元;根据上述解析单元的分析结果,将上述源程序变换成中间代码的中间代码变换单元;接受为提高上述机器语言程序执行效率的提示信息的提示信息接受单元;根据上述提示信息,对上述中间代码进行优化的优化单元;以及将优化后的上述中间代码变换成机器语言程序的机器语言程序变换单元,在上述提示信息中,包括与作为变换对象的上述源程序所对应执行对象以外的执行对象有关的信息。另外上述第2程序变换装置是接受至少1个目标文件、并将该目标文件变换成机器语言程序的程序变换装置,其特征在于,包括:接收为提高上述机器语言程序执行效率的提示信息的提示信息接收单元;以及根据上述提示信息,对上述目标文件进行优化,且变换成上述机器语言程序的优化单元,在上述提示信息中,包括与作为变换对象的上述至少1个目标文件所对应的执行对象以外的执行对象有关的信息。
这样,可以将由编译系统生成的机器语言程序的执行结果的分析结果再次反馈到编译系统。另外,对于变换对象以外的任务或线程的执行结果,也可以将该执行结果的分析结果反馈给编译系统。为此,可提高计算机系统整体的性能及提高系统软件的易开发性。
本发明不仅可以实现具有这种特征步骤的程序变换方法,也可以实现将程序变换方法中包含的特征步骤作为单元的程序变换装置,及实现将程序变换方法中所包含的特征步骤作为在计算机上执行的程序。而且,这样的程序当然也可以通过CD-ROM(Compact Disc-Read Only Memory)等记录媒体及因特网等通信网络进行流通。
与现有的编译器单元相比,由于也可以包括在有其他文件、任务、线程影响的系统级上进行优化,所以可提高计算机系统的执行性能。
另外,不需要系统软件的程序员进行试行错误的数据配置等工作,可使系统软件开发工时减少。
附图说明
图1是表示本发明的实施方式1所涉及的编译系统作为对象的系统硬件结构的方框图。
图2是表示高速缓冲存储器的硬件结构的方框图。
图3是表示高速缓冲存储器项目的详细的位结构图。
图4是表示开发机器语言程序的程序开发系统结构的方框图。
图5是表示编译系统结构的功能方框图。
图6是用于说明配置集信息设定部及数据配置确定部处理概要的图。
图7是表示高速缓存行调整部处理内容的流程图。
图8是表示调节信息的一例的图。
图9是表示高速缓存行调整部中循环的再构成转换图。
图10是表示配置集信息设定部处理内容的流程图。
图11是表示配置集信息的一例的图。
图12是表示重要数据的实际配置地址的一例的图。
图13是表示集配置状况数据的一例的图。
图14是表示数据配置确定部处理内容的流程图。
图15是表示本发明的实施方式2所涉及的编译系统作为对象的系统硬件结构的方框图。
图16是表示编译系统结构的功能方框图。
图17是表示处理器序号提示信息设定部处理内容的流程图。
图18是表示处理器分配状况数据的一例的图。
图19是表示配置集信息设定部处理内容的流程图。
图20是表示处理器序号信息确定部处理内容的流程图。
图21是表示数据配置确定部处理内容的流程图。
图22是表示系统级提示信息的一例的图。
图23是表示将本发明使用于载入器的结构的图。
具体实施方式
下面,参照附图对本发明的实施方式所涉及的编译系统进行说明。
(实施方式1)
图1是表示本发明的实施方式1所涉及的编译系统作为对象(target)的计算机系统硬件结构的方框图。计算机系统包括处理器1、主存储器2及高速缓冲存储器3。
处理器1是执行机器语言程序的处理部。
主存储器2是存储由处理器1执行的机器语言指令及各种数据等的存储器。
高速缓冲存储器3是根据4通路集联(4way set associative)方式操作、并与主存储器2相比可以更高速进行数据读写的存储器。高速缓冲存储器3的存储容量比主存储器2的存储容量小。
图2是表示高速缓冲存储器3的硬件结构的方框图。如该图所示,高速缓冲存储器3是4通路集联方式的高速缓冲存储器,包括地址寄存器10、解码器20、4个通路21a~21d(以下,分别简称为“通路0~3”)、4个比较器22a~22d、4个AND电路23a~23d、OR电路24、选择器25、及信号分离器(demultiplexer)26。
地址寄存器10是保持对主存储器2的存取地址的寄存器。该存取地址为32位。如该图所示,存取地址从最高位依次包括21位标签地址、及4位集索引(set index)(图中的SI)。此处标签地址指示映射到通路的主存储器2中的区域。集索引(SI)表示跨通路0~3的多个集中的1个。由于集索引(SI)为4位,集共存在16集。由标签地址及集索引(SI)所特定的块是置换(replace)单位,当块存放在高速缓冲存储器3中时也称为行数据(line data)或行。行数据的大小是由比集索引(SI)低位的地址位(7位)所决定的大小,即128字节。当1个字为4字节时,1行数据为32字。地址寄存器10中的最低位的7位,在通路存取时可以被忽略。
解码器20对集索引(SI)的4位数据进行解码,选择跨4个通路0~3的16集中的1个。
4个通路0~3具有相同的结构,合计共有4×2K字节的容量。通路0有16个高速缓冲存储器项目(entry)。
图3表示1个高速缓冲存储器项目的详细的位结构。如该图所示,1个高速缓冲存储器项目保持有效标志(valid flag)V、21位的标签、128字节的行数据、弱标志(weak flag)W及占用标志(duty flag)D。“有效标志V”表示该高速缓冲存储器项目是否有效,“标签”是21位的标签地址的拷贝。“行数据”是由标签地址及集索引(SI)所特定的块中的128字节数据的拷贝。“占用标志D”是表示在该高速缓冲存储器项目中是否已有写入,即在高速缓冲存储器项目中由于通过高速缓冲存储的数据的写入、而与主存储器2中的数据不同,为此是否需要写回到主存储器2(覆盖)的标志。“弱标志W”是表示从高速缓冲存储器项目驱逐对象的标志,当发生高速缓冲存储器错误时,弱标志W优先从1的高速缓冲存储器项目驱逐数据。
通路1~3也与通路0相同。由集索引(SI)的4位通过解码器20选择跨4通路的4个高速缓冲存储器项目被称为“集”。
比较器22a对地址寄存器10中的标签地址与由集索引(SI)所选择的集中所包含的4个标志中的通路0标签是否一致进行比较。对于比较器22b~22c,除了对应于通路21b~21d之外也是相同的。
AND电路23a对有效标志V与比较器22a的比较结果进行比较,检查两者是否一致。设该比较结果为h0。当比较结果h0为1时,意味着存在地址寄存器10中的标签地址及集索引(SI)所对应的行数据、即在通路0中找到了(hit)。而比较结果h0为0时,意味着未找到(mishit)。对于AND电路23b~23d,除了对应通路21b~21d之外也是相同的。该比较结果h1~h3意味着在通路1~3中是找到了还是未找到。
OR电路24是取比较结果h0~h3的“逻辑和”。以该“逻辑和”作为寻找(hit)的寻找,表示是否在高速缓冲存储器3中找到了。
选择器25在所选择的集中的通路0~3的行数据中,选择找到了通路的行数据。
信号分离器26在高速缓冲存储器项目写入数据时,输出通路0~3之一的写入数据。
图4是表示在图1所示的计算机系统的处理器1中执行的开发机器语言程序的程序开发系统30结构的方框图。程序开发系统30包括:调试器(debugger)31、模拟器(simulator)32、评测器(profiler)33、及编译系统34。程序开发系统30的各构成处理部作为在计算机(未图示)上执行的程序而被实现。
编译系统34是用于读入源程序44及系统级提示信息41、并向机器语言程序43a变换的程序。编译系统34生成机器语言程序43a,并输出作为与该程序有关的信息的任务信息42a。关于编译系统34的详细内容将在后面叙述。
调试器31是为了特定在编译系统34中的源程序44编译时发现的错误位置及原因,以及检查程序执行状况的程序。
模拟器32是虚拟执行机器语言程序的程序,执行时的信息作为执行日志信息40输出。模拟器32在其内部具有使高速缓冲存储器3的找到及未找到等模拟结果包含在执行日志信息40中输出的高速缓冲存储器用模拟器38。
评测器33是对执行日志信息40进行分析,并将编译系统34中优化等的提示的信息,输出给系统级提示信息41的程序。
系统级提示信息41用于收集编译系统34中优化的提示的信息,其构成包括评测器33的分析结果、程序员对编译系统41的指示(例如,实用、编译选项(compile option)、编入函数)、及有关源程序44的任务信息42a及有关与源程序44不同的其他源程序的任务信息42b。
关于该软件开发系统30对于计算机系统执行的多个任务,可以采用调试器31、模拟器32及评测器33进行信息分析,可以将有关由计算机系统执行的多个任务的信息作为系统级提示信息41,输入到编译系统34中。而编译系统34本身也加到机器语言程序43a中,输出与成为系统级提示信息41一部分的编译对象任务有关的任务信息42a。
图5是表示编译系统34的结构的功能方框图。该编译系统是将C语言或C++语言等高级语言描述的源程序44变换成将上述处理器1作为对象处理器的机器语言程序43a的交叉编译系统(cross compiler system),由在个人计算机等计算机上执行的程序来实现,大体由编译器35、汇编器36、及连接器37构成。
编译器35由解析部50、中间代码变换部51、系统级优化部52、及代码生成部53构成。
解析部50是对编译对象的源程序44抽出保留字(关键字)等、进行词法分析及语法分析的处理部。
中间代码变换部51是将从解析部50传递的源程序44的各语句(statement)按一定规则变换成中间代码的处理部。
系统级优化部52是对于从中间代码变换部51输出的中间代码进行冗余去除、改变指令排列、寄存器分配等的处理,由此进行执行速度提高及代码尺寸削减等的处理部,除了通常的优化处理,还包括根据所输出的系统级提示信息41,进行本编译器35特有的优化的高速缓存行调整部55及配置集信息设定部56。关于高速缓存行调整部55及配置集信息设定部56的处理将在后面叙述。系统级优化部52对与数据配置有关的信息等、其他源程序进行编译时,以及对该源程序进行再编译时,将成为提示的信息作为任务信息42a进行输出。
代码生成部53对于从系统级优化部52输出的中间代码,参照内部保持的变换表等,来将全部代码置换成机器语言指令,生成汇编程序45。
汇编器36对于从编译器35输出的汇编程序45,参照内部保持的变换表等,来将全部代码置换成二进制形式的机器语言代码,生成目标文件46。
连接器37对于从汇编器36输出的多个目标文件46,确定未解决的数据的地址配置等而进行连接,由此生成机器语言程序43a。连接器37除了通常的连接处理,还具有根据输入的系统级提示信息41等进行本连接器37特有的优化的系统级优化部57。系统级优化部57包括数据配置确定部58。对于数据配置确定部58的处理将在后面叙述。连接器37,与机器语言程序43a一起,对有关数据配置的信息等、及其他源程序进行编译时,及对该源程序进行再编译时,将成为提示的信息输出给任务信息42a。
在编译系统34中,特别力求削减高速缓冲存储器3中的高速缓冲存储错误。高速缓冲存储错误大体可分为(1)初始错误、(2)容量性错误、及(3)竞争性错误3种。
“初始错误”是指最初对目标(主存储器2中所存储的数据或指令)进行存取时,由于该目标未存储在高速缓冲存储器3中而引起的未找到。“容量性错误”是指由于一次要处理大量的目标,而未能将这些目标一次存入高速缓冲存储器3中引起的未找到。“竞争性错误”是指不同的目标要同时使用高速缓冲存储器3中的高速缓冲存储器项目,而相互从高速缓冲存储器项目进行冲突所产生的未找到。在编译系统34中,对于在系统级引起最严重的性能恶化的“竞争性错误”实施对策。
下面,以具体的例子,对以上那样构成的编译系统34的特征操作进行说明。
图6是用于说明配置集信息设定部56及数据配置确定部58的有关数据配置的优化处理的概要的图。图6(a)表示了在各任务或各文件中频繁存取的变量(变量A~F)。此处,为了简单起见,设各变量的数据量为高速缓冲存储器3的行数据量,即为128字节的倍数。在编译系统34中,使这些变量集中映射到高速缓冲存储器3上的同一集中,确定变量的配置地址、集,以使之不引起颠簸(thrashing)(冲突)。在图6的例子中,如图6(c)所示,计算机系统中的重要数据(任务A的变量A、任务B的变量D及任务C的变量F)已集中映射到高速缓冲存储器3的同一集的集1中了。因此,有可能引起颠簸。致力于通过优化避免这种情况。下面对编译系统34的各优化处理的内容进行说明。
图7是表示编译器35的系统级优化部52的高速缓存行调整部55处理内容的流程图。
高速缓存行调整部55是使后面的优化有效地发挥功能而进行各种调整处理的部分,首先根据系统级提示信息41,抽出应考虑编译对象内的配置的重要数据(步骤S11)。实际上是抽出发生评测器33或用户指示的颠簸的数据或存取频率高的数据。关于系统级提示信息41的具体例子将在后面叙述,系统级提示信息41中所包含的数据作为“重要数据”处理。
然后,高速缓存行调整部55,对于步骤S11中所抽出的数据,在数据中设定调节(align)信息,以使该数据占的行数变小(步骤12)。由于保持该调节信息、连接器37确定最终的该数据的配置地址,因此在此调整的占有行数被保持。
图8是表示调节信息的一例的图,例如,任务A数据的变量A表示应以128字节单位进行调节配置的数据。
最后,高速缓存行调整部55,对于包含抽出数据的循环,根据需要重新构成循环使各迭代的处理变为行为单位(步骤S13)。具体来说,对于在循环内的重要数据的处理数据量超过3行的循环,对循环的迭代进行分割,重新构成循环,以使之成为进行1行处理的内循环及按该单位重复的外循环的双重循环结构。具体的变换转换(image)如图9中所示。图8中所示的调节信息,由于变量A(数组A)应是按每128字节(1行大小)进行调节的,所以要向双重循环进行结构变换。该处理是为了防止在将循环处理分割成多个线程时,各线程处理的数据跨过行的边界,而降低高速缓冲存储器利用效率而进行的。即将对图9(a)所示的4行(=4×128字节)的数据(数组A)进行处理的循环处理,结构变换成如图9(b)所示,通过将数据A按各1行(=128字节)进行调节,对1行的数据进行循环处理的循环处理。
图10是表示编译器35的系统级优化部52的配置集信息设定部56处理内容的流程图。
在配置集信息设定部56中,首先从系统级提示信息41输入包括编译对象任务以外的任务的各重要数据的实际配置地址及配置集信息(步骤S21)。图11是表示根据图6中所示的数据配置作成的配置集信息的一例,由“任务名”、“数据名”、及“集序号”构成。例如,任务A的变量A表示在高速缓冲存储器3上配置在集序号1中。图12是表示重要数据的实际配置地址的一例,由“任务名”、“数据名”、及主存储器3上的“实际配置地址”构成。例如,任务名G的变量H表示配置在主存储器3的0xFFE87地址中。
然后,配置集信息设定部56,对于在步骤S21输入的是实际配置地址的数据,求出在高速缓冲存储器3上配置的集,作成系统整体的集配置状况数据(步骤S22)。该集配置状况数据表示对高速缓冲存储器的各集、系统内的重要数据进行了多少行的映射。图13是表示根据图6中所示的数据配置作成的集配置状况数据的一例的图,表示了“集序号”、及在该集序号的集上映射的数据“行数”。例如,表示了在集0中映射1行的数据,而在集1中映射3行的数据。
最后,配置集信息设定部56确定由上述高速缓存行调整部55抽出的编译对象内的重要数据的配置集,以使计算机系统整体的重要数据在映射的集中不产生偏离而是均等的,将该属性附加在数据中,并且也将该信息输出给任务信息42a(步骤S23)。该任务信息42a可在其他编译单位的编译中确定数据配置时进行参照。另外,在数据中附加的属性可在OS等的任务调度时进行参照。
图14是表示连接器37的系统级优化部57的数据配置确定部58处理内容的流程图。
在数据配置确定部58中,首先从系统级提示信息41抽出在对象任务中应考虑配置的重要数据(步骤S31)。实际上是抽出发生评测器33或用户所指示的颠簸的数据、或存取频率高的数据。该处理是与步骤S11同样的处理。
数据配置确定部58从系统级提示信息41输入也包括对象任务以外任务的各重要数据的实际配置地址及配置集信息(步骤S32)。该处理是与步骤S21同样的处理。
然后,数据配置确定部58从在步骤S32输入的实际配置地址及输入到连接器37的目标文件46的实际配置地址,求出各数据所配置的高速缓冲存储器3的集,作成计算机系统整体的集配置状况数据(步骤S33)。该集配置状况数据表示对于高速缓冲存储器的各集、系统内的重要数据进行了多少行的映射。集配置状况数据与图13中所示的相同。
最后,配置集信息确定部58确定由步骤S31抽出的对象任务内的重要数据的实际配置地址,以使计算机系统整体的重要数据在所映射的集中不产生偏离而是均等的,并且也将该信息输出给任务信息42a(步骤S34)。该任务信息42a可在其他任务的编译中确定数据配置时进行参照。即,如图13中所示的集配置状况数据的集1那样,在集中进行数据映射时,对行数最少的行(例如集3及集4)等重新映射换数据,由此重新确定实际配置地址。
这样,在编译系统34中,也包含编译对象任务以外的任务信息、作为提示信息进行输入,确定数据配置,以使重要数据向高速缓冲存储器的集的映射不偏离,由此可以防止因颠簸而产生的性能降低。
(实施方式2)
图15是表示本发明的实施方式2所涉及的编译系统作为对象的计算机系统硬件结构的方框图。计算机系统包括:3个处理器(61a~61c)、各自具有的本地高速缓冲存储器(63a~63c)、及共用存储器62。具有本地高速缓冲存储器的3个处理器,通过总线64连接到共用存储器62上。
关于处理器61a~61c的各操作与实施方式1中所述的相同,共用存储器62的操作与实施方式1中所述的主存储器2相同。计算机系统内的各程序或线程通过操作系统进行调度,以使在上述3个处理器61a~61c上并行执行。可将输入到该操作系统的任务调度的提示信息,作为编译系统嵌入机器语言程序中。具体来说附加了希望各任务及线程分配给某个处理器、还是希望将某个任务及线程一同分配给相同的处理器的提示信息。
各本地高速缓冲存储器63a~63c,除了实施方式1所述的高速缓冲存储器3的、保持主存储器2的内容并可以高速存取的功能,还具有保持数据一贯性的功能。该功能可使多个本地高速缓冲存储器63a~63c保持共用存储器62的同一地址的数据,避免各自独立更新产生的误操作。具体来说,本地高速缓冲存储器63a~63c具有监视总线64及其他本地高速缓冲存储器63a~63c的状态的功能,当与自己保持的数据相同地址的数据在其他本地高速缓冲存储器63a~63c上进行更新时,使自己保持的数据无效,由此来维持一贯性。
通过该机构可以维持数据的一贯性,但是当频繁产生数据无效化时,在性能方面将产生大幅度恶化。从而,在程序开发系统中也考虑这一点,以提高高速缓冲存储器63a~63c的利用效率。
程序开发系统的结构与实施方式1中图4所示的程序开发系统30的结构相同。但是,采用了以下说明的编译系统74,以代替编译系统34。
图16是表示程序开发系统内编译系统74结构的功能方框图。由于几乎所有部分都与实施方式1中图5所示的编译系统34的结构图相同,故以下只对不同的部分进行说明。
编译系统74采用编译器75代替编译系统34中的编译器35,采用连接器77代替连接器37。
编译器75采用系统级优化部82代替编译器35的系统级优化部52。系统级优化部82在系统级优化部52中增加了处理器序号提示信息设定部86,并且采用配置集信息设定部86代替配置集信息设定部56。关于高速缓存行调整部55的操作,与实施方式1中说明的相同。
连接器77采用系统级优化部77代替连接器37的系统级优化部57。系统级优化部77在系统级优化部57中增加了处理器序号信息设定部89,并采用数据配置确定部88代替数据配置确定部58。
图17是表示处理器序号提示信息设定部85处理内容的流程图。
在处理器序号提示信息设定部85中,首先根据系统级提示信息41,抽出应考虑线程及任务中的数据配置的重要数据(步骤S41)。实际上是抽出发生评测器33或用户所指示的颠簸的数据、或存取频率高的数据。
处理器序号提示信息设定部85从系统级提示信息41中输入也包括编译对象任务以外任务的各重要数据的实际配置地址、配置集信息、及各任务的处理器序号提示信息(步骤S42)。
然后,处理器序号提示信息设定部85对每个处理器序号进行各重要数据的分类,并作成作为系统整体的处理器分配状况数据(步骤S43)。该处理器分配状况数据表示指示了对各处理器分配哪个地址及集的重要数据。例如,图18中所示的数据。
最后,处理器序号提示信息设定部85对于在步骤S41抽出的各数据所属的线程及任务,考虑上述处理器分配状况数据,确定该线程及任务的处理器序号提示,以使之对同一地址的数据分配到同一处理器,并在映射到同一处理器的同一集中的数据不产生偏离而是均等的,附加该属性,并且也将该信息输出到任务信息42a(步骤S44)。该任务信息42a可在其他编译单位的编译中确定数据配置及处理器序号时进行参照。
图19是表示配置集信息设定部86处理内容的流程图。
在配置集信息设定部86中,首先从系统级提示信息41输入也包括编译对象任务以外的任务的各重要数据的实际配置地址、配置集信息、及处理器序号信息(步骤S51)。
然后,配置集信息设定部86对于由上述处理器序号提示信息设定部85抽出的该线程及任务的重要数据,检查同一地址的数据是否分配给了3个以上的处理器,如果是,则在该数据中附加不可高速缓冲存储区域的属性,并将该信息也输出给任务信息42a(步骤S52)。“不可高速缓冲存储区域”是指该区域内的数据不被传输给本地高速缓冲存储器63a~63c的、共用存储器62内的区域。步骤52的处理是为了使重要数据被拷贝到多个本地高速缓冲存储器中、维持数据一贯性的附加(overhead)处理,由此为防止性能恶化而实施的。
以后的处理按每个处理器序号实施。对于未给予处理器序号的数据,作为分配给一个处理器处理、执行处理。即当在步骤S51所输入的信息是实际配置地址时,配置集信息设定部86求出配置在该地址的数据所配置的本地高速缓冲存储器上的集,作成该处理器整体的集配置状况数据(步骤S53)。该集配置状况数据表示对高速缓冲存储器的各集、该处理器内的重要数据被映射了几行。即,与图13中所示的相同。
最后,配置集信息设定部86确定由上述处理器序号提示信息设定部85抽出的编译对象内的重要数据的配置集,以使该处理器整体的重要数据在所映射的集中不产生偏离而是均等的,将该属性附加在数据中,并且也将该信息输出给任务信息42a(步骤S54)。该任务信息42a可在其他编译单位的编译中确定数据配置及处理器序号时进行参照。
图20是表示处理器序号信息设定部89处理内容的流程图。
在处理器序号信息设定部89中,首先根据系统级提示信息41,抽出应考虑线程及任务中的数据配置的重要数据(步骤S61)。实际上是抽出发生评测器33或用户所指示的颠簸的数据、或存取频率高的数据。
处理器序号信息设定部89从系统级提示信息41输入也包括编译对象任务以外任务的各重要数据的实际配置地址、配置集信息、及各任务的处理器序号提示信息(步骤S62)。
然后,处理器序号信息设定部89对每个处理器序号进行各重要数据的分类,并作成系统整体的处理器分配状况数据(步骤S63)。该处理器分配状况数据表示对各处理器指示了分配哪个地址及集的重要数据。例如,图18中所示的数据。
最后,处理器序号信息设定部89对于在步骤S61抽出的各数据所属的线程及任务,考虑上述处理器分配状况数据,确定该线程及任务的处理器序号,以使之对同一地址的数据分配到相同的处理器,并使映射到同一处理器的同一集中的数据不产生偏离而是均等的,附加该属性,并且也将该信息输出到任务信息42a(步骤S64)。该任务信息42a,可在其他编译单位的编译中确定数据配置及处理器序号时进行参照。另外,OS或硬件调度器通过查看附加在任务中的属性信息,可以将任务分配给处理器,进行任务调度。
图21是表示数据配置确定部88处理内容的流程图。
在数据配置确定部88中,首先从系统级提示信息41输入也包括编译对象任务以外的任务的各重要数据的实际配置地址、配置集信息、及处理器序号信息(步骤S71)。
然后,数据配置确定部88对于由上述处理器序号信息设定部89抽出的线程及任务的重要数据,检查同一地址的数据是否分配给了3个以上的处理器,如果是,则在该数据中附加不可高速缓冲存储区域的属性,并将该信息也输出给任务信息42a(步骤S72)。该处理是为了使重要数据拷贝到多个本地高速缓冲存储器中、维持一贯性的附加处理,由此为防止性能恶化而实施的。
以后的处理按每个处理器序号实施。对于未给予处理器序号的数据,作为分配给一个处理器处理,执行处理。数据配置确定部88从步骤S71所输入的实际配置地址及所输入的目标文件的实际配置地址,求出各自被配置的集,作成该处理器整体的集配置状况数据(步骤S73)。该集配置状况数据表示对高速缓冲存储器的各集、该处理器内的重要数据被映射了几行。
最后,配置集信息确定部88确定由上述处理器序号信息设定部89抽出的编译对象内的重要数据的实际配置地址,以使该处理器整体的重要数据在所映射的集中不产生偏离而是均等的,并且也将该信息输出给任务信息42a(步骤S74)。该任务信息42a可在其他编译单位的编译中确定数据配置及处理器序号时进行参照。
如以上所述,在编译系统74中,也包含编译对象任务以外的任务信息、作为提示信息进行输入,确定数据配置,以使之在多处理器中同一数据不分散到多个处理器的本地高速缓冲存储器中,且向各本地高速缓冲存储器的集的映射不偏离,由此可以防止因颠簸而产生性能降低。
作为补充说明,在以上说明的实施方式中,对于编译系统输入的系统级提示信息文件的一例如图22中所示。
如图22中所示,在编译系统中作为用于确定数据配置及处理器序号的信息,对于系统内的各任务及其包含的各线程,与在该时刻分配处理器ID一起,如果确定为重要的数据名称,则可以指定该地址及集序号。例如,由<TaskInfo>及</TaskInfo>所包围的部分表示对1个任务的任务信息,而由<ThreadInfo>及</ThreadInfo>所包围的部分表示对1个线程的线程信息。另外,由<VariableInfo>及</VariableInfo>所包围的部分对应于上述一个重要数据,其中包括实际地址信息、及处理器序号等的信息。该提示信息如图4的程序开发系统结构图中所示,包括从评测器33自动生成的信息、从编译系统自动生成的信息、及程序员描述的信息。
以上,通过实施方式对本发明所涉及的程序开发方法及编译系统进行了说明,但是本发明并不限于这些实施方式。即,
(1)在上述实施方式中,作为系统级提示信息的赋予方是假定以文件进行输入的,但是并不限于文件输入,采用以编译选项指定的方法、在源文件内增加实用指示的方法、及在源文件内增加表示指示内容的编入函数的方法,也可以实现本发明的效果。
(2)在上述实施方式中,是假定在编译系统中进行静态优化,但是如图23中所示,也可以在存储器中装入有程序及数据的载入器90中安装本发明的机构。这时载入器90读入各机器语言程序43及系统级提示信息92,附加处理器序号提示信息,并且确定重要数据的配置地址,据此在主存储器91中配置数据。这样的结构也可以实现本发明的效果。
(3)在上述实施方式中,分别表示了实施方式1中所示的单处理器用的编译系统、及实施方式2中所示的多处理器用编译系统,但是这些并不一定是独立的。也可以用一个编译系统对应于单处理器及多处理器两种情况。这时,可以通过以编译选项及提示信息的形式将有关对象处理器的信息赋予编译系统来实现,。
(4)在上述实施方式2中,是以共用存储器型的多处理器为对象的,但是本发明并不限定该多处理器及高速缓冲存储器的结构。在不具有集中共用存储器的分散共用存储器型等结构的多处理器系统中,本发明也具有意义。
(5)在上述实施方式2中,是假设OS根据处理器序号提示信息在各处理器中对任务及线程进行调度的,但是也不一定需要OS的存在。也可以在代替OS而装有由硬件实施调度的调度器的系统中,实现本发明的效果。
(6)在上述实施方式2中,是假设由实际处理器构成的多处理器系统,但是也不一定是实际处理器。例如,在使单处理器进行分时操作、而作为虚拟多处理器工作的系统、及在具有多个这种虚拟多处理器的多处理器系统中,本发明也具有意义。
产业上利用的可能性
本发明可以适用于编译系统、特别是可以适用于以执行多任务的系统为对象的编译系统等中。
Claims (32)
1、一种程序变换方法,将由高级语言描述的源程序变换成机器语言程序,其特征在于,包括:
解析步骤,对上述源程序进行词法分析和语法分析;
中间代码变换步骤,根据上述解析步骤的分析结果,将上述源程序变换成中间代码;
提示信息接受步骤,接受用于提高上述机器语言程序执行效率的提示信息;
优化步骤,根据上述提示信息,对上述中间代码进行优化;以及
机器语言程序变换步骤将优化后的上述中间代码变换成机器语言程序,
在上述提示信息中,包含与成为变换对象的上述源程序所对应的执行对象以外的执行对象有关的信息。
2、如权利要求1所述的程序变换方法,其特征在于:
在上述提示信息中,包含表示还含有与变换对象相对应的执行对象以外的执行对象、而应作为优化对象的数据的信息;
上述优化步骤,包括根据上述提示信息,对作为优化对象的数据,进行可有效使用高速缓冲存储器的调整的高速缓存行调整步骤。
3、如权利要求1所述的程序变换方法,其特征在于:
上述优化步骤包括高速缓存行调整步骤,该高速缓存行调整步骤根据上述提示信息,对作为优化对象的数据,进行可有效使用高速缓冲存储器的调整;
上述高速缓存行调整步骤中,对作为优化对象的数据调整数据配置,以使该数据所占的高速缓冲存储器上的行数减少。
4、如权利要求1所述的程序变换方法,其特征在于:
上述优化步骤包括高速缓存行调整步骤,该高速缓存行调整步骤根据上述提示信息,对作为优化对象的数据,进行可有效使用高速缓冲存储器的调整;
上述高速缓存行调整步骤中,对于包括作为优化对象的数据的循环进行循环分割,以便在该循环的迭代中,可以以高速缓冲存储器的行为单位对该数据进行存取。
5、如权利要求1所述的程序变换方法,其特征在于:
在上述提示信息中,包含与也包括与变换对象相对应的执行对象以外的执行对象、而应作为优化对象数据的实际配置地址有关的信息;
上述优化步骤,包括根据上述提示信息,设定与作为优化对象的数据在高速缓冲存储器上所配置的集有关的信息的配置集信息设定步骤。
6、如权利要求1所述的程序变换方法,其特征在于:
在上述提示信息中,包含表示还包括与变换对象相对应的执行对象以外的执行对象、而作为优化对象的数据被配置在高速缓冲存储器的某个集中的信息;
上述优化步骤包括配置集信息设定步骤,该配置集信息设定步骤根据上述提示信息,设定与作为优化对象的数据在高速缓冲存储器上所配置的集有关的信息。
7、如权利要求1所述的程序变换方法,其特征在于:
上述优化步骤包括配置集信息设定步骤,该配置集信息设定步骤根据上述提示信息,设定与作为优化对象的数据在高速缓冲存储器上所配置的集有关的信息;
上述配置集信息设定步骤中,根据上述提示信息,确定作为优化对象的数据被配置在高速缓冲存储器的某个集中,从而不会产生因上述提示信息所指定的数据被配置在高速缓冲存储器上的同一个集中而相互冲突的情况。
8、如权利要求1所述的程序变换方法,其特征在于:
上述优化步骤包括配置集信息设定步骤,该配置集信息设定步骤根据上述提示信息,设定与作为优化对象的数据在高速缓冲存储器上所配置的集有关的信息;
上述配置集信息设定步骤中,根据上述提示信息,确定作为变换对象的执行对象中所包含的数据配置,以使映射到高速缓冲存储器的各集中的数据数均等。
9、如权利要求1所述的程序变换方法,其特征在于:
上述优化步骤,包括:配置集信息设定步骤,根据上述提示信息,设定与作为优化对象的数据在高速缓冲存储器上所配置的集有关的信息;以及
提示信息输出步骤,将由上述配置集信息设定步骤所确定的配置信息作为提示信息输出。
10、如权利要求1所述的程序变换方法,其特征在于:
上述优化步骤包括配置集信息设定步骤,该配置集信息设定步骤根据上述提示信息,设定与作为优化对象的数据在高速缓冲存储器上所配置的集有关的信息;
上述配置集信息设定步骤中,根据上述提示信息,在由上述提示信息所指定的数据中,对于分配给预定数量以上的处理器的数据,确定将该数据配置在不被分配给高速缓冲存储器的主存储器上的区域。
11、如权利要求1所述的程序变换方法,其特征在于:
在上述提示信息中,包含表示还包括与变换对象相对应的执行对象以外的执行对象、而各执行对象被分配在某个处理器的信息;
上述优化步骤包括配置集信息设定步骤,该配置集信息设定步骤根据上述提示信息,设定与作为优化对象的数据在高速缓冲存储器上所配置的集有关的信息。
12、如权利要求1所述的程序变换方法,其特征在于:
上述优化步骤包括处理器分配步骤,该处理器分配步骤根据上述提示信息,将作为变换对象的上述执行对象分配给该执行对象被执行的某个处理器;
上述处理器分配步骤中,根据上述提示信息,将上述执行对象分配给该执行对象被执行的某个处理器,以便不会产生因上述提示信息所指定的数据被配置在高速缓冲存储器上的同一个集中而相互冲突的情况、或同一数据被分散配置在多个处理器中的情况。
13、如权利要求1所述的程序变换方法,其特征在于:
上述优化步骤包括处理器分配步骤,该处理器分配步骤根据上述提示信息,将作为变换对象的上述执行对象分配给执行该执行对象的某个处理器;
上述处理器分配步骤中,根据上述提示信息,将上述执行对象分配给执行该执行对象的某个处理器,以使映射到各处理器的本地高速缓冲存储器各集中的数据数均等。
14、如权利要求1所述的程序变换方法,其特征在于:
上述优化步骤,包括:处理器分配步骤,根据上述提示信息,将作为变换对象的上述执行对象分配给执行该执行对象的某个处理器;以及
提示信息输出步骤,将与上述处理器分配步骤所确定的执行对象的处理器分配有关的信息作为提示信息进行输出。
15、一种程序变换方法,接受至少1个目标文件,将该目标文件变换成机器语言程序,其特征在于,包括:
提示信息接收步骤,接收用于提高上述机器语言程序执行效率的提示信息;以及
优化步骤,根据上述提示信息,对上述目标文件进行优化,且变换成上述机器语言程序;
在上述提示信息中,包括与成为变换对象的上述至少1个目标文件所对应的执行对象以外的执行对象有关的信息,
上述优化步骤包括数据配置确定步骤,该数据配置确定步骤根据上述提示信息,确定作为优化对象的上述目标文件所包含的数据的实际配置地址。
16、如权利要求15所述的程序变换方法,其特征在于:
在上述提示信息中,包含表示还包括与变换对象相对应的执行对象以外的执行对象、而应作为优化对象的数据的信息。
17、如权利要求15所述的程序变换方法,其特征在于:
在上述提示信息中,包含与还包括与变换对象相对应的执行对象以外的执行对象、而应作为优化对象的数据的实际配置地址有关的信息。
18、如权利要求15所述的程序变换方法,其特征在于:
在上述提示信息中,包含表示还包括与变换对象相对应的执行对象以外的执行对象、而应作为优化对象的数据配置在高速缓冲存储器的哪个集中的信息。
19、如权利要求15所述的程序变换方法,其特征在于:
上述数据配置确定步骤中,根据上述提示信息,确定作为优化对象的上述目标文件中所包含的数据的实际配置地址,从而不会产生因多个数据被配置在高速缓冲存储器上的同一个集中而相互冲突的情况。
20、如权利要求15所述的程序变换方法,其特征在于:
上述数据配置确定步骤中,根据上述提示信息,确定应作为优化对象的数据所配置的高速缓冲存储器上的集,以使被映射到高速缓冲存储器的各集中的数据数均等,并根据所确定的集,确定作为优化对象的上述目标文件中所包含的数据的实际配置地址。
21、如权利要求15所述的程序变换方法,其特征在于:
上述优化步骤还包括提示信息输出步骤,该提示信息输出步骤将与上述数据配置确定步骤所确定的实际配置地址有关的信息作为提示信息进行输出。
22、如权利要求15所述的程序变换方法,其特征在于:
上述数据配置确定步骤中,根据上述提示信息,确定作为优化对象的上述目标文件中所包含数据的实际配置地址,从而不会产生因上述提示信息所指定的数据被配置在高速缓冲存储器上同一个集中而相互冲突的情况、或者同一数据被分散配置在多个处理器中的情况。
23、如权利要求15所述的程序变换方法,其特征在于:
上述数据配置确定步骤中,根据上述提示信息,确定作为优化对象的上述目标文件中所包含的数据的实际配置地址,以使被映射到各处理器的本地高速缓冲存储器各集中的数据数均等。
24、如权利要求15所述的程序变换方法,其特征在于:
上述数据配置确定步骤中,根据上述提示信息,在由上述提示信息指定、并包含在作为优化对象的上述目标文件的数据中,对于分配给预定数量以上处理器的数据,确定该数据的实际配置地址,以使该数据配置在不被分配到高速缓冲存储器的主存储器上的区域。
25、如权利要求15所述的程序变换方法,其特征在于:
上述优化步骤包括处理器分配步骤,该处理器分配步骤根据上述提示信息,将上述执行对象分配给执行该执行对象的某个处理器。
26、如权利要求25所述的程序变换方法,其特征在于:
在上述提示信息中,包含表示还包括与变换对象相对应的执行对象以外的执行对象、而各执行对象被分配在哪个处理器的信息。
27、如权利要求25所述的程序变换方法,其特征在于:
上述处理器分配步骤中,根据上述提示信息,将上述执行对象分配给执行该执行对象的某个处理器,从而不会产生因上述提示信息所指定的数据被配置在高速缓冲存储器上同一个集中而相互冲突的情况、或者同一数据被分散配置在多个处理器中的情况。
28、如权利要求25所述的程序变换方法,其特征在于:
上述处理器分配步骤中,根据上述提示信息,将上述执行对象分配给执行该执行对象的某个处理器,以使被映射到各处理器的本地高速缓冲存储器各集中的数据数均等。
29、如权利要求25所述的程序变换方法,其特征在于:
上述优化步骤还包括提示信息输出步骤,该提示信息输出步骤将与上述处理器分配步骤所确定的执行对象的处理器分配有关信息作为提示信息进行输出。
30、一种程序开发系统,其从源程序开发机器语言程序,其特征在于,包括:
编译系统;
模拟器装置,执行由上述编译系统所生成的机器语言程序,并输出执行日志;以及
评测装置,对由上述模拟器装置所输出的上述执行日志进行分析,并对用于上述编译系统中的优化的执行分析结果进行输出,
上述编译系统,是从源程序开发机器语言程序的编译系统,包括:
第1程序变换装置,将由高级语言描述的源程序变换成第1机器语言程序;以及
第2程序变换装置,接受至少1个目标文件,并将该目标文件变换成第2机器语言程序,
上述第1程序变换装置,包括:
解析单元,对上述源程序进行词法分析和语法分析;
中间代码变换单元,根据上述解析单元的分析结果,将上述源程序变换成中间代码;
第1提示信息接受单元,接受用于提高上述第1机器语言程序执行效率的第1提示信息;
第1优化单元,根据上述第1提示信息,对上述中间代码进行优化;以及
第1机器语言程序变换单元,将由上述第1优化单元优化后的上述中间代码变换成第1机器语言程序,
在上述第1提示信息中,包括与作为变换对象的上述源程序所对应的执行对象以外的执行对象有关的信息,
上述第2程序变换装置,包括:
第2提示信息接收单元,接收用于提高上述第2机器语言程序执行效率的第2提示信息;以及
第2优化单元,根据上述第2提示信息,对上述目标文件进行优化,且变换成上述第2机器语言程序,
在上述第2提示信息中,包括与作为变换对象的上述至少1个目标文件所对应的执行对象以外的执行对象有关的信息。
31、如权利要求30所述的程序开发系统,其特征在于:
在上述提示信息中,包括有上述编译系统输出的提示信息。
32、如权利要求30所述的程序开发系统,其特征在于:
在上述提示信息中,包括有上述评测装置输出的上述执行分析结果。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP075916/2005 | 2005-03-16 | ||
JP2005075916A JP2006260096A (ja) | 2005-03-16 | 2005-03-16 | プログラム変換方法およびプログラム変換装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1834922A CN1834922A (zh) | 2006-09-20 |
CN100514295C true CN100514295C (zh) | 2009-07-15 |
Family
ID=37002685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200610071807XA Expired - Fee Related CN100514295C (zh) | 2005-03-16 | 2006-03-16 | 程序变换方法及程序变换系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20060212440A1 (zh) |
JP (1) | JP2006260096A (zh) |
CN (1) | CN100514295C (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5226328B2 (ja) * | 2007-03-27 | 2013-07-03 | パナソニック株式会社 | コード変換装置 |
US8180964B1 (en) * | 2007-09-28 | 2012-05-15 | The Mathworks, Inc. | Optimization of cache configuration for application design |
US8706964B1 (en) | 2007-09-28 | 2014-04-22 | The Mathworks, Inc. | Automatic generation of cache-optimized code |
JP2009169862A (ja) * | 2008-01-18 | 2009-07-30 | Panasonic Corp | プログラム変換装置、方法、プログラムおよび記録媒体 |
JP2009187285A (ja) * | 2008-02-06 | 2009-08-20 | Panasonic Corp | プログラム変換方法、プログラム変換装置およびプログラム |
US8527974B2 (en) * | 2008-03-28 | 2013-09-03 | International Business Machines Corporation | Data transfer optimized software cache for regular memory references |
US8561043B2 (en) * | 2008-03-28 | 2013-10-15 | International Business Machines Corporation | Data transfer optimized software cache for irregular memory references |
JP2010026851A (ja) * | 2008-07-22 | 2010-02-04 | Panasonic Corp | コンパイラによる最適化方法 |
US8694975B2 (en) | 2008-09-09 | 2014-04-08 | Nec Corporation | Programming system in multi-core environment, and method and program of the same |
US8561044B2 (en) * | 2008-10-07 | 2013-10-15 | International Business Machines Corporation | Optimized code generation targeting a high locality software cache |
US20110099439A1 (en) * | 2009-10-23 | 2011-04-28 | Infineon Technologies Ag | Automatic diverse software generation for use in high integrity systems |
CN101763342B (zh) * | 2009-12-31 | 2012-07-04 | 中兴通讯股份有限公司 | 生成计算机代码的方法及自然语言解释中心和应用控制端 |
US9003380B2 (en) * | 2010-01-12 | 2015-04-07 | Qualcomm Incorporated | Execution of dynamic languages via metadata extraction |
US20110208948A1 (en) * | 2010-02-23 | 2011-08-25 | Infineon Technologies Ag | Reading to and writing from peripherals with temporally separated redundant processor execution |
US8930913B2 (en) | 2010-09-28 | 2015-01-06 | Microsoft Corporation | Intermediate representation construction for static analysis |
US8793675B2 (en) * | 2010-12-24 | 2014-07-29 | Intel Corporation | Loop parallelization based on loop splitting or index array |
CN102207884A (zh) * | 2011-06-02 | 2011-10-05 | 深圳市茁壮网络股份有限公司 | 一种文件编译方法及装置 |
CN103760965B (zh) * | 2014-02-21 | 2016-08-17 | 中南大学 | 一种能量受限嵌入式系统的算法源程序节能优化方法 |
US10642617B2 (en) * | 2015-12-08 | 2020-05-05 | Via Alliance Semiconductor Co., Ltd. | Processor with an expandable instruction set architecture for dynamically configuring execution resources |
JP6981087B2 (ja) * | 2017-08-03 | 2021-12-15 | 富士通株式会社 | 情報処理装置、方法、及びプログラム |
CN108829024B (zh) * | 2018-05-30 | 2020-10-27 | 广州明珞软控信息技术有限公司 | 一种plc程序生成方法及系统 |
JP2021005287A (ja) | 2019-06-27 | 2021-01-14 | 富士通株式会社 | 情報処理装置及び演算プログラム |
US20200226067A1 (en) * | 2020-03-24 | 2020-07-16 | Intel Corporation | Coherent multiprocessing enabled compute in storage and memory |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631518B1 (en) * | 1997-03-19 | 2003-10-07 | International Business Machines Corporation | Generating and utilizing organized profile information |
JP3234552B2 (ja) * | 1997-09-30 | 2001-12-04 | 松下電器産業株式会社 | 最適化装置及びコンピュータ読取可能な記録媒体 |
JP2001166948A (ja) * | 1999-12-07 | 2001-06-22 | Nec Corp | プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体 |
US7107583B2 (en) * | 2001-02-16 | 2006-09-12 | Hewlett-Packard Development Company, L.P. | Method and apparatus for reducing cache thrashing |
US20060158354A1 (en) * | 2002-08-02 | 2006-07-20 | Jan Aberg | Optimised code generation |
JP3801545B2 (ja) * | 2002-08-02 | 2006-07-26 | 松下電器産業株式会社 | コンパイラ用プログラム、コンパイラ装置及びコンパイル方法 |
JP4157016B2 (ja) * | 2003-11-05 | 2008-09-24 | 株式会社東芝 | コンパイラ装置及びコンパイル方法 |
US7555748B2 (en) * | 2004-08-30 | 2009-06-30 | International Business Machines Corporation | Method and apparatus for improving data cache performance using inter-procedural strength reduction of global objects |
-
2005
- 2005-03-16 JP JP2005075916A patent/JP2006260096A/ja not_active Withdrawn
-
2006
- 2006-03-09 US US11/370,859 patent/US20060212440A1/en not_active Abandoned
- 2006-03-16 CN CNB200610071807XA patent/CN100514295C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1834922A (zh) | 2006-09-20 |
JP2006260096A (ja) | 2006-09-28 |
US20060212440A1 (en) | 2006-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100514295C (zh) | 程序变换方法及程序变换系统 | |
CN102165428B (zh) | 软件应用性能增强 | |
US5021947A (en) | Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing | |
US7987458B2 (en) | Method and system for firmware image size reduction | |
DE69826700T2 (de) | Kompilerorientiertes gerät zur parallelkompilation, simulation und ausführung von rechnerprogrammen und hardwaremodellen | |
CN100585560C (zh) | 在具有多个发送端口的处理器中准备指令群的方法和系统 | |
CN100356327C (zh) | 用于多处理系统的软件管理的高速缓存优化系统和方法 | |
CN110088737A (zh) | 将并发程序转换为可部署在基于fpga的云基础设施上的硬件的综合路径 | |
US7069548B2 (en) | Inter-procedure global register allocation method | |
DE102005021749A1 (de) | Verfahren und Vorrichtung zur programmgesteuerten Informationsverarbeitung | |
CN102713846B (zh) | 处理器可执行的代码的生成方法、以及存储区域管理方法 | |
Alvanos et al. | Improving communication in PGAS environments: Static and dynamic coalescing in UPC | |
US7747992B2 (en) | Methods and apparatus for creating software basic block layouts | |
US20230116546A1 (en) | Method for compilation, electronic device and storage medium | |
DeVries | A vectorizing SUIF compiler: implementation and performance. | |
Alvanos et al. | Automatic communication coalescing for irregular computations in UPC language | |
Chambers et al. | Iterative type analysis and extended message splitting: Optimizing dynamically-typed object-oriented programs | |
Rodrigues | Programming future architectures: dusty decks, memory walls, and the speed of light | |
US20080270972A1 (en) | Methods for type analysis in systems for code generation | |
Chaiken | Mechanisms and Interfaces for Software-Extended Coherent Shared Memory | |
Muller et al. | Caches with compositional performance | |
Liu | Techniques for Accelerating Large-Scale Automata Processing | |
Welker | Determining the Perfect Vectorization Factor | |
Oey et al. | Embedded Multi-Core Code Generation with Cross-Layer Parallelization | |
Verma | Deep learning training at scale: experiments with MLPerf on multi-GPU and multi-TPU hardware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090715 Termination date: 20110316 |