一种内存错误的上报方法、装置、设备及介质与流程

文档序号:24984332发布日期:2021-05-07 23:01阅读:120来源:国知局
一种内存错误的上报方法、装置、设备及介质与流程

本发明涉及计算机领域,尤其涉及一种内存错误的上报方法、装置、设备及介质。



背景技术:

在intelx86平台,内存控制器可对每个内存设定可纠正错误的阈值,当内存的可纠正错误到达阈值后都会通过smi(systemmanagementinterrupt,系统管理中断)上报至bios(basicinput/ouputsystem,基本输入/输出系统),bios会进入smm(systemmanagementmode,系统管理模式)对错误进行处理,但当内存部件真正出现硬件故障时,会在短时间内产生大量可纠正错误,有风暴式可纠正错误的风险,bios无法对风暴的系统管理中断做出回应,一直处于系统管理模式无法恢复退出,会导致系统瘫痪。



技术实现要素:

本申请实施例通过提供一种内存错误的上报方法、装置、设备及介质,解决了现有技术中内存部件出现硬件故障时,会在短时间内产生大量可纠正错误,有风暴式可纠正错误的风险的技术问题,实现了避免系统管理模式无法恢复退出,进而导致系统瘫痪的效果。

第一方面,本申请通过本申请的一实施例提供如下技术方案:

一种内存错误的上报方法,包括:

根据内存错误出现的频率,判断是否存在出现错误风暴的风险;

如果存在所述风险,则开启抑制模式,并监测进入所述抑制模式之后出现的内存错误,根据监测结果判断所述风险是否消失,其中,所述抑制模式为终止上报所述内存错误的模式;

如果所述风险消失,则关闭所述抑制模式,进入上报模式,其中,所述上报模式为正常上报内存错误的模式。

可选的,所述根据内存错误出现的频率,判断是否存在出现错误风暴的风险,包括:

在当前需要上传的内存错误个数大于或等于阈值错误数时,将所述内存错误上传;获取所述内存错误产生的间隔时间,如果所述间隔时间小于门限时间,则计数器计数加一;如果所述计数器计数大于等于阈值次数时,则判定存在出现错误风暴的风险。

可选的,所述开启抑制模式,包括:

关闭内存控制器上的可纠正错误计数寄存器。

可选的,所述监测进入所述抑制模式之后出现的内存错误,根据监测结果判断所述风险是否消失,包括:

开启错误扫描功能,其中,所述错误扫描功能为周期性扫描有无新的内存错误产生;如果在扫描周期时间内没有新的内存错误出现,则所述计数器计数减一;如果在所述扫描周期时间内有新的内存错误出现,则所述计数器计数重置到所述阈值次数;如果所述计数器计数为零,则判定所述风险消失。

可选的,所述关闭所述抑制模式,包括:

关闭错误扫描功能,并开启内存控制器上的可纠正错误计数寄存器;其中,所述错误扫描功能为周期性扫描有无新的内存错误产生。

第二方面,本申请通过本申请的一实施例,提供如下技术方案:

一种内存错误的上报装置,包括:

判断单元,用于根据内存错误出现的频率,判断是否存在出现错误风暴的风险;

控制单元,用于如果存在所述风险,则开启抑制模式,并监测进入所述抑制模式之后出现的内存错误,根据监测结果判断所述风险是否消失,其中,所述抑制模式为终止上报所述内存错误的模式;

恢复单元,用于如果所述风险消失,则关闭所述抑制模式,进入上报模式,其中,所述上报模式为正常上报内存错误的模式。

可选的,所述判断单元,还用于:

在当前需要上传的内存错误个数大于或等于阈值错误数时,将所述内存错误上传;获取所述内存错误产生的间隔时间,如果所述间隔时间小于门限时间,则计数器计数加一;如果所述计数器计数大于等于阈值次数时,则判定存在出现错误风暴的风险。

可选的,所述控制单元,还用于:

关闭内存控制器上的可纠正错误计数寄存器。

可选的,所述控制单元,还用于:

开启错误扫描功能,其中,所述错误扫描功能为周期性扫描有无新的内存错误产生;如果在扫描周期时间内没有新的内存错误出现,则所述计数器计数减一;如果在所述扫描周期时间内有新的内存错误出现,则所述计数器计数重置到所述阈值次数;如果所述计数器计数为零,则判定所述风险消失。

可选的,所述恢复单元,还用于:

关闭错误扫描功能,并开启内存控制器上的可纠正错误计数寄存器;其中,所述错误扫描功能为周期性扫描有无新的内存错误产生。

第三方面,本申请通过本申请的一实施例,提供如下技术方案:

一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现第一方面所述的步骤。

第四方面,本申请通过本申请的一实施例,提供如下技术方案:

一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现第一方面所述的步骤。

本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:

本发明实施例中公开了一种内存错误的上报方法、装置、设备及介质,根据内存错误出现的频率,判断是否存在出现错误风暴的风险,进而可以在所述错误风暴来临时,执行抑制内存错误上报的操作。如果存在所述风险,则开启抑制模式,并监测进入所述抑制模式之后出现的内存错误,根据监测结果判断所述风险是否消失,其中,所述抑制模式为终止上报所述内存错误的模式。通过上述技术特征可以知道内存错误目前的状况,进而得知错误风暴是否结束。如果所述风险消失,则关闭所述抑制模式,进入上报模式,其中,所述上报模式为正常上报内存错误的模式。所以,能够在所述风险过去时,退出所述抑制模式,以使内存错误正常上传系统。所以,解决了现有技术中内存部件出现硬件故障时,会在短时间内产生大量可纠正错误,有风暴式可纠正错误的风险的技术问题,实现了避免系统管理模式无法恢复退出,进而导致系统瘫痪的效果。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中一种内存错误的上报方法的流程图;

图2为本发明实施例中一种内存错误的上报方法一实施例的的流程图;

图3为本发明实施例中一种内存错误的上报装置的结构图;

图4为本发明实施例中一种电子设备的结构图;

图5为本发明实施例中一种计算机可读存储介质的结构图。

具体实施方式

本申请实施例通过提供一种内存错误的上报方法、装置、设备及介质,解决了现有技术中内存部件出现硬件故障时,会在短时间内产生大量可纠正错误,有风暴式可纠正错误的风险的技术问题,实现了避免系统管理模式无法恢复退出,进而导致系统瘫痪的效果。

本申请实施例的技术方案为解决上述技术问题,总体思路如下:

一种内存错误的上报方法,包括:

根据内存错误出现的频率,判断是否存在出现错误风暴的风险;

如果存在所述风险,则开启抑制模式,并监测进入所述抑制模式之后出现的内存错误,根据监测结果判断所述风险是否消失,其中,所述抑制模式为终止上报所述内存错误的模式;

如果所述风险消失,则关闭所述抑制模式,进入上报模式,其中,所述上报模式为正常上报内存错误的模式。

为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。

首先说明,本文中出现的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

实施例一

本实施例提供了一种内存错误的上报方法,如图1所示,所述方法包括:

步骤s101,根据内存错误出现的频率,判断是否存在出现错误风暴的风险。

在具体实施过程中,可以基于阈值周期内所述内存错误出现的次数,得出所述内存错误出现的频率,以判断是否存在出现错误风暴的风险。也可以基于所述内存错误依次出现的间隔时间的长短,得出所述存错误出现的频率,以判断是否存在出现错误风暴的风险。其中,所述内存错误可以是ce(correctederror,可纠正错误),也可以是fe(fatalerror,不可纠正错误),及其他类型的错误,本实施例不具体限定。

具体的,可以设置阈值时间和所述阈值时间的内存错误上限阈值,以判断是否存在出现错误风暴的风险。举例来讲,可设定300ms所述内存错误的上限为2次。如果在100ms内所述内存错误上报了2次,则判定有出现内存错误风暴的风险;或者在300ms内所述内存错误上报了3,也会判定有出现内存错误风暴的风险。

优选地,可以在bios编写软件,判定是否存在出现错误风暴的风险。具体的,在当前需要上传的内存错误个数大于或等于阈值错误数时,将所述内存错误上传;获取所述内存错误产生的间隔时间,如果所述间隔时间小于门限时间,则计数器计数加一;如果所述计数器计数大于等于阈值次数时,则判定存在出现错误风暴的风险。

步骤s102,如果存在所述风险,则开启抑制模式,并监测进入所述抑制模式之后出现的内存错误,根据监测结果判断所述风险是否消失,其中,所述抑制模式为终止上报所述内存错误的模式。

在具体实施过程中,在判定存在出现错误风暴的风险时,关闭内存控制器上的可纠正错误计数寄存器,从而禁用smi,开启抑制模式。然后开启错误扫描功能,其中,所述错误扫描功能为周期性扫描有无新的内存错误产生;如果在扫描周期时间内没有新的内存错误出现,则所述计数器计数减一;如果在所述扫描周期时间内有新的内存错误出现,则所述计数器计数重置到所述阈值次数;如果所述计数器计数为零,则判定所述风险消失。当然,如果在所述扫描周期时间内有新的内存错误出现,所述计数器计数也可以重置为任意一个预设次数,所述预设次数可根据用户的不同需求自定义设置。

具体的,在抑制模式开启时,会设置一个周期性系统管理模式的定时器事件,开启内存ecc(errorcorrectingcode,错误检查和纠正技术)轮询模式,轮询周期和门限时间保持一致,假如门限时间设定为200ms,也就是200ms会扫描一次,扫描当前mca(machinecheckarchitecture,机器错误校验架构)msr(modelspecificregister,特殊模块寄存器)是否有新增的内存ce出现,若出现新增内存ce则将错误计数变量写回到之前的阈值次数,等待下次轮询扫描。若在轮询过程中,若无新增,则将当前错误计数减1,直到减至0,会再次开启上报模式,并关闭定时器扫描事件。

当然,也可以通过以下方式判断所述风险是否消失:可以基于所述设置阈值时间和所述阈值时间内存错误上限阈值,以判断错误风暴的风险是否消失。若果在所述阈值时间内错误出现的个数超过了所述上限阈值,则判定所述风险消失。举例来讲,可设定300ms所述内存错误的上限为2次。如果在300ms内所述内存错误上报了3次或3次以上,则判定错误风暴的风险没有消失;若果在300ms内所述内存错误上报了2或2次以下,则判定所述风险消失。

步骤s103,如果所述风险消失,则关闭所述抑制模式,进入上报模式,其中,所述上报模式为正常上报内存错误的模式。

在具体实施过程中,在所述风险消失时,关闭错误扫描功能,并开启内存控制器上的可纠正错误计数寄存器;其中,所述错误扫描功能为周期性扫描有无新的内存错误产生。从而开启smi,进入所述上报模式。其中,所述正常上报内存错误模式可以是在错误计数超过阈值数时,对所述错误进行上报;也可以是每产生一个错误就对所述错误进行上报,在此不作限制。

下面结合图2以一具体实例来帮助说明本实施例提供的方法的详细流程:

在bios代码中增加内存可纠正错误风暴抑制和风暴抑制周期的bios选项。所述内存可纠正错误风暴抑制选项,可以设置为开启或关闭,用于控制是否开启内存可纠正错误风暴抑制功能。所述风暴抑制周期,可以填写可纠正错误风暴的抑制周期,时间以ms为单位。

当内存ce个数到达阈值,通过smi上报至bios,bios会进入smm对错误进行处理。然后bios代码获取时间戳更新为初始时间,在下次错误发生时,再获取当前时间,判断两次错误间隔时间是否到达门限时间,若小于所述门限时间,则计数器继续加1,同时判断错误计数变量是否到达风暴次数的上限次数,若未到达所述风上限次数则不对错误处理,直接返回,若错误个数在门限时间内已到达所述上限次数,则关闭内存控制器内部该内存库rank上的可纠正错误计数寄存器,从而禁用smi系统管理中断,开启抑制模式。若间隔时间已超出所述门限时间,则获取当前时间戳更新初始时间,开启新一轮计数。其中,所述门限时间及所述风暴抑制周期的时间。

在抑制模式开启时,会设置一个周期性系统管理模式的定时器事件,开启内存ecc轮询模式。轮询周期和风暴抑制周期保持一致,假如现在风暴抑制周期设定为200ms,也就是200ms会触发一次扫描,扫描当前mca-msr是否有新增的内存可纠正错误出现,若出现新增内存可纠正错误则将错误计数变量写回风暴次数的上限,等待下次轮询扫描。若在轮询过程中,若无新增内存可纠正错误,则将当前错误计数减1,直到减至0,会并关闭定时器扫描事件,并开启内存控制器内部该内存库rank上的可纠正错误计数寄存器,进而开启上报模式。

实施例二

基于同一发明构思,如图3所示,本实施例提供了一种内存错误的上报装置300,包括:

判断单元310,用于根据内存错误出现的频率,判断是否存在出现错误风暴的风险;

控制单元320,用于如果存在所述风险,则开启抑制模式,并监测进入所述抑制模式之后出现的内存错误,根据监测结果判断所述风险是否消失,其中,所述抑制模式为终止上报所述内存错误的模式;

恢复单元330,用于如果所述风险消失,则关闭所述抑制模式,进入上报模式,其中,所述上报模式为正常上报内存错误的模式。

由于本实施例所介绍的内存错误的上报装置为实施本发明实施例中内存错误的上报方法所采用的装置,故而基于本发明实施例中所介绍的内存错误的上报方法,本领域所属技术人员能够了解本实施例的内存错误的上报装置的具体实施方式以及其各种变化形式,所以在此对于该内存错误的上报装置如何实现本发明实施例中的方法不再详细介绍。只要本领域所属技术人员实施本发明实施例中内存错误的上报方法所采用的装置,都属于本发明所欲保护的范围。

实施例三

基于同一发明构思,如图4所示,本实施例提供了一种电子设备400,包括存储器410、处理器420及存储在存储器410上并可在处理器420上运行的计算机程序411,所述处理器420执行所述计算机程序411时实现以下步骤:

根据内存错误出现的频率,判断是否存在出现错误风暴的风险;如果存在所述风险,则开启抑制模式,并监测进入所述抑制模式之后出现的内存错误,根据监测结果判断所述风险是否消失,其中,所述抑制模式为终止上报所述内存错误的模式;如果所述风险消失,则关闭所述抑制模式,进入上报模式,其中,所述上报模式为正常上报内存错误的模式。

由于本实施例所介绍的电子设备为实施本申请实施例中内存错误的上报方法所采用的电子设备,故而基于本申请实施例中所介绍的内存错误的上报方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中内存错误的上报方法所采用的电子设备,都属于本申请所欲保护的范围。

实施例四

基于同一发明构思,如图5所示,本实施例提供了一种计算机可读存储介质500,其上存储有计算机程序510,所述计算机程序510被处理器执行时实现以下步骤:

根据内存错误出现的频率,判断是否存在出现错误风暴的风险;如果存在所述风险,则开启抑制模式,并监测进入所述抑制模式之后出现的内存错误,根据监测结果判断所述风险是否消失,其中,所述抑制模式为终止上报所述内存错误的模式;如果所述风险消失,则关闭所述抑制模式,进入上报模式,其中,所述上报模式为正常上报内存错误的模式。

上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:

本发明实施例中公开了一种内存错误的上报方法、装置、设备及介质,根据内存错误出现的频率,判断是否存在出现错误风暴的风险,进而可以在所述错误风暴来临时,执行抑制内存错误上报的操作。如果存在所述风险,则开启抑制模式,并监测进入所述抑制模式之后出现的内存错误,根据监测结果判断所述风险是否消失,其中,所述抑制模式为终止上报所述内存错误的模式。通过上述技术特征可以直到内存错误目前的状况,进而得知错误风暴是否结束。如果所述风险消失,则关闭所述抑制模式,进入上报模式,其中,所述上报模式为正常上报内存错误的模式。所以,能够在所述风险过去时,退出所述抑制模式,以使内存错误正常上传系统。所以,解决了现有技术中内存部件出现硬件故障时,会在短时间内产生大量可纠正错误,有风暴式可纠正错误的风险的技术问题,实现了避免系统管理模式无法恢复退出,进而导致系统瘫痪的效果。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1