基于ARM的KVM移植优化MIDP程序

基于ARM的KVM移植优化MIDP程序

李振鹏

版权所有,转载请注明出处       

        最近研究ARM体系结构与编译器,并且有幸接触到了JVM在Nucleus上移植,因此对于特定应用优化有了更进一步的了解。下文将介绍一部分ARM优化技术,主要包括指令优化,缓存优化,驱动优化。 对J2ME程序编写者而言,优化主要包括速度、内存以及存储空间优化。下文将分别根据ARM处理优化技术介绍相应的优化方式。

一、指令优化

        在ARM7以上ARM处理器的系列中,有一款编号是带有J的,表示支持Jazelle指令扩展,也就是说可以加速Java字节码的执行,这样就可以做出非常优化的JVM,大大加速J2ME程序。一般来说,带有这种扩展指令的ARM处理器将极大地加速MIDP程序的执行,因此速度优化基本上可以放到其余优化的后面,主要考虑内存以及空间优化。但是,Jazelle指令并不是公开的指令集,但是可以基本确定是8位的指令集。除非是ARM的核心合作伙伴或者是购买了授权,否则是无法使用的。很遗憾,我对这指令集非常感兴趣,但是无法接触到。因此也无法说明关于此指令集的优化。这就如同Sun开放了CLDC的JVM源码,但是没有开放Hotspot的CLDCJVM源码,因此对于大多数开发者而言,是没有多大用处的。

二、缓存(cache)优化

       在ARM处理器系列中,一般把处理器cache作为可选的组建,如果不加cache,将会降低一部分成本,同时对于实时性有更好的控制,但是将极大地影响程序性能。但是大部分处理器是有cache的,这样如果程序流程控制的比较好,将会极大地增加程序的性能,而且不用付出代价,只不过在程序设计时注意使用cache,因此一部分操作可能变成异步的。但是这样的操作对于MIDP程序而言,影响不大,毕竟J2ME程序几乎不可能影响系统层面的操作。

       这里提出的cahe优化,需要根据cache大小来作出判断。一般来说,8K以上的cache比较普遍。也就是说如果把频繁执行的程序语句保持在4K以下,将极大地赠加程序的性能。不会频繁的去读取内存,而是在从速度更快的cache中读取数据。

       ARM处理器由两种架构,分为冯诺依曼和哈佛架构,一般来说ARM7是冯诺依曼架构,而ARM9以上的就成为哈佛架构,这两种架构对于应用层编程来说影响不大。

三、驱动优化

       这里提到的驱动程序优化,主要来说对于MIDP程序影响最大的屏幕刷新操作,一般来说MIDP程序的刷新操作占据程序执行时间的大部分。

       屏幕刷新操作从底层来看主要分两种,一种是直接的DMA数据传输,另一种是对屏幕指定位置直接操作。这两种操作从速度上来讲,第一种速度快,不用计算屏幕位置,只需要把指定数据传输到屏幕缓存即可,传输过程需要CPU干预;而第二种是对屏幕缓存直接进行操作,浪费CPU计算时间。因此需要尽量避免对屏幕指定位置进行绘制操作。

        这两种技术对应到应用层就是DMA的技术,是把内存中的图片传输到显示缓存也就是通常的bitblt操作,而屏幕指定位置的操作就是如DrawRect或者是DrawString等操作,后面的操作将极大地影响屏幕的绘制速度,因此需要尽量避免。这里需要特别指出的是如果提供了clearfullscreen操作,就一定要使用,不要使用以指定颜色FillRect全屏操作来进行屏幕的清除动作。但是也不排除两种都没有进行优化,因此如果可能,最好使用图片来进行背景的清除。

总结

       上文对于各种技术的优化只是简单的进行了描述,对于细节问题并没有点明,主要原因是目前我接触到的底层知识有限,并没有很好的理解。只是起到说明的作用,毕竟知道可能采取何种优化,才能够去寻找优化技术。

后记

       这篇文章我准备了很久,迟迟没有公开,也找了很多准备材料,但是实际写来,只有这么多,以后如果有新的发现我会随时补充。欢迎大家提出意见。

      另外,此片文章应该是J2ME系列的最后一篇了,我在一段时间内暂时不会涉及到这方面的文章。以后我会谈一下对开发测试流程以及设计方面的问题。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值