当前位置: 首页 > 专利查询>微软公司专利>正文

指令优化制造技术

技术编号:7625536 阅读:170 留言:0更新日期:2012-08-01 03:07
本发明专利技术涉及指令优化。程序可在执行之前,在运行时被优化以提高性能。被指定来执行的程序指令/操作可被记录并随后在执行之前,在运行时例如通过对指令执行变换来进行优化。例如,这样的优化可移除、重新排序和/或组合指令等。

【技术实现步骤摘要】

本专利技术涉及指令优化
技术介绍
计算机程序是描述由计算机或其它基于处理器的设备执行的操作(即动作)的指令组。当计算机程序被加载并在计算机硬件上执行时,计算机将会跟随计算机程序的指令以预先确定的方式运转。因此,计算机变为执行可由各指令描述的任务的专用机器。使用一种或多种编程语言的程序员创建构成计算机程序的指令。通常,源代码由程序员手动和/或在包括各种开发服务(例如,编辑器、调试器、自动填充、智能协助...) 的集成开发环境(IDE)的帮助下指定或编辑。作为示例,程序员可选择利用面向对象的编程语言(例如,C# 、Visual Basic , Java...)实现源代码,其中程序逻辑被指定为类或对象的实例之间的交互等。随后,源代码可被编译或以其他方式变换成另一形式以便于由计算机或类似设备执行。编译器常规上从源代码为特定目标产生代码。例如,某些编译器将源代码变换成本机代码以便由特定机器执行。其它编译器从源代码生成中间代码,其中该中间代码随后在运行时被动态解释或即时(JIT)编译例如以便于在计算机平台上执行。通常,程序的大多数优化是当源代码被编译成本机或中间代码时在编译时执行的。然而,也可在代码解释或JIT编译期间在运行时执行有限的程序优化。
技术实现思路
下面呈现了简化的
技术实现思路
,以便提供对所公开主题的某些方面的基本概念。本
技术实现思路
不是广泛性的概观。它并不旨在标识关键/重要元素,也不旨在划定所要求保护主题的范围。其唯一目的是以简化形式呈现一些概念,作为稍后呈现的更具体实施例的序言。简言之,本专利技术一般涉及指令优化。更具体地,代替在运行时急切地执行程序指令,执行也可被延后而指令可被记录。随后或并发地,所记录的指令可利用局部和/或全局优化技术来优化。例如,指令可基于其它所记录的指令来移除、重新排序和/或组合。当指令需要被执行如提供结果时,执行一组优化的指令,该组指令按照某种度量(例如,运行时间、存储器量...)不差于原始的一组指令。为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护主题的某些说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护主题的范围之内。当结合附图阅读以下详细描述时,本专利技术的其他优点和新颖特征将变得显而易见。附图说明图I是指令优化系统的框图。图2是代表性优化组件的框图。图3是示出指令优化系统的组成的框图。图4图形地描绘了编码为类型的查询运算符。图5是指令优化的方法的流程图。图6是启用运行时指令优化的方法的流程图。图7是示出用于本公开各方面的合适操作环境的示意性框图。具体实施例方式以下细节大体针对指令优化。指令可在执行之前,在运行时记录和变换,以改进所规定的操作的执行。这样的变换可涉及移除、重新排序和/或组合指令。换言之,可通过记录需要被执行的操作以及在执行之前优化操作而非立即执行操作来延后执行。这可被称为即时指令优化。此外,这样的功能可对应于指令虚拟化,因为对于指定的指令和被实际执行的指令包括间接层。根据一个实施例,优化可在局部、在一小组指令(例如,窥孔或窗口) 上执行。另外或替换地,可采用较大型即更为全局的优化方法。现在参考附图更详细地描述本公开的各个方面,在全部附图中用相似的标记来指示相似或相应的元素。然而应该理解,附图及其相关详细描述不旨在将所要求保护的主题限于所公开的具体形式。相反,其意图是覆盖落在所要求保护主题的精神和范围之内的所有修改、等价物和替换的方案。首先参考图1,示出了指令优化系统100。如图所示,指令优化系统100接收、检索或以其它方式获取或获得指令或者换言之指令流(也被称为指令的流),并输出优化指令流。这样的优化可在执行之前,在运行时执行,由内部或外部触发启动。此外,指令优化系统包括记录组件110和优化组件120。记录组件110例如可接收、检索或其它方式获取或获得指令流,或即指定要执行的一个或多个动作的一系列指令,并在获取它们时记录这些指令。在某种意义上,创建其中指令被记录但不被执行的指令缓冲区。指令可在任何计算机可读介质上记录。优化组件120可例如根据代数性质等(例如,域特定信息、成本...)将所记录的指令变换成优化形式。如前所述,优化可由内部或外部触发或事件触发。作为示例而非限制,优化可在记录了确定数量的指令时和/或应对于指令产生的结果的请求而触发。在一个或多个触发事件发生时,优化组件120可将所记录的指令变换成较佳的形式,以便于其指定的动作的优化执行。将注意力转向图2,描绘了代表性优化组件120。优化组件120可包括执行优化操作的多个子组件,包括但不限于移除组件210、重新排序组件220和组合组件230。移除组件210可移除或删除指令。例如,如果存在将元素添加到列表以及然后从该列表中移除同一元素的指令,则因为动作抵消,移除组件210可移除这两条指令。重新排序组件220可对指令重新排序以优化计算。换言之,可能存在重新排序组件220可能试图最小化的、与指令集排列相关联的计算成本。例如,可通过在执行某一动作之前过滤数据集来改进执行,因为该数据集将有可能通过该过滤而缩减。更具体地,如果指令指示排序操作(例如,OrderBy)要在过滤操作(例如,Where)之前执行,则指令可被颠倒,使得过滤操作在排序操作之前执行,以使得就潜在缩减的数据集来执行排序操作。组合组件230可将两个或更多个指令组合(换言之,接合)成单个指令。更具体地,可生成捕捉多个指令然后可移除其它指令的新指令。例如,代替执行要求多次遍历数据集的多个过滤操作,过滤操作可被组合,使得数据集仅需被遍历一次。回到图1,指令优化系统100可在执行之前,在运行时操作。代替立即执行指令,执行可被延后,且指令可被记录并优化。为了清楚起见并利于理解,考虑以下类推。假定一个体(例如,人)要将三个美元金额(诸如$2. 5040. 25以及$1. 50)相加在一起。该个体可简单地将金额按照所提供的方式相加在一起(例如,$2. 50+$0. 25 = $2. 75,$2. 75+$1. 50 = $4. 25)。然而,可通过延后计算直到获取了要相加在一起的所有值,对值重新排序然后执行计算,来使该计算较为容易。具体地,通常人们较易于将半美元(例如,$0.50)而非美元的其它分数(例如,$0. 75、$0. 25...)加起来。从而,代替对所看到的金额执行加法,可仅仅记录值。随后,金额可被重新排序为$2. 5041. 50和$0. 25,并被计算(例如,$2. 50+$1. 50 =$4. 00,$4. 00+$0. 25 = $4. 25)。相同的结果以较容易计算的方式得到。指令优化系统 100可对于任何机器可执行指令提供类似的功能。经由优化组件120的优化也可在各个粒度级别执行。根据一个实施例,优化可对于一小组指令(例如,窥孔或窗口)执行。例如,优化可在对于先前的“N”个相邻指令获取了每一指令之后触发,其中“N”是正整数。另外或另选地,可采用其中在一大组指令上执行优化的更为全局的方法。例如,优化可紧接在执行之前启动,诸如当请求根据所记录的指令而产生的结果时。在一个实施例中,较简单的优化可被指定为对一小组指令执行,而更为复杂的优化可被指定为对于较大一组指令执行以利用关于指令的聚集知识。当然,这不是必需的。本文档来自技高网...

【技术保护点】

【技术特征摘要】
...

【专利技术属性】
技术研发人员:B·德斯梅特H·J·M·梅杰
申请(专利权)人:微软公司
类型:发明
国别省市:

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

1
相关领域技术