本技術(shù)涉及計算機,具體涉及一種故障診斷方法、設(shè)備及計算機可讀存儲介質(zhì)。
背景技術(shù):
1、隨著計算機技術(shù)的發(fā)展,計算機設(shè)備中集成有多個通過執(zhí)行軟件程序以實現(xiàn)不同預(yù)設(shè)功能的功能模塊,這些功能模塊在正式投產(chǎn)前需要執(zhí)行軟件程序來完成必要驗證操作,以處理器核為例,在對處理器核進行功能驗證的階段,處理器核需要運行操作系統(tǒng)程序,并進一步根據(jù)操作系統(tǒng)的運行過程確定處理器核是否能夠正常運行。
2、在處理器核運行操作系統(tǒng)過程中,需要運行的指令數(shù)達幾十億,研發(fā)人員需要在幾十億指令中確定執(zhí)行異常的指令,進而基于異常指令對處理器核進行診斷。由于指令數(shù)量龐大,異常指令定位周期長,對處理器核進行診斷需要花費大量時間,效率低下。
技術(shù)實現(xiàn)思路
1、有鑒于此,本技術(shù)致力于提供一種故障診斷方法、設(shè)備及計算機可讀存儲介質(zhì),以解決現(xiàn)有技術(shù)中異常指令定位周期長,功能模塊診斷效率低下的問題。
2、第一方面,本技術(shù)提供一種故障診斷方法,包括:
3、獲取待診斷功能模塊執(zhí)行樣本程序過程中的待處理指令流片段;
4、在多個標(biāo)志指令中確定距離所述待處理指令流片段的首條指令最近的目標(biāo)標(biāo)志指令,所述標(biāo)志指令包括正常執(zhí)行所述樣本程序產(chǎn)生的參考指令流中出現(xiàn)次數(shù)少于預(yù)設(shè)閾值的指令;
5、以所述目標(biāo)標(biāo)志指令為起始指令,在所述待處理指令流片段中確定與所述參考指令流在相同執(zhí)行次序處不一致的指令,得到異常指令;
6、基于所述異常指令對所述待診斷功能模塊進行故障分析。
7、在一種可能的實施方式中,所述在多個標(biāo)志指令中確定距離所述待處理指令流片段的首條指令最近的目標(biāo)標(biāo)志指令,包括:
8、在多個參考指令流片段中,確定包括所述待處理指令流片段的首條指令的至少一個目標(biāo)指令流片段,所述多個參考指令流片段由所述參考指令流按照預(yù)設(shè)步長劃分得到;
9、分別確定各所述目標(biāo)指令流片段包括的標(biāo)志指令;
10、在各所述目標(biāo)指令流片段包括的標(biāo)志指令中,確定距離所述首條指令最近的目標(biāo)標(biāo)志指令。
11、在一種可能的實施方式中,所述在多個參考指令流片段中,確定包括所述目標(biāo)指令流片段的首條指令的至少一個目標(biāo)指令流片段,包括:
12、獲取在所述待處理指令流片段之前,所述待診斷功能模塊已執(zhí)行所述樣本程序的指令數(shù)量;
13、基于所述指令數(shù)量以及所述預(yù)設(shè)步長,在所述多個參考指令流片段中確定至少一個包括所述首條指令的目標(biāo)指令流片段。
14、在一種可能的實施方式中,各所述參考指令流片段按照指令執(zhí)行次序編碼;
15、基于所述指令數(shù)量以及所述預(yù)設(shè)步長,在所述多個參考指令流片段中確定至少一個包括所述首條指令的目標(biāo)指令流片段,包括:
16、基于所述指令數(shù)量與所述預(yù)設(shè)步長之商確定基準(zhǔn)編碼;
17、基于所述基準(zhǔn)編碼以及預(yù)設(shè)篩選窗口確定多個目標(biāo)編碼,所述預(yù)設(shè)篩選窗口用于限定目標(biāo)編碼的范圍且所述多個目標(biāo)編碼包括所述基準(zhǔn)編碼;
18、在各所述目標(biāo)編碼對應(yīng)的參考指令流片段中確定至少一個包括所述首條指令的目標(biāo)指令流片段。
19、在一種可能的實施方式中,所述在多個參考指令流片段中,確定包括所述待處理指令流片段的首條指令的至少一個目標(biāo)指令流片段,包括:
20、在多個參考指令流片段中,確定與所述待處理指令流片段對應(yīng)的目標(biāo)格式匹配的參考指令流片段;
21、在與所述目標(biāo)格式匹配的參考指令流片段中,確定包括所述待處理指令流片段的首條指令的至少一個目標(biāo)指令流片段;
22、或者,
23、確定所述待處理指令流片段中任一指令所屬目標(biāo)函數(shù)的函數(shù)特征;
24、在多個參考指令流片段中,確定與所述函數(shù)特征匹配的參考指令流片段;
25、在與所述函數(shù)特征匹配的參考指令流片段中,確定包括所述待處理指令流片段的首條指令的至少一個目標(biāo)指令流片段。
26、在一種可能的實施方式中,所述分別確定各所述目標(biāo)指令流片段包括的標(biāo)志指令,包括:
27、根據(jù)參考指令流片段與標(biāo)志指令之間的預(yù)設(shè)映射關(guān)系,確定各所述目標(biāo)指令流片段包括的標(biāo)志指令。
28、在一種可能的實施方式中,各所述參考指令流片段按照指令執(zhí)行次序編碼;
29、所述預(yù)設(shè)映射關(guān)系包括各所述參考指令流片段的編碼與標(biāo)志指令之間的映射關(guān)系。
30、在一種可能的實施方式中,創(chuàng)建所述預(yù)設(shè)映射關(guān)系的過程,包括:
31、獲取已驗證硬件模塊正常執(zhí)行所述樣本程序產(chǎn)生的參考指令流;
32、確定所述參考指令流中出現(xiàn)次數(shù)小于所述預(yù)設(shè)閾值的指令為標(biāo)志指令;
33、按照預(yù)設(shè)步長將所述參考指令流劃分為多個參考指令流片段,并確定每一個所述參考指令流片段包括的標(biāo)志指令;
34、基于各所述參考指令流片段以及各所述參考指令流片段包括的標(biāo)志指令,創(chuàng)建標(biāo)志指令與參考指令流片段之間的預(yù)設(shè)映射關(guān)系。
35、在一種可能的實施方式中,以所述目標(biāo)標(biāo)志指令為起始指令,在所述待處理指令流片段中確定與所述參考指令流在相同執(zhí)行次序處不一致的指令,得到異常指令,包括:
36、在所述待處理指令流片段中提取以所述目標(biāo)標(biāo)志指令為起始指令,且包括所述異常指令的第一指令流片段;
37、在所述參考指令流中提取以所述目標(biāo)標(biāo)志指令為起始指令,且長度大于或等于所述第一指令流片段的第二指令流片段;
38、在所述第一指令流片段中,確定與所述第二指令流片段在相同執(zhí)行次序處不一致的指令,得到異常指令。
39、第二方面,本技術(shù)提供一種故障診斷設(shè)備,包括:加載模塊和診斷模塊,其中,
40、所述加載模塊用于加載待診斷功能模塊并控制所述待診斷功能模塊執(zhí)行樣本程序;
41、所述診斷模塊與所述加載模塊通信連接,用于執(zhí)行如本技術(shù)第一方面任一項所述的故障診斷方法。
42、第三方面,本技術(shù)提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如本技術(shù)第一方面中任一項所述故障診斷方法的步驟。
43、基于上述內(nèi)容,本技術(shù)提供的故障診斷方法,將正常執(zhí)行樣本程序產(chǎn)生的參考指令流中出現(xiàn)次數(shù)少于預(yù)設(shè)閾值的指令作為標(biāo)志指令,基于此,在獲取包括異常指令的待處理指令流片段之后,在多個標(biāo)志指令中確定距離待處理指令流片段的首條指令最近的目標(biāo)標(biāo)志指令,進一步以目標(biāo)標(biāo)志指令為起始指令,在待處理指令流片段中確定與參考指令流在相同執(zhí)行次序處不一致的指令,進而定位到異常指令,最終基于異常指令對待診斷功能模塊進行故障分析。本方法以目標(biāo)標(biāo)志指令為起始指令比對待處理指令流片段與參考指令流,不僅可以保證比對過程的起始位置一致,同時,由于目標(biāo)標(biāo)志指令是出現(xiàn)次數(shù)較少的指令,還可以提高確定起始位置的效率,以參考指令流作為定位異常指令的標(biāo)準(zhǔn),可以確保異常指令定位過程的可靠性,避免因為定位錯誤引起的重復(fù)定位操作,因此,本方法可以有效縮短異常指令定位周期長,提高功能模塊的診斷效率。