CN103744642A - 用于改进处理器中直接跳转的方法及系统 - Google Patents
用于改进处理器中直接跳转的方法及系统 Download PDFInfo
- Publication number
- CN103744642A CN103744642A CN201310756486.7A CN201310756486A CN103744642A CN 103744642 A CN103744642 A CN 103744642A CN 201310756486 A CN201310756486 A CN 201310756486A CN 103744642 A CN103744642 A CN 103744642A
- Authority
- CN
- China
- Prior art keywords
- instruction
- absolute
- processor
- jump instruction
- redirect
- 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
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
本发明提供了一种用于改进处理器中直接跳转的方法,其特征在于所述的方法包括如下步骤:发现不在分支预测记录中的绝对跳转指令,无需将绝对跳转指令下面预取指令从流水线中清空;处理器顺序执行跳转命令下的指令;执行绝对跳转指令,从目的地址中取指。本发明具有的优点和积极效果是:对于不在分支预测记录的绝对跳转指令无需清空流水线,减小时钟开销;同时会减少分支预测失败的几率。
Description
技术领域
本发明创造涉及数据处理技术领域,特别涉及改进处理器直接跳转的方法及系统。
背景技术
目前,分支预测技术在开发处理器中起到重要作用,但是不在分支预测记录历史中的绝对跳转指令,分支预测不会起到作用。在跳转到目的地址执行之前,取指单元会顺序取指令,为了程序正常执行,控制单元需要清空流水线,增加直接跳转的时钟开销,降低处理器的性能。
当今处理器频率越来越高,处理器流水线级数越来越读多,控制单元清空流水线对处理器性能的影响越来越大。
分支预测技术需要用存储单元保存跳转历史信息,应用程序的越复杂,需要保存跳转历史信息的存储单元越多,处理器面积越大。存储单元存在替换机制保证所有跳转程序都可以分支预测,程序越复杂,替换越频繁,分支预测失败的几率就越大,导致处理器性能降低。
目前,在一定的优化选项下,在子函数复杂程序一定的情况下,编译器在指令调度时可以将函数内联到调用它的函数中,以减少跳转,提高性能。但是大部分子函数很难内联到调用它的函数中。
发明内容
本发明创造要解决的问题是不在分支预测记录的绝对跳转指令需要清空流水线,时钟开销较大的问题
为解决上述技术问题,本发明创造采用的技术方案是:一种用于改进处理器中直接跳转的方法,所述的方法包括如下步骤:
发现不在分支预测记录中的跳转指令;
处理器顺序执行跳转命令下的指令;
执行绝对跳转指令,从目的地址中取指。
进一步的,所述的方法还包括:
不将此绝对跳转指令保存在分支预测记录中。
进一步的,所述的处理器顺序执行跳转命令下的指令为处理器中已取指令。
进一步的,所述的方法还包括如下步骤:
处理器内链接寄存器保存绝对跳转指令下面指令的地址。
进一步的,所述的方法还包括如下步骤:
根据依赖指令与绝对跳转指令的位置关系和依赖指令运算所需周期数,计算出要将绝对跳转目的地址中指令调度到绝对跳转指令后面的条数。
进一步的,所述的调度到绝对指令后面的条数采用如下方法计算:
其中I为调度到绝对指令后面的条数,N为计算出依赖寄存器所需周期个数,M为依赖指令在绝对跳转指令前的条数,K为处理器已预读的指令条数。
进一步的,所述的方法还包括如下步骤:
如果跳转目的地址中可调度指令数量少于绝对跳转指令后面的指令个数,剩余的指令用“空指令”填充。
根据本发明的另一方面,还提供了一种用于改进处理器中直接跳转的系统,包括:
用于解析绝对跳转指令的译码单元;
用于通知取值单元继续顺序取值的控制单元;
用于判别跳转指令是否在分支预测单元的分支预测判别单元;
用于将绝对跳转命令设置于另一流水线的流水线设置单元;
用于直接跳转优化的编译器。
本发明创造具有的优点和积极效果是:对于不在分支预测记录的绝对跳转指令无需清空流水线,减小时钟开销;同时会减少分支预测失败的几率。
附图说明
图1是本发明中一个实例中处理器直接跳转流程图
图2是本发明中一个实例中处理器流水线架构图
图3是本发明中一个实例带有绝对跳转指令的汇编程序
图4是本发明中图3实例原始编译器编译结果和本编译器编译器结果
图5是本发明中另一个实例带有连接寄存器的绝对跳转指令,原始编译器编译结果和本编译器编译器结果
具体实施方式
为了对本发明创造更加深入的了解,下面列举一些具体实施例,并结合附图,对本发明创造做进一步的详细说明。
如图1所示,本发明提出用于改进处理器中直接跳转的方法和处理器系统,实施方式包括:
处理器译码单元译码发现绝对跳转指令,并且此跳转指令不在分支预测跳转历史记录中。
控制单元通知取指单元继续按顺序执行跳转指令下面的n(n=1,2,3……)条指令,无需在其后执行此跳转指令的同时清空流水线。
跳转到目的地址执行。
如是带有返回地址保存的绝对跳转指令,处理器内链接寄存器保存绝对跳转下面第n+1(n=1,2,3……)条指令的地址。
在动态分支预测记录中不需要记录绝对跳转信息。
以图2处理器流水线结构为例,该处理器流水线执行单元的级数为3级流水线,包括对于计算类指令:可以通过“取指1”,“取指2”,“译码”,“发射”,“执行1”“执行2”,“执行3”步骤来完成。对于跳转类指令则通过“取指1”,“取指2”,“译码”,“发射”,“跳转”步骤来完成。针对于存取类指令则采用“取指1”,“取指2”,“译码”,“发射”,“地址计算”“存储器访问”步骤来完成。如果发现有绝对跳转指令,则设置将绝对跳转在单独一条流水线运行,即“执行1”阶段后就可以从跳转目的地址取指令;执行阶段存在forwarding机制,直接可以从“执行1”中的寄存器forwarding中得出无需再从寄存器中单元中取出。而以图2中所描述的执行需要3级,而不是所有计算都需要三个周期,例如加法,一个周期就能计算出来,在“执行1”阶段后就计算结果会稳定,而乘法可能会需要三级,浮点运算则需要更多的级数。即存在指令依赖的前提下,读“寄存器”一级的数据可来自“执行1”,“执行2”,或“执行3”后的数据;在以上前提下,说明编译器将跳转目的指令调度到绝对跳转指令后面的指令种类和数量。
如图3所示,图3为绝对跳转指令是无数据依赖的寄存器寻址情况的一个实例,由图中可以看出绝对跳转指令执行到流水线中“跳转”一级,处理器已经取到4条指令,图4为按照本发明所提供的方法对上述指令进行操作后的结果,图中所示编译器需要将绝对跳转目的地址中的4条指令调度到绝对跳转指令的后面。在此需要特别说明的是,对于立即数寻址的情况,也可以采用如上所述的方法。
图5为本发明所提供的另一种情况下的实例,图五中的指令包括了有返回地址保存的绝对跳转指令,对于这种情况,采用处理器内链接寄存器保存绝对跳转下面第n+1(n=1,2,3……)条指令的地址。在本实例中,由于处理器已经取到4条指令,所以链接寄存器保存绝对跳转下面第4+1条指令的地址。
在实际工作过程中,还有一种情况,即绝对跳转指令与其前面的指令存在数据依赖,此种情况处理较为复杂。需要根据依赖指令与绝对跳转指令的位置关系和依赖指令运算所需周期数,计算出要将绝对跳转目的地址中指令调度到绝对跳转指令后面的条数。处理器流水线级数,绝对跳转指令的寻址方式,指令执行周期,跳转目的地址内程序的长度,都决定调度到绝对跳转指令后面指令的种类和数量。在此处理器架构下,如果根据计算得出依赖寄存器所需N个周期(N=1,2,33个执行阶段),且此依赖指令在绝对跳转指令前M条(M=1,2,3,M>3考虑无意义),编译器需要调度到绝对跳转指令后面的指令个数I,I的计算方式如下:
如果跳转目的地址中可调度指令数量少于绝对跳转指令后面的指令个数,剩余的指令用“空指令”填充。一般地,如果跳转目的地址中可调度指令数量为J,绝对跳转指令后面的空指令个数E=I-J。
如果源程序是汇编指令,为了保证软件兼容性,编译器在源程序中绝对跳转指令后面加入“空指令”。空指令的个数按上述方法确定。
以上对本发明创造的实施例进行了详细说明,但所述内容仅为本发明创造的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明创造范围所作的均等变化与改进等,均应仍归属于本专利涵盖范围之内。
Claims (8)
1.一种用于改进处理器中直接跳转的方法,其特征在于所述的方法包括如下步骤:
发现不在分支预测记录中的跳转指令;
无需将绝对跳转指令下面预取指令从流水线中清空;
处理器顺序执行跳转命令下的指令;
执行绝对跳转指令,从目的地址中取指。
2.根据权利要求1所述的用于改进处理器中直接跳转的方法,其特征在于所述的方法还包括如下步骤:
不将此绝对跳转指令保存在分支预测记录中。
3.根据权利要求1所述的用于改进处理器中直接跳转的方法,其特征在于:所述的处理器顺序执行跳转命令下的指令为处理器中已取指令。
4.根据权利要求1所述的用于改进处理器中直接跳转的方法,其特征在于所述的方法还包括如下步骤:
处理器内链接寄存器保存绝对跳转指令下面指令的地址。
5.根据权利要求4所述的用于改进处理器中直接跳转的方法,其特征在于所述的方法还包括如下步骤:
根据依赖指令与绝对跳转指令的位置关系和依赖指令运算所需周期数,计算出要将绝对跳转目的地址中指令调度到绝对跳转指令后面的条数。
6.根据权利要求5所述的用于改进处理器中直接跳转的方法,其特征在于:所述的调度到绝对指令后面的条数采用如下方法计算:
其中I为调度到绝对指令后面的条数,N为计算出依赖寄存器所需周期个数,M为依赖指令在绝对跳转指令前的条数,K为处理器已预读的指令条数。
7.根据权利要求6所述的于改进处理器中直接跳转的方法,其特征在于所述的方法还包括如下步骤:
如果跳转目的地址中可调度指令数量少于绝对跳转指令后面的指令个数,剩余的指令用“空指令”填充。
8.一种根据权利要求1所述的用于改进处理器中直接跳转的系统,包括:
用于解析绝对跳转指令的译码单元;
用于通知取值单元继续顺序取值的控制单元;
用于判别跳转指令是否在分支预测单元的分支预测判别单元;
用于将绝对跳转命令设置于另一流水线的流水线设置单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310756486.7A CN103744642B (zh) | 2013-12-31 | 2013-12-31 | 用于改进处理器中直接跳转的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310756486.7A CN103744642B (zh) | 2013-12-31 | 2013-12-31 | 用于改进处理器中直接跳转的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103744642A true CN103744642A (zh) | 2014-04-23 |
CN103744642B CN103744642B (zh) | 2017-01-18 |
Family
ID=50501662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310756486.7A Active CN103744642B (zh) | 2013-12-31 | 2013-12-31 | 用于改进处理器中直接跳转的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103744642B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708473A (zh) * | 2016-12-12 | 2017-05-24 | 中国航空工业集团公司西安航空计算技术研究所 | 一种统一染色器阵列多warp取指电路及方法 |
CN110083389A (zh) * | 2019-05-08 | 2019-08-02 | 苏州浪潮智能科技有限公司 | 一种分支跳转指令的预取方法、装置及设备 |
CN111124493A (zh) * | 2019-12-17 | 2020-05-08 | 天津国芯科技有限公司 | 一种cpu中用于减少程序跳转开销的方法及电路 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1222985A (zh) * | 1996-05-03 | 1999-07-14 | 艾利森电话股份有限公司 | 在多级流水线结构中处理条件跳转的方法 |
US6889320B1 (en) * | 1999-12-30 | 2005-05-03 | Texas Instruments Incorporated | Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter |
CN101604255A (zh) * | 2009-07-23 | 2009-12-16 | 上海交通大学 | 中间语言的延迟跳转指令二进制翻译实现的方法 |
-
2013
- 2013-12-31 CN CN201310756486.7A patent/CN103744642B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1222985A (zh) * | 1996-05-03 | 1999-07-14 | 艾利森电话股份有限公司 | 在多级流水线结构中处理条件跳转的方法 |
US6889320B1 (en) * | 1999-12-30 | 2005-05-03 | Texas Instruments Incorporated | Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter |
CN101604255A (zh) * | 2009-07-23 | 2009-12-16 | 上海交通大学 | 中间语言的延迟跳转指令二进制翻译实现的方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708473A (zh) * | 2016-12-12 | 2017-05-24 | 中国航空工业集团公司西安航空计算技术研究所 | 一种统一染色器阵列多warp取指电路及方法 |
CN106708473B (zh) * | 2016-12-12 | 2019-05-21 | 中国航空工业集团公司西安航空计算技术研究所 | 一种统一染色器阵列多warp取指电路 |
CN110083389A (zh) * | 2019-05-08 | 2019-08-02 | 苏州浪潮智能科技有限公司 | 一种分支跳转指令的预取方法、装置及设备 |
CN111124493A (zh) * | 2019-12-17 | 2020-05-08 | 天津国芯科技有限公司 | 一种cpu中用于减少程序跳转开销的方法及电路 |
Also Published As
Publication number | Publication date |
---|---|
CN103744642B (zh) | 2017-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102934075B (zh) | 用于使用预先通知技术改变程序的顺序流程的方法和设备 | |
CN104423929B (zh) | 一种分支预测方法及相关装置 | |
CN101373427B (zh) | 程序执行控制装置 | |
MX2009001911A (es) | Metodo y aparato para emular el comportamiento de pronostico de ramificacion de una llamada de subrutina explicita. | |
CN103250131B (zh) | 包括用于早期远分支预测的影子缓存的单周期多分支预测 | |
TWI503744B (zh) | 用於封裝迴圈中多個反覆之裝置、處理器及方法 | |
CN109918130A (zh) | 一种具有快速数据旁路结构的四级流水线risc-v处理器 | |
CN108287730A (zh) | 一种处理器流水线结构 | |
JP5815596B2 (ja) | プロシージャリターンシーケンスを加速するための方法およびシステム | |
JP2011129103A (ja) | バッファを用いて高効率でロード処理を実行する方法および装置 | |
CN102117198A (zh) | 一种分支处理方法 | |
TWI512626B (zh) | 微處理器中存取及管理程式碼轉譯 | |
JP5579694B2 (ja) | 復帰スタックを管理する方法および装置 | |
CN102662640B (zh) | 双重分支目标缓冲器和分支目标处理系统及处理方法 | |
CN101477455B (zh) | 无预测延时的分支预测控制方法 | |
CN103744642A (zh) | 用于改进处理器中直接跳转的方法及系统 | |
JP2009059246A (ja) | マイクロプロセッサ | |
CN106843816B (zh) | 一种分支预测控制方法及装置 | |
WO2018059337A1 (zh) | 数据处理装置和方法 | |
CN102566977B (zh) | 字节码分支处理器及方法 | |
CN103106097B (zh) | 一种即时编译系统中的栈运算优化方法 | |
US20140129805A1 (en) | Execution pipeline power reduction | |
CN104572024A (zh) | 一种用于函数返回地址预测的装置及方法 | |
CN102893260A (zh) | 用以作为指令评估数据值的系统和方法 | |
CN208580395U (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 |