内存链路故障检测方法,装置及相关设备与流程

1.本发明涉及计算机

技术领域


:,尤其涉及一种内存链路故障检测方法,装置及相关设备。

背景技术


::2.内存条是计算机必需的组成部分,一般指随机存取存储器(randomaccessmemory,ram),也叫主存,是与处理器(centralprocessingunit,cpu)直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。在日常使用计算机时,可能会发生内存读取异常的情况,这是很正常的。3.内存条插入内存插槽后,两者之间形成链路连接,处理器向内存条传输信号,读取内存信息。传输信号包括片选信号,命令、地址信号以及数据信号,不同信号传输出现故障产生的影响不同。内存读取异常,故障可能位于内存条上,如内存产生损坏,过热或者不稳定等情况,也有可能是由于处理器故障而产生的,但是最常见的故障是由内存条和链路接触不良,内存链路断开导致的。但是,人们通常会误解为是内存条的问题。4.目前,维修人员一般采用排除法判断系统是否存在链路故障。为了判断链路故障,先猜测是链路存在灰尘等,致使内存读写异常,清理插槽后重新安装内存条。如果重新安装内存条之后仍然存在内存读写异常的情况,就进行内存交叉验证,看故障问题是否随内存条移动。若更换内存条后,故障消失就更换一个新的内存条,若故障没有消失,就说明内存插槽出现了链路故障,更换主板。排除法需要进行多次尝试才能够到故障具体位置,无法直接判断故障所处位置,纠错效率低。技术实现要素:5.本技术提供了一种内存链路故障检测的方法、装置及相关设备,用于解决内存读写异常后,故障排查成本高,需要进行多次检测,无法准确到故障具体位置,纠错效率低的问题。6.第一方面,提供了一种支持内存链路故障检测的方法,该方法包括以下步骤:当内存读写异常时,进行故障纠错,生成纠错信息,得到纠错信息之后,根据纠错信息和历史纠错信息进行诊断,确定故障类型。7.纠错信息包括读写异常的第一内存颗粒的故障地址信息,故障错误的属性及时间,上述历史纠错信息包括历史读写异常的第二内存颗粒的故障地址信息,故障错误的属性及时间,历史纠错信息可以在纠错信息生成之前生成,也可以与纠错信息同时生成,并且第一内存颗粒与第二内存颗粒位于同一根内存条上。上述故障类型包括非内存链路故障和内存链路故障。在生成纠错信息后,将纠错信息存储在纠错信息寄存器中,当需要确定故障类型时,从寄存器中读取纠错信息和历史纠错信息。8.实施第一方面描述的方法,可以在内存出现读写异常后,处理器执行故障纠错生成纠错信息,再根据纠错信息进行故障定位诊断,得到本次内存读写异常的故障类型,故障类型包括链路故障和非链路故障,使得维系人员可以避免多次故障检测,减少纠错成本,提高纠错效率,直接判断得到准确的故障类型,提高修理效率。9.在第一方面一种可能的实现方式中,第一内存颗粒的故障地址信息包括第一内存颗粒的颗粒编号和内存排编号,第二内存颗粒的故障地址信息包括所述第二内存颗粒的颗粒编号和内存排编号,第一内存颗粒和第二内存颗粒位于同一根内存条上。根据第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号进行诊断,在两个颗粒编号相同的情况下,确定上述第一内存颗粒的内存排编号和第二内存颗粒的内存排编号是否相同,在两个内存排编号不同的情况下,处理器确定故障类型为内存链路故障。10.进一步地,在第一内存颗粒的颗粒编号与第二内存颗粒的颗粒编号不同的情况下,或者,在第一内存颗粒的内存排编号和第二内存颗粒的内存排编号相同的情况下,确定故障类型为非内存链路故障。11.可选地,在存在次级内存排的情况下,确定第一内存颗粒的内存排编号和第二内存颗粒的内存排编号不同,或者,第一内存颗粒的次级内存排编号与第二内存颗粒的次级内存编号不同,则确定故障类型为内存链路故障。12.实施上述实现方式,当处理器读写内存信息过程中传输链路存在故障,不同的颗粒受到影响,数据无法返回至处理器。链路故障影响到的颗粒都是位于同一通道中,不同内存排上,并且存在颗粒编号相同的内存排一一对应。因此当故障地址信息显示发生故障的两个颗粒是编号相同且在不同内存排上的两个颗粒,那么可判定本次内存读写异常的故障类型为链路故障。使得维系人员可以避免多次故障检测,减少纠错成本,提高纠错效率,直接判断得到准确的故障类型,提高修理效率。13.在第一方面一种可能的实现方式中,故障错误属性包括可纠正错误ce或不可纠正错误uce,确定两个故障错误属性是否相同,在第一内存颗粒的故障错误的属性和第二内存颗粒的故障错误的属性相同的情况下,继续确定第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同。14.实施上述实现方式,结合故障错误的属性进行故障类型的判定,可以提高故障类型判定时的准确率。应理解,第一内存颗粒的故障错误属性和第二内存颗粒的故障错误属性都是处理器使用纠错算法生成的,若两次故障的属性相同则表示其发生同类故障的可能性较大,因此对同类故障进行上述颗粒编号和内存排编号的判定,可以进一步提高故障类型判断的准确性,提高纠错效率。15.在第一方面一种可能的实现方式中,纠错信息还包括第一内存颗粒的故障时间,历史纠错信息还包括第二内存颗粒的故障时间,在确定第一内存颗粒的故障时间和第二内存颗粒的故障时间的间隔不大于阈值的情况下,继续确定第一内存颗粒的颗粒编号与第二内存颗粒的颗粒编号是否相同。16.实施上述实现方式,结合故障发生的时间进行故障类型的判定,可以进一步提高故障类型判定的准确率。应理解,若某链路发生故障,那么通过该链路进行信号和数据传输的内存颗粒会频繁出现读写失败,所以对于频繁出现读写失败的内存颗粒进行上述颗粒编号和内存排编号的判定,可以进一步提高故障类型判断的准确性,提高纠错效率。17.在第一方面一种可能的实现方式中,可以根据纠错信息和历史纠错信息进行诊断,确定故障类型,也可以结合机器学习的方法进行故障诊断。18.具体地,机器学习方法步骤如下,使用样本集对故障诊断模型进行训练,获得训练好的故障诊断模型,该样本集中可包括样本输入数据以及对应的样本真实值,其中,样本输入数据包括已知纠错信息,样本真实值包括该已知纠错信息对应的已知故障类型。使用该样本集对故障诊断模型进行训练时,可以将样本输入数据输入该故障诊断模型,将模型的输出值与样本的真实值之间的均方差作为损失(loss),根据loss对上述故障诊断模型的参数进行调制直至收敛,从而获得训练好的故障诊断模型。19.实施上述实现方式,结合机器学习的方法进行故障诊断,训练好的神经网络模型可以对更多情况进行故障诊断的预测,提高本技术提供的方案的普适性。20.第二方面,提供了一种支持内存链路故障检测的计算设备。该计算设备包括处理器,内存,内存插槽以及总线。其中,处理器包括纠错信息寄存器,内存包括故障纠错模块和故障定位诊断模块。其中,处理器根据内存读写异常信息进行故障纠错,生成纠错信息,并且根据纠错信息和历史纠错信息确定故障类型。21.可选地,在处理器根据纠错信息和历史纠错信息进行诊断之前,处理器先从寄存器中读取纠错信息和历史纠错信息。22.具体地,纠错信息包括第一内存颗粒的颗粒编号,内存排编号,故障错误属性和时间,历史纠错信息包括第二内存颗粒的颗粒编号,内存排编号,故障错误属性和时间,并且历史纠错信息可以在纠错信息生成之前生成,也可以与纠错信息同时生成。23.具体地,上述第一内存颗粒和第二内存颗粒位于同一根内存条中。24.可选地,处理器确定两个故障错误属性是否相同,在故障错误的属性相同的情况下,继续确定第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同。25.可选地,处理器确定两个故障时间的时间间隔是否在阈值范围,在时间间隔不大于阈值的情况下,继续确定第一内存颗粒的颗粒编号与第二内存颗粒的颗粒编号是否相同。26.可选地,处理器确定两个颗粒编号是否相同,在两个颗粒编号相同的情况下,确定上述第一内存颗粒的内存排编号和第二内存颗粒的内存排编号是否相同,在两个内存排编号不同的情况下,处理器确定故障类型为内存链路故障。27.可选地,处理器可以通过故障定位诊断模块,利用确定好的特征阈值进行条件判断,确定故障类型,也可以利用机器学习模块进行故障诊断。28.上述实现方式,处理器利用纠错信息进行条件判断就可以准确定位故障所在位置,无需通过更换内存条等外部方法来反复查故障具体位置,因此使用上述实现方式,可以避免多次故障检测,确定故障类型,提高纠错效率。29.第三方面,提供了一种支持内存链路故障检测的装置,该装置包括故障纠错模块和故障定位诊断模块。其中,故障纠错模块,用于根据内存读写异常信息进行故障纠错,生成纠错信息;故障定位诊断模块,用于根据纠错信息和历史纠错信息确定故障类型。30.实施第三方面描述的装置,该装置的故障纠错模块,用于在内存读写异常后,进行故障纠错,生成纠错信息,故障定位诊断模块,用于在获取到纠错信息和历史纠错信息后,进行诊断,确定故障类型,从而避免了多次更换内存条的故障检测需要,直接确定故障类型,提高了纠错效率。31.具体地,故障纠错模块用于生成纠错信息,纠错信息包括第一内存颗粒的颗粒编号,内存排编号,故障错误属性和时间等等。32.具体地,故障定位诊断模块,用于获取的纠错信息和历史纠错信息,纠错信息可以包括读写异常的第一内存颗粒的故障地址信息,其中包括第一内存颗粒的颗粒编号和内存排编号。历史纠错信息可以在纠错信息生成之前生成,也可以与纠错信息同时生成,与纠错信息类似,历史纠错信息也可以包括历史读写异常的第二内存颗粒的故障地址信息,其中包括第二内存颗粒的颗粒编号和内存排编号。并且,上述第一内存颗粒和第二内存颗粒位于同一根内存条上。33.故障定位诊断模块,用于确定所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同,在所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号相同的情况下,确定所述第一内存颗粒的内存排编号和第二内存颗粒的内存排编号是否相同。34.可选地,纠错信息还包括第一内存颗粒的故障错误的属性,历史纠错信息还包括第二内存颗粒的故障错误的属性,其中,故障错误的属性包括可纠正错误ce或不可纠正错误uce。故障定位诊断模块,用于确定第一内存颗粒的故障错误的属性和第二内存颗粒的故障错误的属性是否相同,若两者相同,继续确定第一内存颗粒的颗粒编号与第二内存颗粒的颗粒编号是否相同。若两者不同,则确定所述故障类型为非内存链路故障。35.可选地,故障定位诊断模块获取的纠错信息还包括第一内存颗粒的故障时间,获取的历史纠错信息还包括第二内存颗粒的故障时间。若两个故障时间的时间间隔不大于阈值,故障定位诊断模块,用于确定所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同。若两个故障时间的时间间隔大于阈值,则确定所述故障类型为非内存链路故障。36.第四方面,提供了一种计算设备,该计算设备包括处理器和存储器,存储器存储有代码,处理器包括用于执行第一方面或第一方面任一种可能实现方式中实现的各个模块的功能。37.第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。38.本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。附图说明39.为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍;40.图1是本技术提供的一种计算设备的结构示意图;41.图2是本技术提供的一种故障检测设备的结构示意图;42.图3是本技术提供的一种内存条的结构示意图;43.图4是本技术提供的一种故障检测方法的流程图;44.图5是本技术提供的一种故障诊断的流程图;45.图6是本技术提供的一种链路故障示意图;46.图7是本技术提供的一种故障检测装置的结构示意图。具体实施方式47.为了便于理解本发明的技术方案,首先,对本发明涉及的“排查内存故障”的应用场景进行解释说明。48.内存条是计算设备的必要组成部分,一般指随机存取存储器(randomaccessmemory,ram),也叫主存,是与处理器(centralprocessingunit,cpu)直接交换数据的内部存储器。内存条需要插入计算设备的内存插槽中使用,可与cpu进行数据交换,以实现各种功能,比如cpu读写内存信息,或者cpu执行内存中存储的代码实现相应的功能等等。49.举例来说,图1是一种计算设备的结构示意图,如图1所示,该计算设备可包括处理器110、内存插槽120和内存条130,其中,内存条130包括多个颗粒,颗粒又包含内存单元,存储数据。内存通常由双列直插式存储模块(dual-inline-memory-modules,dimm)提供数据通道,通道两侧属于不同的内存排(rank),在不同rank上对称部署多个颗粒,对称的颗粒编号相同。比如图1中的颗粒a和颗粒b位于同一根内存条上,位于同一通道两侧。这样对称部署的颗粒位于同一内存条,同一通道,属于不同的rank,但是对称部署的颗粒a和颗粒b会有相同的颗粒编号。50.在该种架构下,cpu读取内存条中的数据时,首先是通过片选信号确定数据所在的颗粒,然后通过传输链路向该颗粒发出读取命令信号,其中,读取命令信号携带有数据所在的地址信息,该颗粒接收上述读取命令信号后,通过颗粒上的地址解码器到上述地址信息指向的具体的内存单元,然后通过数据链路将数据返回给cpu。51.示例性地,图1中处理器需要先向内存条发送读取命令信号,该读取命令信号会先通过处理器与插槽之间的链路140,然后通过插槽与内存条的颗粒a之间的链路150或者内存插槽与颗粒b之间的链路160,最终传递至内存条130,同理,数据从内存条传递给cpu的过程也需要经过上述链路。52.因此,由于上述处理器读取内存数据的过程中参与的部件和链路较多,若出现内存读写异常,该异常产生的原因也有很多。异常原因可以是cpu与插槽之间的链路140发生故障,插槽与颗粒a之间的链路150发生故障,插槽与颗粒b之间的链路160发生故障,除了链路问题,异常原因还可以是内存条本身发生故障,比如内存损坏、过热或者不稳定等。53.目前,维修人员大部分是通过排除法判断系统是否存在链路故障。为了节约维修成本,维修人员通常会先清理插槽重新安装内存,排除灰尘脏污问题。如果重新安装内存条之后仍然存在内存读写异常的情况,就进行内存交叉验证,看故障问题是否随内存条移动。若更换内存条后,故障消失就更换一个新的内存条,若故障没有消失,就说明内存插槽出现了链路故障,需要更换主板。综上,排除法需要进行多次尝试才能够到故障具体位置,无法直接判断故障所处位置,纠错效率低。54.为了解决上述无法确定故障位置造成的多次维修,纠错效率低的问题,本技术提供了一种故障检测的系统,该系统可以在内存出现读写异常后,由处理器执行故障纠错生成纠错信息,再根据纠错信息进行故障定位诊断,得到本次内存读写异常的故障类型,故障类型包括链路故障和非链路故障,使得维修人员可以避免多次故障检测,减少纠错成本,提高纠错效率,直接判断得到准确的故障类型,提高修理效率。55.如图2所示,图2是本技术提供的故障检测设备的结构示意图,该计算设备200包括处理器210、内存220、内存插槽230、以及总线240。其中处理器210、内存220、内存插槽230可以通过总线240相互连接,也可通过无线传输等其他手段实现通信。应理解,图2中用一条粗线表示总线240,但并不表示仅有一根总线或一种类型的总线。应理解,图2仅为一种示例性的划分方式,各个模块单元之间可以合并或者拆分为更多或更少的模块单元,本技术不作具体限定,并且图2中所示的设备和模块之间的位置关系也不构成任何限制,本技术不作具体限定。56.处理器210可以由至少一个通用处理器构成,例如中央处理器(centralprocessingunit,cpu),或者cpu和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specificintegratedcircuit,asic)、可编程逻辑器件(programmablelogicdevice,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld)、现场可编程逻辑门阵列(field-programmablegatearray,fpga)、通用阵列逻辑(genericarraylogic,gal)或其任意组合。57.处理器210可执行各种类型的程序代码,例如存储在内存220中的软件或固件程序代码,它能使该计算设备200实现各种功能。处理器210还可包括寄存器211,寄存器211是位于处理器中的元件。寄存器211是一种只包含存储电路的时序逻辑电路,是有限存储容量的高速存储部件。寄存器可以暂时存放参与运算的数据,结果,指令和位址等。该寄存器211可用于存储数据,在本技术实施例中,寄存器211可用于存储纠错信息,该纠错信息是内存发生读写异常后,处理器210通过纠错算法对内存读写异常进行纠错后生成的,该纠错信息可以包括故障地址信息,故障错误的属性、时间等。58.内存220可以是随机存取存储器(randomaccessmemory,ram),也叫主存,是与cpu直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。ram工作时可以随时从任何一个指定的地址写入或读出信息。59.内存220用于存储信息,在插入到内存插槽230后,可以供处理器210直接读取或者交换信息。具体实现中,内存220可用于存储程序代码223,并由处理器210来控制执行,该程序代码中可以包括一个或多个软件模块,示例性地,该一个或多个软件模块可以是图2中的故障纠错模块221和故障定位诊断模块222。应理解,图2中的各个模块单元是一种示例性的划分方式,各个单元模块之间可以合并或者拆分为更多或者更少的模块单元,且系统和模块之间的位置关系也不构成任何限制,本技术不作具体限定。60.其中,在内存发生读写异常后,cpu可执行内存220中故障纠错模块221的代码,根据内存读写异常产生的内存读写异常信息进行故障纠错,生成纠错信息,纠错信息包括读写异常的第一内存颗粒的故障地址信息。该纠错信息可存储于寄存器211中。上述纠错信息可以通过cpu自定义的纠错算法,比如循环冗余校验(cyclicredundancycheck,crc)算法等得到,本技术不作具体限定。61.可选地,该纠错信息包括读写异常的第一内存颗粒的故障地址信息,故障地址信息指向内存读取异常的第一内存颗粒,具体可包括内存单元所在的颗粒、所在的rank和所在的通道等等。故障地址信息可以是32位的物理地址,该物理地址可以包括通道,rank位置等具体信息,还包括14位的行地址和10位的列地址,通过这个地址信息就可以到未读取成功的内存单元的具体位置。62.举例来说,图3是一种内存条的结构示意图,由图3可知,内存条可包括多个内存排,大部分存在两个或者四个内存排。图3以两个内存排(内存排0和内存排1)为例进行说明。其中,每个内存排可包括多个颗粒,并且颗粒数量相同,每个内存排中的颗粒数量根据颗粒数据位宽的不同而有所变化,数据位宽与颗粒数量相乘即为内存容量。图3中,内存排0包括dev0~dev7八个颗粒,内存排1包括dev*0~dev*7八个颗粒。结合图1,颗粒a和颗粒b位于同一个通道中,颗粒a和颗粒b位于通道的两侧,属于不同的内存排,但颗粒a和颗粒b的编号相同。因此,颗粒a可以看作内存排0中的dev0,颗粒b可以看作内存排1中的dev*0,其他颗粒也是类似颗粒a和颗粒b的分布方式,这里不一一展开赘述。该种结构下,若内存读取异常的颗粒为dev0,那么故障地址信息可以包括dimm,内存排0,dev0,应理解,上述举例仅用于说明,本技术不对故障地址信息的具体内容进行限定。63.可以理解的,内存条中的多个颗粒与处理器之间存在传输链路,内存条与处理器进行数据交换时,如果传输链路上存在故障会影响多个颗粒,进而影响到处理器正常读取内存信息。举例来说,当数据信号传输链路l0存在故障,内存排0中的dev0和内存排1中的dev*0受到影响,会反馈内存读写异常,处理器进行故障纠错,得到纠错信息,那么故障地址信息可以包括dimm,内存排0,dev0和dimm,内存排1,dev*0,根据纠错信息判定故障类型,以此类推,这里不一一进行举例说明。根据故障地址信息,可以确定故障原因是否是链路故障,提高维修人员的维修效率。64.可选地,上述纠错信息还包括读写异常的第一内存颗粒的故障错误的属性。故障错误的属性包括可纠正错误(correctableerror,ce)和不可纠正错误(uncorrectableerror,uce),可纠正错误是指系统纠错能力可以纠正的错误,不可纠正错误则相反。应理解,当数据信号传输链路l0存在故障,内存排0中的dev0和内存排1中的dev*0上报内存读写异常时,由于处理器执行同一个纠错算法进行故障纠错,因此得到两者的故障错误的属性是相同的,本实施例中的纠错算法在链路故障的情况下,得到的故障错误属性为可纠正错误。命令、地址信号传输链路l存在故障则会影响到内存条上所有的颗粒,在本实施例中命令、地址信号传输链路存在故障的情况下,处理器纠错得到的故障错误属性也为可纠正错误。65.可选地,上述纠错信息还可包括读写异常的第一内存颗粒的故障时间,该时间是指故障产生的具体时间,用于对两个可纠正错误或者两个不可纠正错误的时间间隔进行计算。66.故障定位诊断模块222根据纠错信息和历史纠错信息确定故障类型,其中,故障类型包括非内存链路故障和内存链路故障,历史纠错信息包括历史读写异常的第二内存颗粒的故障地址信息。历史纠错信息与纠错信息类似,也可以包括第二内存颗粒对应的故障错误的属性,时间等等,并且历史纠错信息可以在纠错信息生成之前生成,也可以与纠错信息同时生成。上述第一,第二内存颗粒可以是产生时间相邻的故障错误对应的两个颗粒,也可以是产生时间不相邻的故障错误对应的任意两个颗粒。67.可选地,设备中可能包括一个内存条,也可能存在多个内存条,在上述第一内存颗粒与第二内存颗粒位于同一根内存条的情况下,故障诊断模块根据纠错信息和历史纠错信息确定故障类型。68.下面结合图1和图3,对上述诊断算法的原理进行详细描述。69.在本技术实施例中,若第一内存颗粒的故障地址信息和第二内存颗粒的故障地址信息显示发生故障的两个颗粒是编号相同且在不同内存排上的两个颗粒,那么可判定本次内存读写异常的故障类型为链路故障。70.应理解,在图1和图3描述的架构下,cpu想要读取内存信息时,首先通过片选信号选择颗粒,然后发出内存读取命令信号,通知内存颗粒,颗粒通过地址解码器到具体的内存单元,从中读取数据,通过数据链路将信息返回至cpu。71.因此,当处理器读写内存信息过程中传输链路存在故障,不同的颗粒受到影响,数据无法返回至处理器。举例来说,若命令,地址信号的传输链路l出现故障,那么内存排0中的dev0~dev7和内存排1中的dev*0~dev*7都受到影响,上报错误。或者,当数字信号传输链路l0出现故障,那么内存排0中的dev0和内存排1中的dev*0会受到影响,短时间内上报内存错误。根据这两种不同的链路故障情况,可以发现链路故障影响到的颗粒都是位于同一内存条上,同一dimm中,不同内存排上,并且存在颗粒编号相同的内存排一一对应。因此当故障地址信息显示发生故障的两个颗粒是颗粒编号相同且在不同内存排上的两个颗粒,那么可判定本次内存读写异常的故障类型为链路故障。72.可选地,若获取纠错信息中的故障错误的属性都为可纠正错误,处理器可以确定纠错信息中两个故障错误所在的颗粒编号是否相同。若纠错信息中的故障错误属性不相同,那么可以判定故障类型为非链路故障。73.可选地,若获取纠错信息中的时间,得到两个故障错误产生的时间的时间间隔不大于阈值,处理器可以确定纠错信息中两个故障错误所在的颗粒编号是否相同。若计算得到两个故障错误产生的时间的时间间隔大于阈值,那么可以判定故障类型为非链路故障。74.在本技术实施例中,该系统还可结合机器学习的方法进行故障诊断。具体地,内存中的代码还可包括机器学习单元的代码,处理器可执行该机器学习单元的代码,生成故障诊断模型,将纠错信息输入该故障诊断模型,获得本次内存读写异常的故障类型。75.具体实现中,可使用样本集对故障诊断模型进行训练,获得训练好的故障诊断模型,该样本集中可包括样本输入数据以及对应的样本真实值,其中,样本输入数据包括已知纠错信息,样本真实值包括该已知纠错信息对应的已知故障类型。使用该样本集对故障诊断模型进行训练时,可以将样本输入数据输入该故障诊断模型,将模型的输出值与样本的真实值之间的均方差作为损失(loss),根据loss对上述故障诊断模型的参数进行调制直至收敛,从而获得训练好的故障诊断模型。需要说明的,故障诊断模型结构可以是卷积神经网络(convolutionalneuralnetworks,cnn)、循环神经网络(recurrentneuralnetwork,rnn)、长短期记忆网络(longshort-termmemory,lstm)等等,本技术不作具体限定。76.综上可知,本技术提供的故障检测的系统,可以在内存出现读写异常后,处理器执行故障纠错生成纠错信息,再根据纠错信息进行故障定位诊断,得到本次内存读写异常的故障类型,故障类型包括链路故障和非链路故障,使得维系人员可以避免多次故障检测,减少纠错成本,提高纠错效率,直接判断得到准确的故障类型,提高修理效率。77.图4是本技术提供的一种故障检测的方法的步骤流程示意图,该方法可用于图1~图3所示的处理器中。如图4所示,该方法可包括以下步骤:78.步骤s410:处理器根据内存读写异常信息进行故障纠错,生成纠错信息。79.纠错信息包括读写异常的第一内存颗粒的故障地址信息。80.其中,纠错信息还可以包括第一内存颗粒对应的故障错误的属性,时间等等。其中,故障地址信息可以指向内存读写异常的内存单元,包括行,列,颗粒,内存排等内容,故障错误的属性包括ce和uce,ce是指系统纠错能力可以直接纠正的错误,故障错误的属性会随着纠错算法的变化而变化,或者故障错误的属性通过重新传输命令,地址信号是否正确来确定。而时间就是指故障错误产生的具体时间,用来计算两个错误之间的时间间隔。81.步骤s411:处理器根据所述纠错信息和历史纠错信息确定故障类型。82.所述历史纠错信息包括历史读写异常的第二内存颗粒的故障地址信息。历史纠错信息与纠错信息类似,也可以包括第二内存颗粒对应的故障错误的属性,时间等等,上述历史纠错信息可以在纠错信息生成之前生成,也可以与纠错信息同时生成。并且上述第一内存颗粒和第二内存颗粒位于同一根内存条中。故障类型包括非内存链路故障和内存链路故障。83.本技术提供了多个方案实现上述步骤s411,下面结合图5对上述步骤s411根据所述纠错信息和历史纠错信息确定故障类型的具体流程进行详细描述。84.(一)上述步骤s411可以通过步骤s512~步骤s513和步骤s516~步骤s517实现85.步骤s512:确定第一内存颗粒的颗粒编号与第二内存颗粒的颗粒编号是否相同。在颗粒编号相同的情况下,执行步骤s513,在编号不同的情况下,执行步骤s517。86.应理解,在内存条上的每一个颗粒上都有一个编号,处于通道两侧相同位置的两个颗粒编号相同。结合图3,一个数据信号传输链路存在故障,就会影响两个不同内存排中编号相同的颗粒的信息读取,例如,当数据信号传输链路l0存在故障时,内存排0中的dev0和内存排1中的dev*0即使接收到了处理器发出的读取命令,并解码得到了数据所在的地址信息,也无法将到的信息返回给处理器,此时两个颗粒的编号相同。而当命令、地址信号传输链路存在故障时,内存排0中的dev0~dev7和内存排1中的dev*0~dev*7都会受到影响,处理器读取内存信息的第一步就无法进行。此时,内存排0中的dev0~dev7和内存排1中的dev*0~dev*7存在颗粒编号两两相同的情况。因此,属性相同的错误所处的颗粒编号相同是链路故障判定的条件之一。87.步骤s513:确定第一内存颗粒所处的内存排编号和第二内存颗粒所处的内存排编号是否相同。在内存排编号不同的情况下,执行步骤s516,在内存排编号相同的情况下,执行步骤s517。88.应理解,如图3所示,若一个内存条上存在两个内存排,内存排0和内存排1,不论是哪一个信号传输链路出现故障,受影响的颗粒都分布在两个内存排上。因为所有的链路连接着处理器与内存条整体,不会出现受影响的颗粒仅在内存排0上或者仅在内存排1上的情况。因此,属性相同的错误所处的内存排不同也是链路故障判定的条件之一。89.步骤s516:确定故障类型为内存链路故障。90.步骤s517:确定故障类型为非内存链路故障。比如内存条发生故障或者cpu发生故障,具体可参考前述图1~图3实施例,这里不重复赘述。91.(二)上述步骤s411可以通过步骤s512~步骤s517实现92.步骤s512~步骤s513可参考前述内容,这里不重复赘述。其中,在步骤s513执行时,若内存排编号相同,执行步骤s514~步骤s515,若内存排编号不同,执行步骤s516。93.步骤s514:确定内存排上是否存在次级内存排(subrank)。若存在,执行步骤s515,若不存在,执行步骤s517。94.简单来说,当第一内存颗粒处于内存排0,第二内存颗粒处于内存排1时,可以确定故障类型为内存链路故障。当第一内存颗粒和第二内存颗粒都处于内存排1时,确定内存排1上是否存在次级内存排。95.步骤s515:确定第一内存颗粒所处的次级内存排编号和第二内存颗粒所处的次级内存排编号是否相同。若不同,执行步骤s516,若相同,执行步骤s517。96.步骤s516:确定故障类型为内存链路故障。97.步骤s517:确定故障类型为非链路故障。98.(三)上述步骤s411可以通过步骤s510、步骤s512~步骤s517实现99.步骤s510:确定第一内存颗粒的故障错误的属性和第二内存颗粒的故障错误的属性是否相同。在属性相同的情况下执行步骤s512,在属性不同的情况下执行步骤s517。100.在判定颗粒编号是否相同,内存排的编号是否相同之前,还可以判断故障产生的错误的属性。在本实施例中,需要确定第一内存颗粒的故障错误的属性和第二内存颗粒的故障错误的属性是否是可纠正错误,实际上两者都为不可纠正错误也满足条件。101.结合图3,当数据信号传输链路l0存在故障,会影响内存排0上的dev0和内存排1上的dev*0,处理器使用某个纠错算法,得到这两个颗粒上报的错误的属性相同,本实施例中两个错误的属性为可纠正错误,但是本技术对处理器使用的纠错算法不作具体限定,得到的错误属性相同即满足条件。当命令、地址信号传输链路l存在故障,内存条上dev0~dev7和dev*0~dev*7都会受到影响,各个颗粒上报的错误的属性也都是相同的。102.在本实施例中,当内存故障产生的可纠正错误数量为两个时,步骤s510,s512和s513中的条件判断就在这两个可纠正错误之间进行。当内存故障产生的可纠正错误的数量为三个及三个以上时,步骤s510,s512和s513中的条件判断可以在任意两个可纠正错误之间进行。103.(四)上述步骤s411可以通过步骤s510~步骤s517实现104.步骤s511:确定第一内存颗粒的故障错误与第二内存颗粒的故障错误之间的时间间隔是否不大于阈值。若在阈值之内,执行步骤s512,若不在阈值之内,执行步骤s517。105.在本实施例中,一个月就是上述特征阈值,该特征阈值可以根据经验获得,本技术不作具体限定。106.上述步骤s510、s511、s512和s513之间没有顺序限定,可以随意改变各个条件之间的判断顺序,最终得到准确的故障类型,内存链路故障或者是非链路故障。107.在一具体的实施例中,出现内存读写异常,需要执行步骤s510确定进行比较的故障错误的属性是否为可纠正错误,如果两个故障错误的属性不同,执行步骤s517确定故障类型为非链路故障。在两个故障错误的属性同为可纠正错误的情况下,执行步骤s511确定两次可纠正错误产生的时间间隔是否小于或者等于阈值,如果时间间隔大于阈值,则执行步骤s517确定故障类型为非链路故障。在时间间隔小于或者等于阈值的情况下,执行步骤s512确定两次可纠正错误所处的颗粒编号是否相同,如果两次可纠正错误所处的颗粒编号不同,则执行步骤s517确定故障类型为非链路故障。在两次可纠正错误所处的颗粒编号相同的情况下,执行步骤s513继续确定两次可纠正错误所处的rank是否相同,如果两次可纠正错误所处的rank相同,执行步骤s514继续确定两次可纠正错误所处的rank中是否存在subrank,如果没有subrank,则执行步骤s517确定故障类型为非链路故障。在存在subrank的情况下,执行步骤s515继续确定两次可纠正错误所处的subrank是否相同,如果两次可纠正错误所处的subrank相同,则执行步骤s517确定故障类型为非链路故障。在两次可纠正错误所处的subrank不同的情况下,执行步骤s516确定故障类型为内存链路故障。在两次可纠正错误所处的rank不同的情况下,也执行步骤s516确定故障类型为内存链路故障。108.可选地,在判定内存读写异常是由链路故障产生之后,还可以在诊断算法的基础上进一步细化特征,增加对内存颗粒上管脚dq的条件判断。内存颗粒上可以有四个或者八个或者十六个管脚,对何种条件下的内存颗粒上的管脚故障相同进行限制,可以提高链路故障诊断出不可纠正错误的精准率。本实施例中,增加内存颗粒中多个故障管脚相同的条件,或者内存颗粒中多个相邻的故障管脚相同的条件,可以有效地提高链路故障诊断出不可纠正错误的精准率。本技术对颗粒管脚数量不作具体限定。109.下面结合具体的实施例对增加颗粒管脚是否相同的条件进行详细说明,结合图6,处理器已经执行完步骤s510,s511,s512和s513,处理器得到两个故障对应颗粒位于同一根内存条上,位于同一通道内,不同rank上,但是颗粒编号相同,并且得到故障错误属性都为可纠正错误,时间间隔小于特征阈值,诊断出故障类型为内存链路故障。本实施例中的内存条上的每个颗粒包括四个管脚,管脚编号分别为dq0、dq1、dq2和dq3。增加对颗粒上管脚的条件判断,需要处理器在纠错时,把相关的管脚信息存储到寄存器中,诊断时对dev2和dev#2中是否有多个相同编号的管脚存在故障进行条件判断。例如dev2和dev#2中都存在编号为dq0和dq4的管脚故障,符合多个颗粒管脚相同的条件,此时链路故障诊断出不可纠正错误的第一精准率比不限制颗粒管脚完全相同的情况下得到的精准率有明显的提升。或者进一步细化特征,对两个颗粒中是否有多个编号相同且相邻的管脚存在故障进行条件判断,例如dev2和dev#2中都存在编号为dq0、dq1和dq2的三个管脚故障,符合存在多个编号相同且相邻的颗粒管脚的条件,此时链路故障诊断出不可纠正错误的第二精准率比不限制颗粒管脚完全相同的情况下得到的精准率也有明显的提升,与第一精准率差别不大。当其他管脚存在故障时,也是进行上述条件判断,这里不展开一一叙述。110.综上可知,增加一个对颗粒中故障dq管脚是否相同的判断条件可以提高内存链路故障检测的精准度。111.为了使本技术能够被更好的理解,下面结合具体的应用场景对本技术提供的诊断算法进行详细描述。112.图6中,一个内存条上包括一个dimm提供的数据通道,包括两个内存排,分别是内存排0和内存排1,内存排0中包括dev0~dev17共十八个颗粒,内存排1中同样包括dev#0~dev#17共十八个颗粒,假设处理器在读取内存排0的dev2的信息和内存排1的dev#2的信息时出现异常。在该应用场景下,处理器可执行上述步骤s411得到纠错信息,该纠错信息中的故障地址显示,两个错误位于同一个dimm数据通道中,但是位于不同的内存排,其中一个错误位于内存排0,另一个位于内存排1,两个错误所处的颗粒的编号相同都为2。在此种情况下,继续判断两个错误的属性是否相同,如果两个错误的属性相同,都为可纠正错误或者都是不可纠正错误,那么继续判断两个错误之间的时间间隔。如果这两个错误一个为可纠正错误,一个是不可纠正错误,即停止故障诊断,故障类型为非链路故障。例如图5,诊断算法对错误是否是可纠正错误进行了筛选,如果两个错误属性都为可纠正错误,就继续将计算得到的两个错误之间的时间间隔与专家确定的特征阈值进行比较,例如图5中给出的时间间隔的特征阈值为一个月,当这两个错误的时间间隔小于或者等于一个月时,判定读写异常是由链路故障引起的,否则,判定为非链路故障。113.为了使本技术能够被更好的理解,下面结合具体的应用场景对本技术提供的故障检测方法进行详细描述。在本应用场景中,出现的可纠正错误为两个以上,且计算设备中存在两个内存条,具体的故障检测方法流程如下所述。114.处理器在读取内存信息时出现异常,上报了三个错误,执行故障纠错模块代码,获取纠错信息,存储到处理器中的纠错信息寄存器中。处理器再次读取纠错信息,得到第一可纠正错误,第二可纠正错误和第三可纠正错误,对应的可纠正错误的故障地址信息也有三个。从第一、第二和第三故障地址信息中得到,三个可纠正错误位于同一根内存条上,位于同一个通道内,第一可纠正错误和第二可纠正错误位于同一个rank,rank0中,而第三可纠正错误位于rank1中,在本实施例中,不存在subrank。除此之外,第一可纠正错误和第三可纠正错误位于各自rank上的颗粒2中,第二可纠正错误位于rank0上的颗粒4中。三者都是可纠正错误,接着读取三者产生的具体时间信息,得到第一可纠正错误和第二可纠正错误的时间间隔为9天,第二可纠正错误和第三可纠正错误的时间间隔为20天。在完整地获取到进行故障诊断所需的信息后,处理器执行故障定位诊断模块,实现诊断算法的运算。在本实施例中,由于存在两个以上的错误,所以在进行条件判断时,要注意任意两者之间都可以进行条件判断,并不限定错误只能与相邻的上一个错误进行条件判断,因此,本实施例中需要对三组数据进行条件判断,分别是第一ce和第二ce之间的数据条件判断,第二ce和第三ce之间的数据条件判断,还有第一ce和第三ce之间的数据条件判断。115.先对第一ce和第二ce的相关数据进行条件判断,很明显,第一ce和第二ce位于同一rank,rank0中,且所处颗粒编号不同,虽然两者错误属性相同且时间间隔为9天,小于特征阈值,但是不满足链路故障产生的所有条件,因此判断得到的故障类型为非链路故障。116.其次对第二ce和第三ce的相关数据进行条件判断,第二ce和第三ce的错误属性相同,两者的时间间隔为20天,小于特征阈值,且分布在rank0和rank1中,处于不同的rank,但是两者所处的颗粒的编号不同,因此,判断得到故障类型为非链路故障。117.最后对第一ce和第三ce的相关数据进行条件判断,两者错误属性相同,计算得到两者产生时间的间隔为29天,小于一个月的特征阈值,满足判断条件,进而判断两者的故障地址信息,第一ce和第三ce所处的颗粒的编号相同,都为2。第一ce位于rank0,第三ce位于rank1,两者所处的rank不同,满足所有链路故障产生的条件,判断故障类型为链路故障。118.综上可知,本技术提供的支持故障检测的方法,可以在内存出现读写异常后,处理器执行故障纠错模块,生成纠错信息,再根据纠错信息进行故障定位诊断,得到本次内存读写异常的故障类型,故障类型包括链路故障和非链路故障,使得维系人员可以避免多次故障检测,减少纠错成本,提高纠错效率,直接判断得到准确的故障类型,提高修理效率。119.图7是本技术提供的一种故障检测的装置。内存700中的程序代码710包括两个重要模块,故障纠错模块720和故障定位诊断模块730。其中,故障纠错模块720可以根据内存读写异常信息进行故障纠错,生成纠错信息,纠错信息包括读写异常的第一内存颗粒的故障地址信息。故障定位诊断模块730可以根据所述纠错信息和历史纠错信息确定故障类型,其中,历史纠错信息包括历史读写异常的第二内存颗粒的故障地址信息,历史纠错信息可以在纠错信息生成之前生成,也可以与纠错信息同时生成。第一内存颗粒与第二内存颗粒位于同一根内存条上,故障类型包括内存链路故障和非内存链路故障。120.故障纠错模块720生成的纠错信息可以包括第一内存颗粒的故障地址信息,对应的故障错误属性和时间等等。其中,故障地址信息可以指向内存读写异常的内存单元,包括行,列,颗粒,rank等内容,故障错误的属性包括ce和uce,ce是指系统纠错能力可以直接纠正的错误,故障错误的属性会随着纠错算法的变化而变化,或者故障错误的属性通过重新传输命令,地址信号是否正确来确定。而时间就是指故障错误产生的具体时间,用来计算两个错误之间的时间间隔。121.故障纠错模块720生成上述纠错信息后,就将这些纠错信息存储到纠错信息寄存器中。故障定位诊断模块730从纠错信息寄存器中获取纠错信息和历史纠错信息,确定故障类型。122.在某一具体的实施例中,故障定位诊断模块获取的上述纠错信息包括读写异常的第一内存颗粒的故障地址信息,第一内存颗粒的故障地址信息中包括第一内存颗粒的颗粒编号和rank编号,上述获取的历史纠错信息包括历史读写异常的第二内存颗粒的故障地址信息,第二内存颗粒的故障地址信息包括第二内存颗粒的颗粒编号和rank编号,第一内存颗粒与第二内存颗粒位于同一根内存条上。故障定位诊断模块,用于确定所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同,在所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号相同的情况下,确定所述第一内存颗粒的rank编号和第二内存颗粒的rank编号是否相同。若两者rank编号不同确定所述故障类型为内存链路故障。若第一内存颗粒的颗粒编号与第二内存颗粒的颗粒编号不同,或者,第一内存颗粒的rank编号和第二内存颗粒的rank编号相同,则确定所述故障类型为非内存链路故障。123.可选地,故障定位诊断模块获取的纠错信息还包括第一内存颗粒的故障错误的属性,获取的历史纠错信息还包括第二内存颗粒的故障错误的属性,其中,故障错误的属性包括可纠正错误ce或不可纠正错误uce。故障定位诊断模块,用于确定第一内存颗粒的故障错误的属性和第二内存颗粒的故障错误的属性是否相同,若两者相同,继续确定第一内存颗粒的颗粒编号与第二内存颗粒的颗粒编号是否相同。若两者不同,则确定所述故障类型为非内存链路故障。124.可选地,故障定位诊断模块获取的纠错信息还包括第一内存颗粒的故障时间,获取的历史纠错信息还包括第二内存颗粒的故障时间。若两个故障时间的时间间隔不大于阈值,故障定位诊断模块,用于确定所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同。若两个故障时间的时间间隔大于阈值,则确定所述故障类型为非内存链路故障。125.综上可知,本技术提供的支持故障检测的装置,可以在内存出现读写异常后,通过故障纠错模块,生成纠错信息,再利用故障定位诊断模块,根据纠错信息和历史纠错信息得到本次内存读写异常的故障类型,使得维系人员可以避免多次故障检测,减少纠错成本,提高纠错效率,直接判断得到准确的故障类型,提高修理效率。126.本技术实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在处理器上运行时,图4-图5所示的方法流程得以实现。127.本技术实施例还提供一种计算机程序产品,当计算机程序产品在处理器上运行时,图4‑ꢀ图5所示的方法流程得以实现。128.上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括至少一个计算机指令。在计算机上加载或执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriberline,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含至少一个可用介质集合的服务器、数据中心等数据存储节点。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digitalvideodisc,dvd)、或者半导体介质)。半导体介质可以是ssd。129.以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本

技术领域


:的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页12当前第1页12

技术特征:


1.一种内存链路故障检测方法,其特征在于,包括:处理器根据内存读写异常信息进行故障纠错,生成纠错信息,所述纠错信息包括读写异常的第一内存颗粒的故障地址信息;所述处理器根据所述纠错信息和历史纠错信息确定故障类型,其中,所述故障类型包括非内存链路故障和内存链路故障,所述历史纠错信息包括历史读写异常的第二内存颗粒的故障地址信息。2.根据权利要求1所述的方法,其特征在于,所述第一内存颗粒的故障地址信息包括所述第一内存颗粒的颗粒编号和内存排编号,所述第二内存颗粒的故障地址信息包括所述第二内存颗粒的颗粒编号和内存排编号,所述第一内存颗粒和所述第二内存颗粒位于同一根内存条上,所述处理器根据所述纠错信息和历史纠错信息确定故障类型包括:所述处理器确定所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同;在所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号相同的情况下,确定所述第一内存颗粒的内存排编号和第二内存颗粒的内存排编号是否相同;在所述第一内存颗粒的内存排编号和第二内存颗粒的内存排编号不同的情况下,所述处理器确定所述故障类型为内存链路故障。3.根据权利要求2所述的方法,其特征在于,所述处理器根据所述纠错信息和历史纠错信息确定故障类型包括:在所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号不同,或者,所述第一内存颗粒的内存排编号和第二内存颗粒的内存排编号相同的情况下,所述处理器确定所述故障类型为非内存链路故障。4.根据权利要求2或3所述的方法,其特征在于,所述纠错信息还包括第一内存颗粒的故障错误的属性,所述历史纠错信息还包括第二内存颗粒的故障错误的属性,其中,所述故障错误的属性包括可纠正错误ce或不可纠正错误uce;所述确定所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同包括:确定所述第一内存颗粒的故障错误的属性和所述第二内存颗粒的故障错误的属性是否相同;在所述第一内存颗粒的故障错误的属性和所述第二内存颗粒的故障错误的属性相同的情况下,确定所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同。5.根据权利要求2至4任一权利要求所述的方法,其特征在于,所述纠错信息还包括第一内存颗粒的故障时间,所述历史纠错信息还包括第二内存颗粒的故障时间,所述确定所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同包括:在所述第一内存颗粒的故障时间和所述第二内存颗粒的故障时间不大于阈值的情况下,确定所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同。6.根据权利要求2至5任一权利要求所述的方法,其特征在于,所述在所述第一内存颗粒的内存排编号和第二内存颗粒的内存排编号不同的情况下,所述处理器确定所述故障类型为内存链路故障包括:在所述第一内存颗粒的内存排编号和所述第二内存颗粒的内存排编号不同,或者,所
述第一内存颗粒的次级内存排编号与所述第二内存颗粒的次级内存排编号不同的情况下,确定所述故障类型为内存链路故障。7.根据权利要求1至6任一权利要求所述的方法,其特征在于,所述处理器根据所述纠错信息和历史纠错信息确定故障类型包括:所述处理器将所述纠错信息和历史纠错信息输入故障诊断模型,获得故障类型,其中,所述故障诊断模型是使用样本集对神经网络进行训练后获得的,所述样本集包括样本输入数据和样本真实值,所述样本输入数据包括已知纠错信息和已知历史纠错信息,所述样本真实值包括已知故障类型。8.一种内存链路故障检测装置,其特征在于,所述装置包括:故障纠错模块,用于根据内存读写异常信息进行故障纠错,生成纠错信息,所述纠错信息包括读写异常的第一内存颗粒的故障地址信息;故障定位诊断模块,用于根据所述纠错信息和历史纠错信息确定故障类型,其中,所述故障类型包括非内存链路故障和内存链路故障,所述历史纠错信息包括历史读写异常的第二内存颗粒的故障地址信息。9.根据权利要求8所述的装置,其特征在于,所述第一内存颗粒的故障地址信息包括所述第一内存颗粒的颗粒编号和内存排编号,所述第二内存颗粒的故障地址信息包括所述第二内存颗粒的颗粒编号和内存排编号,所述第一内存颗粒和所述第二内存颗粒位于同一根内存条上;所述故障定位诊断模块,用于确定所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同;所述故障定位诊断模块,用于在所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号相同的情况下,确定所述第一内存颗粒的内存排编号和第二内存颗粒的内存排编号是否相同;所述故障定位诊断模块,用于在所述第一内存颗粒的内存排编号和第二内存颗粒的内存排编号不同的情况下,确定所述故障类型为内存链路故障。10.根据权利要求8所述的装置,其特征在于,所述故障定位诊断模块,用于在所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号不同,或者,所述第一内存颗粒的内存排编号和所述第二内存颗粒的内存排编号相同的情况下,确定所述故障类型为非内存链路故障。11.根据权利要求8至10任一权利要求所述的装置,其特征在于,所述纠错信息还包括第一内存颗粒的故障错误的属性,所述历史纠错信息还包括第二内存颗粒的故障错误的属性,其中,所述故障错误的属性包括可纠正错误ce或不可纠正错误uce;所述故障定位诊断模块,用于确定所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同包括:所述故障定位诊断模块,用于确定所述第一内存颗粒的故障错误的属性和所述第二内存颗粒的故障错误的属性是否相同;所述故障定位诊断模块,用于在所述第一内存颗粒的故障错误的属性和所述第二内存颗粒的故障错误的属性相同的情况下,确定所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同。
12.根据权利要求8至11任一权利要求所述的装置,其特征在于,所述纠错信息还包括第一内存颗粒的故障时间,所述历史纠错信息还包括第二内存颗粒的故障时间;所述故障定位诊断模块,用于在所述第一内存颗粒的故障时间和所述第二内存颗粒的故障时间不大于阈值的情况下,确定所述第一内存颗粒的颗粒编号与所述第二内存颗粒的颗粒编号是否相同。13.根据权利要求8至12任一权利要求所述的装置,其特征在于,所述故障定位诊断模块,用于在所述第一内存颗粒的内存排编号和所述第二内存颗粒的内存排编号不同,或者,所述第一内存颗粒的次级内存排编号与所述第二内存颗粒的次级内存排编号不同的情况下,确定所述故障类型为内存链路故障。14.一种计算设备,其特征在于,包括处理器和存储器,所述存储器存储有代码,所述处理器执行所述代码实现如权利要求1至7中任一权利要求所述的方法。

技术总结


本申请提供了一种内存链路故障检测的方法、装置及相关设备,该方法可包括以下步骤:处理器根据内存读写异常信息进行故障纠错,生成纠错信息,纠错信息包括读写异常的第一内存颗粒的故障地址信息,处理器根据纠错信息和历史纠错信息确定故障类型,其中,故障类型包括非内存链路故障和内存链路故障,历史纠错信息包括历史读写异常的第二内存颗粒的故障地址信息,从而避免多次故障检测,减少纠错成本,提高纠错效率。纠错效率。纠错效率。


技术研发人员:

鲍全洋 董伟 张文桂

受保护的技术使用者:

华为技术有限公司

技术研发日:

2021.09.02

技术公布日:

2023/3/6

本文发布于:2024-09-23 10:15:51,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/69682.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:内存   故障   颗粒   所述
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议