国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      實(shí)現(xiàn)現(xiàn)代處理器間接轉(zhuǎn)移預(yù)測(cè)的裝置及方法

      文檔序號(hào):6430930閱讀:182來(lái)源:國(guó)知局
      專利名稱:實(shí)現(xiàn)現(xiàn)代處理器間接轉(zhuǎn)移預(yù)測(cè)的裝置及方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及現(xiàn)代微處理器及其應(yīng)用系統(tǒng)的設(shè)計(jì),尤其涉及實(shí)現(xiàn)現(xiàn)代處理器間接轉(zhuǎn)移指令預(yù)測(cè)的裝置及方法。
      背景技術(shù)
      現(xiàn)代高性能處理器利用分支指令預(yù)測(cè)技術(shù)開發(fā)指令級(jí)并行,從而提高處理器性能。之前的研究主要集中在開發(fā)高準(zhǔn)確率的直接轉(zhuǎn)移指令預(yù)測(cè)技術(shù),而對(duì)于間接轉(zhuǎn)移指令預(yù)測(cè),通常很難達(dá)到較高的準(zhǔn)確率。近年來(lái),隨著面向?qū)ο笳Z(yǔ)言程序的廣泛應(yīng)用,間接轉(zhuǎn)移指令使用的場(chǎng)合也更多了起來(lái)。該類型指令通常用于實(shí)現(xiàn)虛函數(shù)指針、函數(shù)指針以及 Switch-Case語(yǔ)句等常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)。此外,Intel Pentium M處理器中也已經(jīng)加入了專用的間接轉(zhuǎn)移預(yù)測(cè)部件。因此,提高間接轉(zhuǎn)移預(yù)測(cè)的準(zhǔn)確率,對(duì)處理器性能的提升具有重要意義。間接轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)地址保存在其指令指定的寄存器中,該寄存器中的值可能會(huì)隨著程序的執(zhí)行而發(fā)生各種變化,即可能存在多個(gè)轉(zhuǎn)移目標(biāo)地址?,F(xiàn)代處理器通常使用分支目標(biāo)緩沖器(BTB,Branch Target Buffer)和方向預(yù)測(cè)器對(duì)分支指令進(jìn)行預(yù)測(cè)。其中,BTB用來(lái)負(fù)責(zé)記錄分支轉(zhuǎn)移指令的目標(biāo)地址,而方向預(yù)測(cè)器則用來(lái)預(yù)測(cè)該分支轉(zhuǎn)移指令執(zhí)行的方向,即預(yù)測(cè)是否進(jìn)行轉(zhuǎn)移。然而,這種傳統(tǒng)的分支轉(zhuǎn)移預(yù)測(cè)方式對(duì)直接轉(zhuǎn)移有著很高的分支轉(zhuǎn)移預(yù)測(cè)效率,但是對(duì)間接轉(zhuǎn)移指令的預(yù)測(cè)準(zhǔn)確率卻很低。首先,是由于方向預(yù)測(cè)器總是預(yù)測(cè)跳轉(zhuǎn)與否(在使用預(yù)譯碼的處理器中,間接轉(zhuǎn)移指令必定會(huì)跳轉(zhuǎn),故分支方向預(yù)測(cè)器不必對(duì)該類指令的方向進(jìn)行預(yù)測(cè));其次,由于BTB結(jié)構(gòu)是一種緩存(Cache)結(jié)構(gòu), 其記錄的每個(gè)目標(biāo)地址只能使用指令地址進(jìn)行索引,即每個(gè)分支指令最多只有一個(gè)目標(biāo)地址與之對(duì)應(yīng),如圖1所示。因此,BTB結(jié)構(gòu)只能記錄最近一次間接轉(zhuǎn)移指令的目標(biāo)地址。當(dāng)間接轉(zhuǎn)移指令擁有多個(gè)目標(biāo)地址時(shí),BTB的預(yù)測(cè)準(zhǔn)確率會(huì)很低。已有的一些使用專用部件的間接轉(zhuǎn)移預(yù)測(cè)技術(shù),可以有效地提升間接轉(zhuǎn)移預(yù)測(cè)準(zhǔn)確率。Chang等人提出的TTC結(jié)構(gòu),使用記錄在全局歷史寄存器(GHR,Global History Register)中的分支轉(zhuǎn)移歷史信息區(qū)分不同的間接轉(zhuǎn)移場(chǎng)景,并使用一個(gè)類似Cache結(jié)構(gòu)的專用結(jié)構(gòu)記錄各個(gè)間接轉(zhuǎn)移場(chǎng)景下間接轉(zhuǎn)移目標(biāo)地址及其索引,如圖2所示,其設(shè)計(jì)類似兩級(jí)分支預(yù)測(cè)方案(即異或器XOR前的一級(jí)與XOR后的一級(jí))。當(dāng)取得一條間接轉(zhuǎn)移指令時(shí),TTC預(yù)測(cè)器(其結(jié)構(gòu)如圖2所示右端)通過(guò)異或器XOR獲取程序計(jì)數(shù)器(PC)和分支轉(zhuǎn)移歷史信息(GHR)的異或值作為索引,獲得預(yù)測(cè)的目標(biāo)地址。當(dāng)該間接轉(zhuǎn)移指令提交時(shí), 使用正確的目標(biāo)地址更新對(duì)應(yīng)的TTC項(xiàng)。通過(guò)組合使用多個(gè)目標(biāo)地址預(yù)測(cè)器,Driesen等人提出了另一種直接地址預(yù)測(cè)技術(shù),即Cascade預(yù)測(cè)器。該方法對(duì)于可簡(jiǎn)單預(yù)測(cè)(只有一個(gè)目標(biāo)地址)的間接轉(zhuǎn)移指令使用簡(jiǎn)單的一級(jí)預(yù)測(cè)器預(yù)測(cè)(通常為BTB結(jié)構(gòu)),而對(duì)于擁有多個(gè)目標(biāo)地址的間接轉(zhuǎn)移指令,使用復(fù)雜的二級(jí)或多級(jí)預(yù)測(cè)器進(jìn)行預(yù)測(cè)。kznec和Michaud提出了與該設(shè)計(jì)非常類似的一種預(yù)測(cè)器,由一個(gè)基礎(chǔ)預(yù)測(cè)器及一系列能夠捕捉非常長(zhǎng)的歷史信息的預(yù)測(cè)表組成;在預(yù)測(cè)時(shí),選擇歷史信息最長(zhǎng)的預(yù)測(cè)表中的命中項(xiàng)值作為輸出結(jié)果。虛擬程序計(jì)數(shù)器(VPC,Virtual Program Counter)預(yù)測(cè)技術(shù),側(cè)重于使用已有的條件轉(zhuǎn)移預(yù)測(cè)部件進(jìn)行間接轉(zhuǎn)移預(yù)測(cè),它是將一條具多個(gè)目標(biāo)地址的間接轉(zhuǎn)移指令的每個(gè)目標(biāo)地址等價(jià)地表示成一個(gè)虛擬的條件分支轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)地址;當(dāng)進(jìn)行間接轉(zhuǎn)移指令預(yù)測(cè)時(shí),VPC每個(gè)周期以不同的虛擬分支指令循環(huán)訪問(wèn)條件分支預(yù)測(cè)器,如圖3所示,直到一條虛擬指令被預(yù)測(cè)為發(fā)生或達(dá)到循環(huán)訪問(wèn)的上界時(shí)才停止預(yù)測(cè)。該VPC技術(shù)的效果, 與流水線的長(zhǎng)度以及間接轉(zhuǎn)移目標(biāo)地址的數(shù)目密切相關(guān)。以上研究提出的基于硬件的間接轉(zhuǎn)移預(yù)測(cè)技術(shù),使用分支轉(zhuǎn)移歷史信息(GHR)區(qū)分不同的間接轉(zhuǎn)移場(chǎng)景,并直接將對(duì)應(yīng)不同轉(zhuǎn)移場(chǎng)景的目標(biāo)地址保存在一個(gè)專用的存儲(chǔ)部件中。這種使用專用部件一類技術(shù)的預(yù)測(cè)速度較快,但其額外的存儲(chǔ)單元需求會(huì)在芯片中占用一定面積,并產(chǎn)生大量的能耗。而側(cè)重使用已有分支預(yù)測(cè)部件的VPC技術(shù)雖可以取得較高的預(yù)測(cè)準(zhǔn)確率,但這種需要多次循環(huán)才能完成一次間接轉(zhuǎn)移的預(yù)測(cè),一方面會(huì)阻礙處理器性能的進(jìn)一步提升,另一方面會(huì)帶來(lái)更多的能耗開銷,從而導(dǎo)致處理器的能效性降低。

      發(fā)明內(nèi)容
      本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種實(shí)現(xiàn)現(xiàn)代處理器間接轉(zhuǎn)移預(yù)測(cè)的裝置及方法,能夠在提高預(yù)測(cè)準(zhǔn)確率的同時(shí)提高處理器的能效性。為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種實(shí)現(xiàn)現(xiàn)代處理器間接轉(zhuǎn)移預(yù)測(cè)的裝置,其特征在于,包括分支方向預(yù)測(cè)器、目標(biāo)地址映射裝置以及分支目標(biāo)緩沖器,其中分支方向預(yù)測(cè)器,用于根據(jù)定義的多個(gè)子預(yù)測(cè)器預(yù)測(cè)的間接轉(zhuǎn)移方向生成目標(biāo)指針;目標(biāo)地址映射裝置,用于將分支方向預(yù)測(cè)器生成的目標(biāo)指針映射為索引分支目標(biāo)緩沖器的虛擬地址;分支目標(biāo)緩沖器,用于為間接轉(zhuǎn)移指令分配目標(biāo)地址項(xiàng)和分配項(xiàng),其中,目標(biāo)地址項(xiàng)通過(guò)虛擬地址索引;分配項(xiàng)記錄每一間接轉(zhuǎn)移指令目標(biāo)地址項(xiàng)的使用情況,通過(guò)程序計(jì)數(shù)器的值索引。進(jìn)一步地,目標(biāo)地址映射裝置包括目標(biāo)指針寄存器、虛擬地址映射器以及第一多選器,其中分支方向預(yù)測(cè)器根據(jù)定義的4個(gè)子預(yù)測(cè)器預(yù)測(cè)的間接轉(zhuǎn)移方向生成4位目標(biāo)指針;目標(biāo)指針寄存器,用于保存分支方向預(yù)測(cè)器生成的4位目標(biāo)指針;虛擬地址映射器,用于根據(jù)目標(biāo)指針寄存器保存的4位目標(biāo)指針通過(guò)計(jì)算映射式 FA = f (PC,TP)生成索引目標(biāo)地址項(xiàng)的虛擬地址;式中,TP為目標(biāo)指針,F(xiàn)A為虛擬地址,PC 為程序計(jì)數(shù)器的值;第一多選器,用于選擇通過(guò)所述PC訪問(wèn)分配項(xiàng)的第一索引和通過(guò)虛擬地址訪問(wèn)目標(biāo)地址項(xiàng)的第二索引。進(jìn)一步地,虛擬地址映射器包括第一異或器和第二異或器,其中第一異或器用于將所述PC 的最高4位與4位目標(biāo)指針相異或;第二異或器用于將PC的最低4位與一個(gè)常數(shù)相異或;將第一異或器和第二異或器的結(jié)果組合,構(gòu)成虛擬地址;或者,虛擬地址映射器包括第一加法器和第二加法器,其中第一加法器用于將PC 的最高4位與4位目標(biāo)指針相加;第二加法器用于將PC的最低4位與一個(gè)常數(shù)相加;將第一加法器和第二加法器的結(jié)果組合,構(gòu)成虛擬地址。進(jìn)一步地,目標(biāo)地址映射裝置還包括訓(xùn)練循環(huán)計(jì)數(shù)器和第二多選器,其中訓(xùn)練循環(huán)計(jì)數(shù)器,用于輸出循環(huán)計(jì)數(shù)值;第二多選器,用于在預(yù)測(cè)時(shí)選擇輸出目標(biāo)指針寄存器生成的目標(biāo)指針,在出現(xiàn)預(yù)測(cè)錯(cuò)誤時(shí)選擇輸出訓(xùn)練循環(huán)計(jì)數(shù)器輸出的循環(huán)計(jì)數(shù)值作為更新的目標(biāo)指針;虛擬地址映射器根據(jù)第二多選器輸出的目標(biāo)指針,通過(guò)計(jì)算映射式生成虛擬地址。進(jìn)一步地,分支目標(biāo)緩沖器中分配項(xiàng)的記錄用于作為遍歷間接轉(zhuǎn)移指令全部已分配的目標(biāo)地址項(xiàng)的依據(jù),遍歷情況用于作為更新分配項(xiàng)或目標(biāo)指針的依據(jù);遍歷情況及其更新包括以下三種中任意一種第一種,遍歷時(shí)一旦出現(xiàn)使用一個(gè)目標(biāo)指針訪問(wèn)分支目標(biāo)緩沖器而未命中的情況,則將分配項(xiàng)中的對(duì)應(yīng)位更新為未使用狀態(tài);第二種,遍歷時(shí)如果一個(gè)目標(biāo)地址項(xiàng)中的目標(biāo)地址與正確的目標(biāo)地址相同,則更新相應(yīng)的目標(biāo)指針指向該目標(biāo)地址項(xiàng),將正確目標(biāo)指針的對(duì)應(yīng)位作為訓(xùn)練目標(biāo)進(jìn)行訓(xùn)練;第三種,遍歷時(shí)如果遍歷全部已分配的目標(biāo)地址項(xiàng)后,沒(méi)有找到與正確地址匹配的目標(biāo)地址項(xiàng),則根據(jù)分配項(xiàng)中記錄的信息,隨機(jī)地分配一個(gè)新的目標(biāo)地址項(xiàng)或替換一項(xiàng)已使用的目標(biāo)地址項(xiàng)來(lái)記錄正確的目標(biāo)地址,并更新相應(yīng)的目標(biāo)指針指向該目標(biāo)地址項(xiàng), 以及訓(xùn)練分支方向預(yù)測(cè)器。為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種實(shí)現(xiàn)現(xiàn)代處理器間接轉(zhuǎn)移預(yù)測(cè)的方法,涉及分支方向預(yù)測(cè)器和分支目標(biāo)緩沖器,該方法包括在分支方向預(yù)測(cè)器中定義多個(gè)子預(yù)測(cè)器,每一個(gè)子預(yù)測(cè)器預(yù)測(cè)的間接轉(zhuǎn)移方向作為目標(biāo)指針的每一位,通過(guò)目標(biāo)指針映射生成索引分支目標(biāo)緩沖器的虛擬地址;在分支目標(biāo)緩沖器中為每一間接轉(zhuǎn)移指令分配目標(biāo)地址項(xiàng)和分配項(xiàng),其中,目標(biāo)地址項(xiàng)通過(guò)目標(biāo)指針映射的虛擬地址索引;分配項(xiàng)用于記錄每一間接轉(zhuǎn)移指令目標(biāo)地址項(xiàng)的使用情況,并通過(guò)程序計(jì)數(shù)器的值索引。進(jìn)一步地,當(dāng)處理器獲取一條間接轉(zhuǎn)移指令要進(jìn)行預(yù)測(cè)時(shí),同時(shí)執(zhí)行以下步驟通過(guò)程序計(jì)數(shù)器的值訪問(wèn)分支目標(biāo)緩沖器;若訪問(wèn)命中,則將命中項(xiàng)作為該間接轉(zhuǎn)移指令的分配項(xiàng);否則,暫停取指,直到在流水線中獲得實(shí)際的間接轉(zhuǎn)移目標(biāo)地址為止;通過(guò)分支方向預(yù)測(cè)器中定義的4個(gè)子預(yù)測(cè)器獲得4位目標(biāo)指針,通過(guò)計(jì)算映射式 FA = f (PC,TP)生成虛擬地址;在該計(jì)算映射式中,該TP為4位目標(biāo)指針,該FA為生成的虛擬地址,該P(yáng)C為程序計(jì)數(shù)器的值。進(jìn)一步地,該方法還包括在預(yù)測(cè)的下一周期,使用虛擬地址再次訪問(wèn)分支目標(biāo)緩沖器,以獲得預(yù)測(cè)的間接轉(zhuǎn)移目標(biāo)地址。進(jìn)一步地,該方法還包括
      在出現(xiàn)預(yù)測(cè)錯(cuò)誤時(shí)選擇一訓(xùn)練循環(huán)計(jì)數(shù)器輸出的循環(huán)計(jì)數(shù)值作為更新的目標(biāo)指針;分支目標(biāo)緩沖器將分配項(xiàng)作為遍歷間接轉(zhuǎn)移指令全部已分配的目標(biāo)地址項(xiàng)的依據(jù),遍歷情況用于作為更新所述分配項(xiàng)或目標(biāo)指針的依據(jù);遍歷情況及其更新包括以下三種中任意一種第一種,遍歷時(shí)一旦出現(xiàn)使用一個(gè)目標(biāo)指針訪問(wèn)分支目標(biāo)緩沖器而未命中的情況,則將分配項(xiàng)中的對(duì)應(yīng)位更新為未使用狀態(tài);第二種,遍歷時(shí)如果一個(gè)目標(biāo)地址項(xiàng)中的目標(biāo)地址與正確的目標(biāo)地址相同,則更新相應(yīng)的目標(biāo)指針指向該目標(biāo)地址項(xiàng),將正確目標(biāo)指針的對(duì)應(yīng)位作為訓(xùn)練目標(biāo)進(jìn)行訓(xùn)練;第三種,遍歷時(shí)如果遍歷全部已分配的目標(biāo)地址項(xiàng)后,沒(méi)有找到與正確地址匹配的目標(biāo)地址項(xiàng),則根據(jù)分配項(xiàng)中記錄的信息,隨機(jī)地分配一個(gè)新的目標(biāo)地址項(xiàng)或替換一項(xiàng)已使用的目標(biāo)地址項(xiàng)來(lái)記錄正確的目標(biāo)地址,并更新相應(yīng)的目標(biāo)指針指向該目標(biāo)地址項(xiàng), 以及訓(xùn)練分支方向預(yù)測(cè)器。本發(fā)明提供的現(xiàn)代處理器實(shí)現(xiàn)間接轉(zhuǎn)移預(yù)測(cè)的裝置及方法實(shí)施例,使用指針結(jié)構(gòu),并融入快速、高準(zhǔn)確率的分支方向預(yù)測(cè)器,將其進(jìn)行拓展和重定義;通過(guò)指針結(jié)構(gòu)并使用計(jì)算方式替代原有的存儲(chǔ)方式可以快速索引到BTB中的目標(biāo)地址,在不需要大容量存儲(chǔ)結(jié)構(gòu)支持的基礎(chǔ)上,以與已有的間接轉(zhuǎn)移預(yù)測(cè)技術(shù)類似的時(shí)間代價(jià),換取同時(shí)提高預(yù)測(cè)準(zhǔn)確率和處理器能效的效果,且能有效地避免存儲(chǔ)目標(biāo)地址易出現(xiàn)的錯(cuò)誤。


      圖1為現(xiàn)有的BTB結(jié)構(gòu)的目標(biāo)地址預(yù)測(cè)機(jī)制示意圖;圖2為現(xiàn)有的TTC結(jié)構(gòu)與BTB關(guān)系示意圖(左)以及TTC內(nèi)部結(jié)構(gòu)示意圖(右);圖3為現(xiàn)有的采用VPC技術(shù)的預(yù)測(cè)流程圖;圖4為本發(fā)明的間接轉(zhuǎn)移預(yù)測(cè)的裝置及方法中目標(biāo)指針映射關(guān)系示意圖;圖5為現(xiàn)有的O-GEHL預(yù)測(cè)器原有結(jié)構(gòu)示意圖;圖6為本發(fā)明的間接轉(zhuǎn)移預(yù)測(cè)裝置實(shí)施例的結(jié)構(gòu)示意圖;圖7是在本發(fā)明的間接轉(zhuǎn)移預(yù)測(cè)裝置實(shí)施例中O-GEHL預(yù)測(cè)器的改進(jìn)結(jié)構(gòu)示意圖;圖8為是用來(lái)說(shuō)明如何使用本發(fā)明的間接轉(zhuǎn)移預(yù)測(cè)裝置及方法而給出的間接轉(zhuǎn)移指令的程序?qū)嵗?;圖9為本發(fā)明的間接轉(zhuǎn)移預(yù)測(cè)的方法實(shí)施例的流程。
      具體實(shí)施例方式以下結(jié)合附圖和優(yōu)選實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)地說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明的技術(shù)方案。本發(fā)明提供的實(shí)現(xiàn)現(xiàn)代處理器間接轉(zhuǎn)移預(yù)測(cè)的方法及裝置,具有以下三個(gè)關(guān)鍵占.
      ^ \\\ ·1)如何將同一間接轉(zhuǎn)移指令的多個(gè)目標(biāo)地址存入目標(biāo)地址預(yù)測(cè)結(jié)構(gòu)中;2)如何辨識(shí)不同的間接轉(zhuǎn)移場(chǎng)景,并與目標(biāo)地址相對(duì)應(yīng);
      3)當(dāng)發(fā)生預(yù)測(cè)錯(cuò)誤時(shí)如何進(jìn)行更新。針對(duì)上述三個(gè)問(wèn)題,本發(fā)明分別采用以下方式予以解決本發(fā)明在取得一條間接轉(zhuǎn)移指令時(shí),通過(guò)經(jīng)重定義的分支方向預(yù)測(cè)器識(shí)別間接轉(zhuǎn)移場(chǎng)景,從而生成目標(biāo)指針;通過(guò)目標(biāo)指針映射到同一間接轉(zhuǎn)移指令的多目標(biāo)地址,如圖4 所示。發(fā)現(xiàn)預(yù)測(cè)錯(cuò)誤時(shí),更新重定義的分支方向預(yù)測(cè)器,以生成正確的目標(biāo)指針。(1)間接轉(zhuǎn)移場(chǎng)景的映射每一種間接轉(zhuǎn)移場(chǎng)景與一個(gè)目標(biāo)指針相對(duì)應(yīng),即建立間接轉(zhuǎn)移場(chǎng)景與目標(biāo)指針之間的映射關(guān)系。為了適應(yīng)高性能的分支預(yù)測(cè)結(jié)構(gòu),本發(fā)明采用了一種簡(jiǎn)單而高效的方法來(lái)生成目標(biāo)指針,即在現(xiàn)有的分支方向預(yù)測(cè)器構(gòu)建數(shù)個(gè)較小的同類型預(yù)測(cè)器,被稱為子預(yù)測(cè)器,請(qǐng)參見(jiàn)圖7,其運(yùn)行機(jī)制與原有的分支方向預(yù)測(cè)器相同,但使用較少的歷史信息。本發(fā)明將每個(gè)子預(yù)測(cè)器的輸出“跳轉(zhuǎn)/不跳轉(zhuǎn)”的方向,定義為目標(biāo)指針寄存器的每一位的“1/0”。由此, 生成4位的目標(biāo)指針需要4個(gè)子預(yù)測(cè)器。換言之,本發(fā)明通過(guò)使用4個(gè)獨(dú)立的小預(yù)測(cè)器來(lái)獲得4位的目標(biāo)指針預(yù)測(cè)值。對(duì)于條件轉(zhuǎn)移指令,其預(yù)測(cè)方式不受本發(fā)明在分支方向預(yù)測(cè)器中的子預(yù)測(cè)器的影響,與原有的預(yù)測(cè)機(jī)制相同。由于本發(fā)明依賴于分支方向預(yù)測(cè)器通過(guò)目標(biāo)指針對(duì)間接轉(zhuǎn)移目標(biāo)進(jìn)行預(yù)測(cè),因此高準(zhǔn)確率的分支方向預(yù)測(cè)器對(duì)本發(fā)明有著積極的影響。下面以一種現(xiàn)有的基于計(jì)算處理的分支方向預(yù)測(cè)器O-GEHL為例,具體介紹本發(fā)明的間接轉(zhuǎn)移預(yù)測(cè)結(jié)構(gòu)中對(duì)間接轉(zhuǎn)移場(chǎng)景映射的實(shí)現(xiàn)。等人提出的O-GEHL分支方向預(yù)測(cè)器(以下簡(jiǎn)稱O-GEHL預(yù)測(cè)器)的結(jié)構(gòu)如圖5所示,具有使用100 200位(bit)長(zhǎng)的全局轉(zhuǎn)移歷史信息,故對(duì)條件轉(zhuǎn)移指令的預(yù)測(cè)具有相當(dāng)高的準(zhǔn)確率。該O-GEHL預(yù)測(cè)器實(shí)現(xiàn)了 n+1個(gè)由不同轉(zhuǎn)移歷史長(zhǎng)度索引的預(yù)測(cè)表(ΡΗΤΟ η)。 其中,預(yù)測(cè)表中每一項(xiàng)為一個(gè)4位(或5位)飽和計(jì)數(shù)器。各預(yù)測(cè)表用于生成索引的轉(zhuǎn)移歷史信息長(zhǎng)度形成一個(gè)幾何序列,L(j) = α ^1L(I) (1 < j < η)。該索引機(jī)制可同時(shí)捕捉距離當(dāng)前條件轉(zhuǎn)移指令非常近和非常遠(yuǎn)的轉(zhuǎn)移歷史信息,并通過(guò)使用動(dòng)態(tài)歷史調(diào)整和動(dòng)態(tài)閾值調(diào)整技術(shù),取得更高的預(yù)測(cè)準(zhǔn)確率。O-GEHL預(yù)測(cè)器在進(jìn)行條件轉(zhuǎn)移預(yù)測(cè)時(shí),將各個(gè)預(yù)測(cè)表的輸出相加,如果結(jié)果為正,則預(yù)測(cè)跳轉(zhuǎn);否則預(yù)測(cè)不跳轉(zhuǎn),即是否跳轉(zhuǎn)的方向取決于加法運(yùn)算的符號(hào)。在更新時(shí),向?qū)嶋H運(yùn)算結(jié)果方向自增或自減,直至到達(dá)各個(gè)預(yù)測(cè)表飽和計(jì)數(shù)值閾值。本發(fā)明基于O-GEHL預(yù)測(cè)器的間接轉(zhuǎn)移場(chǎng)景映射具體實(shí)現(xiàn)方法如下將O-GEHL預(yù)測(cè)器中預(yù)測(cè)表分為4組,每組預(yù)測(cè)表組成一個(gè)O-GEHL子預(yù)測(cè)器,請(qǐng)參見(jiàn)圖6所示;其中,每個(gè)O-GEHL子預(yù)測(cè)器預(yù)測(cè)1位目標(biāo)指針,共形成4位目標(biāo)指針??紤]到子預(yù)測(cè)器相對(duì)原有的O-GEHL預(yù)測(cè)器使用的預(yù)測(cè)表數(shù)目較少,為了保證 O-GEHL預(yù)測(cè)機(jī)制的高預(yù)測(cè)準(zhǔn)確率,每個(gè)子預(yù)測(cè)器只使用距離當(dāng)前間接轉(zhuǎn)移指令最近的32 位轉(zhuǎn)移歷史信息生成預(yù)測(cè)表索引,預(yù)測(cè)表索引生成算法與O-GEHL機(jī)制相同?,F(xiàn)有的基于計(jì)算處理的O-GEHL預(yù)測(cè)器由于使用更長(zhǎng)的歷史信息,并通過(guò)計(jì)算方式減少別名沖突問(wèn)題帶來(lái)的影響,因而方向預(yù)測(cè)準(zhǔn)確率更高。對(duì)于這類預(yù)測(cè)器,目標(biāo)指針不是直接保存在預(yù)測(cè)表中,而是通過(guò)計(jì)算方式形成;由此可避免因存儲(chǔ)顯著改變參與計(jì)算的參數(shù)值使計(jì)算結(jié)果發(fā)生改變而導(dǎo)致的預(yù)測(cè)錯(cuò)誤。例如,如果將目標(biāo)指針‘ 1000’直接存儲(chǔ)在某個(gè)預(yù)測(cè)表的表項(xiàng)中,則可能會(huì)出現(xiàn)將‘0000’改為‘1000’的情況,亦即將計(jì)算參數(shù)由0改變?yōu)開8,該改變可能會(huì)造成計(jì)算結(jié)果符號(hào)的改變,從而影響原有的預(yù)測(cè)機(jī)制,造成條件轉(zhuǎn)移預(yù)測(cè)錯(cuò)誤。當(dāng)然,本發(fā)明的間接轉(zhuǎn)移場(chǎng)景映射不限于基于O-GEHL預(yù)測(cè)器,也可以基于類似的其它分支方向預(yù)測(cè)器實(shí)現(xiàn)映射。(2)同一間接轉(zhuǎn)移指令的多目標(biāo)地址映射區(qū)別于傳統(tǒng)的BTB結(jié)構(gòu),本發(fā)明的間接轉(zhuǎn)移預(yù)測(cè)的裝置結(jié)構(gòu)中一條間接轉(zhuǎn)移指令占用多個(gè)BTB項(xiàng),從功能上將這些項(xiàng)劃分為目標(biāo)地址項(xiàng)(圖中可簡(jiǎn)稱目標(biāo)項(xiàng))和分配項(xiàng)。目標(biāo)地址項(xiàng)用于存儲(chǔ)一條間接轉(zhuǎn)移指令的目標(biāo)地址,每個(gè)目標(biāo)地址項(xiàng)由目標(biāo)指針生成的虛擬地址進(jìn)行索引。隨著程序的運(yùn)行,根據(jù)該條間接轉(zhuǎn)移指令出現(xiàn)過(guò)的目標(biāo)地址動(dòng)態(tài)地分配目標(biāo)地址項(xiàng)。通過(guò)以往分析和評(píng)測(cè)結(jié)果表明,大多數(shù)評(píng)測(cè)程序中一條間接轉(zhuǎn)移指令的目標(biāo)地址不會(huì)超過(guò)16個(gè)。基于此種情況,本發(fā)明為一條間接轉(zhuǎn)移指令最多分配16個(gè)目標(biāo)地址項(xiàng)。如果一條間接轉(zhuǎn)移指令的目標(biāo)地址超過(guò)16個(gè),則將最新遇到的目標(biāo)地址替換已有的目標(biāo)地址項(xiàng),即以最新遇到目標(biāo)地址來(lái)刷新一已有的目標(biāo)地址項(xiàng)。由于程序運(yùn)行時(shí)可能占用多個(gè)目標(biāo)地址項(xiàng),本發(fā)明通過(guò)分配項(xiàng)來(lái)記錄每個(gè)間接轉(zhuǎn)移指令目標(biāo)地址項(xiàng)的使用情況。譬如通過(guò)一個(gè)16位或更多位的寄存器作為分配項(xiàng),其中每一位對(duì)應(yīng)于間接轉(zhuǎn)移指令的一目標(biāo)地址項(xiàng)的使用情況,如值1為使用,值0為未使用。為了在預(yù)測(cè)時(shí)盡快確認(rèn)BTB中是否存在該間接轉(zhuǎn)移指令的目標(biāo)地址項(xiàng),分配項(xiàng)在BTB中使用PC 直接索引。在本發(fā)明的間接轉(zhuǎn)移預(yù)測(cè)的裝置實(shí)施例中,創(chuàng)建目標(biāo)指針,該目標(biāo)指針指向BTB 中存儲(chǔ)的目標(biāo)地址項(xiàng),以此實(shí)現(xiàn)目標(biāo)地址的映射。每個(gè)目標(biāo)指針對(duì)應(yīng)一個(gè)目標(biāo)地址項(xiàng),因此對(duì)于一個(gè)間接轉(zhuǎn)移指令,最多可擁有16個(gè)目標(biāo)指針。這些指針譬如使用4位數(shù)值表示。其中,每個(gè)目標(biāo)指針(TP,Target Pointer)用以生成索引每個(gè)目標(biāo)地址項(xiàng)的虛擬地址(FA,F(xiàn)ake Address),該虛擬地址的位數(shù)與PC相同。不同的目標(biāo)指針會(huì)生成不同的FA, 即 FA = f (PC, TP)。一種簡(jiǎn)單的映射方式是將PC的最高4位和最低4位分別與目標(biāo)指針以及一個(gè)常數(shù)異或。當(dāng)然,也可以采用將PC的最高4位和最低4位分別與目標(biāo)指針以及一個(gè)常數(shù)相加的映射方式。這種通過(guò)計(jì)算處理實(shí)現(xiàn)映射的方式可以將生成的FA廣泛地散列分布在BTB 中,以減少間接轉(zhuǎn)移目標(biāo)之間的沖突以及與條件轉(zhuǎn)移目標(biāo)之間的沖突。(3)更新機(jī)制更新時(shí),每個(gè)子預(yù)測(cè)器將目標(biāo)指針的對(duì)應(yīng)位作為該預(yù)測(cè)器的訓(xùn)練目標(biāo)進(jìn)行更新。如果間接轉(zhuǎn)移指令提交時(shí)發(fā)現(xiàn)預(yù)測(cè)正確,本發(fā)明對(duì)BTB的操作與條件轉(zhuǎn)移指令更新BTB時(shí)相同。一旦發(fā)現(xiàn)預(yù)測(cè)錯(cuò)誤,本發(fā)明需要更新子預(yù)測(cè)器以生成正確的目標(biāo)指針,以使間接轉(zhuǎn)移場(chǎng)景映射到BTB中正確的目標(biāo)地址項(xiàng)。預(yù)測(cè)通常會(huì)產(chǎn)生如下兩類錯(cuò)誤1)目標(biāo)指針錯(cuò)誤BTB中一個(gè)目標(biāo)地址項(xiàng)已存放了正確的間接轉(zhuǎn)移地址,但目標(biāo)指針映射到了其他目標(biāo)地址項(xiàng);該情況主要是由于分支方向預(yù)測(cè)器中條件轉(zhuǎn)移方向預(yù)測(cè)與目標(biāo)指針預(yù)測(cè)的別名沖突所致。2)目標(biāo)指針無(wú)意義BTB中沒(méi)有目標(biāo)地址項(xiàng)存儲(chǔ)正確目標(biāo)地址,因此目標(biāo)指針無(wú)意義;該情況主要是由于BTB中記錄間接轉(zhuǎn)移目標(biāo)地址時(shí)的義務(wù)失效所致。為了能夠區(qū)分上述兩種情況并據(jù)此更新分配項(xiàng),本發(fā)明需要根據(jù)分配項(xiàng)中的記錄,遍歷BTB中該間接轉(zhuǎn)移指令全部已分配的目標(biāo)地址項(xiàng)。該遍歷過(guò)程可能需要多個(gè)周期完成。然而,由于本發(fā)明只需訪問(wèn)那些已分配的目標(biāo)地址項(xiàng)(根據(jù)分配項(xiàng)中記錄的信息確定),它相比于VPC技術(shù)需要遍歷全部間接轉(zhuǎn)移目標(biāo)地址存儲(chǔ)項(xiàng)而言,已較大幅降低了更新所需花費(fèi)的時(shí)間代價(jià)。本發(fā)明在上述遍歷過(guò)程中通過(guò)依次生成目標(biāo)指針映射到虛擬地址(FA),遍歷BTB 中已分配的目標(biāo)地址項(xiàng)1)分配項(xiàng)的更新遍歷時(shí),一旦出現(xiàn)某個(gè)FA訪問(wèn)BTB失效的情況,說(shuō)明其索引的目標(biāo)地址項(xiàng)已被其它分支指令替換,此時(shí)需要將分配項(xiàng)中的對(duì)應(yīng)位更新為未使用狀態(tài)。2)指針錯(cuò)誤情況更新如果某個(gè)目標(biāo)地址項(xiàng)中的目標(biāo)地址與正確目標(biāo)地址相同,則更新目標(biāo)指針來(lái)指向該目標(biāo)地址項(xiàng)由于每個(gè)子預(yù)測(cè)器的更新機(jī)制與原有預(yù)測(cè)器的更新機(jī)制相同,故只需將正確目標(biāo)指針的對(duì)應(yīng)位作為訓(xùn)練目標(biāo)進(jìn)行訓(xùn)練即可。3)無(wú)意義指針情況更新如果遍歷全部的地址仍沒(méi)有發(fā)現(xiàn)與正確地址匹配的目標(biāo)地址項(xiàng),則需要根據(jù)分配項(xiàng)中的信息,隨機(jī)分配一個(gè)新的目標(biāo)地址項(xiàng)或替換一個(gè)已使用的目標(biāo)地址項(xiàng)來(lái)記錄正確的目標(biāo)地址,并訓(xùn)練分支方向預(yù)測(cè)器。本發(fā)明提供的間接轉(zhuǎn)移預(yù)測(cè)的裝置實(shí)施例,其結(jié)構(gòu)如圖7所示,包括分支方向預(yù)測(cè)器、目標(biāo)地址映射裝置(圖7中虛線所框部分)以及BTB,其中分支方向預(yù)測(cè)器,用于根據(jù)定義的多個(gè)子預(yù)測(cè)器預(yù)測(cè)的間接轉(zhuǎn)移方向生成目標(biāo)指針;目標(biāo)地址映射裝置,用于將分支方向預(yù)測(cè)器生成的目標(biāo)指針映射為索引BTB中目標(biāo)地址項(xiàng)的虛擬地址;BTB,用于為間接轉(zhuǎn)移指令分配目標(biāo)地址項(xiàng)和分配項(xiàng),其中,目標(biāo)地址項(xiàng)通過(guò)所述虛擬地址索引;分配項(xiàng)記錄每一間接轉(zhuǎn)移指令目標(biāo)地址項(xiàng)的使用情況,通過(guò)PC的值索引。在圖7中所示的目標(biāo)地址映射裝置實(shí)施例中,包括目標(biāo)指針寄存器、虛擬地址映射器以及第一多選器,其中分支方向預(yù)測(cè)器根據(jù)定義的4個(gè)子預(yù)測(cè)器預(yù)測(cè)的間接轉(zhuǎn)移方向生成4位目標(biāo)指針;目標(biāo)指針寄存器,用于保存分支方向預(yù)測(cè)器生成的4位目標(biāo)指針;虛擬地址映射器,用于根據(jù)目標(biāo)指針寄存器保存的4位目標(biāo)指針通過(guò)計(jì)算映射FA =f(PC, TP)生成索引目標(biāo)地址項(xiàng)的虛擬地址,式中TP為目標(biāo)指針,F(xiàn)A為虛擬地址,PC為程序計(jì)數(shù)器的值;第一多選器,用于選擇通過(guò)PC的值訪問(wèn)BTB中分配項(xiàng)的第一索引和通過(guò)虛擬地址訪問(wèn)BTB中目標(biāo)地址項(xiàng)的第二索引。在圖7中所示的目標(biāo)地址映射裝置實(shí)施例中,虛擬地址映射器包括第一異或器和第二異或器,其中第一異或器用于將PC的最高4位與目標(biāo)指針相異或;第二異或器用于將PC的最低4位與一個(gè)常數(shù)相異或;將第一異或器和第二異或器的結(jié)果組合,構(gòu)成虛擬地址;或者,虛擬地址映射器包括第一加法器和第二加法器,其中第一加法器用于將PC 的最高4位與目標(biāo)指針相加;第二加法器用于將PC的最低4位與一個(gè)常數(shù)相加;將第一加法器和第二加法器的結(jié)果組合,構(gòu)成虛擬地址。在圖7中所示的目標(biāo)地址映射裝置實(shí)施例中,還包括訓(xùn)練循環(huán)計(jì)數(shù)器和第二多選器,其中訓(xùn)練循環(huán)計(jì)數(shù)器,用于輸出循環(huán)計(jì)數(shù)值;第二多選器,用于在預(yù)測(cè)時(shí)選擇輸出目標(biāo)指針寄存器生成的目標(biāo)指針,在出現(xiàn)預(yù)測(cè)錯(cuò)誤時(shí)選擇輸出訓(xùn)練循環(huán)計(jì)數(shù)器輸出的循環(huán)計(jì)數(shù)值作為更新的目標(biāo)指針;虛擬地址映射器根據(jù)第二多選器輸出的目標(biāo)指針計(jì)算生成虛擬地址。在圖7中所示的目標(biāo)地址映射裝置實(shí)施例中,BTB的分配項(xiàng)的記錄用于作為遍歷間接轉(zhuǎn)移指令全部已分配的目標(biāo)地址項(xiàng)的依據(jù),遍歷情況用于作為更新分配項(xiàng)或目標(biāo)指針的依據(jù),遍歷情況及其更新包括以下三種中任意一種第一種,遍歷時(shí)一旦出現(xiàn)使用某個(gè)目標(biāo)指針訪問(wèn)BTB而未命中的情況,則將分配項(xiàng)中的對(duì)應(yīng)位更新為未使用狀態(tài);第二種,遍歷時(shí)如果一個(gè)目標(biāo)地址項(xiàng)中的目標(biāo)地址與正確的目標(biāo)地址相同,則更新相應(yīng)的目標(biāo)指針指向該目標(biāo)地址項(xiàng),將正確目標(biāo)指針的對(duì)應(yīng)位作為訓(xùn)練目標(biāo)進(jìn)行訓(xùn)練;第三種,遍歷時(shí)如果遍歷全部已分配的目標(biāo)地址項(xiàng)后,沒(méi)有找到與正確地址匹配的目標(biāo)地址項(xiàng),則根據(jù)分配項(xiàng)中的信息,隨機(jī)地分配一個(gè)新的目標(biāo)地址項(xiàng)或替換一項(xiàng)已使用的目標(biāo)地址項(xiàng)來(lái)記錄正確的目標(biāo)地址,并更新相應(yīng)的目標(biāo)指針指向該目標(biāo)地址項(xiàng),以及訓(xùn)練分支方向預(yù)測(cè)器。本發(fā)明對(duì)基于O-GEHL預(yù)測(cè)器的間接轉(zhuǎn)移場(chǎng)景映射為目標(biāo)地址進(jìn)行了如下修改1)增加目標(biāo)指針寄存器,用于在預(yù)測(cè)時(shí)保存4位目標(biāo)指針;2)增加2個(gè)XOR或加法器,用于計(jì)算FA,并在BTB輸入端增加1個(gè)第一多選器,選擇PC或FA作為BTB訪問(wèn)地址;3)增加1個(gè)循環(huán)計(jì)數(shù)器,在更新時(shí)根據(jù)分配項(xiàng)中信息產(chǎn)生遍歷的目標(biāo)指針;并增加1個(gè)第二多選器,選擇在預(yù)測(cè)時(shí)的目標(biāo)指針或預(yù)測(cè)出現(xiàn)錯(cuò)誤時(shí)更新的目標(biāo)指針;4)增加分配項(xiàng)寄存器,以便在整條流水線中攜帶該分配項(xiàng)的信息。如圖6所示,表示了本發(fā)明基于現(xiàn)有的O-GEHL預(yù)測(cè)器所進(jìn)行的修改(圖6中灰色部件為本發(fā)明需要加入的部件)1)增加Hash變換使用全局歷史寄存器(GHR)生成子預(yù)測(cè)器索引,并增加多選器選擇原始索引值或子預(yù)測(cè)器索引值;2)增加4個(gè)加法器(圖6中用Σ表示),每個(gè)加法器有5位,用以計(jì)算每個(gè)子預(yù)測(cè)器的預(yù)測(cè)結(jié)果;并增加多選器,選擇目標(biāo)指針的對(duì)應(yīng)位作為子預(yù)測(cè)器的更新目標(biāo)。本發(fā)明的間接轉(zhuǎn)移預(yù)測(cè)的方法實(shí)施例流程,其流程可參見(jiàn)圖9,包括如下兩個(gè)步
      11驟當(dāng)處理器獲取一條間接轉(zhuǎn)移指令時(shí),通過(guò)PC訪問(wèn)BTB和分支方向預(yù)測(cè)器;其中,具體包括如果首次訪問(wèn)BTB命中,則表示在BTB中存有該間接轉(zhuǎn)移指令的目標(biāo)地址項(xiàng),該命中項(xiàng)即為該間接轉(zhuǎn)移指令的分配項(xiàng);否則,暫停取指,直到在流水線中獲得實(shí)際的間接轉(zhuǎn)移目標(biāo)地址為止。使用分支方向預(yù)測(cè)器中的子預(yù)測(cè)器獲得目標(biāo)指針(TP),通過(guò)FA = f (PC,TP)計(jì)算得到虛擬地址(FA)。在下一周期,使用FA 二次訪問(wèn)BTB,以獲得預(yù)測(cè)的間接轉(zhuǎn)移目標(biāo)地址。如果訪問(wèn)BTB命中,即BTB項(xiàng)有效且標(biāo)簽域和間接轉(zhuǎn)移地址匹配,則將存儲(chǔ)的目標(biāo)地址發(fā)送到指令緩存和流水線中;否則,暫停預(yù)測(cè),直到從流水線中獲得實(shí)際的轉(zhuǎn)移目標(biāo)地址為止。如圖8所示,表示的是C++程序Richards中的虛函數(shù)調(diào)用片段,以期說(shuō)明本發(fā)明如何使用目標(biāo)指針快速準(zhǔn)確地進(jìn)行間接轉(zhuǎn)移指令的預(yù)測(cè)。Richards程序模擬了操作系統(tǒng)中任務(wù)調(diào)度行為,并被用于評(píng)測(cè)間接轉(zhuǎn)移預(yù)測(cè)器的性能。該段程序中父類TaskControlBlock定義了一個(gè)ActionFunc的虛函數(shù),并在4個(gè)子類中定義了不同的ActionFimc行為。該程序片段中第25行的ActionFimc函數(shù)調(diào)用,對(duì)應(yīng)一條間接轉(zhuǎn)移指令jsr$26, ($27),0o隨著程序的執(zhí)行,不同的子類調(diào)用RunTask函數(shù)時(shí),會(huì)調(diào)用各個(gè)子類下的 ActionFunc函數(shù),即間接轉(zhuǎn)移指令的目標(biāo)地址不同($27不同)。例如,DeviceTCB子類調(diào)用RunTask函數(shù)時(shí),會(huì)使用DeviceTCB下定義的ActionFunc實(shí)現(xiàn)。程序執(zhí)行實(shí)現(xiàn)虛函數(shù)調(diào)用時(shí),使用本發(fā)明的機(jī)制進(jìn)行間接轉(zhuǎn)移預(yù)測(cè)的流程,如圖9 所示。當(dāng)取得該間接轉(zhuǎn)移指令時(shí),分支方向預(yù)測(cè)器中的子預(yù)測(cè)器使用GHR的低32位生成預(yù)測(cè)表索引(請(qǐng)參見(jiàn)圖6),并通過(guò)加法計(jì)算生成目標(biāo)指針的對(duì)應(yīng)位。DeviceTCB調(diào)用時(shí),生成的目標(biāo)指針為‘1011,。該目標(biāo)指針生成對(duì)應(yīng)的FA,以訪問(wèn)BTB獲得DeviceTCB下定義的 ActionFunc函數(shù)的入口地址。對(duì)于本領(lǐng)域的專業(yè)人員來(lái)說(shuō),在了解了本發(fā)明內(nèi)容和原理后,能夠在不背離本發(fā)明的原理和范圍的情況下,根據(jù)本發(fā)明的方法進(jìn)行形式和細(xì)節(jié)上的各種修正和改變,但是這些基于本發(fā)明的修正和改變?nèi)栽诒景l(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。
      1權(quán)利要求
      1.一種實(shí)現(xiàn)現(xiàn)代處理器間接轉(zhuǎn)移預(yù)測(cè)的裝置,其特征在于,包括分支方向預(yù)測(cè)器、目標(biāo)地址映射裝置以及分支目標(biāo)緩沖器,其中分支方向預(yù)測(cè)器,用于根據(jù)定義的多個(gè)子預(yù)測(cè)器預(yù)測(cè)的間接轉(zhuǎn)移方向生成目標(biāo)指針; 目標(biāo)地址映射裝置,用于將分支方向預(yù)測(cè)器生成的目標(biāo)指針映射為索引分支目標(biāo)緩沖器的虛擬地址;分支目標(biāo)緩沖器,用于為間接轉(zhuǎn)移指令分配目標(biāo)地址項(xiàng)和分配項(xiàng),所述目標(biāo)地址項(xiàng)通過(guò)所述虛擬地址索引;所述分配項(xiàng)記錄每一間接轉(zhuǎn)移指令目標(biāo)地址項(xiàng)的使用情況,通過(guò)程序計(jì)數(shù)器的值索引。
      2.按照權(quán)利要求1所述的裝置,其特征在于,所述目標(biāo)地址映射裝置包括目標(biāo)指針寄存器、虛擬地址映射器以及第一多選器,其中所述分支方向預(yù)測(cè)器根據(jù)定義的4個(gè)子預(yù)測(cè)器預(yù)測(cè)的間接轉(zhuǎn)移方向生成4位目標(biāo)指針;目標(biāo)指針寄存器,用于保存所述分支方向預(yù)測(cè)器生成的4位目標(biāo)指針; 虛擬地址映射器,用于根據(jù)目標(biāo)指針寄存器保存的所述4位目標(biāo)指針通過(guò)計(jì)算映射式 FA = f (PC,TP)生成索引目標(biāo)地址項(xiàng)的虛擬地址;在該計(jì)算映射式中,該TP為目標(biāo)指針,該 FA為虛擬地址,該P(yáng)C為程序計(jì)數(shù)器的值;第一多選器,用于選擇通過(guò)所述PC訪問(wèn)所述分配項(xiàng)的第一索引和通過(guò)虛擬地址訪問(wèn)所述目標(biāo)地址項(xiàng)的第二索引。
      3.按照權(quán)利要求2所述的裝置,其特征在于,所述虛擬地址映射器包括第一異或器和第二異或器,其中第一異或器用于將所述PC 的最高4位與所述4位目標(biāo)指針相異或;第二異或器用于將所述PC的最低4位與一個(gè)常數(shù)相異或;將第一異或器和第二異或器的結(jié)果組合,構(gòu)成所述虛擬地址;或者,所述虛擬地址映射器包括第一加法器和第二加法器,其中第一加法器用于將所述PC的最高4位與所述4位目標(biāo)指針相加;第二加法器用于將PC的最低4位與一個(gè)常數(shù)相加;將第一加法器和第二加法器的結(jié)果組合,構(gòu)成所述虛擬地址。
      4.按照權(quán)利要求2所述的裝置,其特征在于,所述目標(biāo)地址映射裝置還包括訓(xùn)練循環(huán)計(jì)數(shù)器和第二多選器,其中訓(xùn)練循環(huán)計(jì)數(shù)器,用于輸出循環(huán)計(jì)數(shù)值;第二多選器,用于在預(yù)測(cè)時(shí)選擇輸出所述目標(biāo)指針寄存器生成的目標(biāo)指針,在出現(xiàn)預(yù)測(cè)錯(cuò)誤時(shí)選擇輸出訓(xùn)練循環(huán)計(jì)數(shù)器輸出的所述循環(huán)計(jì)數(shù)值作為更新的目標(biāo)指針;所述虛擬地址映射器根據(jù)第二多選器輸出的目標(biāo)指針,通過(guò)所述計(jì)算映射式生成虛擬地址。
      5.按照權(quán)利要求4所述的裝置,其特征在于,所述分支目標(biāo)緩沖器中所述分配項(xiàng)的記錄用于作為遍歷間接轉(zhuǎn)移指令全部已分配的目標(biāo)地址項(xiàng)的依據(jù),遍歷情況用于作為更新所述分配項(xiàng)或所述目標(biāo)指針的依據(jù);所述遍歷情況及其更新包括以下三種中任意一種第一種,遍歷時(shí)一旦出現(xiàn)使用一個(gè)目標(biāo)指針訪問(wèn)所述分支目標(biāo)緩沖器而未命中的情況,則將分配項(xiàng)中的對(duì)應(yīng)位更新為未使用狀態(tài);第二種,遍歷時(shí)如果一個(gè)目標(biāo)地址項(xiàng)中的目標(biāo)地址與正確的目標(biāo)地址相同,則更新相應(yīng)的目標(biāo)指針指向該目標(biāo)地址項(xiàng),將正確目標(biāo)指針的對(duì)應(yīng)位作為訓(xùn)練目標(biāo)進(jìn)行訓(xùn)練;第三種,遍歷時(shí)如果遍歷全部已分配的目標(biāo)地址項(xiàng)后,沒(méi)有找到與正確地址匹配的目標(biāo)地址項(xiàng),則根據(jù)所述分配項(xiàng)中記錄的信息,隨機(jī)地分配一個(gè)新的目標(biāo)地址項(xiàng)或替換一項(xiàng)已使用的目標(biāo)地址項(xiàng)來(lái)記錄正確的目標(biāo)地址,并更新相應(yīng)的目標(biāo)指針指向該目標(biāo)地址項(xiàng), 以及訓(xùn)練所述分支方向預(yù)測(cè)器。
      6.一種實(shí)現(xiàn)現(xiàn)代處理器間接轉(zhuǎn)移預(yù)測(cè)的方法,涉及分支方向預(yù)測(cè)器和分支目標(biāo)緩沖器,該方法包括在分支方向預(yù)測(cè)器中定義多個(gè)子預(yù)測(cè)器,每一個(gè)子預(yù)測(cè)器預(yù)測(cè)的間接轉(zhuǎn)移方向作為目標(biāo)指針的每一位,通過(guò)所述目標(biāo)指針映射生成索引分支目標(biāo)緩沖器的虛擬地址;在分支目標(biāo)緩沖器中為每一間接轉(zhuǎn)移指令分配目標(biāo)地址項(xiàng)和分配項(xiàng),其中,所述目標(biāo)地址項(xiàng)通過(guò)目標(biāo)指針映射的虛擬地址索引;所述分配項(xiàng)用于記錄每一間接轉(zhuǎn)移指令目標(biāo)地址項(xiàng)的使用情況,并通過(guò)程序計(jì)數(shù)器的值索引。
      7.按照權(quán)利要求6所述的方法,其特征在于,當(dāng)所述處理器獲取一條間接轉(zhuǎn)移指令要進(jìn)行預(yù)測(cè)時(shí),同時(shí)執(zhí)行以下步驟通過(guò)所述程序計(jì)數(shù)器的值訪問(wèn)所述分支目標(biāo)緩沖器;若所述訪問(wèn)命中,則將命中項(xiàng)作為該間接轉(zhuǎn)移指令的所述分配項(xiàng);否則,暫停取指,直到在流水線中獲得實(shí)際的間接轉(zhuǎn)移目標(biāo)地址為止;通過(guò)所述分支方向預(yù)測(cè)器中定義的4個(gè)子預(yù)測(cè)器獲得4位目標(biāo)指針,通過(guò)計(jì)算映射式 FA = f (PC, TP)生成所述虛擬地址;在該計(jì)算映射式中,該TP為所述4位目標(biāo)指針,該FA 為生成的所述虛擬地址,該P(yáng)C為所述程序計(jì)數(shù)器的值。
      8.按照權(quán)利要求7所述的方法,其特征在于,還包括在所述預(yù)測(cè)的下一周期,使用所述虛擬地址再次訪問(wèn)所述分支目標(biāo)緩沖器,以獲得預(yù)測(cè)的間接轉(zhuǎn)移目標(biāo)地址。
      9.按照權(quán)利要求8所述的方法,其特征在于,還包括在出現(xiàn)預(yù)測(cè)錯(cuò)誤時(shí)選擇一訓(xùn)練循環(huán)計(jì)數(shù)器輸出的循環(huán)計(jì)數(shù)值作為更新的目標(biāo)指針;所述分支目標(biāo)緩沖器將所述分配項(xiàng)作為遍歷間接轉(zhuǎn)移指令全部已分配的目標(biāo)地址項(xiàng)的依據(jù),遍歷情況用于作為更新所述分配項(xiàng)或所述目標(biāo)指針的依據(jù);所述遍歷情況及其更新包括以下三種中任意一種第一種,遍歷時(shí)一旦出現(xiàn)使用一個(gè)目標(biāo)指針訪問(wèn)所述分支目標(biāo)緩沖器而未命中的情況,則將分配項(xiàng)中的對(duì)應(yīng)位更新為未使用狀態(tài);第二種,遍歷時(shí)如果一個(gè)目標(biāo)地址項(xiàng)中的目標(biāo)地址與正確的目標(biāo)地址相同,則更新相應(yīng)的目標(biāo)指針指向該目標(biāo)地址項(xiàng),將正確目標(biāo)指針的對(duì)應(yīng)位作為訓(xùn)練目標(biāo)進(jìn)行訓(xùn)練;第三種,遍歷時(shí)如果遍歷全部已分配的目標(biāo)地址項(xiàng)后,沒(méi)有找到與正確地址匹配的目標(biāo)地址項(xiàng),則根據(jù)所述分配項(xiàng)中記錄的信息,隨機(jī)地分配一個(gè)新的目標(biāo)地址項(xiàng)或替換一項(xiàng)已使用的目標(biāo)地址項(xiàng)來(lái)記錄正確的目標(biāo)地址,并更新相應(yīng)的目標(biāo)指針指向該目標(biāo)地址項(xiàng), 以及訓(xùn)練所述分支方向預(yù)測(cè)器。
      全文摘要
      本發(fā)明披露了實(shí)現(xiàn)現(xiàn)代處理器間接轉(zhuǎn)移預(yù)測(cè)的裝置及方法,其中裝置包括分支方向預(yù)測(cè)器根據(jù)定義的多個(gè)子預(yù)測(cè)器預(yù)測(cè)的間接轉(zhuǎn)移方向生成目標(biāo)指針;目標(biāo)地址映射裝置將分支方向預(yù)測(cè)器生成的目標(biāo)指針映射為索引分支目標(biāo)緩沖器的虛擬地址;以及分支目標(biāo)緩沖器為間接轉(zhuǎn)移指令分配目標(biāo)地址項(xiàng)和分配項(xiàng),其中,目標(biāo)地址項(xiàng)通過(guò)虛擬地址索引;分配項(xiàng)記錄每一間接轉(zhuǎn)移指令目標(biāo)地址項(xiàng)的使用情況,通過(guò)程序計(jì)數(shù)器的值索引。本發(fā)明在不需要大容量存儲(chǔ)結(jié)構(gòu)支持的基礎(chǔ)上,能夠以與已有的間接轉(zhuǎn)移預(yù)測(cè)技術(shù)類似的時(shí)間代價(jià),換取同時(shí)提高預(yù)測(cè)準(zhǔn)確率和處理器能效的效果。
      文檔編號(hào)G06F9/38GK102306094SQ20111023551
      公開日2012年1月4日 申請(qǐng)日期2011年8月16日 優(yōu)先權(quán)日2011年8月16日
      發(fā)明者佟冬, 史秦青, 宋天寶, 程旭, 謝子超, 陸俊林, 黃明凱 申請(qǐng)人:北京北大眾志微系統(tǒng)科技有限責(zé)任公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1