一种指令cache的故障诊断方法及系统的制作方法

文档序号:10534634阅读:325来源:国知局
一种指令cache的故障诊断方法及系统的制作方法
【专利摘要】本发明公开了一种指令cache的故障诊断方法及系统,该方法包括对寄存器组赋予基准初始值和辅助初始值;将运算指令存放至指令cache中,连续执行N次,直至指令cache的空间被占满;依次调用指令cache中的运算指令对基准初始值和辅助初始值进行运算处理直至N条运算指令被调用完,得到第一计算结果;再将逆运算指令存放至指令cache中,连续执行N次;依次调用指令cache中的逆运算指令对第一计算结果和辅助初始值进行逆运算处理直至N条逆运算指令被调用完,得到第二计算结果;依据第二计算结果与基准初始值是否相等来生成相应的诊断结果。该方法能够有效判断指令cache是否出现故障,降低了处理器的故障率,提高了处理器的运行效率。
【专利说明】
一种指令cache的故障诊断方法及系统
技术领域
[0001]本发明涉及计算机故障诊断技术领域,特别是涉及一种指令cache的故障诊断方法及系统。
【背景技术】
[0002]随着科技的迅速发展,嵌入式处理器的应用日益广泛。嵌入式处理器中CPU访问其内部寄存器的速度最快,但通常情况下代码和数据是存放在主存储器中的。由于主存储器的读写速度比较慢,因此在CHJ内部寄存器和主存储器之间设置了一个高速的、容量相对较小的存储器,把正在执行的指令地址附近的一部分指令或数据从主存储器调入这个存储器,提供给CHJ在一段时间内使用。这个高速小容量存储器就称为高速缓冲存储器(cache),其存取速度比主存储器快几倍甚至十几倍。
[0003]Cache作为主存储器的一部分备份,它是否能实时反映主存储器的数据至关重要。嵌入式处理器通常会先访问cache中的内容,再访问主存储器。如果cache发生失效,使得主存储器中的数据改变,而cache中未能实时改变,或者cache中的数据改变,而主存储器中的数据未能实时改变,这种数据之间的不一致性将有可能导致处理器的程序无法正确运行。在具有安全完整性等级要求的工控系统中,对cache的诊断也就显得尤为重要。Cache通常可以分为数据cache和指令cache,目前对于数据cache的诊断方法已经较成熟。而对于指令cache的诊断还没有相应的方法,指令cache—旦失效,就会有可能造成处理器的程序无法正确运行。
[0004]因此,如何提供一种指令cache的故障诊断方法及系统是本领域技术人员目前需要解决的问题。

【发明内容】

[0005]本发明的目的是提供一种指令cache的故障诊断方法,能够有效判断指令cache是否出现故障,降低了处理器的故障率,提高了处理器的运行效率;本发明的另一目的是提供一种指令cache的故障诊断系统。
[0006]为解决上述技术问题,本发明提供了一种指令cache的故障诊断方法,包括:
[0007]对预先选定的清空后的寄存器组赋予基准初始值和辅助初始值;
[0008]将预先设定好的运算指令存放至指令cache中,连续执行N次,直至所述指令cache的空间被占满,其中,N为正整数;
[0009]依次调用所述指令cache中的运算指令对所述基准初始值和所述辅助初始值进行运算处理直至N条运算指令被调用完,得到第一计算结果;
[00?0]再将预先设定好的逆运算指令存放至指令cache中,连续执行N次,其中,所述逆运算指令与所述运算指令互逆;
[0011]依次调用所述指令cache中的逆运算指令对所述第一计算结果和所述辅助初始值进行逆运算处理直至N条逆运算指令被调用完,得到第二计算结果;
[0012]当所述第二计算结果与所述基准初始值相等时,则生成所述指令cache没有故障的诊断结果;
[0013]当所述第二计算结果与所述基准初始值不相等时,则生成所述指令cache有故障的诊断结果。
[0014]优选地,所述对预先选定的清空后的寄存器组赋予基准初始值和辅助初始值前,该方法还包括:
[0015]对堆栈进行检查;
[0016]将预先选定的寄存器组中当前存放的数据进行压栈保存,得到预先选定的清空后的所述寄存器组。
[0017]优选地,所述当所述第二计算结果与所述基准初始值不相等时,则生成所述指令cache有故障的诊断结果后,该方法还包括:
[0018]将当前存放的所述数据进行出栈处理,并将所述数据恢复至相应的所述寄存器组中。
[0019]优选地,所述运算指令为加法指令,则相对应地,所述逆运算指令为减法指令。
[0020]优选地,当所述运算指令为加法指令时,所述基准初始值为被加数,所述辅助初始值为加数;则当所述逆运算指令为减法指令时,所述第一计算结果变为被减数,所述辅助初始值变为减数。
[0021]为解决上述技术问题,本发明还提供了一种指令cache的故障诊断系统,包括:
[0022]初始值设定单元,用于对预先选定的清空后的寄存器组赋予基准初始值和辅助初始值;
[0023]指令放置单元,用于将预先设定好的运算指令存放至指令cache中,连续执行N次,直至所述指令cache的空间被占满,其中,N为正整数;
[0024]再将预先设定好的逆运算指令存放至指令cache中,连续执行N次,其中,所述逆运算指令与所述运算指令互逆;
[0025]处理单元,用于依次调用所述指令cache中的运算指令对所述基准初始值和所述辅助初始值进行运算处理直至N条运算指令被调用完,得到第一计算结果;
[0026]依次调用所述指令cache中的逆运算指令对所述第一计算结果和所述辅助初始值进行逆运算处理直至N条逆运算指令被调用完,得到第二计算结果;
[0027]判断单元,用于当所述第二计算结果与所述基准初始值相等时,则生成所述指令cache没有故障的诊断结果;
[0028]当所述第二计算结果与所述基准初始值不相等时,则生成所述指令cache有故障的诊断结果。
[0029]优选地,该系统还包括:
[0030]堆栈检查单元,用于对堆栈进行检查;
[0031 ]数据压栈单元,用于将寄存器组中当前存放的数据进行压栈保存,得到清空后的所述寄存器组。
[0032]优选地,该系统还包括:
[0033]数据出栈单元,用于将当前存放的所述数据进行出栈处理,并将所述数据恢复至相应的所述寄存器组中。
[0034]优选地,该系统还包括:
[0035]显示单元,用于对所述指令cache没有故障的诊断结果以及所述指令cache有故障的诊断结果进行显示。
[0036]优选地,该系统还包括:
[0037]报警单元,用于当所述指令cache有故障时,接收并依据所述判断单元发出的报警指令发出警报。
[0038]本发明提供了一种指令cache的故障诊断方法及系统,通过调用占满指令cache的运算指令对基准初始值和辅助初始值进行正运算,得到第一计算结果,再通过调用占满指令cache的逆运算指令对第一计算结果和辅助初始值进行逆运算,得到第二计算结果,最终通过判断第二计算结果和基准初始值是否相同来判断指令cache是否存在故障,该方法能够有效判断指令cache是否出现故障,降低了处理器的故障率,提高了处理器的运行效率。
【附图说明】
[0039]为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0040]图1为本发明提供的一种指令cache的故障诊断方法的过程的流程图;
[0041]图2为本发明提供的一种指令cache的故障诊断系统的结构示意图。
【具体实施方式】
[0042]本发明的核心是提供一种指令cache的故障诊断方法,能够有效判断指令cache是否出现故障,降低了处理器的故障率,提高了处理器的运行效率;本发明的另一核心是提供一种指令cache的故障诊断系统。
[0043]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0044]请参照图1,图1为本发明提供的一种指令cache的故障诊断方法的过程的流程图,该方法包括:
[0045]步骤SlOl:对预先选定的清空后的寄存器组赋予基准初始值和辅助初始值;
[0046]作为优选地,对预先选定的清空后的寄存器组赋予基准初始值和辅助初始值前,该方法还包括:
[0047]对堆栈进行检查;
[0048]将预先选定的寄存器组中当前存放的数据进行压栈保存,得到预先选定的清空后的寄存器组。
[0049]为了避免寄存器组中当前存放的数据与后面在对指令cache进行诊断过程中也会存放在寄存器组中的数据混淆从而导致处理器的程序无法正常运行的情况的发生,这里首先将预先选定的寄存器组中当前存放的数据进行压栈保存,得到预先选定的清空后的寄存器组。
[0050]另外,这里的寄存器组包括特殊寄存器组和通用寄存器组,也即将预先选定的特殊寄存器组和通用寄存器组中当前存放的数据进行压栈保存,然后,对清空后的寄存器组赋予基准初始值和辅助初始值。
[0051]步骤S102:将预先设定好的运算指令存放至指令cache中,连续执行N次,直至指令cache的空间被占满,其中,N为正整数;
[0052]可以理解的是,由于处理器在一上电时,数据cache和指令cache都是关闭的,因此,要想对指令cache进行诊断,需要先开启指令cache,然后将预先设定好的运算指令存放至指令cache中,连续执行N次,直至指令cache的空间被占满。
[0053]本申请中,使用运算指令占满指令cache的空间,从而使得对指令cache检测的覆盖率达到100%,当然,这里也可以不将指令cache的空间占满,而只将运算指令放在指令cache的预设地址处,依次来对指令cache的特定位置进行故障诊断。
[0054]步骤S103:依次调用指令cache中的运算指令对基准初始值和辅助初始值进行运算处理直至N条运算指令被调用完,得到第一计算结果;
[0055]步骤S104:再将预先设定好的逆运算指令存放至指令cache中,连续执行N次,其中,逆运算指令与运算指令互逆;
[0056]步骤S105:依次调用指令cache中的逆运算指令对第一计算结果和辅助初始值进行逆运算处理直至N条逆运算指令被调用完,得到第二计算结果;
[0057]作为优选地,运算指令为加法指令,则相对应地,逆运算指令为减法指令。
[0058]进一步地,当运算指令为加法指令时,基准初始值为被加数,辅助初始值为加数;则当逆运算指令为减法指令时,第一计算结果变为被减数,辅助初始值变为减数。
[0059]可以理解的是,当运算指令为加法运算指令时,假设基准初始值为被加数,且被加数为0,辅助初始值为加数,且加数为I,假设N取10,则依次调用指令cache中的加法运算指令对基准初始值O和辅助初始值I进行加法运算处理直至10条加法运算指令被调用完,得到第一计算结果,则第一计算结果。
[0060]则当逆运算指令为减法运算指令时,则依次调用指令cache中的减法运算指令对第一计算结果和辅助初始值I进行逆运算处理直至10条减法运算指令被调用完,得到第二计算结果。
[0061 ]实际上,如果指令cache没有故障的话,则第一计算结果应该为10,第二计算结果应该为O。
[0062]步骤S106:当第二计算结果与基准初始值相等时,则生成指令cache没有故障的诊断结果;
[0063]当第二计算结果与基准初始值不相等时,则生成指令cache有故障的诊断结果。
[0064]由上述列举的例子可看出,当指令cache没有故障时,则第二计算结果应该为0,此时第二计算结果与基准初始值O是相等的,则此时生成指令cache没有故障的诊断结果。
[0065]如果此时第二计算结果不为O,则此时第二计算结果与基准初始值O是不相等的,则此时生成指令cache有故障的诊断结果。
[ΟΟ??]作为优选地,可以对生成的指令cache没有故障的诊断结果或者指令cache有故障的诊断结果进行显示,以方便运维人员的监视。
[0067]作为优选地,当第二计算结果与基准初始值不相等时,则生成指令cache有故障的诊断结果后,该方法还包括:
[0068]将当前存放的数据进行出栈处理,并将数据恢复至相应的寄存器组中。
[0069]在对指令cache的故障诊断完成后,将之前保存在堆栈中额数据出栈,并将数据恢复至相应的寄存器组中,使得寄存器组中的数据恢复为指令cache故障诊断之前的数值。
[0070]可以理解的是,本发明提供的一种指令cache的故障诊断方法适用于各类处理器,包括PowerPC(Performance Optimizat1n With Enhanced RISC-PerformanceComputing,一种精简指令集架构的中央处理器)处理器,当然,本发明对于该方法具体适用于哪种处理器不做限定。
[0071]本发明提供了一种指令cache的故障诊断方法,通过调用占满指令cache的运算指令对基准初始值和辅助初始值进行正运算,得到第一计算结果,再通过调用占满指令cache的逆运算指令对第一计算结果和辅助初始值进行逆运算,得到第二计算结果,最终通过判断第二计算结果和基准初始值是否相同来判断指令cache是否存在故障,该方法能够有效判断指令cache是否出现故障,降低了处理器的故障率,提高了处理器的运行效率。
[0072]请参照图2,图2为本发明提供的一种指令cache的故障诊断系统的结构示意图,该系统包括:
[0073]初始值设定单元I,用于对预先选定的清空后的寄存器组5赋予基准初始值和辅助初始值;
[0074]指令放置单元2,用于将预先设定好的运算指令存放至指令cache6中,连续执行N次,直至指令cache 6的空间被占满,其中,N为正整数;
[0075]再将预先设定好的逆运算指令存放至指令cache6中,连续执行N次,其中,逆运算指令与运算指令互逆;
[0076]处理单元3,用于依次调用指令cache6中的运算指令对基准初始值和辅助初始值进行运算处理直至N条运算指令被调用完,得到第一计算结果;
[0077]依次调用指令cache6中的逆运算指令对第一计算结果和辅助初始值进行逆运算处理直至N条逆运算指令被调用完,得到第二计算结果;
[0078]判断单元4,用于当第二计算结果与基准初始值相等时,则生成指令cache6没有故障的诊断结果;
[0079]当第二计算结果与基准初始值不相等时,则生成指令cache6有故障的诊断结果。
[0080]作为优选地,该系统还包括:
[0081]堆栈检查单元,用于对堆栈进行检查;
[0082]数据压栈单元,用于将寄存器组5中当前存放的数据进行压栈保存,得到清空后的寄存器组5。
[0083]作为优选地,该系统还包括:
[0084]数据出栈单元,用于将当前存放的数据进行出栈处理,并将数据恢复至相应的寄存器组5中。
[0085]作为优选地,该系统还包括:
[0086]显示单元,用于对指令cache 6没有故障的诊断结果以及指令cache 6有故障的诊断结果进行显示。
[0087]作为优选地,该系统还包括:
[0088]报警单元,用于当指令cache6有故障时,接收并依据判断单元4发出的报警指令发出警报。
[0089]作为优选地,该报警单元可以为蜂鸣器或者声光报警器,当然,还可以为其他类型的报警器,本发明在此不做特别的限定。
[0090]另外,对于该系统中各个单元的具体介绍请结合上述方法实施例的介绍,本发明在此不再赘述。
[0091]本发明提供了一种指令cache的故障诊断系统,通过调用占满指令cache的运算指令对基准初始值和辅助初始值进行正运算,得到第一计算结果,再通过调用占满指令cache的逆运算指令对第一计算结果和辅助初始值进行逆运算,得到第二计算结果,最终通过判断第二计算结果和基准初始值是否相同来判断指令cache是否存在故障,该方法能够有效判断指令cache是否出现故障,降低了处理器的故障率,提高了处理器的运行效率。
[0092]需要说明的是,在本说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0093]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【主权项】
1.一种指令cache的故障诊断方法,其特征在于,包括: 对预先选定的清空后的寄存器组赋予基准初始值和辅助初始值; 将预先设定好的运算指令存放至指令cache中,连续执行N次,直至所述指令cache的空间被占满,其中,N为正整数; 依次调用所述指令cache中的运算指令对所述基准初始值和所述辅助初始值进行运算处理直至N条运算指令被调用完,得到第一计算结果; 再将预先设定好的逆运算指令存放至指令cache中,连续执行N次,其中,所述逆运算指令与所述运算指令互逆; 依次调用所述指令cache中的逆运算指令对所述第一计算结果和所述辅助初始值进行逆运算处理直至N条逆运算指令被调用完,得到第二计算结果; 当所述第二计算结果与所述基准初始值相等时,则生成所述指令cache没有故障的诊断结果; 当所述第二计算结果与所述基准初始值不相等时,则生成所述指令cache有故障的诊断结果。2.如权利要求1中的故障诊断方法,其特征在于,所述对预先选定的清空后的寄存器组赋予基准初始值和辅助初始值前,该方法还包括: 对堆栈进行检查; 将预先选定的寄存器组中当前存放的数据进行压栈保存,得到预先选定的清空后的所述寄存器组。3.如权利要求1中的故障诊断方法,其特征在于,所述当所述第二计算结果与所述基准初始值不相等时,则生成所述指令cache有故障的诊断结果后,该方法还包括: 将当前存放的所述数据进行出栈处理,并将所述数据恢复至相应的所述寄存器组中。4.如权利要求1中的故障诊断方法,其特征在于,所述运算指令为加法指令,则相对应地,所述逆运算指令为减法指令。5.如权利要求1中的故障诊断方法,其特征在于,当所述运算指令为加法指令时,所述基准初始值为被加数,所述辅助初始值为加数;则当所述逆运算指令为减法指令时,所述第一计算结果变为被减数,所述辅助初始值变为减数。6.一种指令cache的故障诊断系统,其特征在于,包括: 初始值设定单元,用于对预先选定的清空后的寄存器组赋予基准初始值和辅助初始值; 指令放置单元,用于将预先设定好的运算指令存放至指令cache中,连续执行N次,直至所述指令cache的空间被占满,其中,N为正整数; 再将预先设定好的逆运算指令存放至指令cache中,连续执行N次,其中,所述逆运算指令与所述运算指令互逆; 处理单元,用于依次调用所述指令cache中的运算指令对所述基准初始值和所述辅助初始值进行运算处理直至N条运算指令被调用完,得到第一计算结果; 依次调用所述指令cache中的逆运算指令对所述第一计算结果和所述辅助初始值进行逆运算处理直至N条逆运算指令被调用完,得到第二计算结果; 判断单元,用于当所述第二计算结果与所述基准初始值相等时,则生成所述指令cache没有故障的诊断结果; 当所述第二计算结果与所述基准初始值不相等时,则生成所述指令cache有故障的诊断结果。7.如权利要求6中的故障诊断系统,其特征在于,该系统还包括: 堆栈检查单元,用于对堆栈进行检查; 数据压栈单元,用于将寄存器组中当前存放的数据进行压栈保存,得到清空后的所述寄存器组。8.如权利要求6中的故障诊断方法,其特征在于,该系统还包括: 数据出栈单元,用于将当前存放的所述数据进行出栈处理,并将所述数据恢复至相应的所述寄存器组中。9.如权利要求6中的故障诊断方法,其特征在于,该系统还包括: 显示单元,用于对所述指令cache没有故障的诊断结果以及所述指令cache有故障的诊断结果进行显示。10.如权利要求6中的故障诊断方法,其特征在于,该系统还包括: 报警单元,用于当所述指令cache有故障时,接收并依据所述判断单元发出的报警指令发出警报。
【文档编号】G06F11/10GK105893165SQ201610190415
【公开日】2016年8月24日
【申请日】2016年3月29日
【发明人】孙永红
【申请人】杭州和利时自动化有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1