一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

单比特翻转快速修复方法、装置、计算机设备和存储介质与流程

2021-11-09 22:10:00 来源:中国专利 TAG:


1.本技术涉及数字处理芯片技术领域,特别是涉及一种单比特翻转快速修复方法、装置、计算机设备和存储介质。


背景技术:

2.在计算机芯片技术中,由于芯片封装材料的影响,可能会导致内存出现单比特翻转。单比特翻转是指:内存中某个比特位随机跳变,原来存储的1变为0,或者原来存储的1变为0,这种情况会严重影响程序的执行或数据的存储,例如原来代表数字4的二进制位中某个位由于单比特翻转可能会导致最终显示为$,且单比特翻转的现象是随机的,每次出现的错误都不一样,重写或复位可以恢复正常,但运行时不可恢复,当出现大量数据存储和处理时,如果总是需要复位,会浪费大量的时间和计算资源。
3.目前,普遍采用增加硬件来解决单比特翻转的问题,例如在内存控制器中增加edac(error detection and correction,错误检测与纠正)系统结构,该硬件结构的主要思想是在原始数据写入内存时,根据写入的原始数据生成一定位数的校验码,与相应的原始数据一起保存起来;当读出时,同时也将校验码读出,根据校验码和读出的数据进行判决。例如传统的奇偶校验码,根据原始数据中1的位数为奇数,则将奇偶校验位置为1,若发生单比特翻转后,导致1的位数变为偶数,与已存储的奇偶校验位对比后,可判决发生了单比特翻转,可自动纠正,将正确的数据输出,并同时将改正后的数据回写覆盖原来错误的数据,最后将正确的数据传送给处理器进行处理。所有这一切动作都是靠硬件设计自动完成的。
4.但目前这种方法需要增加硬件资源开销,且每次数据读取都要经过内存控制器,降低了数据处理的实时性。


技术实现要素:

5.基于此,有必要针对上述技术问题,提供一种单比特翻转快速修复方法、装置、计算机设备和存储介质。
6.一种单比特翻转快速修复方法,所述方法包括:
7.上电后,将内部ram内的原始程序段分为多段子程序;
8.拷贝所述多段子程序,作为副本程序段;
9.针对每段副本程序段分别求取原始程序校验和,存储所述原始程序校验和以及所述副本程序段于外部ram中;
10.在定时器触发下,调用中断响应服务对每段子程序求取实时校验和,与所述原始程序校验和进行比对,得到所述子程序的程序状态;
11.根据所述程序状态修复所述原始程序段。
12.在其中一个实施例中,所述在定时器触发下,调用中断响应服务对每段子程序求取实时校验和,与所述原始程序校验和进行比对,得到所述子程序的程序状态,包括:
13.调用中断响应服务针对所述实时校验和与所述原始程序校验和进行比对,得到比对结果;
14.若所述比对结果为检验错误,则判断所述子程序的程序状态为程序出错。
15.在其中一个实施例中,所述根据所述程序状态修复所述原始程序段,包括:
16.若所述程序状态为程序出错,则获取相应的出错子程序在所述内部ram的起始地址和程序占用空间长度;
17.根据所述起始地址和所述程序占用空间长度,将所述出错子程序与相应的副本程序段逐字段比较,得到出错字段;
18.针对所述出错字段与相应的副本字段逐位比较,得到出错位数;
19.根据所述出错位数修复所述原始程序段。
20.在其中一个实施例中,所述根据所述出错位数修复所述原始程序段,包括:
21.若所述出错位数只有一位,则将相应的出错位翻转,得到纠错后的子程序;
22.调用所述中断响应服务针对所述纠错后的子程序进行校验,得到校验结果;
23.若在预设时间段内,所述校验结果均为程序正常,则判断修复成功。
24.在其中一个实施例中,所述内部ram包括数据常数区;所述调用所述中断响应服务针对所述纠错后的子程序进行校验之前,所述方法还包括:
25.判断所述数据常数区是否发生变化;
26.若发生变化,则将外部备份数据区的相应数据复制到所述数据常数区中;其中,所述外部备份数据区是上电时拷贝原始数据常数区中的数据至所述外部ram后得到的。
27.在其中一个实施例中,若所述出错位数包含多位,则触发重启指令以重启整个芯片。
28.在其中一个实施例中,当所述中断响应服务执行时,停止运行其他程序。
29.一种单比特翻转快速修复装置,所述装置包括:
30.子程序分割模块,用于上电后,将内部ram内的原始程序段分为多段子程序;
31.副本程序段拷贝模块,用于拷贝所述多段子程序,作为副本程序段;
32.原始程序校验和求取模块,用于针对每段副本程序段分别求取原始程序校验和,存储所述原始程序校验和以及所述副本程序段于外部ram中;
33.程序状态判决模块,用于在定时器触发下,调用中断响应服务对每段子程序求取实时校验和,与所述原始程序校验和进行比对,得到所述子程序的程序状态;
34.原始程序段修复模块,用于根据所述程序状态修复所述原始程序段。
35.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上述的单比特翻转快速修复方法实施例中的各步骤。
36.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述的单比特翻转快速修复方法实施例中的各步骤。
37.上述单比特翻转快速修复方法、装置、计算机设备和存储介质,通过在芯片上电后,将内部ram内的原始程序段分为多段子程序;拷贝上述多段子程序,作为副本程序段;针对每段副本程序段分别求取原始程序校验和,存储上述原始程序校验和以及上述副本程序段于外部ram中;在定时器触发下,调用中断响应服务对每段子程序求取实时校验和,与上述原始程序校验和进行比对,得到子程序的程序状态;根据程序状态修复原始程序段。本申
请主要通过调用中断响应服务进行修复,与传统技术中需要增加内存控制器进行修复的方案相比,不需要增加硬件资源,在处理器进行数据读取时不需要经过内存控制器,进一步提高了芯片处理器进行数据处理的实时性。
附图说明
38.图1为一个实施例中单比特翻转快速修复方法的流程示意图;
39.图2为另一个实施例中单比特翻转快速修复方法的流程示意图;
40.图3为又一个实施例中单比特翻转快速修复方法的流程示意图;
41.图4为一个实施例中单比特翻转快速修复装置的结构框图;
42.图5为一个实施例中计算机设备的内部结构图。
具体实施方式
43.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
44.本技术提供的单比特翻转快速修复方法,可以应用于电力系统中的zynq芯片,尤其是csd

602系列合并单元装置,csd

602系列合并单元装置包括一系列的芯片型号,这些芯片适用于数字化变电站。该装置位于变电站的过程层,可采集传统电流、电压互感器的模拟量信号,以及电子式电流、电压互感器的数字量信号,并将采样值(sv)按照iec61850
‑9‑
2以光

以太网形式上送给间隔层的保护、测控、故障录波等装置。该装置还可根据过程层的智能终端发送过来的goose或本装置就地采集开入值来判断刀闸、断路器位置完成切换或并列功能。同时可以与其他测控装置进行通信,将其他测控装置的运行状态、告警、遥信等信息上送。
45.zynq芯片封装材料中含有α粒子,导致zynq芯片中的高速ram(random access memory,随机存取存储器,也叫主存,是与cpu直接交换数据的内部存储器)易产生位翻转,而zynq芯片外部为ddr(ddr sdram,全称为double data rate synchronous dynamic random

access memory,双倍速率同步动态随机存取内存)内存,翻转的几率非常低。本技术主要提供针对zynq芯片内部ram区的位翻转的修补方案。
46.csd602芯片内的ram主要分为内部ram和外部ram,如下表所示:
[0047][0048]
在一个实施例中,如图1所示,提供了一种单比特翻转快速修复方法,以该方法应用于芯片中的处理器(cpu)为例进行说明,包括以下步骤:
[0049]
步骤s101,上电后,将内部ram内的原始程序段分为多段子程序。
[0050]
其中,原始程序段为实现写入芯片的应用程序的程序代码。
[0051]
具体地,芯片上电后,将内存中的原始程序段分为多段子程序。
[0052]
步骤s102,拷贝多段子程序,作为副本程序段。
[0053]
具体地,拷贝上述多段子程序,作为副本程序段,原来的内部ram内的原始程序段依然存在于内部ram内。
[0054]
步骤s103,针对每段副本程序段分别求取原始程序校验和,存储原始程序校验和以及副本程序段于外部ram中;
[0055]
其中,原始程序校验和,也称为程序校验码,即采用一定的规则计算出来的校验码,例如奇偶校验码,即计算每段子程序的源代码中1的位数是奇数还是偶数,也可以是其他形式的校验码,不限于是奇偶校验码。
[0056]
具体地,处理器调用misr(master interrupt service routine,主中断服务程序)针对上述每段副本程序段分别求取原始程序校验和,并将该原始程序校验和以及相应的副本程序段存储于外部ram中。
[0057]
步骤s104,在定时器触发下,调用中断响应服务对每段子程序求取实时校验和,与原始程序校验和进行比对,得到子程序的程序状态。
[0058]
具体地,在定时器触发下,处理器调用中断响应服务(例如125us中断)对内部ram中的每段子程序求取实时校验和,将该实时校验和与存储于外部ram中的原始程序校验和进行比对,得到子程序的程序状态,例如若比对结果不一致,则表明该段子程序出错,若比对一致,则表明该段子程序未出现位翻转。
[0059]
步骤s105,根据程序状态修复原始程序段。
[0060]
具体地,若上述程序状态为程序出错,则针对出错的子程序进行修复,从而修复整
个原始程序段,修复方式包括重启或者找到翻转的位并进行相应地翻转。
[0061]
上述实施例,通过在芯片上电后,将内部ram内的原始程序段分为多段子程序;拷贝上述多段子程序,作为副本程序段;针对每段副本程序段分别求取原始程序校验和,存储上述原始程序校验和以及上述副本程序段于外部ram中;在定时器触发下,调用中断响应服务对每段子程序求取实时校验和,与上述原始程序校验和进行比对,得到子程序的程序状态;根据程序状态修复原始程序段。本实施例主要通过调用中断响应服务进行修复,与传统技术中需要增加内存控制器进行修复的方案相比,不需要增加硬件资源,在处理器进行数据读取时不需要经过内存控制器,进一步提高了芯片处理器进行数据处理的实时性。
[0062]
在一实施例中,上述步骤s104,包括:调用中断响应服务针对实时校验和与原始程序校验和进行比对,得到比对结果;若比对结果为检验错误,则判断子程序的程序状态为程序出错。
[0063]
具体地,在定时器触发下,处理器调用中断响应服务(例如125us中断)对内部ram中的每段子程序求取实时校验和,将该实时校验和与存储于外部ram中的原始程序校验和进行比对,得到子程序的程序状态,例如若比对结果不一致,则表明该段子程序出错,若比对一致,则表明该段子程序未出现位翻转。
[0064]
上述实施例,通过计算实时校验和,并将实时校验和与已存储的原始程序校验和进行比对,排查出出现了位翻转的子程序,得到了子程序的程序状态,为后续进行程序修复提供数据铺垫。
[0065]
在一实施例中,上述步骤s105,包括:若程序状态为程序出错,则获取相应的出错子程序在内部ram的起始地址和程序占用空间长度;根据起始地址和程序占用空间长度,将出错子程序与相应的副本程序段逐字段比较,得到出错字段针对出错字段与相应的副本字段逐位比较,得到出错位数;根据出错位数修复原始程序段。
[0066]
如图2所示,图2为另一实施例中的单比特翻转快速修复方法的流程示意图,misr把原始程序段分为若干段,在125us中断对每段子程序进行校验,如某一段校验有问题,则返回该段的起始地址区和长度给处理器中处理该应用程序的进程,应用程序进程发现misr程序校验有问题,应用程序进程获得出错程序段的起始地址和长度,与外部ram中备份的副本程序段逐个long(long为一种字段,一个long一般为4字节,在某些系统中也可能为8字节)进行比较,可以发现某个long发生了变化,再对该long的逐个位进行比较,得到出错位数,例如是一个位翻转还是多个位都发生了翻转。
[0067]
上述实施例,通过中断响应服务将子程序与副本程序段进行逐字段地比较,能够准确定位出错字段,有利于后续准确修复。
[0068]
在一实施例中,上述根据出错位数修复所述原始程序段,包括:若出错位数只有一位,则将相应的出错位翻转,得到纠错后的子程序;调用中断响应服务针对纠错后的子程序进行校验,得到校验结果;若在预设时间段内,校验结果均为程序正常,则判断修复成功。
[0069]
如图2所示,在出错程序段只有1个bit发生变化,则根据备份的副本程序段,修复该bit,如没有发生变化,则继续正常执行程序。并继续下面的misr程序校验,如在预设时间段(例如1分钟内)没有出现misr校验异常,则证明修复成功,在预设时间段(例如1分钟内)以内还出现misr校验错,则立即重启整个芯片。
[0070]
上述实施例,在修复后,重新对程序进行校验,而不用每次都重启程序,有利于提
高芯片的数据处理效率。
[0071]
在一实施例中,上述内部ram包括数据常数区,上述调用中断响应服务针对纠错后的子程序进行校验之前,该方法还包括:
[0072]
判断数据常数区是否发生变化;若发生变化,则将外部备份数据区的相应数据复制到数据常数区中;其中,外部备份数据区是上电时拷贝原始数据常数区中的数据至外部ram后得到的。
[0073]
具体地,该程序段只有1个bit发生变化,则根据备份的程序区,修复该bit,同时判断数据常数区(如刻度系数、9

2发送通道、配置区域)是否发生变化,如发生变化,将外部备份区域拷贝到相应的数据常数区中。如没有发生变化,则继续正常执行程序。其中,外部备份数据区是上电时拷贝原始数据常数区中的数据至外部ram后得到的。
[0074]
上述实施例,通过对数据常数区进行校验和修复,有利于提高整个程序的准确性。
[0075]
在一实施例中,若出错位数包含多位,则触发重启指令以重启整个芯片。
[0076]
具体地,若在出错程序段中不止1个bit发生变化,则说明被篡改的程序已破坏了程序区,则重启整个芯片。
[0077]
上述实施例,在多个位发生翻转时重启整个芯片,保证了程序段修复的效率。
[0078]
在一实施例中,一旦发现misr校验异常,将备份的副本程序段直接拷贝到内部ram,外部备份的数据常数区拷贝到芯片内部ram的数据常数区中。在修复和判断过程中,在125us中断程序进行时,所有其它程序均停止运行,包括采集和sv(采样值)的发送。修复完程序后,首先开放数据采集和sv(采样值)接收,延时1.5ms后,实时数据区有5个点为新采集的数据后才开放sv(采样值)的发送。在1个小时以内再次出现misr或其它校验和出错,说明恢复失败,则重启整个芯片。在合并单元程序中,有关sv(采样值)程序都放在芯片内部ram的程序区,需要保证该区域程序完全正确。
[0079]
在一实施例中,如图3所示,图3展示了又一实施例中的单比特翻转快速修复方法的流程示意图,在该修复方法中,前提条件:不考虑在1个小时内,外部ram备份程序区和芯片内部ram的程序区同时修改。
[0080]
上电初始化后将dsp的内部程序区0x12460c~0x13bfff,整个拷贝到外部ram,对此段备份程序区(在ddr的数据区)做一个程序校验和,外部数据的ram具有充足的空间来存放备份程序区,上电时,将所要使用的常数区、定值区,在外部数据区做一个备份,并对这备份区做一个校验和;每小时检一次备份程序的校验和是否正确,若异常次数大于预设次数,例如3次,则修复异常,若超过3次仍然未修复,则重新芯片。
[0081]
上述实施例,不需要增加硬件资源开销,提高了数据处理的实时性。
[0082]
应该理解的是,虽然图1

3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1

3中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0083]
在一个实施例中,如图4所示,提供了一种单比特翻转快速修复装置400,包括:子程序分割模块401、副本程序段拷贝模块402、原始程序校验和求取模块403、程序状态判决
模块404、原始程序段修复模块405,,其中:
[0084]
子程序分割模块401,用于上电后,将内部ram内的原始程序段分为多段子程序;
[0085]
副本程序段拷贝模块402,用于拷贝所述多段子程序,作为副本程序段;
[0086]
原始程序校验和求取模块403,用于针对每段副本程序段分别求取原始程序校验和,存储所述原始程序校验和以及所述副本程序段于外部ram中;
[0087]
程序状态判决模块404,用于在定时器触发下,调用中断响应服务对每段子程序求取实时校验和,与所述原始程序校验和进行比对,得到所述子程序的程序状态;
[0088]
原始程序段修复模块405,用于根据所述程序状态修复所述原始程序段。
[0089]
在一实施例中,程序状态判决模块404,进一步用于:调用中断响应服务针对所述实时校验和与所述原始程序校验和进行比对,得到比对结果;若所述比对结果为检验错误,则判断所述子程序的程序状态为程序出错。
[0090]
在一实施例中,原始程序段修复模块405,进一步用于,若所述程序状态为程序出错,则获取相应的出错子程序在所述内部ram的起始地址和程序占用空间长度;根据所述起始地址和所述程序占用空间长度,将所述出错子程序与相应的副本程序段逐字段比较,得到出错字段;针对所述出错字段与相应的副本字段逐位比较,得到出错位数;根据所述出错位数修复所述原始程序段。
[0091]
在一实施例中,上述原始程序段修复模块405,进一步用于,若所述出错位数只有一位,则将相应的出错位翻转,得到纠错后的子程序;调用所述中断响应服务针对所述纠错后的子程序进行校验,得到校验结果;若在预设时间段内,所述校验结果均为程序正常,则判断修复成功。
[0092]
在一实施例中,所述内部ram包括数据常数区;上述原始程序段修复模块405,还用于,判断所述数据常数区是否发生变化;若发生变化,则将外部备份数据区的相应数据复制到所述数据常数区中;其中,所述外部备份数据区是上电时拷贝原始数据常数区中的数据至所述外部ram后得到的。
[0093]
在一实施例中,若所述出错位数包含多位,则触发重启指令以重启整个芯片。
[0094]
在一实施例中,当所述中断响应服务执行时,停止运行其他程序。
[0095]
关于单比特翻转快速修复装置的具体限定可以参见上文中对于单比特翻转快速修复方法的限定,在此不再赘述。上述单比特翻转快速修复装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0096]
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储应用程序数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种单比特翻转快速修复方法。
[0097]
本领域技术人员可以理解,图5中示出的结构,仅仅是与本技术方案相关的部分结
构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0098]
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述单比特翻转快速修复方法实施例中的各步骤。
[0099]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现实现上述单比特翻转快速修复方法实施例中的各步骤。
[0100]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read

only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
[0101]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0102]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献