CN111886581A - 高性能微处理器中的准确早期分支预测 - Google Patents
高性能微处理器中的准确早期分支预测 Download PDFInfo
- Publication number
- CN111886581A CN111886581A CN201980020867.4A CN201980020867A CN111886581A CN 111886581 A CN111886581 A CN 111886581A CN 201980020867 A CN201980020867 A CN 201980020867A CN 111886581 A CN111886581 A CN 111886581A
- Authority
- CN
- China
- Prior art keywords
- branch
- predictor
- cycle
- prediction
- instructions
- 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 claims abstract description 16
- 230000001934 delay Effects 0.000 claims abstract description 5
- 239000000872 buffer Substances 0.000 claims description 40
- 230000015654 memory Effects 0.000 claims description 35
- 230000003111 delayed effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000000644 propagated effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000000605 extraction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000002902 bimodal effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007723 transport mechanism 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 or 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 or 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
-
- 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 or look ahead
- G06F9/3867—Concurrent 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)
- Advance Control (AREA)
Abstract
本发明描述了能够提高流水线微处理器性能的分支预测技术。提出了一种具有分层分支预测结构的微处理器。分支预测器的分层结构包括:多周期预测器,提供非常准确的分支预测,但具有多个周期延迟;小而简单的分支预测器,可以向指令子集提供延迟为零周期的分支预测;快速中间级分支预测器,提供相对准确的分支预测,同时仍具有仅一个周期的低但非零延迟的指令预测。为了改善操作,高准确度高延迟分支方向预测器和快速低延迟分支方向预测器可以共享一个目标预测器。
Description
相关申请案的交叉参考
本申请要求于2018年4月11日递交的发明名称为“高性能微处理器中的准确早期分支预测(Accurate Early Branch Prediction In High-PerformanceMicroprocessors)”的第15/950,434号美国非临时专利申请案的优先权,其内容以引用的方式并入本文中,如全文再现一般。
技术领域
下文大体上涉及微处理器领域,更具体地,涉及流水线微处理器中的分支预测。
背景技术
准确的分支预测是现代高性能流水线微处理器减少分支错误预测造成的严重性能损失的关键。现在最先进的微处理器通常具有复杂的分支预测器,分支错误预测率非常低。然而,由于这些分支预测器复杂,它们需要两个或多个周期才能做出预测,因此流水线必须等待两个或多个周期才能做出下一个预测。虽然它们可以非常准确,但是这种较长的预测延迟会减小指令提取吞吐量并降低总体性能。
发明内容
根据本发明的一个方面,提供了一种微处理器,包括:提取级,用于从存储器中检索指令;缓冲器,用于存储由所述提取级检索的指令;一个或多个流水线级,用于执行存储在所述缓冲器中的指令;预测器。所述预测器包括目标预测器、第一方向预测器和第二方向预测器。目标预测器与所述提取级相连并用于为存储在所述缓冲器中的指令预测分支/目标对。第一方向预测器与所述目标预测器相连并用于以第一准确度为每个所述分支/目标对预测第一分支路径,并向所述提取级提供延迟为第一周期数的预测后的第一分支路径。第二方向预测器与所述目标预测器相连并用于以低于所述第一准确度的第二准确度为每个所述分支/目标对预测第二分支路径,并向所述提取级提供延迟为第二周期数的预测后的第二分支路径。所述第二周期数小于所述第一周期数。
可选地,根据上述方面,在所述方面的另一实现方式中,所述预测器还包括分支预测器,用于对指令子集预测存储在所述缓冲器中的指令的分支路径,延迟为零周期。
可选地,根据上述方面,在所述方面的另一实现方式中,所述目标预测器用于在一个周期内预测分支/目标对。
可选地,根据上述方面,在所述方面的另一实现方式中,所述目标预测器包括分支目标缓冲器。
可选地,根据一些上述方面,在所述方面的另一实现方式中,所述第二周期数为二。
可选地,根据上述方面,在所述方面的另一实现方式中,所述第二方向预测器在单个流水线周期内预测的第二分支路径的数量为M,其中,M小于所述提取级在所述单个流水线周期内检索的最大指令数,所述第二方向预测器预测在所述单个流水线周期中提取的对应于具有最早地址的M个分支的所述指令子集。
可选地,根据上述方面,在所述方面的另一实现方式中,所述第二方向预测器在单个流水线周期内预测的所述第二分支路径的数量为M,其中,M是所述提取级在所述单个流水线周期内检索的最大指令数。
可选地,根据上述方面,在所述方面的另一实现方式中,连接所述第一方向预测器以从所述一个或多个流水线级接收所述预测后的第一分支路径是否被正确预测的指示,且所述第一预测器与所述第二预测器相连,所述第二预测器由所述第一预测器根据所述第二路径是否被正确预测的指示进行训练。
可选地,根据上述方面,在所述方面的另一实现方式中,所述第二预测器的存储器数量小于所述第一预测器的存储器数量。
可选地,根据上述方面,在所述方面的另一实现方式中,对于所述提取级在单个流水线周期内检索的指令集,所述第二预测器确定从具有所述最早地址的所述分支/目标对开始的所述第二分支路径。
可选地,根据上述方面,在所述方面的另一实现方式中,所述第一方向预测器和所述第二方向预测器相连,以从所述一个或多个流水线级接收所述预测后的第一分支路径和第二分支路径是否被正确预测的指示,并且用于根据所述指令更新第一分支路径预测和所述第二分支路径预测。
可选地,根据上述方面,在所述方面的另一实现方式中,连接所述第一方向预测器以从所述一个或多个流水线级接收所述预测后的第一分支路径是否被正确预测的指示,所述第一预测方向器用于根据所述指示更新所述第一分支路径预测,且与所述第二方向预测器相连以更新所述第二分支路径预测。
根据本发明的另一方面,提供了一种微处理器,包括:流水线计算结构和分层分支预测器。所述流水线计算结构包括:提取级,用于从存储器中检索指令;缓冲器,用于存储由所述提取级检索的指令;一个或多个流水线级,用于执行存储在所述缓冲器中的指令。所述分层分支预测器用于预测存储在所述缓冲器中的指令所选取的分支路径并向所述提取级提供预测后的分支路径。所述分层分支预测器包括:零周期分支预测器、第一分支预测器和第二分支预测器。所述零周期分支预测器用于以零流水线周期延迟对指令子集预测存储在所述缓冲器中的指令的分支路径。所述第一分支预测器用于以多个流水线周期延迟来预测存储在所述缓冲器中的指令的分支路径。所述第二分支预测器用于以非零流水线周期延迟来预测存储在所述缓冲器中的指令的分支路径,所述第二分支预测器的分支预测准确度介于所述零周期分支预测器和所述第一分支预测器之间,所述非零流水线周期数小于所述第一分支预测器的流水线周期数。
可选地,根据上述方面,在所述方面的另一种实现方式中,所述分层分支预测器还包括:目标预测器,与所述缓冲器连接,用于为存储在所述缓冲器中的指令预测分支/目标对。所述第一分支预测器包括与所述目标预测器相连的第一方向预测器,用于预测每个所述分支/目标对选取的对应分支;所述第二分支预测器包括与所述目标预测器相连的第二方向预测器,用于预测每个所述分支/目标对选取的对应分支。
可选地,根据上述方面,在所述方面的另一实现方式中,所述第二分支预测器在单个流水线周期内预测的分支路径的数量为M,其中,M小于所述提取级在所述单个流水线周期内检索的最大指令数,所述第二方向预测器预测在所述单个流水线周期中提取的对应于具有最早地址的M个分支的所述指令子集。
可选地,根据上述方面,在一些所述方面的另一实现方式中,所述第二分支预测器用于以一个流水线周期延迟来预测分支路径。
根据本发明的另一方面,提供了一种操作流水线计算结构的方法,包括:为从所述流水线计算结构中提取出以供执行的第一指令集预测分支/目标对。在执行所述第一指令集时,对将为每个预测后的分支/目标对选择的第一分支,执行第一准确度和第一延迟的第一预测。如果对应的第一分支预测正确,提取与预测后的第一分支对应的一个或多个附加指令以供执行。在执行所述第一指令集时,对将为每个所述预测后的分支/目标对选择的第二分支,执行第二准确度小于所述第一准确度且第二延迟小于所述第一延迟的第二预测。如果对应的第二分支预测正确,提取与预测后的第二分支对应的一个或多个附加指令以供执行。
可选地,根据上述方面,在所述方面的另一实现方式中,所述方法还包括:对所述流水线计算结构中提取出以供执行的所述指令子集执行附加预测,所述附加预测的准确度低于所述第二准确度且延迟为零周期;如果所述对应的附加预测正确,提取与所述附加预测对应的一个或多个附加指令。
可选地,根据上述一些方面,在所述方面的另一实现方式中,所述方法还包括:执行所述第一指令集;然后接收所述第一分支和所述第二分支是否被正确预测的指示;根据所述指示更新所述第一预测和所述第二预测。
可选地,根据上述方面,在所述方面的另一实现方式中,所述方法还包括:执行所述第一指令集;然后接收所述第一分支是否被正确预测的指示;根据所述指示更新所述第一预测和所述第二预测。
提供本发明内容是为了以简化的形式引入概念的选择,这些概念将在以下具体实现方式中进行进一步的描述。本发明内容的目的旨在识别权利要求书所要求的主题的关键特征或必要特征,也并非旨在帮助确定所要求的主题的范围。所要求的主题不限于解决背景技术中指出的任何或所有缺点的实现方式。
附图说明
本发明的各个方面以示例方式说明,并且不受附图的限制,附图的相同参考指示相同的元件。
图1A和图1B分别是计算机系统和可并入这种计算机系统的微处理器的框图。
图2示出了如图1B的微处理器的流水线微处理器。
图3示出了同时使用0周期目标预测器和n周期方向预测器的分支预测布置。
图4示出了结合快速1周期方向预测器、0周期目标预测器和n周期方向预测器的分支预测布置。
图5提供了图2的分支预测块的实施例的更多细节。
图6为图2的微处理器对使用图5所示分支预测器的实施例进行的操作的流程图。
图7是可用于实现如图1A至图6所示的微处理器的各种实施例的计算系统的高级框图。
具体实施方式
下文是一些能够提高流水线微处理器性能的分支预测技术的示例。本发明提出了一种具有分层分支预测结构的微处理器,分层结构包括多周期分支预测器、0周期分支预测器和快速中间级分支预测器。多周期分支预测器提供准确的分支预测,但延迟为多个周期。小而简单的0周期分支预测器可以以零周期延迟向指令子集提供分支预测,但准确度较低,并且仅适用于最近以较高频率使用的指令。快速中间级分支预测器提供相对准确的分支预测,但仍具有仅一个周期的低但非零延迟的指令预测。为了改善操作,高准确度高延迟分支方向预测器和快速低延迟分支方向预测器可以共用一个目标预测器。
应理解的是,本发明的现有实施例可以以许多不同的形式实现,并且权利要求范围不应理解为仅限于本文所述的实施例。相反,提供这些实施例是为了使本发明完整无缺,并将发明性实施例概念充分传达给本领域技术人员。实际上,本发明旨在涵盖包括在由所附权利要求书限定的本发明公开的范围和精神内的这些实施例的替代物、修改和等同物。另外,在以下本发明实施例的详细描述中,阐述了许多特定细节以便提供透彻理解。然而,所属领域的普通技术人员将清楚,可以在没有这些具体细节的情况下实践本发明实施例。
图1A和图1B分别是计算机系统和可并入这种计算机系统的微处理器的框图。在图1A的简化表示中,计算机系统100包括计算机105、一个或多个输入设备101和一个或多个输出设备103。输入设备101的常见示例包括键盘或鼠标。输出设备103的常见示例包括显示器或打印机。计算机105包括存储器107和微处理器120,其中,在该简化表示中,存储器107表示为单个块。存储器107可以包括ROM存储器、RAM存储器和非易失性存储器,并且根据实施例,包括用于数据和指令的单独存储器。
图1B示出了图1A的微处理器120的一个实施例,并且还包括存储器107。在图1B的表示中,微处理器120包括控制逻辑125、处理部分140、输入接口121和输出接口123。虚线表示微处理器120的控制逻辑125与其它元件之间以及与存储器107之间交换的控制信号。实线表示微处理器120内以及微处理器120内的数据和指令流以及微处理器120与存储器107之间的数据和指令流。
处理块140包括:组合逻辑143,用于执行指令;寄存器141,在执行这些指令时,所述组合逻辑将指令和数据存储在寄存器141中。在图1B的简化表示中,组合逻辑143块中未显式示出通常用于执行指令的算术逻辑单元(arithmetic and logic unit,ALU)、浮点单元等特定元件或单元,以及其它特定元件。组合逻辑143与存储器107相连,以接收和执行指令,并反馈结果。组合逻辑143还与输入接口121相连以接收输入设备101或其它源端的输入,并且与输出接口123相连以向输出设备103或其它目的地提供输出。
图2示意性地示出了微处理器的流水线操作的实施例,例如,可用于图1B所示的微处理器120的处理部分140。在图2中,流水线的不同级可以由组合逻辑143执行,其中各种缓冲器是寄存器141的一部分。根据实施例,可以通过软件、硬件、固件以及这些元件的各种组合来执行各种流水线级,如下文结合图7进一步论述。寄存器141,包括图2中显式表示的各种缓冲器,通常实现为易失性随机存取存储器(random access memory,RAM),但是一些实施例也可以使用一定数量的非易失性存储器。
流水线微处理器具有许多变体,其中图2的实施例示出了块表示中相当典型的微处理器集成电路的示例,但是其它实施例可以具有名称和功能不同的不同数目的级,并且可以在硬件、固件、软件和这些的各种组合中实现。在图2中,第一级是提取级201,从指令存储器中检索指令并将这些指令加载到指令/解码缓冲器203中。提取的指令可以根据提取块的起始和结束地址存储在指令/解码缓冲器中,并且按照从早到晚的顺序排列。
流水线的后续级解码并执行加载到指令/解码缓冲器203中的提取的指令,其中图2的实施例将这些后续级作为特定的级和缓冲器集合进行说明。其它微处理器实施例可以具有更多或更少的级,并可以使用不同的名称,但是出于本文讨论的目的,图2可以视为代表性实施例。在图2的示例中,各种功能级表示为块,并且可以根据实施例通过微处理器集成电路上的各种逻辑电路实现。缓冲器部分表示为一系列较小的正方形,其中,这些缓冲器也可以根据实施例由RAM或其它存储器实现,并且可以是不同的或是共享存储器的一部分。
流水线中的下一级是解码级205,解码级205对来自指令/解码缓冲器203的指令进行解码,并将这些指令置于调度缓冲器207中以便稍后执行。调度级209发出解码指令,将这些指令分发到保留站211,之后在213处分组执行。然后,完成执行的结果置于重排序/完成缓冲器215中,通过完成级217,然后进入存储缓冲器219。最后,流水线在引退级221结束,任何结果都写回存储器,或根据需要输出。
流水线结构允许有效地执行指令,因为当一个指令集处于一个级时,下一个指令集可以遵循前一级之后的周期。然而,如果指令是分支指令,例如if-then-else或跳转型指令,则一旦要执行该指令,流水线可以暂停,直到提取出所需的新指令并通过流水线传播。例如,图2示出了执行级最左边插卡槽213a处的分支指令。选取的分支在执行指令时只能重定向指令。如果该分支需要提取另一条指令,则将需要将其上报回提取级201,以便提取级201可以检索所需的指令,然后该指令必须通过流水线进行传播。在现代深度流水线微处理器中,提取指令可能需要10个或更多个周期。这会导致性能和功率方面都产生巨大成本,因为浪费了10多个周期,对于多个流水线并行运行的超标量微处理器来说,在一个6个带宽的超标量示例中,提取并刷新错误路径中的60多个指令。
为了提高性能,微处理器可以使用分支预测,其中如果提取出带有分支的指令,则可以预测该分支的结果,然后可以提取所需的任何指令并以推测方式执行。如果预测正确,则所需的指令已经在流水线中可用;如果预测不正确,则需要提取所需的指令并刷新错误预测的指令。图2包括这样的分支预测器500。分支预测器500接收关于已提取分支指令的信息,然后预测待提取和以推测方式执行的指令。分支预测器500可以预测提取块的起始和结束地址,然后提取级201可以使用该信息来提取所述提取块的实际指令。在执行分支后确定分支预测的正确性。
因此,准确的分支预测对于现代高性能流水线微处理器减少分支错误预测造成的严重性能损失至关重要。现代最先进的微处理器通常使用复杂的分支预测器,分支错误预测率非常低。然而,由于这些分支预测器(称为n周期预测器)复杂,它们必须花费2个或多个周期来做出预测(即,一次预测之后,必须等待2个或多个周期才能做出下一个预测)。这种较长的预测延迟会减小指令提取吞吐量并降低总体性能。
n周期分支预测器通常包括“目标预测器”和“方向预测器”。目标预测器的目标预测包括给定提取块中的一个或多个分支/目标对,而方向预测则预测提取块的任何指令是否被执行。这两个信息组合起来选择在提取块中最早选取的分支。如果什么都没选择,则预测提取块不被选取。大多数目标预测器,例如,分支目标缓冲器(branch target buffer,BTB),可以在1个周期中查找,而最先进的方向预测器至少需要几个周期才能获得结果。
作为对n周期预测器较长预测延迟的补救,小而简单的分支预测器(下文称为“0周期预测器”)也可以用于预测具有0周期气泡的一组频繁执行的分支。然而,为了满足0周期的需求,不得不牺牲预测器的大小和预测准确度,使得在许多复杂的应用中,这些预测器不适合预测大多数分支。
图3示出了同时使用0周期目标预测器301和n周期(在此示例中为2周期)方向预测器305的分支预测布置。顶部示出了流水线的周期数,从周期N开始。在确定指令具有分支之后,从周期N开始进行预测。0周期目标预测器301可以对“热门”指令集进行预测,因为它们最近频繁执行。如果指令在这个集合中,则开始预测。0周期目标预测器301的预测对于热门指令子集可以具有相当好的准确性,并在以0周期延迟提取指令之后在该周期内提供这些指令。但更一般而言,对于最近没有频繁使用的指令,该预测不会特别准确,或者根本不提供预测。
此外,在周期N中,n周期方向预测器305开始工作以确定是否将选取分支,在该示例中,示出了2周期方向预测器。n周期方向预测器305与目标预测器303协同工作。由于目标预测器303通常可以在单个周期中工作,因此可以提供分支目标对作为示例的2周期方向预测器305的周期N+1。在周期N+2中,0周期目标预测器301、2周期方向预测器305和目标预测器303都有助于最终分支决策307。这导致在2个周期的流水线中产生气泡(或间隙)(更一般而言,对于n周期方向预测器,在周期N+n中,延迟将为n个周期)。因此,当2周期方向预测器305用于连续进行分支预测时,将需要一串2周期气泡,其流水线模式为……BBTBT……,其中,T表示选取的分支,B表示气泡,这样,每隔三个周期,才进行一次预测。图3还表示最终分支决策的错误预测刷新路径,其中X表示由于0周期目标预测器301错误预测刷新的流水线。
因此,虽然多周期分支预测器305可能相当准确,导致需要刷新流水线的情况相对较少,但仍然可以引入大量气泡。为了改善这种情况,下文介绍一个中间1周期(或更一般而言,大于0,但小于n的周期)分支预测器,以补充0周期分支预测器和n周期分支预测器,通过提高分支预测率和增大指令提取吞吐量来进一步提高微处理器的整体性能。通过比0周期目标预测器301更高的预测容量和准确度,同时保持比n周期预测器305更低的预测延迟来实现该目标。可以将这三级预测进行组合以提供分支预测的分层结构,这三级预测中的每个预测的准确度逐渐增大,但延迟也逐渐增大。
与n周期预测器一样,1周期预测器也具有目标预测器和方向预测器。1周期目标预测器可以重新使用n周期目标预测器。这大大降低了1周期预测器的硬件成本,因为1周期预测器只需要相对较小的附加RAM内存,例如硬件成本较小,为512比特。目标预测器的分层结构和共享都可以结合图4和图5进行说明。
图4示出了结合快速1周期方向预测器411、0周期目标预测器401和n周期方向预测器405的分支预测布置。图4重复描述了图3中关于0周期预测器和n周期预测器的许多元件。如图3所示,顶部示出了流水线的周期数,在确定指令具有分支之后,从周期N开始进行预测。0周期预测器401可以对最近频繁执行的指令集进行预测。n周期(本实施例中为2周期)方向预测器405和目标预测器403再次在周期N+2中提供最终分支决策。在图4中重复的图3中的元件中,不同之处在于,目标预测器结果现在向回移动一个周期到周期N+1。如图3所示,X再次表示由于0周期预测器401错误预测而刷新流水线。
相对于图3,图4包括中间1周期快速方向预测器411。(此处描述的实施例是针对1周期方向预测器,但更一般而言,该中间快速方向预测器可以针对小于n的某些非零周期数。)除了在周期N+2中的最终分支决策407之外,1周期快速方向预测器411和目标预测器403还在周期N+1中提供快速分支决策413,快速分支决策413还接收来自0周期目标预测器401的输入。尽管1周期快速方向预测器411不如n周期方向预测器405准确,但对于仅具有单个周期气泡的0周期目标预测器401所遗漏的预测,1周期快速方向预测器411的准确度更高。例如,当1周期预测器411进行正确的连续选取分支预测时,只需要1周期气泡,流水线的模式是……BTBTBT……,其中T表示选取的分支,B表示气泡。相对于没有1周期方向预测器情况下的相应的……BBTBT……模式,性能将有很大提高。
图5提供了图2的分支预测器块500的实施例的更多细节。在图5的框图中,分支预测块500包括0周期的目标预测器501、目标预测器503和2周期(或者更一般而言,n周期,n≥2)高准确度方向预测器505。图5的实施例还包括快速方向预测器511。在该实施例中,快速方向预测器511是1周期方向预测器,但更一般而言,延迟将为1个或多个但小于n个周期。在延迟和准确性方面,将该预测器置于0周期目标预测器501和n周期方向预测器505之间的预测分层结构中间。虽然准确度通常不如n周期方向预测器准确度高,n周期方向预测器的命中率可能非常高,但1周期方向预测器511的准确度仍然很高了。
0周期目标预测器501、目标预测器503、快速方向预测器511和高准确度方向预测器505分别与提取级201连接以接收指示信息。根据实施例,方向和目标预测器不需要查看实际指令。可以根据提取块的起始地址索引(有时是部分索引)的表(立即提取的一组指令),表项可以通过存储提取块中分支的位置来预测提取块中的一个或多个分支。分支的位置可以是相对于提取块的起始地址(例如,起始地址为0×8004,分支为0×800C,指令大小为4B,位置为(0×800C-0×8004)/4=2)或者与缓存行大小对齐(例如,64B缓存行和4B指令大小,地址0×8004的位置为((0×8004mod 64))div 4)=1)。这些结果是在同一个提取块已经执行过一次或多次后才学习的,所以根据执行结果更新预测器来学习新出现的分支。
目标预测器503生成包括给定提取块中的一个或多个分支/目标对的预测。大多数目标预测器,如分支目标缓冲器(branch target buffer,BTB),可以在1个周期中查找。1周期和n周期方向预测器511和505分别预测是否选取提取块的任何指令,其中,对于每个所述方向预测器,所述信息与来自目标预测器503的分支/目标对组合,以选择提取块中最早选取的分支。如果什么都没选择,则预测提取块不被选取。快速方向预测器511在1个周期中提供其预测,而高准确度方向预测器505在n个周期后提供其预测。
目标预测器503的分支/目标对由高准确度方向预测器505和快速方向预测器511使用,并且将出现在没有快速方向预测器511的实施例中。由于可以在1个周期内访问目标预测器503,因此允许快速方向预测器511重新使用目标预测器503,该目标预测器503是微处理器中最昂贵的结构之一。由于这种资源共享,在微处理器集成电路上包括快速方向预测器511的硬件要求相对较低,因为除了使用一些逻辑电路之外,还可以使用相对较小的RAM要求(例如,仅512比特)来实现。
通过使快速方向预测器511重新使用与所述n周期目标预测器505相同的分支目标预测器503,并通过预测最早的分支,快速方向预测器511实现高性能消耗的成本最小。如图4所示,根据这种布置,当0周期预测器501失效且n周期目标预测器505与1周期预测一致时,每个预测都有1周期气泡,而不是图3布置下的2周期气泡。因此,1周期预测器511的引入补充了0周期和n周期分支预测器,以提高分支预测率和指令提取吞吐量。
0周期目标预测器501、快速方向预测器511和高准确度方向预测器505各自将其预测提供给流水线的提取级201,以便可以检索预测指令。0周期目标预测器501、快速方向预测器511和高准确度方向预测器505各自也相连以根据执行指令而接收其预测结果,从而更新预测器。1周期方向预测器511也可以由n周期方向预测器训练。
在一些实施例中,可以通过n周期高准确度方向预测器505完成更新1周期快速方向预测器511。缩短的更新延迟允许更快地更正错误预测。还允许将1周期快速方向预测器511隐藏在以后的流水线级中,以简化逻辑设计和路由布置。在一些实施例中,当分支分解或引退时,可以额外或交替地更新1周期快速方向预测器511,可以比n周期高准确度方向预测器505的训练更准确,且更新更少。当当前提取块的最早m个分支中的任何一个分支为条件分支时,可以更新1周期快速方向预测器511。选择性更新有助于减少预测表的混淆,并允许1周期分支预测器较小,同时保持良好的性能。
图6为图2的微处理器对使用图5所示分支预测器的实施例进行的操作的流程图。当提取指令时,流程开始于601。603:如果集合中存在0周期预测器501进行预测的指令,则作出这些指令并在下一周期将这些传递到提取级201,使得提取级201可以在611处提取预测指令以供推测方式执行。605:目标预测器503预测分支/目标对,607、609:快速方向预测器511和高准确度方向预测器505分别进行预测。611:根据这些预测,提取级201提取预测指令以供推测方式执行。如上所述,603、605、607、609:方向预测器和目标预测器不需要查看实际指令,但可以使用由提取块的起始地址索引(有时部分索引)的表(即,立即提取的一组指令)。表项可以通过将分支的位置存储到提取块中来预测提取块中的一个或多个分支。
图4示出了关于步骤603、605、607和609的时序以及预测指令的提取的实施例。如所说明,这些发生在不同数量的周期之后。如实施例所示,0周期预测、快速分支预测和高准确度预测的延迟分别为0、1和2个周期。因此,611:分别提取用于指令流水线中无气泡、1周期气泡和2周期气泡预测的预测分支。在611处提取的指令然后跟随601的指令沿流水线向下传播,这些指令触发具有这些大小间隙的预测。
一旦执行了分支指令,就可以确定预测是否正确。0周期预测滞后一个周期,如果在613确定为正确,则继续执行615。如果0周期预测错误,或者没有0周期预测,则1周期快速分支预测在一个周期之后(或等效地,触发指令之后的两个周期),并且,如果在617确定预测为正确,则在619执行所述分支预测。如果617的快速方向预测不正确,则2周期高准确度预测器的预测在1周期快速分支预测之后的一个周期(或等效地,在触发指令之后的两个周期)。如果在621确定高准确度预测为正确,则在623执行所述高准确度预测。如果在621还发现高准确度预测是错误预测,则在625刷新流水线并执行重提取以检索所需指令。
根据实施例,1周期方向预测器可以是双模态变体、gshare变体或可在1个周期内查找的任何其他方案。下文中表示为m的1周期方向预测器每次预测的分支数是一种设计选择,由各自具有m个计数器的预测器项实现。参数m可以是提取块中从1到最大指令数之间的任何值。在m等于最大提取块指令数的情况下,每个分支可以1∶1地映射到所选预测器项中的一个计数器。
在m小于最大提取块指令数的情况下,有两种实现选择:(1)预测器项保存分支位置和对应的计数器,只有当方向预测器和目标预测器在其对应的项中都有位置时,才进行位置预测;(2)预测器不将分支位置保存在表中。相反,目标预测器中的分支按其相对于提取块的开始的相对位置进行排序,并且所选的方向计数器与此排序顺序中最早的m个分支相关联。
从最早的分支开始,1周期预测器对每个分支进行以下预测之一,直到有一个分支为预测选取分支或为间接分支,或者m个分支均为非预测选取分支:
不进行预测:
分支是间接分支,其目标很可能不在目标预测器中的情况;
m+1个分支均为条件分支,且m个方向预测均为非选取分支的情况;或者
可选地,0周期预测器预测选取且对应的分支是最早分支的情况。
预测选取:
其中一个分支是条件分支和预测选取分支的情况;或
其中一个分支是非条件分支,其目标在目标预测器中,或者另一个目标缓存(例如,返回地址栈),可以在一个周期内访问。
由于1周期和n周期目标预测器具有相同的结构,因此更新方案没有变化。1周期方向预测器可以根据多个位置更新,例如,通过n周期预测器、在分支分解时间、在分支引退时间或这些时间的组合更新。无论更新位置如何,当当前提取块的最早m个分支中的任何一个分支为条件分支时,可以更新1周期方向预测器。在m等于1的情况下,当最早的分支是条件分支时,更新1周期方向预测器。选择性更新有助于减少预测表的混淆,并允许1周期分支预测器较小,同时保持良好的性能。
因此,1周期分支预测器比0周期预测器的准确度更高且预测更多的分支,同时保持预测延迟比n周期预测器更低。补充现有的0周期和n周期分支预测器还通过提高分支预测率和指令提取吞吐量来进一步提高总体CPU性能。此外,引入1周期分支预测器不需要更改0周期和n周期预测器。
包括1周期分支预测器可能需要最小的硬件实现成本,因为它可以与n周期分支预测器共享现有的分支目标预测结构和逻辑,因此对最早的m+1个分支进行选择和分类只需要很小的实现成本。此外,1周期方向预测器可以非常小(例如,256项),同时保持良好的性能。
对于分支方向预测,1周期分支预测器可以使用相对定位(即,检查最早的m个分支)而不是通常使用的严格定位来引入对给定提取块中最早的分支子集的预测。这使得1周期方向预测器不必在预测表中存储分支位置信息,这大大减少了相关联的硬件成本。
1周期方向预测器可以通过n周期预测器进行训练,从而快速更新,防止重复错误预测。n周期预测器进行的训练也使1周期预测器不进行后续流水线级,简化了逻辑设计和路由布置。相反,n周期预测器必须在分支分解/引退时更新,因此分支更新延迟要长得多。
图1B表示可以在结合图2至图6进行描述的流水线操作的实施例中操作的微处理器120。图1A是使用这种微处理器的计算机系统的简化表示。图7进一步考虑这样的计算系统。
图7是可用于上文所述的微处理器的各种实施例的计算系统700的高级框图。在一个示例中,计算系统700是网络系统700。特定设备可利用所有所示的组件或组件的仅一子集,且设备之间的集成程度可能不同。此外,设备可以包含多个组件实例,例如多个处理单元、处理器、存储器、发射器、接收器等。
网络系统可以包括配备有网络接口、存储接口等一个或多个输入/输出设备的计算系统701。计算系统701可以包括与总线770相连的中央处理器(central processingunit,CPU)710、存储器720、大容量存储设备730和I/O接口760,其中,所述CPU可以包括上文结合图1B和图2描述的微处理器。计算系统701用于通过I/O接口760连接各种输入和输出设备(键盘、显示器等)。总线770可以是任何类型的几种总线架构中的一种或多种,包括内存总线或内存控制器、外设总线等。
CPU 710可包括任何类型的电子数据处理器,包括图1B的微处理器120。CPU 710可用于使用实施例中描述的任一步骤或步骤组合实现本文结合图2至图6的流水线操作描述的任一方案。存储器720可包括或者可以是任何类型的系统存储器,例如静态随机存取存储器(static random access memory,SRAM)、动态随机存取存储器(dynamic random accessmemory,DRAM)、同步DRAM(synchronous DRAM,SDRAM)、只读存储器(read-only memory,ROM)或其组合等。在一个实施例中,存储器720可包括在开机时使用的ROM以及在执行程序时使用的存储程序和数据的DRAM。
大容量存储设备730可包括任何类型的存储设备,用于存储数据、程序和其它信息,并使这些数据、程序和其它信息可通过总线770访问。大容量存储设备730可包括例如固态驱动器、硬盘驱动器、磁盘驱动器或光盘驱动器中的一种或多种。
计算系统701还包括一个或多个网络接口750,其中,网络接口750包括以太网线等有线链路,和/或用于接入节点或一个或多个网络780的无线链路。网络接口750允许计算系统701通过网络780与远程单元进行通信。例如,网络接口750可以通过一个或多个发射器/发射天线以及一个或多个接收器/接收天线提供无线通信。在一个实施例中,计算系统701耦合至局域网或广域网,以进行数据处理并与其它处理单元、互联网、远程存储设施等远程设备进行通信。在一个实施例中,网络接口750可用于在ICN中接收和/或发送兴趣包和/或数据包。在此,术语“网络接口”将理解为包括端口。
图7的计算系统中描绘的组件是适于与本文描述的技术一起使用的计算系统中的典型组件,并且用于表示本领域公知的一大类计算机组件。可使用许多不同的总线配置、网络平台和操作系统。
一种用于操作流水线计算结构的系统包括:预测装置,用于为在所述流水线计算结构中提取出以供执行的第一指令集预测分支/目标对。该系统还包括:准确性预测装置,在执行第一指令集时,对将为每个预测后的分支/目标对选择的第一分支,执行第一准确度和第一延迟的第一预测。该系统还包括:提取装置,如果对应的第一分支预测正确,提取与预测后的第一分支对应的一个或多个附加指令以供执行。该系统包括相同的预测装置或附加预测装置,在执行第一指令集时,对将为每个所述预测后的分支/目标对选择的第二分支,执行第二准确度小于第一准确度且第二延迟小于第一延迟的第二预测。最后,该系统包括:提取装置,如果对应的第二分支预测正确,提取与预测后的第二分支对应的一个或多个附加指令以供执行。
本文描述的技术可以使用硬件、固件、软件或它们的组合来实现。使用的软件存储在上述一个或多个处理器可读存储设备上,以对一个或多个处理器进行编程,以执行本文描述的功能。处理器可读存储设备可以包括计算机可读介质,例如易失性和非易失性介质、可移动和不可移动介质。例如但不限于,计算机可读介质可以包括计算机可读存储介质和通信介质。计算机可读存储介质可以在用于存储计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术中实现。计算机可读存储介质的示例包括RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数字通用磁盘(digital versatile disk,DVD)或其它光盘存储器、磁带盒、磁带、磁盘存储器或其它磁性存储设备、或可以用来存储期望的信息并可由计算机访问的任何其它媒体。计算机可读介质不包括传播的、调制的或瞬时的信号。
通信媒体通常体现计算机可读指令、数据结构、程序模块或传播的、调制的或瞬时的数据信号中的其它数据,例如载波或其它传输机制,且包含任何信息传递介质。术语“调制的数据信号”是指具有一个或多个特征设置或改变方式以对信号中的信息进行编码的信号。例如但不限于,通信介质包括有线网络或直连等有线介质,以及RF等无线介质和其它无线介质。上述任何一项的组合也包括在计算机可读介质的范围内。
在替代性实施例中,部分或全部软件可以由专用硬件逻辑组件代替。例如但不限于,可用硬件逻辑组件的说明性类型包括现场可编程门阵列(Field-programmable GateArray,FPGA)、专用集成电路(Application-specific Integrated Circuit,ASIC)、专用标准产品(Application-specific Standard Product,ASSP)、片上糸统(System-on-a-chip,SOC)、复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)、专用计算机等。例如,用于执行图2中发出的指令的一些元件,例如算术逻辑单元(arithmetic and logicunit,ALU),可以使用特定的硬件元件。在一个实施例中,实现一个或多个实施例的软件(存储在存储设备上)用于对一个或多个处理器进行编程。一个或多个处理器可以与一个或多个计算机可读介质/存储设备、外围设备和/或通信接口进行通信。
应理解的是,本发明主题可以以许多不同的形式实现,并且不应理解为仅限于本文所述的实施例。相反,提供这些实施例是为了使本主题完整无缺,并将本发明充分传达给本领域技术人员。实际上,本发明主题旨在涵盖包括在由所附权利要求书限定的本发明主题的范围和精神内的这些实施例的替代物、修改和等同物。另外,在以下本发明主题的详细描述中,阐述了许多具体细节以便提供对本主题的透彻理解。然而,所属领域的普通技术人员将清楚,可以在没有这些具体细节的情况下实践本发明主题。
本文结合根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或方框图来描述本发明的各方面。应当理解,流程图说明和/或方框图中的每个方块以及流程图说明和/或方框图中的方块的组合可以通过计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器以产生机器,使得所述指令通过所述计算机或其它可编程指令执行装置的处理器执行,创建用于实现流程图和/或方框图或块中指定的功能/动作的机制。
本发明的描述是为了说明和描述的目的而提出的,但并不旨在以所公开的形式详尽无遗或限于本发明。在不脱离本发明的范围和精神的情况下,本领域技术人员可以清楚理解许多修改和变化。选择和描述本发明的各个方面以便更好地解释本发明的原理和实际应用,并且使本领域普通技术人员能够理解本发明和适合预期特定用途的各种修改。
出于本文档的目的,与所公开的技术相关联的每个过程可以连续执行并由一个或多个计算设备执行。过程中的每个步骤均可以由与在其它步骤中使用的相同或不同的计算设备执行,并且每个步骤不一定由单个计算设备执行。
虽然已经以结构特征和/或方法动作特定的语言描述了本发明主题,但是应该理解的是,权利要求书中定义的主题不必局限于上文描述的具体特征或动作。相反,公开上述具体特征和行为作为实现权利要求的示例形式。
Claims (20)
1.一种微处理器,其特征在于,包括:
提取级,用于从存储器中检索指令;
缓冲器,用于存储由所述提取级检索的指令;
一个或多个流水线级,用于执行存储在所述缓冲器中的指令;
预测器,包括:
目标预测器,与所述提取级相连并用于为存储在所述缓冲器中的指令预测分支/目标对;
第一方向预测器,与所述目标预测器相连并用于以第一准确度为每个所述分支/目标对预测第一分支路径,并向所述提取级提供延迟为第一周期数的预测后的第一分支路径;
第二方向预测器,与所述目标预测器相连并用于以低于所述第一准确度的第二准确度为每个所述分支/目标对预测第二分支路径,并向所述提取级提供延迟为第二周期数的预测后的第二分支路径,其中,所述第二周期数小于所述第一周期数。
2.根据权利要求1所述的微处理器,其特征在于,所述预测器还包括分支预测器,用于对指令子集预测存储在所述缓冲器中的指令的分支路径,延迟为零周期。
3.根据权利要求1至2中任一项所述的微处理器,其特征在于,所述目标预测器用于在一个周期内预测分支/目标对。
4.根据权利要求1至3中任一项所述的微处理器,其特征在于,所述目标预测器包括分支目标缓冲器。
5.根据权利要求1至4中任一项所述的微处理器,其特征在于,所述第二周期数为一。
6.根据权利要求1至5中任一项所述的微处理器,其特征在于,所述第二方向预测器在单个流水线周期内预测的所述第二分支路径的数量小于所述提取级在所述单个流水线周期内检索的最大指令数,所述第二方向预测器用于预测在所述单个流水线周期中提取的具有最早地址的所述指令子集。
7.根据权利要求1至6中任一项所述的微处理器,其特征在于,所述第二方向预测器在单个流水线周期内预测的所述第二分支路径的数量为M,其中,M是所述提取级在所述单个流水线周期内检索的最大指令数。
8.根据权利要求1至7中任一项所述的微处理器,其特征在于,连接所述第一方向预测器以从所述一个或多个流水线级接收所述预测后的第一分支路径是否被正确预测的指示,且所述第一预测器与所述第二预测器相连,所述第二预测器由所述第一预测器根据所述第二路径是否被正确预测的指示进行训练。
9.根据权利要求1至8中任一项所述的微处理器,其特征在于,所述第二预测器的存储器数量小于所述第一预测器的存储器数量。
10.根据权利要求1至9中任一项所述的微处理器,其特征在于,对于所述提取级在单个流水线周期内检索的指令集,所述第二预测器确定从具有所述最早地址的所述分支/目标对开始的所述第二分支路径。
11.根据权利要求1至10中任一项所述的微处理器,其特征在于,所述第一方向预测器和所述第二方向预测器相连,以从所述一个或多个流水线级接收所述预测后的第一分支路径和第二分支路径是否被正确预测的指示,并且用于根据所述指令更新第一分支路径预测和所述第二分支路径预测。
12.根据权利要求1至11中任一项所述的微处理器,其特征在于,连接所述第一方向预测器以从所述一个或多个流水线级接收所述预测后的第一分支路径是否被正确预测的指示,所述第一预测方向器用于根据所述指示更新所述第一分支路径预测,且与所述第二方向预测器相连以更新所述第二分支路径预测。
13.一种微处理器,其特征在于,包括:
流水线计算结构,包括:
提取级,用于从存储器中提取指令;
缓冲器,用于存储由所述提取级提取的指令;
一个或多个后续级,用于执行存储在所述缓冲器中的指令;
分层分支预测器,用于预测存储在所述缓冲器中的指令所选取的分支路径并向所述提取级提供预测后的分支路径,所述分层分支预测器包括:
零周期分支预测器,用于以零流水线周期延迟对指令子集预测存储在所述缓冲器中的指令的分支路径;
第一分支预测器,用于以多个流水线周期延迟来预测存储在所述缓冲器中的指令的分支路径;
第二分支预测器,用于以非零流水线周期延迟来预测存储在所述缓冲器中的指令的分支路径,所述第二分支预测器的分支预测准确度介于所述零周期分支预测器和所述第一分支预测器之间,所述非零流水线周期数小于所述第一分支预测器的流水线周期数。
14.根据权利要求13所述的微处理器,其特征在于,所述分层分支预测器还包括:
目标预测器,与所述缓冲器相连,用于为存储在所述缓冲器中的指令预测分支/目标对,其中,所述第一分支预测器包括与所述目标预测器相连的第一方向预测器,用于预测每个所述分支/目标对选取的对应分支;所述第二分支预测器包括与所述目标预测器相连的第二方向预测器,用于预测每个所述分支/目标对选取的对应分支。
15.根据权利要求13至14中任一项所述的微处理器,其特征在于,所述第二分支预测器在单个流水线周期内预测的分支路径的数量为M,其中,M小于所述提取级在所述单个流水线周期内检索的最大指令数,所述第二方向预测器预测在所述单个流水线周期中提取的对应于具有最早地址的M个分支的所述指令子集。
16.根据权利要求13至15中任一项所述的微处理器,其特征在于,所述第二分支预测器用于以一个流水线周期延迟来预测分支路径。
17.一种操作流水线计算结构的方法,其特征在于,包括:
为从所述流水线计算结构中提取出以供执行的第一指令集预测分支/目标对;
在执行所述第一指令集时,对将为每个预测后的分支/目标对选择的第一分支,执行第一准确度和第一延迟的第一预测;
如果对应的第一分支预测正确,提取与预测后的第一分支对应的一个或多个附加指令以供执行;
在执行所述第一指令集时,对将为每个所述预测后的分支/目标对选择的第二分支,执行第二准确度小于所述第一准确度且第二延迟小于所述第一延迟的第二预测;
如果对应的第二分支预测正确,提取与预测后的第二分支对应的一个或多个附加指令以供执行。
18.根据权利要求17所述的方法,其特征在于,还包括:
对所述流水线计算结构中提取出以供执行的所述指令子集执行附加预测,所述附加预测的准确度低于所述第二准确度且延迟为零周期;
如果所述对应的附加预测正确,提取与所述附加预测对应的一个或多个附加指令。
19.根据权利要求17至18中任一项所述的方法,其特征在于,还包括:
执行所述第一指令集;
然后接收所述第一分支和所述第二分支是否被正确预测的指示;
根据所述指示更新所述第一预测和所述第二预测。
20.根据权利要求17至19中任一项所述的方法,其特征在于,还包括:
执行所述第一指令集;
然后接收所述第一分支是否被正确预测的指示;
根据所述指示更新所述第一预测和所述第二预测。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/950,434 US10929136B2 (en) | 2018-04-11 | 2018-04-11 | Accurate early branch prediction using multiple predictors having different accuracy and latency in high-performance microprocessors |
US15/950,434 | 2018-04-11 | ||
PCT/CN2019/082112 WO2019196880A1 (en) | 2018-04-11 | 2019-04-10 | Accurate early branch prediction in high-performance microprocessors |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111886581A true CN111886581A (zh) | 2020-11-03 |
Family
ID=68161795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980020867.4A Pending CN111886581A (zh) | 2018-04-11 | 2019-04-10 | 高性能微处理器中的准确早期分支预测 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10929136B2 (zh) |
EP (1) | EP3776189A4 (zh) |
CN (1) | CN111886581A (zh) |
WO (1) | WO2019196880A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11995447B2 (en) * | 2020-10-15 | 2024-05-28 | Centaur Technology, Inc. | Quick predictor override and update by a BTAC |
US11614944B2 (en) * | 2020-11-09 | 2023-03-28 | Centaur Technology, Inc. | Small branch predictor escape |
US11900121B2 (en) * | 2021-10-14 | 2024-02-13 | Arm Limited | Methods and apparatus for predicting instructions for execution |
US12014178B2 (en) | 2022-06-08 | 2024-06-18 | Ventana Micro Systems Inc. | Folded instruction fetch pipeline |
US12014180B2 (en) | 2022-06-08 | 2024-06-18 | Ventana Micro Systems Inc. | Dynamically foldable and unfoldable instruction fetch pipeline |
US12008375B2 (en) | 2022-06-08 | 2024-06-11 | Ventana Micro Systems Inc. | Branch target buffer that stores predicted set index and predicted way number of instruction cache |
US12020032B2 (en) * | 2022-08-02 | 2024-06-25 | Ventana Micro Systems Inc. | Prediction unit that provides a fetch block descriptor each clock cycle |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000014628A1 (en) * | 1998-09-08 | 2000-03-16 | Intel Corporation | A method and apparatus for branch prediction using a second level branch prediction table |
US20120166775A1 (en) * | 2010-12-22 | 2012-06-28 | Advanced Micro Devices, Inc. | Combined level 1 and level 2 branch predictor |
CN103150142A (zh) * | 2011-12-07 | 2013-06-12 | 苹果公司 | 具有滞后的下一获取预测器训练 |
US20170068539A1 (en) * | 2015-06-26 | 2017-03-09 | James David Dundas | High performance zero bubble conditional branch prediction using micro branch target buffer |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6178498B1 (en) * | 1997-12-18 | 2001-01-23 | Idea Corporation | Storing predicted branch target address in different storage according to importance hint in branch prediction instruction |
US6938151B2 (en) * | 2002-06-04 | 2005-08-30 | International Business Machines Corporation | Hybrid branch prediction using a global selection counter and a prediction method comparison table |
US7243219B2 (en) * | 2003-12-24 | 2007-07-10 | Intel Corporation | Predicting instruction branches with a plurality of global predictors using varying amounts of history instruction |
US7590830B2 (en) * | 2004-05-28 | 2009-09-15 | Sun Microsystems, Inc. | Method and structure for concurrent branch prediction in a processor |
US8082430B2 (en) | 2005-08-09 | 2011-12-20 | Intel Corporation | Representing a plurality of instructions with a fewer number of micro-operations |
US7472264B2 (en) * | 2006-06-30 | 2008-12-30 | Sun Microsystems, Inc. | Predicting a jump target based on a program counter and state information for a process |
US9690591B2 (en) | 2008-10-30 | 2017-06-27 | Intel Corporation | System and method for fusing instructions queued during a time window defined by a delay counter |
CN101763248A (zh) | 2008-12-25 | 2010-06-30 | 世意法(北京)半导体研发有限责任公司 | 用于多模式分支预测器的系统和方法 |
GB201001621D0 (en) * | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
WO2012037491A2 (en) * | 2010-09-17 | 2012-03-22 | Soft Machines, Inc. | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
US9135067B2 (en) | 2013-02-28 | 2015-09-15 | Mips Technologies, Inc. | Resource sharing using process delay |
US9858081B2 (en) * | 2013-08-12 | 2018-01-02 | International Business Machines Corporation | Global branch prediction using branch and fetch group history |
WO2015061648A1 (en) * | 2013-10-25 | 2015-04-30 | Advanced Micro Devices, Inc. | Bandwidth increase in branch prediction unit and level 1 instruction cache |
US9983878B2 (en) * | 2014-05-15 | 2018-05-29 | International Business Machines Corporation | Branch prediction using multiple versions of history data |
US10216520B2 (en) | 2014-10-06 | 2019-02-26 | Via Technologies, Inc. | Compressing instruction queue for a microprocessor |
US9823932B2 (en) * | 2015-04-20 | 2017-11-21 | Arm Limited | Branch prediction |
US10540181B2 (en) * | 2018-01-19 | 2020-01-21 | Marvell World Trade Ltd. | Managing branch prediction information for different contexts |
US10613869B2 (en) * | 2018-03-29 | 2020-04-07 | Arm Limited | Branch target address provision |
-
2018
- 2018-04-11 US US15/950,434 patent/US10929136B2/en active Active
-
2019
- 2019-04-10 EP EP19785152.0A patent/EP3776189A4/en active Pending
- 2019-04-10 WO PCT/CN2019/082112 patent/WO2019196880A1/en unknown
- 2019-04-10 CN CN201980020867.4A patent/CN111886581A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000014628A1 (en) * | 1998-09-08 | 2000-03-16 | Intel Corporation | A method and apparatus for branch prediction using a second level branch prediction table |
US20120166775A1 (en) * | 2010-12-22 | 2012-06-28 | Advanced Micro Devices, Inc. | Combined level 1 and level 2 branch predictor |
CN103150142A (zh) * | 2011-12-07 | 2013-06-12 | 苹果公司 | 具有滞后的下一获取预测器训练 |
US20130151823A1 (en) * | 2011-12-07 | 2013-06-13 | Andrew J. Beaumont-Smith | Next fetch predictor training with hysteresis |
US20170068539A1 (en) * | 2015-06-26 | 2017-03-09 | James David Dundas | High performance zero bubble conditional branch prediction using micro branch target buffer |
Also Published As
Publication number | Publication date |
---|---|
US10929136B2 (en) | 2021-02-23 |
EP3776189A4 (en) | 2021-06-09 |
WO2019196880A1 (en) | 2019-10-17 |
EP3776189A1 (en) | 2021-02-17 |
US20190317769A1 (en) | 2019-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111886581A (zh) | 高性能微处理器中的准确早期分支预测 | |
US7237098B2 (en) | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence | |
US6647489B1 (en) | Compare branch instruction pairing within a single integer pipeline | |
US6550004B1 (en) | Hybrid branch predictor with improved selector table update mechanism | |
US9442736B2 (en) | Techniques for selecting a predicted indirect branch address from global and local caches | |
US8856496B2 (en) | Microprocessor that fuses load-alu-store and JCC macroinstructions | |
US9201654B2 (en) | Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions | |
EP0939364A2 (en) | Paired instruction processor branch recovery mechanism | |
US10664280B2 (en) | Fetch ahead branch target buffer | |
US6223280B1 (en) | Method and circuit for preloading prediction circuits in microprocessors | |
CN105005463A (zh) | 具有世代重命名的计算机处理器 | |
KR20090089358A (ko) | 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법 | |
CN117813588A (zh) | 元数据预测器 | |
US7844806B2 (en) | Global history branch prediction updating responsive to taken branches | |
US20100037036A1 (en) | Method to improve branch prediction latency | |
KR101829369B1 (ko) | 오버라이딩하는 분기 예측기들에서의 추론적 이력 포워딩, 및 관련 회로들, 방법들 및 컴퓨터 판독가능한 매체들 | |
US7849299B2 (en) | Microprocessor system for simultaneously accessing multiple branch history table entries using a single port | |
CN113918225A (zh) | 指令预测方法、指令数据处理装置、处理器以及存储介质 | |
US6976157B1 (en) | Circuits, systems and methods for performing branch predictions by selectively accessing bimodal and fetch-based history tables | |
US7472264B2 (en) | Predicting a jump target based on a program counter and state information for a process | |
US20090198959A1 (en) | Scalable link stack control method with full support for speculative operations | |
US11915005B1 (en) | Branch predictor triggering | |
US11537402B1 (en) | Execution elision of intermediate instruction by processor | |
US6718460B1 (en) | Mechanism for error handling in a computer system | |
JP2000029694A (ja) | メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法 |
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 |