CN103294518A - 一种解释器中间接跳转预测方法及系统 - Google Patents

一种解释器中间接跳转预测方法及系统 Download PDF

Info

Publication number
CN103294518A
CN103294518A CN2013100522967A CN201310052296A CN103294518A CN 103294518 A CN103294518 A CN 103294518A CN 2013100522967 A CN2013100522967 A CN 2013100522967A CN 201310052296 A CN201310052296 A CN 201310052296A CN 103294518 A CN103294518 A CN 103294518A
Authority
CN
China
Prior art keywords
instruction
interpreter
bytecode
prediction device
pointer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2013100522967A
Other languages
English (en)
Other versions
CN103294518B (zh
Inventor
程旭
黄明凯
刘先华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIDA ZHONGZHI MICROSYSTEM SCIENCE AND TECHNOLOGY Co Ltd BEIJING
Original Assignee
BEIDA ZHONGZHI MICROSYSTEM SCIENCE AND TECHNOLOGY Co Ltd BEIJING
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIDA ZHONGZHI MICROSYSTEM SCIENCE AND TECHNOLOGY Co Ltd BEIJING filed Critical BEIDA ZHONGZHI MICROSYSTEM SCIENCE AND TECHNOLOGY Co Ltd BEIJING
Priority to CN201310052296.7A priority Critical patent/CN103294518B/zh
Publication of CN103294518A publication Critical patent/CN103294518A/zh
Application granted granted Critical
Publication of CN103294518B publication Critical patent/CN103294518B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种解释器中间接跳转预测方法及系统,其方法包括:在解释器中插入引导指令,将字节码指针包含在引导指令中;转移预测器识别引导指令,并将所需的字节码指针保存至转移预测器中;当间接跳转指令运行时,转移预测器识别间接跳转指令,使用间接跳转指令的指针和所保存的字节码指针进行散列运算,并以散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址。本发明以字节码指针作为关联信息,以引导指令的方式软硬件协作指导间接跳转,从而可以根据字节码指针准确地对解释器中间接跳转进行预测。

Description

一种解释器中间接跳转预测方法及系统
技术领域
本发明属于微处理器设计和解释器优化领域,尤其涉及一种解释器中间接跳转预测方法及系统。 
背景技术
解释器是一种常用的语言处理器,它接受源代码和输入,直接得到相应的输出。解释器能够支持紧凑且平台无关的代码发布形式,开发方便,内存消耗少,但性能较差。在托管运行环境中,解释器是一个重要的组件,负责代码的前期执行,对托管运行环境的启动时间和整体性能都有比较重要的影响,许多脚本语言是由解释器支持的。由于解释器实现简单,因此,原型系统的开发也多使用解释器。 
转移指令是代码中的控制执行流的指令,使执行流从指定的地方继续执行。现代处理器技术中为了提高指令级并行性,引入了超标量和超级流水结构,往往上一条指令还没执行完,下一条指令就开始执行了。当执行转移指令的时候,由于该转移指令还没执行完,还不知道下一条指令的地址,这时通常采取推测式执行的方式,对下一条指令的地址进行预测,从而能提升处理器的利用率。当预测出错的时候,推测式执行的指令都需要被清理掉,从而影响了处理器的性能,因而如何提高转移指令预测命中率,是现代处理器中很重要的一个主题。 
转移指令根据转移是否一定发生可分为有条件转移和无条件转移,有条件转移需要满足一定的条件才会发生转移,而无条件转移则一定发生。根据转移目标的存在形式又可分为直接转移和间接转移,直接转移的地址直接由指令本身可以得到,而间接转移的地址需要通过访问寄存器或者内存才能得到。其中,无条件直接转移容易处理,研究人员一般对它不关心;有条件问 接转移实际中很少使用,一般也不太关心;有条件直接转移是最重要的一种转移,研究人员通过大量的研究工作,已经将这类转移的命中率提升到较高水平;而无条件间接转移,又称间接跳转,由于目标地址需要通过访存或者寄存器才能得到,比较难以进行预测。 
现有技术中,在解释器的实现中,通常都有一条间接跳转指令用以跳转到下一条字节码对应的实现处。已有研究表明,该间接跳转指令对解释器性能影响较大。目前很多研究人员通过多种手段来提升该间接跳转的预测命中率,例如有指令复制技术,用以减少间接跳转的目标数目,context threading,利用转移预测器提供的CAS来提升间接跳转的预测命中率,等。 
发明内容
本发明解决的技术问题是提供一种解释器中间接跳转预测方法及系统,能够根据字节码指针准确地对解释器中间接跳转进行预测。 
为解决上述技术问题,本发明提供了一种解释器中间接跳转预测方法,所述方法包括: 
在解释器中插入引导指令,将字节码指针包含在所述引导指令中; 
转移预测器识别所述引导指令,并将所需的字节码指针保存至转移预测器中; 
当间接跳转指令运行时,转移预测器识别所述间接跳转指令,使用所述间接跳转指令的指针和所保存的所述字节码指针进行散列运算,并以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址。 
其中,所述在解释器中插入引导指令,将字节码指针包含在所述引导指令中,包括: 
分析所述解释器的源代码,找到实现字节码功能的指令模板; 
根据所述指令模板的尾部包含的使用字节码指针读取字节码的操作码的代码,得出字节码指针所在的寄存器号; 
寻找所述指令模板的公共头部; 
在所述指令模板的公共头部插入引导指令,在所述引导指令中指明保存字节码指针的寄存器号; 
编译经过修改的解释器源代码,得到包含有所述引导指令的解释器。 
其中,所述转移预测器识别所述引导指令,并将所需的字节码指针保存至转移预测器中,包括: 
转移预测器根据引导指令的编码识别引导指令; 
转移预测器读取引导指令中标明的字节码指针所在的寄存器号; 
根据该寄存器号访问寄存器堆,读取字节码指针; 
将读取的字节码指针保存在转移预测器中。 
其中,所述转移预测器以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址后,所述方法还包括: 
所述转移预测器从预测的转移目标地址处开始下一条转移指令的取值; 
该转移指令执行完成之后,比较实际目标和预测的目标,判断预测是否正确,决定是否需要清除推测式执行的指令; 
根据预测结果更新转移目标缓冲。 
其中,在所述指令模板的公共头部插入引导指令时,在所述指令模板的最后一条间接跳转指令之前、离所述间接跳转指令尽量远的地方插入所述引导指令。 
本发明还提供了一种解释器中间接跳转预测系统,所述系统包括:解释器和转移预测器, 
所述解释器,用于插入引导指令,并将字节码指针包含在所述引导指令中; 
所述转移预测器,用于识别所述引导指令,并将所需的字节码指针保存至转移预测器中;以及,当间接跳转指令运行时,转移预测器识别所述间接跳转指令,使用所述间接跳转指令的指针和所保存的所述字节码指针进行散列运算,并以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转 移目标地址。 
其中,所述解释器配置为按照如下方式在所述在解释器中插入引导指令,将字节码指针包含在所述引导指令中: 
分析所述解释器的源代码,找到实现字节码功能的指令模板; 
根据所述指令模板的尾部包含的使用字节码指针读取字节码的操作码的代码,得出字节码指针所在的寄存器号; 
寻找所述指令模板的公共头部; 
在所述指令模板的公共头部插入引导指令,在所述引导指令中指明保存字节码指针的寄存器号; 
编译经过修改的解释器源代码,得到包含有所述引导指令的解释器。 
其中,所述转移预测器,采用如下方式识别所述引导指令,并将所需的字节码指针保存至转移预测器中: 
转移预测器根据引导指令的编码识别引导指令; 
转移预测器读取引导指令中标明的字节码指针所在的寄存器号; 
根据该寄存器号访问寄存器堆,读取字节码指针; 
将读取的字节码指针保存在转移预测器中。 
其中,所述转移预测器以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址后,还用于: 
所述转移预测器从预测的转移目标地址处开始下一条转移指令的取值; 
该转移指令执行完成之后,比较实际目标和预测的目标,判断预测是否正确,决定是否需要清除推测式执行的指令; 
根据预测结果更新转移目标缓冲。 
其中,所述解释器在所述指令模板的公共头部插入引导指令时,在所述指令模板的最后一条间接跳转指令之前、离所述间接跳转指令尽量远的地方插入所述引导指令。 
本发明方法,通过修改解释器的源代码,插入引导指令,传递字节码指针给转移预测器,转移预测器通过字节码指针识别不同的转移场景,因而可有效地提高间接跳转指令的预测准确率,从而可提高解释器的性能。 
将本发明方案应用于解释器中,通过实验结果表明能够有效地提高解释器的性能。 
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中: 
图1是本发明实施例的解释器中间接跳转预测方法的流程示意图; 
图2是本发明实施例中修改解释器的流程示意图; 
图3是本发明实施例中识别引导指令保存指令指针的流程示意图; 
图4是本发明实施例中识别间接跳转指令并进行预测及更新的流程示意图; 
图5是本发明实施例中转移预测器的结构示意图; 
图6是应用本发明方案的预测结果的评测实验结果数据示意图。 
具体实施方式
本实施方式提供了一种解释器中间接跳转预测的方法,以字节码指针作为关联信息,以引导指令的方式软硬件协作指导间接跳转,该方法主要包括: 
在解释器中插入引导指令,将字节码指针传递给转移预测器; 
转移预测器识别引导指令并记录字节码指针; 
转移预测器识别间接跳转并对跳转目标进行预测。 
具体地,本实施方式提供的上述方法是这样实现的: 
修改解释器的源代码,在字节码模板的最后一条间接跳转之前离间接跳转尽量远的地方插入引导指令,将字节码指针传递给转移预测器;在该条间接跳转执行时,使用保存的字节码指针和该条间接跳转的指令指针散列得到的结果访问转移目标缓冲,并根据结果更新转移目标缓冲。 
进一步地,分析解释器的结构,找到字节码指令模板的头部,找到保存字节码指针的寄存器编号,根据该编号构造引导指令,添加到指令模板的头部。重新编译生成解释器,该解释器即包含引导指令。在解释器执行的过程中,转移预测器根据引导指令保存字节码指针,在遇到间接跳转时使用该字节码指针及跳转指令的PC指针做散列访问转移目标缓冲,从而预测该间接跳转的目标地址。 
进一步地,解释器的结构,通常是一条字节码对应一段汇编实现该字节码的功能,该段汇编实现最后是一条间接跳转,跳转到下一条字节码的实现。在间接跳转之前,会根据字节码指针,读取下一条字节码的操作码,查表得到下一条字节码的汇编实现的首地址,也就是间接跳转的目标。根据这段操作,可知字节码指针所在寄存器。字节码的汇编实现通常都有一段公共的头部,找到该头部,并根据字节码指针所在寄存器构造引导指令,加入到该头部,完成解释器的修改。 
进一步地,重新编译经过修改的解释器源代码,从而得到的解释器中含有引导指令。 
进一步地,该方法还涉及转移预测器中保存指令指针的寄存器。在解释器运行时,执行字节码对应的汇编实现,首先执行引导指令。引导指令表明了指令指针所在的寄存器。处理器中的转移预测器根据该寄存器号,读取对应寄存器中保存的指令指针值,保存到转移预测器中的一个寄存器中。 
进一步地,该方法还涉及转移预测器中的散列运算器、一个转移目标缓冲区。当处理器运行到间接跳转指令时,使用该间接跳转指令的PC值和转移预测器中保存的指令指针值用散列运算器得到散列的结果,以该结果作为索引访问转移目标缓冲区,从而得到预测的间接跳转目标地址。当该间接跳转执行完毕,跳转目标已经确定之后,根据预测是否正确决定是否需要清除 后续推测执行的指令,并使用同样的索引更新转移目标缓冲,下次预测时可以使用该地址。 
为了便于阐述本发明,以下将结合附图及具体实施例对本发明技术方案的实施作进一步详细描述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。 
本发明实施例中采用软硬件协同的技术方案,提出了一种基于字节码指针引导的解释器中间接跳转预测的方法及系统,利用字节码指针区分间接跳转的不同场景,也就是间接跳转实际所服务的字节码,从而将不同字节码对应的间接跳转目标地址保存在转移目标缓冲的不同位置,使它们尽量不冲突,从而能较好地保存历史转移目标,以更准确地对间接跳转进行预测。例如同一种字节码的多次出现即为不同场景,具体示例如下:假定有字节码序列 
Figure BDA00002838299300071
解释执行第一个add和第二个add使用的间接跳转是同一个,而执行第一个add算一种场景,执行第二个add算一种场景。 
具体地,本实施例中提供了一种根据字节码指针引导解释器中间接跳转预测的方法,主要包括如下内容:解释器的修改方式,引导指令的实现方式,以及转移预测器的实现方式。转移预测器遇到引导指令则保存引导指令指示的字节码指针,遇到间接跳转指令则根据保存的字节码指针访问转移目标缓冲从而对该间接跳转进行预测。 
如图1所示,本实施例的实现字节码指针引导的解释器中间接跳转预测方法,包括如下主要步骤: 
步骤一,在解释器中插入引导指令; 
具体地,通过修改解释器的源代码,在解释器中插入引导指令,用以将 字节码指针传递给转移预测器; 
步骤二,转移预测器识别引导指令并记录字节码指针; 
具体地,在解释器运行时,转移预测器识别引导指令,并将所需的字节码指针保存在转移预测器中专门的寄存器中,以备后续使用; 
步骤三,转移预测器识别间接跳转并对跳转目标进行预测; 
具体地,当间接跳转指令运行时,转移预测器识别该指令,使用该指令的PC和之前保存的字节码指针做散列,以此作为索引访问转移目标缓冲,得到预测的转移目标地址。 
图2示出了本实施例中修改解释器的具体流程图,如图2所示,其具体包括如下主要步骤: 
步骤201,寻找字节码模板的实现:分析解释器的源代码,找到实现字节码功能的指令模板; 
步骤202,寻找字节码指针所对应的寄存器号:指令模板的尾部有使用字节码指针读取字节码的操作码的代码,据此可以得知字节码指针所在寄存器号; 
步骤203,寻找指令模板的公共头部,该公共头部最终会拼接到字节码指令模板的前面; 
步骤204,在公共头部插入引导指令,其中指明保存字节码指针的寄存器号,这样每条字节码执行的时候都会先执行该条引导指令; 
步骤205,编译得到添加了引导指令的解释器。 
对解释器进行修改后,得到可以运行的解释器二进制代码,再经编译器将修改过的解释器源码编译成二进制。 
图3示出了本实施例中识别引导指令保存指令指针的具体流程图,其具体包括如下主要步骤: 
步骤301,转移预测器根据引导指令的编码识别引导指令; 
步骤302,转移预测器读取引导指令中标明的字节码指针对应的寄存器号,即该字节码指针所在的寄存器号; 
步骤303,根据该寄存器号访问寄存器堆,读取字节码指针; 
步骤304,将读取的字节码指针保存在转移预测器中专用的寄存器中。 
图4示出了本实施例中识别间接跳转指令并进行预测及更新的流程示意图,其具体包括如下主要步骤: 
步骤401,转移预测器根据间接跳转指令的编码识别间接跳转指令; 
步骤402,用指令PC与保存的字节码指针进行散列运算,得到索引值; 
其中,采取的散列运算方式会影响预测的效果,本实施例中使用抑或作为散列运算; 
步骤403,用索引值访问转移目标缓冲,获得预测的转移目标地址; 
步骤404,从预测的目标地址处开始下一条指令的取值; 
接下来执行的指令都是推测式执行; 
步骤405,该转移指令执行完成之后,比较实际目标和预测的目标,判断预测是否正确,决定是否需要清除推测式执行的指令; 
步骤406,根据预测结果更新转移目标缓冲,以便提供给下次再执行同一条字节码时使用。 
以下将给出修改解释器的具体示例,在下述示例中,dispatch_prolog即是公共的头部,dispatch_epilog即是公共的尾部,load_unsigned_byte(rbx, Address(rsi,step))即是使用字节码指针获取字节码的操作码,而rsi就是字节码指针。据此,在公共头部加入了引导指令mov(rsi,rsi)。本示例中采用如下方式修改解释器: 
Figure BDA00002838299300101
图5示出了本发明实施例的转移预测器结构示意图,如图5所示,BP(Bytecode Pointer,字节码指针)表示所保存的字节码指针,BTB(Branch Target Buffer)表示转移目标缓冲。 
此外,本发明实施例中还提供了一种解释器中间接跳转预测系统,本实施例系统主要包括解释器和转移预测器,其中: 
所述解释器,用于插入引导指令,并将字节码指针包含在所述引导指令中; 
所述转移预测器,用于识别所述引导指令,并将所需的字节码指针保存至转移预测器中;以及,当间接跳转指令运行时,转移预测器识别所述间接跳转指令,使用所述间接跳转指令的指针和所保存的所述字节码指针进行散 列运算,并以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址。 
其中,所述解释器配置为按照如下方式在所述在解释器中插入引导指令,将字节码指针包含在所述引导指令中: 
分析所述解释器的源代码,找到实现字节码功能的指令模板; 
根据所述指令模板的尾部包含的使用字节码指针读取字节码的操作码的代码,得出字节码指针所在的寄存器号; 
寻找所述指令模板的公共头部; 
在所述指令模板的公共头部插入引导指令,在所述引导指令中指明保存字节码指针的寄存器号; 
编译解释器,得到包含有所述引导指令的解释器。 
其中,所述转移预测器,采用如下方式识别所述引导指令,并将所需的字节码指针保存至转移预测器中: 
转移预测器根据引导指令的编码识别引导指令; 
转移预测器读取引导指令中标明的字节码指针所在的寄存器号; 
根据该寄存器号访问寄存器堆,读取字节码指针; 
将读取的字节码指针保存在转移预测器中。 
其中,所述转移预测器以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址后,还用于: 
所述转移预测器从预测的转移目标地址处开始下一条转移指令的取值; 
该转移指令执行完成之后,比较实际目标和预测的目标,判断预测是否正确,决定是否需要清除推测式执行的指令; 
根据预测结果更新转移目标缓冲。 
其中,所述解释器在所述指令模板的公共头部插入引导指令时,在所述指令模板的最后一条间接跳转指令之前、离所述间接跳转指令尽量远的地方 插入所述引导指令。 
针对上述方法实施例和系统实施例进行了预测结果评测实验。评测实验结果表明,本发明能够有效地提高预测准确率,从而提高处理器性能。实验环境基于gem5模拟器、OpenJDK解释器和dacapo-9.12评测程序集。基础处理器使用4K表项、4路组相连BTB结构实现间接跳转预测,基本参数如表1所示。 
表1基础处理器配置参数 
Figure BDA00002838299300121
使用-Xint选项调用OpenJDK,以解释执行模式运行java虚拟机。对每个评测程序,跳过前50亿条指令,记录1亿条指令的执行效果。 
图6示出了根据实验结果得出的间接跳转预测技术的性能比较示意图。其中,BTB表示基础处理器,BGI(Bytecode Guided Indirect branch prediction,字节码引导的间接转移预测)表示本发明所提出的间接跳转预测技术。从图6中可以看出,相对于基础处理器,本发明所提出的预测技术平均将性能提高41%。 
以上仅为本发明的优选实施案例而已,并不用于限制本发明,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。 
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。 

Claims (10)

1.一种解释器中间接跳转预测方法,所述方法包括:
在解释器中插入引导指令,将字节码指针包含在所述引导指令中;
转移预测器识别所述引导指令,并将所需的字节码指针保存至转移预测器中;
当间接跳转指令运行时,转移预测器识别所述间接跳转指令,使用所述间接跳转指令的指针和所保存的所述字节码指针进行散列运算,并以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址。
2.如权利要求1所述的方法,其中:
所述在解释器中插入引导指令,将字节码指针包含在所述引导指令中,包括:
分析所述解释器的源代码,找到实现字节码功能的指令模板;
根据所述指令模板的尾部包含的使用字节码指针读取字节码的操作码的代码,得出字节码指针所在的寄存器号;
寻找所述指令模板的公共头部;
在所述指令模板的公共头部插入引导指令,在所述引导指令中指明保存字节码指针的寄存器号;
编译经过修改的解释器源代码,得到包含有所述引导指令的解释器。
3.如权利要求1所述的方法,其中:
所述转移预测器识别所述引导指令,并将所需的字节码指针保存至转移预测器中,包括:
转移预测器根据引导指令的编码识别引导指令;
转移预测器读取引导指令中标明的字节码指针所在的寄存器号;
根据该寄存器号访问寄存器堆,读取字节码指针;
将读取的字节码指针保存在转移预测器中。
4.如权利要求1所述的方法,其中:
所述转移预测器以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址后,所述方法还包括:
所述转移预测器从预测的转移目标地址处开始下一条转移指令的取值;
该转移指令执行完成之后,比较实际目标和预测的目标,判断预测是否正确,决定是否需要清除推测式执行的指令;
根据预测结果更新转移目标缓冲。
5.如权利要求1或2所述的方法,其中:
在所述指令模板的公共头部插入引导指令时,在所述指令模板的最后一条间接跳转指令之前、离所述间接跳转指令尽量远的地方插入所述引导指令。
6.一种解释器中间接跳转预测系统,所述系统包括:解释器和转移预测器,
所述解释器,用于插入引导指令,并将字节码指针包含在所述引导指令中;
所述转移预测器,用于识别所述引导指令,并将所需的字节码指针保存至转移预测器中;以及,当间接跳转指令运行时,转移预测器识别所述间接跳转指令,使用所述间接跳转指令的指针和所保存的所述字节码指针进行散列运算,并以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址。
7.如权利要求6所述的系统,其中:
所述解释器配置为按照如下方式在所述在解释器中插入引导指令,将字节码指针包含在所述引导指令中:
分析所述解释器的源代码,找到实现字节码功能的指令模板;
根据所述指令模板的尾部包含的使用字节码指针读取字节码的操作码的代码,得出字节码指针所在的寄存器号;
寻找所述指令模板的公共头部;
在所述指令模板的公共头部插入引导指令,在所述引导指令中指明保存字节码指针的寄存器号;
编译经过修改的解释器源代码,得到包含有所述引导指令的解释器。
8.如权利要求6所述的系统,其中:
所述转移预测器,采用如下方式识别所述引导指令,并将所需的字节码指针保存至转移预测器中:
转移预测器根据引导指令的编码识别引导指令;
转移预测器读取引导指令中标明的字节码指针所在的寄存器号;
根据该寄存器号访问寄存器堆,读取字节码指针;
将读取的字节码指针保存在转移预测器中。
9.如权利要求6所述的系统,其中:
所述转移预测器以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址后,还用于:
所述转移预测器从预测的转移目标地址处开始下一条转移指令的取值;
该转移指令执行完成之后,比较实际目标和预测的目标,判断预测是否正确,决定是否需要清除推测式执行的指令;
根据预测结果更新转移目标缓冲。
10.如权利要求6或7所述的系统,其中:
所述解释器在所述指令模板的公共头部插入引导指令时,在所述指令模板的最后一条间接跳转指令之前、离所述间接跳转指令尽量远的地方插入所述引导指令。
CN201310052296.7A 2012-12-31 2013-02-18 一种解释器中间接跳转预测方法及系统 Active CN103294518B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310052296.7A CN103294518B (zh) 2012-12-31 2013-02-18 一种解释器中间接跳转预测方法及系统

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN2012105941731 2012-12-31
CN201210594173 2012-12-31
CN201210594173.1 2012-12-31
CN201310052296.7A CN103294518B (zh) 2012-12-31 2013-02-18 一种解释器中间接跳转预测方法及系统

Publications (2)

Publication Number Publication Date
CN103294518A true CN103294518A (zh) 2013-09-11
CN103294518B CN103294518B (zh) 2016-04-27

Family

ID=49095454

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310052296.7A Active CN103294518B (zh) 2012-12-31 2013-02-18 一种解释器中间接跳转预测方法及系统

Country Status (1)

Country Link
CN (1) CN103294518B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608346A (zh) * 2015-12-25 2016-05-25 北京奇虎科技有限公司 基于arm指令虚拟化的elf文件保护方法及系统
CN107430650A (zh) * 2015-03-02 2017-12-01 因温特奥股份公司 保护计算机程序以抵御逆向工程
CN112306632A (zh) * 2020-10-21 2021-02-02 成都融微软件服务有限公司 一种Java Card虚拟机执行引擎及执行方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5857104A (en) * 1996-11-26 1999-01-05 Hewlett-Packard Company Synthetic dynamic branch prediction
CN1561481A (zh) * 2001-10-02 2005-01-05 皇家飞利浦电子股份有限公司 用于java硬件加速器的猜测执行
EP2182433A1 (en) * 2007-07-02 2010-05-05 Fujitsu Limited Indirect branching program, and indirect branching method
CN102306094A (zh) * 2011-08-16 2012-01-04 北京北大众志微系统科技有限责任公司 实现现代处理器间接转移预测的装置及方法
CN102306093A (zh) * 2011-08-04 2012-01-04 北京北大众志微系统科技有限责任公司 实现现代处理器间接转移预测的装置及方法
CN102566977A (zh) * 2010-12-09 2012-07-11 三星电子株式会社 字节码分支处理器及方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5857104A (en) * 1996-11-26 1999-01-05 Hewlett-Packard Company Synthetic dynamic branch prediction
CN1561481A (zh) * 2001-10-02 2005-01-05 皇家飞利浦电子股份有限公司 用于java硬件加速器的猜测执行
EP2182433A1 (en) * 2007-07-02 2010-05-05 Fujitsu Limited Indirect branching program, and indirect branching method
CN102566977A (zh) * 2010-12-09 2012-07-11 三星电子株式会社 字节码分支处理器及方法
CN102306093A (zh) * 2011-08-04 2012-01-04 北京北大众志微系统科技有限责任公司 实现现代处理器间接转移预测的装置及方法
CN102306094A (zh) * 2011-08-16 2012-01-04 北京北大众志微系统科技有限责任公司 实现现代处理器间接转移预测的装置及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ZI-CHAO XIE: "SWIP Prediction: Complexity-Effective Indirect-Branch Prediction Using Pointers", 《JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY》, 31 July 2012 (2012-07-31), pages 754 - 768, XP035084571, DOI: doi:10.1007/s11390-012-1262-8 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107430650A (zh) * 2015-03-02 2017-12-01 因温特奥股份公司 保护计算机程序以抵御逆向工程
CN107430650B (zh) * 2015-03-02 2020-10-09 因温特奥股份公司 保护计算机程序以抵御逆向工程
CN105608346A (zh) * 2015-12-25 2016-05-25 北京奇虎科技有限公司 基于arm指令虚拟化的elf文件保护方法及系统
CN112306632A (zh) * 2020-10-21 2021-02-02 成都融微软件服务有限公司 一种Java Card虚拟机执行引擎及执行方法

Also Published As

Publication number Publication date
CN103294518B (zh) 2016-04-27

Similar Documents

Publication Publication Date Title
US11003453B2 (en) Branch target buffer for emulation environments
US9639371B2 (en) Solution to divergent branches in a SIMD core using hardware pointers
US8949106B2 (en) Just in time compiler in spatially aware emulation of a guest computer instruction set
US20130086338A1 (en) Linking code for an enhanced application binary interface (abi) with decode time instruction optimization
US10430191B2 (en) Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption
CN102799461B (zh) 一种应用的执行方法、装置及电子设备
CN108027748B (zh) 指令集模拟器及其模拟器生成方法
CN101884025B (zh) 用于使过程返回序列加速的方法和系统
CN113196243A (zh) 使用编译器生成的仿真优化元数据改进仿真和跟踪性能
CN103294518B (zh) 一种解释器中间接跳转预测方法及系统
Yuan et al. Offload annotations: Bringing heterogeneous computing to existing libraries and workloads
CN103106097B (zh) 一种即时编译系统中的栈运算优化方法
CN102566977B (zh) 字节码分支处理器及方法
US8589899B2 (en) Optimization system, optimization method, and compiler program
CN104063329B (zh) 64位立即数处理方法及装置
US9940267B2 (en) Compiler global memory access optimization in code regions using most appropriate base pointer registers
US20120222023A1 (en) Automatic runtime dependency lookup
TWI743698B (zh) 解譯執行位元組碼指令流的方法及裝置
CN103793502A (zh) 即时编译器中一种基于云的热路径优化方法
Zhou et al. Tree traversal scheduling: A global instruction scheduling technique for VLIW/EPIC processors
EP4083785B1 (en) Profiling and optimization of compiler-generated code
CN105279004A (zh) 一种基于采样剖析的轻量级程序代码重排方法
Choi et al. Typed js: A lightweight typed javascript engine for mobile devices
Kleinsorge WCET-centric code allocation for scratchpad memories
US9880841B2 (en) Computation method for computing performance value when processor executes code, computation apparatus for computing performance value when processor executes code, and computer readable storage medium storing computation program for computing performance value when processor executes code

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant