用于数据相关控制流简化的方法技术

技术编号:14705016 阅读:34 留言:0更新日期:2017-02-25 09:37
一种减少控制流中后续块的数量以及流控制元素的数量的软件控制流的转换。转换后的控制流具有更多的简化代码和更少的数据相关的控制流,这产生更好的运行时性能,并且同时保持功能上的等效。针对控制流图中的每个数据相关流控制元素,通过找到足够使得由流控制元素选择的出口控制流将是确定性的值缩减点来提高软件控制流。修改控制流以使得控制流(不通过流控制元素)从该找到的值缩减点导向在给定找到的值缩减点的情况下将选择的标识的出口控制流。可从一个流控制元素到下一个流控制元素重复该方法。

【技术实现步骤摘要】
【国外来华专利技术】背景计算系统和相关联的网络彻底改变了人类工作、游戏和通信的方式。我们生活的几乎每个方面都在某种方式上受到计算系统的影响。计算系统的功能主要由计算系统的一个或多个处理器执行的指令驱动。这样的指令通常统称为“软件”。软件通常最初使用以具有更容易被人解释和撰写的语义的编程语言编写的源代码来生成。编译器和解释器的任务是将该软件从源代码转换为处理器可直接解释的机器代码。有时,存在若干编译阶段,其中源代码首先被转换为相对独立于运行时平台的中间代码,然后一旦知晓或使用运行时平台执行该代码,则将中间代码转换为机器码。为了生成用于软件的逻辑控制流的概念,编译器通常生成逻辑上表示可能发生的可能的执行流的全部或至少大部分的控制流图。此外,编译器尝试执行软件优化,使得软件的执行在运行时更快更有效,而不会不利地改变由软件在运行时执行的逻辑。本文要求保护的主题不限于解决任何缺点或仅在诸如上述环境这样的环境中操作的各实施例。相反,提供该背景仅用于例示其中可实施所述一些实施例的一个示例性
简要概述本文所描述的至少一些实施例涉及软件程序的控制流的改进。作为示例,控制流可由编译器在编译时或者通过一些其他的控制流图分析器来改进。通过遍历对应于软件程序的控制流的控制流图来改进控制流,直到检测到流控制元素(例如条件分支或跳转表),该流控制元素根据运行时参数(在本文中也称为“流驱动参数”)的值指定可能在运行时采取的多个出口控制流。然后,在控制流图中找出在流控制元素之前的值缩减点,在该流控制元素处可充分确定流驱动参数的值,使得由流控制元素选择的出口控制流的身份是确定性的。接着,针对每个找到的值缩减点,修改控制流以使得控制流(不通过流控制元素)从该找到的值缩减点导向将选择的标识的出口控制流。可对所有流控制元素重复该方法,从而完成一遍控制流。也可迭代地执行这遍控制流,以在每一遍之后进一步改进控制流。令人惊讶的是,该过程可被用来执行控制流的各种各样的改进。例如,该过程可被用来执行控制等效简化和if循环交换。然而,可使用相同的过程(诸如在本文中称为“周期循环展开”和“切换循环收缩”)来执行更加复杂的改进。本概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求保护的主题的范围。附图简述为了描述能够获得上述和其它优点和特征的方式,各实施例的更具体的描述将通过参考各附图来呈现。可以理解,这些附图只描绘了示例实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释各实施例,在附图中:图1抽象地示出了其中可采用本文中所描述的一些实施例的计算系统;图2抽象地示出了包括多个流控制元素的软件程序,每个流控制元素根据流驱动参数的值控制执行控制的流程进入多个控制流中的一个控制流中;图3抽象地示出了对应于图2的软件程序的流图;图4示出了用于优化软件程序的控制流的方法的流程图;图5示出了从其中可执行被称为“控制等效简化(controlequivalencyreduction)”的控制流简化技术的代码的第一示例产生的控制流图;图6示出了在已被修改为将一个值缩减点与对应的标识的控制流耦合之后的图5的控制流图;图7示出了在已被修改为将另一个值缩减点与其对应的标识的控制流耦合之后的图6的控制流图;图8示出了在执行不到的代码被移除之后的图7的控制流图;图9示出了其中本文描述的方法的应用导致对控制流执行被称为“周期循环展开(cyclicloopunrolling)”的控制流简化技术的代码;图10示出了其中本文描述的方法的应用导致对控制流执行被称为“循环外提(loopunswitching)”的控制流简化技术的代码;图11示出了其中本文描述的方法的应用导致对控制流执行被称为“if循环交换(if-loopexchanges)”的控制流简化技术的代码;图12示出了其中本文描述的方法的应用导致对控制流执行被称为“提升(hoisting)”的控制流简化技术的代码;图13示出了其中本文描述的方法的应用导致对控制流执行被称为“切换循环收缩(switchloopshrinking)”的控制流简化技术的代码;详细描述本文所描述的至少一些实施例涉及软件程序的控制流的改进。作为示例,控制流可由编译器在编译时或者通过一些其他的控制流分析器来改进。通过遍历对应于软件程序的控制流的控制流图来改进控制流,直到检测到流控制元素(例如条件分支或跳转表),该流控制元素根据运行时参数(在本文中也称为“流驱动参数”)的值指定可能在运行时采取的多个出口控制流。然后,在控制流图中找出在流控制元素之前的值缩减点,在该流控制元素处可充分确定参数的值,使得由流控制元素选择的出口控制流的身份是确定性的。接着,针对每个找到的值缩减点,修改控制流以使得控制流(不通过流控制元素)从该找到的值缩减点导向将选择的标识的出口控制流。可对所有流控制元素重复该方法,从而完成一遍控制流。也可迭代地执行这遍控制流,以在每一遍之后进一步改进控制流。令人惊讶的是,该过程可被用来执行控制流的各种各样的改进。例如,该过程可被用来执行控制等效简化和if循环交换。然而,可使用相同的过程(诸如在本文中称为“周期循环展开”和“切换循环收缩”)来执行更加复杂的改进。将参考图1描述对计算系统的一些介绍性讨论。然后,将参照随后的附图描述使用本文描述的原理的软件程序的改进。计算系统现在越来越多地采取多种多样的形式。例如,计算系统可以是手持式设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统或甚至常规上不被认为是计算系统的设备。在本说明书以及权利要求书中,术语“计算系统”被广义地定义为包括任何设备或系统(或其组合),该设备或系统包含至少一个物理且有形的处理器以及其上能具有可由处理器执行的计算机可执行指令的物理且有形的存储器。存储器可以采取任何形式,并可取决于计算系统的性质和形式。计算系统可以分布在网络环境中,并可以包括多个组分计算系统。如图1所例示,在其最基本的配置中,计算系统100通常包括至少一个硬件处理单元102和存储器104。存储器104可以是物理系统存储器,该物理系统存储器可以是易失性的、非易失性的、或两者的某种组合。术语“存储器”也可在此用来指示诸如物理存储介质这样的非易失性大容量存储器。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。如本文中所使用的,术语“可执行模块”或“可执行组件”可以指可以在计算系统上执行的软件对象、例程或方法。此处所描述的不同组件、模块、引擎以及服务可以实现为在计算系统上执行的对象或进程(例如,作为分开的线程)。在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实施例。如果这样的动作是以软件实现的,则执行动作的相关联计算系统的一个或多个处理器响应于已经执行了计算机可执行指令来引导计算系统的操作。例如,这样的计算机可执行指令可以在形成计算机程序产品的一个或多个计算机可读介质上实现。这样的操作的示例涉及对数据的操纵。计算机可执行指令(以及被操纵的数据)可以存储在计算系统100的存储器104中。计算系统100还可包含允许计算系统100例如通过网络110与其他消息处理器通信的通信信道108。计算系统100还包括显示器112,显示器112本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201580030115.html" title="用于数据相关控制流简化的方法原文来自X技术">用于数据相关控制流简化的方法</a>

【技术保护点】
一种用于改进软件程序的控制流的计算机实现的方法,所述计算机实现的方法由执行用于所述计算机实现的方法的计算机可执行指令的一个或多个处理器执行,所述计算机实现的方法包括:遍历与所述软件程序的控制流相对应的控制流图;作为遍历的结果,检测流控制元素,所述流控制元素根据运行时参数的值指定可能在运行时采取的多个出口控制流;响应于所述检测流控制元素,在所述控制流图中找到在所述流控制元素之前的值缩减点,使得所述值缩减点充分缩小所述参数的值,使得将由所述流控制元素选择的所述出口控制流是确定性的;从所述多个出口控制流中标识在给定所找到的值缩减点时将采取的出口控制流;和修改所述控制流,使得所述控制流图从所找到的值缩减点导向所述标识的出口控制流,而不遍历所述流控制元素。

【技术特征摘要】
【国外来华专利技术】2014.06.06 US 14/298,6051.一种用于改进软件程序的控制流的计算机实现的方法,所述计算机实现的方法由执行用于所述计算机实现的方法的计算机可执行指令的一个或多个处理器执行,所述计算机实现的方法包括:遍历与所述软件程序的控制流相对应的控制流图;作为遍历的结果,检测流控制元素,所述流控制元素根据运行时参数的值指定可能在运行时采取的多个出口控制流;响应于所述检测流控制元素,在所述控制流图中找到在所述流控制元素之前的值缩减点,使得所述值缩减点充分缩小所述参数的值,使得将由所述流控制元素选择的所述出口控制流是确定性的;从所述多个出口控制流中标识在给定所找到的值缩减点时将采取的出口控制流;和修改所述控制流,使得所述控制流图从所找到的值缩减点导向所述标识的出口控制流,而不遍历所述流控制元素。2.根据权利要求1所述的计算机实现的方法,其特征在于,修改所述控制流图包括:标识所述控制流图中的一个或多个流图元素的介于所找到的值缩减点和除所述流控制元素之外的流控制元素之间的中间流;和将所述控制流中的所述中间流从所找到的值缩减点添加到所述标识的出口控制流。3.根据权利要求1所述的计算机实现的方法,其特征在于,所述找到的值缩减点是第一值缩减点,所述标识的出口控制流是第一标识的出口控制流,并且所述计算机实现的方法还包括:在所述控制流图中找到在所述流控制元素之前的第二值缩减点;从所述多个出口控制流中标识在给定所述第二值缩减点时将采取的第二出口控制流;和从所述第二值缩减点修改所述控制流导向所述第二出口控制流而不遍历所述流控制元素。4.如权利要求1所述的计算实现的方法,其特征在于,进一步包括:确定修改所述控制流导致一个或多个不可达的流元素;和响应于确定修改所述控制流导致一个或多个不可达的流元素,从所述...

【专利技术属性】
技术研发人员:W·何T·曾
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1