内存故障处理方法、装置、计算机设备和存储介质转让专利

申请号 : CN202310730755.6

文献号 : CN116483612B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 贾帅帅李道童韩红瑞陈衍东李盛新

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本申请涉及一种内存故障处理方法、装置、计算机设备和存储介质。所述方法包括:获取内存的可纠正错误信息,根据可纠正错误信息进行带外内存故障预测操作,根据预测结果判断是否触发系统控制中断;响应于系统控制中断,调用PRM处理模块获取对应于触发系统控制中断的内存故障地址信息,以及根据内存故障地址信息进行地址隔离操作。本申请可以降低系统计算压力,执行相关故障处理的操作不会影响到系统性能,同时还能使本申请实施例在实施时更为便利。

权利要求 :

1.一种内存故障处理方法,其特征在于,所述方法包括:

基板管理控制器获取内存的可纠正错误信息;根据所述可纠正错误信息进行带外内存故障预测操作;根据预测结果判断是否触发系统控制中断;所述系统控制中断的触发方式是预先根据实际应用场景从多种触发方式中选择的一种,所述多种触发方式包括通过通用的通用输入输出接口触发系统控制中断和通过虚拟线触发系统控制中断;任一种所述触发方式在实现时无需连接中央处理单元的错误引脚和平台控制器中枢的通用输入输出接口;

响应于所述系统控制中断,调用PRM处理模块获取对应于触发所述系统控制中断的内存故障地址信息;

根据所述内存故障地址信息进行地址隔离操作;

所述调用PRM处理模块获取对应于触发所述系统控制中断的内存故障地址信息,包括:操作系统通过PRM接口调用基本输入输出系统中的PRM处理模块,所述PRM处理模块被调用后向所述基板管理控制器获取对应于触发所述系统控制中断的内存故障地址信息,并将该内存故障地址信息传递给所述操作系统。

2.如权利要求1所述的方法,其特征在于,获取所述可纠正错误信息之后,所述方法还包括:获取所述内存的电源电压值,响应于所述电源电压值小于预设电压阈值,触发第一系统管理中断;

响应于所述第一系统管理中断,提高内存刷新率。

3.如权利要求1或2所述的方法,其特征在于,所述方法还包括:获取所述内存的不可纠正错误信息,根据所述不可纠正错误信息进行内存健康评分操作以及信息展示操作。

4.如权利要求3所述的方法,其特征在于,获取所述不可纠正错误信息之前,所述方法还包括:响应于硬件平台在所述内存出现不可纠正错误时触发的第二系统管理中断,获取硬件平台产生的所述不可纠正错误信息。

5.如权利要求1所述的方法,其特征在于,获取所述可纠正错误信息之前,所述方法还包括:通过检测错误引脚中断采集所述可纠正错误信息,所述错误引脚中断是硬件平台在所述内存出现可纠正错误时产生的。

6.如权利要求1所述的方法,其特征在于,获取所述可纠正错误信息之前,所述方法还包括:通过轮询内存控制器采集所述可纠正错误信息。

7.如权利要求1所述的方法,其特征在于,

所述通过PRM接口调用所述PRM处理模块,包括:

调用所述PRM接口获取所述PRM处理模块的全局唯一标识符并根据所述全局唯一标识符调用所述PRM处理模块。

8.如权利要求7所述的方法,其特征在于,所述根据所述全局唯一标识符调用所述PRM处理模块,包括:根据所述全局唯一标识符从第一预设表中查询得到所述PRM处理模块的首地址;

根据所述首地址调用所述PRM处理模块。

9.如权利要求1所述的方法,其特征在于,获取所述内存故障地址信息之后,所述方法还包括:将所述内存故障地址信息记录在第二预设表中。

10.如权利要求9所述的方法,其特征在于,根据所述内存故障地址信息进行地址隔离操作,包括:从所述第二预设表中获取所述内存故障地址信息,以及对所述内存故障地址信息进行地址隔离操作。

11.如权利要求1所述的方法,其特征在于,所述可纠正错误信息包括内存故障地址信息;

所述根据预测结果判断是否触发系统控制中断,包括:

判断所述预测结果表征的错误类型是否为特定错误类型;所述特定错误类型包括风险内存单元错误、风险内存行错误和风险颗粒故障;

若是,触发系统控制中断。

12.如权利要求2所述的方法,其特征在于,提高所述内存刷新率时,将所述内存刷新率的值设置为目标频率值;所述目标频率值是特定频率值的2倍;所述特定频率值是指根据实际应用场景为电压值正常的内存设置的内存刷新率。

13.如权利要求2所述的方法,其特征在于,所述获取所述内存的电源电压值,包括:监控所述内存的电源管理集成电路信息,从所述电源管理集成电路信息中获取所述电源电压值。

14.一种内存故障处理装置,其特征在于,所述装置包括:

第一错误信息获取模块,用于通过基板管理控制器获取内存的可纠正错误信息;

故障预测模块,用于根据所述可纠正错误信息进行带外内存故障预测操作;

控制中断触发模块,用于根据预测结果判断是否触发系统控制中断;所述系统控制中断的触发方式是预先根据实际应用场景从多种触发方式中选择的一种,所述多种触发方式包括通过通用的通用输入输出接口触发系统控制中断和通过虚拟线触发系统控制中断;任一种所述触发方式在实现时无需连接中央处理单元的错误引脚和平台控制器中枢的通用输入输出接口;

故障地址获取模块,用于响应于所述系统控制中断,调用PRM处理模块获取对应于触发所述系统控制中断的内存故障地址信息;

地址隔离模块,用于根据所述内存故障地址信息进行地址隔离操作;

所述故障地址获取模块调用PRM处理模块获取对应于触发所述系统控制中断的内存故障地址信息,包括:操作系统通过PRM接口调用基本输入输出系统中的PRM处理模块,所述PRM处理模块被调用后向所述基板管理控制器获取对应于触发所述系统控制中断的内存故障地址信息,并将该内存故障地址信息传递给所述操作系统。

15.一种计算机设备,包括存储器、第一处理器、第二处理器和内存,所述存储器中存储有在所述第一处理器上运行的操作系统和基本输入输出系统,以及在所述第二处理器上运行的BMC固件,其特征在于,所述第二处理器,用于获取内存的可纠正错误信息,根据所述可纠正错误信息进行带外内存故障预测操作,根据预测结果判断是否触发系统控制中断;所述系统控制中断的触发方式是预先根据实际应用场景从多种触发方式中选择的一种,所述多种触发方式包括通过通用的通用输入输出接口触发系统控制中断和通过虚拟线触发系统控制中断;任一种所述触发方式在实现时无需连接中央处理单元的错误引脚和平台控制器中枢的通用输入输出接口;

所述第一处理器,用于响应于所述系统控制中断,操作系统通过PRM接口调用基本输入输出系统中的PRM处理模块,所述PRM处理模块被调用后向基板管理控制器获取对应于触发所述系统控制中断的内存故障地址信息,并将该内存故障地址信息传递给所述操作系统,以及根据所述内存故障地址信息进行地址隔离操作。

16.如权利要求15所述的计算机设备,其特征在于,所述PRM接口包括第一方法和第一驱动模块;所述第一处理器通过PRM接口调用所述PRM处理模块时,用于:通过所述第一方法获取所述PRM处理模块的全局唯一标识,以及将所述全局唯一标识传递至PRM缓冲器;

通过所述第一驱动模块从所述PRM缓冲器中获取所述全局唯一标识,以及根据所述全局唯一标识调用所述PRM处理模块。

17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至13中任一项所述的方法的步骤。

说明书 :

内存故障处理方法、装置、计算机设备和存储介质

技术领域

[0001] 本申请涉及内存故障处理领域,特别是涉及一种内存故障处理方法和计算机设备。

背景技术

[0002]  内存故障是导致服务器停机的最常见的原因之一。对于内存的可纠正错误(Correctable Error,CE)的处理方式,当前常用的一种方式是服务器在检测到内存错误时即触发SMI(System Management Interrupt,系统管理中断),使得CPU(Central Processing Unit,中央处理单元)进入SMM(System Management Mode,系统管理模式),然后进行错误处理及上报,还有一种方式是先在硬件上将CPU的Error pin和PCH(Platform Controller Hub,平台控制器中枢)的一个GPIO(General Purpose Input/Output,通用输入输出接口)连接,以及配置该GPIO,使得该GPIO具备产生SCI(System Management Interrupt,系统控制中断)的功能,之后在检测到内存错误时,CPU通过该Error pin控制该GPIO产生SCI,当该SCI产生时,调用BIOS(Basic Input Output System,基本输入输出系统)代码中的PRM(Platform Runtime Mechanism,平台运行时机制)模块来进行错误处理及上报。
[0003] 上述的前一种方式会导致CPU进入SMM即系统管理模式,SMM会使系统性能降低;后一种方式需要在硬件上进行调整,不便于实施。

发明内容

[0004] 本申请针对上述不足或缺点,提供了一种内存故障处理方法、装置、计算机设备和存储介质,本申请实施例可以降低系统计算压力,执行相关故障处理的操作不会影响到系统性能,同时还能使本申请实施例在实施时更为便利。
[0005] 本申请根据第一方面提供了一种内存故障处理方法,在一些实施例中,该方法包括:
[0006] 获取内存的可纠正错误信息;
[0007] 根据可纠正错误信息进行带外内存故障预测操作;
[0008] 根据预测结果判断是否触发系统控制中断;
[0009] 响应于系统控制中断,调用PRM处理模块获取对应于触发系统控制中断的内存故障地址信息;
[0010] 根据内存故障地址信息进行地址隔离操作。
[0011] 在一些实施例中,获取可纠正错误信息之后,该方法还包括:
[0012] 获取内存的电源电压值,响应于电源电压值小于预设电压阈值,触发第一系统管理中断;
[0013] 响应于第一系统管理中断,提高内存刷新率。
[0014] 在一些实施例中,该方法还包括:
[0015] 获取内存的不可纠正错误信息,根据不可纠正错误信息进行内存健康评分操作以及信息展示操作。
[0016] 在一些实施例中,获取不可纠正错误信息之前,该方法还包括:
[0017] 响应于硬件平台在内存出现不可纠正错误时触发的第二系统管理中断,获取硬件平台产生的不可纠正错误信息。
[0018] 在一些实施例中,获取可纠正错误信息之前,该方法还包括:
[0019] 通过检测错误引脚中断采集可纠正错误信息,错误引脚中断是硬件平台在内存出现可纠正错误时产生的。
[0020] 在一些实施例中,获取可纠正错误信息之前,该方法还包括:
[0021] 通过轮询内存控制器采集可纠正错误信息。
[0022] 在一些实施例中,调用PRM处理模块获取对应于触发所述系统控制中断的内存故障地址信息,包括:
[0023] 通过PRM接口调用PRM处理模块,使得PRM处理模块获取对应于触发所述系统控制中断的内存故障地址信息。
[0024] 在一些实施例中,通过PRM接口调用PRM处理模块,包括:
[0025] 调用PRM接口获取PRM处理模块的全局唯一标识符,并根据全局唯一标识符调用PRM处理模块。
[0026] 在一些实施例中,根据全局唯一标识符调用PRM处理模块,包括:
[0027] 根据全局唯一标识符从第一预设表中查询得到PRM处理模块的首地址,根据首地址调用PRM处理模块。
[0028] 在一些实施例中,获取内存故障地址信息之后,该方法还包括:
[0029] 将内存故障地址信息记录在第二预设表中。
[0030] 在一些实施例中,根据内存故障地址信息进行地址隔离操作,包括:
[0031] 从第二预设表中获取内存故障地址信息,以及对内存故障地址信息进行地址隔离操作。
[0032] 在一些实施例中,可纠正错误信息包括内存故障地址信息;根据预测结果判断是否触发系统控制中断,包括:
[0033] 判断预测结果表征的错误类型是否为特定错误类型;特定错误类型包括风险内存单元错误、风险内存行错误和风险颗粒故障;
[0034] 若是,触发系统控制中断。
[0035] 在一些实施例中,提高内存刷新率时,将内存刷新率的值设置为目标频率值;目标频率值是特定频率值的2倍。
[0036] 在一些实施例中,获取内存的电源电压值,包括:
[0037] 监控内存的电源管理集成电路信息,从电源管理集成电路信息中获取电源电压值。
[0038] 本申请根据第二方面提供了一种内存故障处理装置,该装置包括:
[0039] 第一错误信息获取模块,用于获取内存的可纠正错误信息;
[0040] 故障预测模块,用于根据可纠正错误信息进行带外内存故障预测操作;
[0041] 控制中断触发模块,用于根据预测结果判断是否触发系统控制中断;
[0042] 故障地址获取模块,用于响应于系统控制中断,调用PRM处理模块获取对应于触发系统控制中断的内存故障地址信息;
[0043] 地址隔离模块,用于根据内存故障地址信息进行地址隔离操作。
[0044] 本申请根据第三方面提供了一种计算机设备,在一些实施例中,该计算机设备包括存储器、第一处理器、第二处理器和内存,存储器中存储由第一处理器运行的操作系统和基本输入输出系统,以及由第二处理器运行的BMC固件。
[0045] 其中,第二处理器,用于获取内存的可纠正错误信息,根据可纠正错误信息进行带外内存故障预测操作,根据预测结果判断是否触发系统控制中断;
[0046] 第一处理器,用于响应于系统控制中断,调用PRM处理模块获取内存故障地址信息,以及根据内存地址信息进行地址隔离操作。
[0047] 在本申请的上述实施例中,通过收集内存的可纠正错误信息,以及进行内存故障预测以评估内存出现的可纠正错误是否存在宕机风险,可以降低CPU的计算压力;还通过PRM技术来获取相关的内存故障地址信息,并对相关内存故障地址信息进行隔离,以抑制内存故障。其中,通过使用PRM技术可以避免触发系统管理中断进而避免CPU进入系统管理模式,因而相关故障处理的操作不会影响到系统性能,而在使用PRM技术时,为了不用在硬件上进行调整,本申请实施例适当调整了软件架构,最终可以实现通过PRM接口来调用PRM处理模块进行采集内存故障错误信息的相关操作,由于本申请实施例在实施时无需在硬件上进行调整,因而实施时更为便利。

附图说明

[0048] 图1为本申请根据一个或多个实施例提供的一种内存故障处理方法的流程示意图;
[0049] 图2为本申请根据一个或多个实施例提供的在处理可纠正错误时,基板管理控制器、操作系统、基本输入输出系统之间的交互示意图;
[0050] 图3为本申请根据一个或多个实施例提供的内存故障抑制处理的流程示意图;
[0051] 图4为本申请根据另一个或多个实施例提供的在处理可纠正错误时,基板管理控制器、基本输入输出系统之间的交互示意图;
[0052] 图5为本申请根据一个或多个实施例提供的在处理不可纠正错误时,基板管理控制器、基本输入输出系统之间的交互示意图;
[0053] 图6为本申请根据一个或多个实施例提供的一种内存故障处理装置的结构框图;
[0054] 图7为本申请根据一个或多个实施例提供的计算机设备的内部结构图。

具体实施方式

[0055] 为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
[0056] 下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
[0057] 在本申请的描述中,需要理解的是,术语“第一”、“第二”、“第三”等仅用于区别类似的对象,而不必用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
[0058]  以下是本文将用到的一些技术术语的解释说明。
[0059]  BIOS:Basic Input Output System 基本输入输出系统
[0060] UCE:Uncorrectable Error 不可纠正错误信息
[0061] CE:Correctable Error 可纠正错误信息
[0062] CPER:Common Platform Error Record 通用平台错误记录
[0063] ACPI:Advanced Configuration and Power Management Interface 高级配置和电源管理接口
[0064] APEI:ACPI Platform Error Interface ACPI平台错误接口
[0065] MRT:Memory Resilience Technology 内存故障预测技术
[0066] PRM:Platform Runtime Mechanism 平台运行时机制
[0067] SCI: System Control Interrupt 系统控制中断
[0068] SMI: System Management Interrupt 系统管理中断
[0069] SMM:System Management Mode 系统管理模式
[0070] GHES:Generic Hardware Error Source 通用硬件错误源
[0071] HEST:Hardware Error Source Table 硬件错误源表
[0072] GUID:Globally Unique Identifier 全局唯一标识符
[0073] BMC:Baseboard Management Controller 基板管理控制器
[0074] MMBI:Memory Mapped BMC Interface 内存映射基板管理控制器接口
[0075] PMIC:Power Management IC 电源管理集成电路
[0076] RAS:指计算机系统RAS技术,RAS分别指计算机系统可靠性(reliability)、可用性(availability)和可服务性(serviceability)
[0077] OS:Operating System,操作系统
[0078] PRMT:Platform Runtime Mechanism Table 平台运行时机制表
[0079] 进一步地,通过背景技术可知,SMI会让CPU进入SMM,SMM会造成系统性能降低,原因在于:SMI是一个全局/广播事件,它将暂停所有CPU的core;收到SMI后系统中的所有CPU线程在完成当前指令后立即进入SMM模式;一旦进入SMM操作模式,线程就不能供操作系统使用,并被暂停,直到这些线程被SMM处理程序释放回操作系统。此外,SMM还有以下不足:
[0080] (1) SMM存在安全隐患。SMM代码对OS是不可见的,OS无法对SMM的处理程序进行验证或审查,在SMM中可以操作被操作系统锁定的资源,这是不安全的。
[0081]  (2) SMI的复杂性。由于SMI需要解决异步同步问题,SMM处理程序需要处理eMCA/CSMI/MSMI等不同种类的中断,等等情况造成了SMI的复杂性,在严重情况下如果处理不当,则可能造成系统出现内核错误(Kernel panic)。
[0082]  (3)更新SMM代码需要完整的平台重启。
[0083] 下面对本申请实施例提供的内存故障处理方法进行详细介绍。
[0084]  请参见图1,图中所示是本申请一些实施例提供的内存故障处理方法所包括的步骤,即步骤S110‑S150。本申请实施例提供的内存故障处理方法可以应用于服务器,服务器中至少包括存储有BMC固件(Baseboard Management Controller,基板管理控制器)、操作系统和基本输入输出系统等程序的存储器、第一处理器和第二处理器,其中,第一处理器负责运行操作系统和基本输入输出系统等程序,第二处理器负责运行BMC固件。在本申请实施例中,步骤S110‑S130是第二处理器运行BMC固件而实现的操作,步骤S140‑S150是第一处理器运行操作系统和基本输入输出系统等程序而实现的操作。运行着BMC固件的第二处理器即是基板管理控制器。
[0085] 本申请实施例通过基板管理控制器在带外收集内存的可纠正错误信息,以及进行内存故障预测,以评估内存出现的可纠正错误是否存在宕机风险,可以降低CPU的计算压力;还通过PRM技术来从基板管理控制器获取出现故障的内存颗粒内部件相关的内存地址信息,并上报给操作系统,进而操作系统可以对相关内存地址信息进行隔离,以抑制内存故障。其中,通过使用PRM技术可以避免触发系统管理中断进而避免CPU进入系统管理模式,因而相关故障处理的操作不会影响到系统性能,也不会出现系统管理模式所可能带来的其他不足;而在使用PRM技术时,为了不用在硬件上进行调整,本申请实施例适当调整了软件架构,最终可以实现通过PRM接口来调用PRM处理模块进行采集内存的可纠正错误信息的相关操作,由于本申请实施例在实施时无需在硬件上进行调整,因而实施时更为便利。
[0086] 以下对步骤S110‑S150进行详细说明。
[0087]  S110:获取内存的可纠正错误信息。
[0088]  S120:根据可纠正错误信息进行带外内存故障预测操作。
[0089]  S130:根据预测结果判断是否触发系统控制中断。
[0090]  在一些实施例中,请参见图2,从中可以看到在处理内存的可纠正错误时,操作系统、基本输入输出系统和基板管理控制器之间的交互过程。本实施例中的基板管理控制器包括内存故障预测模块和CE采集模块。内存故障预测模块可以是Memory failure prediction程序,CE采集模块可以是Memory CE collection程序。
[0091] 当CE采集模块采集到内存的CE(即可纠正错误信息)时,指示内存故障预测模块进行带外内存故障预测操作,即分析已采集到的CE是否是否会引发内存出现UCE(即不可纠正错误信息),即宕机风险,若是,则要对相关的内存故障地址进行隔离,以对内存故障进行抑制,避免后续内存出现UCE。其中,如果带外内存故障预测操作的预测结果显示有宕机风险,那么内存故障预测模块就触发系统控制中断给操作系统;如果带外内存故障预测操作的预测结果显示没有宕机风险,那么内存故障预测模块只需将当前采集的CE进行记录,而不用触发系统控制中断。在后续采集到CE时,内存故障预测模块还可以结合预先记录下来的CE来进行带外内存故障预测操作。
[0092] 上述的带外内存故障预测操作可以使用任何带外内存故障预测技术,例如MRT技术来实现。MRT技术是一种内存RAS技术,用于分析和预测内存故障并隔离故障位。
[0093]  内存包括多个存储模块,每个存储模块中包括多个Channel(可翻译为内存通道),各个Channel中包括多个Rank(可翻译为内存排列),各个Rank中包括多个Bank(可翻译为内存库),各个Bank是由多行多列的cell(可翻译为内存单元)构成的矩阵,Bank中的“行”和“列”的英文名称分别是Row和Column。以存储模块是DIMM(Dual‑Inline‑Memory‑Modules,双列直插式存储模块)为例,当内存出现可纠正错误时,硬件平台(即Hardware platform)会产生CE,CE中会包括出现错误的内存地址信息,该内存地址表征哪个DIMM中的哪个 Channel中的哪个Rank中的哪个Bank中的哪个Row和Column的物理地址(Physical Address)。上述的内存颗粒内部件包括内存单元和内存行,内存单元可以是上述的cell,内存行可以是上述的Row。
[0094] 假如采用MRT技术来实现上述的带外内存故障预测操作,则预测结果会包括CE中的内存地址信息对应的错误类型。相应地,根据预测结果判断是否触发系统控制中断的具体操作可以是:判断预测结果表征的错误类型是否为特定错误类型,该特定错误类型包括风险内存单元错误、风险内存行错误和风险颗粒故障;若预测结果表征的错误类型为特定错误类型,则触发系统控制中断;若预测结果表征的错误类型不为特定错误类型,则不需要触发系统控制中断。
[0095]  进一步地,系统控制中断的触发方式可以是各种常用的触发方式,可以根据实际应用场景来灵活选择相应的触发方式。例如,基板管理控制器可以通过通用GPIO来触发系统控制中断;又例如,基板管理控制器可以通过虚拟线(如eSPI virtual wire)来触发系统控制中断。上述的各种触发系统控制中断的方式在实现时,无需专门连接CPU的Error pin(可翻译为错误引脚)和PCH的GPIO,因而实施时更为便利,此外,相关技术只能通过CPU的Error pin来触发SCI,而本申请实施例可以采用多种方式来触发SCI,因此灵活性更高。
[0096]  S140:响应于系统控制中断,调用PRM处理模块获取对应于触发系统控制中断的内存故障地址信息。
[0097]  S150:根据内存故障地址信息进行地址隔离操作。
[0098]  CPU进入SMM后,它将暂停所有CPU的core(核心),然后去执行SMI处理程序,此过程会造成极大的系统资源浪费,影响系统性能。本申请实施例采用PRM技术替代SMI处理程序,可以避免CPU进入SMM。其中,采用PRM技术能够实现动态分配CPU的核心数,从而可以很好地解决上述系统性能被影响的问题。
[0099]  其中,基板管理控制器触发系统控制中断后,操作系统会通过PRM接口调用BIOS(即基本输入输出系统)中的PRM处理模块来采集相关的内存故障地址信息,以及对采集到的内存故障地址信息进行地址隔离操作。上述的PRM处理模块是BIOS代码中的PRM Handler程序。
[0100] 在一些实施例中,调用PRM处理模块获取对应于触发所述系统控制中断的内存故障地址信息,包括:通过PRM接口调用PRM处理模块,使得PRM处理模块获取对应于触发所述系统控制中断的内存故障地址信息。
[0101] 在本实施例中,操作系统通过PRM接口调用基本输入输出系统中的PRM处理模块来向基板管理控制器获取相关的内存故障地址信息。
[0102]  其中,操作系统中包括PRM驱动模块。上述的PRM接口是指ACPI Lxx Method和Bridge Driver。操作系统调用ACPI Lxx Method时,由PRM驱动模块调用ACPI Lxx Method。
[0103]  具体地,操作系统通过PRM接口调用PRM处理模块时,先调用ACPI Lxx Method,使得ACPI Lxx Method将PRM处理模块的全局唯一标识符传递至Bridge Driver,之后Bridge Driver根据全局唯一标识符启动PRM处理模块。
[0104]  其中,ACPI Lxx Method将PRM处理模块的全局唯一标识符传递至Bridge Driver时,将PRM处理模块的全局唯一标识符传递至PRM缓冲器(buffer),然后Bridge Driver从PRM缓冲器中获取全局唯一标识符。
[0105]  Bridge Driver根据全局唯一标识符启动PRM处理模块时,Bridge Driver根据全局唯一标识符(即GUID)从操作系统中的第一预设表,即PRMT表中查询得到PRM处理模块的首地址,之后根据首地址来调用PRM处理模块。
[0106] 查看寄存器手册可以知道,CPU有一些特权指令或者IO(即in/out)操作,明确表明需要在SMM模式下访问,同时也有一些指令或寄存器操作并无表明必须在SMM模式下操作。针对内存可纠正错误的处理,所需用到的指令或寄存器操作并未表明必须在SMM模式下操作,因此本申请实施例采用PRM技术来替代SMI,以避免CPU进入SMM。相关技术中,SMI处理程序会通过ACPI、UEFI等抽象接口来对操作系统保持透明,在本申请实施例中,在BIOS代码中写了PRM处理模块,利用PRM处理模块来替代SMI处理程序,同时保留了上述抽象接口,以及在BIOS代码中提供用于从ACPI调用PRM处理模块的接口(即PRM接口),可以使PRM处理模块对操作系统保持透明。
[0107] 进一步地,PRM处理模块响应于操作系统的调用,向基板管理控制器获取相关的内存故障地址信息,以及将内存故障地址信息传递至操作系统。
[0108]  PRM处理模块被调用后即基板管理控制器进行交互,以向基板管理控制器获取相关的内存故障地址信息,并将该内存故障地址信息传递给操作系统。其中,PRM处理模块可以通过IPMI、H2B或MMBI等特定接口来与基板管理控制器进行交互,以从基板管理控制器处获得可能导致宕机风险的CE,进而可以从CE中取得相关的内存故障地址信息。
[0109] 其中,PRM处理模块将内存地址信息传递至操作系统时,将内存地址信息记录在第二预设表,即操作系统中的HEST表中,以及在HEST表中设置CPER标识,之后操作系统可从HEST表中获得内存地址信息。具体地,PRM处理模块根据从基板管理控制器取得的CE来创建CPER,其中,CPER中的错误字段需设置为bit3,以指示操作系统停止使用相关错误源,之后将CPER内记录的信息写到操作系统中的HEST表中的GHES字段,之后操作系统通过查询HEST表来获得上述内存地址信息。
[0110] 进一步地,操作系统中包括PageOffline驱动模块,操作系统根据内存地址信息进行地址隔离操作时,由PageOffline驱动模块从HEST表中获取内存地址信息,以及对内存地址信息进行地址隔离操作。
[0111] 在本申请的上述实施例中,通过基板管理控制器在带外收集内存的可纠正错误信息,以及进行内存故障预测,以评估内存出现的可纠正错误是否存在宕机风险,可以降低CPU的计算压力;还通过PRM技术来从基板管理控制器获取出现故障的内存颗粒内部件相关的内存地址信息,并上报给操作系统,进而操作系统可以对相关内存地址信息进行隔离,以抑制内存故障。其中,通过使用PRM技术可以避免触发系统管理中断进而避免CPU进入系统管理模式,因而相关故障处理的操作不会影响到系统性能。而在使用PRM技术时,为了不用在硬件上进行调整,本申请实施例适当调整了软件架构,最终可以实现通过PRM接口来调用PRM处理模块进行采集内存错误信息的相关操作,由于本申请实施例在实施时无需在硬件上进行调整,因而实施时更为便利。
[0112] 在一些实施例中,当内存出现可纠正错误时,基板管理控制器可以通过以下方式来采集可纠正错误信息,即:
[0113] (1)基板管理控制器通过检测错误引脚中断即Error pin中断来采集可纠正错误信息,其中,Error pin中断是硬件平台在内存出现可纠正错误时产生的。
[0114]  (2)基板管理控制器通过轮询内存控制器(integrated memory controller,IMC)来采集可纠正错误信息。
[0115] 在一些实施例中,如图3所示,获取可纠正错误信息之后,该方法还包括步骤S210‑S220,各步骤的详情如下:
[0116] S210:获取内存的电源电压值,响应于电源电压值小于预设电压阈值,触发第一系统管理中断。
[0117]  本实施例的内存是DDR5 DRAM,其中,DDR5是指一种计算机内存规格,DRAM的中英文全称是动态随机存取存储器和Dynamic Random Access Memory。相应地,基板管理控制器获取内存的电源电压值,包括:基板管理控制器监控内存的电源管理集成电路信息即PMIC信息,从PMIC信息中获取电源电压值。
[0118]  DRAM中的电荷会慢慢泄露,如果DRAM的电压值较低有可能导致内存故障。
[0119]  DDR5内存的PMIC(Power Management IC,电源管理集成电路)是一种用于管理电源的集成电路,它可以提供电源,管理电源,控制电源,监测电源等功能。DDR5 PMIC是专门为DDR5内存设计的,它可以提供DDR5内存所需的电源,并且可以控制DDR5内存的电源,监测DDR5内存的电源,以确保DDR5内存的正常工作。DDR5 PMIC还可以提供节能功能,可以有效减少DDR5内存的能耗,提高DDR5内存的效率。
[0120] 因此,基板管理控制器在带外监控PMIC信息,在采集到CE时,即获取内存当前的电源电压值,假如内存的电源电压值小于预设电压阈值(可根据实际场景来设定),即触发第一系统管理中断。
[0121]  S220:响应于第一系统管理中断,提高内存刷新率。
[0122] 基板管理控制器和SMI处理模块的交互可见图4,在基板管理控制器触发第一系统管理中断后,由BIOS代码中的SMI处理模块来提高内存刷新率。其中,提高内存刷新率可以提高充电频率,进而增加内存中的电荷,以达到抑制内存故障的目的。
[0123] 优选地,SMI处理模块提高内存刷新率时,将内存刷新率的值设置为目标频率值;目标频率值是特定频率值的2倍。上述的特定频率值是指通常为电压值正常的内存所设置的内存刷新率,其可根据具体场景进行设置,本申请实施例不做具体限制。
[0124] 其中,内存刷新率太高可能影响正常读取内存数据的速度,太慢则或许不能及时使内存中的电荷达到正常水平,进而影响到内存抑制效果,将内存刷新率设置为2倍正常刷新率可以兼顾内存抑制效果和数据读取速度。
[0125] 在一些实施例中,该方法还包括:获取内存的不可纠正错误信息,根据不可纠正错误信息进行内存健康评分操作以及信息展示操作。
[0126] 在本实施例中,内存的不可纠正错误信息由基板管理控制器来采集。相应地,基板管理控制器采集UCE即不可纠正错误信息的过程可参见图5所示。即,硬件平台在内存出现不可纠正错误时,向基本输入输出系统中的SMI处理模块发送不可纠正错误信息以及触发第二系统管理中断,之后SMI处理模块响应于第二系统管理中断将UCE发送至基板管理控制器。
[0127] 需要说明的是,关于上述任何一个实施例中提供的内存故障处理方法所包括的各个步骤,除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,这些步骤中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0128] 本申请还提供了一种与上述实施例提供的内存故障处理方法相对应的内存故障处理装置,在一些实施例中,如图6所示,该装置包括:
[0129] 第一错误信息获取模块110,用于获取内存的可纠正错误信息;
[0130] 故障预测模块120,用于根据可纠正错误信息进行带外内存故障预测操作;
[0131] 控制中断触发模块130,用于根据预测结果判断是否触发系统控制中断;
[0132] 故障地址获取模块140,用于响应于系统控制中断,调用PRM处理模块获取对应于触发系统控制中断的内存故障地址信息;
[0133] 地址隔离模块150,用于根据内存故障地址信息进行地址隔离操作。
[0134] 在一些实施例中,该方法还包括刷新率提升模块,刷新率提升模块,用于在获取可纠正错误信息之后,获取内存的电源电压值,响应于电源电压值小于预设电压阈值,触发第一系统管理中断;以及响应于第一系统管理中断,提高内存刷新率。
[0135] 在一些实施例中,该装置还包括内存健康评分模块。内存健康评分模块,用于获取内存的不可纠正错误信息,根据不可纠正错误信息进行内存健康评分操作以及信息展示操作。
[0136] 在一些实施例中,该装置还包括第二错误信息获取模块。第二错误信息获取模块,用于响应于硬件平台在内存出现不可纠正错误时触发的第二系统管理中断,获取硬件平台产生的不可纠正错误信息。
[0137] 在一些实施例中,第一错误信息获取模块110在获取不可纠正错误信息之前,用于通过检测错误引脚中断采集可纠正错误信息,错误引脚中断是硬件平台在内存出现可纠正错误时产生的。
[0138] 在另一些实施例中,第一错误信息获取模块110在获取不可纠正错误信息之前,用于通过轮询内存控制器采集可纠正错误信息。
[0139] 在一些实施例中,故障地址获取模块140,用于通过PRM接口调用PRM处理模块,使得PRM处理模块获取对应于触发所述系统控制中断的内存故障地址信息。
[0140] 在一些实施例中,故障地址获取模块140,用于调用PRM接口获取PRM处理模块的全局唯一标识符,并根据全局唯一标识符调用PRM处理模块。
[0141] 在一些实施例中,故障地址获取模块140,用于根据全局唯一标识符从第一预设表中查询得到PRM处理模块的首地址,根据首地址调用PRM处理模块。
[0142] 在一些实施例中,故障地址获取模块140获取内存故障地址信息之后,还用于将内存故障地址信息记录在第二预设表中。
[0143] 在一些实施例中,地址隔离模块150,用于从第二预设表中获取内存故障地址信息,以及对内存故障地址信息进行地址隔离操作。
[0144] 在一些实施例中,可纠正错误信息包括内存故障地址信息;控制中断触发模块130,用于判断预测结果表征的错误类型是否为特定错误类型;特定错误类型包括风险内存单元错误、风险内存行错误和风险颗粒故障;若是,触发系统控制中断。
[0145] 在一些实施例中,提高内存刷新率时,将内存刷新率的值设置为目标频率值;目标频率值是特定频率值的2倍。
[0146] 在一些实施例中,刷新率提升模块,用于监控内存的电源管理集成电路信息,从电源管理集成电路信息中获取电源电压值。
[0147] 关于内存故障处理装置的具体限定可以参见上文中对于内存故障处理方法的限定,在此不再赘述。上述内存故障处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0148] 本申请在一些实施例中提供了一种计算机设备,其内部结构图可以如图7所示。该计算机设备,包括存储器、第一处理器、第二处理器和内存(即内存储器),该存储器中存储可在第一处理器上运行的操作系统和基本输入输出系统,以及可在第二处理器上运行的BMC固件。
[0149] 其中,第二处理器,用于获取内存的可纠正错误信息,根据可纠正错误信息进行带外内存故障预测操作,根据预测结果判断是否触发系统控制中断;
[0150] 第一处理器,用于响应于系统控制中断,调用PRM处理模块获取内存故障地址信息,以及根据内存地址信息进行地址隔离操作。
[0151]  在一些实施例中,计算机设备是服务器。上述的第二处理器是BMC芯片,BMC芯片具体可以是ARM(Advanced RISC Machine)芯片。
[0152] 在一些实施例中,第一处理器调用PRM处理模块获取对应于触发系统控制中断的内存故障地址信息时,用于:
[0153] 调用PRM处理模块来与第二处理器进行交互,以获取对应于触发系统控制中断的内存故障地址信息。
[0154] 在一些实施例中,第一处理器通过PRM接口调用PRM处理模块。
[0155] 在一些实施例中,PRM接口包括第一方法和第一驱动模块;第一处理器通过PRM接口调用PRM处理模块时,用于:
[0156] 通过第一方法获取PRM处理模块的全局唯一标识,以及将全局唯一标识传递至PRM缓冲器;
[0157] 通过第一驱动模块从PRM缓冲器中获取全局唯一标识,以及根据全局唯一标识调用PRM处理模块。
[0158] 在一些实施例中,第二处理器获取可纠正错误信息之后,还用于获取内存的电源电压值,响应于电源电压值小于预设电压阈值,触发第一系统管理中断;响应于第一系统管理中断,提高内存刷新率。
[0159] 在一些实施例中,第二处理器还用于,获取内存的不可纠正错误信息,根据不可纠正错误信息进行内存健康评分操作以及信息展示操作。
[0160] 在一些实施例中,第二处理器获取不可纠正错误信息之前,用于响应于硬件平台在内存出现不可纠正错误时触发的第二系统管理中断,获取硬件平台产生的不可纠正错误信息。
[0161] 在一些实施例中,第二处理器获取可纠正错误信息之前,用于通过检测错误引脚中断采集可纠正错误信息,错误引脚中断是硬件平台在内存出现可纠正错误时产生的。
[0162] 在另一些实施例中,第二处理器获取可纠正错误信息之前,用于通过轮询内存控制器采集可纠正错误信息。
[0163] 在一些实施例中,第一处理器调用PRM处理模块获取对应于触发系统控制中断的内存故障地址信息时,用于:
[0164] 通过PRM接口调用PRM处理模块,使得PRM处理模块获取对应于触发系统控制中断的内存故障地址信息。
[0165] 在一些实施例中,第一处理器通过PRM接口调用PRM处理模块时,用于:调用PRM接口获取PRM处理模块的全局唯一标识符并根据全局唯一标识符调用PRM处理模块。
[0166] 在一些实施例中,第一处理器根据全局唯一标识符调用PRM处理模块时,用于:
[0167] 根据全局唯一标识符从第一预设表中查询得到PRM处理模块的首地址;
[0168] 根据首地址调用PRM处理模块。
[0169] 在一些实施例中,第一处理器获取内存故障地址信息之后,还用于将内存故障地址信息记录在第二预设表中。
[0170] 在一些实施例中,第一处理器根据内存故障地址信息进行地址隔离操作时,用于:从第二预设表中获取内存故障地址信息,以及对内存故障地址信息进行地址隔离操作。
[0171] 在一些实施例中,可纠正错误信息包括内存故障地址信息;相应地,第二处理器根据预测结果判断是否触发系统控制中断时,用于:
[0172] 判断预测结果表征的错误类型是否为特定错误类型;特定错误类型包括风险内存单元错误、风险内存行错误和风险颗粒故障;
[0173] 若是,触发系统控制中断。
[0174] 在一些实施例中,第二处理器提高内存刷新率时,将内存刷新率的值设置为目标频率值;目标频率值是特定频率值的2倍。
[0175] 在一些实施例中,第二处理器,用于监控内存的电源管理集成电路信息,从电源管理集成电路信息中获取电源电压值。
[0176] 在一些实施例中,该计算机设备包括通过系统总线连接的第一处理器、第二处理器、存储器、内存(即内存储器)、网络接口和数据库。其中,该计算机设备的第一处理器和第二处理器用于提供计算和控制能力。该计算机设备的存储器可以是非易失性存储介质。该非易失性存储介质存储有操作系统、基本输入输出系统、BMC固件和数据库等程序。该内存储器为非易失性存储介质中的操作系统、基本输入输出系统、BMC固件等程序的运行提供环境。该计算机设备的数据库中所具体存储的数据可以参见上述方法实施例中的限定。该计算机设备的网络接口用于与外部的终端通过网络连接通信。
[0177] 本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0178] 本申请在一些实施例中还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例中提供的内存故障处理方法的步骤。
[0179] 在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0180]  本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)、直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0181] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0182] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。