具体实施方式
在本申请使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在采用地址线走步算法检测CPU与内存之间的地址线是否存在短路、开路、固定逻辑等故障时,地址线走步算法可以为地址线走步0算法和地址线走步1算法。地址线走步算法的处理流程可以为:获得地址线走步算法对应的初始地址作为基址,并向地址线走步算法的基址写入数据,读取该基址的数据,并记录该基址的数据。之后,向目标地址写入数据,且在向目标地址写入数据之后,如果读取的该基址的数据与记录的该基址的数据不同,则说明地址线发生故障。其中,地址线走步算法的基址,是地址线走步算法需要进行数据访问的第一个地址。如表1所示,地址线走步1算法的基址为0…000,地址线走步0算法的基址为1…111,为了方便描述,后续以地址线走步1算法为例进行说明。
在表1中,向地址线走步1算法的基址00000000写入数据11111111,并读取基址00000000的数据,如果读取的数据为11111111,则表示基址可用。之后,确定地址线走步算法的下一个地址(将下一个地址简称为目标地址)00000001,该目标地址用于检测第0位引脚(即目标地址中数值1对应的引脚)是否发生故障。备份目标地址的数据,向该目标地址写入数据11111110,并读取基址数据。如果读取的基址数据是11111111,表示数据11111110未写入到基址,第0位引脚未发生故障。如果读取的基址数据是11111110,表示向目标地址00000001写入的数据,被写入到基址00000000,因此第0位引脚发生故障。之后,还原目标地址(00000001)的数据。同理,确定地址线走步算法的下一个目标地址00000010,该目标地址用于检测第1位引脚是否发生故障。以此类推,确定地址线走步算法的最后一个目标地址10000000,该目标地址用于检测第7位引脚是否发生故障。备份目标地址的数据,向该目标地址写入数据01111111,并读取基址数据。如果读取的基址数据是11111111,表示数据01111111未写入到基址,第7位引脚未发生故障。如果读取的基址数据是01111111,表示向目标地址10000000写入的数据,被写入到基址00000000,因此第7位引脚发生故障。之后,还原目标地址(10000000)的数据。基于上述处理,可检测到基址00000000对应的8个引脚中,哪几个引脚发生故障,继而确定出哪几根地址线发生故障。
表1
在地址线走步1算法的基址为00000000的基础上,假设基址00000000不能访问,则可将其中一位进行反置,如将基址00000000修改为基址10000000,这样,如果基址10000000可以访问,则可以向基址10000000写入数据11111111,并读取基址10000000的数据11111111,后续的检测过程与上述过程相同。但是,在此基础上,用于检测第7位引脚是否发生故障的目标地址(10000000)已经是基址,因此,无法检测第7位引脚是否发生故障。而且,如果有目标地址也是不能访问的地址,则该目标地址的检测过程会跳过,也无法检测到该目标地址对应的引脚是否发生故障。例如,假设用于检测第5位引脚是否发生故障的目标地址(10100000)无法访问,则会跳过对该目标地址(10100000)的处理,即无法检测第5位引脚是否发生故障。因此,上述方式将无法检测第5位引脚、第7位引脚是否发生故障,即第5位引脚、第7位引脚的固定逻辑故障判断失效,第5位引脚、第7位引脚与其它引脚之间的短路故障判断失效。
针对上述发现,本发明实施例中提出一种地址线故障检测的方法,该方法可以应用在任意处理设备(包括内存和CPU即可)的中央处理器(即CPU)上,该中央处理器采用地址线走步算法检测地址线是否存在短路、固定逻辑等故障。如图1所示,该地址线故障检测的方法具体可以包括以下步骤:
步骤101,获得地址线走步算法对应的初始地址作为基址。
其中,地址线走步算法对应的初始地址通常是进行数据访问的第一个地址,如表1所示,地址线走步1算法的初始地址为0…000,地址线走步0算法的初始地址为1…111,可以将该初始地址作为地址线走步算法的基址。
本应用场景下,地址线走步算法对应的初始地址可以指不能访问的地址。
步骤102,根据该初始地址转换一个未检测过的地址作为基址。
步骤103,判断当前的基址是否为有效。如果是,则执行步骤104;如果否,则执行步骤102,根据该初始地址转换另一个未检测过的地址作为基址。
在本应用场景下,如果当前的基址是可以访问的地址,则说明当前的基址有效。如果当前的基址不是可以访问的地址,则说明当前的基址无效。
其中,假设第一次将初始地址转换为地址1,将地址1作为基址进行走步算法检测,则地址1为检测过的地址;第二次将初始地址转换为地址1之外的地址2,将地址2作为基址进行走步算法检测,则地址1和地址2为检测过的地址;第三次将初始地址转换为地址1和地址2之外的地址3,以此类推。
本发明实施例中,根据初始地址转换一个未检测过的地址作为基址过程,具体可以包括但不限于如下方式:将初始地址中的至少一个比特位的数值反置,得到一个未检测过的地址作为基址。其中,当比特位的数值为0时,则将该比特位的数值反置为1。当比特位的数值为1时,则将该比特位的数值反置为0。
本发明实施例中,将初始地址中的至少一个比特位的数值反置,得到一个未检测过的地址作为基址的过程,具体可以包括但不限于如下方式:从该初始地址的最高比特位开始,选择至少一个比特位的数值反置,得到一个未检测过的地址作为基址;或者,从该初始地址的最低比特位开始,选择至少一个比特位的数值反置,得到一个未检测过的地址作为基址。
在一种可行的方式中,针对地址线走步1算法对应的初始地址,如果不可访问的内存地址集中分布在低段内存,则从初始地址的最高位开始,选择至少一个比特位的数值进行反置,得到一个未检测过的地址作为基址;或者,如果不可访问的内存地址集中分布在高段内存,则从初始地址的最低位开始,选择至少一个比特位的数值进行反置,得到一个未检测过的地址作为基址。或者,针对地址线走步0算法对应的初始地址,如果不可访问的内存地址集中分布在低段内存,则从初始地址的最低位开始,选择至少一个比特位的数值进行反置,得到一个未检测过的地址作为基址;或者,如果不可访问的内存地址集中分布在高段内存,则从初始地址的最高位开始,选择至少一个比特位的数值进行反置,得到一个未检测过的地址作为基址。
步骤104,利用地址线走步算法对基址进行故障检测,以获得本次检测过程中检测到的比特位以及检测到的故障比特位。
本发明实施例中,获得本次检测过程中检测到的比特位的过程,可以包括但不限于如下方式:确定初始地址中被反置的比特位以及本次检测过程中被跳过的比特位,是本次检测过程中未检测到的比特位,将本次检测过程中未检测到的比特位之外的其它比特位,确定为本次检测过程中检测到的比特位。
步骤105,输出所有检测过程中检测到的故障比特位。
其中,在步骤104和步骤105之间,还可以包括以下步骤(在图中未体现):
步骤106,判断是否满足输出条件。如果是,则执行步骤105;如果否,则执行步骤102,根据该初始地址转换另一个未检测过的地址作为基址。
其中,由于在进行内存检测时,目的在于尽量地覆盖检测的范围,如果依次进行各比特位的转换确实可以达到接近完全覆盖的效果(即初始地址所对应的所有比特位都被检测到),但是这样则需要花费大量的检测时间,并且能够继续确定的故障比特位并不多。因此,根据检测的效果和检测耗时的考虑,需要设定完成检测的输出条件。即,当初始地址对应的所有比特位均是已经检测到的比特位,或者,进行故障检测的次数达到阈值(如5次),或者,初始地址已经没有对应的未检测过的地址时,则说明满足输出条件;否则,说明未满足输出条件。
本发明实施例中,在获得本次检测过程中检测到的比特位之后,将检测到的比特位在miss_bits中的对应比特位进行记录,并将检测到的比特位在short_map映射表中的对应比特位进行记录。基于此,当miss_bits中的所有比特位均是已经进行记录的比特位,且所述short_map映射表中任意两个比特位相交位置,均是已经进行记录的比特位时,则确定所述初始基址对应的所有比特位均是已经检测到的比特位。
例如,将检测到的比特位在miss_bits中的对应比特位的数值修改为0,并将检测到的比特位在short_map映射表中的对应比特位的数值修改为0。其中,miss_bits的初始值是所有比特位的数值均为1,且1表示不是检测到的比特位,0表示是检测到的比特位。short_map映射表是一个M*N的映射表,M大于等于初始地址的位数,N大于等于初始地址的位数,且任意两个比特位相交位置的初始值是1,且1表示不是检测到的比特位,0表示是检测到的比特位。基于此,当miss_bits中的所有数值均为0,且short_map映射表中任意两个比特位相交位置的数值均为0时,确定初始地址对应的所有比特位已经均为检测到的比特位;否则确定初始地址对应的所有比特位中还存在未检测到的比特位。其中,检测到的比特位在short_map映射表中的对应比特位不包含初始地址被反置的比特位,将在后续应用场景中介绍不包含被反置的比特位的原因。
本发明实施例中,在获得本次检测过程中检测到的故障比特位后,将检测到的故障比特位在error_bits中的对应比特位进行记录;在输出所有检测过程中检测到的故障比特位时,确定error_bits中已经进行记录的比特位是故障比特位。
例如,将检测到的故障比特位在error_bits中的对应比特位的数值修改为1,其中,该error_bits的初始值是所有比特位的数值均为0,且0表示不是检测到的故障比特位,1表示是检测到的故障比特位。因此,可以直接确定error_bits中的所有数值为1的比特位是故障比特位。
基于上述技术方案,本发明实施例中,当需要检测初始地址对应的地址线是否存在故障时,可以对初始地址进行转换,并利用地址线走步算法对转换后的基址进行故障检测,并确定所有故障比特位对应的地址线发生故障,从而检测到初始地址对应的地址线是否存在短路、开路、固定逻辑等故障。
以下结合一具体应用场景对本发明实施例的技术方案进行详细说明。
如表1所示,以地址和数据均为8比特为例,地址线走步1算法对应的初始地址(即初始基址)为00000000,地址线走步0算法对应的初始地址为11111111,为了方便描述,后续以地址线走步1算法为例进行说明。
将初始地址00000000中的至少一个比特位的数值反置,如将第7比特位的数值反置为1,得到基址10000000;或者,将第7比特位和第6比特位的数值反置为1,得到基址11000000。其中,初始地址00000000可以是不能访问的内存地址,假设10000000或者11000000为能够访问的内存地址,则将10000000或者11000000作为有效的基址,否则继续获得新的未检测过的地址作为基址。
其中,将初始地址中的一个比特位的数值反置的处理,与将初始地址中的多个比特位的数值反置的处理相同,后续以一个比特位的数值反置为例。
在实际应用中,在将初始地址中的一个比特位的数值反置后得到基址之后,在利用地址线走步算法对当前的基址进行故障检测时,为了尽量减少目标地址(又可以称为走步地址,如00000001、00000010、10000000等)是不能访问的内存地址的数量,则一种可行的实施方式是:根据不可访问的内存地址的分布情况与目标地址的分布情况来确定初始地址对应的转换后的基址。
例如,地址线走步1算法中的初始地址为00000000时,则目标地址依次为00000001、00000010、00000100、…10000000,目标地址从00000001开始以2的指数形式往高段内存的地址跳,且目标地址主要分布在低段内存,而高段内存中只有一个目标地址10000000。假设实际的运行***环境,当不可访问的内存地址集中分布在低段内存时,则目标地址是不可访问的内存地址的概率很大,当不可访问的内存地址集中分布在高段内存时,则目标地址是不可访问的内存地址的概率很小。基于这一原理,针对地址线走步1算法对应的初始地址,如果不可访问的内存地址集中分布在低段内存,则选择初始地址的高位的数值进行反置,例如,将初始地址00000000反置成基址10000000;如果不可访问的内存地址集中分布在高段内存,则选择初始地址的低位的数值进行反置,如将初始地址00000000反置成基址00000001。
又例如,地址线走步0算法中的初始地址为11111111时,则目标地址依次为11111110、11111101、11111011、…01111111,目标地址从11111110开始以2的指数形式往低段内存的地址跳,且目标地址主要分布在高段内存,而低段内存中只有一个目标地址01111111。假设实际的运行***环境,当不可访问的内存地址集中分布在高段内存时,则目标地址是不可访问的内存地址的概率很大,当不可访问的内存地址集中分布在低段内存时,则目标地址是不可访问的内存地址的概率很小。基于这一原理,针对地址线走步0算法对应的初始地址,如果不可访问的内存地址集中分布在低段内存,则选择初始地址的低位的数值进行反置,例如,将初始地址11111111反置成基址11111110;如果不可访问的内存地址集中分布在高段内存,则选择初始地址的高位的数值进行反置,如将初始地址11111111反置成基址01111111。
其中,在上述过程中,低段内存是指最高位为0的内存地址,如01111111等,而高段内存是指最高位为1的内存地址,如10000000等。
为了方便描述,后续以地址线走步1算法对应的初始地址为00000000为例,在第一次执行步骤101时,将初始地址转换为基址10000000。
为了更好的说明相关步骤,首先定义如下变量。
1、error_bits:error_bits的初始值是所有比特位的数值均为0,error_bits的位数大于等于初始地址的位数,设error_bits初始值是00000000。其中,当比特位的数值为0时,表示该比特位不是故障比特位,当比特位的数值为1时,表示该比特位是故障比特位,且故障比特位对应的引脚存在故障,该故障引脚对应的地址线发生故障。例如,当error_bits为00000000时,第3位比特位的数值为0,第3位不是故障比特位,当error_bits为00001000时,第3位比特位的数值为1,第3位是故障比特位。
2、miss_bits:miss_bits的初始值是所有比特位的数值均为1,miss_bits的位数大于等于初始地址的位数,设miss_bits初始值是11111111。其中,当比特位的数值为1时,表示该比特位是未检测到的比特位,此时还未检测到该比特位对应的引脚是否存在固定逻辑故障,当比特位的数值为0时,表示该比特位是检测到的比特位,此时已经检测到该比特位对应的引脚是否存在固定逻辑故障,即可能存在固定逻辑故障的比特位。例如,当miss_bits为11111111时,第3位比特位的数值为1,表示当前还没有检测到第3位对应的引脚是否存在固定逻辑故障。当miss_bits为11110111时,第3位比特位的数值为0,表示当前已经检测到第3位对应的引脚是否存在固定逻辑故障。
3、short_map映射表:short_map映射表是一个M*N的映射表,M大于等于初始地址的位数,N大于等于初始地址的位数,且任意两个比特位相交位置的初始值是1。假设short_map映射表是一个8*8的映射表,则short_map映射表的初始值可以如表2或表3所示。当两个比特位相交位置的数值为1时,表示还未检测到这两个比特位之间的短路故障。当两个比特位相交位置的数值为0时,表示已经检测到这两个比特位之间的短路故障,即可能存在短路故障的比特位。例如,当第3位比特位与第4位比特位相交位置的数值为1时,表示当前还没有检测到第3位对应的引脚与第4位对应的引脚之间是否存在短路故障。当第3位比特位与第4位比特位相交位置的数值为0时,表示当前已检测到第3位对应的引脚与第4位对应的引脚之间是否存在短路故障。
表2
表3
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
2 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
3 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
4 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
5 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
7 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
其中,表3在表2的基础上,将冗余交叉项的数值修改为0。例如,由于不会检测相同引脚之间是否存在短路故障,因此,比特位0与比特位0相交位置、比特位1与比特位1相交位置…,均是冗余交叉项,将这些位置的数值设置为0。此外,表2中任意两个比特位之间均存在两个相交位置,如横向的比特位1与纵向的比特位2的相交位置,横向的比特位2与纵向的比特位1的相交位置,针对这两个相交位置,可以将其中一个相交位置作为冗余交叉项,并将这些位置的数值设置为0。这样,经过对冗余交叉项的处理后,可以得到表3。在表3中,针对任意两个不同的比特位,只存在一个相交位置,且相交位置的初始值是1。例如,可以如表3所示,针对比特位1和比特位2,二者只存在一个相交位置,且该相交位置的初始值是1。
针对利用地址线走步1算法对基址10000000进行故障检测的过程,参见上述对基址00000000进行故障检测的方式,在此不再赘述。
假设在故障检测过程中,利用目标地址(10000010)检测到第1位引脚发生故障,用于检测第0位引脚是否发生故障的目标地址(10000001)无法访问,用于检测第2位引脚是否发生故障的目标地址(10000100)无法访问,则会跳过对目标地址(10000001)和目标地址(10000100)的处理。基于此,确定本次检测过程中被跳过的比特位是第0位和第2位,被反置的比特位是第7位,继而确定本次检测过程中检测到的比特位是第1位、第3位、第4位、第5位、第6位,而且可以确定本次检测过程中的故障比特位是第1位。
在确定本次检测过程中的故障比特位是第1位之后,将error_bits由初始值00000000修改为00000010,其中的第1位是1,表示第1位对应的引脚发生故障。在确定本次检测过程中检测到的比特位是第1位、第3位、第4位、第5位、第6位之后,将miss_bits由初始值11111111修改为10000101,其中的第1位、第3位、第4位、第5位、第6位被修改为0,表示这些比特位是检测到的比特位。将表3所示的short_map映射表修改为表4。其中,由于第7位是被反置的比特位,不会检测到该比特位对应的引脚与其它任意比特位对应的引脚之间是否存在短路故障,因此不对第7位对应相交位置的数值进行修改,在将第1位对应相交位置的数值修改为0,将第3位对应相交位置的数值修改为0,将第4位对应相交位置的数值修改为0,将第5位对应相交位置的数值修改为0,将第6位对应相交位置的数值修改为0的过程中,即使针对被跳过的比特位,由于这些检测到的比特位已经被检测过是否存在短路故障,因此,这些检测到的比特位与被跳过的比特位对应相交位置的数值也修改为0,只是这些检测到的比特位与被反置的比特位对应相交位置的数值不进行修改,此外,被跳过的比特位之间的短路故障没有进行检测,因此被跳过的比特位对应相交位置的数值不进行修改,如表4所示。
表4
之后,由于miss_bits中不是所有数值均为0,short_map映射表中任意两个比特位相交位置的数值不是均为0,因此,将初始地址转换为基址01000000,并利用地址线走步1算法对基址01000000进行故障检测。假设在故障检测过程中,用于检测第1位引脚是否发生故障的目标地址(01000010)无法访问,用于检测第4位引脚是否发生故障的目标地址(01010000)无法访问,则会跳过对目标地址(01000010)和目标地址(01010000)的处理。基于此,可以确定本次检测过程中被跳过的比特位是第1位和第4位,被反置的比特位是第6位,继而可以确定出本次检测过程中检测到的比特位是第0位、第2位、第3位、第5位、第7位,而且确定本次检测过程中没有故障比特位。
在确定本次检测过程中检测到的比特位是第0位、第2位、第3位、第5位、第7位之后,将miss_bits由10000101修改为00000000,其中的第0位、第2位、第7位被修改为0,表示这些比特位是检测到的比特位,其中的第3位、第5位已经是0,不再需要修改。将表4所示的short_map映射表修改为表5。其中,由于第6位是被反置的比特位,不会检测到该比特位对应的引脚与其它任意比特位对应的引脚之间是否存在短路故障,因此不对第6位对应相交位置的数值进行修改,将第0位对应相交位置的数值修改为0,将第2位对应相交位置的数值修改为0,将第3位对应相交位置的数值修改为0,将第5位对应相交位置的数值修改为0,将第7位对应相交位置的数值修改为0,其中的相交位置已经是0的位置不再需要修改,如表5所示。
表5
之后,由于miss_bits中所有数值均为0,但是short_map映射表中还有一个相交位置(第7位和第6位的相交位置)的数值不是0,因此,将初始地址转换为基址00100000,并利用地址线走步1算法对基址00100000进行故障检测。假设故障检测过程中,用于检测第1位引脚是否发生故障的目标地址(00100010)无法访问,用于检测第4位引脚是否发生故障的目标地址(00110000)无法访问,则会跳过对目标地址(00100010)和目标地址(00110000)的处理。基于此,确定本次检测过程中被跳过的比特位是第1位和第4位,被反置的比特位是第5位,继而确定出本次检测过程中检测到的比特位是第0位、第2位、第3位、第6位、第7位,而且确定本次检测过程中没有故障比特位。
在确定本次检测过程中检测到的比特位是第0位、第2位、第3位、第6位、第7位之后,针对miss_bits,其中的第0位、第2位、第3位、第6位、第7位已经是0,不再需要修改,miss_bits为00000000。将表5所示的short_map映射表修改为表6,相交位置已经是0的位置不再需要修改,只需要将第7位和第6位的相交位置的数值修改为0即可,如表6所示。
表6
之后,由于miss_bits中所有数值均为0,short_map映射表中所有相交位置的数值均是0,因此,需要输出所有检测过程中检测到的故障比特位。而且,由于error_bits被修改为00000010,因此确定error_bits中数值为1的比特位是故障比特位,即第1位是故障比特位,第1位对应的引脚发生故障,该故障引脚对应的地址线发生故障。此外,可以只输出发生故障的引脚是第1位对应的引脚,而不输出第1位对应的引脚是短路故障还是固定逻辑故障。
基于与上述方法同样的发明构思,本发明实施例中还提供了一种地址线故障检测的装置,该地址线故障检测的装置应用在处理设备上。其中,该地址线故障检测的装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的处理设备的处理器,读取非易失性存储器中对应的计算机程序指令形成的。从硬件层面而言,如图2所示,为本发明提出的地址线故障检测的装置所在的处理设备的一种硬件结构图,除了图2所示的处理器、非易失性存储器外,处理设备还可以包括其他硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,该处理设备还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
如图3所示,为本发明提出的地址线故障检测的装置的结构图,包括:
获得模块11,用于获得地址线走步算法对应的初始地址作为基址;
转换模块12,用于根据所述初始地址转换一个未检测过的地址作为基址;
判断模块13,用于判断当前的基址是否为有效;当判断结果为否时,通知所述转换模块根据所述初始地址转换一个未检测过的地址作为基址;
检测模块14,用于当判断结果为是时,利用所述地址线走步算法对基址进行故障检测,以获得本次检测过程中检测到的比特位以及检测到的故障比特位;
输出模块15,用于输出所有检测过程中检测到的故障比特位。
所述转换模块12,具体用于将所述初始地址中的至少一个比特位的数值反置,得到一个未检测过的地址作为基址。
所述转换模块12,具体用于在将所述初始地址中的至少一个比特位的数值反置,得到一个未检测过的地址作为基址的过程中,从所述初始地址的最高比特位开始,选择至少一个比特位的数值反置,得到一个未检测过的地址作为基址;或者,从所述初始地址的最低比特位开始,选择至少一个比特位的数值反置,得到一个未检测过的地址作为基址。
所述检测模块14,具体用于在获得本次检测过程中检测到的比特位的过程中,确定所述初始地址中被反置的比特位以及本次检测过程中被跳过的比特位,是本次检测过程中未检测到的比特位,将本次检测过程中未检测到的比特位之外的其它比特位,确定为本次检测过程中检测到的比特位。
所述检测模块14,还用于当所述初始地址对应的所有比特位均是已经检测到的比特位,或者,进行故障检测的次数达到阈值时,则通知所述输出模块输出所有检测过程中检测到的故障比特位;否则,通知所述转换模块根据所述初始地址转换一个未检测过的地址作为基址。
所述检测模块14,还用于在获得本次检测过程中检测到的故障比特位之后,将检测到的故障比特位在error_bits中的对应比特位进行记录;
所述输出模块15,还用于在输出所有检测过程中检测到的故障比特位时,确定error_bits中已经进行记录的比特位是故障比特位;
所述检测模块14,还用于在获得本次检测过程中检测到的比特位之后,将检测到的比特位在miss_bits中的对应比特位进行记录,并将检测到的比特位在short_map映射表中的对应比特位进行记录;
所述输出模块15,还用于当miss_bits中的所有比特位均是已经进行记录的比特位,所述short_map映射表中任意两个比特位相交位置,均是已经进行记录的比特位时,则确定所述初始基址对应的所有比特位均是已经检测到的比特位。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。