CN114489808A - 高置信度多分支偏移预测器 - Google Patents
高置信度多分支偏移预测器 Download PDFInfo
- Publication number
- CN114489808A CN114489808A CN202111114646.9A CN202111114646A CN114489808A CN 114489808 A CN114489808 A CN 114489808A CN 202111114646 A CN202111114646 A CN 202111114646A CN 114489808 A CN114489808 A CN 114489808A
- Authority
- CN
- China
- Prior art keywords
- branch
- taken
- circuitry
- unit
- prediction
- 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 description 54
- 230000009191 jumping Effects 0.000 claims description 8
- 230000015654 memory Effects 0.000 description 65
- 238000010586 diagram Methods 0.000 description 26
- 239000000463 material Substances 0.000 description 24
- 238000012545 processing Methods 0.000 description 12
- TVZRAEYQIKYCPH-UHFFFAOYSA-N 3-(trimethylsilyl)propane-1-sulfonic acid Chemical compound C[Si](C)(C)CCCS(O)(=O)=O TVZRAEYQIKYCPH-UHFFFAOYSA-N 0.000 description 11
- 238000007667 floating Methods 0.000 description 11
- 238000012549 training Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 235000013547 stew Nutrition 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 206010000117 Abnormal behaviour Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000000758 substrate Substances 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/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/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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
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
要求优先权
本申请要求2020年10月23日提交的并且题为“HIGH CONFIDENCE MULTIPLEBRANCH OFFSET PREDICTOR(高置信度多分支偏移预测器)”的申请号为202041046222的印度临时专利申请的优先权,该申请通过引用以其整体被合并以用于所有目的。
技术领域
本公开一般涉及处理器技术、分支预测技术和分支偏移预测技术。
背景技术
一些中央处理器单元(CPU)核可利用推测性执行来避免流水线(pipeline)停顿并获得更好的性能,这允许执行继续,而不必等待分支目标的架构解析(architecturalresolution)。分支预测技术利用数字电路,该数字电路在分支指令被执行之前,猜测分支将走哪条路。正确的预测/猜测改进了指令流水线中的流程。
一般来说,有两种分支预测:条件分支的分支预测,其可被理解为对分支的预测作为“采取”或“不采取”;以及无条件分支(包括直接分支和间接分支两者)的分支目标预测。间接分支预测是总体分支预测的重要部分,因为间接分支在其目标解析中通常涉及更高的时延,尤其是对于其目标需要从特定存储器位置提取(fetch)的存储器间接分支。分支预测单元(BPU)可通过基于预测点之前的控制流历史(也称为分支历史)、分支指令指针(IP)和分支类型向CPU的前端(FE)提供预测目标来支持推测性执行。
附图说明
本发明的各种实施例在所附附图的图中通过示例的方式而非限制的方式被图示,并且附图中:
图1A是根据实施例的集成电路的示例的框图;
图1B是根据实施例的电子设备的示例的框图;
图2A是根据实施例的提取的指令流的示例的说明性图解;
图2B是根据实施例的表条目的示例格式的说明性图解;
图3A至3B是根据实施例的方法的示例的流程图;
图4是根据实施例的电子设备的示例的框图;
图5A至5B是根据实施例的方法的另一示例的流程图;
图6A是图示根据本发明实施例的示例性有序流水线和示例性寄存器重命名、乱序(out-of-order)发布/执行流水线的框图。
图6B是图示根据本发明实施例的要被包括在处理器中的示例性寄存器重命名、乱序发布/执行架构核和有序架构核的示例性实施例两者的框图;
图7A-B图示了更特定的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其它核)之一;
图8是根据本发明实施例的处理器的框图,该处理器可具有多于一个的核,可具有集成存储器控制器,并且可具有集成图形;
图9-12是示例性计算机架构的框图;以及
图13是根据本发明实施例的对比使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本文中讨论的实施例各种各样地提供了用于分支预测和/或分支目标预测的技术和机制。本文中描述的技术可在一个或多个电子装置中实现。可利用本文中描述的技术的电子装置的非限制性示例包括任何种类的移动装置和/或固定装置,诸如相机、蜂窝电话、计算机终端、台式计算机、电子阅读器、传真机、自助机(kiosk)、膝上型计算机、上网本计算机、笔记本计算机、因特网装置、支付终端、个人数字助理、媒体播放器和/或记录器、服务器(例如,刀片服务器、机架式服务器、其组合等)、机顶盒、智能电话、平板个人计算机、超移动个人计算机、有线电话及其组合等。更一般地,本文中描述的技术可用于各种各样电子装置中的任何电子装置,其包括集成电路,所述集成电路可操作以预测分支目标或者预测分支指令是采取还是不采取。
在以下描述中,讨论了众多细节以提供对本公开的实施例的更透彻的解释。然而,对本领域技术人员而言将显而易见的是,本公开的实施例可在没有这些特定细节的情况下被实践。在其它实例中,众所周知的结构和装置以框图形式示出,而不是详细示出,以免模糊了本公开的实施例。
注意,在实施例的对应附图中,信号用线表示。一些线可更粗,以指示更大数量的组成信号路径,和/或在一端或多端具有箭头,以指示信息流的方向。这样的指示不旨在是限制。而是,这些线与一个或多个示例性实施例结合使用,以便于更容易理解电路或逻辑单元。由设计需求或偏好所规定的任何表示的信号实际上可包括一个或多个信号,这些信号可在任一方向上行进,并且可采用任何合适类型的信号方案来实现。
贯穿说明书以及在权利要求书中,术语“被连接”意味着直接连接,诸如被连接的事物之间的电、机械或磁连接,而没有任何中间装置。术语“被耦合”意味着直接连接或间接连接,诸如被连接的事物之间的直接的电、机械或磁连接或通过一个或多个无源或有源中间装置的间接连接。术语“电路”或“模块”可指一个或多个无源和/或有源组件,它们被布置成彼此协作以提供期望的功能。术语“信号”可指至少一个电流信号、电压信号、磁信号或数据/时钟信号。“一”(a、an)和“该”的含义包括复数引用。“在……中”的含义包括“在……中”和“在……上”。
术语“装置”一般可根据该术语使用的上下文来指设备。例如,装置可指层或结构的堆叠、单个结构或层、具有有源和/或无源元件的各种结构的连接等。通常,装置是具有x-y-z笛卡尔坐标系的沿x-y方向的平面和沿z方向的高度的三维结构。装置的平面也可以是包括该装置的设备的平面。
术语“缩放”通常指将设计(原理图和布局)从一种工艺技术转换到另一种工艺技术,并随后在布局区域上减小。术语“缩放”通常也指缩小同一技术节点内的布局和装置。术语“缩放”还可指相对于另一个参数(例如,供电级别(power supply level))调整(例如,减慢或加快——即,分别按比例缩小或按比例增加)信号频率。
术语“基本上”、“靠近”、“近似”、“接近”和“大约”一般指的是在目标值的+/-10%内。例如,除非在它们的使用的明确上下文中另有指定,否则术语“基本上相等”、“大约相等”和“近似相等”意味着这样描述的事物之间不多于偶然的变化。在本领域中,这样的变化通常不多于预定目标值的+/-10%。
要理解,如此使用的术语在适当的情况下是可互换的,使得本文中描述的发明的实施例例如能够在除了本文中图示或另外描述的那些定向(orientation)之外的其它定向操作。
除非另有指定,否则用于描述共同对象的序数形容词“第一”、“第二”和“第三”等的使用仅仅指示引用了同样对象的不同实例,并且不旨在暗示如此描述的对象必须在时间上、空间上、排名上或以任何其它方式按给定的顺序。
说明书和权利要求书中的术语“左”、“右”、“前”、“后”、“顶部”、“底部”、“之上”、“之下”等(如果有的话)用于描述性目的,而不一定用于描述永久的相对位置。例如,本文中所使用的术语“之上”、“之下”、“前侧”、“后侧”、“顶部”、“底部”、“之上”、“之下”和“在……上”指的是一个组件、结构或材料相对于装置内其它参考组件、结构或材料的相对位置,其中此类物理关系是值得注意的。这些术语在本文中仅用于描述性目的,并且主要用在装置z轴的上下文内,并且因此可与装置的定向有关。因此,如果装置相对于所提供的图的上下文上下颠倒取向,则在本文中提供的图的上下文中的第二材料“之上”的第一材料也可在第二材料“之下”。在材料的上下文中,部署在另一个材料之上或之下的一个材料可直接接触,或者可具有一个或多个中介材料(intervening material)。而且,部署在两个材料之间的一个材料可直接与两层接触,或者可具有一个或多个中介层。相比之下,在第二材料“上”的第一材料与该第二材料直接接触。在组件组装件的上下文中要做类似区分。
术语“在……之间”可在装置的z轴、x轴或y轴的上下文中使用。在两个其它材料之间的材料可与那些材料中的一者或两者接触,或者它可由一个或多个中介材料与其它两个材料的两者分离。因此,在两个其它材料“之间”的材料可与所述其它两个材料中的任一个接触,或者它可通过中者材料耦合到所述其它两个材料。在两个其它装置之间的装置可直接连接到那些装置中的一者或两者,或者它可由一个或多个中介装置与其它两个装置的两者相分离。
如贯穿本描述以及在权利要求书中所使用的,由术语“……中的至少一个”或“……中的一个或多个”连接的项目列表可意味着所列出项目的任何组合。例如,短语“A、B或C中的至少一个”可意味着A;B;C;A和B;A和C;B和C;或者A、B和C。要指出,与任何其它图的元素具有相同的附图标记(或者名称)的图的那些元素能以与所描述的方式类似的任何方式操作或起作用,但不限于此。
此外,本公开中讨论的组合逻辑和顺序逻辑的各种元素都可涉及物理结构(诸如与(AND)门、或(OR)门或者异或(XOR)门),或者涉及实现逻辑结构的装置的合成的集合(collection)或以其它方式优化的集合,所述逻辑结构是所讨论的逻辑的布尔等效物。
一些实施例有利地提供了用于高置信度多分支偏移预测器(HCoMB)的技术。例如,偏移可指高速缓存行中的相对位置。现代超标量处理器通过从工作负载中抽取(extract)更多指令级并行性(ILP)来实现更高的性能。为了促进这一点,超标量处理器采用不断增长的乱序(OOO)指令窗口来标识越来越多的独立指令。为了支持如此宽和深的机器,处理器的前端需要向OOO提供非常高的持续指令带宽。
前端带宽的主要限制器是分支预测单元(BPU)。为了更好地理解这一点,考虑常规BPU的操作。常规BPU使用程序计数器(PC)和分支历史(Stew)来预测高速缓存行中的每个分支,并且然后确定所有分支当中的第一个采取的分支。此后,BPU丢弃第一个采取的分支之后的所有指令。在下一个周期,BPU操作从分支指令的目标重新开始。因而,每一个采取的分支都引起BPU重新转向(re-steering)事件,该事件涉及丢弃未使用的提取字节和周期变化。这限制了前端的总体带宽和处理器的性能。
为了解决上面的问题,一些实施例提供了用于HCoMB偏移预测器的技术,所述HCoMB偏移预测器可提供非常高的持续BPU带宽。HCoMB偏移预测器的实施例可利用PC和Stew(例如,当前程序状态)并标识程序流中的紧接着的N个采取分支以及它们的目标。在下一个周期中,HCoMB偏移预测器直接跳转到第N个采取分支的目标。
在常规预测器预测高速缓存行中的每个分支并且然后在它们之中挑选第一个采取的分支(如果有的话)的情况下,HCoMB偏移预测器的实施例可直接根据当前PC产生紧接着的N个采取分支的相对位置和紧接着的N个采取分支的目标。这是一些实施例的主要微架构好处。附加地,与在每个采取分支之后被重新转向的常规预测器相反,HCoMB偏移预测器的实施例可仅在N个采取分支之后被重新转向,有效地使HCoMB偏移预测器的带宽是常规预测器的带宽的N倍。因而,一些实施例可使用非常简单的微架构和低存储来提供高得多的BPU带宽。
一些预测器可利用基于路径的下一轨迹预测(Path-based Next Traceprediction)(PNT),其中下一轨迹预测器可预测轨迹单元。与预测每个分支的常规分支预测器相比,PNT预测器一次(in one shot)预测整个轨迹。PNT预测器将轨迹序列记录为程序的路径历史,并使用记录的序列来预测下一轨迹。
解码流缓冲器(DSB)简单流(Simple-stream)(DSS)技术标识极其稳定的代码区域,在所述代码区域中控制流总是恒定的。此类控制流一般是程序中总是采取或总是不采取分支的结果。对于这样的代码区域,DSS记录指向属于该区域的所有微操作的DSB指针。下一次遇到相同的代码区域时,DSS提供指向DSB的所有指针,微操作流从所述DSB被读出并供应给下一个流水线阶段。在此时间期间,不咨询主BPU。因而,DSS可在单个周期内供应跨越多个采取分支的指令流,而无任何BPU重新转向操作,有机会增加前端带宽。
PNT预测器仅支持有限的轨迹大小(例如,16个指令)或有限数量的分支(采取或不采取),这可能太小,并且不适合支持非常宽、深的OOO核的带宽要求。相比之下,HCoMB偏移预测器的实施例可提供关于紧接着的N个采取分支的信息,如果这N个采取分支相距很远,则这些分支可构成任意的非常长的轨迹。此外,PNT预测器不检查分支是采取的还是不采取的。如果某个程序区域有许多连续的不采取分支,则PNT预测器将把整个区域分成各六(6)个分支的多个轨迹,并且花费多个周期来预测这整个区域。相比之下,HCoMB偏移预测器的实施例仅考虑采取的分支,因为不采取的分支不会改变程序的自然控制流,并且因此不需要预测。通过隐式预测不采取的分支,单个HCoMB预测跨越比由单个PNT预测覆盖的代码区域大得多的代码区域。因此,与PNT预测器相比,HCoMB可以以低得多的存储提供高得多的吞吐量。
DSS完全依赖于DSB实现。它只记录DSB指针,而实际的微操作必须由DSB本身供应。因此,DSS要求DSB中的包容性。如果DSB中不存在微操作,则DSS不能给出流预测。HCoMB偏移预测器的实施例对DSB没有任何依赖性。HCoMB可作为独立的分支预测器工作。就分支稳定性对预测稳定性而言,DSS非常依赖于给定分支的稳定性(例如,DSS仅在分支总是采取或总是不采取时工作)。如果分支有怪异行为,则DSS不能处置它。另一方面,HCoMB偏移预测器的实施例依赖于预测稳定性,这意味着HCoMB偏移预测器也可非常好地对随时间改变行为的分支起作用,如果该改变能被准确预测的话。例如,HCoMB偏移预测器的实施例在其预测中结合了分支历史(Stew),以更好地对随时间改变行为的分支起作用。分支历史允许HCoMB偏移预测器的实施例区分同一分支的每个采取的或不采取的实例,并因此单独准确地预测每个实例。分支稳定性和预测稳定性之间的这种对比给了HCoMB偏移预测器比DSS优越的覆盖和性能的实施例。
HCoMB偏移预测器的一些实施例可每周期预测多个采取分支,并且然后跳转到最后预测采取的分支的目标。给定当前的PC和Stew,HCoMB偏移预测器的实施例生成指向预测要采取的紧接着的N个分支的指针。使用这些指针,可准确地标识采取的分支的PC及其目标,并且从而,可从当前点直到第N个采取的分支构造整个控制流。在这个操作期间,主BPU预测被丢弃。在HCoMB预测后,BPU被重新定向以从最后采取的分支的目标开始。从而,通过一次预测多个采取分支,BPU不需要在每个采取的分支之后被重新转向,并且这显著增加了前端(FE)的带宽。有利的是,一些实施例提供了一种机制来增强处理器的FE的带宽,该带宽在缩放处理器核的深度-宽度时是关键的限制。另外,一些实施例可以是高度区域高效的,并且对于大部分工作,利用FE中的现有硬件结构。从而,一些实施例可提供一种简单的方式来支持各种各样处理器的重要要求。
参考图1A,集成电路10的实施例可包括前端单元11和耦合到前端单元11的电路系统13,其中电路系统13被配置成提供HCoMB偏移预测器。例如,电路系统13可被配置成标识多个采取分支(MTB)预测表中对应于条件分支指令的条目,确定该条目的置信度级别是否超过阈值置信度级别,并且如果确定是这样,则从MTB预测表中的条目提供源于(stemfrom)条件分支指令的多个采取分支预测。在一些实施例中,电路系统13可被进一步配置成基于最后采取的分支和分支历史针对条件分支指令生成标签信息,并且基于生成的标签信息来标识MTB表中的条目。例如,电路系统13可被配置成每周期预测多个采取分支,并且然后跳转到最后预测采取的分支的目标。在一些实施例中,电路系统13可被进一步配置成基于当前PC和分支历史(stew)生成指向预测要采取的紧接着的N个分支的指针,其中N是大于1的整数值(N>1)。在一些实施例中,电路系统13可被进一步配置成基于生成的指针来标识采取的分支的PC及其目标。例如,电路系统13可被配置成基于生成的指针来构造从当前点直到第N个采取的分支的整个控制流。在一些实施例中,该电路系统可被配置成丢弃主BPU预测,并且重新定向BPU以从最后采取的分支的目标开始。
前端单元11和/或电路系统13的实施例可被结合在处理器中,所述处理器包括例如核990(图6B)、核1102A-N(图8、12)、处理器1210(图9)、协处理器1245(图9)、处理器1370(图10-11)、处理器/协处理器1380(图10-11)、协处理器1338(图10-11)、协处理器1520(图12)和/或处理器1614、1616(图13)。特别地,电路系统13的实施例可被结合在前端单元930(图6B)中。
参考图1B,电子设备20的实施例可包括解码一个或多个指令的前端单元21,以及通信地耦合到前端单元21以执行经解码的一个或多个指令的执行单元22。前端单元21可包括用于为一个或多个指令提供分支预测信息的BPU 23,以及通信地耦合到分支预测单元23的HCoMB偏移预测器24,HCoMB偏移预测器24包括用于每周期预测多个采取分支并且然后跳转到最后预测采取的分支的目标的电路系统。例如,该电路系统可被配置成标识MTB预测表中对应于条件分支指令的条目,确定该条目的置信度级别是否超过阈值置信度级别,并且如果确定是这样,则从MTB预测表中的条目提供源于条件分支指令的多个采取分支预测。在一些实施例中,该电路系统可被进一步配置成基于最后采取的分支和分支历史针对条件分支指令生成标签信息,并且基于生成的标签信息来标识MTB表中的条目。在一些实施例中,该电路系统可被进一步配置成基于当前PC和分支历史(stew)生成指向预测要采取的紧接着的N个分支的指针。在一些实施例中,该电路系统可被进一步配置成基于生成的指针来标识采取的分支的PC及其目标。例如,该电路系统可被配置成基于生成的指针来构造从当前点直到第N个采取的分支的整个控制流。在一些实施例中,该电路系统可被配置成丢弃BPU23的预测,并且重新定向BPU 23以从最后采取的分支的目标开始。
前端单元21、执行单元22、BPU 23和/或HCoMB偏移预测器24的实施例可被结合在处理器中,所述处理器包括例如核990(图6B)、核1102A-N(图8、12)、处理器1210(图9)、协处理器1245(图9)、处理器1370(图10-11)、处理器/协处理器1380(图10-11)、协处理器1338(图10-11)、协处理器1520(图12)和/或处理器1614、1616(图13)。特别地,HCoMB偏移预测器24的实施例可被结合在前端单元930(图6B)中,并且通信地耦合到分支预测单元932(图6B)。
图2A是程序中轨迹的说明性图解。图2A示出了分成各自包括四(4)个采取分支的多个轨迹的程序。提取的指令流表示主分支预测器的输出。HCoMB偏移预测器的实施例窥探该指令流,并将采取的分支记录在N条目缓冲器(图中N=4)中。当缓冲器已满时,所有信息(现在称为轨迹)都被复制到一HCoMB表条目中。该表条目使用轨迹条目PC(轨迹中的第一个有效指令)的散列和到目前为止的程序的分支历史来标识。复制数据后,缓冲器被清除,并且对于下一轨迹的训练开始。为了学习HCoMB轨迹,在第一步骤中,HCoMB偏移预测器标识在程序流中背靠背发生的采取分支的轨迹。
图2B是HCoMB表条目的示例格式的说明性图解。对于预测器查找,HCoMB偏移预测器的实施例可由存储预测分支轨迹所要求的所有信息的单个集合关联表(set-associative table)组成。表中的每个条目都保存了有关程序中一(1)个轨迹的数据。示例HCoMB表条目表现得如图2B中所示。
在查找期间,根据最后采取的分支的目标和分支历史来生成索引和标签。索引和标签分别被用于标识相关轨迹的集合和路线(way)。在标识集合-路线之后,可检查条目的置信度。如果置信度超过阈值或饱和(例如,等于置信度字段的最大值),则可预测该轨迹,否则,训练必须继续以在该轨迹上构建置信度。总的来说,HCoMB偏移预测器查找的实施例可类似于主BPU查找操作,并且可采用现有结构和可用信息无缝地工作。
参考图3A至3B,方法30的实施例示出了预测(图3A)和训练(图3B)期间的HCoMB操作的序列。方法30包括在框31提取高速缓存行,在框32对高速缓存行执行主BPU查找,以及在框33提供来自分支目标缓冲器(BTB)查找的最终预测。同时,方法30还包括在框34对高速缓存行执行HCoMB查找,并在框35确定是否有HCoMB命中(hit)。如果否,则方法30可继续在框36启用HCoMB训练,并且然后继续训练(图3B)。如果在框35有命中,则方法30可继续在框37确定是否有高置信度。如果否,则方法30可继续在框36启用HCoMB训练,并且然后继续训练。
如果在框37存在高置信度,则方法30可继续在框38取消主BPU查找并取消BTB查找,并改为在框39从HCoMB数据结构读取BTB集合和路线指针,并在框40提供BTB读出条目。然后,方法30可继续在框41从HCoMB预测器或者从主BPU向指令高速缓存(Icache)和/或解码器提供最终预测。
当训练被启用时,方法30可包括在框42确定高速缓存行是否包括采取的分支或者高速缓存行是否在交叉,如果是这样,则在框43递增预测计数。方法30然后可包括在框44确定下一个预测是否命中HCoMB,并且如果是这样,则在框45确定HCoMB信息是否匹配主BPU信息。如果在框45信息匹配,则方法30可包括在框46递增用于条目的置信度计数并且递增用于条目的效用计数(utility count)。如果在框45信息不匹配,则方法30可包括在框47将用于条目的置信度计数和效用计数重置为零。如果在框44下一个预测没有命中HCoMB,则方法30可继续在框48将预测写入到预分配缓冲器。在框46、47和48之后,方法30可继续在框49确定预测计数是否已满,并且如果是这样,则在框50将信息写入到HCoMB表和/或交换机集群(switch cluster)。
在训练(图3B)期间,HCoMB偏移预测器的实施例可依赖于来自主分支预测器的输入。如果轨迹不存在于HCoMB表中(查找期间未命中),则HCoMB将从主分支预测器出来的预测记录在预分配缓冲器中。当该缓冲器已满时,所有信息被写入到HCoMB表中的空条目。如果没有空条目可用,则该集合中所有条目的效用都递减。当一条目的效用变为0时,该条目用新数据来替换。
如果轨迹在HCoMB表中具有有效条目,但是它具有低置信度,则HCoMB偏移预测器的实施例可窥探主BPU预测,并且将每个预测与存储在HCoMB表条目中的数据进行匹配。如果HCoMB数据与主BPU预测一致,则置信度递增。如果存在不匹配,则整个条目的置信度和效用被重置。
当条目的置信度超过阈值或饱和(例如,用于置信度的计数器或字段值达到其最大值)时,HCoMB偏移预测器的实施例可通过覆写(override)主BPU来执行实际预测。HCoMB偏移预测器可为轨迹中的每个采取的分支产生N个预测。注意,当HCoMB偏移预测器执行实际预测时,该预测与分支执行的输出进行比较。如果预测错误,则发生流水线刷新(flush)。此外,HCoMB表条目无效。
参考图4,电子设备的实施例描绘了分支预测流水线中的HCoMB通过接口通信(interfacing)的示例。整个BPU复合体跨越处理器中的多个流水线阶段,表示为N、N+1等等。主分支预测器在阶段N中操作。HCoMB偏移预测器的实施例也在阶段N中在主分支预测器(MBP)旁边(alongside)操作。N-1阶段向两个预测器(MBP和HCoMB)提供查找PC(最后可用的采取分支目标)和最后可用的分支历史。在阶段N中,一些实施例可检查查找是否导致给定条目中的HCoMB命中和高置信度轨迹。当这种情况发生时,HCoMB偏移预测器的实施例可发布对MBP预测的取消。
在阶段N中,连同检查命中/未命中和轨迹置信度一起,一些实施例还可读出HCoMB表条目的内容。注意,如图2B中所示,HCoMB条目不保存实际预测。而是,它只记录指向分支目标缓冲器(BTB)条目的集合-路线指针,所述分支目标缓冲器(BTB)条目保存实际预测。这些指针在下一阶段被发送到BTB。在N+1中,所有预测信息(分支PC、目标)都已使用BTB获得,并被发送到接下去的流水线阶段。进一步的流水线阶段基于来自HCoMB的预测向BPU发布重新定向,以及类似于标准BPU操作更新采取的分支历史。
因而,通过仅记录BTB指针,HCoMB偏移预测器的实施例可实质上在整个预测操作期间充当控制单元。这也突出了一些实施例的主要优点,因为它大大降低了预测器的存储成本,并进一步有助于其在处理器设计中的采纳。
有利的是,在预测程序中的所有动态分支的显著百分比(significantpercentage)(例如,大约30%)时,HCoMB偏移预测器的实施例可提供优于基线的每周期指令(IPC)的改进。HCoMB偏移预测器的实施例可特别有益于那些具有高分支比例和小分支到分支距离的那些基准。HCoMB偏移预测器的性能可用更大的表进一步提高。
参考图5A至5B,方法55的实施例可包括在框56标识MTB预测表中对应于条件分支指令的条目,在框57确定该条目的置信度级别是否超过阈值置信度级别,并且如果确定是这样,则在框58从MTB预测表中的条目提供源于条件分支指令的多个采取分支预测。例如,方法55还可包括在框59基于最后采取的分支和分支历史针对条件分支指令生成标签信息,并且在框60基于生成的标签信息来标识MTB预测表中的条目。
方法55的一些实施例可进一步包括在框61跳转到最后预测采取的分支的目标。例如,方法55可包括:在框62基于当前PC和分支历史来生成指向预测要采取的紧接着的N个分支的指针,其中N是大于1的整数值;在框63基于生成的指针来标识采取的分支的PC和采取的分支的目标;并且在框64基于生成的指针来构造从当前点直到第N个采取的分支的整个控制流。方法55的一些实施例可进一步包括在框65丢弃主BPU的预测,并且重新定向主BPU以从最后采取的分支的目标开始。
本领域那些技术人员将领会的是,各种各样的装置可从前述实施例中受益。以下示例性核架构、处理器和计算机架构是装置的非限制性示例,所述装置可有益地结合本文中描述的技术的实施例。
示例性核架构、处理器和计算机架构
处理器核可用不同方式、出于不同目的并且在不同处理器中被实现。例如,此类核的实现可包括:1)意图用于通用计算的通用有序核;2)意图用于通用计算的高性能通用乱序核;3)意图主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括意图用于通用计算的一个或多个通用有序核和/或意图用于通用计算的一个或多个通用乱序核的CPU;以及2)包括意图主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。此类不同的处理器导致不同的计算机系统架构,其可包括:1)与CPU分开的芯片上的协处理器;2)与CPU在相同的封装中的分开的管芯上的协处理器;3)与CPU相同的管芯上的协处理器(在此情况下,此类协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑的专用逻辑,或者称为专用核);以及4)可在相同管芯上包括所描述的CPU(有时称为(一个或多个)应用核或(一个或多个)应用处理器)、上述协处理器和附加功能性的片上系统。接下来描述示例性核架构,后面是对示例性处理器和计算机架构的描述。
示例性核架构
有序和乱序核框图
图6A是图示根据本发明实施例的示例性有序流水线和示例性寄存器重命名、乱序发布/执行流水线的框图。图6B是图示根据本发明实施例的要被包括在处理器中的示例性寄存器重命名、乱序发布/执行架构核和有序架构核的示例性实施例的框图。图6A-6B中的实线框图示了有序流水线和有序核,而虚线框的可选添加图示了寄存器重命名、乱序发布/执行流水线和核。给定有序方面是乱序方面的子集,将描述乱序方面。
在图6A中,处理器流水线900包括提取阶段902、长度解码阶段904、解码阶段906、分配阶段908、重命名阶段910、调度(也称为分派或发布)阶段912、寄存器读取/存储器读取阶段914、执行阶段916、写回/存储器写入阶段918、异常处置阶段922和提交阶段924。
图6B示出了处理器核990,其包括耦合到执行引擎单元950的前端单元930,并且所述执行引擎单元950和前端单元930两者被耦合到存储器单元970。核990可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或者混合或备选核类型。作为又一选项,核990可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等等。
前端单元930包括耦合到指令高速缓存单元934的分支预测单元932,该指令高速缓存单元934被耦合到指令转译后备缓冲器(instruction translation lookasidebuffer)(TLB)936,该指令转译后备缓冲器(TLB)936被耦合到指令提取单元938,该指令提取单元938被耦合到解码单元940。解码单元940(或解码器)可对指令进行解码并作为输出生成一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号,它们从原始指令中解码,或者以别的方式反映原始指令或者从原始指令导出。可使用各种不同机制来实现解码单元940。适合的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核990包括存储用于某些宏指令的微代码的微代码ROM或其它介质(例如,在解码单元940中或另外在前端单元930内)。解码单元940被耦合到执行引擎单元950中的重命名/分配器单元952。
执行引擎单元950包括耦合到引退(retirement)单元954和一个或多个调度器单元956的集合的重命名/分配器单元952。(一个或多个)调度器单元956表示任何数量的不同调度器,包括预留站(reservations station)、中央指令窗口等。(一个或多个)调度器单元956被耦合到(一个或多个)物理寄存器堆(register file)单元958。(一个或多个)物理寄存器堆单元958中的每个物理寄存器堆单元都表示一个或多个物理寄存器堆,其中的不同物理寄存器堆存储一个或多个不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,要被执行的下一指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器堆单元958包括向量寄存器单元、写掩码(write mask)寄存器单元和标量寄存器单元。这些寄存器单元可提供架构向量寄存器、向量掩码寄存器和通用寄存器。(一个或多个)物理寄存器堆单元958被引退单元954重叠,以说明其中可实现寄存器重命名和乱序执行所用的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)未来堆、(一个或多个)历史缓冲器和(一个或多个)引退寄存器堆;使用寄存器映射和寄存器池等)。引退单元954和(一个或多个)物理寄存器堆单元958被耦合到(一个或多个)执行集群960。(一个或多个)执行集群960包括一个或多个执行单元962的集合和一个或多个存储器存取单元964的集合。执行单元962可执行各种操作(例如,移位、加法、减法、乘法)以及对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行。虽然一些实施例可包括专用于特定功能或功能集的若干执行单元,但其它实施例可包括全都执行全部功能的多个执行单元或仅一个执行单元。(一个或多个)调度器单元956、(一个或多个)物理寄存器堆单元958和(一个或多个)执行集群960被示为可能是复数的,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器存取流水线,其各自具有它们自己的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群——并且在单独的存储器存取流水线的情况下,其中仅这个流水线的执行集群具有(一个或多个)存储器存取单元964的某些实施例被实现)。还应该理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行并且其余的是有序的。
存储器存取单元964的集合被耦合到存储器单元970,该存储器单元970包括耦合到数据高速缓存单元974的数据TLB单元972,该数据高速缓存单元974耦合到2级(L2)高速缓存单元976。在一个示例性实施例中,存储器存取单元964可包括加载单元(load unit)、存储地址单元和存储数据单元,其中每个单元被耦合到存储器单元970中的数据TLB单元972。指令高速缓存单元934进一步被耦合到存储器单元970中的2级(L2)高速缓存单元976。L2高速缓存单元976被耦合到高速缓存的一个或多个其它级,并且最终耦合到主存储器。
作为示例,示例性寄存器重命名、乱序发布/执行核架构可如下实现流水线900:1)指令提取938执行提取阶段902和长度解码阶段904;2)解码单元940执行解码阶段906;3)重命名/分配器单元952执行分配阶段908和重命名阶段910;4)(一个或多个)调度器单元956执行调度阶段912;5)(一个或多个)物理寄存器堆单元958和存储器单元970执行寄存器读取/存储器读取阶段914;执行集群960运行执行阶段916;6)存储器单元970和(一个或多个)物理寄存器堆单元958执行写回/存储器写入阶段918;7)在异常处置阶段922中可涉及各种单元;以及8)引退单元954和(一个或多个)物理寄存器堆单元958执行提交阶段924。
核990可支持一个或多个指令集(例如,x86指令集(具有已经随较新版本添加的一些扩展);、加利福尼亚州森尼韦尔市的MIPS Technologies的MIPS指令集;加利福尼亚州森尼韦尔市的ARM Holdings的ARM指令集(具有可选的附加扩展,诸如NEON)),包括本文中描述的(一个或多个)指令。在一个实施例中,核990包括用于支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用打包数据来执行由许多多媒体应用使用的操作。
应该理解,核可支持多线程(执行操作或线程的两个或更多并行集合),并可用各种方式来这样做,所述各种方式包括时间切片的多线程、同时多线程(其中单个物理核为物理核正在进行同时多线程的线程中的每个线程提供逻辑核),或其组合(例如,时间切片的提取和解码以及此后的同时多线程,诸如在Intel®超线程技术中)。
虽然寄存器重命名在乱序执行的上下文中被描述,但应该理解,寄存器重命名可在有序架构中使用。虽然处理器的图示实施例还包括单独的指令高速缓存单元934和数据高速缓存单元974以及共享L2高速缓存单元976,但是备选实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如1级(L1)内部高速缓存或多级内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。备选地,所有高速缓存都可在核和/或处理器外部。
特定示例性有序核架构
图7A-B图示了更特定的示例性有序核架构的框图,该核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其它核)之一。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与某个固定功能逻辑、存储器I/O接口以及其它必要的I/O逻辑进行通信。
图7A是根据本发明实施例的单个处理器核连同其与管芯上互连网络1002的连接以及其2级(L2)高速缓存的本地子集1004的框图。在一个实施例中,指令解码器1000支持具有打包数据指令集扩展的x86指令集。L1高速缓存1006允许对标量和向量单元中的高速缓冲存储器的低时延访问。尽管在一个实施例中(为了简化设计),标量单元1008和向量单元1010使用单独的寄存器集合(分别是标量寄存器1012和向量寄存器1014),并且在它们之间传递的数据被写入到存储器中,并且然后从1级(L1)高速缓存1006中读回,但本发明的备选实施例可使用不同的方法(例如,使用单个寄存器集合,或者包括允许数据在两个寄存器堆之间传递而不被写入和读回的通信路径)。
L2高速缓存的本地子集1004是全局L2高速缓存的一部分,全局L2高速缓存被划分成单独的本地子集,每个处理器核一个。每个处理器核具有到它自己的L2高速缓存的本地子集1004的直接访问路径。由处理器核读取的数据被存储在它的L2高速缓存子集1004中并能够被快速地访问,这并行于其它处理器核访问它们自己的本地L2高速缓存子集。由处理器核写入的数据被存储在它自己的L2高速缓存子集1004中,并且如果必要则从其他子集中转储清除该数据。环形网络确保对于共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径在每个方向都是1012位宽。
图7B是根据本发明实施例的图7A中的处理器核的一部分的展开视图。图7B包括L1高速缓存1006的L1数据高速缓存1006A部分,以及有关向量单元1010和向量寄存器1014的更多细节。具体地说,向量单元1010是16宽向量处理单元(VPU)(参见16宽ALU 1028),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持用拌和单元(swizzleunit)1020对寄存器输入进行拌和,用数值转换单元1022A-B进行数值转换,以及用存储器输入上的复制单元1024进行复制。写掩码寄存器1026允许预测结果向量写入。
图8是根据本发明实施例的处理器1100的框图,该处理器1100可具有多于一个的核、可具有集成存储器控制器并且可具有集成的图形。图8中的实线框图示了具有单个核1102A、系统代理1110、一个或多个总线控制器单元1116的集合的处理器1100,而虚线框的可选添加图示了具有多个核1102A-N、系统代理单元1110中的一个或多个集成存储器控制器单元1114的集合以及专用逻辑1108的备选处理器1100。
从而,处理器1100的不同实现可包括:1)具有专用逻辑1108和核1102A-N的CPU,该专用逻辑1108是集成的图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),所述核1102A-N是一个或多个通用核(例如,通用有序核、通用乱序核、两者的组合);2)具有核1102A-N的协处理器,所述核1102A-N是意图主要用于图形和/或科学(吞吐量)的大量专用核;以及3)具有核1102A-N的协处理器,所述核1102A-N是大量通用有序核。从而,处理器1100可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器等等。处理器可在一个或多个芯片上实现。处理器1100可以是一个或多个衬底的一部分,和/或可使用多种工艺技术(诸如例如BiCMOS、CMOS或NMOS)中的任何工艺技术在一个或多个衬底上实现。
存储器层级包括核1102A-N内的一级或多级的相应高速缓存1104A-N、一组或者一个或多个共享高速缓存单元1106以及耦合到集成存储器控制器单元1114的集合的外部存储器(未示出)。共享高速缓存单元1106的集合可包括一个或多个中级高速缓存(诸如2级(L2)、3级(L3)、4级(L4)或其它级高速缓存)、末级高速缓存(LLC)和/或其组合。虽然在一个实施例中基于环的互连单元1112互连集成图形逻辑1108、共享高速缓存单元1106的集合和系统代理单元1110/(一个或多个)集成存储器控制器单元1114,但备选实施例可将任何数量的众所周知的技术用于互连此类单元。在一个实施例中,在一个或多个高速缓存单元1106与核1102-A-N之间保持一致性。
在一些实施例中,核1102A-N中的一个或多个核能够进行多线程。系统代理1110包括协调和操作核1102A-N的那些组件。系统代理单元1110可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节集成图形逻辑1108和核1102A-N的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1102A-N可在架构指令集方面是同构的(homogenous)或异构的(heterogeneous);也就是说,核1102A-N中的两个或更多可能能够执行相同的指令集,而其它核可能能够仅执行该指令集的子集或不同的指令集。
示例性计算机架构
图9-12是示例性计算机架构的框图。本领域已知的用于膝上型电脑、台式电脑、手持式PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式装置和各种其它电子装置的其它系统设计和配置也是合适的。一般而言,能够结合本文中所公开的处理器和/或其它执行逻辑的大量系统或电子装置通常是合适的。
现在参考图9,示出的是根据本发明一个实施例的系统1200的框图。系统1200可包括一个或多个处理器1210、1215,这些处理器耦合到控制器集线器1220。在一个实施例中,控制器集线器1220包括图形存储器控制器集线器(GMCH)1290和输入/输出集线器(IOH)1250(它们可在分开的芯片上);GMCH 1290包括耦合到存储器1240和协处理器1245的存储器和图形控制器;IOH 1250将输入/输出(I/O)装置1260耦合到GMCH 1290。备选地,存储器和图形控制器中的一者或两者被集成在处理器内(如本文中所描述的),存储器1240和协处理器1245被直接耦合到处理器1210,以及与IOH 1250在单个芯片中的控制器集线器1220。
附加处理器1215的可选性质在图9中用虚线标示。每个处理器1210、1215可包括本文中描述的处理核中的一个或多个,并且可以是某一版本的处理器1100。
存储器1240可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器集线器1220经由多点总线(multi-drop bus)(诸如前侧总线(FSB))、点对点接口(诸如快速通道互连(QPI))或类似连接1295)与(一个或多个)处理器1210、1215通信。
在一个实施例中,协处理器1245是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等等。在一个实施例中,控制器集线器1220可包括集成图形加速器。
在包括架构、微架构、热、功耗特性等的指标的度量谱方面,在物理资源1210、1215之间可存在各种差异。
在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。指令内所嵌入的可以是协处理器指令。处理器1210将这些协处理器指令识别为是应由附接的协处理器1245执行的类型。因而,处理器1210在协处理器总线或其它互连上将这些协处理器指令(或表示协处理器指令的控制信号)发布到协处理器1245。(一个或多个)协处理器1245接受并执行接收的协处理器指令。
现在参考图10,示出的是根据本发明实施例的第一更特定的示例性系统1300的框图。如图10中所示出的,多处理器系统1300是点对点互连系统,并且包括经由点对点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380中的每个可以是某一版本的处理器1100。在本发明的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一个实施例中,处理器1370和1380分别是处理器1210、协处理器1245。
处理器1370和1380被示出分别包括集成存储器控制器(IMC)单元1372和1382。处理器1370还包括作为它的总线控制器单元的一部分的点对点(P-P)接口1376和1378;类似地,第二处理器1380包括P-P接口1386和1388。处理器1370、1380可使用点对点(P-P)接口电路1378、1388经由P-P接口1350交换信息。如图10中所示出的,IMC 1372和1382将处理器耦合到相应的存储器(即,存储器1332和存储器1334),这些存储器可以是本地附接到相应处理器的主存储器的部分。
处理器1370、1380可各自使用点对点接口电路1376、1394、1386、1398经由各个P-P接口1352、1354与芯片集1390交换信息。芯片集1390可以可选地经由高性能接口1339和接口1392与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。
共享高速缓存(未示出)可包括在任一处理器中或者在两个处理器的外部,仍经由P-P互连与处理器连接,使得如果处理器被置于低功率模式中,则任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片集1390可经由接口1396被耦合到第一总线1316。在一个实施例中,第一总线1316可以是外围组件互连(PCI)总线,或者诸如PCI Express总线或另一第三代I/O互连总线的总线,尽管本发明的范围不被如此限制。
如图10中所示出的,各种I/O装置1314可以连同总线桥1318被耦合到第一总线1316,所述总线桥1318将第一总线1316耦合到第二总线1320。在一个实施例中,一个或多个附加处理器1315(诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或者任何其它处理器)被耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚计数(LPC)总线。在一个实施例中,各种装置可耦合到第二总线1320,包括例如键盘和/或鼠标1322、通信装置1327和诸如盘驱动器或其它大容量存储装置的存储单元1328,所述存储单元1328可包括指令/代码和数据1330。另外,音频I/O 1324可被耦合到第二总线1320。注意,其它架构是可能的。例如,代替图10的点对点架构,系统可实现多点总线或其它这样的架构。
现在参考图11,示出的是根据本发明实施例的第二更特定的示例性系统1400的框图。图10和图11中同样的元件标有同样的附图标记,并且图10的某些方面已经从图11中省略了,以免模糊了图11的其它方面。
图11图示了处理器1370、1380可分别包括集成存储器和I/O控制逻辑(“CL”) 1472和1482。从而,CL 1472、1482包括集成存储器控制器单元并且包括I/O控制逻辑。图11图示了不仅存储器1332、1334被耦合到CL 1472、1482,而且I/O装置1414也被耦合到控制逻辑1472、1482。传统I/O装置1415被耦合到芯片集1390。
现在参考图12,示出的是根据本发明实施例的SoC 1500的框图。图8中的类似元件标有同样的附图标记。此外,虚线框是更高级的SoC上的可选特征。在图12中,(一个或多个)互连单元1502被耦合到:应用处理器1510,其包括一组一个或多个核1102A-N和(一个或多个)共享高速缓存单元1106;系统代理单元1110;(一个或多个)总线控制器单元1116;(一个或多个)集成存储器控制器单元1114;一组或一个或多个协处理器1520,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1530;直接存储器存取(DMA)单元1532;以及用于耦合到一个或多个外部显示器的显示单元1540。在一个实施例中,(一个或多个)协处理器1520包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等等。
本文中公开的机制的实施例可用硬件、软件、固件或此类实现方法的组合来实现。本发明的实施例可被实现为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置。
诸如图10中图示的代码1330的程序代码可被应用于输入指令以执行本文中描述的功能,并生成输出信息。输出信息可按已知方式被应用于一个或多个输出装置。为了本申请的目的,处理系统包括具有处理器的任何系统,所述处理器诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可用高级面向过程的或面向对象的编程语言来实现,以与处理系统通信。如果期望的话,程序代码还可用汇编语言或机器语言来实现。实际上,本文中描述的机制在范围上不限于任何特定编程语言。在任何情况下,语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性指令实现,该指令表示处理器内的各种逻辑,其当由机器读取时使机器制作执行本文中描述的技术的逻辑。称为“IP核”的此类表示可被存储在有形、机器可读介质上,并被供应到各种客户或制造设施,以加载到实际做出逻辑或处理器的制作机器中。
此类机器可读存储介质可包括但不限于由机器或装置制造或形成的物品的非暂时性、有形布置,包括存储介质,诸如硬盘、任何其它类型的盘(包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘)、半导体装置(诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM))、磁卡或光卡、或适合于存储电子指令的任何其它类型的介质。
因而,本发明的实施例还包括非暂时性、有形机器可读介质,该介质含有指令或含有设计数据(诸如硬件描述语言(HDL)),其定义本文中描述的结构、电路、设备、处理器和/或系统特征。此类实施例也可被称为程序产品。
仿真(包括二进制转译、代码变形(code morphing)等)
在一些情况下,可使用指令转换器将指令从源指令集转换到目标指令集。例如,指令转换器可将指令转译(例如,使用静态二进制转译、包括动态编译的动态二进制转译)、变形、仿真或以其它方式转换成要由核处理的一个或多个其它指令。指令转换器可用软件、硬件、固件或其组合实现。指令转换器可在处理器上、在处理器外(off processor)、或部分在处理器上并且部分在处理器外。
图13是根据本发明的实施例对照使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在图示的实施例中,指令转换器是软件指令转换器,但是备选地,指令转换器可用软件、固件、硬件或其各种组合来实现。图13示出可使用x86编译器1604来编译采用高级语言1602的程序以生成x86二进制代码1606,所述x86二进制代码1606可由具有至少一个x86指令集核的处理器1616本机地执行。具有至少一个x86指令集核的处理器1616表示能通过以下操作来执行与具有至少一个x86指令集核的英特尔处理器大体上相同的功能的任何处理器:兼容地执行或以其它方式处理(1)英特尔x86指令集核的指令集的实质部分或(2)目标为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它软件的对象代码版本,以便基本上实现与具有至少一个x86指令集核的英特尔处理器相同的结果。x86编译器1604表示可操作以生成x86二进制代码1606(例如对象代码)的编译器,所述x86二进制代码1606能够在具有或不具有另外链接处理的情况下在具有至少一个x86指令集核的处理器1616上被执行。类似地,图13示出可使用备选指令集编译器1608来编译采用高级语言1602的程序以生成备选指令集二进制代码1610,所述备选指令集二进制代码1610可由不具有至少一个x86指令集核的处理器1614(例如,具有执行加利福尼亚州森尼韦尔市的MIPS Technologies的MIPS指令集和/或执行加利福尼亚州森尼韦尔市的ARM Holdings的ARM指令集的核的处理器)本机地执行。指令转换器1612被用来将x86二进制代码1606转换成可由不具有x86指令集核的处理器1614本机执行的代码。这种经转换的代码不太可能与备选指令集二进制代码1610相同,因为能够这样做的指令转换器难以制造;然而,经转换的代码将完成一般操作并且由来自备选指令集的指令构成。从而,指令转换器1612表示软件、固件、硬件或其组合,其通过仿真、模拟或任何其它过程而允许不具有x86指令集处理器或核的处理器或其它电子装置执行x86二进制代码1606。
本文中描述了用于分支预测和/或分支目标预测的技术和架构。在以上描述中,为了说明的目的,阐述了众多特定细节,以便提供对某些实施例的透彻理解。然而,对本领域技术人员将显而易见的是,某些实施例可在没有这些特定细节的情况下被实践。在其它实例中,结构和装置以框图形式示出,以免模糊了本描述。
附加的注释和示例
示例1包括一种集成电路,所述集成电路包括前端单元;以及耦合到所述前端单元的电路系统,所述电路系统用于:标识多个采取分支预测表中对应于条件分支指令的条目;确定所述条目的置信度级别是否超过阈值置信度级别;并且如果确定是这样,则从多个采取分支预测表中的条目提供源于该条件分支指令的多个采取分支预测。
示例2包括如权利要求1所述的集成电路,其中所述电路系统进一步用于基于最后采取的分支和分支历史针对所述条件分支指令生成标签信息;以及基于生成的标签信息来标识多个采取分支预测表中的条目。
示例3包括如权利要求1至2中任一项所述的集成电路,其中所述电路系统进一步用于跳转到最后预测采取的分支的目标。
示例4包括如权利要求3所述的集成电路,其中所述电路系统进一步用于基于当前程序计数器和分支历史来生成指向预测要采取的紧接着的N个分支的指针,其中N是大于1的整数值。
示例5包括如权利要求4所述的集成电路,其中所述电路系统进一步用于基于生成的指针来标识采取的分支的程序计数器和采取的分支的目标。
示例6包括如权利要求5所述的集成电路,其中所述电路系统进一步用于基于生成的指针来构造从当前点直到第N个采取的分支的整个控制流。
示例7包括如权利要求6所述的集成电路,其中所述电路系统进一步用于丢弃主分支预测单元的预测,并且重新定向所述主分支预测单元以从最后采取的分支的目标开始。
示例8包括一种设备,该设备包括:用于解码一个或多个指令的前端单元;以及通信地耦合到所述前端单元以执行经解码的一个或多个指令的执行单元,其中所述前端单元包括:用于为所述一个或多个指令提供分支预测信息的分支预测单元;以及通信地耦合到所述分支预测单元的高置信度多分支偏移预测器,所述高置信度多分支偏移预测器包括用于每周期预测多个采取分支并跳转到预测采取的分支的目标的电路系统。
示例9包括如权利要求8所述的设备,其中所述电路系统进一步用于:标识多个采取分支预测表中对应于条件分支指令的条目;确定所述条目的置信度级别是否超过阈值置信度级别;并且如果确定是这样,则从多个采取分支预测表中的条目提供源于条件分支指令的多个采取分支预测。
示例10包括如权利要求9所述的设备,其中所述电路系统进一步用于:基于最后采取的分支和分支历史针对条件分支指令生成标签信息;以及基于生成的标签信息来标识多个采取分支预测表中的条目。
示例11包括如权利要求8至10中任一项所述的设备,其中所述电路系统进一步用于基于当前程序计数器和分支历史来生成指向预测要采取的紧接着的N个分支的指针,其中N是大于1的整数值。
示例12包括如权利要求11所述的设备,其中所述电路系统进一步用于基于生成的指针来标识采取的分支的程序计数器和采取的分支的目标。
示例13包括如权利要求12所述的设备,其中所述电路系统进一步用于基于生成的指针来构造从当前点直到第N个采取的分支的整个控制流。
示例14包括如权利要求13所述的设备,其中所述电路系统进一步用于丢弃主分支预测单元的预测,并且重新定向所述主分支预测单元以从最后采取的分支的目标开始。
示例15包括一种方法,所述方法包括:标识多个采取分支预测表中对应于条件分支指令的条目;确定所述条目的置信度级别是否超过阈值置信度级别;并且如果确定是这样,则从多个采取分支预测表中的条目提供源于条件分支指令的多个采取分支预测。
示例16包括如权利要求15所述的方法,进一步包括:基于最后采取的分支和分支历史针对条件分支指令生成标签信息,并且基于生成的标签信息来标识多个采取分支预测表中的条目。
示例17包括如权利要求15至16中任一项所述的方法,其中该电路系统进一步用于跳转到最后预测采取的分支的目标。
示例18包括如权利要求17所述的方法,进一步包括基于当前程序计数器和分支历史来生成指向预测要采取的紧接着的N个分支的指针,其中N是大于1的整数值。
示例19包括如权利要求18所述的方法,进一步包括基于生成的指针来标识采取的分支的程序计数器和采取的分支的目标。
示例20包括如权利要求19所述的方法,进一步包括基于生成的指针来构造从当前点直到第N个采取的分支的整个控制流。
示例21包括如权利要求20所述的方法,进一步包括丢弃主分支预测单元的预测,并且重新定向所述主分支预测单元以从最后采取的分支的目标开始。
示例22包括一种分支预测器设备,包括:用于标识多个采取分支预测表中对应于条件分支指令的条目的部件;用于确定所述条目的置信度级别是否超过阈值置信度级别的部件;以及如果确定是这样,则用于从多个采取分支预测表中的条目提供源于条件分支指令的多个采取分支预测的部件。
示例23包括如权利要求22所述的设备,进一步包括:用于基于最后采取的分支和分支历史针对条件分支指令生成标签信息的部件;以及用于基于生成的标签信息来标识多个采取分支预测表中的条目的部件。
示例24包括如权利要求22至23中任一项所述的设备,进一步包括用于跳转到最后预测采取的分支的目标的部件。
示例25包括如权利要求24所述的设备,进一步包括用于基于当前程序计数器和分支历史来生成指向预测要采取的紧接着的N个分支的指针的部件,其中N是大于1的整数值。
示例26包括如权利要求25所述的设备,进一步包括用于基于生成的指针来标识采取的分支的程序计数器和采取的分支的目标的部件。
示例27包括如权利要求26所述的设备,进一步包括用于基于生成的指针来构造从当前点直到第N个采取的分支的整个控制流的部件。
示例28包括如权利要求27所述的设备,进一步包括用于丢弃主分支预测单元的预测的部件,以及用于重新定向所述主分支预测单元以从最后采取的分支的目标开始的部件。
示例29包括至少一个非暂时性机器可读介质,所述介质包括多个指令,所述指令响应于在计算装置上执行,使得所述计算装置:标识多个采取分支预测表中对应于条件分支指令的条目;确定该条目的置信度级别是否超过阈值置信度级别;并且如果确定是这样,则从多个采取分支预测表中的条目提供源于条件分支指令的多个采取分支预测。
示例30包括如权利要求29所述的至少一个非暂时性机器可读介质,所述介质包括多个另外的指令,所述指令响应于在计算装置上执行,使得所述计算装置:基于最后采取的分支和分支历史针对条件分支指令生成标签信息,并且基于生成的标签信息来标识多个采取分支预测表中的条目。
示例31包括如权利要求29至30中任一项所述的至少一个非暂时性机器可读介质,所述介质包括多个另外的指令,所述指令响应于在计算装置上执行,使得所述计算装置跳转到最后预测采取的分支的目标。
示例32包括如权利要求31所述的至少一个非暂时性机器可读介质,所述介质包括多个另外的指令,所述指令响应于在计算装置上执行,使得所述计算装置基于当前程序计数器和分支历史来生成指向预测要采取的紧接着的N个分支的指针,其中N是大于1的整数值。
示例33包括如权利要求32所述的至少一个非暂时性机器可读介质,所述介质包括多个另外的指令,所述指令响应于在计算装置上执行,使得所述计算装置基于生成的指针来标识采取的分支的程序计数器和采取的分支的目标。
示例34包括如权利要求33所述的至少一个非暂时性机器可读介质,所述介质包括多个另外的指令,所述指令响应于在计算装置上执行,使得所述计算装置基于生成的指针来构造从当前点直到第N个采取的分支的整个控制流。
示例35包括如权利要求34所述的至少一个非暂时性机器可读介质,所述介质包括多个另外的指令,所述指令响应于在计算装置上执行,使得所述计算装置丢弃主分支预测单元的预测,并且重新定向主分支预测单元以从最后采取的分支的目标开始。
说明书中对“一个实施例”或“实施例”的提及是指在本发明的至少一个实施例中包括结合该实施例描述的特定特征、结构或特性。在说明书中各处的短语“在一个实施例中”的出现不一定全都指的是同一实施例。
本文中详细描述的一些部分依据对计算机存储器内的数据位的运算的算法和符号表示来呈现。这些算法描述和表示是由计算领域的那些技术人员用于最有效地将它们工作的实质传达给本领域其它技术人员所使用的手段。算法在此并且一般地说被视为是得到期望结果的步骤的自洽的序列。所述步骤是要求物理量的物理操控的那些步骤。通常,尽管不是必需的,但这些量采取能够被存储、传递、组合、比较以及以其它方式操控的电信号或磁信号的形式。主要由于常见用法的原因,有时将这些信号称为位、值、元素、符号、字符、术语、数字等被证明是方便的。
然而,应该牢记的是,所有这些以及类似的术语都要与适当的物理量关联,并且仅仅是应用于这些量的方便标记。除非另有特别声明,如从本文中的讨论显而易见的,否则领会到,贯穿本描述,利用诸如“处理”或“计算(computing或calculating)”或“确定”或“显示”等术语的讨论指的是计算机系统或类似的电子计算装置的动作和过程,该计算机系统或类似的电子计算装置将计算机系统的寄存器和存储器内表示为物理(电子)量的数据操控并变换成在计算机系统存储器或寄存器或其它此类信息存储、传输或显示装置内类似地表示为物理量的其它数据。
某些实施例还涉及用于执行本文中的操作的设备。可出于所要求的目的专门构造此设备,或者它可包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可被存储在计算机可读存储介质中,诸如但不限于任何类型的盘,所述盘包括软盘、光盘、CD-ROM以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM),诸如动态RAM(DRAM)、EPROM、EEPROM、磁卡或光卡、或者适合于存储电子指令并耦合到计算机系统总线的任何类型的介质。
本文中呈现的算法和显示器(display)不是固有地涉及任何特定计算机或其它设备。各种通用系统可与根据本文中教导的程序一起使用,或者可证明构造更专业化设备以执行所要求的方法步骤是方便的。各种这些系统的所要求的结构将从本文中的描述中出现。此外,某些实施例未参考任何特定编程语言进行描述。将领会到,可使用各种编程语言来实现本文中所描述的此类实施例的教导。
除了本文中所描述的,可在不脱离它们的范围的情况下,对所公开实施例及其实现进行各种修改。因此,本文中的图示和示例应该以说明性的,而非约束性意义来解释。本发明的范围应该仅仅通过参考跟随的权利要求来估量。
Claims (25)
1.一种集成电路,包括:
前端单元;以及
耦合到所述前端单元的电路系统,所述电路系统用于:
标识多个采取分支预测表中对应于条件分支指令的条目;
确定所述条目的置信度级别是否超过阈值置信度级别,并且如果确定是这样,则
从所述多个采取分支预测表中的所述条目提供源于所述条件分支指令的多个采取分支预测。
2.如权利要求1所述的集成电路,其中所述电路系统进一步用于:
基于最后采取的分支和分支历史针对所述条件分支指令生成标签信息;以及
基于生成的标签信息来标识所述多个采取分支预测表中的所述条目。
3.如权利要求1至2中任一项所述的集成电路,其中所述电路系统进一步用于:
跳转到最后预测采取的分支的目标。
4.如权利要求3所述的集成电路,其中所述电路系统进一步用于:
基于当前程序计数器和分支历史来生成指向预测要采取的紧接着的N个分支的指针,其中N是大于1的整数值。
5.如权利要求4所述的集成电路,其中所述电路系统进一步用于:
基于生成的指针来标识采取的分支的程序计数器和所述采取的分支的目标。
6.如权利要求5所述的集成电路,其中所述电路系统进一步用于:
基于所述生成的指针来构造从当前点直到第N个采取的分支的整个控制流。
7.如权利要求6所述的集成电路,其中所述电路系统进一步用于:
丢弃主分支预测单元的预测,并且重新定向所述主分支预测单元以从最后采取的分支的目标开始。
8.一种设备,包括:
前端单元,所述前端单元用于解码一个或多个指令;以及
执行单元,所述执行单元通信地耦合到所述前端单元以执行经解码的一个或多个指令,
其中所述前端单元包括:
分支预测单元,所述分支预测单元用于为所述一个或多个指令提供分支预测信息,以及
高置信度多分支偏移预测器,所述高置信度多分支偏移预测器通信地耦合到所述分支预测单元,所述高置信度多分支偏移预测器包括用于每周期预测多个采取分支并跳转到预测采取的分支的目标的电路系统。
9.如权利要求8所述的设备,其中所述电路系统进一步用于:
标识多个采取分支预测表中对应于条件分支指令的条目;
确定所述条目的置信度级别是否超过阈值置信度级别,并且如果确定是这样,则
从所述多个采取分支预测表中的所述条目提供源于所述条件分支指令的多个采取分支预测。
10.如权利要求9所述的设备,其中所述电路系统进一步用于:
基于最后采取的分支和分支历史针对所述条件分支指令生成标签信息;以及
基于生成的标签信息来标识所述多个采取分支预测表中的所述条目。
11.如权利要求8至10中任一项所述的设备,其中所述电路系统进一步用于:
基于当前程序计数器和分支历史来生成指向预测要采取的紧接着的N个分支的指针,其中N是大于1的整数值。
12.如权利要求11所述的设备,其中所述电路系统进一步用于:
基于生成的指针来标识采取的分支的程序计数器和所述采取的分支的目标。
13.如权利要求12所述的设备,其中所述电路系统进一步用于:
基于所述生成的指针来构造从当前点直到第N个采取的分支的整个控制流。
14.如权利要求13所述的设备,其中所述电路系统进一步用于:
丢弃主分支预测单元的预测,并且重新定向所述主分支预测单元以从最后采取的分支的目标开始。
15.一种方法,包括:
标识多个采取分支预测表中对应于条件分支指令的条目;
确定所述条目的置信度级别是否超过阈值置信度级别;并且如果确定是这样,则
从所述多个采取分支预测表中的所述条目提供源于所述条件分支指令的多个采取分支预测。
16.如权利要求15所述的方法,进一步包括:
基于最后采取的分支和分支历史针对所述条件分支指令生成标签信息;以及
基于生成的标签信息来标识所述多个采取分支预测表中的所述条目。
17.如权利要求15至16中任一项所述的方法,进一步包括:
跳转到最后预测采取的分支的目标。
18.如权利要求17所述的方法,进一步包括:
基于当前程序计数器和分支历史来生成指向预测要采取的紧接着的N个分支的指针,其中N是大于1的整数值。
19.如权利要求18所述的方法,进一步包括:
基于生成的指针来标识采取的分支的程序计数器和所述采取的分支的目标。
20.如权利要求19所述的方法,进一步包括:
基于所述生成的指针来构造从当前点直到第N个采取的分支的整个控制流。
21.如权利要求20所述的方法,进一步包括:
丢弃主分支预测单元的预测;以及
重新定向所述主分支预测单元以从最后采取的分支的目标开始。
22.一种分支预测器设备,包括:
用于标识多个采取分支预测表中对应于条件分支指令的条目的部件;
用于确定所述条目的置信度级别是否超过阈值置信度级别的部件;并且如果确定是这样,则
用于从所述多个采取分支预测表中的所述条目提供源于所述条件分支指令的多个采取分支预测的部件。
23.如权利要求22所述的设备,进一步包括:
用于基于最后采取的分支和分支历史针对所述条件分支指令生成标签信息的部件;以及
用于基于生成的标签信息来标识所述多个采取分支预测表中的所述条目的部件。
24.如权利要求22至23中任一项所述的设备,进一步包括:
用于跳转到最后预测采取的分支的目标的部件。
25.如权利要求24所述的设备,进一步包括:
用于基于当前程序计数器和分支历史来生成指向预测要采取的紧接着的N个分支的指针的部件,其中N是大于1的整数值。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN202041046222 | 2020-10-23 | ||
IN202041046222 | 2020-10-23 | ||
US17/130,661 US20220129763A1 (en) | 2020-10-23 | 2020-12-22 | High confidence multiple branch offset predictor |
US17/130661 | 2020-12-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114489808A true CN114489808A (zh) | 2022-05-13 |
Family
ID=77710534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111114646.9A Pending CN114489808A (zh) | 2020-10-23 | 2021-09-23 | 高置信度多分支偏移预测器 |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP3989063B1 (zh) |
CN (1) | CN114489808A (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7590830B2 (en) * | 2004-05-28 | 2009-09-15 | Sun Microsystems, Inc. | Method and structure for concurrent branch prediction in a processor |
US10846097B2 (en) * | 2018-12-20 | 2020-11-24 | Samsung Electronics Co., Ltd. | Mispredict recovery apparatus and method for branch and fetch pipelines |
-
2021
- 2021-09-09 EP EP21195779.0A patent/EP3989063B1/en active Active
- 2021-09-23 CN CN202111114646.9A patent/CN114489808A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3989063A1 (en) | 2022-04-27 |
EP3989063B1 (en) | 2023-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6043374B2 (ja) | 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置 | |
JP6006247B2 (ja) | 共有メモリへのアクセスの同期を緩和するプロセッサ、方法、システム、及びプログラム | |
US9619750B2 (en) | Method and apparatus for store dependence prediction | |
US20160055004A1 (en) | Method and apparatus for non-speculative fetch and execution of control-dependent blocks | |
KR101723711B1 (ko) | 조건부 쇼트 포워드 브랜치들을 산술적으로 동등한 술어적 명령어들로 변환 | |
CN116302106A (zh) | 用于促进分支预测单元的改善的带宽的设备、方法和系统 | |
US10579378B2 (en) | Instructions for manipulating a multi-bit predicate register for predicating instruction sequences | |
EP4020191A1 (en) | Alternate path decode for hard-to-predict branch | |
US10083033B2 (en) | Apparatus and method for efficient register allocation and reclamation | |
US10877765B2 (en) | Apparatuses and methods to assign a logical thread to a physical thread | |
US20220206793A1 (en) | Methods, systems, and apparatuses for a scalable reservation station implementing a single unified speculation state propagation and execution wakeup matrix circuit in a processor | |
US20140189330A1 (en) | Optional branches | |
US9418024B2 (en) | Apparatus and method for efficient handling of critical chunks | |
US11126438B2 (en) | System, apparatus and method for a hybrid reservation station for a processor | |
CN114647596A (zh) | 基于上下文的循环分支预测 | |
CN114647447A (zh) | 基于上下文的存储器间接分支目标预测 | |
EP3989063B1 (en) | High confidence multiple branch offset predictor | |
US20220129763A1 (en) | High confidence multiple branch offset predictor | |
US20230185572A1 (en) | Instruction decode cluster offlining | |
US11693780B2 (en) | System, method, and apparatus for enhanced pointer identification and prefetching | |
US20230091167A1 (en) | Core-based speculative page fault list | |
US20230418612A1 (en) | Automatic fusion of arithmetic in-flight instructions | |
CN115858022A (zh) | 集群化解码管线的可缩放切换点控制电路系统 | |
CN115576607A (zh) | 用于微架构返回预测器安全性的计数到空 | |
CN113568663A (zh) | 代码预取指令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |