基于Trace合并和寄存器分配的Dalvik优化
2014-06-07余超君李春强尚云海张培勇
余超君,李春强,尚云海,张培勇
(浙江大学超大规模集成电路设计研究所,杭州310027)
基于Trace合并和寄存器分配的Dalvik优化
余超君,李春强,尚云海,张培勇
(浙江大学超大规模集成电路设计研究所,杭州310027)
Dalvik虚拟机作为Android系统上运行所有应用程序的基础,其性能瓶颈一直制约着Android系统的用户体验。通过研究Android系统中的Dalvik架构,分析其解释器和JIT模块的工作原理,发现热Trace选择过程中短Trace编译损耗大以及即时编译过程中寄存器分配不合理的情况。结合Java虚拟机技术和编译器技术,在现有热Trace选择和寄存器分配机制的基础上,提出基于Trace合并和寄存器分配的优化算法,在国产高性能嵌入式CPU CSKY体系下移植Dalvik虚拟机并实现了上述优化算法。通过实验证明优化后Dalvik执行Java程序的性能提高了近10%。
Dalvik虚拟机;JIT技术;性能优化;Trace合并;寄存器分配;生命周期
1 概述
Android是Google公司针对嵌入式领域推出的操作系统,其Java虚拟机采用Dalvik VM。与PC机Java虚拟机相比,Dalvik针对内存和处理器速度有限的嵌入式设备进行优化,使其占用更少内存等硬件资源,运行效率更高。Dalvik工作于解释执行模式,并根据运行情况通过基于Trace的JIT(Just in Time)技术将热点代码块编译成本地机器代码并执行以加快程序运行[1]。
虽然基于Trace的JIT技术的Dalvik虚拟机提高了Java程序运行速度,但其Dalvik虚拟机的性能仍是Android系统运行速度的瓶颈。笔者在移植Dalvik到国产嵌入式CPU C-SKY平台的过程中,通过对基于Trace的JIT技术的Dalvik虚拟机研究,发现Dalvik现阶段基于Trace的JIT技术存在如下问题:(1)Hot-Trace的某些热点代码块短……
