字节码分支处理器及方法技术

技术编号:7518803 阅读:180 留言:0更新日期:2012-07-12 00:47
提供了一种字节码分支处理器及方法。提供了一种计算系统中的字节码解释器。所述解释器通过处理虚拟机(例如,Java和Dalvik)的主处理器来帮助进行分支预测,从而防止分支误预测并实现高性能。

【技术实现步骤摘要】
字节码分支处理器及方法本申请要求于2010年12月9日提交到韩国知识产权局的第10-2010-0125688号韩国专利申请的权益,该申请的全部公开通过引用包含于此,以用于各种目的。
以下描述涉及一种计算系统中的字节码解释器(interpreter),更具体地讲,涉及一种用于通过有效地去除在驱动虚拟机的字节码解释器中可能发生的分支误预测或流水线阻塞(stall)惩罚,来提高字节码解释器的性能的分支处理器和方法。
技术介绍
已经进行了大量的研究来提高虚拟机的性能,以处理Java字节码。尤其是通过即时编译(JITC,Just-in-timecompilation)显著地增强了虚拟机的性能。然而,因为资源限制以及对用户敏感的延迟(latency),嵌入式系统难以有效地引入JITC,因此嵌入式系统以有限的方式利用JITC。此外,由于应用程序的所有代码不按JITC格式被编译,因此解释器的性能仍旧至关重要。直接线程(direct-thread)方法是用于改善解释器的性能的普遍方法之一。在该方法中,在字节码处理机(bytecodehandler)的末尾提取下一虚拟指令并直接进行分支。该方法最近已被用于AndroidDalvik虚拟机。作为另一方法,ARMJazelleDBX(直接字节码执行)在硬件中对字节码进行完全地处理。直接线程方法具有以下缺点:作为间接分支指令的分支指令使得实际的处理器(例如,x86或ARM)的分支预测器迷惑,导致大量的分支误预测以及性能方面的恶化。也就是说,在具有普通流水线结构的处理器中,如果发生分支误预测,则已被预测性地(speculatively)执行的所有指令被丢弃,并且处理器需要返回到分支开始的状态。具体地讲,随着高端超标量处理器(例如,ARMcortexA9)被引进到嵌入式装置中,由于分支误预测引起的性能恶化会被加剧。即使在相同的程序计数器(PC)中,在直接线程方法中使用的间接分支指令根据下一虚拟指令也跳转到不同的处理机的地址,因此基于PC的一般分支预测器可能不会正确地工作。为了解决这样的缺点,包括选择性的内联和关联线程技术(contextthreading)的各种方法被引进,但是引起了代码量增加以及发生调用/返回的开销的缺点。此外,诸如JazelleDBX的硬件实施方案(一些较不频繁使用的指令被实现为软件处理机)具有高性能,但是需要大量的硬件资源,并且不能处理新型的字节码(例如,Dalvik)。
技术实现思路
在一总体方面,提供了一种计算系统中的字节码分支处理器,包括:解释器,配置为在虚拟机中以字节码格式运行程序;分支信息产生器,配置为从分支的预测路径提前获得分支信息,其中,所述分支存在于在由解释器当前处理的字节码之前的字节码中;分支目标缓冲器(BTB)更新器,配置为基于获得的分支信息更新计算系统中的分支目标缓冲器(BTB)。所述解释器还可配置为以具有可变长度的字节码的格式运行程序。所述解释器还可配置为使用具有用于运行程序的可调用的操作码的处理机来处理字节码。所述处理机还可配置为包括用于跳转到根据字节码处理的顺序处理字节码的操作码的代码信息。分支信息产生器还可配置为包括映射操作码、字节码的长度以及具有操作码的处理机中的分支代码的地址的表。分支信息产生器还可配置为通过将分支地址和目标地址进行映射来从所述表中产生分支信息,其中,所述分支地址与在由解释器当前处理的字节码之前的字节码的地址对应,所述目标地址与具有处理所述之前的字节码的操作码的处理机中的分支代码的地址对应。分支信息产生器还可配置为通过将从所述表获得的所述之前的字节码的长度与由解释器当前处理的字节码相加来产生分支地址,并基于具有处理所述之前的字节码的操作码的处理机中的分支代码来产生目标地址,其中,从所述表中获得所述分支代码。BTB和BTB更新器可配置为在不同的核上运行,并且存储在BTB中的分支信息通过BTB更新器是可更新的。字节码分支处理器还可包括:分支预测器,配置为预测字节码中存在的条件分支的路径。在另一总体方面,提供了一种在计算系统中处理字节码分支的方法,所述方法包括:响应于存在于由虚拟机处理的字节码中的分支的预测路径的存在,使用计算系统的分支预测器更新所述路径;响应于分支预测器预测在由虚拟机当前处理的字节码之前的字节码是分支,确定所述之前的字节码是否是条件分支;响应于确定所述之前的字节码不是条件分支,搜索在保留操作码的计算系统中映射处理所述之前的字节码的操作码和分支地址的表;获得通过将与所述之前的字节码的地址对应的分支地址和与具有处理所述之前的字节码的操作码的处理机中的分支代码的地址对应的目标地址进行映射而产生的分支信息;基于获得的分支信息更新计算系统的分支目标缓冲器(BTB)。映射操作码、字节码的长度以及具有操作码的处理机中的分支代码的地址的表可被预先存储在计算系统中。获得分支信息的步骤可包括:通过将从所述表获得的所述之前的字节码的长度与由虚拟机当前处理的字节码相加来产生分支地址,并基于具有处理所述之前的字节码的操作码的处理机中的分支代码来产生目标地址,其中,从所述表获得分支代码。所述方法还可包括:响应于确定所述之前的字节码是条件分支,预测存在于所述字节码中的条件分支的路径;基于与预测路径对应的操作码来搜索映射由计算系统保留的操作码以及分支地址的表。如果计算系统是多核系统,则正在运行BTB的核可与更新所述BTB的核被不同地分配。在另一总体方面,提供了一种用于多核处理器的分支预测方法,所述方法包括:产生指示用于进行处理的当前字节码的虚拟程序计数器(vPC)值;以字节码解释器来处理当前字节码;产生指示在当前正被处理的字节码之前的字节码的预加载vPC值;在所述vPC达到预加载vPC的值之前,对当前正被执行的字节码之前的字节码提前预测分支信息;以当前正被执行的字节码之前的字节码的预测的分支信息来更新分支目标缓冲器(BTB)。可在多核处理器的第一核上执行当前字节码的处理,并在多核处理器的第二核上执行对当前正被执行的字节码之前的字节码预测分支信息。第一核和第二核可同时地分别处理当前字节码以及对当前正被执行的字节码之前的字节码预测分支信息。仅仅添加了用于精确分支预测和快速分支解决方案的硬件,直接线程解释器性能可被改善。此外,添加的硬件可有助于字节码处理机的精确分支。分支处理器可实现为软件-硬件混合形式,或仅实现为硬件。即使在硬件实施方案中,也能够以少于硬件解释器(例如,Jazelle)的成本实现分支处理器。此外,分支处理器可支持不同的解释器(例如,Java和Dalvik),并能够处理以多种类型(例如,Dalvik)编写的字节码。分支处理器通过处理虚拟机(例如,Java和Dalvik)的主处理器来帮助进行分支预测,从而防止分支误预测并实现高解释器性能。此外,通过将简单逻辑添加到主机处理器来将分支目标缓冲器(BTB)更新至软件,可防止在直接线程解释器中发生大量的分支误预测。分支目标缓冲器填写机制可实现为除BTB修改逻辑以外的软件或硬件。此外,在软件实施方案中,可利用双核,从而实际的解释器的负荷可被最小化并且分支性能可被增强。从以下详细的描述、附图和权利要求中,其他特点和方面会是清楚的。附图说明图1是示出虚拟机字节码和直接线程处理本文档来自技高网
...
字节码分支处理器及方法

【技术保护点】

【技术特征摘要】
2010.12.09 KR 10-2010-01256881.一种计算系统中的字节码分支处理器,包括:解释器,配置为在虚拟机中以字节码格式运行程序;分支信息产生器,配置为在当预定义数量的字节码在正由解释器处理的当前字节码之前被读取时,通过使用包括根据字节码处理的顺序而映射的先前操作码、当前字节码之前的之前的字节码的长度以及分支地址的表来获得与当前字节码之前的之前的字节码对应的分支的预测路径的分支地址和目标地址,其中,分支地址属于包括在对所述之前的字节码进行处理的先前处理机中的分支码,目标地址属于对先前处理机所分支到的当前字节码进行处理的当前处理机;以及分支目标缓冲器BTB更新器,配置为用获得的分支地址和目标地址来更新字节码分支处理器中的分支目标缓冲器BTB,其中,解释器配置为对分支预测进行处理,并通过检查BTB中的获得的分支地址和目标地址在当前字节码的分支预测中是否有效来去除分支误预测。2.如权利要求1所述的字节码分支处理器,其中,所述解释器还配置为以具有可变长度的字节码的格式运行程序。3.如权利要求1所述的字节码分支处理器,其中,所述解释器还配置为使用具有用于运行程序的可调用的操作码的处理机来处理字节码。4.如权利要求3所述的字节码分支处理器,其中,分支码用于根据字节码处理的顺序跳转到具有当前操作码的当前处理机。5.如权利要求1所述的字节码分支处理器,其中,BTB和BTB更新器配置为在不同的核上运行,并且存储在BTB中的分支信息通过BTB更新器被更...

【专利技术属性】
技术研发人员:辛圭桓曹承模
申请(专利权)人:三星电子株式会社
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术