定位故障内存颗粒所在rank的方法、装置、存储介质与流程

文档序号:19747670发布日期:2020-01-21 18:48阅读:850来源:国知局
定位故障内存颗粒所在rank的方法、装置、存储介质与流程

本申请涉及存储设备技术领域,尤其涉及一种定位故障内存颗粒所在rank的方法、装置、存储介质。



背景技术:

在对双rank(dualrank)内存条例如ddr生产测试过程中,常常使用主板来进行内存条测试。但是当一个双rank内存条在一块主板上测试报错时,cpu只会记录发生故障的逻辑地址,对于同一个双rank内存条,在不同rank上相对应位置的内存颗粒出现故障时,cpu发送的逻辑地址中的行、列、bank对应的值都相同,只有rank对应的值不同,现有技术中同一个双rank内存条的两个rank分别对应的值是未知的,因此根据这个逻辑地址,无法区分出是哪一个rank的内存颗粒发生了故障,这样不利于故障内存条的后续维修。



技术实现要素:

为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种定位故障内存颗粒所在rank的方法、装置、存储介质。

第一方面,本申请提供了一种定位故障内存颗粒所在rank的方法,所述方法包括:

获取rank映射表,所述rank映射表表征在同一主板上测试的双rank内存条上rank、rank地址位、rank地址的一一映射关系;

获取目标双rank内存条上目标故障内存颗粒对应的报错地址;

根据所述rank映射表获取所述报错地址中的rank地址位;

获取所述报错地址中的rank地址位对应的取值得到所述目标故障内存颗粒所在rank对应的rank地址;

根据所述目标故障内存颗粒所在rank对应的rank地址和所述rank映射表定位所述目标故障内存颗粒在目标双rank内存条上所在的rank。

优选地,所述获取rank映射表,所述rank映射表表征在同一主板上测试的双rank内存条上rank、rank地址位、rank地址的一一映射关系,包括:

获取一个故障内存条,所述故障内存条为双rank内存条且只有一个故障内存颗粒,所述故障内存颗粒只有一个最小存储单元出错,所述故障内存条与所述目标双rank内存条使用同一个主板和cpu进行测试;

获取所述故障内存条上rank的rank地址位;

获取所述故障内存颗粒位于所述故障内存条的不同rank时rank地址位对应的取值,将所述rank地址位对应的取值作为对应rank的rank地址;

将所述故障内存条上rank、rank地址位、rank地址一一映射生成rank映射表,所述rank映射表表征在同一主板上测试的双rank内存条上rank、rank地址位、rank地址的一一映射关系,不同双rank内存条在所述主板上测试时rank地址位及相同rank对应的rank地址均相同。

优选地,所述获取一个故障内存条,所述故障内存条为双rank内存条且只有一个故障内存颗粒,所述故障内存颗粒只有一个最小存储单元出错,包括:

对待测内存条的每个内存颗粒同时进行写入数据操作,所述待测内存条为单rank内存条;

对已写入数据的所述待测内存条的每个内存颗粒同时进行读出数据操作得到读出数据;

分别对比所述待测内存条的每个内存颗粒的写入数据与对应的读出数据;

将写入数据与对应的读出数据只有一个比特位不同的内存颗粒作为只有一个最小存储单元出错的故障内存颗粒;

获取一个无故障双rank内存条,用所述故障内存颗粒替换所述无故障双rank内存条的任意一颗无故障内存颗粒,使所述无故障双rank内存条变为只有一个故障内存颗粒的故障内存条。

优选地,所述获取一个故障内存条,所述故障内存条为双rank内存条且只有一个故障内存颗粒,所述故障内存颗粒只有一个最小存储单元出错,包括:

获取多个单个的待测内存颗粒,分别对所述多个待测内存颗粒进行写入数据操作;

对已写入数据的所述多个待测内存颗粒分别进行读出数据操作得到读出数据;

分别对比所述待测内存颗粒的写入数据与对应的读出数据;

将写入数据与对应的读出数据只有一个比特位不同的内存颗粒作为只有一个最小存储单元出错的故障内存颗粒;

获取一个无故障双rank内存条,用所述故障内存颗粒替换所述无故障双rank内存条的任意一颗无故障内存颗粒,使所述无故障双rank内存条变为只有一个故障内存颗粒的故障内存条。

优选地,所述获取一个无故障双rank内存条,包括:

对多个待测双rank内存条分别进行写入数据操作;

对已写入数据的所述多个双rank待测内存条分别进行读出数据操作得到读出数据;

分别对比每个所述待测双rank内存条的写入数据与对应的读出数据;

将写入数据与对应的读出数据相同的待测双rank内存条作为无故障双rank内存条。

优选地,所述获取所述故障内存条上rank的rank地址位,包括:

将所述故障内存颗粒在所述故障内存条上当前所在的rank作为第一rank,将所述故障内存条上另一个rank作为第二rank,将故障内存颗粒在所述第一rank上的位置作为第一位置;

分别获取所述故障内存颗粒在所述第一rank的第一位置和第二rank上与所述第一位置相对应的位置对应的报错地址得到第一报错地址、第二报错地址;

获取所述第一报错地址和第二报错地址的差异比特位,将所述差异比特位作为所述故障内存条上rank的rank地址位,所述差异比特位为第一报错地址和第二报错地址中相同比特位对应的取值变化的比特位,其中,不同内存条在同一主板上进行测试时rank地址位相同。

优选地,所述获取所述故障内存颗粒位于所述故障内存条的不同rank时rank地址位对应的取值,将所述rank地址位对应的取值作为对应rank的rank地址,包括:

分别获取所述故障内存颗粒位于所述故障内存条的不同rank时获取的所述第一报错地址和第二报错地址中所述rank地址位对应的取值,分别将所述rank地址位对应的取值作为所述故障内存条上对应rank的rank地址,其中,不同内存条在同一主板上进行测试不同内存条的相同rank对应的rank地址相同。

优选地,所述分别获取所述故障内存颗粒在所述第一rank的第一位置和第二rank上与所述第一位置相对应的位置对应的报错地址得到第一报错地址、第二报错地址,包括:

分别获取由位于第一rank的第一位置的所述故障内存颗粒与位于所述第二rank上与所述第一位置相对应的位置的内存颗粒进行交换,使故障内存颗粒在所述故障内存条的不同rank的相对应的位置时分别对所述故障内存条进行检测时cpu发送的第一报错地址、第二报错地址。

优选地,所述根据所述目标故障内存颗粒所在rank对应的rank地址和所述rank映射表定位所述目标故障内存颗粒在目标双rank内存条上所在的rank,包括:

若所述目标故障内存颗粒所在rank对应的rank地址对应所述rank映射表中的第一rank,则所述目标双rank内存条上目标故障内存颗粒在第一rank上;

若所述目标故障内存颗粒所在rank对应的rank地址对应所述rank映射表中的第二rank,则所述目标双rank内存条上目标故障内存颗粒在第二rank上。

第二方面,本申请还提供了一种定位故障内存颗粒所在rank的装置,所述装置包括:

映射表获取单元,用于获取rank映射表,所述rank映射表表征在同一主板上测试的双rank内存条上rank、rank地址位、rank地址的一一映射关系;

报错地址获取单元,用于获取目标双rank内存条上目标故障内存颗粒对应的报错地址;

地址位获取单元,用于根据所述rank映射表获取所述报错地址中的rank地址位;

地址获取单元,用于获取所述报错地址中的rank地址位对应的取值得到所述目标故障内存颗粒所在rank对应的rank地址;

定位单元,用于根据所述目标故障内存颗粒所在rank对应的rank地址和所述rank映射表定位所述目标故障内存颗粒在目标双rank内存条上所在的rank。

第三方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,使得所述处理器执行前面所述任意一项所述的方法的步骤。

本申请实施例提供的上述技术方案与现有技术相比具有如下优点:

本申请提供的定位故障内存颗粒所在rank的方法,通过获取故障内存条上的同一个故障内存颗粒在故障内存条上的不同rank上相对应位置时cpu发送的第一报错地址和第二报错地址,将第一报错地址、第二报错地址中相同比特位取值变化的比特位作为rank对应的rank地址位,将故障内存颗粒在不同rank获取的第一报错地址和第二报错地址中rank地址位对应的取值作为对应rank的rank地址,从而获取在同一主板上测试的内存条rank、rank地址位、rank地址的一样对应关系,生成rank映射表;由于在同一主板上测试内存条时,不同内存条的相同rank对应的rank地址位、rank地址均相同,因此生成的rank映射表对于在同一主板上进行测试的内存条都是通用的;当获取到目标故障内存条上的目标故障内存颗粒的报错地址后,通过报错地址和rank映射表就能快速定位目标故障内存颗粒在目标故障内存条的哪个rank上,进而方便快速找到目标故障内存颗粒,对故障内存条进行维修。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请提供的一种定位故障内存颗粒所在rank的方法的流程图;

图2为本申请提供的另一种定位故障内存颗粒所在rank的方法的流程图;

图3为本申请提供的另一种定位故障内存颗粒所在rank的方法的流程图;

图4为本申请提供的一种定位故障内存颗粒所在rank的装置的结构框图;

图5为本申请提供的一种应用场景图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1为本申请提供的一种定位故障内存颗粒所在rank的方法的流程图;参考图1,所述方法包括以下步骤:

s0100:获取rank映射表,所述rank映射表表征在同一主板上测试的双rank内存条上rank、rank地址位、rank地址的一一映射关系;

s0200:获取目标双rank内存条上目标故障内存颗粒对应的报错地址;

s0300:根据所述rank映射表获取所述报错地址中的rank地址位;

s0400:获取所述报错地址中的rank地址位对应的取值得到所述目标故障内存颗粒所在rank对应的rank地址;

s0500:根据所述目标故障内存颗粒所在rank对应的rank地址和所述rank映射表定位所述目标故障内存颗粒在目标双rank内存条上所在的rank。

图2为本申请提供的另一种定位故障内存颗粒所在rank的方法的流程图;参考图1、图2,在图1提供的定位故障内存颗粒所在rank的方法的基础上,所述步骤s0100包括以下步骤:

s0110:获取一个故障内存条,所述故障内存条为双rank内存条且只有一个故障内存颗粒,所述故障内存颗粒只有一个最小存储单元出错,所述故障内存条与所述目标双rank内存条使用同一个主板和cpu进行测试;

s0120:获取所述故障内存条上rank的rank地址位;

s0130:获取所述故障内存颗粒位于所述故障内存条的不同rank时rank地址位对应的取值,将所述rank地址位对应的取值作为对应rank的rank地址;

s0140:将所述故障内存条上rank、rank地址位、rank地址一一映射生成rank映射表,所述rank映射表表征在同一主板上测试的双rank内存条上rank、rank地址位、rank地址的一一映射关系,不同双rank内存条在所述主板上测试时rank地址位及相同rank对应的rank地址均相同。

图3为本申请提供的另一种定位故障内存颗粒所在rank的方法的流程图;参考图1、图2、图3,在图2提供的定位故障内存颗粒所在rank的方法的基础上,所述步骤s0120包括以下步骤:

s0121:将所述故障内存颗粒在所述故障内存条上当前所在的rank作为第一rank,将所述故障内存条上另一个rank作为第二rank,将故障内存颗粒在所述第一rank上的位置作为第一位置;

s0122:分别获取所述故障内存颗粒在所述第一rank的第一位置和第二rank上与所述第一位置相对应的位置对应的报错地址得到第一报错地址、第二报错地址;

s0123:获取所述第一报错地址和第二报错地址的差异比特位,将所述差异比特位作为所述故障内存条上rank的rank地址位,所述差异比特位为第一报错地址和第二报错地址中相同比特位对应的取值变化的比特位,其中,不同内存条在同一主板上进行测试时rank地址位相同。

图4为本申请提供的一种定位故障内存颗粒所在rank的装置的结构框图;所述装置包括:

映射表获取单元10,用于获取rank映射表,所述rank映射表表征在同一主板上测试的双rank内存条上rank、rank地址位、rank地址的一一映射关系;

报错地址获取单元20,用于获取目标双rank内存条上目标故障内存颗粒对应的报错地址;

地址位获取单元30,用于根据所述rank映射表获取所述报错地址中的rank地址位;

地址获取单元40,用于获取所述报错地址中的rank地址位对应的取值得到所述目标故障内存颗粒所在rank对应的rank地址;

定位单元50,用于根据所述目标故障内存颗粒所在rank对应的rank地址和所述rank映射表定位所述目标故障内存颗粒在目标双rank内存条上所在的rank。

在内存条的生产测试中,一般用主板对内存条进行测试来检测内存条是否有故障,在同一个内存条的不同rank上相对应位置的内存颗粒出现故障时,cpu发生的报错地址中行、列、bank对应的值都相同,不同的是rank对应的值,因此要定位故障内存颗粒需要确定故障内存颗粒位于哪个rank上。本申请的方法是获取cpu发送的故障内存颗粒对应的报错地址,通过所述报错地址和rank映射表就可以定位故障内存颗粒在哪个rank上。

rank映射表表征在同一主板上测试的双rank内存条上rank、rank地址位、rank地址的一一映射关系,其中,rank地址是双rank内存条上对应的rank的rank地址位的取值,只要是在同一个主板上进行内存条测试,不同双rank内存条相同rank对应的rank地址位和rank地址相同。

故障内存颗粒对应的报错地址是指内存条测试过程中,cpu的内存控制器发送的与故障内存颗粒对应的逻辑地址,在同一个主板上进行内存条测试时,不同内存条相同rank的相同位置上的故障内存颗粒对应的报错地址中rank地址位相同、rank地址相同。

本申请通过将一个已知的故障内存条上的故障内存颗粒分别遍历所述故障内存条上的不同rank的相对应位置得到第一报错地址、第二报错地址,比较第一报错地址和第二报错地址,将报错地址中相同比特位对应的取值变化的比特位作为rank地址位;对于不同主板,rank地址位可能有1位可能有2位。将不同rank对应的rank地址位的取值作为对应rank的rank地址,将rank地址、rank地址位和rank一一映射生成rank映射表。这个rank映射表对于在相同主板上测试的双rank内存条而言是通用的。

图5为本申请提供的一种场景应用图;参考图1-图5,获取一个只有一个故障内存颗粒的ddr内存条作为故障内存条,所述故障内存颗粒只有一个最小存储单元出错,最小存储单元对应一个比特位。

具体地,对若干个ddr内存条分别单独进行写入数据和读出数据的操作,分别对比每个ddr内存条的写入数据与对应的读出数据,将写入数据与对应的读出数据相同的ddr内存条作为无故障内存条。

对ddr内存条的每个内存颗粒同时进行写入数据操作,每个内存颗粒对应的写入数据已知,对已写入数据的每个内存颗粒同时进行读出数据操作得到读出数据,分别对比每个内存颗粒的写入数据与对应的读出数据,将写入数据与对应的读出数据只有一个比特位不同的内存颗粒作为只有一个最小存储单元出错的故障内存颗粒。

或者对多个单个的待测内存颗粒进行写入数据操作和读出数据操作,得到每个待测内存颗粒的写入数据和对应的读出数据,对比每个待测内存颗粒的写入数据和对应的读出数据,将写入数据与对应的读出数据只有一个比特位不同的内存颗粒作为只有一个最小存储单元出错的故障内存颗粒。

用所述故障内存颗粒替换无故障ddr内存条的任意一颗无故障内存颗粒,使所述无故障ddr内存条变为只有一个故障内存颗粒的故障内存条。

不同故障内存条在同一个主板上进行测试时,rank地址位相同,不同内存条相同rank的rank地址也是相同的,所述不同内存条的相同rank是指目前现有技术中按照统一规范判断的相同的rank,但不局限于此。

对于同一个双rank内存条,在不同rank上相对应位置的内存颗粒出现故障时,cpu发送的逻辑地址中的行、列、bank对应的值都相同,只有rank对应的值不同。

参考图5,所述故障内存条的每个rank上有8个内存颗粒,将故障内存颗粒当前所在rank定义为rank1,将故障内存颗粒在rank1上当前的内存颗粒位置定义为u1,rank1上有8个内存颗粒,分别定义内存颗粒位置为u1-u8;将故障内存条另外一个rank定义为rank2,rank2上有8个内存颗粒,分别定义内存颗粒位置为u9-u16;其中内存颗粒位置u1与u9、u2与u10、u3与u11、u4与u12、u5与u13、u6与u14、u7与u15、u8与u16的内存颗粒分别为不同rank的相对应位置的内存颗粒。

将故障内存条安装于主板上进行内存条检测,运行内存测试软件,通过内存测试软件往故障内存条的所有存储单元写入数据,内存条的存储单元与cpu所在的系统中逻辑地址对应,通过测试软件读出各个逻辑地址对应的数据作为读出数据,比较各个写入数据与对应的读出数据,cpu将写入数据与对应的读出数据不同的逻辑地址挑选出来作为报错地址,所述报错地址为故障内存颗粒对应的逻辑地址。此时,得到故障内存颗粒在rank1的位置u1时cpu发送的报错地址为address1:0x4e5d12a30。

将位于rank1的位置u1的故障内存颗粒与位于rank2的位置u9的无故障内存颗粒进行交换,位置u1与位置u9为不同rank的相对应位置;运行内存测试软件,得到故障内存颗粒在rank2的位置u9时cpu发送的报错地址为address2:0x4e5d1aa30。

将address1与address2转化为二进制进行对比,在这个36位的逻辑地址中,差异位为bit16(从右往左算起,第一位为bit1),可以判定报错地址中bit16为所述主板对应的cpu系统发送的逻辑地址中的rank地址位;当故障内存颗粒位于rank1的位置u1时rank地址位bit16对应的取值为0;当故障内存颗粒位于rank2的位置u9时rank地址位bit16对应的取值为1;当bit16的取值为0时为rank1,即rank1的rank地址为0;当bit16的取值为1时为rank2,即rank2的rank地址为1。

得到如下rank映射表:

优选地,可以将故障内存颗粒分别替换到u2与u10、u3与u11、u4与u12、u5与u13、u6与u14、u7与u15、u8与u16中任意一组位置进行内存测试,将得到的对应的报错地址进行对比。也可以换另外一个故障内存条来测试做进一步验证。

在所述同一个主板上进行内存条的测试时,如果有故障内存条,根据cpu发送的故障内存条对应的报错地址中bit16的取值以及rank映射表就可以定位故障内存条中故障颗粒所在的rank。

本应用场景的主板测试内存条时对应的rank地址位为bit16,如果更换不同的主板进行内存条测试时,需求重新找出rank地址位及每个rank对应的rank地址。

通过本申请的方法,能够快速定位发生故障的rank或故障内存颗粒所在的rank,节省检测时间,方便工作人员正确定位故障内存颗粒并进行维修,在内存条的生产测试中具有广泛的应用前景。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1