CN106293639B - 使用微分支目标缓冲器的高性能零气泡条件分支预测 - Google Patents

使用微分支目标缓冲器的高性能零气泡条件分支预测 Download PDF

Info

Publication number
CN106293639B
CN106293639B CN201610480501.3A CN201610480501A CN106293639B CN 106293639 B CN106293639 B CN 106293639B CN 201610480501 A CN201610480501 A CN 201610480501A CN 106293639 B CN106293639 B CN 106293639B
Authority
CN
China
Prior art keywords
branch
btb
micro
graph
entry
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
CN201610480501.3A
Other languages
English (en)
Other versions
CN106293639A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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
Priority claimed from US15/047,617 external-priority patent/US10402200B2/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN106293639A publication Critical patent/CN106293639A/zh
Application granted granted Critical
Publication of CN106293639B publication Critical patent/CN106293639B/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/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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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
    • 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)
  • Advance Control (AREA)

Abstract

提供一种使用微分支目标缓冲器的高性能零气泡条件分支预测。实施例包括一种微BTB,所述微BTB每循环(每一个循环)可预测最多达两个分支,并且跳转或不跳转预测上插入零气泡,从而显著改善处理器的性能并且降低微功耗。一种微处理器的前端可包括具有主BTB的主前端逻辑部分、生成预测信息的微BTB和解耦队列。微BTB可包括具有多个条目的图形以及具有多个项的CAM。图形的各个条目可包括指向跳转方向上的下一分支的链接指针以及指向非跳转方向上的下一分支的链接指针。微BTB可将热分支作为新种子插入图形中。

Description

使用微分支目标缓冲器的高性能零气泡条件分支预测
本申请要求于2015年9月9日提交的第62/216,352号美国专利申请、于2016年2月18日提交的第15/047,617号美国专利申请、于2015年6月26日提交的第62/185,530号美国专利申请以及于2015年6月26日提交的第62/185,535号美国专利申请的权益,所述美国专利申请通过引用合并于此。
技术领域
本公开总体上涉及数字电路,更具体地讲,涉及使用微分支目标缓冲器(uBTB)的分支预测。
背景技术
中央处理单元(CPU)通常在处理流水线中提早预测分支指令的方向和目标以便提升性能。关于分支指令的类型、位置和目标的信息通常被高速缓冲存储器在分支目标缓冲器(BTB)中,BTB使用指令提取地址被访问,并且使用内容可寻址存储器(CAM)来检测BTB是否包括含映射至当前提取窗口的分支。BTB还可使用组关联结构来检测BTB是否包括映射至当前提取窗口的分支。传统BTB通常是大结构,当与分支方向预测器组合时导致针对预测跳转(predicted-tanken)分支的至少一个循环的惩罚(即,气泡(bubble))。在一些情况下,传统BTB甚至可引发针对预测不跳转分支的惩罚。
已进行了一些尝试来使用循环缓冲器或者相似的结构隐藏预测跳转分支气泡以解决惩罚,但是这些方法具有限制性。循环缓冲器要求循环中的所有的指令在循环缓冲器内适用,而不仅仅是分支指令。不包括条件分支预测器的较小和较简单的BTB无法准确地预测具有动态结果的分支,并且将导致性能和能量的浪费。另外,没有采用链接的较小和较简单的BTB将在CAM操作上浪费能量。
发明内容
实施例可包括一种微处理器的前端,所述前端具有包括主分支目标缓冲器(BTB)的主前端逻辑部分。所述前端可包括微BTB,微BTB与主前端逻辑部分的主BTB分离并且被配置为生成预测信息。该前端可包括解耦队列,解耦队列耦合至微BTB和主前端逻辑部分,并且被配置为接收预测信息并将预测信息排入队列,并且将排入队列的预测信息提供给主前端逻辑部分。所述微BTB可包括:图形,包括一个或更多个条目;内容可寻址存储器(CAM),包括一个或更多个项。主前端逻辑部分被配置为提取程序。微BTB的图形的所述一个或更多个条目中的每个条目表示程序的内部部分内的对应分支。微BTB的图形的所述一个或更多个条目中的每个条目可包括指向跳转方向上的第一下一分支的第一链接指针以及指向非跳转方向上的第二下一分支的第二链接指针。
一些实施例包括一种用于使用微分支目标缓冲器(BTB)的微处理器的主前端逻辑部分的用于执行零气泡条件分支预测的计算机实现的方法。该方法可包括由微BTB生成与微处理器的主前端逻辑部分的主BTB所生成的预测信息分离的预测信息。该方法可包括由解耦队列从微BTB接收预测信息。该方法可包括由解耦队列将来自微BTB的预测信息排入队列。该方法可包括由解耦队列将排入队列的预测信息提供给微处理器的主前端逻辑部分。
附图说明
本发明构思的以上和附加特征和优点将从以下结合附图进行的详细描述而变得更显而易见,其中:
图1是根据一些实施例的包括具有微BTB和解耦队列的前端的微处理器的示例框图。
图2是图1的微处理器的前端的示例框图。
图3是根据一些实施例的图1的微BTB的示例框图。
图4是根据一些实施例的与图1的微BTB关联的分支指令图形的示例图。
图5是根据一些实施例的不同分支预测流水线(包括用于图1的微BTB的分支预测流水线)的示例框图。
图6是根据一些实施例的提取流水线队列的示例框图。
图7是根据一些实施例的微BTB流水线的示例框图。
图8是示出根据一些实施例的从一个预测器分类向另一预测器分类的状态转换的示例实现方式的状态图。
图9是示出根据一些实施例的用于使用微BTB的微处理器的主前端逻辑部分的执行零气泡条件分支预测的技术的流程图。
图10是包括图1的微处理器的前端的计算系统的框图。
具体实施方式
现在将详细描述各种实施例,实施例的示例示出于附图中。在以下详细描述中,阐述了众多具体细节以使得能够彻底理解所述设备和方法。然而,应该理解,本领域普通技术人员可在没有这些具体细节的情况下实践实施例。在其它示例中,公知方法、过程、组件、电路和网络没有详细描述,以避免不必要地模糊实施例的方面。
将理解,尽管这里可使用术语第一、第二等来描述各种元件,但是这些元件不应受这些术语限制。这些术语仅用于将一个元件与另一元件相区分。例如,在不脱离各种实施例的范围的情况下,第一逻辑电路可被称为第二逻辑电路,类似地,第二逻辑电路可被称为第一逻辑电路。
本文的说明书中所使用的术语仅用于描述特定实施例,并非意在限制。如实施例和所附权利要求书的描述中所用,单数形式意在也包括复数形式,除非上下文清楚地另外指示。还将理解,如这里所用,术语“和/或”表示并且涵盖一个或更多个相关所列项的任何及所有可能的组合。还将理解,术语“包括”和/或“包含”当用在本说明书中时指明存在所提及的特征、整数、步骤、操作、元件和/或组件,但是不排除一个或更多个其它特征、整数、步骤、操作、元件、组件和/或其组合的存在或添加。附图的组件和特征不必按比例绘制。
一些实施例包括一种微BTB,微BTB可使用在跳转(tanken)或不跳转(not taken)预测上的零气泡(bubble)插入,而每循环(每一个循环)预测最多达两个分支,从而显著改善微处理器的性能并且降低功耗。
图1是根据一些实施例的包括具有微BTB 110以及关联的解耦队列115的前端105的微处理器100的示例框图。如下面进一步描述的,前端105可包括指令高速缓冲存储器、分支预测逻辑、提取逻辑等。如下面进一步描述的,微BTB 110和解耦队列115可生成可被微处理器100的主前端逻辑部分125接收的预测信息120。解耦队列115可将预测信息120提供给主前端逻辑部分125并且将微BTB 110与微处理器100的其余部分解耦。微处理器100可执行程序130(也在下面详细描述)。当微BTB 110确信预测信息120时,微BTB 110可向主前端逻辑部分125的门控主预测结构供电,从而显著减小微处理器100的功耗。
图2是图1的微处理器100的前端105的示例框图。图3是根据一些实施例的图1和图2的微BTB 110的示例框图。现在参照图1、图2和图3。
前端105可包括微BTB 110和解耦队列115,微BTB 110和解耦队列115可将预测信息120提供给主前端逻辑部分125。主前端逻辑部分125可包括各种选择器或复用器(例如,205)、加法器(例如,250、255、260)、比较器(例如,240、290和296)、返回地址栈275等。另外,主前端逻辑部分125可包括与微BTB 110分离的主BTB(例如,mBTB 215)和虚拟BTB(例如,vBTB 270)。
BTB可以是包括关于程序130(图1)中的分支的地址、目标、类和/或特定预测状态信息的信息的结构。主BTB 215和虚拟BTB 270可包括关于程序130中的分支的信息。微BTB110可捕获程序130的热(hot)内部部分并且允许分支的零气泡跳转预测(否则的话如果由主BTB 215或虚拟BTB 270预测,则将招致多循环惩罚)。
主BTB 215可在提取窗口中按照程序顺序保持前一个或两个分支。例如,提取窗口为指令地址空间的32字节对齐的块。虚拟BTB 270可保持在给定提取窗口中给出的额外的分支对。例如,提取可包括从高速缓冲存储器层或存储器取得指令数据,预测已知那时存在的任何分支指令,并且将指令数据与指令位置对齐以便于解码。虚拟BTB 270可处理多于两个分支驻留在给定提取窗口中的相对不太可能的情况。主条件预测器265可耦合至mBTB215,主条件预测器265可在微BTB 110没有足够确信其预测准确性的情况下基于诸如权重220的信息以及来自主BTB 215的信息来预测分支。
主前端逻辑部分125还可包括一个或更多个CAM(例如,225和245)和/或一个或更多个转译后备缓冲器(例如,sTLB 230和sTLB 285)。在一些实施例中,前端逻辑部分125包括iTAG部分292和/或uTAG部分235。主前端逻辑部分125还可包括TLB页表条目(例如,bTLBPTE 280)和/或未命中缓冲器294。主前端逻辑部分125可被分成分支预测流水级(例如,B1、B2、B3和B4)。在第一分支预测流水级(例如,B1)中,复用器205可从提取逻辑210、退出重定向202、执行重定向204、地址检查206和/或来自微BTB 110的预测信息120等中接收输入并选择。尽管这里使用术语“复用器”,但是将理解,这样的术语可表示任何合适类型的选择器。
如图3所示,微BTB 110可包括这里被称作图形305的结构。图形305如此称呼是因为它捕获或者以其它方式反映在微处理器100上执行的程序(例如,图1的130)的“图形”。图形305可包括一个或更多个条目315。将理解,虽然在一些实施例中使用64条目图形,但是可使用任何合适数量的条目315。图形305的各个条目315可表示在微处理器100上执行的程序130的“热”内部部分内的一个分支。代替使用提取地址访问微BTB 110并且使用标签或微标签检查命中,可在各个图形条目315中存储T_LINK和N_LINK指针(例如,T_LINK 317和N_LINK 320)。这允许各个预测不跳转或跳转分支具有指向图形305中在跳转方向和/或非跳转方向上的下一分支的指针。T_LINK和N_LINK指针(例如,T_LINK 317和N_LINK 320)中的每一个可与有效位365(下面进一步详细描述)关联。
图形305可以是程序130中的分支的图形表示,其中各个图形条目315表示单个分支,各个分支具有指向图形305中沿着跳转和/或非跳转方向的下一条目315的图形边缘(例如,诸如T_LINK 317和N_LINK 320的链接)。各个链接(例如,T_LINK 317和N_LINK 320)可以是例如指向微BTB图形305中的六(6)位指针。与CAM相比,链接具有特定优势,诸如逻辑门更少、时延更低以及功耗降低。各个条目315可包括权重333。在一些实施例中,权重333是八位权重。权重333在下面进一步详细描述。
如果两个分支通过主BTB 215或虚拟BTB 270被预测为在同一循环中并行预测的一对,则这两个分支可被存储在微BTB 110的图形305中两个相邻的条目315中,其中的第一个可具有被设置为指示这两个分支应该并行预测的成对位(例如,成对位325)。
为了避免对微BTB 110的访问和微BTB条件分支方向预测串行化,微BTB图形305中的各个条目315可具有下一预测(NEXT_PRED)位330。与对当前分支的微BTB图形305的访问并行,当前分支的NEXT_PRED位330的下一值可被计算并写回到微BTB图形条目315。那么下一微BTB图形条目315读取随后循环的选择是针对当前条目315的NEXT_PRED位330的当前值、T_LINK 317和N_LINK 320的函数。如果当前条目的PAIR位325被设置,则还可考虑针对相邻条目315的NEXT_PRED位330、T_LINK 317和N_LINK 320。这改善了微BTB逻辑110中的时序路径。
如图3所示,微BTB 110可包括三个主要组件。例如,微BTB 110可包括图形305、微BTB CAM 310和解耦队列115。将理解,解耦队列115可被视为微BTB 110的一部分,或者可选地,与微BTB 110分离但是与微BTB 110关联。图形305可用于预测可匹配于图形305的程序130(图1)的“热”部分。但是在执行这种匹配之前,微BTB 110的CAM 310可确定热内部部分在哪里。CAM 310可包括多个项340。将理解,虽然在一些实施例中CAM 310包括16个项,但是CAM 310可包括任何合适数量的项340。各个项340可包括权重345。在一些实施例中,权重345是八位权重。权重345在下面进一步详细描述。各个项340可包括状态位355和有效位360(如下面进一步描述)。项340还可被称为“种子”条目350(如下面进一步描述)。CAM 310可包括内部CAM 370(也如下面进一步描述)。
CAM 310可以是全关联结构。各个项340可保持例如最多达两个分支,这两个分支可在主BTB条目或虚拟BTB条目(例如,“桶”)中成对并且被并行预测。如果在主BTB 215或虚拟BTB 270中标记的被求解为跳转的分支的方向向后,则该分支可有资格在提交之后插入微BTB CAM 310中。如这里所用,术语“提交”表示指令结果就绪,所有先前的路径点已被求解。有资格的分支可以是潜在的图形“种子”,或者换言之,有资格的分支可以是插入微BTB图形305中以用于新的或者以其它方式修改的潜在分支预测图形305的第一条目315。换句话说,微BTB CAM 310可发现提交后“热”向后跳转“种子”分支,其形成图形305中的程序图形构造的起始点。微BTBCAM 310是单独的结构,其远小于微BTB图形305或者具有需要大量能量的CAM的传统BTB。一旦微BTB 110“锁定”,微BTB CAM 310就可断电,从而节能。微BTB110还可包括条件分支预测器375(如下面进一步描述的)。
图4是根据一些实施例的与图1的微BTB 110关联的分支指令图形305的示例图。现在参照图1、图2、图3和图4。
微BTB 110可将分支指令包括或者以其它方式表示在程序130(图1)的“热”内部部分中作为图形305。各个图形条目(例如,315a至315i)表示一个分支,各个图形条目具有沿着跳转和非跳转方向连接至其它节点的边缘或链接。图形节点是微BTB图形305中的单独的条目315。图形边缘可被存储在微BTB图形305中作为六(6)位指针或者可直接指向下一分支的节点(即,条目)的“链接”。将理解,图形边缘可使用具有任何合适数量的位的位指针被存储在微BTB图形305中。如果当前分支被预测跳转,则节点具有从当前分支的节点到待预测的下一分支的跳转或“T_LINK”链接或指针。如果当前分支在过去呈现过动态行为,则如果当前分支被预测不跳转,它也可具有到待预测的下一分支的不跳转或“N_LINK”链接。
示例程序130(图1)可具有例如九个分支,各个分支可在关联的图形305中被表示为b0至b8,如图4所示。图形305的各个条目315各自具有可指向待预测的下一分支的T_LINK链接和N_LINK链接(如果当前分支被预测跳转(即,T_LINK)或不跳转(即,N_LINK))。各个微BTB图形条目(例如,315a至315i)可包括额外的状态信息,诸如用于决定在预测当前分支之后是遵循T_LINK链接还是N_LINK链接到达待预测的下一分支的分支的目标地址和/或下一预测方向(例如,图3的NEXT_PRED位330)。
图4所示的微BTB图形305可表示诸如下列的用于给定伪码嵌套循环示例的分支:
Figure BDA0001031715580000071
如上所述,在主BTB 215或虚拟BTB 270中标记的被求解为跳转的分支可有资格插入微BTB CAM 310中。有资格的分支可以是潜在图形“种子”,或者换言之,有资格的分支可以是插入微BTB图形305中以用于新的或者以其它方式修改的潜在分支预测图形305的第一条目315。这些潜在种子可被与提交后微BTB CAM 310(图3)的项340(图3)进行比较,以确定它们是否已经驻留在微BTB CAM 310中。如果潜在种子没有驻留在微BTB CAM310中并且那时CAM替换策略允许插入,则新的种子条目350(图3)可被插入微BTB CAM 310中。微BTB CAM310可每项340使用八位权重345(图3)以用于CAM替换策略以及检测BTB CAM 310的给定项340中的分支何时足够“热”以保证插入微BTB图形305中作为新的种子350两者。在一些实施例中,确定特定分支是否有资格插入BTB CAM 310中的标准可以是该特定分支除了被跳转以外方向向后。在一些实施例中,分支不必方向向后。例如,如下面进一步描述的,在一些情况下(例如,由于在提取调用时微BTB110未被锁定而导致对应于返回的子例程调用被误预测),分支可方向向前。
如果提交的向后跳转的分支已经驻留在BTB CAM 310中,则其替换策略权重345可增加。例如,权重345可以是最大为255(十进制)的八位值。例如,如果CAM驻留的提交的种子具有大于或等于阈值(诸如THETA(例如,42(十进制))的替换策略权重345,则种子350被视为“热”并且可进行尝试将种子350插入微BTB图形305中(如果还没有它的话),如CAM项340中的状态位355所指示的。当存在无效图形条目315或者替换策略权重333等于零的有效图形条目315时,可进行图形插入。如果发现任一种情况,则种子350可被插入图形305中,并且它所插入的条目编号可被复制回到种子350的CAM项340中。此外,可在CAM项340中设定指示项340已被分配到图形305中的有效位360。如果无法在图形305中找到项340,则在图形305中基于轮转选择的一组八个条目(例如,315)的替换策略权重(例如,333)可减小。可选地,所有图形权重(例如,333)可并行地减小。
除了保持优势向后跳转“种子”之外,一旦已经驻留在微BTB CAM项340中的种子已被插入微BTB图形305中,与已经驻留在微BTB CAM项340中的种子在主BTB 215(图2)或虚拟BTB 270(图2)的同一“桶”中的任何其它分支可被添加到微BTB CAM 310的“桶”中。然后如果微BTB CAM310确定这些非种子分支被提取并且比种子更有可能被跳转,则它们可用于“锁定”微BTB 110,从而改善微BTB 110锁定并预测分支的能力。
一旦至少一个种子350处于微BTB图形305中,则微BTB 110可尝试构建种子350所属的图形305中与程序130关联的分支图形的其余部分。这可通过使已经驻留在主BTB 215或虚拟BTB 270的CAM中的提交的分支与提交后微BTB图形305的条目315相反来实现。如果当前提交的分支驻留在图形305中并且先前提交的分支没有驻留在图形305,则如果满足“蜿蜒”标准,可使先前提交的分支有资格插入图形305中。在一些实施例中,蜿蜒标准表示自最后图形“命中”被检测起一行中提交的分支的数量小于图形305的大小。在一些实施例中,图形305的大小可为64个条目。蜿蜒标准防止构建将无法匹配于特定大小的微BTB图形305的程序图形305。例如,如果微BTB图形305具有64个条目的大小,则蜿蜒标准防止构建超过64个条目的程序图形305。
如果满足蜿蜒标准,则先前提交的分支可被添加到图形305中的自由或可替换条目315(如果一个可用的话)。如果找到条目315,则先前分支可被插入图形305中并且如果先前分支被求解为跳转,则当前分支的条目(已经驻留在图形305中)的链接可被添加到先前分支的T_LINK字段(例如,T_LINK 317)。否则,链接可被添加到新插入的先前分支的N_LINK字段(例如,N_LINK 320)。这样,可在种子350本身处开始向后连续地构建种子350所属的图形305。由于微BTB图形305中的可用条目的数量较少,因而可保守地向后构建图形305。T和N链接(例如,T_LINK 317和N_LINK 320)还可包括有效位365,当对应链接字段被写入或者以其它方式有效时可设定该有效位365。这样的有效位365可用于检测图形305何时尝试遵循无效链接。当检测到该情况时,微BTB 110可停止预测分支,并且图形305的读取可被暂停以便省电并且避免主/虚拟BTB由于微BTB 110的误推断而重定向。
在一些实施例中,可在“向前”方向上从已经在图形305中的现有分支开始并且随着它们提交添加新分支,并且将提交的分支连接至先前添加的分支,来构建微BTB图形305的条目315。这具有这样的优点:与在向后方向上构建图形305相比,更快地构建或重新构造图形305的条目315。图形305的这种向前构建可被约束以使得图形305的有用条目315不被过早地逐出。
如果先前提交的分支和当前提交的分支二者在主BTB 215或虚拟BTB 270的同一“桶”中(即,在与主预测结构的一对分支相同的循环中有资格预测),并且先前提交的分支被求解为不跳转,但是它们还未在图形305的物理上相邻的条目315中,则针对当前分支的图形305的内容可向前移动或者“混洗”一个位置(以图形305的大小为模)。先前分支可被写入当前分支的前一位置中。然后可设定针对先前分支(“桶”中的第一分支)的PAIR位325。这可指示当桶中的第一分支在锁定的同时被读取时,它应该与图形305中位于它之后的分支“配对”并且两个分支均被发送给解耦队列115以便于并行预测。例如,将成对的分支(例如,A和B)放入相邻的图形条目315(例如,X和X+1)中使得当预测分支(例如,C)遵循其至条目X中的分支A的跳转或不跳转链接时,读取条目X+1中的成对分支B变得简单。这允许微BTB图形110高频地在同一循环中并行地预测分支A和B二者而不会浪费电力。可能已经驻留于当前分支被混洗于其上的图形条目315中的任何有效分支可被简单地覆写,那时无需校正图形305中可能具有至该条目的链接的任何其它条目315。
如果先前提交的分支和当前提交的分支二者均驻留在图形305中,但是先前分支沿其提交方向的链接没有指向当前提交的分支,则该链接可被校正。按照相似的方式,可校正与先前提交的分支对应的所有其它状态信息,诸如目标、分支类型等。此机制确保了通过图形305的混洗和分支类型重新分类等创建的不正确的链接最终可被校正。尽管不正确的链接可导致微BTB 110误预测分支,可顺着流水线通过主BTB 215或虚拟BTB 270或者如果主BTB 215或虚拟BTB 270由于微BTB 110的高预测置信度而断电则通过执行集群来验证与微BTB 110关联的所有预测。可从图4看出,图形305中的各个条目315可具有与BTB CAM 310(图3)的替换策略权重345分离的它自己的替换策略权重333。
图5是根据一些实施例的不同分支预测流水线500(包括用于图1的微BTB 110的分支预测流水线)的示例框图。现在参照图1、图2、图3和图5。
主BTB分支预测流水线(如510处所示)是以地址/历史选择开始并且以用于从指令高速缓冲存储器提取指令的实际/预测地址/路线信息结束的四个阶段。从主BTB分支预测流水线解耦合是指令提取流水线。在B1中选择地址、路线和历史信息。在B2中读取主分支预测阵列。在B3中进行准确方向预测,其中在B4中发生重定向。分支预测器可在微架构中具有若干关键循环。
相比之下,如505处所示,微BTB 110(图1)提供具有零气泡时延的预见性预测。主预测器(即,图2的主BTB 215和/或预测器265)当它将分支预测为跳转时在给定的32字节提取窗口中针对前两个分支提供具有两气泡时延的准确预测。对于不跳转预测不存在这样的惩罚。
图6是根据一些实施例的提取流水线队列600的示例框图。现在参照图1、图2、图3和图6。
提取流水线队列600可包括与种子的提取关联的第一分支阶段605(例如,B1或_b1)、第二分支阶段610(例如,B2或_b2)、第三分支阶段615(例如,B3或_b3)、与流水线针对种子的重定向关联的第四分支阶段620(例如,B4或_b4)以及与在种子之后针对第一预测跳转分支的重定向关联的第五分支阶段625(例如,_b2->_b1)。
一旦微BTB 110的图形305已经利用程序130(图1)的热内部部分填充,微BTB 110就可“锁定”以便开始利用图形305进行预测。这不是提交后进行的。相反,可通过在流水线中提早检查提取地址流并且检测指令提取何时进入程序以及驻留于微BTB 110中的关联图形305来执行锁定。这利用微BTB CAM 310中的内部CAM 370来实现,其可在前端105(图1)的第二分支阶段(例如,B2或_b2)中检查活动提取地址。如果在微BTB CAM 310中发现匹配,则前端105提取驻留在微BTB CAM 310和图形305中的“种子”。在微BTB CAM 310中与具有有效T_LINK(例如,T_LINK 317)的图形305中的条目315对应的命中上,命中指示可连同与种子关联的图形信息的子集(包括种子的T_LINK链接(例如,T_LINK 317))一起被发送给微BTB图形305,其可连同有效位(例如,360)一起被本地高速缓冲存储在微BTB CAM 310中。
在第二分支阶段(例如,B2或_b2)中可由微BTB图形接收种子信息,在第三分支阶段(例如,B3或_b3)中可使用种子的T_LINK(例如,T_LINK317)来读取与种子的T_LINK和T_LINK+1对应的图形305的一对条目315。种子的T_LINK(例如,T_LINK 317)可指向假设种子分支被主预测器265预测跳转而可能要提取的下一分支。
在前端105的流水线的第四分支阶段(例如,B4或_b4)中,图形305的这一对条目315可对应于针对种子的T_LINK条目清除PAIR位325的下一分支,或者如果种子被主预测器265预测跳转,则可由前端105预测的针对种子的T_LINK条目设定PAIR位325的两个分支。如果在第四分支阶段(例如,B4或_b4)中微BTB图形305中的种子的分支地址匹配主BTB 215或虚拟BTB 270所存储的地址,并且在第四分支阶段(例如,B4或_b4)中发生前端105的主或虚拟重定向,则微BTB图形305可开始预测分支,前两个分支在种子的T_LINK处开始预测(其图形305的条目315在先前循环中读取)。这就是微BTB 110可如何“锁定”并且开始预测分支。
在种子被主预测器265预测跳转(即,“零气泡”预测)之后,微BTB110可早在第一循环预测在针对种子分支重定向之后提取的第一对分支。一旦微BTB 110被锁定,它可继续预测成对的分支并且重定向对它预测跳转的分支的提取而无需插入流水线气泡。微BTB 110可继续每一循环读取图形305的成对的条目315并且将它们的预测发送给主前端逻辑部分125的主预测器(例如,265),直至它经历来自在主预测器(例如,265)前面运行过远的反向压力为止,在第四分支阶段(例如,B4或_b4)中主预测器(例如,265)与微BTB预测不一致并且重定向前端,微BTB 110尝试遵循无效的链接,和/或发生从流水线的较远处的重定向。
当针对当前对的分支读取微BTB图形305时,微BTB图形305可检查它们的NEXT_PRED预测方向位(例如,图3的330)、第一分支的PAIR位(例如,图3的325)、T_LINK(例如,图3的T_LINK 317)和/或N_LINK(例如,图3的N_LINK 320)以决定待预测的下一对分支位于图形305中的何处。该对可在下一循环读取。下面的伪码描绘了可如何计算下一链接的示例:
Figure BDA0001031715580000121
如图6所示,第一分支阶段605可包括NEXT ALT复用器640,NEXT ALT复用器640可接收后端重定向信息630和主预测器重定向信息635并在后端重定向信息630和主预测器重定向信息635中选择。第一分支阶段605还可包括下一指令地址(NEXT_IA)复用器645,NEXT_IA复用器645可输出微BTB种子CAM信息650,其中IA表示指令或提取窗口的指令地址。在第二分支阶段610,复用器660可接收微BTB种子CAM信息650和微BTB图形alt读取信息655并在微BTB种子CAM信息650和微BTB图形alt读取信息655中选择。
在第三分支阶段615,复用器667可接收复用器660的输出和下一图形对读取选择665并在复用器660的输出和下一图形对读取选择665中选择。下一图形对读取选择665还可控制复用器667。复用器667可输出一个或更多个微BTB图形下一对读取685。在第四分支阶段620,解耦队列115可接收一个或更多个微BTB图形下一对读取685。解耦队列115可包括队列672和复用器670。复用器670可接收队列672的输出以及与一个或更多个微BTB图形下一对读取685关联的信息并在队列672的输出以及与一个或更多个微BTB图形下一对读取685联的信息中选择。复用器670可通过DQ(解耦队列)清空信号680来控制。在第五分支阶段625,NEXT_IA复用器675可接收从解耦队列115输出的信息。
图7是根据一些实施例的微BTB流水线700的示例框图。在此示例中,示出微BTB流水线700,其被锁定并且每循环预测最多达两个分支,而不会注入流水线气泡。现在参照图1、图2、图3、图6和图7。
微BTB图形305的预测分支可位于解耦队列115中并且可在第一分支阶段(例如,B1或_b1)中将它们的地址与当前提取地址进行比较。如果提取前进至解耦队列115的最前面的一对分支,则在第一分支阶段(例如,B1或_b1)中预测它们。如果任一分支被预测跳转,则可在第二分支阶段(例如,B2或_b2)的开始重定向前端105,从而开始new_b1循环,在该循环中在更新的解耦队列115的最前面与微BTB 110关联的下一对分支有资格预测。这样,微BTB110可支持每循环最多达两个预测分支而不会注入流水线气泡。
除了读取针对当前对的分支的图形305之外,如果当前对的分支处于动态条件状态,则可针对任一或者两个预测分支更新NEXT_PRED位(例如,NEXT_PRED 330)。这可通过访问微BTB 110的条件分支方向预测器之一,预测分支的下一结果,然后将更新的下一预测写回到图形305中的NEXT_PRED位(例如,NEXT_PRED 330)来完成。当前预测可以已经从图形305读出,并且可用于确定待读取的图形305的下一对条目315。这将图形读取与预测解耦,从而允许微BTB 110命中其攻击目标频率而不会注入流水线气泡。
在微BTB图形305锁定之后,它可通过三条目解耦队列115将成对的预测分支发送给主前端逻辑部分125,可继续读取图形305的条目315,预测分支,只要解耦队列115没有呈现出后向压力就将分支推送给主前端逻辑部分125。一旦后向压力减轻,只要维持锁定,图形读取就可重新开始。需要解耦队列115中的至少两个条目。解耦队列115中的第三条目可充当防滑(skid)缓冲器以排除在解耦队列115的最前面检查微BTB 110的预测的预测逻辑与微BTB图形305的读取控制逻辑之间的时序路径。
解耦队列115的条目可包括分支偏移信息、目标信息、预测方向信息和/或重定向指令提取所需的其它状态信息。解耦队列115的控制逻辑可检查在解耦队列115(如果不为空的话)最前面的一对分支或者(如果为空的话)从微BTB图形305发送来的一对,并且可在流水线的第一分支阶段(例如,B1或_b1)中将它们的地址与当前提取地址进行比较。如果找到有效分支或者一对分支并且它们属于当前提取窗口,则可将它们从解耦队列115解除分配(如果解耦队列115不为空并且解耦队列115头被更新)。另外,如果它们中的一个被预测跳转,则可在下一循环的开始处将提取重定向至微BTB 110的预测目标。如果分支不被跳转,则提取可仅顺序地前进。这样,通过微BTB预测隐藏了预测跳转分支气泡。
当发现微BTB 110的误推测时,解耦队列115的条目也可用于“展开”和校正微BTB110的推测更新的条件分支预测器状态。流水线状态也可用于针对从解耦队列115取出的分支展开和校正微BTB 110的推测更新的预测状态并且用于顺着流水线预测主预测器(例如,265)的重定向或者任何其它重定向附近的指令提取。
如果主BTB 215、虚拟BTB 270和/或主条件预测器265不同意微BTB110的分支预测的分支偏移、方向或者目标,则微BTB 110可“打断”其锁定。在此情景下,可清除解耦队列115,可停止与图形305关联的图形读取,可重新允许提取时间CAM操作以尝试重新获取锁定,并且如果需要可修复图形305中的条件分支状态。
如果如前所述打断锁定并且在同一循环中没有发现与微BTB CAM 310关联的命中,则“替换物”链接可被传递回至微BTB图形305,并且可尝试通过顺着其它方向走下去来重新获取锁定。例如,如果微BTB图形305被锁定并且针对图形305的条目315中的特定条目A作出跳转预测,则图形305可遵循其TAKEN链接(例如,T_LINK 317),但是它将记录NOT_TAKEN链接(例如,N_LINK 320)并且顺着流水线传递它。如果图形条目A实际上求解为NOT_TAKEN,则可尝试通过按照与CAM锁定相似的方式将NOT_TAKEN链接(例如,N_LINK 320)所指向的分支当作种子来重新锁定微BTB图形305。如果图形305误预测分支不跳转并且遵循NOT_TAKEN链接(例如,N_LINK 320),则这也适用于TAKEN链接(例如,T_LINK 317)。替换物本身可为跳转或不跳转的。因为微BTB 110每循环可预测最多达两个分支,所以每循环可使用两个替换物。
这些“替换物”如果跳转或不跳转则可锁定。跳转替换物锁定在概念上与针对流水线的种子锁定相同,这是因为流水线可在第四分支阶段(例如,B4或_b4)中重定向。不跳转替换物相对更复杂。如果尝试重新锁定到不跳转替换物上,则如果在接下来的两个循环中不存在由主BTB 215或虚拟BTB270预测的分支,微BTB图形305仅能够将在不跳转替换物之后的下一对分支置于解耦队列115的最前面以及时预测。这些不跳转重新锁定可被称作“推测性”重新锁定。如果在两个循环窗口中通过主BTB 215或虚拟BTB270预测到分支,则推测性锁定可被打断。如果推测性锁定未被打断,则微BTB 110可维持锁定并且可继续预测分支,直至解耦队列115由于后向压力和/或由于发生重定向而充满。如果在两个循环窗口期间在主流水线中存在任何分支,则不跳转替换物之后的第一对分支可到达太晚以至于无法预测,从而导致微BTB 110落在主流水线后面(并且可能从未追上)。当检测到这种情况时,推测性锁定可被打断。
如果微BTB 110一旦锁定就足够确信其预测周期性,则微BTB 110可断电或者使得诸如主BTB 215、虚拟BTB 270和/或主条件预测器265的主预测结构断电。在足够确信的情况下,可执行附加功率优化,诸如将TLB、L1指令高速缓冲存储器标签阵列等断电。需要注意的是,当这发生时执行单元仍将验证分支预测的正确性。微BTB也可将前端提交流水线断电,暂停所有微BTB图形和CAM提交后功能并且仅在微BTB预测上消耗功率,直至微BTB锁定被打断。这为在处理器上运行的许多程序提供了显著省电。
如图7的微BTB流水线700中所示,第一锁定阶段705之后可跟随第二锁定阶段710,第二锁定阶段710之后可跟随第三锁定阶段715。在第一锁定阶段705,复用器725可接收微BTB锁定链接信号735和下一图形对读取选择720并在微BTB锁定链接信号735和下一图形对读取选择720中选择。复用器725可输出一个或更多个微BTB图形下一对读取730。复用器725可通过下一图形对读取选择720来控制。
在第二锁定阶段710,解耦队列115可接收一个或更多个微BTB图形下一对读取730。解耦队列115可包括队列772和复用器775。复用器775可接收队列772的输出以及与一个或更多个微BTB图形下一对读取730关联的信息并在队列772的输出以及与一个或更多个微BTB图形下一对读取730关联的信息中选择。复用器775可通过DQ清空信号780来控制。解耦队列115可包括或者以其它方式生成解耦队列头NEXT_IA提取匹配信号770。在第三锁定阶段715,NEXT_IA复用器785可接收从解耦队列115输出的信息。复用器785可通过解耦队列头NEXT_IA提取匹配信号770来控制。
在一些实施例中,微BTB流水线700可包括微BTB条件分支条件部分755,其可跨越第一锁定阶段705、第二锁定阶段710和第三锁定阶段715。在第一锁定阶段705,可发生微BTB条件预测器读取740。在第二锁定阶段710,可执行后续预测更新745。在760,可执行后续预测转发。在765,可执行第二后续预测转发。在第三锁定阶段715,可执行一个或更多个微BTB图形下一预测写入750。
图8是示出根据一些实施例的从一个预测器分类到另一预测器分类的状态转换的示例实现方式的状态图800。现在参照图1、图2、图3和图8。
微BTB图形305的条件分支预测器375可具有用于预测与微BTB 110关联的分支的若干组件。例如,条件分支预测器375可包括静态预测器或者预测状态,其中总是被求解为跳转的分支(例如,815)处于ALWAYS_TAKEN835状态并且可被预测为跳转,直至主预测器265或执行单元将微BTB 110预测重定向为NOT_TAKEN为止。相反,条件分支预测器375可包括静态预测器或预测状态,其中总是被求解为不跳转的分支(例如,805)处于ALWAYS_NOT_TAKEN825状态并且可被预测为不跳转,直至主预测器265或执行单元将微BTB 110重定向至不同的预测为止。
作为另一示例,条件分支预测器375可包括高度偏向的条件分支预测器或预测状态,其中呈现动态行为但是呈现长时间的跳转或不跳转分支的分支可被分类为MOSTLY_TAKEN 840或MOSTLY_NOT_TAKEN 830分支。MOSTLY_TAKEN 840分支可总是被预测为跳转,直至其行为改变为止。类似地,MOSTLY_NOT_TAKEN 830分支可被预测为不跳转。
作为另一示例,条件分支预测器375可包括循环条件分支预测器或预测状态,其中呈现动态行为、但是具有数量少于或等于MAX_CADENCE的TAKEN结果的重复序列,跟随有单个NOT_TAKEN结果的分支可被分类为循环,并且可通过循环预测器845来预测。
作为另一示例,条件分支预测器375可包括反循环条件分支预测器或预测状态,其中呈现动态行为、但是具有数量少于或等于MAX_CADENCE的NOT_TAKEN结果的重复序列,跟随有单个TAKEN结果的分支可被分类为反循环,并且可通过反循环预测器850来预测。
作为另一示例,条件分支预测器375可包括一个或更多个动态条件分支预测器或预测,其中呈现动态行为但是在跳转或非跳转方向上没有很强偏向或者重复的TAKEN或NOT_TAKEN节奏的分支可利用一个或更多个条件分支预测器855来预测。
作为另一示例,条件分支预测器375可包括动态条件限制推测状态860,其中无法利用动态条件分支预测器准确地预测(即,低置信度)的动态分支被预测为NOT_TAKEN,直至置信度提高至它们可被准确地预测(即,高置信度)的水平为止。
分支结果序列可在提交后检查,并且可用于将分支分类到上述类中。下面提供示出从一个预测器分类至另一预测器分类的状态转换的一个实现方式的状态图。
图9是示出根据一些实施例的使用微BTB的微处理器的主前端逻辑部分执行零气泡条件分支预测的技术的流程图900。该技术可开始于905:微BTB可生成与微处理器的主前端逻辑部分的主BTB所生成的预测信息分离的预测信息。在910,解耦队列可接收预测信息并将预测信息排入队列。在915,解耦队列可将预测信息提供给微处理器的主前端逻辑部分。在920,微处理器的主前端逻辑部分可提取程序。在925,微BTB的图形的一个或更多个条目可表示程序的内部部分内的对应分支。在930,微BTB的图形的一个或更多个条目中的每一个可包括指向跳转方向上的第一下一分支的第一链接指针以及指向非跳转方向上的第二下一分支的第二链接指针。
在935,微BTB的CAM的一个或更多个项可包括指示CAM的给定条目中的分支是否足够热以保证作为新种子插入图形中的权重。在940,当状态位指示CAM的给定条目中的分支还未存在于图形中时,微BTB可将足够热的分支作为新种子插入图形中。在945,当状态位指示CAM的给定条目中的分支已经存在于图形中时,微BTB可有意地不将足够热的分支作为新种子插入图形中。
将理解,如图9所示的步骤无需按照所示的顺序发生,而是相反,可按照不同的顺序和/或在有中间步骤的情况下发生。
图10是包括具有前端105的图1的微处理器100的计算系统1000的框图。计算系统1000可包括时钟1010、随机存取存储器(RAM)1015、用户接口1020、调制解调器1025(诸如基带芯片集)、固态驱动器/盘(SSD)1040和/或处理器1035,其中的任何或者所有可电耦合至系统总线1005。计算系统1000的处理器1035可包括图1的前端105,前端105也可电耦合至系统总线1005。前端105可包括时钟1010、随机存取存储器(RAM)1015、用户接口1020、调制解调器1025、固态驱动器/盘(SSD)1040和/或处理器1035或者以其它方式与其接口。
在可选实施例中,微BTB不需要包括条件预测器。这种实现方式可非常小,以便于进行零气泡预测,并且该尺寸可导致它错过进行预测的一些机会。它仅可很少地将主预测结构电力关闭。在此可选实施例中,微BTB将仅包括高度偏向的跳转和总是跳转分支。
在另一另选实施例中,可使用循环缓冲器。循环缓冲器可捕获程序的内部循环。一些实施例可包括可预测循环退出的条件预测器。循环缓冲器的缺点在于,它必须将所有指令包括在程序的热内部部分中。另一方面,微BTB仅要求分支指令匹配在微BTB图形内。程序的热内部部分中的指令的实际数量是不相关的。这意味着微BTB可捕获非常大的循环以及具有无法通过循环缓冲器准确地预测的分支的非常复杂的程序图形。
一些实施例包括一种微处理器的前端,所述前端具有包括主分支目标缓冲器(BTB)的主前端逻辑部分。所述前端可包括:微BTB,与主前端逻辑部分的主BTB分离并且被配置为生成预测信息。所述前端可包括解耦队列,所述解耦队列耦合至微BTB和主前端逻辑部分,并且被配置为接收预测信息并将预测信息排入队列并且将排入队列的预测信息提供给主前端逻辑部分。所述微BTB可包括:图形,包括一个或更多个条目;内容可寻址存储器(CAM),包括一个或更多个项。主前端逻辑部分被配置为提取程序。微BTB的图形的所述一个或更多个条目中的每个条目表示所述程序的内部部分内的对应分支。微BTB的图形的所述一个或更多个条目中的每个条目包括指向跳转方向上的第一下一分支的第一链接指针以及指向非跳转方向上的第二下一分支的第二链接指针。
在一些实施例中,微BTB的图形的所述一个或更多个条目中的每个条目包括与指向跳转方向上的第一下一分支的第一链接指针关联的第一有效位以及与指向非跳转方向上的第二下一分支的第二链接指针关联的第二有效位。在一些实施例中,微BTB的图形被配置为当第一链接指针有效时设定第一有效位,当第二链接指针有效时设定第二有效位。
在一些实施例中,微BTB的图形的所述一个或更多个条目中的每个条目包括:下一预测位,被配置为指示是遵循指向待预测的第一下一分支的第一链接指针还是指向待预测的第二下一分支的第二链接指针。在一些实施例中,微BTB的图形的所述一个或更多个条目中的每个条目包括:成对位,被配置为指示是否应该并行预测两个分支。
在一些实施例中,微BTB的CAM的所述一个或更多个项中的每个项包括:权重,被配置为指示CAM的给定条目中的分支是否足够热以保证作为新种子插入微BTB的图形中。在一些实施例中,微BTB的CAM的所述一个或更多个项中的每个项包括:状态位,被配置为指示CAM的所述给定条目中的分支是否已经存在于微BTB的图形中。在一些实施例中,微BTB被配置为当状态位指示CAM的所述给定条目中的分支还未存在于图形中时,将足够热的分支作为新种子插入图形中。
在一些实施例中,微BTB被配置为当状态位指示CAM的所述给定条目中的分支已经存在于图形中时,不将足够热的分支作为新种子插入图形中。在一些实施例中,微BTB的CAM的所述一个或更多个项中的每个项包括:有效位,被配置为指示CAM的所述给定条目是否已被分配到微BTB的图形中。在一些实施例中,主前端逻辑部分包括主预测器。
在一些实施例中,微BTB的条件分支预测器包括静态预测状态,其中总是被求解为跳转的分支处于总是跳转状态,并且被预测为跳转,直至主预测器或执行单元将微BTB的预测重定向为不跳转状态为止。
在一些实施例中,微BTB的条件分支预测器包括:高度偏向的条件分支预测状态,其中呈现动态行为但是呈现长时间的跳转或不跳转分支的分支被分类为通常跳转分支或通常不跳转分支。
在一些实施例中,微BTB的条件分支预测器包括:循环条件分支预测状态,其中呈现动态行为、但是具有数量少于或等于阈值的跳转结果的重复序列,跟随有单个不跳转结果的分支被分类为循环并且可通过循环预测器来预测。
在一些实施例中,微BTB的条件分支预测器包括反循环条件分支预测状态,其中呈现动态行为、但是具有数量少于或等于阈值的不跳转结果的重复序列,跟随有单个跳转结果的分支被分类为反循环并且通过反循环预测器来预测。
以下讨论意在提供可实现特定方面的合适的机器的简要、一般描述。通常,所述机器包括附接有处理器、存储器(例如,随机存取存储器(RAM)、只读存储器(ROM)或其它状态保存介质)、存储装置、视频接口和输入/输出接口端口的系统总线。所述机器可至少部分地通过来自传统输入装置(诸如键盘、麦克风等)的输入以及通过从另一机器接收的指令、与虚拟现实(VR)环境的交互、生物反馈或其它输入信号来控制。如这里所用,术语“机器”意在广义地涵盖单个机器、虚拟机或者在通信上耦合的机器、虚拟机或一起操作的装置的系统。示例性机器包括诸如个人计算机、工作站、服务器、便携式计算机、手持装置、电话、平板等的计算装置以及诸如私人或公共交通工具(例如,汽车、火车、出租车等)的运输装置。
所述机器可包括嵌入式控制器,诸如可编程或不可编程逻辑装置或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等。所述机器可使用到一个或更多个远程机器的一个或更多个连接(诸如通过网络接口、调制解调器或者其它通信耦合)。机器可通过物理和/或逻辑网络来互连,诸如内联网、互联网、局域网、广域网等。本领域技术人员将理解,网络通信可使用各种有线和/或无线短距离或长距离载波和协议,包括射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)545.11、
Figure BDA0001031715580000201
光学、红外、线缆、激光等。
实施例可通过参考或结合关联的数据(包括功能、过程、数据结构、应用程序等)来描述,所述数据在被机器访问时导致所述机器执行任务或者定义抽象数据类型或低级硬件上下文。关联的数据可被存储在例如易失性和/或非易失性存储器(例如,RAM、ROM等)中或者其它存储装置及其关联的存储介质(包括硬盘驱动器、软盘、光学存储装置、磁带、闪速存储器、记忆棒、数字视频盘、生物存储装置等)中。关联的数据可经传输环境(包括物理和/或逻辑网络)以分组、串行数据、并行数据、传播信号等的形式传送,并且可按照压缩或加密格式来使用。关联的数据可用在分布式环境中,并且被本地地和/或远程地存储以便于机器访问。
已参照所示的实施例描述并示出了各种原理,将认识到,在不脱离这样的原理的情况下所示的实施例可在布置方式和细节上修改,并且可按照任何期望的方式组合。尽管以上讨论聚焦于特定实施例,可以想到其它配置。具体地讲,即使这里使用诸如“根据……的实施例”等的表达,这些短语指总体上引用实施例可能性,而非意在限制特定实施例配置。如这里所用,这些术语可引用可组合成其它实施例的相同或不同的实施例。
一些实施例可包括非暂时性机器可读介质,所述非暂时性机器可读介质包括:可由一个或更多个处理器执行的指令,所述指令包括执行如本文所述的元件的指令。
上述示意性实施例不应被解释为限制。尽管描述了几个实施例,本领域技术人员将容易理解,在不本质上脱离本公开的新颖教导和优点的情况下,可对那些实施例进行许多修改。因此,所有这些修改旨在被包括在如权利要求书中定义的各种实施例的范围内。

Claims (17)

1.一种微处理器的前端,包括:
主前端逻辑部分,包括主分支目标缓冲器BTB;
微BTB,与主前端逻辑部分的主BTB分离,并且被配置为生成预测信息;
解耦队列,耦合至微BTB和主前端逻辑部分,并且被配置为接收预测信息并将预测信息排入队列,并且将排入队列的预测信息提供给主前端逻辑部分,
其中,微BTB包括:
图形,包括一个或更多个条目;
内容可寻址存储器CAM,包括一个或更多个项,
其中,微BTB的CAM的所述一个或更多个项中的每个项包括:
权重,被配置为指示CAM的给定项中的分支是否足够热以保证作为新种子插入微BTB的图形中。
2.根据权利要求1所述的微处理器的前端,其中:
主前端逻辑部分被配置为提取程序;
微BTB的图形的所述一个或更多个条目中的每个条目表示所述程序的内部部分内的对应分支。
3.根据权利要求2所述的微处理器的前端,其中:
微BTB的图形的所述一个或更多个条目中的每个条目包括:指向跳转方向上的第一下一分支的第一链接指针以及指向非跳转方向上的第二下一分支的第二链接指针。
4.根据权利要求3所述的微处理器的前端,其中:
微BTB的图形的所述一个或更多个条目中的每个条目包括:与指向跳转方向上的第一下一分支的第一链接指针关联的第一有效位以及与指向非跳转方向上的第二下一分支的第二链接指针关联的第二有效位;
微BTB的图形被配置为当第一链接指针有效时设定第一有效位,当第二链接指针有效时设定第二有效位。
5.根据权利要求4所述的微处理器的前端,其中:
微BTB的图形的所述一个或更多个条目中的每个条目包括:
下一预测位,被配置为指示是遵循指向待预测的第一下一分支的第一链接指针还是指向待预测的第二下一分支的第二链接指针。
6.根据权利要求2所述的微处理器的前端,其中:
微BTB的图形的所述一个或更多个条目中的每个条目包括:
成对位,被配置为指示应该并行预测两个分支。
7.根据权利要求1所述的微处理器的前端,其中:
微BTB的CAM的所述一个或更多个项中的每个项包括:
状态位,被配置为指示CAM的所述给定项中的分支是否已经存在于微BTB的图形中。
8.根据权利要求7所述的微处理器的前端,其中:
微BTB被配置为当状态位指示CAM的所述给定项中的分支还未存在于图形中时,将足够热的分支作为新种子插入图形中;
微BTB被配置为当状态位指示CAM的所述给定项中的分支已经存在于图形中时,不将足够热的分支作为新种子插入图形中。
9.根据权利要求1所述的微处理器的前端,其中:
微BTB的CAM的所述一个或更多个项中的每个项包括:
有效位,被配置为指示CAM的给定项是否已被分配到微BTB的图形中。
10.根据权利要求1所述的微处理器的前端,其中:
主前端逻辑部分包括主预测器;
微BTB包括条件分支预测器。
11.根据权利要求10所述的微处理器的前端,其中,微BTB的条件分支预测器包括:
静态预测状态,其中总是被求解为跳转的分支处于总是跳转状态,并且被预测为跳转,直至主预测器或执行单元将微BTB的预测重定向为不跳转状态为止。
12.根据权利要求10所述的微处理器的前端,其中,微BTB的条件分支预测器包括:
高度偏向的条件分支预测状态,其中呈现动态行为但是呈现长时间的跳转或不跳转分支的分支被分类为通常跳转分支或通常不跳转分支。
13.根据权利要求10所述的微处理器的前端,其中,微BTB的条件分支预测器包括:
循环条件分支预测状态,其中,呈现动态行为、但是具有数量少于或等于阈值的跳转结果的重复序列,跟随有单个不跳转结果的分支被分类为循环并且可通过循环预测器来预测。
14.根据权利要求10所述的微处理器的前端,其中,微BTB的条件分支预测器包括:
反循环条件分支预测状态,其中,呈现动态行为、但是具有数量少于或等于阈值的不跳转结果的重复序列,跟随有单个跳转结果的分支被分类为反循环并且通过反循环预测器来预测。
15.一种用于使用微分支目标缓冲器BTB的微处理器的主前端逻辑部分的用于执行零气泡条件分支预测的计算机实现的方法,所述方法包括:
由微BTB生成与所述微处理器的主前端逻辑部分的主BTB所生成的预测信息分离的预测信息;
由解耦队列从微BTB接收预测信息;
由解耦队列将来自微BTB的预测信息排入队列;
由解耦队列将排入队列的预测信息提供给所述微处理器的主前端逻辑部分,
其中,微BTB包括图形和内容可寻址存储器CAM,所述方法还包括:
在微BTB的CAM的一个或更多个项中包括指示CAM的给定条目中的分支是否足够热以保证作为新种子插入微BTB的图形中的权重。
16.根据权利要求15所述的计算机实现的方法,其中,所述方法还包括:
由所述微处理器的主前端逻辑部分提取程序;
由微BTB的图形的一个或更多个条目表示所述程序的内部部分内的对应分支;
在微BTB的图形的所述一个或更多个条目中的每个条目中包括:指向跳转方向上的第一下一分支的第一链接指针以及指向非跳转方向上的第二下一分支的第二链接指针。
17.根据权利要求16所述的计算机实现的方法,还包括:
当状态位指示CAM的所述给定条目中的分支还未存在于图形中时,由微BTB将足够热的分支作为新种子插入图形中;
当状态位指示CAM的所述给定条目中的分支已经存在于图形中时,微BTB不将足够热的分支作为新种子插入图形中。
CN201610480501.3A 2015-06-26 2016-06-27 使用微分支目标缓冲器的高性能零气泡条件分支预测 Active CN106293639B (zh)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201562185530P 2015-06-26 2015-06-26
US201562185535P 2015-06-26 2015-06-26
US62/185,535 2015-06-26
US62/185,530 2015-06-26
US201562216352P 2015-09-09 2015-09-09
US62/216,352 2015-09-09
US15/047,617 2016-02-18
US15/047,617 US10402200B2 (en) 2015-06-26 2016-02-18 High performance zero bubble conditional branch prediction using micro branch target buffer

Publications (2)

Publication Number Publication Date
CN106293639A CN106293639A (zh) 2017-01-04
CN106293639B true CN106293639B (zh) 2022-01-11

Family

ID=57651449

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610480501.3A Active CN106293639B (zh) 2015-06-26 2016-06-27 使用微分支目标缓冲器的高性能零气泡条件分支预测

Country Status (2)

Country Link
KR (1) KR102635965B1 (zh)
CN (1) CN106293639B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190235873A1 (en) * 2018-01-30 2019-08-01 Samsung Electronics Co., Ltd. System and method of reducing computer processor power consumption using micro-btb verified edge feature
US11481221B2 (en) * 2018-05-02 2022-10-25 Micron Technology, Inc. Separate branch target buffers for different levels of calls
US20210149676A1 (en) * 2019-11-14 2021-05-20 Higon Austin R&D Center Corporation Branch Prediction Method, Branch Prediction Unit and Processor Core
CN115617402B (zh) * 2022-11-18 2023-04-07 北京数渡信息科技有限公司 一种适用于通用处理器的解耦合分支预测方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1555006A (zh) * 2003-12-24 2004-12-15 智慧第一公司 远跳跃及远呼叫指令的退回分支预测机制的处理器及方法
CN102566977A (zh) * 2010-12-09 2012-07-11 三星电子株式会社 字节码分支处理器及方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438682B1 (en) * 1998-10-12 2002-08-20 Intel Corporation Method and apparatus for predicting loop exit branches
US6601161B2 (en) * 1998-12-30 2003-07-29 Intel Corporation Method and system for branch target prediction using path information
US7676663B2 (en) * 2004-03-09 2010-03-09 International Business Machines Corporation Method, system and program product for pipelined processor having a branch target buffer (BTB) table with a recent entry queue in parallel with the BTB table
US20080209190A1 (en) * 2007-02-28 2008-08-28 Advanced Micro Devices, Inc. Parallel prediction of multiple branches
US7937573B2 (en) * 2008-02-29 2011-05-03 Freescale Semiconductor, Inc. Metric for selective branch target buffer (BTB) allocation
US20110078425A1 (en) * 2009-09-25 2011-03-31 Shah Manish K Branch prediction mechanism for predicting indirect branch targets
US9250912B2 (en) * 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
JP6523274B2 (ja) * 2013-10-25 2019-05-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 分岐予測ユニット及びレベル1命令キャッシュにおける帯域幅の増加

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1555006A (zh) * 2003-12-24 2004-12-15 智慧第一公司 远跳跃及远呼叫指令的退回分支预测机制的处理器及方法
CN102566977A (zh) * 2010-12-09 2012-07-11 三星电子株式会社 字节码分支处理器及方法

Also Published As

Publication number Publication date
KR102635965B1 (ko) 2024-02-13
KR20170001602A (ko) 2017-01-04
CN106293639A (zh) 2017-01-04

Similar Documents

Publication Publication Date Title
US10402200B2 (en) High performance zero bubble conditional branch prediction using micro branch target buffer
TWI506552B (zh) 迴圈預測器指導的迴圈緩衝器
KR102077753B1 (ko) 레벨 1 명령 캐시 및 분기 예측 유닛에서의 대역폭 증가
US7685410B2 (en) Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects
EP2602711B1 (en) Next fetch predictor training with hysteresis
US7861066B2 (en) Mechanism for predicting and suppressing instruction replay in a processor
US7437537B2 (en) Methods and apparatus for predicting unaligned memory access
US9442736B2 (en) Techniques for selecting a predicted indirect branch address from global and local caches
CN106293639B (zh) 使用微分支目标缓冲器的高性能零气泡条件分支预测
CN106681695B (zh) 提前取出分支目标缓冲器
US6721877B1 (en) Branch predictor that selects between predictions based on stored prediction selector and branch predictor index generation
US20080072024A1 (en) Predicting instruction branches with bimodal, little global, big global, and loop (BgGL) branch predictors
CN101176060A (zh) 每索引存储两个或更多分支目标地址的分支目标地址高速缓冲存储器
KR20090089358A (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
CN116302106A (zh) 用于促进分支预测单元的改善的带宽的设备、方法和系统
US20030115021A1 (en) Cellular automaton cache method and apparatus
US9778934B2 (en) Power efficient pattern history table fetch in branch predictor
CN113515310A (zh) 微处理器和分支预测控制方法
US20040168043A1 (en) Line predictor which caches alignment information
US6546478B1 (en) Line predictor entry with location pointers and control information for corresponding instructions in a cache line
US6721876B1 (en) Branch predictor index generation using varied bit positions or bit order reversal
US10318303B2 (en) Method and apparatus for augmentation and disambiguation of branch history in pipelined branch predictors
US11947461B2 (en) Prefetch unit filter for microprocessor

Legal Events

Date Code Title Description
C06 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