CN113918225A - 指令预测方法、指令数据处理装置、处理器以及存储介质 - Google Patents
指令预测方法、指令数据处理装置、处理器以及存储介质 Download PDFInfo
- Publication number
- CN113918225A CN113918225A CN202111301479.9A CN202111301479A CN113918225A CN 113918225 A CN113918225 A CN 113918225A CN 202111301479 A CN202111301479 A CN 202111301479A CN 113918225 A CN113918225 A CN 113918225A
- Authority
- CN
- China
- Prior art keywords
- branch
- prediction
- instruction
- predictor
- jump
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 85
- 238000012545 processing Methods 0.000 title claims abstract description 76
- 238000012549 training Methods 0.000 claims abstract description 59
- 230000004044 response Effects 0.000 claims description 29
- 238000011010 flushing procedure Methods 0.000 claims description 5
- 238000003672 processing method Methods 0.000 claims description 5
- 230000003247 decreasing effect Effects 0.000 claims description 3
- 238000012937 correction Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 14
- 230000000694 effects Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000002829 reductive effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000002902 bimodal effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
一种指令预测方法、指令数据处理装置、处理器以及存储介质,该指令预测方法包括:接收待处理的分支指令;使用包括一级分支预测和二级分支预测的多级分支预测对分支指令的跳转进行预测,其中,一级分支预测比二级分支预测的覆盖率低,二级分支预测对分支指令的预测操作得到预测结果;根据二级分支预测的预测结果训练一级分支预测。该指令预测方法有效提升一级分支方向预测器训练的及时性,提高了二级分支方向预测器与一级分支方向预测器预测结果的一致性,减少了预测结果的修正次数。
Description
技术领域
本公开的实施例涉及一种指令预测方法、指令数据处理装置、处理器以及存储介质。
背景技术
当前,随着信息技术的发展,越来越多的数据需要有效而快速的计算处理。数据的计算处理对处理器的性能要求越来越高,设计生成高性能的处理器成为亟待解决的问题。处理器的性能优化需要对处理器本身的结构做出有效改进,例如改进指令的执行顺序方式、改进处理器的功耗、改进处理器的并行计算能力等等。
发明内容
本公开一些实施例提供了一种指令预测方法,该方法包括:接收待处理的分支指令;使用包括一级分支预测和二级分支预测的多级分支预测对所述分支指令的跳转进行预测,其中,所述一级分支预测比所述二级分支预测的覆盖率低,所述二级分支预测对所述分支指令的预测操作得到预测结果;根据所述二级分支预测的预测结果训练所述一级分支预测。
例如,在本公开一些实施例提供的一种指令预测方法还包括:响应于所述分支指令的执行结果与所述预测结果相同,在所述分支指令退休后,根据所述执行结果训练所述多级分支预测。
例如,在本公开一些实施例提供的一种指令预测方法中,所述根据所述执行结果训练所述多级分支预测包括:仅训练所述二级分支预测。
例如,在本公开一些实施例提供的一种指令预测方法还包括:响应于所述分支指令的执行结果与所述预测结果不同,取消所述预测结果,根据所述执行结果训练所述多级分支预测。
例如,在本公开一些实施例提供的一种指令预测方法中,所述根据所述执行结果训练所述多级分支预测包括:训练所述一级分支预测和所述二级分支预测。
例如,在本公开一些实施例提供的一种指令预测方法中,所述一级分支预测包括一级分支跳转方向预测,所述二级分支预测包括二级分支跳转方向预测。
例如,在本公开一些实施例提供的一种指令预测方法中,所述多级分支预测还包括分支跳转地址预测,包括与所述一级分支跳转方向预测配合的第一分支跳转地址预测,以及与所述二级分支跳转方向预测配合的第二分支跳转地址预测。
例如,在本公开一些实施例提供的一种指令预测方法中,所述一级分支跳转方向预测或所述二级分支跳转方向预测使用的跳转方向预测包括:获取所述分支指令的方向值;响应于所述方向值小于跳转阈值,输出所述分支指令的跳转方向预测结果为不跳转;响应于所述方向值大于所述跳转阈值,输出所述分支指令的跳转方向预测结果为跳转。
例如,在本公开一些实施例提供的一种指令预测方法中,用于所述一级分支跳转方向预测或所述二级分支跳转方向预测的跳转方向训练包括:获取所述分支指令的执行结果;响应于所述执行结果与所述跳转方向预测结果相同,增加所述跳转阈值;响应于所述执行结果与所述跳转方向预测结果不同,减小所述跳转阈值。
例如,在本公开一些实施例提供的一种指令预测方法还包括:响应于所述一级分支预测和所述二级分支预测的预测结果相同,继续所述分支指令的后续处理;响应于所述一级分支预测和所述二级分支预测的预测结果不同,冲刷在所述分支指令之后进入指令流水线的其他指令。
本公开一些实施例提供还了一种指令数据处理装置,该指令数据处理装置包括:指令接收单元,配置为接收待处理的分支指令;多级分支预测器,配置为所述对待处理的分支指令的跳转进行预测,其中,所述多级分支预测器包括一级分支预测器和二级分支预测器,所述二级分支预测器根据所述二级分支预测器对所述分支指令的跳转的预测结果训练所述一级分支预测器。
例如,在本公开一些实施例提供的一种指令数据处理装置还包括:执行单元,配置为执行所述分支指令,得到所述分支指令的执行结果;其中,所述多级分支预测器还被配置为,响应于所述分支指令的执行结果与预测结果不同,使用所述执行结果训练所述多级分支预测器。
例如,在本公开一些实施例提供的一种指令数据处理装置中,所述多级分支预测器还被配置为,响应于所述分支指令的执行结果与预测结果相同,使用所述执行结果仅训练所述第二分支预测器。
例如,在本公开一些实施例提供的一种指令数据处理装置还包括:退休单元,配置为响应于所述分支指令执行结束之后,将所述分支指令退休,其中,所述多级分支预测器还被配置为,响应于所述分支指令退休,使用所述执行结果训练所述多级分支预测器。
例如,在本公开一些实施例提供的一种指令数据处理装置中,所述多级分支预测器还被配置为,响应于所述分支指令的执行结果与预测结果不同,使用所述执行结果训练所述一级分支预测器和所述二级分支预测器。
例如,在本公开一些实施例提供的一种指令数据处理装置中,所述多级分支预测器还包括分支跳转地址预测器,所述一级分支预测器为一级分支跳转方向预测器,所述二级分支预测器为二级分支跳转方向预测器,所述分支跳转地址预测器配置为提供用于所述一级分支跳转方向预测器的一级分支跳转地址预测,以及用于所述二级分支跳转方向预测器的二级分支跳转地址预测。
本公开一些实施例提供还了一种指令数据处理装置,包括:存储器,用于非暂时性存储计算机可执行指令;以及处理器,用于运行所述计算机可执行指令,其中,所述计算机可执行指令被所述处理器运行时执行上述任一实施例所述的指令数据处理方法。
本公开一些实施例提供还了一种处理器,包括上述任一实施例所述的指令数据处理装置。
本公开一些实施例提供还了一种非暂时性存储介质,非暂时性地存储计算机可执行指令,其中,当所述计算机可执行指令由计算机执行时,执行根据上述任一实施例所述的指令数据处理方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1是一种处理器的指令执行过程示意图;
图2是一种指令数据处理装置的示意图;
图3为本公开至少一实施例提出的一种指令预测方法的流程图;
图4为本公开至少一实施例提出的一种指令预测方法的流程图;
图5为本公开至少一实施例提出的一种指令预测方法的训练方法的流程图;
图6为本公开至少一实施例提出的一种指令数据处理装置的结构示意图;
图7为本公开至少一实施例提出的一种指令数据处理装置的结构示意图;
图8为本公开至少一实施例提出的一种指令数据处理装置的示意图;
图9是图8中分支预测器110的结构示意图;以及
图10为本公开至少一实施例提出的一种处理器的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面通过几个具体的实施例对本公开进行说明。为了保持本公开实施例的以下说明清楚且简明,可省略已知功能和已知部(元)件的详细说明。当本公开实施例的任一部(元)件在一个以上的附图中出现时,该部(元)件在每个附图中由相同或类似的参考标号表示。
处理器性能指标之一是单位时间内处理器能够处理的指令平均个数IPC(instructions per cycle,IPC)。为了提高该指标,处理器发展史上诞生了许多技术,比如指令流水线技术。一个简单的指令流水线使处理器在同一时刻处理多条指令成为可能。假定引入流水线之前的IPC为1,流水线深度为n,那么引入指令流水线后的IPC理论最大值约为流水线深度n。但实际的IPC是远小于n。例如,引入五级指令流水线的IPC大约只有2,甚至更低。IPC无法达到理论最大值的原因之一就是大量动态分支指令会使流水线中的后续指令发生停滞(stall),也就是不允许分支指令后的指令在分支指令得到执行结果之前进入处理器。该停滞是为了保证程序执行得到正确的结果。
目前,处理器对于指令流水线的执行方式主要分为顺序执行和乱序执行两种。顺序执行(in-order execution)是指处理器按照取指顺序在一条指令流水线上逐条执行取到的指令的技术。在顺序执行过程中,当一条流水线上的指令的执行依赖其他流水线的指令的执行结果时,该流水线就停下等待,直到所依赖的其他流水线上的指令执行完毕。因而,顺序执行处理器的性能不高,但所需要的硬件开销较小。顺序执行的处理器一般用于低功耗类型的小型处理器,例如ARM公司的cortex-M系列。乱序执行(out-of-orderexecution)是指处理器允许将多条指令不按取指顺序而将指令分开发送给各相应电路单元处理的技术。这样,处理器将根据各电路单元的状态和各指令能否提前执行的具体情况分析后,将能够提前执行的指令提前发送给相应电路单元执行,在这期间不按取指顺序执行指令,然后由指令提交单元将指令执行结果按取指顺序重新排列。
图1是一种处理器的指令执行过程示意图。如图1所示,例如,一条指令(例如分支指令)根据程序计数器(PC)从指令缓存中取出来之后,将取到的指令进行指令译码;译码后的指令通过寄存器重命名以便进行乱序执行,例如设置多个寄存器以存放乱序执行的指令,从而扩大可用的寄存器以去除指令之间的伪相关;之后指令进入指令分配模块,指令分配模块决定什么时间将指令分配到什么执行单元去执行,例如在不同的时间,指令将被分配到不同的端口Port0、Port1、Port2、Port3等对应的不同的执行单元(例如算术逻辑单元(ALU)、乘法单元、除法单元等)执行。在寄存器重命名的同时,指令会进入指令提交单元,指令提交单元记录了指令的原始取指顺序。指令提交单元用于在指令执行完毕后将指令按照原始的取指顺序提交,同时它会将分支指令的实际执行信息更新到分支预测单元。分支预测单元则会按照预测的结果指导取指过程,并且根据分支指令的实际执行信息对预测操作进行训练以提高预测准确性。
如上所述,指令流水线中出现分支指令时,可以进行停滞以保证程序执行得到正确的结果。为了减少停滞,可以先假定所有的分支指令都是不跳转的,也就是允许紧邻分支指令的下一条指令进入处理器。当分支指令执行后,如果分支跳转(也就是假定不跳转是错误的),冲刷掉(flush)流水线中比分支指令进入处理器晚的所有指令;如果分支指令不跳转(也就是假定不跳转是正确的),在分支指令后已经进入处理器的指令就可以被继续执行,同时没有额外等待时间。这种假定分支不跳转的技术就是早期的分支预测技术,也叫静态分支预测。但覆盖率(也称为精度或准确度)较高的分支预测器多使用动态分支预测。其中,有些分支预测器的预测机制比较复杂,例如神经感知器(neural perceptron)预测器、标记几何(TAgged GEometric,TAGE)预测器等。这些复杂的分支预测器获得其预测结果的延迟(等待时间)较长。同时,容量较大的分支预测器的延迟相对容量较小的相同种类的分支预测器也较长,容量较大的分支预测器的覆盖率通常也较高。
例如,为了平衡预测容量较大的分支预测器和延迟,处理器可以采用多级分支预测,例如两级分支预测。处理器可以将延迟低(覆盖率低)的预测器作为一级分支预测器,延迟高(覆盖率高)的分支预测器作为二级预测器。一旦一级分支预测器得到分支指令的预测结果,处理器就允许分支指令随后的指令进入。如果二级和一级分支预测器的预测结果相同,处理器不需要做任何操作,因为预测指令已经在处理器当中。但是,如果二级和一级分支预测器的预测结果不同,处理器需要冲刷掉分支指令(例如正在被二级分支预测器预测的分支指令)后进入处理器的指令,同时允许新预测的分支指令进入。这样的冲刷次数越多,处理器的在流水线中能并行处理的平均指令数目就越少,处理器的性能就随之降低。
图2是一种指令数据处理装置的示意图,该指令数据处理装置用于处理器,该处理器可以为单核处理器或多核处理器的某一处理核心。如图2所示,该指令数据处理装置包括分支预测器110、执行单元115以及退休单元120,还可以包括取指单元、指令缓存、译码单元、指令分配单元等,本公开对此不作限制。分支预测器110用于对进入指令流水线的分支指令进行跳转分支预测,通过预测的跳转方向以及跳转地址得到的指令在分支指令之后进入流水线;执行单元115用于执行通过取指、译码等之后的分支指令,根据分支指令实际指示的跳转方向和跳转地址去获取后续的指令;退休单元120用于将执行完毕的分支指令退休(retire),表示该分支指令已经被实际执行完成。
分支预测器110包括分支跳转地址预测器130、一级分支方向预测器135和二级分支方向预测器140。这里,一级分支方向预测器135比二级分支方向预测器140的预测覆盖率低但预测速度快。一条分支指令分别经过分支预测器110的一级分支方向预测器135、二级分支方向预测器140的分支方向预测,并由分支跳转地址预测器130根据两级分支方向预测的跳转方向预测结果进行具体的跳转地址预测,以获得分支指令具体要跳转到的地址。在根据分支指令得到跳转的预测结果之后,分支指令将进入执行单元115执行。该分支指令在执行单元115完成执行后得到执行结果,如果预测结果与执行结果不相符,即分支预测错误,则执行单元115立刻将正确的分支方向信息返回一级分支方向预测器135和二级分支方向预测器140,并且一级分支方向预测器135和二级分支方向预测器140根据各自的训练方式对两者进行训练。这条训练路径为动态分支指令错误预测训练150。如果预测结果与执行结果相符,即分支预测正确,则退休单元120等到该分支指令即将从指令流水线中退出时,返回正确分支方向信息给一级分支方向预测器135和二级分支方向预测器140,并且两者根据该正确分支方向信息进行训练。这条训练路径为动态分支指令退休训练155。
但是,在上述的分支指令分支预测方法中,动态分支指令退休训练155由于需要等到分支指令从退休单元120退休后,才能对一级分支方向预测器135和二级分支方向预测器140进行训练,而分支指令从离开分支预测器110到离开退休单元120通常需要十几到上百个时钟周期,从而一级分支方向预测器135得到的训练不够及时。同时,上述的指令分支预测方法中二级分支方向预测器140对一级分支方向预测器135的预测结果的修正次数较多。
本公开至少一实施例提出了一种指令预测方法,该指令预测方法用于处理器。该指令预测方法包括:接收待处理的分支指令;使用包括一级分支预测和二级分支预测的多级分支预测对分支指令的跳转进行预测,其中,一级分支预测比二级分支预测的覆盖率低,二级分支预测对分支指令的预测操作得到预测结果;根据二级分支预测的预测结果训练一级分支预测。
本公开上述实施例的指令预测方法可以有效提升一级分支预测器得到训练的及时性,由此至少改善了由于分支指令从离开预测器到离开退休单元的时间较长而导致一级分支预测器得到的训练不够及时的问题。并且,在本公开的一些实施例中,由于二级分支预测器的覆盖率更高,因此该方法提高了二级分支预测器与一级分支预测器预测结果的一致性,相应地可以减少对于一级分支预测器预测结果的修正次数。
图3为本公开至少一实施例提出的一种指令预测方法的流程图。如图3所示,该指令预测方法至少包括如下三个步骤S101~S103:
步骤S101,接收待处理的分支指令;
步骤S102,使用包括一级分支预测和二级分支预测的多级分支预测对分支指令的跳转进行预测;
步骤S103,根据二级分支预测的预测结果训练一级分支预测。
例如,该分支预测方法涉及多级分支预测,包括一级分支预测和二级分支预测,该分支预测方法例如使用多级分支预测器,例如,该多级分支预测器例如为两级分支预测器,包括一级分支预测器和二级分支预测器。一级分支预测器和二级分支预测器分别进行一级分支预测和二级分支预测。
例如,步骤S101可以根据程序计数器通过处理器取指单元从指令缓存(Instruction Cache)(例如L1缓存或L2缓存)或从处理器外部的(共享)缓存(例如L3缓存)或内存读取待处理的指令,这些指令包括分支指令。
例如,在该一级分支预测器的一级分支预测相对于二级分支预测器的二级分支预测具有较低的覆盖率(精度或准确率),但是该一级分支预测器的一级分支预测相对于二级分支预测器的二级分支预测具有较高的预测速度。步骤S102中,二级分支预测对分支指令进行预测操作之后,得到预测结果。
例如,步骤S103中,二级分支预测器根据二级分支预测对分支指令的预测结果训练多级分支预测器的多级分支预测,例如根据预测结果随时(例如紧接着,例如下一个操作周期(例如CPU周期(或机器周期)或时钟周期))训练一级分支预测器的一级分支预测,从而使得一级分支方向预测器得到及时的训练,这也相应地增强了两级分支预测器的预测结果的一致性。
除上述的三个步骤外,根据不同的情形,本公开至少一实施例提出的一种指令预测方法还可以包括步骤S104~S107中的至少部分:
步骤S104,响应于一级分支预测和二级分支预测的预测结果相同,继续分支指令的后续处理。
例如,分支指令经过一级分支预测器的一级分支预测之后就可以进行后续的处理,同时二级分支预测器还将进行二级分支预测,并且在二级分支预测器进行二级分支预测的同时,当前分支指令之后的指令将继续进入指令流水线进行后续处理。当一级分支预测和二级分支预测二者的预测结果相同时,则在当前分支指令之后进入流水线上的指令以及当前分支指令可以继续进行后续的处理(操作),例如可以根据预测结果产生取指请求,例如根据预测请求进行指令预取等。并且,此种情况下,一级分支预测和二级分支预测二者的预测结果相同,则均可作为多级分支预测的预测结果。这之后,再根据该分支指令的执行结果与预测结果进行比对,来确定是否继续后续的处理(操作)或冲刷该分支指令之后的指令。
例如,本公开至少一实施例提出的一种指令预测方法还可以包括:
步骤S105,响应于一级分支预测和二级分支预测的预测结果不同,冲刷在分支指令之后进入指令流水线的其他指令。
例如,类似步骤S104的情况,分支指令经过一级分支预测器的一级分支预测之后就可以进行后续的处理,同时二级分支预测器还将进行二级分支预测,并且在二级分支预测器进行二级分支预测的同时,当前分支指令之后的指令会继续进入指令流水线。当一级分支预测和二级分支预测的预测结果不同时,则在当前分支指令之后进入流水线上的指令如果继续进行后续的处理属于错误的处理,大量错误的处理将会对处理器带来更大的性能损失,因此需要将分支指令之后进入指令流水线的其他指令清除(冲刷)掉,以免处理器错误处理大量不该处理的指令,从而降低对处理器性能的影响。并且,此种情况下,可以将二级分支预测的预测结果作为该多级分支预测的预测结果。
例如,本公开至少一实施例提出的一种指令预测方法还可以包括:
步骤S106,响应于分支指令的执行结果与预测结果相同,在分支指令退休后,根据执行结果训练多级分支预测。
例如,该分支指令在经过多级分支预测器的预测得到预测结果(如上所述)之后,经过例如取指、译码等之后进入执行单元执行,并得到相应的执行结果。当预测结果与执行结果相同时,该分支指令在执行完成之后将进入退休单元进行退休,当该分支指令退休后,即从退休单元离开指令流水线后,多级分支预测器将根据正确的预测结果进行各级分支预测器各自的训练。例如,由于二级分支预测器可以随时对一级分支预测器进行训练,此时可以只对二级分支预测器进行训练而不必对一级分支预测器进行训练,从而在一级分支预测器得到及时训练的同时,也改善了一级分支预测器和二级分支预测器的一致性。
例如,本公开至少一实施例提出的一种指令预测方法还可以包括:
步骤S107,响应于分支指令的执行结果与预测结果不同,取消预测结果,根据执行结果训练多级分支预测。
例如,当预测结果与执行结果不同时,该分支指令离开执行单元后可以立即取消错误的预测结果,例如,包括将分支指令之后根据该错误的预测结果进入指令流水线的其他指令清除(冲刷)掉,取消根据该错误的预测结果对于一级分支预测器的训练,并且多级分支预测器将根据正确的执行结果进行各自的训练。例如,由于二级分支预测器和一级分支预测器都没有预测出正确的结果,此时可以对一级分支预测器和二级分支预测器均进行训练。
例如,在至少一个实施例中,一级分支预测器包括一级分支跳转方向预测器和与一级分支跳转方向预测器配合的一级分支跳转地址预测器;二级分支预测器也包括二级分支跳转方向预测器和与二级分支跳转方向预测器配合的二级分支跳转地址预测器,从而可以确定分支指令具体要跳转到的地址。例如,一级分支跳转地址预测器可以对应于本公开的第一分支跳转地址预测器;二级分支跳转地址预测器可以对应于本公开的第二分支跳转地址预测器。
例如,一级分支跳转方向预测器或二级分支跳转方向预测器中任一跳转方向预测器可以使用相同的分支跳转方向预测方法。
图4为本公开至少一实施例提出的一种指令预测方法的流程图,该指令预测方法可以用于图3中多级分支预测方法中的每一级。如图4所示,分支跳转方向预测方法在进行预测操作时可以包括如下三个步骤S201~S03:
步骤S201,获取分支指令的方向值;
步骤S202,响应于方向值小于跳转阈值,输出分支指令的跳转方向预测结果为不跳转;
步骤S203,响应于方向值大于跳转阈值,输出分支指令的跳转方向预测结果为跳转。
例如,步骤S201中,每级跳转方向预测器可以根据进入的分支指令获取代表分支指令的跳转方向的值,例如根据分支指令的类型或根据已经正确预测的历史记录等方式。同时,为了做出分支指令是否跳转的预测结果,每级分支跳转方向预测器还可以设置与之相应的跳转阈值。
例如,步骤S202和步骤S203中,每级分支跳转方向预测器可以将分支指令跳转方向的值与该级分支跳转方向预测器对应的跳转阈值比较。如果分支指令跳转方向的值小于该跳转阈值,则该级分支跳转方向预测器推测该分支指令不发生方向跳转,反之则推测该分支指令发生方向跳转。
图5为本公开至少一实施例提出的一种指令预测方法的训练方法的流程图。该训练方法可以用于图4所示的指令预测方法。
如图5所示,为了使每级跳转方向预测器的预测覆盖率动态地保持较高的水平,可以根据预测结果动态地对每级跳转方向预测器进行训练。对上述一级分支跳转方向预测器或二级分支跳转方向预测器中的每级跳转方向预测器跳转方向训练可以包括以下三个步骤S301~S303:
步骤S301,获取分支指令的执行结果;
步骤S302,响应于执行结果与跳转方向预测结果相同,增加跳转阈值;
步骤S303,响应于执行结果与跳转方向预测结果不同,减小跳转阈值。
例如,步骤S301中,每级跳转方向预测器可以将每次的预测结果保留。同时,等分支指令完成后续的执行之后,执行单元可以提供该分支指令的实际执行的分支跳转结果。
例如,步骤S302和步骤S303中,每级跳转方向预测器将之前保留的预测结果与实际执行的分支跳转结果对比。如果预测结果与实际执行的分支跳转结果相同,则说明该级跳转方向预测器的预测结果正确,可以调高相对应的跳转阈值;反之说明预测结果错误,可以调低相对应的跳转阈值。这样,经过长期多次的不断训练,每级跳转方向预测器的跳转阈值可以处于一个对应于预测结果覆盖率较高的动态稳定值。
从而,通过上述分支指令的跳转方向预测方法和训练方法,使得每级跳转方向预测器可以使用较为低成本的方式实现分支指令的跳转方向预测,并且预测结果的覆盖率可以通过对应的训练方式得到提升。
本公开至少一实施例还提出了一种指令数据处理装置。该指令数据处理装置包括指令接收单元和多级分支预测器。指令接收单元用于接收待处理的分支指令;多级分支预测器用于对待处理的分支指令的跳转进行预测分支预测器。并且,多级分支预测器包括一级分支预测器和二级分支预测器,二级分支预测器根据二级分支预测器对分支指令的跳转的预测结果训练一级分支预测器。该指令数据处理装置的技术效果与上述指令预测方法的技术效果相同。
图6为本公开至少一实施例提出的一种指令数据处理装置的结构示意图。该指令数据处理装置可以用于执行图3与图4所示的指令预测方法以及图5所示的指令预测方法的训练方法。
如图6所示,在指令数据处理装置20中,分支指令由指令接收单元210获取。
在另一个示例中,指令接收单元210将接收到的指令提供给多级分支预测器240。该多级分支预测器240在当前指令(被预测)为分支指令的情况下,进行分支预测,预测结果被用于产生后续的取指请求,然后通过取指单元、译码单元、执行单元、退休单元(下面说明)等,针对当前指令进行取指、译码以及执行、退休等操作。例如,指令接收单元210和多级分支预测器240可以通过同一硬件模块实现。
例如,该多级分支预测器240包括预测速度快但覆盖率相对较低的一级分支预测器242以及速度慢但覆盖率相对较高的二级分支预测器243。例如,一级预测器和二级预测器不必是不同类型的预测器,例如,二者可以是相同类型但不同容量的预测器。例如,一级分支预测器242可以是静态预测器或动态预测器,静态预测器可以是但不限于NLP(Next-Line Predictor,NLP)预测器;例如,二级分支预测器243可以使用与一级分支预测器242类型相同但容量更大的预测器,也可以使用其他类型的预测器,例如可以是但不限于GShare预测器、标记几何预测器(TAgged GEometric,TAGE)等其中的一种,本公开对此不作限定。一级分支预测器242和二级分支预测器243都对分支指令执行预测操作,得到相应的预测结果。二级分支预测器243按照自身的预测结果例如随时对一级预测器242进行训练,例如在二级分支预测器243得到了预测结果之后就紧接着(例如下一个时钟周期)对一级分支预测器242进行训练,从而既可以使得一级分支预测器242得到及时的训练,也可以提高一级预测器242的预测结果和二级预测器243的预测结果的一致性。例如,图6所示的指令数据处理装置20还可以包括用于执行分支指令的执行单元230。分支指令经过执行单元230的执行后得到分支指令的执行结果。例如,当分支指令的执行结果与通过多级分支预测器240预测得到的预测结果不同时,多级分支预测器240可以根据分支指令的执行结果训练多级分支预测器240,例如可以根据执行结果训练一级分支预测器242和二级分支预测器243。
例如,图6所示的指令数据处理装置还可以包括用于在分支指令执行结束之后,将分支指令退休的退休单元220。例如,退休单元220可以是处理器乱序执行过程中将执行完毕的乱序指令按照原取指顺序提交的处理单元。例如,当分支指令的执行结果与预测结果相同时,分支指令在执行结束后进入退休单元220进行退休,分支指令退休后,可以根据执行结果训练多级分支预测器240,例如多级分支预测器240可以根据分支指令的执行结果仅训练第二分支预测器243。
例如,多级分支预测器还可以包括分支跳转地址预测器241、多级分支预测器240的一级分支预测器242可以包括一级分支跳转方向预测器2421以及多级分支预测器240的二级分支预测器243可以包括二级分支跳转方向预测器2431。其中,一级分支跳转方向预测器2421用于一级分支跳转方向预测;二级分支跳转方向预测器2431用于二级分支跳转方向预测。例如,分支跳转地址预测器241可以提供用于一级分支跳转方向预测器2421的一级分支跳转地址预测,以及用于二级分支跳转方向预测器2431的二级分支跳转地址预测。
例如,分支跳转地址预测器241可以包括提供用于一级分支跳转方向预测的一级分支跳转地址预测器(未示出)以及用于二级分支跳转方向预测的二级分支跳转地址预测器(未示出)。
例如,一级分支跳转方向预测器2421或二级分支跳转方向预测器2431可以获取代表分支指令是否发生跳转的方向值,在方向值小于设定好的跳转阈值时,输出分支指令的跳转方向预测结果为不跳转;在方向值大于跳转阈值时,输出分支指令的跳转方向预测结果为跳转,从而完成分支指令的跳转方向预测。
例如,一级分支跳转方向预测器2421或二级分支跳转方向预测器2431可以获取分支指令的执行结果,在执行结果与跳转方向预测结果相同时,增加跳转阈值;在执行结果与跳转方向预测结果不同时,减小跳转阈值,从而完成分支指令的跳转方向预测的训练。
例如,图6所示的指令数据处理装置还可以在一级分支预测器242和二级分支预测器243的预测结果相同时,继续处理分支指令;而在一级分支预测和二级分支预测的预测结果不同时,冲刷在分支指令之后进入指令流水线的其他指令,以避免执行单元230错误执行大量不该执行的错误指令而对指令数据处理装置的性能造成不良影响。
本公开至少一实施例还提出了一种指令数据处理装置。该指令数据处理装置包括:用于非暂时性存储计算机可执行指令的存储器以及用于运行计算机可执行指令的以及处理器。其中,计算机可执行指令被处理器运行时执行本公开至少一实施例提出的指令数据处理方法。该指令数据处理装置的技术效果与上述指令预测方法的技术效果相同。
图7为本公开至少一实施例提出的一种指令数据处理装置的结构示意图。该指令数据处理装置可以用于执行图3与图4所示的指令预测方法以及图5所示的指令预测方法的训练方法。
如图7所示,指令数据处理装置30包括用于非暂时性存储计算机可执行指令的存储器310以及用于运行计算机可执行指令的处理器320。例如,处理器320可以实现为CPU、SoC、FPGA、ASIC等硬件或固件,或硬件或固件与软件的任何组合,本公开的实施例对此不作限制。处理器320运行计算机可执行指令时,执行以下指令预测方法:接收待处理的分支指令;使用包括一级分支预测和二级分支预测的多级分支预测对分支指令的跳转进行预测,其中,一级分支预测比二级分支预测的覆盖率低,二级分支预测对分支指令的预测操作得到预测结果;根据二级分支预测的预测结果训练一级分支预测。
例如,当分支指令的执行结果与预测结果相同时,在分支指令退休后,根据执行结果训练多级分支预测,并继续分支指令的后续处理;当分支指令的执行结果与预测结果不同时,取消预测结果,根据执行结果训练多级分支预测,并冲刷在分支指令之后进入指令流水线的其他指令。图7所示的指令数据处理装置的结构与工作原理与图6所示的处理器的结构和工作原理相似,此处不再赘述。图7所示的指令数据处理装置的技术效果与上述指令预测方法的技术效果相同。本公开至少一实施例还提出了一种处理器。该处理器包括:本公开至少一实施例提出的指令数据处理装置。例如,处理器可以实现为CPU、SoC等,本公开的实施例对此不作限制。该处理器的结构与工作原理与图7所示的处理器的结构和工作原理相似,此处不再赘述。该处理器的技术效果与上述指令预测方法的技术效果相同。
本公开至少一实施例还提出了一种非暂时性存储介质,非暂时性地存储计算机可执行指令。例如,该非暂时性存储介质可以是但不限于磁带、光盘、磁盘、闪存等非暂时性存储介质。其中,当计算机可执行指令由计算机执行时,执行本公开至少一实施例提出的指令数据处理方法。该非暂时性存储介质的技术效果与上述指令预测方法的技术效果相同。
下面将结合一个具体但非限制性的示例说明本公开至少一实施例提出的一种指令预测方法、用于执行该指令预测方法的指令数据处理装置以及包括该指令数据处理装置的处理器。
图8为本公开至少一实施例提出的一种示例性的指令数据处理装置的示意图。
如图8所示,该指令数据处理装置包括分支预测器410、执行单元415以及退休单元420,并且还可以包括取指单元、译码单元、指令分配单元(未示出)等,本公开的实施例对此不作限制。分支预测器410用于对进入指令流水线的分支指令进行跳转分支预测,通过预测的跳转方向以及跳转地址得到的指令在分支指令之后进入流水线;执行单元415用于执行通过取指、译码等之后的分支指令,根据分支指令实际指示的跳转方向和跳转地址去获取后续的指令;退休单元420用于将执行完毕的分支指令退休(retire),表示该分支指令已经被实际执行完成。图3所示的指令预测方法可以由图8所示的指令数据处理装置实施。
分支预测器410包括分支跳转地址预测器430、一级分支方向预测器435和二级分支方向预测器440。
例如,图8中的一级分支方向预测器435可以是快速且简单的相对较低覆盖率的预测器,例如可以是静态预测器或动态预测器,该静态预测器可以NLP(Next-LinePredictor,NLP)预测器。NLP预测器可以包括分支方向缓冲器(Branch Target Buffer,BTB)、双峰表(Binary Index Map,BIM)以及返回地址栈(Return Address Stack,RAS)。NLP预测器可以根据当前取到的指令快速作出分支预测的决定。每次预测时,NLP预测器首先将取到的指令和BTB中的指令标签进行匹配,如果存在匹配项,BTB和RAS一起判断该取到的指令是否为分支指令。当确定该指令为分支指令时,NLP预测器会查询BIM表来决策该指令是否跳转。当NLP预测器需要进行训练时,例如NLP预测器分支预测错误或者被通知需要进行训练时,NLP预测器的BTB会更新或创建新的表项,以完成指令标签更新;同时NLP预测器根据指令的实际跳转类型更新RAS,从而完成训练。例如,当该指令的实际跳转类型为调用型时,将该指令相关的计数信息压入RAS;当该指令的实际跳转类型为返回型时,将该指令相关的计数信息弹出RAS。
例如,图8中的二级分支方向预测器440相对于一级分支方向预测器435是慢速但相对较高覆盖率的预测器,例如基于全局历史寄存器(GHR)的预测器。例如,全局历史寄存器可以用来预测取到的指令是否需要跳转。全局历史寄存器中记录了当前指令之前的多条分支指令的跳转结果。全局历史寄存器在对某条分支指令进行预测时,根据之前的多条分支指令的跳转结果来作出决策。例如,全局历史寄存器可以采用推测式更新法进行训练。例如,每条指令被全局历史寄存器预测后,预测结果将会更新全局历史寄存器。例如,当一条指令经过执行单元执行后发现该条分支指令预测错误时,全局历史寄存器就需要重置之前的错误预测结果并更新为实际正确的结果。
例如,相比图2所示的指令数据处理装置,图8所示的指令数据处理装置包括二级分支方向预测器440对一级分支方向预测器435的训练。图9是图8中分支预测器410的结构示意图。如图9所示,图8中二级分支方向预测器440对一级分支方向预测器435的训练路径为动态分支指令预测训练355。例如,在动态分支指令预测训练355的过程中,二级分支方向预测器440根据自身的分支预测结果随时(例如在获得预测结果之后紧接着)对一级分支方向预测器435进行训练,训练方式可以按照上述两级分支方向预测器各自的训练方式进行。
例如,图8所示的指令数据处理装置由于二级分支方向预测器440可以随时对一级分支方向预测器435进行训练,因此可以取消图2中的动态分支指令退休训练155路径中对一级分支方向预测器135的训练,保留动态分支指令退休训练155路径中对二级分支方向预测器140的训练路径355。当分支指令预测错误时,图8中的动态分支指令错误预测训练路径450与图2中的动态分支指令错误预测训练150相同,此处不再赘述。
例如,图8所示的指令数据处理装置在一级分支方向预测器435的预测结果与二级分支方向预测器440的预测结果相同时,在该分支指令之后进入指令流水线上的指令则正常进行后续的处理;如果一级分支方向预测器435的预测结果与二级分支方向预测器440的预测结果不同,表示两级分支方向预测器的预测结果存在分歧,若继续执行在该分支指令之后进入指令流水线上的指令则可能会出现后续指令的错误执行,因此处理器会选择清空(即冲刷)在该分支指令之后进入指令流水线上的指令,以避免给处理器带来更大的性能影响。
上述指令数据处理装置改善了在分支预测正确时指令退休后不能及时训练一级分支方向预测器的问题,实现了二级分支方向预测器对一级分支方向预测器的及时训练。同时,在一些实施例中,由于二级分支方向预测器可以随时对一级分支方向预测器进行训练,从而提高了两级分支方向预测器方向预测结果的一致性,从而减少二级分支方向预测器对一级分支方向预测器的预测结果的平均修正次数,以低成本的方式整体提高了处理器的性能。
图10为本公开至少一实施例提出的一种处理器的示意图。如图10所示,处理器50包括指令数据处理装置510,以及包括乱序执行控制逻辑530、存储器预取指模块540以及数据/指令缓存520(例如L1缓存,或者L1缓存和L2缓存)。
指令数据处理装置510例如为本公开至少一个实施例的指令数据处理装置的示例。例如,指令数据处理装置510包括取指与指令译码器511、分支预测器512、执行单元513、退休单元514。取指与指令译码器511用于从指令缓存(或内存)取出指令并将取出的指令进行译码;分支预测器512用于预测当前取到的指令是否存在分支跳转;执行单元513用于执行当前取到的指令;退休单元514用于将执行完毕的指令退休;执行单元513以及退休单元514均可根据执行结果通知分支预测器进行相关的训练。例如,乱序执行控制逻辑530用于记录各个指令的取指顺序,根据当前不同指令的分支跳转情况将不同指令的执行顺序重排,并将执行完毕的指令按照记录的取指顺序提交。例如,存储器预取指模块540用于预先从处理器外部的存储器取指令并存入处理器内部的存储空间中,以便加速直接从外部存储器取指的速度。例如,数据/指令缓存520,用于临时存放处理器需要处理的数据和/或指令,该数据和/或指令从外部存储器取得并暂存在该缓存中,以加速处理器直接从外部存储器读取数据和/或指令的速度。该处理器的效果同上述指令数据处理装置的技术效果,这里不再赘述。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以权利要求的保护范围为准。
Claims (19)
1.一种指令预测方法,包括:
接收待处理的分支指令;
使用包括一级分支预测和二级分支预测的多级分支预测对所述分支指令的跳转进行预测,其中,所述一级分支预测比所述二级分支预测的覆盖率低,所述二级分支预测对所述分支指令的预测操作得到预测结果;
根据所述二级分支预测的预测结果训练所述一级分支预测。
2.如权利要求1所述的指令预测方法,还包括:
响应于所述分支指令的执行结果与所述预测结果相同,在所述分支指令退休后,根据所述执行结果训练所述多级分支预测。
3.如权利要求2所述的指令预测方法,其中,根据所述执行结果训练所述多级分支预测包括:
仅训练所述二级分支预测。
4.如权利要求1所述的指令预测方法,还包括:
响应于所述分支指令的执行结果与所述预测结果不同,取消所述预测结果,根据所述执行结果训练所述多级分支预测。
5.如权利要求4所述的指令预测方法,其中,所述根据所述执行结果训练所述多级分支预测包括:
训练所述一级分支预测和所述二级分支预测。
6.如权利要求1所述的指令预测方法,其中,所述一级分支预测包括一级分支跳转方向预测,所述二级分支预测包括二级分支跳转方向预测。
7.如权利要求6所述的指令预测方法,其中,所述多级分支预测还包括分支跳转地址预测,所述分支跳转地址预测包括与所述一级分支跳转方向预测配合的第一分支跳转地址预测,以及与所述二级分支跳转方向预测配合的第二分支跳转地址预测。
8.如权利要求6所述的指令预测方法,其中,所述一级分支跳转方向预测或所述二级分支跳转方向预测使用的跳转方向预测包括:
获取所述分支指令的方向值;
响应于所述方向值小于跳转阈值,输出所述分支指令的跳转方向预测结果为不跳转;
响应于所述方向值大于所述跳转阈值,输出所述分支指令的跳转方向预测结果为跳转。
9.如权利要求8所述的指令预测方法,其中,用于所述一级分支跳转方向预测或所述二级分支跳转方向预测的跳转方向训练包括:
获取所述分支指令的执行结果;
响应于所述执行结果与所述跳转方向预测结果相同,增加所述跳转阈值;
响应于所述执行结果与所述跳转方向预测结果不同,减小所述跳转阈值。
10.如权利要求1所述的指令预测方法,还包括:
响应于所述一级分支预测和所述二级分支预测的预测结果相同,继续所述分支指令的后续处理;
响应于所述一级分支预测和所述二级分支预测的预测结果不同,冲刷在所述分支指令之后进入指令流水线的其他指令。
11.一种指令数据处理装置,包括:
指令接收单元,配置为接收待处理的分支指令;
多级分支预测器,配置为所述对待处理的分支指令的跳转进行预测,
其中,所述多级分支预测器包括一级分支预测器和二级分支预测器,所述二级分支预测器根据所述二级分支预测器对所述分支指令的跳转的预测结果训练所述一级分支预测器。
12.如权利要求11中所述的指令数据处理装置,还包括:
执行单元,配置为执行所述分支指令,得到所述分支指令的执行结果;
其中,所述多级分支预测器还被配置为,响应于所述分支指令的执行结果与预测结果不同,使用所述执行结果训练所述多级分支预测器。
13.如权利要求12中所述的指令数据处理装置,其中,所述多级分支预测器还被配置为,响应于所述分支指令的执行结果与所述预测结果相同,使用所述执行结果仅训练所述第二分支预测器。
14.如权利要求12中所述的指令数据处理装置,还包括:
退休单元,配置为响应于所述分支指令执行结束之后,将所述分支指令退休,
其中,所述多级分支预测器还被配置为,响应于所述分支指令退休,使用所述执行结果训练所述多级分支预测器。
15.如权利要求12中所述的指令数据处理装置,其中,所述多级分支预测器还被配置为,响应于所述分支指令的执行结果与所述预测结果不同,使用所述执行结果训练所述一级分支预测器和所述二级分支预测器。
16.如权利要求11中所述的指令数据处理装置,其中,所述多级分支预测器还包括分支跳转地址预测器,
所述一级分支预测器为一级分支跳转方向预测器,
所述二级分支预测器为二级分支跳转方向预测器,
所述分支跳转地址预测器配置为提供用于所述一级分支跳转方向预测器的一级分支跳转地址预测,以及用于所述二级分支跳转方向预测器的二级分支跳转地址预测。
17.一种指令数据处理装置,包括:
存储器,用于非暂时性存储计算机可执行指令;以及
处理器,用于运行所述计算机可执行指令,
其中,所述计算机可执行指令被所述处理器运行时执行根据权利要求1-10任一项所述的指令数据处理方法。
18.一种处理器,包括如权利要求11-16任一所述的指令数据处理装置。
19.一种非暂时性存储介质,非暂时性地存储计算机可执行指令,其中,当所述计算机可执行指令由计算机执行时,执行根据权利要求1-10任一项所述的指令数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111301479.9A CN113918225A (zh) | 2021-11-04 | 2021-11-04 | 指令预测方法、指令数据处理装置、处理器以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111301479.9A CN113918225A (zh) | 2021-11-04 | 2021-11-04 | 指令预测方法、指令数据处理装置、处理器以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113918225A true CN113918225A (zh) | 2022-01-11 |
Family
ID=79245290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111301479.9A Pending CN113918225A (zh) | 2021-11-04 | 2021-11-04 | 指令预测方法、指令数据处理装置、处理器以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113918225A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114840258A (zh) * | 2022-05-10 | 2022-08-02 | 苏州睿芯集成电路科技有限公司 | 一种多层级混合算法过滤式分支预测方法及预测系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19926580A1 (de) * | 1998-07-14 | 2000-01-20 | Ibm | Verfahren und Vorrichtung zur Vorhersage von Sprungzieladressen |
CN103150142A (zh) * | 2011-12-07 | 2013-06-12 | 苹果公司 | 具有滞后的下一获取预测器训练 |
CN104919418A (zh) * | 2013-01-15 | 2015-09-16 | 国际商业机器公司 | 用于分支预测的基于置信度阈值的相对路径执行 |
CN112540797A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 指令处理装置和指令处理方法 |
CN112579175A (zh) * | 2020-12-14 | 2021-03-30 | 海光信息技术股份有限公司 | 分支预测方法、分支预测装置和处理器核 |
US20210124586A1 (en) * | 2019-10-24 | 2021-04-29 | Arm Limited | Apparatus and method for handling incorrect branch direction predictions |
-
2021
- 2021-11-04 CN CN202111301479.9A patent/CN113918225A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19926580A1 (de) * | 1998-07-14 | 2000-01-20 | Ibm | Verfahren und Vorrichtung zur Vorhersage von Sprungzieladressen |
CN103150142A (zh) * | 2011-12-07 | 2013-06-12 | 苹果公司 | 具有滞后的下一获取预测器训练 |
CN104919418A (zh) * | 2013-01-15 | 2015-09-16 | 国际商业机器公司 | 用于分支预测的基于置信度阈值的相对路径执行 |
CN112540797A (zh) * | 2019-09-23 | 2021-03-23 | 阿里巴巴集团控股有限公司 | 指令处理装置和指令处理方法 |
US20210124586A1 (en) * | 2019-10-24 | 2021-04-29 | Arm Limited | Apparatus and method for handling incorrect branch direction predictions |
CN112579175A (zh) * | 2020-12-14 | 2021-03-30 | 海光信息技术股份有限公司 | 分支预测方法、分支预测装置和处理器核 |
Non-Patent Citations (5)
Title |
---|
DIBAKAR GOPE等: "2014 47th Annual IEEE/ACM International Symposium on Microarchitecture", 《 2014 47TH ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE》 * |
付家为等: "一种支持Superscalar-VLIW混合架构处理器的混合分支预测设计", 《计算机应用与软件》 * |
文少波等编: "《新能源汽车及其智能化技术》", 30 September 2017, 东南大学出版社 * |
杨淑媛著: "《现代神经网络教程》", 30 April 2020, 西安电子科技大学出版社 * |
黄强等著: "《水资源系统多维临界调控的理论与方法》", 31 August 2007, 中国水利水电出版社 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114840258A (zh) * | 2022-05-10 | 2022-08-02 | 苏州睿芯集成电路科技有限公司 | 一种多层级混合算法过滤式分支预测方法及预测系统 |
CN114840258B (zh) * | 2022-05-10 | 2023-08-22 | 苏州睿芯集成电路科技有限公司 | 一种多层级混合算法过滤式分支预测方法及预测系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7278012B2 (en) | Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions | |
US8166279B2 (en) | Method for predictive decoding of a load tagged pointer instruction | |
KR101459536B1 (ko) | 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치 | |
JP2875909B2 (ja) | 並列演算処理装置 | |
US8095777B2 (en) | Structure for predictive decoding | |
EP2864868B1 (en) | Methods and apparatus to extend software branch target hints | |
US20120079255A1 (en) | Indirect branch prediction based on branch target buffer hysteresis | |
US8943298B2 (en) | Meta predictor restoration upon detecting misprediction | |
US10013255B2 (en) | Hardware-based run-time mitigation of conditional branches | |
CN103257849A (zh) | 程序执行控制装置 | |
US8954946B2 (en) | Static branch prediction method and code execution method for pipeline processor, and code compiling method for static branch prediction | |
US20140229718A1 (en) | Speculative load issue | |
CN111886581A (zh) | 高性能微处理器中的准确早期分支预测 | |
KR20210058812A (ko) | 소스 오퍼랜드 값들의 예측, 및 명령들의 최적화 처리의 장치 및 방법 | |
CN113918225A (zh) | 指令预测方法、指令数据处理装置、处理器以及存储介质 | |
JP3725547B2 (ja) | 限定ラン分岐予測 | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
US7603545B2 (en) | Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching | |
US10235173B2 (en) | Program code optimization for reducing branch mispredictions | |
US11010170B2 (en) | Arithmetic processing apparatus which replaces values for future branch prediction upon wrong branch prediction | |
US20070043930A1 (en) | Performance of a data processing apparatus | |
US20130007424A1 (en) | Cascading indirect branch instructions | |
US11847458B2 (en) | Thread priorities using misprediction rate and speculative depth | |
US11868773B2 (en) | Inferring future value for speculative branch resolution in a microprocessor | |
US6948055B1 (en) | Accuracy of multiple branch prediction schemes |
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 |