[发明专利]执行具有回滚由积极优化导致的变化的能力的积极代码优化无效

专利信息
申请号: 201180011671.2 申请日: 2011-02-25
公开(公告)号: CN102782644A 公开(公告)日: 2012-11-14
发明(设计)人: M·K·格什温 申请(专利权)人: 国际商业机器公司
主分类号: G06F9/30 分类号: G06F9/30
代理公司: 中国国际贸易促进委员会专利商标事务所 11038 代理人: 付建军
地址: 美国*** 国省代码: 美国;US
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 执行 具有 积极 优化 导致 变化 能力 代码
【说明书】:

发明根据由美国能源部授予的合同No.B554331在美国政府支持下完成。美国政府对本发明享有特定权利。

技术领域

本申请一般地涉及一种改进的数据处理设备和方法,更具体地讲,涉及用于执行具有回滚由积极优化导致的变化的能力的积极代码优化的机制。

背景技术

通常,对于要在计算系统上执行的程序,程序的源代码被编译并链接以产生可执行代码。作为编译过程的一部分,编译器通常对源代码执行一项或多项优化以便能够实现程序的更高效的执行。尽管编译器可识别变换源代码以优化其执行的许多机会,但编译器通常受限于它能够执行的优化,或者根据正在编译的源代码的语义可在哪里应用这种优化。

例如,因为边界条件存在的可能性,很少或从不实际发生的边界情形行为限制代码的优化。也就是说,因为当通过特定编译器优化变换了特定源代码语句时该特定源代码语句可能导致边界条件发生,所以即使它可能很少在执行期间实际发生,编译器也不能应用原本在不存在这种可能的边界条件的情况下可能应用的优化。这种边界条件包括例如把源代码变换为跨越存储页边界的优化代码并且该页不可访问,即,该存储页被设置为不可用于读、写或者读和写,或者该页已被“换出(paged out)”,意味着存储在外部存储介质上并且从主内存和页表中去除。例如,可能受这种边界情形行为影响的一种编译器优化是标量源代码变换为编译的向量代码。编译器试图在这种变换之后保留原始源代码的行为。然而,在把标量代码变换为向量代码时,可能出现这种情况:原始标量代码在使用顺序标量代码执行进行执行时将不具有任何边界条件违反,但在变换为以并行方式执行的向量代码时在变换的代码保留源代码的原始行为的情况下可能导致边界条件违反,该边界条件违反可能导致变换的代码的错误执行。此外,当变换要在多线程环境中执行的代码时,变换的代码可能引入线程级竞态条件,在这种状态下,两个或更多的线程以并行方式访问数据的同一部分,因此,由一个线程写数据可能把错误引入到另一线程或另一些线程的操作中。

结果,当编译器确定可能在变换的代码中发生边界条件违反时,编译器通常不对代码的该部分执行优化以便避免变换的代码可能以不同于原始源代码的方式工作的任何可能性,而不管这种可能性多小。因此,编译的代码未被尽可能多地优化,因为在存在边界条件违反或与原始源代码不一致的其它行为的可能性的区域中不应用优化。

或者,用户可手动地推翻这种编译器行为并指示编译器忽略这些语义。结果,编译器可仍然进行变换,但这可能导致变换的代码的错误操作。此外,用户经常不知道源代码或变换的代码中的特定语义是否必要并且对于推翻编译器的正常行为犹豫不决。

发明内容

在一个说明性实施例中,提供了一种数据处理系统中的用于积极优化计算机代码的方法。该方法包括:由在数据处理系统中的处理器上执行的编译器确定应用于源代码的一部分的优化。该方法还包括:由编译器确定应用于源代码的该部分的优化是否将会导致不安全的优化代码,因此是否是不安全的优化。不安全的优化代码是这样的代码:它引入由优化代码产生的新的异常的源,或者产生与由原始代码本应获得的结果不同的结果。此外,该方法包括:响应于确定优化是不安全的优化,由编译器产生应用了该不安全的优化的源代码的该部分的积极编译代码版本和不应用该不安全的优化的保守编译代码版本。另外,该方法包括:由编译器把积极编译代码版本和保守编译代码版本都存储在与数据处理系统关联的存储装置中。

在另一说明性实施例中,提供了一种数据处理系统中的用于执行代码的一部分的方法。该方法包括:接收具有代码的一部分的可执行代码,在该可执行代码中提供了代码的该部分的积极编译代码版本和保守编译代码版本。数据处理系统的处理器执行积极编译代码版本,并确定在积极编译代码版本的执行期间是否发生异常条件。该方法还包括:响应于确定发生异常条件,回滚代码的该部分的状态的变化。此外,该方法包括:响应于回滚代码的该部分的状态的变化,在数据处理系统的处理器中执行保守编译代码版本。

在其它说明性实施例中,提供了一种包括具有计算机可读程序的计算机可用或可读介质的计算机程序产品。当在计算装置上执行该计算机可读程序时,该计算机可读程序使计算装置执行以上关于方法说明性实施例概述的各种操作和操作的组合。

在另一说明性实施例中,提供了一种系统/设备。该系统/设备可包括一个或多个处理器和耦合到所述一个或多个处理器的内存。内存可包括指令,当该指令由所述一个或多个处理器执行时,该指令使所述一个或多个处理器执行以上关于方法说明性实施例概述的各种操作和操作的组合。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201180011671.2/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top