CN117116332B - 一种多比特错误处理方法、装置、服务器及存储介质 - Google Patents

一种多比特错误处理方法、装置、服务器及存储介质 Download PDF

Info

Publication number
CN117116332B
CN117116332B CN202311157392.8A CN202311157392A CN117116332B CN 117116332 B CN117116332 B CN 117116332B CN 202311157392 A CN202311157392 A CN 202311157392A CN 117116332 B CN117116332 B CN 117116332B
Authority
CN
China
Prior art keywords
bit error
instruction
function area
address
cpu
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
CN202311157392.8A
Other languages
English (en)
Other versions
CN117116332A (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.)
Hexin Technology Co ltd
Shanghai Hexin Digital Technology Co ltd
Original Assignee
Hexin Technology Co ltd
Shanghai Hexin Digital 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 Hexin Technology Co ltd, Shanghai Hexin Digital Technology Co ltd filed Critical Hexin Technology Co ltd
Priority to CN202311157392.8A priority Critical patent/CN117116332B/zh
Publication of CN117116332A publication Critical patent/CN117116332A/zh
Application granted granted Critical
Publication of CN117116332B publication Critical patent/CN117116332B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/56External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明涉及数据存储领域,公开了一种多比特错误处理方法、装置、服务器及存储介质,该方法包括:当检测到CPU读取的指令发生多比特错误时,触发CPU中断,并再次读取当前指令;进行校验,并判断是否校验失败;若校验失败,则确定多比特错误发生的函数区域和错误次数;基于多比特错误发生的函数区域和错误次数,对存储器进行重新编译;将重新编译后存储器中的当前指令发送至CPU指令寄存器中,以使运行该指令,本发明通过在检测到多比特错误时读取指令,对指令进行校验,以确定多比特错误的函数区域和错误次数,并对存储器进行重新编译,以保证服务器正常运行,从而保证数据的安全性。

Description

一种多比特错误处理方法、装置、服务器及存储介质
技术领域
本发明涉及数据存储技术领域,具体涉及一种多比特错误处理方法、装置、服务器及存储介质。
背景技术
静态随机存取存储器(Static Random Access Memory,SRAM)是随机存取存储器的一种,具有掉电数据丢失的特性。静态随机存取存储器的代码段中存放有CPU需要读取的指令,这部分存储的内容至关重要,一旦这部分地址范围内的存储失效,将极大概率导致程序无法运行,进而影响服务器的安全性和稳定性。
在现有技术中,静态随机存取存储器中具有ECC(Error Checking andCorrecting,错误检查和纠正)功能,目前ECC能够实现单比特纠错,在一定程度上保证静态随机存取存储器内数据的安全性,但双比特及以上的错误会超出ECC的纠错能力,无法保证数据的安全性。
发明内容
有鉴于此,本发明提供了一种多比特错误处理方法、装置、服务器及存储介质,以解决存储器中出现多比特错误的问题。
第一方面,本发明提供了一种多比特错误处理方法,该方法包括:
当检测到CPU读取的指令发生多比特错误时,触发CPU中断,并再次读取当前指令;
对再次读取的当前指令进行校验,并判断是否校验失败;
若对再次读取的当前指令校验失败,则确定多比特错误发生的函数区域和错误次数;
基于多比特错误发生的函数区域和错误次数,对存储器进行重新编译,所述存储器用于存储所述当前指令;
将重新编译后存储器中的所述当前指令发送至CPU指令寄存器中,以使运行该指令。
本发明通过在检测到多比特错误时读取指令,对指令进行校验,以在发生多比特错误时确定发生多比特错误的函数区域和错误次数,并对存储器进行重新编译,以保证服务器正常运行,从而保证数据的安全性。
在一种可选的实施方式中,所述方法还包括:
当检测到CPU读取指令时,对读取的指令进行校验;
若校验结果为校验通过,则将读取的指令发送至CPU指令寄存器中;
若校验结果为单比特错误,则对单比特错误进行纠正,并将纠正后的指令发送至CPU指令寄存器中;
若校验结果为非单比特错误,则确定CPU读取的指令发生多比特错误。
本发明通过对读取的指令进行校验,以确定是否发生单比特错误,并在发生单比特错误时对单比特错误进行纠正,以避免单比特错误对服务器正常运行的影响,在非单比特错误时确定发生多比特错误,以便于对多比特错误进行处理。
在一种可选的实施方式中,所述确定多比特错误发生的函数区域和错误次数,包括:
获取预先设置好的地址及地址对应的函数区域之间的对应关系;
基于预先设置好的地址及地址对应的函数区域之间的对应关系以及多比特错误所在的地址,确定多比特错误发生的函数区域;
获取多比特错误发生的函数区域的已发生的历史错误次数,对所述历史错误次数进行更新,确定该函数区域多比特错误发生的错误次数。
本发明通过根据预先设置好的地址及地址对应的函数区域之间的对应关系,确定多比特错误所在地址对应的函数区域,以确定出发生多比特错误的函数区域,并根据对错误次数更新的结果,确定多比特错误的错误次数,以对多比特错误进行处理。
在一种可选的实施方式中,所述函数区域包括重要函数区域和非重要函数区域,按照如下方式确定预先设置好的地址及地址对应的函数区域之间的对应关系:
获取各个地址及地址对应的指令在CPU运行过程中的运行次数;
将运行次数大于预设运行次数阈值的指令对应的地址确定为重要函数区域;
将运行次数不大于预设运行次数阈值的指令对应的地址确定为非重要函数区域。
本发明通过将发生多比特错误的函数区域进行划分,根据指令在CPU运行过程中的运行次数划分为重要函数区域和非重要函数区域,以确定发生多比特错误的函数区域,从而对不同函数区域的多比特错误进行分别处理。
在一种可选的实施方式中,所述基于多比特错误发生的函数区域和错误次数,对存储器进行重新编译,包括:
判断多比特错误发生的函数区域是否为重要函数区域;
若多比特错误发生的函数区域为重要函数区域,判断所述错误次数是否大于错误阈值;
若所述错误次数不大于所述错误阈值,对存储器进行重新编译。
本发明通过多比特错误发生在重要函数区域,且错误次数不大于错误阈值时,对存储器进行重新编译,以保证存储器稳定运行,有效提高存储器的利用率。
在一种可选的实施方式中,所述方法还包括:
若所述错误次数大于所述错误阈值,则进行异常报警。
本发明在多比特错误发生在重要函数区域,且错误次数大于错误阈值时,生成异常信息,进行异常报警,以对相关人员进行提醒,以及时对异常情况进行处理。
在一种可选的实施方式中,所述对存储器进行重新编译,包括:
将发生多比特错误的地址确定为坏块区域;
将所述当前指令从发生多比特错误的地址开始之后的地址偏移至所述坏块区域之外。
本发明通过划分坏块区域,并将发生多比特错误之后的地址进行偏移,以使得偏移后的地址不在坏块区域内,以解决了现有技术中无法划分坏块的问题,有效提高存储器的利用率。
第二方面,本发明提供了一种多比特错误处理装置,该装置包括:
读取模块,用于当检测到CPU读取的指令发生多比特错误时,触发CPU中断,并再次读取当前指令;
第一判断模块,用于对再次读取的当前指令进行校验,并判断是否校验失败;
第一确定模块,用于若对再次读取的当前指令校验失败,则确定多比特错误发生的函数区域和错误次数;
编译模块,用于基于多比特错误发生的函数区域和错误次数,对存储器进行重新编译,所述存储器用于存储所述当前指令;
发送模块,用于将重新编译后存储器中的所述当前指令发送至CPU指令寄存器中,以使运行该指令。
第三方面,本发明提供了一种服务器,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的多比特错误处理方法。
第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的多比特错误处理方法。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的程序在存储器中占用内存的结构示意图;
图2是根据本发明实施例的存储器数据处理的流程示意图;
图3是根据本发明实施例的多比特错误处理方法的流程示意图;
图4是根据本发明实施例的另一多比特错误处理方法的流程示意图;
图5是根据本发明实施例的函数区域划分的结构示意图;
图6是根据本发明实施例又一多比特错误处理方法的流程示意图;
图7是根据本发明实施例的对存储器进行重新编译的流程示意图;
图8是根据本发明实施例的多比特错误处理的应用示意图;
图9是根据本发明实施例的另一函数区域划分的结构示意图;
图10是根据本发明实施例的多比特错误处理装置的结构框图;
图11是本发明实施例的服务器的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在静态随机存取存储器SRAM中,如图1所示,一个正在执行的程序在SRAM中占用的内存可划为五部分。其中,代码段中存放的是CPU需要读取的指令,该部分地址范围内的存储失效将大概率导致程序无法运行,其他段内存区的内容同样极为重要,因此需要一种可靠的方案保证SRAM中的内容不被损坏。
由于SRAM中具有SRAM ECC功能,能够实现单比特纠错,所以可以在一定程度上去保证SRAM内数据的安全性,但是这无法解决多比特错误。目前SRAM中的数据保护流程如图2所示,CPU在取指时,当SRAM ECC功能打开时,读取SRAM的动作将会自动触发SRAM的ECCcheck功能,当出现单比特错误时,ECC能够实现纠错,保证指令数据的有效性,并将指令取出发送到CPU的指令寄存器(IR)中,但是当出现双比特t及以上的错误时将会超出ECC的纠错能力,如果继续发送给CPU译码执行将会导致CPU卡死。由此可以看出该现有方案只能在一定程度上保证SRAM数据的安全性。
根据本发明实施例,提供了一种多比特错误处理方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种多比特错误处理方法,可用于移动终端,图3是根据本发明实施例的多比特错误处理方法的流程图,如图3所示,该流程包括如下步骤:
步骤S301,当检测到CPU读取的指令发生多比特错误时,触发CPU中断,并再次读取当前指令。
在本发明实施例中,由图2可知,现有的ECC check并没有通过中断去处理双比特及以上的多比特错误,只能进入CPU卡死,等待WDT(Watch Dog Timer,看门狗定时器),待程序开始运行后WDT开始计数。
CPU读取SRAM中代码段存放的指令,当发生多比特错误时,触发CPU中断,中断请求,再一次读取当前的指令。
步骤S302,对再次读取的当前指令进行校验,并判断是否校验失败。
在本发明实施例中,当出现双比特及以上比特错误时,ECC check对再次读取的当前指令进行校验,获取ECC check的校验结果,并判断是否校验失败。如果ECC check校验通过,则将该条指令传送至CPU指令寄存器。
步骤S303,若对再次读取的当前指令校验失败,则确定多比特错误发生的函数区域和错误次数。
在本发明实施例中,如果ECC check依旧失败,则判断当前多比特错误发生的区域,并记录该区域错误的错误次数。其中,函数区域包括重要函数区域和非重要函数区域。
步骤S304,基于多比特错误发生的函数区域和错误次数,对存储器进行重新编译。
其中,存储器用于存储当前指令。
在本发明实施例中,根据多比特错误发生在重要函数区域还是非重要函数区域,并预先设置重要函数区域和非重要函数区域的错误最大限制次数,根据多比特错误的错误次数和各个区域的错误最大限制次数之间的关系,对存储器重新编译,以进行相应的处理。
步骤S305,将重新编译后存储器中的当前指令发送至CPU指令寄存器中,以使运行该指令。
在本发明实施例中,重新编译后的存储器能够正常运行指令,将重新编译后的存储器中存储的指令发送至CPU指令寄存器IR中,运行该指令,以实现该指令对应的功能。
本实施例提供的多比特错误处理方法,通过在检测到多比特错误时读取指令,对指令进行校验,以在发生多比特错误时确定发生多比特错误的函数区域和错误次数,并对存储器进行重新编译,以保证服务器正常运行,从而保证数据的安全性。
在本实施例中提供了一种多比特错误处理方法,图4是根据本发明实施例的多比特错误处理方法的流程图,如图4所示,该流程包括如下步骤:
步骤S401,当检测到CPU读取指令时,对读取的指令进行校验。
步骤S402,若校验结果为校验通过,则将读取的指令发送至CPU指令寄存器中。
步骤S403,若校验结果为单比特错误,则对单比特错误进行纠正,并将纠正后的指令发送至CPU指令寄存器中。
步骤S404,若校验结果为非单比特错误,则确定CPU读取的指令发生多比特错误。
在本发明实施例中,CPU读取指令时,ECC check对读取的指令进行校验。ECC是一种内存纠错原理,是较为先进的内存错误检查及更正的手段,使得***运行更加稳定。
ECC检验的校验原理为:在数据位上额外的一个位存储一个用数据加密的代码。当数据被写入内存,相应的ECC代码也被保存下来。当重新读取刚刚存储的数据时,保存下来的ECC代码和读取数据时产生的ECC代码作比较,以得到校验结果。
如图2所示,若发生单比特错误,则对单比特错误进行纠正,并将纠正后的指令发送到CPU指令寄存器IR中。若校验结果为非多比特错误,则确定CPU读取的指令中发生多比特错误,进一步对多比特错误进行处理,以防止CPU卡死。
通过对读取的指令进行校验,以确定是否发生单比特错误,并在发生单比特错误时对单比特错误进行纠正,以避免单比特错误对服务器正常运行的影响,在非单比特错误时确定发生多比特错误,以便于对多比特错误进行处理。
步骤S405,当检测到CPU读取的指令发生多比特错误时,触发CPU中断,并再次读取当前指令。
详细请参见图3所示实施例的步骤S301,在此不再赘述。
步骤S406,对再次读取的当前指令进行校验,并判断是否校验失败。
详细请参见图3所示实施例的步骤S302,在此不再赘述。
步骤S407,若对再次读取的当前指令校验失败,则确定多比特错误发生的函数区域和错误次数。
具体地,上述步骤S407中确定多比特错误发生的函数区域和错误次数包括:
步骤S4071,获取预先设置好的地址及地址对应的函数区域之间的对应关系。
步骤S4072,基于预先设置好的地址及地址对应的函数区域之间的对应关系以及多比特错误所在的地址,确定多比特错误发生的函数区域。
步骤S4073,获取多比特错误发生的函数区域的已发生的历史错误次数,对历史错误次数进行更新,确定该函数区域多比特错误发生的错误次数。
在本发明实施例中,在现有的SRAM ECC check的基础上,如图5所示,将SRAM中的text代码段划,将在程序内的函数根据函数功能划分为critical function(重要函数)和non critical function(非重要函数),并分别存储在对应的区域内,即为重要函数区域和非重要函数区域。
在编译时对重要函数区域和非重要函数区域进行区分,将统一编译到划分好的划分区域,即为重要函数区域和非重要函数区域。当ECC校验发生多比特错误时,通过判断地址属于哪个划分区域,即确定多比特错误发生的函数区域。
确定多比特错误发生的错误次数,通过获取该函数区域已发生的历史错误次数,对历史错误次数进行更新。当发生多比特错误时,会再次读取,若再次读取仍然出现错误,则说明出现错误,则将错误次数加一,即对历史错误次数进行更新。
通过根据预先设置好的地址及地址对应的函数区域之间的对应关系,确定多比特错误所在地址对应的函数区域,以确定出发生多比特错误的函数区域,并根据对错误次数更新的结果,确定多比特错误的错误次数,以对多比特错误进行处理。
具体地,上述步骤S4072包括:
步骤S40721,获取各个地址及地址对应的指令在CPU运行过程中的运行次数。
步骤S40722,将运行次数大于预设运行次数阈值的指令对应的地址确定为重要函数区域。
步骤S40723,将运行次数不大于预设运行次数阈值的指令对应的地址确定为非重要函数区域。
在本发明实施例中,在CPU运行过程中,各种函数运行的次数不同。根据函数运行的次数和其与CPU运行的重要程度,预先设置运行次数阈值。
硬件或软件的初始化函数仅在CPU启动时运行,即运行次数不大于预设运行次数阈值,则将该函数所在的地址确定为非重要函数区域。而在CPU运行过程中频繁运行,且运行次数大于预设运行次数阈值,则将该函数所在的地址确定为重要函数区域。
需要说明的是,非重要函数中有计数机制,累计次数达到预设运行次数阈值,则触发中断,上报错误信息。
步骤S408,基于多比特错误发生的函数区域和错误次数,对存储器进行重新编译。
详细请参见图3所示实施例的步骤S304,在此不再赘述。
步骤S409,将重新编译后存储器中的当前指令发送至CPU指令寄存器中,以使运行该指令。
详细请参见图3所示实施例的步骤S305,在此不再赘述。
本实施例提供的多比特错误处理方法,通过将发生多比特错误的函数区域进行划分,根据指令在CPU运行过程中的运行次数划分为重要函数区域和非重要函数区域,以确定发生多比特错误的函数区域,从而对不同函数区域的多比特错误进行分别处理。
在本实施例中提供了一种多比特错误处理方法,图6是根据本发明实施例的多比特错误处理方法的流程图,如图6所示,该流程包括如下步骤:
步骤S601,当检测到CPU读取的指令发生多比特错误时,触发CPU中断,并再次读取当前指令。
详细请参见图3所示实施例的步骤S301,在此不再赘述。
步骤S602,对再次读取的当前指令进行校验,并判断是否校验失败。
详细请参见图3所示实施例的步骤S302,在此不再赘述。
步骤S603,若对再次读取的当前指令校验失败,则确定多比特错误发生的函数区域和错误次数。
详细请参见图3所示实施例的步骤S303,在此不再赘述。
步骤S604,基于多比特错误发生的函数区域和错误次数,对存储器进行重新编译。
具体地,上述步骤S604包括:
步骤S6041,判断多比特错误发生的函数区域是否为重要函数区域。
步骤S6042,若多比特错误发生的函数区域为重要函数区域,判断错误次数是否大于错误阈值。
步骤S6043,若错误次数不大于错误阈值,对存储器进行重新编译。
在本发明实施例中,设置重要函数区域和非重要函数区域发生错误的最大错误限制次数,重要函数区域和非重要函数区域的最大错误限制次数不同。其中,非重要函数区域的最大错误限制次数相对宽松,重要函数区域的最大错误限制次数相对严格。
设置重要函数区域的最大错误限制次数为错误阈值,若多比特错误发生的函数区域为重要函数区域,则判断错误次数和错误阈值的关系。如图7所示,当重要函数区域发生错误的错误不大于错误阈值,对存储器中的RAMFW固件进行重新编译,执行固件RELOAD_RAMFW。
当多比特错误发生在重要函数区域时,记录发生多比特错误的位置,闪存flash和qspi通信接口进入xip模式,执行非易失存储器闪存(nor flash)中的RELOAD_RAMFW,对RAMFW进行重新编译。程序编译完成后,闪存flash和qspi通信接口退出xip模式,重新将SRAM中发生多比特错误的位置及之后的指令重新加载,重新读取指令,进入正常流程。
通过多比特错误发生在重要函数区域,且错误次数不大于错误阈值时,对存储器进行重新编译,以保证存储器稳定运行,有效提高存储器的利用率。
其中,非易失存储器闪存nor flash又称非易失闪存,其结合了ROM和RAM的优点,具备电子可擦除可编程(EEPROM)的性能,不会断电丢失数据,可以对存储器单元块进行擦写和再编程,写入操作只能在空单元或已擦除单元内进行。
具体地,进行重新编译时,通过发送中断到基板管理控制器(Baseboard ManagerController,BMC),并提供相应的信息(错误信息),基板管理控制器在web端重新使用交叉编译工具链完成指定版本RAMFW的编译,并重新发生写入到闪存flash中。
此外,如图8所示,当重要函数区域发生错误的错误不大于错误阈值,还可以进入xip(eXecuteInPlace)模式,从闪存flash中读取当前指令,再退出xip模式。其中,在xip模式下,CPU可以直接从存储器中读取代码运行。
需要说明的是,当多比特错误发生在非重要函数区域时,可以暂时不做处理,通过中断上报该事件。
在一些可选的实施方式中,该方法还包括:
步骤S6044,若错误次数大于错误阈值,则进行异常报警。
在本发明实施例中,如图8所示,当错误次数大于错误阈值时,进行中断上报处理,闪存flash和qspi(Queued Serial Peripheral Interface,通信接口)进入xip模式,从闪存flash中读取当前发生多比特错误的指令。然后闪存flash和qspi通信接口退出xip模式,将读取的指令发送到cpu指令寄存器中,最后进入正常流程,继续从SRAM中读取后续指令。
其中,qspi是一种专用的通信接口,连接单、双或四条数据线SPI Flash存储介质。
在多比特错误发生在重要函数区域,且错误次数大于错误阈值时,生成异常信息,进行异常报警,以对相关人员进行提醒,以及时对异常情况进行处理。
具体地,上述步骤S6043中对存储器进行重新编译包括:
步骤S60431,将发生多比特错误的地址确定为坏块区域。
步骤S60432,将当前指令从发生多比特错误的地址开始之后的地址偏移至坏块区域之外。
在本发明实施例中,对存储器进行编译时,如图9所示,将发生多比特错误的地址划分为badblock区域,并将当前位置及之后的指令全部向后偏移一段地址。
例如,每32比特中发生多比特错误,则偏移32比特。其中,每次偏移地址最小为32比特。
步骤S605,将重新编译后存储器中的当前指令发送至CPU指令寄存器中,以使运行该指令。
详细请参见图3所示实施例的步骤S305,在此不再赘述。
本实施例提供的多比特错误处理方法,通过划分坏块区域,并将发生多比特错误之后的地址进行偏移,以使得偏移后的地址不在坏块区域内,以解决了现有技术中无法划分坏块的问题,有效提高存储器的利用率。
需要说明的是,图7为XIP在SRAM中部分指令存储地址失效情形下的应用流程图,本方案是在现有的SRAM ECC check的基础之上,通过给SRAM中的代码段划分重要函数区域和非重要函数区域,其次通过xip模式直接从flash中读取当前发生ECC check的指令。具体方案如下:
通过将程序内的函数根据函数功能划分为重要函数和非重要函数,并分别存储在对应的区域,如果发现ECC错误发生在非重要函数区域则可以暂时不做处理,通过中断上报该事件;如果发生在重要函数区域,则出现中断处理函数,进行相应的处理。
目前ECC check并没有实现通过中断去处理指令的双比特以上的比特错误,只能进入CPU卡死,等待WDT(Watch Dog Timer,看门狗定时器)。当出现双比特及以上的比特错误后,触发CPU中断,再一次重新读取当前的指令,如果ECC check通过,则将该条指令传送到CPU指令寄存器,如果ECC check依旧失败,则判断当前错误发生的区域,如果是在非重要函数区域则忽略,如果发生在重要函数区域则记录发生错误的位置,flash和qspi通信接口进入xip模式从flash中读取当前发生ECC错误的指令到CPU指令寄存器。之后,flash及qspi通信接口退出xip模式进入正常流程,从SRAM中读取后续指令。
基于原有SRAM ECC check流程,通过划分SRAM重要函数区域和非重要函数区域,指令再读取,xip模式从flash中读取当前指令,能够有效解决CPU因为读入错误指令导致的CPU卡死,能够依旧保证服务器大小核的稳定运行。
本方案也有效提升的SRAM的利用率,解决了SRAM的无法划分坏块的问题,能够很好的降本增效。
xip模式是一种比较低速的CPU取指方式,本方案只在发生多比特错误的地址处使用xip模式,能都最大限度的保证CPU执行速率。
图8为SRAM中程序代码段部分存储地址失效的解决办法的应用流程图。图8所示的方案是在现有的SRAM ECC check的基础之上,通过给SRAM中的代码段划分重要函数区域和非重要函数区域,其次通过ECC check的中断实现对发生ECC check的区域指令的再读取,以及重新加载ram代码到SRAM中,并注意跳过SRAM坏块区。具体方案如下:
1、代码段划分重要函数区域和非重要函数区域。通过将程序内的函数根据函数功能划分为重要函数和非重要函数,并分别存储在对应的区域,如果发现ECC错误发生在非重要函数区域,则可以暂时不做处理,通过中断上报该事件;如果发生在重要函数区域,则出现中断处理函数,进行相应的处理。
2、ECC中断处理。目前ECC check并没有实现通过中断去处理指令的双比特以上的比特错误,只能进入CPU卡死,等待WDT(Watch Dog Timer,看门狗定时器)。当出现双比特及以上的比特错误r后,触发CPU中断,再一次重新读取当前的指令,如果ECC check通过,则将该条指令传送到CPU指令寄存器,如果ECC check依旧失败,则判断当前错误发生的区域,如果是在非重要函数区域则忽略,如果发生在重要函数区域,则记录发生错误的位置,flash和qspi通信接口进入xip模式执行nor flash中的RELOAD_RAMFW。这段序功能主要是重新编译RAMFW,并在发生错误处地址给划分为坏块区域,并将当前位置及之后的指令全部向后偏移一段地址。程序编译完成之后,flash及qspi通信接口退出入xip模式,重新将SRAM中发生错误的位置及之后的指令重新加载一次,之后重新读取当前指令,进入正常流程。
基于原有SRAM ECC check流程,通过划分重要函数区域和非重要函数区域,指令再读取、重新编译及重新SRAMFW和划分出SRAM的坏块区域,能够有效解决SRAM ECC功能单一,应变能力不足的问题,能够最大限度的保证服务器的安全启动和稳定运行。
本方案也有效提升的SRAM的利用率,解决了SRAM的无法划分坏块的问题,能够很好的降本增效。
在本实施例中还提供了一种多比特错误处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种多比特错误处理装置,如图10所示,包括:
读取模块1001,用于当检测到CPU读取的指令发生多比特错误时,触发CPU中断,并再次读取当前指令。
第一判断模块1002,用于对再次读取的当前指令进行校验,并判断是否校验失败。
第一确定模块1003,用于若对再次读取的当前指令校验失败,则确定多比特错误发生的函数区域和错误次数。
编译模块1004,用于基于多比特错误发生的函数区域和错误次数,对存储器进行重新编译,存储器用于存储当前指令。
第一发送模块1005,用于将重新编译后存储器中的当前指令发送至CPU指令寄存器中,以使运行该指令。
在一些可选的实施方式中,该装置还包括:
校验模块,用于当检测到CPU读取指令时,对读取的指令进行校验。
第二发送模块,用于若校验结果为校验通过,则将读取的指令发送至CPU指令寄存器中。
第三发送模块,用于若校验结果为单比特错误,则对单比特错误进行纠正,并将纠正后的指令发送至CPU指令寄存器中。
第二确定模块,用于若校验结果为非单比特错误,则确定CPU读取的指令发生多比特错误。
在一些可选的实施方式中,第一确定模块1003包括:
获取单元,用于获取预先设置好的地址及地址对应的函数区域之间的对应关系。
第一确定单元,用于基于预先设置好的地址及地址对应的函数区域之间的对应关系以及多比特错误所在的地址,确定多比特错误发生的函数区域。
第二确定单元,用于获取多比特错误发生的函数区域的已发生的历史错误次数,对历史错误次数进行更新,确定该函数区域多比特错误发生的错误次数。
在一些可选的实施方式中,第一确定单元包括:
获取子单元,用于获取各个地址及地址对应的指令在CPU运行过程中的运行次数。
第一确定子单元,用于将运行次数大于预设运行次数阈值的指令对应的地址确定为重要函数区域。
第二确定子单元,用于将运行次数不大于预设运行次数阈值的指令对应的地址确定为非重要函数区域。
在一些可选的实施方式中,编译模块1004包括:
第一判断单元,用于判断多比特错误发生的函数区域是否为重要函数区域。
第二判断单元,用于若多比特错误发生的函数区域为重要函数区域,判断错误次数是否大于错误阈值。
编译单元,用于若错误次数不大于错误阈值,对存储器进行重新编译。
在一些可选的实施方式中,该装置还包括:
报警模块,用于若错误次数大于错误阈值,则进行异常报警。
在一些可选的实施方式中,编译模块1004还包括:
第三确定单元,用于将发生多比特错误的地址确定为坏块区域。
偏移单元,用于将当前指令从发生多比特错误的地址开始之后的地址偏移至坏块区域之外。
上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本实施例中的多比特错误处理装置是以功能单元的形式来呈现,这里的单元是指ASIC(Application Specific Integrated Circuit,专用集成电路)电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
本发明实施例还提供一种服务器,具有上述图10所示的多比特错误处理装置。
请参阅图11,图11是本发明可选实施例提供的一种服务器的结构示意图,如图11所示,该服务器包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在服务器内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个服务器,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器***)。图11中以一个处理器10为例。
处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,存储器20存储有可由至少一个处理器10执行的指令,以使至少一个处理器10执行实现上述实施例示出的方法。
存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。
该服务器还包括输入装置30和输出装置40。处理器10、存储器20、输入装置30和输出装置40可以通过总线或者其他方式连接,图11中以通过总线连接为例。
输入装置30可接收输入的数字或字符信息,以及产生与该服务器的用户设置以及功能控制有关的键信号输入,例如触摸屏等。输出装置40可以包括显示设备等。上述显示设备包括但不限于液晶显示器,发光二极管,显示器和等离子体显示器。在一些可选的实施方式中,显示设备可以是触摸屏。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (8)

1.一种多比特错误处理方法,其特征在于,所述方法包括:
当检测到CPU读取的指令发生多比特错误时,触发CPU中断,并再次读取当前指令;
对再次读取的当前指令进行校验,并判断是否校验失败;
若对再次读取的当前指令校验失败,则确定多比特错误发生的函数区域和错误次数,所述函数区域包括重要函数区域和非重要函数区域;
基于多比特错误发生的函数区域和错误次数,对存储器进行重新编译,所述存储器用于存储所述当前指令;
将重新编译后存储器中的所述当前指令发送至CPU指令寄存器中,以使运行该指令;
其中,所述确定多比特错误发生的函数区域和错误次数,包括:
获取预先设置好的地址及地址对应的函数区域之间的对应关系;
基于预先设置好的地址及地址对应的函数区域之间的对应关系以及多比特错误所在的地址,确定多比特错误发生的函数区域;
获取多比特错误发生的函数区域的已发生的历史错误次数,对所述历史错误次数进行更新,确定该函数区域多比特错误发生的错误次数;
其中,按照如下方式确定预先设置好的地址及地址对应的函数区域之间的对应关系:
获取各个地址及地址对应的指令在CPU运行过程中的运行次数;
将运行次数大于预设运行次数阈值的指令对应的地址确定为重要函数区域;
将运行次数不大于预设运行次数阈值的指令对应的地址确定为非重要函数区域。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到CPU读取指令时,对读取的指令进行校验;
若校验结果为校验通过,则将读取的指令发送至CPU指令寄存器中;
若校验结果为单比特错误,则对单比特错误进行纠正,并将纠正后的指令发送至CPU指令寄存器中;
若校验结果为非单比特错误,则确定CPU读取的指令发生多比特错误。
3.根据权利要求1所述的方法,其特征在于,所述基于多比特错误发生的函数区域和错误次数,对存储器进行重新编译,包括:
判断多比特错误发生的函数区域是否为重要函数区域;
若多比特错误发生的函数区域为重要函数区域,判断所述错误次数是否大于错误阈值;
若所述错误次数不大于所述错误阈值,对存储器进行重新编译。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述错误次数大于所述错误阈值,则进行异常报警。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述对存储器进行重新编译,包括:
将发生多比特错误的地址确定为坏块区域;
将所述当前指令从发生多比特错误的地址开始之后的地址偏移至所述坏块区域之外。
6.一种多比特错误处理装置,其特征在于,所述装置包括:
读取模块,用于当检测到CPU读取的指令发生多比特错误时,触发CPU中断,并再次读取当前指令;
第一判断模块,用于对再次读取的当前指令进行校验,并判断是否校验失败;
第一确定模块,用于若对再次读取的当前指令校验失败,则确定多比特错误发生的函数区域和错误次数,所述函数区域包括重要函数区域和非重要函数区域;
编译模块,用于基于多比特错误发生的函数区域和错误次数,对存储器进行重新编译,所述存储器用于存储所述当前指令;
第一发送模块,用于将重新编译后存储器中的所述当前指令发送至CPU指令寄存器中,以使运行该指令;
其中,第一确定模块具体用于:
获取预先设置好的地址及地址对应的函数区域之间的对应关系;
基于预先设置好的地址及地址对应的函数区域之间的对应关系以及多比特错误所在的地址,确定多比特错误发生的函数区域;
获取多比特错误发生的函数区域的已发生的历史错误次数,对所述历史错误次数进行更新,确定该函数区域多比特错误发生的错误次数;
其中,按照如下方式确定预先设置好的地址及地址对应的函数区域之间的对应关系:
获取各个地址及地址对应的指令在CPU运行过程中的运行次数;
将运行次数大于预设运行次数阈值的指令对应的地址确定为重要函数区域;
将运行次数不大于预设运行次数阈值的指令对应的地址确定为非重要函数区域。
7.一种服务器,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1至5中任一项所述的多比特错误处理方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至5中任一项所述的多比特错误处理方法。
CN202311157392.8A 2023-09-07 2023-09-07 一种多比特错误处理方法、装置、服务器及存储介质 Active CN117116332B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311157392.8A CN117116332B (zh) 2023-09-07 2023-09-07 一种多比特错误处理方法、装置、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311157392.8A CN117116332B (zh) 2023-09-07 2023-09-07 一种多比特错误处理方法、装置、服务器及存储介质

Publications (2)

Publication Number Publication Date
CN117116332A CN117116332A (zh) 2023-11-24
CN117116332B true CN117116332B (zh) 2024-05-24

Family

ID=88805488

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311157392.8A Active CN117116332B (zh) 2023-09-07 2023-09-07 一种多比特错误处理方法、装置、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN117116332B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101060015A (zh) * 2007-05-23 2007-10-24 北京芯技佳易微电子科技有限公司 一种多比特闪存及其错误检测和纠正的方法
CN103140841A (zh) * 2010-07-26 2013-06-05 英特尔公司 保护存储器的部分的方法和装置
CN110289040A (zh) * 2019-06-25 2019-09-27 浙江大学 一种***芯片中bist与ecc结合的存储器检测方法
CN110993011A (zh) * 2018-10-03 2020-04-10 Arm 有限公司 存储器测试技术
CN115831213A (zh) * 2023-01-28 2023-03-21 南京芯驰半导体科技有限公司 校验处理器的检测方法、装置、电子设备、存储介质
CN116126581A (zh) * 2023-04-10 2023-05-16 阿里云计算有限公司 内存故障处理方法、装置、***、设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101060015A (zh) * 2007-05-23 2007-10-24 北京芯技佳易微电子科技有限公司 一种多比特闪存及其错误检测和纠正的方法
CN103140841A (zh) * 2010-07-26 2013-06-05 英特尔公司 保护存储器的部分的方法和装置
CN110993011A (zh) * 2018-10-03 2020-04-10 Arm 有限公司 存储器测试技术
CN110289040A (zh) * 2019-06-25 2019-09-27 浙江大学 一种***芯片中bist与ecc结合的存储器检测方法
CN115831213A (zh) * 2023-01-28 2023-03-21 南京芯驰半导体科技有限公司 校验处理器的检测方法、装置、电子设备、存储介质
CN116126581A (zh) * 2023-04-10 2023-05-16 阿里云计算有限公司 内存故障处理方法、装置、***、设备及存储介质

Also Published As

Publication number Publication date
CN117116332A (zh) 2023-11-24

Similar Documents

Publication Publication Date Title
CN100489805C (zh) 运行时间安全保证的自动存储器检测器及其方法
US20200218599A1 (en) Methods and systems for smart memory data integrity checking
WO2007035811A1 (en) Hardware-assisted device configuration detection
CN114281394A (zh) 一种快速在线升级程序的方法、***、设备及介质
US6636991B1 (en) Flexible method for satisfying complex system error handling requirements via error promotion/demotion
US11182233B2 (en) Method for event log management of memory errors and server computer utilizing the same
US10489244B2 (en) Systems and methods for detecting and correcting memory corruptions in software
CN117116332B (zh) 一种多比特错误处理方法、装置、服务器及存储介质
US10191793B2 (en) Microprocessor device with reset timer
US11593209B2 (en) Targeted repair of hardware components in a computing device
CN111061591B (zh) 基于存储器完整性检查控制器实现数据完整性检查的***和方法
CN203882621U (zh) 一种存储装置
KR20220085100A (ko) 플래시 메모리 ecc 모듈의 진단 장치 및 방법
CN107451035B (zh) 用于计算机装置的错误状态数据提供方法
US20230350786A1 (en) Core dump in multiprocessor device
TWI757606B (zh) 伺服器裝置及其基板管理控制器與可程式邏輯單元之間的通訊協定方法
US20240134743A1 (en) Electronic device, electronic system, method for operating an electronic device, and method for operating an electronic system
CN118069205A (zh) 可编程逻辑器件版本的回退方法、装置、设备及存储介质
CN116453576A (zh) 存储设备的功能测试方法、装置、计算机设备及介质
CN117348803A (zh) 数据存储方法及微处理器
CN118151853A (zh) Fpga器件的数据存储控制方法、***、fpga***及介质
CN117348801A (zh) 数据存储方法、微处理器及计算机设备
CN118193270A (zh) 程序保护方法、装置、计算机设备及存储介质
CN112099980A (zh) 服务器及错误事件记录登载功能的控制方法
US20190052286A1 (en) Error detector and/or corrector checker method and apparatus

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