CN117909109A - 一种内存错误信息处理方法及计算设备 - Google Patents
一种内存错误信息处理方法及计算设备 Download PDFInfo
- Publication number
- CN117909109A CN117909109A CN202311704802.6A CN202311704802A CN117909109A CN 117909109 A CN117909109 A CN 117909109A CN 202311704802 A CN202311704802 A CN 202311704802A CN 117909109 A CN117909109 A CN 117909109A
- Authority
- CN
- China
- Prior art keywords
- memory
- error information
- ecs
- count value
- inspection
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 518
- 238000003672 processing method Methods 0.000 title claims abstract description 35
- 230000010365 information processing Effects 0.000 title claims abstract description 32
- 239000008187 granular material Substances 0.000 claims abstract description 132
- 238000012545 processing Methods 0.000 claims abstract description 78
- 239000002245 particle Substances 0.000 claims abstract description 73
- 238000000034 method Methods 0.000 claims abstract description 37
- 101150039033 Eci2 gene Proteins 0.000 claims abstract description 12
- 102100021823 Enoyl-CoA delta isomerase 2 Human genes 0.000 claims abstract description 12
- 238000007689 inspection Methods 0.000 claims description 126
- 230000007246 mechanism Effects 0.000 claims description 31
- 238000012937 correction Methods 0.000 claims description 27
- 230000008439 repair process Effects 0.000 claims description 26
- 239000000758 substrate Substances 0.000 claims description 4
- 238000007726 management method Methods 0.000 description 89
- 238000003860 storage Methods 0.000 description 24
- 238000013500 data storage Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 20
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 241000700605 Viruses Species 0.000 description 7
- 238000003491 array Methods 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000003745 diagnosis Methods 0.000 description 3
- 235000019580 granularity Nutrition 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请公开了一种内存错误信息处理方法及计算设备,涉及计算机技术领域,保障了计算设备业务的实时性。方法包括:基板管理控制器通过平台环境式控制接口PECI从中央处理器的第一寄存器中获取内存错误信息,在内存错误信息满足预设条件的情况下,基板管理控制器向中央处理器执行系统管理中断,以使中央处理器对内存颗粒中的第二寄存器的计数值进行重置。其中,第二寄存器的计数值用于指示内存颗粒发生错误的次数。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存错误信息处理方法及计算设备。
背景技术
随着计算产业的高速发展,计算系统对内存的容量和传输速率要求越来越高,使得新一代的第五代双倍速率同步动态随机存取存储器(doubledata rate synchronousdynamic random access memory 5,DDR5)已逐渐成为主流。DDR5相比传统的第四代双倍速率同步动态随机存取存储器(doubledata rate synchronous dynamic random accessmemory 4,DDR4),DDR5新增错误巡检及纠正(error check and scrub,ECS)功能,允许颗粒内部读取和纠正单比特内存错误信息,并将纠正的数据回写到数据存储单元中。内存错误信息,用于表征ECS的纠错情况,因此还可以称为ECS信息。ECS信息在一定程度上可以反映内存颗粒的轻微故障的集中程度。
为尽早地识别内存潜在的故障,亟待需要能够及时且对计算系统运行影响最低的ECS信息的获取方案。
发明内容
本申请实施例提供一种内存错误信息处理方法及计算设备,解决由于ECS信息采集过程中会触发系统管理中断(system management interrupt,SMI),导致操作系统挂住,影响计算设备业务的实时性的问题。
为实现上述技术方案,本申请采用如下技术方案:
第一方面,提供一种内存错误信息处理方法,内存条包括内存颗粒,该方法可以应用于基板管理控制器,该方法包括:基板管理控制器通过平台环境式控制接口PECI从中央处理器的第一寄存器中获取内存错误信息,内存错误信息为内存颗粒按照第一预设周期执行完成一次错误检查及纠错ECS巡检的内存错误信息。在内存错误信息满足预设条件的情况下,基板管理控制器向中央处理器执行系统管理中断,以使得中央处理器对内存颗粒中的第二寄存器的计数值进行重置。其中,第二寄存器的计数值用于指示内存颗粒发生错误的次数。
该可能的实现方式中,在基板管理控制器确定内存错误信息满足预设条件的情况下,向中央处理器执行系统管理中断,以使中央处理器对内存颗粒中的第二寄存器的计数值进行重置,而当基板管理控制器确定内存错误信息不满足预设条件的情况下,不需要指示中央处理器进入系统管理中断的步骤,相对于现有技术中基板管理控制器只要在中央处理器对内存条完成错误巡检之后,就会进入系统管理中断的过程,减少了中央处理器在动态随机存取存储器产生的错误次数不满足预设条件时,进入系统管理中断的次数,提高计算设备业务的实时性;并且现有技术并进入中断之后,不仅要将内存颗粒中的寄存器的计数值清零,还需要收集内存错误信息,本申请实施例的该可能实现的方式中由基板管理控制器主动读取中央处理器中的第一寄存器的信息,以此来获取内存错误信息,不受中央处理器是否进入中断的限制,这样可以减少中央处理器进入中断的时间,减少对业务的影响。
一种可能的实现方式中,内存错误信息包括动态随机存取存储器产生的错误次数第二寄存器的计数值。预设重置条件包括第二寄存器中的计数值为第一计数值、第二计数值或者第三计数值中的至少一个,且计数值不包括零;其中,第一计数值为内存颗粒执行完成一次ECS巡检之后,内存颗粒中发生单比特错误的总数,且第一计数值大于第一阈值;第二计数值为所述内存颗粒执行完成一次ECS巡检之后,内存颗粒中发生单比特错误的行的总数,且第二计数值大于第二阈值;第三计数值为内存颗粒执行完成一次ECS巡检之后,内存颗粒中发生单比特错误最多的行的单比特错误总数,且第三计数值大于第三阈值。
一种可能的实现方式中,内存错误信息还包括内存颗粒中发生单比特错误最多的行的地址信息。在内存颗粒执行完成预设次数的ECS巡检之后,本申请提供的内存错误信息处理方法,还包括:在基板管理控制器确定内存错误信息满足预设修复条件的情况下,基本管理控制器向中央处理器发送内存修复请求。预设修复条件包括内存颗粒存在目标行,且同一地址的目标行出现的次数达到第四阈值。目标行为第二寄存器中的第三计数值所对应的行。目标行的地址根据内存错误信息确定。内存修复请求用于指示修复同一地址的目标行。
该可能的实现方式中,在内存颗粒执行完成预设次数的ECS巡检之后,基板管理控制器在确定内存颗粒的第二寄存器中存在目标行,且同一地址的目标行出现的次数达到第四阈值的情况下,基板管理控制器向中央处理器发送内存修复请求,以指示修复同一地址的目标行,可以使中央处理器尽早识别修复多次产生错误的同一地址的目标行,避免内存错误演变为严重故障。
一种可能的实现方式中,内存错误信息还包括内存颗粒中发生单比特错误最多的行的地址信息。在内存颗粒执行完成预设次数的ECS巡检之后,本申请提供的内存错误信息处理方法,还包括:在基板管理控制器确定内存错误信息满足预设告警条件的情况下,基板管理控制器生成告警信息。预设告警条件包括第二寄存器中的第一计数值达到预设总错误阈值且内存颗粒不存在目标行,或者存在目标行且同一地址的目标行的出现次数小于第四阈值。目标行的地址根据内存错误信息确定。告警信息用于指示内存颗粒处于亚健康状态。该可能的实现方式中,在内存颗粒执行完成预设次数的ECS巡检之后,在基板管理控制器确定内存错误信息的第二寄存器中的第一计数值达到预设总错误阈值且内存颗粒不存在目标行;或存在目标行且同一地址的目标行的出现次数小于第四阈值的情况下,基板管理控制器生成告警信息,以指示内存颗粒处于亚健康状态,可以及时体型计算设备此时内存错误信息中的错误次数已经达到预设总错误阈值,避免计算设备出现严重故障。
第二方面,提供一种内存错误信息处理装置。该内存错误信息处理装置用于执行上述第一方面提供的任意一种内存错误信息处理方法。
在一种可能的实现方式中,本申请可以根据上述第一方面提供的方法,对内存错误信息获取装置进行功能模块的划分。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。示例性的,本申请可以按照功能将该内存错误信息获取装置划分为发送模块、读取模块和生成模块等。上述划分的各个功能模块执行的可能的技术方案和有益效果的描述均可以参考上述第一方面或其相应的可能的实现方式提供的技术方案,此处不再赘述。
第三方面,本申请实施例提供了一种计算设备,包括中央处理器、内存条和基板管理控制器,内存条包括内存颗粒;所述中央处理器分别于所述内存条和所述基板管理控制器电连接;
其中,中央处理器,用于向内存颗粒发送错误巡检及纠错ECS请求。
内存颗粒,用于响应于错误巡检及纠错ECS请求,执行ECS巡检操作,得到内存错误信息。
中央处理器,还用于从内存颗粒中获取到内存错误信息,并将内存错误信息存储至第一寄存器;
基板管理控制器,用于从第一寄存器获取内存错误信息。
一种可能的实现方式中,中央处理器,还用于向内存条发送Patro l Scrub巡检请求,以使内存条执行Patro l Scrub巡检操作。
一种可能的实现方式中,中央处理器还用于,在中央处理器进入系统中断后,对内存颗粒中的第二寄存器的计数值进行重置。其中,中央处理器在内存错误信息满足预设条件的情况下,或者在中央处理器对内存条执行完Patro l Scrub巡检之后,进入系统中断。第二寄存器的计数值用于指示内存颗粒发生错误的次数。一种可能的实现方式中,基板管理控制器还用于在中央处理器进入系统管理中断之前,确定内存错误信息满足预设条件。当确定内存错误信息满足预设条件时,向中央处理器执行系统管理中断。
一种可能的实现方式中,内存错误信息包括内存颗粒中的第二寄存器的计数值。预设条件包括第二寄存器中的计数值为第一计数值、第二计数值或者第三计数值中的至少一个,且所述计数值不包括零;其中,第一计数值为内存颗粒执行完成一次ECS巡检之后,内存颗粒中发生单比特错误的总数,且第一计数值大于第一阈值;第二计数值为所述内存颗粒执行完成一次ECS巡检之后,内存颗粒中发生单比特错误的行的总数,且第二计数值大于第二阈值;第三计数值为内存颗粒执行完成一次ECS巡检之后,内存颗粒中发生单比特错误最多的行的单比特错误总数,且第三计数值大于第三阈值。
中央处理器具体用于在中央处理器进入系统管理中断后,将计数值重置。
一种可能的实现方式中,中央处理器,还用于设定第一预设周期和巡检机制。ECS请求包括第一预设周期和巡检机制。巡检机制包括巡检模式和自动巡检设置。第一预设周期用于指示内存颗粒按照第一巡检周期执行错误巡检及纠错ECS。自动巡检设置用于配置内存颗粒的ECS巡检是否为自动模式。巡检模式包括行模式以及码字模式。
内存颗粒,具体用于响应于ECS请求,按照第一预设周期和巡检机制,执行ECS巡检操作,得到内存错误信息。
一种可能的实现方式中,中央处理器具体用于按照第二预设周期,周期性对内存条执行Patro l Scrub巡检操作。
一种可能的实现方式中,基板管理控制器具体用于按照第三预设周期,周期性读取第一寄存器的信息。
一种可能的实现方式中,内存颗粒,还用于将内存错误信息存储至第二寄存器中,内存颗粒包括第二寄存器。
中央处理器具体用于通过读取第二寄存器中的信息,读取到内存错误信息。
一种可能的实现方式中,基板管理控制器与中央处理器通过平台环境式控制接口PECI通信。
第四方面,提供了一种基板管理控制器,该基板管理控制器包括:接口和逻辑电路,逻辑电路用于实现如上述第一方面的内存错误信息处理方法。
第五方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有至少一条计算机程序,计算机程序由处理器加载并执行以实现如上述第一方面的内存错误信息处理方法。
第六方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该终端执行上述第一方面的各种可选实现方式中提供的内存错误信息处理方法。
本申请中第二方面到第六方面及其各种实现方式的具体描述,可以参考第一方面及其各种实现方式中的详细描述;并且,第二方面到第六方面及其各种实现方式的有益效果,可以参考第一方面及其各种实现方式中的有益效果分析,此处不再赘述。
本申请的这些方面或其他方面在以下的描述中会更加简明易懂。
附图说明
图1为本申请实施例提供的内存中多个物理粒度之间的关系的一个结构示意图;
图2为本申请实施例提供的内存故障的一个示意图;
图3为本申请实施例提供的一种计算设备的一个结构示意图;
图4为本申请实施例提供的一种ECS内存颗粒的一个结构示意图;
图5为本申请实施例提供的一种内存错误信息处理方法的一个具体流程图;
图6为本申请实施例提供的一种内存错误信息处理方法的一个具体示例图;
图7为本申请实施例提供的一种内存错误信息处理方法的另一个具体流程图;
图8为本申请实施例提供的一种内存错误信息处理方法的再一个具体流程图;
图9为本申请实施例提供的一种内存错误信息处理方法的再一个具体流程图;
图10为本申请实施例提供的一种内存错误信息获取装置的一个结构示意图;
图11为本申请实施例提供的一种基板管理控制器的一个结构示意图;
图12为本申请实施例提供的一种芯片系统的一个结构示意图。
具体实施方式
首先对本申请实施例提供的一种内存错误信息处理方法及计算设备中涉及的一些概念做解释说明。
行错误:为内存颗粒中行(Row)发生的可纠正错误(corrected error,CE)或不可纠正错误(uncorrected error,UCE)。其中,内存的物理粒度从大到小依次为:Dimm、Rank、Device、Bank、Row/Column、Cell、Bit;如图1所示,其该多个物理粒度之间的关系具体为:每个计算设备可以包括多个内存条(Dimm),每个内存条上具有两个内存排(rank),分别位于内存的正反两个面,例如,两个内存排分别为内存排0(rank0)和内存排1(rank1)。其中,每个内存排上可以配置多个内存芯片(Chip)用于存储数据,内存芯片也可以称为内存颗粒(device),内存芯片可以是动态随机存取存储器(dynamic random access memory,DRAM)、静态随机存取存储器(static random access memory,SRAM)等,每个内存芯片可以划分为多个存储阵列(bank)。另外,还可以将多个存储阵列归为一个存储阵列组(bank group),其中,每个存储阵列组的存储阵列的数量可以相同,或者,也可以不同。存储阵列由大量的数据存储单元(cell)组成,大量的数据存储单元排列成二维矩阵形式,只要指定存储阵列上的行(row)和列(column),则可以在存储阵列上定位一个数据存储单元,内存发生故障的最小单位为存储阵列上的数据存储单元。通常,为了便于准确识别内存故障,内存故障需要定位到一个内存颗粒上发生故障的位置,而内存颗粒上的故障按照严重程度的不同,严重程度由大到依次可以分为:存储阵列故障、行故障、列故障、数据存储单元故障。
例如,如图2所示,图2中的a示出了内存颗粒的一个存储阵列,存储阵列故障为内存颗粒中一个存储阵列产生的所有故障。如图2中的b所示,行故障为内存颗粒的一个存储阵列中某一行产生的故障。如图2中的c所示,列故障为内存颗粒的一个存储阵列中某一列产生的故障。如图2中的d所示,数据存储单元故障为存储阵列中某一数据存储单元产生的故障。
系统管理中断(system management interrupt,SMI):使用时中央处理器(centerprocessing unit,CPU)进入系统管理模式(system management mode,SMM)中,中央处理器需要一块内存区域。CPU在进入SMM前,会迫使中央处理器暂停正在执行的程序,将当前执行的程序的寄存器中的数据存储该内存区域中,该寄存器可以是中央处理器的用于暂时存放被中断的程序的寄存器。中央处理器跳转去处理中断事件,处理完后利用RSM指令将内存区域中寄存器的中的数据恢复至中央处理器,以使中央处理器跳转回继续执行原来被中断的程序,其中RSM指令用于将内存区域中的数据回填到中央处理器,以使中央处理器可以恢复至系统管理中断前的状态继续执行原来被中断的程序。
Patrol Scrub巡检:集成内存控制器(integrated memory controller,IMC)对内存的周期性巡检,巡检中当发现内存存在错误时及时纠正并回写内存错误。当IMC巡检完成时,会触发SMI中断,上报Patrol Scrub的结果。
错误检查及纠错(error check and scrub,ECS):应用ECS机制的内存条可以称为ECS内存条,ECS内存条上的内存颗粒可已成为ECS内存颗粒。ECS内存条可以包括DDR5内存条或者未来随着技术演进出现的DDR6内存条等。本申请实施例以DDR5内存条为例进行说明。
DDR5内存条允许内存颗粒内部读取和纠正单比特错误,并将纠正的数据回写到内存颗粒的数据存储单元中,同时记录该内存颗粒已纠正的错误次数。具体的,DDR5内存条可以通过巡检读取内存颗粒的数据存储单元中的数据,并判断数据是否出错,每发生1bit的错误并纠正,该内存颗粒的错误次数加1。
内存颗粒可以包括多个数据存储单元,每个数据存储单元可以存储至少一个比特的数据量,一个数据存储单元为一个物理单元(cell)。数据存储单元中只有一个比特位发生翻转(或者说,数据存储单元中只有一个比特发生了改变)的情况下,表示该数据存储单元发生了单比特错误。数据存储单元中超过一个比特位(如2个比特位)发生翻转(或者说,数据存储单元中超过一个比特发生了改变)的情况下,表示该数据存储单元发生了多比特错误。
应用ECC机制的内存条可以称为ECC内存条。假设ECC内存条中存储了数据1,且数据1中的1bit发生了错误(即数据1发生了单比特错误),这种情况下,CPU读取ECC内存条中的数据1时,数据1中的1bit错误在读出的过程中可以被自动纠正,使得CPU读出的数据1是正确的,但是ECC内存条中存储的数据1的1bit错误并未被纠正。若1bit错误发生在DDR5内存条中,不仅能确保CPU读取的数据1正确,还能将DDR5内存条中的1bit错误纠正,使得DDR5内存条中存储的数据1也是正确的。
在DDR5内存条出现的故障均为单比特错误时,由于CPU获取的数据是纠正后的,所以CPU无法感知内存故障,也就不能识别内存故障的分布情况和内存故障类型,这样不能及时对内存故障进行诊断,可能会影响业务运行的稳定性。另一方面,BMC和OS本身无法获取内存故障信息,因此,BMC和OS也不能识别内存故障的分布情况和内存故障类型,这样不能及时对内存故障进行诊断,可能会影响业务运行的稳定性。
内存寄存器(memory register,MR):部署于内存颗粒中,用于记录错误检查及纠错信息。
平台环境式控制接口(platform environment control interface,PECI):中央处理器和基板管理控制器(baseboard management controller,BMC)之间的专用单线型数字总线接口。
本申请实施例所示的方案可以由计算设备执行,该计算设备可以是服务器。如图3所示,图3为本申请实施例提供的一种计算设备300的一个结构示意图。其中,该计算机设备300包括中央处理器301、内存条302、基板管理控制器303。
其中,中央处理器301可以运行一个或多个处理单元的程序,例如:中央处理器301可以运行基本输入输出系统3011、集成内存控制器3012以及操作系统3013的程序代码。集成内存控制器3012中可以包括寄存器3014(registers),为便于与内存条302中的寄存器进行区分,本申请将中央处理器301中的寄存器称为第一寄存器。中央处理器301与内存条302之间通信连接。中央处理器301可以向内存条302发送请求。
例如,中央处理器301可以与内存条302之间通过I/O总线连接。中央处理器301可以用于向内存条302发送ECS巡检请求。其中,ECS巡检请求用于指示内存条302上的内存颗粒执行错误巡检及纠错。中央处理器301还可以用于从动内存条302中获取到内存错误信息,并将内存错误信息存储至内存控制器3012的第一寄存器中。
内存条302可以包括至少一个内存颗粒,例如可以包括内存颗粒3021、内存颗粒3022,内存颗粒之间通过链路连接。内存颗粒可以为应用了ECS机制的内存颗粒,应用ECS机制的内存颗粒可以称为ECS内存颗粒,本申请实施例中提及的ECS内存颗粒可以为ECS内存条中的内存颗粒,其中内存条可以是DDR5、DDR6内存条。
示例性的,ECS内存颗粒的结构示意图如图4所示,ECS内存颗粒可以包括数据存储单元,数据存储单元可以用于暂时存放CPU中的运算数据,还可以用于存放CPU与硬盘等外部存储器交换的数据。
ECS内存颗粒可以包括至少一个内存寄存器3023(memory register,MR)。示例性的,如图4所示,ECS内存颗粒可以包括7个MR,分别为MR14、MR15、MR16、MR17、MR18、MR19、MR20。MR可以用于记录片上ECC(on-die error checking and correcting,on-die ECC)历史纠错信息。on-die ECC是在ECS内存颗粒上进行的,为了保护ECS内存颗粒内部的数据存储的一致性。
ECS内存颗粒中的MR至少可以统计该内存颗粒发生错误的次数,具体的,ECS内存颗粒中的MR包括至少两个计数器,其中,第一计数器可以为错误计数器(error counter,EC),第二计数器可以为每行错误计数器(errors per row counter,EpRC)。
ECS内存颗粒的巡检模式可以为行模式(Row Mode)或码字模式(CodeWord Mode)。
ECS内存颗粒基于行模式进行巡检的情况下,EC的计数值可以为ECS内存颗粒中发生单比特错误的行的总数。
ECS内存颗粒基于码字模式进行巡检的情况下,EC的计数值可以为ECS内存颗粒中发生单比特错误的总数。
无论ECS内存颗粒基于行模式还是码字模式进行巡检,EpRC的计数值均为ECS内存颗粒中发生单比特错误最多的行的单比特错误总数。
为便于与中央处理器301中的寄存器进行区分,将内存颗粒中的寄存器称为第二寄存器3023。一个内存颗粒可以划分为多个存储阵列,内存颗粒在存储数据时,该数据以位为单位写入一个或多个存储阵列中。存储阵列由大量的数据存储单元组成,大量的数据存储单元排列成二维矩阵形式,形成存储阵列上的行和列,一个数据存储单元的地址可以通过其位于的存储阵列上的行和列来表征。
例如,内存条302可以用于响应于中央处理器301发送的ECS巡检请求,执行ECS巡检操作,得到内存错误信息,将内存错误信息存储至第二寄存器中。内存条302可以为DDR5内存。
基板管理控制器303可以用于对计算设备中的部件的监测以及管理等。本申请实施例的计算设备以服务器为例。例如,基板管理控制器303可以监测服务器中各个硬件设备,例如内存条、CPU等部件的工作状态(如工作温度、工作电压等)。再例如,通过基板管理控制器303可以进行系统配置、固件升级、故障诊断等。需要说明的是,不同的设备厂家对基板管理控制器可以有不同的命名,例如一些基板管理控制器称为完全自动化集成(integrated lights-out,iLO),另一些基板管理控制器称为集成戴尔远程控制卡(integrated dell remote access controller,iDRAC)。不论是BMC,还是iLO或iDRAC,都可以理解为是本发明实施例中的基板管理控制器。在本申请实施例中以基板管理控制器称为BMC为例。
相关技术中,针对于错误检查及纠错信息的收集,一般为中央处理器利用PatrolScrub巡检机制对DDR5进行周期性的巡检,并在巡检完成之后,触发系统管理中断,收集ECS信息。具体的,当SMI中断触发时,CPU的基本输入输出系统(basic input output system,BIOS)读取集成内存控制器(integrated memory controller,IMC)的寄存器(register)信息以获取ECS信息并重置ECS计数器信息,并将ECS信息上报至基板管理控制器。但是该过程中,BIOS是按照固定周期读取ECS信息和重置ECS计数器信息,对ECS信息获取的灵活性比较差,会导致信息获取不及时而导致业务迁移不及时,从而导致业务中断。同时,SMI中断会导致计算设备的系统进入系统管理(system management,SMM)模式,导致计算设备的操作系统(operating system,OS)挂住,影响计算设备的业务的实时性。
基于此,本申请实施例提供了一种内存错误信息处理方法及计算设备,其基本原理为:基板管理控制器通过平台环境式控制接口PECI从中央处理器的第一寄存器获取内存错误信息,在内存错误信息满足预设条件的情况下,基板管理控制器向中央处理器执行系统管理中断,以使得中央处理器对内存颗粒中的第二寄存器的计数值进行重置,其中,第二寄存器的计数值用于指示内存颗粒发生错误的次数。由此可见,本申请实施例提供的内存错误信息处理方法可以在基板管理控制器确定内存错误信息满足预设条件的情况下,向中央处理器执行系统管理中断,以使中央处理器对内存颗粒中的第二寄存器的计数值进行重置,而当基板管理控制器确定内存错误信息不满足预设条件的情况下,不需要指示中央处理器进入系统管理中断的步骤,相对于现有技术中基板管理控制器只要在接收到中央处理器发送的内存错误信息后,就会进入系统管理中断的过程,减少了中央处理器在动态随机存取存储器未产生错误次数时,进入系统管理中断的次数,提高计算设备业务的实时性。
具体的,参考图3,基板管理控制器303与中央处理器301之间通过总线连接。基板管理控制器303可以包括但不仅限于内存错误信息收集模块3031以及诊断模块3032。内存错误信息采集模块3031可以用于采集内存颗粒中的错误信息,诊断模块3032可以用于对内存错误信息进行诊断。
例如,基板管理控制器303与中央处理器301之间可以通过PECI总线连接。基板管理控制器303的内存错误信息收集模块3031可以通过PECI总线读取寄存器3014的信息,读取到内存错误信息,基板管理控制器303的诊断模块3032可以获取内存错误信息收集模块3031中读取到的内存错误信息,并基于获取到的内存错误信息进行诊断,生成告警信息或内存修复请求。
图5为本申请实施例提供的一种内存错误信息处理方法的流程示意图。如图5所示,该方法可以包括以下步骤:
S501,BMC通过平台环境式控制接口PECI从中央处理器的第一寄存器中获取内存错误信息。其中第一寄存器是中央处理器中的IMC Register;第二寄存器是内存颗粒中的MR寄存器。
具体的,BMC通过与CPU之间的PECI总线读取第一寄存器的信息,以得到内存错误信息。
其中,内存错误信息包括第二寄存器的计数值。
一种可能的实现方式中,在内存颗粒执行完成一次ECS巡检之后,若内存颗粒中发生单比特错误的总数大于第一阈值,计数值包括第一计数值,第一计数值为内存颗粒中发生单比特错误的总数。
另一种可能的实现方式中,若内存颗粒中发生单比特错误的行的总数大于第二阈值,计数值包括第二计数值,第二计数值为内存颗粒中发生单比特错误的行的总数。
再一种可能的实现方式中,若内存颗粒中发生的单比特错误最多的行的单比特错误总数大于第三阈值,计数值包括第三计数值,第三计数值为内存颗粒中发生的单比特错误最多的行的单比特错误总数。
第二寄存器的计数值为根据错误巡检及纠错ECS请求的巡检机制确定的,巡检机制包括巡检模式,巡检模式包括但不仅限于码字模式以及行模式。
一种可能的实现方式中,巡检模式为码字模式时,第二寄存器的计数值包括第一计数值和第三计数值。
示例性的,巡检模式为码字模式时,第一计数值的第一阈值为8,第三计数值的第三阈值为4。如图6所示,内存颗粒发生单比特错误的总数为10,发生的单比特错误最多的行的单比特错误总数为4。此时内存颗粒发生单比特错误的总数大于第一阈值,第一计数值计为10,发生的单比特错误最多的行的单比特错误总数不大于第三阈值,第三计数值计为0。
另一种可能的实现方式中,巡检模式为行模式,第二寄存器的计数值包括第二计数值和第三计数值。
示例性的,巡检模式为行模式时,第二计数值的第二阈值为4,第三计数值的第三阈值为4。如图6所示,内存颗粒中发生单比特错误的行的总数为4,内存颗粒中发生的单比特错误最多的行的单比特错误总数为4。此时内存颗粒发生单比特错误的总数不大于第二阈值,第二计数值计为0,发生的单比特错误最多的行的单比特错误总数不大于第三阈值,第三计数值计为0。
S502,在内存错误信息满足预设条件的情况下,基板管理控制器向中央处理器执行系统管理中断,以使得中央处理器对内存颗粒中的第二寄存器的计数值进行重置。
其中,第二寄存器的计数值用于指示内存颗粒发生错误的次数。
具体的,BMC确定内存错误信息是否满足预设条件,在BMC确定内存错误信息满足预设条件的情况下,向CPU执行系统管理中断。其中,预设条件包括第二寄存器的计数值为第一计数值、第二计数值或第三计数值中的至少一个,且所述计数值不包括零。
例如,当前巡检模式为码字模式时,当BMC确定第二寄存器的计数值为第一计数值时,表示此时内存颗粒中存在错误并且已经被检测纠正,此时BMC向CPU执行系统管理中断。
或者,当前巡检模式为行模式时,当BMC确定第二寄存器的计数值为第二计数值时,BMC向CPU执行系统管理中断。
BMC向CPU执行系统管理中断的过程包括但不仅限于硬件信号管脚直接触发SMI中断方式以及软件方式触发SMI中断方式。硬件信号管脚直接触发SMI中断方式可以为BMC控制与CPU连接的GPIO管脚的电平信号,以触发SMI中断,例如将该GPIO管脚的电平信号从高电平拉至低电平或者从低电平拉至高电平。软件触发SMI中断方式可以为BMC向CPU的端口0xB2写入数值以触发SMI中断。
具体的,CPU在CPU进入系统管理中断后,对内存颗粒中的第二寄存器的计数值进行重置。
其中,MR14中存储有重置位用于指示是否执行ECS计数器的清零操作。
例如,在计算机系统进入SMM模式之后,CPU配置MR14,将MR14的重置位置为1,以执行MR寄存器中的ECS计数器的清零。
本申请实施例通过中当BMC确定内存错误信息不满足预设条件的情况下,向CPU执行系统管理中断,CPU在CPU进入系统管理中断后,对内存颗粒中的第二寄存器的计数值进行重置,而当BMC确定内存错误信息不满足预设条件的情况下,不需要指示CPU进入系统管理中断,相对于相关技术中,CPU对内存执行ECS巡检,并在巡检完成后,就会进入系统管理中断的过程,减少了在内存颗粒的错误次数小于第一阈值或者第二阈值或者第三阈值时,CPU进入系统管理中断SMI的次数,并且本申请实施例在CPU进入系统管理中断SMI之后,只执行内存颗粒的寄存器的计数器的清零动作,CPU便可恢复处理正常业务,中断时间短,而相关技术中,在巡检完成CPU进入系统管理中断SMI之后,CPU还需要读取集成内存控制器IMC的寄存器信息以获取的内存错误信息,并执行内存颗粒的寄存器的计数器的清零动作,CPU才可以跳出中断处理正常业务,CPU的中断时间较长。因此,本申请实施例可以提高计算设备业务的可靠性和稳定性。
在一些实施例中,如图7所示,本申请实施例提供的一种内存错误信息处理方法,还可以包括:S701-S707。示例性的,S701-S707可以在S501之前执行。
S701,CPU设定第一预设周期和巡检机制以及第二预设周期。
其中,第一预设周期和巡检机制用于配置内存颗粒按照第一预设周期和巡检机制执行ECS巡检操作,第二周期用于配置CPU按照第二周期执行Patrol Scrub巡检操作。需要说明的是,内存颗粒按照第一预设周期执行完成ECS巡检为内存颗粒完成一次ECS巡检。
S702,CPU按照第二预设周期执行Patrol Scrub巡检操作。
其中,CPU在执行Patrol Scrub巡检操作时可以对整个内存条上的内存颗粒执行错误巡检并且对内存颗粒之间的链路故障进行巡检,其中,对内存颗粒的巡检可以包括对内存颗粒的多比特错误的巡检。
其中,第二预设周期可以大于第一预设周期,这样,在CPU对内存条执行完成Patrol Scrub巡检时,内存条上的内存颗粒也已经执行完成ECS巡检。
S703,CPU向内存条发送ECS巡检请求。
其中,ECS巡检请求包括:第一预设周期和巡检机制。CPU向内存条发送ECS巡检请求包括CPU向内存条上的内存颗粒发送ECS巡检请求。第一预设周期用于指示内存颗粒按照第一巡检周期执行ECS巡检。巡检机制包括巡检模式和自动巡检设置,自动巡检设置用于配置内存颗粒的ECS巡检是否为自动模式,以指示内存颗粒在错误巡检及纠错ECS后是否自动开启下一轮错误巡检及纠错ECS。巡检模式包括但不仅限于行模式以及码字模式。其中,行模式表示对内存颗粒中每一行进行错误巡检及纠错ECS,码字模式表示对内存颗粒中每一数据存储单元进行错误巡检及纠错ECS。
例如,自动巡检模式为自动模式,内存颗粒在执行错误巡检及纠错ECS结束后,自动执行下一轮错误巡检及纠错ECS。自动巡检模式为非自动模式,内存颗粒在执行错误巡检及纠错ECS后,不执行下一轮错误巡检及纠错ECS,待再次接收到ECS巡检请求后,再按照再次接收到的ECS巡检请求执行新一轮的错误巡检及纠错ECS。
在一些可能的实现方式中,CPU可以按照某个预设周期,周期性向内存条上的内存颗粒发送ECS巡检请求,ECS请求包含CPU最新设定的第一预设周期以及巡检机制。或者,在需要对第一预设周期以及巡检机制中的一项或者多项进行更新的时候,如在CPU重新配置了第一预设周期以及巡检机制中的一项或者多项后,CPU向内存条上的内存颗粒发送ECS巡检请求,ECS巡检请求包含CPU最新设定的第一预设周期以及巡检机制。
S704,内存条上的内存颗粒响应于ECS巡检请求,执行ECS巡检操作,得到内存错误信息。
具体的,内存颗粒在接收到ECS巡检请求后,按照ECS请求中配置的第一预设周期以及巡检机制执行ECS巡检操作,得到内存错误信息。
例如,ECS巡检请求包括第一预设周期为t1周期,巡检机制中的自动巡检模式为自动模式以及巡检模式为行模式。内存颗粒在接收到ECS巡检请求后,按照t1周期执行ECS巡检操作,在每一次错误巡检及纠错ECS后自动开启下一轮错误巡检及纠错ECS,并按照行模式进行错误巡检及纠错ECS。
S705,内存颗粒将内存错误信息存储至第二寄存器。
具体的,内存颗粒在得到内存错误信息之后,将内存错误信息存储至内存颗粒的第二寄存器中。第二寄存器可以为内存颗粒的MR寄存器。
内存颗粒的MR寄存器可以包括但不仅限于MR14、MR15、MR16、MR17、MR18、MR19、MR20。需要说明的是,MR14、MR15、MR16、MR17、MR18、MR19以及MR20仅是对MR寄存器的标识,并不是对MR寄存器的功能的限定。其中,MR14中存储有巡检模式;MR15中存储有巡检机制;MR16、MR17以及MR18中存储有内存颗粒中所有行的地址信息,包括错误数量最多的行地址信息;MR19中存储出现错误的行的总数量;MR20中存储有内存颗粒中的错误总数量、目标行以及目标行的错误次数,目标行为第二寄存器中EpRC的计数值超过第三阈值对应的行。
S706,CPU从第二寄存器中获取到内存错误信息,并将内存错误信息存储至第一寄存器。
具体的,CPU通过读取内存颗粒的第二寄存器中的信息,读取到内存错误信息,将内存错误信息存储至CPU的第一寄存器中。
S707,BMC向CPU发送第一请求。
其中,第一请求用于请求读取CPU的第一寄存器中的信息。第一寄存器中的信息包括ECS内存颗粒执行错误检查及纠错ECS巡检时获得的内存错误信息和/或CPU对ECS内存条执行patrol scrub时获得的内存错误信息。内存错误信息可以包括但不仅限于内存颗粒的第二寄存器中的信息,其中第二寄存器中的信息包括第二寄存器中的EC计数器和EpRC计数器的值以及错误行地址,错误行地址包括发生内存颗粒中发生单比特错误最多的行的行地址。
具体的,BMC首先配置BMC的第三预设周期,以指示BMC按照第三预设周期,周期性的向CPU发送第一请求。
一种可能的实现方式中,BMC按照第三预设周期,通过与CPU之间的PECI总线周期性的向CPU发送第一请求,第一请求包括读指令和第一寄存器的地址,第一寄存器的地址用于BMC找到第一寄存器。CPU在接收到读指令和第一寄存器的地址后,表示此时BMC需要读取第一寄存器中的信息,CPU将第一寄存器的信息存储至CPU中的共享内存。其中,共享内存为BMC和CPU可以共同访问的内存,CPU在接收到读指令和第一寄存器的地址后,通过将第一寄存器的信息存储至共享内存中,可以使BMC快速读取第一寄存器中的信息,实现CPU和BMC间通过共享内存快速传递信息。
在一种可能的实现方式中,BMC可以基于第一寄存器的地址,从第一寄存器中读取第一寄存器中的信息。
另一种可能的实现方式中,BMC按照第三预设周期,通过与CPU之间的PECI总线周期性的向CPU发送第一请求。
在一些实施例中,如图7所示,本申请实施例提供的一种内存错误信息处理方法,还可以包括:S708以及S709。示例性的,S708以及S709可以在S502之后执行。
S708,CPU完成Patrol Scrub巡检操作,执行系统管理中断。
具体的,CPU在完成Patrol Scrub巡检操作后,执行系统管理中断。
S709,CPU在CPU进入系统管理中断后,对内存颗粒中的第一寄存器的计数器重置。
具体的,CPU在CPU进入系统管理中断后,对内存颗粒中的第一寄存器的计数器的数值进行重置。
其中,MR14中还存储有重置位用于指示是否执行ECS计数器的清零操作。
例如,在计算机系统进入SMM模式之后,CPU配置MR14,将MR14的重置位置为1,以执行MR寄存器中的ECS计数器的清零。ECS错误信息包括MR16、MR17以及MR18中记录的错误数量最多的行地址信息;ECS计数器包括MR19中存储出现错误的行的总数量以及MR20中存储有内存颗粒中的错误总数量,目标行以及目标行的错误次数。
本申请的该实施例以CPU对内存条执行Patrol Scrub巡检的完成时间点来触发CPU的系统管理中断,可以利用CPU自己携带的巡检机制完成对内存颗粒的第一寄存器的计数器的清零重置,节省了BMC的资源。
本申请实施例中CPU在CPU进入系统管理中断后,仅需要对内存颗粒中的内存错误信息进行重置,相比于相关技术中当Patrol Scrub巡检操作完成后,CPU需要从内存颗粒的第二寄存器中读取Patrol Scrub巡检信息和ECS信息,还需要对内存颗粒中的内存错误信息重置,并上报Patrol Scrub巡检信息,本申请实施例省去了CPU收集Patrol Scrub巡检信息的时间,也即缩短了SMI中断的持续时间,提高了计算设备业务进行的实时性。
在一些实施例中,如图8所示,本申请实施例提供的一种内存错误信息处理方法,还可以包括:S801-S806。示例性的,S801-S806可以在S501之前执行。
S801,CPU设定第一预设周期和巡检机制。
需要说明的是,CPU设定第一预设周期和巡检机制的过程与上述S701中CPU设定第一预设周期和巡检机制的过程相同,本申请对此不予赘述。
S802,CPU向内存条上的内存颗粒发送ECS巡检请求。
需要说明的是,CPU向内存条发送ECS巡检请求的过程与上述S703中CPU向内存条发送ECS巡检请求的过程相同,本申请对此不予赘述。
S803,内存颗粒响应于ECS巡检请求,执行ECS巡检操作,得到内存错误信息。
需要说明的是,内存颗粒响应于ECS巡检请求,执行ECS巡检操作,得到内存错误信息与上述S704中内存颗粒响应于ECS巡检请求,执行ECS巡检操作,得到内存错误信息的过程相同,本申请对此不予赘述。
S804,内存颗粒将内存错误信息存储至第二寄存器。
需要说明的是,内存颗粒将内存错误信息存储至第二寄存器的过程与上述S705中内存颗粒将内存错误信息存储至第二寄存器的过程相同,本申请对此不予赘述。
S805,CPU从第二寄存器中获取到内存错误信息,并将内存错误信息存储至第一寄存器。
需要说明的是,CPU从内存颗粒中获取到内存错误信息,并将内存错误信息存储至第一寄存器与上述S706中CPU从内存颗粒中获取到内存错误信息,并将内存错误信息存储至第一寄存器的过程相同,本申请对此不予赘述。
S806,BMC向CPU发送第一请求。
需要说明的是,BMC向CPU发送第一请求的过程与上述S707中BMC向CPU发送第一请求的过程相同,本申请对此不予赘述。
在一些实施例中,如图9所示,本申请实施例提供的一种内存错误信息处理方法,还可以包括:S901或S902。示例性的,S901或S902可以在执行预设次数后的S708或S807之后执行。例如,BMC执行预设次数(n次)的S708或S807之后,表明内存颗粒已经执行完成预设次数的ECS巡检,得到预设次数的内存错误信息之后,执行S901或S902。
S901,BMC确定内存错误信息满足预设修复条件的情况下,BMC向CPU发送内存修复请求。
其中,预设修复条件包括,内存颗粒中存在S705中目标行,且同一地址的目标行出现的次数达到第四阈值;内存错误信息还包括内存颗粒中发生单比特错误最多的行的地址信息;目标行的地址根据所述内存错误信息确定。内存修复请求用于指示修复目标行。
具体的,BMC在执行预设次数的S707或S806之后,得到预设次数的内存错误信息之后,若同一地址的目标行出现的次数达到第四阈值时,且目标行的地址相同,BMC向CPU发送内存修复请求。
例如,ECS每执行完一次巡检,BMC可以获取一次第一寄存器中的内存错误信息,并且在每次ECS巡检中,如果出现了目标行,BMC每次都提取目标行的行地址;那么在内存颗粒执行完预设的10次ECS巡检之后,BMC中保存了10次第一寄存器中的内存错误信息,此时,BMC可以判断其保存的同一地址的目标行出现的次数是达到预设的第四阈值,示例性地,第四阈值可以为5。
具体地,内存颗粒在执行完第一次ECS巡检,确定内存颗粒1的第一个存储阵列的第5行为目标行,BMC获取本次的ECS巡检信息,包括目标行的行地址并保存;若内存颗粒在执行完第10次巡检之后,从其保存的所有ECS巡检信息中确定内存颗粒1的第一个存储阵列的第5行为目标的次数达到5次,BMC向CPU发送内存修复请求,CPU在接收到内存修复请求后,修复第5行的错误。
由于内存颗粒的存储阵列的每个存储单元都有可能发生单比特错误,因此,在一次ECS巡检中某一行为目标行是较为常见的现象,但是如果在多次ECS巡检中,该行都为目标行,那么说明该行为故障行,需要对其进行行修复。
S902,BMC确定内存错误信息满足预设告警条件的情况下,BMC生成告警信息。
其中,预设告警条件包括,第二寄存器中的EC计数器的计数值达到预设总错误阈值且内存颗粒不存在目标行,或者同一地址的目标行的出现次数小于第四阈值。告警信息用于指示内存颗粒处于亚健康状态。
具体的,BMC在执行预设次数的S708或S807之后,得到预设次数的内存错误信息之后,若不存在目标行,或者存在目标行,但是同一地址的目标行的出现次数小于第四阈值时,BMC生成告警信息,以提醒此时内存处于亚健康状态。该亚健康状态表示此时内存颗粒尚在正常运行,但已存在诸多错误隐患,例如,内存连接正常,但部分颗粒发生错误影响性能等等,本申请对亚健康状态的故障类型不予限定。
上述从方法的角度对本申请实施例提供的方案进行了介绍,上述的内存错误信息处理方法可以应用于上述计算机系统中,在硬件实现上,该内存错误信息获取系统可以实现为部署在CPU中的芯片。在软件上,计算机系统可以包括OS以及与OS通信的BIOS,其中,OS用于执行上述实施例中的内存错误信息处理方法。
上述主要从方法和系统的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对内存错误信息获取装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图10示出了本申请实施例提供的内存错误信息获取装置1000的结构示意图。该内存错误信息获取装置用于执行上述内存错误信息处理方法,该装置可以应用于计算设备上。例如,执行图5-图9中任一所示的内存错误信息处理方法。示例性的,内存错误信息获取装置1000可以包括发送模块1001、读取模块1002、生成模块1003。
其中,发送模块1001,用于向中央处理器发送第一请求。
在一种可能的实现方式中,发送模块1001还可以用于在确定内存错误信息满足预设重置条件时,向中央处理器触发系统管理中断。
在另一种可能的实现方式中,发送模块1001还可以用于确定内存错误信息满足预设修复条件时,向CPU发送内存修复请求。
例如,结合图5,发送模块1001可以用于执行S501。
读取模块1002,用于读取第一寄存器中的信息,得到内存错误信息。
例如,结合图5,读取模块1002可以用于执行S502。
生成模块1003,用于在确定内存错误信息满足预设告警条件时,生成告警信息。
关于上述可选方式的具体描述可以参见前述的方法实施例,此处不再赘述。此外,上述提供的任一种内存错误信息获取装置的解释以及有益效果的描述均可参考上述对应的方法实施例,不再赘述。
本申请实施例所示的方案可以由基板管理控制器1100执行。如图11所示,该基板管理控制器1100可以包括接口1101以及逻辑电路1102。
其中,接口1101用于支持基板管理控制器303与其他硬件通信。例如,支持基板管理控制器与中央处理器通信。
逻辑电路1102用于执行本申请实施例提供的内存错误信息处理方法,通过向中央处理器发送读指令和第一寄存器的地址信息,读取第一寄存器中的信息,得到内存错误信息。其中,中央处理器包括第一寄存器。读指令用于请求读取第一寄存器中的信息。
在一示例性实施例中,还提供了一种计算机可读存储介质,用于存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由中央处理器加载并执行以实现上述内存错误信息处理方法中的全部或部分步骤。例如,该计算机可读存储介质可以是只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、只读光盘(compact disc read-only memory,CD-ROM)、磁带、软盘和光数据存储设备等。
在一示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算设备执行上述图5-图9中任一实施例所示方法的全部或部分步骤。
在一些实施例中,本申请实施例所示的方法可以实施为以机器可读格式被编码在计算机可读存储介质上的或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。
本申请实施例还提供一种芯片系统1200,如图12所示,该芯片系统1200包括至少一个处理器1201和至少一个接口电路1202。
作为示例,当该芯片系统1200包括一个处理器和一个接口电路时,则该一个处理器可以是图12中实线框所示的处理器1201(或者是虚线框所示的处理器1201),该一个接口电路可以是图12中实线框所示的接口电路1202(或者是虚线框所示的接口电路1202)。当该芯片系统1200包括两个处理器和两个接口电路时,则该两个处理器包括图12中实线框所示的处理器1201和虚线框所示的处理器1201,该两个接口电路包括图12中实线框所示的接口电路1202和虚线框所示的接口电路1202。对此不作限定。
处理器1201和接口电路1202可通过线路互联。例如,接口电路1202可用于接收信号。又如,接口电路1202可用于向其它装置(例如处理器1201)发送信号。示例的,接口电路1202可读取存储器中存储的计算机指令,并将该计算机指令发送给处理器1201。处理器1201执行该指令,并结合输入输出装置,实现上述实施例中的各个步骤,例如实现图3-图5中任一所示的方法实施例中所执行的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (10)
1.一种内存错误信息处理方法,其特征在于,应用于基板管理控制器,所述方法包括:
所述基板管理控制器通过平台环境式控制接口PECI从中央处理器的第一寄存器中获取内存错误信息,所述内存错误信息为内存颗粒按照第一预设周期执行完成一次错误检查及纠错ECS巡检的内存错误信息;
在所述内存错误信息满足预设条件的情况下,所述基板管理控制器向所述中央处理器执行系统管理中断,以使得所述中央处理器对所述内存颗粒中的第二寄存器的计数值进行重置;其中,所述第二寄存器的计数值用于指示所述内存颗粒发生错误的次数。
2.根据权利要求1所述的内存错误信息处理方法,其特征在于,所述内存错误信息包括所述第二寄存器的计数值;所述预设条件包括所述第二寄存器中的计数值为所述第一计数值、第二计数值或者第三计数值中的至少一个,且所述计数值不包括零;其中,所述第一计数值为所述内存颗粒执行完成一次ECS巡检之后,所述内存颗粒中发生单比特错误的总数,且所述第一计数值大于第一阈值;所述第二计数值为所述内存颗粒执行完成一次ECS巡检之后,所述内存颗粒中发生单比特错误的行的总数,且所述第二计数值大于第二阈值;所述第三计数值为所述内存颗粒执行完成一次ECS巡检之后,所述内存颗粒中发生单比特错误最多的行的单比特错误总数,且所述第三计数值大于第三阈值。
3.根据权利要求2所述的内存错误信息处理方法,其特征在于,所述内存错误信息还包括所述内存颗粒中发生单比特错误最多的行的地址信息;在所述内存颗粒执行完成预设次数的所述ECS巡检之后,所述方法还包括:
在所述基板管理控制器确定所述内存错误信息满足预设修复条件的情况下,所述基板管理控制器向所述中央处理器发送内存修复请求;所述预设修复条件包括,所述内存颗粒存在目标行,且同一地址的目标行出现的次数达到第四阈值;所述目标行为所述第二寄存器中的第三计数值所对应的行;所述目标行的地址根据所述内存错误信息确定;所述内存修复请求用于指示修复所述同一地址的目标行。
4.根据权利要求2所述的内存错误信息处理方法,其特征在于,所述内存错误信息还包括所述内存颗粒中发生单比特错误最多的行的地址信息;在所述内存颗粒执行完成预设次数的所述ECS巡检之后,所述方法还包括:
在所述基板管理控制器确定所述内存错误信息满足预设告警条件的情况下,所述基板控制器生成告警信息;所述预设告警条件包括,所述第二寄存器中的第一计数值达到预设总错误阈值且所述内存颗粒不存在所述目标行;或者存在目标行且同一地址的目标行的出现次数小于第四阈值;所述目标行的地址根据所述内存错误信息确定;所述告警信息用于指示所述内存颗粒处于亚健康状态。
5.一种计算设备,包括中央处理器、内存条和基板管理控制器;所述内存条包括内存颗粒;所述中央处理器包括第一寄存器,所述中央处理器分别于所述内存条和所述基板管理控制器电连接,其特征在于,
所述中央处理器,用于向所述内存颗粒发送错误巡检及纠错ECS请求;
所述内存颗粒,用于响应于所述错误巡检及纠错ECS请求,执行ECS巡检操作,得到内存错误信息;
所述中央处理器,还用于从所述内存颗粒中获取到所述内存错误信息,并将所述内存错误信息存储至第一寄存器;
所述基板管理控制器,用于从所述第一寄存器获取所述内存错误信息。
6.根据权利要求5所述的计算设备,其特征在于,
所述中央处理器,还用于向所述内存条发送Patrol Scrub巡检请求,以使所述内存条执行Patrol Scrub巡检操作。
7.根据权利要求6所述的计算设备,其特征在于,
所述中央处理器还用于,在所述中央处理器进入系统中断后,对所述内存颗粒中的第二寄存器的计数值进行重置;其中,所述中央处理器在所述内存错误信息满足预设条件的情况下,或者在所述中央处理器对所述内存条执行完Patrol Scrub巡检之后,进入系统中断;所述第二寄存器的计数值用于指示所述内存颗粒发生错误的次数。
8.根据权利要求7所述的计算设备,其特征在于,
所述基板管理控制器,还用于在所述中央处理器进入系统管理中断之前,确定所述内存错误信息满足预设条件;当确定所述内存错误信息满足所述预设条件时,向所述中央处理器执行系统管理中断。
9.根据权利要求7-8中任一项所述的计算设备,其特征在于,所述内存错误信息包括所述内存颗粒中的第二寄存器的计数值;所述预设条件包括所述第二寄存器中的计数值为所述第一计数值、第二计数值或者第三计数值中的至少一个,且所述计数值不包括零;其中,所述第一计数值为所述内存颗粒执行完成一次ECS巡检之后,所述内存颗粒中发生单比特错误的总数,且所述第一计数值大于第一阈值;所述第二计数值为所述内存颗粒执行完成一次ECS巡检之后,所述内存颗粒中发生单比特错误的行的总数,且所述第二计数值大于第二阈值;所述第三计数值为所述内存颗粒执行完成一次ECS巡检之后,所述内存颗粒中发生单比特错误最多的行的单比特错误总数,且所述第三计数值大于第三阈值;
所述中央处理器,具体用于在所述中央处理器进入系统管理中断后,将所述计数值重置。
10.根据权利要求5-9中任一项所述的计算设备,其特征在于,
所述中央处理器,还用于设定第一预设周期和巡检机制;
所述ECS请求包括所述第一预设周期和巡检机制;所述巡检机制包括巡检模式和自动巡检设置;所述第一预设周期用于指示所述内存颗粒按照所述第一巡检周期执行错误巡检及纠错ECS;所述自动巡检设置用于配置所述内存颗粒的ECS巡检是否为自动模式;所述巡检模式包括行模式以及码字模式;
所述内存颗粒,具体用于响应于所述ECS请求,按照第一预设周期和巡检机制,执行ECS巡检操作,得到内存错误信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311704802.6A CN117909109A (zh) | 2023-12-12 | 2023-12-12 | 一种内存错误信息处理方法及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311704802.6A CN117909109A (zh) | 2023-12-12 | 2023-12-12 | 一种内存错误信息处理方法及计算设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117909109A true CN117909109A (zh) | 2024-04-19 |
Family
ID=90691408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311704802.6A Pending CN117909109A (zh) | 2023-12-12 | 2023-12-12 | 一种内存错误信息处理方法及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117909109A (zh) |
-
2023
- 2023-12-12 CN CN202311704802.6A patent/CN117909109A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10824499B2 (en) | Memory system architectures using a separate system control path or channel for processing error information | |
Sridharan et al. | A study of DRAM failures in the field | |
EP3660681B1 (en) | Memory fault detection method and device, and server | |
US5410545A (en) | Long-term storage of controller performance | |
EP0032957B1 (en) | Information processing system for error processing, and error processing method | |
US8020053B2 (en) | On-line memory testing | |
CN111414268B (zh) | 故障处理方法、装置及服务器 | |
US20230083193A1 (en) | Uncorrectable memory error prediction | |
US20220050603A1 (en) | Page offlining based on fault-aware prediction of imminent memory error | |
CN115640174A (zh) | 内存故障预测方法、系统、中央处理单元及计算设备 | |
Du et al. | Predicting uncorrectable memory errors for proactive replacement: An empirical study on large-scale field data | |
CN113835923A (zh) | 一种复位系统、数据处理系统以及相关设备 | |
CN112650612A (zh) | 一种内存故障定位方法及装置 | |
US20060236035A1 (en) | Systems and methods for CPU repair | |
CN115480947A (zh) | 一种内存条故障检测装置及检测方法 | |
US9720756B2 (en) | Computing system with debug assert mechanism and method of operation thereof | |
US20200111539A1 (en) | Information processing apparatus for repair management of storage medium | |
US7603582B2 (en) | Systems and methods for CPU repair | |
CN117909109A (zh) | 一种内存错误信息处理方法及计算设备 | |
CN117950895A (zh) | 一种内存错误信息重置方法及计算设备、基板管理控制器 | |
CN115757196A (zh) | 内存、访问内存方法及计算设备 | |
US11593209B2 (en) | Targeted repair of hardware components in a computing device | |
CN118093293B (zh) | 一种车规芯片中存储失效检测与修复方法及装置 | |
EP4156192A1 (en) | Page offlining based on fault-aware prediction of imminent memory error | |
WO2023108319A1 (en) | In-system mitigation of uncorrectable errors based on confidence factors, based on fault-aware analysis |
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 |