CN101236515B - 多核系统单核异常的恢复方法 - Google Patents

多核系统单核异常的恢复方法 Download PDF

Info

Publication number
CN101236515B
CN101236515B CN200710048366A CN200710048366A CN101236515B CN 101236515 B CN101236515 B CN 101236515B CN 200710048366 A CN200710048366 A CN 200710048366A CN 200710048366 A CN200710048366 A CN 200710048366A CN 101236515 B CN101236515 B CN 101236515B
Authority
CN
China
Prior art keywords
monokaryon
core
state
normal
abnormality
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.)
Active
Application number
CN200710048366A
Other languages
English (en)
Other versions
CN101236515A (zh
Inventor
颜小强
李江宁
徐放
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maipu Communication Technology Co Ltd
Original Assignee
Maipu Communication Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Maipu Communication Technology Co Ltd filed Critical Maipu Communication Technology Co Ltd
Priority to CN200710048366A priority Critical patent/CN101236515B/zh
Priority to PCT/CN2008/000224 priority patent/WO2008101386A1/zh
Priority to RU2009139312/08A priority patent/RU2437144C2/ru
Publication of CN101236515A publication Critical patent/CN101236515A/zh
Application granted granted Critical
Publication of CN101236515B publication Critical patent/CN101236515B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2033Failover techniques switching over of hardware resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2035Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware

Abstract

本发明涉及多核CPU系统,特别涉及多核系统单核异常的恢复方法。本发明所要解决的技术问题,就是提供一种多核系统单核异常的恢复方法,当某个单核出现异常时,在不中断运行的情况下进行恢复。在本发明的异常处理程序中,发生异常的单核,首先将自己状态设置为“异常”,然后选择一个状态正常的单核,协助其恢复,并通知系统调度模块对系统任务进行重新分配,保证恢复工作的尽快完成,缩短恢复时间。本发明的有益效果是,能够有效保证单核异常及恢复前后,系统的运行不会中断,系统的资源也不会丢失。异常单核恢复以后可以正常工作,延长了系统的可运行时间,增强了系统的可靠性。

Description

多核系统单核异常的恢复方法
技术领域
本发明涉及多核CPU系统,特别涉及多核系统单核异常的恢复方法。
背景技术
在一个多核CPU的嵌入式系统(简称为多核系统)中,不管是对称多核系统或者主从多核系统,都有可能发生某一个核出现异常的情况,这些异常包括非法指令,不对齐操作,cache异常,数据总线错误等。导致这些异常的原因很多,可能是一次偶然的硬件错误,或者是非法的数据导致程序处理异常,也可能是运行到了程序中不易走到的分支。但这些错误大部分对系统是一次性伤害,因为如果是固定有规律的异常现象,在系统测试时就会被发现并解决。
现有技术对于这种某个单核出现异常的情况,通常的做法只是记录异常信息,然后重新启动整个系统。这样做虽然能够恢复系统的运行,但会中断所有的业务,缩短系统的可运行时间。特别是考虑到目前多系统,一般处在高端或者核心的位置,比如省级核心路由器,程控交换机等。一旦这些设备发生了故障,后果是严重的;并且系统重新启动到正常工作,需要较长时间,造成的影响是非常大的。因此,延长多核系统可运行时间显得尤为重要。同时,为了一些非致命的错误而重新启动整个系统也不值得。
发明内容
本发明所要解决的技术问题,就是针对现有技术的上述缺点,提供一种多核系统单核异常的恢复方法,当某个单核出现异常时,在不中断运行的情况下进行恢复。
本发明解决所述技术问题,采用的技术方案是,多核系统单核异常的恢复方法,包括共享内存和系统调度模块,其特征在于,包括以下步骤:
a.在所述共享内存中设置存储单元,存储每个单核的状态值,所有单核初始状态值设置为“正常”;
b.某个单核发生异常时,自动进入CPU异常处理程序,在CPU异常处理程序中,将自己状态值设置为“异常”,并通知一个被选择的状态正常的单核,然后该异常状态的单核主动进入死循环;
c.所述被选择的状态正常的单核,通过设置CPU的全局控制寄存器,将所述异常状态的单核设置到复位状态,并通知所述系统调度模块,系统调度模块将原本属于所述异常状态的单核的任务,调度给其他任意一个正常状态的单核,所述被选择的状态正常的单核回收异常状态的单核的所有资源,最后通过设置CPU的全局控制寄存器,解复位异常状态的单核;
d.所述异常状态的单核解复位后重新启动,启动完成后将自己状态值设为“待恢复”;
e.所述被选择的状态正常的单核,检测到所述异常状态的单核的值为“待恢复”后,将该单核的状态值设置为“正常”,并通知系统调度模块;
进一步的,所述步骤b中,通过核间通信的中断方式发送通知;
进一步的,所述系统调度模块,根据所述存储单元中的状态值,对各个单核的状态进行判断;一旦判断某个单核的状态异常时,就不再向这个单核调度任务;
具体的,所述多核系统为对称多核系统;步骤b中,所述被选择的状态正常的单核可以是任意一个状态正常的单核。
具体的,所述多核系统为主从多核系统;步骤b中,所述被选择的状态正常的单核为处于主状态的单核。
本发明的有益效果是:当系统的某个单核出现异常时,可以先将原本分配在该异常状态的单核的任务,调度到其他的单核,保证这些任务及时得到运行,有效保证单核异常及恢复前后,系统的运行不会中断,系统的资源也不会丢失。异常单核恢复以后可以正常工作,延长了系统的可运行时间,增强了系统的可靠性。
附图说明
图1是实施例的程序流程图。
具体实施方式
下面结合附图及实施例,详细描述本发明的技术方案。
在具有共享内存和系统调度模块的多核系统中,本发明在共享内存中,设置一个专门的存储单元,采用一个全局的数组来存储单核的状态,数组的下标可以用单核号,与每个单核的状态值对应。单核的所有状态值定义为“正常”、“异常”、“待恢复”,设置所有单核的初始状态值都为“正常”。在多核系统中,所有单核执行的任务,都是由系统调度模块分配的。在系统调度模块中设置单核状态判断程序,系统调度模块在进行任务调度时,首先判断当前各个单核的状态,如果当前单核状态异常,则不向该单核调度任务。当某个单核的状态出现异常时,一般由CPU的异常处理程序处理。
本发明的异常处理程序中,发生异常的单核,首先将自己状态设置为“异常”,然后选择一个状态正常的单核,利用核间中断通信方式,通知所选择的状态正常的单核。系统调度模块根据其调度算法,将该异常单核的任务全部转移到正常状态的单核,保证恢复工作的尽快完成,缩短恢复时间。通知完成后,异常状态的单核就进入死循环,不能再退出异常处理程序了,防止出现更多的错误及破坏。
在对称多核系统中,任何一个单核都可以设置其它单核的状态,所以当一个单核出现异常状态时,可以选择任意一个状态正常的单核,任何一个单核都有复位其他一个或多个单核的功能。选择正常单核的算法可以是顺序查找,也可以是随机查找。顺序查找的优点是算法简单,缺点是选择到的正常核比较固定;随机查找的优点是找到的正常核不是固定的,能够增大恢复成功的几率,缺点是算法比较复杂。
在主从多核系统中,只有处于主状态的单核可以恢复其它异常状态的单核,也就是说当某个单核出现异常状态时,必须通知处于主状态的单核,才能进行恢复操作。
具有多核的CPU都具有核间通信的机制,其中一种通信机制是使用核间中断,它的好处是非常迅速,能够在第一时间将事件通知出去,因此本发明优选使用核间中断来发送通知。
实施例
在一个对称的多核CPU的嵌入式系统中,如图1所示,在步骤101中,由于单核A出现了非法操作而产生了异常,这时只有单核A会跳转到异常向量,进入CPU异常处理程序,而其他单核还是在正常运行。单核A在异常处理程序中,首先记录异常信息,包括:异常类型,异常PC指针,所有状态寄存器的值,栈结构等等。
在步骤102中,单核A在异常处理程序中,修改共享内存存储单元中的本单核状态的值为“异常”。当系统调度模块进行任务调度时首先判断当前单核的状态,如果当前单核状态异常,则不向该单核调度任务。
在步骤103中,单核A在异常处理程序中,随机选择了一个状态正常的单核B,然后使用中断通知单核B,最后自己主动进入死循环,也就是永远不从异常处理程序里面退出,防止其重新执行出现异常的那条指令产生异常。
在步骤104中,状态正常的单核B收到了单核A的中断消息,即唤醒自己的单核异常恢复的守护进程,准备查找哪个单核产生了异常,并准备进行恢复。
在步骤105中,单核B通过设置CPU的全局控制寄存器,将单核A设置到复位状态,因为多核CPU提供当一个单核被设置到复位状态时,它不会执行任何代码,也就是处于停止状态,一旦被解复位,它将从固定的启动地址读指令运行,也就是进行一次重启操作。
在步骤106中,单核B通知系统调度模块,系统调度模块根据其调度算法将所有原来属于单核A的任务调度到另一状态正常的单核,保证了任务执行的时效性。
在步骤107中,单核B再把所有原来属于单核A的资源,回收到系统中,这些资源主要包括:任务队列、堆栈空间、中断等等。
在步骤108中,单核B通过设置CPU的全局控制寄存器,将单核A解开复位状态,这时单核A就开始进行重新启动的动作,单核B此时要轮询共享内存存储单元中单核A的状态值,等待其变为“待恢复”。
在步骤201中,单核A被解复位,它将从CPU固定的启动地址开始读取指令运行,进行重启操作。
在步骤202中,单核A重新执行一遍初试化操作,由于使用了新的资源,所以肯定可以重新启动成功。在启动完成后,单核A将共享内存存储单元中自己的状态改为“待恢复”,表明自己已经启动完成。
在步骤203中,单核B检测到单核A的状态变成了“待恢复”,表明单核A已经启动完成,此时单核B将单核A在共享内存存储单元中的状态修改为“正常”,然后单核B通知系统调度模块,可以给单核A分配任务。
异常回复结束。

Claims (5)

1.多核系统单核异常的恢复方法,包括共享内存和系统调度模块,其特征在于,包括以下步骤:
a.在所述共享内存中设置存储单元,存储每个单核的状态值,所有单核初始状态值设置为“正常”;
b.某个单核发生异常时,自动进入CPU异常处理程序,在CPU异常处理程序中,将自己状态值设置为“异常”,并通知一个被选择的状态正常的单核,然后该异常状态的单核主动进入死循环;
c.所述被选择的状态正常的单核,通过设置CPU的全局控制寄存器,将所述异常状态的单核设置到复位状态,并通知所述系统调度模块,系统调度模块将原本属于所述异常状态的单核的任务,调度给其他任意一个正常状态的单核,所述被选择的状态正常的单核回收异常状态的单核的所有资源,最后通过设置CPU的全局控制寄存器解复位异常状态的单核;
d.所述异常状态的单核解复位后重新启动,启动完成后将自己状态值设为“待恢复”;
e.所述被选择的状态正常的单核,检测到所述异常状态的单核的值为“待恢复”后,将该单核的状态值设置为“正常”,并通知系统调度模块。
2.根据权利要求1所述的多核系统单核异常的恢复方法,其特征在于,所述步骤b中,通过核间通信的中断方式发送通知。
3.根据权利要求1所述的多核系统单核异常的恢复方法,其特征在于,所述系统调度模块,根据所述存储单元中的状态值,对各个单核的状态进行判断;一旦判断某个单核的状态异常时,就不再向这个单核调度任务。
4.根据权利要求1、2或3所述的多核系统单核异常的恢复方法,其特征在于,所述多核系统为对称多核系统;步骤b中,所述被选择的状态正常的单核可以是任意一个状态正常的单核。
5.根据权利要求1、2或3所述的多核系统单核异常的恢复方法,其特征在于,所述多核系统为主从多核系统;步骤b中,所述被选择的状态正常的单核为处于主状态的单核。
CN200710048366A 2007-01-31 2007-01-31 多核系统单核异常的恢复方法 Active CN101236515B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN200710048366A CN101236515B (zh) 2007-01-31 2007-01-31 多核系统单核异常的恢复方法
PCT/CN2008/000224 WO2008101386A1 (fr) 2007-01-31 2008-01-30 Procédé de récupération d'une exception à noyau unique dans un système à plusieurs noyaux
RU2009139312/08A RU2437144C2 (ru) 2007-01-31 2008-01-30 Способ устранения исключительной ситуации в одном из ядер многоядерной системы

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200710048366A CN101236515B (zh) 2007-01-31 2007-01-31 多核系统单核异常的恢复方法

Publications (2)

Publication Number Publication Date
CN101236515A CN101236515A (zh) 2008-08-06
CN101236515B true CN101236515B (zh) 2010-05-19

Family

ID=39709613

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200710048366A Active CN101236515B (zh) 2007-01-31 2007-01-31 多核系统单核异常的恢复方法

Country Status (3)

Country Link
CN (1) CN101236515B (zh)
RU (1) RU2437144C2 (zh)
WO (1) WO2008101386A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2541407A1 (en) * 2010-02-23 2013-01-02 Fujitsu Limited Multi-core processor system, control program, and control method
CN103150224B (zh) * 2013-03-11 2015-11-11 杭州华三通信技术有限公司 用于提高启动可靠性的电子设备及方法
US9367406B2 (en) * 2013-08-14 2016-06-14 Intel Corporation Manageability redundancy for micro server and clustered system-on-a-chip deployments
CN103425545A (zh) * 2013-08-20 2013-12-04 浪潮电子信息产业股份有限公司 一种多处理器服务器的系统容错方法
CN103870350A (zh) * 2014-03-27 2014-06-18 浪潮电子信息产业股份有限公司 一种基于watchdog的微处理器多核加固方法
CN104866460B (zh) * 2015-06-04 2017-10-10 电子科技大学 一种基于SoC的容错自适应可重构系统与方法
CN107872397A (zh) * 2016-09-27 2018-04-03 阿里巴巴集团控股有限公司 压测过程中的流量调度方法、调度平台和调度系统
CN106844082A (zh) * 2017-01-18 2017-06-13 联想(北京)有限公司 处理器预测故障分析方法及装置
CN112199230A (zh) * 2020-10-19 2021-01-08 广东电网有限责任公司佛山供电局 一种支持多核系统异常处理的存储控制器
CN113672363B (zh) * 2021-07-21 2024-02-02 惠州华阳通用电子有限公司 一种多任务异常的恢复方法及存储介质
CN114750774B (zh) * 2021-12-20 2023-01-13 广州汽车集团股份有限公司 安全监测方法和汽车
CN115827355B (zh) * 2023-01-10 2023-04-28 深流微智能科技(深圳)有限公司 图形处理器中异常核的检测方法、检测装置和电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5815651A (en) * 1991-10-17 1998-09-29 Digital Equipment Corporation Method and apparatus for CPU failure recovery in symmetric multi-processing systems
CN1257244A (zh) * 1998-12-15 2000-06-21 富士通株式会社 多处理器转换装置和主处理器转换方法
CN1828573A (zh) * 2005-03-01 2006-09-06 华为技术有限公司 一种多cpu系统及其控制方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7055060B2 (en) * 2002-12-19 2006-05-30 Intel Corporation On-die mechanism for high-reliability processor
US9038070B2 (en) * 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
US20060212677A1 (en) * 2005-03-15 2006-09-21 Intel Corporation Multicore processor having active and inactive execution cores

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5815651A (en) * 1991-10-17 1998-09-29 Digital Equipment Corporation Method and apparatus for CPU failure recovery in symmetric multi-processing systems
CN1257244A (zh) * 1998-12-15 2000-06-21 富士通株式会社 多处理器转换装置和主处理器转换方法
CN1828573A (zh) * 2005-03-01 2006-09-06 华为技术有限公司 一种多cpu系统及其控制方法

Also Published As

Publication number Publication date
WO2008101386A1 (fr) 2008-08-28
CN101236515A (zh) 2008-08-06
RU2437144C2 (ru) 2011-12-20
RU2009139312A (ru) 2011-04-27

Similar Documents

Publication Publication Date Title
CN101236515B (zh) 多核系统单核异常的恢复方法
EP2626786B1 (en) Multicore processor system, method of monitoring control, and monitoring control program
US20160196189A1 (en) Failure monitoring device, computer-readable recording medium, and failure monitoring method
US9798595B2 (en) Transparent user mode scheduling on traditional threading systems
CN106547613B (zh) 任务处理流程的调度及故障恢复方法
JP5212360B2 (ja) 制御プログラム、制御システムおよび制御方法
JP5259714B2 (ja) 実行順序決定装置、実行順序決定プログラム、実行順序決定回路及び情報処理装置
CN103415840A (zh) 跨硬件层和软件层的错误管理
CN101876926B (zh) 一种非对称结构的软件三机热备容错方法
CN101377750A (zh) 一种用于机群容错的系统和方法
CN102609296A (zh) 虚拟机分支和并行执行
US20120304184A1 (en) Multi-core processor system, computer product, and control method
JP6288275B2 (ja) 仮想化基盤管理装置、仮想化基盤管理システム、仮想化基盤管理方法、及び、仮想化基盤管理プログラム
US20080244592A1 (en) Multitask processing device and method
US9195528B1 (en) Systems and methods for managing failover clusters
JP4992740B2 (ja) マルチプロセッサシステム、障害検出方法および障害検出プログラム
JP5673666B2 (ja) マルチコアプロセッサシステム、割込プログラム、および割込方法
US20100085871A1 (en) Resource leak recovery in a multi-node computer system
CN102957563A (zh) Linux集群故障自动恢复方法和Linux集群故障自动恢复系统
US20100085870A1 (en) Global detection of resource leaks in a multi-node computer system
US8359602B2 (en) Method and system for task switching with inline execution
JP7000797B2 (ja) 起動管理装置、起動管理システム、起動管理方法、および、起動管理プログラム
JP5867630B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
JP4716492B2 (ja) 冗長構成システムおよび第1のコンピュータシステムに障害が発生したときに第2のコンピュータシステムが直ちにリカバーする方法
JPH11353284A (ja) ジョブ再実行方法

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