一种降低动态冗余多线程性能和功耗开销的方法及系统的制作方法

文档序号:6523557阅读:197来源:国知局
一种降低动态冗余多线程性能和功耗开销的方法及系统的制作方法
【专利摘要】本发明公开了一种降低动态冗余多线程性能和功耗开销的方法,包括指令译码阶段,读取程序运行过程中指令操作码,识别NOP指令,NOP指令统计量加一;指令发射阶段,读取寄存器时,使用寄存器号索引记录表,将相应标志位置0;指令提交阶段,使用寄存器号索引记录表,查看相应标志位,如果内容为1,则表明之前写寄存器的指令为动态死指令,死指令统计量加一;无论标志位内容为0或1,在指令提交阶段,都将标志位置1。程序每运行一定数量的指令,将动态死指令和NOP指令统计信息以及其他关键统计量输入已构建线性回归预测模型,预测处理器部件的AVF;当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。
【专利说明】一种降低动态冗余多线程性能和功耗开销的方法及系统
【技术领域】
[0001]本发明涉及处理器可靠性【技术领域】,尤其涉及一种降低动态冗余多线程性能和功耗开销的方法和系统。
【背景技术】
[0002]在集成电路中,不断降低的供电电压、越来越高的工作频率、持续减小的节点电容和高速增长的芯片复杂度使得电路对环境的影响越来越敏感。高能粒子(主要来源于宇宙辐射、核辐射、大气和封装材料)轰击半导体器件,以及外界环境中的噪声和干扰,导致逻辑位发生翻转,引起集成电路发生逻辑故障。由于这种故障具有瞬态、可恢复、发生位置和时间随机等特点,不会引起器件永久性的故障,因此,称为软错误。随着摩尔定律的继续有效,单芯片的软错误率也呈现指数增长趋势,在16nm工艺下,单芯片的用户可见错误率高达一天一次。因此,不论是在宇宙环境中,还是在地面环境中,甚至对商用处理器,软错误问题都带来了极大的危害,成为限制微处理器发展的一个重要问题。
[0003]利用SMT (Simultaneously and Redundantly Threading)硬件资源或多核处理器,通过冗余技术检测或恢复软错误,统称为冗余多线程技术RMT (RedundantMultithreading)。在RMT技术中,同时运行两个相同的线程,只有当两个线程的输出相等时,程序才能继续执行。尽管RMT技术能有效检测软错误,但是带来了非常大的性能、功耗和面积开销。Mukherjee发现,利用多核处理器资源,使用RMT技术检测软错误,会导致单线程程序性能平均降低30%,多线程程序平均降低32%,功耗、面积开销增大一倍。因此,过度保护的商用处理器会导致其在价格和性能上毫无竞争力。然而,如果没有采取足够的保护措施,又会导致处理器因为不可靠而变得无法使用。实际上,并不是所有由于外部带电粒子引起的翻转都会导致程序的执行发生错误。因此,仅仅考虑芯片原始错误率会导致过度保护。芯片的失效率是其原始软错误率与部件的弱点因子的乘积,而弱点因子又是时序弱点因子 TVF (Timing Vulnerability Factor)和体系结构弱点因子 AVF (ArchitecturalVulnerability Factor)的乘积。芯片的原始错误率和TVF是由工艺和芯片制造技术决定的。处理器部件的AVF指的是处理器部件中的一位翻转会导致用户可见的错误的概率,与体系结构特性和应用程序特性有关。
[0004]在程序执行过程中,AVF呈现明显的动态变化特性和阶段特性。因此,当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。因此,在动态冗余多线程技术中,准确预测处理器的AVF是非常重要的。
[0005]现有技术需要在一个大小为4万条指令的分析窗口,检测动态死指令,这在硬件实现上是不可行的,而且分析复杂度高和分析时间长。所以,现有技术没有将动态死指令的统计特征作为处理器部件AVF预测模型的输入。但是,如果不考虑动态死指令的影响,而仅仅根据处理器部件的大小以及占用率预测AVF,会导致高估AVF,开启不必要的冗余线程,带来不必要的性能和功耗开销。因为计算处理器部件的占用率时,并没有去除处理器部件中可能驻留的动态死指令(在程序执行过程中,动态死指令发生软错误不会影响程序执行结果),从而高估了处理器部件的有效占用率,但是占用率是预测处理器部件AVF的关键特征,当处理器部件占用率高时,其预测AVF很可能高。

【发明内容】

[0006]为了解决上述技术问题,本发明的目的在于公开一种通过增加动态死指令统计信息和NOP指令统计信息这两种体系结构无关特征作为输入,构建机器学习预测模型,提高处理器部件的AVF预测准确性,从而降低动态冗余多线程开销的方法及系统。
[0007]本发明分别对整型和浮点寄存器的每一个寄存器,增加一位标志位,构成寄存器读写记录表,高效实时检测动态死指令。在程序运行过程中,指令译码阶段,读取指令操作码,识别NOP指令,NOP指令统计量加一;指令发射阶段,读取寄存器时,使用寄存器号索引记录表(即寄存器的标志位进行列表),将相应标志位置O ;指令提交阶段,使用寄存器号索引记录表,查看相应标志位,如果内容为1,则表明之前写寄存器的指令为动态死指令,死指令统计量加一。无论标志位内容为O或1,在指令提交阶段,都将标志位置I。程序每运行一定数量的指令,将动态死指令和NOP指令统计信息以及处理器部件占用率输入预测模型,预测处理器部件的AVF。当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。
[0008]本发明通过提高处理器部件AVF预测准确性,在满足软错误率设计要求的同时,减少冗余多线程的运行时间,降低动态冗余多线程的性能和功耗开销。
【专利附图】

【附图说明】
[0009]图1为寄存器读与记录表;
[0010]图2为冗余多线程示意图;
[0011]图3为处理器部件AVF动态变化图;
[0012]图4为动态冗余多线程示意图。
【具体实施方式】
[0013]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明的实现进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0014]为了缓解软错误问题,工业界经常使用冗余技术,尤其是冗余多线程技术。利用SMT硬件资源或多核处理器,同时运行两个相同的线程,只有当两个线程的输出相等时,程序才能继续执行,如图2所示。
[0015]在程序运行的整个过程中,冗余线程始终在检测软错误,保证了所有软错误都会被检测到。可是实际上并不需要在程序运行的整个生命期内都使用如此高代价的检测措施。在程序运行过程中,处理器部件AVF呈现明显的动态变化特性和阶段特性,如图3所示。当处理器部件的AVF低时,取消冗余线程以提高性能,降低功耗,仍然能够满足处理器软错误率要求。当处理器部件的AVF高时,则开启冗余线程以提高可靠性,如图4所示。根据AVF的高低,实时开启或关闭冗余线程,使得在满足处理器软错误率要求的同时,减少冗余多线程的运行时间,降低动态冗余多线程的性能和功耗开销。所以,能够准确预测AVF的高低则显得尤为重要。(动态死指令统计信息和NOP指令统计信息,这两种体系结构无关特征是能够准确预测处理器部件AVF的关键特征。动态死指令是它的结果在后续程序执行过程中从来没有被其他指令读取使用的指令。例如,当两条连续的指令A和B写同一个寄存器R1,而期间没有其他指令读取过寄存器R1,则指令A为动态死指令。
[0016]本发明增加动态死指令统计信息和NOP指令统计信息作为处理器部件AVF预测模型的输入特征。在SPEC2000Alpha指令级的基准程序中,动态死指令的比例高达9%,NOP指令的比例为10%。本实施例对26个SPEC2000基准测试程序做了大量的统计分析,从200个可能与处理器部件AVF相关的统计量中,选择出最相关的统计量,构建能够准确预测处理器部件AVF的线性回归模型,也可以采用其他的机器学习模型。本实例发现,处理器部件占用率和动态死指令和NOP指令统计信息都是能够准确预测处理器部件AVF的关键特征。
[0017]线性回归方程,如公式I所示。
[0018]y = h0+hl.X^b2.Xjbi.X1...+bn.Xn
[0019]其中X1, x2,...xn表示自变量,y表示应变量。在本发明中,Xi表示第i个统计量,I表示处理器相应部件的AVF。
[0020]处理器相应部件的AVF的残差平方和,如公式2所示。
[0021]Q=E [y「(b0+bi.X^b2.X^bi.X1...+bn.xn) ]2
[0022]通过min (Q), 得到回归系数B向量的最优值。常用的方法有最小二乘法和梯度下降法。
[0023]为了构建预测模型,每个程序运行前10个simpoint程序片段。在每一个simpoint程序片段运行过程中,每400万条指令,计算一次处理器主要部件的AVF,并将相应的200个统计量记录下来,比如cache缺失率,分支预测准确率,动态死指令比例,NOP指令比例等。
[0024]本发明选取SPEC2000中的22个程序的数据作为训练数据,其他4个程序,两个浮点程序(apsi和galgel)以及两个整型程序(mcf和twolf ),作为测试程序。
[0025]本发明首先计算每个统计量Xi与处理器部件AVFy的协方差平方,选择出最相关的统计量。协方差平方值越大,表示该统计量与处理器相应部件的AVF越相关。比如与ROBAVF最相关的统计量是ROB的占用率,协方差平方为0.9。然后依次将其余的199个统计量的其中一个与最相关统计量做二元线性回归。预测差值最小的二元线性方程所包含的另一个自变量,即第二个自变量。以此类推,一次添加一个自变量,直到穷尽所有统计量。经过全面的回归分析,使用前几个自变量构成的线性回归预测模型已经可以比较准确的预测处理器主要部件的AVF,其中动态死指令和NOP指令统计信息都是很重要的统计量。
[0026]本发明分别对整型和浮点寄存器的每一个寄存器,增加一位标志位,构成寄存器读与记录表,闻效实时检测动态死指令。
[0027]在程序运行过程中,指令译码阶段,读取指令操作码,识别NOP指令,NOP指令统计量加一;指令发射阶段,读取寄存器时,使用寄存器号索引记录表,将相应标志位置O ;指令提交阶段,使用寄存器号索引记录表,查看相应标志位,如果内容为1,则表明之前写寄存器的指令为动态死指令,死指令统计量加一。无论标志位内容为O或I,在指令提交阶段,都将标志位置I。
[0028]程序每运行一定数量的指令,将动态死指令和NOP指令统计信息以及其他关键统计量(比如,处理器部件占用率等)输入已经构建的线性回归预测模型,预测处理器部件的AVF。当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。本发明通过提高处理器部件AVF预测准确性,在满足软错误率设计要求的同时,减少冗余多线程的运行时间,降低动态冗余多线程的性能和功耗开销。
[0029]综上,本发明公开了一种降低动态冗余多线程性能和功耗开销的方法,包括如下步骤:
[0030]步骤1、指令译码阶段,读取程序运行过程中指令操作码,识别NOP指令,NOP指令统计量加一;
[0031]步骤2、指令发射阶段,读取寄存器时,使用寄存器号索引记录表,将相应标志位置O ;
[0032]步骤3、指令提交阶段,使用寄存器号索引记录表,查看相应标志位,如果内容为1,则表明之前写寄存器的指令为动态死指令,死指令统计量加一;无论标志位内容为O或I,在指令提交阶段,都将标志位置I。
[0033]步骤4、程序每运行一定数量的指令,将动态死指令和NOP指令统计信息以及其他关键统计量输入已构建线性回归预测模型,预测处理器部件的AVF ;
[0034]步骤5、当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。
[0035]步骤3前包括:`[0036]步骤30、分别对整型和浮点寄存器的每一个寄存器,增加一位标志位,构成寄存器读与记录表,闻效实时检测动态死指令。
[0037]步骤4前包括:
[0038]步骤41、构建预测处理器部件AVF的线性回归模型步骤。
[0039]步骤41具体包括:
[0040]步骤411、统计处理器相应部件的AVF ;
[0041]步骤412、计算残差平方和;
[0042]步骤413、选择残差平方和的最小值,得到回归系数B向量的最优值;
[0043]步骤414、计算每个统计量与处理器部件AVF的协方差平方,选择出最相关的统计量;协方差平方值越大,表示该统计量与处理器相应部件的AVF越相关。
[0044]步骤41中计算处理器相应部件的AVF的线性回归方程为:
[0045]y = h0+hl.X^b2.Xjbi.X1...+bn.xn
[0046]其中=X1, x2,...xn表示自变量,y表示应变量,Xi表示第i个统计量,y表示处理器相应部件的AVF。
[0047]步骤41中处理器相应部件的AVF的残差平方和计算公式为:
[0048]Q=E Iiy1-(V^b1.X^b2.X^bi.X1...+bn.xn) ]2
[0049]本发明还公开了一种降低动态冗余多线程性能和功耗开销的系统,包括:
[0050]指令译码模块,用于读取程序运行过程中指令操作码,识别NOP指令,NOP指令统计量加一;
[0051]指令发射模块,用于读取寄存器时,使用寄存器号索引记录表,将相应标志位置O ;
[0052]指令提交模块,用于使用寄存器号索引记录表,查看相应标志位,如果内容为I,则表明之前写寄存器的指令为动态死指令,死指令统计量加一;无论标志位内容为O或1,在指令提交阶段,都将标志位置I。
[0053]预测模块,用于程序每运行一定数量的指令,将动态死指令和NOP指令统计信息以及其他关键统计量输入已构建线性回归预测模型,预测处理器部件的AVF ;
[0054]控制模块,用于当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。
[0055]所述降低动态冗余多线程性能和功耗开销的系统,还包括线性回归模型构建模块,用于构建预测处理器部件体系结构弱点因子的线性回归模型。
[0056]所述降低动态冗余多线程性能和功耗开销的方法,线性回归模型构建模块还计算残差平方和;计算残差平方和的最小值,得到回归系数B向量的最优值;计算每个统计量与处理器部件体系AVF的协方差平方,选择出最相关的统计量;协方差平方值越大,表示该统计量与处理器相应部件的AVF越相关。
[0057]本发明通过提高处理器部件AVF预测准确性,在满足软错误率设计要求的同时,减少冗余多线程的运行时间,降低动态冗余多线程的性能和功耗开销。
【权利要求】
1.一种降低动态冗余多线程性能和功耗开销的方法,其特征在于,包括如下步骤: 步骤1、指令译码阶段,读取程序运行过程中指令操作码,识别NOP指令,NOP指令统计量加一; 步骤2、指令发射阶段,读取寄存器时,使用寄存器号索引记录表,将相应标志位置O ; 步骤3、指令提交阶段,使用寄存器号索引记录表,查看相应标志位,如果内容为1,则表明之前写寄存器的指令为动态死指令,死指令统计量加一;无论标志位内容为O或1,在指令提交阶段,都将标志位置I ; 步骤4、程序每运行一定数量的指令,将动态死指令和NOP指令统计信息以及其他关键统计量输入已构建线性回归预测模型,预测处理器部件的AVF ; 步骤5、当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。
2.如权利要求1所述降低动态冗余多线程性能和功耗开销的方法,其特征在于,步骤3前包括: 步骤30、分别对整型和浮点寄存器的每一个寄存器,增加一位标志位,构成寄存器读写记录表,闻效实时检测动态死指令。
3.如权利要求1所述降低动态冗余多线程性能和功耗开销的方法,其特征在于,步骤4前包括: 步骤41、构建预测处 理器部件AVF的线性回归模型步骤。
4.如权利要求3所述降低动态冗余多线程性能和功耗开销的方法,其特征在于,步骤41具体包括: 步骤412、计算残差平方和; 步骤413、选择残差平方和的最小值,得到回归系数B向量的最优值; 步骤414、计算每个统计量与处理器部件AVF的协方差平方,选择出最相关的统计量;协方差平方值越大,表示该统计量与处理器相应部件的AVF越相关。
5.如权利要求3所述降低动态冗余多线程性能和功耗开销的方法,其特征在于,步骤41中计算处理器相应部件的AVF的线性回归方程为:
y = bo+bi.Xi+b2.x2+bi.X1...+bn.xn 其中:χ” χ2,...xn表示自变量,y表示应变量,Xi表示第i个统计量,y表示处理器相应部件的AVF。
6.如权利要求5所述降低动态冗余多线程性能和功耗开销的方法,其特征在于,步骤41中处理器相应部件的AVF的残差平方和计算公式为:
Q=E Ey1-Ov^b1.X^b2.x2+bi.X1...+bn.xn) ]2
7.一种降低动态冗余多线程性能和功耗开销的系统,其特征在于,包括: 指令译码模块,用于读取程序运行过程中指令操作码,识别NOP指令,NOP指令统计量加一; 指令发射模块,用于读取寄存器时,使用寄存器号索引记录表,将相应标志位置O ; 指令提交模块,用于使用寄存器号索引记录表,查看相应标志位,如果内容为1,则表明之前写寄存器的指令为动态死指令,死指令统计量加一;无论标志位内容为O或1,在指令提交阶段,都将标志位置I ;预测模块,用于程序每运行一定数量的指令,将动态死指令和NOP指令统计信息以及其他关键统计量输入已构建线性回归预测模型,预测处理器部件的AVF ; 控制模块,用于当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。
8.如权利要求7所述降低动态冗余多线程性能和功耗开销的系统,其特征在于,还包括线性回归模型构建模块,用于构建预测处理器部件体系结构弱点因子的线性回归模型。
9.如权利要求8所述降低动态冗余多线程性能和功耗开销的方法,其特征在于,线性回归模型构建模块还包括计算残差平方和;计算残差平方和的最小值,得到回归系数B向量的最优值;计算每个统计量与处理器部件体系AVF的协方差平方,选择出最相关的统计量;协方差平方值越大,表示该统计量与处理器相应部件的AVF越相关。
【文档编号】G06F11/14GK103699458SQ201310682554
【公开日】2014年4月2日 申请日期:2013年12月12日 优先权日:2013年6月28日
【发明者】尹一笑, 陈云霁, 胡伟武 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1