[发明专利]一种解释器中间接跳转预测方法及系统有效
申请号: | 201310052296.7 | 申请日: | 2013-02-18 |
公开(公告)号: | CN103294518A | 公开(公告)日: | 2013-09-11 |
发明(设计)人: | 程旭;黄明凯;刘先华 | 申请(专利权)人: | 北京北大众志微系统科技有限责任公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 栗若木;曲鹏 |
地址: | 100080 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 解释 间接 跳转 预测 方法 系统 | ||
技术领域
本发明属于微处理器设计和解释器优化领域,尤其涉及一种解释器中间接跳转预测方法及系统。
背景技术
解释器是一种常用的语言处理器,它接受源代码和输入,直接得到相应的输出。解释器能够支持紧凑且平台无关的代码发布形式,开发方便,内存消耗少,但性能较差。在托管运行环境中,解释器是一个重要的组件,负责代码的前期执行,对托管运行环境的启动时间和整体性能都有比较重要的影响,许多脚本语言是由解释器支持的。由于解释器实现简单,因此,原型系统的开发也多使用解释器。
转移指令是代码中的控制执行流的指令,使执行流从指定的地方继续执行。现代处理器技术中为了提高指令级并行性,引入了超标量和超级流水结构,往往上一条指令还没执行完,下一条指令就开始执行了。当执行转移指令的时候,由于该转移指令还没执行完,还不知道下一条指令的地址,这时通常采取推测式执行的方式,对下一条指令的地址进行预测,从而能提升处理器的利用率。当预测出错的时候,推测式执行的指令都需要被清理掉,从而影响了处理器的性能,因而如何提高转移指令预测命中率,是现代处理器中很重要的一个主题。
转移指令根据转移是否一定发生可分为有条件转移和无条件转移,有条件转移需要满足一定的条件才会发生转移,而无条件转移则一定发生。根据转移目标的存在形式又可分为直接转移和间接转移,直接转移的地址直接由指令本身可以得到,而间接转移的地址需要通过访问寄存器或者内存才能得到。其中,无条件直接转移容易处理,研究人员一般对它不关心;有条件问 接转移实际中很少使用,一般也不太关心;有条件直接转移是最重要的一种转移,研究人员通过大量的研究工作,已经将这类转移的命中率提升到较高水平;而无条件间接转移,又称间接跳转,由于目标地址需要通过访存或者寄存器才能得到,比较难以进行预测。
现有技术中,在解释器的实现中,通常都有一条间接跳转指令用以跳转到下一条字节码对应的实现处。已有研究表明,该间接跳转指令对解释器性能影响较大。目前很多研究人员通过多种手段来提升该间接跳转的预测命中率,例如有指令复制技术,用以减少间接跳转的目标数目,context threading,利用转移预测器提供的CAS来提升间接跳转的预测命中率,等。
发明内容
本发明解决的技术问题是提供一种解释器中间接跳转预测方法及系统,能够根据字节码指针准确地对解释器中间接跳转进行预测。
为解决上述技术问题,本发明提供了一种解释器中间接跳转预测方法,所述方法包括:
在解释器中插入引导指令,将字节码指针包含在所述引导指令中;
转移预测器识别所述引导指令,并将所需的字节码指针保存至转移预测器中;
当间接跳转指令运行时,转移预测器识别所述间接跳转指令,使用所述间接跳转指令的指针和所保存的所述字节码指针进行散列运算,并以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址。
其中,所述在解释器中插入引导指令,将字节码指针包含在所述引导指令中,包括:
分析所述解释器的源代码,找到实现字节码功能的指令模板;
根据所述指令模板的尾部包含的使用字节码指针读取字节码的操作码的代码,得出字节码指针所在的寄存器号;
寻找所述指令模板的公共头部;
在所述指令模板的公共头部插入引导指令,在所述引导指令中指明保存字节码指针的寄存器号;
编译经过修改的解释器源代码,得到包含有所述引导指令的解释器。
其中,所述转移预测器识别所述引导指令,并将所需的字节码指针保存至转移预测器中,包括:
转移预测器根据引导指令的编码识别引导指令;
转移预测器读取引导指令中标明的字节码指针所在的寄存器号;
根据该寄存器号访问寄存器堆,读取字节码指针;
将读取的字节码指针保存在转移预测器中。
其中,所述转移预测器以所述散列运算得到的索引值访问转移目标缓冲,获得预测的转移目标地址后,所述方法还包括:
所述转移预测器从预测的转移目标地址处开始下一条转移指令的取值;
该转移指令执行完成之后,比较实际目标和预测的目标,判断预测是否正确,决定是否需要清除推测式执行的指令;
根据预测结果更新转移目标缓冲。
其中,在所述指令模板的公共头部插入引导指令时,在所述指令模板的最后一条间接跳转指令之前、离所述间接跳转指令尽量远的地方插入所述引导指令。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京北大众志微系统科技有限责任公司,未经北京北大众志微系统科技有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310052296.7/2.html,转载请声明来源钻瓜专利网。