CN103294518B - 一种解释器中间接跳转预测方法及系统 - Google Patents
一种解释器中间接跳转预测方法及系统 Download PDFInfo
- Publication number
- CN103294518B CN103294518B CN201310052296.7A CN201310052296A CN103294518B CN 103294518 B CN103294518 B CN 103294518B CN 201310052296 A CN201310052296 A CN 201310052296A CN 103294518 B CN103294518 B CN 103294518B
- 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.)
- Active
Links
Landscapes
- Advance Control (AREA)
Abstract
本发明公开了一种解释器中间接跳转预测方法及系统,其方法包括:在解释器中插入引导指令,将字节码指针包含在引导指令中;转移预测器识别引导指令,并将所需的字节码指针保存至转移预测器中;当间接跳转指令运行时,转移预测器识别间接跳转指令,使用间接跳转指令的指针和所保存的字节码指针进行散列运算,并以散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址。本发明以字节码指针作为关联信息,以引导指令的方式软硬件协作指导间接跳转,从而可以根据字节码指针准确地对解释器中间接跳转进行预测。
Description
技术领域
本发明属于微处理器设计和解释器优化领域,尤其涉及一种解释器中间接跳转预测方法及系统。
背景技术
解释器是一种常用的语言处理器,它接受源代码和输入,直接得到相应的输出。解释器能够支持紧凑且平台无关的代码发布形式,开发方便,内存消耗少,但性能较差。在托管运行环境中,解释器是一个重要的组件,负责代码的前期执行,对托管运行环境的启动时间和整体性能都有比较重要的影响,许多脚本语言是由解释器支持的。由于解释器实现简单,因此,原型系统的开发也多使用解释器。
转移指令是代码中的控制执行流的指令,使执行流从指定的地方继续执行。现代处理器技术中为了提高指令级并行性,引入了超标量和超级流水结构,往往上一条指令还没执行完,下一条指令就开始执行了。当执行转移指令的时候,由于该转移指令还没执行完,还不知道下一条指令的地址,这时通常采取推测式执行的方式,对下一条指令的地址进行预测,从而能提升处理器的利用率。当预测出错的时候,推测式执行的指令都需要被清理掉,从而影响了处理器的性能,因而如何提高转移指令预测命中率,是现代处理器中很重要的一个主题。
转移指令根据转移是否一定发生可分为有条件转移和无条件转移,有条件转移需要满足一定的条件才会发生转移,而无条件转移则一定发生。根据转移目标的存在形式又可分为直接转移和间接转移,直接转移的地址直接由指令本身可以得到,而间接转移的地址需要通过访问寄存器或者内存才能得到。其中,无条件直接转移容易处理,研究人员一般对它不关心;有条件间接转移实际中很少使用,一般也不太关心;有条件直接转移是最重要的一种转移,研究人员通过大量的研究工作,已经将这类转移的命中率提升到较高水平;而无条件间接转移,又称间接跳转,由于目标地址需要通过访存或者寄存器才能得到,比较难以进行预测。
现有技术中,在解释器的实现中,通常都有一条间接跳转指令用以跳转到下一条字节码对应的实现处。已有研究表明,该间接跳转指令对解释器性能影响较大。目前很多研究人员通过多种手段来提升该间接跳转的预测命中率,例如有指令复制技术,用以减少间接跳转的目标数目,contextthreading,利用转移预测器提供的CAS来提升间接跳转的预测命中率,等。
发明内容
本发明解决的技术问题是提供一种解释器中间接跳转预测方法及系统,能够根据字节码指针准确地对解释器中间接跳转进行预测。
为解决上述技术问题,本发明提供了一种解释器中间接跳转预测方法,所述方法包括:
在解释器中插入引导指令,将字节码指针包含在所述引导指令中;
转移预测器识别所述引导指令,并将所需的字节码指针保存至转移预测器中;
当间接跳转指令运行时,转移预测器识别所述间接跳转指令,使用所述间接跳转指令的指针和所保存的所述字节码指针进行散列运算,并以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址。
其中,所述在解释器中插入引导指令,将字节码指针包含在所述引导指令中,包括:
分析所述解释器的源代码,找到实现字节码功能的指令模板;
根据所述指令模板的尾部包含的使用字节码指针读取字节码的操作码的代码,得出字节码指针所在的寄存器号;
寻找所述指令模板的公共头部;
在所述指令模板的公共头部插入引导指令,在所述引导指令中指明保存字节码指针的寄存器号;
编译经过修改的解释器源代码,得到包含有所述引导指令的解释器。
其中,所述转移预测器识别所述引导指令,并将所需的字节码指针保存至转移预测器中,包括:
转移预测器根据引导指令的编码识别引导指令;
转移预测器读取引导指令中标明的字节码指针所在的寄存器号;
根据该寄存器号访问寄存器堆,读取字节码指针;
将读取的字节码指针保存在转移预测器中。
其中,所述转移预测器以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址后,所述方法还包括:
所述转移预测器从预测的转移目标地址处开始下一条转移指令的取值;
该转移指令执行完成之后,比较实际目标和预测的目标,判断预测是否正确,决定是否需要清除推测式执行的指令;
根据预测结果更新转移目标缓冲。
其中,在所述指令模板的公共头部插入引导指令时,在所述指令模板的最后一条间接跳转指令之前、离所述间接跳转指令尽量远的地方插入所述引导指令。
本发明还提供了一种解释器中间接跳转预测系统,所述系统包括:解释器和转移预测器,
所述解释器,用于插入引导指令,并将字节码指针包含在所述引导指令中;
所述转移预测器,用于识别所述引导指令,并将所需的字节码指针保存至转移预测器中;以及,当间接跳转指令运行时,转移预测器识别所述间接跳转指令,使用所述间接跳转指令的指针和所保存的所述字节码指针进行散列运算,并以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址。
其中,所述解释器配置为按照如下方式在所述在解释器中插入引导指令,将字节码指针包含在所述引导指令中:
分析所述解释器的源代码,找到实现字节码功能的指令模板;
根据所述指令模板的尾部包含的使用字节码指针读取字节码的操作码的代码,得出字节码指针所在的寄存器号;
寻找所述指令模板的公共头部;
在所述指令模板的公共头部插入引导指令,在所述引导指令中指明保存字节码指针的寄存器号;
编译经过修改的解释器源代码,得到包含有所述引导指令的解释器。
其中,所述转移预测器,采用如下方式识别所述引导指令,并将所需的字节码指针保存至转移预测器中:
转移预测器根据引导指令的编码识别引导指令;
转移预测器读取引导指令中标明的字节码指针所在的寄存器号;
根据该寄存器号访问寄存器堆,读取字节码指针;
将读取的字节码指针保存在转移预测器中。
其中,所述转移预测器以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址后,还用于:
所述转移预测器从预测的转移目标地址处开始下一条转移指令的取值;
该转移指令执行完成之后,比较实际目标和预测的目标,判断预测是否正确,决定是否需要清除推测式执行的指令;
根据预测结果更新转移目标缓冲。
其中,所述解释器在所述指令模板的公共头部插入引导指令时,在所述指令模板的最后一条间接跳转指令之前、离所述间接跳转指令尽量远的地方插入所述引导指令。
本发明方法,通过修改解释器的源代码,插入引导指令,传递字节码指针给转移预测器,转移预测器通过字节码指针识别不同的转移场景,因而可有效地提高间接跳转指令的预测准确率,从而可提高解释器的性能。
将本发明方案应用于解释器中,通过实验结果表明能够有效地提高解释器的性能。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的解释器中间接跳转预测方法的流程示意图;
图2是本发明实施例中修改解释器的流程示意图;
图3是本发明实施例中识别引导指令保存指令指针的流程示意图;
图4是本发明实施例中识别间接跳转指令并进行预测及更新的流程示意图;
图5是本发明实施例中转移预测器的结构示意图;
图6是应用本发明方案的预测结果的评测实验结果数据示意图。
具体实施方式
本实施方式提供了一种解释器中间接跳转预测的方法,以字节码指针作为关联信息,以引导指令的方式软硬件协作指导间接跳转,该方法主要包括:
在解释器中插入引导指令,将字节码指针传递给转移预测器;
转移预测器识别引导指令并记录字节码指针;
转移预测器识别间接跳转并对跳转目标进行预测。
具体地,本实施方式提供的上述方法是这样实现的:
修改解释器的源代码,在字节码模板的最后一条间接跳转之前离间接跳转尽量远的地方插入引导指令,将字节码指针传递给转移预测器;在该条间接跳转执行时,使用保存的字节码指针和该条间接跳转的指令指针散列得到的结果访问转移目标缓冲,并根据结果更新转移目标缓冲。
进一步地,分析解释器的结构,找到字节码指令模板的头部,找到保存字节码指针的寄存器编号,根据该编号构造引导指令,添加到指令模板的头部。重新编译生成解释器,该解释器即包含引导指令。在解释器执行的过程中,转移预测器根据引导指令保存字节码指针,在遇到间接跳转时使用该字节码指针及跳转指令的PC指针做散列访问转移目标缓冲,从而预测该间接跳转的目标地址。
进一步地,解释器的结构,通常是一条字节码对应一段汇编实现该字节码的功能,该段汇编实现最后是一条间接跳转,跳转到下一条字节码的实现。在间接跳转之前,会根据字节码指针,读取下一条字节码的操作码,查表得到下一条字节码的汇编实现的首地址,也就是间接跳转的目标。根据这段操作,可知字节码指针所在寄存器。字节码的汇编实现通常都有一段公共的头部,找到该头部,并根据字节码指针所在寄存器构造引导指令,加入到该头部,完成解释器的修改。
进一步地,重新编译经过修改的解释器源代码,从而得到的解释器中含有引导指令。
进一步地,该方法还涉及转移预测器中保存指令指针的寄存器。在解释器运行时,执行字节码对应的汇编实现,首先执行引导指令。引导指令表明了指令指针所在的寄存器。处理器中的转移预测器根据该寄存器号,读取对应寄存器中保存的指令指针值,保存到转移预测器中的一个寄存器中。
进一步地,该方法还涉及转移预测器中的散列运算器、一个转移目标缓冲区。当处理器运行到间接跳转指令时,使用该间接跳转指令的PC值和转移预测器中保存的指令指针值用散列运算器得到散列的结果,以该结果作为索引访问转移目标缓冲区,从而得到预测的间接跳转目标地址。当该间接跳转执行完毕,跳转目标已经确定之后,根据预测是否正确决定是否需要清除后续推测执行的指令,并使用同样的索引更新转移目标缓冲,下次预测时可以使用该地址。
为了便于阐述本发明,以下将结合附图及具体实施例对本发明技术方案的实施作进一步详细描述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
本发明实施例中采用软硬件协同的技术方案,提出了一种基于字节码指针引导的解释器中间接跳转预测的方法及系统,利用字节码指针区分间接跳转的不同场景,也就是间接跳转实际所服务的字节码,从而将不同字节码对应的间接跳转目标地址保存在转移目标缓冲的不同位置,使它们尽量不冲突,从而能较好地保存历史转移目标,以更准确地对间接跳转进行预测。例如同一种字节码的多次出现即为不同场景,具体示例如下:假定有字节码序列
L:add
sub
add
gotoL
解释执行第一个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)。本示例中采用如下方式修改解释器:
图5示出了本发明实施例的转移预测器结构示意图,如图5所示,BP(BytecodePointer,字节码指针)表示所保存的字节码指针,BTB(BranchTargetBuffer)表示转移目标缓冲。
此外,本发明实施例中还提供了一种解释器中间接跳转预测系统,本实施例系统主要包括解释器和转移预测器,其中:
所述解释器,用于插入引导指令,并将字节码指针包含在所述引导指令中;
所述转移预测器,用于识别所述引导指令,并将所需的字节码指针保存至转移预测器中;以及,当间接跳转指令运行时,转移预测器识别所述间接跳转指令,使用所述间接跳转指令的指针和所保存的所述字节码指针进行散列运算,并以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址。
其中,所述解释器配置为按照如下方式在所述在解释器中插入引导指令,将字节码指针包含在所述引导指令中:
分析所述解释器的源代码,找到实现字节码功能的指令模板;
根据所述指令模板的尾部包含的使用字节码指针读取字节码的操作码的代码,得出字节码指针所在的寄存器号;
寻找所述指令模板的公共头部;
在所述指令模板的公共头部插入引导指令,在所述引导指令中指明保存字节码指针的寄存器号;
编译解释器,得到包含有所述引导指令的解释器。
其中,所述转移预测器,采用如下方式识别所述引导指令,并将所需的字节码指针保存至转移预测器中:
转移预测器根据引导指令的编码识别引导指令;
转移预测器读取引导指令中标明的字节码指针所在的寄存器号;
根据该寄存器号访问寄存器堆,读取字节码指针;
将读取的字节码指针保存在转移预测器中。
其中,所述转移预测器以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址后,还用于:
所述转移预测器从预测的转移目标地址处开始下一条转移指令的取值;
该转移指令执行完成之后,比较实际目标和预测的目标,判断预测是否正确,决定是否需要清除推测式执行的指令;
根据预测结果更新转移目标缓冲。
其中,所述解释器在所述指令模板的公共头部插入引导指令时,在所述指令模板的最后一条间接跳转指令之前、离所述间接跳转指令尽量远的地方插入所述引导指令。
针对上述方法实施例和系统实施例进行了预测结果评测实验。评测实验结果表明,本发明能够有效地提高预测准确率,从而提高处理器性能。实验环境基于gem5模拟器、OpenJDK解释器和dacapo-9.12评测程序集。基础处理器使用4K表项、4路组相连BTB结构实现间接跳转预测,基本参数如表1所示。
表1基础处理器配置参数
使用-Xint选项调用OpenJDK,以解释执行模式运行java虚拟机。对每个评测程序,跳过前50亿条指令,记录1亿条指令的执行效果。
图6示出了根据实验结果得出的间接跳转预测技术的性能比较示意图。其中,BTB表示基础处理器,BGI(BytecodeGuidedIndirectbranchprediction,字节码引导的间接转移预测)表示本发明所提出的间接跳转预测技术。从图6中可以看出,相对于基础处理器,本发明所提出的预测技术平均将性能提高41%。
以上仅为本发明的优选实施案例而已,并不用于限制本发明,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
Claims (10)
1.一种解释器中间接跳转预测方法,所述方法包括:
在解释器中插入引导指令,将字节码指针包含在所述引导指令中;
转移预测器识别所述引导指令,并将所需的字节码指针保存至转移预测器中;
当间接跳转指令运行时,转移预测器识别所述间接跳转指令,使用所述间接跳转指令的指针和所保存的所述字节码指针进行散列运算,并以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址。
2.如权利要求1所述的方法,其中:
所述在解释器中插入引导指令,将字节码指针包含在所述引导指令中,包括:
分析所述解释器的源代码,找到实现字节码功能的指令模板;
根据所述指令模板的尾部包含的使用字节码指针读取字节码的操作码的代码,得出字节码指针所在的寄存器号;
寻找所述指令模板的公共头部;
在所述指令模板的公共头部插入引导指令,在所述引导指令中指明保存字节码指针的寄存器号;
编译经过修改的解释器源代码,得到包含有所述引导指令的解释器。
3.如权利要求1所述的方法,其中:
所述转移预测器识别所述引导指令,并将所需的字节码指针保存至转移预测器中,包括:
转移预测器根据引导指令的编码识别引导指令;
转移预测器读取引导指令中标明的字节码指针所在的寄存器号;
根据该寄存器号访问寄存器堆,读取字节码指针;
将读取的字节码指针保存在转移预测器中。
4.如权利要求1所述的方法,其中:
所述转移预测器以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址后,所述方法还包括:
所述转移预测器从预测的转移目标地址处开始下一条转移指令的取值;
该转移指令执行完成之后,比较实际目标和预测的目标,判断预测是否正确,决定是否需要清除推测式执行的指令;
根据预测结果更新转移目标缓冲。
5.如权利要求1或2所述的方法,其中:
在所述指令模板的公共头部插入引导指令时,在所述指令模板的最后一条间接跳转指令之前、离所述间接跳转指令尽量远的地方插入所述引导指令。
6.一种解释器中间接跳转预测系统,所述系统包括:解释器和转移预测器,
所述解释器,用于插入引导指令,并将字节码指针包含在所述引导指令中;
所述转移预测器,用于识别所述引导指令,并将所需的字节码指针保存至转移预测器中;以及,当间接跳转指令运行时,转移预测器识别所述间接跳转指令,使用所述间接跳转指令的指针和所保存的所述字节码指针进行散列运算,并以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址。
7.如权利要求6所述的系统,其中:
所述解释器配置为按照如下方式在所述解释器中插入引导指令,将字节码指针包含在所述引导指令中:
分析所述解释器的源代码,找到实现字节码功能的指令模板;
根据所述指令模板的尾部包含的使用字节码指针读取字节码的操作码的代码,得出字节码指针所在的寄存器号;
寻找所述指令模板的公共头部;
在所述指令模板的公共头部插入引导指令,在所述引导指令中指明保存字节码指针的寄存器号;
编译经过修改的解释器源代码,得到包含有所述引导指令的解释器。
8.如权利要求6所述的系统,其中:
所述转移预测器,采用如下方式识别所述引导指令,并将所需的字节码指针保存至转移预测器中:
转移预测器根据引导指令的编码识别引导指令;
转移预测器读取引导指令中标明的字节码指针所在的寄存器号;
根据该寄存器号访问寄存器堆,读取字节码指针;
将读取的字节码指针保存在转移预测器中。
9.如权利要求6所述的系统,其中:
所述转移预测器以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址后,还用于:
所述转移预测器从预测的转移目标地址处开始下一条转移指令的取值;
该转移指令执行完成之后,比较实际目标和预测的目标,判断预测是否正确,决定是否需要清除推测式执行的指令;
根据预测结果更新转移目标缓冲。
10.如权利要求6或7所述的系统,其中:
所述解释器在所述指令模板的公共头部插入引导指令时,在所述指令模板的最后一条间接跳转指令之前、离所述间接跳转指令尽量远的地方插入所述引导指令。
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 |
---|---|---|---|
CN201210594173 | 2012-12-31 | ||
CN201210594173.1 | 2012-12-31 | ||
CN2012105941731 | 2012-12-31 | ||
CN201310052296.7A CN103294518B (zh) | 2012-12-31 | 2013-02-18 | 一种解释器中间接跳转预测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103294518A CN103294518A (zh) | 2013-09-11 |
CN103294518B true 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) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016139078A1 (en) * | 2015-03-02 | 2016-09-09 | Inventio Ag | Protecting a computer program against reverse engineering |
CN105608346A (zh) * | 2015-12-25 | 2016-05-25 | 北京奇虎科技有限公司 | 基于arm指令虚拟化的elf文件保护方法及系统 |
CN112306632B (zh) * | 2020-10-21 | 2024-06-14 | 成都融微软件服务有限公司 | 一种Java Card虚拟机执行引擎装置及执行方法 |
Citations (6)
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 |
CN102306093A (zh) * | 2011-08-04 | 2012-01-04 | 北京北大众志微系统科技有限责任公司 | 实现现代处理器间接转移预测的装置及方法 |
CN102306094A (zh) * | 2011-08-16 | 2012-01-04 | 北京北大众志微系统科技有限责任公司 | 实现现代处理器间接转移预测的装置及方法 |
CN102566977A (zh) * | 2010-12-09 | 2012-07-11 | 三星电子株式会社 | 字节码分支处理器及方法 |
-
2013
- 2013-02-18 CN CN201310052296.7A patent/CN103294518B/zh active Active
Patent Citations (6)
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)
Title |
---|
SWIP Prediction: Complexity-Effective Indirect-Branch Prediction Using Pointers;Zi-Chao Xie;《JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY》;20120731;第754–768页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103294518A (zh) | 2013-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8959500B2 (en) | Pipelined processor and compiler/scheduler for variable number branch delay slots | |
CN102360334B (zh) | 一种动静态结合的软件安全性测试方法 | |
US20210089283A1 (en) | Direct function call substitution using preprocessor | |
US10534612B2 (en) | Hybrid polymorphic inline cache and branch target buffer prediction units for indirect branch prediction for emulation environments | |
US10430191B2 (en) | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption | |
CN108027748B (zh) | 指令集模拟器及其模拟器生成方法 | |
CN101884025B (zh) | 用于使过程返回序列加速的方法和系统 | |
CN105183592A (zh) | 用于支持性能分析的方法和装置 | |
CN115686631B (zh) | 一种基于知识基的随机指令生成方法、装置及存储介质 | |
CN103294518B (zh) | 一种解释器中间接跳转预测方法及系统 | |
CN103106097B (zh) | 一种即时编译系统中的栈运算优化方法 | |
US9063735B2 (en) | Reconfigurable processor and method for processing loop having memory dependency | |
CN102566977B (zh) | 字节码分支处理器及方法 | |
US9940267B2 (en) | Compiler global memory access optimization in code regions using most appropriate base pointer registers | |
CN104063329B (zh) | 64位立即数处理方法及装置 | |
TWI743698B (zh) | 解譯執行位元組碼指令流的方法及裝置 | |
US20160011889A1 (en) | Simulation method and storage medium | |
CN115827064A (zh) | 一种指令控制方法、装置及电子设备 | |
US9606779B2 (en) | Data processing system and data simulation method in the system | |
KR20150051083A (ko) | 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치 | |
CN111095197A (zh) | 代码处理方法和设备 | |
CN114527963A (zh) | C++二进制文件中的类继承关系识别方法及电子装置 | |
US8392893B2 (en) | Emulation method and computer system | |
CN111857815A (zh) | 指令处理的方法及装置 | |
CN114265593B (zh) | 指令调度方法、装置、设备及计算机可读存储介质 |
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 |