本發(fā)明涉及計(jì)算機(jī),尤其涉及一種預(yù)取控制方法、裝置、處理器及電子設(shè)備。
背景技術(shù):
1、數(shù)據(jù)預(yù)取技術(shù),是根據(jù)cache(緩存存儲(chǔ)器)訪問(wèn)的歷史規(guī)律對(duì)未來(lái)將要使用的數(shù)據(jù)地址進(jìn)行預(yù)測(cè),在數(shù)據(jù)需要之前,提前發(fā)起數(shù)據(jù)獲取請(qǐng)求,將數(shù)據(jù)從內(nèi)存或較高級(jí)別的cache(例如l3)轉(zhuǎn)入低級(jí)cache(例如l1)。若預(yù)測(cè)準(zhǔn)確,可有效降低較低級(jí)別cache的missrate(未命中率或缺失率)。
2、然而,在一些情況下,即使對(duì)某條指令insta所需的數(shù)據(jù)進(jìn)行了預(yù)取操作,在執(zhí)行后續(xù)指令instb時(shí),仍然需要等待。這是因?yàn)?,指令instb的執(zhí)行可能需要依賴指令insta的執(zhí)行結(jié)果以及指令instc的執(zhí)行結(jié)果,雖然對(duì)指令insta進(jìn)行數(shù)據(jù)預(yù)取可以使指令insta盡快得到執(zhí)行結(jié)果,但由于指令instc的執(zhí)行結(jié)果可能會(huì)較遲才能得到,因此指令instb的執(zhí)行并沒(méi)有因?yàn)閷?duì)指令insta的數(shù)據(jù)預(yù)取而得到加快。諸如此類的情況在程序運(yùn)行中非常常見(jiàn),但這樣的預(yù)取操作常?;ㄙM(fèi)了寶貴的資源(例如增加了功耗,占用了額外的帶寬等),卻無(wú)法有效提升程序的執(zhí)行速度。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本發(fā)明實(shí)施例提供一種預(yù)取控制方法、裝置、處理器及電子設(shè)備,能夠在保證程序運(yùn)行速度的同時(shí),有效降低資源消耗。
2、第一方面,本發(fā)明的實(shí)施例還提供一種預(yù)取控制方法,包括:響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,查詢發(fā)射隊(duì)列中是否存在目標(biāo)待發(fā)射指令,所述目標(biāo)待發(fā)射指令包括至少一個(gè)源操作數(shù),其中有且僅有一個(gè)所述源操作數(shù)未就緒,未就緒的所述源操作數(shù)與所述目標(biāo)訪存指令的執(zhí)行結(jié)果相關(guān);根據(jù)查詢結(jié)果確定是否指示預(yù)取器針對(duì)所述目標(biāo)訪存指令執(zhí)行預(yù)取關(guān)聯(lián)操作,所述預(yù)取關(guān)聯(lián)操作包括以下至少一項(xiàng):利用所述目標(biāo)訪存指令進(jìn)行數(shù)據(jù)預(yù)取、利用所述目標(biāo)訪存指令對(duì)所述預(yù)取器進(jìn)行數(shù)據(jù)預(yù)取訓(xùn)練。
3、在一種實(shí)施方式中,所述響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,查詢發(fā)射隊(duì)列中是否存在目標(biāo)待發(fā)射指令包括:響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,獲取所述目標(biāo)訪存指令的目的物理寄存器的寄存器標(biāo)識(shí),得到第一標(biāo)識(shí);將所述發(fā)射隊(duì)列中的各條隊(duì)列指令的源物理寄存器的寄存器標(biāo)識(shí),分別與所述第一標(biāo)識(shí)進(jìn)行比對(duì),將比對(duì)結(jié)果相同的寄存器標(biāo)識(shí)所對(duì)應(yīng)的隊(duì)列指令確定為第一備選指令;將各所述第一備選指令中,只有一個(gè)源操作數(shù)未就緒的所述第一備選指令確定為所述目標(biāo)待發(fā)射指令。
4、在一種實(shí)施方式中,所述響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,查詢發(fā)射隊(duì)列中是否存在目標(biāo)待發(fā)射指令包括:響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,獲取所述目標(biāo)訪存指令的目的物理寄存器的寄存器標(biāo)識(shí),得到第一標(biāo)識(shí);在所述發(fā)射隊(duì)列中查找只有一個(gè)源操作數(shù)未就緒的指令,得到第二備選指令;將各所述第二備選指令的源物理寄存器的寄存器標(biāo)識(shí),分別與所述第一標(biāo)識(shí)進(jìn)行比對(duì),將比對(duì)結(jié)果相同的寄存器標(biāo)識(shí)所對(duì)應(yīng)的所述第二備選指令確定為所述目標(biāo)待發(fā)射指令。
5、在一種實(shí)施方式中,所述目標(biāo)訪存指令由所述發(fā)射隊(duì)列中發(fā)射;所述發(fā)射隊(duì)列中的各條隊(duì)列指令均攜帶對(duì)應(yīng)的附加信息,所述附加信息包括該隊(duì)列指令的依賴指令的重排序緩存標(biāo)識(shí),該隊(duì)列指令的源操作數(shù)與所述依賴指令的執(zhí)行結(jié)果相關(guān);所述響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,查詢發(fā)射隊(duì)列中是否存在目標(biāo)待發(fā)射指令包括:響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,將所述目標(biāo)訪存指令的重排序緩存標(biāo)識(shí)與發(fā)射隊(duì)列中各條所述隊(duì)列指令的附加信息中的重排序緩存標(biāo)識(shí)相對(duì)比,將對(duì)比結(jié)果相同的重排序緩存標(biāo)識(shí)所對(duì)應(yīng)的隊(duì)列指令,確定為第三備選指令;將各所述第三備選指令中,只有一個(gè)源操作數(shù)未就緒的所述第三備選指令確定為所述目標(biāo)待發(fā)射指令。
6、在一種實(shí)施方式中,所述目標(biāo)訪存指令由所述發(fā)射隊(duì)列中發(fā)射;所述發(fā)射隊(duì)列中的各條隊(duì)列指令均攜帶對(duì)應(yīng)的附加信息,所述附加信息包括該隊(duì)列指令的依賴指令的重排序緩存標(biāo)識(shí),該隊(duì)列指令的源操作數(shù)與所述依賴指令的執(zhí)行結(jié)果相關(guān);所述響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,查詢發(fā)射隊(duì)列中是否存在目標(biāo)待發(fā)射指令包括:響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,在所述發(fā)射隊(duì)列中查找只有一個(gè)源操作數(shù)未就緒的指令,得到第四備選指令;將所述目標(biāo)訪存指令的重排序緩存標(biāo)識(shí)與各所述第四備選指令的附加信息中的重排序緩存標(biāo)識(shí)相對(duì)比,將對(duì)比結(jié)果相同的重排序緩存標(biāo)識(shí)所對(duì)應(yīng)的第四備選指令,確定為所述目標(biāo)待發(fā)射指令。
7、在一種實(shí)施方式中,所述根據(jù)查詢結(jié)果確定是否指示預(yù)取器針對(duì)所述目標(biāo)訪存指令執(zhí)行預(yù)取關(guān)聯(lián)操作包括:在所述發(fā)射隊(duì)列中存在所述目標(biāo)待發(fā)射指令的情況下,通過(guò)訪存單元指示所述預(yù)取器針對(duì)所述目標(biāo)訪存指令執(zhí)行所述預(yù)取關(guān)聯(lián)操作;或者,在所述發(fā)射隊(duì)列中不存在所述目標(biāo)待發(fā)射指令的情況下,拒絕通過(guò)所述訪存單元指示所述預(yù)取器針對(duì)所述目標(biāo)訪存指令執(zhí)行所述預(yù)取關(guān)聯(lián)操作,或者,通過(guò)所述訪存單元指示所述預(yù)取器無(wú)需執(zhí)行所述預(yù)取關(guān)聯(lián)操作,或者,通過(guò)所述訪存單元指示所述預(yù)取器對(duì)已經(jīng)發(fā)出的所述預(yù)取關(guān)聯(lián)操作進(jìn)行攔截。
8、在一種實(shí)施方式中,所述在所述發(fā)射隊(duì)列中存在所述目標(biāo)待發(fā)射指令的情況下,通過(guò)訪存單元指示所述預(yù)取器針對(duì)所述目標(biāo)訪存指令執(zhí)行所述預(yù)取關(guān)聯(lián)操作包括:在所述發(fā)射隊(duì)列中存在所述目標(biāo)待發(fā)射指令的情況下,向所述訪存單元發(fā)送預(yù)取有效信號(hào),以使所述訪存單元根據(jù)所述預(yù)取有效信號(hào)向所述預(yù)取器發(fā)送第一控制信號(hào),所述第一控制信號(hào)攜帶所述目標(biāo)訪存指令要訪問(wèn)的數(shù)據(jù)所在的內(nèi)存地址。
9、在一種實(shí)施方式中,所述第一控制信號(hào)還攜帶所述目標(biāo)訪存指令自身所在的內(nèi)存地址。
10、在一種實(shí)施方式中,所述利用所述目標(biāo)訪存指令進(jìn)行數(shù)據(jù)預(yù)取包括:根據(jù)所述目標(biāo)訪存指令的發(fā)生緩存未命中的內(nèi)存地址,以及所述目標(biāo)訪存指令的歷史訪存統(tǒng)計(jì)信息,預(yù)測(cè)未來(lái)所需數(shù)據(jù)的內(nèi)存地址,得到預(yù)測(cè)地址;根據(jù)所述預(yù)測(cè)地址,對(duì)未來(lái)所需數(shù)據(jù)進(jìn)行預(yù)取。
11、在一種實(shí)施方式中,所述利用所述目標(biāo)訪存指令對(duì)所述預(yù)取器進(jìn)行數(shù)據(jù)預(yù)取訓(xùn)練包括:利用所述目標(biāo)訪存指令的發(fā)生緩存未命中的內(nèi)存地址,構(gòu)建或更新歷史訪存統(tǒng)計(jì)信息,以使所述預(yù)取器根據(jù)所述歷史訪存統(tǒng)計(jì)信息進(jìn)行地址預(yù)取。
12、在一種實(shí)施方式中,所述根據(jù)查詢結(jié)果確定是否指示預(yù)取器針對(duì)所述目標(biāo)訪存指令執(zhí)行預(yù)取關(guān)聯(lián)操作包括:根據(jù)處理器的繁忙程度和/或內(nèi)存的繁忙程度以及所述查詢結(jié)果,確定是否指示預(yù)取器針對(duì)所述目標(biāo)訪存指令執(zhí)行預(yù)取關(guān)聯(lián)操作。
13、第二方面,本發(fā)明實(shí)施例提供一種預(yù)取控制裝置,包括:查詢模塊,被配置為響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,查詢發(fā)射隊(duì)列中是否存在目標(biāo)待發(fā)射指令,所述目標(biāo)待發(fā)射指令包括至少一個(gè)源操作數(shù),其中有且僅有一個(gè)所述源操作數(shù)未就緒,未就緒的所述源操作數(shù)與所述目標(biāo)訪存指令的執(zhí)行結(jié)果相關(guān);確定模塊,與所述查詢模塊耦合,被配置為根據(jù)查詢結(jié)果確定是否指示預(yù)取器針對(duì)所述目標(biāo)訪存指令執(zhí)行預(yù)取關(guān)聯(lián)操作,所述預(yù)取關(guān)聯(lián)操作包括以下至少一項(xiàng):利用所述目標(biāo)訪存指令進(jìn)行數(shù)據(jù)預(yù)取、利用所述目標(biāo)訪存指令對(duì)所述預(yù)取器進(jìn)行數(shù)據(jù)預(yù)取訓(xùn)練。
14、在一種實(shí)施方式中,所述查詢模塊,被配置為:響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,獲取所述目標(biāo)訪存指令的目的物理寄存器的寄存器標(biāo)識(shí),得到第一標(biāo)識(shí);將所述發(fā)射隊(duì)列中的各條隊(duì)列指令的源物理寄存器的寄存器標(biāo)識(shí),分別與所述第一標(biāo)識(shí)進(jìn)行比對(duì),將比對(duì)結(jié)果相同的寄存器標(biāo)識(shí)所對(duì)應(yīng)的隊(duì)列指令確定為第一備選指令;將各所述第一備選指令中,只有一個(gè)源操作數(shù)未就緒的所述第一備選指令確定為所述目標(biāo)待發(fā)射指令。
15、在一種實(shí)施方式中,所述查詢模塊,被配置為:響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,獲取所述目標(biāo)訪存指令的目的物理寄存器的寄存器標(biāo)識(shí),得到第一標(biāo)識(shí);在所述發(fā)射隊(duì)列中查找只有一個(gè)源操作數(shù)未就緒的指令,得到第二備選指令;將各所述第二備選指令的源物理寄存器的寄存器標(biāo)識(shí),分別與所述第一標(biāo)識(shí)進(jìn)行比對(duì),將比對(duì)結(jié)果相同的寄存器標(biāo)識(shí)所對(duì)應(yīng)的所述第二備選指令確定為所述目標(biāo)待發(fā)射指令。
16、在一種實(shí)施方式中,所述目標(biāo)訪存指令由所述發(fā)射隊(duì)列中發(fā)射;所述發(fā)射隊(duì)列中的各條隊(duì)列指令均攜帶對(duì)應(yīng)的附加信息,所述附加信息包括該隊(duì)列指令的依賴指令的重排序緩存標(biāo)識(shí),該隊(duì)列指令的源操作數(shù)與所述依賴指令的執(zhí)行結(jié)果相關(guān);所述查詢模塊,被配置為:響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,將所述目標(biāo)訪存指令的重排序緩存標(biāo)識(shí)與發(fā)射隊(duì)列中各條所述隊(duì)列指令的附加信息中的重排序緩存標(biāo)識(shí)相對(duì)比,將對(duì)比結(jié)果相同的重排序緩存標(biāo)識(shí)所對(duì)應(yīng)的隊(duì)列指令,確定為第三備選指令;將各所述第三備選指令中,只有一個(gè)源操作數(shù)未就緒的所述第三備選指令確定為所述目標(biāo)待發(fā)射指令。
17、在一種實(shí)施方式中,所述目標(biāo)訪存指令由所述發(fā)射隊(duì)列中發(fā)射;所述發(fā)射隊(duì)列中的各條隊(duì)列指令均攜帶對(duì)應(yīng)的附加信息,所述附加信息包括該隊(duì)列指令的依賴指令rob(re-order?buffer)的重排序緩存標(biāo)識(shí)(rid,rob?identification),該隊(duì)列指令的源操作數(shù)與所述依賴指令的執(zhí)行結(jié)果相關(guān);所述查詢模塊,被配置為:響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,在所述發(fā)射隊(duì)列中查找只有一個(gè)源操作數(shù)未就緒的指令,得到第四備選指令;將所述目標(biāo)訪存指令的重排序緩存標(biāo)識(shí)與各所述第四備選指令的附加信息中的重排序緩存標(biāo)識(shí)相對(duì)比,將對(duì)比結(jié)果相同的重排序緩存標(biāo)識(shí)所對(duì)應(yīng)的第四備選指令,確定為所述目標(biāo)待發(fā)射指令。
18、在一種實(shí)施方式中,所述確定模塊包括:第一指示子模塊,被配置為在所述發(fā)射隊(duì)列中存在所述目標(biāo)待發(fā)射指令的情況下,通過(guò)訪存單元指示所述預(yù)取器針對(duì)所述目標(biāo)訪存指令執(zhí)行所述預(yù)取關(guān)聯(lián)操作;或者,第二指示子模塊,被配置為在所述發(fā)射隊(duì)列中不存在所述目標(biāo)待發(fā)射指令的情況下,拒絕通過(guò)所述訪存單元指示所述預(yù)取器針對(duì)所述目標(biāo)訪存指令執(zhí)行所述預(yù)取關(guān)聯(lián)操作,或者,通過(guò)所述訪存單元指示所述預(yù)取器無(wú)需執(zhí)行所述預(yù)取關(guān)聯(lián)操作,或者,通過(guò)所述訪存單元指示所述預(yù)取器對(duì)已經(jīng)發(fā)出的所述預(yù)取關(guān)聯(lián)操作進(jìn)行攔截。
19、在一種實(shí)施方式中,所述第一指示子模塊,被配置為在所述發(fā)射隊(duì)列中存在所述目標(biāo)待發(fā)射指令的情況下,向所述訪存單元發(fā)送預(yù)取有效信號(hào),以使所述訪存單元根據(jù)所述預(yù)取有效信號(hào)向所述預(yù)取器發(fā)送第一控制信號(hào),所述第一控制信號(hào)攜帶所述目標(biāo)訪存指令要訪問(wèn)的數(shù)據(jù)所在的內(nèi)存地址。
20、在一種實(shí)施方式中,所述第一控制信號(hào)還攜帶所述目標(biāo)訪存指令自身所在的內(nèi)存地址。
21、在一種實(shí)施方式中,所述預(yù)取器被配置為:根據(jù)所述目標(biāo)訪存指令的發(fā)生緩存未命中的內(nèi)存地址,以及所述目標(biāo)訪存指令的歷史訪存統(tǒng)計(jì)信息,預(yù)測(cè)未來(lái)所需數(shù)據(jù)的內(nèi)存地址,得到預(yù)測(cè)地址;根據(jù)所述預(yù)測(cè)地址,對(duì)未來(lái)所需數(shù)據(jù)進(jìn)行預(yù)取。
22、在一種實(shí)施方式中,所述預(yù)取器被配置為:利用所述目標(biāo)訪存指令的發(fā)生緩存未命中的內(nèi)存地址,構(gòu)建或更新歷史訪存統(tǒng)計(jì)信息,以根據(jù)所述歷史訪存統(tǒng)計(jì)信息進(jìn)行地址預(yù)取。
23、在一種實(shí)施方式中,所述確定模塊,被配置為根據(jù)處理器的繁忙程度和/或內(nèi)存的繁忙程度以及所述查詢結(jié)果,確定是否指示預(yù)取器針對(duì)所述目標(biāo)訪存指令執(zhí)行預(yù)取關(guān)聯(lián)操作。
24、第三方面,本發(fā)明的實(shí)施例還提供一種處理器,所述處理器包括:發(fā)射隊(duì)列、訪存單元、預(yù)取器以及本發(fā)明的實(shí)施例提供的任一種預(yù)取控制裝置;所述發(fā)射隊(duì)列、所述預(yù)取控制裝置、所述訪存單元及所述預(yù)取器依次串聯(lián);所述預(yù)取控制裝置,被配置為通過(guò)所述訪存單元獲知所述目標(biāo)訪存指令發(fā)生緩存未命中,并通過(guò)所述訪存單元指示所述預(yù)取器針對(duì)所述目標(biāo)訪存指令執(zhí)行預(yù)取關(guān)聯(lián)操作。
25、第四方面,本發(fā)明的實(shí)施例還提供一種電子設(shè)備,所述電子設(shè)備包括電路板、處理器和存儲(chǔ)器,所述處理器和所述存儲(chǔ)器分別設(shè)置在所述電路板上,所述處理器與所述存儲(chǔ)器電連接,用于對(duì)所述存儲(chǔ)器進(jìn)行讀操作或?qū)懖僮鳎渲?,所述處理器為本發(fā)明的實(shí)施例提供的任一種處理器。
26、本發(fā)明的實(shí)施例提供的預(yù)取控制方法、裝置、處理器及電子設(shè)備,能夠響應(yīng)于目標(biāo)訪存指令發(fā)生緩存未命中,查詢發(fā)射隊(duì)列中是否存在目標(biāo)待發(fā)射指令,根據(jù)查詢結(jié)果確定是否指示預(yù)取器針對(duì)所述目標(biāo)訪存指令執(zhí)行預(yù)取關(guān)聯(lián)操作,所述預(yù)取關(guān)聯(lián)操作包括以下至少一項(xiàng):利用所述目標(biāo)訪存指令進(jìn)行數(shù)據(jù)預(yù)取、利用所述目標(biāo)訪存指令對(duì)所述預(yù)取器進(jìn)行數(shù)據(jù)預(yù)取訓(xùn)練。由于目標(biāo)待發(fā)射指令包括至少一個(gè)源操作數(shù),其中有且僅有一個(gè)所述源操作數(shù)未就緒,未就緒的所述源操作數(shù)與所述目標(biāo)訪存指令的執(zhí)行結(jié)果相關(guān),因此,查詢發(fā)射隊(duì)列中是否存在目標(biāo)待發(fā)射指令,也就能夠確定對(duì)目標(biāo)訪存指令執(zhí)行預(yù)取關(guān)聯(lián)操作并得到執(zhí)行結(jié)果后,是否會(huì)更快觸發(fā)后續(xù)指令的執(zhí)行進(jìn)而加快程序的運(yùn)行速度。也即是說(shuō),與現(xiàn)有技術(shù)中只要目標(biāo)訪存指令發(fā)生緩存未命中就會(huì)對(duì)其執(zhí)行預(yù)取關(guān)聯(lián)操作的方案相比,本發(fā)明的實(shí)施例的方案,能夠?qū)︻A(yù)取關(guān)聯(lián)操作進(jìn)行一定程度的過(guò)濾,只執(zhí)行對(duì)加快程序運(yùn)行速度有幫助的預(yù)取關(guān)聯(lián)操作而暫不執(zhí)行無(wú)法加快程序運(yùn)行速度的預(yù)取關(guān)聯(lián)操作,因此能夠在保證程序運(yùn)行速度的同時(shí),有效降低資源消耗。