内存管理方法、装置、电子设备及计算机可读存储介质与流程

文档序号:18163817发布日期:2019-07-13 09:28阅读:145来源:国知局
本公开涉及一种内存管理方法、装置、电子设备及计算机可读存储介质。
背景技术
::当前计算机系统中运行程序和数据处理都是读取到内存中进行,内存的稳定性对工作站(workstation)的使用非常重要,内存可能会由于长期使用后的电气性能问题或者某些内存芯片的不稳定,导致性能下降,甚至数据丢失,机器频繁死机等等故障。ecc(errorcorrectingcode)种类的内存会通过自带的ecc功能进行自动纠错。正常情况下少量的ecc纠错不会影响到系统的稳定,但是如果长期频繁的ecc纠错会导致系统性能严重下降,并且表示了内存电气性能有所下降,继续使用会有发生无法纠错的致命错误的风险。技术实现要素:本公开的一个方面提供了一种内存管理方法,包括响应于具有错误检查和纠正功能的内存在工作状态下产生错误事件,将所述错误事件传递至bios芯片,响应于所述bios芯片中记录的多个所述错误事件满足报警条件,输出提示信息。可选地,所述多个所述错误事件满足报警条件包括多个所述错误事件出现的频率达到第一阈值,或者,多个所述错误事件出现的频率的变化特征与预定特征的相似度达到第二阈值。可选地,所述方法还包括所述bios芯片响应于接收到所述错误事件,控制扫描所述内存和/或内存控制器,获得所述错误事件的错误类型。可选地,所述多个所述错误事件满足报警条件包括全部类型的错误事件满足报警条件,或者,特定类型的错误事件满足报警条件。本公开的另一个方面提供了一种内存管理装置,包括信息传递模块和输出模块。信息传递模块,用于响应于具有错误检查和纠正功能的内存在工作状态下产生错误事件,将所述错误事件传递至bios芯片。输出模块,用于响应于所述bios芯片中记录的多个所述错误事件满足报警条件,输出提示信息。可选地,所述多个所述错误事件满足报警条件包括多个所述错误事件出现的频率达到第一阈值,或者,多个所述错误事件出现的频率的变化特征与预定特征的相似度达到第二阈值。可选地,所述装置还包括控制模块,用于在所述bios芯片响应于接收到所述错误事件的情况下,控制扫描所述内存和/或内存控制器,获得所述错误事件的错误类型。可选地,所述多个所述错误事件满足报警条件包括全部类型的错误事件满足报警条件,或者,特定类型的错误事件满足报警条件。本公开的另一个方面提供了一种电子设备,包括处理器以及存储器。所述存储器上存储有计算机程序,所述计算机程序被处理器执行时使得处理器执行如上所述的方法。本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。附图说明为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:图1示意性示出了根据本公开实施例的内存管理方法的应用场景的示意图;图2示意性示出了根据本公开实施例的内存管理方法的流程图;图3示意性示出了根据本公开实施例的内存管理装置的框图;以及图4示意性示出了根据本公开实施例的电子设备的框图。具体实施方式以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。在使用类似于“a、b或c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b或c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。图1示意性示出了根据本公开实施例的内存管理方法的应用场景的示意图。需要注意的是,图1所示仅为可以应用本公开实施例的场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。当前计算机系统中运行程序和数据处理都是读取到内存中进行,内存的稳定性对计算机使用和安全非常重要,内存可能会由于长期使用后的电气性能问题或者某些内存颗粒的不稳定,导致性能下降,甚至数据丢失,机器频繁死机等等故障。工作站是一种高性能的计算机系统,适合专业用户使用。如图1所示,为了保障工作站的可靠性,可以选用可纠错内存(ecc内存,errorcorrectingcode)。具体地,工作站100可以安装多个可纠错内存,例如图1所示的可纠错内存110、120以及130。可纠错内存会通过自带的ecc颗粒来进行自动纠错,正常情况下少量的ecc纠错不会影响到系统的稳定,但是如果长期频繁的ecc纠错会导致系统性能严重下降,并且表示了内存电气性能有所下降,继续使用会有发生无法纠错的致命错误的风险。本公开的实施例提供了一种内存管理方法,包括响应于具有错误检查和纠正功能的内存在工作状态下产生错误事件,将所述错误事件传递至bios芯片,响应于所述bios芯片中记录的多个所述错误事件满足报警条件,输出提示信息。该方法可以输出提示信息,提示用户及时更换内存,避免发生无法纠错的致命错误。图2示意性示出了根据本公开实施例的内存管理方法的流程图。如图2所示,该方法包括操作s210和s220。在操作s210,响应于具有错误检查和纠正功能的内存在工作状态下产生错误事件,将所述错误事件传递至bios芯片。根据本公开实施例,在ecc内存出错时触发事件通知,比如通过系统管理中断(smi,systemmanagementinterrupt)或可修复的机器错误中断(cmci,correctablemachinecheckinterrupt)给bios芯片。在操作s220,响应于所述bios芯片中记录的多个所述错误事件满足报警条件,输出提示信息。根据本公开实施例,bios芯片在获得该事件后,可以对ecc内存进行诊断,判断是否需要提示用户更换内存。根据本公开实施例,所述bios芯片响应于接收到所述错误事件,可以控制扫描内存和/或内存控制器,从中获得所述错误事件的错误类型,例如读出错或者写出错等。bios芯片还可以实时记录错误出现的次数和时间间隔。bios芯片可以记录每一个错误事件发生的时间,错误类型,形成错误日志。bios芯片可以基于该错误日志以及报警条件,在适当的时机输出提示信息,提示用户更换内存。根据本公开实施例,所述多个所述错误事件满足报警条件包括多个所述错误事件出现的频率达到第一阈值。例如,在一段时间内,当出现错误事件的频率逐渐升高,直至达到甚至超过第一阈值,此时认定满足报警条件,输出提示信息。通过频率预测内存损坏较为方便和准确,可解释性强。根据本公开实施例,所述多个所述错误事件满足报警条件包括多个所述错误事件出现的频率的变化特征与预定特征的相似度达到第二阈值。例如,可以收集已经损坏的内存在损坏之前的错误数据,或者,通过实验的方式获得内存在损坏之前的错误数据,并基于已有的错误数据,使用某一时间点之前发生的错误事件作为输入,内存是否在特定时间范围内发生损坏作为输出,训练预测模型。该预测模型的选取例如可以选用支持向量机、递归神经网络、长短期记忆网络等。当错误事件出现的频率的变化特征与预定特征的相似度达到第二阈值时,预测模型可以预测内存即将发生损坏,输出提示信息。选用预测模型相对于判断频率的方式而言,能够抓取隐蔽的特征,能够提前发现一些导致内存损坏的征兆。根据本公开实施例,所述多个所述错误事件满足报警条件包括全部类型的错误事件满足报警条件,或者,特定类型的错误事件满足报警条件。例如,在使用预测模型时,可以区分不同类型的内存错误,丰富输入的信息,有利于得到更为有效的预测结果。该方法利用内存的硬件ecc检测功能,设计一种bios方法,结合处理器的内存控制器内存事件汇报机制,通过长期综合检测机器使用时间,ecc纠错次数和出错间隔时间,来通知使用者或者预警,以便使用者能及时更换新内存来避免后续灾难问题发生。基于同一发明构思,本公开还提供了一种内存管理装置,下面参照图3对本公开实施例的内存管理装置进行说明。图3示意性示出了根据本公开实施例的内存管理装置300的框图。如图3所示,内存管理装置300包括信息传递模块310和输出模块320。该内存管理装置300可以执行上文描述的各种方法。信息传递模块310,例如执行参考上文图2描述的操作s210,用于响应于具有错误检查和纠正功能的内存在工作状态下产生错误事件,将所述错误事件传递至bios芯片。输出模块320,例如执行参考上文图2描述的操作s220,用于响应于所述bios芯片中记录的多个所述错误事件满足报警条件,输出提示信息。根据本公开实施例,在ecc内存出错时触发事件通知,比如通过系统管理中断(smi,systemmanagementinterrupt)或可修复的机器错误中断(cmci,correctablemachinecheckinterrupt)给bios芯片。根据本公开实施例,bios芯片在获得该事件后,可以对ecc内存进行诊断,判断是否需要提示用户更换内存。根据本公开实施例,内存管理装置300还可以包括控制模块,用于在所述bios芯片响应于接收到所述错误事件的情况下,控制扫描内存和/或内存控制器,从中获得所述错误事件的错误类型,例如读出错或者写出错等。bios芯片还可以实时记录错误出现的次数和时间间隔。bios芯片可以记录每一个错误事件发生的时间,错误类型,形成错误日志。bios芯片可以基于该错误日志以及报警条件,在适当的时机输出提示信息,提示用户更换内存。根据本公开实施例,所述多个所述错误事件满足报警条件包括多个所述错误事件出现的频率达到第一阈值。例如,在一段时间内,当出现错误事件的频率逐渐升高,直至达到甚至超过第一阈值,此时认定满足报警条件,输出提示信息。通过频率预测内存损坏较为方便和准确,可解释性强。可以根据其他设备发生损坏的经验数据来设定第一阈值,例如,第一阈值可以设置为10次/周。根据本公开实施例,所述多个所述错误事件满足报警条件包括多个所述错误事件出现的频率的变化特征与预定特征的相似度达到第二阈值。例如,可以收集已经损坏的内存在损坏之前的错误数据,或者,通过实验的方式获得内存在损坏之前的错误数据,并基于已有的错误数据,使用某一时间点之前发生的错误事件作为输入,内存是否在特定时间范围内发生损坏作为输出,训练预测模型。该预测模型的选取例如可以选用支持向量机、递归神经网络、长短期记忆网络等。当错误事件出现的频率的变化特征与预定特征的相似度达到第二阈值时,预测模型可以预测内存即将发生损坏,输出提示信息。选用预测模型相对于判断频率的方式而言,能够抓取隐蔽的特征,能够提前发现一些导致内存损坏的征兆。可以通过多次测试来确定合适的第二阈值,例如,第二阈值可以设置为80%。根据本公开实施例,所述多个所述错误事件满足报警条件包括全部类型的错误事件满足报警条件,或者,特定类型的错误事件满足报警条件。例如,在使用预测模型时,可以区分不同类型的内存错误,丰富输入的信息,有利于得到更为有效的预测结果。该装置利用内存的硬件ecc检测功能,设计一种bios方法,结合处理器的内存控制器内存事件汇报机制,通过长期综合检测机器使用时间,ecc纠错次数和出错间隔时间,来通知使用者或者预警,以便使用者能及时更换新内存来避免后续灾难问题发生。根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。例如,信息传递模块310、输出模块320以及控制模块中的多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,信息传递模块310、输出模块320以及控制模块中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,信息传递模块310、输出模块320以及控制模块中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。图4示意性示出了根据本公开实施例的电子设备400的框图。图4示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。如图4所示,电子设备400包括处理器410和计算机可读存储介质420。该电子设备400可以执行根据本公开实施例的方法。具体地,处理器410例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器410还可以包括用于缓存用途的板载存储器。处理器410可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。计算机可读存储介质420,例如可以是非易失性的计算机可读存储介质,具体示例包括但不限于:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;等等。计算机可读存储介质420可以包括计算机程序421,该计算机程序421可以包括代码/计算机可执行指令,其在由处理器410执行时使得处理器410执行根据本公开实施例的方法或其任何变形。计算机程序421可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序421中的代码可以包括一个或多个程序模块,例如包括421a、模块421b、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器410执行时,使得处理器410可以执行根据本公开实施例的方法或其任何变形。根据本发明的实施例,信息传递模块310、输出模块320以及控制模块中的至少一个可以实现为参考图4描述的计算机程序模块,其在被处理器410执行时,可以实现上面描述的相应操作。本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。电要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1