CN101923481A - 基于代码复制超级块的程序执行优化方法 - Google Patents
基于代码复制超级块的程序执行优化方法 Download PDFInfo
- Publication number
- CN101923481A CN101923481A CN2010102785380A CN201010278538A CN101923481A CN 101923481 A CN101923481 A CN 101923481A CN 2010102785380 A CN2010102785380 A CN 2010102785380A CN 201010278538 A CN201010278538 A CN 201010278538A CN 101923481 A CN101923481 A CN 101923481A
- Authority
- CN
- China
- Prior art keywords
- superblock
- intermediate language
- fundamental block
- carried out
- program
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
一种计算机技术领域的基于代码复制超级块的程序执行优化方法,通过将程序划分后***探测指令并构造得到中间语言超级块,然后设置生成中间语言超级块的平衡机制参数并进行筛选指导处理;并将中间语言超级块翻译成目标超级块,供二进制翻译器执行。本发明通过基本块代码复制来生成超级块,使得基本块的长度变长,基本块的数量减少,从而提高生成的超级块的质量,且可移植性好。
Description
技术领域
本发明涉及的是一种计算机技术领域的方法,具体是一种二进制***中的基于代码复制超级块的程序执行优化方法。
背景技术
动态二进制翻译是虚拟执行技术中应用最为广泛的方法,是为遗留代码提供移植可能性和提高软件的平台适应性的一种有效手段,它在不需要可执行程序的源代码的情况下,可以动态地将源机器平台上的二进制程序经过转换,运行于其他目标机器平台上。对于动态二进制翻译器自身而言,执行性能是一个非常重要的衡量指标。所谓执行性能是指,以源程序在原架构下运行的效率为参照,其在动态二进制翻译器提供的运行环境下的效率损失度越低,翻译器的执行性能越好。
为了提高动态二进制翻译器的性能,动态翻译器采用很多原本在编译领域被广泛采用的策略和方法,鉴于动态二进制翻译与编译技术相比缺少源代码资源的特性,所以也发展出来了动态二进制领域所特有的优化技术和方法。其中被广泛采用的有超级块生成技术、链接技术等。在动态二进制领域,因为没有源代码,对程序所进行的优化等所需要的大部分信息都是通过程序的剖分信息来获取的。
一般来说,在动态二进制领域,对源程序的翻译,执行,优化等操作都是以源程序的基本块为单位进行的。所谓基本块,是指仅有一个入口,并且以跳转,返回等指令结束的一组指令序列。程序从基本块的入口开始执行,然后,最终在基本块的出口跳出,并跳到另外一个基本块的入口继续执行指令序列。程序的剖分信息的获取就是以基本块为单位进行的,包括基本块的执行次数,跳转地址等等一系列信息。所谓超级块,根据已获取的剖分信息,按一定的规则挑选指定的几个基本块序列重新组合,形成的更长的指令序列,用以提高程序的性能。它除了比基本块长以外,还兼有多个出口的特性。
剖分信息的分类,主要有如下三种:
1、基于基本块的信息收集,也就是基本块运行特性信息的收集,基本上局限于基本块的运行次数,和跳转目标块等粗略信息。虽说它收集的信息较为粗略,但是,它给***的开销比较小,所以,它在性能要求比较高的动态的***中应用的比较多。
2、基于边的信息收集,即,以一个基本块以及随后的基本块组合而成的边为基本的信息收集单位。基于边的信息收集比基于块的要丰富一些,也能更好的描述程序的行为特征。但是,随之而来的也是对***带来的开销也是比较大的。
3、基于路径的信息收集。根据程序的控制流图进行,以单条执行路径为单位进行信息收集。这样的信息收集方式可以最接近程序真实的描述程序的行为特征。但是,它所付出的代价也是最大的.由于它庞大的***开销,在动态二进制翻译器中,基本上不被采用.
对于有中间语言的动态二进制翻译器来说,比如valgrind,UQDBT,构造超级块都倾向于在自身定义的中间语言,利用程序收集的信息,结合特定的算法进行。然后,再集中放到后端翻译成目标代码。一般的有中间语言的超级块构造方法流程如下:
1)利用上所述的三种种类信息收集方法,对信息进行采集。一般来说,一个翻译好的基本块对应有一个对象对它的信息进行维护。通过上述的三种方法收集的信息一般来说是存放在各自的对象中。
2)当满足一定的条件,比如达到阈值等,程序就会触发超级块的构造例程,因为有中间语言,所以,程序就先把一个一个的源程序基本块经过一定的处理,比如跳转反转等,按照一定的算法翻译成一个大的中间语言程序块,然后在翻译成一个大的目标程序块,也就是超级块。
3)最后就是程序跳到翻译好的目标程序超级块进行执行。
经对现有文献检索发现,中国专利文献号CN101387970A,公开日2009-3-18,记载了一种“利用剖分信息生成超级块的方法”,该技术详细介绍了二进制翻译领域中Crossbit的构造超级块的一般流程。但是该技术有一个不容忽视的问题:在构造超级块的过程中,当一个基本块在多个超级块中都是被需要时,势必会造成除了只有一个被利用外,另外的超级块都因为缺少当前块而被中间截断,产生多个较短超级块,或者基本块碎片。
另经检索发现,中国专利文献号CN101488096A,公开日2009-7-22,记载了一种“利用出入边关系的部分信息构建超级块的方法”,该技术采用的是基于入边和出边的部分信息来构造超级块的方法,但是该方法在构造超级块的过程中容易产生重复,从而使得基本块的数量庞大。
发明内容
本发明的目的在于克服现有技术的上述不足,提供一种基于代码复制超级块的程序执行优化方法,通过基本块代码复制来生成超级块,使得基本块的长度变长,基本块的数量减少,从而提高生成的超级块的质量,且可移植性好。
本发明是通过以下技术方案实现的,本发明通过将程序划分后***探测指令并构造得到中间语言超级块,然后设置生成中间语言超级块的平衡机制参数并进行筛选指导处理;并将中间语言超级块翻译成目标超级块,供二进制翻译器执行,具体包括以下步骤:
第一步,对程序指令进行划分处理,得到若干基本块。
所述的划分处理是指:将第i个跳转指令和第i+1个跳转指令之间的指令序列作为一个基本块,其中:i表示程序中跳转指令序号,它是从1开始到整个程序中跳转指令个数之间的正整数。
第二步,在每个基本块的头部***一个探测指令。
所述的探测指令是探测构造超级块的头块或者是触发构造超级块例程。
第三步,构造中间语言超级块,并实时记录该中间语言超级块所对应的参数。
所述的构造中间语言超级块是指:当一个基本块的探测指令触发构造超级块历程的时候,程序将通过查询***记录的信息,找到符合条件的中间语言块,并将跳转指令部分进行一定的处理后,罗列到一起,形成一个中间语言超级块。
所述的参数包括:基本块被共享的次数、超级块被共享的次数、超级块嵌套的含有超级块的层数、超级块中自体成员基本块的重复次数之和以及当前正在构造的超级块中的自体成员超级块的重复次数之和。
第四步,设置生成中间语言超级块的平衡机制参数并进行筛选指导处理;
所述的平衡机制参数包括:添加超级块探测代码标示、超级块嵌套层数参数、基本块的重复频度、自体基本块重复频度和超级块重复频度。
所述的筛选指导处理包括以下步骤:
1)在每一个基本块在翻译***的记录对象中,增加相应的域,用来记录上述参数;
2)指定的域设定相应的阈值,阈值的设定因程序行为特性的不同会有所不同;
3)在构造中间语言超级块的时候将平衡机制参数进行监控,更新;
4)基本块或超级块进行加入探测代码或者构造中间语言超级块的过程中,当参数违反设定的阈值条件时终止当前操作。
第五步,将中间语言超级块作为一个翻译单位一次性翻译成目标超级块,然后存储于内存指定位置并记录该目标超级块的内存地址,最后将二进制翻译器将该内存地址作为函数入口并直接跳转到该内存地址处执行目标超级块所对应的二进制指令,实现程序执行优化。
与传统技术相比,本发明优势主要体现在,1)从第一条超级块内部指令开始,到最终一条跳出指令内存地址跨度比较大;2)从第一条指令开始到最后一条指令结束,此超级块中含有重复的基本块序列,也即在内存中表现为两条紧挨的跳转指令之间的指令序列会在超级块中重复出现;3)从第一条指令开始到最后一条指令结束,此超级块中含有重复的超级块序列,也即在内存中表现为两条非紧挨的跳转指令之间的指令序列会在超级块中重复出现;4)在整个内存空间来看,基本块,超级块的整体数量比较少,内存中指令存放的比较集中,当然因为长度变长了,相应的整个程序块所占用的内存空间也比传统的方法要大一些5)对于机器的指令读取来说,因为超级块长度长了,程序会更长时间地停留在超级块内部,从而其中央处理器的缓存的性能会有所提升,指令的读取的本地性表现更好。
本发明技术效果包括:程序因此而改善了代码的本地性,程序的执行流也更加流畅,性能获取了0.5%-3%的性能提升,超级块长度增长最长可以达到2个基本块的长度,换成指令21.7条,碎片的数量减少最多可以达到25.5%,而最多2.25%内存膨胀率是可以接受的。
附图说明
图1共享块代码复制示意图。
图2基于代码拷贝超级块A的构造例程及内存布局示意图。
具体实施方式
下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
如图1所示,图中,a,b,c…l为基本块或者超级块,e1和e2分别为块e的两个代码拷贝。图1左侧,基本块e或超级块e被两条路径共享,现有的构造策略,只能产生一个包含e的超级块,而另外一条路径将因为缺少e而被截断。通过代码复制,产生两个基本块e1和e2,分别放在两个超级块中,从而产生两个较长的超级块,否则,因为其中一个超级块被从中间截断,而产生较多碎片。
如图2所示,超级块C是已经构造好的超级块放在内存中,当前正在被超级块A的构造过程中,对它或它的成员块的变量进行检测,更新,和设定。因为之前构造的超级块C含有基本块m,那么成员基本块m对应的变量repeat_time递增;超级块B在超级块C中已经存在,那么超级块B的对应变量super_repeat_time递增,同时超级块A对应的变量inner_loop进行累加;基本块n在自体中存在,超级块A对应的变量self_repeat_time进行递增操作;超级块q在自体中出现重复,那超级块A的对应变量self_super_repeat_time进行递增操作,并且对超级块A的inner_loop变量进行递增操作。
Crossbit是一个动态二进制翻译***,它可以将不同体系结构的指令实现动态翻译和优化。现有的Crossbit已经实现了一个基本的超级块生成方法,也完成了块之间的链接。程序大部分时间是在翻译后的块之间执行。但是,因为生成的超级块经常因为基本块共享的问题而截断,平均长度比较短,导致了程序运行的本地性不好,所以,实现一个代码复制的机制来增长超级块的长度,是很有必要的。在现有的超级块生成方法的基础上,允许代码拷贝,并对代码拷贝的策略进行了一定的细化。
在具体介绍前先稍微介绍下用到的监控变量所代表的意义:
repeat_time:表示基本块在多个超级块中被共享的次数,比如超级块A,B同时含有基本块m,那么它的repeat_time值就是2。
super_repeat_time:表示超级块在多个超级块中被共享的次数,跟repeat_time意义基本雷同。
inner_loop:表示指定的超级块嵌套的含有超级块的inner_loop加1后的总和,比如,超级块A内部含有两个超级块B和C,而B含有1个超级块M,C内部全部是基本块,M内部全部是基本块,那么B的inner_loop值就是1,C的inner_loop值就是0,A的inner_loop值就是(1+1)+(0+1)=3。
self_repeat_time:超级块中自体成员基本块的重复次数之和。它的值的获取是利用当前正要被添加的成员基本块的信息来检索整个超级块的成员链表,遇到一个相同的就对当前被构造超级块的self_repeat_time进行递增操作。比如,一个超级块A含有基本块m-n-o-p-m-o这样一个序列,那么在构造的过程中,m,n,o,p被先后添加,对self_repeat_time值没有影响,当添加下一个m的时候,self_repeat_time递增,添加o的时候,再次递增,那么该超级块A的self_repeat_time值就是2。
self_super_repeat_time:记录当前正在构造的超级块中的自体成员超级块的重复次数之和。它的值的获取类似于self_repeat_time,这里不在赘述。
首先是剖分的过程,在Crossbit中剖分过程主要有如下步骤:
1、以基本块为单位划分程序,通常以一个跳转指令开始,以一个跳转指令结束的指令序列。
2、在每个基本块的开头***探测指令,本例中***的完成当前基本块执行次数的计数指令,如果执行的次数达到一定的阈值那么此基本块就作为将要被构造的超级块的头块,程序没有执行当前被探测到的头块,就触发构造超级块例程也即跳转到构造超级块例程,等构造完成超级块后,在跳到构造成功的超级块执行。Crossbit构造超级块的方法,对构造好的超级块不进行探测,这里对超级块还要进行一定程度的探测,如果当前构造的super_repeat_time达到了指定的阈值,那么就在翻译生成最终的超级块的头部就不***探测指令,否则,***探测指令,继续检测当前构造超级块运行的热度。代码具体见步骤4。
3、当进入执行超级块例程的时候,每一个按照超级块的构造方法或者算法是被需要的基本块,它都有对应一个初始值为0的repeat_time变量,对这个值进行递增操作。如果是超级块,那么对它的初始值为0的super_repeat_time变量进行递增操作,并且对当前正在构造的超级块的初始值为0的LINNER_LOOP值进行递增。
4、内存膨胀与超级块构造之间的平衡机制。为了保证代码复制不会带来很大的内存膨胀问题。本例中通过三个方面进行内存膨胀的控制。
4.1)对是否添加超级块探测代码的判定。如果,无限制的添加超级块探测代码,那么超级块构造机制会不断的将超级块嵌套的添加到新的超级块中,这样将会带来非常庞大的内存膨胀,但是,如果对生成的超级块不进行探测,那么将排除类似于小且短但频繁调用的函数作为较大规模超级块的一部分的情况。通过设定一个阈值来判定是否添加探测代码。MAX_REPEAT的值选的越大,那么嵌套含有当前超级块的新超级块越多。
If(super_repeat_time<SUPER_MAX_REPEAT)
{
...
//探测代码
}
//也即,如果此超级块在多个更大超级块中重复的次数没有超过MAX_REPEAT次,就
进行对此超级块探测
4.2)超级块嵌套的限定。一个超级块是热代码,那么它极有可能被别的块所调用,从而被超级块构造机制所探测到,嵌套的构造新的超级块。如果,出现极端情况,嵌套调用的层数过多,那么导致生成极大的超级块,导致内存的极度膨胀。于是要有一个机制来保证这样的情况不会发生。
If(super_repeat_time>0)//当前要被添加的块是超级块
{
up_inner_loop();//当前正在被添加超级块设置为已经嵌套了一层超级块
//对inner_loop变量进行递增操作
}
Set_inner_loop();//记录当前正在被构造的超级块的inner_loop值,也即对递增后的成
员超级块的inner_loop值进行累加
If(inner_loop>MAX_INNERLOOP)
{
Break;//如果当前要被加入超级块的超级块嵌套了很多次,那么就终止;
}
4.3)基本块的重复限定。通常一个比较热的基本块会被多个超级块共享,但是,在实验中,通常基本块重复出现在多个超级块中,次数达到一定的阈值的时候,它所带来的性能提升比起来它所带来的内存膨胀率变得不是很明显。所以需要设定一个阈值进行设定。
If(repeat_time>MAX_REPEAT)
{
break;
//如果一个块出现在过多的超级块中,那么就终止;
}
4.4)对自体重复基本块或者超级块进行的限定。有些超级块在构造过程当中,下一个需要的基本块会是自己当前已经构造进去的基本块。情况不是很多,但对个别程序的性能有比较大影响。对它进行限定的时候,要对之前的repeat_time变量进行减操作。如果是超级块就将变量改成对应的超级块变量即可。代码如下
For(int i=0;i<chain。size();i++)
{
if(spc==chain[i])
self_repeat_time++;
repeat_time--;
}
//循环遍历当前超级块队列,如果是当前基本块重复出现过,就对自体重复基本块self_repeat_time递增,并将记录超级块间的repeat_time进行递减,以保证repeat_time记录的是超级块间的重复,而不包括自体重复;
对生成好的中间语言超级块进行一定的优化处理,比如跳转执行反转,剔除冗余指令。返回中间语言超级块
翻译成可以在本地机器执行的目标超级块并且执行。
不同的程序,其行为特性不一样,所以,对于本发明中采用的阈值也都是不一样的,在本实施例中,采用的阈值都是2-10之间的数字,SUPER_MAX_REPEAT设为8,MAX_INNERLOOP设为3等。
在本实施例中用BENCH INT2000测试用例进行测试,实验数据表明采用本发明改进后的***相较于原来的超级块构造方法,获得了1%-3%的性能提升,超级块的平均长度增长了1个,最多接近两个;超级块包含的指令条数最多增加了21.7条,平均增加了15条;而总共的超级块碎片数量最多减少了25%,最少减少了11%。对于内存膨胀方面,平均来讲仅仅是使得***产生了2%平均内存膨胀率,是可以接受的。
Claims (8)
1.一种基于代码复制超级块的程序执行优化方法,其特征在于,通过将程序划分后***探测指令并构造得到中间语言超级块,然后设置生成中间语言超级块的平衡机制参数并进行筛选指导处理;并将中间语言超级块翻译成目标超级块,供二进制翻译器执行。
2.根据权利要求1所述的基于代码复制超级块的程序执行优化方法,其特征是,所述的程序执行优化方法包括以下步骤:
第一步,对程序指令进行划分处理,得到若干基本块;
第二步,在每个基本块的头部***一个探测指令;
第三步,构造中间语言超级块,并实时记录该中间语言超级块所对应的参数;
第四步,设置生成中间语言超级块的平衡机制参数并进行筛选指导处理;
第五步,将中间语言超级块作为一个翻译单位一次性翻译成目标超级块,然后存储于内存指定位置并记录该目标超级块的内存地址,最后将二进制翻译器将该内存地址作为函数入口并直接跳转到该内存地址处执行目标超级块所对应的二进制指令,实现程序执行优化。
3.根据权利要求1或2所述的基于代码复制超级块的程序执行优化方法,其特征是,所述的划分是指:将第i个跳转指令和第i+1个跳转指令之间的指令序列作为一个基本块,其中:i表示程序中跳转指令序号,它是从1开始到整个程序中跳转指令个数之间的正整数。
4.根据权利要求1或2所述的基于代码复制超级块的程序执行优化方法,其特征是,所述的探测指令是探测构造超级块的头块或者是触发构造超级块例程。
5.根据权利要求1或2所述的基于代码复制超级块的程序执行优化方法,其特征是,所述的构造中间语言超级块是指:当一个基本块的探测指令触发构造超级块历程的时候,程序将通过查询***记录的信息,找到符合条件的中间语言块,并将跳转指令部分进行一定的处理后,罗列到一起,形成一个中间语言超级块。
6.根据权利要求1或2所述的基于代码复制超级块的程序执行优化方法,其特征是,所述的参数包括:基本块被共享的次数、超级块被共享的次数、超级块嵌套的含有超级块的层数、超级块中自体成员基本块的重复次数之和以及当前正在构造的超级块中的自体成员超级块的重复次数之和。
7.根据权利要求1或2所述的基于代码复制超级块的程序执行优化方法,其特征是,所述的平衡机制参数包括:添加超级块探测代码标示、超级块嵌套层数参数、基本块的重复频度、自体基本块重复频度和超级块重复频度。
8.根据权利要求1或2所述的基于代码复制超级块的程序执行优化方法,其特征是,所述的筛选指导处理包括以下步骤:
1)在每一个基本块在翻译***的记录对象中,增加相应的域,用来记录上述参数;
2)指定的域设定相应的阈值,阈值的设定因程序行为特性的不同会有所不同;
3)在构造中间语言超级块的时候将平衡机制参数进行监控,更新;
4)基本块或超级块进行加入探测代码或者构造中间语言超级块的过程中,当参数违反设定的阈值条件时终止当前操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102785380A CN101923481A (zh) | 2010-09-11 | 2010-09-11 | 基于代码复制超级块的程序执行优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102785380A CN101923481A (zh) | 2010-09-11 | 2010-09-11 | 基于代码复制超级块的程序执行优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101923481A true CN101923481A (zh) | 2010-12-22 |
Family
ID=43338437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102785380A Pending CN101923481A (zh) | 2010-09-11 | 2010-09-11 | 基于代码复制超级块的程序执行优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101923481A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105593807A (zh) * | 2013-06-28 | 2016-05-18 | 格罗方德半导体公司 | 跨群组界限的指令群组最佳化 |
CN105279004B (zh) * | 2015-11-24 | 2018-06-26 | 无锡江南计算技术研究所 | 一种基于采样剖析的轻量级程序代码重排方法 |
CN110032330A (zh) * | 2018-01-12 | 2019-07-19 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
CN118245065A (zh) * | 2024-05-28 | 2024-06-25 | 北京开源芯片研究院 | 代码优化方法、装置、电子设备及可读存储介质 |
CN118245065B (zh) * | 2024-05-28 | 2024-07-26 | 北京开源芯片研究院 | 代码优化方法、装置、电子设备及可读存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101387970A (zh) * | 2008-10-30 | 2009-03-18 | 上海交通大学 | 利用剖分信息生成超级块的方法 |
-
2010
- 2010-09-11 CN CN2010102785380A patent/CN101923481A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101387970A (zh) * | 2008-10-30 | 2009-03-18 | 上海交通大学 | 利用剖分信息生成超级块的方法 |
Non-Patent Citations (4)
Title |
---|
《计算机工程》 20071231 包云程等 "动态二进制翻译基础平台CrossBit的设计与实现" 第101页左侧分栏 1-8 第33卷, 第23期 * |
《计算机应用与软件》 20070731 李增祥等 "动态二进制翻译的优化" 第12-14页 1-8 第24卷, 第7期 * |
包云程等: ""动态二进制翻译基础平台CrossBit的设计与实现"", 《计算机工程》 * |
李增祥等: ""动态二进制翻译的优化"", 《计算机应用与软件》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105593807A (zh) * | 2013-06-28 | 2016-05-18 | 格罗方德半导体公司 | 跨群组界限的指令群组最佳化 |
CN105593807B (zh) * | 2013-06-28 | 2018-06-12 | 格罗方德半导体公司 | 跨群组界限的指令群组最佳化 |
CN105279004B (zh) * | 2015-11-24 | 2018-06-26 | 无锡江南计算技术研究所 | 一种基于采样剖析的轻量级程序代码重排方法 |
CN110032330A (zh) * | 2018-01-12 | 2019-07-19 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
CN118245065A (zh) * | 2024-05-28 | 2024-06-25 | 北京开源芯片研究院 | 代码优化方法、装置、电子设备及可读存储介质 |
CN118245065B (zh) * | 2024-05-28 | 2024-07-26 | 北京开源芯片研究院 | 代码优化方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Simonsen et al. | Rapid neighbour-joining | |
US8806463B1 (en) | Feedback-directed inter-procedural optimization | |
EP0810523A2 (en) | Method for sequencing computer instruction execution in a data processing system | |
Clark et al. | Automated custom instruction generation for domain-specific processor acceleration | |
CN103678110B (zh) | 提供修改相关信息的方法和装置 | |
CN100465895C (zh) | 编译器、编译方法 | |
Alur et al. | Sygus-comp 2016: Results and analysis | |
US11106685B2 (en) | Method to rank documents by a computer, using additive ensembles of regression trees and cache optimisation, and search engine using such a method | |
CN104281652A (zh) | 度量空间中逐个支撑点数据划分方法 | |
CN104933169B (zh) | 基于热点文件优先的文件***碎片整理方法 | |
US9823911B2 (en) | Method and apparatus for compiling code based on a dependency tree | |
US20050246700A1 (en) | Compiler with cache utilization optimizations | |
CN104137095B (zh) | 用于演进分析的*** | |
CN103116493B (zh) | 一种应用于粗粒度可重构阵列的自动映射方法 | |
US20170017475A1 (en) | Information processing apparatus and compile method | |
CN110110753B (zh) | 基于精英花授粉算法和ReliefF的有效混合特征选择方法 | |
CN103713933B (zh) | 计算机程序中热点函数、变量的汇聚方法、装置及*** | |
CN103645930B (zh) | 汇编级跨文件调度框架的构建方法 | |
Luo et al. | Finding representative sets of optimizations for adaptive multiversioning applications | |
CN103559069B (zh) | 一种基于代数***的跨文件过程间优化方法 | |
CN101923481A (zh) | 基于代码复制超级块的程序执行优化方法 | |
CN102622334B (zh) | 多线程环境下并行xslt转换方法和装置 | |
CN101894063B (zh) | 一种用于微处理器功能验证的测试程序生成方法及装置 | |
CN112558977B (zh) | 面向异构众核后端基于代价模型的多面体优化方法 | |
CN104778088A (zh) | 一种基于减少进程间通信开销的并行i/o优化方法与*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20101222 |