发明内容
本发明提供一种硬件表项校验错误的处理方法及装置,以提高***的可靠性和可维护性。
为了达到以上目的,本发明实施例提供了一种硬件表项校验错误的处理方法,包括:
获取器件的校验信息寄存器记录的该器件的硬件表项校验错误信息;其中,所述硬件表项校验错误信息包括出错硬件表项的地址和出错次数;
确定第一预设时间内所述硬件表项校验错误信息中出错硬件表项的出错次数超过门限值,则根据该出错硬件表项的地址确定该出错硬件表项的索引;
根据所述出错硬件表项的索引查询对应的软件表项,并根据查询到的软件表项刷新所述出错硬件表项;
确定在第二预设时间内所述器件的校验信息寄存器未记录新的硬件表项校验错误信息,则保持所述器件工作状态。
其中,所述根据所述硬件表项校验错误信息确定出错硬件表项的索引,具体通过以下公式实现:
其中,
为对(*)进行向下取整,i为出错硬件表项的索引,AD0为硬件表项在内存中的起始地址,AD1为出错次数超过阈值的出错硬件表项的地址,S为硬件表项的大小,单位为字节。
其中,当所述出现故障的器件具有复位功能时,该方法还包括:
确定所述第二预设时间内所述器件的校验信息寄存器记录了新的硬件表项校验错误信息,则触发所述出现故障的器件进行复位;或,
确定所述第二预设时间内所述器件的校验信息寄存器记录了新的硬件表项校验错误信息,则对所述出现故障的器件进行下电处理,并重新上电。
其中,当所述出现故障的器件具有复位功能时,该方法还包括:
确定所述第二预设时间内所述器件的校验信息寄存器记录了新的硬件表项校验错误信息,则触发所述出现故障的器件进行复位;
当所述故障仍未被修复时,对所述出现故障的器件进行下电处理,并重新上电。
其中,该方法还包括:
确定所述第二预设时间内所述器件的校验信息寄存器记录了新的硬件表项校验错误信息,则提示用户所述器件故障。
本发明实施例还提供了一种硬件表项校验错误的处理装置,包括:
获取模块,用于获取器件的校验信息寄存器记录的该器件的硬件表项校验错误信息;其中,所述硬件表项校验错误信息包括出错硬件表项的地址和出错次数;
故障检测模块,确定第一预设时间长度内所述硬件表项校验错误信息中出错硬件表项的出错次数是否超过门限值;
故障修复模块,用于当所述故障检测模块确定第一预设时间长度内所述硬件表项校验错误信息中出错硬件表项的出错次数超过门限值时,根据该出错硬件表项的地址确定该出错硬件表项的索引;根据所述出错硬件表项的索引查询对应的软件表项,并根据查询到的软件表项刷新所述出错硬件表项;确定在第二预设时间内所述器件的校验信息寄存器未记录新的硬件表项校验错误信息,则保持所述器件工作状态。
其中,所述故障修复模块具体用于,通过以下公式实现根据所述硬件表项校验错误信息确定出错硬件表项的索引:
其中,
为对(*)进行向下取整,i为出错硬件表项的索引,AD0为硬件表项在内存中的起始地址,AD1为出错次数超过阈值的出错硬件表项的地址,S为硬件表项的大小,单位为字节。
其中,当所述出现故障的器件具有复位功能时,
所述故障修复模块还用于,确定所述器件的校验信息寄存器记录了新的硬件表项校验错误信息,则触发所述出现故障的器件进行复位;或,确定所述第二预设时间内所述器件的校验信息寄存器记录了新的硬件表项校验错误信息,则对所述出现故障的器件进行下电处理,并重新上电。
其中,当所述出现故障的器件具有复位功能时,
所述故障修复模块还用于,确定所述第二预设时间内所述器件的校验信息寄存器记录了新的硬件表项校验错误信息,则触发所述出现故障的器件进行复位;当所述故障仍未被修复时,对所述出现故障的器件进行下电处理,并重新上电。
其中,所述故障修复模块还用于,确定所述第二预设时间内所述器件的校验信息寄存器记录了新的硬件表项校验错误信息,则提示用户所述器件故障。
本发明上述实施例中,通过获取器件的校验信息寄存器记录的该器件的硬件表项校验错误信息,确定第一预设时间长度内所述硬件表项校验错误信息中出错硬件表项的出错次数超过门限值;则根据该出错硬件表项的地址确定该出错硬件表项的索引;根据所述出错硬件表项的索引查询对应的软件表项,并根据查询到的软件表项刷新所述出错硬件表项,保持所述器件工作状态,以提高***的可靠性和可维护性。
具体实施方式
针对现有技术中存在的上述问题,本发明实施例提供了一种硬件表项校验错误的处理的技术方案。在该技术方案中,通过获取器件的校验信息寄存器记录的该器件的硬件表项校验错误信息,确定第一预设时间长度内所述硬件表项校验错误信息中出错硬件表项的出错次数超过门限值,则根据该出错硬件表项的地址确定该出错硬件表项的索引;根据所述出错硬件表项的索引查询对应的软件表项,并根据查询到的软件表项刷新所述出错硬件表项,确定在第二预设时间内所述器件的校验信息寄存器未记录新的硬件表项校验错误信息,则保持所述器件工作状态,保持所述器件工作状态,以提高***的可靠性和可维护性。
下面将结合本发明的实施例中的附图,对本发明的实施例中的技术方案进行清楚、完整的描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明的实施例保护的范围。
如图1所示,为本发明实施例提供的一种硬件表项校验错误的处理方法的流程示意图,可以包括以下步骤:
步骤101、获取硬件表项校验错误信息,并根据获取到的硬件表项校验错误信息确定对应器件是否出现故障。
具体的,由于支持硬件错误校验功能的器件通常均设置有对应的校验错误寄存器,用于存储对应器件的硬件表项校验错误信息,因此,在本发明实施例中,可以从各器件的校验错误寄存器中获取相应器件的硬件表项校验错误信息,并根据获取到的硬件表项校验错误信息确定对应的器件是否出现故障。其中,校验错误寄存器中记录的硬件表项校验错误信息可以包括出错硬件表项的的地址以及出错次数等信息。
在实际应用中,可以每隔一定的时间(周期性地)从器件的校验错误寄存器中获取对应器件的硬件表项校验错误信息,以一定的查询次数为一个轮询周期,当一个轮询周期中,出错硬件表项的出错次数超过门限值后,则确定器件出现故障。
其中,对于影响转发的故障器件(以转发芯片为例),可以增加丢包率的计算。通过当前错包平均速率(PPS(Packet per Second,数据包每秒))与转发芯片的转发平均速率(PPS),得到丢包率。以一定时间(如1S)为一个检测周期,统计检测周期内的丢包率,若连续N个检测周期中丢包率均高于预设门限,则确定转发芯片故障。其中,N为正整数。
例如,在一个检测周期(1S)内错包平均速率为1100PSS,而转发芯片的转发平均速率为10000PSS,则该检测周期内丢包率为11%(1100/10000=11%)。若丢包率门限值为10%,则该检测周期内丢包率高于门限值。若定义连续检测周期为8S,且该连续检测周期中每次检测得到的丢包率均大于10%,则确定转发芯片出现故障。
步骤102、当确定器件出现故障时,对该器件进行故障修复,并当所述故障修复成功后,保持所述器件工作状态。
具体的,在现有技术中,当检测到硬件表项校验错误时,通常的处理方式为直接更换器件。但是,实际情况中,除了由硬件故障导致的硬件表项校验错误有必要更换器件之外,许多由其它因素(如宇宙射线)导致的硬件表项校验错误是可以通过一定方法实现故障修复的。
为了提高***可靠性和可维护性,在本发明实施例提供的技术方案中,当确定器件出现故障后,可以通过以方法对其进行故障修复:
方法1、硬件表项刷新机制
由于硬件表项一般是由对应的软件表项复制而来,因此当检测到硬件表项校验错误,且确定器件出现故障时,可以根据出错硬件表项的地址确定出错硬件表项的索引,进而根据该索引查询对应的软件表项,并根据查询到的软件表项对该硬件表项进行刷新。
具体的,在本发明实施例中,当确定器件出现故障后,可以根据获取到的硬件表项校验错误信息中包括的出错硬件表项的地址确定出错表项的索引,进而根据该索引查询对应的软件表项,并以查询到的软件表项的内容刷新硬件表项,以纠正硬件表项的校验错误。
其中,根据出错硬件表项的地址确定出错硬件表项的索引,可以具体通过以下公式实现:
其中,
为对(*)进行向下取整,i为出错硬件表项的索引,AD0为硬件表项在内存中的起始地址,AD1为出错次数超过阈值出错硬件表项的地址,S为硬件表项的大小,单位为字节。
例如,以一个硬件表项在内存中占用4个32bits的空间(即一个硬件表项为16Byte(字节))为例。如图2所示,该硬件表项的内存基址(即硬件表项在内存中的起始地址)为0x40000000,0x40080000为表项的结尾,即内存中这一段给硬件表项使用(硬件表项的索引依次为0、1、2...)。若硬件表项校验错误信息确定地址0x40000008的出错次数超过阈值,则出错硬件表项的索引为:
则0为出错硬件表项的索引,根据该索引找到对应的软件表项,并根据该软件表项中的内容刷新该出错硬件表项。
方法2、器件复位机制
由于器件复位可以使该器件的部分寄存器或全部寄存器重新初始化,所有软件表项重新下发。因此,当检测到硬件表项校验错误时,可以通过器件复位对器件的硬件表项进行刷新,以对器件进行故障修复。
具体的,在本发明实施例中,若器件提供复位功能,则当确定器件出现故障后,可以触发器件复位,以使该器件的部分寄存器或全部寄存器重新初始化,所有软件表项重新下发,以修复硬件表项的校验错误。
方法3、掉电复位(冷复位)机制
由于当器件经历掉电以及重新上电后,器件的全部寄存器均会重新初始化,所有的软件表项重新下发。因此,当检测到硬件表项校验错误时,可以通过掉电复位对器件的硬件表项进行刷新,以对器件进行故障修复。
其中,本发明实施例提供的上述三种器件故障修复方法中,由于硬件表项刷新机制仅对所确定出的出错的硬件表项进行刷新,器件复位机制则通过器件复位对部分或全部寄存器中的硬件表项均进行刷新,掉电复位则对故障器件(以及与故障器件共用电源的其他器件)的全部寄存器中的硬件表项均进行刷新。因此,这三种故障修复方法修复器件故障的成功的可能性依次增加,但对业务可用性的影响也逐渐增加。
在本发明实施例中,当检测到硬件表项校验错误,并确定器件出现故障后,可以依次使用上述三种方法进行故障修复,直至故障修复成功。即当出现器件故障时,可以首先使用硬件表项刷新机制进行故障修复,并当硬件表项刷新机制失败时,使用器件复位机制进行故障修复,当器件复位机制也失败时,使用掉电复位机制进行故障修复。若进行掉电复位后,器件故障仍未修复,则可以提示用户器件故障,更换相关器件。其中,在本发明实施例中,可以通过预设时间长度内,器件的校验信息寄存器是否记录了新的硬件表项校验错误信息确定故障修复是否成功;当预设时间长度内,器件的校验信息寄存器记录了新的硬件表项校验错误信息时,确定故障修复未成功;当预设时间长度内,器件的校验信息寄存器未记录新的硬件表项校验错误信息时,确定故障修复未成功。
应该认识到,依次执行上述三种故障修复方法的实施方式仅仅是本发明实施例提供的技术方案的一种具体实例,而并不是对本发明保护范围的限定。即在本发明实施例提供的技术方案中,也可以在确定器件故障后,直接使用第二种方法(器件复位机制)或第三种方法(掉电复位机制)进行故障修复,或者,先使用第二种方法进行故障修复,并在失败后,使用第三种方法进行故障修复。本领域技术人员在本发明实施例提供的故障修复方法的基础上,在不付出创造性劳动前提下进行的变型,以及对各方法使用顺序的改变均应属于本发明的保护范围。
进一步地,在本发明实施例中,为了尽可能保证业务的可用性,若依次使用了上述三种修复方法进行故障修复,且故障仍未被修复,则在一定时间内(该时间可以根据业务运行情况确定)不再进行对该故障的修复流程。
通过以上描述可以看出,在本发明实施例中,通过获取硬件表项校验错误确定相应器件是否出现故障,并当器件出现故障时,对该器件进行故障修复,提高了***的可靠性和可维护性。
基于上述方法实施例相同的技术构思,本发明实施例还提供了一种硬件表项校验错误的处理装置,可以应用于上述方法流程。
如图3所示,为本发明实施例提供的一种硬件表项校验错误的处理装置的结构示意图,可以包括:
获取模块31,用于获取器件的校验信息寄存器记录的该器件的硬件表项校验错误信息;其中,所述硬件表项校验错误信息包括出错硬件表项的地址和出错次数;
故障检测模块32,确定第一预设时间长度内所述硬件表项校验错误信息中出错硬件表项的出错次数是否超过门限值;
故障修复模块33,用于当所述故障检测模块32确定第一预设时间长度内所述硬件表项校验错误信息中出错硬件表项的出错次数超过门限值时,根据该出错硬件表项的地址确定该出错硬件表项的索引;根据所述出错硬件表项的索引查询对应的软件表项,并根据查询到的软件表项刷新所述出错硬件表项;确定在第二预设时间内所述器件的校验信息寄存器未记录新的硬件表项校验错误信息,则保持所述器件工作状态。
其中,所述故障修复模块33具体用于,通过以下公式实现根据所述硬件表项校验错误信息确定出错硬件表项的索引:
其中,
为对(*)进行向下取整,i为出错硬件表项的索引,AD0为硬件表项在内存中的起始地址,AD1为出错次数超过阈值的出错硬件表项的地址,S为硬件表项的大小,单位为字节。
其中,当所述出现故障的器件具有复位功能时,
所述故障修复模块33还用于,确定所述器件的校验信息寄存器记录了新的硬件表项校验错误信息,则触发所述出现故障的器件进行复位;或,确定所述第二预设时间内所述器件的校验信息寄存器记录了新的硬件表项校验错误信息,则对所述出现故障的器件进行下电处理,并重新上电。
其中,当所述出现故障的器件具有复位功能时,
所述故障修复模块还用于,确定所述第二预设时间内所述器件的校验信息寄存器记录了新的硬件表项校验错误信息,则触发所述出现故障的器件进行复位;当所述故障仍未被修复时,对所述出现故障的器件进行下电处理,并重新上电。
其中,所述故障修复模块33还用于,确定所述第二预设时间内所述器件的校验信息寄存器记录了新的硬件表项校验错误信息,则提示用户所述器件故障。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。