CN109508247B - 定位内存错误发生位置的方法、系统、及电子设备 - Google Patents

定位内存错误发生位置的方法、系统、及电子设备 Download PDF

Info

Publication number
CN109508247B
CN109508247B CN201811331706.0A CN201811331706A CN109508247B CN 109508247 B CN109508247 B CN 109508247B CN 201811331706 A CN201811331706 A CN 201811331706A CN 109508247 B CN109508247 B CN 109508247B
Authority
CN
China
Prior art keywords
memory
address
error
channel
calculating
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
Application number
CN201811331706.0A
Other languages
English (en)
Other versions
CN109508247A (zh
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.)
Inventec Pudong Technology Corp
Inventec Corp
Original Assignee
Inventec Pudong Technology Corp
Inventec Corp
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 Inventec Pudong Technology Corp, Inventec Corp filed Critical Inventec Pudong Technology Corp
Priority to CN201811331706.0A priority Critical patent/CN109508247B/zh
Priority to US16/220,108 priority patent/US10789116B2/en
Publication of CN109508247A publication Critical patent/CN109508247A/zh
Application granted granted Critical
Publication of CN109508247B publication Critical patent/CN109508247B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0775Content or structure details of the error report, e.g. specific table structure, specific error fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3031Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a motherboard or an expansion card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明提供定位内存错误发生位置的方法,能精准地定位出内存错误发生的内存插条位置,包括:获取记录有内存错误的内存校正错误日志文件,并从中提取内存错误对应的内存地址、MISC寄存器的值及错误类型;若通道上所接内存插条的数量大于1,则根据内存地址、MISC寄存器的值及错误类型计算得到内存错误对应的内存的系统地址;根据内存的系统地址计算得到内存错误对应的CPU位置和位于本地代理中的内存控制器位置;根据内存错误对应的内存的系统地址、内存错误对应的CPU位置和位于本地代理中的内存控制器位置计算得到内存错误对应的通道位置和通道地址;根据内存错误对应的通道位置和通道地址,计算得到内存错误对应的内存插条位置。

Description

定位内存错误发生位置的方法、系统、及电子设备
技术领域
本发明涉及内存技术领域,特别是涉及定位内存错误发生位置的方法、系统、及电子设备。
背景技术
目前,若想定位memory correctable error(CE)发生的具体位置,就需要根据基本输入输出系统(Basic Input Output System,简称BIOS)记录到BMC sel log的原始数据来定位。但是,memory correctable error需要达到设定的阈值(默认500),BIOS才会发log到BMC sel log中。如此,在只发生一笔memory correctable error的时候,就无法定位到其发生的具体内存插条位置。另外,对于另一种内存错误memory Patrol Scrub UCEDowngrades to CE error,BIOS是不会记录到BMC SEL log中的,也就无法定位具体的内存插条位置。在客户线上,内存错误是会经常发生的,如果BMC sel log中又没有内存错误的记录,则很难定位到发生错误的具体内存插条位置。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供定位内存错误发生位置的方法、系统、及电子设备,用于解决现有技术中的内存错误的发生位置难以定位的问题。
为实现上述目的及其他相关目的,本发明提供一种定位内存错误发生位置的方法,包括:S1:获取记录有内存错误的内存校正错误日志文件,并从中提取所述内存错误对应的内存地址、MISC寄存器的值及错误类型;S2:判断通道上所接内存插条的数量,若所述内存插条数量为1,则执行步骤S3;若所述内存插条数量大于1,则执行步骤S4;S3:根据所述内存校正错误日志文件,计算得到所述内存错误对应的CPU位置、分块和内存控制器位置,定位内存错误发生的位置,结束任务;S4:根据所述内存地址、所述MISC寄存器的值及所述错误类型,计算得到所述内存错误对应的内存的系统地址;S5:根据所述内存的系统地址,计算得到所述内存错误对应的CPU位置和位于本地代理中的内存控制器位置;S6:根据所述内存错误对应的内存的系统地址、所述内存错误对应的CPU位置和位于本地代理中的所述内存控制器位置,计算得到所述内存错误对应的通道位置和通道地址;S7:根据所述内存错误对应的通道位置和通道地址,计算得到所述内存错误对应的内存插条位置。
于本发明一实施例中,根据所述内存的系统地址计算所述CPU位置和位于本地代理中的内存控制器位置,包括:S51:运行内存错误定位脚本,按顺序找到第一个接内存插条的节点;S52:从缓存代理中的资源地址解码器中动态随机存取存储器规则寄存器找到匹配的限定地址,并判断限定地址是否大于第一临时文件的地址,若是,则执行步骤S53;若否,则执行步骤S55;S53:利用资源地址解码器对所述内存错误对应的内存系统地址进行解码,包括:确定当前系统架构所支持的交错模式的类型,根据所述交错模式类型定义系统地址,并计算出交错列表索引,根据所述交错列表索引从对应的缓存代理交错列表寄存器中读取本地代理节点位置;S54:根据所述本地代理节点位置,计算得到所述CPU位置和位于本地代理中的所述内存控制器位置,执行步骤S6;S55:结束任务。
于本发明一实施例中,根据所述内存错误对应的内存系统地址、所述内存错误对应的CPU位置和位于本地代理中的所述内存控制器位置,计算得到所述内存错误对应的通道位置和通道地址,包括:S61:根据所述CPU位置和位于本地代理中的所述内存控制器位置读取对应CPU的目标地址解码器路径寄存器的值,并判断所述目标地址解码器路径中限定地址是否大于第二临时文件的地址,若是,则执行步骤S62;若否,则执行步骤S67;S62:读取对应本地代理的本地系统附加寄存器字节,根据所述本地系统附加寄存器字节计算得到移动值;S63:读取所述目标地址解码器路径寄存器中通道路径值和CPU交错路径值,根据所述通道路径值,计算得到通道交错值;S64:根据所述通道交错值确定所述内存错误对应的通道位置;S65:读取目标地址解码器通道偏移寄存器中的偏移值,并根据所述CPU交错路径值计算CPU路径值;S66:根据所述内存系统地址、CPU路径值、通道路径值和所述偏移值计算得到通道地址,执行步骤S7;S67:结束任务。
于本发明一实施例中,根据所述内存错误对应的通道位置和通道地址,计算得到所述内存错误对应的内存插条位置,包括:S71:读取内存组交错范围路径限定寄存器的值,并判断所述内存组交错范围路径限定寄存器中的限定地址是否大于第三临时文件的地址,若是,则执行步骤S72;若否,则执行步骤S73;S72:读取内存组交错范围偏移寄存器中目标内存组交错位置值,根据所述目标内存组交错位置值计算得到所述内存错误对应的内存插条位置;S73:结束任务。
为实现上述目的及其他相关目的,本发明提供一种定位内存错误发生位置的系统,包括:输入模块,用于获取记录有内存错误的内存校正错误日志文件;处理模块,用于从所述内存校正错误日志文件中提取所述内存错误对应的内存地址、MISC寄存器的值及错误类型;判断通道上所接内存插条的数量,若所述内存插条数量为1,则根据所述内存校正错误日志文件,计算得到所述内存错误对应的CPU位置、分块和内存控制器位置,定位内存错误发生的位置,结束任务;若所述内存插条数量大于1,则根据所述内存地址、所述MISC寄存器的值及所述错误类型,计算得到所述内存错误对应的内存的系统地址;根据所述内存的系统地址,计算得到所述内存错误对应的CPU位置和位于本地代理中的内存控制器位置;根据所述内存错误对应的内存的系统地址、所述内存错误对应的CPU位置和位于本地代理中的所述内存控制器位置,计算得到所述内存错误对应的通道位置和通道地址;根据所述内存错误对应的通道位置和通道地址,计算得到所述内存错误对应的内存插条位置。
于本发明一实施例中,所述处理模块根据所述内存的系统地址计算所述CPU位置和位于本地代理中的内存控制器位置的实现方式包括:运行内存错误定位脚本,按顺序找到第一个接内存插条的节点;从缓存代理中的资源地址解码器中动态随机存取存储器规则寄存器找到匹配的限定地址,并判断限定地址是否大于第一临时文件的地址;若否,则结束任务;若是,则利用资源地址解码器对所述内存错误对应的内存系统地址进行解码,包括:确定当前系统架构所支持的交错模式的类型,根据所述交错模式类型定义系统地址,并计算出交错列表索引,根据所述交错列表索引从对应的缓存代理交错列表寄存器中读取本地代理节点位置;根据所述本地代理节点位置,计算得到所述CPU位置和位于本地代理中的所述内存控制器位置。
于本发明一实施例中,所述处理模块根据所述内存错误对应的内存系统地址、所述内存错误对应的CPU位置和位于本地代理中的所述内存控制器位置,计算得到所述内存错误对应的通道位置和通道地址的实现方式包括:根据所述CPU位置和位于本地代理中的所述内存控制器位置读取对应CPU的目标地址解码器路径寄存器的值,并判断所述目标地址解码器路径中限定地址是否大于第二临时文件的地址;若否,则结束任务;若是,则读取对应本地代理的本地系统附加寄存器字节,根据所述本地系统附加寄存器字节计算得到移动值;读取所述目标地址解码器路径寄存器中通道路径值和CPU交错路径值,根据所述通道路径值,计算得到通道交错值;根据所述通道交错值确定所述内存错误对应的通道位置;读取目标地址解码器通道偏移寄存器中的偏移值,并根据所述CPU交错路径值计算CPU路径值;根据所述内存系统地址、CPU路径值、通道路径值和所述偏移值计算得到通道地址。
于本发明一实施例中,所述处理模块根据所述内存错误对应的通道位置和通道地址,计算得到所述内存错误对应的内存插条位置的实现方式包括:读取内存组交错范围路径限定寄存器的值,并判断所述内存组交错范围路径限定寄存器中的限定地址是否大于第三临时文件的地址;若否,则结束任务;若是,则读取内存组交错范围偏移寄存器中目标内存组交错位置值,根据所述目标内存组交错位置值计算得到所述内存错误对应的内存插条位置。
为实现上述目的及其他相关目的,本发明提供一种存储介质,其中存储有计算机程序,所述计算机程序被处理器加载执行时,实现如上任一所述的定位内存错误发生位置的方法。
为实现上述目的及其他相关目的,本发明提供一种电子设备,包括:处理器及存储器;其中,所述存储器用于存储计算机程序;所述处理器用于加载执行所述计算机程序,以使所述电子设备执行如上任一所述的定位内存错误发生位置的方法。
如上所述,本发明的定位内存错误发生位置的方法、系统、及电子设备,能快速、精准地定位出内存错误发生的内存插条位置,节约产线测试时间、客户线上的维护时间,进而节约内存维修成本。
附图说明
图1显示为本发明一实施例中的定位内存错误发生位置的运行环境示意图。
图2显示为本发明一实施例中的定位内存错误发生位置的方法流程示意图。
图3显示为本发明一实施例中的计算CPU位置和位于本地代理中的内存控制器位置的方法流程示意图。
图4显示为本发明一实施例中的计算通道位置和通道地址的方法流程示意图。
图5显示为本发明一实施例中的计算内存错误对应的内存插条位置的方法流程示意图。
图6显示为本发明一实施例中的定位内存错误发生位置的系统模块示意图。
图7显示为本发明一实施例中的电子设备的结构示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
本实施例提供一种定位内存错误发生位置的方法,以解决现有技术中内存错误的发生位置难以定位的问题。如图1所示,本实施例中,每颗CPU有2个内存控制器,分别为内存控制器0和内存控制器1,每个内存控制器下面分别有两个channel(即通道),分别为channel0、channel 1、channel 2和channel 3,每个channel上又分别接有内存插条0,内存插条1和内存插条2。
如图2所示,实施例的定位内存错误发生位置的方法包括以下步骤:
S1:获取记录有内存错误的内存校正错误日志文件,并从中提取所述内存错误对应的内存地址、MISC寄存器的值及错误类型。
目前而言,内存校正错误日志文件(Machine Check Exception Log,简称mcelog)会记录内存错误的有关信息,里面包含了内存地址memory address及MISC寄存器值。从mce log表面信息中,最多只能定位到内存通道的位置。一般的通道可以插2个内存插条,如果1个通道的一个内存插条报错,就无法确定具体是哪个内存插条出错。
从mce log中可以得到内存错误所对应的MISC寄存器值、内存地址、错误类型。本实施例利用mce log中的内存地址和MISC寄存器值,通过步骤S2~S7的计算就可以定位出出错内存的具体位置。如此,便可以有效节约产线测试时间,在客户线上维护的时间也会大大缩短,进而大幅度节省维修成本。
S2:判断通道上所接内存插条的数量,若所述内存插条数量为1,则执行步骤S3;若所述内存插条数量大于1,则执行步骤S4。
S3:根据所述内存校正错误日志文件,计算得到所述内存错误对应的CPU位置、分块和内存控制器位置,定位内存错误发生的位置,结束任务。
S4:根据所述内存地址、所述MISC寄存器的值及所述错误类型,计算得到所述内存错误对应的内存的系统地址。
举例而言,corrected error(CE)型内存错误和uncorrectable error(UCE)型内存错误的计算公式为:
CE:SysAddress=ADDR&0x3fffffffffc0
UCE:SysAddress=(ADDR&0x3fffffffffff)&(~((1<<(MISC&0x3f))-1))
其中,ADDR是内存地址,MISC是MISC寄存器的值,SysAddress为内存的系统地址。
S5:根据所述内存的系统地址,计算得到所述内存错误对应的CPU位置和位于本地代理中的内存控制器位置。具体而言,如图3所示,步骤S5又包括以下步骤:
S51:运行内存错误定位脚本,按顺序找到第一个接内存插条的节点;
S52:从缓存代理中的资源地址解码器中动态随机存取存储器规则寄存器找到匹配的限定地址,并判断限定地址是否大于第一临时文件的地址,若是,则执行步骤S53;若否,则执行步骤S55;
具体而言,资源地址解码器(Source Address Decoder,简称SAD)有四种:DRAMdecoders(动态随机存取存储器解码器)、MMIO(Memory-mapped I/O,即内存映射I/O)decoder、Interleave(内存交错)decoder、Legacy decoder(传统解码器)。缓存代理中的资源地址解码器中的动态随机存取存储器规则寄存器支持DRAM decoders and MMIOdecoders。本实施例采用的是DRAM decoders。总共有20个DRAM decodeers,支持不同组合的DRAM配置,不同的交错模式对应不同的缓存代理寄存器的交错列表索引。
在按序找到第一个接内存插条节点Node之后,从缓存代理中的资源地址解码器中动态随机存取存储器规则寄存器找到匹配的限定地址是否大于第一临时文件tempAddress的地址,第一临时文件的地址定义为上述SysAddress(即内存的系统地址)的一段字节,如SysAddress[bit a1:bit b1]如果大于tempAddress,说明此处的位置与内存地址匹配,执行下一步骤;反之,则退出程序。
S53:利用资源地址解码器对所述内存错误对应的内存系统地址进行解码,包括:确定当前系统架构所支持的交错模式的类型,根据所述交错模式类型定义系统地址,并计算出交错列表索引,根据所述交错列表索引从对应的缓存代理交错列表寄存器中读取其对应的本地代理0或是本地代理1的节点位置;具体计算公式例如:
mode1:interleaveListIndex=(SysAddress>>6)&0
mode2:interleaveListIndex=(((SysAddress>>7)&3)<<1)|((SysAddress>>9)&1)
Interleave_Mode=0:interleaveListIndex^=((SysAddress>>16)&7)
S54:根据上述已定位到的本地代理节点位置,即本地代理0或本地代理1,计算得到所述CPU位置和位于本地代理中的所述内存控制器位置,执行步骤S6;
承接上述,S54的具体计算公式为:
SocketId=(haNodeId&3)
MemoryControllerId=(haNodeId&BIT2)>>2
其中,SocketId为CPU位置,Memory ControllerId为内存控制器位置;haNodeId为本地代理节点位置。本实施例中,若定位到的是本地代理0,则可定位到内存控制器0;若定位到的是本地代理1,则可定位到内存控制器1。
S55:结束任务。
S6:根据所述内存错误对应的内存的系统地址、所述内存错误对应的CPU位置和位于本地代理中的所述内存控制器位置,计算得到所述内存错误对应的通道位置和通道地址。具体而言,如图4所示,步骤S6又包括以下步骤:
S61:根据所述CPU位置和上述已获得的内存控制器位置,到相应的内存控制器0或内存控制器1中去读取对应CPU的目标地址解码器路径寄存器的值,并判断所述目标地址解码器路径中限定地址是否大于第二临时文件tempAddress的地址,第二临时文件的地址定义为上述SysAddress的一段字节,如SysAddress[bit a2:bit b2]的地址,若是,则说明此处的位置与内存地址匹配,执行下一步骤,即执行步骤S62;若否,反之,则退出程序。
S62:读取对应本地代理的本地系统附加寄存器字节,根据所述本地系统附加寄存器字节计算得到移动值;
S63:读取所述目标地址解码器路径寄存器中通道路径值,定义为tad_ch_way;CPU交错路径值,定义为tad_skt_way,根据所述通道路径值,计算得到通道交错值chInterleave;
最终通道交错值chInterleave=chInterleave%(tad_ch_way+1)。
S64:根据所述通道交错值确定所述内存错误对应的通道位置,即如果定位到的是本地代理0中的内存控制器0,则对应channel 0或channel 1,如果定位到的是本地代理1中的内存控制器1,则对应channel 2或channel 3。
S65:读取目标地址解码器通道偏移寄存器中的偏移值,定义为tad_offset,并根据所述CPU交错路径值计算CPU路径值;
socket_wayness=1<<tad_skt_way
其中,socket_wayness即为CPU路径值。
S66:根据所述内存系统地址、CPU路径值、通道路径值和所述偏移值计算得到通道地址,执行步骤S7;
具体而言,按照系统地址转化到通道地址的定义,计算公式如下:
通道地址Ch_address=[(sysddress)/(socket_wayness*tad_ch_way)]–tad_offset。
S67:结束任务。
需要说明的是,目标地址解码器(Target Address Decoder,简称TAD)根据SAD解析结果,计算出通道交错值。每个TAD都有一个base address、address limit、addresssize。address limit储存在TAD寄存器(即目标地址解码器路径寄存器);base address总是定义为address 0,address limit定义为:limit[n]=base[n]+size[n]。
·0<=physical address[45:26]<=TAD[0].Limt,when N=0
·TAD[N-1].limit+1<=physical address[45:26]<=TAD[N].Limt;when N=1to 11
tad_skt_way是相应CPU的内存被用到的交错值,而tad_ch_way是相应通道的内存被用到的交错值。
S7:根据所述内存错误对应的通道位置和通道地址,计算得到所述内存错误对应的内存插条位置。具体而言,如图5所示,步骤S7又包括以下步骤:
S71:读取内存组交错范围路径限定寄存器的值,并判断所述内存组交错范围路径限定寄存器中的限定地址是否大于第三临时文件tempAddress的地址,第三临时文件的地址定义为上述Ch_address的一段字节,如Ch_address[bit c1:bit d1],若是,则执行下一步,步骤S72;若否,则退出程序。
S72:读取内存组交错范围偏移寄存器中目标内存组交错位置值,定义为rir_rnk_tgtN,根据所述目标内存组交错位置值计算得到所述内存错误对应的内存插条位置DimmSlot,公式为:
Dimm Slot=rir_rnk_tgtN/4
本实施例中,Dimm Slot可定位到图1中的对应的通道channel上的内存插条,如内存插条0、内存插条1、内存插条2。
S73:结束任务。
需要说明的是,实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。基于这样的理解,本发明还提供一种计算机程序产品,包括一个或多个计算机指令。所述计算机指令可以存储在计算机可读存储介质中。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如:软盘、硬盘、磁带)、光介质(如:DVD)、或者半导体介质(如:固态硬盘Solid State Disk(SSD))等。
参阅图6,本实施例提供一种定位内存错误发生位置的系统600,作为一款软件搭载于电子设备中,以在运行时执行前述方法实施例所述的定位内存错误发生位置的方法。由于本系统实施例的技术原理与前述方法实施例的技术原理相似,因而不再对同样的技术细节做重复性赘述。
本实施例的定位内存错误发生位置的系统600具体包括输入模块601、处理模块602。输入模块601用于执行前述方法实施例介绍的步骤S1,处理模块602用于执行前述方法实施例介绍的步骤S2~S7。
本领域技术人员应当理解,图6实施例中的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个或多个物理实体上。且这些模块可以全部以软件通过处理元件调用的形式实现,也可以全部以硬件的形式实现,还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,处理模块602可以为单独设立的处理元件,也可以集成在某一个芯片中实现,此外,也可以以程序代码的形式存储于存储器中,由某一个处理元件调用并执行处理模块602的功能。其它模块的实现与之类似。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
参阅图7,本实施例提供一种电子设备,电子设备可以是台式机、便携式电脑、智能手机等设备。详细的,电子设备至少包括通过总线74连接的:通信接口71、处理器72、存储器73,其中,通信接口71用于接收数据,存储器73用于存储计算机程序,处理器72用于执行存储器73存储的计算机程序,以执行前述方法实施例中的全部或部分步骤。
上述提到的系统总线可以是外设部件互连标准(Peripheral PomponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(Non-volatile Memory),例如至少一个磁盘存储器。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
综上所述,本发明的定位内存错误发生位置的方法、系统、及电子设备,有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (10)

1.一种定位内存错误发生位置的方法,其特征在于,包括:
S1:获取记录有内存错误的内存校正错误日志文件mce log,并从中提取所述内存错误对应的内存地址、MISC寄存器的值及错误类型;
S2:判断通道上所接内存插条的数量,若所述内存插条数量为1,则执行步骤S3;若所述内存插条数量大于1,则执行步骤S4;
S3:根据所述内存校正错误日志文件mce log,计算得到所述内存错误对应的CPU位置、分块和内存控制器位置,定位内存错误发生的位置,结束任务;
S4:根据所述内存地址、所述MISC寄存器的值及所述错误类型,计算得到所述内存错误对应的内存的系统地址;
S5:根据所述内存的系统地址,计算得到所述内存错误对应的CPU位置和位于本地代理中的内存控制器位置;
S6:根据所述内存错误对应的内存的系统地址、所述内存错误对应的CPU位置和位于本地代理中的所述内存控制器位置,计算得到所述内存错误对应的通道位置和通道地址;
S7:根据所述内存错误对应的通道位置和通道地址,计算得到所述内存错误对应的内存插条位置。
2.根据权利要求1所述定位内存错误发生位置的方法,其特征在于,根据所述内存的系统地址计算所述CPU位置和位于本地代理中的内存控制器位置,包括:
S51:运行内存错误定位脚本,按顺序找到第一个接内存插条的节点;
S52:从缓存代理中的资源地址解码器中动态随机存取存储器规则寄存器找到匹配的限定地址,并判断限定地址是否大于第一临时文件的地址,若是,则执行步骤S53;若否,则执行步骤S55;其中,所述第一临时文件的地址为所述内存的系统地址的一段字节;
S53:利用资源地址解码器对所述内存错误对应的内存系统地址进行解码,包括:确定当前系统架构所支持的交错模式的类型,根据所述交错模式类型定义系统地址,并计算出交错列表索引,根据所述交错列表索引从对应的缓存代理交错列表寄存器中读取本地代理节点位置;
S54:根据所述本地代理节点位置,计算得到所述CPU位置和位于本地代理中的所述内存控制器位置,执行步骤S6;
S55:结束任务。
3.根据权利要求2所述定位内存错误发生位置的方法,其特征在于,根据所述内存错误对应的内存系统地址、所述内存错误对应的CPU位置和位于本地代理中的所述内存控制器位置,计算得到所述内存错误对应的通道位置和通道地址,包括:
S61:根据所述CPU位置和位于本地代理中的所述内存控制器位置读取对应CPU的目标地址解码器路径寄存器的值,并判断所述目标地址解码器路径中限定地址是否大于第二临时文件的地址,若是,则执行步骤S62;若否,则执行步骤S67;其中,所述第二临时文件的地址为所述内存的系统地址的一段字节;
S62:读取对应本地代理的本地系统附加寄存器字节,根据所述本地系统附加寄存器字节计算得到移动值;
S63:读取所述目标地址解码器路径寄存器中通道路径值和CPU交错路径值,根据所述通道路径值,计算得到通道交错值;
S64:根据所述通道交错值确定所述内存错误对应的通道位置;
S65:读取目标地址解码器通道偏移寄存器中的偏移值,并根据所述CPU交错路径值计算CPU路径值;
S66:根据所述内存系统地址、CPU路径值、通道路径值和所述偏移值计算得到通道地址,执行步骤S7;
S67:结束任务。
4.根据权利要求3所述定位内存错误发生位置的方法,其特征在于,根据所述内存错误对应的通道位置和通道地址,计算得到所述内存错误对应的内存插条位置,包括:
S71:读取内存组交错范围路径限定寄存器的值,并判断所述内存组交错范围路径限定寄存器中的限定地址是否大于第三临时文件的地址,若是,则执行步骤S72;若否,则执行步骤S73;其中,所述第三临时文件的地址为所述内存的系统地址的一段字节;
S72:读取内存组交错范围偏移寄存器中目标内存组交错位置值,根据所述目标内存组交错位置值计算得到所述内存错误对应的内存插条位置;
S73:结束任务。
5.一种定位内存错误发生位置的系统,其特征在于,包括:
输入模块,用于获取记录有内存错误的内存校正错误日志文件mce log;
处理模块,用于从所述内存校正错误日志文件mce log中提取所述内存错误对应的内存地址、MISC寄存器的值及错误类型;判断通道上所接内存插条的数量,若所述内存插条数量为1,则根据所述内存校正错误日志文件mce log,计算得到所述内存错误对应的CPU位置、分块和内存控制器位置,定位内存错误发生的位置,结束任务;若所述内存插条数量大于1,则根据所述内存地址、所述MISC寄存器的值及所述错误类型,计算得到所述内存错误对应的内存的系统地址;根据所述内存的系统地址,计算得到所述内存错误对应的CPU位置和位于本地代理中的内存控制器位置;根据所述内存错误对应的内存的系统地址、所述内存错误对应的CPU位置和位于本地代理中的所述内存控制器位置,计算得到所述内存错误对应的通道位置和通道地址;根据所述内存错误对应的通道位置和通道地址,计算得到所述内存错误对应的内存插条位置。
6.根据权利要求5所述定位内存错误发生位置的系统,其特征在于,所述处理模块根据所述内存的系统地址计算所述CPU位置和位于本地代理中的内存控制器位置的实现方式包括:
运行内存错误定位脚本,按顺序找到第一个接内存插条的节点;
从缓存代理中的资源地址解码器中动态随机存取存储器规则寄存器找到匹配的限定地址,并判断限定地址是否大于第一临时文件的地址;其中,所述第一临时文件的地址为所述内存的系统地址的一段字节;
若否,则结束任务;
若是,则利用资源地址解码器对所述内存错误对应的内存系统地址进行解码,包括:确定当前系统架构所支持的交错模式的类型,根据所述交错模式类型定义系统地址,并计算出交错列表索引,根据所述交错列表索引从对应的缓存代理交错列表寄存器中读取本地代理节点位置;根据所述本地代理节点位置,计算得到所述CPU位置和位于本地代理中的所述内存控制器位置。
7.根据权利要求6所述定位内存错误发生位置的系统,其特征在于,所述处理模块根据所述内存错误对应的内存系统地址、所述内存错误对应的CPU位置和位于本地代理中的所述内存控制器位置,计算得到所述内存错误对应的通道位置和通道地址的实现方式包括:
根据所述CPU位置和位于本地代理中的所述内存控制器位置读取对应CPU的目标地址解码器路径寄存器的值,并判断所述目标地址解码器路径中限定地址是否大于第二临时文件的地址;其中,所述第二临时文件的地址为所述内存的系统地址的一段字节;
若否,则结束任务;
若是,则读取对应本地代理的本地系统附加寄存器字节,根据所述本地系统附加寄存器字节计算得到移动值;读取所述目标地址解码器路径寄存器中通道路径值和CPU交错路径值,根据所述通道路径值,计算得到通道交错值;根据所述通道交错值确定所述内存错误对应的通道位置;读取目标地址解码器通道偏移寄存器中的偏移值,并根据所述CPU交错路径值计算CPU路径值;根据所述内存系统地址、CPU路径值、通道路径值和所述偏移值计算得到通道地址。
8.根据权利要求7所述定位内存错误发生位置的系统,其特征在于,所述处理模块根据所述内存错误对应的通道位置和通道地址,计算得到所述内存错误对应的内存插条位置的实现方式包括:
读取内存组交错范围路径限定寄存器的值,并判断所述内存组交错范围路径限定寄存器中的限定地址是否大于第三临时文件的地址;其中,所述第三临时文件的地址为所述内存的系统地址的一段字节;
若否,则结束任务;
若是,则读取内存组交错范围偏移寄存器中目标内存组交错位置值,根据所述目标内存组交错位置值计算得到所述内存错误对应的内存插条位置。
9.一种存储介质,其中存储有计算机程序,其特征在于,所述计算机程序被处理器加载执行时,实现如权利要求1至4中任一所述的定位内存错误发生位置的方法。
10.一种电子设备,其特征在于,包括:处理器及存储器;其中,
所述存储器用于存储计算机程序;
所述处理器用于加载执行所述计算机程序,以使所述电子设备执行如权利要求1至4中任一所述的定位内存错误发生位置的方法。
CN201811331706.0A 2018-11-09 2018-11-09 定位内存错误发生位置的方法、系统、及电子设备 Active CN109508247B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811331706.0A CN109508247B (zh) 2018-11-09 2018-11-09 定位内存错误发生位置的方法、系统、及电子设备
US16/220,108 US10789116B2 (en) 2018-11-09 2018-12-14 Method for determining location where memory error occurs

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811331706.0A CN109508247B (zh) 2018-11-09 2018-11-09 定位内存错误发生位置的方法、系统、及电子设备

Publications (2)

Publication Number Publication Date
CN109508247A CN109508247A (zh) 2019-03-22
CN109508247B true CN109508247B (zh) 2022-02-11

Family

ID=65748015

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811331706.0A Active CN109508247B (zh) 2018-11-09 2018-11-09 定位内存错误发生位置的方法、系统、及电子设备

Country Status (2)

Country Link
US (1) US10789116B2 (zh)
CN (1) CN109508247B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112579337A (zh) * 2021-01-05 2021-03-30 株洲中车时代电气股份有限公司 一种表决错误信息的定位方法、系统及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832005A (en) * 1997-12-11 1998-11-03 International Business Machines Corporation Fault-tolerant method and means for managing access to an initial program load stored in read-only memory or the like
TW407283B (en) * 1998-05-18 2000-10-01 Winbond Electronics Corp Embedded memory device and its burn-in method
TWI335598B (en) * 2006-04-25 2011-01-01 Mitac Int Corp Memory detection method
CN102841832A (zh) * 2011-06-24 2012-12-26 鸿富锦精密工业(深圳)有限公司 出错内存条定位系统及方法
CN103197999A (zh) * 2013-03-22 2013-07-10 北京百度网讯科技有限公司 一种内存故障自动定位方法及装置
TW201631600A (zh) * 2014-12-20 2016-09-01 英特爾公司 交易型具緩衝區記憶體中之錯誤處置技術
CN106126368A (zh) * 2016-08-22 2016-11-16 浪潮电子信息产业股份有限公司 一种linux下内存故障地址解析的方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2297742B1 (en) * 2008-05-16 2013-07-24 Fusion-io, Inc. Apparatus, system, and method for detecting and replacing failed data storage
US8281227B2 (en) * 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US9170878B2 (en) * 2011-04-11 2015-10-27 Inphi Corporation Memory buffer with data scrambling and error correction
US10430263B2 (en) * 2016-02-01 2019-10-01 Electro Industries/Gauge Tech Devices, systems and methods for validating and upgrading firmware in intelligent electronic devices
US10089166B2 (en) * 2016-03-08 2018-10-02 International Business Machines Corporation Configuring and utilizing call-home systems
US10025649B2 (en) * 2016-08-25 2018-07-17 Microsoft Technology Licensing, Llc Data error detection in computing systems
US10162761B2 (en) * 2017-03-21 2018-12-25 Intel Corporation Apparatus and method for system physical address to memory module address translation

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832005A (en) * 1997-12-11 1998-11-03 International Business Machines Corporation Fault-tolerant method and means for managing access to an initial program load stored in read-only memory or the like
TW407283B (en) * 1998-05-18 2000-10-01 Winbond Electronics Corp Embedded memory device and its burn-in method
TWI335598B (en) * 2006-04-25 2011-01-01 Mitac Int Corp Memory detection method
CN102841832A (zh) * 2011-06-24 2012-12-26 鸿富锦精密工业(深圳)有限公司 出错内存条定位系统及方法
CN103197999A (zh) * 2013-03-22 2013-07-10 北京百度网讯科技有限公司 一种内存故障自动定位方法及装置
TW201631600A (zh) * 2014-12-20 2016-09-01 英特爾公司 交易型具緩衝區記憶體中之錯誤處置技術
CN106126368A (zh) * 2016-08-22 2016-11-16 浪潮电子信息产业股份有限公司 一种linux下内存故障地址解析的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Physical Address Decoding in Intel Xeon v3/v4 CPUs:A Supplemental Datasheet;M. Hillenbrand;《Karlsruhe Institute of Technology, Tech》;20170905;第1-21页 *

Also Published As

Publication number Publication date
US20200151046A1 (en) 2020-05-14
US10789116B2 (en) 2020-09-29
CN109508247A (zh) 2019-03-22

Similar Documents

Publication Publication Date Title
US10614905B2 (en) System for testing memory and method thereof
US8769504B2 (en) Method and apparatus for dynamically instrumenting a program
US9009447B2 (en) Acceleration of string comparisons using vector instructions
US7590899B2 (en) Processor memory array having memory macros for relocatable store protect keys
US8527737B2 (en) Using addresses to detect overlapping memory regions
KR20080112252A (ko) 에러 보정 디바이스 및 그 방법
KR101456976B1 (ko) 메모리 테스트 디바이스 및 메모리 테스트 방법
CN112181430B (zh) 代码变更统计方法、装置、电子设备及存储介质
CN109508247B (zh) 定位内存错误发生位置的方法、系统、及电子设备
CN111078462B (zh) 数据校验方法及电路
CN110535476B (zh) Ldpc软译码器软信息存储优化方法、装置、计算机设备及存储介质
CN115509609A (zh) 数据处理装置和方法
CN110795464A (zh) 对象标记数据的字段校验方法、装置、终端及存储介质
CN111857600B (zh) 一种数据读写方法及装置
TWI689812B (zh) 定位記憶體錯誤發生位置的方法
US20060015768A1 (en) Method, system, and apparatus for tracking defective cache lines
US10733049B2 (en) Semiconductor device and error management method
CN115269199A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
CN113779926A (zh) 一种电路的检测方法、装置、电子设备及可读存储介质
CN112214535A (zh) 一种相似度计算方法、系统、电子设备及存储介质
CN114064366A (zh) 故障预测方法、装置、设备及存储介质
CN113744789B (zh) 一种在研发阶段测试ssd稳定性的方法、系统、设备和介质
CN110647449A (zh) 一种Linpack性能测试优化的方法及装置
CN117497034A (zh) 一种固态硬盘检查方法、装置及电子设备和存储介质
CN109446226B (zh) 一种数据集合确定的方法及设备

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
GR01 Patent grant
GR01 Patent grant