ARM硬件支持java技术Jazelle DBX

发布者:幸福的家园最新更新时间:2016-07-13 来源: eefocus关键字:ARM  硬件支持  java技术  Jazelle  DBX 手机看文章 扫描二维码
随时随地手机看文章
Java已 经在各个领域得到了广泛的应用,尤其是无线移动领域,全球超过100个移动运营商已经推出了Java下载服务。Java也正成为其它嵌入式设备的支持标 准,如机顶盒。Java应用的快速增长源于以下几点:尽管Java的可移植性一直有争论,但无庸置疑的是其快速上市的优势,开发和发布Java应用都很便 捷;Java有着广泛的支持网络,众多的第三方在开发各色各样的Java应用;Java平台固有的安全性适合网络下载。

可以说,现在Java游戏已经发展成一项产业,三维图像、多人连线等更高级的支持也不鲜见。网络运营商和手机制造商希望出现更具可玩性的游戏,甚至跳出游戏应用发展诸如商务、定位、视频等各种各样的增值服务,以带来更多的收入。

为支持这些新的服务,J2ME平台必须快速发展,集成新的API(如移动3D),融入新的特性,比如能够运行多个MIDlet。移动设备上运行Java需要处理好这两个问题:Java分化和在资源有限的设备上如何保证Java的性能。

运营商和手机制造商为标准Java API加入了许多扩展,造成了一定程度上的“Java分化”,影响到了Java的进一步应用,产业链上各个环节的厂家不得不做额外投入以支持各种扩展。于 是Sun公司建立了JCP(Java Community Process)试图减少这种分化,同时努力能够跟上嵌入式设备上Java应用和变化的步伐。现在很多JSR扩展规范都是通过JCP提出的,证明JCP起 着正面的促进作用,能根本上解决分化问题。

嵌入式Java虚拟机的设计限制

目前市场上已经有大量宣称支持Java的手机,从技术上来看,许多中低端手机基本上是在30~50MHz ARM7TDMI处理器上运行一个小型的软件字节码(bytecode)解释器,相对较慢。这对许多的Java小游戏是够用了,因为其性能是由系统的图形处理能力决定的,对Java的要求不是特别高。但是市场发展变化很快,越来越多的Java应用需要更强的图形处理能力,以及一个强大的Java虚拟机。

ARM硬件支持java技术Jazelle DBX

图1:指令流水线示意图。

几种加快Java执行速度的传统方法包括几种软件方案,如字节码解释器优化、即时(JIT, just-in-time)编译器、预先(AOT, ahead-of-time)编译器等;硬件方案有专用Java处理器和Java协处理器。这些方法在提高性能的同时,通常也会增加对功耗、内存的需求, 影响到了系统平台的成本,尤其是硬件方案。

JIT或AOT编译器是把字节码动态地编译成目标平台的本地码,然后直接执行。顾名思义,AOT编译方案就是在应用下载完后编译所有代码,而实际上 某些代码很有可能根本就执行不到。JIT编译方案则是运行到某段代码之前,只对这一段作即时的编译。这种即时处理策略会让用户在选择启动应用程序后,不得 不等待很长的一段时间程序才真正运行起来。另外,研究显示动态编译会导致代码膨胀4~6倍。因此,除了减慢应用程序启动速度,无论JIT还是 AOT方案,都需要很大的额外内存来保存编译生成的本地码。

动态编译技术

有一种弥补JIT编译器缺点的方法就是采用通常被称为动态自适应编译(DAC)的混合软件方案,它可以看成是JIT编译器和字节码解释器的组合。在 开始阶段,程序解释执行,同时软件对代码作分析并决定哪些关键代码需要被编译,这些关键代码被鉴别出来后,即被编译成本地码运行。

采用了DAC方案,JIT编译的一些负面影响可能会减少,但是JIT毕竟无法提供最好的速度性能,启动时间和代码膨胀的问题仍会比较突出。

在完成关键代码分析前,程序得运行于慢速的解释器模式,然后暂停再进行编译。应用程序启动时,许多函数方法仅运行一次,理想情况下不应该编译这些代码。从用户体验角度来看,影响是很明显的,尤其是程序启动阶段会感觉到较长时间内程序没有任何用户响应。

因为纯软件的解释器很慢,大多数DAC方案实际上很少做代码分析,而编译几乎所有的函数方法,就像赌博一样,赌这个函数方法接下去会执行很多次。如果赌错,将会付出更多的代价—不但花费了更多的编译时间,而且编译产生的那些不再运行的代码耗费了宝贵的内存资源。

编译的代码会占用内存资源,DAC必须从内存中删掉以前编译好的代码,为新的编译让出空间,接下去如果运行到刚被删掉的代码,又得重新编译。这样产 生了性能平滑度问题,因为在编译新代码或重编译过程中,程序得暂停执行。比如在切换游戏场景时,玩家会感觉到难以忍受的等待。

尽管动态编译存在一些缺点,可现在嵌入式设备的硬件配置也越来越高,尤其是RAM或ROM,因此诸如DAC甚至一些AOT方案变得很有吸引力。然 而,我们也看到一个系统平台中许多的组件是用Java开发的,越来越多的可下载应用是用Java写,多个Java程序并行执行的需求也开始产生。这些发展 趋势意味着Java对内存的需求是无止境的。

硬件加速

硬件Java加速方案通常需要增加额外的芯片以及更多的功耗。专用Java处理器支持直接执行Java字节码,这虽然看起来性能不错,但是系统集成和开发的复杂度却大幅上升。Java处理器不会支持已有的很多操作系统和应用程序,它需要和其他的嵌入式处理器配合使用。

ARM硬件支持java技术Jazelle DBX

图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处理器或协处理器通常有6万到10万门的规模。这样的设计策略把硬件逻辑的复杂度减到 最小、功耗低、系统集成难度低,却仍能表现出很高的整体Java性能。

未定义的字节码与模拟执行的字节码截然不同。一旦执行到未定义的字节码,处理器退出Java状态,进入ARM状态执行异常处理。有了这样的机制,就可以以软件补丁的方式实现对未来可能会扩展的Java字节码支持。

为帮助用户使用Jazelle DBX,ARM公司提供了JTEK件包,其中包含了VMZ源代码,为一个现有的Java虚拟机和操作系统集成JTEK通常只需几天时间。ARM也和主流的 Java平台供应商合作,如Aplix/iasolution和Sun等,在他们的软件产品中加入了Jazelle DBX支持。另外,ARM和众多操作系统厂商合作,主流的如WindowsCE、SymbianOS、PalmOS、Linux,以及许多实时专有的操作 系统都支持Jazelle DBX。

本文小结

移动Java游戏促进了Java在无线设备上的应用,Java固有的端对端的安全性和Java应用开发的快捷性使Java成为新的收入增长点。在资 源有限的嵌入式设备上也需要高性能的Java平台,Jazelle DBX这样的加速技术正是应对了这样的需求,其他一些硬件或纯软件加速方案将受益于Jazelle DBX,并避免原有的各种缺点。

通过融合各种新特性的加入,ARM将在未来架构发展中继续支持Jazelle DBX以及后续的新技术。Jazlle技术和相应的JTEK软件包将更广泛的促进Java在嵌入式设备上的应用,更多更新的移动Java应用将随之涌现。

关键字:ARM  硬件支持  java技术  Jazelle  DBX 引用地址:ARM硬件支持java技术Jazelle DBX

上一篇:ARM硬件完美解读——协处理器
下一篇:ARM的NEON协处理器是什么

推荐阅读最新更新时间:2024-03-16 15:00

ARM新推出高效能Cortex-M7处理器
   ARM推出最新的32位元Cortex-M处理器Cortex-M7。(取自www.computerworld.com) ARM宣布推出最新的32位元Cortex-M处理器Cortex-M7,相较于现今效能最强的ARM架构微控制器(MCU),其运算及数位讯号处理(DSP)效能均提升了两倍之多。ARM Cortex-M7处理器锁定高阶嵌入式应用,适用于新世代的汽车、连网装置以及智慧家庭和工厂应用。首批获得ARM Cortex-M7处理器授权的厂商包括Atmel、飞思卡尔与意法半导体。 ARM处理器部门负责人Noel Hurley指出:「Cortex-M7加入Cortex-M系列处理器后,ARM与合作伙伴将能为连网世界提供最具扩
[手机便携]
ARM内核和架构都是什么意思,它们到底是什么关系?
ARM产品越来越丰富,命名也越来越多。很多朋友提问: ARM内核和架构都是什么意思?内核和架构的关系是什么?比如ARMv7架构,这个架构指的是什么?小编选出了几个精彩回答!希望对嵌友们在选择设计电路时有所帮助~ 1.ARM内核:从ARM7、ARM9到Cortex-A7、A8、A9、A12、A15再到Cortex-A53、A57等,总之不同版本 ARM 有不同的想法。比如为高速度设计的Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是内核,后者是指令集的架构。 2.ARM的架构都是基于RISC指令集而架构的,而其内核只是实现这一指令集的硬件架构的基础,Thumb-2指令集架构(IS
[单片机]
<font color='red'>ARM</font>内核和架构都是什么意思,它们到底是什么关系?
ARM交叉编译环境安装记录
一、什么是ARM交叉编译环境 交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言编写的代码(比如C代码)编译(compile)成计算机可以识别和执行的二进制代码。比如,我们在Windows平台上,可使用Visual C++开发环境,编写程序并编译成可执行程序。这种方式下,我们使用PC平台上的Windows工具开发针对Windows本身的可执行程序,这种编译过程称为native compilation,中文可理解为本机编译。然而,在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常见的ARM平台,其一般的静态存储空间大概是16到
[单片机]
第1天-ARM汇编指令ADD/SUB/MUL
ADD : 加法 (Addition) ADD{条件}{S} , , dest = op_1 + op_2 ADD 将把两个操作数加起来,把结果放置到目的寄存器中。操作数 1 是一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器,或一个立即值: ADD R0, R1, R2 ; R0 = R1 + R2 ADD R0, R1, #256 ; R0 = R1 + 256 ADD R0, R2, R3,LSL#1 ; R0 = R2 + (R3 1) 加法可以在有符号和无符号数上进行。 ps:带进位的加法ADC SUB : 减法 (Subtraction) SUB{条件}{S} , , dest = op_1
[单片机]
回击ARM 英特尔将提供定制化X86处理器
据国外媒体报道,在新任CEO Brian Krzanich和新总裁Renée James掌管下的英特尔公司在策略上将面临一系列转变:这家芯片巨头希望进军除个人电脑和传统服务器市场以外的计算领域,扩大竞争优势。 其中即包括为大型客户的服务器提供定制化X86处理器。英特尔过去曾在这方面做过一些尝试,现在则要与ARM及ARM的合作伙伴展开定制化竞争。 英特尔此举也在意料之中,大家都希望处理器厂商应该提供带深度排序算法的芯片,芯片的器件应更耐高温,它们的电压和时钟频率是可改变的,以适应特别 的温度环境。用户还期望芯片在因超频而超过标准处理器温度时的限时性能更理想。(在这方面ARM已有多年经验,而且还做得更全面:这家英国的处理器核心
[单片机]
Azure ARM (20) 将非托管磁盘虚拟机,迁移成托管磁盘虚拟机
  在笔者之前的文章中,我们如果需要使用Azure虚拟机,必须预先创建一个Azure存储账户(Storage Account),用来保存虚拟机的VHD文件。   这会有几个问题:   1.一个Azure Storage Account存储账户,会有20000个IOPS的性能瓶颈。   如果我们把过多的Azure VHD文件保存在同一个Storage Account,会由于IOPS性能瓶颈造成VM 磁盘吞吐量限制。   我们建议一般40个普通VHD放在同一个存储账户里,每个一个VHD的IOPS为500, 总共的IOPS = 40 X 500 = 20000 IOPS,刚好等于一个存储账户的最大IOPS   2.存储账户的高可用
[单片机]
Azure <font color='red'>ARM</font> (20) 将非托管磁盘虚拟机,迁移成托管磁盘虚拟机
Arm确认:Armv9架构不受美国出口管理条例约束
集微网消息,当地时间周二,Arm推出新一代指令集架构Armv9,以越来越强大的安全性和人工智能能力,应对无处不在的专业处理需求,这是Arm十年来最大的技术革新,上一代的Armv8发布于2011年10月。Arm表示,Armv9架构将在安全性和人工智能方面与英特尔相抗衡。 据第一财经报道,在Arm的VisionDay中,Arm负责人对目前与华为的合作进展进行了回应:Arm既有源于美国的IP,也有非源于美国的IP。经过全面的审查,Arm确定其Armv9架构不受美国出口管理条例(EAR)的约束。Arm已将此通知美国政府相关部门,我们将继续遵守美国商务部针对华为及其附属公司海思的指导方针。
[手机便携]
英飞凌与ARM进一步拓展合作关系
ARM处理器将应用于英飞凌各种新一代移动平台 ARM宣布英飞凌扩大与ARM之间的授权协议,将使英飞凌可运用低成本、高效能之ARM处理器,开发各种新一代手机平台。ARM处理器能够协助OEM厂商重复使用同一开发程序,以加快产品上市时程,并开发出更高效能的解决方案。此项转变也将进一步提升使用者经验,并透过各种令人惊艳的软件功能,轻易地突显产品特色。 透过运用ARM处理器的先进架构,英飞凌将为低成本移动运算效能树立新标竿。除此之外,新方案将能满足OEM厂商对低成本与高性能平台日益增长的需求,不仅能配合市场的需求变化来快速修改,还能运用阵容庞大且针对ARM处理器进行最佳化的多元软件功能。 ARM移动通讯部门全球行销总监Rob Coom
[焦点新闻]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved