CN103197999B - 一种内存故障自动定位方法及装置 - Google Patents
一种内存故障自动定位方法及装置 Download PDFInfo
- Publication number
- CN103197999B CN103197999B CN201310095239.7A CN201310095239A CN103197999B CN 103197999 B CN103197999 B CN 103197999B CN 201310095239 A CN201310095239 A CN 201310095239A CN 103197999 B CN103197999 B CN 103197999B
- Authority
- CN
- China
- Prior art keywords
- memory
- socket
- failure
- value
- address
- 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.)
- Active
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提出一种内存故障自动定位方法,包括以下步骤:读取机器检查架构MCA寄存器的值,并对其进行解析以获取故障内存的物理地址;据此获取内存在套接字socket之间的交错状态,并根据该交错状态获取故障内存所在的socket值;根据内存故障物理地址和内存在套接字socket之间的交错状态获取故障内存所在的通道值和通道内偏移;根据该通道内偏移获取故障内存的槽位信息;根据故障内存所在的socket值、通道值和槽位信息对故障内存进行定位。本发明的实施例能够精确的定位出故障内存槽位,并配合其他方法对内存进行修复,提高了内存故障监控率,也减轻了数据中心运维成本。本发明还提出了一种内存故障自动定位装置。
Description
技术领域
本发明涉及信息存储技术领域,特别涉及一种内存故障自动定位方法及装置。
背景技术
在IntelCPU中提供了一种MCA(MachineCheckArchitecture,机器检查架构),Nehalm平台的MCA会在寄存器中记录故障内存的槽位信息,应用程序通过读取寄存器中的值就可以定位到故障内存。
但是一旦Sandybridge平台MCA架构发生了变化,寄存器中不再直接记录故障内存的槽位信息,因此采用以往的检测方法不能确定故障内存的槽位。
发明内容
本发明旨在至少解决上述技术问题之一。
为此,本发明的一个目的在于提出一种能够精确的定位出故障内存槽位,并对其进行维修,从而提高内存故障监控率,也减轻数据中心运维成本的内存故障自动定位方法。
本发明的另一目的在于提出一种内存故障自动定位装置。
为了实现上述目的,本发明第一方面的实施例提出了一种内存故障自动定位方法,包括如下步骤:读取机器检查架构MCA寄存器的值,并对所述寄存器的值进行解析以获取故障内存的物理地址;根据所述故障内存的物理地址获取所述内存在套接字socket之间的交错状态,并根据所述内存在套接字socket之间的交错状态获取所述故障内存所在的socket值;根据所述内存故障物理地址和所述内存在套接字socket之间的交错状态获取所述故障内存所在的通道值和通道内偏移;根据所述故障内存所在的通道内偏移获取所述故障内存的槽位信息;以及根据所述故障内存所在的socket值、所述通道值和所述槽位信息对所述故障内存进行定位。
根据本发明实施例的内存故障自动定位方法,在Sandybridge平台下,通过MCA寄存器中故障内存的物理地址,能够精确的定位出故障内存槽位,并配合其他方法对故障内存进行修复,从而提高了内存故障监控率,同时也减轻了数据中心的运维成本。
另外,根据本发明上述实施例的内存故障自动定位方法还可以具有如下附加的技术特征:
在本发明的实施例中,所述故障内存的物理地址包括:64个字节对齐、第一套接字socket交错、通道交错、行列交错、第二套接字socket交错。
在本发明的实施例中,所述根据所述故障内存所在的通道内偏移获取所述故障内存的槽位信息,包括如下步骤:利用所述故障内存所在的通道内偏移获取所述故障内存所对应的socket内的行值;根据所述行值以及所述内存的行与槽位的对应关系,获得所述故障内存的槽位信息。
在本发明的实施例中,所述通道内偏移为所述故障内存所在的通道对应所在socket的通道0的偏移地址。
本发明第二方面的实施例还提出了一种内存故障自动定位装置,包括:读取模块,用于读取机器检查构架MCA寄存器的值,并对所述寄存器的值进行解析以获取故障内存的物理地址;socket值获取模块,所述socket值获取模块与所述读取模块相连,用于根据所述故障内存的物理地址获取所述内存在套接字socket之间的交错状态,并根据所述内存在套接字socket之间的交错状态获取所述故障内存所在的socket值;通道信息获取模块,所述通道信息获取模块与所述读取模块和所述socket值获取模块相连,用于根据所述内存故障物理地址和所述内存在套接字socket之间的交错状态获取所述故障内存所在的通道值和通道内偏移;槽位信息获取模块,所述槽位信息获取模块与所述通道信息获取模块相连,用于根据所述故障内存所在的通道内偏移获取所述故障内存的槽位信息;以及定位模块,所述定位模块与所述socket值获取模块、所述通道信息获取模块和所述槽位信息获取模块相连,用于根据所述故障内存所在的socket值、所述通道值和所述槽位信息对所述故障内存进行定位。
根据本发明实施例的内存故障自动定位装置,在Sandybridge平台下,通过MCA寄存器中故障内存的物理地址,能够精确的定位出故障内存槽位,并配合其他方法对故障内存进行修复,从而提高了内存故障监控率,同时也减轻了数据中心的运维成本。
另外,根据本发明上述实施例的内存故障自动定位装置还可以具有如下附加的技术特征:在本发明的实施例中,所述故障内存的物理地址包括:64个字节对齐、第一套接字socket交错、通道交错、行列交错、第二套接字socket交错。
在本发明的实施例中,所述槽位信息获取模块利用所述故障内存所在的通道内偏移获取所述故障内存所对应的socket内的行值,并根据所述行值以及所述内存的行与槽位的对应关系,获得所述故障内存的槽位信息。
在本发明的实施例中,所述通道内偏移为所述故障内存所在的通道对应所在socket的通道0的偏移地址。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明一个实施例的内存故障自动定位方法的流程图;
图2为根据本发明一个实施例的内存故障自动定位方法的内存的拓扑结构图;
图3为根据本发明一个实施例的内存故障自动定位方法的socket不交错,channel、slot间交错的内存分布示意图;
图4为根据本发明另一个实施例的内存故障自动定位方法的流程图;和
图5为根据本发明一个实施例的内存故障自动定位装置的结构图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
以下结合附图1-4详细描述根据本发明实施例的基于raid卡日志的硬盘的故障定位方法。
如图1所示,根据本发明一个实施例的内存故障自动定位方法,包括以下步骤:
步骤S101,读取机器检查架构MCA寄存器的值,并对寄存器的值进行解析以获取故障内存的物理地址。具体而言,在Sandybridge平台下,MCA会在寄存器中反映故障内存的物理地址值,通过解析该值获取故障内存的物理地址。其中,故障内存的物理地址包括:64个字节对齐、第一套接字socket交错、通道交错、行列交错、第二套接字socket交错。即如下表所示:
其中,从低位到高位地址分布,由于地址格式和interleave相关,所以各位段开始位不固定。低6位是位置地址分布的基本单位,以64byte为一个基本块。
步骤S102,根据故障内存的物理地址获取内存在套接字socket之间的交错状态,并根据该内存在套接字socket之间的交错状态获取故障内存所在的socket值。具体而言,根据内存在套接字socket之间交错情况,可以通过下列公式来获得故障内存所在的socket值:
idx=interleave_mode?(((address>>6)^(address>>16))&7):((address>>6)&7)
当socket之间interleave时,将物理地址分布的socketinterleave1和socketinterleave2位段异或,即可获得socket状态寄存器组的index,然后从相应的寄存器中即可获得对应的socket值;当socket之间没有interleave时则直接通过物理地址的6-8位(此时6-8位不为socketinterleave位段)来获得寄存器的index。
而对于物理地址的6-8位和16-18位不管是什么位段,socket状态寄存器都是和他们的内容对应的,这时候这两个位段可能是socketinterleave信息,也可能是channelinterleave信息。
步骤S103,根据内存故障物理地址和内存在套接字socket之间的交错状态度获取故障内存所在的通道值和通道内偏移。其中,通道内偏移为故障内存所在的通道对应所在socket的通道0的偏移地址。具体而言,根据物理地址的组织格式,以及前面定位的socket情况,可以通过下列公式获得故障内存所在通道信息:
idx=(address>>(6+sck_way))%(ch_way+1)
ch_addr=((((address–ch0offset)>>6)/sck_xch)<<6)|(address&0x3f)由于channelinterleave时,物理地址在各channel之间也是均匀分布的,所以将物理地址右移掉和socket相关的位,然后对channel数即(ch_way+1)取余即可知道该物理地址属于哪一个channel。
物理地址address相对于channnel0的相对地址,除上socketinterleave、通道interleave的乘积,即可得到该地址位于该channel的第几个基本块(64byte),从而获得该物理地址在本channel中的地址ch_addr。
上述公式中的ch_addr表示该物理地址在channel内的偏移地址。
步骤S104,根据故障内存所在的通道内偏移获取故障内存的槽位信息。具体地,利用故障内存所在的通道内偏移获取故障内存所对应的socket内的行值,然后根据该行值及内存的行与槽位的对应关系,获得故障内存的槽位信息。具体地可以通过以下公式获得故障内存的槽位信息:
idx=(ch_addr>>6)
idx%=1<<rir_way
而行值和槽位之间的对应关系为dimm=rank>>2,从而可以得到故障内存的槽位信息。
步骤S105,根据故障内存所在的socket值、通道值和槽位信息对故障内存进行定位。由于SandybridgeCPU(socket)最多支持四个内存通道,每个通道支持3个槽位,内存在拓扑中的逻辑位置与服务器上的置放位置具有唯一的对应关系,因此,确定了内存的套接字socket值、通道信息和槽位信息也就确定了故障内存。
作为一个具体的示例,如图2所示,根据本发明一个实施例的内存故障自动定位方法的内存拓扑结构图。如图所示,SandybridgeCPU(socket)最多支持四个内存channel(通道),每个channel支持3个dimm(槽位),内存在拓扑中的逻辑位置与服务器上的置放位置具有唯一的对应关系,因此,确定了内存的socket、channel、dimm号也就确定了故障内存。
在Sandybridge平台下,MCA会在寄存器中反映故障内存的物理地址值,通过解析物理地址来确定故障内存。内存的组织遵循特定的规律,依据此规律就可以根据MCA寄存器中故障内存的物理地址定位出该故障内存的槽位。另外,在实际使用中往往还使用内存交错技术(内存地址在各socket,或者各channel,或者各dimm之间交叉排列,如图3所示)来提高内存带宽,从而提高系统性能,但这使地址编码更加复杂。
在Sandybridge平台下,内存物理地址组织格式如下表所示:
为了更方便的管理内存,CPU还提供了一系列寄存器来存储相关辅助信息,在解析内存槽位时,需要根据内存物理地址组织格式,访问对应寄存器来获得相应的槽位信息。
根据内存在socket之间交错情况,可以通过下列公式来获得故障内存所在的socket值:
idx=interleave_mode?(((address>>6)^(address>>16))&7):((address>>6)&7)
当socket之间interleave时,将物理地址分布的socketinterleave1和socketinterleave2位段异或,即可获得socket状态寄存器组的index,然后从相应的寄存器中即可获得对应的socket值;当socket之间没有interleave时则直接通过物理地址的6-8位(此时6-8位不为socketinterleave位段)来获得寄存器的index。
而对于物理地址的6-8位和16-18位不管是什么位段,socket状态寄存器都是和他们的内容对应的,这时候这两个位段可能是socketinterleave信息,也可能是channelinterleave信息。
根据物理地址的组织格式,以及前面定位的socket情况,可以通过下列公式获得故障内存所在channel信息:
idx=(address>>(6+sck_way))%(ch_way+1)
ch_addr=((((address–ch0offset)>>6)/sck_xch)<<6)|(address&0x3f)
由于channelinterleave时,物理地址在各channel之间也是均匀分布的,所以将物理地址右移掉和socket相关的位,然后对channel数即(ch_way+1)取余即可知道该物理地址属于哪一个channel。
物理地址address相对于channnel0的相对地址,除上socketinterleave、通道interleave的乘积,即可得到该地址位于该channel的第几个基本块(64byte),从而获得该物理地址在本channel中的地址ch_addr。上述公式中的ch_addr表示该物理地址在channel内的偏移地址,然后根据物理地址的组织格式,通过下列公式即可确定故障内存所对应的socket内的rank(行)值:
idx=(ch_addr>>6)
idx%=1<<rir_way
而rank(行)和dimm之间的对应关系为dimm=rank>>2
至此,通过物理地址以及在Sandybridge平台下物理地址的组织规律,就可以确定故障内存所在socket、channel和dimm了。然后根据各机型内存分布关系,从而可以定位到实际故障内存。
图4为根据本发明另一个实施例的内存故障自动定位方法的流程图。
如图4所示,根据本发明另一个实施例的内存故障自动定位方法,包括以下步骤:
步骤S401,CPU机器检查机制。即CPU机器检查架构MCA。
步骤S402,读取MCA寄存器的值。在Sandybridge平台下,MCA会在寄存器中反映故障内存的物理地址值。
步骤S403,解析寄存器的值。即解析MCA寄存器中的内存的物理地址值。
步骤S404,获得故障内存物理地址。即通过解析MCA寄存器中的内存的物理地址值获取故障内存的物理地址。
步骤S405,根据socketinterleave(交错状态)获得对应的socket值。即先根据故障内存的物理地址获取内存在套接字socket之间的交错状态,再根据该内存在套接字socket之间的交错状态获取故障内存所在的socket值。
步骤S406,根据socketinterleave与channelinterleave获得对应的channel(通道)值以及channeladdress(通道内偏移)。即根据内存故障物理地址和内存在套接字socket之间的交错状态度获取故障内存所在的通道值和通道内偏移。其中,通道内偏移为故障内存所在的通道对应所在socket的通道0的偏移地址。
步骤S407,根据通道内偏移获取槽位信息。即先利用故障内存所在的通道内偏移获取故障内存所对应的socket内的行值,然后根据该行值及内存的行与槽位的对应关系,获得故障内存的槽位信息。
步骤S408,结束。即成功定位到故障内存。
根据本发明实施例的内存故障自动定位方法,在Sandybridge平台下,通过MCA寄存器中故障内存的物理地址,能够精确的定位出故障内存槽位,并配合其他方法对故障内存进行修复,从而提高了内存故障监控率,同时也减轻了数据中心的运维成本。
图5为根据本发明一个实施例的内存故障自动定位装置的结构图。
如图5所示,根据本发明一个实施例的内存故障自动定位装置500,包括:读取模块510、socket值获取模块520、通道信息获取模块530、槽位信息获取模块540和定位模块550。
具体地,读取模块510用于读取机器检查构架MCA寄存器的值,并对寄存器的值进行解析以获取故障内存的物理地址。具体而言,在Sandybridge平台下,MCA会在寄存器中反映故障内存的物理地址值,通过解析该值获取故障内存的物理地址。其中,故障内存的物理地址包括:64个字节对齐、第一套接字socket交错、通道交错、行列交错、第二套接字socket交错。即如下表所示:
其中,从低位到高位地址分布,由于地址格式和interleave相关,所以各位段开始位不固定。低6位是位置地址分布的基本单位,以64byte为一个基本块。
socket值获取模块520与读取模块510相连,用于根据故障内存的物理地址获取内存在套接字socket之间的交错状态,并根据内存在套接字socket之间的交错状态获取故障内存所在的socket值。具体而言,根据内存在套接字socket之间交错情况,可以通过下列公式来获得故障内存所在的socket值:
idx=interleave_mode?(((address>>6)^(address>>16))&7):((address>>6)&7)
当socket之间interleave时,将物理地址分布的socketinterleave1和socketinterleave2位段异或,即可获得socket状态寄存器组的index,然后从相应的寄存器中即可获得对应的socket值;当socket之间没有interleave时则直接通过物理地址的6-8位(此时6-8位不为socketinterleave位段)来获得寄存器的index。
而对于物理地址的6-8位和16-18位不管是什么位段,socket状态寄存器都是和他们的内容对应的,这时候这两个位段可能是socketinterleave信息,也可能是channelinterleave信息。
通道信息获取模块530与读取模块510和socket值获取模块520相连,用于根据内存故障物理地址和内存在套接字socket之间的交错状态获取故障内存所在的通道值和通道内偏移。其中,通道内偏移为故障内存所在的通道对应所在socket的通道0的偏移地址。具体而言,根据物理地址的组织格式,以及前面定位的socket情况,可以通过下列公式获得故障内存所在通道信息:
idx=(address>>(6+sck_way))%(ch_way+1)
ch_addr=((((address–ch0offset)>>6)/sck_xch)<<6)|(address&0x3f)
由于channelinterleave时,物理地址在各channel之间也是均匀分布的,所以将物理地址右移掉和socket相关的位,然后对channel数即(ch_way+1)取余即可知道该物理地址属于哪一个channel。
物理地址address相对于channnel0的相对地址,除上socketinterleave、通道interleave的乘积,即可得到该地址位于该channel的第几个基本块(64byte),从而获得该物理地址在本channel中的地址ch_addr。
上述公式中的ch_addr表示该物理地址在channel内的偏移地址。
槽位信息获取模块540与通道信息获取模块530相连,用于根据故障内存所在的通道内偏移获取故障内存的槽位信息。具体地,槽位信息获取模块540利用故障内存所在的通道内偏移获取故障内存所对应的socket内的行值,并根据行值以及内存的行与槽位的对应关系,获得故障内存的槽位信息。具体地可以通过以下公式获得故障内存的槽位信息:
idx=(ch_addr>>6)
idx%=1<<rir_way
而行值和槽位之间的对应关系为dimm=rank>>2,从而可以得到故障内存的槽位信息。
定位模块550与socket值获取模块520、通道信息获取模块530和槽位信息获取模块540相连,用于根据故障内存所在的socket值、通道值和槽位信息对故障内存进行定位。由于SandybridgeCPU(socket)最多支持四个内存通道,每个通道支持3个槽位,内存在拓扑中的逻辑位置与服务器上的置放位置具有唯一的对应关系,因此,确定了内存的套接字socket值、通道信息和槽位信息也就确定了故障内存。
根据本发明实施例的内存故障自动定位装置,在Sandybridge平台下,通过MCA寄存器中故障内存的物理地址,能够精确的定位出故障内存槽位,并配合其他方法对故障内存进行修复,从而提高了内存故障监控率,同时也减轻了数据中心的运维成本。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同限定。
Claims (6)
1.一种内存故障自动定位方法,其特征在于,包括如下步骤:
读取机器检查架构MCA寄存器的值,并对所述寄存器的值进行解析以获取故障内存的物理地址;
根据所述故障内存的物理地址获取所述内存在套接字socket之间的交错状态,并根据所述内存在套接字socket之间的交错状态获取所述故障内存所在的socket值,其中,根据所述内存在套接字socket之间交错情况,通过下列公式获得所述故障内存所在的socket值:
idx=interleave_mode?(((address>>6)^(address>>16))&7):((address>>6)&7);
根据所述内存故障物理地址和所述内存在套接字socket之间的交错状态获取所述故障内存所在的通道值和通道内偏移,其中,通过以下公式获取所述故障内存所在的通道值:
idx=(address>>(6+sck_way))%(ch_way+1),
并通过以下公式获取所述故障内存所在的通道内偏移:
ch_addr=((((address–ch0offset)>>6)/sck_xch)<<6)|(address&0x3f);
根据所述故障内存所在的通道内偏移获取所述故障内存的槽位信息,其中,利用所述故障内存所在的通道内偏移获取所述故障内存所对应的socket内的行值,并根据所述行值以及所述内存的行与槽位的对应关系,获得所述故障内存的槽位信息;以及
根据所述故障内存所在的socket值、所述通道值和所述槽位信息对所述故障内存进行定位。
2.如权利要求1所述的内存故障自动定位方法,其特征在于,所述故障内存的物理地址包括:64个字节对齐、第一套接字socket交错、通道交错、行列交错、第二套接字socket交错。
3.如权利要求1所述的内存故障自动定位方法,其特征在于,所述通道内偏移为所述故障内存所在的通道对应所在socket的通道0的偏移地址。
4.一种内存故障自动定位装置,其特征在于,包括:
读取模块,用于读取机器检查构架MCA寄存器的值,并对所述寄存器的值进行解析以获取故障内存的物理地址;
socket值获取模块,所述socket值获取模块与所述读取模块相连,用于根据所述故障内存的物理地址获取所述内存在套接字socket之间的交错状态,并根据所述内存在套接字socket之间的交错状态获取所述故障内存所在的socket值,其中,根据所述内存在套接字socket之间交错情况,通过下列公式获得所述故障内存所在的socket值:
idx=interleave_mode?(((address>>6)^(address>>16))&7):((address>>6)&7);
通道信息获取模块,所述通道信息获取模块与所述读取模块和所述socket值获取模块相连,用于根据所述内存故障物理地址和所述内存在套接字socket之间的交错状态获取所述故障内存所在的通道值和通道内偏移,其中,通过以下公式获取所述故障内存所在的通道值:
idx=(address>>(6+sck_way))%(ch_way+1),
并通过以下公式获取所述故障内存所在的通道内偏移:
ch_addr=((((address–ch0offset)>>6)/sck_xch)<<6)|(address&0x3f);
槽位信息获取模块,所述槽位信息获取模块与所述通道信息获取模块相连,用于根据所述故障内存所在的通道内偏移获取所述故障内存的槽位信息,其中,利用所述故障内存所在的通道内偏移获取所述故障内存所对应的socket内的行值,并根据所述行值以及所述内存的行与槽位的对应关系,获得所述故障内存的槽位信息;以及
定位模块,所述定位模块与所述socket值获取模块、所述通道信息获取模块和所述槽位信息获取模块相连,用于根据所述故障内存所在的socket值、所述通道值和所述槽位信息对所述故障内存进行定位。
5.如权利要求4所述的内存故障自动定位装置,其特征在于,所述故障内存的物理地址包括:64个字节对齐、第一套接字socket交错、通道交错、行列交错、第二套接字socket交错。
6.如权利要求4所述的内存故障自动定位装置,其特征在于,所述通道内偏移为所述故障内存所在的通道对应所在socket的通道0的偏移地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310095239.7A CN103197999B (zh) | 2013-03-22 | 2013-03-22 | 一种内存故障自动定位方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310095239.7A CN103197999B (zh) | 2013-03-22 | 2013-03-22 | 一种内存故障自动定位方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103197999A CN103197999A (zh) | 2013-07-10 |
CN103197999B true CN103197999B (zh) | 2016-08-03 |
Family
ID=48720582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310095239.7A Active CN103197999B (zh) | 2013-03-22 | 2013-03-22 | 一种内存故障自动定位方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103197999B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095032A (zh) * | 2015-08-14 | 2015-11-25 | 浪潮电子信息产业股份有限公司 | 一种快速定位故障内存条的检测装置和方法 |
CN105204968B (zh) * | 2015-11-10 | 2019-05-10 | 浪潮(北京)电子信息产业有限公司 | 一种故障内存检测方法和装置 |
CN106126368A (zh) * | 2016-08-22 | 2016-11-16 | 浪潮电子信息产业股份有限公司 | 一种linux下内存故障地址解析的方法 |
CN109508247B (zh) * | 2018-11-09 | 2022-02-11 | 英业达科技有限公司 | 定位内存错误发生位置的方法、系统、及电子设备 |
CN109408273A (zh) * | 2018-11-13 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种消除故障内存对系统影响的方法及装置 |
CN110688266B (zh) * | 2019-08-21 | 2023-01-06 | 深圳市金泰克半导体有限公司 | 故障内存条定位方法、装置及存储介质 |
CN114461436A (zh) * | 2022-04-08 | 2022-05-10 | 苏州浪潮智能科技有限公司 | 一种内存故障处理方法、装置及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004355424A (ja) * | 2003-05-30 | 2004-12-16 | Hitachi Ltd | 情報処理装置の障害管理方式 |
CN101292229A (zh) * | 2005-12-28 | 2008-10-22 | 富士通株式会社 | 用于控制存储器的方法、程序和设备 |
CN102841832A (zh) * | 2011-06-24 | 2012-12-26 | 鸿富锦精密工业(深圳)有限公司 | 出错内存条定位系统及方法 |
-
2013
- 2013-03-22 CN CN201310095239.7A patent/CN103197999B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004355424A (ja) * | 2003-05-30 | 2004-12-16 | Hitachi Ltd | 情報処理装置の障害管理方式 |
CN101292229A (zh) * | 2005-12-28 | 2008-10-22 | 富士通株式会社 | 用于控制存储器的方法、程序和设备 |
CN102841832A (zh) * | 2011-06-24 | 2012-12-26 | 鸿富锦精密工业(深圳)有限公司 | 出错内存条定位系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103197999A (zh) | 2013-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103197999B (zh) | 一种内存故障自动定位方法及装置 | |
CN104541257B (zh) | 利用元数据管理的堆栈存储器设备 | |
US9223648B2 (en) | Memory storage device, memory controller thereof, and method for processing data thereof | |
CN101558452A (zh) | 用于在闪速eeprom存储页中重构可靠性数据的方法和装置 | |
US20140068208A1 (en) | Separately stored redundancy | |
CN101944115B (zh) | 一种日志搜索方法和系统 | |
CN103577275B (zh) | 一种数据校验的方法、设备和系统 | |
CN101901169B (zh) | 扫描装置及方法 | |
CN102841832B (zh) | 出错内存条定位方法 | |
CN103019880B (zh) | 一种数据校验方法及存储设备、存储系统 | |
US20160117221A1 (en) | Error detection and correction utilizing locally stored parity information | |
CN101526885A (zh) | 一种提升独立磁盘冗余阵列性能的方法及其控制器 | |
CN111522702A (zh) | 一种非易失性内存带宽检测方法、装置、设备及可读介质 | |
CN105653332B (zh) | 一种可修正otp烧录问题的mcu系统及烧录方法 | |
US20160342508A1 (en) | Identifying memory regions that contain remapped memory locations | |
CN102915207A (zh) | 固态储存装置及其数据储存方法 | |
WO2019205444A1 (zh) | 一种提升储存装置可用容量的坏块管理方法 | |
US11437070B1 (en) | Repositioning using cut and paste segments | |
CN113835629A (zh) | 一种硬盘管理方法及服务器 | |
US20140244900A1 (en) | Non-volatile memory based system ram | |
TWI502350B (zh) | 快閃記憶體的存取裝置及方法 | |
WO2015047332A1 (en) | Memory sparing on memory modules | |
CN109215724A (zh) | 存储器自动检测和修复的方法及装置 | |
US9262264B2 (en) | Error correction code seeding | |
CN103729260B (zh) | 数据管理/检查方法及相关内容寻址存储器系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |