本申請涉及計算機,具體涉及一種指令分析方法、設(shè)備及計算機可讀存儲介質(zhì)。
背景技術(shù):
1、在處理器核的微架構(gòu)中,包括多個用于實現(xiàn)不同預(yù)設(shè)功能的單元,比如取指單元、指令隊列、發(fā)射單元以及執(zhí)行單元等,各個單元相互配合完成對軟件程序不同指令的執(zhí)行。
2、在對處理器核進行功能驗證過程中,需要根據(jù)驗證結(jié)果迭代更新微架構(gòu)中的相關(guān)單元,而微架構(gòu)中任一單元的更新,都有可能導(dǎo)致指令異常,而處理器核驗證需要運行的指令的數(shù)量達到數(shù)十億級別,因此,一旦運行過程中出現(xiàn)異常指令,查找難度巨大,不僅定位周期長,而且需要耗費大量的人力,嚴(yán)重影響處理器核的驗證效率。
技術(shù)實現(xiàn)思路
1、有鑒于此,本申請致力于提供一種指令分析方法、設(shè)備及計算機可讀存儲介質(zhì),以解決現(xiàn)有技術(shù)中異常指令定位周期長,耗費大量人力,嚴(yán)重影響處理器核驗證效率的問題。
2、第一方面,本申請?zhí)峁┮环N指令分析方法,包括:
3、獲取處理器核運行軟件程序過程中的信息流片段,所述信息流片段包括多條信息流,所述信息流包括指令對應(yīng)的程序計數(shù)pc值以及指令碼;
4、分別判斷所述信息流片段中各指令的pc值是否對應(yīng)不同的指令碼;
5、確定pc值對應(yīng)不同指令碼的指令為異常指令。
6、在一種可選的實施方式中,所述分別判斷所述信息流片段中各指令的pc值是否對應(yīng)不同的指令碼,包括:
7、在所述信息流片段中提取第一信息流和第二信息流,所述第一信息流包括所述信息流片段中的任一信息流,所述第二信息流包括所述信息流片段中所述第一信息流以外的任一信息流;
8、判斷所述第一信息流中的pc值是否與所述第二信息流中的pc值相同;
9、若相同,判斷所述第一信息流中的指令碼與所述第二信息流中的指令碼是否相同。
10、在一種可選的實施方式中,所述確定pc值對應(yīng)不同指令碼的指令為異常指令,包括:
11、若所述第一信息流中的pc值與所述第二信息流中的pc值相同,且所述第一信息流中的指令碼與所述第二信息流中的指令碼不同,確定所述第一信息流中的pc值對應(yīng)的指令為異常指令。
12、在一種可選的實施方式中,在所述信息流片段中提取第一信息流,包括:
13、按照所述信息流片段中記錄的各所述信息流的先后順序,依次將各所述信息流作為第一信息流;
14、將所述第一信息流中的pc值和指令碼按照預(yù)設(shè)數(shù)據(jù)格式記錄。
15、在一種可選的實施方式中,將所述第一信息流中的pc值和指令碼按照預(yù)設(shè)數(shù)據(jù)格式記錄,包括:
16、創(chuàng)建鍵值對數(shù)組;
17、在所述鍵值對數(shù)組中存儲所述第一信息流中的pc值和指令碼。
18、在一種可選的實施方式中,所述方法還包括:
19、若所述第一信息流的pc值與各所述第二信息流的pc值均不相同,對所述第一信息流中pc值對應(yīng)的指令進行反匯編處理;
20、基于反匯編處理結(jié)果確定所述第一信息流中的pc值對應(yīng)的指令是否異常。
21、在一種可選的實施方式中,所述基于反匯編處理結(jié)果確定所述第一信息流中的pc值對應(yīng)的指令是否異常,包括:
22、提取反匯編結(jié)果包括的當(dāng)前指令碼;
23、獲取所述第一信息流中的初始指令碼;
24、若所述當(dāng)前指令碼與所述初始指令碼一致,確定所述第一信息流中pc值對應(yīng)的指令正常;
25、若所述當(dāng)前指令碼與所述初始指令碼不一致,確定所述第一信息流中pc值對應(yīng)的指令異常。
26、在一種可選的實施方式中,所述方法還包括:根據(jù)所述異常指令對所述處理器核進行故障分析。
27、第二方面,本申請?zhí)峁┮环N指令分析設(shè)備,包括:加載模塊和診斷模塊,其中,
28、所述加載模塊用于加載處理器核并控制所述處理器核執(zhí)行軟件程序;
29、所述診斷模塊與所述加載模塊通信連接,用于執(zhí)行如本申請第一方面任一項所述的指令分析方法。
30、第三方面,本申請?zhí)峁┮环N計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)如本申請第一方面中任一項所述指令分析方法的步驟。
31、基于上述內(nèi)容,本申請?zhí)峁┑闹噶罘治龇椒ǎ紫全@取處理器核運行軟件程序過程中的信息流片段,所得信息流片段包括多條信息流,且任一信息流包括指令對應(yīng)的pc值和指令碼,然后分別判斷信息流片段中的各指令的pc值是否對應(yīng)不同的指令碼,確定pc值對應(yīng)不同指令碼的指令為異常指令,本方法基于一條指令的pc值對應(yīng)唯一的指令碼這一原則,通過比對信息流片段中pc值與指令碼之間的對應(yīng)關(guān)系,確定pc值對應(yīng)不同指令碼的異常指令,實現(xiàn)異常指令的有效篩選,降低異常指令查找難度,縮短定位周期,節(jié)省人力的同時,提高處理器核的驗證效率。
1.一種指令分析方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述分別判斷所述信息流片段中各指令的pc值是否對應(yīng)不同的指令碼,包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述確定pc值對應(yīng)不同指令碼的指令為異常指令,包括:
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述信息流片段中提取第一信息流,包括:
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,將所述第一信息流中的pc值和指令碼按照預(yù)設(shè)數(shù)據(jù)格式記錄,包括:
6.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括:
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述基于反匯編處理結(jié)果確定所述第一信息流中的pc值對應(yīng)的指令是否異常,包括:
8.根據(jù)權(quán)利要求1至7任一項所述的方法,其特征在于,所述方法還包括:根據(jù)所述異常指令對所述處理器核進行故障分析。
9.一種指令分析設(shè)備,其特征在于,包括:加載模塊和診斷模塊,其中,
10.一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至8中任一項所述指令分析方法的步驟。