当前位置: 首页 > 专利查询>东南大学专利>正文

基于软件Cache的Dalvik虚拟机JIT加速方法技术

技术编号:8682498 阅读:432 留言:0更新日期:2013-05-09 02:33
本发明专利技术公开了一种基于软件Cache的Dalvik虚拟机JIT加速方法。所述发明专利技术的技术方案是:首先,在Dalvik虚拟机中构建软件Cache,软件Cache采用两路组相联结构,加入在本地代码哈希表之前;其次,通过字节码地址查找本地代码时,先在软件Cache中查找,如果找到则直接访问本地代码,如果未找到,则查找本地代码哈希表,如果在本地代码哈希表中,查找到了本地代码,则选择并填写软件Cache行中的内容,如果未找到,则唤醒编译线程,编译这段字节码至本地代码,同时更新本地代码哈希表和软件Cache中的相应行。所述发明专利技术通过减小Dalvik虚拟机中使用复杂Hash算法查找本地代码哈希表的次数,降低了查找本地代码哈希表带来的系统开销,从而提高了整个Andorid系统的性能。

【技术实现步骤摘要】

本专利技术涉及Android系统优化
,特别是涉及一种。
技术介绍
移动设备的硬件资源非常有限,这对标准Java虚拟机提出了很大的挑战。比如,标准Java虚拟机使用Class格式文件作为其执行文件,但每个Class文件都对应着一个类型的定义信息及一个独立的常量池,且每个Class文件之间会有很多冗余信息,这对内存资源有限的移动设备来说无疑是一个灾难。Android系统使用Dalvik虚拟机,来运行Java应用程序。Android系统中的Dalvik虚拟机针对内存资源有限等问题,提出了一系列优化措施。Java应用程序被转换成紧凑的Dex格式,Dex格式是专为Dalvik虚拟机设计的一种格式,适合内存和处理器速度有限的系统。根据Gabor Paller的研究表明,Dex可执行文件格式确实大大的减少了 Java程序的尺寸。同时由于Dalvik虚拟机是基于寄存器架构的,所以执行效率更高,字节码的验证速度更快且容错能力更强。因此Dalvik虚拟机相对于Java虚拟机占用的资源更少、运行效率更高。Android系统运行环境包括两部分:核心库和Dalvik虚拟机。Dalvik虚拟机主要是完成对象生命周期的管理,堆栈的管理,线程管理,安全和异常的管理,以及垃圾回收等重要功能。Dalvik虚拟机由类加载器、执行引擎、运行时数据区和本地方法等重要的模块组成。每一个Android应用都运行了一个Dalvik虚拟机实例,而每一个虚拟机实例都有一个独立的进程空间。Dalvik虚拟机利用类加载器,对Dex字节码文件进行装载,利用垃圾回收进行内存和对象的管理,利用解释系统对装载进入的Dex字节码进行逐条的解释执行,利用即时编译系统对字节码进行本地编译。即时编译技术(Just-1n-time Compilation,简称JIT),是一种运行时的动态编译技术。每启动一个应用程序,都会相应地启动一个Dalvik虚拟机实例,启动时会启动编译线程。应用程序的Java源代码经过编译和Dex工具处理以后形成Dex字节码文件,虚拟机运行时会将相应的Dex字节码装载进内存,然后利用Dalvik解释系统对Dex字节码逐条进行解释。首先,分析Davlik虚拟机内部的工作机制。图1所示为Davlik虚拟机内部功能模块结构图。类加载器实现的功能是:把需要执行的字节码加载到内存中,并且把字节码中所依赖的Java库中的字节码文件加载到内存中。运行时数据区:对程序中的数据进行统一的管理。执行引擎:对字节码文件进行执行,包括解释系统与编译器两部分。本地方法库与本地方法接口:支持在Java程序中,调用本地库中的函数。其次,执行Java程序的主要过程是:通过Java工具把Java程序编译为*.class文件,然后通过Dalvik虚拟机中的dx工具把*.class文件转换为.dex文件,并与资源文件一起打包生成*.apk文件。在执行*.apk文件时,Dalvik虚拟机通过类加载器,把字节码加载到内存中,通过执行弓I擎执行字节码。执行引擎包括解释系统与即时编译系统两部分,它们之间协同工作,具体的执行过程如图3和图4所示。在执行字节码时,首先进入的是解释系统。在解释系统中,对每一条字节码进行解释执行。解释系统在执行特定字节码时,会对此时的字节码地址值的运行次数进行统计,具体算法是:系统中存在阈值哈希表。通过对字节码地址应用简单快速哈希算法,得到阈值哈希表的索引值,从而取出字节码地址对应的执行次数统计值,进行减一的操作。当一个确定地址的字节码执行次数为零时,以这个字节码地址开始的一段字节码被认为是热点字节码。这时,解释系统会进行一个复杂耗时哈希操作,在本地代码哈希表中,查找当前字节码地址是否已经有对应的本地代码。如果有,则直接执行本地代码。如果没有,解释系统把这段字节码进行打包,并且唤醒编译线程,编译线程得到解释系统打包的数据,进行相应的编译工作,把这段字节码,编译为本地代码,并且添加到本地代码哈希表中。在编译线程编译字节码的同时,解释系统继续进行执行字节码的工作。解释系统进行复杂哈希算法查找热点字节码地址对应的本地代码,这一操作比较耗时。由于本地代码哈希表为了解决哈希冲突,采用了开放定址法。由于查找本地代码非常耗时,这样便消耗了一部分由执行本地代码所带来的性能提升。
技术实现思路
专利技术目的:通过一种软件Cache的方法,加快Dalvik虚拟机查找本地代码的过程,提高执行本地代码的收益,提高Dalvik虚拟机的性能,从而提高整个Andorid系统的性能。为了实现上述目的,本专利技术采取以下技术方案: 一种,包括如下步骤: 利用哈希算法作为Cache行索引,建立软件Cache,软件Cache采用两路组相联结构,加入本地代码哈希表之前; 通过字节码地址查找本地代码,先在软件Cache中进行查找,如果找到则直接访问本地代码,如果未找到,则查找本地代码哈希表; 如果在本地代码哈希表中,查找到本地代码,则选择软件Cache行,填写软件Cache —路相应Cache行中的内容,如果在本地代码哈希表中,未找到本地代码,则唤醒编译线程,编译这段字节码至本地代码,同时更新本地代码哈希表和软件Cache相应行。选择软件Cache行的算法采用简单快速的阈值哈希算法,即:设执行字节码所在的地址是一个32位二进制数,定义字节码地址的变量为rPC,Cache行的索引变量为index,计算方法是Index =(rPC ~ (rPC 12)) % 2048 ;字节码地址与右移12位的字节码地址,进行按位异或运算,并且只取出计算结果的低11位。更新软件Cache相应行的方法是Round-Robin替换算法。本专利技术采用上述技术方案,具有以下有益效果: 本专利技术在Cache行的选择上,利用合适的快速哈希算法,降低Dex字节码运行时的相关性,减少了字节码局部空间内Cache行的冲突,提高软件Cache命中率。通过减小Dalvik虚拟机中即时编译系统查找本地代码哈希表的次数,降低了查找本地代码哈希查所带来的系统开销,从而提高了整个Andorid系统的性能。软件Cache行的替换策略对系统性能有较大的影响,如果因冲突而被刷出的Cache行是刚写入的,那么被刷出的Cache行有很大的概率被再次刷回,所以构建两路组相连软件Cache,采用合适的Cache行替换算法,有选择的刷出冲突的Cache行,可以提升软件Cache的命中效率,从而减少使用复杂哈希算法对本地代码哈希表的查找次数。由简单快速哈希算法和替换算法能保证软件Cache行的命中率,从而使得Cache行的填写操作几乎不会影响系统的性能,因为只有在软件Cache行不命中的情况下,才会进行本地代码哈希表的查找,如果找到,在跳转之前会填写软件Cache行。附图说明图1为本专利技术实施例的Davlik虚拟机内部功能模块结构 图2为现有技术中执行Java程序的流程示意 图3为现有技术Davlik解释系统与即时编译系统执行字节码的流程示意 图4为现有技术中本地代码查找流程示意 图5为本专利技术实施例的支持软件Cache的本地代码查找流程示意图。具体实施方式 下面结合具体实施例,进一步阐明本专利技术,应理解这些实施例仅用于说明本专利技术而不用于限制本专利技术的范围,在阅读本文档来自技高网
...

【技术保护点】
一种基于软件Cache的Dalvik虚拟机JIT加速方法,其特征在于,包括如下步骤:利用哈希算法作为Cache行索引,建立软件Cache,利用硬件Cache的模型,软件Cache采用两路组相联结构,加入本地代码哈希表之前;通过字节码地址查找本地代码,先在软件Cache中进行查找,如果找到则直接访问本地代码,如果未找到,则查找本地代码哈希表;如果在本地代码哈希表中,查找到本地代码,则选择软件Cache行,填写软件Cache一路相应Cache行中的内容,如果在本地代码哈希表中,未找到本地代码,则唤醒编译线程,编译所述字节码至本地代码,同时更新本地代码哈希表和软件Cache相应行。

【技术特征摘要】
1.一种基于软件Cache的Dalvik虚拟机JIT加速方法,其特征在于,包括如下步骤: 利用哈希算法作为Cache行索引,建立软件Cache,利用硬件Cache的模型,软件Cache采用两路组相联结构,加入本地代码哈希表之前; 通过字节码地址查找本地代码,先在软件Cache中进行查找,如果找到则直接访问本地代码,如果未找到,则查找本地代码哈希表; 如果在本地代码哈希表中,查找到本地代码,则选择软件Cache行,填写软件Cache —路相应Cache行中的内容,如果在本地代码哈希表中,未找到本地代码,则唤醒编译线程,编译所述字节...

【专利技术属性】
技术研发人员:刘波凌明程林周晓付卓武建平
申请(专利权)人:东南大学
类型:发明
国别省市:

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

1