- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种基于ARM7嵌入式Java虚拟机性能优化技术研究
一种基于ARM7的嵌入式Java虚拟机性能优化技术研究
摘要:分析了Java字节码的解释执行和基于解释执行的Direct Threaded Interpreter性能优化技术。以Direct Threaded Interpreter为基础,提出并实现了一种针对ARM7平台的嵌入式Java虚拟机解释器性能优化方案。对嵌入式Java虚拟机的参考实现、Direct Threaded Interpreter优化方案和新优化方案在ARM7平台上的性能比较表明,所提出的方案优于前两者。??
关键词:嵌入式Java虚拟机;ARM7;Java字节码;直接线索化解释器??
中图分类号:TP391.9文献标志码:A
文章编号:1001-3695(2007)05-0097-04
Sun公司于2000年公布的J2ME/MIDP参考实现,采用解释执行字节码的Java虚拟机。与编译执行相比,解释执行的JVM在移动通信设备上具有显著的优点:①虚拟机占用移动通信设备非易失性存储空间比较小;②虚拟机运行时占用RAM空间比较小;③解释执行核心代码量小;④字节码占用RAM空间比较小;⑤实现难度低、可移植性好。现有的具有J2ME/MIDP支持的移动通信设备大多是基于该参考实现。??
目前针对Java虚拟机有多种性能优化技术,如基于编译运行的优化技术、基于解释运行的优化技术以及一些针对内存管理与垃圾回收方面的改良算法等。而基于解释运行的优化技术在保持了解释型虚拟机结构简单、可移植性好的优点的同时,也有效地提高了解释型虚拟机的性能。??
基于目前最常用的低功耗32位处理器ARM7及16位总线结构的主流手机平台,本文提出并实现了一个基于解释执行的嵌入式Java虚拟机性能优化方案。??
1Java字节码的解释执行??
Java字节码(Bytecode)在文献[1]中也被称为Java虚拟机指令集(Java Virtual Machine Instruction Set)。与具体的CPU指令集类似,Java字节码就是运行于Java虚拟机上的指令集。Java源程序在被执行之前,要先被编译成Java字节码,再运行于Java虚拟机上。每条Java字节码长度为一个字节(8 bits),因此被称为字节码。字节码之后可能存在一个或多个字节的操作数。文献[2]详细定义了所有的标准Java字节码。??
在Java虚拟机内部,采用了一个Interpreter来解释每个Bytecode的意义。如图1所示,Interpreter是个大循环,它一直不停地从PC所指到的内存空间抓取Bytecode,翻译成各种不同作业平台上相对应的操作,并执行这些操作。??
字节码的执行流程如下:①为程序计数器pc赋初值,进入解释循环。②Switch指令取出pc指向的字节码,将pc加1;根据字节码的值跳转到对应的Case语句。③Case语句后的解释程序执行字节码对应的操作。④回到循环的开头,如果程序没有结束,则进行下一次Switch-Case解释过程。??
需要指出,Java字节码中大部分堆栈访问和运算指令所执行的操作是比较简单的。这些字节码所对应的解释程序通常只有1~5条C语句,对应的机器指令通常也只有几条到十几条。在这种情况下,Switch-Case的解释执行过程所增加的额外开销相当可观。从机器指令的角度来看,Switch-Case的开销包括:①一次访存操作,读入pc指向的字节码;②pc加1 操作;③对字节码的值进行边界检查;④一次访存操作,查找字节码在Switch-Case跳转表中对应的程序段入口;⑤一次跳转操作到对应的Case程序段;⑥在Case程序段执行完毕后,再进行一次跳转操作,回到循环开头。可以看出,Switch-Case的开销甚至超过了某些字节码解释程序自身的开销。这种开销累积起来,对执行效率的影响相当大。??
2适合移动通信设备的Direct Threaded Interpreter优化技术
基于解释运行的优化技术主要包括Threaded Interpre-??ter[3]、Direct Threaded Interpreter[4]和Inlined Threaded Interpre-??ter[5]。有实验表明[5]:Threaded Interpreter与Switch-Case解释器相比性能有一定提高,但提高幅度有限,约7%~10%;Inlined Threaded Interpreter与Switch-Case解释器相比性能有很大提高,约150%~300%,但内存占用太大;而Direct Threaded Interpreter较折中,与Switch-Case解释器相比
文档评论(0)