用于计算装置的动态电力优化的制作方法

文档序号:6496442阅读:220来源:国知局
用于计算装置的动态电力优化的制作方法
【专利摘要】在各种方面中,可使用虚拟化技术通过在执行之前对代码进行电力优化来减少执行应用程序所消耗的电量。在机械层操作的动态二进制翻译器可使用电力消耗模型来识别可受益于优化的代码段,且执行对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码。执行硬件可装备有额外电路来测量执行代码的电力消耗特性。可基于所述所测得的先前执行代码的所述电力消耗特性来更新所述电力消耗模型且可重新产生对象代码。在一方面,当计算装置连接到电池充电器时,可实现电力优化。
【专利说明】用于计算装置的动态电力优化
[0001]相关申请案
[0002]本申请案主张2011年9月20日申请的标题为“用于计算装置的动态电力优化(Dynamic Power Optimization For Computing Devices) ”的第 61 / 536,684 号美国临时申请案的优先权的权益,所述临时申请案的整个内容特此以引用的方式并入。
【背景技术】
[0003]蜂窝式和无线通信技术在过去的若干年已经历了爆发性增长。此增长已受较佳的通信硬件、较大的网络和较可靠的协议推动。无线服务提供商现在能够向其客户提供一批不断扩展的特征和服务,且向用户提供前所未有的对信息、资源和通信的接入等级。为了跟上这些服务增强,移动电子装置(例如,蜂窝式电话、平板计算机、膝上型计算机等)已变得比任何时候都强大。移动装置用户现在在其移动装置上例行地执行多个复杂且耗电量大的软件应用程序和服务,全都无需到电源的有线连接。因此,移动装置的电池寿命和电力消耗特性对于移动装置的消费者来说,正成为越来越重要的考虑因素。
[0004]增加的电池寿命通过允许用户在较长时间周期内用户无线装置做更多事情来最大化用户的体验。为了最大化电池寿命,移动装置通常使用动态电压和频率比例缩放技术来优化移动装置电力消耗。当检测到非关键应用程序或低负载条件时,这些技术允许可编程装置管线在较低电力和/或较低性能模式下运行。举例来说,移动装置可经配置以在闲置时使一个或一个以上处理器和/或资源处于低电力状态。虽然这些技术可改进总体电池性能,但所述技术要求使装置处理器和/或资源处于闲置状态,且无法改进在装置上执行的个别应用程序或进程的电力消耗特性。因此,现存技术尝试依据在装置上运行的软件应用程序来定制移动装置的行为,而不是定制所述应用程序以在装置上消耗较少能量。由于许多现代软件应用程序需要耗电量大的处理,因此减少在装置上执行的进程的电力消耗而不更改所述进程的性能将大大增强用户体验。

【发明内容】

[0005]各种方面包含用于为计算装置上的执行期间的电力节约而优化对象代码的方法,其包含:在系统软件中接收经编译二进制对象代码;在于机器层处操作的动态二进制翻译器进程中分析所述所接收对象代码,以识别可为电力节约优化的代码段;在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译,以产生经电力优化的对象代码;以及在所述计算装置的处理器上执行所述经电力优化的对象代码。在一方面,接收所述经编译二进制对象代码的所述系统软件为系统虚拟机或管理程序中的一者。在一方面,接收所述经编译二进制对象代码的所述系统软件为操作系统。在一方面,在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码包含将第一指令集架构翻译成第二指令集架构。在一方面,所述第一指令集架构与所述第二指令集架构相同。在一方面,在于所述机器层处操作的动态二进制翻译器中分析所述所接收对象代码以识别可为电力节约而优化的代码段包含确定是否存在实现与所识别对象代码操作相同结果的替代操作,且在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码包括在翻译期间用所述替代操作来代替所述所识别对象代码操作。在一方面,所述方法进一步包含感测与新电源的连接。在一方面,在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码是在感测到与所述新电源的连接时执行。在一方面,分析所述所接收对象代码包含使用电力消耗模型来识别可为电力效率优化的对象代码段。在一方面,所述方法进一步包含:测量经电力优化的对象代码段的所述执行中所消耗的电量;比较所述测得的所消耗电量与所述电力消耗模型的预测;以及基于所述比较的结果修改所述电力消耗模型。
[0006]进一步方面包含一种经配置以在经改进电力节约的执行期间优化对象代码的计算装置,其包括:用于在系统软件中接收经编译二进制对象代码的装置;用于在于机器层处操作的动态二进制翻译器进程中分析所述所接收对象代码以识别可为电力节约优化的代码段的装置;用于在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码的装置;以及用于在所述计算装置的处理器上执行所述经电力优化的对象代码的装置。在一方面,用于在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码的装置包含用于将第一指令集架构翻译成第二指令集架构的装置。在一方面,用于将第一指令集架构翻译成第二指令集架构的装置包含用于将所述第一指令集架构翻译成与所述第二指令集架构相同的指令集架构的装置。在一方面,用于在于所述机器层处操作的动态二进制翻译器进程中分析所述所接收对象代码以识别可为电力节约优化的代码段的装置包含用于确定是否存在实现与所述所识别的对象代码操作相同结果的替代操作的装置。在一方面,用于在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化对象代码的装置包含用于在翻译期间用所述替代操作代替所述所识别对象代码操作的装置。在一方面,所述计算装置进一步包含用于感测与新电源的连接的装置。在一方面,用于在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码的装置包含用于在感测到与所述新电源的连接时翻译所述所接收代码以产生经电力优化的对象代码的装置。在一方面,用于分析所述所接收对象代码的装置包括用于使用电力消耗模型来识别可为电力效率优化的对象代码段的装置。在一方面,所述计算装置进一步包含:用于测量经电力优化的对象代码段的所述执行中所消耗的电量的装置;用于比较所述测得的所消耗电量与所述电力消耗模型的预测的装置;以及用于基于所述比较的结果修改所述电力消耗模型的装置。
[0007]进一步方面包含一种计算装置,其包含:存储器;以及处理器,其耦合到所述存储器,其中所述处理器配置有处理器可执行指令,以执行包括以下各项的操作:在系统软件中接收经编译二进制对象代码;在于机器层处操作的动态二进制翻译器进程中分析所述所接收对象代码,以识别可为电力节约优化的代码段;在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译,以产生经电力优化的对象代码;以及在计算装置的处理器上执行所述经电力优化的对象代码。在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码包含将第一指令集架构翻译成第二指令集架构。在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得所述第一指令集架构为与所述第二指令集架构相同的指令集架构。
[0008]在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得在于所述机器层处操作的动态二进制翻译器进程中分析所述所接收对象代码以识别可为电力节约优化的代码段包含确定是否存在实现与所述所识别的对象代码操作相同结果的替代操作;以及在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化对象代码包含在翻译期间用所述替代操作代替所述所识别对象代码操作。在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行包含感测与新电源的连接的操作。在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码是在感测到与所述新电源的连接时执行。在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得分析所述所接收对象代码包含使用电力消耗模型来识别可为电力效率优化的对象代码段。在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行进一步包含以下各项的操作:测量经电力优化的对象代码段的所述执行中所消耗的电量;比较所述测得的所消耗电量与所述电力消耗模型的预测;以及基于所述比较的结果修改所述电力消耗模型。
[0009]进一步方面包含一种非暂时性处理器可读存储媒体,其上存储有处理器可执行软件指令,所述处理器可执行软件指令经配置以致使处理器执行用于为计算装置上的执行期间的电力节约优化对象代码的操作,所述操作包含:在系统软件中接收经编译二进制对象代码;在于机器层处操作的动态二进制翻译器中分析所述所接收对象代码,以识别可为电力节约优化的代码段;在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译,以产生经电力优化的对象代码;以及在所述计算装置的处理器上执行所述经电力优化的对象代码。在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码包含将第一指令集架构翻译成第二指令集架构。在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得所述第一指令集架构为与所述第二指令集架构相同的指令集架构。在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得在于所述机器层处操作的动态二进制翻译器进程中分析所述所接收对象代码以识别可为电力节约优化的代码段包含确定是否存在实现与所述所识别的对象代码操作相同结果的替代操作。在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化对象代码包含在翻译期间用所述替代操作代替所述所识别对象代码操作。在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行包含感测与新电源的连接的操作。在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码是在感测到与所述新电源的连接时执行。在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得分析所述所接收对象代码包含使用电力消耗模型来识别可为电力效率优化的对象代码段。在一方面,所述所存储的处理器可执行软件指令经配置以致使处理器执行进一步包含以下各项的操作:测量经电力优化的对象代码段的所述执行中所消耗的电量;比较所述测得的所消耗电量与所述电力消耗模型的预测;以及基于所述比较的结果修改所述电力消耗模型。
【专利附图】

【附图说明】
[0010]并入本文中并构成本说明书的部分的【专利附图】

【附图说明】本发明的示范性实施例,且连同上文给出的概括描述和下文给出的详细描述一起用以阐释本发明的特征。
[0011]图1是说明适合实施各种方面的计算系统中的逻辑组件和接口的分层计算机架构图。
[0012]图2A和2B是说明用于以适合实施各种方面的格式分配代码的逻辑组件和代码变换的过程流程图。
[0013]图3A和3B是说明适合实施各种方面的虚拟机中的逻辑组件的分层计算机架构图。
[0014]图4是说明根据一方面的系统虚拟机的逻辑组件和数据流的组件框图。
[0015]图5是说明用于产生经优化对象代码的方面方法的过程流程图。
[0016]图6是说明用于根据一方面方法测量执行代码的电力消耗特性以连续地再优化所产生的对象代码的逻辑组件和数据流的组件流程图。
[0017]图7是说明用于测量执行代码的电力消耗特性并连续地再优化对象代码的方面方法的过程流程图。
[0018]图8是说明用于在已检测到所连接电源之后执行对象代码优化的方面方法的过程流程图。
[0019]图9是说明适合实施各种方面的移动装置的组件框图。
[0020]图10是说明适合实施各种方面的另一移动装置的组件框图。
【具体实施方式】
[0021]将参考附图详细描述各种方面。只要有可能,就将在图式中始终使用相同参考编号来指代相同或相似部分。对特定实例和实施方案作出的参考是用于说明性目的,且无意限制本发明或所附权利要求书的范围。
[0022]词语“示范性的”在本文中意味着“充当实例、个例或说明”。不必将本文中描述为“示范性”的任何实施方案解释为与其它实施方案相比为优选或有利的。
[0023]术语“移动装置”和“计算装置”在本文中可互换地用来指代蜂窝式电话、个人数据助理(PDA)、掌上型计算机、无线电子邮件接收器(例如,Blackberry?和Treo?装置)、多媒
体具因特网能力的蜂窝式电话(例如Blackhcrry Storm? )、全球定位系统(GPS)接收器、无线游戏控制器以及包含可编程处理器且依靠电池电力操作,使得省电方法有益的类似个人电子装置中的任一者或全部。
[0024]术语“资源”在本文中用来指代各种各样的电路(例如,端口、时钟、总线、振荡器等)、组件(例如,存储器)、信号(例如,时钟信号)、功能以及电压源(例如,电压轨)中的任一者,其可用来支持在计算装置上运行的处理器和客户端。
[0025]如上文所论述,用于增加电池寿命的现有技术通常使一个或一个以上处理器和/或资源处于低电力状态。这些技术要求使装置处理器/资源处于闲置或低频状态,而不改变应用程序/进程所执行的代码。
[0026]各种方面提供使用可在管理程序层内实施以减少活动处理器/资源所消耗的电量的虚拟化技术的方法、系统和装置。在第一方面,虚拟机接收用于执行的对象代码,分析所述对象代码以辨识表征将由装置处理器执行的操作的运算和参数,并执行二进制到二进制翻译,以将对象代码变换或翻译成可在特定移动装置的硬件上更高效地起作用的新对象代码。可根据装置特定模型来实现对象代码的此辨识和变换。使用与给定移动装置的处理器架构相关联的模型,虚拟机可确定在特定硬件装置上执行对象代码可为耗电量大的。虚拟机可接着将二进制对象代码翻译为具有不同运算子(例如,移位与相加运算对乘法运算)的不同第二对象二进制代码以便节约电力。因此,使用直接二进制到二进制翻译,可保留代码的信息,同时可减少处理对象代码所花费的能量的总量。
[0027]在第二方面,基于由先前经优化对象代码消耗的实际电力的测量来更新对象代码的能量消耗模型以及为优化代码所进行的翻译。以此方式,可使用移动装置处理器的实际性能来优化对象代码,而不是依靠无法反映处理器性能中的批次间可变性的固定模型。在此方面,计算装置上的各种处理器(例如中央处理单元、调制解调器处理器以及GPS接收器处理器(仅举几例)可经装备以测量对象代码的执行期间所消耗的电力。为了实现跟踪电力消耗到特定对象代码优化变换,当优化和变换对象代码时,为对象代码块(chunk)或有关的段加标签。当代码由处理器运行时,如下图中所示,将与代码标签相关联的测得电力消耗以及所述测量与性能预测模型进行比较。接着将实际电力消耗与所预测性能之间的比较反馈到优化进程,使得可为后续对象代码优化识别出或使用较佳的优化方法。接着,如上文所述,例如在下次在移动装置上执行应用程序时,通过虚拟机来再优化对象代码。
[0028]一般来说,在虚拟机(VM)中实施虚拟化技术,所述虚拟机是执行类似物理硬件机的应用程序的软件应用程序。具体地说,虚拟机提供应用程序与物理硬件之间的接口,从而潜在地允许连系到特定指令集架构(ISA)的应用程序在实施不同指令集架构的硬件上执行。虚拟化在各种方面是有益的,这是因为应用程序通常被分配为连系到特定指令集架构的经编译二进制文件,且取决于特定操作系统接口(OSI)。在无虚拟机辅助的情况下,经编译的二进制文件只能在支持特定指令集架构(例如,因特尔IA-32等)以及为其编译二进制代码的操作系统接口的系统上执行。可利用虚拟机来通过增加支持应用程序的架构要求且/或将应用程序的指令集架构翻译为硬件所支持的指令集架构的软件层来避免这些限制。
[0029]图1是说明展示适合实施各种方面的典型计算机系统中的逻辑组件和接口的处理器的分层架构图。所说明的计算机系统架构100包含硬件组件和软件组件两者。硬件组件可包含执行硬件(例如,应用程序处理器、数字信号处理器等)102、输入/输出装置106,以及一个或一个以上存储器104。软件组件可包含操作系统108、库模块110以及一个或一个以上应用程序112。
[0030]应用程序112使用应用程序接口(API)来向库模块110发出高级语言(HLL)库调用。库模块110使用应用程序二进制接口(ABI)来调用操作系统108上的服务(例如,经由操作系统调用)。操作系统108使用特定指令集架构(ISA)与硬件组件通信,特定指令集架构为由执行硬件102实施的特定操作代码(opcode)和原生命令的列表。
[0031]应用程序二进制接口界定如由应用程序进程所见的机器,而应用程序接口指定如由高级语言程序所见的机器特性。ISA界定如由操作系统所见的机器。
[0032]图2A和2B是说明以闻级语g (例如,爪睡(Java)、C++等)编写的软件应用程序到可分配代码的转换的过程流程图。如上文所提到,移动装置应用程序通常作为连系到特定ISA和操作系统接口(OSI)的经编译二进制文件(称为“对象代码”)来分配。
[0033]图2A说明用于将来自高级语言202的代码转换为可分配对象代码206以传递到移动装置的方法200。应用程序开发者可使用高级语言(爪哇、C++等)来编写源代码202,其可由编译器转换为对象代码206。编译器可在逻辑上组织成前端组件、中间端组件和后端组件。编译前前端可接收源代码202且执行类型检查操作,检查源代码的语法和语义,且产生源代码的中间表示204。编译器中间端可执行用于优化中间代码204的操作,例如移除无用或不可达代码、重定位计算等。编译器后端可将经优化中间代码204翻译为二进制/对象代码206,其编码将由硬件与OSI的特定组合执行的特定机器指令。接着可将二进制/对象代码206分配给支持针对其产生二进制数的ISA与OSI的特定组合的装置,且可存储在物理存储器中,且由加载器检索为存储器图像208。
[0034]图2B说明用于将来自高级语言252的代码转换为可分配代码256以传递到具有虚拟化软件的移动装置的方面方法250。编译器模块可接收以高级语言编写的源代码252,且产生虚拟指令集架构中的抽象机器代码(虚拟ISA代码)和/或指定虚拟机接口的字节代码254。编译器模块可产生虚拟ISA代码/字节代码254,而不执行将代码连系到特定架构或操作系统的任何负载中间端和后端编译器处理。可将所产生的虚拟ISA代码/字节代码254分配给具有各种各样的平台和执行环境的移动装置,只要所述移动装置包含支持用以产生虚拟ISA代码/字节代码254的虚拟ISA的虚拟化软件。
[0035]安装有虚拟化软件的计算装置可接收分配代码254,且将接收到的代码存储在存储器中。虚拟化软件可包含用于将虚拟ISA指令翻译为基础硬件所使用的实际ISA指令的解译器/编译器。虚拟机加载器可加载接收到的代码的虚拟存储器图像254,且将接收到的代码继续传递到虚拟机解译器/编译器,其可将解译虚拟存储器图像,且/或编译其上所含有的虚拟ISA代码,以产生主机器代码258以直接在主机平台上执行。
[0036]可在两个步骤中执行代码的编译,一个步骤在分配之前,且另一步骤在分配之后。这允许将软件应用程序容易地运输到具有支持第一编译器所使用的虚拟ISA的虚拟化软件的任何计算装置,而与装置的基础硬件和操作系统接口无关。此外,虚拟机编译器可经配置以比全编译器快得多的方式处理代码,因为虚拟机编译器仅需要将虚拟ISA转换为主机器指令。
[0037]因此,在图2A中所说明的方法200中,将代码作为机器/对象代码(例如,ARM可执行码)分配,而在图2B中所说明的方面方法250中,将代码作为抽象机器代码/字节代码(例如,达尔维克(Dalvik)字节代码)分配。在任一情况下,静态优化器可在分配之前(例如,在编译期间)优化代码。然而,将在其上执行代码的硬件的特定特性不可用于静态优化器,且在运行时之前通常无法知晓。出于此原因,静态优化器通常使用一股优化例程,其优化代码以在各种各样的平台和执行环境上更高效地(即,更快地)运行。这些一股优化例程无法考虑在其上执行代码的个别硬件的特定特性,例如特定处理器的电力消耗特性。各种方面使用虚拟化技术来在运行时优化代码,从而使用将在其上执行代码的硬件的特定特性来减少执行所述代码所需的能量的量。
[0038]图3A和3B说明实施虚拟机的典型计算机系统中的逻辑组件。如上文所论述,虚拟机允许连系到特定ISA的应用程序在实施不同指令集架构的硬件上执行。这些虚拟机可分类为两种一股类别:系统虚拟机和进程虚拟机。系统虚拟机允许在不同进程或应用程序之间共享基础物理硬件,而进程虚拟机执行单个进程或应用程序。
[0039]图3A是说明实施进程虚拟机310的计算装置300的逻辑层的分层架构图。计算装置300可包含硬件308组件(例如,执行硬件、存储器、I / O装置等),以及软件组件,其包含虚拟化模块304、操作系统306以及应用模块302。
[0040]如上文参看图1所论述,硬件组件仅对应用程序通过操作系统可见,且ABI和API有效地界定可用于应用程序的硬件特征。虚拟化软件模块304在ABI / API级执行逻辑操作,且模仿操作系统调用和/或库调用,使得应用程序进程302以与其原本将与硬件组件通信(即,经由系统/库调用)相同的方式与虚拟化软件模块304通信。以此方式,应用程序进程302将虚拟化模块304、操作系统306和硬件308的组合视为单个机器,例如图3A中所说明的进程虚拟机310。
[0041]如上文所提到,进程虚拟机310存在仅为了支持单个应用进程302。进程虚拟机310以进程302创建,且在进程302完成执行时终止。在虚拟机310上运行的进程302称为“来宾”,且基础平台称为“主机”。实施进程虚拟机的虚拟化软件304通常称为运行时软件(或简称“运行时”)。
[0042]举例来说,达尔维克是GoogleTM安卓操作系统上的进程虚拟机(vM)。安卓操作系统在执行之前将达尔维克字节代码转换为ARM可执行对象代码。然而,当产生ARM对象代码时,不考虑硬件的电力消耗特性。此外,由于进程虚拟机310是以进程302创建且在进程302结束时终止,因此关于进程302的执行的信息无法用来优化其它同时进程。
[0043]图3B是说明实施系统虚拟机360的计算装置350中的逻辑层的分层架构图。计算机系统可包含硬件358组件(例如,执行硬件、存储器、I / O装置等),以及软件组件,其包含虚拟化模块356、操作系统354以及应用程序模块352。在虚拟化模块356之上运行的软件称为“来宾”软件,且支持虚拟化模块的基础平台称为“主机”硬件。
[0044]虚拟化软件模块356可逻辑上位于主机硬件与来宾软件之间。虚拟化软件可在实际硬件(原生)上或在操作系统(所托管)之上运行,且通常称为“管理程序”或虚拟机监视器(vMM)。管理程序向来宾软件提供经虚拟化的硬件资源且/或模仿硬件ISA,使得来宾软件可执行与主机硬件上所实施的ISA不同的ISA。
[0045]不同于进程虚拟机,系统虚拟机360提供多个操作系统可在其上共存的完整环境。同样地,主机硬件平台可经配置以同时支持多个经隔离的来宾操作系统环境。同时执行的操作系统之间的隔离增加了系统的安全性等级。举例来说,如果一个来宾操作系统上的安全性被破坏,或如果一个来宾操作系统遭受失效时,在其它来宾系统上运行的软件不受所述破坏/失效影响。此外,系统虚拟机可使用从一个进程的执行获得的信息来优化其它同时进程。
[0046]如上文所提到,虚拟化软件可在实际硬件(原生)上或操作系统(所托管)之上运行。在原生配置中,虚拟化软件以可用的最高特权模式运行,且来宾操作系统以降低的特权运行,使得虚拟化软件可解译并模仿将正常存取或操纵硬件资源的所有来宾操作系统动作。在所托管配置中,虚拟化软件在现存主机操作系统之上运行,且可依靠主机操作系统来来提供装置驱动器和其它较低等级服务。在任一情况下,来宾操作系统(例如,操作系统354)中的每一者以与其将与物理硬件358通信相同的方式与虚拟化软件模块356通信。这允许每一来宾操作系统(例如,操作系统354)将虚拟化模块356与硬件358的组合视为单个虚拟机,例如图3B中所说明的系统虚拟机360。
[0047]可通过解译、动态二进制翻译(DBT)或其组合来模仿来宾硬件。在解译配置中,虚拟机包含解译器,其获取、解码和模仿个别来宾指令的执行。在动态二进制翻译配置中,虚拟机包含动态二进制翻译器,其将以第一 ISA编写的来宾指令转换为以第二 ISA编写的主机指令。动态二进制翻译器可以群组或块的形式翻译来宾指令(与逐指令形成对比),所述来宾指令可保存在软件高速缓冲存储器中并再用。这允许重复执行待实施的先前经翻译指令而不重新翻译代码,此举改进了效率且减少了处理开销。
[0048]如上文所论述,动态二进制翻译器将以第一 ISA (例如,虚拟ISA、SPARC等)编写的来宾指令转换成以第二 ISA(例如,ARM等)编写的主机指令。在各种方面,动态二进制翻译器414可经配置以将以第一 ISA(例如,ARM)编写的来宾指令转换成以同一 ISA(例如,ARM)编写的主机指令。在各种方面,作为此翻译过程的一部分,动态二进制翻译器414可执行一个或一个以上代码优化程序,来基于特定一件硬件在运行时在执行特定代码段或代码序列时所消耗的电量的模型优化二进制代码的性能。在此处理中,动态二进制翻译器414可确定消耗最多电力的那些机器运算(例如,乘法运算),确定是否存在实现相同结果的替代机器运算(例如,移位与相加),且执行翻译操作,使得经翻译的代码为电力消耗而优化(例如,用移位与相加运算代替所有乘法运算等)。在一方面,动态二进制翻译器414可通过执行以第一 ISA(例如,ARM)编写的对象代码到以同一 ISA(例如,ARM)编写的对象代码的指令序列到指令序列翻译来优化代码。
[0049]图4是说明根据各种方面的实施经配置以优化应用程序404在运行时的电力行为的系统虚拟机402的计算机装置400中的逻辑组件的组件图。系统虚拟机402可在管理程序级、在操作系统406下面操作,且包含能量消耗410的一个或一个以上模型。系统虚拟机402还可包含动态代码产生器/运行时编译器412,代码产生器/运行时编译器412经配置以产生且/或选择特定为特定应用程序的执行特性定制的一个或一个以上优化程序。系统虚拟机还可包含动态二进制翻译器414,其经配置以将对象代码翻译成经优化对象代码,从而根据在其上执行应用程序的确切硬件而定制应用程序。在一方面,可将代码产生器/运行时编译器412以及动态二进制翻译器414实施为单个编译器单元416。在一方面,系统虚拟机可经配置以使得编译器单元416在对象代码(与源代码形成对比)上操作,且产生为电力效率(对比为性能/速度)优化的新对象代码。
[0050]处理器的电力消耗特性可取决于硬件的类型以及硬件如何处理特定对象代码。举例来说,完成给定处理任务所消耗的电量可在多种类型的装置之间不同(依据装置之架构)。此外,同一类型的处理器的电力消耗特性可在批次间以及芯片间不同,在一些情况下,不同者多达百分之三十。归因于这些变化,应用程序开发者无法编写根据特定装置或特定装置集合优化的源代码,这是因为此信息在运行时之前通常不可用。[0051]在一方面,系统虚拟机402编译器可经配置以基于硬件的实际电力消耗特性而在运行时优化代码。虚拟机402可在机器层(与语言层形成对比)操作,从而进一步使动态二进制翻译器414执行为电力效率而优化的优化程序,而不是或另外为处理速度而优化。在一方面,编译器单元416可使用一个或一个以上编译器优化例程来基于执行代码的运行时性能改进能量利用率。
[0052]在一方面,动态二进制翻译器414可使用在解译和/或翻译期间收集的简档信息来优化执行期间的二进制代码。另外,动态二进制翻译器414可使用在运行时收集到的电力消耗信息来修改优化程序,其可由动态二进制翻译器414和/或代码产生器412用来优化未来翻译且/或产生当前翻译的经重新优化版本。当动态二进制翻译器414拉动建档数据时,代码产生器412可产生标签,其允许虚拟机使建档数据与特定代码块相关联。在一方面,动态二进制翻译器414可使用建档参数和所产生的标签来测量在特定一件硬件上执行特定代码块所需的能量的量,且基于特定硬件的实际电力特性调整优化程序。
[0053]虚拟机402可维持可用处理器核和/或处理器的存货清单,其可包含一个或一个以上芯片上系统(SOC)。术语“芯片上系统”(SOC)用来指代含有集成在单个衬底上的多个资源和处理器的单个集成电路(IC)芯片。能量消耗模型410可包含用来存储用于监视正在不同核/处理器上处理的每一对象代码单元以及在特定核/处理器上处理每一对象代码单元或识别替代的、能量效率较高的处理器所必需的电量的信息。代码产生器可基于能量消耗模型执行二进制到二进制翻译操作,以产生经电力优化的代码。
[0054]在各种方面,能量消耗模型410可由虚拟机作者、应用程序的作者供应,且/或由虚拟机402使用机器学习程序在运行时构造。随着移动装置运行并执行对象代码,可产生且/或更新机器学习程序。举例来说,虚拟机402可经配置以通过使用机器学习技术和经验数据基于从类似代码的先前执行中收集的信息来构造能量消耗模型410。
[0055]图5说明在运行时优化对象代码以获得改进的电力消耗的方面方法500。如上文所提到,移动装置应用程序通常分配为连系到特定指令集架构(ISA)的经编译二进制文件,且取决于特定操作系统接口(OSI)。在框502中,移动装置可接收以虚拟ISA /字节代码(例如,达尔维克)编写或作为对象代码(例如,ARM可执行码)的经编译二进制代码文件。经编译的二进制文件可由移动装置操作系统接收,且被提供到在移动装置的机器层操作的系统虚拟机。在框504中,虚拟机可编译/翻译所述代码,且/或通过将一个或一个以上能量消耗模型应用于所述代码来产生经优化的对象代码,其可由虚拟机用来确定硬件将如何执行对象代码,且/或辨识对象代码内应翻译成经电力优化的替代操作序列的模式或区段。举例来说,虚拟机可使用能量消耗模型来识别代码中的消耗过多量的能量的运算子(例如乘法运算),识别对所识别的运算子合适的替代操作(例如,移位与相加运算),且执行对象代码的二进制到二进制翻译,以产生经优化的对象代码。经翻译的代码可保存为其所产生的样子,使得应用程序的下一次执行不需要重复分析和优化所述代码的过程。在框506中,可将经优化的代码加载到硬件上,且在处理器/核上执行。
[0056]在一方面,虚拟机可连续地更新能量消耗模型,且基于经优化对象代码的先前执行所消耗的实际电力的测量来重新产生对象代码。以此方式,可使用移动装置处理器的实际性能来优化对象代码,而不是依靠无法影响处理器性能中的批次间可变性的固定模型。
[0057]图6是说明经配置以执行连续地更新能量消耗模型且重新产生对象代码的方面方法600的计算装置中的实际逻辑组件和数据流的组件/过程流程图。如上文所提到,可在具有多个核和/或处理器的移动计算装置上实施虚拟机,其可包含一个或一个以上芯片上系统(SOC)。在图6中所说明的实例中,移动计算装置包含中央处理单元602、六边形(Hexagon)QDSP核604以及图形处理单元(GPU)606。这些处理器中的每一者可经装备以测量所产生的对象代码的执行期间所消耗的电力。
[0058]编译单元618可产生编译器中间表示块,且将代码块发送到目的选择器616。目的选择器616可监视处理器的可用性,且选择最适合执行代码段的处理器(例如,最少利用的处理器、需要最少电量的处理器等)。目的选择器616可将代码块发送到代码产生器模块608、610、612,其可接收代码块,且执行代码的指令序列到指令序列翻译,以为选定核/处理器602、604、606优化代码,接着可将经优化的代码加载到选定核/处理器602、604、606上以供执行。
[0059]在执行期间,可收集关于每一处理器在处理每一代码块时所消耗的电量的信息。可用收集到的电力消耗信息为所执行的代码块加标签和/或作注释。可将测得电力消耗信息发送到性能预测模块614,其比较测得消耗信息与性能预测模型。可将实际电力消耗模型与所预测性能模型之间的比较结果反馈给目的选择器616。目的选择器616可使用比较结果来更新电力消耗模型和优化程序,使得随后产生的对象代码块的电力消耗特性得以改进。
[0060]各种方面可使用电力节约与执行编译/翻译和优化操作的能量成本的总和来确定电力函数。可使用电力函数来确定与每一电力模型相关联的净电力节约,且/或确定是否应执行优化。举例来说,可使用电力函数来确定执行优化所需的能量的量是否超过优化所节约的能量的量,在超过的情况下,可取消或延迟优化的执行。
[0061]在一方面,系统虚拟机可基于在运行时收集到的电力消耗值来计算电力节约。系统虚拟机可周期性地更新电力消耗模型,且基于测得电力消耗特性与所计算的电力节约的组合来重新产生代码块。可使用线性多项式函数来计算电力节约,或计算为所计算时间帧上所节约的电量,由执行编译/翻译和优化操作所需的工作量抵消。
[0062]在一方面,硬件可装备有额外电路来测量执行代码的电力消耗特性。系统虚拟机可经配置以读取额外电路所进行的测量,且使用测得电力消耗特性来执行优化程序。
[0063]图7说明用于更新能量消耗模型且在运行时连续地再优化对象代码的方面方法700。在框702中,虚拟机编译单元可产生原生对象代码单元,以在一个或一个以上处理器上执行。当优化且/或变换对象代码单元时,可为对象代码单元加标签且/或作注释。虚拟机可使用标签/注释来跟踪每一代码单元所消耗的电量。在框704中,虚拟机可在准备有用以测量执行代码单元的电力消耗特性的额外电路的处理器上执行所产生代码单元中的一者或一者以上。在框706中,可从处理器收集电力消耗信息。在框708中,可比较测得电力消耗信息与性能预测模型,且可将实际电力消耗与预测性能之间的比较结果存储在存储器中。在框710中,可使用所存储的结果来更新虚拟机编译单元用来产生原生对象代码单元的性能模型和/或电力模型。在框712中,虚拟机编译单元可重新产生尚未执行的先前经优化对象代码或代码段,且在框704中执行所述重新产生的代码。以此方式,可将实际电力消耗与预测性能之间的比较反馈给编译单元,使得可为后续对象代码优化识别和使用较佳优化方法。[0064]所述比较还可用来识别导致较高而不是较低电力消耗的先前优化程序。举例来说,虚拟机可在装备有用以测量电力消耗的额外电路的处理器上执行经优化代码单元、测量由经优化代码消耗的实际电量,且如果所消耗的实际电量超过原始代码所消耗的电量,那么回到对其它代码单元执行类似变换。以此方式,虚拟机可经配置以随着时间过去而获悉哪些二进制变换在特定硬件单元上有效,且哪些变换不是,并在必要时对模型作出调整。
[0065]在各种方面,可使用多种反馈和机器学习技术。当测得结果背离预测模型时,可改变或更新代码优化规则集合。可例如通过改变优化规则;比较经优化代码在比价对优化规则的改变之前和之后的测得电力消耗;以及选择得出最佳结果的优化规则来使用。在一方面,可将不同长度的经优化代码的电力性能彼此进行比较,以辨识用以使较佳优化能够发生的模式。
[0066]反馈和学习机制呈现若干优点。举例来说,无需移动装置开发者产生装置特定的电力消耗模型,因为所述模型由移动装置本身通过机器学习自动产生,这简化了装置开发。作为另一实例,在设计模型之后,反馈和学习机制允许各种方面适应设定初始设计之后发生的硬件变化(例如,新存储器的添加、处理器的替代等)。反馈和学习机制还允许各种方面更好地考虑处理器电力消耗特性中的批次间或线间可变性,其可变化至多达百分之二十。举例来说,虽然特定裸片中所制作的芯片中的一些可受益于以特定方式(例如,使用移位与相加运算而不是乘法运算)来优化对象代码,但归因于批次间和线间可变性,很少有芯片可实际经历来自同一优化的较高电力消耗。各种方面可通过基于芯片/硬件的个别特性而优化代码来考虑此可变性。
[0067]如上文所提到,各种方面可使用电力节约与执行编译/翻译和优化操作的能量成本的总和来确定电力函数,其可用以确定是否应执行优化。举例来说,可使用电力函数来确定执行优化所需的能量的量是否超过优化所节约的能量的量。在一方面,与需要比经优化代码所节约的能量的量多的能量来执行的优化程序相关联的模型可存储在存储器中,且在计算装置不依靠电池电力运行时执行。
[0068]图8是说明用于在将移动装置插入电源中且不依靠电池电力运行时执行对象代码优化的方面方法800的过程流程图。在框802中,根据上文所论述的方面中的任一者,虚拟机可产生经优化对象代码单元并开始执行。在框804中,虚拟机可确定进一步优化可用,且将与可用优化有关的信息存储在存储器中。在框806中,虚拟机可继续执行代码,而不实施所识别优化中的任一者。在确定框808中,计算装置可执行操作以确定新电源(例如,有线电力连接)是否可用于装置。如果新电源不可用(确定框808=“否”),那么在框806中,虚拟机可继续执行代码,而不执行所识别优化中的任一者。另一方面,如果处理器确定新电源可用(确定框808= “是”),那么在框810中,虚拟机可从存储器检索所存储的优化信息,并执行优化(更新电力模型、重新产生对象代码等)且将经优化代码存储在存储器中。以此方式,只有在与执行优化相关联的能量成本不超过因优化而产生的能量增益的情况下,才可执行优化程序。
[0069]在一方面,因优化而产生的经优化对象代码可保存在存储器中,且用于代码的后续执行。可结合特定硬件专用的能量消耗模型执行优化,所述模型可由制造商提供和/或由移动装置在执行期间学习。以此方式,可在运行时、运行时之前、加载代码时或第一次执行进程时实施上文所论述的各种优化程序。各种优化程序可为运行时代码产生过程的一部分或静态代码产生过程的一部分。
[0070]应理解,在各种方面,在连接到电力时执行优化并非在运行时执行优化所独有。举例来说,系统虚拟机可在需要时(例如,在执行期间)或提前(例如,在连接到电力或闲置时)执行优化。
[0071]还应理解,关于何时应用优化的决策可独立于关于何时搜集性能数据的决策。各种方面可搜集代码的执行期间的电力消耗数据,且不对所收集的数据作用,直到满足条件(例如,装置连接到电力)为止。
[0072]适合结合各种方面使用的典型移动装置900将共同具有图9中所说明的组件。举例来说,示范性移动装置900可包含处理器902,其耦合到内部存储器901、显示器904,且耦合到扬声器964。另外,移动装置可具有耦合到处理器902的用于发送和接收电磁附设的天线924。在一些方面,移动装置900可包含一个或一个以上专用或通用处理器905、924,其可包含芯片上系统。移动装置通常还包含用于接收用户输入的小键盘或微型键盘或菜单选择按钮或摇臂开关。
[0073]图10说明适合结合各种方面使用的另一示范性移动装置1000。举例来说,移动装置1000可包含耦合到内部存储器1001的处理器1002,以及显示器1009。另外,移动装置可具有用于发送和接收信息的通信端口 1005。移动装置1000还可包含用于接收用户输入的键盘1008和选择按钮1007。
[0074]处理器902、905、924、1002可为任何可编程微处理器、微计算机或多个处理器芯片,其可由处理器可执行软件指令(应用程序)配置以执行多种功能,包含上文所述的各种方面的功能。通常,在被存取且加载到处理器902、905、924、1002中之前,软件应用程序和处理器可执行指令可存储在内部存储器901、1001中。在一些移动装置中,处理器902、905、924、1002可包含足以存储所述应用程序软件指令的内部存储器。在一些移动装置中,安全存储器可位于耦合到处理器902、905、924、1002的单独存储器芯片中。在许多移动装置中,内部存储器901、1001可为易失性或非易失性存储器,例如快闪存储器,或两者的组合。出于此描述的目的,对存储器的一股参考指代可由处理器902、905、924、1002存取的所有存储器,包含内部存储器、插入移动装置中的可装卸存储器,以及处理器内的存储器。
[0075]前述方法描述和工艺流程程图仅作为说明性实例而提供,且既定不需要或暗示必须以所呈现的次序执行各种方面的步骤。如所属领域的技术人员将了解,前述方面中的步骤次序可以任何次序执行。例如“其后”、“接着”、“接下来”等词语无意限制步骤的次序;这些词语仅用以引导阅读者阅读对方法的描述。另外,举例来说,使用冠词“一”或“所述”以单数对权利要求元素的任何参考将不被解释为将所述元素限于单数。
[0076]结合本文所揭示的方面而描述的各种说明性逻辑块、模块、电路和算法步骤可实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件与软件的这种可互换性,上文以大体上依据其功能描述了各种说明性组件、块、模块、电路和步骤。将此功能性实施为硬件还是软件取决于特定应用以及强加于整个系统上的设计约束。所属领域的技术人员可针对每一特定应用以不同方式来实施所描述的功能性,但所述实施方案决定不应被解释为会导致脱离本发明的范围。
[0077]用以实施结合本文所揭示的方面而描述的各种说明性逻辑、逻辑块、模块和电路的硬件可用经设计以执行本文中所描述的功能的通用处理器、数字信号处理器(DSP)、多媒体广播接收器芯片内的DSP、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或其任何组合来实施或执行。通用处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器的组合、一个或一个以上微处理器与DSP核心的联合,或任何其它此配置。或者,一些步骤或方法可由特定用于给定功能的电路执行。
[0078]在一个或一个以上示范性方面,所描述的功能可在硬件、软件、固件或其任何组合中实施。如果实施于软件中,那么可将功能作为计算机可读媒体上的一个或一个以上指令或码而加以存储或传输。本文所揭示的方法或算法的步骤可在所执行的处理器可执行软件模块中实施,所述模块可驻存在计算机可读媒体上。计算机可读媒体包括计算机存储媒体与包括促进计算机程序从一处传递到另一处的任何媒体的通信媒体两者。存储媒体可为可由计算机存取的任何可用媒体。作为实例而非限制,此计算机可读媒体可包含RAM、R0M、EEPROMXD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用以运载或存储呈指令或数据结构形式的所要程序代码且可通过计算机存取的任何其它媒体。同样,可恰当地将任何连接称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电及微波的无线技术从网站、服务器或其它远程源传输软件,则同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电及微波的无线技术包括于媒体的定义中。如本文中所使用,磁盘和光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软磁盘及蓝光光盘。上述磁盘和光盘的组合也应包含在计算机可读媒体的范围内。另外,方法或算法的操作可作为代码和/或指令中的一者或任何组合或集合而驻存在机器可读媒体和/或计算机可读媒体上,所述媒体可并入到计算机程序产品中。
[0079]提供对所揭示实施例的先前描述是为了使所属领域的技术人员能够制作或使用本发明。所属领域的技术人员将容易了解对这些实施例的各种修改,且本文中界定的一股原理可应用于其它实施例而不脱离本发明的精神或范围。因此,本发明无意限于本文中所展示的方面,而是将赋予本发明与所附权利要求书以及本文所揭示的原理和新颖特征一致的最广范围。
【权利要求】
1.一种用于为计算装置上的执行期间的电力节约而优化对象代码的方法,其包括: 在计算装置的系统软件中接收经编译二进制对象代码; 在机器层处操作的动态二进制翻译器中分析所述所接收对象代码,以识别可为电力节约优化的代码段; 在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译,以产生经电力优化的对象代码;以及 在所述计算装置的处理器上执行所述经电力优化的对象代码。
2.根据权利要求1所述的方法,其中接收所述经编译二进制对象代码的所述系统软件为系统虚拟机或管理程序中的一者。
3.根据权利要求1所述的方法,其中接收所述经编译二进制对象代码的所述系统软件为操作系统。
4.根据权利要求1所述的方法,其中在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码包括将第一指令集架构翻译成第二指令集架构。
5.根据权利要求4所述的方法,其中所述第一指令集架构为与所述第二指令集架构相同的指令集架构。
6.根据权利要求1所述的方法,其中在所述机器层处操作的动态二进制翻译器中分析所述所接收对象代码以识别可为电力节约而优化的代码段包括确定是否存在实现与所述所识别对象代码操作相同结果的替代操作,且 其中在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象`代码包括在翻译期间用所述替代操作来代替所述所识别对象代码操作。
7.根据权利要求1所述的方法,其进一步包括感测与新电源的连接,其中在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码是在感测到与所述新电源的连接时执行的。
8.根据权利要求1所述的方法,其中分析所述所接收对象代码包括使用电力消耗模型来识别可为电力效率优化的对象代码段。
9.根据权利要求8所述的方法,其进一步包括: 测量经电力优化的对象代码段的所述执行中所消耗的电量; 比较所述测得的所消耗电量与所述电力消耗模型的预测;以及 基于所述比较的结果而修改所述电力消耗模型。
10.一种经配置以在经改进电力节约的执行期间优化对象代码的计算装置,其包括: 用于在系统软件中接收经编译二进制对象代码的装置; 用于在机器层处操作的动态二进制翻译器中分析所述所接收对象代码以识别可为电力节约优化的代码段的装置; 用于在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码的装置;以及 用于在所述计算装置的处理器上执行所述经电力优化的对象代码的装置。
11.根据权利要求10所述的计算装置,其中用于在系统软件中接收经编译二进制对象代码的装置包括在系统虚拟机或管理程序的一者中接收所述经编译二进制对象代码的装置。
12.根据权利要求10所述的计算装置,其中用于在系统软件中接收经编译二进制对象代码的装置包括在操作系统中接收所述经编译二进制对象代码的装置。
13.根据权利要求10所述的计算装置,其中用于在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码的装置包括用于将第一指令集架构翻译成第二指令集架构的装置。
14.根据权利要求13所述的计算装置,其中用于将第一指令集架构翻译成第二指令集架构的装置包括用于将所述第一指令集架构翻译成与所述第二指令集架构相同的指令集架构的装置。
15.根据权利要求10所述的计算装置,其中: 用于在所述机器层处操作的动态二进制翻译器中分析所述所接收对象代码以识别可为电力节约优化的代码段的装置包括用于确定是否存在实现与所述所识别的对象代码操作相同结果的替代操作的装置;以及 用于在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化对象代码的装置包括用于在翻译期间用所述替代操作代替所述所识别对象代码操作的装置。
16.根据权利要求10所述的计算装置,其进一步包括用于感测与新电源的连接的装置,其中用于在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力 优化的对象代码的装置包括用于在感测到与所述新电源的连接时翻译所述所接收代码以产生经电力优化的对象代码的装置。
17.根据权利要求10所述的计算装置,其中用于分析所述所接收对象代码的装置包括用于使用电力消耗模型来识别可为电力效率优化的对象代码段的装置。
18.根据权利要求10所述的计算装置,其进一步包括: 用于测量经电力优化的对象代码段的所述执行中所消耗的电量的装置; 用于比较所述测得的所消耗电量与所述电力消耗模型的预测的装置;以及 用于基于所述比较的结果而修改所述电力消耗模型的装置。
19.一种计算装置,其包括: 存储器;以及 一个或一个以上处理器,其耦合到所述存储器,其中所述一个或一个以上处理器配置有处理器可执行指令,因此所述计算装置执行包括以下各项的操作: 在系统软件中接收经编译二进制对象代码; 在机器层处操作的动态二进制翻译器中分析所述所接收对象代码,以识别可为电力节约优化的代码段; 在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译,以产生经电力优化的对象代码;以及 执行所述经电力优化的对象代码。
20.根据权利要求19所述的计算装置,其中所述一个或一个以上处理器配置有处理器可执行指令,因此所述计算装置执行操作,使得在系统软件中接收经编译二进制对象代码包括在系统虚拟机或管理程序的一者中接收所述经编译二进制对象代码。
21.根据权利要求19所述的计算装置,其中所述一个或一个以上处理器配置有处理器可执行指令,因此所述计算装置执行操作,使得在系统软件中接收经编译二进制对象代码包括在操作系统中接收所述经编译二进制对象代码。
22.根据权利要求19所述的计算装置,其中所述一个或一个以上处理器配置有处理器可执行指令,因此所述计算装置执行操作,使得在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码包括将第一指令集架构翻译成第二指令集架构。
23.根据权利要求22所述的计算装置,其中所述一个或一个以上处理器配置有处理器可执行指令,因此所述计算装置执行操作,使得所述第一指令集架构与所述第二指令集架构相同。
24.根据权利要求19所述的计算装置,其中所述一个或一个以上处理器配置有处理器可执行指令,因此所述计算装置执行操作,使得: 在所述机器层处操作的动态二进制翻译器中分析所述所接收对象代码以识别可为电力节约优化的代码段包括确定是否存在实现与所述所识别的对象代码操作相同结果的替代操作;以及 在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化对象代码包括在翻译期间用所述替代操作代替所述所识别对象代码操作。
25.根据权利要求19所述的计算装置,其中: 所述一个或一个以上处理器配置有处理器可执行指令,因此所述计算装置执行进一步包括感测与新电源的连接的操作;且 所述一个或一个以上处理器配置有处理器可执行指令,因此所述计算装置执行操作,使得在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码是在感测到与所述新电源的连接时执行。
26.根据权利要求19所述的计算装置,其中所述一个或一个以上处理器配置有处理器可执行指令,因此所述计算装置执行操作,使得分析所述所接收对象代码包括使用电力消耗模型来识别可为电力效率优化的对象代码段。
27.根据权利要求26所述的计算装置,其中所述一个或一个以上处理器配置有处理器可执行指令,因此所述计算装置执行进一步包括以下各项的操作: 测量经电力优化的对象代码段的所述执行中所消耗的电量; 比较所述测得的所消耗电量与所述电力消耗模型的预测;以及 基于所述比较的结果而修改所述电力消耗模型。
28.一种非暂时性处理器可读存储媒体,其上存储有处理器可执行软件指令,所述处理器可执行软件指令经配置以致使处理器执行用于为计算装置上的执行期间的电力节约优化对象代码的操作,所述操作包括: 在系统软件中接收经编译二进制对象代码; 在机器层处操作的动态二进制翻译器中分析所述所接收对象代码,以识别可为电力节约优化的代码段; 在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译,以产生经电力优化的对象代码;以及 在所述计算装置的处理器上执行所述经电力优化的对象代码。
29.根据权利要求28所述的非暂时性处理器可读存储媒体,其中所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得在系统软件中接收经编译二进制对象代码包括在系统虚拟机或管理程序的一者中接收所述经编译二进制对象代码。
30.根据权利要求28所述的非暂时性处理器可读存储媒体,其中所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得在系统软件中接收经编译二进制对象代码包括在操作系统中接收所述经编译二进制对象代码。
31.根据权利要求28所述的非暂时性处理器可读存储媒体,其中所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得在所述动态二进制翻译器中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码包括将第一指令集架构翻译成第二指令集架构。
32.根据权利要求31所述的非暂时性处理器可读存储媒体,其中所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得所述第一指令集架构与所述第二指令集架构相同。
33.根据权利要求28所述的非暂时性处理器可读存储媒体,其中所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得: 在所述机器层处操作的动态二进制翻译器进程中分析所述所接收对象代码以识别可为电力节约优化的代码段包括确定是否存在实现与所述所识别的对象代码操作相同结果的替代操作;以及 在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化对象代码包括在翻译期间用所述替代操作代替所述所识别对象代码操作。`
34.根据权利要求28所述的非暂时性处理器可读存储媒体,其中: 所述所存储的处理器可执行软件指令经配置以致使处理器执行包括感测与新电源的连接的操作;且 所述所存储的处理器可执行软件指令进一步经配置以致使处理器执行操作,使得在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码是在感测到与所述新电源的连接时执行。
35.根据权利要求28所述的非暂时性处理器可读存储媒体,其中所述所存储的处理器可执行软件指令经配置以致使处理器执行操作,使得分析所述所接收对象代码包括使用电力消耗模型来识别可为电力效率优化的对象代码段。
36.根据权利要求35所述的非暂时性处理器可读存储媒体,其中所述所存储的处理器可执行指令经配置以致使处理器执行进一步包括以下各项的操作: 测量经电力优化的对象代码段的所述执行中所消耗的电量; 比较所述测得的所消耗电量与所述电力消耗模型的预测;以及 基于所述比较的结果而修改所述电力消耗模型。
37.一种芯片上系统,其包括: 存储器;以及一个或一个以上核,其耦合到所述存储器,其中所述一个或一个以上核配置有处理器可执行指令,因此所述芯片上系统执行包括以下各项的操作: 在操作系统中接收经编译二进制对象代码; 在机器层处操作的动态二进制翻译器进程中分析所述所接收对象代码,以识别可为电力节约优化的代码段; 在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译,以产生经电力优化的对象代码;以及 执行所述经电力优化的对象代码。
38.根据权利要求37所述的芯片上系统,其中所述一个或一个以上核配置有处理器可执行指令,因此所述芯片上系统执行操作使得在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码包括将第一指令集架构翻译成第二指令集架构。
39.根据权利要求38所述的芯片上系统,其中所述一个或一个以上核配置有处理器可执行指令,因此所述芯片上系统执行操作使得所述第一指令集架构与所述第二指令集架构相同。
40.根据权利要求37所述的芯片上系统,其中所述一个或一个以上核配置有处理器可执行指令,因此所述芯片上系统执行操作使得: 在所述机器层处操作 的动态二进制翻译器进程中分析所述所接收对象代码以识别可为电力节约优化的代码段包括确定是否存在实现与所述所识别的对象代码操作相同结果的替代操作;以及 在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化对象代码包括在翻译期间用所述替代操作代替所述所识别对象代码操作。
41.根据权利要求37所述的芯片上系统,其中: 所述一个或一个以上核配置有处理器可执行指令,因此所述芯片上系统执行进一步包括感测与新电源的连接的操作;且 所述一个或一个以上核配置有处理器可执行指令,因此所述芯片上系统执行操作使得在所述动态二进制翻译器进程中执行所述所接收对象代码的指令序列到指令序列翻译以产生经电力优化的对象代码是在感测到与所述新电源的连接时执行的。
42.根据权利要求37所述的芯片上系统,其中所述一个或一个以上核配置有处理器可执行指令,因此所述芯片上系统执行操作使得分析所述所接收对象代码包括使用电力消耗模型来识别可为电力效率优化的对象代码段。
43.根据权利要求42所述的芯片上系统,其中所述一个或一个以上核配置有处理器可执行指令,因此所述芯片上系统执行包括以下各项的操作: 测量经电力优化的对象代码段的所述执行中所消耗的电量; 比较所述测得的所消耗电量与所述电力消耗模型的预测;以及 基于所述比较的结果而修改所述电力消耗模型。
【文档编号】G06F1/32GK103797436SQ201280044247
【公开日】2014年5月14日 申请日期:2012年8月31日 优先权日:2011年9月20日
【发明者】克里斯托弗·A·维克, 格雷戈里·M·赖特 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1