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

一种CPU错误检测装置及服务器

文献发布时间:2024-04-18 19:58:53


一种CPU错误检测装置及服务器

技术领域

本申请涉及服务器领域,特别是涉及一种CPU错误检测装置及服务器。

背景技术

目前,在服务器等涉及到中央处理单元(Central Processing Unit,CPU)的应用场景中,存在一种安全相关应用,包括:

使用两个几乎相同的CPU,其中一个作为主CPU运行,另外一个则作为“检查器”CPU。两CPU执行基本相同的程序代码,并接收相同的输入数据,相应的,在正常情况下两CPU应有相同的输出。基于上述原理,将这两个CPU的输出相互进行比较,从而实现识别主CPU在运行过程中的错误。

但是,上述这种目前通常使用的对称双CPU架构虽然可以确定其中一个CPU的错误。但对于如电磁干扰引起的状态翻转、公共时钟或供电电压的电压降低等两CPU共同出现的故障所引发的错误(共因错误)则无法有效识别,错误检测效果仍有待提高。

所以,现在本领域的技术人员亟需要一种CPU错误检测装置,解决目前的CPU错误检测方案检测效果不足的问题。

发明内容

本申请的目的是提供一种CPU错误检测装置及服务器,以解决目前的CPU错误检测方案检测效果不足的问题。

为解决上述技术问题,本申请提供一种CPU错误检测装置,其特征在于,包括:第一CPU、第二CPU、第一延时模块和比较模块;其中,所述第一CPU和所述第二CPU执行相同代码;

总线输入端与所述第一CPU和所述第二CPU中其一的输入端直接连接、总线输入端与所述第一CPU和所述第二CPU中另一的输入端通过所述第一延时模块连接;

所述延时模块用于使所述总线输入端输出的相同数据于不同时刻到达所述第一CPU和所述第二CPU;

所述第一CPU和所述第二CPU的输出端与所述比较模块的输入端连接;

所述比较模块用于比较所述第一CPU和所述第二CPU的输出数据,以检测是否出现CPU错误。

另一方面,还包括:第二延时模块;

所述第二延时模块设置于所述第一CPU的输出端与所述比较模块的输入端之间、或设置于所述第二CPU的输出端与所述比较模块的输入端之间,且所述第二延时模块与所述第一延时模块对应连接于不同的CPU。

另一方面,所述第一CPU的输出端与总线输出端直接连接;

相应的,所述第一延时模块设置于所述第二CPU的输入端与所述总线输入端之间,所述第二延时模块设置于所述第一CPU的输出端与所述比较模块的输入端之间。

另一方面,所述第一延时模块的延时时长为二分之一个时钟周期的整数倍。

另一方面,所述第一延时模块和所述第二延时模块的延时时长相等。

另一方面,还包括:第三CPU和第三延时模块;

所述第三CPU的输入端与所述总线输入端连接,所述第三CPU的输出端通过所述第三延时模块与所述比较模块的输入端连接。

另一方面,所述第一延时模块、所述第二延时模块和所述第三延时模块的延时时长相等。

另一方面,还包括:告警模块;

所述告警模块与所述比较模块连接,用于根据所述比较模块输出的比较结果,判断是否执行告警动作。

另一方面,还包括:存储模块;

所述存储模块与所述比较模块连接,用于保存所述比较模块输出的比较结果。

为解决上述技术问题,本申请还提供一种服务器,包括上述的CPU错误检测装置。

本申请提供的一种CPU错误检测装置,同样采用双CPU架构基于相同的程序代码对相同的输入数据进行处理,从而通过比较两CPU输出数据是否相同以识别主CPU在运行过程中的错误。此外,本申请还进一步的在两CPU其中一个的输入端处设置延时模块,使两CPU异步接收总线输入端的数据;进而,当系统中出现共因错误时,两CPU处理的输入数据一组在出现共因错误之前即达到CPU输入端,保持不变,另一组输入数据则因为共因错误而发生变化;此时,两执行相同程序代码的CPU接收到的输入数据不同,相应处理后输出的数据也即不同;至此,本装置得以实现对CPU系统中共因错误的识别,扩充了现有CPU错误识别方案的场景,进一步提高检测效果。

本申请提供的服务器,与上述CPU错误检测装置对应,效果同上。

附图说明

为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为一种检测CPU错误的双CPU结构的示意图;

图2为本发明提供的一种CPU错误检测装置的结构图;

图3为本发明提供的另一种CPU错误检测装置的结构图。

其中,11表示第一CPU,12表示第二CPU,13表示第一延时模块,14表示比较模块,15表示第二延时模块,16表示第三CPU,17表示第三延时模块。

具体实施方式

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

本申请的核心是提供一种CPU错误检测装置及服务器。

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。

目前,对于中央处理单元(Central Processing Unit,CPU)的使用过程中,通常需要对CPU错误进行识别,以在CPU出现错误时可以及时采取相应的措施,避免由于CPU的错误对整个系统带来的损失。

常见的一种CPU错误识别方案如图1所示,通过由两个几乎完全相同的CPU组成的双CPU结构实现,具体的:

两个CPU中的其中一个作为服务器系统的主CPU运行,参与系统中的数据处理、决策以及控制过程。另外一个CPU则作为“检查器”,专门用于检测主CPU是否出现错误。由于两CPU就型号、种类等参数几乎完全相同,且执行完全相同的程序代码,所以两CPU对于同一输入数据的处理结果应该也是相同的。基于上述原理,传统的CPU错误识别方案将系统发送给CPU处理的数据同时发送给主CPU和检查器CPU,然后比较主CPU和检查器CPU输出的数据是否相同,若相同,则说明CPU未出现错误,若不同,则说明CPU出现错误,返回相应的错误信息以提示运维人员及时采取相应的解决措施。

但是,上述这种传统的CPU错误检测方案还存在以下缺陷:

在系统的实际应用中,还存在诸如由电磁干扰引起的状态翻转、公共时钟或供电电压的电压降低等同时会对主CPU和检查器CPU都产生影响的问题。示例性的,例如由于电磁干扰,导致系统待发送至CPU处理的输入数据中部分数据位出现变化。此时,由于输入数据是同时发送到主CPU和检查器CPU中以便于根据两CPU的处理结果判断是否出现CPU错误,且因为两CPU接收到的输入数据相同(都出现了部分数据位的变化),所以当两CPU都工作正常时,两CPU输出数据应完全一致。上述方案无法区分出上述问题所造成的CPU错误,同理,上述方案也无法识别其他对两CPU产生相同影响的共因错误。

基于此,为解决目前在实际应用中无法识别由系统中共因错误所导致的CPU错误的问题,本申请提供一种CPU错误检测装置,如图2所示,包括:第一CPU11、第二CPU12、第一延时模块13和比较模块14;其中,第一CPU11和第二CPU12执行相同代码;

总线输入端与第一CPU11和第二CPU12中其一的输入端直接连接、总线输入端与第一CPU11和第二CPU12中另一的输入端通过第一延时模块13连接;

延时模块用于使总线输入端输出的相同数据于不同时刻到达第一CPU11和第二CPU12;

第一CPU11和第二CPU12的输出端与比较模块14的输入端连接;

比较模块14用于比较第一CPU11和第二CPU12的输出数据,以检测是否出现CPU错误。

容易知道的是,上述的第一CPU11和第二CPU12与传统方案中一致,为两个几乎完全相同的CPU(在理想条件下即为完全相同的两个CPU),一个作为系统的主CPU,另一个作为检测器CPU。两CPU执行相同的程序代码,进而对于相同输入数据处理后得到的输出结果也应完全一致,进而基于比较模块14对两CPU输出数据的比较,即可实现对CPU是否出现错误的识别。

特别的,本申请中对于第一延时模块13的设置,其目的在于使第一CPU11和第二CPU12对于相同的输入数据实现异步处理。以当系统出现共因错误时,由共因错误带来的影响仅体现在其中一个CPU(被第一延时模块13滞后输入数据处理的CPU)上,进而两CPU所得到的处理结果不同,通过比较模块14对两CPU输出的数据进行比较即可识别由共因错误所引起的CPU错误。

因此,上述在其中一个CPU输入端处设置的第一延时模块13仅为一种考虑到实施成本、难度以及电路面积的优选方案。事实上,两CPU的输入端处可以都设置相应的延时模块,只要保证两CPU输入延时不同,也可实现如上述的共因错误识别效果。

对于第一延时模块13的具体实施方式,本实施例未做严格限制,目前已存在包括延时电路在内的多种延时方案,都可作为上述第一延时模块13的实现方式,可根据实际工程需要进行选择,本实施例在此不做赘述。

对于比较模块14,本申请中比较模块14的作用为通过比较两CPU的输出数据以判断是否出现CPU错误。目前同样存在多种实现数据比较的成熟方案,例如通过比较器等硬件电路实现的硬件比较方案,以及通过在单片机等具备一定数据处理能力的器件上通过编程实现数据比较的软件实现方案,本实施例对此不做限制,可根据实际需要自由选择。但考虑到实施成本以及稳定性,实际应用中一般选用比较器等硬件方案实现两CPU输出数据的比较。

进一步的,容易知道的是,比较器等硬件方案一般仅能比较同时输入到输入端的数据,也即比较模块14通常需要比较的是两CPU对应于同一时间片的输出数据。

基于此,若上述实施例通过第一延时模块13造成两CPU的数据异步处理之后,若不做额外设置,很可能会导致同一时刻输入到比较模块14的两路CPU的输出数据不是对应于同一时间片的输出数据,此时进行数据比较以识别CPU错误的结果是不准确的。因此,本实施例进一步还提供一种可能的实施方案,如图2所示,上述装置还包括:第二延时模块15;

第二延时模块15设置于第一CPU11的输出端与比较模块14的输入端之间、或设置于第二CPU12的输出端与比较模块14的输入端之间,且第二延时模块15与第一延时模块13对应连接于不同的CPU。

第二延时模块15的作用在于使两CPU发送到比较模块14输入端的两路数据统一时间,实现比较模块14对于两CPU同一时间片下输出数据的比较,以保证CPU错误识别的准确性。

还需要说明的是,除去实施例上述通过第二延时模块15的设置,还可以采用其他方式克服由第一延时模块13带来的比较器接收到的数据不属于同一时间片的问题:

其一,利用数据传输过程中的延时;即数据在传输通道中本身即存在延时,延时大小通常与传输通道的长短有关,可通过不同长度传输通道的设置,使传输通道所带来的延时抵消由第一延迟模块的延时,从而实现两CPU发送至比较模块14输入侧的两路输入数据属于同一时间片的效果。

但是,完全由传输通道抵消第一延时模块13的延时成本过于高昂,通常不使用这种方案。

其二,利用软件比较方案实施比较模块14;也即,利用功能更强的比较模块14实现不局限于同一时刻下的数据比较。通过单片机以及相应存储单元实现更强功能的比较模块14,比较模块14可以分时获取并存储不同CPU的输出数据,并在获取到两CPU对应于同一时间片的输出数据之后,再对同一时间片的两组输出数据进行比较。

同样的,这种方案存在如上所述的由软件方式实现比较模块14所存在的一些问题,例如稳定性差、实施难度与成本高等。

进一步的,对于第一延时模块13和第二延时模块15的延时时长,上述实施例也未作严格限制。第一延时模块13设置的目的是为了实现第一CPU11和第二CPU12对总线输入端发送的数据的异步处理,所以第一延时模块13的延时时长应根据数据异步处理需要确定。同理,第二延时模块15设置的目的主要是用于抵消由第一延时模块13带来的比较模块14输入侧接收到的数据不同步的问题,所以第二延时模块15的延时时长则与第一延时模块13的延时时长有关。

对于第一延时模块13延时时长的设置,本实施例提供一种可能的实施方案:

第一延时模块13的延时时长为二分之一个时钟周期的整数倍。

容易知道的是,诸如电压短暂下降或时钟信号的故障等共因错误所带来的数据变化,通常发生在信号的跳变沿处,也即发生在时钟信号的半个周期处。因此,通过本实施例对第一延时模块13延时时长的设置,可以更好地感知到由共因错误带来的输入数据变化,从而更准确、可靠地识别出共因错误导致的CPU错误。

同理,对于第二延时模块15的延时时长,若在不存在其他因素(如数据传输过程中的自然延时)带来的数据时延这一理想条件下,本实施例提供一种相对应的实施方案:

第一延时模块13和第二延时模块15的延时时长相等。

通过本实施例所提供的延时时长设置方案,保证比较模块14输入端侧接收到的两个CPU的输出数据属于同一时间片,进而保证对CPU错误识别的准确性。

另一方面,上述实施例中并未严格限制第一延时模块13和第二延时模块15的设置位置;可以是第一延时模块13设置于第一CPU11的输入端处、第二延时模块15设置于第二CPU12的输出端与比较模块14之间;还可以是第一延时模块13设置于第二CPU12的输入端处、第二延时模块15设置于第一CPU11的输出端与比较模块14之间。无论是上述两种方案中的哪一种,都可以实现上述所述的对系统中共因错误所导致CPU错误的识别。

但是,针对第一延时模块13和第二延时模块15在实际应用中的具体设置位置,本实施例也提供一种优选的实施方案,如图2所示:

第一CPU11的输出端与总线输出端直接连接,也即,以第一CPU11作为系统的主CPU。

相应的,第一延时模块13设置于第二CPU12的输入端处,第二延时模块15设置于第一CPU11的输出端与比较模块14的输入端之间。

由图2可以看出,作为主CPU的第一CPU11,在系统的总线输入端和总线输出端之间的通路上未设置任何延时模块,系统由总线输入端发送给主CPU的待处理数据可以在不经任何延时的情况下,最快地得到处理并通过总线输出端返回,不影响如微控制器、数字信号处理器(Digital Signal Process,DSP)、服务器等电子设备或系统的正常使用。

综上所述,本实施例提供了一种CPU错误检测装置,对传统的双CPU结构识别CPU错误的方案做出进一步的改进:通过在两CPU其一输入端处设置第一延时模块13,使两CPU对于总线输入端发送的数据实现异步的处理;当系统中出现共因错误导致的故障时,共因错误即可能会在两CPU处带来不同的影响;未经延时的CPU直接对输入数据进行处理,不受共因错误影响,而经过延时的CPU接收到的输入数据收到共因错误影响而出现变动;进一步的,两CPU对不同数据进行处理后得到的结果也不一样,可由比较模块14通过比较两CPU的输出数据识别到。由此,本实施例所提供的方案实现了对共因错误导致的CPU错误的识别,扩充了传统CPU错误识别方案的识别范围,提高CPU错误检测的效果。

另一方面,上述实施例所提供的一种CPU错误检测装置虽然支持对由共因错误所导致的CPU错误的识别,但其无法判别识别到的CPU错误具体是因为共因错误导致的、还是由某一CPU的偶发问题所导致的。

考虑到在实际运维工作中,实现对CPU错误类型的定位有助于显著提高CPU错误的解决效率,所以本实施例也相应的提供一种可能的实施方案,如图3所示,上述的CPU错误检测装置还包括:第三CPU16和第三延时模块17;

第三CPU16的输入端与总线输入端连接,第三CPU16的输出端通过第三延时模块17与比较模块14的输入端连接。

需要说明的是,在图3所示的一种可能的应用场景中,还是以第一CPU11作为系统中的主CPU,第二CPU12和第三CPU16均作为第一CPU11的检查器CPU。其中,第二CPU12的输入端设置有第二延时模块15,用于实现与第一CPU11在处理相同数据上的异步,从而如上述实施例所述的,实现对共因错误导致的CPU错误进行识别。而第三CPU16则与第一CPU11相同,均在输出端与比较模块14之间设置延时模块。

基于上述设置,存在以下几种CPU错误检测场景:

1、当各CPU均正常而系统中出现共因错误时;

输入数据未经延时的第一CPU11和第三CPU16接收到正确的输入数据,处理后得到正确的输出数据,延时后发送到比较模块14;输入数据被延时的第二CPU12接收到的输入数据被共因错误影响,即第二CPU12接收到错误的输入数据;相应的,对错误的输入数据处理后得到的输出数据也为错误的,并被发送至比较模块14中进行比较;此时,比较模块14经比较后发现,第一CPU11与第三CPU16的输出数据相同、且与第二CPU12的输出数据不同,由此可以判断出,当前系统中出现了共因错误。

2、系统中未出现共因错误,而某一CPU出现异常;

此应用场景下,输入至各CPU中的输入数据均为正确的输入数据;经不同CPU的处理后,正常的CPU得到正常的输出数据,异常的CPU得到异常的输出数据;经比较模块14对各CPU的输出数据进行比较好,即可发现唯一一个CPU的输出数据与另外两个CPU不同,由此确定是该CPU出现错误。

需要说明的是,本实施例对于CPU错误是由于系统共因错误所导致的还是第二CPU12异常所导致的原因无法进行区分。但是考虑到第一CPU11才是系统中的主CPU,并且本方案相比于传统方案无法识别两CPU中具体是某一CPU出现异常且无法识别共因错误、以及相比于上述实施例中改进后可识别共因错误但无法识别某一CPU异常的方案,要有更高的CPU错误检测精度。

进一步的,基于上述实施例中的第三延时模块17的延时设置,本实施例也提供一种相适应的实施方案:第一延时模块13、第二延时模块15和第三延时模块17的延时时长相等。

本实施例是基于上述实施例提供的双CPU架构CPU错误检测装置的基础上,所做出的进一步改进,通过引入第三CPU16,实现对CPU错误的定位。具体可以区分当前出现的CPU错误是否由系统共因错误导致或是否由主CPU异常导致,从而更好地适应于实际生产生活需要,运维人员在对CPU错误进行处理时,可以根据定位得到的错误原因,针对性地采取解决措施,更及时、快捷地实现系统CPU错误的处理。

另一方面,对于上述经由比较模块14比较不同CPU输出数据的异同以判断是否出现CPU错误的方案,本实施例还提供一种优选的实施方案,上述的CPU错误检测装置还包括:告警模块;

告警模块与比较模块14连接,用于根据比较模块14输出的比较结果,判断是否执行告警动作。

需要说明的是,本实施例并未限制告警模块的具体实施方式,告警模块可以为直接发出或显示告警信息的硬件模块,例如发出光信号提醒相关人员的发光二极管(Lighting Emitting Diode,LED)、显示屏;发出声音信号的蜂鸣器、扬声器;发出振动信号的偏心马达等等。

进一步的,告警模块还可以是与外部设备连接的通信模块,用于将比较模块14的比较结果发送至所连接的外部设备,从而变相实现了CPU错误的告警。

此外,本实施例也未对告警信息的具体表现形式进行限制,告警信息可以是以文字、图像、表格等形式显示在显示屏上,也可以是通过邮件、短信、推送等方式发送到相关人员所持有的移动设备上,从而实现对CPU错误的及时告警。

另一方面,本实施例还提供一种可能的实施方案,上述的CPU错误检测装置还包括:存储模块;

存储模块与比较模块14连接,用于保存比较模块14输出的比较结果。

所述存储模块可以为系统中的存储介质,本实施例并不限制于所使用的存储介质的种类,可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储数据的介质。

同时,上述的存储模块可以采用支持热插拔的存储介质,如U盘等,方便相关人员随时调取存储模块中存储的比较结果,用以辅助CPU错误分析。

在上述实施例中,对于一种CPU错误检测装置进行了详细描述,本申请还提供一种服务器对应的实施例:一种服务器,包括上述任一实施例所述的CPU错误检测装置,以实现与上述实施例中CPU错误检测装置相同的技术效果。

由于服务器部分的实施例与CPU错误检测装置部分的实施例相互对应,因此服务器部分的实施例请参见CPU错误检测装置部分的实施例的描述,这里暂不赘述。

以上对本申请所提供的一种CPU错误检测装置及服务器进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

相关技术
  • 一种基于监督学习的服务器错误诊断方法和装置
  • 一种病毒程序检测方法、装置及检测服务器
  • 一种异常检测方法、装置、服务器及存储介质
  • 一种干扰检测方法、装置、服务器及存储介质
  • 一种服务器检测方法、装置及系统
  • 一种服务器及其CPU IERR错误提示系统
  • 一种检测前端网页代码中错误的方法、检测设备及服务器
技术分类

06120116514820