ARM硬件支持java技术Jazelle DBX
个Java程序并行执行的需求也开始产生。这些发展 趋势意味着Java对内存的需求是无止境的。
硬件加速
硬件Java加速方案通常需要增加额外的芯片以及更多的功耗。专用Java处理器支持直接执行Java字节码,这虽然看起来性能不错,但是系统集成和开发的复杂度却大幅上升。Java处理器不会支持已有的很多操作系统和应用程序,它需要和其他的嵌入式处理器配合使用。
图2:采用ARM处理器的Java应用嵌入式系统架构。 |
Java协处理器是把Java字节码翻译成主处理器的指令。这当然需要许多软硬件集成工作,要在操作系统加入对协处理器的支持尤其困难。同样协处理 器需要额外的板上空间和额外的功耗,而且本身也很贵。另外,协处理器和主内核之间的松耦合连接方式决定了其运行速度相对较慢。
硬件架构扩展和Jazelle DBX技术
在已有处理器架构上加硬件扩展可以同样支持直接运行Java字节码,而且保持了操作系统和应用程序的兼容性。架构扩展方案相当于为处理器附加了一套 指令集,重用已有的处理器资源不会增加额外的硬件成本和功耗。带扩展的内核能够同时执行Java字节码及本地码,开发者可以充分利用已有的操作系统、应用 程序开发技术,在Java程序可移植性和性能之间取得很好的平衡。
传统的ARM处理器都支持两套指令集:32位ARM指令集和16位Thumb指令集。通常使用Thumb指令集的代码大小约为ARM代码的 35~40%,但会轻微降低程序性能。指令集支持在ARM和Thumb代码之间互相作函数调用,程序员可以在编译时分别从性能和代码密度的角度考虑,以决 定不同部分的代码编译成ARM或是Thumb(图1)。
Jazelle DBX是一种硬件架构扩展技术,为ARM处理器引入了第三套指令集—Java字节码。新指令集建立了一种新的状态,处理器在此状态下处理Java字节码取指、译码和维护Java操作数栈。
为了降低芯片尺寸并提高性能,Jazelle DBX没有设计成传统形式的微引擎,而是融入流水线中的一个有限状态机。和协处理器或专用处理器设计不同的是,Jazelle DBX和主处理器共用缓存,这都会对功耗和性能带来益处。另一个重要的设计考虑是确保Jazelle DBX技术不会影响实时中断性能,仍保持与操作系统中已有ARM异常处理代码的兼容。
Jazelle DBX技术增加了一条新的“Branch-to-Java”指令来进入Java状态。此指令支持条件执行,先检查条件标志,如果条件满足,处理器进入Java状态,跳转到指定目标地址,开始执行Java字节码。
在Java状态下,PC寄存器仍是32位寻址Java字节代码。字节码取指、译码分别在两个流水级完成(对应ARM/Thumb状态下为一个译码流水级)。32位取指操作一次性可以取4个Java字节码,性能优势明显。
当前处理器状态寄存器(CPSR)新定义了一个位,用来记录处理器的状态。这很重要,因为在处理中断或其它异常时,CPSR会自动保存或恢复程序运行状态。
Jazelle DBX技术允许所有的Java指令是“可重新开始”的。这样在执行Java指令过程中,即刻响应中断,从而减少中断延迟,确保实时性能。
在Java状态下,有若干个ARM寄存器可以功能复用(包括栈指针、栈顶四项(top4 elements of stack)、局部变量0等)。正是这些硬件复用设计,才使得只用了很少的额外逻辑(约一万两千门)就实现了一个Java机。把所有Jazelle DBX扩展所需的状态用ARM寄存器保存,也保证了和现有操作系统、中断处理程序和异常处理代码的兼容性。
把栈顶四项保存在ARM寄存器中也能提高Java性能。大量的程序分析显示,大多数程序的栈深度是很小的,所以这项策略可以尽量减少内存访问,硬件也可自动处理栈溢出或下溢。
Jazelle DBX技术的性能
对于一个高度优化的商业Java虚拟机,运行评测程序或复杂的MIDP2.0应用,Jazelle DBX技术通常可带来约2~4倍的性能提升,而且对实时性不会产生任何影响。
对于嵌入式设备来说,运行速度还不是唯一的考虑因素,功耗、存储器占用、集成的难度、系统成本和用户体验等都很重要,需要很好的平衡。
Jazelle DBX技术把Java字节码分为3类:直接执行、模拟执行(emulated)和未定义。大多数Java字节码(ARM926EJ-S支持134个)可由 硬件直接执行,余下的由一些简短的高度优化的ARM指令序列模拟执行。把原先虚拟机中的解释器去掉,替换以ARM专有的代码(称为VMZ,这些代码甚至比 替掉的代码更小)。
统计分析表明,在一段典型的程序代码中,需要模拟执行的字节码不会超过5%。这就是为什么ARM决定Jazelle DBX硬件扩展只支持直接执行部分的字节码,而非全部。Jazelle DBX硬件扩展的实现约为一万两千门的规模,而大多数的专用Java处理器或
ARM硬件支持java技术JazelleDB 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)