本发明涉及计算机技术领域,特别涉及一种内存检测方法及装置。
背景技术:
随着内存技术朝着大容量方向的发展,一个内存通常可以包括多个rank,每一个rank通常可以包括多个内存颗粒。
目前,利用业界通用的内存测试工具(比如,memtest86+以及RST Pro等)对待测内存进行测试时,仅需要将待测内存与处理器相连,则可在处理器上运行内存测试工具,以检测处理器的每一个数据位是否失效,进而将失效的数据位对应的每一个内存颗粒均确定为故障内存颗粒。
由于同一个数据位可对应待测内存中的多个内存颗粒,而任意一个内存颗粒出现故障时,均会导致其对应的数据位失效,因此,上述技术方案确定的多个故障内存颗粒中可能存在未发生故障的内存颗粒,不能准确检测出内存的故障内存颗粒。
技术实现要素:
本发明实施例提供了一种内存检测方法及装置,可更为准确的检测出内存的故障内存颗粒。
第一方面,本发明提供了一种内存检测方法,包括:
S0:确定待测内存中对应同一个失效数据位的待测内存颗粒的数量,以及确定每一个所述待测内存颗粒的位置参数;并根据所述待测内存颗粒的数量确定至少一个检测参数;
S1:根据每一个检测参数的大小,选择一个未被选择过的一个检测参数;
S2:根据选择的检测参数,修改所述待测内存的有效访问区域;
S3:根据修改后的所述有效访问区域,访问所述待测内存,并形成访问结果;
S4:判断所述访问结果是否为预设访问结果,如果是,则执行步骤S1;否则,执行步骤S5;
S5:根据选择的检测参数,以及每一个所述待测内存颗粒的位置参数,确定故障内存颗粒。
优选地,
所述根据每一个检测参数的大小,选择一个未被选择过的检测参数,包括:根据每一个检测参数的大小,按照由小到大的顺序,选择一个未被选择过的检测参数;
则,
所述判断所述访问结果是否为预设访问结果,包括:判断所述访问结果是否为访问成功;
所述根据选择的检测参数,以及每一个所述待测内存颗粒的位置参数,确定故障内存颗粒,包括:
按照由小到大的顺序,利用至少一个检测参数生成第一数据队列,以及,利用各个所述待测内存颗粒的位置参数生成第二数据队列;
确定选择的检测参数在所述第一数据队列中的第一顺序位a;
将所述第二数据队列中,位于第a个顺序位的位置参数确定为第一参考位置参数;
将所述第一参考位置参数对应的待测内存颗粒确定为故障内存颗粒。
优选地,
所述根据每一个检测参数的大小,选择一个未被选择过的检测参数,包括:根据每一个检测参数的大小,按照由大到小的顺序,选择一个未被选择过的检测参数;
则,所述判断所述访问结果是否为预设访问结果,包括:判断所述访问结果是否为访问失败;
所述根据选择的检测参数,以及每一个待测内存颗粒的位置参数,确定故障内存颗粒,包括:
按照由大到小的顺序,利用至少一个检测参数生成第三数据队列,以及,利用各个待测内存颗粒的位置参数生成第四数据队列;
确定选择的检测参数在所述第三数据队列中的第二顺序位b;
将所述第四顺序队列中,位于第b-1个顺序位的位置参数确定为第二参考位置参数;
将所述第二参考位置参数对应的待测内存颗粒确定为故障内存颗粒。
优选地,
所述确定待测内存中对应同一个失效数据位的待测内存颗粒的数量,以及确定每一个所述待测内存颗粒的位置参数,包括:
确定待测内存对应的一个失效数据位,以及确定待测内存中内存颗粒的数量以及颗粒位宽;
根据所述内存颗粒的数量、所述颗粒位宽及所述失效数据位,确定所述待测内存颗粒的数量,以及每一个所述待测内存颗粒分别对应的位置参数。
优选地,
所述根据选择的检测参数,修改所述待测内存的有效访问区域,包括:将所述待测内存的有效rank参数修改为选择的检测参数;
所述根据修改后的所述有效访问区域,访问所述待测内存,包括:根据修改后的有效rank参数,依次访问所述待测内存的前n+1个rank,其中,n为选择的检测参数。
第二方面,本发明实施例提供了一种内存检测装置,包括:
第一确定模块,用于确定待测内存中对应同一个失效数据位的待测内存颗粒的数量,以及确定每一个所述待测内存颗粒的位置参数;并根据所述待测内存颗粒的数量确定至少一个检测参数;
选择模块,用于根据每一个检测参数的大小,选择一个未被选择过的一个检测参数;
处理模块,用于根据选择的检测参数,修改所述待测内存的有效访问区域;
检测模块,用于根据修改后的所述有效访问区域,访问所述待测内存,并形成访问结果;
判断模块,用于判断所述访问结果是否为预设访问结果,如果是,则触发所述选择模块;否则,触发所述第二确定模块;
第二确定模块,用于根据选择的检测参数,以及每一个所述待测内存颗粒的位置参数,确定故障内存颗粒。
优选地,
所述选择模块,用于根据每一个检测参数的大小,按照由小到大的顺序,选择一个未被选择过的检测参数;
所述判断模块,用于判断所述访问结果是否为访问成功;
所述第二确定模块,包括:第一构建单元、第一确定单元、第二确定单元和第三确定单元;其中,
所述第一构建单元,用于按照由小到大的顺序,利用至少一个检测参数生成第一数据队列,以及,利用各个所述待测内存颗粒的位置参数生成第二数据队列;
所述第一确定单元,用于确定选择的检测参数在所述第一数据队列中的第一顺序位a;
所述第二确定单元,用于将所述第二数据队列中,位于第a个顺序位的位置参数确定为第一参考位置参数;
所述第三确定单元,用于将所述第一参考位置参数对应的待测内存颗粒确定为故障内存颗粒。
优选地,
所述选择模块,用于根据每一个检测参数的大小,按照由大到小的顺序,选择一个未被选择过的检测参数;
所述判断模块,用于判断所述访问结果是否为访问失败;
所述第二确定模块,包括:第二构建单元、第四确定单元、第五确定单元和第六确定单元;其中,
所述第二构建单元,用于按照由大到小的顺序,利用至少一个检测参数生成第三数据队列,以及,利用各个待测内存颗粒的位置参数生成第四数据队列;
所述第四确定单元,用于确定选择的检测参数在所述第三数据队列中的第二顺序位b;
所述第五确定单元,用于将所述第四顺序队列中,位于第b-1个顺序位的位置参数确定为第二参考位置参数;
所述第六确定单元,用于将所述第二参考位置参数对应的待测内存颗粒确定为故障内存颗粒。
优选地,
所述第一确定模块,包括:第七确定单元和第八确定单元;其中,
所述第七确定单元,用于确定待测内存对应的一个失效数据位,以及确定待测内存中内存颗粒的数量以及颗粒位宽;
所述第八确定单元,用于根据所述内存颗粒的数量、所述颗粒位宽及所述失效数据位,确定所述待测内存颗粒的数量,以及每一个所述待测内存颗粒分别对应的位置参数。
优选地,
所述处理模块,用于将所述待测内存的有效rank参数修改为选择的检测参数;
所述检测模块,用于根据修改后的有效rank参数,依次访问所述待测内存的前n+1个rank,其中,n为选择的检测参数。
本发明实施例提供了一种内存检测方法及装置,在该方法中,由于对应同一个失效数据位的待测内存颗粒的数量即为待测内存的rank数量,同时,需要根据设置待测内存的有效访问区域才能访问待测内存,且访问待测内存的多个rank时具备设定的顺序;因此,可根据确定的对应同一个失效数据位的待测内存颗粒的数量来确定至少一个检测参数(比如,待测内存颗粒的数量为2时,即待测内存的rank数量为2时,则可确定出检测参数为0和1;在待测内存颗粒的数量为4时,可确定出检测参数为0、1、2、3),然后根据确定的各个检测参数的大小,选择一个未被选择过的检测参数,并根据选择的检测参数修改待测内存的有效访问区域,即实现对待测内存的有效访问区域进行限定(比如,限定可访问的rank数量,或可访问的内存颗粒数量),进而根据修改后的有效访问区域访问待测内存,并形成访问结果;之后,即可根据形成的访问结果,确定是否执行根据选择的检测参数和每一个待测内存颗粒分别对应的位置参数确定故障内存,直到确定出故障内存颗粒为止。综上可见,本发明提供的技术方案中,通过对内存的有效访问区域进行限定,然后根据限定的有效访问区域访问内存,并根据访问结果及对应的检测参数、各个待测内存颗粒的位置参数确定内存的故障内存颗粒,可更为准确的检测出内存的故障内存颗粒。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种内存检测方法的流程图;
图2是本发明一实施例提供的另一种内存检测方法的流程图;
图3是本发明一实施例提供的又一种内存检测方法的流程图;
图4是本发明一实施例提供的一种内存检测装置的结构示意图;
图5是本发明一实施例提供的另一种内存检测装置的结构示意图;
图6是本发明一实施例提供的又一种内存检测装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种内存检测方法,包括:
S0:确定待测内存中对应同一个失效数据位的待测内存颗粒的数量,以及确定每一个所述待测内存颗粒的位置参数;并根据所述待测内存颗粒的数量确定至少一个检测参数;
S1:根据每一个检测参数的大小,选择一个未被选择过的一个检测参数;
S2:根据选择的检测参数,修改所述待测内存的有效访问区域;
S3:根据修改后的所述有效访问区域,访问所述待测内存,并形成访问结果;
S4:判断所述访问结果是否为预设访问结果,如果是,则执行步骤S1;否则,执行步骤S5;
S5:根据选择的检测参数,以及每一个所述待测内存颗粒的位置参数,确定故障内存颗粒。
本发明上述实施例中,由于对应同一个失效数据位的待测内存颗粒的数量即为待测内存的rank数量,同时,需要根据设置待测内存的有效访问区域才能访问待测内存,且访问待测内存的多个rank时具备设定的顺序;因此,可根据确定的对应同一个失效数据位的待测内存颗粒的数量来确定至少一个检测参数(比如,待测内存颗粒的数量为2时,即待测内存的rank数量为2时,则可确定出检测参数为0和1;在待测内存颗粒的数量为4时,可确定出检测参数为0、1、2、3),然后根据确定的各个检测参数的大小,选择一个未被选择过的检测参数,并根据选择的检测参数修改待测内存的有效访问区域,即实现对待测内存的有效访问区域进行限定(比如,限定可访问的rank数量,或可访问的内存颗粒数量),进而根据修改后的有效访问区域访问待测内存,并形成访问结果;之后,即可根据形成的访问结果,确定是否执行根据选择的检测参数和每一个待测内存颗粒分别对应的位置参数确定故障内存,直到确定出故障内存颗粒为止。综上可见,本发明提供的技术方案中,通过对内存的有效访问区域进行限定,然后根据限定的有效访问区域访问内存,并根据访问结果及对应的检测参数、各个待测内存颗粒的位置参数确定内存的故障内存颗粒,可更为准确的检测出内存的故障内存颗粒。
应当理解的是,访问待测内存,可以是想待测内存写入业务数据和读取待测内存内存储的业务数据。
由于访问待测内存的多个rank时具备设定的顺序,因此,根据检测参数的大小,从确定的各个检测参数中选择一个检测参数来作为修改待测内存的配置信息的依据时,具体可以包括如下两种选择方式:
选择方式1:根据每一个检测参数的大小,按照由小到大的顺序,选择一个未被选择过的检测参数。
则,所述判断所述访问结果是否为预设访问结果,包括:判断所述访问结果是否为访问成功;
所述根据选择的检测参数,以及每一个所述待测内存颗粒的位置参数,确定故障内存颗粒,包括:
按照由小到大的顺序,利用至少一个检测参数生成第一数据队列,以及,利用各个所述待测内存颗粒的位置参数生成第二数据队列;
确定选择的检测参数在所述第一数据队列中的第一顺序位a;
将所述第二数据队列中,位于第a个顺序位的位置参数确定为第一参考位置参数;
将所述第一参考位置参数对应的待测内存颗粒确定为故障内存颗粒。
举例来说,具体以确定出检测参数包括:0、1、2、3为例,按照由小到大的顺序选择确定的各个检测参数时,首先选择检测参数0,即可根据选择的检测参数对待测内存的有效访问区域进行修改,实现限定待测内存的有效访问区域为rank0;当然,也可直接限定待测内存的有效访问区域为其第一个rank对应的各个内存颗粒,比如,当待测内存的颗粒位宽为8it,则可修改待测内存的有效访问区域以限定待测内存的有效内存颗粒为其第1至第9个内存颗粒,其中,第九个内存颗粒为其前8个内存颗粒的错误内存校验位。相应的,在根据修改后的配置信息访问待测内存的rank0时,如果访问结果为访问成功,则说明rank0的各个内存颗粒中没有故障内存颗粒,再次执行按照由小到大的顺序选择检测参数1以继续进行检测;反之,如果访问结果为访问失败,则说明rank0中存在故障内存颗粒,这里以确定的各个待测内存颗粒对应的位置参数是:2、11、20和29为例,即各个待测内存颗粒在待测内存中的排列顺序位分别为:2、11、20和29;则可确定出位置参数为2的待测内存颗粒时故障内存颗粒。相应的,当选择的检测参数为1,且访问结果为访问失败时,则可确定位置参数11对应的待测内存颗粒为故障内存颗粒。
选择方式2:根据每一个检测参数的大小,按照由大到小的顺序,选择一个未被选择过的检测参数。
则,所述判断所述访问结果是否为预设访问结果,包括:判断所述访问结果是否为访问失败;
所述根据选择的检测参数,以及每一个待测内存颗粒的位置参数,确定故障内存颗粒,包括:
按照由大到小的顺序,利用至少一个检测参数生成第三数据队列,以及,利用各个待测内存颗粒的位置参数生成第四数据队列;
确定选择的检测参数在所述第三数据队列中的第二顺序位b;
将所述第四顺序队列中,位于第b-1个顺序位的位置参数确定为第二参考位置参数;
将所述第二参考位置参数对应的待测内存颗粒确定为故障内存颗粒。
举例来说,具体以确定出检测参数包括:0、1、2、3为例,按照由大到小的顺序选择确定的各个检测参数时,首先选择出检测参数3,则可根据检测参数3对待测内存的有效访问区域进行修改,实现限定待测内存的有效访问区域为rank0、rank1、rank2和rank3;当然,也可直接限定待测内存的有效访问区域为待测内存的前4个rank对应的各个内存颗粒。相应的,在根据修改后的配置信息访问待测内存的rank0、rank1、rank2和rank3时,如果访问结果为访问失败,则按照由大到小的顺序再次选择检测参数2修改有效访问区域,进而根据修改后的有效访问区域访问待测内存的rank0、rank1、rank2,此时,如果访问成功,则说明rank3中存在故障内存颗粒;这里以各个待测内存颗粒对应的位置参数是:2、11、20和29为例,即各个待测内存颗粒在待测内存中的排列顺序位分别为:2、11、20和29,则可确定出位置参数为29的待测内存颗粒是故障内存颗粒。相应的,当选择的检测参数为2时,对应的访问结果为访问失败,且选择检测参数为1时,对应的访问结果为访问成功,则可确定位置参数20对应的待测内存颗粒为故障内存颗粒。
本发明一个实施例中,所述确定待测内存中对应同一个失效数据位的待测内存颗粒的数量,以及确定每一个所述待测内存颗粒的位置参数,包括:
确定待测内存对应的一个失效数据位,以及确定待测内存中内存颗粒的数量以及颗粒位宽;
根据所述内存颗粒的数量、所述颗粒位宽及所述失效数据位,确定所述待测内存颗粒的数量,以及每一个所述待测内存颗粒分别对应的位置参数。
本发明上述实施例中,具体可通过从待测内存的SPD(serial presence detect,模组存在的串行检测)芯片中读取待测内存的配置信息,以根据读取的配置信息确定待测内存的内存颗粒数量和颗粒位宽,这里以颗粒数量是36,颗粒位宽是8为例;同时,以通过memtest86+或RST Pro内存测试工具确定的待测内存对应的一个失效数据位是43为例,则可确定出待测内存颗粒的数量为4,且每一个待测内存颗粒分别对应的位置参数是6、15、24、34。
具体地,本发明一个实施例,所述根据选择的检测参数,修改所述待测内存的有效访问区域,包括:将所述待测内存的有效rank参数修改为选择的检测参数;
所述根据修改后的所述有效访问区域,访问所述待测内存,包括:根据修改后的有效rank参数,依次访问所述待测内存的前n+1个rank,其中,n为选择的检测参数。
举例来说,内存的配置信息通常存储在其对应的SPD芯片中,配置信息包括颗粒位宽、有效rank参数内存颗粒的数量等,SPD芯片通常为一个8针的可读写存储芯片,其第12位数据用于标识内存的有效rank参数和颗粒位宽,其中第12位数据转换为包括8个数据位的二进制数据时,低三位用于标识颗粒位宽,第四位至第六位用于标识有效内存参数,高两位通常为0,比如,这里以选择的检测是2,修改前的有效rank参数是011为例,则可将检测参数2转换为包括三个数据位的二进制数据010,利用010替换有效rank参数011,则可实现限定内存的有效访问区域为内存的前3个rank,即rank0、rank1和rank2。这里,具体体现在SPD中第12位数据下的修改情况则为将第12位数据下的十进制数据25修改为十进制数据16。
为了进一步说明本发明实施例的技术方案及优点,下面具体以针对包括36个内存颗粒、颗粒位宽为8的一个待测内存进行检测为例,且以按照由小到大的顺序选择检测参数,如图2所示,具体可以包括如下各个步骤:
步骤201,通过memtest86+检测待测内存,以确定出待测内存对应的失效数据位。
这里,除memtest86+外,还可以使用其他工具检测待测内存对应的失效数据位,比如RST Pro。
步骤202,从待测内存的SPD芯片中读取配置信息,根据读取的配置信息确定待测内存的颗粒位宽及内存颗粒的数量。
这里,可通过对读取的配置信息进行解析,以获取SPD芯片下的第12位数据,举例来说,当获取其第12位数据是25时,将其转换为包括8个数据位的二进制数据则为00011001,低位开始计数,前三位为001,表征内存颗粒的位宽为8bit,第四位至第6位为011,表征待测内存包括4个rank,相应的,即可确定出对应同一个数据位的待测内存颗粒的数量为4;由于处理器数据总线的位宽为64位,可确定出8个内存颗粒则可形成一个rank,同时,待测内存中每间隔8个内存颗粒,需要设置一个对应内存错误校验位的内存颗粒,因此,可确定出内存颗粒的数量为36。
步骤203,根据内存颗粒的数量、颗粒位宽及失效数据位,确定待测内存颗粒的数量,以及每一个所述待测内存颗粒分别对应的位置参数。
本发明实施例中,以步骤1中确定出实效数据位是43为例,则可计算出每一个待测内存颗粒分别对应的位置参数是:6、15、24、33,即待测内存的中第6个、第15个、第24个和第34个均为待测内存。同时,可确定出检测参数分别为:0、1、2、3。
步骤204,根据每一个检测参数的大小,按照由小到大的顺序,选择一个未被选择过的一个检测参数。
本发明实施例中,仅以按照由小到大的顺序选择检测参数为例;在实际业务场景中,也可以按照由大到小的顺序选择检测参数,参见如图3所示的实施例。
步骤205,将待测内存的有效rank参数修改为选择的检测参数。
具体地,当选择的检测参数为0时,可将待测内存对应的SPD芯片中第12位数据修改为1;当选择的检测参数为1时,可将待测内存对应的SPD芯片中第12位数据修改为9;当选择的检测参数为2时,可将待测内存对应的SPD芯片中第12位数据修改为17;当选择的检测参数为3时,可将待测内存对应的SPD芯片中第12位数据修改为25;如此,即可实现对待测内存的有效访问区域进行限定。
步骤206,根据修改后的有效rank参数,依次访问所述待测内存的前n+1个rank,并形成访问结果。
其中,n为选择的检测参数。
本发明实施例中,当待测内存对应的SPD芯片中第12位数据为1时,有效rank参数为000,表征可以访问待测内存的rank0,即第1至9个内存颗粒;当待测内存对应的SPD芯片中第12位数据为9时,有效rank参数为001,表征可以访问待测内存的rank0和rank1,即第1至18个内存颗粒;当待测内存对应的SPD芯片中第12位数据为17时,有效rank参数为010,表征可以访问待测内存的rank0、rank1和rank2,即第1至第27个内存颗粒;当待测内存对应的SPD芯片中第12位数据为25时,有效rank参数为011,表征可以访问待测内存的rank0、rank1、rank2和rank3,即第1至36个内存颗粒。
其中,n为选择的检测参数。
步骤207,判断访问结果是否为访问成功,如果是,则执行步骤204;否则,执行步骤208。
步骤208,按照由小到大的顺序,利用至少一个检测参数生成第一数据队列,以及,利用各个所述待测内存颗粒的位置参数生成第二数据队列。
举例来说,第一数据队列为:[0、1、2、3];第二数据队列则为:[6、15、24、33]。
步骤209,确定选择的检测参数在第一数据队列中的第一顺序位a。
步骤210,将第二数据队列中,位于第a个顺序位的位置参数确定为第一参考位置参数。
步骤211,将第一参考位置参数对应的待测内存颗粒确定为故障内存颗粒。
步骤208至步骤211中,举例来说,当选择的检测参数为0时,则可确定位置参数6对应的待测内存颗粒为故障内存颗粒;当选择的检测参数为1时,则可确定位置参数15对应的待测内存颗粒为故障内存颗粒;当选择的检测参数为2时,则可确定位置参数24对应的待测内存颗粒为故障内存颗粒;当选择的检测参数为3时,则可确定位置参数33对应的待测内存颗粒为故障内存颗粒。
下面具体以针对包括36个内存颗粒、颗粒位宽为8的一个待测内存进行检测为例,且以按照由大到小的顺序选择检测参数,如图3所示,具体可以包括如下各个步骤:
步骤301,通过memtest86+检测待测内存,以确定出待测内存对应的失效数据位。
步骤302,从待测内存的SPD芯片中读取配置信息,根据读取的配置信息确定待测内存的颗粒位宽及内存颗粒的数量。
步骤303,根据内存颗粒的数量、颗粒位宽及失效数据位,确定待测内存颗粒的数量,以及每一个所述待测内存颗粒分别对应的位置参数。
步骤301至步骤303的实现方法,与上述实施例中步骤201至步骤202的实现方法相同。
步骤304,根据每一个检测参数的大小,按照由大到小的顺序,选择一个未被选择过的一个检测参数。
步骤305,将待测内存的有效rank参数修改为选择的检测参数。
步骤306,根据修改后的有效rank参数,依次访问所述待测内存的前n+1个rank,并形成访问结果。
本发明实施例中,步骤305至步骤306的实现方法,与上述实施例中步骤205至步骤206的实现方法相同。
步骤307,判断访问结果是否为访问失败,如果是,则执行步骤304;否则,执行步骤308。
步骤308,按照由大到小的顺序,利用至少一个检测参数生成第三数据队列,以及,利用各个所述待测内存颗粒的位置参数生成第四数据队列。
举例来说,第三数据队列为:[3、2、1、0];第四数据队列则为:[33、24、15、6]。
步骤309,确定选择的检测参数在第三数据队列中的第二顺序位b。
步骤310,将第四数据队列中,位于第a-1个顺序位的位置参数确定为第二参考位置参数。
步骤311,将第二参考位置参数对应的待测内存颗粒确定为故障内存颗粒。
步骤308至步骤311中,当选择的检测参数为0时,则可确定位置参数15对应的待测内存颗粒为故障内存颗粒;当选择的检测参数为1时,则可确定位置参数24对应的待测内存颗粒为故障内存颗粒;当选择的检测参数为2时,则可确定位置参数33对应的待测内存颗粒为故障内存颗粒。
应当理解的是,当选择的检测参数为0时,对应的访问结果依然为访问失败,那么,则可确定位置参数6对应的待测内存颗粒为故障内存颗粒。
如图4所示,本发明实施例提供了一种内存检测装置,包括:
第一确定模块401,用于确定待测内存中对应同一个失效数据位的待测内存颗粒的数量,以及确定每一个所述待测内存颗粒的位置参数;并根据所述待测内存颗粒的数量确定至少一个检测参数;
选择模块402,用于根据每一个检测参数的大小,从至少一个检测参数中选择一个未被选择过的一个检测参数;
处理模块403,用于根据选择的检测参数,修改所述待测内存的有效访问区域;
检测模块404,用于根据修改后的所述有效访问区域,访问所述待测内存,并形成访问结果;
判断模块405,用于判断所述访问结果是否为预设访问结果,如果是,则触发所述选择模块;否则,触发所述第二确定模块;
第二确定模块406,用于根据选择的检测参数,以及每一个所述待测内存颗粒的位置参数,确定故障内存颗粒。
如图5所示,本发明一个实施例中,所述选择模块402,用于根据每一个检测参数的大小,按照由小到大的顺序,从至少一个检测参数中选择一个未被选择过的一个检测参数;
所述判断模块405,用于判断所述访问结果是否为访问成功;
所述第二确定模块406,包括:第一构建单元4061、第一确定单元4062、第二确定单元4063和第三确定单元4064;其中,
所述第一构建单元4061,用于按照由小到大的顺序,利用至少一个检测参数生成第一数据队列,以及,利用各个所述待测内存颗粒的位置参数生成第二数据队列;
所述第一确定单元4062,用于确定选择的检测参数在所述第一数据队列中的第一顺序位a;
所述第二确定单元4063,用于将所述第二数据队列中,位于第a个顺序位的位置参数确定为第一参考位置参数;
所述第三确定单元4064,用于将所述第一参考位置参数对应的待测内存颗粒确定为故障内存颗粒。
如图6所示,本发明一个实施例中,所述选择模块402,用于根据每一个检测参数的大小,按照由大到小的顺序,从至少一个检测参数中选择一个未被选择过的一个检测参数;
所述判断模块405,用于判断所述访问结果是否为访问失败;
所述第二确定模块406,包括:第二构建单元4065、第四确定单元4066、第五确定单元4067和第六确定单元4068;其中,
所述第二构建单元4065,用于按照由大到小的顺序,利用至少一个检测参数生成第三数据队列,以及,利用各个待测内存颗粒的位置参数生成第四数据队列;
所述第四确定单元4066,用于确定选择的检测参数在所述第三数据队列中的第二顺序位b;
所述第五确定单元4067,用于将所述第四顺序队列中,位于第b-1个顺序位下的位置参数确定为第二参考位置参数;
所述第六确定单元4068,用于将所述第二参考位置参数对应的待测内存颗粒确定为故障内存颗粒。
本发明一个实施例中,所述第一确定模块401,包括:第七确定单元(附图中未示出)和第八确定单元(附图中未示出);其中,
所述第七确定单元,用于确定待测内存对应的一个失效数据位,以及确定待测内存中内存颗粒的数量以及颗粒位宽;
所述第八确定单元,用于根据所述内存颗粒的数量、所述颗粒位宽及所述失效数据位,确定待测内存颗粒的数量,以及每一个所述待测内存颗粒分别对应的位置参数。
本发明一个实施例中,所述处理模块403,用于将所述待测内存的有效rank参数修改为所述检测参数;
所述检测模块404,用于根据所述检测参数,依次访问所述待测内存的前n+1个rank,其中,n为所述检测参数
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
综上所述,本发明各个实施例至少具有如下有益效果:
1、本发明一实施例中,由于对应同一个失效数据位的待测内存颗粒的数量即为待测内存的rank数量,同时,需要根据设置待测内存的有效访问区域才能访问待测内存,且访问待测内存的多个rank时具备设定的顺序;因此,可根据确定的对应同一个失效数据位的待测内存颗粒的数量来确定至少一个检测参数(比如,待测内存颗粒的数量为2时,即待测内存的rank数量为2时,则可确定出检测参数为0和1;在待测内存颗粒的数量为4时,可确定出检测参数为0、1、2、3),然后根据确定的各个检测参数的大小,选择一个未被选择过的检测参数,并根据选择的检测参数修改待测内存的有效访问区域,即实现对待测内存的有效访问区域进行限定(比如,限定可访问的rank数量,或可访问的内存颗粒数量),进而根据修改后的有效访问区域访问待测内存,并形成访问结果;之后,即可根据形成的访问结果,确定是否执行根据选择的检测参数和每一个待测内存颗粒分别对应的位置参数确定故障内存,直到确定出故障内存颗粒为止。综上可见,本发明提供的技术方案中,通过对内存的有效访问区域进行限定,然后根据限定的有效访问区域访问内存,并根据访问结果及对应的检测参数、各个待测内存颗粒的位置参数确定内存的故障内存颗粒,可更为准确的检测出内存的故障内存颗粒。
2、本发明一实施例中,可以依赖于现有的memtest86+以及RST Pro等检测工具来对待测内存进行检测,以提供本发明实施例所需要的待测内存中对应同一个失效数据位的多个待测内存颗粒的位置参数,可提高测试效率。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。