用于分支预测机制的统计校正的制作方法

文档序号:19816571发布日期:2020-01-31 19:21阅读:379来源:国知局
用于分支预测机制的统计校正的制作方法

所公开的方面涉及处理系统中的分支预测。更具体来说,示范性方面涉及使用统计校正改进分支预测准确性。



背景技术:

处理系统可以采用引起控制流变化的指令,例如条件性分支指令。条件性分支指令的方向是基于条件的评估方式,但评估可能仅在处理器的指令管线的深处已知。为了避免管线停滞直到已知评估为止,处理器可以采用分支预测机制以在管线的早期预测条件性分支指令的方向。基于预测,处理器可以从两条路径中的一条中的预测地址推测性地提取并执行指令——从分支目标地址开始的“采用”路径,或从条件性分支指令之后的下一顺序地址开始的“未采用”路径。

当条件被评估且实际分支方向被确定时,如果分支被错误预测(即,执行遵循错误的路径),则可以从管线中清空推测性地提取的指令,且可以从正确的下一地址提取正确路径中的新指令。因此,改进条件性分支指令的分支预测准确性能减轻与错误预测及错误路径指令的执行相关联的损失,且能对应地改进处理系统的性能及能量利用。

传统的分支预测机制可以包含一或多个状态机,所述状态机可以运用过去及当前分支指令的评估历史加以训练。但在一些情境下,这些分支预测机制可能无法准确地预测分支指令的方向。例如,在没有充分的历史来为特定分支指令提供可靠的分支预测的情况下,或在正预测的分支指令与可用历史并不相关时,分支预测的准确性可能会受到影响。因此,在一些情况下,分支预测机制可能无法减轻与错误预测及错误路径指令的执行相关联的上述损失。

此外,在一些情况下,分支指令的常规分支预测机制甚至可能不如分支指令行为的统计偏向准确。例如,如果在统计上看出分支指令在执行分支指令的90%时间内被执行,则预测分支指令始终与其统计偏向(采用或未采用)一致将仅会导致分支指令在10%的时间内被错误预测。因此,如果分支预测机制导致在超过10%的时间内错误预测了分支指令,则相比每次执行分支指令时遵循分支指令的统计偏向,所述分支预测机制将较差(即,较不准确)。

因此,所属领域中存在改进分支预测机制的准确性,同时避免常规实施方案的前述缺点的公认需求。



技术实现要素:

本发明的示范性方面涉及用于分支预测的系统及方法。各方面包含例如通过使用统计校正表格(sct)确定由分支预测机制提供的分支预测准确性是否比分支指令的统计偏向差。sct中用于分支指令的条目(如果存在)包括如下的指示:由分支预测机制针对分支指令作出的错误预测数目;分支指令评估为采用方向的次数;及分支指令评估为未采用方向的次数。如果至少分支预测准确性比统计偏向差,则可以在对应于统计偏向的方向上推测性地执行分支指令。可以在推测性执行中使用一或多个额外试探法。

例如,示范性方面涉及一种分支预测方法,其包括确定由分支预测机制提供的分支预测准确性是否比分支指令的统计偏向差;及如果至少分支预测准确性比统计偏向差,则在对应于统计偏向的方向上推测性地执行分支指令。

另一示范性方面涉及一种设备,其包括被配置成执行至少一个分支指令的处理器。处理器包括分支预测机制,其被配置成提供对至少一个分支指令的分支预测;统计校正表格(sct),其被配置成指示由分支预测机制提供的分支预测的分支预测准确性是否比分支指令的统计偏向差;及执行管线,其被配置成如果至少分支预测准确性比统计偏向差,则在对应于统计偏向的方向上推测性地执行分支指令。

又一示范性方面涉及一种设备,其包括用于确定由分支预测机制提供的分支预测准确性是否比分支指令的统计偏向差的装置,及用于如果至少分支预测准确性比统计偏向差,则在对应于统计偏向的方向上推测性地执行分支指令的装置。

又一示范性方面涉及一种非暂时性计算机可读存储媒体,其包括在由处理器执行时致使处理器执行分支预测操作的代码,非暂时性计算机可读存储媒体包括:用于确定由分支预测机制提供的分支预测准确性是否比分支指令的统计偏向差的代码,及用于如果至少分支预测准确性比统计偏向差,则在对应于统计偏向的方向上推测性地执行分支指令的代码。

附图说明

呈现附图以辅助描述本发明的方面,且仅仅是为了说明所述方面而非限制所述方面而提供附图。

图1说明根据本发明的各方面的处理系统。

图2说明根据本发明的各方面的统计校正表格。

图3说明根据本发明的各方面的关于示范性方法的事件序列。

图4描绘可以有利地采用本发明的方面的示范性计算装置。

具体实施方式

在以下针对本发明的特定方面的描述及相关图式中公开本发明的各方面。可以在不脱离本发明的范围的情况下设计替代方面。另外,将不会详细描述或将省略本发明的众所周知的元件以免混淆本发明的相关细节。

词语“示范性”在本文中用于意指“充当实例、例子或说明”。本文中描述为“示范性”的任何方面未必解释为比其它方面优选或有利。同样地,术语“本发明的各方面”并不要求本发明的所有方面都包含所论述的特征、优点或操作模式。

本文中所使用的术语仅是出于描述特定方面的目的,且并不意图限制本发明的各方面。如本文中所使用,除非上下文另外清楚地指示,否则单数形式“一(a/an)”及“所述”也意图包含复数形式。将进一步理解,术语“包括”及/或“包含”在本文中使用时指定所陈述特征、整数、步骤、操作、元件及/或组件的存在,但不排除一或多个其它特征、整数、步骤、操作、元件、组件及/或其群组的存在或添加。

此外,在待由(例如)计算装置的元件执行的动作序列方面描述许多方面。将认识到,本文中所描述的各种动作可以由特定电路(例如,专用集成电路(asic))、正由一或多个处理器执行的程序指令或两者的组合执行。另外,本文中所描述的这些动作序列可以被视为全部在任何形式的计算机可读存储媒体内体现,在所述计算机可读存储媒体中存储有对应的计算机指令集,所述计算机指令在执行时将致使相关联的处理器执行本文中所描述的功能性。因此,本发明的各种方面可以数个不同形式来体现,预期所有形式属于所主张的主题的范围内。另外,对于本文中所描述的各方面中的每一个,任何此类方面的对应形式可以在本文中描述为(例如)“经配置以”执行所描述动作的“逻辑”。

本发明的示范性方面涉及统计校正器,其经提供以基于例如历史及状态机来增强常规分支预测机制的准确性。在示范性实施方案中,统计校正器设计成快速且不干扰分支预测的关键路径。公开了用于确定何时使用由统计校正器提供的分支预测的各种示范性试探法。

现在参考图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还包含统计校正表格(sct)120,将参考图2进一步描述其实例实施方案。sct120可以例如以分支指令102的pc值102pc编索引并提供偏向122,所述偏向为分支指令102的统计偏向(例如,采用/未采用)。当满足示范性条件时及如果满足示范性条件,则偏向122可以代替由分支预测机制106提供的预测107充当对分支指令102的预测。

继续图1的描述,可以在执行管线112中推测性地执行分支指令102(基于从预测107或偏向122导出的方向,如稍后将解释)。在穿越一或多个管线状态之后,将已知分支指令102的实际评估,且此实际评估示出为评估113。在预测检查块114中将评估113相比于预测107以确定评估113是匹配预测107(即,分支指令102被正确预测)还是不匹配预测107(即,分支指令102被错误预测)。在实例实施方案中,总线115包括信息,所述信息包括正确的评估113(采用/未采用)以及分支指令102被正确预测还是错误预测。总线115上的信息可以被供应到sct120。

现在结合图1参考图2,示出sct120的实例实施方案。在示范性方面中,sct120被配置成捕获例如分支指令102的分支指令的统计偏向。sct120可以含有一或多个条目。sct120使用分支指令的地址或程序计数器(pc)(例如,使用102pc)编索引及加标签,此意指方向待预测的每一分支指令(例如,条件性分支指令)都可以被指派到sct120中的相关联条目。

在一个实例实施方案中,sct120的每一条目可以包括图2中所示的五个字段。关注条目中针对与分支pc102pc相关联的分支指令102示出的一个条目,所述条目的标签202为被配置成存储分支pc102pc的低阶位的字段。所述条目的三个其它字段包括计数器,例如n位饱和计数器,具体来说标识为采用计数器204、未采用计数器206及错误预测计数器208。在示范性方面中,这三个计数器的相对值(而非其绝对值)可能相关,且因此可以将n的值选择为例如8的相对较小数目,所述数目可以足够大以合理化三个字段204、206及208中的每一个的n位计数器之间的关系。在实施方案中,如果n位计数器中的任一个的最高有效位(msb)从0变为1(即,值饱和),则所有三个计数器的值减半或向右移位一。因此,采用计数器204、未采用计数器206及错误预测计数器208的相对本质值可以由例如8位的较小计数器捕获,即使其绝对值可能溢出这些计数器的可用位宽度也如此。

更详细地考虑sct120的实例实施方案,采用计数器204被配置成计数分支指令102被执行且被发现采用的次数。在一方面中,采用计数器204可以基于由图1的总线115基于分支指令102的评估113提供的信息而递增。类似地,未采用计数器206被配置成计数分支指令102被执行且被发现未采用的次数,其中未采用计数器206可以同样基于分支指令102的评估113来更新。错误预测计数器108被配置成计数分支预测器错误预测分支方向的次数(例如,基于预测检查块114揭露预测107匹配还是不匹配评估113)。

如图2中所示的sct120的条目的又一字段包括有用性计数器210。有用性计数器210可以被实施为可能小于上文所描述的n位计数器的饱和计数器(例如,有用性计数器210可以是3位的)。有用性计数器210可以被配置成在来自分支预测机制106的预测107不正确(例如,预测107不匹配评估113)时,计数统计校正器预测或偏向122正确(例如,偏向122匹配评估113)的次数。

使用上文所描述的字段,sct120可以以下文方式提供偏向122。考虑分支指令102的实例,当分支指令102被提取时,sct120使用分支pc102pc编索引。假设sct120的索引条目处的标签202匹配分支指令102的地址,则读出对应采用计数器204、未采用计数器206、错误预测计数器208及有用性计数器210。接着可以使用这些计数器(即,采用计数器204、未采用计数器206、错误预测计数器208及有用性计数器210)的值来使用以下机制检查分支预测器准确性是否小于统计偏向。

如果错误预测计数器208的值大于采用计数器204及未采用计数器206的最小值且如果有用性计数器210大于或等于0(上文条件可以替代地由如下表达式表示:错误预测计数器208>最小值(采用计数器204,未采用计数器206)且如果有用性计数器210>=0),则分支预测准确性被视为比统计偏向122差。如果满足上文条件,即如果确定分支预测机制106输出的预测107的准确性比偏向122提供的准确性差,则可以忽略或覆盖分支预测机制106输出的预测107且可以替代地使用偏向122。在一些方面中,在此情境下如果满足一些额外试探法,则可以使用偏向122而非预测107推测性地执行分支指令102。使用偏向122推测性地执行分支指令102可以涉及如下执行分支指令102:如果采用计数器204的值大于未采用计数器206的值,则假定分支指令102将被采用;或反过来,即如果未采用计数器206的值大于采用计数器204的值,则假定分支指令102将不被采用。

如果分支预测准确性被视为比统计偏向122差,则可以使用以下试探法来决定是否使用偏向122而非预测107。一个实例试探法为如果有用性计数器210大于或等于零,则偏向122而非预测107可以用于推测性地执行分支指令102。在替代方面中,以下其它试探法中的一或多个可以用于选择统计预测(例如,偏向122)而非分支预测器预测(例如,预测107):如果用于分支指令102的如所属领域中已知的分支预测机制106使用的分支预测计数器并不饱和;如果有用性计数器210饱和;如果前一时期期间的分支预测器准确性(基于固定数目个指令执行或数个时钟循环计算出的)低于指定阈值(例如,2%)等。因此,在示范性方面中,在预测107与偏向122之间进行选择可以是基于分支预测机制106及统计偏向的相对准确性,以及这些一或多个额外试探法。

应认识到,在一些情况下,偏向122可以匹配预测107。在这些情况下,可以使用预测107而非偏向122推测性地执行分支指令102。在又其它方面中,偏向122可能不匹配预测107,但偏向122也可能不匹配评估113,即统计偏向122并不匹配分支指令102的实际评估113。有用性计数器210基于偏向122是匹配还是不匹配预测107,以及偏向122如何与分支指令的实际评估113对齐的观察结果来提供由sct120提供的统计偏向122的有用性量度。为避免不必要的更新有用性计数器210,在示范性方面中,可以仅当预测107不同于偏向122时才更新有用性计数器210。当预测107不同于偏向122且偏向122匹配评估113时,有用性计数器210可以递增。否则,当预测107不同于偏向122且偏向122不匹配评估113时,有用性计数器210可以递减。

在示范性方面中,sct120可以设计有有限数目个条目,此意指如果sct120已满,则可能替换现有条目以为输入的条目腾出空间。可以以下文方式执行sct120的条目的分配及替换。如果确定被提取以由处理器110执行的特定分支指令在sct120中尚未具有条目,则一旦已知所述分支指令的评估113且从预测检查块114确定评估113是否匹配预测107,可以作出关于是否在sct120中分配用于所述分支指令的条目的决策。在一方面中,当且仅当分支预测机制106提供不正确的预测107(即,如果预测107不匹配评估113)时,可以在sct120中分配用于分支指令的条目。

如果待替换sct120的现有条目以为输入的分支指令腾出空间,则可以查询待替换条目(例如,以输入的分支指令的分支pc编索引的sct120位置处)的有用性计数器210。如果有用性计数器210的值小于零,则此可以意指sct120中的所述索引位置处的现有条目并不极有用(对于与现有条目相关联的对应分支指令,提供比来自分支预测机制106的预测107较有用的统计偏向),且可以替换所述条目以容纳输入的分支指令。

另一方面,如果索引位置处的现有条目的有用性计数器210大于或等于零,则有用性计数器210递减,但并不替换所述条目。以此方式,如果条目继续并不是有用的,则现有条目的有用性计数器210可以逐渐停止;但如果条目有用,则有用性计数器210将最终递增且可以保留在sct120中。以此方式,相对有用性可以用作确定是否替换特定条目的指南。应认识到,由于具有较强统计偏向的一些分支指令可能更受益于使用偏向122而非预测107进行预测,因此基于有用性计数器210大于零在sct120中保留分支指令的条目的上文方式会导致仅留下对应于具有强统计偏向(采用或未采用)的分支指令的条目。

虽然上文的分配及替换策略对于sct120的较大设计(例如,含有数千个条目)、较小设计(例如,具有数十或数百个条目)可能较有利,但可以使用以下替代策略,其中在sct120中可以仅为例如由分支预测机制106错误预测的分支指令的子集分配条目。对于每一指定数目(比如,整数x)个分配尝试,可以仅分配一个条目(即,如果x=10,则可以忽略或不在sct120中分配输入的分支指令的前9个分配尝试,且第10分配尝试可以成功在sct120中获得分配)。

在各种其它方面中,替代分配及替换策略也可以与本发明兼容且可以基于特定设计准则进行选择。例如,也可以使用sct120的集合关联实施方案,其中用于分支的条目可能属于集合中的两个或更多个方式中的一方式,而非与sct120中用于每一分支的一个条目的直接映射关联。在另一替代方案中,可以剖析程序中遇到的分支指令,且可以选择选定分支指令子集(例如,显著或大量被错误预测的分支指令)包含在sct120中,而剩余分支指令可能并不存储于sct120中。因此,可以最小化sct120的条目数目。

在又一替代方案中,可以基于程序行为动态地开启或关闭sct120。例如,可以跟踪例如每千个指令的错误预测数目(或“mpki”)的度量。如果对于前一时期或程序阶段,mpki高,则此可以指示对于后一时期,由分支预测机制106提供的预测107中所含有的错误预测数目高,且因此可以启用sct120,以便通过使用由sct120提供的统计校正来降低错误预测数目。另一方面,如果对于后一时期,mpki低,则此可以指示分支预测机制106以高准确性执行且因此可以停用或关断sct120。在一个此类实施方案中,计数器(例如,示出为图2中的计数器220的4位带符号计数器)可以被配置成跟踪sct120的性能。当sct120在消除错误预测方面有用(例如,sct120的任何条目的有用性计数器210递增)时计数器220可以递增,且当sct120致使发生错误预测时所述计数器可以递减。如果在某一程序阶段处计数器220大于零,从而指示sct120有用,则可以保持启用sct120;否则,可以停用sct120。在一些方面中,可以通过使用例如功率门控或时钟门控的已知技术减少sct120消耗的功率来实现启用/停用sct120的特征。

因此,将了解,示范性方面包含用于执行本文中公开的过程、功能及/或算法的各种方法。例如,图3说明分支预测方法300。

在块302中,方法300包括确定由分支预测机制提供的分支预测准确性是否比分支指令的统计偏向差(例如,从例如sct120的统计校正表格确定由分支预测机制106提供的预测107的分支预测准确性是否比由sct120提供的分支指令的统计偏向122差)。在示范性方面中,sct120中用于分支指令的条目(如果存在)包括如下的指示:分支预测机制针对分支指令作出的错误预测数目(例如,错误预测计数器208);分支指令评估为采用方向的次数(例如,采用计数器204);及分支指令评估为未采用方向的次数(未采用计数器206)。在示范性方面中,方法300可以进一步包括使用分支指令的程序计数器值(例如,102pc)对sct120编索引,其中条目进一步包括对应于分支指令的标签202。

在块304中,如果至少分支预测准确性比统计偏向差,则在对应于统计偏向的方向上推测性地执行分支指令(例如,基于一或多个额外试探法(例如除了错误预测计数器208是否大于采用计数器204及未采用计数器206的最小值之外,有用性计数器大于零),使用偏向122而非预测107推测性地执行分支指令102)。

此外,方法300可以包含如果满足一或多个额外试探法,则在对应于统计偏向的方向上推测性地执行分支指令102。一或多个额外试探法可以包括条目的有用性指示,其中条目包括有用性计数器:如果由分支预测机制提供的分支预测不同于统计偏向且统计偏向匹配分支指令的评估,则有用性计数器增大,或如果由分支预测机制提供的分支预测不同于统计偏向且统计偏向不匹配分支指令的评估,则有用性计数器降低。在一些方面中,一或多个额外试探法可以包括:如果对应于分支指令的分支预测机制的分支预测计数器并不饱和;如果有用性计数器饱和;或如果前一时期期间的分支预测机制的准确性低于指定阈值。如果有用性计数器210小于零,则可以替换sct120中的条目,或如果有用性计数器210大于或等于零,则可以递减有用性计数器210。

在方法300的一些方面中,如果分支指令102被分支预测机制106错误预测,则可以在sct120中分配用于分支指令102的条目,且更具体来说,在一些实施方案中,可以仅为由分支预测机制106错误预测的分支指令子集分配sct120中的条目。此外,方法300的一些方面还可以包含基于sct120的性能(例如,使用计数器220)或分支预测机制作出的分支指令错误预测数目(例如,前一程序阶段或时期中的mpki,如上文所提到),确定sct120是否在改进分支预测的准确性方面有用,及如果确定sct并不是有用的,则停用sct120以减少功率消耗(例如,通过时钟或功率门控)。

现在将关于图4论述可以利用本发明的示范性方面的实例设备。图4示出计算装置400的框图。计算装置400可以对应于图1的处理系统100的示范性实施方案,其中处理器110可以被配置成执行图3的方法300。在图4的描述中,计算装置400示出为包含处理器110,为清楚起见,仅从图1再现有限的细节(包含sct120、分支预测机制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,或所属领域中已知的任何其它形式的存储媒体中。示范性存储媒体耦合到处理器,使得处理器可以从存储媒体读取信息并将信息写入到存储媒体。在替代方案中,存储媒体可以与处理器成一体式。

因此,本发明的方面可以包含体现用于通过使用统计校正器改进分支预测准确性的方法的计算机可读媒体。因此,本发明不限于所说明的实例,且任何用于执行本文中所描述的功能性的装置包含在本发明的各方面中。

虽然前述公开内容示出本发明的说明性方面,但应注意,可以在不脱离如由所附权利要求书界定的本发明的范围的情况下在本文中作出各种改变及修改。无需以任何特定次序来执行根据本文中所描述的本发明的各方面的方法权利要求的功能、步骤及/或动作。此外,虽然可能以单数形式描述或主张本发明的元件,但除非明确陈述限于单数形式,否则也涵盖复数形式。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1