CN101944041A - 一种使用陷阱指令优化条件转移代码性能的方法及其系统 - Google Patents
一种使用陷阱指令优化条件转移代码性能的方法及其系统 Download PDFInfo
- Publication number
- CN101944041A CN101944041A CN2010102920611A CN201010292061A CN101944041A CN 101944041 A CN101944041 A CN 101944041A CN 2010102920611 A CN2010102920611 A CN 2010102920611A CN 201010292061 A CN201010292061 A CN 201010292061A CN 101944041 A CN101944041 A CN 101944041A
- Authority
- CN
- China
- Prior art keywords
- instruction
- trap
- address
- set value
- branch instruction
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明有关于一种使用陷阱指令优化条件转移代码性能的方法及其系统,其中该方法包括:步骤1,收集程序的轮廓信息,根据轮廓信息获取符合条件的分支指令;步骤2,将符合条件的分支指令转换成陷阱指令,并将陷阱指令的地址及其陷入地址记入陷阱转移表中;步骤3,生成记入有陷阱指令和陷阱转移表的汇编文件,并根据汇编文件生成程序可执行文件;步骤4,解析程序可执行文件,获取陷阱指令的地址与其陷入地址之间的偏移值,并将偏移值记录到陷阱指令的偏移域中;步骤5,运行记入偏移值后的程序可执行文件,当陷阱指令发生陷入时,对陷入进行响应。采用本发明的方法能够减少分支指令的处理时间,提高处理器流水线的吞吐率,获得性能提高。
Description
技术领域
本发明涉及编译器的研发和优化技术,特别是涉及一种使用陷阱指令优化条件转移代码性能的方法及其系统。
背景技术
分支指令(也称为条件转移指令)是程序中常见的指令类型,它们会带来控制冲突,引起处理器的流水线停顿,是影响到性能的瓶颈之一。因此,从处理器和编译器方面都有相关技术来实现相关的性能优化。
现代处理器中大都采用分支预测技术,通过记录分支指令是否成功转移的历史来预测该指令下次执行的目标地址。预测精度与采用的分支转移历史表的大小和程序特征有关。预测技术不可能做到完全准确,当预测错误的时候,必须将流水线清空,然后从正确的地址取指,错误预测会产生很大的代价,并且这种代价随着指令发射宽度和流水线深度的增加而快速增长。
编译器采用一些手段改善分支指令的性能,可以采用如下手段:
(1)控制流优化,根据代码的执行频率改变代码排布,提高指令cache的访问命中率和分支预测准确率;
(2)条件分支代码外提,将一些条件分支代码外提到循环体之外,减少分支指令的动态数量;
(3)移除分支指令,不损失语义的前提下,可以利用CMOV条件传送指令和MAX/MIN指令来替换掉部分分支指令;
(4)合并多个条件以减少条件分支,将多个条件合并成单个“与/或”形式的逻辑关系表达式,提高分支预测性。其中控制流优化是有效的编译器基础优化之一。但对于不能被移除的分支指令,其相关的开销则不能避免。
本发明方法是针对极少转移到其一转移目标的分支指令,将其以陷阱指令代替。本方法减少了分支指令数量,也减少错误预测下清空流水线的开销和分支预测机制的时空开销,对于提供了开销小于分支指令的陷阱指令(在不发生陷入的情况下)且精确异常的体系结构,能因此提高性能。
发明内容
本发明的目的在于提供一种使用陷阱指令优化条件转移代码性能的方法及其系统,用于提高处理器流水线效率。
为了实现上述目的,本发明提供一种使用陷阱指令优化条件转移代码性能的方法,其特征在于,包括:
步骤1,收集程序的轮廓信息,根据所述轮廓信息获取符合条件的分支指令;
步骤2,将所述符合条件的分支指令转换成陷阱指令,并将所述陷阱指令的地址及其陷入地址记录在陷阱转移表中;
步骤3,生成记录有所述陷阱指令和所述陷阱转移表的汇编文件,并根据所述汇编文件生成程序可执行文件;
步骤4,解析所述程序可执行文件,获取所述陷阱指令的地址与其陷入地址之间的偏移值,并将所述偏移值记入所述程序可执行文件中的所述陷阱指令的偏移域中;
步骤5,运行偏移值记入后的所述程序可执行文件,当所述陷阱指令发生陷入时,根据所述偏移值或所述陷阱转移表对陷入进行响应。
所述的使用陷阱指令优化条件转移代码性能的方法,其中,
所述步骤1中,
所述轮廓信息包括所述程序的基本块代码的执行频度和所述分支指令对其两个转移目标的转移概率。
所述的使用陷阱指令优化条件转移代码性能的方法,其中,
所述步骤1中,包括:
判断分支指令的一个转移目标的转移概率是否低于设定的阈值,当该分支指令的一个转移目标的转移概率低于该设定的阈值时,将该分支指令作为符合条件的分支指令。
所述的使用陷阱指令优化条件转移代码性能的方法,其中,
所述步骤2中,包括:
根据所述符合条件的分支指令极少转移到的转移目标地址,将所述符合条件的分支指令转换成陷阱指令。
所述的使用陷阱指令优化条件转移代码性能的方法,其中,
所述步骤2中,包括:
在分支指令转换成陷阱指令后,对需要分支延迟槽指令的体系结构,调整延迟槽指令,并将调整结果记入所述汇编文件中。
所述的使用陷阱指令优化条件转移代码性能的方法,其中,
所述步骤4中,包括:
判断所述偏移值是否超出陷阱指令格式偏移量的表示范围,当所述偏移值未超出所述表示范围时,将所述偏移值记入所述偏移域中。
所述的使用陷阱指令优化条件转移代码性能的方法,其中,
所述步骤5中,包括:
当所述偏移值不为零时,将所述陷阱指令的地址与所述偏移值相加获得陷入时的陷入地址;或
当所述偏移值为零时,按照所述陷阱指令的地址查询所述陷阱转移表,当找到时,获得陷入地址;或当未找到时,按照原有的陷阱处理程序处理。
为了实现上述目的,本发明提供一种使用陷阱指令优化条件转移代码性能的系统,其特征在于,包括:
分支指令获取模块,用于收集到程序的轮廓信息,根据轮廓信息获取符合条件的分支指令;
分支指令转换模块,连接所述分支指令获取模块,用于将该符合条件的分支指令转换成陷阱指令;
地址记入模块,连接所述分支指令转换模块,用于将陷阱指令的地址及其对应的陷入地址记入陷阱转移表中;
可执行文件生成模块,连接所述分支指令转换模块、所述地址记入模块,用于根据记入有所述陷阱指令、所述陷阱转移表的汇编文件生成程序可执行文件;
偏移值记入模块,连接所述可执行文件生成模块,用于解析所述程序可执行文件,获取所述陷阱指令的地址与其陷入地址之间的偏移值,并将所述偏移值记入所述程序可执行文件中的所述陷阱指令的偏移域中;
内核模块,连接所述可执行文件生成模块,用于运行所述偏移值记入后的所述程序可执行文件,当所述陷阱指令发生陷入时,根据所述偏移值或所述陷阱转移表对陷入进行响应。
所述的使用陷阱指令优化条件转移代码性能的系统,其中,
所述轮廓信息包括所述程序的基本块代码的执行频度和所述分支指令对两个转移目标的转移概率。
所述的使用陷阱指令优化条件转移代码性能的系统,其中,所述分支指令获取模块,还用于判断分支指令的一个转移目标的转移概率是否低于设定的阈值,当该分支指令的一个转移目标的转移概率低于该设定的阈值时,将该分支指令作为符合条件的分支指令。
所述的使用陷阱指令优化条件转移代码性能的系统,其中,所述分支指令转换模块,还用于根据所述符合条件的分支指令极少转移到的转移目标地址,将所述符合条件的分支指令转换成陷阱指令。
所述的使用陷阱指令优化条件转移代码性能的系统,其中,该系统,还包括:
延迟槽指令调整模块,连接所述分支指令转换模块、所述可执行文件生成模块,用于在分支指令转换成陷阱指令后,对需要分支延迟槽指令的体系结构,调整延迟槽指令,并将调整结果记入所述汇编文件中。
所述的使用陷阱指令优化条件转移代码性能的系统,其中,所述偏移值记入模块,还用于判断所述偏移值是否超出陷阱指令格式偏移量的表示范围,当所述偏移值未超出所述表示范围时,将所述偏移值记入所述偏移域中。
所述的使用陷阱指令优化条件转移代码性能的系统,其中,所述内核模块,还用于当所述偏移值不为零时,将所述陷阱指令的地址与所述偏移值相加获得陷入地址;或
当所述偏移值为零时,按照所述陷阱指令的地址查询所述陷阱转移表,当找到时,获得陷入地址;或当未找到时,按照原有的陷阱处理程序处理。
与现有技术相比,本发明的有益技术效果在于:
本发明提供的一种使用陷阱指令优化条件转移代码性能的方法,其识别出极少转移到其一转移目标的分支指令,将其以陷阱指令代替。本方法对于提供开销小于分支指令的陷阱指令(在不发生陷入的情况下)且精确异常的体系结构,能因此提高性能,并减少分支预测机制的时空开销。
采用本发明的方法能够提高处理器流水线效率,减少了分支指令的处理时间,提高处理器流水线的吞吐率,获得性能提高。
附图说明
图1是本发明的使用陷阱指令优化条件转移代码性能的方法流程图;
图2a、2b是本发明的分支指令转陷阱指令的转换前后的对比图;
图3是本发明的使用陷阱指令优化条件转移代码性能的系统结构图。
具体实施方式
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
如图1所示,是本发明的使用陷阱指令优化条件转移代码性能的方法流程图,方法流程包括如下步骤:
步骤101,利用编译器中轮廓技术收集到程序的轮廓信息,包括程序的各个基本块代码的执行频度,以及计算得到各条分支指令对其两个转移目标的转移概率。
步骤102,根据轮廓信息判断是否存在符合条件的分支指令?如存在,则将该符合条件的分支指令转换成陷阱指令,并进入步骤103,若不存在,直接进入步骤103;
在较佳的方案中,以极高转移概率转移到某一转移目标而极少转移到另一转移目标的分支指令,即为转换的对象:符合条件的分支指令。符合条件的分支指令必有一个转移目标的转移概率低于某个阈值。
在较佳的方案中,将该符合条件的分支指令转换成陷阱指令,其陷入地址是该符合条件的分支指令极少到达的转移目标地址。并将该陷阱指令地址及其相应的陷入地址记入陷阱转移表。在不发生陷入的情况下,由陷阱指令转到另一转移目标代码处继续执行;在发生陷入的情况下,转移到陷入地址处继续执行。
将经常转到的另一转移目标作为new_tgt。如果new_tgt不为该符合条件的分支指令所在基本块的直接后继,则需要在陷阱指令后插入一条无条件跳转指令,以new_tgt作为其跳转目标,如图2a所示。
步骤103,对于需要填充分支延迟槽指令的体系结构,调整延迟槽指令。
分支延迟槽指令即位于分支指令后面的一条(或者若干条)指令,不管分支发生与否其总是被执行。需要填充分支延迟槽指令的体系结构是指仍然保留了分支延迟槽机制的体系结构,即无论分支发生与否总是执行延迟槽中的指令,主要包括DSP和某些历史较悠久的RISC体系结构,比如MIPS,PA-RISC,SPARC,SHARC DSP等等,而PowerPC,ARM,Alpha,X86体系结构则不属于此范畴。
为了保证程序正确性,针对体系结构,对于被转换成的陷阱指令处,需要调整其后的延迟槽指令,这些延迟槽指令是由编译器为原有的分支指令放置的。陷阱指令没有延迟槽指令,位于它后面的延迟槽指令将被删除或者移动位置;同时,为步骤102增加的无条件跳转指令(参见图2b),与转换前的分支指令不同,需要重新填充延迟槽指令。
步骤104,编译器生成的汇编文件经过汇编和链接过程生成程序可执行文件(为标准过程,不含有本发明的任何修改)。上述步骤102,103生成结果最终都记入编译器生成的汇编文件中,汇编文件经过汇编和链接过程生成程序可执行文件。
步骤105,利用工具piggyBackTrapTable,填充程序可执行文件中陷阱指令的偏移域。该工具为现有技术。通过解析ELF(Executable and Linkable Format)格式的程序可执行文件来填充程序可执行文件中陷阱指令的偏移域。
工具piggyBackTrapTable完成如下功能:解析ELF格式的程序可执行文件,识别出其中的陷阱指令,计算陷阱指令的地址与其陷入地址之间的偏移值,如果该偏移值不超过陷阱指令格式中偏移量的表示范围,则将该偏移值记入该陷阱指令的偏移域中。
步骤106,在运行端运行记入偏移值后的程序可执行文件时,当遇到陷阱指令发生陷入,操作系统内核根据陷阱指令的偏移值或程序可执行文件中的陷阱转移表获得陷入地址,做出响应。
这里,对操作系统内核的陷入响应方式作扩充,使得操作系统内核除了原有的陷阱处理程序的处理方式外,还能根据陷阱指令给出的偏移值计算得到陷入地址,或者查询程序可执行文件中的陷阱转移表得到陷入地址。
在较佳的方案中,响应一条陷阱指令的陷入时,操作系统内核能根据陷阱指令和程序可执行文件中的陷阱转移表来决定按照原有的陷阱处理程序或者新增加的方式来响应陷入。
在较佳的方案中,操作系统内核中增加了一种新的陷入响应方式来处理陷阱指令。具体地:
当一条陷阱指令发生陷入时,操作系统内核首先判断该陷阱指令所含的偏移值是否为零,若不为零,则由该陷阱指令的地址与其偏移值相加获得陷入地址;或者此偏移值为零,则以该陷阱指令的地址查询陷阱转移表,若找到,则以陷阱转移表中的对应项作为陷入地址,转移到陷入地址处继续执行。若上述情况都不符合,则按照操作系统内核原有的陷阱处理程序,直接向程序发送SIGSEGV信号或SIGTRAP信号报错。
上述步骤102中,完成了符合条件的分支指令到陷阱指令的转换。将极少转移到其一转移目标的分支指令(即符合条件的分支指令)转换成陷阱指令,并生成陷阱转移表。
上述步骤105中,改善了操作系统内核响应陷入的时间。当操作系统内核响应陷阱指令时,填充了偏移值的陷阱指令,不需要查陷阱转移表而通过简单计算就能获得陷入地址,节省了响应时间。
上述步骤106中,采用上述陷入响应的方式,保证操作系统内核能正确地响应陷入。由分支指令转换生成的陷阱指令,发生陷入时能根据陷入地址转到原分支指令极少转移到的转移目标代码处继续程序执行。
如图3所示,是本发明的使用陷阱指令优化条件转移代码性能的系统结构图。该系统300包括:
分支指令获取模块31,用于利用编译器中轮廓技术收集到程序的轮廓信息,根据轮廓信息获取符合条件的分支指令;
轮廓信息包括:程序各个基本块代码的执行频度,并计算得到各条分支指令对其两个转移目标的转移概率。
分支指令获取模块31根据轮廓信息判断是否存在符合条件的分支指令。
在较佳的方案中,分支指令获取模块31以极高转移概率转移到某一转移目标而极少转移到另一转移目标的分支指令,即为转换的对象:符合条件的分支指令。
在较佳的方案中,符合条件的分支指令是指极少转到其一转移目标的分支指令,即该分支指令必有一个转移目标的转移概率低于某个阈值。
分支指令转换模块32,连接分支指令获取模块31,用于将符合条件的分支指令转换成陷阱指令。
在较佳的方案中,分支指令转换模块32将符合条件的分支指令转换成陷阱指令,并将符合条件的分支指令极少转移到的转移目标地址作为其陷阱指令的陷入地址。另外,将符合条件的分支指令经常转移到的另一转移目标不为该分支指令所在基本块的直接后继,则在陷阱指令后插入一条无条件跳转指令,负责跳转到此转移目标,如图2a、2b所示。
地址记入模块33,连接分支指令转换模块32,用于将陷阱指令的地址及其对应的陷入地址记入陷阱转移表中。
可执行文件生成模块34,连接分支指令转换模块32、地址记入模块33,用于对分支指令转换模块32、地址记入模块33的生成结果经过上述编译器转换之后生成的汇编文件,经过汇编和链接过程生成程序可执行文件,该汇编文件记入有陷阱指令、陷阱转移表。
偏移值记入模块35,连接可执行文件生成模块34,用于填充程序可执行文件中陷阱指令的偏移域。具体地:
偏移值记入模块35利用工具piggyBackTrapTable完成填充功能,通过解析程序可执行文件,识别出程序可执行文件中的陷阱指令,计算陷阱指令的地址与其陷入地址之间的偏移值,如果该偏移值不超过陷阱指令的格式中偏移量的表示范围,则将该偏移值记入程序可执行文件中该陷阱指令的偏移域中。
内核模块36,连接可执行文件生成模块34,用于在运行端运行偏移值记入后的程序可执行文件时,当陷阱指令发生陷入时,根据程序可执行文件中陷阱指令的偏移值或程序可执行文件中的陷阱转移表确定陷入地址,做出响应。
这里,内核模块36扩充了内核原有的陷阱处理功能。原有的陷阱处理流程为直接向程序发送SIGSEGV信号或SIGTRAP信号报错。扩充后,内核还能根据陷阱指令给出的偏移值计算得到陷入地址,或者查询程序可执行文件中的陷阱转移表得到陷入地址,从陷入地址处继续程序执行。
在一较佳的方案中,响应一条陷阱指令的陷入时,内核模块36能根据陷阱指令和程序可执行文件中的陷阱转移表来决定按照原有的陷阱处理程序或者新增加的方式来响应陷入。
在一较佳的方案中,内核模块36增加了一种新的陷入响应方式来处理陷阱指令。具体地:
当一条陷阱指令发生陷入时,由操作系统的内核模块36首先判断该陷阱指令所含的偏移值是否为零,若不为零则由该陷阱指令的地址与其偏移值相加获得陷入地址;或者此偏移值为零,则以该陷阱指令地址查询陷阱转移表,若找到,则以陷阱转移表中的对应项作为陷入地址,转移到陷入地址处继续程序执行。若上述情况都不符合,则按照操作系统内核原有的陷阱处理程序,直接向程序发送SIGSEGV信号或SIGTRAP信号报错。
在较佳的方案中,系统300还包括:
延迟槽指令调整模块37,该模块是可选模块,与体系结构相关。只对于需要填充分支延迟槽指令的体系结构,才使用延迟槽指令调整模块37,延迟槽指令调整模块37连接在分支指令转换模块32之后,可执行文件生成模块34之前,用于在将符合条件的分支指令转换成陷阱指令后,对需要填充分支延迟槽指令的体系结构,调整分支指令的延迟槽指令,经过延迟槽指令调整模块37调整之后进入可执行文件生成模块34。对于不需要填充分支延迟槽指令的体系结构,不使用延迟槽指令调整模块37,而直接进入可执行文件生成模块34。
当系统300包括延迟槽指令调整模块37时,汇编文件为由编译器对分支指令转换模块32、地址记入模块33、延迟槽指令调整模块37的生成结果进行转换之后得到。
延迟槽指令调整模块37,只对需要填充分支延迟槽指令的体系结构进行,非此类体系结构则不需本模块。陷阱指令没有延迟槽指令,位于它后面的延迟槽指令将被删除或者移动位置;同时,为分支指令转换模块32引入无条件跳转指令填充延迟槽指令。
需要填充分支延迟槽指令的体系结构是指仍然保留了分支延迟槽机制的体系结构,即无论分支发生与否总是执行延迟槽中的指令,主要包括DSP和某些历史较悠久的RISC体系结构。为了保证程序正确性,针对体系结构,对于被转换成的陷阱指令处,需要调整其后的延迟槽指令,这些延迟槽指令是由编译器为原有的分支指令放置的。陷阱指令没有延迟槽指令,位于它后面的延迟槽指令将被删除或者移动位置;同时,步骤102增加的无条件跳转指令(参见图2b),与转换前的分支指令不同,需要重新填充延迟槽指令。
本发明提供了一种使用陷阱指令优化条件转移代码性能的方法及其系统,其识别出极少转移到其一转移目标的分支指令,将其以陷阱指令代替。本方法对于提供开销小于分支指令的陷阱指令(在不发生陷入的情况下)、精确异常的体系结构,能因此提高性能,并减少分支预测机制的时空开销。
本发明的方法能够减少分支指令的处理时间,提高处理器流水线的吞吐率,获得性能提高。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (14)
1.一种使用陷阱指令优化条件转移代码性能的方法,其特征在于,包括:
步骤1,收集程序的轮廓信息,根据所述轮廓信息获取符合条件的分支指令;
步骤2,将所述符合条件的分支指令转换成陷阱指令,并将所述陷阱指令的地址及其陷入地址记录在陷阱转移表中;
步骤3,生成记录有所述陷阱指令和所述陷阱转移表的汇编文件,并根据所述汇编文件生成程序可执行文件;
步骤4,解析所述程序可执行文件,获取所述陷阱指令的地址与其陷入地址之间的偏移值,并将所述偏移值记入所述程序可执行文件中的所述陷阱指令的偏移域中;
步骤5,运行偏移值记入后的所述程序可执行文件,当所述陷阱指令发生陷入时,根据所述偏移值或所述陷阱转移表对陷入进行响应。
2.根据权利要求1所述的使用陷阱指令优化条件转移代码性能的方法,其特征在于,
所述步骤1中,
所述轮廓信息包括所述程序的基本块代码的执行频度和所述分支指令对其两个转移目标的转移概率。
3.根据权利要求2所述的使用陷阱指令优化条件转移代码性能的方法,其特征在于,
所述步骤1中,包括:
判断分支指令的一个转移目标的转移概率是否低于设定的阈值,当该分支指令的一个转移目标的转移概率低于该设定的阈值时,将该分支指令作为符合条件的分支指令。
4.根据权利要求1、2或3所述的使用陷阱指令优化条件转移代码性能的方法,其特征在于,
所述步骤2中,包括:
根据所述符合条件的分支指令极少转移到的转移目标地址,将所述符合条件的分支指令转换成陷阱指令。
5.根据权利要求1、2或3所述的使用陷阱指令优化条件转移代码性能的方法,其特征在于,
所述步骤2中,包括:
在分支指令转换成陷阱指令后,对需要分支延迟槽指令的体系结构,调整延迟槽指令,并将调整结果记入所述汇编文件中。
6.根据权利要求1、2或3所述的使用陷阱指令优化条件转移代码性能的方法,其特征在于,
所述步骤4中,包括:
判断所述偏移值是否超出陷阱指令格式偏移量的表示范围,当所述偏移值未超出所述表示范围时,将所述偏移值记入所述偏移域中。
7.根据权利要求1、2或3所述的使用陷阱指令优化条件转移代码性能的方法,其特征在于,
所述步骤5中,包括:
当所述偏移值不为零时,将所述陷阱指令的地址与所述偏移值相加获得陷入时的陷入地址;或
当所述偏移值为零时,按照所述陷阱指令的地址查询所述陷阱转移表,当找到时,获得陷入地址;或当未找到时,按照原有的陷阱处理程序处理。
8.一种使用陷阱指令优化条件转移代码性能的系统,其特征在于,包括:
分支指令获取模块,用于收集到程序的轮廓信息,根据轮廓信息获取符合条件的分支指令;
分支指令转换模块,连接所述分支指令获取模块,用于将该符合条件的分支指令转换成陷阱指令;
地址记入模块,连接所述分支指令转换模块,用于将陷阱指令的地址及其对应的陷入地址记入陷阱转移表中;
可执行文件生成模块,连接所述分支指令转换模块、所述地址记入模块,用于根据记入有所述陷阱指令、所述陷阱转移表的汇编文件生成程序可执行文件;
偏移值记入模块,连接所述可执行文件生成模块,用于解析所述程序可执行文件,获取所述陷阱指令的地址与其陷入地址之间的偏移值,并将所述偏移值记入所述程序可执行文件中的所述陷阱指令的偏移域中;
内核模块,连接所述可执行文件生成模块,用于运行所述偏移值记入后的所述程序可执行文件,当所述陷阱指令发生陷入时,根据所述偏移值或所述陷阱转移表对陷入进行响应。
9.根据权利要求8所述的使用陷阱指令优化条件转移代码性能的系统,其特征在于,
所述轮廓信息包括所述程序的基本块代码的执行频度和所述分支指令对两个转移目标的转移概率。
10.根据权利要求9所述的使用陷阱指令优化条件转移代码性能的系统,其特征在于,
所述分支指令获取模块,还用于判断分支指令的一个转移目标的转移概率是否低于设定的阈值,当该分支指令的一个转移目标的转移概率低于该设定的阈值时,将该分支指令作为符合条件的分支指令。
11.根据权利要求8、9或10所述的使用陷阱指令优化条件转移代码性能的系统,其特征在于,
所述分支指令转换模块,还用于根据所述符合条件的分支指令极少转移到的转移目标地址,将所述符合条件的分支指令转换成陷阱指令。
12.根据权利要求8、9或10所述的使用陷阱指令优化条件转移代码性能的系统,其特征在于,
该系统,还包括:
延迟槽指令调整模块,连接所述分支指令转换模块、所述可执行文件生成模块,用于在分支指令转换成陷阱指令后,对需要分支延迟槽指令的体系结构,调整延迟槽指令,并将调整结果记入所述汇编文件中。
13.根据权利要求8、9或10所述的使用陷阱指令优化条件转移代码性能的系统,其特征在于,
所述偏移值记入模块,还用于判断所述偏移值是否超出陷阱指令格式偏移量的表示范围,当所述偏移值未超出所述表示范围时,将所述偏移值记入所述偏移域中。
14.根据权利要求8、9或10所述的使用陷阱指令优化条件转移代码性能的系统,其特征在于,
所述内核模块,还用于当所述偏移值不为零时,将所述陷阱指令的地址与所述偏移值相加获得陷入地址;或
当所述偏移值为零时,按照所述陷阱指令的地址查询所述陷阱转移表,当找到时,获得陷入地址;或当未找到时,按照原有的陷阱处理程序处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010292061A CN101944041B (zh) | 2010-09-26 | 2010-09-26 | 一种使用陷阱指令优化条件转移代码性能的方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010292061A CN101944041B (zh) | 2010-09-26 | 2010-09-26 | 一种使用陷阱指令优化条件转移代码性能的方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101944041A true CN101944041A (zh) | 2011-01-12 |
CN101944041B CN101944041B (zh) | 2012-10-10 |
Family
ID=43436041
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010292061A Active CN101944041B (zh) | 2010-09-26 | 2010-09-26 | 一种使用陷阱指令优化条件转移代码性能的方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101944041B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436366A (zh) * | 2011-08-22 | 2012-05-02 | 华为技术有限公司 | 数据同步方法和装置 |
CN103077069A (zh) * | 2012-12-28 | 2013-05-01 | 华为技术有限公司 | 指令解析的方法及装置 |
WO2019202417A1 (en) * | 2018-04-16 | 2019-10-24 | International Business Machines Corporation | Injecting trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code |
US11003777B2 (en) | 2018-04-16 | 2021-05-11 | International Business Machines Corporation | Determining a frequency at which to execute trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code |
CN113110879A (zh) * | 2021-03-31 | 2021-07-13 | 北京中科晶上科技股份有限公司 | 指令处理方法及装置 |
CN117472388A (zh) * | 2023-12-28 | 2024-01-30 | 睿思芯科(深圳)技术有限公司 | 一种优化程序性能的方法、系统及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6732363B1 (en) * | 2000-02-28 | 2004-05-04 | Sun Microsystems, Inc. | Supporting inter-process communication through a conditional trap instruction |
CN1648865A (zh) * | 2004-01-14 | 2005-08-03 | 国际商业机器公司 | 为记录事件提供前置与后置处理程序的方法与装置 |
US20090083715A1 (en) * | 2002-01-14 | 2009-03-26 | Dewitt Jr Jimmie Earl | Method and system for instruction tracing with enhanced interrupt avoidance |
-
2010
- 2010-09-26 CN CN201010292061A patent/CN101944041B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6732363B1 (en) * | 2000-02-28 | 2004-05-04 | Sun Microsystems, Inc. | Supporting inter-process communication through a conditional trap instruction |
US20090083715A1 (en) * | 2002-01-14 | 2009-03-26 | Dewitt Jr Jimmie Earl | Method and system for instruction tracing with enhanced interrupt avoidance |
CN1648865A (zh) * | 2004-01-14 | 2005-08-03 | 国际商业机器公司 | 为记录事件提供前置与后置处理程序的方法与装置 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436366A (zh) * | 2011-08-22 | 2012-05-02 | 华为技术有限公司 | 数据同步方法和装置 |
WO2013026394A1 (zh) * | 2011-08-22 | 2013-02-28 | 华为技术有限公司 | 数据同步方法和装置 |
CN102436366B (zh) * | 2011-08-22 | 2014-07-16 | 华为技术有限公司 | 数据同步方法和装置 |
US9483382B2 (en) | 2011-08-22 | 2016-11-01 | Huawei Technologies Co., Ltd. | Data synchronization method and apparatus |
CN103077069A (zh) * | 2012-12-28 | 2013-05-01 | 华为技术有限公司 | 指令解析的方法及装置 |
CN103077069B (zh) * | 2012-12-28 | 2016-08-03 | 华为技术有限公司 | 指令解析的方法及装置 |
GB2586409A (en) * | 2018-04-16 | 2021-02-17 | Ibm | Injecting trap code in an execution path or a process executing a program to generate a trap address range to detect potential malicious code |
US10810304B2 (en) | 2018-04-16 | 2020-10-20 | International Business Machines Corporation | Injecting trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code |
WO2019202417A1 (en) * | 2018-04-16 | 2019-10-24 | International Business Machines Corporation | Injecting trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code |
US11003777B2 (en) | 2018-04-16 | 2021-05-11 | International Business Machines Corporation | Determining a frequency at which to execute trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code |
GB2586409B (en) * | 2018-04-16 | 2021-07-14 | Ibm | Injecting trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code |
US11755735B2 (en) | 2018-04-16 | 2023-09-12 | International Business Machines Corporation | Speculatively executing conditional branches of code when detecting potentially malicious activity |
CN113110879A (zh) * | 2021-03-31 | 2021-07-13 | 北京中科晶上科技股份有限公司 | 指令处理方法及装置 |
CN113110879B (zh) * | 2021-03-31 | 2023-05-30 | 北京中科晶上科技股份有限公司 | 指令处理方法及装置 |
CN117472388A (zh) * | 2023-12-28 | 2024-01-30 | 睿思芯科(深圳)技术有限公司 | 一种优化程序性能的方法、系统及相关设备 |
CN117472388B (zh) * | 2023-12-28 | 2024-04-05 | 睿思芯科(深圳)技术有限公司 | 一种优化程序性能的方法、系统及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101944041B (zh) | 2012-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101944041B (zh) | 一种使用陷阱指令优化条件转移代码性能的方法及其系统 | |
CN102483700B (zh) | 基于动态二进制重写器架构的轻量级服务 | |
CN101957773B (zh) | 用于多轮次动态概要分析的方法及其系统 | |
US6412105B1 (en) | Computer method and apparatus for compilation of multi-way decisions | |
CN102479225B (zh) | 一种分布式数据分析和处理方法及系统 | |
CN102200924B (zh) | 基于模调度实现循环指令调度的编译方法及装置 | |
CN102521123A (zh) | 一种基于逻辑执行块的嵌入式软件测试插桩方法 | |
CN111104335A (zh) | 一种基于多层次分析的c语言缺陷检测方法及装置 | |
CN102117228A (zh) | 一种动静态结合的Java程序异常处理优化方法 | |
CN111858358B (zh) | 一种面向二进制代码的导向型模糊测试方法 | |
CN101944040A (zh) | 一种基于谓词的自动并行优化方法 | |
CN112231855A (zh) | 基于机器学习的管件焊接工艺自动生成方法及系统 | |
CN103559069A (zh) | 一种基于代数系统的跨文件过程间优化方法 | |
CN101604255A (zh) | 中间语言的延迟跳转指令二进制翻译实现的方法 | |
CN105824749B (zh) | 一种linux系统下用户态进程异常的分析方法 | |
EP0939366A2 (en) | Programming supporting method and programming support device | |
US20080028383A1 (en) | Architecture Cloning For Power PC Processors | |
CN110109705A (zh) | 一种支持嵌入式边缘计算的超标量处理器分支预测方法 | |
CN102521135B (zh) | 线性系统的测试方法和装置 | |
CN102955709A (zh) | 校正设备、校正方法和计算机产品 | |
CN111177991B (zh) | Fpga逻辑综合中实现扇出优化的方法及装置、系统 | |
CN104572024A (zh) | 一种用于函数返回地址预测的装置及方法 | |
CN102156635B (zh) | 实现值关联间接跳转预测的装置 | |
KR20090085816A (ko) | 핫스팟 메소드의 동적 컴파일을 위해 수행 시간을 추정하는방법 | |
CN112527393A (zh) | 面向主从融合架构处理器的指令调度优化装置和方法 |
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 |