本發(fā)明提出了一種具管線處理設(shè)計(jì)的處理器及執(zhí)行路徑預(yù)測(cè)方法,涉及數(shù)據(jù)預(yù)測(cè),特別涉及具管線處理設(shè)計(jì)的處理器及執(zhí)行路徑預(yù)測(cè)。
背景技術(shù):
1、一般在處理器(cpu)內(nèi)部對(duì)于一個(gè)指令的執(zhí)行,通常需要經(jīng)過(guò)包含以下步驟:fetch(獲取指令)、decode(譯碼指令)、execute(執(zhí)行指令)及write-back(寫回?cái)?shù)據(jù))。當(dāng)完全的執(zhí)行完各階段的步驟,則表示完成一條指令。
2、處理器的流水線(pipeline)處理,其可以同時(shí)且分段的執(zhí)行上述步驟,例如前一指令a執(zhí)行至譯碼指令時(shí),次一指令b可以開(kāi)始執(zhí)行獲取指令。如此一來(lái),通過(guò)此種執(zhí)行方式可以縮短執(zhí)行完所有指令的所需時(shí)間。
3、然而對(duì)于特定指令,例如「if」指令,其下一條指令必需根據(jù)「if」式中的結(jié)果是「true(真)」還是「false(假)」來(lái)決定,所以必須等到「if」指令執(zhí)行完,才能知道下一條指令是什么。此時(shí),無(wú)疑降低處理器的執(zhí)行效率,于是,現(xiàn)今處理器對(duì)于這種情況,都設(shè)計(jì)有一個(gè)分支預(yù)測(cè)(branch?prediction)機(jī)制,就是針對(duì)這種if指令,不等它執(zhí)行完畢,先預(yù)測(cè)一下執(zhí)行的結(jié)果可能是true還是false,然后將對(duì)應(yīng)條件的指令放進(jìn)流水線。
4、分支預(yù)測(cè)的使用范圍從每次單純地產(chǎn)生相同的預(yù)測(cè)的方法至在該程序中維持先前分支的復(fù)雜記錄以產(chǎn)生記錄型預(yù)測(cè)的方法。分支預(yù)測(cè)可以透過(guò)硬件優(yōu)化、編譯程序優(yōu)化或兩者皆使用而變得容易?;谕ㄟ^(guò)分支預(yù)測(cè)機(jī)制所提供的預(yù)測(cè),可以預(yù)測(cè)地存取及執(zhí)行指令。當(dāng)對(duì)分支指令做最終評(píng)估時(shí),可以確認(rèn)分支預(yù)測(cè)。若預(yù)測(cè)是不正確時(shí),可撤銷基于不正確的預(yù)測(cè)而預(yù)測(cè)執(zhí)行的任何指令。但是分支預(yù)測(cè)準(zhǔn)確率高代表更復(fù)雜的算法,同時(shí)還會(huì)影響cpu的周期時(shí)間。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明提供了一種具管線處理設(shè)計(jì)的處理器及執(zhí)行路徑預(yù)測(cè)方法,用以解決不正確的預(yù)測(cè)會(huì)造成效果損失等問(wèn)題:
2、本發(fā)明提出的一種具管線處理設(shè)計(jì)的處理器及執(zhí)行路徑預(yù)測(cè)方法,所述具管線處理設(shè)計(jì)的處理器包括內(nèi)存控制器、指令快取模塊、發(fā)送單元、排程器和執(zhí)行單元;其中,所述內(nèi)存控制器與指令快取模塊進(jìn)行電性連接;所述指令快取模塊與發(fā)送單元進(jìn)行電性連接;所述發(fā)送單元與排程器進(jìn)行電性連接;所述排程器與執(zhí)行單元進(jìn)行電性連接。
3、進(jìn)一步地,所述排程器與執(zhí)行單元進(jìn)行電性連接包括第一電性連接通道和第二電性連接通道;其中,所述第一電性連接通道用于運(yùn)作數(shù)據(jù)發(fā)送至所述排程器;所述第二電性連接通道用于確認(rèn)運(yùn)作數(shù)據(jù)重新發(fā)送至所述排程器。
4、進(jìn)一步地,所述內(nèi)存控制器與處理器所處系統(tǒng)的系統(tǒng)內(nèi)存進(jìn)行電性連接。
5、進(jìn)一步地,所述具管線處理設(shè)計(jì)的處理器還包括分支預(yù)測(cè)單元和數(shù)據(jù)快取模塊;其中,所述分支預(yù)測(cè)單元與所述執(zhí)行單元進(jìn)行電性連接,并且,所述分支預(yù)測(cè)單元與所述指令快取模塊進(jìn)行電性連接;所述數(shù)據(jù)快取模塊分別與執(zhí)行單元和內(nèi)存控制器進(jìn)行電性連接。
6、進(jìn)一步地,所述具管線處理設(shè)計(jì)的處理器還包括總線;其中,所述總線與所述執(zhí)行單元進(jìn)行電性連接。
7、進(jìn)一步地,所述具管線處理設(shè)計(jì)的處理器的執(zhí)行路徑預(yù)測(cè)方法包括:
8、將指令的執(zhí)行作為條件跳轉(zhuǎn)的預(yù)測(cè)滿足條件;
9、當(dāng)有跳轉(zhuǎn)請(qǐng)求的指令被讀取時(shí),則檢測(cè)條件跳轉(zhuǎn)預(yù)測(cè)指令對(duì)應(yīng)的條件跳轉(zhuǎn)的滿足條件是否發(fā)生;
10、當(dāng)所述條件跳轉(zhuǎn)的滿足條件沒(méi)有發(fā)生時(shí),則管線繼續(xù)執(zhí)行下一指令;
11、當(dāng)所述條件跳轉(zhuǎn)的滿足條件發(fā)生時(shí),則程序指針移到滿足條件的條件跳轉(zhuǎn)指令所請(qǐng)求的指定位置,管線自所述條件跳轉(zhuǎn)指令所請(qǐng)求的指定位置繼續(xù)執(zhí)行指令。
12、進(jìn)一步地,具有跳轉(zhuǎn)請(qǐng)求的該指令于第一次執(zhí)行,無(wú)論該先指令有無(wú)執(zhí)行過(guò),視為該條件跳轉(zhuǎn)的條件不滿足。
13、進(jìn)一步地,在所述條件跳轉(zhuǎn)的條件被滿足的情況下,具有跳轉(zhuǎn)請(qǐng)求的該指令再次被執(zhí)行時(shí),則該程序指針移動(dòng)到該跳轉(zhuǎn)請(qǐng)求所指定的位置。
14、進(jìn)一步地,所述條件跳轉(zhuǎn)所對(duì)應(yīng)的位置記錄于一條件跳轉(zhuǎn)記錄表中,且每一所述條件跳轉(zhuǎn)所對(duì)應(yīng)的位置可被標(biāo)注為有效的或無(wú)效的。
15、進(jìn)一步地,計(jì)算指令的指令權(quán)重系數(shù)和權(quán)重更新系數(shù),進(jìn)而計(jì)算權(quán)重調(diào)節(jié)系數(shù),對(duì)指令進(jìn)行權(quán)重調(diào)節(jié),包括:
16、獲取指令的歷史執(zhí)行數(shù)據(jù),根據(jù)所述指令的歷史執(zhí)行數(shù)據(jù)計(jì)算指令的指令權(quán)重系數(shù);
17、所述指令權(quán)重系數(shù)的計(jì)算公式為:
18、
19、其中,qzli為第i個(gè)指令的指令權(quán)重系數(shù),j為數(shù)據(jù)采集時(shí)間段的指令執(zhí)行記錄次數(shù),si為第i次記錄的時(shí)間衰減因子,用于減少舊執(zhí)行記錄對(duì)當(dāng)前權(quán)重的影響,ci?為第i次記錄中指令的成功執(zhí)行次數(shù),lvi為第i次記錄中指令的預(yù)設(shè)權(quán)重,zi為第i次記錄中指令的總執(zhí)行次數(shù);
20、根據(jù)指令執(zhí)行順序結(jié)合指令權(quán)重順序生成執(zhí)行預(yù)測(cè)路徑;
21、將所述每個(gè)指令的指令權(quán)重系數(shù)與預(yù)設(shè)權(quán)重范圍進(jìn)行對(duì)比,獲得權(quán)重對(duì)比結(jié)果;
22、所述權(quán)重對(duì)比結(jié)果包括范圍外指令和范圍內(nèi)指令;
23、將執(zhí)行預(yù)測(cè)路徑中的范圍外指令進(jìn)行剔除,獲得執(zhí)行更新路徑;
24、獲取指令執(zhí)行動(dòng)態(tài)變化數(shù)據(jù),根據(jù)所述指令執(zhí)行動(dòng)態(tài)變化數(shù)據(jù)對(duì)指令的歷史執(zhí)行數(shù)據(jù)進(jìn)行更新,獲得指令更新數(shù)據(jù);
25、根據(jù)所述權(quán)重對(duì)比結(jié)果、指令權(quán)重系數(shù)結(jié)合指令更新數(shù)據(jù)計(jì)算指令的權(quán)重更新系數(shù);
26、所述權(quán)重更新系數(shù)的計(jì)算公式為:
27、
28、其中,gzli為第i個(gè)指令的權(quán)重更新系數(shù),δci為第i次記錄中指令的成功執(zhí)行次數(shù)的增加變化量,?ci為第i次記錄中指令的成功執(zhí)行次數(shù);
29、根據(jù)所述權(quán)重更新系數(shù)對(duì)指令的指令權(quán)重系數(shù)進(jìn)行更新,進(jìn)而對(duì)執(zhí)行更新路徑進(jìn)行更新,獲得執(zhí)行變化路徑;
30、當(dāng)指令權(quán)重系數(shù)在預(yù)設(shè)權(quán)重范圍外,且權(quán)重更新系數(shù)在預(yù)設(shè)權(quán)重范圍內(nèi)時(shí),根據(jù)所述指令權(quán)重系數(shù)、權(quán)重更新系數(shù)結(jié)合預(yù)設(shè)權(quán)重范圍計(jì)算權(quán)重調(diào)節(jié)系數(shù);
31、所述權(quán)重調(diào)節(jié)系數(shù)的計(jì)算公式為:
32、
33、其中,tys為權(quán)重調(diào)節(jié)系數(shù),xx為預(yù)設(shè)權(quán)重范圍下限值,sx為預(yù)設(shè)權(quán)重范圍上限值;
34、根據(jù)所述權(quán)重調(diào)節(jié)系數(shù)對(duì)對(duì)應(yīng)指令的權(quán)重進(jìn)行調(diào)節(jié),直至指令的權(quán)重在預(yù)設(shè)權(quán)重范圍內(nèi)。
35、本發(fā)明有益效果:通過(guò)快取列具有跳轉(zhuǎn)地址的設(shè)計(jì),可以降低因?yàn)椴徽_的預(yù)測(cè)的效果損失,進(jìn)而提高程序的執(zhí)行效率。通過(guò)指令快取和分支預(yù)測(cè)技術(shù),減少了對(duì)系統(tǒng)內(nèi)存的訪問(wèn)次數(shù)和延遲,提高了指令的執(zhí)行效率。管線化處理使得指令可以并行執(zhí)行,進(jìn)一步提高了處理器的吞吐量。雙重電性連接通道(第一通道用于正常發(fā)送,第二通道用于重試)的設(shè)計(jì),使得處理器在處理異常情況時(shí)更加靈活和可靠??偩€接口提供了與外部設(shè)備通信的能力,增強(qiáng)了處理器的可擴(kuò)展性和兼容性。排程器根據(jù)指令的依賴關(guān)系和資源可用性進(jìn)行智能調(diào)度,確保了資源的有效利用和避免了不必要的沖突。數(shù)據(jù)快取模塊減少了數(shù)據(jù)訪問(wèn)的延遲和帶寬消耗,提高了系統(tǒng)整體的性能。高效的指令執(zhí)行和數(shù)據(jù)管理能力使得處理器能夠更快地響應(yīng)用戶的請(qǐng)求,提升了用戶的使用體驗(yàn)。可靠的錯(cuò)誤處理和重試機(jī)制保證了系統(tǒng)的穩(wěn)定性和可靠性,減少了因硬件故障導(dǎo)致的系統(tǒng)崩潰和數(shù)據(jù)丟失的風(fēng)險(xiǎn)。