选择性运行应用内的计算方法的本地机器代码的方法及相关设备技术

技术编号:16269739 阅读:113 留言:0更新日期:2017-09-22 21:25
本发明专利技术提供一种选择性运行应用内的计算方法的本地机器代码的方法及相关设备。该方法包含:基于该计算方法的可用统计分析数据,在该应用运行前,决定该计算方法的预测使用水平;根据该预测使用水平是否超过阈值的决定,选择该计算方法的可执行码来运行,其中该可执行码是该计算方法的该本地机器代码或字节代码之一;以及当该应用运行中调用该计算方法时,将选择的该可执行码从非易失性存储器载入存储器以用虚拟机运行。本发明专利技术所提出的选择性运行应用内的计算方法的本地机器代码的方法及相关设备的RAM使用可以大幅减少。

【技术实现步骤摘要】
选择性运行应用内的计算方法的本地机器代码的方法及相关设备
本专利技术有关于一种具有虚拟机的计算系统的软件管理。
技术介绍
虚拟机(virtualmachine,VM)是一个机器(例如计算机)的软件仿真实施,用来执行更高级的程序。VM提供独立于程序环境的平台,可以不考虑下层的硬件或操作系统(operationsystem,OS),并且能够让高级程序在任何平台上都以同样方式执行。一种类型的VM,有时被称作受管运行时期环境(ManagedRuntimeEnvironment,MRE),其在主机OS上运行来给一个流程提供一个仿真环境。这样的VM的一个例子是Java虚拟机(JVM)。要在VM提供的仿真环境中运行,高级程序(例如JAVA)会被编译为特定字节代码(bytecode)格式。然后,VM或者编译或者翻译字节代码为可执行机器代码,以在一个真实的硬件机器(例如ARM处理器,x86处理器等等)上运行。安卓(Android)是一个常用的基于Linux内核的移动架构。安卓运行时期环境(AndroidRuntime,ART)是安卓中一些应用或程序服务所用的VM。ART以DalvikExecutable(DEX)格式来运行字节代码,以产生目标设备的机器代码。一个DEX文件(.dex)保存一组类定义(classdefinitions)以及对应数据。ART引入静态(Ahead-of-Time,AOT)编译,在第一次加载、第一次启动或第一次运行时,统计学地将应用提前编译为为本地机器代码(nativemachinecode)。相比于其前辈(例如Dalvik),ART改善了整体运行效率并降低了功耗,这能导致移动设备具有更好的电池连续使用时间。同时,ART带来更快的应用运行、更好的存储分配以及垃圾收集(garbagecollection,GC)机制、新的应用调试特性,更精准的高级应用分析。ART通过使用设备上功能dex2oat来将应用编译为本地机器代码。通常在应用安装时间,该功能接收以DEX文件为输入的应用封包,产生可供目标设备执行的编译的本地机器代码。本地机器代码是针对特定硬件处理器的本地二进制代码,并且格式为可执行与可链接的格式(ExecutableandLinkableFormat,ELF)。本地机器代码的文件名具有.oat的后缀,并被称作OAT文件。相比于DEX文件,OAT文件具有更快的运行时间。可是,OAT文件占用比DEX字节代码文件大的储存空间(例如每个应用都要大2-3倍)。当前的安卓系统默认使用OAT文件,并仅在没有OAT文件可用的情况下使用DEX文件。如移动设备的低成本计算或通信设备,一般有较小的随机存取存储器(RAM)空间来让VM载入可执行文件。因此,在这样的低成本设备上提供一个经济的运行环境成为硬件与软件开发者的挑战。
技术实现思路
因此,本专利技术为了减少移动设备上的VM运行可执行文件的RAM空间,特提供以下的选择性运行应用内的计算方法的本地机器代码的方法及相关设备。本专利技术的一方面提供一种选择性运行应用内的计算方法的本地机器代码的方法,该方法包含:基于该计算方法的可用统计分析数据,在该应用运行前,决定该计算方法的预测使用水平;根据该预测使用水平是否超过阈值的决定,选择该计算方法的可执行码来运行,其中该可执行码是该计算方法的该本地机器代码或字节代码之一;以及当该应用运行中调用该计算方法时,将选择的该可执行码从非易失性存储器载入存储器以用虚拟机运行。本专利技术另一方面提供一种包含处理电路与存储器的设备,该存储器包含可由该处理电路执行以在应用内选择性运行计算方法的本地机器代码的指令,其中该设备用来:在该应用运行前,基于该计算方法的可用统计分析数据,确定该计算方法的预测使用水平;根据该预测使用水平是否超过阈值的确定,选择该计算方法的可执行码来运行,其中该可执行码是该计算方法的该本地机器代码或字节代码之一;以及在该应用运行期间当该计算方法被调用时,将该选择的该可执行码从非易失性存储器载入存储器来由虚拟机运行。本专利技术所提出的选择性运行应用内的计算方法的本地机器代码的方法及相关设备的RAM使用可以大幅减少,因字节代码的尺寸比本地机器代码的尺寸小。本专利技术的这些及其他的目的对于本领域的技术人员来说,在阅读了下述优选实施例的详细说明以后是很容易理解和明白的,所述优选实施例通过多幅图予以揭示。附图说明图1显示根据本专利技术一实施例的安卓软件架构100。图2显示根据本专利技术一实施例的执行本地机器代码的可选运行的计算系统。图3显示根据本专利技术一实施例的计算系统或设备所执行的可选运行流程300。图4显示根据本专利技术一实施例的可选运行的收集统计的方法400的流程图。图5A显示根据本专利技术的一实施例的编译时间统计收集机制。图5B显示根据本专利技术一实施例的运行时间统计收集机制。图6显示根据本专利技术一实施例的本地机器代码的可选运行的方法600的流程图。具体实施方式本说明书及权利要求书使用了某些词语代指特定的组件。本领域的技术人员可理解的是,制造商可能使用不同的名称代指同一组件。本文件不通过名字的差别,而通过功能的差别来区分组件。在以下的说明书和权利要求书中,词语“包括”是开放式的,因此其应理解为“包括,但不限于...”。本专利技术的实施例提供一种计算方法的本地机器代码的可选运行方法。该计算方法,也叫做“方法”,该计算方法存在于一个应用中,该应用可能包含多个计算方法。该应用可预装在设备上或先下载(例如通过闪存等工具或从空中(overtheair,OTA)下载)然后再安装到设备上。当应用装到设备上,应用的每个方法的字节代码编译为对应的本地机器代码。当在设备运行该应用时(例如开始运行)时,所揭露的可选运行机制,根据预测的使用水平,选择应用中每个方法是用本地机器代码还是字节代码来运行。在一个实施例中,预测使用水平是基于编译时间统计(compile-timestatistics),分析数据(profilingdata),或者两者结合。计算方法的分析数据是任何设备的之前运行时间数据统计(包含应用安装的设备以及类似设备),同样的方法在这些设备上曾经运行过。当计算方法这样的统计不可用或者无法存取设备,那么该设备可默认运行方法的字节代码。在方法运行之前,仅当该方法的预测使用水平高于一个既定阈值时,选择方法的编译代码(即本地机器代码)。在后续的说明中,可选运行机制以安卓软件的内容进行说明。需要理解的是,可选运行机制可以在任何提供翻译或编译字节代码为机器代码的软件环境中实施。而且,虽然后续说明中会用到特定的字节代码及机器代码文件格式,程序语言以及功能,但是需要理解的是,可选运行机制可运用在任何字节代码与机器代码文件格式、程序语言及功能中。在下文的部分说明中,Java应用程序语言以及其软件相关架构是举例说明;需要理解的是,可选运行机制可应用到非Java的另外程序语言所构建的VM产生的机器代码。图1显示根据本专利技术一实施例的安卓软件架构100。架构100有五层组成。(1)内核110(例如Linux内核),其负责基本系统功能,例如流程管理,存储器管理,电源管理,资源存取以及设备驱动。(2)库120,提供一组由C或C++程序语言编写的本地库,包含libc,SQLite,WebKit等等。(3)安卓本文档来自技高网
...
选择性运行应用内的计算方法的本地机器代码的方法及相关设备

【技术保护点】
一种选择性运行应用内的计算方法的本地机器代码的方法,该方法包含:基于该计算方法的可用统计分析数据,在该应用运行前,决定该计算方法的预测使用水平;根据该预测使用水平是否超过阈值的决定,选择该计算方法的可执行码来运行,其中该可执行码是该计算方法的该本地机器代码或字节代码之一;以及当该应用运行中调用该计算方法时,将选择的该可执行码从非易失性存储器载入存储器以用虚拟机运行。

【技术特征摘要】
2016.03.15 US 15/070,4241.一种选择性运行应用内的计算方法的本地机器代码的方法,该方法包含:基于该计算方法的可用统计分析数据,在该应用运行前,决定该计算方法的预测使用水平;根据该预测使用水平是否超过阈值的决定,选择该计算方法的可执行码来运行,其中该可执行码是该计算方法的该本地机器代码或字节代码之一;以及当该应用运行中调用该计算方法时,将选择的该可执行码从非易失性存储器载入存储器以用虚拟机运行。2.如权利要求1所述的选择性运行应用内的计算方法的本地机器代码的方法,其特征在于,当选择的该可执行码是该字节代码时,该方法还包含:在该字节代码的运行中,收集该计算方法的运行时间统计;以及根据该运行时间统计的第二决定是该字节代码具有超过第二阈值的运行时间使用水平,选择该计算方法的该本地机器代码来运行。3.如权利要求2所述的选择性运行应用内的计算方法的本地机器代码的方法,其特征在于,该方法还包含:在该应用的运行中,将该计算方法从该字节代码切换为该本地机器代码来运行。4.如权利要求2所述的选择性运行应用内的计算方法的本地机器代码的方法,其特征在于,收集该运行时间统计的步骤更包含:每次运行该字节代码或一部分该字节代码时,增加计数器。5.如权利要求1所述的选择性运行应用内的计算方法的本地机器代码的方法,其特征在于,该方法更包含:当该计算方法的该统计分析数据不可用时,选择该计算方法的该字节代码。6.如权利要求1所述的选择性运行应用内的计算方法的本地机器代码的方法,其特征在于,该方法还包含:在该应用运行前,当静态编译器将该字节代码编译为该本地机器代码时,产生该计算方法的至少一部分该统计分析数据。7.如权利要求6所述的选择性运行应用内的计算方法的本地机器代码的方法,其特征在于,产生该计算方法的至少一部分该统计分析数据的步骤更包含:对该计算方法执行回路分析,来确定该计算方法是否包含回路以及该计算方法是否能被另一计算方法中的另一回路所涉及。8.如权利要求1所述的选择性运行应用内的计算方法的本地机器代码的方法,其特征在于,该方法更包含:在该计算方法运行前,接收该计算方法的分析数据;以及从该分析数据,产生该计算方法的至少一部分的该统计分析数据。9.如权利要求1所述的选择性运行应用内的计算方法的本地机器代码的方法,其特征在于,该应用包含多个计算方法,这多个计算方法中更包含该计算方法,该方法更包含:在该应用的运行前,基于该多个计算方法的每个该可用统计分析数据,为每个该计算方法决定对应的预测使用水平;以及在该应用的运行前,根据该对应的预测使用水平是否超过该阈值的对应决定,选择每个该计算方法的对应可执行码,该对应的可执行码是对应字节代码与对应本地机器代码之一。10.如权利要求9所述的选择性运行应用内的计算方法的本地机器代码的方法,其特征在于,该方法更包含:在运行该应用中,监控每个该计算方法的对应的运行时间使用...

【专利技术属性】
技术研发人员:卢育龙许宏荣
申请(专利权)人:联发科技股份有限公司
类型:发明
国别省市:中国台湾,71

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

1