国产精品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>

      用以擴(kuò)展軟件分支目標(biāo)提示的方法及設(shè)備的制作方法

      文檔序號(hào):6534363閱讀:180來源:國(guó)知局
      用以擴(kuò)展軟件分支目標(biāo)提示的方法及設(shè)備的制作方法
      【專利摘要】本發(fā)明揭示用于基于第一指令中指定的第一程序可訪問寄存器PAR的內(nèi)容來預(yù)測(cè)存儲(chǔ)地址的設(shè)備及技術(shù),其中所述第一PAR與第二指令中的第二PAR所指定的目標(biāo)地址相關(guān)。在執(zhí)行所述第二指令之前推測(cè)式提取在所述所預(yù)測(cè)存儲(chǔ)地址處的信息。所述第一指令是預(yù)先相關(guān)通知ADVCN指令,所述第二指令是間接分支指令,且所述信息是在所述所預(yù)測(cè)存儲(chǔ)地址處開始的多個(gè)指令。所述所預(yù)測(cè)存儲(chǔ)地址是用于所述間接分支指令的從其推測(cè)式提取指令的分支目標(biāo)地址。所述預(yù)測(cè)是基于在所述ADVCN指令中指定的所述第一PAR的內(nèi)容。所述第一PAR的所述內(nèi)容與所述分支指令的己進(jìn)行評(píng)估相關(guān)。
      【專利說明】用以擴(kuò)展軟件分支目標(biāo)提示的方法及設(shè)備

      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明大體上涉及用于處理處理器管線中的指令的技術(shù),且更具體來說涉及用于 產(chǎn)生用于間接分支指令的目標(biāo)地址的早期指示的技術(shù)。

      【背景技術(shù)】
      [0002] 許多便攜式產(chǎn)品(例如蜂窩電話、膝上型計(jì)算機(jī)、個(gè)人數(shù)據(jù)助理(PDA)或類似物) 使用具有至少一個(gè)處理器、指令源、輸入操作數(shù)的源及存儲(chǔ)空間的處理系統(tǒng)來用于存儲(chǔ)執(zhí) 行結(jié)果。舉例來說,可將指令及輸入操作數(shù)存儲(chǔ)在由通用寄存器及多層級(jí)高速緩沖存儲(chǔ)器 (包含例如指令高速緩沖存儲(chǔ)器、數(shù)據(jù)高速緩沖存儲(chǔ)器及系統(tǒng)存儲(chǔ)器)組成的分層存儲(chǔ)器 配置中。
      [0003] 為了在程序的執(zhí)行中提供高性能,處理器可使用推測(cè)式執(zhí)行以提取及執(zhí)行在預(yù)測(cè) 分支目標(biāo)地址處開始的指令。如果分支目標(biāo)地址誤預(yù)測(cè),那么推測(cè)式執(zhí)行的指令必須從管 線刷新且所述管線在不同地址處重新開始。在許多處理器指令集中,常常存在分支到從寄 存器的內(nèi)容導(dǎo)出的程序目的地地址的指令。此類指令一般稱作間接分支指令。由于對(duì)寄存 器的內(nèi)容的間接分支依賴性,通常難以預(yù)測(cè)分支目標(biāo)地址,這是因?yàn)榧拇嫫骺稍诿看螆?zhí)行 間接分支指令時(shí)具有不同的值。由于校正誤預(yù)測(cè)間接分支一般需要返回追蹤間接分支指令 以便提取及執(zhí)行正確的分支路徑上的指令,所以可因此降低處理器的性能。而且,誤預(yù)測(cè)指 示處理器不正確地推測(cè)式提取及開始錯(cuò)誤分支路徑上的指令的處理,從而致使用于未使用 的指令處理及用于從關(guān)系刷新所述指令兩者的功率的增加。


      【發(fā)明內(nèi)容】

      [0004] 在其若干方面中,本發(fā)明認(rèn)識(shí)到可通過最小化間接分支指令的誤預(yù)測(cè)來改善性 能。本發(fā)明的第一實(shí)施例認(rèn)識(shí)到存在基于第一指令中指定的第一程序可訪問寄存器(PAR) 的內(nèi)容來預(yù)測(cè)存儲(chǔ)地址的方法的需要,其中所述第一 PAR與第二指令中的第二PAR所指定 的目標(biāo)地址相關(guān)。在執(zhí)行所述第二指令之前推測(cè)式提取在所述所預(yù)測(cè)存儲(chǔ)地址處的信息。
      [0005] 另一實(shí)施例提出一種預(yù)測(cè)分支到用于分支指令的目標(biāo)地址的評(píng)估結(jié)果的方法,其 中所述預(yù)測(cè)是基于第一指令中所指定的程序可訪問寄存器(PAR),且所指定PAR與分支指 令的已進(jìn)行評(píng)估相關(guān)。在執(zhí)行所述分支指令之前推測(cè)式提取在所述目標(biāo)地址處的指令。
      [0006] 另一實(shí)施例提出一種用于推測(cè)式提取指令的設(shè)備。第一程序可訪問寄存器(PAR) 經(jīng)配置以存儲(chǔ)與分支指令中所指定的目標(biāo)地址相關(guān)的值,及第二PAR經(jīng)配置以存儲(chǔ)用于所 述分支指令的目標(biāo)地址。解碼電路經(jīng)配置以識(shí)別預(yù)先相關(guān)通知(ADVCN)指令中指定的所述 第一 PAR及識(shí)別分支指令中指定的所述第二PAR。預(yù)測(cè)電路經(jīng)配置以響應(yīng)于所述ADVCN指 令而基于所述值來預(yù)測(cè)存儲(chǔ)地址,其中存儲(chǔ)在所述第一 PAR中的值與所述第二PAR識(shí)別的 目標(biāo)地址相關(guān)。提取電路經(jīng)配置以在所述分支指令的執(zhí)行之前推測(cè)式提取在所述所預(yù)測(cè)存 儲(chǔ)地址處開始的指令。
      [0007] 另一實(shí)施例提出一種用計(jì)算機(jī)可讀程序數(shù)據(jù)及代碼編碼以用于操作一系統(tǒng)的計(jì) 算機(jī)可讀非暫時(shí)性媒體。存儲(chǔ)地址是基于第一指令中指定的第一程序可訪問寄存器(PAR) 的內(nèi)容來預(yù)測(cè),其中所述第一 PAR與第二指令中的第二PAR所指定的目標(biāo)地址相關(guān)。在執(zhí) 行所述第二指令之前推測(cè)式提取在所預(yù)測(cè)存儲(chǔ)地址處的信息。
      [0008] 另一實(shí)施例提出一種用于推測(cè)式提取指令的設(shè)備。采用用于存儲(chǔ)與分支指令中所 指定的目標(biāo)地址相關(guān)的值的裝置,及可經(jīng)配置以存儲(chǔ)用于所述分支指令的所述目標(biāo)地址的 第二PAR。還采用用于識(shí)別預(yù)先相關(guān)通知(ADVCN)指令中指定的第一 PAR及用于識(shí)別分支 指令中指定的第二PAR的裝置。此外,采用用于響應(yīng)于ADVCN指令而基于所述值來預(yù)測(cè)存 儲(chǔ)地址的裝置,其中存儲(chǔ)在所述第一 PAR中的值與所述第二PAR識(shí)別的目標(biāo)地址相關(guān)。用 于在執(zhí)行所述分支指令之前推測(cè)式提取在所預(yù)測(cè)存儲(chǔ)地址處開始的指令的裝置。
      [0009] 從以下詳細(xì)描述及附圖中將顯而易見對(duì)本發(fā)明的更完整的理解以及本發(fā)明的其 它特征及優(yōu)點(diǎn)。

      【專利附圖】

      【附圖說明】
      [0010] 圖1說明其中可有利地采用本發(fā)明的實(shí)施例的示范性無線通信系統(tǒng);
      [0011] 圖2是根據(jù)本發(fā)明的實(shí)施例的支持間接分支指令的分支目標(biāo)地址的處理器組的 功能框圖;
      [0012] 圖3A是根據(jù)本發(fā)明的實(shí)施例的用于指定其內(nèi)容與不同寄存器所產(chǎn)生的間接分支 目標(biāo)地址值相關(guān)的編程器或軟件工具所識(shí)別的寄存器的32位預(yù)先相關(guān)通知(ADVCN)指令 的一般格式;
      [0013] 圖3B是根據(jù)本發(fā)明的實(shí)施例的用于指定與間接分支目標(biāo)地址值相關(guān)的寄存器的 16位ADVCN指令的一般格式;
      [0014] 圖4A是用于使用先前間接分支執(zhí)行的歷史的間接分支預(yù)測(cè)方法的第一代碼實(shí) 例;
      [0015] 圖4B是用于使用提示指令來幫助預(yù)測(cè)間接分支目標(biāo)地址的間接分支通知方法的 第二代碼實(shí)例;
      [0016] 圖4C是根據(jù)本發(fā)明的實(shí)施例的用于使用圖3A的ADVCN指令來提供與間接分支目 標(biāo)地址相關(guān)的寄存器的預(yù)先通知的間接分支預(yù)先通知方法的第三代碼實(shí)例;
      [0017] 圖4D是根據(jù)本發(fā)明的實(shí)施例的用于使用圖3A的ADVCN指令來提供與所獲取間接 分支目標(biāo)地址相關(guān)的寄存器的預(yù)先通知的間接分支預(yù)先通知方法的第四代碼實(shí)例;
      [0018] 圖5說明根據(jù)本發(fā)明的實(shí)施例的示范性第一間接分支目標(biāo)地址(BTA)預(yù)先相關(guān)通 知電路;及
      [0019] 圖6說明根據(jù)本發(fā)明的實(shí)施例的經(jīng)利用以預(yù)測(cè)間接分支指令的分支目標(biāo)地址的 預(yù)先相關(guān)通知(ADVCN)過程。

      【具體實(shí)施方式】
      [0020] 現(xiàn)將參看附圖來較充分地描述本發(fā)明,在附圖中展示本發(fā)明的若干實(shí)施例。然而, 本發(fā)明可以各種形式來體現(xiàn),且不應(yīng)被理解為限于本文所陳述的實(shí)施例。而是,提供這些 實(shí)施例而使得本發(fā)明將為透徹且完整的,且將本發(fā)明的范圍充分傳送到所屬領(lǐng)域的技術(shù)人 員。
      [0021] 用于根據(jù)本發(fā)明的教示來操作或進(jìn)行操作的計(jì)算機(jī)程序代碼或"程序代碼"可用 高級(jí)編程語言來撰寫,例如 C、C++、JAVA?、Smalltalk、·丨avaScripl?、Visual Basic?、 TSQUPerl或各種其它編程語言。用于目標(biāo)處理器架構(gòu)的程序還可直接用本機(jī)匯編語言來 撰寫。本機(jī)匯編程序使用機(jī)器級(jí)別二進(jìn)制指令的指令助記表示。如本文所使用的程序代碼 或計(jì)算機(jī)可讀非暫時(shí)性媒體是指其格式可被處理器理解的機(jī)器語言代碼,例如目標(biāo)代碼。
      [0022] 圖1說明其中可有利地采用本發(fā)明實(shí)施例的示范性無線通信系統(tǒng)100。出于說明 的目的,圖1展示三個(gè)遠(yuǎn)程單元120、130及150以及兩個(gè)基站140。將認(rèn)識(shí)到,常見的無線 通信系統(tǒng)可具有更多的遠(yuǎn)程單元及基站。遠(yuǎn)程單元120、130、150及基站140 (包含如分別 由組件125A、125C、125B及12?表示的硬件組件、軟件組件或兩者)已經(jīng)調(diào)適以并入如下 文進(jìn)一步論述的本發(fā)明的實(shí)施例。圖1展示從基站140到遠(yuǎn)程單元120、130及150的前向 鏈接信號(hào)180以及從遠(yuǎn)程單元120、130及150到基站140的反向鏈接信號(hào)190。
      [0023] 在圖1中,將遠(yuǎn)程單元120展示為移動(dòng)電話,將遠(yuǎn)程單元130展示為便攜式計(jì)算 機(jī),且將遠(yuǎn)程單元150展示為無線本地環(huán)路系統(tǒng)中的固定位置遠(yuǎn)程單元。通過實(shí)例的方式, 遠(yuǎn)程單元可或者為蜂窩電話、智能電話、尋呼機(jī)、對(duì)講機(jī)、手持式個(gè)人通信系統(tǒng)(PCS)單元、 平板型計(jì)算機(jī)、例如個(gè)人數(shù)據(jù)助理等便攜式數(shù)據(jù)單元、或例如儀表讀數(shù)設(shè)備等固定位置數(shù) 據(jù)單元。盡管圖1說明根據(jù)本發(fā)明的教示的遠(yuǎn)程單元,但本發(fā)明不限于這些示范性所說明 單元。可在使用執(zhí)行間接分支指令的處理器的任何裝置中適當(dāng)?shù)厥褂帽景l(fā)明的實(shí)施例。
      [0024] 圖2是根據(jù)本發(fā)明的支持準(zhǔn)備間接分支指令的分支目標(biāo)地址的預(yù)先通知的處理 器組200的功能框圖。處理器組200包含處理器管線202、通用寄存器堆(GPRF) 204、控制電 路206、L1指令高速緩沖存儲(chǔ)器208、L1數(shù)據(jù)高速緩沖存儲(chǔ)器210及存儲(chǔ)器層次212??刂齐?路206包含程序計(jì)數(shù)器(PC) 215、分支目標(biāo)地址寄存器(BTAR) 219及預(yù)測(cè)標(biāo)記(Ptag) 221, 上述裝置如下文更詳細(xì)描述而交互以用于控制包含指令提取級(jí)214的處理器管線202的目 的。為了論述清晰性而未展示可連接到處理器組的外圍裝置。處理器組200可適當(dāng)?shù)赜糜?圖1的硬件組件125A-125D中以用于執(zhí)行存儲(chǔ)在Ll指令高速緩沖存儲(chǔ)器208中的程序代 碼,利用存儲(chǔ)在Ll數(shù)據(jù)高速緩沖存儲(chǔ)器210中且與存儲(chǔ)器層次212相關(guān)聯(lián)的數(shù)據(jù)。處理器 管線202可在通用處理器、數(shù)字信號(hào)處理器(DSP)、專用處理器(ASP)或類似物中為可操作 的。處理組200的各種組件可使用專用集成電路(ASIC)技術(shù)、現(xiàn)場(chǎng)可編程門陣列(FPGA) 技術(shù)、或其它可編程邏輯、離散門或晶體管邏輯、或適于預(yù)期應(yīng)用的任何其它可用技術(shù)來實(shí) 施。
      [0025] 處理器管線202包含六個(gè)主要級(jí),指令提取級(jí)214、解碼及預(yù)先相關(guān)通知(ADVCN) 級(jí)216、調(diào)度級(jí)218、讀取寄存器級(jí)220、執(zhí)行級(jí)222及回寫級(jí)224。盡管展示單個(gè)處理器管 線202,但具有本發(fā)明的間接分支目標(biāo)地址預(yù)先通知的指令的處理適用于超標(biāo)量設(shè)計(jì)及實(shí) 施平行管線的其它架構(gòu)。舉例來說,經(jīng)設(shè)計(jì)用于高時(shí)鐘速率的超標(biāo)量處理器可具有兩個(gè)或 兩個(gè)以上平行管線,且每一管線可將指令提取級(jí)214、具有ADVCN邏輯電路217的解碼及 ADVCN級(jí)216、調(diào)度級(jí)218、讀取寄存器級(jí)220、執(zhí)行級(jí)222及回寫級(jí)224劃分為兩個(gè)或兩個(gè) 以上管線式級(jí),從而增加整體處理器管線深度以便支持高時(shí)鐘速率。
      [0026] 以處理器管線202的第一級(jí)開始,與程序計(jì)數(shù)器(PC) 215相關(guān)聯(lián)的指令提取級(jí)214 從Ll指令高速緩沖存儲(chǔ)器208提取指令以用于由稍后級(jí)處理。如果在Ll指令高速緩沖存 儲(chǔ)器208中指令提取未中(意味著待提取的指令不在Ll指令高速緩沖存儲(chǔ)器208中),那 么從可包含多個(gè)層級(jí)的高速緩沖存儲(chǔ)器(例如2級(jí)(L2)高速緩沖存儲(chǔ)器)及主存儲(chǔ)器的存 儲(chǔ)器層次212來提取指令??蓮钠渌矗ɡ鐔?dòng)只讀存儲(chǔ)器(ROM)、硬盤驅(qū)動(dòng)器、光盤) 或從外部接口(例如因特網(wǎng))將指令加載到存儲(chǔ)器層次212。接著用ADVCN邏輯電路217 在解碼及ADVCN級(jí)216中解碼所提取指令,從而提供與間接分支目標(biāo)地址值相關(guān)的寄存器 的預(yù)先通知的額外能力,如下文更詳細(xì)描述。與ADVCN邏輯電路217相關(guān)聯(lián)的是可位于圖 2中所示的控制電路206中的分支目標(biāo)地址寄存器(BTAR)219及Ptag電路221,但不限于 此類放置。舉例來說,BTAR 219及Ptag電路221可適當(dāng)?shù)匚挥诮獯a及ADVCN級(jí)216內(nèi)。
      [0027] 調(diào)度級(jí)218獲取一或多個(gè)經(jīng)解碼指令且將其調(diào)度到一或多個(gè)指令管線,例如用于 超標(biāo)量或多線程處理器中。讀取寄存器級(jí)220從GPRF 204提取數(shù)據(jù)操作數(shù),或從轉(zhuǎn)發(fā)網(wǎng) 226接收數(shù)據(jù)操作數(shù)。轉(zhuǎn)發(fā)網(wǎng)226在GPRF 204周圍提供快速路徑以在結(jié)果操作數(shù)一從執(zhí)行 級(jí)可用時(shí)就供應(yīng)所述結(jié)果操作數(shù)。甚至于轉(zhuǎn)發(fā)網(wǎng),來自深執(zhí)行管線的結(jié)果操作數(shù)可采用三 個(gè)或三個(gè)以上執(zhí)行循環(huán)。在這些循環(huán)期間,讀取寄存器級(jí)220中的需要來自所述執(zhí)行管線 的結(jié)果操作數(shù)數(shù)據(jù)的指令必須等待直到所述結(jié)果操作數(shù)可用為止。執(zhí)行級(jí)222執(zhí)行所調(diào)度 指令,且回寫級(jí)224將結(jié)果寫入到GPRF 204,且還可在所述結(jié)果將用于以下指令中的情況 下經(jīng)由轉(zhuǎn)發(fā)網(wǎng)226將所述結(jié)果發(fā)送回到讀取寄存器級(jí)220。由于可在回寫級(jí)224中無序地 (與程序次序相比)接收結(jié)果,所以在將結(jié)果寫回到GPRF 204時(shí)回寫級(jí)224使用處理器設(shè) 施來保持所述程序次序。在下文用詳細(xì)代碼實(shí)例來提供用于提供與間接分支指令的目標(biāo)地 址相關(guān)的寄存器的預(yù)先通知的處理器管線202的更詳細(xì)描述。
      [0028] 處理器組200可經(jīng)配置以在存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)媒體上的程序的控制下執(zhí)行 指令。舉例來說,計(jì)算機(jī)可讀存儲(chǔ)媒體可與處理器組200直接局部相關(guān)聯(lián)(例如可從Ll指 令高速緩沖存儲(chǔ)器208可用以用于對(duì)從Ll數(shù)據(jù)高速緩沖存儲(chǔ)器210及存儲(chǔ)器層次212獲 得的數(shù)據(jù)進(jìn)行操作)或經(jīng)由(例如)輸入/輸出接口(未圖示)而與其相關(guān)聯(lián)。處理器組 200還在執(zhí)行程序時(shí)存取來自Ll數(shù)據(jù)高速緩沖存儲(chǔ)器210及存儲(chǔ)器層次212的數(shù)據(jù)。計(jì)算 機(jī)可讀存儲(chǔ)媒體可包含隨機(jī)存取存儲(chǔ)器(RAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、同步動(dòng)態(tài)隨 機(jī)存取存儲(chǔ)器(SDRAM)、快閃存儲(chǔ)器、只讀存儲(chǔ)器(ROM)、可編程只讀存儲(chǔ)器(PROM)、可擦除 可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、緊密磁盤(CD)、數(shù)字視 頻光盤(DVD)、其它類型的可移動(dòng)磁盤或任何其它合適的存儲(chǔ)媒體。
      [0029] 圖3A是根據(jù)本發(fā)明的用于指定其內(nèi)容與不同寄存器所產(chǎn)生的間接分支目標(biāo)地址 值相關(guān)的編程器或軟件工具所識(shí)別的寄存器的32位ADVCN指令300的一般格式。ADVCN指 令300在即將來臨的間接分支指令之前向處理器組200通知與實(shí)際分支目標(biāo)地址相關(guān)的寄 存器。通過提供預(yù)先通知(如下文更詳細(xì)描述),處理器性能可得以改良。使用如許多指令 集架構(gòu)(ISA)所利用的條件代碼字段304來說明ADVCN指令300,從而基于指定的一或多 個(gè)旗標(biāo)來指定是無條件地還是有條件地執(zhí)行所述指令。操作碼305將指令識(shí)別為具有至少 寄存器字段(與分支目標(biāo)地址相關(guān)的ADVCN Rm 307)的ADVCN指令。指令特定字段306允 許操作碼擴(kuò)充及其它指令特定編碼。在具有其中根據(jù)指令中的指定條件代碼字段而有條件 地執(zhí)行指令的ISA的處理器中,可有條件地執(zhí)行在分支指令之前的可影響分支目標(biāo)地址寄 存器Rm的最后指令。在許多此類情況下,影響指令的此類Rm的條件代碼字段可使用用于 ADVCN指令的相同條件字段來譯碼,但不限于此類規(guī)范,從而允許分支歷史方法用以預(yù)測(cè)是 否將獲取所述分支及相關(guān)聯(lián)目標(biāo)地址。
      [0030] 本發(fā)明的教示適用于多種指令格式及建筑規(guī)范。舉例來說,圖3B是根據(jù)本發(fā)明的 用于至少指定與分支目標(biāo)地址值相關(guān)的寄存器字段(ADVCN Rm 357)的16位ADVCN指令 350的一般格式。16位ADVCN指令350類似于具有操作碼355、寄存器字段ADVCN Rm 357 及指令特定位356的32位ADVCN指令300。還應(yīng)注意,可利用其它位格式及指令寬度來編 碼ADVCN指令。
      [0031] 一般形式的間接分支類型的指令可在處理器管線202中有利地使用及執(zhí)行,例如 寄存器Rx上分支(BX)、添加 PC、移動(dòng)Rx PC及其類似者。為了描述本發(fā)明的目的,在代碼 序列實(shí)例中使用BX Rx形式的間接分支指令,如下文進(jìn)一步描述。
      [0032] 應(yīng)注意,一般在ISA中提供其它形式的分支指令,例如具有被計(jì)算為指令指定的 偏移地址與基底地址寄存器的總和的BTA及其類似者的分支指令。在支持此類分支指令 時(shí),處理器管線202可利用基于追蹤的分支歷史預(yù)測(cè)技術(shù),例如先前分支指令執(zhí)行的條件 執(zhí)行狀態(tài),且存儲(chǔ)此類執(zhí)行狀態(tài)用于在預(yù)測(cè)這些指令的未來執(zhí)行中使用。處理器管線202 可支持此類分支歷史預(yù)測(cè)技術(shù),且另外支持使用ADVCN指令來提供與間接分支目標(biāo)地址相 關(guān)的寄存器的預(yù)先通知。舉例來說,處理器管線202可使用分支歷史預(yù)測(cè)技術(shù)直到遇到 ADVCN指令為止,所述ADVCN指令接著使用如本文所描述的ADVCN設(shè)施來越權(quán)控制所述分支 目標(biāo)歷史預(yù)測(cè)技術(shù)。
      [0033] 在本發(fā)明的其它實(shí)施例中,還可設(shè)置處理器管線202以監(jiān)視使用ADVCN指令及當(dāng) ADVCN相關(guān)目標(biāo)地址未被正確地預(yù)測(cè)一或多次時(shí)的準(zhǔn)確性,從而忽略相同間接分支后續(xù)遭 遇ADVCN指令。還應(yīng)注意,對(duì)于支持具有ADVCN指令的ISA的處理器的特定實(shí)施方案,處理 器可將未遭遇ADVCN指令視為無操作(NOP)指令或?qū)⑺鶛z測(cè)ADVCN指令標(biāo)記為未界定。此 夕卜,可將ADVCN指令視為具有動(dòng)態(tài)分支歷史預(yù)測(cè)電路的處理器管線中的Ν0Ρ,所述動(dòng)態(tài)分支 歷史預(yù)測(cè)電路具有充分的硬件資源以追蹤在執(zhí)行代碼段期間遭遇的分支且啟用如下所述 的用于超過動(dòng)態(tài)分支歷史預(yù)測(cè)電路可用的硬件資源的代碼段的ADVCN指令。而且,ADVCN指 令可與動(dòng)態(tài)分支歷史預(yù)測(cè)電路結(jié)合使用以用于提供與間接分支目標(biāo)地址相關(guān)的寄存器的 預(yù)先通知,其中動(dòng)態(tài)分支歷史預(yù)測(cè)電路具有用于預(yù)測(cè)間接分支目標(biāo)地址的不良結(jié)果。舉例 來說,由動(dòng)態(tài)分支歷史預(yù)測(cè)電路產(chǎn)生的預(yù)測(cè)分支目標(biāo)地址可被經(jīng)由使用ADVCN指令而提供 的目標(biāo)地址越權(quán)控制。另外,呈現(xiàn)有利的自動(dòng)間接目標(biāo)推理方法用于提供如下所述的間接 分支目標(biāo)地址的預(yù)先通知。
      [0034] 當(dāng)處理器遭遇間接分支指令時(shí),處理器確定是否到分支且還基于處理器的動(dòng)態(tài)狀 態(tài)來確定分支的目標(biāo)地址。間接分支指令一般用程序可訪問寄存器(PAR)來編碼,例如來 自通用寄存器(GPR)堆或含有分支目標(biāo)地址的其它程序可訪問存儲(chǔ)位置的寄存器。因此, 在第一指令中指定第一程序可訪問寄存器(PAR)(例如來自通用寄存器(GPR)堆或其它程 序可訪問存儲(chǔ)位置的寄存器)來基于第二指令所指定的第二PAR來預(yù)測(cè)目標(biāo)地址。第一 PAR與第二PAR所指定的目標(biāo)地址相關(guān)。而且,在第一指令中指定PAR以預(yù)測(cè)分支到分支指 令中所指定的目標(biāo)地址的評(píng)估結(jié)果。指定PAR與分支指令的所獲取評(píng)估相關(guān)。而且,處理 器基于所滿足的條件(例如所注冊(cè)的值是等于、不等于、大于還是小于另一注冊(cè)的值)而分 支。由于間接分支指令可改變程序中的依序?qū)ぶ返牧?,所以管線式處理器一般停止提取指 令直到其可確定是否將進(jìn)行分支以及如果分支的話將到什么目標(biāo)地址為止。如果確定不進(jìn) 行分支,那么分支"失敗"且提取在所述分支之后的下一依序地址處的指令。準(zhǔn)確地預(yù)測(cè)是 否進(jìn)行分支及預(yù)測(cè)分支目標(biāo)地址是困難的問題。
      [0035] 圖4A是用于在未遭遇ADVCN指令的情況下用于使用用于預(yù)測(cè)間接分支執(zhí)行的 一般歷史方法的間接分支預(yù)測(cè)的方法的第一代碼實(shí)例400。參考處理器組200來描述代 碼實(shí)例400的執(zhí)行。指令A(yù)-D 401-404為用于此實(shí)例的順序算術(shù)指令集,其基于指令A(yù)-D 401-404的分析而不影響GPRF 204中的寄存器R0。寄存器RO通過具有間接分支指令BX RO 406的目標(biāo)地址的加載RO指令405來加載。針對(duì)此實(shí)例的目的,指令401-406中的每 一者經(jīng)指定為無條件地執(zhí)行。還假定加載RO指令405在Ll指令高速緩沖存儲(chǔ)器208中可 用,使得當(dāng)指令A(yù) 401完成執(zhí)行級(jí)222中的執(zhí)行時(shí),加載RO指令405已在提取級(jí)214中提 取。接著在解碼及ADVCN級(jí)216中解碼加載RO指令405時(shí)提取間接分支BX RO指令406。 在下一管線級(jí)中,加載RO指令405準(zhǔn)備被調(diào)度用于執(zhí)行且BX RO指令406經(jīng)解碼。而且,在 解碼及ADVCN級(jí)216,無論BX RO指令406是否進(jìn)行而基于先前間接分支執(zhí)行的歷史來進(jìn)行 預(yù)測(cè),且在可能的情況下還預(yù)測(cè)間接分支的目標(biāo)地址。對(duì)于此實(shí)例,BX RO指令406經(jīng)預(yù)測(cè) 為"進(jìn)行",且ADVCN邏輯電路217僅需要預(yù)測(cè)間接分支目標(biāo)地址作為地址X。ADVCN邏輯電 路217不能預(yù)測(cè)在所有情況下的目標(biāo)地址。為進(jìn)行預(yù)測(cè),使用先前分支方向歷史及當(dāng)前指 令地址來產(chǎn)生散列鍵。舉例來說,示范性散列鍵等于X〇R(Current_Instruction_Address, Prior_Branch_Direction_History),如下文更詳細(xì)描述。接著在預(yù)測(cè)表格中查找為Ptag 的散列鍵以查看是否存在此分支/歷史組合的先前實(shí)例,且如果存在,那么使用存儲(chǔ)在與 先前實(shí)例相關(guān)聯(lián)的條目中的目標(biāo)地址來預(yù)測(cè)間接分支目標(biāo)地址。然而,如果未在預(yù)測(cè)表格 中找到散列鍵,那么預(yù)測(cè)是不可能的且指令的提取停止。所述管線停止繼續(xù)直到間接分支 指令向下流動(dòng)到執(zhí)行級(jí)且執(zhí)行為止。其后,將在執(zhí)行級(jí)中產(chǎn)生的正確目標(biāo)地址發(fā)送到提取 級(jí)且所述停止被移除。如果預(yù)測(cè)是可能的,那么管線不停止,且基于此預(yù)測(cè),處理器管線202 經(jīng)引導(dǎo)開始從所預(yù)測(cè)地址X開始的推測(cè)式提取指令。對(duì)于"進(jìn)行"狀態(tài),所預(yù)測(cè)地址X -般 為來自當(dāng)前指令尋址的重新定向。處理器管線202還刷新所述管線中在間接分支BX RO指 令406之后的任何指令(如果那些指令不與在地址X處開始的指令相關(guān)聯(lián))。
      [0036] 處理器管線202繼續(xù)提取指令直到可在執(zhí)行級(jí)中確定是否正確地預(yù)測(cè)所預(yù)測(cè)地 址X為止。關(guān)于基于歷史的方法的缺點(diǎn)是針對(duì)不同類型代碼的預(yù)測(cè)的大體不準(zhǔn)確度,如在 使用分支執(zhí)行歷史與當(dāng)前指令地址的組合的實(shí)踐中所觀測(cè)到的。此預(yù)測(cè)不準(zhǔn)確度是由于基 于過去觀測(cè)的某些分支目標(biāo)地址的固有不可預(yù)測(cè)性。誤預(yù)測(cè)是成本較高的,這是因?yàn)槠浠?費(fèi)多個(gè)循環(huán)來尋找等待直到所述分支執(zhí)行為止的誤預(yù)測(cè),且處理器管線基本上在原本應(yīng)刷 新的那些循環(huán)期間停止或進(jìn)行工作。
      [0037] 圖4B是用于使用提示指令來幫助預(yù)測(cè)間接分支目標(biāo)地址的間接分支預(yù)先通知方 法的第二代碼實(shí)例420?;趫D4A的指令A(yù)-D 401-404的先前所述分析,圖4B的指令A(yù)-D 421-424不影響分支目標(biāo)地址寄存器RO,可將加載RO指令425放置在指令序列中較高向上 處,例如放置在指令A(yù) 421之后。而且,可在程序420中將軟件提示指令426放置在間接分 支指令BX RO 427之前以識(shí)別相關(guān)聯(lián)分支目標(biāo)地址。軟件提示426的可用性部分取決于可 在遭遇間接分支之前多早來供應(yīng)分支目標(biāo)地址提示指令426。在許多情況下,由于關(guān)于代碼 序列中的先前指令的數(shù)據(jù)危障,例如,直到緊接在間接分支指令BX RO 427之前才能供應(yīng)軟 件提示指令426,如圖4B中所示。
      [0038] 為處理此類困難,可通過指定與此類評(píng)估結(jié)果相關(guān)的寄存器來動(dòng)態(tài)地確定是否進(jìn) 行分支的評(píng)估。而且,所述分支目標(biāo)地址可通過指定與目標(biāo)地址相關(guān)的寄存器而非等待在 所述分支指令內(nèi)編碼的目標(biāo)地址在處理器管線中被解析來動(dòng)態(tài)地確定。雖然可使用標(biāo)準(zhǔn)分 支預(yù)測(cè)技術(shù)(例如關(guān)于上文圖4A所描述),但此類技術(shù)還可具有取決于執(zhí)行中的程序的高 等級(jí)的誤預(yù)測(cè)。關(guān)于圖4C的第三代碼實(shí)例440來展示用以最小化誤預(yù)測(cè)間接分支指令的 一個(gè)方法。
      [0039] 圖4C是用于使用圖3A的ADVCN指令300來提供與間接分支目標(biāo)地址相關(guān)的寄存 器的預(yù)先通知的間接分支預(yù)先通知方法的第三代碼實(shí)例440。ADVCN指令300的使用通過 最小化誤預(yù)測(cè)來改良處理器性能且通過具有較準(zhǔn)確預(yù)測(cè)來改進(jìn)功率。并非將間接分支指令 所識(shí)別的寄存器直接指示為保持目標(biāo)地址(值),例如使用與目標(biāo)地址相關(guān)的另一寄存器。 舉例來說,在圖4C中,存儲(chǔ)在指令B 442及加載R0[R1]446的寄存器Rl中的值與存儲(chǔ)在由 分支BX RO指令447所使用的目標(biāo)地址值相關(guān)。Rl的值與用于BX RO指令447的RO的值 相關(guān)。在圖4D的第四代碼實(shí)例460中所示的另一實(shí)例中,存儲(chǔ)在指令B 463的寄存器R2中 的值與存儲(chǔ)在寄存器RO中的目標(biāo)地址經(jīng)由Rl間接地相關(guān)。R2的值與用于BX RO指令447 的RO的值經(jīng)由Rl的值而間接地相關(guān)。在圖4C的代碼實(shí)例440及圖4D的代碼實(shí)例460中, 圖4C中的ADVCN指令443及圖4D中的463供應(yīng)一相關(guān)值,所述相關(guān)值影響分支指令所使 用的分支目標(biāo)地址的產(chǎn)生,所述分支目標(biāo)地址在這些實(shí)例中存儲(chǔ)在RO中。ADVCN指令可用 以預(yù)測(cè)分支到用于分支指令的目標(biāo)地址的評(píng)估結(jié)果,其中所述預(yù)測(cè)是基于第一指令中所指 定的程序可訪問寄存器(PAR),且所指定PAR與分支指令的已進(jìn)行評(píng)估相關(guān)。
      [0040] 當(dāng)圖4C的新指令序列441-447流經(jīng)處理器管線202時(shí),ADVCN Rl指令443將在 加載Rl [R2]指令442處于執(zhí)行級(jí)222中時(shí)處于讀取級(jí)220中,及加載RO [R1]指令446將 處于提取級(jí)214中。需要在間接分支指令BX RO 447進(jìn)入解碼及ADVCN級(jí)216之前確定Rl 值,以允許ADVCN邏輯電路217使用預(yù)先通知Rl值來進(jìn)行用于BX RO指令447的分支目標(biāo) 地址的預(yù)測(cè)而沒有任何額外循環(huán)延遲。應(yīng)注意,BX RO指令447在管線中被動(dòng)態(tài)地識(shí)別。存 儲(chǔ)在ADVCN指令443指定的寄存器中的值(例如圖4C中的代碼實(shí)例中的Rl的內(nèi)容或圖4D 中的代碼實(shí)例中的R2的內(nèi)容)在ADVCN邏輯電路217中用作散列函數(shù)的輸入,以產(chǎn)生散列 鍵。接著在預(yù)測(cè)表格中查找為散列鍵以查看否存在的先前實(shí)例,且如果存在,那么使用存儲(chǔ) 在與先前實(shí)例相關(guān)聯(lián)的條目中的目標(biāo)地址來預(yù)測(cè)間接分支目標(biāo)地址。ADVCN指令所提供的 預(yù)先相關(guān)通知值是散列函數(shù)的輸入。示范性散列函數(shù)為XOR(當(dāng)前指令地址,ADVCN Rm值)。 另一個(gè)為XOR(當(dāng)前指令地址,ADVCN Rm值,歷史)。存在可被評(píng)估及使用的許多替代散列 函數(shù)。如果未在預(yù)測(cè)表格中找到所得散列鍵,那么預(yù)測(cè)是不可能的且指令的提取停止。所 述管線繼續(xù)停止直到間接分支指令向下流動(dòng)到執(zhí)行級(jí)且執(zhí)行為止。其后,將在執(zhí)行級(jí)中產(chǎn) 生的正確目標(biāo)地址發(fā)送到提取級(jí)且所述停止被移除。如果預(yù)測(cè)是可能的,那么管線不停止, 且基于此預(yù)測(cè),處理器管線202經(jīng)引導(dǎo)開始從所預(yù)測(cè)地址X開始的推測(cè)式提取指令。
      [0041] 應(yīng)注意,對(duì)于處理器管線202,已將加載Rl [R2]指令442及ADVCN Rl指令443放 置在指令A(yù) 441之后,而不會(huì)導(dǎo)致針對(duì)在Ll數(shù)據(jù)高速緩沖存儲(chǔ)器210中存在命中的情況的 任何進(jìn)一步延遲。然而,如果在Ll數(shù)據(jù)高速緩沖存儲(chǔ)器中存在未命中,那么將起始停止情 形。對(duì)于Ll數(shù)據(jù)高速緩沖存儲(chǔ)器210中的未命中的此情況,加載Rl [R2]及ADVCN Rl指令 將需要(在可能的情況下)在BX RO指令之前放置基于管線深度的適當(dāng)數(shù)目的未命中延遲 循環(huán),以避免導(dǎo)致任何進(jìn)一步延遲。還應(yīng)注意指令C 444及D 445不影響存儲(chǔ)在寄存器Rl 中的值。
      [0042] -般來說,ADVCN指令在代碼序列中的放置優(yōu)選為在BX指令之前N個(gè)指令。在處 理器管線的上下文中,N表示接收間接分支指令的級(jí)與辨識(shí)與分支目標(biāo)地址相關(guān)的ADVCN 指定的寄存器的內(nèi)容的級(jí)之間的級(jí)數(shù)目,例如指令提取級(jí)214及執(zhí)行級(jí)222。在使用轉(zhuǎn)發(fā)網(wǎng) 226的示范性處理器管線202中,N為二且在未使用轉(zhuǎn)發(fā)網(wǎng)226的情況下N為三。例如對(duì)于 使用轉(zhuǎn)發(fā)網(wǎng)的處理器管線,如果BX指令在ADVCN指令之前等于二的N指令處,那么由于轉(zhuǎn) 發(fā)網(wǎng)226而在讀取寄存器級(jí)220的末端確定ADVCN寄存器Rm值。在未使用轉(zhuǎn)發(fā)網(wǎng)226用于 ADVCN指令使用的處理器管線的替代實(shí)施例中,例如,如果BX指令在ADVCN指令之前等于三 的N指令處,那么在BX指令進(jìn)入解碼及ADVCN級(jí)216時(shí)在執(zhí)行級(jí)222的末端確定ADVCN目 標(biāo)地址寄存器Rm值。舉例來說,指令N的數(shù)目還可取決于額外因數(shù),包含上部管線中歸因 于指令提取級(jí)214中的延遲的停止、可變化多達(dá)超標(biāo)量處理器中所發(fā)布的K個(gè)指令的指令 發(fā)布寬度、及在ADVCN與BX指令之間的中斷。
      [0043] 為了更有效地使用ADVCN指令,指令集架構(gòu)(ISA)可建議ADVCN指令盡早可能地 調(diào)度以最小化管線因數(shù)的效應(yīng)。ISA還可建議不放置可在ADVCN指令與被優(yōu)化的間接分支 之間誤預(yù)測(cè)的其它分支。ISA可注意到,例如隨著圖4D中的ADVCN R2指令462與加載R0, [R1]指令466之間的中間指令而發(fā)生的Rl值的任何改變可動(dòng)態(tài)地影響RO的目標(biāo)地址值。 然而,此類改變是否影響預(yù)測(cè)的準(zhǔn)確性取決于在選擇ADVCN R2指令時(shí)對(duì)編程器或軟件工具 進(jìn)行的選擇。舉例來說,如果R2仍提供唯一性且與RO的值相關(guān),那么Rl的中間改變將不 影響與ADVCN R2指令462 -起進(jìn)行的所述預(yù)測(cè)的準(zhǔn)確性。然而,如果R2歸因于中間改變 而不相關(guān),那么預(yù)測(cè)準(zhǔn)確性將并非良好的。在所述情況下的ADVCN Rl指令將具有相比于 ADVCN R2指令462較佳的選擇。如果存在中間指令改變Rl,那么應(yīng)將ADVCN Rl指令放置 在最早指令改變Rl之后,其中Rl為唯一的且與RO中的目標(biāo)地址相關(guān)。而且,在此實(shí)施例 中,一般不應(yīng)使用多個(gè)中間ADVCN指令。如圖5中所說明的電路使用最后ADVCN指令作為 相關(guān)值。在支持用于相同間接分支的多個(gè)ADVCN指令的另一實(shí)施例中,預(yù)測(cè)電路將使用多 個(gè)ADVCN提供的Rm預(yù)先通知值作為散列函數(shù)的輸入,所述散列函數(shù)產(chǎn)生Ptag以存取查找 預(yù)測(cè)表格。
      [0044] 剖析及代碼分析是可用以分析為ADVCN Rm指令中的Rm選取哪個(gè)寄存器的工具。 在剖析中,可剖析基準(zhǔn)點(diǎn),且編程器可了解間接分支的目標(biāo)地址所相關(guān)的寄存器值且選擇 所述寄存器作為ADVCN指令的操作數(shù)。一般來說,相關(guān)意味著特定寄存器值對(duì)于間接分支 的給定目標(biāo)地址為唯一的。在代碼分析中,編程器還可使用如數(shù)據(jù)流及控制流圖等額外工 具來確定哪些寄存器值關(guān)于間接分支的目標(biāo)地址是唯一的,且選擇那些寄存器中的至少一 者作為特定ADVCN指令的操作數(shù)。
      [0045] 雖然關(guān)于單個(gè)ADVCN指令來說明圖4C及4D,但在遭遇一連串間接分支周期可將多 個(gè)ADVCN指令實(shí)例化??砂碏IFO形式(例如可經(jīng)由使用堆疊設(shè)備而獲得的)將多個(gè)ADVCN 指令應(yīng)用到接著遭遇的間接分支。應(yīng)注意,下一遭遇的間接分支指令一般與按程序次序的 下一間接分支指令相同??稍诖_定使用多個(gè)ADVCN指令是否適當(dāng)之前評(píng)估可導(dǎo)致此一般規(guī) 則的異常的代碼。
      [0046] 圖5說明根據(jù)本發(fā)明的示范性第一間接分支目標(biāo)地址(BTA)預(yù)先通知電路500。 第一間接BTA預(yù)先通知電路500包含ADVCN執(zhí)行電路504、ADVCN寄存器電路508、BX解碼 電路512、選擇電路517、及用于響應(yīng)于影響程序計(jì)數(shù)器(PC)地址的產(chǎn)生的輸入的下一 PC 電路520。在ADVCN執(zhí)行電路504中的ADVCN指令的執(zhí)行末端,所述執(zhí)行的結(jié)果為指定寄存 器的值,例如如在圖4C的ADVCN Rl指令443中指定的R1,其存儲(chǔ)在ADVCN寄存器電路508 中。在替代實(shí)施例中,ADVCN指令的Rm值可在讀取寄存器級(jí)220中保存。由于ADVCN指令 放置在間接分支指令之前,所以保持ADVCN寄存器電路508中存儲(chǔ)的寄存器值且斷言有效 預(yù)先通知指示509。當(dāng)在BX解碼電路512中解碼BX指令且斷言有效預(yù)先通知指示509時(shí), 由選擇電路517產(chǎn)生選擇信號(hào)516。來自ADVCN指令的執(zhí)行的預(yù)先相關(guān)通知寄存器值用以 幫助預(yù)測(cè)目標(biāo)地址,而非被直接用于"下一 PC"電路520中。散列函數(shù)電路524接收來自如 選自預(yù)測(cè)源選擇器522的ADVCN寄存器電路508以及來自下一 PC電路520的PC的預(yù)先相 關(guān)通知寄存器值輸出,以產(chǎn)生預(yù)測(cè)標(biāo)記(Ptag) 525。在預(yù)測(cè)器電路528中查找Ptag 525以 尋找預(yù)測(cè)目標(biāo)地址。
      [0047] Ptag 525可為PC及分支歷史的散列、或PC及預(yù)先通知寄存器值的散列。舉例來 說,當(dāng)PC為當(dāng)前指令地址時(shí),第一散列函數(shù)(hashl)為XOR(PC,ADVCN Rm值),及第二散列 函數(shù)(hash2)為XOR(PC,inverse(ADVCN Rm值)),其中inverse為使二進(jìn)制輸入的次序反 向的二進(jìn)制函數(shù),例如inverse(lOOll) =11001。散列函數(shù)的額外實(shí)例包含為XOR(PC,歷 史)的第三散列函數(shù)0^113)、為父〇1?(?(:,;[1^^6(歷史))的第四散列函數(shù)(1^114)及為 XOR(inverse(PC),ADVCN Rm值)的第五散列函數(shù)(hash5)。散列函數(shù)的其它實(shí)例包含為 XOR(PC,ADVCN Rm(Hl) I |inverse(ADVCN Rm(HO))的第六散列函數(shù)(hash6),其中 I I 為先前 與之后二進(jìn)制數(shù)字的連接。其它此類變體及其類似者是可能的。一般來說,可界定從一或多 個(gè)輸入值提取唯一性的散列函數(shù)。還應(yīng)注意歷史值的散列函數(shù)可不同于ADVCN Rm值的散 列函數(shù)。如果ADVCN寄存器值不可用,那么Ptag 525將通過使用分支歷史來產(chǎn)生,如關(guān)于 圖4A所描述。如果預(yù)先通知寄存器值可用,那么Ptag 525將通過使用預(yù)先通知寄存器值 來產(chǎn)生。接著將由存儲(chǔ)在Ptag寄存器525中的Ptag所產(chǎn)生的預(yù)測(cè)目標(biāo)地址存儲(chǔ)在分支目 標(biāo)地址寄存器(BTAR) 526中,分支目標(biāo)地址(BTA)從所述BTAR 526輸出且通過nextPC多 路復(fù)用器520選擇?;趯W(xué)習(xí)功能,當(dāng)分支被誤預(yù)測(cè)時(shí)Ptag表格被更新正確的目標(biāo)地址。 分支電路記住跟在相關(guān)聯(lián)分支指令之后沿管線向下到執(zhí)行級(jí)的散列鍵。如果最初未在解碼 /ADVCN級(jí)找到散列鍵,那么將相同散列鍵用以更新所述表格或建立條目。
      [0048] 圖6說明根據(jù)另一實(shí)施例的經(jīng)利用以預(yù)測(cè)間接分支指令的分支目標(biāo)地址的預(yù)先 相關(guān)通知(ADVCN)過程600。在方框602,在指令提取級(jí)214中提取及接收指令。在方框 604,進(jìn)行所接收指令是否是ADVCN Rm指令的確定。如果指令是ADVCN Rm指令,那么過程 600進(jìn)行到方框606。在方框606, ADVCN Rm指令經(jīng)由處理器管線前進(jìn),且在執(zhí)行級(jí)222致 使存儲(chǔ)在ADVCN指定Rm寄存器中的值存儲(chǔ)在ADVCN寄存器508中以用于解碼及ADVCN級(jí) 216中。過程600接著返回等待下一指令。返回到方框604,如果所接收指令不是ADVCN Rm 指令,那么過程600進(jìn)行到方框610。在方框610,進(jìn)行所接收指令是否是間接分支Rm指令 (例如BX Rm指令)的確定。如果所接收指令不是間接分支Rm指令,那么過程600返回等 待下一指令。如果所接收指令是間接分支指令,那么過程600進(jìn)行到方框612。在方框612, 進(jìn)行是否斷言有效的ADVCN的確定。如果斷言有效的ADVCN,那么過程600進(jìn)行到方框614。 在方框614,在解碼及ADVCN級(jí)216期間,選擇存儲(chǔ)在ADVCN寄存器中的ADVCN Rm值。在方 框616,將Ptag產(chǎn)生為選定值及當(dāng)前PC值的散列且存儲(chǔ)在Ptag寄存器中。在方框618,在 預(yù)測(cè)器電路中查詢選自Ptag寄存器的Ptag以尋找預(yù)測(cè)分支目標(biāo)地址(BTA)且將其存儲(chǔ)在 分支目標(biāo)地址寄存器(BTAR)中。在方框620,存儲(chǔ)在BTAR中的BTA值用以在預(yù)測(cè)BTA處提 取下一指令。過程600接著返回等待下一指令。返回到方框612,其中確定為不斷言有效的 ADVCN通知,那么過程600進(jìn)行到方框622。在方框622,分支歷史值是選自分支歷史電路。 過程600在方框616-620中使用選定分支歷史值來預(yù)測(cè)分支目標(biāo)地址,且接著返回等待下 一指令。
      [0049] 結(jié)合本文所揭示實(shí)施例而描述的方法可體現(xiàn)于硬件中,且由來自存儲(chǔ)處理器所執(zhí) 行的非暫時(shí)性信號(hào)的存儲(chǔ)器模塊的軟件來使用。所述軟件可支持如本文所描述的硬件的執(zhí) 行,或可用以仿真擴(kuò)展如本文所描述的分支目標(biāo)提示的方法及設(shè)備。軟件模塊可駐留于隨 機(jī)存取存儲(chǔ)器(RAM)、快閃存儲(chǔ)器、只讀存儲(chǔ)器(ROM)、電可編程只讀存儲(chǔ)器(EPROM)、硬盤、 可移動(dòng)磁盤、磁帶、緊密磁盤只讀存儲(chǔ)器(CD-ROM)或此項(xiàng)技術(shù)中已知的任何其它形式的存 儲(chǔ)媒體中。存儲(chǔ)媒體可耦合到處理器而使得處理器可從存儲(chǔ)媒體讀取信息及在一些情況下 寫入信息到存儲(chǔ)媒體。耦合到處理器的存儲(chǔ)媒體可為與電路實(shí)施方案一體的直接耦合,且 可利用使用下載技術(shù)來支持直接存取或數(shù)據(jù)流式傳輸?shù)囊换蚨鄠€(gè)接口。
      [0050] 雖然已在目前優(yōu)選上下文中揭示本發(fā)明,但將認(rèn)識(shí)到本發(fā)明教示可適用于與本發(fā) 明及隨附權(quán)利要求書一致的多種上下文。
      【權(quán)利要求】
      1. 一種方法,其包括: 基于第一指令中指定的第一程序可訪問寄存器PAR的內(nèi)容來預(yù)測(cè)存儲(chǔ)地址,其中所述 第一 PAR與第二指令中的第二PAR所指定的目標(biāo)地址相關(guān);及 在執(zhí)行所述第二指令之前推測(cè)式提取在所述所預(yù)測(cè)存儲(chǔ)地址處的信息。
      2. 根據(jù)權(quán)利要求1所述的方法,其中存儲(chǔ)在所述第一 PAR中的值經(jīng)由第S PAR而間接 地與所述第二PAR所指定的所述目標(biāo)地址相關(guān)。
      3. 根據(jù)權(quán)利要求1所述的方法,其中通過在所述第一指令與所述第二指令中間的一或 多個(gè)其它指令來修改存儲(chǔ)在所述第一 PAR中的值。
      4. 根據(jù)權(quán)利要求1所述的方法,其中所述第一指令是在所述處理器中解碼W預(yù)測(cè)所述 存儲(chǔ)地址的預(yù)先相關(guān)通知ADVCN指令。
      5. 根據(jù)權(quán)利要求1所述的方法,其中所述第二指令是間接分支指令,且所述信息是在 所述所預(yù)測(cè)存儲(chǔ)地址處的指令。
      6. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括: 執(zhí)行所述第二指令; 比較所述所預(yù)測(cè)存儲(chǔ)地址與由所述第二指令的所述執(zhí)行確定的提取地址W產(chǎn)生比較 結(jié)果;及 更新所述比較結(jié)果的歷史存儲(chǔ)W改善所述第一 PAR與所述目標(biāo)地址之間的相關(guān)性。
      7. 根據(jù)權(quán)利要求1所述的方法,其中所述第一 PAR及第二PAR是選自通用寄存器GPR 堆的寄存器。
      8. -種方法,其包括: 預(yù)測(cè)分支到用于分支指令的目標(biāo)地址的評(píng)估結(jié)果,其中所述預(yù)測(cè)是基于第一指令中所 指定的程序可訪問寄存器PAR,且所述所指定PAR與所述分支指令的已進(jìn)行評(píng)估相關(guān);及 在執(zhí)行所述分支指令之前推測(cè)式提取在所述目標(biāo)地址處的指令。
      9. 根據(jù)權(quán)利要求8所述的方法,其中存儲(chǔ)在所述所指定PAR中的值經(jīng)由第S PAR而間 接地與所述分支指令的所述已進(jìn)行評(píng)估相關(guān)。
      10. 根據(jù)權(quán)利要求8所述的方法,其進(jìn)一步包括: 評(píng)估所述分支指令的所述執(zhí)行W確定是否已進(jìn)行到所述目標(biāo)地址的所述分支;及 更新評(píng)估結(jié)果的歷史存儲(chǔ)W改善所述所指定PAR與所述分支指令的所述已進(jìn)行評(píng)估 之間的相關(guān)性。
      11. 根據(jù)權(quán)利要求8所述的方法,其進(jìn)一步包括: 解碼所述分支指令W起始預(yù)測(cè)分支到所述目標(biāo)地址的所述評(píng)估結(jié)果。
      12. 根據(jù)權(quán)利要求8所述的方法,其中預(yù)測(cè)包括: 將Ptag產(chǎn)生為存儲(chǔ)在所述PAR中的值與當(dāng)前程序計(jì)數(shù)器值的散列;及 基于所述所產(chǎn)生Ptag來產(chǎn)生所述目標(biāo)地址。
      13. 根據(jù)權(quán)利要求12所述的方法,其中所述目標(biāo)地址是通過查找預(yù)測(cè)器電路中的所述 所產(chǎn)生Ptag W尋找所述目標(biāo)地址來產(chǎn)生。
      14. 根據(jù)權(quán)利要求8所述的方法,其中所述目標(biāo)地址是在所述分支指令之后的下一依 序地址。
      15. -種用于推測(cè)式提取指令的設(shè)備,所述設(shè)備包括: 第一程序可訪問寄存器PAR,其可經(jīng)配置W存儲(chǔ)與分支指令中所指定的目標(biāo)地址相關(guān) 的值,及第二PAR,其可經(jīng)配置W存儲(chǔ)用于所述分支指令的所述目標(biāo)地址; 解碼電路,其可經(jīng)配置W識(shí)別預(yù)先相關(guān)通知ADVCN指令中指定的所述第一 PAR及識(shí)別 分支指令中指定的所述第二PAR ; 預(yù)測(cè)電路,其可經(jīng)配置W響應(yīng)于所述ADVCN指令而基于所述值來預(yù)測(cè)存儲(chǔ)地址,其中 存儲(chǔ)在所述第一 PAR中的所述值與所述第二PAR識(shí)別的所述目標(biāo)地址相關(guān);及 提取電路,其可經(jīng)配置W在所述分支指令的執(zhí)行之前推測(cè)式提取在所述所預(yù)測(cè)存儲(chǔ)地 址處開始的指令。
      16. 根據(jù)權(quán)利要求15所述的設(shè)備,其中所述預(yù)測(cè)電路進(jìn)一步包括: 比較電路,其可經(jīng)配置W比較所述所預(yù)測(cè)存儲(chǔ)地址與由所述分支指令的所述執(zhí)行確定 的提取地址W產(chǎn)生比較結(jié)果;及 歷史存儲(chǔ)電路,其可經(jīng)配置W基于所述所產(chǎn)生比較結(jié)果來更新存儲(chǔ)在其中的分支信 息。
      17. 根據(jù)權(quán)利要求15所述的設(shè)備,其進(jìn)一步包括: 分支歷史電路,其可經(jīng)配置W基于與所述分支指令相關(guān)聯(lián)的先前執(zhí)行歷史來產(chǎn)生歷史 值;及 選擇器,其用W基于指示已接收所述ADVCN指令的斷言通知來選擇所述值,其中所述 選擇器基于指示尚未接收所述ADVCN指令的非斷言通知來選擇所述歷史值。
      18. 根據(jù)權(quán)利要求15所述的設(shè)備,其中所述預(yù)測(cè)電路包括: 散列電路,其基于存儲(chǔ)在所述第一 PAR中的所述值與當(dāng)前程序計(jì)數(shù)器值而將Ptag產(chǎn)生 為散列計(jì)算;及 查找電路,其接收所述Ptag且產(chǎn)生所述所預(yù)測(cè)存儲(chǔ)地址。
      19. 一種使用計(jì)算機(jī)可讀程序數(shù)據(jù)及代碼來編碼的計(jì)算機(jī)可讀非暫時(shí)性媒體,所述程 序數(shù)據(jù)及代碼在被執(zhí)行時(shí)可操作W: 基于第一指令中指定的第一程序可訪問寄存器PAR的內(nèi)容來預(yù)測(cè)存儲(chǔ)地址,其中所述 第一 PAR與第二指令中的第二PAR所指定的目標(biāo)地址相關(guān);及 在執(zhí)行所述第二指令之前推測(cè)式提取在所述所預(yù)測(cè)存儲(chǔ)地址處的信息。
      20. -種用于推測(cè)式提取指令的設(shè)備,所述設(shè)備包括: 用于存儲(chǔ)與分支指令中所指定的目標(biāo)地址相關(guān)的值的裝置,及第二PAR,其可經(jīng)配置W 存儲(chǔ)用于所述分支指令的所述目標(biāo)地址; 用于識(shí)別預(yù)先相關(guān)通知ADVCN指令中指定的所述第一 PAR及識(shí)別分支指令中指定的所 述第二PAR的裝置; 用于響應(yīng)于所述ADVCN指令而基于所述值來預(yù)測(cè)存儲(chǔ)地址的裝置,其中存儲(chǔ)在所述第 一 PAR中的所述值與所述第二PAR識(shí)別的所述目標(biāo)地址相關(guān);及 用于在執(zhí)行所述分支指令之前推測(cè)式提取在所述所預(yù)測(cè)存儲(chǔ)地址處開始的指令的裝 置。
      【文檔編號(hào)】G06F9/38GK104471529SQ201380033335
      【公開日】2015年3月25日 申請(qǐng)日期:2013年6月21日 優(yōu)先權(quán)日:2012年6月25日
      【發(fā)明者】維馬爾·K·雷迪 申請(qǐng)人:高通股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1