CN110741345A - 对固定方向分支指令的分支预测 - Google Patents

对固定方向分支指令的分支预测 Download PDF

Info

Publication number
CN110741345A
CN110741345A CN201880038833.3A CN201880038833A CN110741345A CN 110741345 A CN110741345 A CN 110741345A CN 201880038833 A CN201880038833 A CN 201880038833A CN 110741345 A CN110741345 A CN 110741345A
Authority
CN
China
Prior art keywords
taken
bloom filter
branch instruction
branch
employing
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
Application number
CN201880038833.3A
Other languages
English (en)
Inventor
R·M·A·阿勒谢赫
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN110741345A publication Critical patent/CN110741345A/zh
Pending legal-status Critical Current

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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • 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
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions

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

对固定方向分支指令的分支预测
技术领域
所公开的方面涉及处理系统中的分支预测。更具体来说,示范性方面涉及改进对始终在相同方向上解析的分支指令的分支预测,所述分支指令例如始终采用或始终未采用分支指令,且在本文中被称作“固定方向”分支指令。
背景技术
处理系统可以采用引起控制流变化的指令,例如条件性分支指令。条件性分支指令的方向是基于条件的评估方式,但评估可能仅在处理器的指令管线的深处已知。为了避免管线停滞直到已知评估为止,处理器可以采用分支预测机制以在管线的早期预测条件性分支指令的方向。基于预测,处理器可以从两条路径中的一条中的预测地址推测性地提取并执行指令——从分支目标地址开始的“采用”路径,其中对应方向被称为“采用方向”;或从条件性分支指令之后的下一顺序地址开始的“未采用”路径,其中对应方向被称为“未采用方向”。
当条件被评估且实际分支方向被确定时,如果分支被错误预测(即,执行遵循错误的路径),则可以从管线中清空推测性地提取的指令,且可以从正确的下一地址提取正确路径中的新指令。因此,改进条件性分支指令的分支预测准确性能减轻与错误预测及错误路径指令的执行相关联的损失,且能对应地改进处理系统的性能及能量利用。
传统的分支预测机制可以包含一或多个状态机,所述状态机可以运用过去及当前分支指令的评估历史加以训练。但在一些情境下,这些分支预测机制可能无法准确地预测分支指令的方向。此外,当发生错误预测时,用于分支预测的能量及资源也是浪费的。
特定来说,对于分支行为可能保持不变的一些分支指令,能看出与复杂的分支预测机制相关联的能量耗用是浪费的。例如,一些分支指令在每次执行时都可能在相同方向上解析——采用或未采用。此类分支指令在本发明中被称为“同方向”或“固定方向”分支指令。然而,常规的分支预测机制并不能辨识此类固定方向分支指令或对其提供特殊考量。此外,在一些情况下,常规的分支预测机制也可能会错误预测固定方向分支指令。
因此,需要改进常规分支预测机制的能量消耗、效率及预测准确性。
发明内容
本发明的示范性方面涉及用于分支预测的系统及方法。在本发明中,固定方向分支指令是指始终在相同方向上解析——始终采用或始终未采用的分支指令。对于此类固定方向分支指令,示范性布隆过滤器被配置成识别并实现对分支方向的高效预测。布隆过滤器可以包括可以被编索引的数据结构。在一个实例中,示范性布隆过滤器可以包含位阵列(例如,寄存器或相似存储器元件),其中位可以使用分支指令的分支程序计数器(PC)值来编索引。如果布隆过滤器中的对应索引位置处存在分支指令的命中条目(例如,位集合),则此意指布隆过滤器已记录所述分支指令的历史。更具体来说,采用布隆过滤器记录分支指令被采用或在采用方向上解析的例子;而未采用布隆过滤器记录分支指令未采用或在未采用方向上解析的例子。如果分支指令在仅一个而非两布隆过滤器中存在命中条目,则此传达分支指令为方向对应于存在命中条目的布隆过滤器的固定方向分支指令,并相应地预测分支指令的方向。
例如,示范性方面涉及一种分支预测方法。所述方法包括:对于待执行的分支指令,访问采用布隆过滤器及未采用布隆过滤器,其中采用布隆过滤器包括已至少在采用方向上解析一次的分支指令的记录,且未采用布隆过滤器包括已至少在未采用方向上解析一次的分支指令的记录,及使用采用布隆过滤器或未采用布隆过滤器中的至少一个预测分支指令的执行方向。
另一示范性方面涉及一种设备,其包括被配置成执行分支指令的处理器。所述处理器包括:采用布隆过滤器,其包括已至少在采用方向上解析一次的分支指令的记录;未采用布隆过滤器,其包括已至少在未采用方向上解析一次的分支指令的记录;及逻辑,其被配置成基于采用布隆过滤器或未采用布隆过滤器中的至少一个预测分支指令的执行方向。
又一示范性方面涉及一种非暂时性计算机可读存储媒体,其包括在由计算机执行时致使计算机执行分支预测操作的代码。所述非暂时性计算机可读存储媒体包括:对于待执行的分支指令,用于访问采用布隆过滤器及未采用布隆过滤器的代码,其中采用布隆过滤器包括已至少在采用方向上解析一次的分支指令的记录,且未采用布隆过滤器包括已至少在未采用方向上解析一次的分支指令的记录,及用于使用采用布隆过滤器或未采用布隆过滤器中的至少一个预测分支指令的执行方向的代码。
又一示范性方面涉及一种设备,其包括:用于执行分支指令的装置,用于记录已至少在采用方向上解析一次的分支指令的第一装置,用于记录已至少在未采用方向上解析一次的分支指令的第二装置,及用于基于第一装置或第二装置中的至少一个预测分支指令的执行方向的装置。
附图说明
呈现附图以辅助描述本发明的方面,且仅仅是为了说明所述方面而非限制所述方面而提供附图。
图1说明根据本发明的各方面的处理系统。
图2说明根据本发明的各方面的布隆过滤器。
图3说明根据本发明的各方面的关于示范性方法的事件序列。
图4描绘可以有利地采用本发明的方面的示范性计算装置。
具体实施方式
在以下针对本发明的特定方面的描述及相关图式中公开本发明的各方面。可以在不脱离本发明的范围的情况下设计替代方面。另外,将不会详细描述或将省略本发明的众所周知的元件以免混淆本发明的相关细节。
词语“示范性”在本文中用于意指“充当实例、例子或说明”。本文中描述为“示范性”的任何方面未必解释为比其它方面优选或有利。同样地,术语“本发明的各方面”并不要求本发明的所有方面都包含所论述的特征、优点或操作模式。
本文中所使用的术语仅是出于描述特定方面的目的,且并不意图限制本发明的各方面。如本文中所使用,除非上下文另外清楚地指示,否则单数形式“一(a/an)”及“所述”也意图包含复数形式。将进一步理解,术语“包括”及/或“包含”在本文中使用时指定所陈述特征、整数、步骤、操作、元件及/或组件的存在,但不排除一或多个其它特征、整数、步骤、操作、元件、组件及/或其群组的存在或添加。
此外,在待由(例如)计算装置的元件执行的动作序列方面描述许多方面。将认识到,本文中所描述的各种动作可以由特定电路(例如,专用集成电路(ASIC))、正由一或多个处理器执行的程序指令或两者的组合执行。另外,本文中所描述的这些动作序列可以被视为全部在任何形式的计算机可读存储媒体内体现,在所述计算机可读存储媒体中存储有对应的计算机指令集,所述计算机指令在执行时将致使相关联的处理器执行本文中所描述的功能性。因此,本发明的各种方面可以数个不同形式来体现,预期所有形式属于所主张的主题的范围内。另外,对于本文中所描述的各方面中的每一个,任何此类方面的对应形式可以在本文中描述为(例如)“经配置以”执行所描述动作的“逻辑”。
本发明的示范性方面涉及改进分支预测效率、准确性及能量消耗。具体来说,在本发明中,考虑固定方向分支指令,如先前所提及,其为始终在相同方向上解析——始终采用或始终未采用的分支指令。对于此类固定方向分支指令,公开例如布隆过滤器的示范性设计,其被配置成识别并实现对分支方向的高效预测。
本发明中的布隆过滤器可以包括可以被编索引的数据结构。在一个实例中,示范性布隆过滤器可以包含位阵列(例如,寄存器或相似存储器元件),其中位可以使用分支指令的分支程序计数器(PC)值来编索引。如果布隆过滤器中的对应索引位置处存在分支指令的命中条目(例如,位集合),则此意指布隆过滤器已记录所述分支指令的历史。更具体来说,采用布隆过滤器记录分支指令被采用或在采用方向上解析的例子;而未采用布隆过滤器记录分支指令未采用或在未采用方向上解析的例子。如果分支指令仅在一个而非两个布隆过滤器中存在命中条目,则此传达分支指令为固定方向分支指令。
固定方向分支指令的执行方向是从存在命中条目的布隆过滤器导出(即,如果仅在采用布隆过滤器中存在命中,则分支指令始终采用;或类似地,如果仅在未采用布隆过滤器中存在命中,则分支指令始终未采用)。对于此类固定方向分支指令,绕过常规的分支预测机制。以此方式,能获得对固定方向分支指令的准确预测,且能避免常规分支预测机制的能量消耗及不准确性。
还应认识到,本发明的各方面可以扩展到其解析可能从如上文所论述的固定方向偏离相对较少或可忽略次数的分支指令。例如,还公开布隆过滤器的替代结构,其可以用于预测“几乎始终”(例如,超过99%的时间)采用或未采用的分支指令。例如,可以替代地使用计数器(而非单个位)阵列实施上文所提及的布隆过滤器,其中计数器可以使用分支指令的PC来编索引。在索引位置处,对应分支指令的计数器(如果存在(即,命中条目中存在计数器))可以提供关于所述分支指令多少次分别在采用方向上解析(对于采用布隆过滤器的情况),或分支指令多少次在未采用方向上解析(对于未采用布隆过滤器的情况)的信息。因此,对于分支指令,可以通过读取所述分支指令的采用布隆过滤器及未采用布隆过滤器两者来确定分支指令的采用次数及分支指令的未采用次数。可以比较这些数目,或可以确定采用或未采用分支指令的次数比例(例如,作为获得为两个计数值的总和的分支指令的总例子数目的百分比)。如果采用分支的次数比例极高(例如,大于99%的阈值),则分支指令可以预测为采用;或替代地,如果未采用分支的次数比例极高(例如,大于99%的阈值),则分支指令可以预测为未采用。
现在参考图1,示出可以采用本发明的各方面的示范性处理系统100。处理系统100示出为包括耦合到指令高速缓冲存储器108的处理器110。尽管此图中未示出,但也可以存在例如功能单元、输入/输出单元、接口结构、存储器结构等的额外组件,但由于其可能并不与本发明密切相关,因此未明确地加以标识或描述。如所示出,处理器110可以被配置成从指令高速缓冲存储器108接收指令,并使用例如执行管线112执行指令。执行管线112可以被配置成包含一或多个管线级,例如所属领域中已知的指令提取、解码、执行、写回等。代表性地,在指令高速缓冲存储器108中示出分支指令且将其标识为指令102。
在示范性实施方案中,分支指令102可以具有对应地址或程序计数器(PC)值102pc。处理器110通常示出为包含分支预测机制106,其可以进一步包含例如包括先前分支指令的行为历史的历史表格的分支预测单元、例如分支预测计数器/双模态预测器的状态机等,如所属领域中已知。当处理器110提取分支102以用于执行时,例如散列104的逻辑(例如,实施异或函数)可以利用地址或PC值102pc及/或来自分支指令102的其它信息来访问分支预测机制并检索预测107,所述预测表示分支指令102的预测(还被称作动态预测)。
在示范性方面中,处理器110还包含布隆过滤器120,将参考图2进一步描述其实例实施方案。布隆过滤器120可以例如以分支指令102的PC值102pc编索引,并提供固定方向分支指令或具有采用/未采用的强统计偏向的分支指令的方向122(例如,采用/未采用)。方向122可以从布隆过滤器120获得的分支指令可以在对应于方向122的方向上执行(采用或未采用),而忽略由分支预测机制106提供的预测107。在一个实施方案中,如果可从布隆过滤器120获得特定分支指令的方向122,则可以避免或忽略来自分支预测机制106的预测107,且可以进一步针对所述分支指令关断或关闭分支预测机制106,对于固定方向分支指令的情况,此操作可以节约能量。
继续图1的描述,可以在执行管线112中推测性地执行分支指令102(基于从预测107或方向122导出的方向)。在穿越一或多个管线状态之后,将已知分支指令102的实际评估,且此实际评估示出为评估113。在预测检查块114中将评估113相比于预测107以确定评估113是匹配预测107(即,分支指令102被正确预测)还是不匹配预测107(即,分支指令102被错误预测)。在实例实施方案中,总线115包括信息,所述信息包括正确的评估113(采用/未采用)以及分支指令102被正确预测还是错误预测。总线115上的信息可以被供应到布隆过滤器120。
现在结合图1参考图2,说明布隆过滤器120的实例实施方案。在由处理器110执行的一些实例指令流中,可能存在始终采用或始终未采用的一些固定方向分支指令。由于使用分支预测机制106预测此类固定方向分支指令可能并不能量/功率高效,且此外,预测107可能是不正确的(即,不与固定方向分支指令的方向一致),因此对于此类固定方向分支指令可以替代地使用布隆过滤器120。更具体来说,布隆过滤器120可以包括两个组件布隆过滤器:采用布隆过滤器202及未采用布隆过滤器204。布隆过滤器120被配置成根据下文章节中将描述的示范性方面使用采用布隆过滤器202或未采用布隆过滤器204中的至少一个来预测分支指令的执行方向。此外,在一些方面中,布隆过滤器120可以包括被配置成基于采用布隆过滤器202或未采用布隆过滤器204中的至少一个来预测分支指令的推测执行方向的对应逻辑(但应理解,此逻辑也可能提供于处理系统100内,或更具体来说处理器110内的别处)。
如先前论述,布隆过滤器、采用布隆过滤器202及未采用布隆过滤器204可以包括可以被编索引的数据结构。例如,采用布隆过滤器202及未采用布隆过滤器204可以各自包含位阵列(例如,寄存器或相似存储器元件),其中位可以使用分支指令的分支程序计数器(PC)值来编索引。例如,在图2中,条目203可以表示采用布隆过滤器202的可以对应于始终采用分支指令的一个位,且其可以处于以始终采用分支指令的PC编索引的位置处。类似地,条目205可以表示未采用布隆过滤器204的可以对应于始终未采用分支指令的一个位,且其可以位于以始终未采用分支指令的PC编索引的位置处。
在一个实施方案中,如果相应布隆过滤器202/204的对应索引位置处存在分支指令的条目203/205,则此意指对应布隆过滤器202/204已记录所述分支指令的历史。如果对应布隆过滤器202/204中存在分支指令的此条目203/205,则此情况被称为命中且条目被称为命中条目。更详细地,采用布隆过滤器202记录分支指令被采用的例子,而未采用布隆过滤器204记录分支指令未采用的例子。如果分支指令仅在一个而非两个布隆过滤器中存在命中条目,则此情况传达分支指令为固定方向分支指令。
固定方向分支指令的执行方向是从存在命中的布隆过滤器导出(即,如果仅在采用布隆过滤器中存在命中,则分支指令始终采用;或类似地,如果仅在未采用布隆过滤器中存在命中,则分支指令始终未采用)。采用布隆过滤器202可以被配置成捕获或记录始终采用的固定方向分支指令的程序计数器(PC)值,且未采用布隆过滤器204可以用于记录始终未采用的分支指令的PC值。在各种实施方案中,采用布隆过滤器202及未采用布隆过滤器204可以具有不同大小,例如,采用布隆过滤器202可以较大或相比未采用布隆过滤器204具有较多条目。
在实施方案中,当提取例如分支指令102的分支指令时,使用其相关联分支PC102pc来编索引布隆过滤器120的采用布隆过滤器202及未采用布隆过滤器204两者。当以此方式访问布隆过滤器120时,会产生两种情境。
在第一情境中,可能在采用布隆过滤器202及未采用布隆过滤器204两者中都存在命中(即,在采用布隆过滤器202及未采用布隆过滤器204两者中使用分支PC 102pc的索引位置处可能都存在例如设定为值“1”的命中条目),或可能在采用布隆过滤器202及未采用布隆过滤器204两者中都存在未中(即,在采用布隆过滤器202及未采用布隆过滤器204两者中使用分支PC 102pc的索引位置处可能都并不存在命中条目)。如果分支指令102的分支PC102pc在采用布隆过滤器202及未采用布隆过滤器204两者中都存在命中,则此意指分支指令102可能已至少被采用一次且至少未被采用一次,且因此分支指令102将不是始终采用或始终未采用的固定方向分支指令。如果在采用布隆过滤器202及未采用布隆过滤器204两者中都存在未中,则此意指布隆过滤器120中不存在分支指令102的充分信息。因此,在两种情况下,都不可以依赖于布隆过滤器120提供分支指令102的方向。实际上,可以查询分支预测机制106以获得用于推测性地执行分支指令102的预测107。
在一个方面中,如果分支指令102在采用布隆过滤器202及未采用布隆过滤器204两者中都存在命中,则在采用布隆过滤器202及未采用布隆过滤器204两者中重设对应命中条目,此使得布隆过滤器120的实施方案能够适应程序阶段中的变化(例如,分支指令102在一个程序阶段中可能具有固定方向分支指令的行为,而在不同程序阶段中,分支指令102可能有时被采用且有时未被采用)。在另一方面中,可以以周期方式重设采用布隆过滤器202及未采用布隆过滤器204两者中的相同位置(其可能是随机选择的)处的条目,所述周期例如每1百万个指令或1万个处理器循环。在另一方面中,可以监视采用布隆过滤器202及未采用布隆过滤器204两者中设定的条目数目,且如果(总条目数目中的)这些设定条目的比例超出例如预指定阈值数目,则可以完全重设采用布隆过滤器202及未采用布隆过滤器204两者,或可以重设采用布隆过滤器202及未采用布隆过滤器204两者中的相同位置(其可能是随机选择的)。
第二情境涉及分支指令102在两个布隆过滤器中的仅一个:采用布隆过滤器202或未采用布隆过滤器204中命中。在此情况下,仅存在命中的采用布隆过滤器202或未采用布隆过滤器204记录有分支指令102在处理器110中的执行历史。对应地,基于存在命中的布隆过滤器设定方向122,且使用方向122而非预测107(当在两个布隆过滤器202或204中的仅一个中存在命中时,可以关闭或关断分支预测机制106以节约能量)。例如,如果在采用布隆过滤器202中存在命中,则可以将分支指令102的方向设定成采用。另一方面,如果在未采用布隆过滤器204中存在命中,则可以将分支指令102的方向设定成未采用。
在另一实施方案中,布隆过滤器120的条目(例如,采用布隆过滤器202的条目203及未采用布隆过滤器204的条目205)可以包括计数器(例如,2位或更多),以计数相应分支指令在对应方向上解析的例子数目。例如,条目203可以包含采用计数器,其跟踪PC索引到条目203的分支指令被采用的次数。类似地,条目205可以包含未采用计数器,其跟踪PC索引到条目205的分支指令未被采用的次数。在此实施方案中,可以跟踪几乎始终在相同方向上解析的分支指令,或可能与固定方向具有可忽略或相对微小偏差的固定方向分支指令并预测其方向。因此,在此实施方案中,同一分支指令可能在采用布隆过滤器202以及未采用布隆过滤器204两者中都具有条目,并且可以使用布隆过滤器120加以预测。
更详细地,可以通过访问采用布隆过滤器202及未采用布隆过滤器204的以分支指令的PC编索引的对应位置处的条目来获得采用计数器及未采用计数器的值。如果在采用布隆过滤器202及未采用布隆过滤器204两者中都存在命中条目,则比较来自这些相应命中条目的采用计数器及未采用计数器的对应值。替代地,可以将采用计数器的比例相比于采用计数器及未采用计数器的值的总和,以获得分支指令被采用的次数的采用百分比。替代地,可以类似地计算出分支指令未被采用的次数的未采用百分比。如果采用百分比大体上高(例如,大于99%的阈值百分比),则可以将分支指令预测为采用。另一方面,如果未采用百分比大体上高(例如,大于99%的阈值百分比),则可以将分支指令预测为未采用。在一个方向上具有显著偏向的此类分支指令大体上可以被称为固定方向分支指令。因此,在布隆过滤器120的替代实施方案中使用计数器而非单个位的情况下,也可以预测大体上固定方向的分支指令的方向。
因此,将了解,示范性方面包含用于执行本文中公开的过程、功能及/或算法的各种方法。例如,图3说明分支预测方法300。
在块302中,方法300包括对于待推测性地执行的分支指令,访问采用布隆过滤器及未采用布隆过滤器,其中采用布隆过滤器包括已至少在采用方向上解析一次的分支指令的记录,且未采用布隆过滤器包括已至少在未采用方向上解析一次的分支指令的记录(例如,使用分支指令102的分支PC 102pc编索引采用布隆过滤器202及未采用布隆过滤器204)。
块304包括使用采用布隆过滤器或未采用布隆过滤器中的至少一个预测分支指令的执行方向(例如,基于是仅在采用布隆过滤器202还是未采用布隆过滤器204中存在命中,将分支指令102预测为始终采用的固定方向分支指令或始终未采用的固定方向分支指令)。
此外,本发明的示范性方面还涉及包括用于执行本文中所描述的功能性的装置的系统。例如,示范性设备(例如,处理系统100)包含用于执行分支指令的装置(例如,处理器110,或更具体地说,执行管线112)。因而,设备可以包含用于记录已至少在采用方向上解析一次的分支指令的第一装置(例如,采用布隆过滤器202),及用于记录已至少在未采用方向上解析一次的分支指令的第二装置(例如,未采用布隆过滤器204)。设备还可以包含用于基于第一装置或第二装置中的至少一个(例如,布隆过滤器120),预测分支指令的执行方向的装置。
现在将关于图4论述可以利用本发明的示范性方面的另一实例设备。图4示出计算装置400的框图。计算装置400可以对应于图1的处理系统100的示范性实施方案,其中处理器110可以被配置成执行图3的方法300。在图4的描述中,计算装置400示出为包含处理器110,为清楚起见,仅从图1再现有限的细节(包含布隆过滤器120、分支预测机制106、执行管线112及预测检查块114)。值得注意的是,在图4中,处理器110示范性地示出为耦合到存储器432,且应理解,尚未示出例如高速缓冲存储器108的所属领域中已知的其它存储器配置,但其可以存在于计算装置400中。
图4还示出耦合到处理器110及显示器428的显示器控制器426。在一些情况下,计算装置400可以用于无线通信,且图4还以虚线示出任选块,例如耦合到处理器110的译码器/解码器(编解码器)434(例如,音频及/或语音编解码器),且扬声器436及麦克风438可以耦合到编解码器434;及耦合到无线控制器440(其耦合到处理器110)的无线天线442。在特定方面中,在这些任选块中的一或多个存在的情况下,处理器110、显示器控制器426、存储器432及无线控制器440包含在系统级封装或芯片上系统装置422中。
因此,特定方面,输入装置430及电源444耦合到芯片上系统装置422。此外,在特定方面中,如图4中所说明,在存在一或多个任选块的情况下,显示器428、输入装置430、扬声器436、麦克风438、无线天线442及电源444在芯片上系统装置422的外部。然而,显示器428、输入装置430、扬声器436、麦克风438、无线天线442及电源444中的每一个可以耦合到芯片上系统装置422的组件,例如接口或控制器。
应注意,尽管图4通常描绘计算装置,但处理器110及存储器432也可以集成到机顶盒、服务器、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理(PDA)、固定位置数据单元、计算机、膝上型计算机、平板计算机、通信装置、移动电话或其它类似装置中。
所属领域的技术人员应了解,可以使用多种不同技术及技艺中的任一个来表示信息及信号。例如,可以通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号及码片。
此外,所属领域的技术人员将了解,结合本文中公开的方面而描述的各种说明性逻辑块、模块、电路及算法步骤可以实施为电子硬件、计算机软件或两者的组合。为清晰地说明硬件与软件的此可互换性,上文已大体就各种说明性组件、块、模块、电路及步骤的功能性加以描述。此类功能性被实施为硬件还是软件取决于特定应用及施加于整个系统上的设计约束。所属领域的技术人员可以针对每一特定应用以不同方式来实施所描述的功能性,但此类实施决策不应被解释为会引起脱离本发明的范围。
结合本文中公开的方面描述的方法、序列及/或算法可以直接以硬件、以由处理器执行的软件模块或以硬件与软件模块的组合来体现。软件模块可以驻存在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可拆卸磁盘、CD-ROM,或所属领域中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,使得处理器可以从存储媒体读取信息并将信息写入到存储媒体。在替代方案中,存储媒体可以与处理器成一体式。
因此,本发明的方面可以包含体现用于固定方向分支指令的分支预测的方法的计算机可读媒体。因此,本发明不限于所说明的实例,且任何用于执行本文中所描述的功能性的装置包含在本发明的各方面中。
虽然前述公开内容示出本发明的说明性方面,但应注意,可以在不脱离如由所附权利要求书界定的本发明的范围的情况下在本文中作出各种改变及修改。无需以任何特定次序来执行根据本文中所描述的本发明的各方面的方法权利要求的功能、步骤及/或动作。此外,虽然可能以单数形式描述或主张本发明的元件,但除非明确陈述限于单数形式,否则也涵盖复数形式。

Claims (30)

1.一种分支预测方法,所述方法包括:
对于待执行的分支指令,访问采用布隆过滤器及未采用布隆过滤器,其中所述采用布隆过滤器包括已至少在采用方向上解析一次的分支指令的记录,且所述未采用布隆过滤器包括已至少在未采用方向上解析一次的分支指令的记录;及
使用所述采用布隆过滤器或所述未采用布隆过滤器中的至少一个预测所述分支指令的执行方向。
2.根据权利要求1所述的方法,其包括如果所述分支指令在所述采用布隆过滤器或所述未采用布隆过滤器中的仅一个中存在命中,则使用所述采用布隆过滤器或所述未采用布隆过滤器中的至少一个预测所述分支指令的所述执行方向,
其中如果在所述采用布隆过滤器中存在命中,则所述采用布隆过滤器在以所述分支指令的程序计数器PC编索引的位置处包括条目,且如果在所述未采用布隆过滤器中存在命中,则所述未采用布隆过滤器在以所述分支指令的程序计数器PC编索引的位置处包括条目。
3.根据权利要求2所述的方法,其包括如果仅在所述采用布隆过滤器而不在所述未采用布隆过滤器中存在命中,则将所述分支指令的所述执行方向预测为采用,其中所述分支指令为始终采用的分支指令。
4.根据权利要求2所述的方法,其包括如果仅在所述未采用布隆过滤器而不在所述采用布隆过滤器中存在命中,则将所述分支指令的所述执行方向预测为未采用,其中所述分支指令为始终未采用的分支指令。
5.根据权利要求2所述的方法,其包括如果在所述采用布隆过滤器或所述未采用布隆过滤器中的仅一个中存在所述命中,则忽略包括状态机及分支历史的分支预测机制。
6.根据权利要求5所述的方法,其进一步包括关断或关闭所述分支预测机制。
7.根据权利要求2所述的方法,其包括如果在所述采用布隆过滤器及所述未采用布隆过滤器两者中都存在命中,或如果在所述采用布隆过滤器及所述未采用布隆过滤器两者中都存在未中,则基于由包括状态机及分支历史的分支预测机制提供的预测来推测性地执行所述分支指令。
8.根据权利要求7所述的方法,其进一步包括如果在所述采用布隆过滤器及所述未采用布隆过滤器两者中都存在命中,则重设所述采用布隆过滤器及所述未采用布隆过滤器两者中的命中条目。
9.根据权利要求1所述的方法,其中所述采用布隆过滤器的每一条目包括用于计数索引到所述采用布隆过滤器的所述条目的对应分支指令在采用方向上解析的例子数目的采用计数器,且其中所述未采用布隆过滤器的每一条目包括用于计数索引到所述未采用布隆过滤器的所述条目的对应分支指令在未采用方向上解析的例子数目的未采用计数器,且其中预测所述分支指令的所述方向是基于所述分支指令的采用计数器及所述未采用计数器的值。
10.根据权利要求9所述的方法,其包括如果所述采用计数器的所述值大体上大于所述未采用计数器的所述值,则将所述分支指令的所述方向预测为采用。
11.根据权利要求9所述的方法,其包括如果所述未采用计数器的所述值大体上大于所述采用计数器的所述值,则将所述分支指令的所述方向预测为未采用。
12.根据权利要求1所述的方法,其中所述采用布隆过滤器较大或相比所述未采用布隆过滤器具有较多条目。
13.一种设备,其包括:
处理器,其被配置成执行分支指令,其中所述处理器包括:
采用布隆过滤器,其包括已至少在采用方向上解析一次的分支指令的记录;
未采用布隆过滤器,其包括已至少在未采用方向上解析一次的分支指令的记录;及
逻辑,其被配置成基于所述采用布隆过滤器或所述未采用布隆过滤器中的至少一个来预测分支指令的执行方向。
14.根据权利要求13所述的设备,其中所述逻辑被进一步配置成如果所述分支指令在所述采用布隆过滤器或所述未采用布隆过滤器中的仅一个中存在命中,则基于所述采用布隆过滤器或所述未采用布隆过滤器中的至少一个来预测所述分支指令的所述执行方向,
其中如果在所述采用布隆过滤器中存在命中,则所述采用布隆过滤器在以所述分支指令的程序计数器PC编索引的位置处包括条目,且如果在所述未采用布隆过滤器中存在命中,则所述未采用布隆过滤器在以所述分支指令的程序计数器PC编索引的位置处包括条目。
15.根据权利要求14所述的设备,其中所述逻辑被进一步配置成如果仅在所述采用布隆过滤器而不在所述未采用布隆过滤器中存在命中,则将所述分支指令的所述执行方向预测为采用,其中所述分支指令为始终采用的分支指令。
16.根据权利要求14所述的设备,其中所述逻辑被进一步配置成如果仅在所述未采用布隆过滤器而不在所述采用布隆过滤器中存在命中,则将所述分支指令的所述执行方向预测为未采用,其中所述分支指令为始终未采用的分支指令。
17.根据权利要求14所述的设备,其中所述处理器进一步包括分支预测机制,所述分支预测机制包括状态机及分支历史,其中如果在所述采用布隆过滤器或所述未采用布隆过滤器中的仅一个中存在所述命中,则忽略由所述分支预测机制作出的预测。
18.根据权利要求17所述的设备,其中关断或关闭所述分支预测机制。
19.根据权利要求17所述的设备,其中如果在所述采用布隆过滤器及所述未采用布隆过滤器两者中都存在命中,或如果在所述采用布隆过滤器及所述未采用布隆过滤器两者中都存在未中,则基于由分支预测机制提供的预测来推测性地执行所述分支指令。
20.根据权利要求19所述的设备,其中如果在所述采用布隆过滤器及所述未采用布隆过滤器两者中都存在命中,则配置所述采用布隆过滤器及所述未采用布隆过滤器两者中的命中条目以进行重设。
21.根据权利要求12所述的设备,其中所述采用布隆过滤器的每一条目包括被配置成计数索引到所述采用布隆过滤器的所述条目的对应分支指令在采用方向上解析的例子数目的采用计数器,且其中所述未采用布隆过滤器的每一条目包括被配置成计数索引到所述未采用布隆过滤器的所述条目的对应分支指令在未采用方向上解析的例子数目的未采用计数器,且其中所述逻辑被进一步配置成基于所述分支指令的采用计数器及所述未采用计数器的值预测所述分支指令的所述方向。
22.根据权利要求21所述的设备,其中所述逻辑被进一步配置成如果所述采用计数器的所述值大体上大于所述未采用计数器的所述值,则将所述分支指令的所述方向预测为采用。
23.根据权利要求21所述的设备,其中所述逻辑被配置成如果所述未采用计数器的所述值大体上大于所述采用计数器的所述值,则将所述分支指令的所述方向预测为未采用。
24.根据权利要求12所述的设备,其中所述采用布隆过滤器较大或相比所述未采用布隆过滤器具有较多条目。
25.根据权利要求12所述的设备,其集成到选自由以下组成的群组的装置中:机顶盒、服务器、音乐播放器、视频播放器、娱乐单元、导航装置、个人数字助理PDA、固定位置数据单元、计算机、膝上型计算机、平板计算机、通信装置及移动电话。
26.一种非暂时性计算机可读存储媒体,其包括在由计算机执行时致使所述计算机执行分支预测操作的代码,所述非暂时性计算机可读存储媒体包括:
对于待执行的分支指令,用于访问采用布隆过滤器及未采用布隆过滤器的代码,其中所述采用布隆过滤器包括已至少在采用方向上解析一次的分支指令的记录,且所述未采用布隆过滤器包括已至少在未采用方向上解析一次的分支指令的记录;及
用于使用所述采用布隆过滤器或所述未采用布隆过滤器中的至少一个预测所述分支指令的执行方向的代码。
27.根据权利要求26所述的非暂时性计算机可读存储媒体,其包括用于如果所述分支指令在所述采用布隆过滤器或所述未采用布隆过滤器中的仅一个中存在命中,则使用所述采用布隆过滤器或所述未采用布隆过滤器中的至少一个预测所述分支指令的所述执行方向的代码,
其中如果在所述采用布隆过滤器中存在命中,则所述采用布隆过滤器在以所述分支指令的程序计数器PC编索引的位置处包括条目,且如果在所述未采用布隆过滤器中存在命中,则所述未采用布隆过滤器在以所述分支指令的程序计数器PC编索引的位置处包括条目。
28.根据权利要求27所述的非暂时性计算机可读存储媒体,其包括用于如果仅在所述采用布隆过滤器而不在所述未采用布隆过滤器中存在命中,则将所述分支指令的所述执行方向预测为采用的代码,其中所述分支指令为始终采用的分支指令。
29.根据权利要求27所述的非暂时性计算机可读存储媒体,其包括用于如果仅在所述未采用布隆过滤器而不在所述采用布隆过滤器中存在命中,则将所述分支指令的所述执行方向预测为未采用的代码,其中所述分支指令为始终未采用的分支指令。
30.一种设备,其包括:
用于执行分支指令的装置;
用于记录已至少在采用方向上解析一次的分支指令的第一装置;
用于记录已至少在未采用方向上解析一次的分支指令的第二装置;及
用于基于所述第一装置或所述第二装置中的至少一个预测分支指令的执行方向的装置。
CN201880038833.3A 2017-06-30 2018-06-11 对固定方向分支指令的分支预测 Pending CN110741345A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/640,441 2017-06-30
US15/640,441 US20190004806A1 (en) 2017-06-30 2017-06-30 Branch prediction for fixed direction branch instructions
PCT/US2018/036811 WO2019005458A1 (en) 2017-06-30 2018-06-11 BRANCH PREDICTION FOR FIXED STEERING BRANCH INSTRUCTIONS

Publications (1)

Publication Number Publication Date
CN110741345A true CN110741345A (zh) 2020-01-31

Family

ID=62779105

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880038833.3A Pending CN110741345A (zh) 2017-06-30 2018-06-11 对固定方向分支指令的分支预测

Country Status (5)

Country Link
US (1) US20190004806A1 (zh)
EP (1) EP3646171A1 (zh)
CN (1) CN110741345A (zh)
TW (1) TW201908966A (zh)
WO (1) WO2019005458A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9725710B2 (en) 2014-01-08 2017-08-08 Flodesign Sonics, Inc. Acoustophoresis device with dual acoustophoretic chamber
CN110865982A (zh) * 2019-11-19 2020-03-06 深信服科技股份有限公司 一种数据匹配方法、装置、电子设备及存储介质
CN112817950B (zh) * 2021-01-05 2022-08-16 福建省厦门环境监测中心站(九龙江流域生态环境监测中心) 一种基于藻类生物等效能量模型的水华趋势预估方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732253A (en) * 1994-10-18 1998-03-24 Cyrix Corporation Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches
CN1535415A (zh) * 2001-07-24 2004-10-06 �Ƚ�΢װ�ù�˾ 具有二级分支预测高速缓存的分支预测装置
US20080256346A1 (en) * 2007-04-13 2008-10-16 Samsung Electronics Co., Ltd. Central processing unit having branch instruction verification unit for secure program execution
CN101533344A (zh) * 2008-03-10 2009-09-16 王得安 一种用以储存目标地址的分支目标缓冲器系统及方法
CN101901133A (zh) * 2009-06-01 2010-12-01 富士通株式会社 信息处理设备和分支预测方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7085920B2 (en) * 2000-02-02 2006-08-01 Fujitsu Limited Branch prediction method, arithmetic and logic unit, and information processing apparatus for performing brach prediction at the time of occurrence of a branch instruction
JP4362096B2 (ja) * 2004-09-30 2009-11-11 富士通株式会社 情報処理装置,リプレース方法,リプレースプログラム及びリプレースプログラムを記録したコンピュータ読取可能な記録媒体
US20080162908A1 (en) * 2006-06-08 2008-07-03 Luick David A structure for early conditional branch resolution
US8078852B2 (en) * 2009-05-28 2011-12-13 International Business Machines Corporation Predictors with adaptive prediction threshold
US10423422B2 (en) * 2016-12-19 2019-09-24 Intel Corporation Branch predictor with empirical branch bias override

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732253A (en) * 1994-10-18 1998-03-24 Cyrix Corporation Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches
CN1535415A (zh) * 2001-07-24 2004-10-06 �Ƚ�΢װ�ù�˾ 具有二级分支预测高速缓存的分支预测装置
US20080256346A1 (en) * 2007-04-13 2008-10-16 Samsung Electronics Co., Ltd. Central processing unit having branch instruction verification unit for secure program execution
CN101533344A (zh) * 2008-03-10 2009-09-16 王得安 一种用以储存目标地址的分支目标缓冲器系统及方法
CN101901133A (zh) * 2009-06-01 2010-12-01 富士通株式会社 信息处理设备和分支预测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
M. BRETERNITZ1 ET AL.: "\"A Segmented Bloom Filter Algorithm for Efficient Predictors\"" *

Also Published As

Publication number Publication date
US20190004806A1 (en) 2019-01-03
TW201908966A (zh) 2019-03-01
EP3646171A1 (en) 2020-05-06
WO2019005458A1 (en) 2019-01-03

Similar Documents

Publication Publication Date Title
KR101788683B1 (ko) 루프에 대한 데이터 프리페치 요청들을 취소하기 위한 방법들 및 장치
US9477478B2 (en) Multi level indirect predictor using confidence counter and program counter address filter scheme
US20160350116A1 (en) Mitigating wrong-path effects in branch prediction
US10474462B2 (en) Dynamic pipeline throttling using confidence-based weighting of in-flight branch instructions
CN110741345A (zh) 对固定方向分支指令的分支预测
US20170046158A1 (en) Determining prefetch instructions based on instruction encoding
CN110741344A (zh) 用于分支预测机制的统计校正
WO2020199058A1 (zh) 分支指令的处理方法、分支预测器及处理器
JP2018523239A (ja) 電力効率的なフェッチ適合
CN107870780B (zh) 数据处理装置和方法
US10838731B2 (en) Branch prediction based on load-path history
US20170083333A1 (en) Branch target instruction cache (btic) to store a conditional branch instruction
US20130283023A1 (en) Bimodal Compare Predictor Encoded In Each Compare Instruction
CN110741343A (zh) 多标记分支预测表
JP6943890B2 (ja) 命令パケットのためのパリティ
US20190073223A1 (en) Hybrid fast path filter branch predictor
CN113227970A (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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20200131