本發(fā)明涉及計(jì)算機(jī),尤其涉及一種指令執(zhí)行方法、裝置、系統(tǒng)、設(shè)備和存儲(chǔ)介質(zhì)。
背景技術(shù):
1、隨著處理器架構(gòu)的復(fù)雜化和性能需求的提升,分支預(yù)測(cè)技術(shù)成為決定處理器性能的關(guān)鍵因素之一。目前,處理器流水線的長(zhǎng)度和深度不斷增加,而條件分支指令的頻繁出現(xiàn)會(huì)導(dǎo)致指令流的中斷和流水線的沖突,嚴(yán)重影響處理器的吞吐量和執(zhí)行效率。因此,如何準(zhǔn)確預(yù)測(cè)分支的走向并減少誤預(yù)測(cè)帶來(lái)的性能損失,以確保指令執(zhí)行的準(zhǔn)確性,成為現(xiàn)代處理器設(shè)計(jì)中的一個(gè)重要課題。
技術(shù)實(shí)現(xiàn)思路
1、為了解決上述技術(shù)問(wèn)題,本公開(kāi)實(shí)施例提供了一種指令執(zhí)行方法、裝置、系統(tǒng)、設(shè)備和存儲(chǔ)介質(zhì)。
2、第一方面,本公開(kāi)實(shí)施例提供了一種指令執(zhí)行方法,方法包括:
3、獲取當(dāng)前分支指令的當(dāng)前指令信息和分支歷史信息;
4、通過(guò)預(yù)先訓(xùn)練好的部署在硬件加速器上的推理模型,基于當(dāng)前指令信息和分支歷史信息計(jì)算當(dāng)前述分支指令的跳轉(zhuǎn)概率值;
5、根據(jù)跳轉(zhuǎn)概率值和設(shè)定的分支預(yù)測(cè)決策確定分支預(yù)測(cè)結(jié)果;其中,分支預(yù)測(cè)結(jié)果包括預(yù)測(cè)執(zhí)行結(jié)果和目標(biāo)指令信息;
6、基于預(yù)測(cè)執(zhí)行結(jié)果,執(zhí)行根據(jù)目標(biāo)指令信息確定的目標(biāo)指令。
7、可選的,基于預(yù)測(cè)執(zhí)行結(jié)果,執(zhí)行根據(jù)目標(biāo)指令信息確定的目標(biāo)指令,包括:
8、若預(yù)測(cè)執(zhí)行結(jié)果是跳轉(zhuǎn),則在當(dāng)前分支指令執(zhí)行完之前,通過(guò)其他處理階段執(zhí)行根據(jù)目標(biāo)指令信息確定的目標(biāo)指令,并生成執(zhí)行數(shù)據(jù);其中,執(zhí)行數(shù)據(jù)是當(dāng)前分支指令所在目標(biāo)處理階段中至少一個(gè)未執(zhí)行指令所需的數(shù)據(jù),其他處理階段和目標(biāo)處理階段不同;或者,
9、若預(yù)測(cè)執(zhí)行結(jié)果是不跳轉(zhuǎn),則在當(dāng)前分支指令執(zhí)行完之后,通過(guò)目標(biāo)處理階段繼續(xù)執(zhí)行根據(jù)目標(biāo)指令信息確定的目標(biāo)指令,并生成執(zhí)行數(shù)據(jù);其中,至少一個(gè)未執(zhí)行指令包括目標(biāo)指令。
10、可選的,基于預(yù)測(cè)執(zhí)行結(jié)果,執(zhí)行根據(jù)目標(biāo)指令信息確定的目標(biāo)指令后,方法還包括:
11、獲取當(dāng)前分支指令執(zhí)行完之后生成的實(shí)際執(zhí)行結(jié)果;
12、將實(shí)際執(zhí)行結(jié)果和分支預(yù)測(cè)結(jié)果進(jìn)行比較,生成誤差信息,并根據(jù)實(shí)際執(zhí)行結(jié)果更新分支歷史信息;
13、根據(jù)誤差信息調(diào)整推理模型的模型參數(shù),得到調(diào)整后的推理模型;其中,調(diào)整后的推理模型用于下一分支指令的預(yù)測(cè)。
14、可選的,執(zhí)行根據(jù)目標(biāo)指令信息確定的目標(biāo)指令,包括:
15、根據(jù)目標(biāo)指令信息確定目標(biāo)指令,并將目標(biāo)指令加載到指令寄存器中,以對(duì)目標(biāo)指令進(jìn)行譯碼;
16、根據(jù)譯碼后的執(zhí)行信息執(zhí)行相應(yīng)的操作。
17、其中,當(dāng)前指令信息包括分支指令地址和分支指令類(lèi)型,分支歷史信息包括預(yù)設(shè)時(shí)段內(nèi)當(dāng)前分支指令所在程序中多個(gè)分支的執(zhí)行信息,分支歷史信息反映了程序運(yùn)行時(shí)的分支行為模式。
18、可選的,基于當(dāng)前指令信息和分支歷史信息計(jì)算當(dāng)前述分支指令的跳轉(zhuǎn)概率值,包括:
19、通過(guò)哈希函數(shù)將分支歷史信息、當(dāng)前分支指令地址和當(dāng)前分支指令類(lèi)型映射到設(shè)定長(zhǎng)度的第一向量;第一向量是指適用于推理模型的數(shù)值形式;
20、基于第一向量,捕捉程序執(zhí)行中的時(shí)間依賴(lài)關(guān)系,生成第二向量;
21、使用sigmoid激活函數(shù),基于第二向量計(jì)算當(dāng)前述分支指令的跳轉(zhuǎn)概率值。
22、可選的,獲取當(dāng)前分支指令的當(dāng)前指令信息和分支歷史信息之前,方法還包括:
23、在risc-v內(nèi)核中設(shè)計(jì)推理模型,以構(gòu)建硬件加速器;
24、將硬件加速器集成在處理器內(nèi)核中;其中,處理器用于執(zhí)行當(dāng)前分支指令和目標(biāo)指令;
25、為硬件加速器設(shè)置專(zhuān)用接口單元;其中,專(zhuān)用接口單元用于獲取當(dāng)前指令信息和分支歷史信息。
26、第二方面,本公開(kāi)實(shí)施例提供了一種指令執(zhí)行裝置,裝置包括:
27、獲取單元,用于獲取當(dāng)前分支指令的當(dāng)前指令信息和分支歷史信息;
28、推理單元,用于通過(guò)預(yù)先訓(xùn)練好的部署在硬件加速器上的推理模型,基于當(dāng)前指令信息和分支歷史信息計(jì)算當(dāng)前述分支指令的跳轉(zhuǎn)概率值;
29、決策單元,用于根據(jù)跳轉(zhuǎn)概率值和設(shè)定的分支預(yù)測(cè)決策確定分支預(yù)測(cè)結(jié)果;其中,分支預(yù)測(cè)結(jié)果包括預(yù)測(cè)執(zhí)行結(jié)果和目標(biāo)指令信息;
30、執(zhí)行單元,用于基于預(yù)測(cè)執(zhí)行結(jié)果,執(zhí)行根據(jù)目標(biāo)指令信息確定的目標(biāo)指令。
31、第三方面,本公開(kāi)實(shí)施例提供了一種指令執(zhí)行系統(tǒng),系統(tǒng)包括特征提取與預(yù)處理模塊、硬件加速器、分支預(yù)測(cè)決策模塊、指令獲取模塊、指令執(zhí)行模塊和歷史記錄模塊,其中:
32、指令獲取模塊用于獲取當(dāng)前分支指令的當(dāng)前指令信息;其中,當(dāng)前指令信息包括分支指令地址和分支指令類(lèi)型;
33、歷史記錄模塊用于存儲(chǔ)當(dāng)前分支指令的分支歷史信息;
34、特征提取與預(yù)處理模塊用于通過(guò)哈希函數(shù)將分支歷史信息、當(dāng)前分支指令地址和當(dāng)前分支指令類(lèi)型映射到設(shè)定長(zhǎng)度的第一向量;
35、硬件加速器用于通過(guò)預(yù)先訓(xùn)練好的推理模型,基于當(dāng)前指令信息和分支歷史信息計(jì)算當(dāng)前述分支指令的跳轉(zhuǎn)概率值;
36、分支預(yù)測(cè)決策模塊用于根據(jù)跳轉(zhuǎn)概率值和設(shè)定的分支預(yù)測(cè)決策確定分支預(yù)測(cè)結(jié)果;其中,分支預(yù)測(cè)結(jié)果包括預(yù)測(cè)執(zhí)行結(jié)果和目標(biāo)指令信息;
37、指令執(zhí)行模塊用于基于預(yù)測(cè)執(zhí)行結(jié)果,執(zhí)行根據(jù)目標(biāo)指令信息確定的目標(biāo)指令。
38、第四方面,本公開(kāi)實(shí)施例提供了一種電子設(shè)備,包括:
39、存儲(chǔ)器;
40、處理器;以及
41、計(jì)算機(jī)程序;
42、其中,計(jì)算機(jī)程序存儲(chǔ)在存儲(chǔ)器中,并被配置為由處理器執(zhí)行以實(shí)現(xiàn)如上述的第一方面的方法。
43、第五方面,本公開(kāi)實(shí)施例提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如第一方面方法的步驟。
44、本公開(kāi)提供的指令執(zhí)行方法,包括:獲取當(dāng)前分支指令的當(dāng)前指令信息和分支歷史信息;通過(guò)預(yù)先訓(xùn)練好的部署在硬件加速器上的推理模型,基于當(dāng)前指令信息和分支歷史信息計(jì)算當(dāng)前述分支指令的跳轉(zhuǎn)概率值;根據(jù)跳轉(zhuǎn)概率值和設(shè)定的分支預(yù)測(cè)決策確定分支預(yù)測(cè)結(jié)果;其中,分支預(yù)測(cè)結(jié)果包括預(yù)測(cè)執(zhí)行結(jié)果和目標(biāo)指令信息;基于預(yù)測(cè)執(zhí)行結(jié)果,執(zhí)行根據(jù)目標(biāo)指令信息確定的目標(biāo)指令。本申請(qǐng)?zhí)峁┑姆椒ǎ岣吡朔种ьA(yù)測(cè)的精準(zhǔn)度,減少了誤預(yù)測(cè)導(dǎo)致的處理器性能損失,還確保了指令執(zhí)行的準(zhǔn)確性。
1.一種指令執(zhí)行方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述基于所述預(yù)測(cè)執(zhí)行結(jié)果,執(zhí)行根據(jù)所述目標(biāo)指令信息確定的目標(biāo)指令,包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述基于所述預(yù)測(cè)執(zhí)行結(jié)果,執(zhí)行根據(jù)所述目標(biāo)指令信息確定的目標(biāo)指令后,所述方法還包括:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述執(zhí)行根據(jù)所述目標(biāo)指令信息確定的目標(biāo)指令,包括:
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述當(dāng)前指令信息包括分支指令地址和分支指令類(lèi)型,所述分支歷史信息包括預(yù)設(shè)時(shí)段內(nèi)所述當(dāng)前分支指令所在程序中多個(gè)分支的執(zhí)行信息,所述分支歷史信息反映了所述程序運(yùn)行時(shí)的分支行為模式;所述基于所述當(dāng)前指令信息和所述分支歷史信息計(jì)算所述當(dāng)前述分支指令的跳轉(zhuǎn)概率值,包括:
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取當(dāng)前分支指令的當(dāng)前指令信息和分支歷史信息之前,所述方法還包括:
7.一種指令執(zhí)行裝置,其特征在于,所述裝置包括:
8.一種指令執(zhí)行系統(tǒng),其特征在于,所述系統(tǒng)包括特征提取與預(yù)處理模塊、硬件加速器、分支預(yù)測(cè)決策模塊、指令獲取模塊、指令執(zhí)行模塊和歷史記錄模塊,其中:
9.一種電子設(shè)備,其特征在于,包括:
10.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至6中任一所述的指令執(zhí)行方法的步驟。