CN107844392A - 一种x86架构cpu寄存器在线故障检测方法及装置 - Google Patents
一种x86架构cpu寄存器在线故障检测方法及装置 Download PDFInfo
- Publication number
- CN107844392A CN107844392A CN201711001746.4A CN201711001746A CN107844392A CN 107844392 A CN107844392 A CN 107844392A CN 201711001746 A CN201711001746 A CN 201711001746A CN 107844392 A CN107844392 A CN 107844392A
- Authority
- CN
- China
- Prior art keywords
- register
- processor
- fault detect
- failure
- detection
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2231—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test interrupt circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开涉及一种X86架构CPU寄存器在线故障检测方法及装置,其中,所述方法包括下述步骤对同时工作的多处理器实时操作系统,轮流对每个处理器进行寄存器故障检测;在对处理器进行寄存器故障检测之前,该处理器停止调度和停止中断响应,其余处理器正常工作;在对处理器进行寄存器故障检测时,若寄存器故障检测时间超过设定值,则判断检测失败;在对处理器进行寄存器故障检测之后,该处理器恢复调度和中断响应。与已有检测技术相比,该方法能够检测CPU共模错误,故障覆盖率高;对寄存器的初始值进行了保护和恢复处理,确保检测的可靠性,并且不影响其他线程的执行。
Description
技术领域
本公开涉及安全计算机,具体涉及一种X86架构CPU寄存器在线故障检测方法及装置。
背景技术
安全计算机的安全完整度达到SIL4级,适用于多种地面信号设备,可提供安全运算、存储、通信等功能,并能提升系统的性能和可维护性。随着铁路信号技术的发展,地面信号系统逻辑运算单元承载的业务越来越庞大复杂,要求安全计算机的逻辑运算硬件平台能提供足够的性能支撑。作为支持运算功能的关键组件,CPU中的寄存器如果出现性能故障,例如读写错误、运算标志位失效等,都将引起逻辑运算结果错误,导致危险情况的发生。因此,寄存器故障的在线检测对于保证寄存器的正常工作和安全计算机的稳定运行具有十分重要的意义。
安全计算机采用二乘二取二的架构,双CPU的结构和动作相同,且所有输入输出数据均需经过双CPU比较一致才有效。若两CPU发生共模故障,则可能导致取二运算失效,使不同的数据通过比较。目前已有的寄存器检测方案不能检测CPU共模故障,因而无法完全防护此类安全风险。
发明内容
针对上述问题,本公开提出了一种X86架构CPU寄存器在线故障检测方法及装置,通过本公开的方法及装置,可以在不影响其它线程调度的情况下,检测多处理器的共模故障。
一种X86架构CPU寄存器在线故障检测方法,所述方法包括下述步骤:
对同时工作的多处理器实时操作系统,轮流对每个处理器进行寄存器故障检测;
在对处理器进行寄存器故障检测之前,该处理器停止调度和停止中断响应,其余处理器正常工作;
在对处理器进行寄存器故障检测时,若寄存器故障检测时间超过设定值,则判断检测失败;
在对处理器进行寄存器故障检测之后,该处理器恢复调度和中断响应。
优选地,在所述处理器停止调度和停止中断响应时,所述方法包括下述步骤:
若任何一个处理器关于处理器停止调度和停止中断响应操作首次出现失败,则停止该次寄存器故障检测,恢复该处理器调度和中断响应;
若任何一个处理器关于停止处理器调度或停止中断响应操作连续两次失败,则判定该多处理器实时操作系统存在故障。
在所述方法中,其中所述寄存器故障检测中涉及的寄存器包括:可读写寄存器、部分可读写寄存器。
在所述方法中,其中所述关于处理器停止调度和停止中断响应操作通过设立错误计数器统计失败次数;
当所述操作成功时,所述错误计数器清零。
在所述方法中,其中所述寄存器故障检测包括下述步骤:
S100、对待检测的当前寄存器,确定该寄存器可读写位;
S200、保存该寄存器可读写位的当前值;
S300、向所述可读写位写入测试数据再读出,判断读出的数据与预期结果是否相符;
S400、在判断后,恢复所述可读写位的值。
在所述方法中,其中所述寄存器故障检测包括下述步骤:
若当前寄存器故障检测失败,剩余寄存器均不再检测,判定本次检测失败;
否则,继续检测下一个寄存器,直至所有寄存器检测通过,判定本次检测成功。
在所述方法中,其中在轮流对每个处理器进行寄存器故障检测之前包括下述步骤:
根据系统时间戳,确定多处理器的检测时间和检测间隔。
在所述方法中,其中所述步骤S200包括下述步骤:
若寄存器属于通用寄存器,则将该寄存器的值保存在内存中;
若寄存器属于控制寄存器或调试寄存器,则将该寄存器的值压入已检测过的通用寄存器进行保存。
在所述方法中,其中在所述步骤S100之前,所述方法包括下述步骤:
获取应用程序中涉及的寄存器。
在所述方法中,其中所述步骤S300包括下述步骤:
若所述可读写位的位数小于测试数据的位数,则屏蔽寄存器不可以写位的数据。
在所述方法中,其中所述测试数据包括EN50129-2003中的数据位组合构成。
根据所述方法,本公开实现了一种X86架构CPU寄存器在线故障检测装置,所述装置包括下述模块:
寄存器故障检测模块,被配置用于:对同时工作的多处理器实时操作系统,轮流对每个处理器进行寄存器故障检测;
在对处理器进行寄存器故障检测之前,该处理器停止调度和停止中断响应,其余处理器正常工作;
在对处理器进行寄存器故障检测时,若寄存器故障检测时间超过设定值,则判断检测失败;
在对处理器进行寄存器故障检测之后,该处理器恢复调度和中断响应。
在所述装置中,其中所述寄存器故障检测模块包括下述单元:
第一单元,被配置用于:
当任何一个处理器关于处理器停止调度和停止中断响应操作首次出现失败,则停止该次寄存器故障检测,恢复该处理器调度和中断响应;
当任何一个处理器关于停止处理器调度或停止中断响应操作连续两次失败,则判定该多处理器实时操作系统存在故障。
在所述装置中,其中所述关于处理器停止调度和停止中断响应操作通过设立错误计数器统计失败次数;
当所述操作成功时,所述错误计数器清零。
在所述装置中,其中所述寄存器故障检测中涉及的寄存器包括:可读写寄存器、部分可读写寄存器。
在所述装置中,其中所述寄存器故障检测模块包括下述单元:
获取单元,被配置用于:对待检测的当前寄存器,获取该寄存器可读写位;
保存单元,被配置用于:对所述待测的当前寄存器,保存该寄存器可读写位的当前值;
判断单元,被配置用于:对所述待测的当前寄存器,向所述可读写位写入测试数据再读出,判断读出的数据与预期结果是否相符;
恢复单元,被配置用于:对所述待测的当前寄存器,在判断后,恢复所述可读写位的值。
在所述装置中,其中所述寄存器故障检测模块包括下述单元:
第二单元,被配置用于:若当前寄存器故障检测失败,剩余寄存器均不再检测,判定本次检测失败;
否则,继续检测下一个寄存器,直至所有寄存器检测通过,判定本次检测成功。
在所述装置中,其中所述寄存器故障检测模块包括下述单元:
第三单元,被配置用于:根据系统时间戳,确定多处理器的检测时间和检测间隔。
在所述装置中,其中所述保存单元进一步被配置用于:
若寄存器属于通用寄存器,则将该寄存器的值保存在内存中;
若寄存器属于控制寄存器或调试寄存器,则将该寄存器的值压入已检测过的通用寄存器进行保存。
在所述装置中,其中所述装置包括寄存器获取模块;所述寄存器获取模块,被配置用于:获取应用程序中涉及的寄存器。
在所述装置中,其中所述判断单元进一步被配置用于:
若所述可读写位的位数小于测试数据的位数,则屏蔽寄存器不可以写位的数据。
在所述装置中,其中所述测试数据包括EN50129-2003中的数据位组合构成。
另外,本公开还提供了一种计算机可读存储介质,所述计算机可读存储截至中包括一个或多个程序,所述一个或多个程序用于执行上述方法中任一所述的方法。
最后,本公开提供了一种数据处理设备,所述数据处理设备包括:
上述计算机可读存储介质;以及一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
附图说明
图1本公开一个实施例中的方法流程示意图;
图2本公开一个实施例中的装置结构示意图。
具体实施方式
在一个实施例中,提供了一种X86架构CPU寄存器在线故障检测方法,所述方法包括下述步骤:
对同时工作的多处理器实时操作系统,轮流对每个处理器进行寄存器故障检测;
在对处理器进行寄存器故障检测之前,该处理器停止调度和停止中断响应,其余处理器正常工作;
在对处理器进行寄存器故障检测时,若寄存器故障检测时间超过设定值,则判断检测失败;
在对处理器进行寄存器故障检测之后,该处理器恢复调度和中断响应。
在该实施例中,对于同时工作的多处理器实时操作系统,比如采用二乘二取二的架构的安全计算机,双CPU的结构和动作相同,切所有输入输出数据均需经过双CPU比较一致才有效。在对这样的实时操作系统进行寄存器故障检测前,先对受检的CPU,停止该CPU调度和中断响应,再进行寄存器故障检测,在检测之后,再回复CPU调度和中断响应。
由于实时操作系统对各线程的执行时间和执行间隔有明确要求,因此需要寄存器检测的运算时间尽量短,在指定时间内完成,否则将长时间占用CPU,影响其他线程的调度执行。优选地,在所述方法中,其中在轮流对每个处理器进行寄存器故障检测之前包括下述步骤:根据系统时间戳,确定多处理器的检测时间和检测间隔。即:在同一时间内最多只有一个CPU执行寄存器检测程序。比如为双CPU,则双CPU交替检测。
前述或以下实施方案/特征/方面中任一项的方法,其中所述方法进一步包括下述步骤:在所述处理器停止调度和停止中断响应时,若任何一个处理器关于处理器停止调度和停止中断响应操作首次出现失败,则停止该次寄存器故障检测,恢复该处理器调度和中断响应;若任何一个处理器关于停止处理器调度或停止中断响应操作连续两次失败,则判定该多处理器实时操作系统存在故障。
在该实施例中,所述方法在关于处理器停止调度和停止中断响应操作首次出现失败时,当前不进行寄存器故障检测,也不影响CPU其他任务的正常运行。等到下一次寄存器故障检测的时刻到来,再试图停止CPU调度。若对安全要求高的实时操作系统,也可以在首次出现处理器停止调度和停止中断响应操作失败时,即判断该多处理实时操作系统存在故障。而在本实施例中,进行了冗余设计,提高系统的可用性,是在连续两次出现处理器停止调度和停止中断响应操作失败,才判断该多处理实时操作系统存在故障。在判断多处理实时操作系统存在故障时,在没有安全自救措施的情况下,可以进行系统停机操作。
具体地,调用实时操作系统的停止CPU调度和屏蔽中断接口函数,仅允许寄存器故障检测程序执行,防止其他线程和中断篡改寄存器的值。优选地,在各个CPU中均设立错误计数器,检查接口函数的返回值,当返回值表示停止CPU调度和屏蔽中断操作成功时计数器清零,如操作不成功则进行计数,连续两次不成功则认定寄存器检测失败。
前述或以下实施方案/特征/方面中任一项的方法,其中所述寄存器故障检测中涉及的寄存器包括:可读写寄存器、部分可读写寄存器。
该实施例中对寄存器的分类,有利于测试场景的构造和测试数据的准备。比如:对可读写寄存器,根据EN50129-2003的要求,将EN50129-2003中的数据位组合构成测试数据;对部分可读写寄存器,采取相同测试数据,但要屏蔽不可写的位;对于标志寄存器,构造运算场景,写入标志位数据。
前述或以下实施方案/特征/方面中任一项的方法,其中所述寄存器故障检测包括下述步骤:
S100、对待检测的当前寄存器,确定该寄存器可读写位;
S200、保存该寄存器可读写位的当前值;
S300、向所述可读写位写入测试数据再读出,判断读出的数据与预期结果是否相符;
S400、在判断后,恢复所述可读写位的值。
其中所述步骤S200具体包括下述步骤:
若寄存器属于通用寄存器,则将该寄存器的值保存在内存中;若寄存器属于控制寄存器或调试寄存器,则将该寄存器的值压入已检测过的通用寄存器进行保存。
在这种方法下,每检测完一个控制寄存器或调试寄存器,就能从通用寄存器中取出其初始值并恢复,提高了检测效率。
前述或以下实施方案/特征/方面中任一项的方法或装置,其中,通用寄存器包括数据寄存器、累加寄存器、基地址寄存器、计数器寄存器、数据寄存器、指针寄存器、堆栈指针寄存器、基指针寄存器、变址寄存器、源变址寄存器、目的变址寄存器等。控制寄存器包括指令指针寄存器、标志寄存器等。调试寄存器包括追踪标志(TF)。
对于步骤S300,比如:
对可读写寄存器,根据EN50129-2003的要求,先写入某一值再读出,比较读出与写入的值是否一致,不一致则检测失败。在一个实施例中,选用的值为0x00000000、0x11111111、…、0xEEEEEEEE、0xFFFFFFFF以及0x0F0F0F0F、0xF0F0F0F0等24个。如全部值测试通过,说明当前寄存器检测通过。
对部分位可读写的寄存器,同样采取读写测试的方法,但要屏蔽不可写的位。
对于标志寄存器的运算标志位,制造运算场景,判断运算标志位的值是否与预期相符,不相符则检测失败。例如制造一个结果为0的运算:
xorl%eax,%eax
上式表示按位异或,相同的位置为0,不同的位置为1,eax和eax的每一位都相同。上式在测试标志寄存器ZF位的读写一致性时,预期结果为1。如果为读出的数据为1,则检测通过;否则,检测失败。
在该实施例中,无论检测是否成功,均需恢复各寄存器的初始值。其中,控制寄存器和调试寄存器在本寄存器检测完毕、下一寄存器检测开始前即从通用寄存器中取出并恢复初始值,而通用寄存器从内存恢复初始值。
前述或以下实施方案/特征/方面中任一项的方法,其中所述寄存器故障检测进一步包括下述步骤:
若当前寄存器故障检测失败,为避免其对剩余寄存器的影响,剩余寄存器均不再检测,判定本次检测失败;
否则,继续检测下一个寄存器,直至所有寄存器检测通过,判定本次检测成功。
在该实施例中,如检测失败,说明安全计算机出现严重故障,为避免运算错误造成灾难性后果,提高运行的安全性,可以进一步调用故障处理接口使其停机,将输出数据导向安全侧,并向维护终端发出报警信息。
在一个实施例中,在所述步骤S100之前,所述方法包括下述步骤:
获取应用程序中涉及的寄存器。
在一个实施例中,对于直接使用汇编代码编写的可执行文件,则进行反汇编操作,生成汇编代码;对于用其他语言编译形成的可执行文件,需要进行反编译操作,统一生成汇编代码。对生成的汇编代码,查找并统计该汇编代码中涉及的寄存器,包括直接调用的寄存器和通过操作符隐式调用的寄存器,这些寄存器均为要检测的寄存器。
在一个实施例中,提供了一种优选的检测方法流程,如图1所示,所述方法包括下述步骤:
(1)统计分析涉及的寄存器,设定双CPU轮流检测的时间;
(2)在寄存器故障检测时刻,获取待检测的CPU;
(3)禁止CPU线程调度并屏蔽中断;若该操作失败,该CPU对应的错误计数器计数增加1;若该操作成功,该CPU对应的错误计数器清零;
(4)若待检测的CPU对应的错误计数器等于1,返回步骤(2);若待检测的CPU对应的错误计数器等于2,则系统停机;若待检测的CPU对应的错误计数器等于0,执行步骤(5)。
(5)获取待测寄存器,保存该寄存器的初始值;
(6)向待测寄存器写入测试数据并读出;
(7)判断读出数据与写入数据的一致性
(8)若不一致,则判定所述待测寄存器存在故障,检测失败,恢复待检测寄存器的初始值,执行步骤(12);否则,恢复已检测寄存器的初始值,执行步骤(9);
(9)是否存在下一个待测寄存器,若存在,执行步骤(10);否则,执行步骤(11);
(10)获取下一个待测寄存器,保存该待测寄存器的初始值,执行步骤(6);
(11)检测成功,执行步骤(12);
(12)恢复CPU线程调度和中断响应,返回步骤(2)。
根据所述方法,在一个实施例中,实现了一种X86架构CPU寄存器在线故障检测装置,所述装置包括下述模块:
寄存器故障检测模块,被配置用于:对同时工作的多处理器实时操作系统,轮流对每个处理器进行寄存器故障检测;
在对处理器进行寄存器故障检测之前,该处理器停止调度和停止中断响应,其余处理器正常工作;
在对处理器进行寄存器故障检测时,若寄存器故障检测时间超过设定值,则判断检测失败;
在对处理器进行寄存器故障检测之后,该处理器恢复调度和中断响应。
前述或以下实施方案/特征/方面中任一项的装置,其中所述寄存器故障检测模块包括下述单元:
第一单元,被配置用于:当任何一个处理器关于处理器停止调度和停止中断响应操作首次出现失败,则停止该次寄存器故障检测,恢复该处理器调度和中断响应;
当任何一个处理器关于停止处理器调度或停止中断响应操作连续两次失败,则判定该多处理器实时操作系统存在故障。
上述术语“第一”以及下述中涉及的“第二”、“第三”仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
前述或以下实施方案/特征/方面中任一项的装置,其中所述关于处理器停止调度和停止中断响应操作通过设立错误计数器统计失败次数;当所述操作成功时,所述错误计数器清零。
前述或以下实施方案/特征/方面中任一项的装置,其中所述寄存器故障检测中涉及的寄存器包括:可读写寄存器、部分可读写寄存器。
前述或以下实施方案/特征/方面中任一项的装置,其中所述寄存器故障检测模块包括下述单元:
获取单元,被配置用于:对待检测的当前寄存器,获取该寄存器可读写位;
保存单元,被配置用于:对所述待测的当前寄存器,保存该寄存器可读写位的当前值;
判断单元,被配置用于:对所述待测的当前寄存器,向所述可读写位写入测试数据再读出,判断读出的数据与预期结果是否相符;
恢复单元,被配置用于:对所述待测的当前寄存器,在判断后,恢复所述可读写位的值。
前述或以下实施方案/特征/方面中任一项的装置,其中所述寄存器故障检测模块包括下述单元:
第二单元,被配置用于:若当前寄存器故障检测失败,剩余寄存器均不再检测,判定本次检测失败;
否则,继续检测下一个寄存器,直至所有寄存器检测通过,判定本次检测成功。
前述或以下实施方案/特征/方面中任一项的装置,其中所述寄存器故障检测模块包括下述单元:
第三单元,被配置用于:根据系统时间戳,确定多处理器的检测时间和检测间隔。
在所述装置中,其中所述保存单元进一步被配置用于:
若寄存器属于通用寄存器,则将该寄存器的值保存在内存中;
若寄存器属于控制寄存器或调试寄存器,则将该寄存器的值压入已检测过的通用寄存器进行保存。
前述或以下实施方案/特征/方面中任一项的装置,其中所述装置包括寄存器获取模块;所述寄存器获取模块,被配置用于:获取应用程序中涉及的寄存器。
在一个实施例中,提供了具体的装置结构图,如图2所示。
前述或以下实施方案/特征/方面中任一项的装置,其中所述判断单元进一步被配置用于:
若所述可读写位的位数小于测试数据的位数,则屏蔽寄存器不可以写位的数据。
前述或以下实施方案/特征/方面中任一项的装置,其中所述测试数据包括EN50129-2003中的数据位组合构成。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本公开方法和/或装置,可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。
另外,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述的方法。
最后,本公开提供了一种数据处理设备,所述数据处理设备包括:
上述计算机可读存储介质;以及一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
尽管以上结合附图对本发明的实施方案进行了描述,但本发明并不局限于上述的具体实施方案和应用领域,上述的具体实施方案仅仅是示意性的、指导性的,而不是限制性的。本领域的普通技术人员在本说明书的启示下和在不脱离本发明权利要求所保护的范围的情况下,还可以做出很多种的形式,这些均属于本发明保护之列。
Claims (24)
1.一种X86架构CPU寄存器在线故障检测方法,其特征在于,所述方法包括下述步骤:
对同时工作的多处理器实时操作系统,轮流对每个处理器进行寄存器故障检测;
在对处理器进行寄存器故障检测之前,该处理器停止调度和停止中断响应,其余处理器正常工作;
在对处理器进行寄存器故障检测时,若寄存器故障检测时间超过设定值,则判断检测失败;
在对处理器进行寄存器故障检测之后,该处理器恢复调度和中断响应。
2.根据权利要求1所述的方法,其特征在于,在所述处理器停止调度和停止中断响应时,所述方法包括下述步骤:
若任何一个处理器关于处理器停止调度和停止中断响应操作首次出现失败,则停止该次寄存器故障检测,恢复该处理器调度和中断响应;
若任何一个处理器关于停止处理器调度或停止中断响应操作连续两次失败,则判定该多处理器实时操作系统存在故障。
3.根据权利要求2所述的方法,其特征在于:
所述关于处理器停止调度和停止中断响应操作通过设立错误计数器统计失败次数;
当所述操作成功时,所述错误计数器清零。
4.根据权利要求1所述的方法,其特征在于,所述寄存器故障检测中涉及的寄存器包括:可读写寄存器、部分可读写寄存器。
5.根据权利要求1所述的方法,其特征在于,所述寄存器故障检测包括下述步骤:
S100、对待检测的当前寄存器,确定该寄存器可读写位;
S200、保存该寄存器可读写位的当前值;
S300、向所述可读写位写入测试数据再读出,判断读出的数据与预期结果是否相符;
S400、在判断后,恢复所述可读写位的值。
6.根据权利要求1所述的方法,其特征在于,所述寄存器故障检测包括下述步骤:
若当前寄存器故障检测失败,剩余寄存器均不再检测,判定本次检测失败;
否则,继续检测下一个寄存器,直至所有寄存器检测通过,判定本次检测成功。
7.根据权利要求1所述的方法,其特征在于,在轮流对每个处理器进行寄存器故障检测之前包括下述步骤:
根据系统时间戳,确定多处理器的检测时间和检测间隔。
8.根据权利要求5所述的方法,其特征在于,所述步骤S200包括下述步骤:
若寄存器属于通用寄存器,则将该寄存器的值保存在内存中;
若寄存器属于控制寄存器或调试寄存器,则将该寄存器的值压入已检测过的通用寄存器进行保存。
9.根据权利要求5所述的方法,其特征在于,在所述步骤S100之前,所述方法包括下述步骤:
获取应用程序中涉及的寄存器。
10.根据权利要求5所述的方法,其特征在于,所述步骤S300包括下述步骤:
若所述可读写位的位数小于测试数据的位数,则屏蔽寄存器不可以写位的数据。
11.根据权利要求5所述的方法,其特征在于,所述测试数据包括EN50129-2003中的数据位组合构成。
12.一种X86架构CPU寄存器在线故障检测装置,其特征在于,所述装置包括下述模块:
寄存器故障检测模块,被配置用于:对同时工作的多处理器实时操作系统,轮流对每个处理器进行寄存器故障检测;
在对处理器进行寄存器故障检测之前,该处理器停止调度和停止中断响应,其余处理器正常工作;
在对处理器进行寄存器故障检测时,若寄存器故障检测时间超过设定值,则判断检测失败;
在对处理器进行寄存器故障检测之后,该处理器恢复调度和中断响应。
13.根据权利要求12所述的装置,其特征在于,所述寄存器故障检测模块包括下述单元:
第一单元,被配置用于:
当任何一个处理器关于处理器停止调度和停止中断响应操作首次出现失败,则停止该次寄存器故障检测,恢复该处理器调度和中断响应;
当任何一个处理器关于停止处理器调度或停止中断响应操作连续两次失败,则判定该多处理器实时操作系统存在故障。
14.根据权利要求13所述的装置,其特征在于:
所述关于处理器停止调度和停止中断响应操作通过设立错误计数器统计失败次数;
当所述操作成功时,所述错误计数器清零。
15.根据权利要求12所述的装置,其特征在于,所述寄存器故障检测中涉及的寄存器包括:可读写寄存器、部分可读写寄存器。
16.根据权利要求12所述的装置,其特征在于,所述寄存器故障检测模块包括下述单元:
获取单元,被配置用于:对待检测的当前寄存器,获取该寄存器可读写位;
保存单元,被配置用于:对所述待测的当前寄存器,保存该寄存器可读写位的当前值;
判断单元,被配置用于:对所述待测的当前寄存器,向所述可读写位写入测试数据再读出,判断读出的数据与预期结果是否相符;
恢复单元,被配置用于:对所述待测的当前寄存器,在判断后,恢复所述可读写位的值。
17.根据权利要求12所述的装置,其特征在于,所述寄存器故障检测模块包括下述单元:
第二单元,被配置用于:若当前寄存器故障检测失败,剩余寄存器均不再检测,判定本次检测失败;
否则,继续检测下一个寄存器,直至所有寄存器检测通过,判定本次检测成功。
18.根据权利要求12所述的装置,其特征在于,所述寄存器故障检测模块包括下述单元:
第三单元,被配置用于:根据系统时间戳,确定多处理器的检测时间和检测间隔。
19.根据权利要求16所述的装置,其特征在于,所述保存单元进一步被配置用于:
若寄存器属于通用寄存器,则将该寄存器的值保存在内存中;
若寄存器属于控制寄存器或调试寄存器,则将该寄存器的值压入已检测过的通用寄存器进行保存。
20.根据权利要求16所述的装置,其特征在于:
所述装置包括寄存器获取模块;
所述寄存器获取模块,被配置用于:获取应用程序中涉及的寄存器。
21.根据权利要求16所述的装置,其特征在于,所述判断单元进一步被配置用于:
若所述可读写位的位数小于测试数据的位数,则屏蔽寄存器不可以写位的数据。
22.根据权利要求16所述的装置,其特征在于,所述测试数据包括EN50129-2003中的数据位组合构成。
23.一种计算机可读存储介质,其特征在于:
所述计算机可读存储截至中包括一个或多个程序,所述一个或多个程序用于执行权利要求1-11中任一项所述的方法。
24.一种数据处理设备,其特征在于,所述数据处理设备包括:
权利要求23所述的计算机可读存储介质;以及,
一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711001746.4A CN107844392A (zh) | 2017-10-24 | 2017-10-24 | 一种x86架构cpu寄存器在线故障检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711001746.4A CN107844392A (zh) | 2017-10-24 | 2017-10-24 | 一种x86架构cpu寄存器在线故障检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107844392A true CN107844392A (zh) | 2018-03-27 |
Family
ID=61661649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711001746.4A Pending CN107844392A (zh) | 2017-10-24 | 2017-10-24 | 一种x86架构cpu寄存器在线故障检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107844392A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101009A (zh) * | 2018-09-06 | 2018-12-28 | 华为技术有限公司 | 故障诊断系统及服务器 |
CN111679945A (zh) * | 2020-06-12 | 2020-09-18 | 地平线(上海)人工智能技术有限公司 | 处理器的检测方法、装置及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101334744A (zh) * | 2007-12-27 | 2008-12-31 | 华为技术有限公司 | 一种检测多处理器系统故障的方法、系统和装置 |
CN103744413A (zh) * | 2013-11-19 | 2014-04-23 | 广东威灵电机制造有限公司 | 电机控制系统中微处理器的内核寄存器故障检测方法 |
CN104731668A (zh) * | 2014-12-05 | 2015-06-24 | 中国航空工业集团公司第六三一研究所 | Fpga三模冗余架构的故障管理与恢复控制器及其控制方法 |
CN105045696A (zh) * | 2015-09-02 | 2015-11-11 | 中国航空工业集团公司航空动力控制系统研究所 | 一种cpu检测方法 |
-
2017
- 2017-10-24 CN CN201711001746.4A patent/CN107844392A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101334744A (zh) * | 2007-12-27 | 2008-12-31 | 华为技术有限公司 | 一种检测多处理器系统故障的方法、系统和装置 |
CN103744413A (zh) * | 2013-11-19 | 2014-04-23 | 广东威灵电机制造有限公司 | 电机控制系统中微处理器的内核寄存器故障检测方法 |
CN104731668A (zh) * | 2014-12-05 | 2015-06-24 | 中国航空工业集团公司第六三一研究所 | Fpga三模冗余架构的故障管理与恢复控制器及其控制方法 |
CN105045696A (zh) * | 2015-09-02 | 2015-11-11 | 中国航空工业集团公司航空动力控制系统研究所 | 一种cpu检测方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101009A (zh) * | 2018-09-06 | 2018-12-28 | 华为技术有限公司 | 故障诊断系统及服务器 |
WO2020048174A1 (zh) * | 2018-09-06 | 2020-03-12 | 华为技术有限公司 | 故障诊断系统及服务器 |
CN109101009B (zh) * | 2018-09-06 | 2020-08-14 | 华为技术有限公司 | 故障诊断系统及服务器 |
US11347611B2 (en) | 2018-09-06 | 2022-05-31 | Xfusion Digital Technologies Co., Ltd. | Fault diagnosis system and server |
CN111679945A (zh) * | 2020-06-12 | 2020-09-18 | 地平线(上海)人工智能技术有限公司 | 处理器的检测方法、装置及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lee et al. | Faults, symptoms, and software fault tolerance in the tandem guardian90 operating system | |
Pattabiraman et al. | Application-based metrics for strategic placement of detectors | |
Cinque et al. | Assessing direct monitoring techniques to analyze failures of critical industrial systems | |
CN105243023B (zh) | 并行运行时错误检测方法 | |
Lee et al. | Measurement-based evaluation of operating system fault tolerance | |
US9411007B2 (en) | System and method for statistical post-silicon validation | |
CN107844392A (zh) | 一种x86架构cpu寄存器在线故障检测方法及装置 | |
Amarnath et al. | A fault injection approach to evaluate soft-error dependability of system calls | |
US8255769B2 (en) | Control apparatus and control method | |
Finelli | Characterization of fault recovery through fault injection on FTMP | |
CN102567774A (zh) | 一种智能卡安全防护电路和方法 | |
Hanmer | Software rejuvenation | |
CN101681287A (zh) | 处理器动作检查系统及动作检查电路 | |
US20180364298A1 (en) | System and method for formal circuit verification | |
Lee et al. | Evaluation of error detection coverage and fault-tolerance of digital plant protection system in nuclear power plants | |
Munson et al. | Software faults: A quantifiable definition | |
CN115756935A (zh) | 嵌入式软件系统的异常故障定位方法、装置及设备 | |
Thakur et al. | Analysis of failures in the Tandem NonStop-UX operating system | |
Sadi et al. | Component criticality analysis to minimizing soft errors risk | |
Lee et al. | Identifying software problems using symptoms | |
Höller et al. | Evaluation of diverse compiling for software-fault detection | |
Chen et al. | Reliable data path design of VLIW processor cores with comprehensive error-coverage assessment | |
US20180300194A1 (en) | Method for fault detection in an operating system | |
Casagrande et al. | Soft error analysis in embedded software developed with & without operating system | |
Nicolescu et al. | Efficiency of transient bit-flips detection by software means: a complete study |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180327 |
|
RJ01 | Rejection of invention patent application after publication |