本發(fā)明適用于處理器,尤其涉及一種處理器流水線裝置、分支指令處理方法及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、中央處理單元(cpu),通常也被稱為處理器,是基于處理器的系統(tǒng)的核心組件,處理器出現(xiàn)在不限于移動(dòng)通信設(shè)備、智能計(jì)算終端、智能駕駛控制、智能家電設(shè)備等領(lǐng)域,并被廣泛應(yīng)用于各種計(jì)算設(shè)備中,負(fù)責(zé)執(zhí)行針對(duì)各類應(yīng)用的計(jì)算任務(wù)。隨著人工智能的爆發(fā)式增長(zhǎng)和物聯(lián)網(wǎng)的萬(wàn)物互聯(lián)概念的深入,兼?zhèn)涓咝阅苡?jì)算和低功耗的處理器成為各個(gè)領(lǐng)域所追捧的控制中樞基石。
2、在面對(duì)愈發(fā)復(fù)雜的使用場(chǎng)景和實(shí)時(shí)控制的需求,處理器往往需要運(yùn)行比以往更為復(fù)雜的應(yīng)用程序。在這些復(fù)雜控制類的應(yīng)用程序當(dāng)中,分支指令占整個(gè)程序指令的占比將會(huì)更高,分支指令能夠改變計(jì)算機(jī)按順序處理指令的默認(rèn)行為,使程序在與分支指令之后的下一指令不同的分支目標(biāo)地址處,開(kāi)始處理不同的指令序列。
3、現(xiàn)代處理器大多采用亂序發(fā)射的架構(gòu),分支指令和其他運(yùn)算類指令在處理器流水線中完成取指、譯碼階段之后,將會(huì)被亂序地發(fā)送到流水線下游的處理單元當(dāng)中,然后通過(guò)重排序緩沖器(reorder?buffer,rob)對(duì)亂序執(zhí)行的指令按照程序的執(zhí)行順序進(jìn)行回收和提交,而為了提高分支指令的執(zhí)行效率,通常采用前端分支預(yù)測(cè)結(jié)合后端分支執(zhí)行與更新的方式,其中,前端的分支預(yù)測(cè)準(zhǔn)確率依賴后端的分支指令執(zhí)行后的正確結(jié)果的及時(shí)反饋,一般的,分支指令的錯(cuò)誤預(yù)測(cè)需要沖刷處理器的流水線并使其重新啟動(dòng)。
4、然而,如圖1所示,如果出現(xiàn)了一條預(yù)測(cè)錯(cuò)誤的分支指令,它需要按照正確的程序順序,等待前面的運(yùn)算指令完成提交后,才能提交并更新前端的預(yù)測(cè)器,這就導(dǎo)致在流水線沖刷完成前的這段時(shí)間中,預(yù)測(cè)器一直使用錯(cuò)誤的預(yù)測(cè)歷史進(jìn)行后續(xù)的分支預(yù)測(cè),因此會(huì)浪費(fèi)較多的時(shí)間,對(duì)分支指令的高效執(zhí)行以及整個(gè)應(yīng)用程序的執(zhí)行速度造成影響。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明提供一種處理器流水線裝置、分支指令處理方法及存儲(chǔ)介質(zhì),旨在解決現(xiàn)有處理器流水線在處理預(yù)測(cè)錯(cuò)誤的分支指令時(shí)存在的耗時(shí)過(guò)長(zhǎng)問(wèn)題。
2、為解決上述技術(shù)問(wèn)題,第一方面,本發(fā)明提供一種處理器流水線裝置,所述處理器流水線裝置包括前端處理模塊和后端處理模塊,其中:
3、所述前端處理模塊包括取指單元、分支預(yù)測(cè)單元和譯碼單元,所述取指單元用于從內(nèi)存中讀取指令;所述分支預(yù)測(cè)單元用于根據(jù)所述指令進(jìn)行分支預(yù)測(cè),得到與所述指令對(duì)應(yīng)的分支指令;所述譯碼單元用于對(duì)所述分支指令進(jìn)行譯碼,并將完成譯碼后的所述分支指令亂序發(fā)送至所述后端處理模塊;
4、所述后端處理模塊包括亂序執(zhí)行流水單元、分支執(zhí)行單元和分支堆單元,所述亂序執(zhí)行流水單元用于存放所述前端處理模塊發(fā)送的所述分支指令,并將所述分支指令以隊(duì)列的方式依次發(fā)送至所述分支堆單元;所述分支執(zhí)行單元用于執(zhí)行所述分支指令;所述分支堆單元用于緩存所述分支指令和所述分支執(zhí)行單元執(zhí)行所述分支指令所產(chǎn)生的執(zhí)行結(jié)果,并將對(duì)應(yīng)的所述分支指令返回所述分支預(yù)測(cè)單元。
5、更進(jìn)一步地,所述分支堆單元還用于:
6、獲取所述前端處理模塊發(fā)送的所述分支指令,并根據(jù)所述分支指令的預(yù)測(cè)執(zhí)行順序?qū)⑵渚彺妫瑫r(shí),為緩存的每一個(gè)所述分支指令建立對(duì)應(yīng)的分支堆空間索引。
7、更進(jìn)一步地,所述分支堆單元還用于:
8、根據(jù)所述分支堆空間索引,在緩存中讀取對(duì)應(yīng)的所述分支指令,并將所述分支指令送入所述分支執(zhí)行單元進(jìn)行指令執(zhí)行。
9、更進(jìn)一步地,所述分支堆單元還用于:
10、獲取所述分支執(zhí)行單元執(zhí)行所述分支指令所產(chǎn)生的所述執(zhí)行結(jié)果,并根據(jù)所述分支指令對(duì)應(yīng)的所述分支堆空間索引,將所述執(zhí)行結(jié)果緩存至與所述分支指令相同的緩存空間中。
11、更進(jìn)一步地,所述分支堆單元還用于:
12、判斷已緩存的所述分支指令是否具有對(duì)應(yīng)的所述執(zhí)行結(jié)果,其中:
13、若是,則將具有所述執(zhí)行結(jié)果的所述分支指令從緩存空間中讀出,并將所述分支指令返回所述分支預(yù)測(cè)單元,同時(shí)將所述分支指令及其對(duì)應(yīng)的所述執(zhí)行結(jié)果從緩存空間中移除。
14、更進(jìn)一步地,所述分支堆單元還用于:
15、判斷已緩存的緩存順序最舊的一條所述分支指令是否具有對(duì)應(yīng)的所述執(zhí)行結(jié)果,其中:
16、若是,則將具有所述執(zhí)行結(jié)果的所述分支指令從緩存空間中讀出,并將所述分支指令返回所述分支預(yù)測(cè)單元,同時(shí)將所述分支指令及其對(duì)應(yīng)的所述執(zhí)行結(jié)果從緩存空間中移除。
17、第二方面,本發(fā)明還提供一種分支指令處理方法,所述分支指令處理方法基于如上所述的處理器流水線裝置實(shí)現(xiàn),所述分支指令處理方法包括以下步驟:
18、通過(guò)前端處理模塊的取指單元、分支預(yù)測(cè)單元讀取指令,并通過(guò)分支預(yù)測(cè)得到所述指令預(yù)測(cè)的分支指令,通過(guò)譯碼單元對(duì)所述分支指令進(jìn)行譯碼后,將所述分支指令送入后端處理模塊;
19、通過(guò)所述后端處理模塊的亂序執(zhí)行流水單元存放所述前端處理模塊發(fā)送的所述分支指令,同時(shí),在分支堆單元中根據(jù)預(yù)測(cè)執(zhí)行順序緩存所述分支指令;
20、由分支執(zhí)行單元執(zhí)行所述分支指令,并得到對(duì)應(yīng)的執(zhí)行結(jié)果;
21、通過(guò)所述分支堆單元緩存所述分支指令對(duì)應(yīng)的執(zhí)行結(jié)果,并將具有所述執(zhí)行結(jié)果的所述分支指令返回所述分支預(yù)測(cè)單元。
22、更進(jìn)一步地,通過(guò)所述分支堆單元緩存所述分支指令對(duì)應(yīng)的執(zhí)行結(jié)果,并將具有所述執(zhí)行結(jié)果的所述分支指令返回所述分支預(yù)測(cè)單元的步驟中;
23、判斷已緩存的所述分支指令是否具有對(duì)應(yīng)的所述執(zhí)行結(jié)果,其中:
24、若是,則將具有所述執(zhí)行結(jié)果的所述分支指令從緩存空間中讀出,并將所述分支指令返回所述分支預(yù)測(cè)單元,同時(shí)將所述分支指令及其對(duì)應(yīng)的所述執(zhí)行結(jié)果從緩存空間中移除;
25、或:
26、判斷已緩存的緩存順序最舊的一條所述分支指令是否具有對(duì)應(yīng)的所述執(zhí)行結(jié)果,其中:
27、若是,則將具有所述執(zhí)行結(jié)果的所述分支指令從緩存空間中讀出,并將所述分支指令返回所述分支預(yù)測(cè)單元,同時(shí)將所述分支指令及其對(duì)應(yīng)的所述執(zhí)行結(jié)果從緩存空間中移除。
28、第三方面,本發(fā)明還提供一種計(jì)算機(jī)設(shè)備,包括:存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的分支指令處理程序,所述處理器執(zhí)行所述分支指令處理程序時(shí)實(shí)現(xiàn)如上述實(shí)施例中任意一項(xiàng)所述的分支指令處理方法中的步驟。
29、第四方面,本發(fā)明還提供一種存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)上存儲(chǔ)有分支指令處理程序,所述分支指令處理程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上述實(shí)施例中任意一項(xiàng)所述的分支指令處理方法中的步驟。
30、本發(fā)明所達(dá)到的有益效果,在于提出了一種具有分支堆單元結(jié)構(gòu)的處理器流水線裝置,該處理器流水線裝置的分支堆單元能夠針對(duì)分支指令實(shí)現(xiàn)重排序緩沖,分支指令通過(guò)分支堆單元可以實(shí)現(xiàn)亂序執(zhí)行的同時(shí),還能夠根據(jù)需要進(jìn)行亂序更新或順序更新前端的分支預(yù)測(cè)單元,使處理器可以在高性能和高能效兩種場(chǎng)景切換,同時(shí),分支堆單元可以加快分支指令的提交效率,并減少分支指令在流水線上流轉(zhuǎn)的時(shí)間,降低處理器功耗。
1.一種處理器流水線裝置,其特征在于,所述處理器流水線裝置包括前端處理模塊和后端處理模塊,其中:
2.根據(jù)權(quán)利要求1所述的處理器流水線裝置,其特征在于,所述分支堆單元還用于:
3.根據(jù)權(quán)利要求2所述的處理器流水線裝置,其特征在于,所述分支堆單元還用于:
4.根據(jù)權(quán)利要求2所述的處理器流水線裝置,其特征在于,所述分支堆單元還用于:
5.根據(jù)權(quán)利要求4所述的處理器流水線裝置,其特征在于,所述分支堆單元還用于:
6.根據(jù)權(quán)利要求4所述的處理器流水線裝置,其特征在于,所述分支堆單元還用于:
7.一種分支指令處理方法,其特征在于,所述分支指令處理方法基于權(quán)利要求1-6任意一項(xiàng)所述的處理器流水線裝置實(shí)現(xiàn),所述分支指令處理方法包括以下步驟:
8.根據(jù)權(quán)利要求7所述的分支指令處理方法,其特征在于,通過(guò)所述分支堆單元緩存所述分支指令對(duì)應(yīng)的執(zhí)行結(jié)果,并將具有所述執(zhí)行結(jié)果的所述分支指令返回所述分支預(yù)測(cè)單元的步驟中;
9.一種計(jì)算機(jī)設(shè)備,其特征在于,包括:存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的分支指令處理程序,所述處理器執(zhí)行所述分支指令處理程序時(shí)實(shí)現(xiàn)如權(quán)利要求7-8中任意一項(xiàng)所述的分支指令處理方法中的步驟。
10.一種存儲(chǔ)介質(zhì),其特征在于,所述存儲(chǔ)介質(zhì)上存儲(chǔ)有分支指令處理程序,所述分支指令處理程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求7-8中任意一項(xiàng)所述的分支指令處理方法中的步驟。