CN104793921A - 一种指令分支预测方法与系统 - Google Patents

一种指令分支预测方法与系统 Download PDF

Info

Publication number
CN104793921A
CN104793921A CN201510213756.9A CN201510213756A CN104793921A CN 104793921 A CN104793921 A CN 104793921A CN 201510213756 A CN201510213756 A CN 201510213756A CN 104793921 A CN104793921 A CN 104793921A
Authority
CN
China
Prior art keywords
instruction
destination address
buffer memory
jump
jump instruction
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
CN201510213756.9A
Other languages
English (en)
Other versions
CN104793921B (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.)
SHENZHEN CHIPSBANK TECHNOLOGY Co Ltd
Original Assignee
SHENZHEN CHIPSBANK TECHNOLOGY Co Ltd
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 SHENZHEN CHIPSBANK TECHNOLOGY Co Ltd filed Critical SHENZHEN CHIPSBANK TECHNOLOGY Co Ltd
Priority to CN201510213756.9A priority Critical patent/CN104793921B/zh
Publication of CN104793921A publication Critical patent/CN104793921A/zh
Application granted granted Critical
Publication of CN104793921B publication Critical patent/CN104793921B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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 (5)

1.一种指令分支预测方法,其特征在于,包括:
步骤A:执行当前指令,获取顺序执行方向上即将执行的预设数量的指令并进行缓存;
步骤B:判断缓存的预设数量指令中的第一条是否为跳转指令类型,如果是,则执行步骤C,否则返回步骤A;
步骤C:计算跳转的目标地址,根据所述目标地址获取目标跳转指令并进行缓存;
步骤D:判断跳转条件是否达成,如果达成则直接读取缓存的目标跳转指令,否则直接读取缓存的顺序执行方向上预设数量指令中的第二条。
2.根据权利要求1所述的指令分支预测方法,其特征在于,所述顺序执行方向上即将执行的预设数量的指令至少为两条。
3.根据权利要求2所述的指令分支预测方法,其特征在于,根据所述目标地址获取目标跳转指令包括:
向处理器的取指令接口发送所述目标地址的请求;
接收所述处理器返回的对应于所述目标地址的目标跳转指令。
4.一种指令分支预测系统,其特征在于,包括:
指令执行模块,用于执行当前指令;
第一缓存模块,用于获取顺序执行方向上即将执行的预设数量的指令并进行缓存;
跳转类型判断模块,用于判断缓存的预设数量指令中的第一条是否为跳转指令类型;
第二缓存模块,用于计算跳转的目标地址,根据所述目标地址获取目标跳转指令并进行缓存;
跳转条件判断模块,用于判断跳转条件是否达成,如果达成则直接读取缓存的目标跳转指令,否则直接读取缓存的顺序执行方向上预设数量指令中的第二条。
5.根据权利要求4所述的指令分支预测系统,其特征在于,所述第二缓存模块包括:
计算子模块,用于计算跳转的目标地址;
指令请求子模块,用于向处理器的取指令接口发送所述目标地址的请求;
指令接收子模块,用于接收所述处理器返回的对应于所述目标地址的目标跳转指令;
第二缓存子模块,用于缓存所述目标跳转指令。
CN201510213756.9A 2015-04-29 2015-04-29 一种指令分支预测方法与系统 Active CN104793921B (zh)

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 true CN104793921A (zh) 2015-07-22
CN104793921B 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)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107665125A (zh) * 2016-07-29 2018-02-06 北京小米移动软件有限公司 执行操作指令的方法及装置
CN109101276A (zh) * 2018-08-14 2018-12-28 阿里巴巴集团控股有限公司 在cpu中执行指令的方法
CN110825442A (zh) * 2019-04-30 2020-02-21 海光信息技术有限公司 一种指令预取方法及处理器
CN110851182A (zh) * 2019-10-24 2020-02-28 珠海市杰理科技股份有限公司 指令获取方法、装置、计算机设备和存储介质
CN111176729A (zh) * 2018-11-13 2020-05-19 深圳市中兴微电子技术有限公司 一种信息处理方法、装置及计算机可读存储介质
CN111209043A (zh) * 2018-11-21 2020-05-29 华夏芯(北京)通用处理器技术有限公司 一种超前指针法实现前端流水线中指令预取的方法
CN111538535A (zh) * 2020-04-28 2020-08-14 支付宝(杭州)信息技术有限公司 一种cpu指令处理方法、控制器和中央处理单元
CN113138798A (zh) * 2020-01-18 2021-07-20 佛山市云米电器科技有限公司 多场景下的指令执行方法、装置、设备及存储介质
CN113760366A (zh) * 2021-07-30 2021-12-07 浪潮电子信息产业股份有限公司 一种条件跳转指令的处理方法、系统及相关装置
CN114461579A (zh) * 2021-12-13 2022-05-10 杭州加速科技有限公司 Pattern文件并行读取和动态调度的处理方法、系统及ATE设备
WO2023029912A1 (zh) * 2021-09-03 2023-03-09 苏州睿芯集成电路科技有限公司 用于直接跳转的超前预测的方法及分支指令追踪高速缓存
CN117093271A (zh) * 2023-09-06 2023-11-21 上海耀芯电子科技有限公司 一种分支指令的预取方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
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
CN101770358A (zh) * 2010-02-10 2010-07-07 北京龙芯中科技术服务中心有限公司 微处理器跳转指令分支预测处理系统和方法
CN102855121A (zh) * 2011-06-29 2013-01-02 上海芯豪微电子有限公司 分支处理方法与系统
CN103279324A (zh) * 2013-05-29 2013-09-04 华为技术有限公司 一种将内存中的指令提前预取到高速缓存的方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
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
CN101770358A (zh) * 2010-02-10 2010-07-07 北京龙芯中科技术服务中心有限公司 微处理器跳转指令分支预测处理系统和方法
CN102855121A (zh) * 2011-06-29 2013-01-02 上海芯豪微电子有限公司 分支处理方法与系统
CN103279324A (zh) * 2013-05-29 2013-09-04 华为技术有限公司 一种将内存中的指令提前预取到高速缓存的方法和装置

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107665125B (zh) * 2016-07-29 2021-03-09 北京小米移动软件有限公司 执行操作指令的方法及装置
CN107665125A (zh) * 2016-07-29 2018-02-06 北京小米移动软件有限公司 执行操作指令的方法及装置
CN109101276A (zh) * 2018-08-14 2018-12-28 阿里巴巴集团控股有限公司 在cpu中执行指令的方法
US11579885B2 (en) 2018-08-14 2023-02-14 Advanced New Technologies Co., Ltd. Method for replenishing a thread queue with a target instruction of a jump instruction
CN111176729A (zh) * 2018-11-13 2020-05-19 深圳市中兴微电子技术有限公司 一种信息处理方法、装置及计算机可读存储介质
CN111209043A (zh) * 2018-11-21 2020-05-29 华夏芯(北京)通用处理器技术有限公司 一种超前指针法实现前端流水线中指令预取的方法
CN111209043B (zh) * 2018-11-21 2022-07-12 华夏芯(北京)通用处理器技术有限公司 一种超前指针法实现前端流水线中指令预取的方法
CN110825442A (zh) * 2019-04-30 2020-02-21 海光信息技术有限公司 一种指令预取方法及处理器
CN110851182B (zh) * 2019-10-24 2021-12-03 珠海市杰理科技股份有限公司 指令获取方法、装置、计算机设备和存储介质
CN110851182A (zh) * 2019-10-24 2020-02-28 珠海市杰理科技股份有限公司 指令获取方法、装置、计算机设备和存储介质
CN113138798A (zh) * 2020-01-18 2021-07-20 佛山市云米电器科技有限公司 多场景下的指令执行方法、装置、设备及存储介质
WO2021218633A1 (zh) * 2020-04-28 2021-11-04 支付宝(杭州)信息技术有限公司 Cpu指令处理方法、控制器和中央处理单元
CN111538535B (zh) * 2020-04-28 2021-09-21 支付宝(杭州)信息技术有限公司 一种cpu指令处理方法、控制器和中央处理单元
CN111538535A (zh) * 2020-04-28 2020-08-14 支付宝(杭州)信息技术有限公司 一种cpu指令处理方法、控制器和中央处理单元
CN113760366A (zh) * 2021-07-30 2021-12-07 浪潮电子信息产业股份有限公司 一种条件跳转指令的处理方法、系统及相关装置
CN113760366B (zh) * 2021-07-30 2024-02-09 浪潮电子信息产业股份有限公司 一种条件跳转指令的处理方法、系统及相关装置
WO2023029912A1 (zh) * 2021-09-03 2023-03-09 苏州睿芯集成电路科技有限公司 用于直接跳转的超前预测的方法及分支指令追踪高速缓存
CN114461579A (zh) * 2021-12-13 2022-05-10 杭州加速科技有限公司 Pattern文件并行读取和动态调度的处理方法、系统及ATE设备
CN114461579B (zh) * 2021-12-13 2022-09-06 杭州加速科技有限公司 Pattern文件并行读取和动态调度的处理方法、系统及ATE设备
CN117093271A (zh) * 2023-09-06 2023-11-21 上海耀芯电子科技有限公司 一种分支指令的预取方法及装置
CN117093271B (zh) * 2023-09-06 2024-10-08 上海耀芯电子科技有限公司 一种分支指令的预取方法及装置

Also Published As

Publication number Publication date
CN104793921B (zh) 2018-07-31

Similar Documents

Publication Publication Date Title
CN104793921A (zh) 一种指令分支预测方法与系统
JP6796468B2 (ja) 分岐予測器
US7478228B2 (en) Apparatus for generating return address predictions for implicit and explicit subroutine calls
KR101804908B1 (ko) 캐시 점유도 결정 및 명령어 스케줄링을 위한 방법 및 장치
CA1227877A (en) Instruction prefetch operation for branch and branch- with-execute instructions
AU2005200812A1 (en) Vector processing apparatus with overtaking function
CN104407880A (zh) 支持硬件非对齐存储访问的risc处理器加载/存储单元
US9582284B2 (en) Performance of processors is improved by limiting number of branch prediction levels
RU2583744C2 (ru) Устройство и способ связывания операций в памяти
US11163577B2 (en) Selectively supporting static branch prediction settings only in association with processor-designated types of instructions
CN110609796A (zh) 用于存储系统中预取的方法、设备和计算机程序产品
WO2023029912A1 (zh) 用于直接跳转的超前预测的方法及分支指令追踪高速缓存
US11231933B2 (en) Processor with variable pre-fetch threshold
KR20220040500A (ko) 명령어 파이프라인 처리 방법, 시스템, 디바이스 및 컴퓨터 저장 매체
US9411565B1 (en) Method of splitting register live ranges
CN115629806A (zh) 一种处理指令的方法、系统、设备和存储介质
CN103235715B (zh) 一种片上系统SoC命令处理的方法、装置及芯片
CN108037951B (zh) 一种dtp处理器的中断快速切换方法及装置
CA2367324A1 (en) Re-order buffer managing method and processor
CN114518900A (zh) 一种应用于多核处理器的指令处理方法和多核处理器
KR101239272B1 (ko) 하드웨어 프리페치 어드레스 및 산술 연산 값을 계산하기 위한 듀얼 함수 가산기
CN101399978B (zh) 硬件解码器中参考帧数据的读取方法及其装置
US20190361810A1 (en) Prefetching data based on register-activity patterns
US20210173653A1 (en) Instruction prefetching method, device and medium
CN108429884A (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