CN104793921B - 一种指令分支预测方法与系统 - Google Patents
一种指令分支预测方法与系统 Download PDFInfo
- Publication number
- CN104793921B CN104793921B CN201510213756.9A CN201510213756A CN104793921B CN 104793921 B CN104793921 B CN 104793921B CN 201510213756 A CN201510213756 A CN 201510213756A CN 104793921 B CN104793921 B CN 104793921B
- Authority
- CN
- China
- Prior art keywords
- instruction
- caching
- jump
- preset quantity
- destination address
- 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
技术领域
本发明涉及处理器领域,特别是涉及一种指令分支预测方法与系统。
背景技术
当包含流水线技术的处理器处理分支指令时,根据判定条件的真/假的不同,有可能会产生跳转,而这会打断流水线中指令的处理,因为处理器无法确定该指令的下一条指令,直到分支执行完毕。流水线越长,处理器等待的时间便越长,因为它必须等待分支指令处理完毕,才能确定下一条进入流水线的指令。
目前小规模的处理器没有指令分支预测功能或仅有单方向静态分支预测功能,如果出现非顺序执行方向的跳转指令将造成处理器流水线停顿,进而导致插入分支延迟间隙使处理器执行效率降低。
发明内容
有鉴于此,本发明的主要目的在于提供一种指令分支预测方法与系统,可以减小跳转指令对处理器流水线的影响,提高处理器执行效率。
为实现上述目的,本发明提供了一种指令分支预测方法,包括:
步骤A:执行当前指令,获取顺序执行方向上即将执行的预设数量的指令并进行缓存;
步骤B:判断缓存的预设数量指令中的第一条是否为跳转指令类型,如果是,则执行步骤C,否则返回步骤A;
步骤C:计算跳转的目标地址,根据所述目标地址获取目标跳转指令并进行缓存;
步骤D:判断跳转条件是否达成,如果达成则直接读取缓存的目标跳转指令,否则直接读取缓存的顺序执行方向上预设数量指令中的第二条。
优选地,所述顺序执行方向上即将执行的预设数量的指令至少为两条。
优选地,根据所述目标地址获取目标跳转指令包括:
向处理器的取指令接口发送所述目标地址的请求;
接收所述处理器返回的对应于所述目标地址的目标跳转指令。
本发明还提供了一种指令分支预测系统,包括:
指令执行模块,用于执行当前指令;
第一缓存模块,用于获取顺序执行方向上即将执行的预设数量的指令并进行缓存;
跳转类型判断模块,用于判断缓存的预设数量指令中的第一条是否为跳转指令类型;
第二缓存模块,用于计算跳转的目标地址,根据所述目标地址获取目标跳转指令并进行缓存;
跳转条件判断模块,用于判断跳转条件是否达成,如果达成则直接读取缓存的目标跳转指令,否则直接读取缓存的顺序执行方向上预设数量指令中的第二条。
优选地,所述第二缓存模块包括:
计算子模块,用于计算跳转的目标地址;
指令请求子模块,用于向处理器的取指令接口发送所述目标地址的请求;
指令接收子模块,用于接收所述处理器返回的对应于所述目标地址的目标跳转指令;
第二缓存子模块,用于缓存所述目标跳转指令。
应用本发明提供的一种指令分支预测方法和系统,执行当前指令后获取顺序执行方向上即将执行的预设数量的指令并进行缓存,并判断缓存的第一条指令是否为跳转指令类型,如果是则计算跳转目标地址并缓存目标跳转指令,当跳转条件达成时直接读取目标跳转指令的缓存实现跳转指令的执行,若跳转条件不能达成则直接读取缓存的顺序执行方向上的第二条指令,当跳转指令被执行时由于无论跳转条件是否达成,后续要执行的指令都已获得可以直接读取缓存执行,通过跳转指令预判、指令预取、指令缓存与直接读取缓存的模式实现了双方向指令分支预测,解决了跳转指令造成的处理器流水线停顿,消除了因为插入分支延迟间隙带来的处理器执行效率降低。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明一种指令分支预测方法实施例一的流程图;
图2为本发明一种指令分支预测方法实施例二的流程图;
图3为本发明一种指令分支预测系统实施例一的流程图;
图4为本发明一种指令分支预测系统实施例二的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种指令分支预测方法,图1示出了本发明指令分支预测方法实施例一的流程图,包括:
步骤S101:执行当前指令,获取顺序执行方向上即将执行的预设数量的指令并进行缓存;
以处理器正在执行的指令为基准点,以顺序执行方向为第一方向,跳转执行方向为第二方向,执行非跳转指令时缓存第一方向的预设数量的指令,至少为两条。
步骤S102:判断缓存的预设数量指令中的第一条是否为跳转指令类型,如果是,则执行步骤S103,否则返回步骤S101;
在执行非跳转指令的同时,判断缓存中的第一条指令是否为跳转指令类型,如果是,则进入下一步,否则返回上一步继续缓存第一方向的指令。
步骤S103:计算跳转的目标地址,根据所述目标地址获取目标跳转指令并进行缓存;
当缓存中的第一条指令为跳转指令类型时,计算跳转的目标地址获取目标跳转指令并缓存第二方向的该指令。
步骤S104:判断跳转条件是否达成,如果达成,则进入步骤S105,否则进入步骤S106;
判断跳转条件是否达成,由于第一方向和第二方向的指令都已取得,无论跳转条件是否达成,处理器都可无需插入分支延迟间隙来执行下一条指令。
步骤S105:直接读取缓存的目标跳转指令;
当跳转条件达成时直接读取第二方向缓存的指令,实现无间隙跳转。
步骤S106:直接读取缓存的顺序执行方向上预设数量指令中的第二条。
当跳转条件未达成时直接读取第一方向缓存的第二条指令,继续顺序执行方向的指令执行。
应用本实施例提供的一种指令分支预测方法,执行当前指令后获取顺序执行方向上即将执行的预设数量的指令并进行缓存,并判断缓存的第一条指令是否为跳转指令类型,如果是则计算跳转目标地址并缓存目标跳转指令,当跳转条件达成时直接读取目标跳转指令的缓存实现跳转指令的执行,若跳转条件不能达成则直接读取缓存的顺序执行方向上的第二条指令,当跳转指令被执行时由于无论跳转条件是否达成,后续要执行的指令都已获得可以直接读取缓存执行,通过跳转指令预判、指令预取、指令缓存与直接读取缓存的模式实现了双方向指令分支预测,解决了跳转指令造成的处理器流水线停顿,消除了因为插入分支延迟间隙带来的处理器执行效率降低。
图2示出了本发明指令分支预测方法实施例二的流程图,步骤S103中根据所述目标地址获取目标跳转指令可具体通过图2中步骤实现:
步骤S201:向处理器的取指令接口发送所述目标地址的请求;
发送计算出的目标地址对应的取指令请求。
步骤S202:接收所述处理器返回的对应于所述目标地址的目标跳转指令。
接收对应目标地址的目标跳转指令。
本发明还提供了一种指令分支预测系统,图3示出了本发明指令分支预测系统实施例一的结构示意图,包括:
指令执行模块101,用于执行当前指令;
第一缓存模块102,用于获取顺序执行方向上即将执行的预设数量的指令并进行缓存;
跳转类型判断模块103,用于判断缓存的预设数量指令中的第一条是否为跳转指令类型;
第二缓存模块104,用于计算跳转的目标地址,根据所述目标地址获取目标跳转指令并进行缓存;
跳转条件判断模块105,用于判断跳转条件是否达成,如果达成则直接读取缓存的目标跳转指令,否则直接读取缓存的顺序执行方向上预设数量指令中的第二条。
应用本实施例提供的一种指令分支预测系统,执行当前指令后获取顺序执行方向上即将执行的预设数量的指令并进行缓存,并判断缓存的第一条指令是否为跳转指令类型,如果是则计算跳转目标地址并缓存目标跳转指令,当跳转条件达成时直接读取目标跳转指令的缓存实现跳转指令的执行,若跳转条件不能达成则直接读取缓存的顺序执行方向上的第二条指令,当跳转指令被执行时由于无论跳转条件是否达成,后续要执行的指令都已获得可以直接读取缓存执行,通过跳转指令预判、指令预取、指令缓存与直接读取缓存的模式实现了双方向指令分支预测,解决了跳转指令造成的处理器流水线停顿,消除了因为插入分支延迟间隙带来的处理器执行效率降低。
图4示出了本发明指令分支预测系统实施例二的结构示意图,实施例一种的第二缓存模块104具体包括:
计算子模块201,用于计算跳转的目标地址;
指令请求子模块202,用于向处理器的取指令接口发送所述目标地址的请求;
指令接收子模块203,用于接收所述处理器返回的对应于所述目标地址的目标跳转指令;
第二缓存子模块204,用于缓存所述目标跳转指令。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的方法与系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (3)
1.一种指令分支预测方法,其特征在于,包括:
步骤A:执行当前指令,获取顺序执行方向上即将执行的预设数量的指令并进行缓存;
步骤B:判断缓存的预设数量指令中的第一条是否为跳转指令类型,如果是,则执行步骤C,否则返回步骤A;
步骤C:计算跳转的目标地址,向处理器的取指令接口发送所述目标地址的请求;接收所述处理器返回的对应于所述目标地址的目标跳转指令并缓存;
步骤D:判断跳转条件是否达成,如果达成则直接读取缓存的目标跳转指令,否则直接读取缓存的顺序执行方向上预设数量指令中的第二条。
2.根据权利要求1所述的指令分支预测方法,其特征在于,所述顺序执行方向上即将执行的预设数量的指令至少为两条。
3.一种指令分支预测系统,其特征在于,包括:
指令执行模块,用于执行当前指令;
第一缓存模块,用于获取顺序执行方向上即将执行的预设数量的指令并进行缓存;
跳转类型判断模块,用于判断缓存的预设数量指令中的第一条是否为跳转指令类型;
第二缓存模块,用于计算跳转的目标地址,向处理器的取指令接口发送所述目标地址的请求;接收所述处理器返回的对应于所述目标地址的目标跳转指令并缓存;
跳转条件判断模块,用于判断跳转条件是否达成,如果达成则直接读取缓存的目标跳转指令,否则直接读取缓存的顺序执行方向上预设数量指令中的第二条。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510213756.9A CN104793921B (zh) | 2015-04-29 | 2015-04-29 | 一种指令分支预测方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510213756.9A CN104793921B (zh) | 2015-04-29 | 2015-04-29 | 一种指令分支预测方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104793921A CN104793921A (zh) | 2015-07-22 |
CN104793921B true CN104793921B (zh) | 2018-07-31 |
Family
ID=53558738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510213756.9A Active CN104793921B (zh) | 2015-04-29 | 2015-04-29 | 一种指令分支预测方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104793921B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107665125B (zh) * | 2016-07-29 | 2021-03-09 | 北京小米移动软件有限公司 | 执行操作指令的方法及装置 |
CN109101276B (zh) | 2018-08-14 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 在cpu中执行指令的方法 |
CN111176729A (zh) * | 2018-11-13 | 2020-05-19 | 深圳市中兴微电子技术有限公司 | 一种信息处理方法、装置及计算机可读存储介质 |
CN111209043B (zh) * | 2018-11-21 | 2022-07-12 | 华夏芯(北京)通用处理器技术有限公司 | 一种超前指针法实现前端流水线中指令预取的方法 |
CN110825442B (zh) * | 2019-04-30 | 2021-08-06 | 成都海光微电子技术有限公司 | 一种指令预取方法及处理器 |
CN110851182B (zh) * | 2019-10-24 | 2021-12-03 | 珠海市杰理科技股份有限公司 | 指令获取方法、装置、计算机设备和存储介质 |
CN113138798A (zh) * | 2020-01-18 | 2021-07-20 | 佛山市云米电器科技有限公司 | 多场景下的指令执行方法、装置、设备及存储介质 |
CN111538535B (zh) * | 2020-04-28 | 2021-09-21 | 支付宝(杭州)信息技术有限公司 | 一种cpu指令处理方法、控制器和中央处理单元 |
CN113760366B (zh) * | 2021-07-30 | 2024-02-09 | 浪潮电子信息产业股份有限公司 | 一种条件跳转指令的处理方法、系统及相关装置 |
CN113722243A (zh) * | 2021-09-03 | 2021-11-30 | 苏州睿芯集成电路科技有限公司 | 用于直接跳转的超前预测的方法及分支指令追踪高速缓存 |
CN114461579B (zh) * | 2021-12-13 | 2022-09-06 | 杭州加速科技有限公司 | Pattern文件并行读取和动态调度的处理方法、系统及ATE设备 |
CN117093271B (zh) * | 2023-09-06 | 2024-10-08 | 上海耀芯电子科技有限公司 | 一种分支指令的预取方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770358A (zh) * | 2010-02-10 | 2010-07-07 | 北京龙芯中科技术服务中心有限公司 | 微处理器跳转指令分支预测处理系统和方法 |
CN102855121A (zh) * | 2011-06-29 | 2013-01-02 | 上海芯豪微电子有限公司 | 分支处理方法与系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6247122B1 (en) * | 1998-12-02 | 2001-06-12 | Ip-First, L.L.C. | Method and apparatus for performing branch prediction combining static and dynamic branch predictors |
CN103279324B (zh) * | 2013-05-29 | 2015-10-21 | 华为技术有限公司 | 一种将内存中的指令提前预取到高速缓存的方法和装置 |
-
2015
- 2015-04-29 CN CN201510213756.9A patent/CN104793921B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770358A (zh) * | 2010-02-10 | 2010-07-07 | 北京龙芯中科技术服务中心有限公司 | 微处理器跳转指令分支预测处理系统和方法 |
CN102855121A (zh) * | 2011-06-29 | 2013-01-02 | 上海芯豪微电子有限公司 | 分支处理方法与系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104793921A (zh) | 2015-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104793921B (zh) | 一种指令分支预测方法与系统 | |
US10846097B2 (en) | Mispredict recovery apparatus and method for branch and fetch pipelines | |
JP5722396B2 (ja) | 明示的サブルーチンコールの分岐予測動作をエミュレートするための方法および装置 | |
US7882338B2 (en) | Method, system and computer program product for an implicit predicted return from a predicted subroutine | |
WO2008008653A3 (en) | Systems and methods to prioritize a queue | |
JP2005538439A (ja) | データ処理装置におけるパイプライン間の同期 | |
US11163577B2 (en) | Selectively supporting static branch prediction settings only in association with processor-designated types of instructions | |
JP2015502618A5 (zh) | ||
US9582284B2 (en) | Performance of processors is improved by limiting number of branch prediction levels | |
CN106656675B (zh) | 一种传输节点集群的检测方法和装置 | |
WO2006038991A3 (en) | System, apparatus and method for managing predictions of various access types to a memory associated with cache | |
EP2796990A3 (en) | Apparatus and method for supporting multi-modes of processor | |
US6880063B2 (en) | Memory cache bank prediction | |
EP1280052A2 (en) | Branch fetch architecture for reducing branch penalty without branch prediction | |
TW200506718A (en) | Multi-pipe dispatch and execution of complex instructions in a superscalar processor | |
JP2011002961A5 (ja) | 検索システム、検索方法、及びプログラム | |
CN103235715B (zh) | 一种片上系统SoC命令处理的方法、装置及芯片 | |
KR100719420B1 (ko) | 정보 처리 장치 | |
EP1315083A2 (en) | Processor and method of pipelining | |
US20070083734A1 (en) | Queue design supporting dependency checking and issue for simd instructions within a general purpose processor | |
US8266414B2 (en) | Method for executing an instruction loop and a device having instruction loop execution capabilities | |
DE602004024301D1 (de) | Systemsteuerung, Vorausholungsverfahren und Informationsverarbeitungsgerät zur spekulativen Abruf in Abhängigkeit einer Hardwaremittelnverfügbarkeit. | |
KR20120090667A (ko) | 재구성 가능 프로세서 및 구동 제어 방법 | |
CN103324522B (zh) | 对从各服务器抓取数据的任务进行调度的方法和设备 | |
CN102508641A (zh) | 低成本的程序计数器数据传输装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |