CN112053737B - 一种在线并行处理的软错误实时检错与恢复方法及系统 - Google Patents
一种在线并行处理的软错误实时检错与恢复方法及系统 Download PDFInfo
- Publication number
- CN112053737B CN112053737B CN202010849103.0A CN202010849103A CN112053737B CN 112053737 B CN112053737 B CN 112053737B CN 202010849103 A CN202010849103 A CN 202010849103A CN 112053737 B CN112053737 B CN 112053737B
- Authority
- CN
- China
- Prior art keywords
- linked list
- data
- abnormal
- backup
- recovery
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
- G06F11/106—Correcting systematically all correctable errors, i.e. scrubbing
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
- G11C29/24—Accessing extra cells, e.g. dummy cells or redundant cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/74—Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/83—Indexing scheme relating to error detection, to error correction, and to monitoring the solution involving signatures
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Hardware Redundancy (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种在线并行处理的软错误实时检错与恢复方法及系统,将被保护RAM空间分成多个被保护区域;将所有被保护区域分成1个或多个级别,最高级别为每个中断周期完成一次检错与恢复功能;其他级别为多个中断周期完成一次检错与恢复功能;将各级别被保护区域注册生成与级别数量相应的链表,将各链表及链表中被保护区域备份至少两份到其他RAM空间;并行处理各级别链表及链表中各被保护区域的检错与恢复本发明能够实现关键场景下高重要等级的数据在控制系统单个中断节拍内完校验、裁决和纠正恢复,同时不依赖CPU处理器自身,可以实时并行处理,能够实现CPU处理器RAM存储器多个位置同时异常变位时在线实时检错纠错功能。
Description
技术领域
本发明属于RAM存储器异常变位的检错技术领域,具体涉及一种在线并行处理的软错误实时检错与恢复方法及系统。
背景技术
随着微处理器技术往低功耗、低电压、高集成度方向发展,RAM(Random AccessMemory)存储器异常变位(或软错误soft error、或单粒子效应Single event effect)对系统安全稳定的影响不容忽视。导致RAM异常的原因主要有:(1)α粒子辐射。处理器使用的封装材料中的α粒子辐射,会导致芯片存储区异常变位;(2)集成电路的规模增加。晶体管的尺寸越来越小,频率越来越高,但是晶体管的极限电压越来越低,噪声容忍度越来越窄,使得处理器对串扰、电压扰动、电磁辐射更加敏感,造成可靠性降低;(3)宇宙辐射。宇宙空间中的高能带电粒子在达到地球表面前将会与地球大气层元素(主要是氧和氮)发生级联相互作用而产生大量的次级中子,这些次级中子入射集成电路,通过直接电离或者核反应间接电离产生大量电子-空穴对,当微电子器件的灵敏电极收集的电荷超过电路的临界电荷时,会发生单粒子效应导致内存位翻转,进而导致程序功能异常。RAM存储器异常变位主要有3种类型:一是数据单位翻转,存储器单个数据位发生反转,从而导致数据出现异常,这种类型的错误常见于静态随机存储器、动态随机存储器、非易失性存储器;二是数据单位瞬态翻转,存储器单个数据位发生因电压或电流抖动而被电路采样记录,随后恢复,此种类型的异常变位主要发生于动态随机存储器;三是数据多位翻转,存储器中多个数据位同时发生改变。如果异常变位出现在RAM存储器的关键位置(例如:代码区、关键数据区),则可能引发程序运行出错,进而导致系统异常。如果能在问题发生之前检测出异常变位,进行数据恢复,将大大提高系统的稳定性和可靠性。随着微处理器技术的发展和应用范围拓展,RAM存储器异常变位的危害日益增加,其影响范围越来越广。因此如何解决RAM异常变位,提高系统稳定性可靠性,确保系统安全运转,越来越受到各个行业的关注。
目前在处理器RAM存储异常(或软错误、或单粒子效应)的检测和纠正方面,人们想出了各种办法从硬件和软件角度进行监视、纠正,通过硬件进行监视和纠正的方案。比如从工艺及器件及的加固措施,在工艺上的加固通常有像电容条件,电阻条件,结构、版图、掺杂的加固,锁存电路(DICE)等;在部件级的加固措施通常有奇偶校验(Parity),纠错代码(ECC)和交叉存取(Interleave)等。
CPU处理器类器件硬件上支持RAM的ECC(Error Correcting Code)校验:TI新处理器及XILINX新的MPSoC处理器,硬件DDR控制支持ECC校验功能、片上RAM支持ECC校验功能、L1/L2cache支持ECC校验功能,其中ECC校验功能通过每32bit或者64bit增加8bit汉明码,实现单bit异常变位纠正和两bit变位告警,但是无法实现两bit纠正、多bit同时变位是的告警及纠正。
以上多为单层级的软错误防误考量,也有提到通过软件进行监视检测的方案。例如“专利一种 ADI DSP 代码在线监视方法”(公开号CN105446842A, 2016-03-30)根据 DSP的链接映射文件,往 DSP的可加载文件中待监视的代码段增加代码监视标记;在运行时DSP持续读取非易失性存储器中的LDR,如果发现代码监视标志,则比较非易失性存储器代码与RAM 中的运行代码;如果两者不一致,则进行重复检查;如果确认不一致,则判断RAM运行代码出错,立即采取报警措施,记录错误信息至非易失性存储器用于故障分析。此方法可通过简单地修改LDR文件实现对运行代码的在线监视。但是此方法无法实现在线纠正,响应实时性差,且监视功能消耗CPU处理时间,检错纠错程序也依赖于CPU本身,无法定位出错数据,不具有在线恢复功能。
针对在单CPU系统中实现软错误系统级防护的实现方法,现有技术及方法主要存在以下缺点和不足:
(1)目前硬件检测ECC校验功能考虑硬件资源的消耗,只实现单bit变位的纠正、两bit变位的检测功能,无法实现更多bit同时变位的告警,纠正功能很有限;
(2)硬件ECC功能在较新的处理器中才有,不是所有处理器多都具备ECC校验功能,无法适应到各种类型的处理器,且功能和性能各有差别,不能保障系统的真正可靠性;
(3)CPU软件方式只是实现了在线程序的监视和报警功能,并没有一个系统性的RAM数据监视和恢复方案,特别实时性不够、检测及恢复响应慢;
(4)软件方式检测恢复功能消耗处理器时间,影响处理器正常功能的运行,同时检错纠错程序也依赖于CPU自己本身,更无法定位出错数据;
(5)CPU软件方式的检测恢复功能,当检错纠错程序所在RAM异常时,该功能无法正常保障工作,不能做到RAM空间全覆盖。
发明内容
本发明的目的在于克服现有技术中的不足,提供了一种在线并行处理的软错误实时检错与恢复方法及系统,以解决现有电力二次设备因内存异常变位而导致设备隐性故障或保护控制功能异常的问题。
为解决上述技术问题,本发明提供了一种在线并行处理的软错误实时检错与恢复方法,包括以下过程:
将被保护RAM空间分成多个被保护区域;
将所有被保护区域分成1个或多个级别,最高级别为每个中断周期完成一次检错与恢复功能;其他级别为多个中断周期完成一次检错与恢复功能;
将各级别被保护区域注册生成与级别数量相应的链表,所述链表位于被保护RAM空间;将各链表及链表中被保护区域备份至少两份到其他RAM空间;所述链表内容包括相同级别的各被保护区域位置、长度和各个备份的位置;
并行处理各级别链表及链表中各被保护区域的检错与恢复。
进一步的,所述方法采用并行处理模块执行,所述并行处理模块通过高速接口连接访问被保护RAM空间,并采用独立的DDR、SRAM,或者RAM空间用于备份存储。
进一步的,所述对任一级别的链表及链表中各被保护区域进行检错与恢复的过程为:
对链表及其备份进行检错,并对其异常进行恢复;
对链表中各被保护区域及其备份进行检错,并对其异常进行恢复。
进一步的,所述对链表及其备份进行检错,包括:
读取链表及其备份;
采用包括SM3签名信息、MD5信息摘要和BCC校验码任意一种或多种组合校验方式,对链表及其备份进行校验;
对比各校验方式的判断结果,确定链表及其备份的正确性。
进一步的,采用多种组合校验方式时,各个校验方式的校验过程并行处理。
进一步的,还包括:对读取的链表及其备份进行通讯过程校验:每个位置的链表连续读取至少三次,并分别计算CRC校验码;每个位置判断至少两次CRC校验码相同的数据为正确的,读取其中一次正确的数据作为正确读取数据。
进一步的,采用一种校验方式对链表及其A、B两个备份进行校验,包括:
校验方式以SM3签名信息为例来描述:
计算链表及其A、B两个备份的SM3签名信息,并比对;
至少有两份SM3签名信息相同,则判断SM3签名信息相同的所有份数据正常,其他份数据异常。
进一步的,所述对比各校验方式的判断结果,确定链表及其备份的正确性,包括:
对比链表及其备份的SM3签名信息、MD5信息摘要、BCC校验码三种校验方式的判断结果,如果两种及以上的校验方式判断结果一致,则将此一致的结果作为最终裁决结果。
进一步的,所述对链表中各被保护区域及其备份进行检错,包括:
若链表级别为最高级别时:
对链表中各被保护区域及其备份依次进行检错,其中,对链表中任一个被保护区域及其备份进行检错,包括:
读取链表中当前一个被保护区域及其备份;
采用包括SM3签名信息、MD5信息摘要和BCC校验码任意一种或多种组合校验方式,对链表中当前被保护区域及其备份进行校验;
对比各校验方式的判断结果,确定链表中当前被保护区域及其备份的正确性。
进一步的,所述对链表中各被保护区域及其备份进行检错,包括:
当链表级别为其他级别时:
将链表中所有被保护区域划分为多个组,
在每个中断周期,对链表中任一组中各被保护区域及其备份依次进行检错:其中,对链表中任一组中任一被保护区域及其备份进行检错,包括:
读取链表中当前检测组中当前一个被保护区域及其备份;
采用包括SM3签名信息、MD5信息摘要和BCC校验码任意一种或多种组合校验方式,对链表中当前检测组中当前被保护区域及其备份进行校验;
对比各校验方式的判断结果,确定链表中当前检测组中当前被保护区域及其备份的正确性。
进一步的,采用多种组合校验方式时,各个校验方式的校验过程并行处理。
进一步的,还包括:对读取的链表中当前被保护区域及其备份进行通讯过程校验:每个位置的链表连续读取至少三次,并分别计算CRC校验码;每个位置判断至少两次CRC校验码相同的数据为正确的,读取其中一次正确的数据作为正确读取数据。
进一步的,采用一种校验方式对链表中当前被保护区域及其备份进行校验,包括:
校验方式以SM3签名信息为例来描述:
计算链表中当前被保护区域及其备份的SM3签名信息,并比对;
至少有两份SM3签名信息相同,则判断SM3签名信息相同的所有份数据正常,其他份数据异常。
进一步的,所述对比各校验方式的判断结果,确定链表中当前被保护区域及其备份的正确性,包括:
对比链表中当前被保护区域及其备份的SM3签名信息、MD5信息摘要、BCC校验码三种校验方式的判断结果,如果两种及以上的校验方式判断结果一致,则将此一致的结果作为最终裁决结果。
进一步的,所述对异常进行恢复,包括:
将异常数据区和正常数据区按顺序划分成N块基本数据块;
计算异常数据区的数据CRC校验码Cen,其中n=0、1、2、3..m,而且N/2≤ 2m<N;其中Cen计算方法为:从第1个基本数据块开始取Pn个基本数据块,然后每隔Pn个基本块取Pn个基本数据块,将取出的所有基本数据块作为数据源计算CRC值,间隔的基本数据块个数Pn=2n;
计算正常数据区的数据CRC校验码Ccn,其中n=0、1、2、3..m,其中,Ccn计算方法为:从第1个基本数据块开始取Pn个基本数据块,然后每隔Pn个基本块,取Pn个基本数据块,将取出的所有基本数据块作为数据源计算CRC值;
判断Ccm和Cem两个CRC是否相等:如果相等,则说明异常数据位于异常数据区的后半部,更新异常数据标记位置,指向异常数据区的后半部分范围;如果不相等,则说明异常数据区的前半部分一定有异常,更新异常数据标记位置,指向异常数据区的前半部分范围;
重复以上判断过程,判断Ccn和Cen值,其中n从m-1依次递减直至为0,每个步骤均更新异常数据标记位置;在判断完n=0步骤后,此时异常数据标记位置已经缩小到了异常数据所在异常数据区的基本数据块;
将正常数据区内正确的基本数据块内容通过高速接口拷贝复制到异常数据标记位置指向的异常数据区内异常的基本数据块,此异常的基本数据块完成恢复;
计算正常数据区和异常数据区内所有基本数据块的CRC值,比较两个CRC值是否相等,如果两者不相等,说明仍然有异常数据,在重复以上所有的步骤,对其他异常数据进行定位和恢复;如果相等,则异常数据恢复结束。
进一步的,异常的基本数据块完成恢复后还包括:重新读取异常的基本数据块;计算重新读取异常的基本数据块CRC值,并计算对应正确的基本数据块CRC值;比较两个CRC值是否相等,如果相等,则此异常的基本数据块完成恢复。
相应的,本发明还提供了一种在线并行处理的软错误实时检错与恢复系统,包括链表管理模块、以及检错恢复模块,其中:
链表管理模块,用于将被保护RAM空间分成多个被保护区域;将所有被保护区域分成1个或多个级别,最高级别为每个中断周期完成一次检错与恢复功能;其他级别为多个中断周期完成一次检错与恢复功能;将各级别被保护区域注册生成与级别数量相应的链表,所述链表位于被保护RAM空间;将各链表及链表中被保护区域备份至少两份到其他RAM空间;所述链表内容包括相同级别的各被保护区域位置、长度和各个备份的位置;
检错恢复模块,用于并行处理各级别链表及链表中各被保护区域的检错与恢复:其中,对任一级别的链表及链表中各被保护区域进行检错与恢复的过程为:
对链表及其备份进行检错,并对其异常进行恢复;
对链表中各被保护区域及其备份进行检错,并对其异常进行恢复。
与现有技术相比,本发明所达到的有益效果是:
(1)本发明能够实现指定存储区域内同时多处甚至全部同时变化的在线检错与恢复,能够解决硬件ECC不能检测、纠正多位异常变位问题,具有更强大的功能,提高系统程序运行的鲁棒性稳定性。
(2)本发明可以实现不依赖CPU处理器硬件ECC功能实现RAM存储器异常变位的检错和恢复功能,为一些不具备硬件ECC功能的处理器系统,进行RAM异常变位检测的实现提供了可行方法。
(3)本发明对系统RAM异常检测和恢复的功能,能够对出错数据位置定位到一定区域,并且能够实现在一个中断节拍内完成恢复,提高了系统对RAM异常处理的实时性,降低了RAM异常对系统的影响。
(4)本发明通过FPGA并行处理模块协助完成处理器RAM校验及纠正恢复,不占用处理器的CPU时间,实现并行检测,并行纠正恢复RAM异常。
(5)通过FPGA并行处理模块协助实现整个被保护RAM空间的检测和纠正。
附图说明
图1是本发明的系统示意图;
图2是本发明的链表数据示意图;
图3是本发明的链表内容示意图;
图4是本发明的FPGA并行处理模块校验裁决过程示意图;
图5是本发明的FPGA并行处理模块裁决功能示意图;
图6是本发明的FPGA并行处理模块定位功能中数据块划分与校验码计算示意图;
图7是本发明的FPGA并行处理模块定位功能中异常数据位置定位功能示意图;
图8是本发明的FPGA并行处理模块数据恢复功能示意图;
图9是本发明的FPGA并行处理模块验算裁决与恢复的时序图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
实施例1
本发明的一种在线并行处理的软错误实时检错与恢复方法,包括以下过程:
将被保护RAM空间分成多个被保护区域;
将所有被保护区域分成1个或多个级别,最高级别为每个中断周期完成一次检错与恢复功能;其他级别为多个中断周期完成一次检错与恢复功能;
将各级别被保护区域注册生成与级别数量相应的链表,所述链表位于被保护RAM空间;将各链表及链表中被保护区域备份至少A、B两份到其他RAM空间;所述链表内容包括相同级别的各被保护区域位置、长度和A、B两个备份的位置;
并行处理各级别链表及链表中各被保护区域的检错与恢复:其中,对任一级别的链表及链表中各被保护区域进行检错与恢复的过程为:
对链表及其A、B两个备份进行检错,并对其异常进行恢复;
对链表中各被保护区域及其A、B两个备份进行检错,并对其异常进行恢复。
本发明对系统RAM异常检测和恢复的功能,能够对出错数据位置并且能够实现在一个中断节拍内完成恢复,提高了系统对RAM异常处理的实时性,降低了RAM异常对系统的影响。
实施例2
为了实现并行处理模块(如FPGA处理模块,后续统称FPGA并行处理模块)并行协助处理的数据功能,系统中的FPGA并行处理模块需要通过高速接口访问CPU系统的RAM,而高速接口PCIe、SRIO、HyperLink等。同时为了FPGA并行处理模块在协助处理时,对CPU系统的影响最小,FPGA并行处理模块需要单独控制用于备份数据的存储器存储空间,例如单独的DDR、SRAM或FPGA并行处理模块内部RAM等。如果CPU处理器的RAM空间非常充足,而且高速接口带宽比较充裕的情况下,也可以在CPU处理器RAM中划分出单独的空间,用于FPGA并行处理模块存放备份数据。
在硬件模块上可以设计专用的FPGA并行处理电路模块或者利用CPU控制系统中本身已设计的FPGA并行处理模块或者基于集成了FPGA并行处理电路的SoC来实现。
在软件系统上,在FPGA并行处理模块协处理在线检错与恢复时,同样需要考虑:数据传输的正确性。本发明提供了通讯层次的校验机制;同时还要考虑验算算法的准确性,因而本发明采用SM3签名信息、MD5摘要信息、BCC校验码三种不同原理的校验算,防止同源错误的发生。
本发明的一种在线并行处理的软错误实时检错与恢复方法,参见图1所示,该方法要求:控制系统中CPU处理器和FPGA并行处理模块通过高速接口连接(例如PCIe、SRIO、HyperLink,下面内容中按照PCIe表述);FPGA并行处理模块控制独立的RAM空间用于备份程序或者数据。包括以下过程:
S1:将被保护RAM空间划分为多个被保护区域。
根据被保护CPU系统RAM空间使用情况,将被保护RAM空间分成多个被保护区域。在程序代码编译时,通过链接映射文件将每个被保护区域固定RAM空间位置;链接映射文件,指程序编译中指定各个程序段地址的描述文件。此文件内容包括:处理器系统中内存地址与长度;各个内存区域的名称、长度、内存地址。程序源代码中,可以通过编译预处理功能(#pragma DATA_SECTION (程序名称,"存储区域名"))指定某些程序存放位置。
FPGA并行处理模块通过高速总线(如PCIe)直接读写访问被保护CPU系统RAM空间;并且控制独立RAM空间用于被保护区内容备份,此空间只能由FPGA并行处理模块单独读写访问。
为确保被保护RAM空间检错与恢复功能的实时性,对各被保护区域进行分级管理:按照被保护区域重要程度,分成多个级别,LV1为最高级别,检错与恢复的频率最高,每个中断周期完成一次检错与恢复功能;其他级别检错与恢复的频率依次降低。如果系统被保护区小,FPGA能够在一个中断周期内完成检错与恢复时,可以只有一个LV1级别;如果被保护区域在系统中重要程度都不高,可以容忍多次中断完成一次检错与恢复时,也可以只有一个低LV级别。为方便描述,本实施例中以下内容按照两个级别(LV1/LV2)进行陈述。
根据被保护区域在系统中的重要程度,本发明实施例中将被保护区域分成1级(LV1)、2级 (LV2) 两个级别,其中LV1级别最高,对于LV1级被保护区域,系统每个中断节拍完成全部区域内容的校验和纠错;对于LV2级被保护区域,分成多组,每个中断节拍完成一组被保护区域内容的校验和纠错,分多次中断完成。在系统初始化时,将各个被保护区域注册生成2个级别的链表。对应2个级别的链表来存放LV1/LV2被保护RAM区域信息,也存放在RAM中,链表用于FPGA寻找被保护区域的位置大小信息等。
S2:将被保护RAM空间内所有被保护区域,按照重要程度,注册到1级 (LV1)、2级(LV2) 链表中;FPGA并行处理模块备份链表(LV1/LV2)及链表指向被保护区域备到独立RAM,至少备份A、B两份。
备份数据的份数可依据实际情况决定,至少备份两份。当备份为两份时采用三取二的规则判断哪份数据是正确或异常,也可以备份三份,采用四取三或四取二的规则判断。本发明中以备份A、B两份为例来详细描述。
FPGA的初始备份功能模块是在系统初始化完成后,该功能模块根据LV1/LV2链表,在独立RAM中,初始化链表及被保护区域的AB两个备份区内容。
三个位置的数据链表内容相同,均包括了被保护区域起始地址、长度、A/B两个备份的位置。
注册原则:LV1、 LV2链表指向的被保护区域,按照每段最大1K分段注册;LV1、LV2链表以结构体数组形式存放,如图2所示,链表中的每一项内容为一个BD,记录一个被保护区域,其数据格式为:
typedef struct {
UIN32 length; /*链表条目长度:0为未用,其他为数据长度 */
UIN32 addr; /*数据在处理器RAM中的地址*/
UIN32 back_addr_A; /*备份A在FPGA并行处理模块控制独立RAM的偏移位置*/
UIN32 back_addr_B; /*备份B在FPGA并行处理模块控制独立RAM的偏移位置*/
} BDTable;
参数对应关系如图3所示,其中,length为被保护区域长度;addr为被保护区域起始地址,为被保护RAM空间中的地址,即此地址指向的被保护区域在被保护RAM空间中;back_add_A为备份A在FPGA控制的独立RAM中起始地址,即此地址指向的区域在独立RAM中;为独立RAM中的地址;back_add_B为备份B在FPGA控制的独立RAM中起始地址,即此位置指向的区域在独立RAM中。
为了方便,简记链表中被保护区域是指链表中BD块中地址指向的被保护区域。
S3:系统上电初始化时,完成系统配置工作:配置PCIE接口,将被保护RAM空间映射到FPGA并行处理模块的PCIe地址空间;通过FPGA并行处理模块的寄存器配置每个中断处理LV1链表条目的数量为条目总数,LV2配置总条目/P,即P个中断完成所有的处理。
中断周期在500-1000us之间各异。每个中断完成异常变位检测恢复,可以提升检测恢复的响应性能,提升电力保护设备抗异常(误动、拒动)的能力。
此检测过程,参见图4所示,首先检测LV1/LV2链表区域,并对其异常进行恢复,确保了链表信息的正确性,这样后续才能正确根据LV1/LV2链表记录信息,进行对应被保护区域检测与恢复。LV1和LV2级别的检错和恢复没有先后顺序要求。单个LV1或LV2的链表和对应被保护区域的检错恢复一定是串行的。为了方便理解,本发明实施例中先描述LV1和LV2链表的检错和恢复,然后描述LV1和LV2链表中被保护区域的检错和恢复。
以下S4-S8步骤是LV1链表及其A、B两个备份正确性的裁决具体过程,参见图5所示,包括:
S4:FPGA并行处理模块按照中断节拍,读取LV1链表及其A、B两个备份。每个位置的链表连续读取三次,并分别计算CRC校验码;每个位置按照三取二规则选取三次中的一次正确读取数据;
三个位置数据都进行通讯过程校验,校验方法为:每个位置读取的三次链表数据都进行CRC校验,若每个位置的三次CRC校验码都不一样,说明读取功能异常或者系统硬件异常,需要闭锁装置,系统重启。若两次CRC校验码一样的即为正确,则任取一次读取数据作为正确读取数据。
通讯过程校验的目的是防止通讯过程出错导致的误判,为可选功能。如果系统不考虑通讯接口出错的情况时,可以去掉此校验过程,即:读取一次数据作为正确数据,进行后续判断。
需要说明的是,读取次数可以是三次及以上,当读取次数为四次时,可采用四取二或四取三规则来确定正确读取数据。
S5:FPGA并行处理模块计算LV1链表及其A、B两个备份正确读取数据的SM3签名信息,并比对,按照三取二规则判断三个位置数据是否出现异常变位:如果三个位置的SM3签名信息相同,则无异常,即三个位置数据相同;如果两个相同,则这两份数据正常,另外一份异常;如果三个都不同,则判断失效;
S6:FPGA并行处理模块计算LV1链表及其A、B两个备份正确读取数据的MD5信息摘要,并比对,按照三取二规则判断三个位置数据是否出现异常变位:如果三个位置的MD5信息摘要相同,则无异常,即三个位置数据相同;如果两个相同,则这两份数据正常,另外一个异常;如果三个都不同,则判断失效;
S7:FPGA并行处理模块计算LV1链表及其A、B两个备份正确读取数据的BCC校验码,并比对,按照三取二规则判断三个位置数据是否出现异常变位:如果三个位置的BCC校验码相同,则无异常,即三个位置数据相同;如果两个相同,则这两份数据正常,另外一份异常;如果三个都不同,则判断失效;
需要说明的是:本发明实施例中采用SM3签名信息、MD5摘要信息、BCC校验三种检验方式三次校验(每种方式校验一次)进行描述,但本领域技术人员需知,校验方式不限于这三种,也可以选用其他的常见的校验方式,例如CRC32、CRC64等。校验方式和校验次数均可以任意组合,例如采用2次SM3签名信息,2次CRC32校验等。使用不同的校验方式可以防止某种校验的原理性问题导致的最终误判。应用时可以根据系统对于误判的容忍度进行方式与次数的选择/组合。
本发明实施例中三个校验过程没有关联,可以并行进行。
S8:FPGA并行处理模块对比LV1链表的SM3签名信息、MD5信息摘要、BCC校验码三种校验方式的判断结果,根据三取二规则进行裁决,确定LV1链表及其A、B两个备份正确性:如果两种及以上的校验方式判断结果一致,则将此一致的结果作为最终裁决结果;否则裁决结果为判断失效。
最终裁决结果如果为无异常(即三个位置数据相同),则LV1链表及其A、B两个备份均是正确的,链表LV1检测结束;
如果为判断失效,则为无法恢复的错误,需要闭锁装置,重新启动恢复;
如果为其中两份数据正常,另一份异常,则异常数据可恢复,按照后续的异常数据恢复方法处理。此处异常数据可能LV1链表、A备份或者B备份,备份区也是RAM,也可能错误,也需要恢复的。
S9:按照S4到S8步骤,验算LV2链表及其A、B两个备份正确性,如果三个位置数据存在异常数据,则恢复。
以上处理过程保证LV1/LV2链表及其A、B两个备份的正确性,后续根据正确的LV1/LV2链表记录信息,进行对应被保护区域进行检错与恢复。
以下S10-S15步骤是LV1链表中各被保护区域及其A、B两个备份正确性的裁决具体过程,参见图4所示,包括:
S10:然后FPGA并行处理模块读取LV1链表中第一个被保护区域对应的RAM空间数据及其A、B两个备份数据。每个位置的数据连续读取三次,并分别计算CRC校验码;每个位置按照三取二规则选取三次中的一次正确读取数据;
三个位置数据都进行通讯过程校验,校验方法为:每个位置读取的三次数据都进行CRC校验,若每个位置的三次CRC校验码都不一样,说明读取功能异常或者系统硬件异常,需要闭锁装置,系统重启。若两次CRC校验码一样的即为正确,则任取一次读取数据作为正确读取数据。
S11:FPGA并行处理模块计算LV1链表中第一个被保护区域对应的RAM空间数据及其A、B两个备份正确读取数据的SM3签名信息,并比对,按照三取二规则判断三个位置数据是否出现异常变位:如果三个位置的SM3签名信息相同,则无异常,即三个位置数据相同;如果两个相同,则这两份数据正常,另外一份异常;如果三个都不同,则判断失效;
S12:FPGA并行处理模块计算LV1链表中第一个被保护区域对应的RAM空间数据及其A、B两个备份正确读取数据的MD5信息摘要,并比对,按照三取二规则判断三个位置数据是否出现异常变位:如果三个位置的MD5信息摘要相同,则无异常,即三个位置数据相同;如果两个相同,则这两份数据正常,另外一个异常;如果三个都不同,则判断失效;
S13:FPGA并行处理模块计算LV1链表中第一个被保护区域对应的RAM空间数据及其A、B两个备份正确读取数据的BCC校验码,并比对,按照三取二规则判断三个位置数据是否出现异常变位:如果三个位置的BCC校验码相同,则无异常,即三个位置数据相同;如果两个相同,则这两份数据正常,另外一个异常;如果三个都不同,则判断失效;
S14:FPGA并行处理模块对比SM3签名信息、MD5信息摘要、BCC校验码三种校验方式的判断结果,根据三取二规则进行裁决,确定LV1链表中第一个被保护区域对应的RAM空间及其A、B两个备份正确性:如果两种及以上的方式判断结果一致,则将此一致的结果作为最终裁决结果;否则裁决结果为判断失效。
最终裁决结果如果为无异常(三个位置数据相同),则LV1链表中第一个被保护区域对应的RAM空间数据及其A、B两个备份均是正确的,LV1链表中第一个被保护区域检测结束;
如果为判断失效,则为无法恢复的错误,需要闭锁装置,重新启动恢复;
如果为其中两份数据正常,另一份异常,则异常数据可恢复,按照后续的异常数据恢复方法处理。此处异常数据可能RAM空间数据、A备份或者B备份,备份区也是RAM,也可能错误,也需要恢复的。
S15:FPGA并行处理模块重复S10到S14步骤,对LV1链表中所有被保护区域数据进行裁决,若存在异常,则对异常进行恢复。至此即LV1链表中所有被保护区域数据检测结束。
LV2链表中的各被保护区域为多中断完成,将LV2链表被保护区域分成多组,每个中断节拍完成一组(多个BD),因此每次中断检测LV2完成后,需要更新一下组位置。
以下S16-S22步骤是LV2链表中当前检测组中各被保护区域及其A、B两个备份正确性的裁决具体过程,参见图4所示,包括:
S16:FPGA并行处理模块读取LV2链表中当前检测组中第一个被保护区域对应的RAM空间数据及其A、B两个备份数据。每个位置的数据连续读取三次,并分别计算CRC校验码;每个位置按照三取二规则选取三次中的一次正确读取数据;
当前检测组,LV2链表内容分成多组,检测时从第一组开始,每次检测一组,当前被检测的组称为当前检测组。
S17:FPGA并行处理模块计算LV2链表中当前检测组中第一个被保护区域对应的RAM空间数据及其A、B两个备份正确读取数据的SM3签名信息,并比对,按照三取二规则判断三个位置数据是否出现异常变位:如果三个位置的SM3签名信息相同,则无异常,即三个位置数据相同;如果两个相同,则这两份数据正常,另外一个异常;如果三个都不同,则判断失效;
S18:FPGA并行处理模块计算LV2链表中当前检测组中第一个被保护区域对应的RAM空间数据及其A、B两个备份正确读取数据的MD5信息摘要,并比对,按照三取二规则判断三个位置数据是否出现异常变位:如果三个位置的MD5信息摘要相同,则无异常,即三个位置数据相同;如果两个相同,则这两份数据正常,另外一个异常;如果三个都不同,则判断失效;
S19:FPGA并行处理模块计算LV2链表中当前检测组中第一个被保护区域对应的RAM空间数据及其A、B两个备份正确读取数据的BCC校验码,并比对,按照三取二规则判断三个位置数据是否出现异常变位:如果三个位置的BCC校验码相同,则无异常,即三个位置数据相同;如果两个相同,则这两份数据正常,另外一个异常;如果三个都不同,则判断失效;
S20:FPGA并行处理模块对比SM3签名信息、MD5信息摘要、BCC校验码三种校验方式的判断结果,根据三取二规则进行裁决,确定LV2链表中当前检测组中第一个被保护区域对应的RAM空间及其A、B两个备份正确性:如果两种及以上的方式判断结果一致,则将此一致的结果作为最终裁决结果;否则裁决结果为判断失效。
最终裁决结果如果为无异常(三个位置数据相同),则LV2链表中当前检测组中第一个被保护区域对应的RAM空间数据及其A、B两个备份数据均是正确的,LV2链表中当前检测组中第一个被保护区域数据检测结束;
如果为判断失效,则为无法恢复的错误,需要闭锁装置,重新启动恢复;
如果为其中两份数据正常,另一份异常,则异常数据可恢复,按照后续的异常数据恢复方法处理。此处异常数据可能RAM空间数据、A备份或者B备份。
S21:重复S16到S20步骤,对LV2链表中当前检测组中所有被保护区域数据进行裁决,若存在异常则对异常进行恢复,至此即LV2链表中当前检测组中所有被保护区域数据检测结束;
S22:最后LV2链表中当前检测组位置指向下一组,在下一个中断周期内重复S16到S21步骤,对LV2链表中下一组中所有被保护区域数据进行裁决与恢复,直至LV2链表中所有组中所有被保护区域数据检测结束。
系统完成被保护RAM空间的正确性判断后,FPGA并行处理模块需要对数据进行恢复。在数据恢复过程中,为了提升响应实时性能,本发明采用了将数据分成若干基本数据块的方式,并通过多个方式计算CRC值,根据这些CRC值,快速定位出异常的基本数据块。而在恢复被保护数据时,也应考虑通讯过程的正确性,因此本发明采用在恢复正确基本数据块到异常位置后,立即回读数据,并判断数据是否被正确写入,如果回读数据和写入数据不一致,则从新在写一次。
在遇到多位置异常时,可以先定位出一个异常的基本数据块位置,然后通过迭代的方式定位出多个异常的基本数据块位置。因此本发明通过迭代的方式,解决多位置异常的问题。
本发明的异常数据恢复方法,该方法的前提是FPGA并行处理模块最终裁决解决为两份数据正常,一份异常,此时异常数据可恢复。任选一份正常数据作为正常数据区,存在异常的一份数据作为异常数据区。异常数据区可能是被保护RAM区,也有可能是独立RAM区。具体步骤内容参见图8所示,包括有以下步骤:
S1:异常数据区和正常数据区按照最小数据长度按顺序划分成N块,下面表述时称之为基本数据块。
S2:由FPGA并行处理模块计算异常数据区的数据CRC校验码Cen,其中n=0、1、2、3..m,间隔的基本数据块个数Pn=2n,而且N/2≤ 2m<N。
Cen计算方法为:从第1个基本数据块开始取Pn个基本数据块,然后每隔Pn个基本块取Pn个基本数据块,将取出的所有基本数据块作为数据源计算CRC值。
本步骤的Ce0、Ce1...Cem可以并行计算,也可以串行计算。
参见图6所示,异常数据库划分为N=16个基础数据块,分别记为B1、B2......B16,Ce0的计算是从B1开始取1个基本数据块,然后每隔1个基本块取1个基本数据块,即取B1、B3、B5......B15作为数据源计算,Ce1的计算是从B1开始取2个基本数据块,然后每隔2个基本块取2个基本数据块,即取B1、B2、B5、B6......B13、B14作为数据源计算,同理,Ce3的计算是从B1开始取8个基本数据块,然后每隔8个基本块取8个基本数据块,即取B1、B2......B8作为数据源计算。
S3:由FPGA并行处理模块计算正常数据区的数据CRC校验码Ccn,其中n=0、1、2、3..m,间隔的基本数据块个数Pn=2n,而且N/2≤2m<N。
Ccn计算方法为:从第1个基本数据块开始取Pn个基本数据块,然后每隔Pn个基本块,取Pn个基本数据块,将取出的所有基本数据块作为数据源计算CRC值。
本步骤的Cc0、Cc1...Ccm可以并行计算,也可以串行计算。
参见图6所示,正常数据库划分为N=16个基础数据块,分别记为B1、B2......B16,Cc0的计算是从B1开始取1个基本数据块,然后每隔1个基本块取1个基本数据块,即取B1、B3、B5......B15作为数据源计算,Cc1的计算是从B1开始取2个基本数据块,然后每隔2个基本块取2个基本数据块,即取B1、B2、B5、B6......B13、B14作为数据源计算,同理,Cc3的计算是从B1开始取8个基本数据块,然后每隔8个基本块取8个基本数据块,即取B1、B2......B8作为数据源计算。
S4:FPGA并行处理模块判断Ccm和Cem两个CRC是否相等:如果相等,则说明异常数据位于异常数据区的后半部,更新异常数据标记位置,指向异常数据区的后半部分范围;如果不相等,则说明异常数据区的前半部分一定有异常,更新异常数据标记位置,指向异常数据区的前半部分范围。
此步骤是n=m时处理,此时整个数据区所有基本数据块分为前后两部分。S4步骤判断出异常数据位于前半部分会还是后半部分;异常范围缩小后,S5重复n=m-1…不断缩小范围,直到n=0时,范围缩小到具体的某个异常基本块上。
S5:重复S4步骤,判断Ccn和Cen值,其中n从m-1依次递减,直至为0,每个步骤均更新异常数据标记位置。在判断完n=0步骤后,此时异常数据标记位置已经缩小到了异常数据所在异常数据区的基本数据块,简称为异常的基本数据块,而此异常的基本数据块对应的正确数据为正常数据区中对应的基本数据块,简称为正确的基本数据块。
本发明实施例中,此判断过程参见图7所示,先比较Ce3和Cc3值是否相等,如果相等,则说明异常数据位置位于后半部B9->B16范围,然后继续判断Ce2和Cc2值是否相等,如果相等,则说明异常数据位置位于后半部B13->B16范围,然后继续判断Ce1和Cc1值是否相等,如果相等,则说明异常数据位置位于后半部B15->B16范围,然后继续判断Ce0和Cc0值是否相等,如果相等,则说明异常数据位置位于后半部B16基本数据块。至此定位到了具体的异常的基本数据块。同理,其他判断分支参见图7所示,此处不再多赘述。
S6:由FPGA并行处理模块将正常数据区内正确的基本数据块内容通过高速接口拷贝复制到异常数据标记位置指向的异常数据区内异常的基本数据块。
S7:然后FPGA并行处理模块重新读取异常的基本数据块;计算重新读取异常的基本数据块CRC值,并计算对应正确的基本数据块CRC值。比较两个CRC值是否相等,如果不相等,则重复S6、S7步骤进行重新恢复,本实施例中重复次数最多2次;如果相等,则此异常的基本数据块完成恢复。
S8:FPGA并行处理模块计算正常数据区和异常数据区内所有基本数据块的CRC值,比较两个CRC值是否相等,如果两者不相等,说明仍然有异常数据,在重复S2到S7的步骤,对其他异常数据进行定位和恢复;如果相等,则异常数据恢复结束。
上述过程的典型流程如图9所示,首先进行LV1链表检错与恢复,然后LV2的链表检错与恢复,然后进行LV1链表的所有被保护区域检错与恢复,最后是LV2当前组的被保护区域检错与恢复,其时序图如图9所示。其中LV1链表检错与恢复完成之后,才能进行LV1链表对应保护区域的检错与恢复;LV2链表也同样,在完成LV2链表检错与恢复后,才能LV2链表对应保护区域的检错与恢复,但是LV1链表和LV2链表没有先后关系,可以设计为并行处理。
如果系统运行中需要正常更改被保护RAM空间的数据(如正常的数据参数修改服务等),应按照以下次序继续修改:首先软件停止验算和裁决功能,停止数据恢复功能,并回读FPGA并行处理模块的运行状态,确认功能停止;然后正常修改数据;最后重启验算和裁决功能,重启数据恢复功能。
本发明的在线并行处理的含义是:在线的含义是指在系统功能正常运行的同时,进行被保护RAM检错与恢复。在本文中,LV1/LV2链表及对应被保护RAM的读取校验、SM3签名信息、MD5摘要信息、BCC校验、综合裁决、异常数据恢复功能是根据系统中断同时进行,处理RAM异常变化的检错和恢复。本发明中的并行首先是指系统正常功能和检错恢复功能并行进行;这些功能是通过FPGA实现的,不占用处理器时间。LV1、LV2的检错恢复,可以根据系统设计情况和FPGA资源情况设计为并行或者串行。
本发明的实时的含义是:在本文中,LV1/LV2链表及对应被保护RAM的读取校验、SM3签名信息、MD5摘要信息、BCC校验、综合裁决、异常数据恢复功能是根据系统中断同时进行,实时检错与恢复,每个中断完成关键数据区的检错与恢复,实时性高。
需要说明的是:通讯过程校验的目的是防止通讯过程出错导致的误判,为可选功能。如果系统不考虑通讯接口出错的情况时,可以去掉此校验过程,即:读取一次数据作为正确数据,进行后续判断。
需要说明的是:本发明实施例中采用SM3签名信息、MD5摘要信息、BCC校验三种检验方式三次校验(每种方式校验一次)进行描述,但本领域技术人员需知,校验方式不限于这三种,也可以选用其他的常见的校验方式,例如CRC32、CRC64等。校验方式和校验次数均可以任意组合。使用不同的校验方式可以防止某种校验的原理性问题导致的最终误判。应用时可以根据系统对于误判的容忍度进行方式与次数的选择/组合。
实施例3
本发明还提供了一种在线并行处理的软错误实时检错与恢复装置,包括链表管理模块、以及检错恢复模块,其中:
链表管理模块,用于将被保护RAM空间分成多个被保护区域;将所有被保护区域分成1个或多个级别,最高级别为每个中断周期完成一次检错与恢复功能;其他级别为多个中断周期完成一次检错与恢复功能;将各级别被保护区域注册生成与级别数量相应的链表,所述链表位于被保护RAM空间;将各链表及链表中被保护区域备份至少两份到其他RAM空间;所述链表内容包括相同级别的各被保护区域位置、长度和各个备份的位置;
检错恢复模块,用于并行处理各级别链表及链表中各被保护区域的检错与恢复:其中,对任一级别的链表及链表中各被保护区域进行检错与恢复的过程为:
对链表及其备份进行检错,并对其异常进行恢复;
对链表中各被保护区域及其备份进行检错,并对其异常进行恢复。
本实施例装置中各模块的具体实现,以及链表及其备份的检错与恢复,采取实施例1和实施例2的实施方式。
本实施例的装置可实现RAM空间的检错与恢复,能够对出错数据位置并且能够实现在一个中断节拍内完成恢复,提高了系统对RAM异常处理的实时性,降低了RAM异常对系统的影响。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。
Claims (15)
1.一种在线并行处理的软错误实时检错与恢复方法,其特征是,包括以下过程:
将被保护RAM空间的各被保护区域分成1个或多个级别,最高级别为每个中断周期完成一次检错与恢复功能;其他级别为多个中断周期完成一次检错与恢复功能;
将各级别被保护区域注册生成与级别数量相应的链表,所述链表位于被保护RAM空间;将各链表及链表中被保护区域备份至少两份到其他空间;
并行处理各级别链表及链表中各被保护区域的检错与恢复;
任一级别链表及链表中各被保护区域进行检错与恢复的过程为:
对链表及其备份进行检错,如果检错结果为异常则对异常进行恢复;
对链表中各被保护区域及其备份进行检错,如果检错结果为异常则对异常进行恢复;
所述对异常进行恢复,包括:
将异常数据区和正常数据区按顺序划分成N块基本数据块;
计算异常数据区的数据CRC校验码Cen,其中n=0、1、2、3..m,而且N/2≤ 2m<N;其中Cen计算方法为:从第1个基本数据块开始取Pn个基本数据块,然后每隔Pn个基本数据块取Pn个基本数据块,将取出的所有基本数据块作为数据源计算CRC值,间隔的基本数据块个数Pn=2n;
计算正常数据区的数据CRC校验码Ccn,其中,Ccn计算方法为:从第1个基本数据块开始取Pn个基本数据块,然后每隔Pn个基本数据块,取Pn个基本数据块,将取出的所有基本数据块作为数据源计算CRC值;
判断Ccm和Cem两个CRC是否相等:如果相等,则更新异常数据标记位置,指向异常数据区的后半部分范围;如果不相等,则更新异常数据标记位置,指向异常数据区的前半部分范围;
重复以上判断过程,判断Ccn和Cen值,其中n从m-1依次递减直至为0,每个步骤均更新异常数据标记位置;在判断完n=0步骤后,此时异常数据标记位置已经缩小到了异常数据所在异常数据区的基本数据块;
将正常数据区内正确的基本数据块内容通过高速接口拷贝复制到异常数据标记位置指向的异常数据区内异常的基本数据块,此异常的基本数据块完成恢复;
计算正常数据区和异常数据区内所有基本数据块的CRC值,比较两个CRC值是否相等,如果两者不相等,重复以上所有的步骤;如果相等,则异常数据恢复结束。
2.根据权利要求1所述的一种在线并行处理的软错误实时检错与恢复方法,其特征是,所述方法采用并行处理模块执行,所述并行处理模块通过高速接口连接访问被保护RAM空间,并采用独立的DDR、SRAM,或者RAM空间用于备份存储。
3.根据权利要求1所述的一种在线并行处理的软错误实时检错与恢复方法,其特征是,所述对链表及其备份进行检错,包括:
读取链表及其备份;
采用包括SM3签名信息、MD5信息摘要和BCC校验码中任意一种或多种组合校验方式,对链表及其备份进行校验;
对比各校验方式的判断结果,确定链表及其备份的正确性。
4.根据权利要求3所述的一种在线并行处理的软错误实时检错与恢复方法,其特征是,采用多种组合校验方式时,各个校验方式的校验过程并行处理。
5.根据权利要求3所述的一种在线并行处理的软错误实时检错与恢复方法,其特征是,还包括:对读取的链表及其备份进行通讯过程校验。
6.根据权利要求3所述的一种在线并行处理的软错误实时检错与恢复方法,其特征是,采用一种校验方式对链表及其备份进行校验,包括:
计算链表及其备份的SM3签名信息,并比对;
至少有两份SM3签名信息相同,则判断SM3签名信息相同的所有份数据正常,其他份数据异常。
7.根据权利要求6所述的一种在线并行处理的软错误实时检错与恢复方法,其特征是,所述对比各校验方式的判断结果,确定链表及其备份的正确性,包括:
对比链表及其备份的SM3签名信息、MD5信息摘要、BCC校验码三种校验方式的判断结果,如果两种及以上的校验方式判断结果一致,则将此一致的结果作为最终裁决结果。
8.根据权利要求1所述的一种在线并行处理的软错误实时检错与恢复方法,其特征是,所述对链表中各被保护区域及其备份进行检错,包括:
若链表级别为最高级别时:
对链表中各被保护区域及其备份依次进行检错,其中,对链表中任一个被保护区域及其备份进行检错,包括:
读取链表中当前一个被保护区域及其备份;
采用包括SM3签名信息、MD5信息摘要和BCC校验码任意一种或多种组合校验方式,对链表中当前被保护区域及其备份进行校验;
对比各校验方式的判断结果,确定链表中当前被保护区域及其备份的正确性。
9.根据权利要求1所述的一种在线并行处理的软错误实时检错与恢复方法,其特征是,所述对链表中各被保护区域及其备份进行检错,包括:
当链表级别为其他级别时:
将链表中所有被保护区域划分为多个组,
在每个中断周期,对链表中任一组中任一被保护区域及其备份进行检错,包括:
读取链表中当前检测组中当前一个被保护区域及其备份;
采用包括SM3签名信息、MD5信息摘要和BCC校验码任意一种或多种组合校验方式,对链表中当前检测组中当前被保护区域及其备份进行校验;
对比各校验方式的判断结果,确定链表中当前检测组中当前被保护区域及其备份的正确性。
10.根据权利要求9所述的一种在线并行处理的软错误实时检错与恢复方法,其特征是,采用多种组合校验方式时,各个校验方式的校验过程并行处理。
11.根据权利要求9所述的一种在线并行处理的软错误实时检错与恢复方法,其特征是,还包括:对读取的链表中当前被保护区域及其备份进行通讯过程校验。
12.根据权利要求9所述的一种在线并行处理的软错误实时检错与恢复方法,其特征是,采用一种校验方式对链表中当前被保护区域及其备份进行校验,包括:
计算链表中当前被保护区域及其备份的SM3签名信息,并比对;
至少有两份SM3签名信息相同,则判断SM3签名信息相同的所有份数据正常,其他份数据异常。
13.根据权利要求12所述的一种在线并行处理的软错误实时检错与恢复方法,其特征是,所述对比各校验方式的判断结果,确定链表中当前被保护区域及其A、B两个备份的正确性,包括:
对比链表中当前被保护区域及其A、B两个备份的SM3签名信息、MD5信息摘要、BCC校验码三种校验方式的判断结果,如果两种及以上的校验方式判断结果一致,则将此一致的结果作为最终裁决结果。
14.根据权利要求1所述的一种在线并行处理的软错误实时检错与恢复方法,其特征是,异常的基本数据块完成恢复后还包括:重新读取异常的基本数据块;计算重新读取异常的基本数据块CRC值,并计算对应正确的基本数据块CRC值;比较两个CRC值是否相等,如果相等,则此异常的基本数据块完成恢复。
15.一种在线并行处理的软错误实时检错与恢复系统,包括链表管理模块、以及检错恢复模块,其中:
链表管理模块,用于将被保护RAM空间的各被保护区域分成1个或多个级别,最高级别为每个中断周期完成一次检错与恢复功能;其他级别为多个中断周期完成一次检错与恢复功能;将各级别被保护区域注册生成与级别数量相应的链表,所述链表位于被保护RAM空间;将各链表及链表中被保护区域备份至少两份到其他RAM空间;
检错恢复模块,用于并行处理各级别链表及链表中各被保护区域的检错与恢复;
任一级别链表及链表中各被保护区域进行检错与恢复的过程为:
对链表及其备份进行检错,如果检错结果为异常则对异常进行恢复;
对链表中各被保护区域及其备份进行检错,如果检错结果为异常则对异常进行恢复;
所述对异常进行恢复,包括:
将异常数据区和正常数据区按顺序划分成N块基本数据块;
计算异常数据区的数据CRC校验码Cen,其中n=0、1、2、3..m,而且N/2≤ 2m<N;其中Cen计算方法为:从第1个基本数据块开始取Pn个基本数据块,然后每隔Pn个基本数据块取Pn个基本数据块,将取出的所有基本数据块作为数据源计算CRC值,间隔的基本数据块个数Pn=2n;
计算正常数据区的数据CRC校验码Ccn,其中,Ccn计算方法为:从第1个基本数据块开始取Pn个基本数据块,然后每隔Pn个基本数据块,取Pn个基本数据块,将取出的所有基本数据块作为数据源计算CRC值;
判断Ccm和Cem两个CRC是否相等:如果相等,则更新异常数据标记位置,指向异常数据区的后半部分范围;如果不相等,则更新异常数据标记位置,指向异常数据区的前半部分范围;
重复以上判断过程,判断Ccn和Cen值,其中n从m-1依次递减直至为0,每个步骤均更新异常数据标记位置;在判断完n=0步骤后,此时异常数据标记位置已经缩小到了异常数据所在异常数据区的基本数据块;
将正常数据区内正确的基本数据块内容通过高速接口拷贝复制到异常数据标记位置指向的异常数据区内异常的基本数据块,此异常的基本数据块完成恢复;
计算正常数据区和异常数据区内所有基本数据块的CRC值,比较两个CRC值是否相等,如果两者不相等,重复以上所有的步骤;如果相等,则异常数据恢复结束。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010849103.0A CN112053737B (zh) | 2020-08-21 | 2020-08-21 | 一种在线并行处理的软错误实时检错与恢复方法及系统 |
GB2303510.8A GB2613120A (en) | 2020-08-21 | 2021-02-02 | Online parallel processing soft error real-time error detection and recovery method and system |
PCT/CN2021/074836 WO2022037022A1 (zh) | 2020-08-21 | 2021-02-02 | 一种在线并行处理的软错误实时检错与恢复方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010849103.0A CN112053737B (zh) | 2020-08-21 | 2020-08-21 | 一种在线并行处理的软错误实时检错与恢复方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112053737A CN112053737A (zh) | 2020-12-08 |
CN112053737B true CN112053737B (zh) | 2022-08-26 |
Family
ID=73600711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010849103.0A Active CN112053737B (zh) | 2020-08-21 | 2020-08-21 | 一种在线并行处理的软错误实时检错与恢复方法及系统 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN112053737B (zh) |
GB (1) | GB2613120A (zh) |
WO (1) | WO2022037022A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112053737B (zh) * | 2020-08-21 | 2022-08-26 | 国电南瑞科技股份有限公司 | 一种在线并行处理的软错误实时检错与恢复方法及系统 |
CN114117417A (zh) * | 2021-10-29 | 2022-03-01 | 航天信息股份有限公司 | 一种程序保护方法及系统 |
CN115426028B (zh) * | 2022-08-29 | 2023-10-20 | 鹏城实验室 | 一种数据编译码的故障容错方法、系统及高速通信系统 |
CN115421967B (zh) * | 2022-11-04 | 2022-12-30 | 中国电力科学研究院有限公司 | 一种评估二次设备存储异常风险点的方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937375A (zh) * | 2010-08-27 | 2011-01-05 | 浙江大学 | 皮卫星中央处理器的代码、数据实时纠检错方法及装置 |
CN111552590A (zh) * | 2020-04-16 | 2020-08-18 | 国电南瑞科技股份有限公司 | 一种电力二次设备内存位翻转的检测恢复方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4042466B2 (ja) * | 2002-05-01 | 2008-02-06 | 株式会社デンソー | メモリ診断装置及び制御装置 |
CN102779557B (zh) * | 2011-05-13 | 2015-10-28 | 苏州雄立科技有限公司 | 集成memory模块的芯片数据检测校正方法及系统 |
WO2012119410A1 (zh) * | 2011-08-23 | 2012-09-13 | 华为技术有限公司 | 一种检测数据可靠性的方法和装置 |
JP7065578B2 (ja) * | 2017-09-21 | 2022-05-12 | キヤノン株式会社 | 情報処理装置、その制御方法、及びプログラム |
CN112053737B (zh) * | 2020-08-21 | 2022-08-26 | 国电南瑞科技股份有限公司 | 一种在线并行处理的软错误实时检错与恢复方法及系统 |
-
2020
- 2020-08-21 CN CN202010849103.0A patent/CN112053737B/zh active Active
-
2021
- 2021-02-02 WO PCT/CN2021/074836 patent/WO2022037022A1/zh active Application Filing
- 2021-02-02 GB GB2303510.8A patent/GB2613120A/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937375A (zh) * | 2010-08-27 | 2011-01-05 | 浙江大学 | 皮卫星中央处理器的代码、数据实时纠检错方法及装置 |
CN111552590A (zh) * | 2020-04-16 | 2020-08-18 | 国电南瑞科技股份有限公司 | 一种电力二次设备内存位翻转的检测恢复方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
GB2613120A (en) | 2023-05-24 |
WO2022037022A1 (zh) | 2022-02-24 |
CN112053737A (zh) | 2020-12-08 |
GB202303510D0 (en) | 2023-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112053737B (zh) | 一种在线并行处理的软错误实时检错与恢复方法及系统 | |
CN111552590B (zh) | 一种电力二次设备内存位翻转的检测恢复方法及系统 | |
US6397357B1 (en) | Method of testing detection and correction capabilities of ECC memory controller | |
US7447948B2 (en) | ECC coding for high speed implementation | |
KR100898650B1 (ko) | 애플리케이션 프로그램에의 프로세스 킬 오류 벡터링 | |
US8996953B2 (en) | Self monitoring and self repairing ECC | |
US20070050688A1 (en) | Memory correction system and method | |
US20120084628A1 (en) | Ram single event upset (seu) method to correct errors | |
US8181094B2 (en) | System to improve error correction using variable latency and associated methods | |
EP2770507B1 (en) | Memory circuits, method for accessing a memory and method for repairing a memory | |
JP7418397B2 (ja) | コモンモード障害信号に応じたメモリスキャン動作 | |
Gottscho et al. | Software-defined error-correcting codes | |
Shirvani et al. | Software-implemented hardware fault tolerance experiments: COTS in space | |
Tan et al. | CFEDR: Control-flow error detection and recovery using encoded signatures monitoring | |
US7240272B2 (en) | Method and system for correcting errors in a memory device | |
Yu et al. | Efficient software checking for fault tolerance | |
US11640332B1 (en) | Execute in place architecture with integrity check | |
US20230195565A1 (en) | Multilevel Memory System with Copied Error Detection Bits | |
Li et al. | A low-cost correction algorithm for transient data errors | |
RU2465636C1 (ru) | Способ исправления одиночных ошибок и предотвращения возникновения двойных ошибок в регистровом файле и устройство для его осуществления | |
Garg | Soft error fault tolerant systems: cs456 survey | |
CN118467221A (zh) | 一种服务器故障危险等级识别及故障恢复方法 | |
KR101173873B1 (ko) | 데이터 보호 및 미러링 방법 및 그 시스템 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |