一种多中央处理单元cpu心跳检测系统及方法

文档序号:6584704阅读:227来源:国知局
专利名称:一种多中央处理单元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 在接收到该报文后,还需要增加特定的软件判断环节来识别该报文,从而完成对心跳的检 测,也就增加了软件设计的工作量。最后,特定的硬件接口一般为下一代周边元件扩展接口(PCIE)或以太网接口,这 两种硬件接口在中高端CPU系统中是存在的,但是在一些低端的CPU系统中可能是不存在 的,也就使得现有的心跳检测方法具有一定的局限性。

发明内容
有鉴于此,本发明的主要目的在于提供一种多CPU心跳检测系统,不仅能够实现 对多CPU系统进行心跳检测,而且能够降低硬件成本和软件工作量,具有很强的通用性。本发明的另一个目的在于提供一种多CPU心跳检测方法,不仅能够实现对多CPU 系统进行心跳检测,而且能够降低硬件成本和软件工作量,具有很强的通用性。为了达到上述目的,本发明提出的技术方案为一种多CPU心跳检测系统,该系统包括一个以上的CPU和可编程逻辑器件(PLD), 其中,
所述一个以上的CPU,用于将作为心跳的脉冲信号发送给PLD ;所述PLD,用于接收每一个CPU发送的脉冲信号,根据每一个CPU发送的脉冲信号 检测所述每一个CPU的工作状态,得到代表每一个CPU的工作状态的高低电平信号,将所有 高低电平信号进行逻辑或(OR)或者与(AND)操作后,再将所述逻辑OR或者AND操作后的 结果发送给每一个CPU。所述PLD包括脉冲检测电路,用于接收每一个CPU发送的脉冲信号,根据每一个CPU发送的脉冲 信号检测所述每一个CPU的工作状态,得到代表每一个CPU的工作状态的高低电平信号;逻辑OR单元,用于将所有高低电平信号进行逻辑OR或者AND操作后,再将所述逻 辑OR或者AND操作后的结果发送给每一个CPU。所述PLD还包括寄存器,用于接收并保存所述脉冲检测电路检测得到的代表每一个CPU的工作状 态的高低电平信号;所述CPU进一步用于获取所述寄存器中保存的所有的高低电平信号。所述脉冲信号是通过CPU的GPIO管脚发送给PLD的。所述逻辑OR或者AND操作后的结果是通过CPU的INT管脚发送给CPU的。一种多CPU心跳检测方法,基于包括一个以上的CPU和可编程逻辑器件PLD的多 CPU心跳检测方法,当对所述系统进行心跳检测时,该方法包括系统中的每一个CPU将作为心跳的脉冲信号发送给PLD ;PLD接收每一个CPU发送的脉冲信号,根据每一个CPU发送的脉冲信号检测所述 每一个CPU的工作状态,得到代表每一个CPU的工作状态的高低电平信号,将所有高低电平 信号进行逻辑OR或者AND操作后,再将所述逻辑OR或者AND操作后的结果发送给每一个 CPU。所述PLD包括脉冲检测电路和逻辑OR或者AND单元,则所述每一个CPU将作为心 跳的脉冲信号发送给PLD之后该方法具体包括所述脉冲检测电路接收每一个CPU发送的脉冲信号,根据每一个CPU发送的脉冲 信号检测所述每一个CPU的工作状态,得到代表每一个CPU的的工作状态的高低电平信号, 并将所述得到的所有高低电平信号发送到所述逻辑OR或者AND单元中;所述逻辑OR或者AND单元接收所述所有高低电平信号,对接收到的所有高低电 平信号进行逻辑OR或者AND操作,并将所述逻辑OR或者AND操作后的结果发送给每一个 CPU。所述PLD还包括寄存器,所述得到代表每一个CPU的工作状态的高低电平信号之 后该方法还包括所述脉冲检测电路将所述得到的代表每一个CPU的工作状态的高低电平 信号发送到所述寄存器,所述寄存器接收并保存所述高低电平信号;所述将所述逻辑OR或者AND操作后的结果发送给每一个CPU之后该方法进一步 包括所述每一个CPU读取所述寄存器中保存的所有的高低电平信号。所述脉冲信号是通过CPU的GPIO管脚发送给PLD的。所述逻辑OR或者AND操作后的结果是通过CPU的INT管脚发送给CPU的。综上所述,本发明提出的多CPU心跳检测系统及方法具有以下优点
首先,通过多CPU系统中固有的PLD来实现对心跳进行检测,不仅降低了成本,而 且使得系统具有很强的扩展性;其次,由于是通过PLD来进行心跳检测,从而使得CPU只需产生各自的心跳即可, 也就降低了软件工作量;再次,由于本发明中采用的设备总线(Device Bus)以及通用输入输出接口 (GPIO)是多CPU系统中普遍具有的外部接口,因此具有很强的通用性。


图1为本发明多CPU心跳检测系统的结构示意图。图2为本实施例所采用的PLD的结构示意图。图3为本实施例所采用的脉冲检测电路的结构示意图。
具体实施例方式为了解决现有技术中存在的问题,本发明提出了一种新的对多CPU系统进行心跳 检测的方法,即通过多CPU系统中固有的PLD以及外部接口 Device Bus和GPIO来实现对 多CPU系统进行心跳检测的。采用本方法在进行心跳检测时,系统中的每个CPU只需将代 表各自心跳的脉冲信号通过GPIO发送给PLD,由PLD来完成对脉冲信号也即心跳的检测,并 进一步地通过Device Bus获取出现故障的CPU。因此,该方法不仅能完成对心跳的检测,而 且还降低了硬件成本和软件设计工作量。基于上述介绍,本发明所述方案的具体实现包括一个以上的CPU,用于将作为心跳的脉冲信号发送给PLD ;所述PLD,用于接收每一个CPU发送的脉冲信号,根据每一个CPU发送的脉冲信号 检测所述每一个CPU的工作状态,得到代表每一个CPU的工作状态的高低电平信号,将所有 高低电平信号进行逻辑OR或者AND操作后,再将所述逻辑OR或者AND操作后的结果发送 给每一个CPU。为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对 本发明作进一步地详细描述。图1即为本发明所采用的多CPU心跳检测系统的结构示意图。如图1所示,该系 统包括CPU1、CPU2、CPU3和CPUi等多个CPU,以及PLD。各个CPU与PLD之间的连接关系以 及信息交互过程是完全一致的,在本实施例中,以多CPU系统中的第i个CPU CPUi为例来 说明具体的心跳检测过程。CPUi的某个GPIO管脚与PLD的某个输入输出(I/O)管脚相连,CPUi的中断信号 (INT)管脚与PLD的另一个I/O管脚相连,同时,CPUi还通过Device Bus与PLD相连。在多CPU系统开始工作时,首先,CPUi产生固定频率的脉冲信号,该脉冲信号被作 为CPUi的心跳HEARTi并通过与PLD的I/O管脚相连的GPIO管脚输入到PLD中;进一步地, PLD会对HEARTi进行检测,PLD对HEARTi进行检测实际上就是根据CPUi发送的脉冲信号 检测所述CPUi的工作状态,得到代表CPUi的工作状态的高低电平信号,进一步地,PLD会 将所有CPU的高低电平信号进行逻辑OR或者AND操作,并将所述逻辑OR或者AND操作后 的结果通过与PLD相连的INT管脚输入到多CPU系统中的每一个CPU。
需要说明的是,在本实施例中,所述脉冲信号的频率大小并没有限制,但实际在实 现时一般以不超过IKHz的低频信号为宜。图2即为本实施例所采用的对心跳进行检测的PLD的结构示意图。如图2所示, 该PLD包括脉冲检测电路1、脉冲检测电路2、脉冲检测电路3和脉冲检测电路i等多个脉 冲检测电路,逻辑OR单元,以及寄存器。对于CPUi来说,HEARTi被输入到PLD后,由PLD中的脉冲检测电路i对HEARTi进 行接收,同时,脉冲检测电路i根据所述HEARTi检测所述CPUi的工作状态,得到代表CPUi 的工作状态的高低电平信号。这里脉冲检测电路i根据所述HEARTi检测所述CPUi的工作 状态实际上是根据所述CPUi发送的脉冲信号来进行检测的。当脉冲检测电路i对其对应的CPUi检测完毕后,CPUi产生的高低电平信号分别被 输入到逻辑OR或者AND单元和寄存器中的对应CPUi的相应位中。同样地,其它CPU产生 的高低电平信号也被输入到所述逻辑OR或者AND单元和寄存器的对应CPU的相应位中,由 逻辑OR或者AND单元对输入的所有高低电平信号进行逻辑OR或者AND操作,并将逻辑OR 或者AND操作后的最终结果作为INT信号通过PLD中的I/O管脚输出给多CPU系统中的每 个CPU,寄存器则负责接收并保存每一个CPU产生的高低电平信号。当多CPU系统出现故障时,也即说明系统中的某个或多个CPU出现故障,此时,每 一个CPU都会收到中断信号,之后,每一个CPU都会在各自的中断服务程序中通过Device Bus读取PLD中的寄存器以获取寄存器中保存的每一个CPU的工作状态。需要说明的是,在本实施例中,在CPUi工作状态正常的情况下,如果对应的脉冲 检测电路i输出的代表CPUi的工作状态为0、即低电平信号,则应采用逻辑OR操作;对应的 脉冲检测电路i输出的代表CPUi的工作状态为1、即高电平信号,则应采用逻辑AND操作。还需要说明的是,在本实施例中,当多CPU系统工作正常时,是不需要执行上述 CPU读取寄存器的过程的。图3给出了本实施例所采用的脉冲检测电路的结构示意图。如图3所示,在本实 施例中,脉冲检测电路采用了计数器的实现方式。当采用计数器i对HEARTi进行检测时, HEARTi作为计数器i的清零信号CLR被输入到计数器i中,同时,还需将PLD本身的时钟信 号或者是外部输入的时钟信号作为计数器i的时钟CLK。当HEARTi的心跳周期超过了计数 器i的溢出时间时,计数器i会输出高电平,且该高电平信号通过计数器i的OVER管脚输 出到PLD中的OR单元中。由于所有CPU都会通过各自对应的计数器产生一个代表各自工 作状态的高低电平信号,因此,只要有一个CPU的心跳周期超过了计数器的溢出时间,也即 对应的CPU出现故障,则多CPU系统中的各个CPU的INT管脚都会收到中断信号,从而停止 各CPU正常的工作状态。在本实施例中,由于在CPU工作正常的情况下,计数器输出的代表CPU工作状态的 是低电平信号,因此,当脉冲检测电路采用计数器来实现时,应采用逻辑OR操作;或者,在 计数器中采用非操作后,亦可采用逻辑AND操作,实际中以不影响本发明实施例的实现为 准。需要说明的是,在本实施例中,每个CPU可以采用不同最大计数值的计数器对各 自产生的心跳进行检测,只要每个CPU产生的心跳周期不超过其对应的计数器的溢出时间 即说明多CPU系统工作正常。
还需说明的是,在本实施例中,也可采用其它的脉冲检测电路来实现对CPU产生 的心跳的检测过程,还可以一部分CPU采用计数器来实现心跳检测,其它CPU采用其它的脉 冲检测电路来实现心跳检测,实际中以不影响本发明实施例的实现为准。此外,在本实施例中,作为多CPU系统中的每个CPU的心跳的脉冲信号的频率可以 是相同的,也可以是不同的,只要能正确被PLD检测即可。至此,即完成了本发明多CPU心跳检测系统的整个心跳检测过程。本实施例所采用的PLD可以为复杂可编程逻辑器件(CPLD)或现场可编程门阵列 (FPGA),还可以为一块专门的CPU,或者是分离逻辑元件,实际中以不影响本发明实施例的 实现为准。总之,本发明所采用的多CPU心跳检测系统及方法,是通过多CPU系统中固有的 PLD来实现对心跳进行检测的,不仅降低了成本,而且使得系统具有很强的扩展性;其次, 由于是通过PLD来进行心跳检测,从而使得CPU只需将各自的心跳输入到PLD中即可,也就 降低了软件工作量;再次,由于本发明中采用的Device Bus以及GPIO是多CPU系统中普遍 具有的外部接口,因此具有很强的通用性。综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。 凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的 保护范围之内。
权利要求
1.一种多中央处理单元CPU心跳检测系统,该系统包括一个以上的CPU和可编程逻辑 器件PLD,其特征在于,所述一个以上的CPU,用于将作为心跳的脉冲信号发送给PLD ;所述PLD,用于接收每一个CPU发送的脉冲信号,根据每一个CPU发送的脉冲信号检测 所述每一个CPU的工作状态,得到代表每一个CPU的工作状态的高低电平信号,将所有高低 电平信号进行逻辑或OR或者与AND操作后,再将所述逻辑OR或者AND操作后的结果发送 给每一个CPU。
2.如权利要求1所述的系统,其特征在于,所述PLD包括脉冲检测电路,用于接收每一个CPU发送的脉冲信号,根据每一个CPU发送的脉冲信号 检测所述每一个CPU的工作状态,得到代表每一个CPU的工作状态的高低电平信号;逻辑OR单元,用于将所有高低电平信号进行逻辑OR或者AND操作后,再将所述逻辑OR 或者AND操作后的结果发送给每一个CPU。
3.如权利要求2所述的系统,其特征在于,所述PLD还包括寄存器,用于接收并保存所述脉冲检测电路检测得到的代表每一个CPU的工作状态的 高低电平信号;所述CPU进一步用于获取所述寄存器中保存的所有的高低电平信号。
4.如权利要求1至3中任一权利要求所述的系统,其特征在于,所述脉冲信号是通过 CPU的GPIO管脚发送给PLD的。
5.如权利要求1或2所述的系统,其特征在于,所述逻辑OR或者AND操作后的结果是 通过CPU的INT管脚发送给CPU的。
6.一种多中央处理单元CPU心跳检测方法,其特征在于,该方法用于如权利要求1所 述的系统,该系统包括一个以上的CPU和可编程逻辑器件PLD,当对所述系统进行心跳检测 时,该方法包括系统中的每一个CPU将作为心跳的脉冲信号发送给PLD ;所述PLD接收每一个CPU发送的脉冲信号,根据每一个CPU发送的脉冲信号检测所述 每一个CPU的工作状态,得到代表每一个CPU的工作状态的高低电平信号,将所有高低电平 信号进行逻辑或OR或者与AND操作后,再将所述逻辑OR或者AND操作后的结果发送给每 一个 CPU。
7.如权利要求6所述的方法,其特征在于,所述PLD包括脉冲检测电路和逻辑OR或者 AND单元,则所述每一个CPU将作为心跳的脉冲信号发送给PLD之后该方法具体包括所述脉冲检测电路接收每一个CPU发送的脉冲信号,根据每一个CPU发送的脉冲信号 检测所述每一个CPU的工作状态,得到代表每一个CPU的工作状态的高低电平信号,并将所 述得到的所有高低电平信号发送到所述逻辑OR或者AND单元中;所述逻辑OR或者AND单元接收所述所有高低电平信号,对接收到的所有高低电平信号 进行逻辑OR或者AND操作,并将所述逻辑OR或者AND操作后的结果发送给每一个CPU。
8.如权利要求7所述的方法,其特征在于,所述PLD还包括寄存器,所述得到代表每一个CPU的工作状态的高低电平信号之后该方法还包括所述脉冲检 测电路将所述得到的代表每一个CPU的工作状态的高低电平信号发送到所述寄存器,所述 寄存器接收并保存所述高低电平信号;所述将所述逻辑OR或者AND操作后的结果发送给每一个CPU之后该方法进一步包括 所述每一个CPU读取所述寄存器中保存的所有的高低电平信号。
9.如权利要求6至8任一权利要求所述的方法,其特征在于,所述脉冲信号是通过CPU 的GPIO管脚发送给PLD的。
10.如权利要求6至8中任一权利要求所述的方法,其特征在于,所述逻辑OR或者AND 操作后的结果是通过CPU的INT管脚发送给CPU的。
全文摘要
本发明公开了一种多中央处理单元CPU心跳检测系统,该系统包括一个以上的CPU和可编程逻辑器件PLD,其中,所述一个以上的CPU,用于将作为心跳的脉冲信号发送给PLD;所述PLD,用于接收每一个CPU发送的脉冲信号,根据每一个CPU发送的脉冲信号检测所述每一个CPU的工作状态,得到代表每一个CPU的工作状态的高低电平信号,将所有高低电平信号进行逻辑或OR或者与AND操作后,再将所述逻辑OR或者AND操作后的结果发送给每一个CPU。本发明同时公开了一种多CPU心跳检测方法。应用本发明所述的系统和方法,不仅能够实现对多CPU系统进行心跳检测,而且能够降低硬件成本和软件工作量,具有很强的通用性。
文档编号G06F11/267GK102063356SQ20091023805
公开日2011年5月18日 申请日期2009年11月18日 优先权日2009年11月18日
发明者孙一飞, 王岩松 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1