掌桥专利:专业的专利平台
掌桥专利
首页

一种面向分支指令预测的偏差矫正器及方法

文献发布时间:2023-06-19 11:29:13


一种面向分支指令预测的偏差矫正器及方法

技术领域

本发明公开了一种面向分支指令预测的偏差矫正器及方法,属于超标量乱序发射处理器领域。

背景技术

目前在处理器中,如何高效地取值与执行指令是提高处理器性能的关键。在取值阶段,处理器默认每条指令的地址有序且线性增加的,如果处理器所执行的程序是顺序结构,此种设计毫无疑问能保持流水线的高效执行,但是,一般情况下执行程序会含有众多循环结构以及条件结构,那么这些结构会造成指令地址的不连续,需要通过跳转指令来实现指令地址的跳转,如果处理器不对这些跳转指令进行预测并提前进行地址跳转,那么会造成取值错误进而影响流水线的整体效率,现在往往通过分支预测器来对跳转指令以及跳转地址进行预测,一个准确率高的分支预测器不仅能左右处理器的性能也是提高处理器性能的关键部件,对于超标量处理器来说,准确度高的分支预测器尤为重要,因为超标量处理器需要在每个周期内取多条指令,每个周期内所取指令中存在跳转指令的概率很高,如果不能对跳转指令进行有效预测,可能会造成流水线无法正常运转。

因为执行程序本身蕴涵一定逻辑规律,所以对跳转指令的有效预测是有可行性的,现在大多数分支预测器的思路都通过某条指令或全局指令的跳转历史来对下条指令是否跳转进行预测,其本质上是对一随机过程进行统计预测,此类统计预测对大部分相关性较强的指令会有比较好的效果,但是对于小部分相关性较弱的指令会产生统计偏差从而造成误判,本发明可针对相关性较弱的指令进行统计学矫正,提高分支预测器的准确率从而有效提升处理器的运算性能。

发明内容

(一)解决的技术问题

针对现有技术的不足,本发明提供了一种面向分支指令预测的偏差矫正器及方法。

(二)技术方案

本发明公开了一种面向分支指令预测的偏差矫正器,其特征在于,所述偏差矫正器包括地址折叠逻辑,所述地址折叠逻辑对分支指令跳转历史序列以及分支预测结果所构成的序列折叠形成置信状态表的索引,所述偏差矫正器中设有置信状态表、预测结果置信度计算模块以及置信阈值动态调整器,所述置信状态表设有多个,不同表则由不同长度的分支指令跳转历史序列以及分支预测结果折叠获得序列进行索引,表中的每个表项设有状态机判别预测结果的置信状态,且设有表项重分配逻辑以及表项更新逻辑。

可选的,所述置信状态表对分支预测结果进行置信状态索引通过地址折叠逻辑进行索引。

可选的,所述置信状态表中的每一个表项为一状态机,用于表征预测结果的置信状态。

可选的,所述表项更新逻辑设有用于初始化各置信状态表中各表项的状态机模块。

可选的,所述表项更新逻辑用于初始化各置信状态表中各表项的状态机。

可选的,所述预测结果置信度计算模块综合不同置信状态表的置信状态,计算分支预测器输出结果的置信度并与置信阈值比较判别是否需要对预测结果进行矫正。

可选的,所述置信阈值动态调整器会根据预测失误更新次数与正确预测更新次数的相对比率来调整置信阈值。

本发明还公开了一种面向分支指令预测的偏差矫正方法,所述偏差矫正方法用所述偏差矫正器进行矫正。

可选的,所述面向分支指令预测的偏差矫正方法具体包括如下步骤:

S1.通过地址折叠逻辑折叠由分支指令跳转历史序列以及分支预测结果所构成的索引;

S2.偏差矫正表通过地址折叠逻辑索引当前分支预测结果的置信状态;

S3.预测结果置信度计算模块通过各置信状态表输出的置信状态计算该预测结果的置信度,并通过与置信阈值动态调整器输出的置信阈值比较来判别当前预测结果是否需要矫正。

S4.置信阈值动态调整器会根据预测失误更新次数与正确预测更新次数的相对比率来调整置信阈值;

S5.当经过矫正的预测结果仍错误时,偏差矫正表表项重分配逻辑根据不同偏差矫正表的矫正结果进行个表表项数的再分配;

S6.表项更新逻辑更新各偏差矫正表中各表项的状态。

(三)有益效果

与现有技术相比,本发明公开的一种面向分支指令预测的偏差矫正器及方法,具备以下有益效果:

本发明公开的偏差矫正器利用分支指令的全局分支历史以及分支预测结果对多个置信状态表进行索引,每个置信状态表索引到的表项中存有表示当前分支指令的预测结果的置信状态,预测结果置信度计算模块对多个置信状态表的置信状态输出进行加权累加操作,得出最终的置信度,该置信度与置信阈值进行比较,置信状态表表项重分配逻辑会把对预测结果产生负面影响的置信状态表的部分表项分配给其他产生正面影响的置信状态表,被重新分配的表项通过置信状态表初始化逻辑进行置信状态的初始化,当分支预测失败时,置信阈值动态调整器同样会对置信阈值进行调整以达到一个相对合适的值,从而提高分支预测器的准确率从而有效提升处理器的运算性能,并且在基于SRAM的置信状态表中,表项的个数等于经过折叠逻辑的全局历史路径所能寻址的表项个数,此设计使表项个数略少于索引实际能寻址的表项个数,可使置信状态表在表项的重分配过程中不会发生地址溢出的问题。

附图说明

图1为本发明的总体结构示意图;

图2为本发明的置信状态表中状态机的变化示意图;

图3为本发明的指预测结果置信度计算模块的结构示意图;

图4为本发明的更新逻辑的状态示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

本发明公开了一种面向分支指令预测的偏差矫正器,如图1所示,所述偏差矫正器包括:地址折叠逻辑,折叠由分支指令跳转历史序列以及分支预测结果所构成的索引;置信状态表,对分支预测结果进行置信状态索引,一个预测偏差矫正器中存在多个置信状态表;置信状态表表项重分配逻辑,根据不同置信状态表的矫正结果进行各表表项数的再分配;置信状态表更新逻辑,初始化各置信状态表中各表项的状态;预测结果置信度计算模块,用于计算分支预测器输出结果的置信度,并判断是否需要矫正;置信阈值动态调整器。

偏差矫正器利用分支指令的全局分支历史以及分支预测结果对多个置信状态表进行索引,每个置信状态表索引到的表项中存有表示当前分支指令的预测结果的置信状态,预测结果置信度计算模块对多个置信状态表的置信状态输出进行加权累加操作,得出最终的置信度,该置信度与置信阈值进行比较,若置信度高于置信阈值则保留分支预测器的结果,若置信度低于置信阈值则修改分支预测器的结果,当经过预测结果矫正仍发生预测失败,置信状态表表项重分配逻辑会把对预测结果产生负面影响的置信状态表的部分表项分配给其他产生正面影响的置信状态表,被重新分配的表项通过置信状态表初始化逻辑进行置信状态的初始化,当分支预测失败时,置信阈值动态调整器同样会对置信阈值进行调整以达到一个相对合适的值。

具体的,每个置信状态表通过经过折叠的全局历史路径与分支预测结果进行索引,全局历史路径是按照某应用的程序代码的逻辑,最近S条分支指令所跳转方向的序列,其中S代表了全局历史路径的长度,分支预测结果指的是分支预测器对某条跳转指令是否跳转的预测结果,一般由一位二进制数表示,偏差矫正器中含有多个置信状态表,每个置信状态表所对应的全局历史路径长度不一而同,不同置信状态表所对应的历史路径依据等比数列所递增,置信状态表可在不同全局历史路径长度情况下,索引偏差矫正器对分支指令预测结果的置信度,该表含有多个表项,每个表项含有置信度状态,通过折叠逻辑进行索引。

置信状态表在具体电路实现中为多端口静态随机存取存储器(SRAM),其中读写端口数根据处理器发射宽度所决定,在基于SRAM的置信状态表中,表项的个数等于经过折叠逻辑的全局历史路径所能寻址的表项个数,此设计使表项个数略少于索引实际能寻址的表项个数,可使置信状态表在表项的重分配过程中不会发生地址溢出的问题。

其中每个表项表征置信状态的为一简单状态机,该状态机拥有8个状态,如图2所示,由左自右,该8个状态分别标号为0-7,当分支预测器的结果正确,且当前状态在4-7时,状态机会向右游走一个状态,当游走至状态7时预测结果仍正确则停留在状态7达到饱和状态;若当前状态在0-3时,则状态机会直接跳转至状态3,当分支预测器的结果错误,且当前状态在0-3时,状态机会向左游走一个状态,当游走至状态0时预测结果仍错误则停留在状态0达到饱和状态;若当前状态在4-7时,则状态机会直接跳转至状态4。

所述折叠逻辑接受全局分支历史以及分支预测结果,首先全局分支历史以及分支预测结果拼接成一个序列,其次把该序列通过异或树进行折叠形成置信状态表的索引,折叠逻辑F(s,m)如下述所示:首先定义异或树逻辑X=(s,m),其可以把长度为s的序列压缩成长度为m的序列,以s=10,m=40为例,设有一40位序列l[39:0],异或树逻辑X=(s,m)作用于l[39:0]形成新的长度为10的序列:

此种折叠逻辑的设计考虑到折叠逻辑会造成不同序列之间的冲突,以往的设计中在一定程度上使用指令间的关联性来消除冲突,但是关联性以往很少使用在分支预测相关设计中,有一部分原因是由于额外的硬件复杂度并不能带来准确率的有效提升,相对于传统折叠逻辑,此种逻辑设计对于一序列集合S*,当置信状态表中的表项数小于丨S*丨时,有用序列往往会填充满大多数表项,当两个都是来自S*序列发生冲突时,可以用一个较长的序列来代替其中的一个。

所述预测结果置信度计算模块对各个置信状态表输出结果进行累加操作,其中置信状态表输出结果与索引的表项状态有关,其对应关系如下表所示:

表1置信状态表输出结果与索引的表项状态对应关系表

如图3所示,为置信度计算模块,该模块由基数寄存器、移位寄存器、加法器、数字选择器、比较器构成。基数寄存器为一8-bit寄存器且存有基数:1,移位寄存器根据表项中的不同置信状态对基数进行移位操作,例如当置信状态为2时,移位寄存器对基数右移两位输出4。加法器对各置信状态表的输出结果相加,比较器对累加过后的置信状态表输出结果与置信阈值进行比较,数字选择器根据比较器结果选择输出对分支预测器的矫正结果,若累加结果小于置信阈值则否定预测器的预测结果,反之则承认预测器的预测结果。

已有实验表明,偏差矫正器的最佳阈值会根据分支预测器以及应用的不同而不同,对于大多数基准测试,阈值的质量与预测失误更新次数NU

所述置信状态表表项重分配逻辑会对各置信状态表的表项进行重分配,减少对对矫正失败影响最大的置信状态表的表项数,并把这些表项重新分配给对矫正正确影响最大的置信状态表,假设矫正器中存在4个表,且对于表X,如果X≤3,并且如果对预测的置信判断是错误的,则在表X

用当前表中的标记位重新初始化被重新分配的条目,此外,相关联的位u被复位,最后,用状态3或状态4重新初始化相关联的表项,具体做法如下,从表0中读取位m,如果m被置位,我们将根据分支结果重新初始化表项中的状态机,即如果执行分支,则初始化为状态4;如果未执行分支,则初始化为状态3,否则,如果位m被复位,我们根据表0中的双模预测重新初始化表项中的状态机,即,如果不进行双模预测,则初始化为状态3,如果进行双模预测,则初始化为状态4。

所述更新逻辑主要是分为状态机更新逻辑以及有效位u更新逻辑。

状态机更新逻辑对表项中的状态机进行更新,这些状态机提供了分支预测结果的置信状态。具体方法如下:当分支预测器的结果正确,且当前状态在4-7时,将状态机更新右移一个状态,当游走至状态7时预测结果仍正确则停留在状态7达到饱和状态;若当前状态在0-3时,则状态机会直接被更新为状态3,当分支预测器的结果错误,且当前状态在0-3时,状态机会向左更新一个状态,当游走至状态0时预测结果仍错误则停留在状态0达到饱和状态;若当前状态在4-7时,则状态机会被更新至状态4。

有效位u更新逻辑会有条件地更新表项中的有效位u,如果最终对分支预测置信度的判断不正确,则更新表X中相中的有效位u,如果最终的预测是正确的,那么位u将被置位,否则被复位,具体过程如下所示:

如果最终对分支预测置信度的判断正确,这意味着表X中的表项是有效的,通过对位u进行置位,防止此表项被重分配入其他置信状态表,通过对位m进行置位,我们指出分支结果显示出与全局历史值的相关性,因此应该通过根据实际分支结果重新初始化3位计数器来分配该分支的新条目。

如果最终对分支预测置信度的判断不正确,则表X的判断是错误的,当分支在其行为中表现出随机性,并且其结果与全局历史值不相关(或者全局历史不够长)时,就会发生这种情况,在这种情况下,表明在置信状态表里分配了许多无用的表项,此外,由于分配仅在预测失误时进行,因此使用在此历史路径下对此预测结果的高置信状态初始化状态及更安全,这表示最可能的置信度。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种面向分支指令预测的偏差矫正器及方法
  • 一种面向安全防护的分支指令执行方法和电子装置
技术分类

06120112942316