CN114721725B - 一种分支指令执行方法、装置、电子设备及存储介质 - Google Patents

一种分支指令执行方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114721725B
CN114721725B CN202210618059.1A CN202210618059A CN114721725B CN 114721725 B CN114721725 B CN 114721725B CN 202210618059 A CN202210618059 A CN 202210618059A CN 114721725 B CN114721725 B CN 114721725B
Authority
CN
China
Prior art keywords
branch
branch instruction
predictor
prediction
attribute
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
Application number
CN202210618059.1A
Other languages
English (en)
Other versions
CN114721725A (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.)
Phytium Technology Co Ltd
Original Assignee
Phytium 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 Phytium Technology Co Ltd filed Critical Phytium Technology Co Ltd
Priority to CN202210618059.1A priority Critical patent/CN114721725B/zh
Publication of CN114721725A publication Critical patent/CN114721725A/zh
Application granted granted Critical
Publication of CN114721725B publication Critical patent/CN114721725B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

本公开提供了一种分支指令执行方法、装置、电子设备及存储介质,包括:确认分支指令对应的第一分支的第一属性;响应于所述第一分支的第一属性满足第一属性条件,则不访问分支预测信息队列(BPIQ),执行所述分支指令;其中,所述第一分支的第一属性包括所述第一分支的预测准确率、所述第一分支对应的预测器状态,或者所述第一分支的类型中之一;可以缩短分支指令执行的延迟。

Description

一种分支指令执行方法、装置、电子设备及存储介质
技术领域
本公开涉及处理器技术领域,尤其涉及一种分支指令执行方法、装置、电子设备及存储介质。
背景技术
现代处理器一般采用流水线(Pipeline)技术并行处理指令,以加速指令处理效率。在处理分支指令时,为避免等待分支指令执行结果以决定分支方向的情况,大多数现代处理器采用分支预测(Branch Prediction)技术。通过分支预测技术可预测分支指令的包括分支方向等的分支预测结果,从而推动处理器进行下一步取指操作,避免由于等待分支指令的预测结果(或执行结果)而导致的流水线延迟,因此,如何提升分支执行的效率亟需解决。
发明内容
本公开提供了一种分支指令执行方法、装置、电子设备及存储介质,以至少解决现有技术中存在的以上技术问题。
根据本公开的第一方面,提供一种分支指令执行方法,所述方法包括:
确认分支指令对应的第一分支的第一属性;
响应于所述第一分支的第一属性满足第一属性条件,则不访问分支预测信息队列(Branch Prediction Information Queue,BPIQ),执行所述分支指令;
其中,所述第一分支的第一属性包括所述第一分支的预测准确率、所述第一分支对应的预测器状态,或者所述第一分支的类型中之一。
上述方案中,所述确认分支指令对应的第一分支的第一属性,包括:
基于第一分支的历史预测结果,确认所述第一分支的预测准确率。
上述方案中,所述确认分支指令对应的第一分支的第一属性,包括:
确认所述第一分支对应的预测器状态是否为饱和状态。
上述方案中,所述响应于所述第一分支的第一属性满足第一属性条件,则不访问BPIQ,执行所述分支指令,包括:
响应于所述分支指令对应的第一分支的预测准确率大于第一阈值,或者所述分支指令对应的预测器为饱和状态,或者,所述分支指令对应的第一分支满足第一类型,则不访问BPIQ,执行所述分支指令。
上述方案中,所述方法还包括:
响应于所述第一分支的第一属性不满足所述第一属性条件,则访问BPIQ;
基于所述BPIQ获取预测器预测所述第一分支的第一参数;
基于所述预测器的第一参数,对所述分支指令进行预测,获得第一预测结果;
和/或,基于所述第一预测结果更新所述预测器。
上述方案中,所述执行所述分支指令之后,所述方法还包括:
确认所述分支指令的第二预测结果;
响应于所述第二预测结果为预测成功,则不更新预测器。
上述方案中,所述方法还包括:
响应于所述第二预测结果为预测失败,则访问BPIQ;
基于所述BPIQ获取预测器预测所述第一分支的第二参数;
基于所述预测器的第二参数,对所述分支指令进行预测,获得第三预测结果。
上述方案中,所述方法还包括:
基于所述第二预测结果,确认所述第一分支预测成功时所对应的分支信息;
响应于基于所述BPIQ获取预测器预测所述第一分支的第二参数,则基于所述分支信息,更新所述预测器的参数;
和/或,基于所述分支信息校正所述第三预测结果。
根据本公开的第二方面,提供了一种分支指令执行装置,包括:
确认单元,用于确认分支指令对应的第一分支的第一属性;
执行单元,用于响应于所述第一分支的第一属性满足第一属性条件,则不访问BPIQ,执行所述分支指令;
其中,所述第一分支的第一属性包括所述第一分支的预测准确率、所述第一分支对应的预测器状态,或者所述第一分支的类型中之一。
根据本公开的第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开所述的方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本公开所述的方法。
本公开的分支指令执行方法,通过确认分支指令对应的第一分支的第一属性;响应于所述第一分支的第一属性满足第一属性条件,则不访问BPIQ,执行所述分支指令;其中,所述第一分支的第一属性包括所述第一分支的预测准确率、所述第一分支对应的预测器状态,或者所述第一分支的类型中之一;可以在第一分支的第一属性满足第一属性条件时,减少对BPIQ的访问,缩短分支指令执行的延迟,减少分支指令执行时所需的功耗。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
在附图中,相同或对应的标号表示相同或对应的部分。
图1示出了相关技术中执行分支指令的可选示意图;
图2示出了本公开实施例提供的分支指令执行方法的一种可选流程示意图;
图3示出了本公开实施例提供的分支指令执行方法的另一种可选流程示意图;
图4示出了本公开实施例提供的分支指令执行方法的可选示意图;
图5示出了本公开实施例提供的分支指令执行装置的可选结构示意图;
图6示出了本公开实施例提供的电子设备的一种组成结构示意图。
具体实施方式
为使本公开的目的、特征、优点能够更加的明显和易懂,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而非全部实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解, “一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本公开实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本公开实施例的目的,不是旨在限制本公开。
应理解,在本公开的各种实施例中,各实施过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)分支(branch)是指程序运行时需要改变的节点。分支包括无条件分支和条件分支(有条件分支),其中无条件分支只需要中央处理器(CPU)按指令顺序执行,而条件分支则必须根据处理结果再决定程序运行方向是否改变。因此需要分支预测处理的是条件分支。
由于程序中的条件分支是根据程序指令在流水线处理后结果再执行的,所以当CPU等待指令结果时,流水线的前级电路也处于空闲状态等待分支指令,这样必然出现时钟周期的浪费。如果CPU能在前条指令结果出来之前就能预测到分支是否转移,那么就可以提前执行相应的指令,这样就避免了流水线的空闲等待,相应也就提高了CPU的运算速度。但另一方面,一旦前指令结果出来后证明分支预测错误,那么就必须将已经装入流水线执行的指令和结果全部清除,然后再装入正确指令重新处理,这样就比不进行分支预测等待结果后再执行新指令还慢了。
2)分支预测信息队列,每一个预测块占用一项保留预测信息,便于在出现分支执行部件刷线(branch excute flush,bx flush)或者提交部件刷线(commit flush,ctflush)时查找所需的分支预测状态的全部信息,来恢复预测器状态;在分支预测错误的时候也会通过BPIQ找到分支预测状态的信息来更新预测器。
图1示出了相关技术中执行分支指令的可选示意图。
如图1所示,在执行分支指令时,需要提前访问BPIQ,便于更新预测器的信息(或者状态、参数),或者在分支预测错误时,可以去恢复预测器的状态(或参数);具体的BPIQ由SRAM搭建,访问需要一拍的时间,执行分支指令时在I2站发起对BPIQ的访问,E1站读出数据。但存在50%的分支出现预测错误的概率极低,更新预测器的作用也不明显,存在了浪费功耗的问题。
因此,针对相关技术中分支指令执行过程中存在的缺陷,本公开提供一种分支指令执行方法,以至少解决上述部分或全部技术问题,在分支指令出现预测错误的可能非常低,或者预测器已经饱和的情况下,不需要去访问BPIQ来更新预测器,从而实现降低功耗的效果。
图2示出了本公开实施例提供的分支指令执行方法的一种可选流程示意图,将根据各个步骤进行说明。
步骤S101,确认分支指令对应的第一分支的第一属性。
在一些实施例中,分支指令执行装置(以下简称装置)确认所述分支指令对应的第一分支的第一属性。其中,所述分支指令包括电子设备内全部分支指令(数量大于或等于2)中任一个分支指令;所述第一属性可以包括所述第一分支的预测准确率、所述第一分支对应的预测器状态,或者所述第一分支的类型中之一。
具体实施时,所述装置基于第一分支的历史预测结果,确认所述第一分支的预测准确率。可选的,所述装置可以确定第二阈值周期内的历史预测结果中,预测结果为预测正确的周期数量除以所述第二阈值,所得到的结果为所述第一分支的预测准确率;所述第二阈值可以基于实际需求或实验结果设置。
或者,具体实施时,所述装置还可以确定所述第一分支对应的预测器的状态是否为饱和状态。具体的,以2位饱和计数器为例,当计数器的数值为0时,确认分支不跳转达到饱和状态,当计数器的数值为3时,确认分支跳转达到饱和状态。
或者,具体实施时,所述装置还可以基于确认所述第一分支的类型。具体的,所述装置可以确认所述第一分支是否为无条件直接分支或Pop分支。
步骤S102,响应于所述第一分支的第一属性满足第一属性条件,则不访问分支预测信息队列BPIQ,执行所述分支指令。
在一些实施例中,所述装置响应于所述第一分支的第一属性满足第一属性条件,则不访问分支预测信息队列,执行所述分支指令。
在一些实施例中,所述装置响应于所述分支指令对应的第一分支的预测准确率大于第一阈值,则不访问BPIQ,执行所述分支指令。其中,所述第一阈值可以根据实际需求,或实验结果设置。
在另一些实施例中,所述装置响应于所述分支指令对应的预测器为饱和状态,则不访问BPIQ,执行所述分支指令。
在再一些实施例中,所述装置响应于所述分支指令对应的第一分支满足第一类型,则不访问BPIQ,执行所述分支指令。其中,所述第一类型可以包括无条件分支或Pop分支。进一步,所述装置响应于所述分支指令对应的第一分支为无条件分支或Pop分支,则不访问BPIQ,执行所述分支指令。
具体实施时,所述装置可以基于预测器当前的状态或者预测所述第一分支时的状态,执行所述分支指令。其中,所述预测器当前的状态可以是所述预测器当前的参数;进一步,所述预测所述第一分支时的状态,可以是所述预测器预测所述第一分支时的参数。
在一些可选实施例中,所述装置还可以执行如下操作:
步骤S103,响应于所述第一分支的第一属性不满足所述第一属性条件,则访问BPIQ。
在一些实施例中,所述装置响应于所述第一分支的第一属性不满足所述第一属性条件,则访问BPIQ;基于所述BPIQ获取预测器预测所述第一分支的第一参数(或者第一状态);基于所述预测器的第一参数,对所述分支指令进行预测,获得第一预测结果;和/或,基于所述第一预测结果更新所述预测器。
如此,通过本公开实施例提供的分支指令执行方法,通过确认分支指令对应的第一分支的第一属性;响应于所述第一分支的第一属性满足第一属性条件,则不访问分支预测信息队列BPIQ,执行所述分支指令;其中,所述第一分支的第一属性包括所述第一分支的预测准确率、所述第一分支对应的预测器状态,或者所述第一分支的类型中之一;可以在执行分支指令时,对于预测准确率高的分支或者预测器饱和的情况下,可以不访问BPIQ,减少对BPIQ的访问,缩短分支指令执行的延迟,减少分支指令执行时所需的功耗。
图3示出了本公开实施例提供的分支指令执行方法的另一种可选流程示意图,图4示出了本公开实施例提供的分支指令执行方法的可选示意图,将根据各个步骤进行说明。
步骤S201,确认分支指令对应的第一分支的第一属性。
在一些实施例中,分支指令执行装置(以下简称装置)确认所述分支指令对应的第一分支的第一属性。其中,所述第一属性可以包括所述第一分支的预测准确率、所述第一分支对应的预测器状态,或者所述第一分支的类型中之一。
具体实施时,所述装置基于第一分支的历史预测结果,确认所述第一分支的预测准确率。可选的,所述装置可以确定第二阈值周期内的历史预测结果中,预测结果为预测正确的周期数量除以所述第二阈值,所得到的结果为所述第一分支的预测准确率。
或者,具体实施时,所述装置还可以确定所述第一分支对应的预测器的状态是否为饱和状态。具体的,以2位饱和计数器为例,当计数器的数值为0时,确认分支不跳转达到饱和状态,当计数器的数值为3时,确认分支跳转达到饱和状态。
或者,具体实施时,所述装置还可以基于确认所述第一分支的类型。具体的,所述装置可以确认所述第一分支是否为无条件直接分支或Pop分支。
步骤S202,响应于所述第一分支的第一属性不满足所述第一属性条件,则访问BPIQ。
在一些实施例中,所述装置响应于所述第一分支的第一属性不满足所述第一属性条件,则访问BPIQ;基于所述BPIQ获取预测器预测所述第一分支的第一参数(或者第一状态);基于所述预测器的第一参数,对所述分支指令进行预测,获得第一预测结果;和/或,基于所述第一预测结果更新所述预测器。可选的,所述装置可以基于图1执行步骤S202。
步骤S203,响应于所述第一分支的第一属性满足第一属性条件,则不访问分支预测信息队列,执行所述分支指令。
在一些实施例中,所述装置响应于所述第一分支的第一属性满足第一属性条件,则不访问分支预测信息队列,执行所述分支指令。
在一些实施例中,所述装置响应于所述分支指令对应的第一分支的预测准确率大于第一阈值,则不访问BPIQ,执行所述分支指令。
在另一些实施例中,所述装置响应于所述分支指令对应的预测器为饱和状态,则不访问BPIQ,执行所述分支指令。
在再一些实施例中,所述装置响应于所述分支指令对应的第一分支满足第一类型,则不访问BPIQ,执行所述分支指令。其中,所述第一类型可以包括无条件分支或Pop分支。进一步,所述装置响应于所述分支指令对应的第一分支为无条件分支或Pop分支,则不访问BPIQ,执行所述分支指令。
具体实施时,所述装置可以基于预测器当前的状态或者预测所述第一分支时的状态,执行所述分支指令。其中,所述预测器当前的状态可以是所述预测器当前的参数;进一步,所述预测所述第一分支时的状态,可以是所述预测器预测所述第一分支时的参数。
步骤S204,确认分支指令的第二预测结果。
在一些实施例中,所述装置确认所述分支指令的第二预测结果,若所述第二预测结果为预测成功,则执行步骤S205;或者,若所述第二预测结果为预测失败,则执行步骤S206。
步骤S205,响应于所述第二预测结果为预测成功,则不更新预测器。
在一些实施例中,响应于所述第二预测结果为预测成功,则说明第一分支仍然具备较高的预测准确度(大于第一阈值),则不更新所述预测器。可选的,所述不更新所述预测器可以包括不更新所述预测器的参数(或状态),或者更新所述预测器的数据用于重新训练所述预测器。
步骤S206,响应于所述第二预测结果为预测失败,则访问BPIQ。
在一些实施例中,所述装置响应于所述第二预测结果为预测失败,则访问BPIQ;基于所述BPIQ获取预测器预测所述第一分支的第二参数;基于所述预测器的第二参数,对所述分支指令进行预测,获得第三预测结果。同时,所述装置还可以基于所述第二预测结果,确认所述第一分支预测成功时所对应的分支信息;响应于基于所述BPIQ获取预测器预测所述第一分支的第二参数,则基于所述分支信息,更新所述预测器的参数;和/或,基于所述分支信息校正所述第三预测结果。其中,所述分支信息可以包括预测正确时第一分支的地址方向。
具体实施时,如图4所示,在计算出第一分支的目标地址和方向(预测失败的目标地址和方向)时,让所述分支指令从E1站回到I2站,重新发起对BPIQ的访问,获得预测器在预测所述第一分支时的状态(第二参数),同时,正确的分支信息也会在E2站进行重演(replay);正确的分支信息在E2站经过一拍之后重新回到E1站(即E3站),当所述分支指令(或第一分支)再次走到E2站时,根据正确的分支信息更新所述预测器,基于更新后的所述预测器,校正第三预测结果(即基于所述预测器校正所述预测器下一次预测该分支指令的结果)。
在一些可选实施例中,所述装置还可以对判断预测准确率的计数器进行清零,重新记录所述第一分支在各周期内的预测结果,进一步,所述第一分支在第二阈值周期内的预测准确度也需要重新确定,若所述第一分支的第一属性不满足第一属性条件,则需要访问BPIQ。
如此,通过本公开实施例提供的分支指令执行方法,通过确认分支指令对应的第一分支的第一属性;响应于所述第一分支的第一属性满足第一属性条件,则不访问分支预测信息队列BPIQ,执行所述分支指令;其中,所述第一分支的第一属性包括所述第一分支的预测准确率、所述第一分支对应的预测器状态,或者所述第一分支的类型中之一;可以在执行分支指令时,对于预测准确率高的分支或者预测器饱和的情况下,可以不访问BPIQ,减少对BPIQ的访问,缩短分支指令执行的延迟,减少分支指令执行时所需的功耗;此外,在预测结果为预测失败(即预测出错)时,预测器只需要回到错误分支的状态,而不是重新开始训练预测器。
图5示出了本公开实施例提供的分支指令执行装置的可选结构示意图,将根据各个部分进行说明。
在一些实施例中,分支指令执行装置300包括:确认单元301和执行单元302。
所述确认单元301,用于确认分支指令对应的第一分支的第一属性;
所述执行单元302,用于响应于所述第一分支的第一属性满足第一属性条件,则不访问分支预测信息队列BPIQ,执行所述分支指令;
其中,所述第一分支的第一属性包括所述第一分支的预测准确率、所述第一分支对应的预测器状态,或者所述第一分支的类型中之一。
所述确认单元301,具体用于基于第一分支的历史预测结果,确认所述第一分支的预测准确率。
所述确认单元301,具体用于确认所述第一分支对应的预测器状态是否为饱和状态。
所述执行单元302,具体用于响应于所述分支指令对应的第一分支的预测准确率大于第一阈值,或者所述分支指令对应的预测器为饱和状态,或者,所述分支指令对应的第一分支满足第一类型,则不访问BPIQ,执行所述分支指令。
所述执行单元302,具体用于响应于所述第一分支的第一属性不满足所述第一属性条件,则访问BPIQ;基于所述BPIQ获取预测器预测所述第一分支的第一参数;基于所述预测器的第一参数,对所述分支指令进行预测,获得第一预测结果;和/或,基于所述第一预测结果更新所述预测器。
所述执行单元302,在执行所述分支指令之后,还用于确认所述分支指令的第二预测结果;响应于所述第二预测结果为预测成功,则不更新预测器。
所述执行单元302,还用于响应于所述第二预测结果为预测失败,则访问BPIQ;基于所述BPIQ获取预测器预测所述第一分支的第二参数;基于所述预测器的第二参数,对所述分支指令进行预测,获得第三预测结果。
所述执行单元302,还用于基于所述第二预测结果,确认所述第一分支预测成功时所对应的分支信息;响应于基于所述BPIQ获取预测器预测所述第一分支的第二参数,则基于所述分支信息,更新所述预测器的参数;和/或,基于所述分支信息校正所述第三预测结果。
需要说明的是,自第一台通用电子计算机问世以来,计算机技术在几十年间取得了飞速的发展,计算机技术的飞速发展得益于计算机体系结构的改进以及计算机生产技术的发展。计算机生产技术对计算机技术的发展的贡献一直是稳定的;然而,由于计算机体系结构经历几十年的改进,使得计算机体系结构的改进空间愈发狭小,因此针对计算机体系结构的任意小的改进都将对处理器的性能和计算机技术的发展带来较明显的影响。
根据本公开的实施例,本公开还提供了一种电子设备和一种可读存储介质。
下面说明本公开实施例提供的电子设备的示例性应用,本公开实施例提供的电子设备可以实施为电子设备,所述电子设备可以是服务器或终端设备。
服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端设备以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本公开实施例在此不做限制。
参见图6,图6是本公开实施例提供的电子设备400的一种组成结构示意图,图6所示的电子设备400包括:至少一个处理器410、存储器450和总线440;电子设备400中的各个组件通过总线440耦合在一起。可理解,总线440用于实现这些组件之间的连接通信。总线440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线440。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口430包括使得能够呈现媒体内容的一个或多个输出装置,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器450中存储有用于实现本公开实施例提供的分支指令执行方法的可执行指令,分支指令执行方法可由图5所示的分支指令执行装置301实现;存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器 410的一个或多个存储设备。
在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集。
存储在存储器450中的分支指令执行装置300,其可以是程序和插件等形式的软件,包括以下软件模块:确认单元301和执行单元302,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
所述确认单元301,用于确认分支指令对应的第一分支的第一属性。
所述执行单元302,用于响应于所述第一分支的第一属性满足第一属性条件,则不访问分支预测信息队列BPIQ,执行所述分支指令。
在一些实施例中,电子设备400还可以包括:
操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等。
本公开实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本公开实施例提供的分支指令执行方法,例如,如图2至图3示出的分支指令执行方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
本公开实施例提供一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现本公开所述的分支指令执行方法。
以上,仅为本公开的实施例而已,并非用于限定本公开的保护范围。凡在本公开的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本公开的保护范围之内。

Claims (10)

1.一种分支指令执行方法,其特征在于,应用于分支指令执行阶段,所述方法包括:
分支指令执行装置确认分支指令对应的第一分支的第一属性;
响应于所述第一分支的第一属性满足第一属性条件,则不访问分支预测信息队列BPIQ,执行所述分支指令;
其中,所述第一分支的第一属性包括所述第一分支的预测准确率、所述第一分支对应的预测器状态,或者所述第一分支的类型中之一;所述响应于所述第一分支的第一属性满足第一属性条件,则不访问分支预测信息队列BPIQ,执行所述分支指令,包括:
响应于所述分支指令对应的第一分支的预测准确率大于第一阈值,或者所述分支指令对应的预测器为饱和状态,或者,所述分支指令对应的第一分支满足第一类型,则不访问BPIQ,执行所述分支指令。
2.根据权利要求1所述的方法,其特征在于,所述确认分支指令对应的第一分支的第一属性,包括:
基于第一分支的历史预测结果,确认所述第一分支的预测准确率。
3.根据权利要求1所述的方法,其特征在于,所述确认分支指令对应的第一分支的第一属性,包括:
确认所述第一分支对应的预测器状态是否为饱和状态。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于所述第一分支的第一属性不满足所述第一属性条件,则访问BPIQ;
基于所述BPIQ获取预测器预测所述第一分支的第一参数;
基于所述预测器的第一参数,对所述分支指令进行预测,获得第一预测结果;
和/或,基于第一预测结果更新所述预测器。
5.根据权利要求1所述的方法,其特征在于,所述执行所述分支指令之后,所述方法还包括:
确认所述分支指令的第二预测结果;
响应于所述第二预测结果为预测成功,则不更新预测器。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
响应于所述第二预测结果为预测失败,则访问BPIQ;
基于所述BPIQ获取预测器预测所述第一分支的第二参数;
基于所述预测器的第二参数,对所述分支指令进行预测,获得第三预测结果。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
基于所述第二预测结果,确认所述第一分支预测成功时所对应的分支信息;
响应于基于所述BPIQ获取预测器预测所述第一分支的第二参数,则基于所述分支信息,更新所述预测器的参数;
和/或,基于所述分支信息校正所述第三预测结果。
8.一种分支指令执行装置,其特征在于,应用于分支指令执行阶段,所述装置包括:
确认单元,用于确认分支指令对应的第一分支的第一属性;
执行单元,用于响应于所述第一分支的第一属性满足第一属性条件,则不访问分支预测信息队列BPIQ,执行所述分支指令;
其中,所述第一分支的第一属性包括所述第一分支的预测准确率、所述第一分支对应的预测器状态,或者所述第一分支的类型中之一;所述执行单元具体用于响应于所述分支指令对应的第一分支的预测准确率大于第一阈值,或者所述分支指令对应的预测器为饱和状态,或者,所述分支指令对应的第一分支满足第一类型,则不访问BPIQ,执行所述分支指令。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行根据权利要求1-7中任一项所述的方法。
CN202210618059.1A 2022-06-02 2022-06-02 一种分支指令执行方法、装置、电子设备及存储介质 Active CN114721725B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210618059.1A CN114721725B (zh) 2022-06-02 2022-06-02 一种分支指令执行方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210618059.1A CN114721725B (zh) 2022-06-02 2022-06-02 一种分支指令执行方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN114721725A CN114721725A (zh) 2022-07-08
CN114721725B true CN114721725B (zh) 2022-09-23

Family

ID=82233121

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210618059.1A Active CN114721725B (zh) 2022-06-02 2022-06-02 一种分支指令执行方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114721725B (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8099586B2 (en) * 2008-12-30 2012-01-17 Oracle America, Inc. Branch misprediction recovery mechanism for microprocessors
JP2013058135A (ja) * 2011-09-09 2013-03-28 Ritsumeikan 分岐予測器及びプロセッサ
CN106406823B (zh) * 2016-10-10 2019-07-05 上海兆芯集成电路有限公司 分支预测器和用于操作分支预测器的方法
US11526360B2 (en) * 2018-11-20 2022-12-13 International Business Machines Corporation Adaptive utilization mechanism for a first-line defense branch predictor

Also Published As

Publication number Publication date
CN114721725A (zh) 2022-07-08

Similar Documents

Publication Publication Date Title
CN104423929B (zh) 一种分支预测方法及相关装置
JP2011070256A (ja) デバッガおよびプログラム
CN107291481B (zh) 一种组件更新方法、装置和系统
CN110516789B (zh) 卷积网络加速器中指令集的处理方法、装置及相关设备
CN109308191B (zh) 分支预测方法及装置
WO2020199058A1 (zh) 分支指令的处理方法、分支预测器及处理器
CN110162344B (zh) 一种隔离限流的方法、装置、计算机设备及可读存储介质
EP3819758A2 (en) Instruction executing method and apparatus, electronic device, and computer-readable storage medium
US9652245B2 (en) Branch prediction for indirect jumps by hashing current and previous branch instruction addresses
CN107391539A (zh) 事务处理方法、服务器和存储介质
CN114721725B (zh) 一种分支指令执行方法、装置、电子设备及存储介质
CN114610388A (zh) 一种指令跳转方法、处理器及电子设备
CN114490856A (zh) 基于iouring技术的数据库wal落盘方法及系统
CN114610395B (zh) 指令分派方法、装置、电子设备及计算机可存储介质
US20130166887A1 (en) Data processing apparatus and data processing method
JP2020086897A (ja) 演算処理装置及び演算処理装置の制御方法
JP5236278B2 (ja) 非同期制御転送
CN112579156B (zh) 一种业务事件的处理系统以及处理方法、装置和设备
CN115586899A (zh) 基于Flutter动态页面的局部刷新方法和刷新装置
CN114816032B (zh) 一种数据处理方法、装置、电子设备及存储介质
CN115269011A (zh) 指令执行单元、处理单元及相关装置和方法
CN115543603A (zh) 一种模型预测方法、装置、电子设备及存储介质
CN114610494A (zh) 资源分配方法、电子设备及计算机可读存储介质
US9489246B2 (en) Method and device for determining parallelism of tasks of a program
CN112445587A (zh) 一种任务处理的方法以及任务处理装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant