CN110741343A - 多标记分支预测表 - Google Patents
多标记分支预测表 Download PDFInfo
- Publication number
- CN110741343A CN110741343A CN201880037132.8A CN201880037132A CN110741343A CN 110741343 A CN110741343 A CN 110741343A CN 201880037132 A CN201880037132 A CN 201880037132A CN 110741343 A CN110741343 A CN 110741343A
- Authority
- CN
- China
- Prior art keywords
- branch prediction
- branch
- entry
- fetch
- 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 35
- 238000012545 processing Methods 0.000 claims abstract description 27
- 230000001066 destructive effect Effects 0.000 claims description 6
- 238000003491 array Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 description 12
- 230000006399 behavior Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009738 saturating Methods 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/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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
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
技术领域
所公开的各方面涉及在处理系统中进行分支预测。更具体地说,示范性方面涉及针对每个条目配置有两个或两个以上标记的分支预测表。
背景技术
处理系统可以采用引起控制流改变的指令,如条件分支指令。条件分支指令的方向基于条件评估的方式,但是仅知道所述评估可以深入到处理器的指令流水线。为了避免在知道评估之前停止流水线,处理器可以采用分支预测机制来早早预测流水线中条件分支指令的方向。基于所述预测,处理器可以推测性地从两个路径中的一个路径—开始于分支目标地址的“采用(taken)”路径或开始于条件分支指令之后的下一个连续地址的“未采用(not-taken)”路径—中的预测地址中提取指令并执行指令。
在对条件进行评估并且确定实际分支方向时,如果误预测了分支(即,按照错误路径执行),则可以从流水线中清除推测性地提取的指令,并且可以从正确的下一地址中提取正确路径中的新指令。因此,提高条件分支指令的分支预测准确性减轻了与误预测和错误路径指令的执行相关联的处罚并且相应地提高了处理系统的性能和能量利用。
常规分支预测机制可以包含一或多个状态机,所述一或多个状态机可以用过去和当前分支指令的评估历史来进行训练。状态机可以组织在称为分支预测表的表中。分支预测表可以包含包括条件分支指令的状态机的条目,其中所述条目可以使用条件分支指令的地址来进行索引和标记。分支预测表的结构可以扩展以容纳指令集架构,其中在每个处理周期中可以提取和执行多于一个指令。
例如,在超标量处理器中,可以在每个周期提取包括一或多个指令的提取组。可以(例如通过编译器)选择每个提取组中的指令,以利用可以由超标量处理器支持的指令级并行性。例如,可以以最大化对用于并行地执行提取组中的指令的硬件和/或软件支持的利用的方式组织提取组中的指令。尽管提取组中可能存在两个或两个以上分支指令,但是每个提取组通常更可能被设计成包括至多一个分支指令。然而,一或多个分支指令(如果存在于提取组中的话)的一或多个位置在不同的提取组中可以变化。
在常规实施方案中,从超标量处理器的分支预测表可以设置有甚至对提取组中的所有指令均为分支指令的不太可能的情况提供预测的能力的意义上来说,分支预测表可以被超裕度设计。换言之,常规分支预测表的每个条目可以针对提取组中的每个可能的指令位置具有分支预测机制,使得每个条目可以提供的最大预测数可以等于提取组中可以存在的最大指令数。例如,可以存在如状态机等可以用于潜在地预测提取组中的多个分支指令(如果存在的话)的多个分支预测机制。
尽管超标量处理器的分支预测表可以被超裕度设计有针对提取组中的多个指令的多个分支预测机制,但是分支预测表中的每个条目可以针对提取组共同地标记。共同标记可以基于提取组的特性,如提取组的共同地址或标识。然而,在每个条目中具有用于多个分支预测机制的共同标记导致未充分利用所述多个分支预测机制,因为在可能的场景中,每个提取组中可以有至多一个分支指令。
关于具有共同标记的常规实施方案的又一个问题涉及混叠。在这个上下文中,混叠是指多个提取组可以索引到分支预测表的同一条目中并更新分支预测表的同一条目的现象。例如,如果已经没有标记来确认索引的条目是否是特定提取组的正确条目,则不同的提取组可能使索引的条目的分支预测机制得到更新。虽然这些更新或混叠作用可能是破坏性的(例如破坏先前分支评估的历史),但是在一些情况下,可以看到混叠可以是构造性的,这是期望的。构造性混叠可能是几种情况的可能结果,例如,其中程序可以将共同行为输入到不同的分支指令上,使得不同的分支指令可以从构造性混叠中受益。然而,如果共同标记用于过滤对分支预测表的更新,则可以消除包含有益构造性混叠的所有混叠方式。
因此,期望在避免常规实施方案的前述缺点的同时提高上文描述的分支预测表的利用和效率。
发明内容
本发明的示范性方面涉及用于分支预测的系统和方法。一种示范性分支预测表包括一或多个条目。每个条目包括一或多个分支预测计数器,所述一或多个分支预测计数器对应于被提取以用于在处理器中进行处理的指令的提取组中的一或多个指令。两个或两个以上提取组中的每个提取组包括至少一个分支指令,所述一或多个分支预测计数器中的至少一个分支预测计数器用于针对所述至少一个分支指令进行分支预测。两个或两个以上标记字段与每个条目相关联,其中所述两个或两个以上标记字段对应于两个或两个以上提取组。在所述分支预测表中出现未命中的情况下,在示范性方面,以实现构造性混叠并防止破坏性混叠的方式执行对所述分支预测计数器和所述两个或两个以上标记字段的更新。
因此,示范性方面涉及一种分支预测表,所述分支预测表包括:一或多个条目,其中每个条目包括一或多个分支预测计数器,所述一或多个分支预测计数器对应于被提取以用于在处理器中进行处理的指令的提取组中的一或多个指令;以及与每个条目相关联的两个或两个以上标记字段,其中所述两个或两个以上标记字段对应于两个或两个以上提取组。
另一示范性方面涉及一种分支预测方法,所述方法包括:为分支预测表配置一或多个条目,其中每个条目包括一或多个分支预测计数器,所述一或多个分支预测计数器对应于被提取以用于在处理器中进行处理的指令的提取组中的一或多个指令;以及使两个或两个以上标记字段与每个条目相关联,其中所述两个或两个以上标记字段对应于两个或两个以上提取组。
另一示范性方面涉及一种设备,所述设备包括:分支预测表,所述分支预测表包括一或多个条目,其中每个条目包括用于分支预测的一或多个装置,所述一或多个装置对应于被提取以用于在处理器中进行处理的指令的提取组中的一或多个指令;以及用于使两个或两个以上提取组与每个条目相关联的两个或两个以上装置。
又一示范性方面涉及一种非暂时性计算机可读存储媒体,所述非暂时性计算机可读存储媒体包括在由处理器执行时使所述处理器执行分支预测的代码,所述非暂时性计算机可读存储媒体包括:用于为分支预测表配置一或多个条目的代码,其中每个条目包括一或多个分支预测计数器,所述一或多个分支预测计数器对应于被提取以用于在处理器中进行处理的指令的提取组中的一或多个指令;以及用于使两个或两个以上标记字段与每个条目相关联的代码,其中所述两个或两个以上标记字段对应于两个或两个以上提取组。
附图说明
呈现附图以辅助描述本发明的各方面并且提供附图仅仅是为了展示各方面而非限制各方面。
图1展示了具有常规分支预测表的常规处理系统。
图2展示了根据本公开的各方面的具有示范性多标记分支预测表的示范性处理系统。
图3展示了根据本公开的各方面的涉及示范性多标记分支预测表的一系列事件。
图4是根据本公开的各方面的使用示范性多标记分支预测表进行分支预测的方法的流程图。
图5描绘了在其中可以有利地采用本公开的一方面的示范性计算装置。
具体实施方式
针对本发明的具体方面的以下描述和相关附图中公开了本发明的各方面。在不脱离本发明的范围的情况下,可以设计替代性方面。另外,将不详细描述或将省略本发明的众所周知的元件,以免模糊本发明的相关细节。
词语“示范性”在本文用来意指“用作实例、例子或说明”。在本文中描述为“示范性”的任何方面不一定被解释为优于或胜过其它方面。同样地,术语“本发明的各方面”不要求本发明的所有方面均包含所讨论的特征、优点或操作模式。
本文所使用的术语仅用于描述特定方面并且不旨在限制本发明的各方面。如本文所使用的,除非上下文另外清楚地指示,否则单数形式“一个/一种(a/an)”和“所述(the)”旨在也包含复数形式。应当进一步理解,当在本文中使用时,术语“包括(comprises)”、“包括(comprising)”、“包含(includes)”和/或“包含(including)”指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一或多个其它特征、整数、步骤、操作、元件、组件和/或其组的存在或添加。
进一步地,许多方面是根据用于由例如计算装置的元件执行的动作序列来描述的。应当认识到,本文所描述的各个动作可以由特定电路(例如专用集成电路(ASIC))、由正被一或多个处理器执行的程序指令或由两者的组合来执行。另外,可以认为本文所描述的这些动作序列完全体现在任何形式的计算机可读存储媒体内,所述计算机可读存储媒体中存储有对应的计算机指令集,所述计算机指令在被执行时会使关联处理器执行本文所描述的功能。因此,本发明的各个方面可以以多种不同的形式来体现,设想所有所述形式均在所要求的主题的范围内。另外,对于本文所描述的每个方面,任何此些方面的对应形式可以在本文中被描述为例如“被配置成(执行所描述动作)的逻辑”。
在示范性方面,公开了多标记分支预测表,其中所述多标记分支预测表的每个条目标记有两个或两个以上标记。所述两个或两个以上标记可以对应于被提取例如以用于由超标量处理器执行的指令的两个或两个以上提取组(其中所述超标量处理器可以被配置成在所述两个或两个以上提取组中的每个提取组中并行地提取两个或两个以上指令)。多标记分支预测表的每个条目可以拥有两个或两个以上分支预测机制,如本领域已知的2位分支预测计数器或3位分支预测计数器(并且还在以下部分进行简要解释)。由于两个或两个以上提取组可以利用多标记分支预测表的单个条目,因此提高了对每个条目中的所述多个分支预测机制的利用。将参考下文中的附图解释示范性多标记分支预测表的各个实施方案细节和可能配置。
现在参考图1,示出了常规处理系统100的各方面。具体地说,常规分支预测表(BPT)102被示出为带单个标记的结构,这将在下文中进一步解释。在每个处理周期内,处理系统100可以支持对包括用于在指令流水线(未明确展示)中执行的多个指令的提取组进行提取。如此,处理系统100可以被配置成超标量处理器或如本领域已知的超长指令字(VLIW)机器。如所示出的,包括多达四个指令的提取组的提取组地址108可以与如BPT索引逻辑104中的先前分支执行历史等任何其它信息组合。BPT索引逻辑104可以在其输入处实施如散列或其它逻辑组合等功能,以指向特定条目,例如BPT 102的条目106。标记106a可以包含提取组地址108的至少一部分。标记106a可以用于确认索引的条目106是BPT 102的正确条目,所述正确条目保持针对位于提取组地址108处的分支指令(如果存在于提取组中的话)的预测。应当注意,在示出的常规实施方案中,标记106a是提取组中包含的所有指令共用的。
如地址和过去历史等信息提供了在处理系统100中执行的分支指令的过去行为。基于此信息,如BPT 102的条目106等条目中的分支预测机制提供了对当前分支指令将如何执行(例如所述当前分支指令将被采用还是未被采用)的预测。更具体地说,由于在上述实例中每个提取组包括多达四个指令,因此包含条目106的BPT 102的每个条目设置有四个分支预测计数器P0-P3,所述分支预测计数器是被配置成提供针对分支指令的分支预测的分支预测机制,所述分支指令可以位于对应于提取组中的分支预测计数器P0-P3的位置处。
分支预测计数器P0-P3可以各自实施为饱和计数器,如本领域已知的。现在将通过背景解释2位饱和计数器或双模分支预测器。2位饱和计数器在每次对应的分支指令在一个方向上进行评估(例如采用)时递增;并且在每次对应的分支指令在另一个方向上进行评估(即未采用)时递减。2位饱和计数器的值表示预测,其中常规地,二进制值“11”指示强预测为采用,“10”指示微预测为采用,“01”指示微预测为未采用并且“11”指示强预测为未采用。饱和计数器的优点在于在同一方向上的频繁评估(即在同一方向上至少两个)使预测饱和或偏置,但在相反方向上的不频繁评估(例如仅一个误预测)不会改变所预测方向。类似概念可以扩展到其它类型的预测机制,如3位饱和计数器。
不论分支预测计数器P0-P3的具体实施方案如何,可以看到如果索引到条目106并且其标记与标记106a相匹配的提取组中仅存在一个分支指令,则在针对所述提取组进行分支预测时仅利用四个分支预测计数器P0-P3中对应的分支预测计数器,同时不利用其余的分支预测计数器P0-P3。由于饱和计数器消耗有价值的资源(例如软件、硬件或其组合),因此期望提高对这些资源的利用。
现在参考图2,示出处理系统200具有示范性多标记分支预测表202,所述多标记分支预测表被配置成用于更有效地利用分支预测资源。具体地说,图2展示了还可以被配置成用于在每个处理周期提取多于一个指令的处理系统200(例如设计有超标量架构)。如一或多个指令的提取组的提取组地址208等信息可以通过BPT索引逻辑204用于确定BPT 202的特定条目206。
在示范性方面,条目206可以包含多个标记,已经代表性地示出了所述多个标记中的标记206a和206b。所述多个标记206a-b可以总体上对应于不同的提取组。在为了说明起见将进一步描述的一个例子中,所述多个标记206a-b可以包含可以索引到同一条目206的不同提取组的地址的至少一部分。在未更详细讨论的一些替代性方面,所述多个标记206a-b中的每个标记可以包含不同提取组中的分支指令的地址的至少一部分。在又其它方面,所述多个标记206a-b可以基于提取组的地址位或其它标识符的任何其它功能或逻辑组合、提取组的组件分支指令或其组合来形成。
在标记206a-b包括对应的两个提取组的地址的一部分的一个实例中,提取组地址208的一或多个位可以用于确定所述多个标记206a-b中的哪个标记可以与所述特定提取组地址相关联。例如,如果提取组地址208的特定位例如位[n]为“1”,则标记206a可以与所述提取组地址相关联;或者如果位[n]为“0”,则标记206b可以与所述提取组地址相关联(在一个实例中,“n”的值可以为“5”,使得如果提取组地址208的位[5]为“1”,则可以选择包括其位[5]为“1”的地址[5:0]的至少6位的标记206a,然而如果提取组地址208的位[5]为“1”,则可以选择包括其位[5]为“1”的地址[5:0]的至少6位的标记206b)。
在所述多个标记206a-b的各个实施方案中,标记206a-b中的每个标记可以形成为不同的字段或包含在单独的标记阵列中,或者在替代性实施方案中,所述多个标记206a-b可以形成与BPT 202相关联的宽标记阵列的一部分。然而,应当理解,多个标记BPT 202的本文描述的功能适用于这些不同的实施方案。
在示范性方面,可以通过将BPT 202的每个条目配置成跨多个提取组共享以用于对所述多个提取组中可以包含的分支进行分支预测来提高对BPT 202的资源的利用。例如,这四个分支预测计数器P0-P3(这四个分支预测计数器可以被类似地配置为参考图1描述的分支预测计数器P0-P3)可以用于对索引到条目206并且其标记与所述多个标记206a-b中的一个标记相匹配的至少两个提取组中可以包含的分支进行预测。应当理解,不要求与每个条目相关联的标记的数量与条目中的分支预测计数器的数量相对应。现在将参考与包括四个分支预测计数器P0-P3的实例条目206相关联的两个标记206a-b的所展示实例来提供示范性多标记BPT 202的另外的操作细节。
一方面,如果具有提取组地址208的特定提取组索引到条目206并且标记206a-b中的一个标记与提取组地址208的对应位相匹配,则可以说命中了BPT 202中的提取组。在命中的情况下,提取组中的一或多个分支指令可以从对应的分支预测计数器P0-P3获得预测,并且一旦进行了评估(例如在其执行完成后),所述一或多个分支指令可以更新其对应的分支预测计数器P0-P3。
另一方面,索引的条目206处的标记206a-b中的标记均与提取组地址208的对应位不匹配,从而导致未命中。在未命中的情况下,将BPT 202的现有条目(称为受害者条目(victim entry))从BPT 202中驱逐,以容纳BPT 202中未命中的提取组的分支预测信息。
随后用与BPT 202中的未命中的提取组相对应的新条目替换受害者条目。这涉及更新多个标记中的对应标记。例如,如果在具有提取组地址208的未命中提取组在BPT 202中未命中之后条目206被更新,则用未命中提取组的提取组地址208的对应位来更新标记206a-b中的对应标记(例如基于未命中提取组的提取组地址208的先前描述的位[n])。将参考图3解释对条目206的其余标记和分支预测计数器P0-P3的更新。
在图3中,示出了涉及与图2的BPT 202相关的一系列实例动作的方法300的流程图。具体地说,方法300可以适用于BPT 202中出现未命中的事件。应当理解,在不背离本公开的范围的情况下,可以改变一系列事件的所展示顺序。
开始于在BPT 202中未命中提取组之后的框302,可以更新条目206。在这方面,可以读取针对提取组中的分支指令的分支预测计数器P0-P3中的对应分支预测计数器。在框304中,确定之前是否从未使用分支预测计数器P0-P3中的对应分支预测计数器(例如,可以采用在之前使用过对应分支预测计数器时设定的使用指示位或其它某种类似机制来跟踪先前是否使用过或更新过对应的分支预测计数器)。如果之前从未使用分支预测计数器P0-P3中的对应分支预测计数器,则在框306中,更新分支预测计数器P0-P3中的对应分支预测计数器以反映分支指令的方向(例如,在分支指令被采用时递增,或在分支指令未被采用时递减,如在先前部分中的2位饱和计数器的情况下所解释的)。分支预测计数器P0-P3中的其余分支预测计数器保持不变。此外,条目206中的标记206a-b中不对应于未命中提取组的其余标记也保持不变。
如果在框304中确定先前使用了分支预测计数器P0-P3中的对应分支预测计数器,则方法300可以进行到两个决策框308或312中的一个决策框,现在将对这两个决策框进行解释。
在框308中,确定先前是否使用过或先前是否更新过分支预测计数器P0-P3中的对应分支预测计数器,例如通过对受害者提取组的分支指令进行评估(或换言之,分支预测计数器P0-P3中的对应分支预测计数器目前是否在使用中),以及确定分支预测计数器P0-P3中的对应分支预测计数器的方向与未命中提取组中的分支指令的方向是否匹配。如果匹配,则在框310中,不更新分支预测计数器P0-P3中的对应分支预测计数器。此外,也不更新条目206中的分支预测计数器P0-P3中的其余分支预测计数器并且其余标记也保持不变。框310中示出的这个过程可以实现“构造性混叠”,其中构造性混叠在这个上下文中是指再使用由分支预测计数器P0-P3中在针对未命中提取组中的分支指令进行未来预测时其方向与未命中提取组中的分支指令的方向匹配的对应分支预测计数器开发的预测历史。
因为被驱逐或替换的受害者条目位于与未命中提取组相同的索引处并且分支预测计数器P0-P3中用于受害者条目的对应分支预测计数器与未命中提取组的分支指令的方向相匹配,所以实现了如上文描述的构造性混叠。通过不更新先前更新(例如通过在处于BPT 202的同一索引位置的受害者条目之前的一或多个受害者条目)的分支预测计数器P0-P3,将先前的分支指令的行为历史保存在对应的分支预测计数器P0-P3中,这可以期望产生上文描述的构造性混叠。
另一方面,如果在框312中确定先前使用了分支预测计数器P0-P3中的对应分支预测计数器(或所述分支预测计数器在使用中)并且分支预测计数器P0-P3中的对应分支预测计数器的方向与未命中提取组中的分支指令的方向不匹配,则在框314中,重新初始化分支预测计数器P0-P3中的对应分支预测计数器。分支预测计数器P0-P3中的对应分支预测计数器的重新初始化涉及重置到初始状态或中性状态(如果适用的话)以及将方向更新到分支指令的方向(例如,如果分支预测计数器P0-P3是2位饱和计数器并且分支指令被采用,则对与分支指令相对应的分支预测计数器P0-P3中的一个分支预测计数器的重新初始化将会意指将分支预测计数器P0-P3中的对应分支预测计数器设置为“01”或弱采用指示)。
此外,在框314中,重置条目206中的分支预测计数器P0-P3中的其余分支预测计数器并且还重置其余标记。重置分支预测计数器P0-P3中的其余分支预测计数器和其余标记防止“破坏性混叠”。在这个上下文中,破坏性混叠是指被驱逐并且其方向与未命中提取组的分支指令的方向不匹配的受害者条目中的分支预测计数器P0-P3中的对应分支预测计数器能够破坏或消极地影响分支预测计数器P0-P3中的对应分支预测计数器预测未命中提取组的分支指令的方向的未来预测能力。
进一步解释,由于被驱逐的受害者条目中的分支预测计数器P0-P3中的对应分支预测计数器的方向与未命中提取组的分支指令的方向不匹配,因此如果受害者条目中的分支预测计数器P0-P3中的对应分支预测计数器保持不变,则分支预测计数器P0-P3中的对应分支预测计数器将不反映替换受害者条目的未命中提取组的分支指令的行为。因此,再使用分支预测计数器P0-P3中的对应分支预测计数器来预测未命中提取组的分支指令的方向将导致不期望地破坏分支预测计数器P0-P3中的对应分支预测计数器预测未命中提取组的分支指令的方向的能力。为了避免破坏性混叠的这种可能性,如上文描述的对分支预测计数器P0-P3中的对应分支预测计数器的重新初始化重置了分支预测计数器P0-P3中的对应分支预测计数器,并且然后将分支预测计数器P0-P3中的对应分支预测计数器的方向更新到未命中提取组的分支指令的方向。
以此方式,在示范性方面,多标记分支预测表可以被配置成用于如处理系统200(例如被配置成用于超标量处理)等处理器,以在实现构造性混叠并最小化破坏性混叠的同时提高对多标记分支预测表的每个条目中的预测机制的利用。
因此,应当了解,示范性方面包含用于执行本文所公开的过程、功能和/或算法的各种方法。例如,图4展示了例如使用如BPT 202等多标记分支预测表进行分支预测的方法400。
如所示出的,方法400的框402包括为分支预测表(例如BPT 202)配置一或多个条目(例如条目206),其中每个条目包括一或多个分支预测计数器(例如分支预测计数器P0-P3),所述一或多个分支预测计数器对应于被提取以用于在处理器(例如处理系统200)中进行处理的指令(例如位于提取组地址208处)的提取组中的一或多个指令。
框404包括使两个或两个以上标记字段(例如标记字段206a-b)与每个条目相关联,其中所述两个或两个以上标记字段对应于两个或两个以上提取组。
在方法400中,所述两个或两个以上提取组中的每个提取组可以包括至少一个分支指令,所述一或多个分支预测计数器中的至少一个分支预测计数器用于针对所述至少一个分支指令进行分支预测。如先前提及的,上文所引用的两个或两个以上标记字段可以以任何方式对应于所述两个或两个以上提取组,所述方式包含包括所述两个或两个以上提取组的地址的至少一部分、包括所述两个或两个以上提取组中所包括的分支指令的地址的至少一部分或其组合。
在另外的方面,方法400可以涉及如果分支预测表包括与第一条目相关联的第一标记字段,则确定在分支预测表中命中了第一提取组的第一分支指令,其中所述第一标记字段对应于所述第一提取组,并且其中所述第一条目包括被配置成用于提供针对所述第一分支指令的分支预测的第一分支预测计数器(例如,如果具有提取组地址208的特定提取组索引到条目206中并且标记206a-b中的一个标记与提取组地址208的对应位相匹配,提取组中的一或多个分支指令可以从对应的分支预测计数器P0-P3获得预测,并且一旦进行了评估(例如在其执行完成后),所述一或多个分支指令可以更新其对应的分支预测计数器P0-P3)。
方法400还可以包含如果分支预测表不包括与第一条目相关联的第一标记字段,则确定在分支预测表中未命中第一提取组的第一分支指令,其中所述第一标记字段对应于第一提取组。例如,如果索引的条目206处的标记206a-b中的标记均与提取组地址208的对应位不匹配,则这将导致BPT 202中出现未命中。在未命中的情况下,将BPT 202的现有条目(称为受害者条目)从BPT 202中驱逐,以容纳BPT 202中未命中的提取组的分支预测信息。
根据未命中,方法400可以进一步涉及用第一标记字段更新分支预测表以包含第一条目,从而对应于第一提取组。例如,如果提取组在BPT 202中未命中之后条目206被更新,则用未命中提取组的地址的对应位来更新标记206a-b中的对应标记(例如基于未命中提取组的提取组地址208的位[5])。
此外,方法400还可以包含参考图3所解释的在未命中的情况下的过程。例如,如果第一条目中的第一分支预测计数器的方向与第一分支指令的解析方向相匹配,则所述方法可以包含不更新第一分支预测计数器,以实现构造性混叠,所述第一分支指令对应于所述第一分支指令(参见例如框308-310)。
另一方面,如果第一条目中的第一分支预测计数器的方向与第一分支指令的解析方向不匹配,则方法400可以涉及重置第一分支预测计数器并将第一分支预测计数器的方向更新为对应于解析方向,以防止破坏性混叠,所述第一分支预测计数器对应于所述第一分支指令(参见例如框312-314)。另外的方面还可以包含重置第一条目中的一或多个另外的分支预测计数器以及重置与第一条目相关联的一或多个另外的标记字段,如参考图3的框312-314所解释的。
同样,在与方法400相容的各方面,如先前所提及的,所述两个或两个以上标记字段可以被配置为宽标记字段的一部分或者被配置为两个或两个以上标记字段阵列。
现在将关于图5讨论可以利用本公开的示范性方面的实例设备。图5示出了计算装置500的框图。计算装置500可以对应于被配置成执行图4的方法400的处理系统(例如处理系统200)的示范性实施方案。在图5的描绘中,示出计算装置500包含处理器502(所述处理器可以是超标量处理器),所述处理器包括先前所讨论的图2的BPT 202。在图5中,示范性地示出处理器502耦合到存储器510,并且应当理解,计算装置500还支持本领域已知的其它存储器配置。
图5还示出了耦合到处理器502和显示器528的显示控制器526。在一些情况下,计算装置500可以用于无线通信,并且图5还用虚线示出了任选框,如耦合到处理器502的编码/解码器(CODEC)534(例如音频和/或语音CODEC)并且扬声器536和麦克风538可以耦合到CODEC 534;以及耦合到无线控制器540的无线天线542,所述无线控制器耦合到处理器502。当这些任选框中的一或多个任选框存在时,在特定方面,处理器502、显示控制器526、存储器510和无线控制器540包含在系统级封装或片上系统装置522中。
因此,特定方面,输入装置530和电源544耦合到片上系统装置522。此外,在特定方面,如图5所展示的,当一或多个任选框存在时,显示器528、输入装置530、扬声器536、麦克风538、无线天线542和电源544在片上系统装置522外部。然而,显示器528、输入装置530、扬声器536、麦克风538、无线天线542和电源544中的每个可以耦合到片上系统装置522的组件,如接口或控制器。
应当注意,尽管图5大体地描绘了计算装置,但是处理器502和存储器510可以集成到以下中:机顶盒、服务器、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理(PDA)、固定位置数据单元、计算机、膝上型计算机、平板计算机、通信装置、移动电话或其它类似的装置。
本领域技术人员应了解,可以使用各种不同的技术和技艺中的任何一种来表示信息和信号。例如,可以贯穿上述说明引用的数据、指令、命令、信息、信号、位、符号和芯片可以通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示。
进一步地,本领域技术人员应了解,结合本文所公开的各方面所描述的各种说明性逻辑块、模块、电路和算法步骤可以实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,上文已经在功能方面对各种说明性组件、框、模块、电路和步骤进行了一般性描述。将此功能实现为硬件还是软件取决于强加于整个系统的特定应用和设计约束。熟练的技术人员可以针对每个特定应用以不同的方式实施描述的功能,但是此些实施方案决策不应当被解释为导致脱离本发明的范围。
结合本文所公开的方面所描述的方法、序列和/或算法可以在硬件中、在处理器所执行的软件模块中或两者的组合中直接实施。软件模块可以驻留在随机存取存储器(RAM)存储器、闪速存储器、只读存储器(ROM)存储器、电可编程序只读存储器(EPROM)存储器、电可擦可编程只读存储器(EEPROM)存储器、寄存器、硬盘、可移动磁盘、光盘只读存储器(CD-ROM)或本领域已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,从而使得处理器可以从存储媒体读取信息并将信息写入存储媒体中。在替代性方案中,存储媒体可以与处理器成一整体。
因此,本发明的方面可以包含体现用于使用多标记分支预测表进行分支预测的方法的计算机可读媒体。因此,本发明不限于所展示的实例,并且本发明的各方面中包含用于执行本文所描述的功能的任何装置。
尽管前述公开示出了本发明的说明性方面,但是应当注意,可以在不脱离如由所附权利要求书限定的本公开的范围的情况下在本文中作出各种改变和修改。根据本文所描述的本发明的各方面的方法权利要求的步骤和/或动作不需以任何特定的顺序执行。此外,尽管可能以单数形式描述或要求本发明的元素,但是也考虑了复数形式,除非明确陈述了限于单数形式。
Claims (29)
1.一种设备,其包括:
分支预测表,所述分支预测表包括一或多个条目,其中每个条目包括一或多个分支预测计数器,所述一或多个分支预测计数器对应于被提取以用于在处理器中进行处理的指令的提取组中的一或多个指令;以及
与每个条目相关联的两个或两个以上标记字段,其中所述两个或两个以上标记字段对应于两个或两个以上提取组。
2.根据权利要求1所述的设备,其中所述两个或两个以上标记字段包括所述两个或两个以上提取组的地址的至少一部分。
3.根据权利要求1所述的设备,其中所述两个或两个以上标记字段包括所述两个或两个以上提取组中包括的分支指令的地址的至少一部分。
4.根据权利要求1所述的设备,其中所述两个或两个以上提取组中的每个提取组包括至少一个分支指令,所述一或多个分支预测计数器中的至少一个分支预测计数器用于针对所述至少一个分支指令进行分支预测。
5.根据权利要求1所述的设备,其中如果在所述分支预测表中命中了第一提取组的第一分支指令,则所述分支预测表包括与第一条目相关联的第一标记字段,其中所述第一标记字段对应于所述第一提取组,并且其中所述第一条目包括被配置成提供针对所述第一分支指令的分支预测的第一分支预测计数器。
6.根据权利要求1所述的设备,其中如果在所述分支预测表中未命中第一提取组的第一分支指令,则将所述分支预测表的与第一条目相关联的第一标记字段更新为对应于所述第一提取组。
7.根据权利要求6所述的设备,其中,如果所述第一条目中的第一分支预测计数器的方向与所述第一分支指令的解析方向相匹配,则不更新所述第一分支预测计数器,以实现构造性混叠,所述第一分支指令对应于所述第一分支指令。
8.根据权利要求6所述的设备,如果所述第一条目中的第一分支预测计数器的方向与所述第一分支指令的解析方向不匹配,则重置所述第一分支预测计数器并将所述第一分支预测计数器的方向更新为对应于所述解析方向,以防止破坏性混叠,所述第一分支预测计数器对应于所述第一分支指令。
9.根据权利要求8所述的设备,其中所述第一条目中的一或多个另外的分支预测计数器被重置。
10.根据权利要求8所述的设备,其中与所述第一条目相关联的一或多个另外的标记字段被重置。
11.根据权利要求1所述的设备,其中所述两个或两个以上标记字段是宽标记字段的一部分。
12.根据权利要求1所述的设备,其中所述两个或两个以上标记字段被配置为对应于两个或两个以上标记字段阵列。
13.根据权利要求1所述的设备,其中所述处理器是超标量处理器,所述超标量处理器被配置成在所述两个或两个以上提取组中的每个提取组中并行地提取两个或两个以上指令。
14.根据权利要求1所述的设备,所述设备集成到选自包括以下的群组的装置中:机顶盒、服务器、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理PDA、固定位置数据单元、计算机、膝上型计算机、平板计算机、通信装置、移动电话。
15.一种分支预测方法,所述方法包括:
为分支预测表配置一或多个条目,其中每个条目包括一或多个分支预测计数器,所述一或多个分支预测计数器对应于被提取以用于在处理器中进行处理的指令的提取组中的一或多个指令;以及
使两个或两个以上标记字段与每个条目相关联,其中所述两个或两个以上标记字段对应于两个或两个以上提取组。
16.根据权利要求15所述的方法,其中所述两个或两个以上标记字段包括所述两个或两个以上提取组的地址的至少一部分。
17.根据权利要求15所述的方法,其中所述两个或两个以上标记字段包括所述两个或两个以上提取组中包括的分支指令的地址的至少一部分。
18.根据权利要求15所述的方法,其中所述两个或两个以上提取组中的每个提取组包括至少一个分支指令,所述一或多个分支预测计数器中的至少一个分支预测计数器用于针对所述至少一个分支指令进行分支预测。
19.根据权利要求15所述的方法,其进一步包括如果所述分支预测表包括与第一条目相关联的第一标记字段,则确定在所述分支预测表中命中了第一提取组的第一分支指令,其中所述第一标记字段对应于所述第一提取组,并且其中所述第一条目包括被配置成提供针对所述第一分支指令的分支预测的第一分支预测计数器。
20.根据权利要求15所述的方法,其进一步包括如果所述分支预测表不包括与第一条目相关联的第一标记字段,则确定在所述分支预测表中未命中第一提取组的第一分支指令,其中所述第一标记字段对应于所述第一提取组。
21.根据权利要求20所述的方法,其进一步包括用所述第一标记字段更新所述分支预测表以包含所述第一条目,从而对应于所述第一提取组。
22.根据权利要求21所述的方法,其进一步包括,如果所述第一条目中的第一分支预测计数器的方向与所述第一分支指令的解析方向相匹配,则不更新所述第一分支预测计数器,以实现构造性混叠,所述第一分支指令对应于所述第一分支指令。
23.根据权利要求21所述的方法,其进一步包括,如果所述第一条目中的第一分支预测计数器的方向与所述第一分支指令的解析方向不匹配,则重置所述第一分支预测计数器并将所述第一分支预测计数器的方向更新为对应于所述解析方向,以防止破坏性混叠,所述第一分支预测计数器对应于所述第一分支指令。
24.根据权利要求23所述的方法,其进一步包括重置所述第一条目中的一或多个另外的分支预测计数器。
25.根据权利要求23所述的方法,其进一步包括重置与所述第一条目相关联的一或多个另外的标记字段。
26.根据权利要求15所述的方法,其包括将所述两个或两个以上标记字段配置为宽标记字段的一部分。
27.根据权利要求15所述的方法,其包括将所述两个或两个以上标记字段配置为两个或两个以上标记字段阵列。
28.一种设备,其包括:
分支预测表,所述分支预测表包括一或多个条目,其中每个条目包括用于分支预测的一或多个装置,所述一或多个装置对应于被提取以用于在处理器中进行处理的指令的提取组中的一或多个指令;以及
用于使两个或两个以上提取组与每个条目相关联的两个或两个以上装置。
29.一种非暂时性计算机可读存储媒体,其包括在由处理器执行时使所述处理器执行分支预测的代码,所述非暂时性计算机可读存储媒体包括:
用于为分支预测表配置一或多个条目的代码,其中每个条目包括一或多个分支预测计数器,所述一或多个分支预测计数器对应于被提取以用于在处理器中进行处理的指令的提取组中的一或多个指令;以及
用于使两个或两个以上标记字段与每个条目相关联的代码,其中所述两个或两个以上标记字段对应于两个或两个以上提取组。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/636,633 US20190004805A1 (en) | 2017-06-28 | 2017-06-28 | Multi-tagged branch prediction table |
US15/636,633 | 2017-06-28 | ||
PCT/US2018/036813 WO2019005459A1 (en) | 2017-06-28 | 2018-06-11 | MULTI-LABEL CONNECTION PREDICTION TABLE |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110741343A true CN110741343A (zh) | 2020-01-31 |
Family
ID=62779106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880037132.8A Pending CN110741343A (zh) | 2017-06-28 | 2018-06-11 | 多标记分支预测表 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20190004805A1 (zh) |
EP (1) | EP3646172A1 (zh) |
CN (1) | CN110741343A (zh) |
TW (1) | TW201905683A (zh) |
WO (1) | WO2019005459A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111209047A (zh) * | 2020-02-24 | 2020-05-29 | 江苏华创微系统有限公司 | 支持混合模式的分支历史计数器 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10977041B2 (en) | 2019-02-27 | 2021-04-13 | International Business Machines Corporation | Offset-based mechanism for storage in global completion tables |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5948100A (en) * | 1997-03-18 | 1999-09-07 | Industrial Technology Research Institute | Branch prediction and fetch mechanism for variable length instruction, superscalar pipelined processor |
US6021489A (en) * | 1997-06-30 | 2000-02-01 | Intel Corporation | Apparatus and method for sharing a branch prediction unit in a microprocessor implementing a two instruction set architecture |
US6948055B1 (en) * | 2000-10-09 | 2005-09-20 | Sun Microsystems, Inc. | Accuracy of multiple branch prediction schemes |
CN101460922A (zh) * | 2006-06-05 | 2009-06-17 | 高通股份有限公司 | 滑动窗口、基于区块的分支目标地址高速缓冲存储器 |
US20150268957A1 (en) * | 2014-03-19 | 2015-09-24 | International Business Machines Corporation | Dynamic thread sharing in branch prediction structures |
CN106406823A (zh) * | 2016-10-10 | 2017-02-15 | 上海兆芯集成电路有限公司 | 分支预测器和用于操作分支预测器的方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6073230A (en) * | 1997-06-11 | 2000-06-06 | Advanced Micro Devices, Inc. | Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches |
US6079005A (en) * | 1997-11-20 | 2000-06-20 | Advanced Micro Devices, Inc. | Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address |
US6601161B2 (en) * | 1998-12-30 | 2003-07-29 | Intel Corporation | Method and system for branch target prediction using path information |
US6757815B2 (en) * | 1999-12-23 | 2004-06-29 | Intel Corporation | Single array banked branch target buffer |
US7707397B2 (en) * | 2001-05-04 | 2010-04-27 | Via Technologies, Inc. | Variable group associativity branch target address cache delivering multiple target addresses per cache line |
US7454602B2 (en) * | 2004-12-15 | 2008-11-18 | International Business Machines Corporation | Pipeline having bifurcated global branch history buffer for indexing branch history table per instruction fetch group |
US7437543B2 (en) * | 2005-04-19 | 2008-10-14 | International Business Machines Corporation | Reducing the fetch time of target instructions of a predicted taken branch instruction |
US7447885B2 (en) * | 2005-04-20 | 2008-11-04 | Arm Limited | Reading prediction outcomes within a branch prediction mechanism |
US20070260862A1 (en) * | 2006-05-03 | 2007-11-08 | Mcfarling Scott | Providing storage in a memory hierarchy for prediction information |
US7870371B2 (en) * | 2007-12-17 | 2011-01-11 | Microsoft Corporation | Target-frequency based indirect jump prediction for high-performance processors |
US20120290821A1 (en) * | 2011-05-11 | 2012-11-15 | Shah Manish K | Low-latency branch target cache |
US9858081B2 (en) * | 2013-08-12 | 2018-01-02 | International Business Machines Corporation | Global branch prediction using branch and fetch group history |
JP6205966B2 (ja) * | 2013-08-15 | 2017-10-04 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
GB2534522B (en) * | 2014-07-25 | 2016-12-28 | Imagination Tech Ltd | Conditional branch prediction using a long history |
-
2017
- 2017-06-28 US US15/636,633 patent/US20190004805A1/en not_active Abandoned
-
2018
- 2018-06-11 WO PCT/US2018/036813 patent/WO2019005459A1/en unknown
- 2018-06-11 CN CN201880037132.8A patent/CN110741343A/zh active Pending
- 2018-06-11 EP EP18735121.8A patent/EP3646172A1/en not_active Withdrawn
- 2018-06-12 TW TW107120101A patent/TW201905683A/zh unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5948100A (en) * | 1997-03-18 | 1999-09-07 | Industrial Technology Research Institute | Branch prediction and fetch mechanism for variable length instruction, superscalar pipelined processor |
US6021489A (en) * | 1997-06-30 | 2000-02-01 | Intel Corporation | Apparatus and method for sharing a branch prediction unit in a microprocessor implementing a two instruction set architecture |
US6948055B1 (en) * | 2000-10-09 | 2005-09-20 | Sun Microsystems, Inc. | Accuracy of multiple branch prediction schemes |
CN101460922A (zh) * | 2006-06-05 | 2009-06-17 | 高通股份有限公司 | 滑动窗口、基于区块的分支目标地址高速缓冲存储器 |
CN103019652A (zh) * | 2006-06-05 | 2013-04-03 | 高通股份有限公司 | 滑动窗口、基于区块的分支目标地址高速缓冲存储器 |
US20150268957A1 (en) * | 2014-03-19 | 2015-09-24 | International Business Machines Corporation | Dynamic thread sharing in branch prediction structures |
CN106406823A (zh) * | 2016-10-10 | 2017-02-15 | 上海兆芯集成电路有限公司 | 分支预测器和用于操作分支预测器的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111209047A (zh) * | 2020-02-24 | 2020-05-29 | 江苏华创微系统有限公司 | 支持混合模式的分支历史计数器 |
CN111209047B (zh) * | 2020-02-24 | 2023-08-15 | 江苏华创微系统有限公司 | 支持混合模式的分支历史计数器 |
Also Published As
Publication number | Publication date |
---|---|
TW201905683A (zh) | 2019-02-01 |
EP3646172A1 (en) | 2020-05-06 |
US20190004805A1 (en) | 2019-01-03 |
WO2019005459A1 (en) | 2019-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10318304B2 (en) | Conditional branch prediction using a long history | |
US10664280B2 (en) | Fetch ahead branch target buffer | |
US9367471B2 (en) | Fetch width predictor | |
US20060218385A1 (en) | Branch target address cache storing two or more branch target addresses per index | |
US20160350116A1 (en) | Mitigating wrong-path effects in branch prediction | |
US20100037036A1 (en) | Method to improve branch prediction latency | |
CN110741343A (zh) | 多标记分支预测表 | |
EP3198400B1 (en) | Dependency-prediction of instructions | |
US10838731B2 (en) | Branch prediction based on load-path history | |
CN110741345A (zh) | 对固定方向分支指令的分支预测 | |
US20170083333A1 (en) | Branch target instruction cache (btic) to store a conditional branch instruction | |
US10949208B2 (en) | System, apparatus and method for context-based override of history-based branch predictions | |
US11687342B2 (en) | Way predictor and enable logic for instruction tightly-coupled memory and instruction cache | |
US10579414B2 (en) | Misprediction-triggered local history-based branch prediction | |
CN115562730A (zh) | 分支预测器、相关设备以及分支预测方法 | |
US20190073223A1 (en) | Hybrid fast path filter branch predictor |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200131 |