CN101236515B - 多核系统单核异常的恢复方法 - Google Patents
多核系统单核异常的恢复方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/202—Error 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/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/202—Error 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/2023—Failover techniques
- G06F11/2033—Failover techniques switching over of hardware resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/202—Error 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/2035—Error 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中,所述被选择的状态正常的单核为处于主状态的单核。
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)
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)
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)
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 |
-
2007
- 2007-01-31 CN CN200710048366A patent/CN101236515B/zh active Active
-
2008
- 2008-01-30 RU RU2009139312/08A patent/RU2437144C2/ru active
- 2008-01-30 WO PCT/CN2008/000224 patent/WO2008101386A1/zh active Application Filing
Patent Citations (3)
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 |