CN116627733A - 一种内存故障的处理方法及计算设备 - Google Patents

一种内存故障的处理方法及计算设备 Download PDF

Info

Publication number
CN116627733A
CN116627733A CN202310572992.4A CN202310572992A CN116627733A CN 116627733 A CN116627733 A CN 116627733A CN 202310572992 A CN202310572992 A CN 202310572992A CN 116627733 A CN116627733 A CN 116627733A
Authority
CN
China
Prior art keywords
fault
memory
bios
information
variable
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
Application number
CN202310572992.4A
Other languages
English (en)
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.)
XFusion Digital Technologies Co Ltd
Original Assignee
XFusion Digital Technologies 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 XFusion Digital Technologies Co Ltd filed Critical XFusion Digital Technologies Co Ltd
Priority to CN202310572992.4A priority Critical patent/CN116627733A/zh
Publication of CN116627733A publication Critical patent/CN116627733A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2284Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by power-on test, e.g. power-on self test [POST]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种内存故障的处理方法,包括:在OS工作过程中,对所述计算设备中的内存进行压力测试,得到第一故障信息;所述OS调用BIOS上的故障传递接口,将所述第一故障信息传输至所述BIOS;在所述BIOS再次上电过程中,所述BIOS读取所述第一故障信息,并对所述第一故障信息所指示的存在故障的内存单元进行修复。通过在BIOS中增加接口,可将OS压力测试检出的内存故障结果传递给BIOS,在下一次重启过程中,BIOS将接收到的内存故障数据传递给PPR修复模块,进而实现对OS压力测试检出的内存故障的修复,最终减少了内存故障率以及由此导致的服务器宕机的风险。

Description

一种内存故障的处理方法及计算设备
技术领域
本发明涉及计算机领域,尤其涉及一种内存故障的处理方法及计算设备。
背景技术
封装后修复技术(post package repair,PPR)是联合电子设备工程委员会(jointelectron device engineering council,JEDEC)规范中的一种封装后内存修复技术,可以对检测出的内存故障进行替换修复。使用PPR修复后,可以有效减少内存故障,进而降低内存故障带来的计算机或者服务器宕机的风险。
但是,现有的PPR使用场景都是基于基本输入输出系统(basic input outputsystem,BIOS)中的高级内存测试(advanced memory test,AMT)算法,在计算机或者服务器上电的过程中对内存进行检测并修复。而对于操作系统下对内存进行压力测试检测出的内存故障,无法进行PPR修复。
发明内容
本申请提供了一种内存故障的处理方法及计算设备,通过在BIOS中增加故障传递接口,使得在操作系统(operating system,OS)中检测出内存故障时,可以通过该接口将检测出的内存故障信息传递给BIOS,以便在计算机/服务器下一次重启过程中可以进行PPR修复。
第一方面,本申请提供了一种内存故障的处理方法,应用于计算设备,计算设备包括:基本输入输出系统BIOS和操作系统OS,方法包括:在OS工作过程中,对计算设备中的内存进行压力测试,得到第一故障信息;OS调用BIOS上的故障传递接口,将第一故障信息传输至BIOS;在BIOS再次上电过程中,BIOS读取第一故障信息,并对第一故障信息所指示的存在故障的内存单元进行修复。
在本方案中,在BIOS中新增故障传递接口,若在OS阶段检测出了内存故障,处理器可以通过调用该故障传递接口,将内存故障信息写入到BIOS中,使得在服务器下一次上电过程中,存储在BIOS中的故障信息的变量可以被BIOS读取。在BIOS上电过程中,服务器中的处理器可以根据第一变量中存储的内存故障信息对发生故障的内存进行PPR修复。实现对OS运行阶段检出的内存故障的修复,减少了内存故障率以及由此导致的服务器宕机的风险。
在一个可能的实现方式中,将第一故障信息传输至BIOS包括:将第一故障信息传输到BIOS变量区中的第一变量中,BIOS变量区中包括多个第一变量,一个第一变量用于存储在OS工作过程中得到的一个故障信息。
也就是说,通过在BIOS变量区中增加多个用于存储在OS阶段发现的内存故障信息的第一变量,使得在BIOS上电过程中,可以直接从BIOS变量区的第一变量中读取OS阶段发送的故障信息,并修复。
在一个可能的实现方式中,BIOS读取第一故障信息,并对第一故障信息所指示的存在故障的内存单元进行修复,包括:从BIOS变量区中的第一变量中获取第一故障信息;对第一故障信息进行解析,得到第一故障的故障地址和故障类型;根据故障地址确定发生故障的内存单元;根据故障类型,对发生故障的内存单元进行修复。
也就是说,BIOS在获取第一故障信息时,可以获取BIOS变量区中用于存储第一故障信息的第一变量,然后对第一变量中存储的故障信息进行解析,以得到内存故障对应的故障地址信息和故障类型。在对内存故障进行修复时,通过获取的内存故障地址信息可以唯一确定一个内存单元,对内存故障进行修复即对该内存单元进行修复。
在一个可能的实现方式中,该方法还包括:BIOS再次上电过程中,BIOS基于内存测试算法对内存进行测试,得到第二故障信息,并对第二故障信息所指示的存在故障的内存单元进行修复。
也就是说,在BIOS上电过程中,服务器的处理器除了对BIOS变量区中存储的故障信息对应的内存进行PPR修复以外。处理器还需要在BIOS启动的PEI阶段,利用预先设定的内存测试算法对服务器的内存进行检测,并根据检测结果,修复发生故障的内存区域。由于在BIOS启动过程中使用的内存测试算法和在OS阶段使用的内存测试工具存在算法、码型和业务压力上的差异。所以,在BIOS启动阶段对内存的检测能力和在OS阶段对内存的检测能力是不一致的,得到的故障结果也可能不相同。因此,在BIOS启动阶段同时对OS阶段检测的内存故障、BIOS阶段检测的内存故障进行修复,能够尽可能大的覆盖服务器上的内存故障类型。
在一个可能的实现方式中,第一故障信息包括:故障内存所在的中央处理器CPU的槽位号、故障内存所在的内存通道号、故障内存所在的双列直插式存储模块槽位号、故障内存所在的排号、故障内存所在的子排号、故障内存所在的颗粒号、故障内存所在的区块组号、故障内存所在的区块号、故障内存所在的列号、故障内存所在的行号。
也就是说,在OS运行阶段,在将内存故障信息写入到BIOS变量区的变量中时,需要按照预先设置的格式进行写入。
第二方面,本申请提供了一种计算设备,包括:
处理器,用于在OS工作过程中,对计算设备中的内存进行压力测试,得到第一故障信息,并调用BIOS上的故障传递接口,将第一故障信息传输至BIOS;
处理器,还用于在BIOS再次上电过程中,读取第一故障信息,并对第一故障信息所指示的存在故障的内存单元进行修复。
在一个可能的实现方式中,处理器用于:
将第一故障信息传输到BIOS变量区中的第一变量中,BIOS变量区中包括多个第一变量,一个第一变量用于存储在OS工作过程中得到的一个故障信息。
在一个可能的实现方式中,处理器用于:
从BIOS变量区中的第一变量中获取第一故障信息;
对第一故障信息进行解析,得到第一故障的故障地址和故障类型;
根据故障地址确定发生故障的内存单元;
根据故障类型,对发生故障的内存单元进行修复。
在一个可能的实现方式中,处理器还用于:
BIOS再次上电过程中,BIOS基于内存测试算法对内存进行测试,得到第二故障信息,并对第二故障信息所指示的存在故障的内存单元进行修复。
在一个可能的实现方式中,第一故障信息包括:故障内存所在的中央处理器CPU的槽位号、故障内存所在的内存通道号、故障内存所在的双列直插式存储模块槽位号、故障内存所在的排号、故障内存所在的子排号、故障内存所在的颗粒号、故障内存所在的区块组号、故障内存所在的区块号、故障内存所在的列号、故障内存所在的行号。
第三方面,本申请提供了一种计算机可读介质,计算机存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行第一方面任一种可能的实现方式所描述的方法。
第四方面,本申请提供了一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行第一方面的任一种可能的实现方式所描述的方法。
可以理解的是,上述第二方面至第四方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种PPR的修复流程示意图;
图2为本申请实施例提供的一种服务器的结构示意图;
图3为本申请实施例提供的一种BIOS变量区的结构示意图;
图4为本申请实施例提供的一种变量中的各个区段的示意图;
图5为本申请实施例提供的一种在BIOS上电过程中对内存故障进行修复的逻辑示意图;
图6为本申请实施例提供的一种内存故障的处理方法的流程图;
图7为本申请实施例提供的又一种内存故障的处理方法的流程图;
图8为本申请实施例提供的又一种内存故障处理方法的流程示意图;
图9为本申请实施例提供的一种服务器的结构示意图;
图10为本申请实施例提供的一种芯片的结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本申请实施例中的技术方案进行描述。
在本申请实施例中的描述中,“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应该被理解为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在介绍本方案之前首先对本方案中使用的技术术语进行介绍。
封装后修复技术(post package repair,PPR),用冗余资源替换失效部分的方法可以称之为PPR。PPR中包括Hard PPR(简称hPPR)和Soft PPR(简称sPPR)。封装后sPPR是一种快速但临时地修复内存阵列中元素的方法,而hPPR则需要更长的时间,但它是对内存阵列中元素进行永久修复。
存储器内建自测试(memory build-in-self test,MBIST):“内建”是指针对存储器的测试向量是由内建的存储器测试逻辑自动产生,而非外部测试机台产生。在MBIST测试中,只需要借助机台通过联合测试工作组(jion test action group,JTAG)接口传输测试的指令,就可以从用于测试数据输出的测试数据输出引脚/接口TDO接口获取测试结果。
接下来,对本方案进行介绍。
现有的PPR使用场景,都是基于BIOS中的AMT算法,在计算机或者服务器上电过程中(也可以称之为BIOS的启动过程)对内存进行检测并修复。BIOS的启动过程可以划分为7个阶段,包括:初始化临时内存(security phase,SEC)、预先EFI初始化(pre-EFIinitialization,PEI)、驱动程序执行环境(driver execution environment,DXE)、引导设备选择(boot device select,BDS)、临时系统运行环境(transient system loader,TSL)、运行时服务(run time service,RT)、运行结束(after life,AL)。其中,对内存进行检测,并基于检测结果对内存中的故障进行PPR修复,发生在PEI阶段。
示例性的,图1示出了一种PPR的修复流程示意图。如图1所示,在BIOS启动过程中的PEI阶段,服务器或者终端设备中的处理器对内存进行检测并修复。具体地,处理器可以对服务器中或者计算机中的内存进行MBIST测试,并得到MBIST测试结果,MBIST结果中包含了内存故障数据。然后,处理器可以根据MBIST测试结果对内存故障进行PPR修复。
由于,内存修复过程可能存在数据的丢失,因此服务器整机中的PPR技术只能在BIOS启动过程中应用,而对于服务器运行过程中发现的内存故障无法进行PPR修复。比如,对于操作系统下对内存进行压力测试检测出的内存故障,就无法进行PPR修复。
可以理解的是,BIOS启动过程中的MBIST测试与操作系统中的内存压力测试工具,存在算法、码型和业务压力上的差异。因此,MBIST测试的故障检测能力与操作系统下的故障检测能力是不一致的,在操作系统下进行内存压力测试可能会检测出MBIST无法检测出的内存故障。进而会导致MBIST配合PPR的方案无法修复服务器中检测出来的所有故障内存。
有鉴于此,本申请实施例提供了一种内存故障处理方法,通过在计算设备的BIOS中增加故障传递接口,使得在操作系统中检测出内存故障时,可以通过该接口将检测出的内存故障信息传递给BIOS,以便在计算设备下一次重启过程中可以进行PPR修复。可以理解的是,计算设备可以是服务器或者终端设备,本申请实施例对此不作限定。
示例性的,图2示出了一种服务器的结构示意图,如图2所示,服务器中可以包括底层的硬件模块、基本输入输出系统以及操作系统。
底层硬件模块中可以包括:中央处理器(central processing unit,CPU)、内存和其他硬件。CPU是服务器的运算和控制核心,是信息处理、程序运行的最终执行单元。内存用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。其他硬件可以包括:电源、风扇、硬盘、光驱等。
BIOS专门负责服务器中的硬件的各种参数的设定。在服务器上电以后,BIOS中的上电自检程序(power on self test,POST)需要对服务器上的部件和设备进行检查。在完成POST自检以后,BIOS将按照预设顺序搜寻软盘驱动器、硬盘驱动器、光驱、网络服务器等有效的启动驱动设备,读入操作系统的引导记录,然后将系统控制权移交给引导记录,由引导记录完成操作系统的启动。其中,在BIOS的上电自检过程中,BIOS可以通过执行MBIST测试,对服务器底层硬件模块中的内存进行检测,并生成MBIST故障检测结果。然后,BIOS可以根据MBIST故障检测结果对内存进行PPR修复。
在一个可能的示例中,进行内存压力测试的测试模式可以为简单读写测试模式、地址测试模式、前进算法测试模式或者蝴蝶算法测试模式和随机数测试模块。
可以理解的是,BIOS本质上是“程序”,也就是一组“代码”,存储在BIOS芯片中,BIOS芯片是指存储BIOS程序的一块特定的ROM芯片。在BIOS中至少包括BIOS变量区和PPR修复模块,BIOS变量区用于存储BIOS启动过程中需要用到的数据。
在一个可能的示例中,图3示出了BIOS变量区的结构。如图3所示,在BIOS变量区中包括多个变量Variable。其中,在BIOS变量区中的多个变量中设置n个内存故障变量(memory Failure Variable)用于存储在操作系统中进行内存压力测试,得到的内存故障信息,其中,n为正整数。对于每一个用于存储内存故障信息的变量都对应了一个变量接口,每一个变量接口按照内存故障的地址层级定义变量的各个区段。
示例性的,图4示出了一个变量中的各个区段的示意图。如图4所示,在MemoryFailure Variable变量中包括:socket字段、channel字段、dimm字段、rank字段、subrank字段、device字段、bank group字段、bank字段、row、column字段。
socket字段用于标识CPU的槽位号。
channel字段用于标识内存的通道号,一个CPU下有多个内存通道,此处的通道好用于标记故障内存所在的通道位置。
dimm字段用于标识双列直插式存储模块dimm槽位号,一个内存通过下有多个dimm槽位,此处的dimm槽位号用于标记故障内存所在的dimm槽位号。
rank字段用于标识dimm上的排号,一般地可以理解为dimm上正面一排内存芯片为一个rank,反面一排为一个rank。
subrank字段用于标识子排号
device字段用于标识内存的颗粒号。
bank group字段用于标识内存中的区块组/区块组号,通常情况下,一个DRAM芯片内存会划分4个BG,每个BG下面划分4个Bank。
bank字段用于标识区块或者区块号。
row、column字段用于标识bank中的存储阵列的行号和列号。
在图3所示的变量区中每一个memory Failure Variable用于存储一个内存故障信息,在向memory Failure Variable中存储内存故障信息时,故障信息在memory FailureVariable中的存储格式,如图4所示。
可以理解的是,在本申请实施例中,在BIOS的变量区中新增了多个变量。其中,在BIOS的变量区中新增变量时,需要在BIOS程序中对新增的变量区进行定义,以及在存储BIOS的BIOS芯片上为新增的变量区划分对应的存储区域。
操作系统是位于硬件层之上,其他系统软件层之下的一个系统软件,通过它管理服务器系统中的各种软件和硬件资源,使得它们能够被充分利用,方便用户使用服务器系统。在通过操作系统管理服务器上的各种软件和硬件资源的过程中,在操作系统运行阶段,测试人员可以使用内存压力测试工具进行内存压力测试,并得到内存故障结果。然后,操作系统调用BIOS中的故障传递接口将得到的内存故障结果,存储到BIOS的变量区的变量中,这些存储了内存故障的结果的变量,可以在服务器下一次上电过程中被BIOS读取,按照约定的方式进行解析,并将解析结果传递到PPR修复模块。实现了对操作系统中检测到的内存故障的PPR修复。可以理解的是,BIOS变量区中用于存储内存故障信息的变量都对应了一个变量接口,操作系统在进行故障传递时,调用的BIOS中的故障传递接口可以是用于存储内存故障的变量的变量接口。
在一个可能的示例中,进行内存压力测试的测试模式可以为简单读写测试模式、地址测试模式、前进算法测试模式或者蝴蝶算法测试模式和随机数测试模块。
在一个可能的示例中,图5示出了一种在BIOS上电过程中对内存故障进行修复的逻辑示意图。其中,内存故障包括在操作系统运行过程中发现的内存故障和在BIOS上电过程中发现的内存故障。如图5所示,在BIOS中除了在BIOS的变量区增加故障传递接口外,还需要在BIOS中增加接口信息读取模块和接口信息解析模块。
参照图5,在服务器系统进入到OS以后,测试人员可以在OS中对内存进行压力测试,并得到压力测试结果。OS在获取到内存的压力测试结果以后,OS可以通过二进制工具调用BIOS中的故障传递接口,将内存故障数据写入到BIOS变量区的变量中。
在服务器重新启动后,在BIOS的PEI阶段对服务器的内存进行MBIST测试,并得到MBIST测试结果。同时,在BIOS的PEI阶段,BIOS中的接口信息读取模块还可以从BIOS变量区的memory Failure Variable变量中读取内存故障信息,并将读取的内存故障信息传递给接口信息解析模块。接口信息解析模块对接收到的内存故障信息按照约定的方式进行解析以后,将解析结果传递到PPR修复模块。
PPR修复模块可以根据MBIST测试结果以及接口信息解析模块发送的内存故障信息对服务器内存进行PPR修复。
在本申请实施例中,通过在BIOS变量区中增加用于存储内存故障信息的变量、故障传递接口以及在BIOS中增加接口信息读取模块和接口信息解析模块。使得在服务器进入到OS阶段以后,可以将对内存进行压力测试得到的内存故障信息,通过BIOS上的故障传递接口存储到BIOS变量区的变量中。然后,在服务器的下一次上电过程中,存储有内存故障信息的变量被BIOS中的接口信息读取模块读取,并被接口信息解析模块进行解析,解析结果最终被传递到PPR修复模块进行修复。
基于上文所描述的内容,本申请实施例还提供了一种内存故障的处理方法。图6是本申请实施例提供的一种内存故障的处理方法的流程示意图。该方法可以由图2所示的服务器中的BIOS执行。如图6所示,该方法包括:步骤601-步骤604。
步骤601,获取BIOS变量区中的至少一个变量中存储的信息,其中,至少一个变量用于存储在OS中得到的内存故障信息。
在本实施例中,在服务器中的BIOS上电完成,且将系统控制权交给OS以后,OS中测试人员可以对服务器上的内存模块进行测试,以确定服务器上的内存模块是否存在故障。当服务器上的内存模块存在故障时,OS可以将获取到的故障信息通过BIOS上的故障传递接口存储到BIOS变量区的变量中。
在服务器重新启动以后,在BIOS的PEI阶段,BIOS中的接口信息读取模块可以获取BIOS变量区中用于存储内存故障信息的变量。可以理解的是,在BIOS变量区中新增了多个可以用于存储内存故障信息的变量(memory Failure Variable),每个变量用于存储一个内存故障信息。当BIOS变量区中存在多个memory Failure Variable时,接口信息读取模块需要依次遍历BIOS变量区中的多个memory Failure Variable,并读取非空的memoryFailure Variable中存储的信息。
接口信息读取模块在读取到memory Failure Variable中的信息以后,接口信息读取模块还需要将读取的信息发送给接口信息解析模块进行解析。
步骤602,对获取的至少一个变量进行解析,得到至少一个内存故障信息。
在本实施例中,接口信息解析模块接收到接口信息读取模块发送的至少一个memory Failure Variable中的信息以后,对memory Failure Variable中的信息按照约定的方式进行解析。其中,约定的方式可以指内存故障信息在memory Failure Variable中的存储格式。
在一个可能的示例中,memory Failure Variable中存储的内存故障信息的格式如图4所示。接口信息解析模块在接收到接口信息获取模块发送的信息以后,可以按照图4所示的格式对接收到的信息进行解析,以得到内存故障信息。接口信息解析模块得到的内存故障信息中至少包括内存故障的地址信息和故障的类型信息,其中,根据内存故障的地址信息可以唯一确定一个目标内存单元,目标内存单元为cell,一个cell通过内存上的行(column)和列(row)进行确定。
接口信息解析模块在得到内存故障信息以后,还需要将该内存故障信息发送给BIOS中的PPR修复模块,以触发PPR修复模块对服务器上的内存进行PPR修复。
可以理解的是,步骤602为可选步骤,在BIOS中的memory Failure Variable均为空的情况下,接口信息读取模块无法从BIOS的变量区读取信息,也就不会向接口信息解析模块发送信息。
步骤603,对内存模块进行内存测试,得到第一测试结果。
在本实施例中,在BIOS启动过程中的PEI阶段,BIOS可以对服务器上的内存进行内存测试,以确定服务器上的内存是否存在故障。比如,在PEI阶段对服务器上的内存进行MBIST测试,并得到MBIST测试结果。当MBIST测试结果标识内存中存在故障时,BIOS需要将该MBIST测试结果发送给PPR修复模块,触发PPR修复模块对服务器上的内存进行PPR修复。其中,MBIST测试结果中包含有内存故障信息,该内存故障信息中至少包括内存故障地址和内存故障的类型。
可以理解的是,步骤603与步骤601-步骤602之间是不存在执行的先后顺序的。在一些情况下,步骤603和步骤601-602可以同时执行,也可以先执行步骤603,再执行步骤601和步骤602。在本发明申请实施例中,对此并不做限定。进一步地,步骤603是可选步骤,在一些情况下,在BIOS上电过程中,BIOS可以不对内存进行测试,BIOS只需要根据BIOS变量区中的变量中存储的内存故障信息对发生故障的内存进行修复。
步骤604,根据得到的至少一个内存故障信息和第一测试结果,内存进行PPR修复。
在本实施例中,PPR修复模块在获取到BIOS变量区中存储的内存故障信息,以及第一测试结果以后,PPR修复模块可以根据获取的内存故障信息以及第一测试结果中包含的内存故障信息对发生故障的内存进行PPR修复。可以理解的是,PPR修复包括hPPR修复和sPPR修复。在本申请实施例中,可根据实际情况选择对发生故障的内存进行哪种PPR修复,对此并不做限定。
在本申请实施例中,通过在BIOS变量区中新增若干个变量,用于存储在OS运行中发现的内存故障信息。然后,在BIOS的启动过程中,可以直接读取BIOS变量中存储的内存故障信息并进行修复,实现对OS阶段发现的内存故障的PPR修复。
示例性的,本申请实施例还提供了一种内存故障的处理方法,该方法可以由图2所示的服务器中的OS执行。图7是本申请实施例提供的一种内存故障处理方法的流程示意图。如图7所示,该方法包括:步骤701-步骤702。
步骤701,对服务器上的内存模块进行内存压力测试,得到内存压力测试结果。
在本申请实施例中,在OS获得服务器系统的控制权以后,测试人员可以对服务器上的内存模块进行内存压力测试。
在一个可能的示例中,在OS中用户对内存的操作包括读操作或者写操作,测试人员对服务器上的内存模块进行内存压力测试可以是对内存模块进行读写操作测试。
步骤702,在内存压力测试结果中包含内存故障信息的情况下,调用BIOS中的故障传递接口将该内存故障信息存储到BIOS变量区。
在本申请实施例中,在OS中对内存模块进行内存压力测试时,若得到的测试结果中包含内存故障信息,OS可以通过特定的二进制工具,将测试结果中的内存故障信息写入到BIOS变量区中的变量中。
可以理解的是,在BIOS变量区中新增的每一个用于存储内存故障信息的变量(memory Failure Variable)都对应了一个变量接口,且每一个变量只用于存储一个内存故障信息。OS在通过特定的二进制工具向BIOS的变量区写入故障信息时,可以根据内存压力测试得到的内存故障的个数,确定每次需要调用的变量接口的个数。对于如图3所示的BIOS变量区,OS通过特定的二进制工具,每次最多可以调用n个变量接口,n为大于等于1的自然数。
在本申请实施例中,通过在BIOS中增加接口,可将OS压力测试检出的内存故障结果传递给BIOS,在下一次重启过程中,BIOS将接收到的内存故障数据传递给PPR修复模块,进而实现OS压力测试检出内存的修复,最终减少内存故障率及导致服务器宕机的风险。
示例性的,本申请实施例还提供了一种内存故障的处理方法,该方法可以由计算设备执行。其中,计算设备可以是图2所示的服务器,该计算设备中包括BIOS和OS。图8是本申请实施例提供的一种内存故障处理方法的流程示意图。如图8所示,该方法包括:步骤801-步骤803。
步骤801,在OS工作过程中,对计算设备中的内存进行压力测试,得到第一故障信息。
在本申请实施例中,在OS获得服务器系统的控制权以后,测试人员可以对服务器上的内存模块进行内存压力测试,得到第一故障信息。
在一个可能的示例中,第一故障信息包括:故障内存所在的中央处理器CPU的槽位号、故障内存所在的内存通道号、故障内存所在的双列直插式存储模块槽位号、故障内存所在的排号、故障内存所在的子排号、故障内存所在的颗粒号、故障内存所在的区块组号、故障内存所在的区块号、故障内存所在的列号、故障内存所在的行号中的一个或多个。
步骤802,通过OS调用BIOS上的故障传递接口,将第一故障信息传输至BIOS。
在本申请实施例中,在OS获取到第一故障信息以后,OS需要将获取的第一故障信息传输到BIOS变量区的第一变量中。其中,BIOS变量中包括多个第一变量,一个第一变量用于存储在OS工作过程中得到的一个故障信息。
步骤803,在BIOS再次上电过程中,通过BIOS读取第一故障信息,并对第一故障信息所指示的存在故障的内存单元进行修复。
在本申请实施例中,BIOS再次上电以后,从BIOS变量区中的第一变量中获取第一故障信息。然后,BIOS对第一故障信息进行解析得到第一故障的故障地址和故障类型,并根据故地址确定发生故障的内存单元,以及根据故障类型对发生故障的内存单元进行修复。
在一个可能的示例中,在BIOS再次上电的过程中,BIOS还需要基于内存测试算法对计算设备的内存进行内存测试,得到第二故障信息,并对第二故障信息所指示的存在故障的内存单元进行修复。
在本申请实施例中,在BIOS再次上电的过程中,可以对BIOS检测出的内存故障进行修复,同时也可以对OS检测出的内存故障进行修复,减少了内存故障率以及由此导致的计算设备宕机的风险。
可以理解的是,上述各个实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。此外,在一些可能的实现方式中,上述实施例中的各步骤可以根据实际情况选择性执行,可以部分执行,也可以全部执行,此处不做限定。本申请的任意实施例的任意特征的全部或部分在不矛盾的前提下,可以自由地、任何地组合。组合后的技术方案也在本申请的范围之内。
基于上述实施例中的方法,本申请实施例还提供了一种服务器的结构示意图,该服务器可以用于执行上述实施例中的方法。
示例性的,图9示出了本申请实施例提供的一种服务器的结构示意图。如图9所示,该服务器包括:处理器910、存储器920。
处理器910用于在OS中对内存模块进行内存压力测试,得到内存故障信息以及调用BIOS变量区中的故障传递接口将该内存故障信息存储到存储模块930中。
处理器910还用于在BIOS启动过程中对内存模块进行MBIST测试,得到MBIST故障结果。
处理器910还用于在BIOS启动过程中根据内存压力测试结果中包含的内存故障信息、以及MBIST故障结果中包含的故障信息对服务器的内存模块进行PPR修复。
存储器920可以用于存储内存故障信息。在一个可能的示例中,存储器920中包括BIOS程序所在的BIOS芯片上的存储区域。处理器910可以通过调用BIOS变量区中的故障传递接口将该内存故障信息存储BIOS芯片上的存储区域中。
基于上述实施例中的方法,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序在处理器上运行时,使得处理器执行上述实施例中的方法。
基于上述实施例中的方法,本申请实施例提供了一种计算机程序产品,其特征在于,当计算机程序产品在处理器上运行时,使得处理器执行上述实施例中的方法。
基于上述实施例中的方法,本申请实施例提供了一种计算设备,计算设备包括主板和芯片。其中,芯片集成在主板上,芯片包括至少一个存储器,用于存储程序;至少一个处理器,用于执行存储器存储的程序,当存储器存储的程序被执行时,处理器用于执行上述实施例中的方法。在本申请实施例中,计算设备可以是服务器、计算机设备。
基于上述实施例中的方法,本申请实施例还提供了一种芯片。请参阅图10,图10为本申请实施例提供的一种芯片的结构示意图。如图10所示,芯片1000包括一个或多个处理器1001以及接口电路1002。可选的,芯片1000还可以包含总线1003。其中,
处理器1001可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1001中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1001可以是通用处理器、数字通信器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
接口电路1002可以用于数据、指令或者信息的发送或者接收,处理器1001可以利用接口电路1002接收的数据、指令或者其它信息,进行加工,可以将加工完成信息通过接口电路1002发送出去。
可选的,芯片1000还包括存储器,存储器可以包括只读存储器和随机存取存储器,并向处理器提供操作指令和数据。存储器的一部分还可以包括非易失性随机存取存储器(NVRAM)。
可选的,存储器存储了可执行软件模块或者数据结构,处理器可以通过调用存储器存储的操作指令(该操作指令可存储在操作系统中),执行相应的操作。
可选的,接口电路1002可用于输出处理器1001的执行结果。
需要说明的,处理器1001、接口电路1002各自对应的功能既可以通过硬件设计实现,也可以通过软件设计来实现,还可以通过软硬件结合的方式来实现,这里不作限制。
应理解,上述方法实施例的各步骤可以通过处理器中的硬件形式的逻辑电路或者软件形式的指令完成。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(read-only memory,ROM)、可编程只读存储器(programmable rom,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。

Claims (10)

1.一种内存故障的处理方法,其特征在于,应用于计算设备,所述计算设备包括:基本输入输出系统BIOS和操作系统OS,所述方法包括:
在所述OS工作过程中,对所述计算设备中的内存进行压力测试,得到第一故障信息;
通过所述OS调用所述BIOS上的故障传递接口,将所述第一故障信息传输至所述BIOS;
在所述BIOS再次上电过程中,通过所述BIOS读取所述第一故障信息,并对所述第一故障信息所指示的存在故障的内存单元进行修复。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一故障信息传输至所述BIOS包括:
将所述第一故障信息传输到所述BIOS变量区中的第一变量中,所述BIOS变量区中包括多个第一变量,一个第一变量用于存储在OS工作过程中得到的一个故障信息。
3.根据权利要求1或2所述的方法,其特征在于,通过所述BIOS读取所述第一故障信息,并对所述第一故障信息所指示的存在故障的内存单元进行修复,包括:
从所述BIOS变量区中的第一变量中获取第一故障信息;
对所述第一故障信息进行解析,得到第一故障的故障地址和故障类型;
根据所述故障地址确定发生故障的内存单元;
根据所述故障类型,对所述发生故障的内存单元进行修复。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
所述BIOS再次上电过程中,所述BIOS基于内存测试算法对所述内存进行测试,得到第二故障信息,并对所述第二故障信息所指示的存在故障的内存单元进行修复。
5.根据权利要求1-4所述的方法,其特征在于,所述第一故障信息包括:故障内存所在的中央处理器CPU的槽位号、故障内存所在的内存通道号、故障内存所在的双列直插式存储模块槽位号、故障内存所在的排号、故障内存所在的子排号、故障内存所在的颗粒号、故障内存所在的区块组号、故障内存所在的区块号、故障内存所在的列号、故障内存所在的行号。
6.一种计算设备,其特征在于,包括:
处理器,用于在OS工作过程中,对所述计算设备中的内存进行压力测试,得到第一故障信息,并调用BIOS上的故障传递接口,将所述第一故障信息传输至所述BIOS;
所述处理器,还用于在所述BIOS再次上电过程中,通过所述BIOS读取所述第一故障信息,并对所述第一故障信息所指示的存在故障的内存单元进行修复。
7.根据权利要求6所述的计算设备,其特征在于,所述处理器用于:
将所述第一故障信息传输到所述BIOS变量区中的第一变量中,所述BIOS变量区中包括多个第一变量,一个第一变量用于存储在OS工作过程中得到的一个故障信息。
8.根据权利要求6或7所述的计算设备,其特征在于,所述处理器用于:
从所述BIOS变量区中的第一变量中获取第一故障信息;
对所述第一故障信息进行解析,得到第一故障的故障地址和故障类型;
根据所述故障地址确定发生故障的内存单元;
根据所述故障类型,对所述发生故障的内存单元进行修复。
9.根据权利要求6-8任一项所述的计算设备,其特征在于,所述处理器还用于:
所述BIOS再次上电过程中,所述BIOS基于内存测试算法对所述内存进行测试,得到第二故障信息,并对所述第二故障信息所指示的存在故障的内存单元进行修复。
10.根据权利要求6-9任一项所述的计算设备,其特征在于,所述第一故障信息包括:故障内存所在的中央处理器CPU的槽位号、故障内存所在的内存通道号、故障内存所在的双列直插式存储模块槽位号、故障内存所在的排号、故障内存所在的子排号、故障内存所在的颗粒号、故障内存所在的区块组号、故障内存所在的区块号、故障内存所在的列号、故障内存所在的行号。
CN202310572992.4A 2023-05-17 2023-05-17 一种内存故障的处理方法及计算设备 Pending CN116627733A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310572992.4A CN116627733A (zh) 2023-05-17 2023-05-17 一种内存故障的处理方法及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310572992.4A CN116627733A (zh) 2023-05-17 2023-05-17 一种内存故障的处理方法及计算设备

Publications (1)

Publication Number Publication Date
CN116627733A true CN116627733A (zh) 2023-08-22

Family

ID=87637603

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310572992.4A Pending CN116627733A (zh) 2023-05-17 2023-05-17 一种内存故障的处理方法及计算设备

Country Status (1)

Country Link
CN (1) CN116627733A (zh)

Similar Documents

Publication Publication Date Title
US7519866B2 (en) Computer boot operation utilizing targeted boot diagnostics
US10204698B2 (en) Method to dynamically inject errors in a repairable memory on silicon and a method to validate built-in-self-repair logic
US6976197B2 (en) Apparatus and method for error logging on a memory module
US7945815B2 (en) System and method for managing memory errors in an information handling system
CN111124517B (zh) 嵌入式芯片引导启动方法、装置、计算机设备和存储介质
US6550019B1 (en) Method and apparatus for problem identification during initial program load in a multiprocessor system
US6304983B1 (en) Checkpoint logging without checkpoint display device availability
JP2012198876A (ja) メモリデバイスにおける読み出し不可状態を解決するための装置及び方法
US7607038B2 (en) Systems and methods for CPU repair
CN109857583B (zh) 一种处理方法及装置
US20220188221A1 (en) Regression testing method and regression testing apparatus
CN113377586B (zh) 一种服务器自动化检测方法、装置及存储介质
CN113315675B (zh) 一种白盒交换机U-Boot自动化测试方法、系统和存储介质
CN114385418A (zh) 通信设备的保护方法、装置、设备和存储介质
CN111338864B (zh) 内存问题检测方法、装置、计算机设备及存储介质
US20110010584A1 (en) Diagnosis of and Response to Failure at Reset in a Data Processing System
CN116627733A (zh) 一种内存故障的处理方法及计算设备
US7650530B2 (en) Initializing a processing system to ensure fail-safe boot when faulty PCI adapters are present
US7617417B2 (en) Method for reading input/output port data
US20240176887A1 (en) Method for Running Startup Program of Electronic Device, and Electronic Device
US20130124925A1 (en) Method and apparatus for checking a main memory of a processor
US7533293B2 (en) Systems and methods for CPU repair
CN113672260A (zh) 一种处理器cpu初始化方法
US8661289B2 (en) Systems and methods for CPU repair
US8626992B2 (en) Storage device with identification information

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