CN101309184A - 检测微引擎故障的方法及装置 - Google Patents
检测微引擎故障的方法及装置 Download PDFInfo
- Publication number
- CN101309184A CN101309184A CNA2008101132483A CN200810113248A CN101309184A CN 101309184 A CN101309184 A CN 101309184A CN A2008101132483 A CNA2008101132483 A CN A2008101132483A CN 200810113248 A CN200810113248 A CN 200810113248A CN 101309184 A CN101309184 A CN 101309184A
- Authority
- CN
- China
- Prior art keywords
- thread
- micro
- micro engine
- engine
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例涉及一种检测微引擎故障的方法及装置,其中检测微引擎故障的方法包括:在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值;比较至少两次获取的以上各值是否均相等,并根据比较结果确定网络处理芯片中是否有微引擎出现故障。本发明实施例能够及时发现并恢复网络处理芯片中的微引擎故障,并且通过将线程计数器与控制状态寄存器的信息相结合的方式来判定微引擎的状态,可以大幅减少用代码实现的计数器的添加,进而能够提高微引擎的效率。
Description
技术领域
本发明涉及通信网络领域,尤其涉及一种检测微引擎故障的方法及装置。
背景技术
互联网交换处理器(Internet eXchange Processor,简称IXP)是指实现了互联网交换架构(Internet eXchange Architecture,简称IXA)的网络处理芯片,IXP网络处理器典型地包括一个Xscale核、多个微引擎(MicroEngine,简称微引擎)、存储器、若干硬件功能单元、各种与外部连接的接口、内部总线等。微引擎是网络处理器的核心部件,也是网络处理器取得线速处理性能的关键,在其它功能单元的支持下执行快路径上的包处理,是一种包处理器。例如,英特尔(Intel)推出的多种IXP网络处理芯片都包含多个微引擎(IXP2400包含8个,IXP28X0包含16个)。微引擎是一种只提供少量基本指令的低级设备,微引擎构成了快路径处理的基础,主要用来处理I/O设备与存储器之间的低层数据传输以及基本包处理任务。
微引擎通常具有如下用途:
●从物理层硬件接收包
●校验和检查
●包头处理和分类
●包缓存
●查表和转发
●包头修改
●校验和计算
●从物理层硬件发送包
微引擎硬件提供一种机制来改善性能,即支持多个执行线程或上下文。每个微引擎有多达8个线程,更重要的是,由于硬件为每一个线程维护不同的状态信息(如一个程序计数器和一组信号事件,该程序计数器可以反映当前线程是否处于工作状态),硬件可以在线程之间迅速切换而不需要软件的支持。因此,和传统中央处理单元不同,微引擎的上下文切换为零开销或只要求最多一个时钟周期的开销。
从概念上说,微引擎线程就像传统操作系统中的线程一样操作,即多个线程同时处于就绪状态,一旦当前线程阻塞或自愿放弃处理器,一个新的线程马上开始运行。尤其是,存储器访问可能导致线程阻塞,当一个线程等待访问内存时,微引擎执行另一个线程。例如,在某一时刻,微引擎遇到一个操作导致线程1阻塞。这时发生一个上下文切换,网络处理器转而执行一个当前就绪的线程-线程2。线程2执行到另一时刻时,处理器遇到一个操作导致线程2阻塞。这时只有线程3就绪,于是网络处理器执行线程3
线程的优点是很清楚的,处理器不需要停下来等待存储器访问或I/O,可以继续执行有用的工作。对于数据包处理来说,每个硬件线程可以被分配处理一个包。当处理一个包的线程等待从内存读数据时(如从包头中读一个域),处理另一个包的线程可以继续执行。因此,尽管只有一个中央处理单元,微引擎可以同时处理8个数据包而不会有长时间的空闲。
每个线程有以下四种状态,
(1)未激活状态(inactive):处于该状态的线程不执行任何操作。在有些应用中,当处理任务比较简单不需要微引擎中的全部8个线程进行工作时,可将部分线程设置为未激活状态。
(2)执行状态(executing):处于该状态的线程执行控制存储器中的程序。同一时刻,一个微引擎内部最多只能有一个线程处于该状态。在IXP2XXX中,线程切换完全是在软件控制下进行的,仅当处于执行状态的线程执行一条线程交换指令,转入休眠状态,主动交出微引擎控制权之后,另一个处于就绪状态的线程才能取得微引擎的控制权,转入执行状态。
(3)就绪状态(ready):处于该状态的线程已经具备继续执行数据处理任务的所有外部条件,等待获得微引擎的控制权。当处于执行状态的线程交出微引擎控制权后,微引擎对当前处于就绪状态的所有线程进行仲裁判优,然后将微引擎控制权交给优先级最高的线程。
(4)休眠状态(sleep):处于该状态的线程等待某个外部事件的到来。
IXP2XXX芯片中没有硬件同步协调机制,而是采用一种称为事件信号(event signal)的软件机制来同步微引擎内部线程的操作与外部事件的完成。比如,当微引擎内部的线程0发送指令读取静态存储器中的数据时,在静态存储器控制器将数据写入指令规定的传输寄存器之前,线程0不能使用该传输寄存器中的数据;当数据读取操作完成后,静态存储器控制器向线程0发送指令规定的事件信号;线程0收到事件信号后,读取传输寄存器中的数据进行处理。
可以在指令中指定事件信号,令从属单元在完成指令规定的数据读/写操作后向微引擎发送该事件信号,以此来同步微引擎的内部操作与外部事件的完成。微引擎中的每个线程可以使用15个事件信号,这些事件信号可以将线程从休眠状态唤醒,转入就绪状态。每个线程有2个本地寄存器,分别用于记录需要等待的事件信号和已经到来的事件信号。事件信号的产生方式包括:数据被写入或读出传输寄存器、线程写特定的信号CSR、内部定时器触发。
当线程执行线程交换指令后,线程由执行状态转入休眠状态;当指令的事件信号到来后,线程又由休眠状态转为就绪状态。
网络处理器芯片作为高性能网络处理器,因其灵活的可编程性、架构合理、资源丰富、转发能力强等诸多优点,广泛应用于各种通讯设备,其中很多是接入路由器、核心路由器、基站等电信级设备。作为电信级设备,一个重要的指标就是高可靠性,许多电信运营商提出设备可靠性要达到99.99999%,即一年内设备出故障的时间总和不能超过5分钟。另外,高可靠性也是电信设备供应商追求的目标。以接入路由器为例,往往同时接入数万用户,一旦出故障将对用户产生重大影响。但任何一款芯片都有出现故障可能,若没有芯片故障检测、规避措施,由芯片故障引起的业务中断时间将不可预料,因此芯片故障快速检测、规避功能对于电信设备来说至关重要。
发明人在研究中发现,互联网交换处理器芯片的失效方式大多为微引擎故障,所以如何快速地检测到微引擎故障,是实现芯片故障快速检测的关键。
发明内容
本发明针对现有技术存在的问题,提供一种检测微引擎故障的方法及装置,能及时检测出网络处理芯片中微引擎的故障,从而提高网络处理芯片的故障检测能力,缩短由芯片故障引起的业务中断时间。
本发明实施例提供了一种检测微引擎故障的方法,包括:
在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值;
比较至少两次获取的微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值是否均相等;
如果相等,则确定该网络处理芯片中的微引擎出现故障。
本发明实施例还提供了一种检测微引擎故障的方法,包括:
在每至少一个数据获取周期获取转发微引擎组中的所有线程的线程计数器的值之和;
比较连续至少两次获取的转发微引擎组中的所有线程的线程计数器的值之和是否均相等;
如果相等,则确定该网络处理芯片中的微引擎出现故障。
本发明实施例还提供了一种检测微引擎故障的方法,包括:
在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值;
比较至少两次获取的微引擎的每个线程的线程计数器的值是否均相等;
如果相等,则确定该网络处理芯片的微引擎出现故障。
本发明实施例还提供了一种检测微引擎故障的装置,包括:
第一参数获取单元,用于在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值;
第一比较单元,用于比较至少两次获取的微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值是否均相等;
第一故障确定单元,根据所述第一比较单元的比较结果确定微引擎是否出现故障。
本发明实施例还提供了一种检测微引擎故障的装置,包括:
第二参数获取单元,用于在每至少一个数据获取周期获取转发微引擎组中的所有线程的线程计数器的值之和;
第二比较单元,用于比较至少两次获取的转发微引擎组中的所有线程的线程计数器的值之和是否均相等;
第二故障确定单元,用于根据所述第二比较单元的比较结果确定网络处理芯片中是否有微引擎发生故障。
本发明实施例还提供了一种检测微引擎故障的装置,包括:
第四参数获取单元,用于在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值;
第四比较单元,用于比较至少两次获取的微引擎的每个线程的线程计数器的值是否均相等;
第三故障确定单元,用于根据所述第四比较单元的比较结果确定网络处理芯片中是否有微引擎出现故障。
本发明实施例通过定时获取网络处理芯片中微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值,并比较至少两次获取的这些参数的值是否均相等,根据比较结果可以确定微引擎是否出现故障,通过将出现故障的微引擎用冗余微引擎代替可以迅速恢复网络处理芯片的故障,能够及时发现并恢复网络处理芯片故障,从而缩短由芯片故障引起的业务中断时间。
下面通过具体实施例并结合附图对本发明做进一步的详细描述。
附图说明
图1所示为本发明检测微引擎故障的方法实施例一流程图;
图2所示为本发明检测微引擎故障的方法实施例二流程图;
图3所示为本发明检测微引擎故障的方法实施例三流程图;
图4所示为本发明检测微引擎故障的方法实施例四流程图;
图5所示为本发明检测微引擎故障的方法实施例五流程图;
图6所示为本发明检测微引擎故障的装置实施例一结构示意图;
图7所示为本发明检测微引擎故障的装置实施例二结构示意图;
图8所示为本发明检测微引擎故障的装置实施例三结构示意图;
图9所示为本发明检测微引擎故障的装置实施例四结构示意图;
图10所示为本发明检测微引擎故障的装置实施例五结构示意图。
具体实施方式
网络处理芯片通常包含多个微引擎,这类芯片出现故障大多数情况是由于微引擎出现故障引起的。实际应用中,多个微引擎的功能可以根据具体需要进行设定,例如可以设定几个微引擎同时完成网络中第二层(数据链路层)和第三层(网络层)之间的数据转发,这几个微引擎组成一个转发微引擎组,各微引擎之间有数据传输;也可以设定某一微引擎只完成一个功能,与其余微引擎之间没有数据传输。其余没有设定具体执行功能的微引擎,就属于冗余微引擎。由于网络处理芯片中可以有冗余微引擎,这样当某一被设定了具体执行功能的微引擎出现故障时,就可以将该微引擎隔离,用冗余微引擎中的一个代替该故障微引擎,从而使该芯片恢复正常工作。
对于某些微引擎被设定为:一个微引擎完成一个功能,该微引擎与其余微引擎之间没有数据传输,并且该微引擎的各线程之间有事件信号传输的情况,可以采用如实施例一所述的方法检测出现故障的微引擎。如图1所示为本发明检测微引擎故障的方法实施例一流程图,包括:
框图101、在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值。
框图102、比较至少两次获取的微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值是否均相等;如果相等,则确定该网络处理芯片的微引擎出现故障。
其中,线程计数器(ACTIVE_CNT)(也叫看门狗计数器),是为每一微引擎的每一线程添加的一通过代码实现的计数器,该线程计数器用于检测该线程是否处于工作状态。如果该线程计数器(ACTIVE_CNT)的值有变化,说明目前该线程处于工作状态,如果该线程计数器的值长时间不变化,例如,在连续两次数据获取周期内都没有变化,则说明该线程工作出现故障。
指针,即微引擎的通用状态寄存器(Control and Status Registers,简称CSR)INDIRECT_CTX_STS的值,各线程的指针表示每个线程的程序当前执行的位置。
微引擎各线程的事件信号(SIGNAL),包括微引擎的通用状态寄存器INDIRECT_CTX_SIG_EVENTS的值和INDIRECT_CTX_WAKEUP_EVENTS的值,NDIRECT_CTX_SIG_EVENTS的值反映该微引擎的每个线程当前拥有的事件信号,INDIRECT_CTX_WAKEUP_EVENTS的值反映该微引擎的每个线程当前等待的事件信号。
微引擎当前活动的线程号(ACTIVE_CTX),即INDIRECT_CTX_STS最低三位的值,表示微引擎当前活动的线程号。
通常网络处理器芯片多个微引擎处理数据顺序为:由负责接收数据的微引擎(简称接收微引擎)接收待处理的数据,由负责处理数据的微引擎(简称处理微引擎)接收从接收微引擎发送过来的数据,然后处理微引擎将经过处理后的数据发送给发送微引擎,该发送微引擎用于发送数据。数据处理的顺序可以简单概括为:接收微引擎→处理微引擎→发送微引擎。如果发送微引擎出现故障,会导致接收微引擎和处理微引擎出现类似的失效状态,这样,先检测接收微引擎可能会导致误判断,即无法完成整个数据处理的流程。也就是说,沿着数据处理顺序,在后的微引擎如果出现故障则会导致在前的微引擎出现类似的失效状态。所以,较佳地,实施例一中检测各微引擎的顺序是与处理数据的顺序相反的,例如,先检测发送微引擎是否出现故障,再检测处理微引擎,最后检测接收微引擎。
框图101中,在每至少一个数据获取周期获取微引擎的每个线程的线程计数器(ACTIVE_CNT)的值以及微引擎的每个线程的事件信号(SIGNAL)的值,例如该数据获取周期可以为一秒钟获取一次。
在框图101中,在每至少一个数据获取周期还可以获取微引擎的每个线程的指针的值以及微引擎的当前活动的线程号(ACTIVE_CTX)的值。
然后比较连续至少两次获取的微引擎的每个线程的线程计数器(ACTIVE_CNT)的值、微引擎的每个线程的指针的值、微引擎的每个线程的事件信号(SIGNAL)的值以及微引擎的当前活动的线程号(ACTIVE_CTX)的值是否均相等,具体可以是,将第1数据获取周期获取的以上各值与第2数据获取周期获取的以上各值相比,如果比较结果相等,则确定网络处理芯片中的微引擎出现故障。
也可以比较连续至少两次获取的微引擎的每个线程的线程计数器(ACTIVE_CNT)的值、微引擎的每个线程的指针的值、微引擎的每个线程的事件信号(SIGNAL)的值以及微引擎的当前活动的线程号(ACTIVE_CTX)的值是否均相等,具体可以是,将第1数据获取周期获取的以上各值与第2数据获取周期获取的以上各值相比,第1数据获取周期获取的以上各值与第3数据获取周期获取的以上各值相比,如果比较结果均为相等,则确定该网络处理芯片中有微引擎出现故障;如果有一个比较结果为不相等,则确定网络处理芯片中没有微引擎出现故障。还可以是:将第1数据获取周期获取的以上各值与第2数据获取周期获取的以上各值相比,第2数据获取周期获取的以上各值与第3数据获取周期获取的以上各值相比,如果比较结果均为相等,则确定该网络处理芯片中有微引擎出现故障;如果有一个比较结果为不相等,则确定网络处理芯片中没有微引擎出现故障。比较连续至少三次获取的微引擎的每个线程的线程计数器(ACTIVE_CNT)的值、微引擎的每个线程的指针的值、微引擎的每个线程的事件信号(SIGNAL)的值以及微引擎的当前活动的线程号(ACTIVE_CTX)的值是否均相等的方法可以有多种,最终是要判定是否连续多次当前获取的以上各值均与之前的几个(例如两个)数据获取周期内获取的以上各值相等。
对于一微引擎,其各线程之间没有事件信号传输,这类微引擎的故障检测可以采用实施例二所述的方法。如图2所示为本发明检测微引擎故障的方法实施例二流程图,具体包括:
框图201、在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值。
框图202、比较连续至少两次获取的微引擎的每个线程的线程计数器的值是否均相等;如果相等,则确定该网络处理芯片中的微引擎出现故障。
对于这类各线程之间没有事件信号传输的微引擎,通过在每一数据获取周期获取每个微引擎的每个线程的线程计数器(ACTIVE_CNT)的值,例如一秒种获取一次,比较连续至少两次获取的微引擎的每个线程的线程计数器的值是否均相等,这样可以及时发现并恢复网络处理芯片的故障。
如对于某些微引擎被设定为:几个微引擎完成数据转发的工作,这几个微引擎组成一个转发微引擎组的情况,可以采用如实施例三所述的方法检测出出现故障的微引擎。如图3所示为本发明检测微引擎故障的方法实施例三流程图,具体包括:
框图301、在每至少一个数据获取周期获取转发微引擎组中的所有线程的线程计数器的值之和。
框图302、比较至少两次获取的转发微引擎组中的所有线程的线程计数器的值之和是否均相等;如果相等,则确定该网络处理芯片中的微引擎出现故障。
对于转发微引擎组中的各微引擎,设该转发微引擎组中有m个微引擎,每个微引擎有n个线程,则该转发微引擎组中共有m×n个线程,每个线程有一个线程计数器(ACTIVE_CNT),则该转发微引擎组中的所有线程的线程计数器(ACTIVE_CNT)的值之和即为m×n个线程计数器的值之和。在每一数据获取周期获取该转发微引擎组中所有线程的线程计数器(ACTIVE_CNT)的值之和,例如一秒钟获取一次,如果连续至少两次次获取的转发微引擎组中的所有线程的线程计数器的值之和均相等则判定该转发微引擎组中有微引擎发生故障。
通过实施例三所述的方法可以检测出转发微引擎组中有微引擎发生故障,如果要进一步检测出具体是哪一个微引擎发生故障,则需要用到实施例四所述的方法。如图4所示为本发明检测微引擎故障的方法实施例四流程图,具体包括:
框图401、在每至少一个数据获取周期获取转发微引擎组中的所有线程的线程计数器的值之和。
框图402、比较至少两次获取的转发微引擎组中的所有线程的线程计数器的值之和是否均相等;如果相等,则执行框图403;如果不相等,则确定该微引擎组中没有微引擎出现故障。
框图403、判断该转发微引擎组中的每一微引擎的每一线程等待的事件信号是否是该微引擎组中微引擎之间传递的事件信号;如果是,则确定该转发微引擎组中没有微引擎出现故障;如果不是,即如果某一微引擎的某一线程等待的事件信号不是该转发微引擎组中微引擎之间传递的事件信号,则执行框图404。
框图404、判断该线程拥有的事件信号是否包含该线程等待的事件信号;如果该线程拥有的事件信号包含该线程等待的事件信号,则判定该网络处理芯片没有出现故障;如果该线程拥有的事件信号不包含该线程等待的事件信号,则判定该网络处理芯片中的微引擎出现故障。
通过框图401到框图404,可以进一步检测出转发微引擎组中具体是哪一个微引擎出现了故障。例如,设转发微引擎组间传递的事件信号为A和B,如果某一微引擎的所有线程等待的事件信号都是A和/或B,则该微引擎工作正常。如果某一微引擎的某一线程等待的事件信号不是A,也不是B,也不是A和B,则再判定该线程拥有的事件信号中是否包含等待的事件信号。例如,如果该线程等待的事件信号是C,但是该线程拥有的事件信号中不包含C,则该线程所属的微引擎发生故障,产生这种情况的原因是:该微引擎收到了事件信号C,但是还未来得及将该事件信号C设置为该微引擎的该线程拥有的事件信号,该微引擎就出现故障,于是该线程拥有的事件信号中就不包括C。
如果发生故障的微引擎的各线程等待的事件信号正好是A和/或B,则通过实施例四所述的方法,无法检测出发生故障的微引擎,需要通过实施例五所述的方法来进一步检测出转发微引擎组中发生故障的微引擎。如图5所示为本发明检测微引擎故障的方法实施例五流程图,具体包括:
框图501、在每至少一个数据获取周期获取转发微引擎组中的所有线程的线程计数器的值之和。
框图502、比较至少两次获取的转发微引擎组中的所有线程的线程计数器的值之和是否均相等;如果相等,则执行框图503;如果不相等,则确定该转发微引擎组中没有微引擎出现故障。
框图503、判断该转发微引擎组中的每一微引擎的每一线程等待的事件信号是否是该微引擎组中微引擎之间传递的事件信号;如果是,则确定该网络处理芯片中没有微引擎出现故障;如果不是,即如果某一微引擎的某一线程等待的事件信号不是该转发微引擎组中微引擎之间传递的事件信号,则执行框图504。
框图504、判断该线程拥有的事件信号是否包含该线程等待的事件信号;如果该线程拥有的事件信号包含该线程等待的事件信号,则执行框图505;如果该线程拥有的事件信号不包含该线程等待的事件信号,则判定该网络处理芯片中有微引擎出现故障。
框图505、获取转发微引擎组中每一线程的同步信号计数器(SYN_SIG_CNT)的值;同步信号计数器(SYN_SIG_CNT)用于反映转发微引擎组中各线程之间同步事件信号的传递情况。
框图506、两两比较相邻的线程之间的同步信号计数器的值,并根据上述两两比较的结果确定出现故障的微引擎。
具体为:如果一个第一线程和与其相邻的一个第二线程的同步信号计数器(SYN_SIG_CNT)的值不相等,且该第一线程和第二线程属于同一微引擎,则判定该第一线程和第二线程所属的微引擎出现故障;如果一个第一线程和与其相邻的一个第二线程的同步信号计数器(SYN_SIG_CNT)的值不相等,且该第一线程和第二线程属于不同的微引擎,用一个冗余微引擎代替所述第二线程所属的微引擎,并记录所述第一线程所属的微引擎的编号;在后续的数据获取周期,两两比较相邻的线程之间的同步信号计数器(SYN_SIG_CNT)的值是否相等;如果与所述第一线程相邻的一个第三线程的同步信号计数器的值与所述第一线程不相等,则判定所述第一线程所属的微引擎出现故障,并将所述第一线程所述的微引擎用另一个冗余微引擎代替;如果两两比较相邻的线程之间的同步信号计数器的值,均相等,则用一个冗余微引擎代替第一个线程所属的微引擎,在后续的数据获取周期,如果两两比较相邻的线程之间的同步信号计数器的值的结果仍为均相等,则用一个冗余微引擎代替最后一个线程所属的微引擎。
下面以实例来解释实施例五的具体流程。
以Intel IXP2800\2805芯片为例,该芯片有16个微引擎,每个微引擎有8个线程,设编号为0、1、2、3、4的微引擎组成转发微引擎组,第0号微引擎的各线程的编号为00、01、02、03、04、05、06、07,第1号微引擎的各线程的编号为10、11、12、13、14、15、16、17,第2号、第3号和第4号微引擎的编号类同,线程编号的第一位为该线程所述的微引擎的编号,第二位为该线程在该微引擎中的排序。获取每一个线程的同步信号计数器(SYN_SIG_CNT)的值,两两比较相邻的线程之间的同步信号计数器(SYN_SIG_CNT)的值是否相等,即线程00和01比较,线程01和02比较,线程02和03比较……线程07和10比较(第0号微引擎的最后一个线程07与第1号微引擎的第一个线程10是相邻的,其余各微引擎之间的线程的同步信号计数器比较方法以此类推),线程10与12比较……,线程17与线程20比较,……,经过将相邻线程两两比较之后,如果某一线程的同步信号计数器(SYN_SIG_CNT)的值和与其相邻的线程不相等,且这两个线程属于同一微引擎,例如线程01的同步信号计数器(SYN_SIG_CNT)的值不等于线程02,则判定第0号微引擎出现故障。如果某一线程的同步信号计数器(SYN_SIG_CNT)的值和与其相邻的线程不相等,且这两个线程属于不同的微引擎,例如线程07的同步信号计数器(SYN_SIG_CNT)的值不等于线程10,则先隔离第1号微引擎,用冗余微引擎代替原第1号微引擎。在后续的数据获取周期(由于定时获取各线程的同步信号计数器的值,例如每隔一秒,后续的数据获取周期,即将第一号微引擎隔离后后续的获取各线程的同步信号计数器的值并检测芯片故障的时间),如果再次出现了连续至少三次获取的转发微引擎组中的所有线程的线程计数器的值之和均相等,且该转发微引擎组中的每一微引擎的每一线程等待的事件信号均是该微引擎组中微引擎之间传递的事件信号的情况,则继续两两比较相邻的线程的同步信号计数器(SYN_SIG_CNT)的值,如果再次检测到线程07的同步信号计数器(SYN_SIG_CNT)的值不等于与其相邻的新的微引擎的线程10new,则判定线程07所属的微引擎第0号微引擎出现故障,将第0号微引擎隔离,用其余的冗余微引擎代替第0号微引擎。如果两两比较相邻的线程之间的同步信号计数器(SYN_SIG_CNT)的值,均相等,则用其余冗余的微引擎代替第0号微引擎,因为通过框图501到504,已经可以知道转发微引擎组中有微引擎出现故障,但是根据两两比较相邻的线程之间的同步信号计数器(SYN_SIG_CNT)的值,不能找到出现故障的微引擎,则可以判断出现故障的微引擎应该是第0号微引擎和第4号微引擎,可以先用冗余的微引擎代替第0号微引擎。如果在在后续的数据获取周期,再次发现了转发微引擎组中有微引擎出现故障,但是两两比较相邻的线程之间的同步信号计数器(SYN_SIG_CNT)的值,均相等,这时应该将第4号微引擎用冗余的微引擎代替。
本发明上述各实施例,通过定时获取网络处理芯片中微引擎的每个线程的线程计数器的值、微引擎的每个线程的指针的值、微引擎的每个线程的事件信号的值以及微引擎的当前活动的线程号的值、转发微引擎组中的所有线程的线程计数器的值之和、以及线程的同步信号计数器的值,并比较这些参数的值是否与上一次相等,根据比较结果可以确定哪些微引擎出现故障,通过将出现故障的微引擎用冗余微引擎代替可以迅速恢复网络处理芯片的故障,能够及时发现并恢复网络处理芯片故障,并且通过将线程计数器与控制状态寄存器的信息相结合的方式来判定微引擎的状态,可以大幅减少用代码实现的计数器的添加,进而能够提高微引擎的效率。
本发明实施例还提供了网络处理芯片故障检测装置。如图6所示为本发明网络处理芯片故障处理装置实施例一结构示意图,该实施例所述的装置是与如图1所示的方法实施例对应的,具体包括:第一参数获取单元11,用于在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值;第一比较单元12,用于比较至少两次获取的微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值是否均相等;第一故障确定单元13,根据所述第一比较单元12的比较结果确定微引擎故障。
如图7所示为本发明网络处理芯片故障处理装置实施例二结构示意图,该实施例所述的装置是与图3所示的方法对应的,具体包括:第二参数获取单元21,用于在每至少一个数据获取周期获取转发微引擎组中的所有线程的线程计数器的值之和;第二比较单元22,用于比较至少两次获取的转发微引擎组中的所有线程的线程计数器的值之和是否均相等;第二故障确定单元23,用于根据所述第二比较单元22的比较结果确定网络处理芯片中是否有微引擎发生故障。
如图8所示为本发明网络处理芯片故障处理装置实施例三结构示意图,图8所示装置与图4所示的方法对应,在图7的基础上网络处理芯片故障检测装置还可以包括:第一事件信号判断单元24,用于判断每个微引擎的各线程等待的事件信号是否是转发微引擎组中微引擎之间传递的事件信号;第二事件信号判断单元25,用于判断等待的事件信号不是转发微引擎组中微引擎之间传递的事件信号的线程,其拥有的事件信号是否是其等待的事件信号。
该第一事件信号判断单元24和第二事件信号判断单元25将判断结果发送给第二故障确定单元23,第二故障确定单元23根据第一事件信号判断单元24和第二事件信号判断单元25的判断结果,以及第二比较单元22的比较结果确定网络处理芯片中的微引擎的故障。
如图9所示为本发明网络处理芯片故障处理装置实施例四结构示意图,图9所示装置与图5所示的方法对应,在图8的基础上网络处理芯片故障检测装置还可以包括:第三参数获取单元26,用于获取转发微引擎组中每个线程的同步信号计数器的值;第三比较单元27,用于比较相邻的线程之间的同步信号计数器的值是否相等。
第三参数获取单元26将获取的同步信号计数器的值发送给第三比较单元27,第三比较单元27将比较结果发送给第二故障确定单元23,第二故障确定单元23根据第三比较单元27的比较结果、第一事件信号判断单元24和第二事件信号判断单元25的判断结果、以及第二比较单元22的比较结果确定网络处理芯片中的微引擎的故障。
如图10所示为本发明网络处理芯片故障处理装置实施例五结构示意图,图10所示装置与图2所示的方法对应,具体包括:第四参数获取单元31,用于按照与处理数据相反的顺序,在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值;第四比较单元32,用于比较连续至少两次获取的微引擎的每个线程的线程计数器的值是否均相等;第三故障确定单元33,用于根据所述第四比较单元32的比较结果确定网络处理芯片中是否有微引擎出现故障。
本发明实施例通过定时获取网络处理芯片中微引擎的每个线程的线程计数器的值、微引擎的每个线程的指针的值、微引擎的每个线程的事件信号的值以及微引擎的当前活动的线程号的值、转发微引擎组中的所有线程的线程计数器的值之和以及线程的同步信号计数器的值,并比较连续至少两次获取的这些参数的值是否均相等,根据比较结果可以确定哪些微引擎出现故障,通过将出现故障的微引擎用冗余微引擎代替可以迅速恢复网络处理芯片的故障,能够及时发现并恢复网络处理芯片故障,从而可以缩短由于芯片故障导致的业务中断时间,并且通过将线程计数器与控制状态寄存器的信息相结合的方式来判定微引擎的状态,可以大幅减少用代码实现的计数器的添加,进而能够提高微引擎的效率。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (15)
1、一种检测微引擎故障的方法,其特征在于,包括:
在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值;
比较至少两次获取的微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值是否均相等;
如果相等,则确定该网络处理芯片中的微引擎出现故障。
2、根据权利要求1所述的检测微引擎故障的方法,其特征在于,还包括:
在每至少一个数据获取周期获取微引擎的每个线程的指针的值,以及微引擎的当前活动的线程号的值。
3、根据权利要求2所述的检测微引擎故障的方法,其特征在于,所述比较至少两次获取的微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值是否均相等具体为:
比较连续至少两次获取的微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值是否均相等。
4、根据权利要求1所述的检测微引擎故障的方法,其特征在于,所述在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值具体为:
按照与处理数据相反的顺序,在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值。
5、一种检测微引擎故障的方法,其特征在于,包括:
在每至少一个数据获取周期获取转发微引擎组中的所有线程的线程计数器的值之和;
比较连续至少两次获取的转发微引擎组中的所有线程的线程计数器的值之和是否均相等;
如果相等,则确定该网络处理芯片中的微引擎出现故障。
6、根据权利要求5所述的检测微引擎故障的方法,其特征在于,如果连续至少两次获取的转发微引擎组中的所有线程的线程计数器的值之和均相等,则还包括:
判断所述转发微引擎组中的每一微引擎的每一线程等待的事件信号是否是所述转发微引擎组中微引擎之间传递的事件信号;
如果至少一个微引擎的至少一个线程等待的事件信号不是所述转发微引擎组中微引擎之间传递的事件信号,则判断所述线程拥有的事件信号是否包含所述线程等待的事件信号;
如果所述线程拥有的事件信号不包含所述线程等待的事件信号,则判定所述线程对应的微引擎出现故障。
7、根据权利要求6所述的检测微引擎故障的方法,其特征在于,还包括:
如果所述转发微引擎组中的每一微引擎的每一线程等待的事件信号均是所述转发微引擎组中微引擎之间传递的事件信号,则获取所述转发微引擎组中每一线程的同步信号计数器的值;
比较相邻的线程之间的同步信号计数器的值是否相等;
根据比较结果确定出现故障的微引擎。
8、根据权利要求7所述的检测微引擎故障的方法,其特征在于,所述根据比较结果确定出现故障的微引擎具体为:
如果一个第一线程和与其相邻的一个第二线程的同步信号计数器的值不相等,且所述第一线程和第二线程属于同一微引擎,则确定所述第一线程和第二线程所属的微引擎出现故障;
如果所述第一线程和与其相邻的第二线程的同步信号计数器的值不相等,且所述第一线程和第二线程属于不同的微引擎,则用一个冗余微引擎代替所述第二线程所属的微引擎,并记录所述第一线程所属的微引擎的编号;
在后续的数据获取周期,如果连续至少两次获取的所述转发微引擎组中的所有线程的线程计数器的值之和均相等,且所述转发微引擎组中的每一微引擎的每一线程等待的事件信号均是所述微引擎组中微引擎之间传递的事件信号,则继续比较相邻的线程之间的同步信号计数器的值是否相等;
如果与所述第一线程相邻的第三线程的同步信号计数器的值与所述第一线程不相等,则判定所述第一线程所属的微引擎出现故障。
9、根据权利要求8所述的检测微引擎故障的方法,其特征在于,还包括:
如果相邻的线程之间的同步信号计数器的值均相等,则将第一个线程所属的微引擎用一个冗余微引擎代替;
在后续的数据获取周期,如果连续至少两次获取的转发微引擎组中的所有线程的线程计数器的值之和均相等,且所述转发微引擎组中的每一微引擎的每一线程等待的事件信号均是所述微引擎组中微引擎之间传递的事件信号,且相邻的线程之间的同步信号计数器的值也均相等,则将最后一个线程所属的微引擎用个冗余微引擎代替。
10、一种检测微引擎故障的方法,其特征在于,包括:
在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值;
比较至少两次获取的微引擎的每个线程的线程计数器的值是否均相等;
如果相等,则确定该网络处理芯片的微引擎出现故障。
11、一种检测微引擎故障的装置,其特征在于,包括:
第一参数获取单元,用于在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值;
第一比较单元,用于比较至少两次获取的微引擎的每个线程的线程计数器的值以及微引擎的每个线程的事件信号的值是否均相等;
第一故障确定单元,根据所述第一比较单元的比较结果确定微引擎是否出现故障。
12、一种检测微引擎故障的装置,其特征在于,包括:
第二参数获取单元,用于在每至少一个数据获取周期获取转发微引擎组中的所有线程的线程计数器的值之和;
第二比较单元,用于比较至少两次获取的转发微引擎组中的所有线程的线程计数器的值之和是否均相等;
第二故障确定单元,用于根据所述第二比较单元的比较结果确定网络处理芯片中是否有微引擎发生故障。
13、根据权利要求12所述的检测微引擎故障的装置,其特征在于,还包括:
第一事件信号判断单元,用于判断每个微引擎的各线程等待的事件信号是否是转发微引擎组中微引擎之间传递的事件信号;
第二事件信号判断单元,用于判断等待的事件信号不是转发微引擎组中微引擎之间传递的事件信号的线程,其拥有的事件信号是否是其等待的事件信号。
14、根据权利要求13所述的检测微引擎故障的装置,其特征在于,还包括:
第三参数获取单元,用于获取转发微引擎组中每个线程的同步信号计数器的值;
第三比较单元,用于比较相邻的线程之间的同步信号计数器的值是否相等。
15、一种检测微引擎故障的装置,其特征在于,包括:
第四参数获取单元,用于在每至少一个数据获取周期获取微引擎的每个线程的线程计数器的值;
第四比较单元,用于比较至少两次获取的微引擎的每个线程的线程计数器的值是否均相等;
第三故障确定单元,用于根据所述第四比较单元的比较结果确定网络处理芯片中是否有微引擎出现故障。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101132483A CN101309184B (zh) | 2008-05-28 | 2008-05-28 | 检测微引擎故障的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101132483A CN101309184B (zh) | 2008-05-28 | 2008-05-28 | 检测微引擎故障的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101309184A true CN101309184A (zh) | 2008-11-19 |
CN101309184B CN101309184B (zh) | 2011-02-09 |
Family
ID=40125414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101132483A Expired - Fee Related CN101309184B (zh) | 2008-05-28 | 2008-05-28 | 检测微引擎故障的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101309184B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101976217A (zh) * | 2010-10-29 | 2011-02-16 | 中兴通讯股份有限公司 | 网络处理器异常检测方法及系统 |
CN102369517A (zh) * | 2011-09-01 | 2012-03-07 | 华为技术有限公司 | 一种芯片状态监控方法、装置以及芯片 |
WO2017032178A1 (zh) * | 2015-08-27 | 2017-03-02 | 深圳市中兴微电子技术有限公司 | 一种校验和的计算方法、网络处理器及计算机存储介质 |
CN108415823A (zh) * | 2017-04-10 | 2018-08-17 | 平安科技(深圳)有限公司 | 一种规则验证方法及终端 |
CN109271298A (zh) * | 2018-11-19 | 2019-01-25 | 武汉达梦数据库有限公司 | 一种数据库无响应故障的检测方法 |
CN109885124A (zh) * | 2019-03-11 | 2019-06-14 | 每天蓝(深圳)科技有限公司 | 最大功率点确定方法、设备及计算机可读存储介质 |
CN111459630A (zh) * | 2020-03-24 | 2020-07-28 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 采用硬件多线程机制的网络处理器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1333546C (zh) * | 2003-12-12 | 2007-08-22 | 华为技术有限公司 | 一种网络处理器转发故障的诊断方法 |
CN100563178C (zh) * | 2005-10-26 | 2009-11-25 | 华为技术有限公司 | 网络处理器以及监控网络处理器的方法 |
-
2008
- 2008-05-28 CN CN2008101132483A patent/CN101309184B/zh not_active Expired - Fee Related
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101976217A (zh) * | 2010-10-29 | 2011-02-16 | 中兴通讯股份有限公司 | 网络处理器异常检测方法及系统 |
WO2012055303A1 (zh) * | 2010-10-29 | 2012-05-03 | 中兴通讯股份有限公司 | 网络处理器异常检测方法及系统 |
CN101976217B (zh) * | 2010-10-29 | 2014-06-04 | 中兴通讯股份有限公司 | 网络处理器异常检测方法及系统 |
US8977905B2 (en) | 2010-10-29 | 2015-03-10 | Zte Corporation | Method and system for detecting abnormality of network processor |
CN102369517A (zh) * | 2011-09-01 | 2012-03-07 | 华为技术有限公司 | 一种芯片状态监控方法、装置以及芯片 |
WO2012149720A1 (zh) * | 2011-09-01 | 2012-11-08 | 华为技术有限公司 | 一种芯片状态监控方法、装置以及芯片 |
WO2017032178A1 (zh) * | 2015-08-27 | 2017-03-02 | 深圳市中兴微电子技术有限公司 | 一种校验和的计算方法、网络处理器及计算机存储介质 |
CN106484503A (zh) * | 2015-08-27 | 2017-03-08 | 深圳市中兴微电子技术有限公司 | 一种校验和的计算方法及网络处理器 |
CN106484503B (zh) * | 2015-08-27 | 2019-10-18 | 深圳市中兴微电子技术有限公司 | 一种校验和的计算方法及网络处理器 |
CN108415823A (zh) * | 2017-04-10 | 2018-08-17 | 平安科技(深圳)有限公司 | 一种规则验证方法及终端 |
WO2018188538A1 (zh) * | 2017-04-10 | 2018-10-18 | 平安科技(深圳)有限公司 | 规则验证方法、终端及存储介质 |
CN109271298A (zh) * | 2018-11-19 | 2019-01-25 | 武汉达梦数据库有限公司 | 一种数据库无响应故障的检测方法 |
CN109885124A (zh) * | 2019-03-11 | 2019-06-14 | 每天蓝(深圳)科技有限公司 | 最大功率点确定方法、设备及计算机可读存储介质 |
CN111459630A (zh) * | 2020-03-24 | 2020-07-28 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 采用硬件多线程机制的网络处理器 |
CN111459630B (zh) * | 2020-03-24 | 2023-12-08 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 采用硬件多线程机制的网络处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN101309184B (zh) | 2011-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101309184B (zh) | 检测微引擎故障的方法及装置 | |
CN103634150B (zh) | 一种冗余的高安全性can总线通信方法 | |
EP1690184B1 (en) | Apparatus and method for time ordering events in a system having multiple time domains | |
EP2159694B1 (en) | Method and device for barrier synchronization, and multicore processor | |
US7940666B2 (en) | Communication node architecture in a globally asynchronous network on chip system | |
CA2339783A1 (en) | Fault tolerant computer system | |
CN110941218B (zh) | 一种can总线控制器测试方法 | |
CN111104272B (zh) | 一种基于rx和tx的can总线控制器测试方法 | |
JP2002149212A (ja) | 制御データを等値化する冗長化プログラマブルコントローラ及び等値化方法。 | |
JP5583046B2 (ja) | 二重化制御装置 | |
US20040006724A1 (en) | Network processor performance monitoring system and method | |
WO2004046950A1 (en) | Mailbox interface between processors | |
CA2307545C (en) | Supervisory system and method | |
Goscinski | Two algorithms for mutual exclusion in real-time distributed computer systems | |
KR20040078113A (ko) | 고장에 대처할 수 있는 시간동기 기술 | |
CN101604270B (zh) | 基于vxworks操作系统的ARINC429通信冗余方法 | |
CN102822805A (zh) | 监控路由单元的循环持续时间的方法和硬件数据处理单元 | |
JP3429631B2 (ja) | 並列計算機システム | |
KR20170117326A (ko) | 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치 | |
CN100563175C (zh) | 获取设备运行状态的方法、装置及系统 | |
CN1470117B (zh) | 操作多平面信元交换节点的方法和设备 | |
RU2279707C2 (ru) | Отказоустойчивое вычислительное устройство и способ функционирования подобного устройства | |
EP2639702B1 (en) | Circuit and method for software tracing | |
JP3832733B2 (ja) | ポーリング装置および通信装置 | |
US7802150B2 (en) | Ensuring maximum reaction times in complex or distributed safe and/or nonsafe systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110209 Termination date: 20150528 |
|
EXPY | Termination of patent right or utility model |