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

      前視分支目標(biāo)地址高速緩存的制作方法

      文檔序號:6567272閱讀:305來源:國知局
      專利名稱:前視分支目標(biāo)地址高速緩存的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明的教示涉及用于尤其通過相對于提取經(jīng)高速緩存的分支指令而預(yù)先提取經(jīng)高 速緩存的目標(biāo)地址來高速緩存分支指令目標(biāo)地址的技術(shù),且涉及使用此類技術(shù)的處理器。
      背景技術(shù)
      現(xiàn)代微處理器和其它可編程處理器電路通常依賴于管線處理結(jié)構(gòu)來改進(jìn)執(zhí)行速度。 管線處理器包含多個處理級,以用于當(dāng)每一指令移動通過管線時依次處理所述指令。當(dāng) 一個級正處理一指令時,沿著管線的其它級同時處理其它指令。管線的每一級執(zhí)行每一程序指令的整個處理過程中所必要的不同功能。盡管次序和/ 或功能可能略有變化,但典型的簡單管線包含指令提取級、指令解碼級、存儲器存取或 讀出級、指令執(zhí)行級和結(jié)果回寫級。較先進(jìn)的處理器設(shè)計將這些級的一些或全部分解為 若干單獨(dú)的級,以用于執(zhí)行這些功能的子部分。超標(biāo)量設(shè)計將功能進(jìn)一步分解和/或提供復(fù)制功能,以在具有類似深度的并行管線中執(zhí)行操作。在操作中,指令提取級在當(dāng)前執(zhí)行的程序中提取下一指令。通常,下一指令是處于 下一連續(xù)存儲器地址位置處的指令。 一些指令的處理可能導(dǎo)致分支操作,在此情況下,下一指令處于由解碼和執(zhí)行期間決定采取目標(biāo)分支進(jìn)行后續(xù)處理而產(chǎn)生的非連續(xù)目標(biāo)地 址處。存在兩種常見分支指令,有條件和無條件的。處理器依據(jù)在處理指令時是否滿足分 支的條件來決定是否采取條件分支指令。每當(dāng)處理器執(zhí)行指令時,處理器采取無條件分 支。通過基于特定分支指令進(jìn)行計算來確定分支指令(即,指令的目標(biāo)地址)之后接下 來待處理的指令。尤其對于條件分支,直到處理器確定滿足分支條件才可能確定地了解 分支結(jié)果的目標(biāo)地址。對于給定的提取操作,提取級初始試圖從指令高速緩沖存儲器(iCache)提取尋址 的指令。如果指令尚未包含在iCache中,那么提取級從較高級存儲器(例如,二級指令 高速緩沖存儲器或系統(tǒng)的主存儲器)中將其提取。如果從較高級存儲器中提取,那么指 令加載到iCache中。提取級將每一提取的指令提供到指令解碼級。指令解碼級的邏輯對接收到的指令字
      節(jié)進(jìn)行解碼并將結(jié)果供應(yīng)到管線的下一級,即供應(yīng)到簡單標(biāo)量管線中的讀出級。如果指 令是分支指令,那么解碼處理的一部分可涉及計算分支目標(biāo)地址。讀出級的邏輯存取存 儲器或其它資源以獲得操作數(shù)數(shù)據(jù)用于根據(jù)指令進(jìn)行處理。將指令和操作數(shù)數(shù)據(jù)傳遞到 執(zhí)行級,執(zhí)行級對檢索到的數(shù)據(jù)執(zhí)行特定指令并產(chǎn)生結(jié)果。典型的執(zhí)行級可實(shí)施算術(shù)邏 輯單元(ALU)。第五級將執(zhí)行結(jié)果回寫到寄存器或到存儲器。在此類操作中,執(zhí)行級將不時地接收和處理分支指令中的一者。當(dāng)處理分支指令時, 執(zhí)行級的邏輯確定是否應(yīng)采取分支,例如是否滿足條件分支操作的條件。如果采取,那 么結(jié)果的一部分是目標(biāo)地址(通常由指令解碼級計算出),提取級將利用所述目標(biāo)地址作 為指令地址以用于提取下一指令來通過管線進(jìn)行處理。為了增強(qiáng)性能。目標(biāo)地址可以類 似于指令的高速緩存處理的方式而被高速緩存。舉例來說,對于采取的分支,計算出的 目標(biāo)地址可通常與產(chǎn)生目標(biāo)地址的分支指令的地址相關(guān)聯(lián)而存儲在分支目標(biāo)地址高速緩 沖存儲器(BTAC)中。對于每一提取操作,提取級使用新的指令地址并試圖用所述提取地址來存取iCache 和BTAC兩者。假定指令已加載到iCache中,iCache將把所尋址的指令供應(yīng)到提取級邏 輯。如果地址對應(yīng)于分支指令且先前采取分支,那么BTAC中將存在"命中(hit)",因 為BTAC將存儲有針對所述指令地址的目標(biāo)地址,且BTAC將把高速緩存的目標(biāo)地址供 應(yīng)到提取邏輯。如果當(dāng)前提取地址不對應(yīng)于分支指令或分支尚未被采取,那么不存在命 中,因?yàn)锽TAC將不存儲有針對當(dāng)前提取指令地址的目標(biāo)地址。當(dāng)存在BTAC命中時,邏輯可預(yù)測分支是否有可能被再次采取。如果是,那么將目 標(biāo)地址應(yīng)用于提取邏輯以用作下一地址(而不是下一連續(xù)地址)。因此,提取分支指令之 后的下一提取操作使用從BTAC檢索到的高速緩存的目標(biāo)地址來提取對應(yīng)于目標(biāo)地址的 指令。隨著處理器速度增加,給定級具有較少時間來執(zhí)行其功能。為了維持或進(jìn)一步改進(jìn) 性能,將每一級細(xì)分。每一新級在給定循環(huán)期間執(zhí)行較少工作,但存在更多以較高時鐘 速率同時操作的級。因?yàn)榇鎯ζ骱吞幚砥饕迅倪M(jìn),所以指令的長度和指令地址的長度增 加。在許多管線處理器中,所述提取操作被分解并分布在兩個或兩個以上級之中,且從 iCache提取指令以及從BTAC提取目標(biāo)地址花費(fèi)兩個或兩個以上處理循環(huán)。因此,可能 花費(fèi)許多循環(huán)來確定BTAC提取過程中是否存在命中,在此期間執(zhí)行iCache提取的級已 繼續(xù)前進(jìn)并開始對一個或一個以上后續(xù)iCache提取進(jìn)行提取操作。在多循環(huán)提取操作中, 當(dāng)檢測到BTAC命中時,必須放棄后續(xù)提取處理,因?yàn)橄乱惶崛〔僮鲗⒗肂TAC中識
      別的地址。所述放棄導(dǎo)致延遲并減少BTAC高速緩存的益處。隨著BTAC提取所需的循 環(huán)數(shù)目增加,性能的降級增加。因此,需要進(jìn)一步改進(jìn)分支目標(biāo)地址高速緩存技術(shù),尤 其是因?yàn)樗龈倪M(jìn)可能幫助減少或消除在BTAC命中的情況下iCache級的不必要的處 理。發(fā)明內(nèi)容從背景論述中將了解,通常操作使用同一地址在指令提取期間同時存取指令高速緩 沖存儲器和分支目標(biāo)地址高速緩沖存儲器(BTAC)。為了進(jìn)一步改進(jìn)性能,BTAC提取 操作提前,也就是說在從指令高速緩沖存儲器提取指令之前進(jìn)行提取。在所揭示的實(shí)例 中,BTAC提取通過使用將來指令地址或因?yàn)槟繕?biāo)以較早的地址值被寫入到BTAC而提 前于iCache提取。這些教示的各方面涉及方法和處理器兩者。第一種用于管線處理器的提取指令的此類方法包含從指令高速緩沖存儲器中提取指 令,和在每次提取指令期間同時存取分支目標(biāo)地址高速緩沖存儲器(BTAC)。 BTAC存 取確定BTAC是否存儲分支目標(biāo)地址。每次存取BTAC花費(fèi)至少兩個處理循環(huán)。所述方 法還包含使存取操作相對于提取操作偏移預(yù)定量,以在啟始分支指令的提取之前至少一 個循環(huán)開始關(guān)于分支指令而存取BTAC。在下文詳細(xì)論述的各種實(shí)例中,所述偏移足以從BTAC中提取對應(yīng)于分支指令的分支目標(biāo)地址,以在后續(xù)指令提取過程中使用,所述后續(xù)指令提取過程在緊接著開始提取 分支指令的處理循環(huán)之后的處理循環(huán)中開始。此方法的特定實(shí)例提供用于BTAC提取的 地址的遞增作為提取操作的一部分,或提供用于將分支目標(biāo)寫入到BTAC的地址的遞減。 后一選擇不需要在提取操作本身期間實(shí)施,而是可在管線處理的稍后級的一者或一者以 上中的處理期間實(shí)施或響應(yīng)于所述處理而實(shí)施。偏移的量足以實(shí)現(xiàn)從BTAC中提取對應(yīng)于分支指令的分支目標(biāo)地址,以在后續(xù)指令 提取過程中使用,所述后續(xù)指令提取過程在緊接著開始提取分支指令的循環(huán)之后的處理 循環(huán)中開始。在實(shí)例中,偏移量包括指令高速緩沖存儲器與BTAC之間的地址差,其比 每次存取BTAC所需的循環(huán)的數(shù)目少一。另一種用于管線處理器的提取指令的方法需要開始從指令高速緩沖存儲器提取第一 指令并同時啟始BTAC中的提取。BTAC存取是用于提取對應(yīng)于第一指令之后的分支指 令的目標(biāo)地址。此方法還包含開始從指令高速緩沖存儲器提取分支指令。開始提取分支 指令之后,使用對應(yīng)于分支指令的目標(biāo)地址來啟始從指令高速緩沖存儲器提取目標(biāo)指令。
      根據(jù)本發(fā)明教示的處理器包括指令高速緩沖存儲器、分支目標(biāo)地址高速緩沖存儲器 和處理級。所存儲的指令之一是分支指令,且分支目標(biāo)地址高速緩沖存儲器存儲對應(yīng)于 所述指令的分支目標(biāo)地址。處理級包含提取級和至少一個后續(xù)處理級,以用于根據(jù)提取 的指令執(zhí)行一個或一個以上處理功能。提取級從指令高速緩沖存儲器提取指令,并從分 支目標(biāo)地址高速緩沖存儲器提取分支目標(biāo)地址。處理器還包含偏移邏輯。所述邏輯使從 分支目標(biāo)地址高速緩沖存儲器的提取偏移在從指令高速緩沖存儲器提取指令之前一量, 所述量與完成每次從分支目標(biāo)地址高速緩沖存儲器提取所需的處理循環(huán)的數(shù)目相關(guān)。在實(shí)例中,前視偏移量比完成每次從分支目標(biāo)地址高速緩沖存儲器提取所需的處理 循環(huán)的數(shù)目少一。偏移邏輯可與提取級相關(guān)聯(lián)(例如)以遞增指令提取地址,從而允許 提取級使用提前地址來從分支目標(biāo)地址高速緩沖存儲器進(jìn)行提取?;蛘?,偏移邏輯可使 用遞減的指令地址值將分支目標(biāo)寫入到分支目標(biāo)地址高速緩沖存儲器中。示范性處理器是通常具有五個或五個以上級的管線處理器。后續(xù)處理級可包含指令 解碼級、讀出級,和指令執(zhí)行級及結(jié)果回寫級。當(dāng)然,這些級的每一者可分解或形成管 線。并且,提取級可形成管線以便包括多個處理級。在一個實(shí)例中,用于BTAC提取的地址提前于指令高速緩沖存儲器提取中使用的地 址一偏移量,所述偏移量意圖補(bǔ)償在命中的情況下從BTAC提取時的延遲。如果在提取 期間實(shí)施,那么這需要遞增提取地址。或者,當(dāng)寫入到高速緩沖存儲器時,BTAC寫入 地址可提前于用于將分支指令存儲在指令高速緩沖存儲器中的地址適當(dāng)?shù)钠屏俊S捎?其在寫入操作時實(shí)施,但意圖促使在相應(yīng)的指令高速緩沖存儲器提取之前進(jìn)行讀取或提 取,所以寫入操作遞減用于將目標(biāo)地址寫入到BTAC中的地址。以下描述內(nèi)容中將部分陳述額外的目的、優(yōu)點(diǎn)和新穎特征,且所屬領(lǐng)域的技術(shù)人員 將在閱讀下文和附圖后部分了解,或可通過制作或操作實(shí)例而了解??赏ㄟ^實(shí)踐或使用 所附權(quán)利要求書中明確指出的方法、手段和組合來實(shí)現(xiàn)和達(dá)成本發(fā)明教示的目的和優(yōu)點(diǎn)。


      附圖僅以舉例方式而并非限制方式來描繪根據(jù)本發(fā)明教示的一個或一個以上實(shí)施方 案。圖中,相同參考標(biāo)號指代相同或相似元件。圖1是管線處理器的簡單實(shí)例的功能方框圖,其中從分支目標(biāo)地址高速緩沖存儲器 的提取在從指令高速緩沖存儲器的相應(yīng)提取之前具有前視偏移。圖2是管線處理器的提取和解碼級的簡單實(shí)例的功能方框圖,所述管線處理器實(shí)施
      兩循環(huán)(或兩級)提取。圖3是有助于解釋圖2的提取級中的循環(huán)時序的表,其中從指令高速緩沖存儲器的 提取與從分支目標(biāo)地址高速緩沖存儲器的相應(yīng)提取之間不存在偏移。圖4是有助于解釋圖2的提取級中的循環(huán)時序的表,其中從分支目標(biāo)地址高速緩沖 存儲器的提取與從指令高速緩沖存儲器的相應(yīng)提取之間存在偏移,其中所述偏移與實(shí)施 目標(biāo)地址提取的循環(huán)的數(shù)目或級的數(shù)目相關(guān)(例如,比所述數(shù)目少一)。圖5是管線處理器的提取和解碼級的簡單實(shí)例的功能方框圖,所述管線處理器實(shí)施 三循環(huán)(或三級)提取。圖6是有助于解釋圖5的提取級中的循環(huán)時序的表,其中從分支目標(biāo)地址高速緩沖 存儲器的提取與從指令高速緩沖存儲器的相應(yīng)提取之間存在偏移,其中所述偏移與實(shí)施 目標(biāo)地址提取的循環(huán)的數(shù)目或級的數(shù)目相關(guān)(例如,比所述數(shù)目少一)。圖7是有助于理解將偏移實(shí)施為指令提取地址的遞增的實(shí)例的局部方框圖和流程圖。圖8是有助于理解將偏移實(shí)施為用于將目標(biāo)地址寫入到分支目標(biāo)地址高速緩沖存儲 器的指令地址的實(shí)例的局部方框圖和流程圖。
      具體實(shí)施方式
      在以下具體實(shí)施方式
      中,以舉例方式陳述許多特定細(xì)節(jié),以便提供對相關(guān)教示的徹 底理解。然而,所屬領(lǐng)域的技術(shù)人員應(yīng)了解,可在沒有此類細(xì)節(jié)的情況下實(shí)踐本發(fā)明教 示。在其它例子中,已相對概括而不是詳細(xì)地描述眾所周知的方法、程序、組件和電路, 以免不必要地混淆本發(fā)明教示的各方面。本文揭示的各種技術(shù)涉及分支目標(biāo)地址提取提前于相應(yīng)的指令提取的有利時序,尤 其是當(dāng)在管線型處理過程中執(zhí)行此類提取時。現(xiàn)詳細(xì)參看附圖中說明以及下文論述的實(shí) 例。圖1是管線處理器10的簡化方框圖。簡化的管線包含五個級。處理器10中管線的第一級是指令提取級11。提取級獲得指令以供由稍后的級進(jìn)行處 理。提取級11將每一指令供應(yīng)到解碼級13。指令解碼級13的邏輯對接收到的指令字節(jié) 進(jìn)行解碼并將結(jié)果供應(yīng)到管線的下一級。在簡單的實(shí)例中,下一級是數(shù)據(jù)存取或讀出級 15。讀出級15的邏輯對存儲器或其它資源(未圖示)進(jìn)行存取以獲得操作數(shù)數(shù)據(jù),以用 于根據(jù)指令進(jìn)行處理。將指令和操作數(shù)數(shù)據(jù)傳遞到執(zhí)行級17,執(zhí)行級17對檢索到的數(shù) 據(jù)執(zhí)行特定指令并產(chǎn)生結(jié)果。第五級19將結(jié)果回寫到寄存器和/或存儲器(未圖示)。
      以此方式使處理結(jié)構(gòu)形成管線允許級11-19同時對連續(xù)指令進(jìn)行操作?,F(xiàn)代實(shí)施方 案(尤其對于高性能應(yīng)用)通常將這些級分解為許多子級。超標(biāo)量設(shè)計利用大體上具有 相同深度的同時并行操作的兩個或兩個以上管線。然而,為了便于論述,我們將繼續(xù)使 實(shí)例與如處理器10中的簡單的五級管線實(shí)例相聯(lián)系。提取級邏輯通常將包含或介接到指令高速緩沖存儲器(iCache) 21。當(dāng)提取由地址 識別的指令時,提取級11的邏輯將首先査看iCache 21以檢索所述指令。如果所尋址的 指令尚不在iCache中,那么提取級11的邏輯將從其它資源(例如,二級(L2)高速緩 沖存儲器23或主存儲器25)將指令提取到iCache 21中。指令和地址均存儲在iCache 21 中。提取級邏輯接著可從iCache21提取指令。如果隨后需要,指令也將在iCache 21中 可用。許多指令的執(zhí)行導(dǎo)致從程序序列中的當(dāng)前位置向另一指令,即向存儲在存儲器中的 不同位置(且對應(yīng)于非連續(xù)地址)的指令形成分支。處理分支指令包含分支到目標(biāo)地址 的計算。為了加速提取操作,提取級邏輯通常將包含或介接到分支目標(biāo)地址高速緩沖存 儲器(BTAC) 27,所述BTAC27用于以類似于iCache21的功能的方式高速緩存目標(biāo)地 址。根據(jù)本發(fā)明教示,從BTAC 27檢索到的目標(biāo)地址從iCache 21中的相應(yīng)指令的地址 偏移(29處),使得BTAC査找處理在iCache21中相應(yīng)分支指令的查找之前一個或一個 以上循環(huán)開始,以補(bǔ)償從BTAC 27檢索目標(biāo)地址的過程中的任何等待時間。29處實(shí)施的偏移可依據(jù)時間來表達(dá),表達(dá)為一個或一個以上時鐘或處理循環(huán)、表達(dá) 為地址編號偏移等。下文論述一實(shí)例,其中偏移識別與用于從iCache提取指令的提取地 址相比在時間上或指令序列中略微提前(遞增)的提取地址。替代實(shí)例以適當(dāng)?shù)钠屏?(遞減量)將分支目標(biāo)地址寫入到BTAC中,使得兩個提取使用同一地址,但BTAC提 取仍提前于iCache提取所需的偏移量。在任一實(shí)例中,如果BTAC 27中存在分支目標(biāo)地 址,那么將所述分支地址應(yīng)用于提取級的邏輯,以便緊接著分支指令之后開始提取目標(biāo) 指令。對于先前未復(fù)制到iCache 21的分支指令,BTAC 27將不包含用于分支操作的目標(biāo)地 址??赡艽嬖谌缦乱恍┣樾伪M管iCache21包含分支指令,但(例如)因?yàn)樘幚砩形床?取所述特定分支而導(dǎo)致BTAC 27將不包含目標(biāo)地址。在目標(biāo)分支地址不包含在BTAC 27 中的任一此類情況下,指令解碼邏輯的部分31將在解碼級13中處理分支指令期間計算 目標(biāo)地址。當(dāng)作為解碼邏輯的一部分而計算時,處理器可將計算出的目標(biāo)地址寫入到BTAC 27。
      然而,(例如)因?yàn)椴粷M足條件分支指令的條件,所以并非采取所有分支。執(zhí)行級17的 邏輯將包含邏輯33以確定是否應(yīng)采取分支。如果是,那么處理將包含寫入操作(35處 所示的邏輯)以將計算出的分支目標(biāo)地址寫入到BTAC27中。盡管未單獨(dú)圖示,但采取 特定分支的執(zhí)行結(jié)果將包含將目標(biāo)地址提供到提取級邏輯,以提取目標(biāo)指令用于通過管 線進(jìn)行后續(xù)處理。正常操作或BTAC存取消耗單一提取循環(huán)的操作使用同一地址,以在指令提取期間 同時存取iCache 21和BTAC 27兩者。在BTAC存取需要多個循環(huán)的情況下,為了進(jìn)一 步改進(jìn)性能,BTAC提取操作基于圖1中29處實(shí)施的偏移而提前于iCache中提取的指令 進(jìn)行提取。BTAC提取所需的循環(huán)數(shù)目決定前視偏移所需的循環(huán)數(shù)目或長度。如果BTAC存取 花費(fèi)兩個循環(huán),那么BTAC提取應(yīng)提前于iCache提取一個提取循環(huán)。如果BTAC存取花 費(fèi)三個循環(huán),那么BTAC提取應(yīng)提前于iCache提取兩個提取循環(huán),等等。注意到,如果 BTAC存^僅需要一個提取循環(huán),那么可能不需要偏移。 '在一個實(shí)例中,用于BTAC提取的地址提前于iCache提取中使用的地址一偏移量, 所述偏移量意圖補(bǔ)償在命中的情況下從BTAC提取時的延遲。如果在提取期間實(shí)施,那 么這需要遞增提取地址。或者,當(dāng)寫入到高速緩沖存儲器時,BTAC寫入地址可提前于 用于將分支指令存儲在iCache中的地址適當(dāng)?shù)钠屏俊S捎谄湓趯懭氩僮鲿r實(shí)施,但意 圖促使在相應(yīng)的iCache提取之前進(jìn)行讀取或提取,所以寫入操作遞減用于將目標(biāo)地址寫 入到BTAC中的地址。為了完全理解前視操作,考慮一些實(shí)例可能會有幫助。參看圖2到圖4,假定BTAC 提取需要兩個處理循環(huán)。盡管用于兩個提取的循環(huán)可能并非始終相同,但為了便于論述, 在此實(shí)例中,從iCache進(jìn)行指令提取同樣需要兩個循環(huán)。本質(zhì)上,可認(rèn)為提取級lh形 成了管線。盡管提取級可進(jìn)行組合,但對于此實(shí)例,假定每一類型的提取在兩個單獨(dú)管 線級中執(zhí)行,且iCache提取管線與形成BTAC提取管線的級并行運(yùn)作。因此,管線的每 一者由兩個級組成。提取管線112的每一級執(zhí)行每一程序指令的整個處理過程中必要的不同功能。與指令 提取處理相關(guān)的第一級(iCacheFl)接收指令地址(iAddress),執(zhí)行其功能處理以開始 提取所尋址的指令,并將其結(jié)果傳遞到與指令提取處理相關(guān)的第二級(iCacheF2)。在下 一循環(huán)期間,iCacheFl接收另一指令地址,同時iCache F2完成關(guān)于第一地址的提取處 理并將結(jié)果(即,所提取的指令)傳遞到解碼級13。
      并行地,與目標(biāo)地址(BTAC)提取處理相關(guān)的第一級(BTACF1)接收BTAC提取 地址,執(zhí)行其功能處理以開始從BTAC進(jìn)行提取,并將其結(jié)果傳遞到與指令提取處理相 關(guān)的第二級(BTACF2)。在下一循環(huán)期間,BTACF1級接收另一指令地址,同時iCache F2完成關(guān)于第一地址的提取處理并將結(jié)果(如果存在的話)傳遞到解碼級13。如果BTAC 處理從BTAC27提取分支目標(biāo)地址,那么第二BTAC管線級(BTACF2)將命中結(jié)果提 供到與指令提取處理相關(guān)的第一級(iCacheFl),使得下一新的指令提取將利用來自高速 緩沖存儲器27的適當(dāng)目標(biāo)分支地址。圖3是表示2循環(huán)提取級(例如,圖2所示的級112)中的循環(huán)時序和相關(guān)聯(lián)處理的 表或時序圖。表中的字母字符表示指令地址。舉例來說,A、 B和C是連續(xù)地址,因?yàn)?其可能在應(yīng)用程序開始時被處理。Z表示目標(biāo)地址,即在處理采取的分支指令后下一待 處理的指令。在圖3的實(shí)例中,出于論述的目的,假定iCache提取級與BTAC提取級的處理之間 不存在偏移。因此,fe處理循環(huán)l期間,iCacheFl級關(guān)于第一地址A執(zhí)1于其提取相關(guān)處 理,且BTAC Fl級關(guān)于第一地址A執(zhí)行其提取相關(guān)處理。兩個F1級將各自結(jié)果傳遞到 相應(yīng)的F2級,用于在第二循環(huán)中處理。在第二循環(huán)期間,iCache Fl級關(guān)于第二地址B 執(zhí)行其提取相關(guān)處理,且BTAC Fl級關(guān)于第二地址B執(zhí)行其提取相關(guān)處理。兩個F2級 均在第三循環(huán)結(jié)束時完成關(guān)于第二地址B的處理。然而,在所述第三循環(huán)期間,兩個F1 級均在處理第三連續(xù)指令C?,F(xiàn)假定第二指令B是分支指令,BTAC 27為所述分支指令存儲目標(biāo)分支地址Z。BTAC 管線的第二級(BTACF2)發(fā)現(xiàn)命中并在第三循環(huán)中提供目標(biāo)地址Z。在下一處理循環(huán)中 (即,在第四循環(huán)中),在iCacheFl級中,目標(biāo)地址Z變得可用并作為指令提取地址被 處理。然而,如圖所示,兩個F1級在第三循環(huán)中均開始處理連續(xù)地址(如畫圈地址C所表 示)。此處理是無關(guān)的且任何結(jié)果必須從管線中清除。下一 (第四)處理循環(huán)中可能發(fā)生 類似處理且需要從F2級中清除(再次由畫圈地址C表示)。第三連續(xù)地址的不必要的處 理浪費(fèi)處理時間,且需要清除任何相關(guān)數(shù)據(jù)的級會引發(fā)延遲并降低性能。圖4是表示2循環(huán)提取級(例如,圖2所示的級112)中的循環(huán)時序和相關(guān)聯(lián)的處理 的表或時序圖,其中提取級112實(shí)施BTAC提取相對于iCache提取的前視偏移。圖4的 表類似于圖3的表,因?yàn)閮烧呤褂孟嗤?。然而,圖4中表示的偏移消除了浪費(fèi)的iCache 提取處理循環(huán)。 在圖4的實(shí)例中,iCache提取級與BTAC提取級的處理之間的偏移對應(yīng)于一個指令 地址。出于論述的目的,所述偏移由提取地址遞增表示。如上文注意到,通過BTAC寫 入地址的遞減偏移可實(shí)現(xiàn)相同結(jié)果。在處理循環(huán)1期間,iCache Fl級執(zhí)行關(guān)于第一地址A的與其提取相關(guān)的處理,然而, BTAC Fl級執(zhí)行關(guān)于第二地址B的與其提取相關(guān)的處理。兩個F1級將各自結(jié)果傳遞到 相應(yīng)的F2級,用于在第二循環(huán)中分別進(jìn)行關(guān)于A和B的處理。在第二循環(huán)期間,iCache Fl級執(zhí)行關(guān)于第二地址B的與其提取相關(guān)的處理,且BTAC Fl級執(zhí)行關(guān)于第三地址C 的與其提取相關(guān)的處理。BTACF2級在第二循環(huán)結(jié)束時完成其關(guān)于第二地址B的處理。由于在此實(shí)例中,第 二指令B是分支指令,BTAC 27為所述分支指令存儲目標(biāo)分支地址Z,所以BTAC管線 的BTACF2級發(fā)現(xiàn)命中并在第二循環(huán)中提供目標(biāo)地址Z。在下一處理循環(huán)中(即,在第 三循環(huán)中),在iCacheFl級中,目標(biāo)地址Z變得可用并作為指令提取地址被處理。因此, iCache管線級可立即處理對應(yīng)手目標(biāo)分支地址的指令,而不會不適當(dāng)?shù)亻_始處理下一連 續(xù)地址。在BTAC管線級中可能仍存在對下一連續(xù)地址的某一不必要的處理(如畫圈地址C 所表示)。然而,由于分支指令(尤其是背對背分支采取的指令)發(fā)生的頻率較低,所以 清除BTAC管線中用于此類不必要的處理的數(shù)據(jù)對總體處理器性能具有相對較少的影 響。通過審閱圖2和4中的簡單實(shí)例應(yīng)了解,啟動時,在初始循環(huán)中從iCache21提取的 對應(yīng)于偏移的指令不具有相應(yīng)的BTAC提取。通常,第一指令不是分支,因此這不存在 問題。然而,隨著BTAC提取的循環(huán)數(shù)目增加且伴隨的偏移增加,可能可行的是在BTAC 偏移的第一次通過之前避免第一系列的指令中的分支操作。圖5和圖6展示BTAC提取操作需要三個處理循環(huán)的處理器的管線處理和相關(guān)聯(lián)的 時序。盡管iCache和BTAC循環(huán)可能并非始終相同,但為了便于論述,在此實(shí)例中,從 iCache進(jìn)行指令提取同樣需要三個循環(huán)。本質(zhì)上,可認(rèn)為提取級113形成了管線。盡管 提取級可進(jìn)行組合,但-對于此實(shí)例,假定每一類型的提取在兩個單獨(dú)管線級中執(zhí)行,且 iCache提取管線與形成BTAC提取管線的級并行運(yùn)作。因此,管線的每一者由三個級組 成。提取管線113的每一級執(zhí)行每一程序指令的整個處理過程中必要的不同功能。與指令 提取處理相關(guān)的第一級(iCacheFl)接收指令地址(iAddress),執(zhí)行其功能處理以開始
      提取所尋址的指令并將其結(jié)果傳遞到與指令提取處理相關(guān)的第二級(iCacheF2)。在下一 循環(huán)期間,iCache Fl接收另一指令地址,而iCache F2級執(zhí)行其關(guān)于第一地址的提取處 理并將結(jié)果傳遞到下一級。在第三循環(huán)期間,iCacheFl級接收另一指令地址,而iCache F2級執(zhí)行其關(guān)于第二地址的提取處理,且與指令提取處理相關(guān)的第三級(iCacheF3)完 成關(guān)于第一指令地址的處理并將結(jié)果傳遞到解碼級13。并行地,與目標(biāo)地址(BTAC)提取處理相關(guān)的第一級(BTACF1)接收BTAC提取 地址,執(zhí)行其功能處理并將其結(jié)果傳遞到與指令提取處理相關(guān)的第二級(BTACF2)。在 下一循環(huán)期間,級BTAC Fl接收另一指令地址,而BTAC F2級執(zhí)行其關(guān)于第一地址的 提取處理并將結(jié)果傳遞到下一級。在第三循環(huán)期間,BTACF1級接收又一指令地址,而 BTAC F2執(zhí)行其關(guān)于第二 BTAC地址的提取處理,且與指令提取處理相關(guān)的第三級 (BTAC F3)完成關(guān)于第一 BTAC地址的處理并將結(jié)果傳遞到解碼級13。圖6是表示3循環(huán)提取級(例如,圖5所示的提取級)中的循環(huán)時序和相關(guān)聯(lián)的處 理的表或時序圖,其中提取級管線113實(shí)施BTAC提取相對于iCache提取的對應(yīng)于兩個 地址的前視偏移。圖6的表類似于圖4的表,因?yàn)槠涫褂妙愃品?。在?循環(huán)實(shí)例中, 為了方便,假定第三連續(xù)指令C是分支指令,已為其將目標(biāo)地址存儲在BTAC27中。在圖6的實(shí)例中,iCache提取級與BTAC提取級的處理之間的偏移對應(yīng)于兩個指令 地址。出于論述的目的,所述偏移由提取地址遞增表示。如上文注意到,BTAC寫入地 址的遞減偏移可實(shí)現(xiàn)相同結(jié)果。在處理循環(huán)1期間,iCacheFl級關(guān)于第一地址A執(zhí)行其提取相關(guān)處理,然而,BTAC Fl級關(guān)于第一地址C執(zhí)行其提取相關(guān)處理。兩個Fl級將各自結(jié)果傳遞到相應(yīng)的F2級' 用于在第二循環(huán)中分別關(guān)于A和C進(jìn)行處理。在第二循環(huán)期間,iCacheFl級關(guān)于第二地 址B執(zhí)行其提取相關(guān)處理,且iCache F2級關(guān)于第一地址A執(zhí)行其提取相關(guān)處理。在所 述同一循環(huán)期間,BTAC F2級關(guān)于地址C執(zhí)行其提取相關(guān)處理。在第三處理循環(huán)中,iCache Fl級處理第三地址C, iCache F2級關(guān)于地址B執(zhí)行其 提取相關(guān)處理,且iCache F3級關(guān)于地址A執(zhí)行其提取相關(guān)處理。同時,在BTAC管線 中,BTACF3級即將完成關(guān)于地址C的處理。在此實(shí)例中,此處理產(chǎn)生命中且BTAC提 取提取目標(biāo)地址Z (表的底線)。由于指令C是分支指令,BTAC 27為所述分支指令存儲目標(biāo)分支地址Z,所以BTAC 管線的BTACF3級發(fā)現(xiàn)命中并在第三循環(huán)中提供目標(biāo)地址Z。在下一處理循環(huán)中(即, 在我們的實(shí)例的第四循環(huán)中),在iCacheFl級中,目標(biāo)地址Z變得可用并作為指令提取
      地址被處理。因此,iCache管線級可立即處理對應(yīng)于目標(biāo)分支地址的指令,而不會不適 當(dāng)?shù)亻_始處理下一連續(xù)地址。應(yīng)注意,前視BTAC提取可實(shí)施在具有iCache和BTAC的任何管線處理器中。提取 級無需形成管線,或者如果形成管線,那么提取級無需一定以圖2和圖5的實(shí)例中所示 的方式形成管線。用于實(shí)現(xiàn)前視BTAC提取的偏移的優(yōu)點(diǎn)可實(shí)施在提取操作需要兩個或 兩個以上處理循環(huán)的任何處理器中。在實(shí)例中,提取級開始iCache提取的處理循環(huán)跟在相應(yīng)的BTAC提取之后(或BTAC 提取提前于iCache提取)由偏移界定的一個或一個以上處理循環(huán),也就是說比執(zhí)行BTAC 提取所需的處理循環(huán)少一個。舉例來說,圖4中,iCacheFl級在循環(huán)2中開始提取分支 指令B,這是在BTACF1級相應(yīng)地開始提取B目標(biāo)地址之后一個循環(huán)。在所述第一實(shí)例 中,BTAC提取需要兩個循環(huán)。類似地,圖6中,iCacheFl級在循環(huán)3中開始提取分支 指令C,這是在BTACF1級相應(yīng)地開始提取C目標(biāo)地址之后兩個循環(huán)。在圖5和圖6的 實(shí)杏ij中,BTAC提取需要三個處理循環(huán)。在每一情況卞,iCache提取處理過程中均不存 在不必要的中間處理。在上述圖2-圖6的實(shí)例中,假定了偏移涉及前于或提前于用于iCache提取的地址的 用于BTAC提取的地址。為了在提取處理期間實(shí)施此操作,提取邏輯將實(shí)施地址遞增。 本質(zhì)上,當(dāng)提取級11接收用于指令提取的地址時,其使用所述地址作為iCache指令地 址,但邏輯遞增所述地址以產(chǎn)生用于BTAC提取的地址。圖7是此提取操作中涉及的元 件的功能方框圖,其涉及遞增提取地址以獲得用于BTAC提取的地址。為了便于論述, 已省略管線的其它元件。如圖所示,提取級中的邏輯71提供提取地址以用于存取iCache 21和BTAC 27兩者。 來自邏輯71的提取地址直接用作用于存取iCache的地址。在正常處理過程中,提取級 將經(jīng)過兩個或兩個以上處理循環(huán)以從iCache 21獲得相應(yīng)的指令。來自iCache 21的指令 加載到寄存器73中和/或提供到邏輯71,用于轉(zhuǎn)移到解碼級。如之前注意到,指令解碼 邏輯的部分31將在解碼級13中處理指令期間計算目標(biāo)地址;且執(zhí)行級17的邏輯將包含 邏輯33以確定是否應(yīng)采取分支。如果是,那么處理將包含寫入操作(圖1中35處所示 的邏輯)以將計算出的分支目標(biāo)地址寫入到BTAC27中。在此實(shí)例中,未修改寫入操作。然而,提取級包含邏輯電路29i(包含在提取級邏輯71中或與提取級邏輯71相關(guān)聯(lián)), 用于使提取地址遞增適當(dāng)?shù)钠屏恳援a(chǎn)生BTAC提取地址。在圖2和圖4的2循環(huán)提取 實(shí)例中,電路29i將使提取地址遞增一個地址值,使得BTAC提取將提前于iCache提取
      一個循環(huán)。在圖5和圖6的3循環(huán)提取實(shí)例中,電路29i將使提取地址遞增兩個地址值, 使得BTAC提取將提前于iCache提取兩個循環(huán)。以此方式,提取級將經(jīng)過兩個或兩個以 上處理循環(huán),以確定是否存在對應(yīng)于適當(dāng)?shù)膶碇噶畹腂TAC命中,且如果是,那么從 BTAC 27中檢索高速緩存的分支目標(biāo)地址。目標(biāo)地址加載到寄存器75中并提供到邏輯 71。邏輯71足夠早地接收到分支目標(biāo)地址,以在下一提取處理循環(huán)中將所述地址用作下 一提取地址(例如,見圖4和圖6)。盡管為了方便未展示所述路徑,但所產(chǎn)生的目標(biāo)地 址通常還與相應(yīng)的分支指令一起被轉(zhuǎn)移到解碼級,以有助于沿著管線向下進(jìn)一步處理分 支指令。作為在提取操作期間遞增地址的替代方法,但仍提供所需的前視BTAC提取,還可 在將分支目標(biāo)數(shù)據(jù)寫入到BTAC 27時修改所述數(shù)據(jù)的BTAC地址。如果當(dāng)相關(guān)聯(lián)的指令 地址和分支目標(biāo)地址寫入到存儲器中時遞減所述相關(guān)聯(lián)的指令地址,那么基于當(dāng)前指令 地址從BTAC進(jìn)行的隨后提取將提前于從iCache提取分支指令。如果地址遞減量適當(dāng), 即地址偏移量te BTAC提取所需的循環(huán)數(shù)目少一,那么從iCaclie 21提取指令以及從 BTAC 27提取任何相關(guān)聯(lián)的目標(biāo)地址將與先前實(shí)例中完全相同。實(shí)踐中,通過當(dāng)執(zhí)行期 間存在采取的分支時修改寫入地址而不是在提取操作期間每次都遞增提取地址來實(shí)施偏 移通常更容易。圖8是此提取操作中涉及的元件的功能方框圖,其涉及當(dāng)將計算出的分支目標(biāo)寫入 BTAC時遞減目標(biāo)數(shù)據(jù)的地址。為了便于論述,已省略管線的其它元件。如圖所示,提 取級中的邏輯71提供提取地址,以用于存取iCache21和BTAC27兩者。在此實(shí)例中, 兩個提取使用同一地址,即用于從iCache21提取指令以及用于存取BTAC 27兩者。提取級將經(jīng)過兩個或兩個以上處理循環(huán)以從iCache21獲得相應(yīng)的指令。來自iCache 21的指令被加載到寄存器73中和/或提供到邏輯71,供轉(zhuǎn)移到解碼級。如前文所述,指 令解碼邏輯的部分31將在解碼級13中處理指令期間計算目標(biāo)地址;且執(zhí)行級17的邏輯 將包含邏輯33以確定是否應(yīng)采取分支。如果是,那么處理將包含寫入操作,以將計算出 的分支目標(biāo)地址寫入到BTAC 27中。在此實(shí)例中,修改寫入操作。明確地說,執(zhí)行級中的寫入邏輯包含遞減(-)偏移邏 輯電路292。通常,用于將目標(biāo)地址數(shù)據(jù)寫入到BTAC 27的寫入地址是曾產(chǎn)生分支地址 的分支指令的地址。然而,在圖8的實(shí)例中,電路292使所述地址遞減適當(dāng)?shù)钠屏俊?對于實(shí)施2循環(huán)提取的管線處理器,電路292將使寫入地址遞減一個地址值。對于實(shí)施3 循環(huán)提取的處理器,電路292將使寫入地址遞減兩個地址?,F(xiàn)再次考慮提取操作。當(dāng)邏輯71產(chǎn)生提取地址時,所述地址指向iCache 21中的當(dāng) 前所需的指令。然而,由于用于將目標(biāo)數(shù)據(jù)寫入到BTAC27中的寫入地址遞減,所以提 取過程中使用的地址實(shí)際上對應(yīng)于稍后的指令地址,這由偏移量決定。如果偏移量是一 個地址值,那么提取地址實(shí)際上指向針對待從iCache21牽出的下一指令的可能的BTAC 命中。類似地,如果偏移量是兩個地址,那么提取地址實(shí)際上指向針對提前于當(dāng)前正從 iCache21牽出的指令的兩個指令的可能的BTAC命中。以此方式,提取級將經(jīng)過兩個或兩個以上處理循環(huán)以確定是否存在對應(yīng)于適當(dāng)?shù)膶?來指令的BTAC命中,且如果是,那么從BTAC27中檢索高速緩存的分支目標(biāo)地址。目 標(biāo)地址加載到寄存器75中并提供到邏輯71。邏輯71足夠早地接收到分支目標(biāo)地址,以 在其啟始對于相應(yīng)的分支指令的iCache提取之后下一提取處理循環(huán)中將所述地址用作下 一提取地址(例如,見圖4和圖6)。盡管為了方便未展示所述路徑,但所產(chǎn)生的目標(biāo)地 址通常還與相應(yīng)的分支指令一起被轉(zhuǎn)移到解碼級,以有助于沿著管線向下進(jìn)一步處理分 支指令。 ' 盡管實(shí)例已敘述兩個和三個循環(huán)BTAC提取處理以及相應(yīng)的偏移,但所屬領(lǐng)域的技 術(shù)人員將了解,所述教示容易適于BTAC提取涉及更大數(shù)目的循環(huán)的提取處理。在每一 情況下,最佳偏移量均將比BTAC提取中的循環(huán)數(shù)目少一。然而,在提取序列開始時, 對應(yīng)于偏移量的某一數(shù)目的指令不應(yīng)包含分支指令,以免跳過BTAC命中。如果較早地 包含分支指令,那么程序的首次運(yùn)行將把分支指令作為不存在BTAC命中(分支先前未 采取)的分支指令來處理,且程序?qū)⒁哉7绞竭\(yùn)行,但沒有原本將通過檢測到BTAC 命中而提供的性能改進(jìn)。盡管上文已描述了被認(rèn)為是最佳模式的內(nèi)容和/或其它實(shí)例,但應(yīng)了解,可在其中作 出各種修改且本文揭示的主題可以各種形式和實(shí)例實(shí)施,且所述教示可應(yīng)用于許多應(yīng)用, 本文中僅描述了其中某些應(yīng)用。所附權(quán)利要求書用來主張那些落入本發(fā)明教示的真正范 圍內(nèi)的任何和所有的應(yīng)用、修改及變化。
      權(quán)利要求
      1.一種用于管線處理器中的提取指令的方法,其包括從指令高速緩沖存儲器提取指令;在每次提取指令期間,同時存取分支目標(biāo)地址高速緩沖存儲器(BTAC)以確定所述BTAC是否存儲分支目標(biāo)地址,其中每次存取所述BTAC包括至少兩個處理循環(huán);以及使所述存取操作相對于所述提取操作偏移預(yù)定量,以在啟始從所述指令高速緩沖存儲器提取分支指令之前至少一個循環(huán)開始與所述分支指令相關(guān)地存取所述BTAC。
      2. 根據(jù)權(quán)利要求l所述的方法,其中-每次從所述指令高速緩沖存儲器進(jìn)行提取包括為待提取的指令產(chǎn)生提取地址; 所述偏移包括使每一提取地址遞增所述預(yù)定量;且每次存取所述BTAC包括使用由所述偏移產(chǎn)生的遞增的提取地址從所述BTAC進(jìn) 行提取。
      3. 根據(jù)權(quán)利要求1所述的方法,其中所述偏移包括遞減所述分支指令的地址并將所述分支目標(biāo)地址和所述遞減的地 址寫入到所述BTAC;所述方法進(jìn)一步包括,在每一循環(huán)期間為待提取的指令產(chǎn)生提取地址;且 在每一循環(huán)中開始的提取和存取兩者均使用所述循環(huán)期間產(chǎn)生的所述提取地址。
      4. 根據(jù)權(quán)利要求1所述的方法,其中所述偏移的所述預(yù)定量足以實(shí)現(xiàn)從所述BTAC提 取對應(yīng)于所述分支指令的分支目標(biāo)地址以在后續(xù)指令提取過程中使用,所述后續(xù)指 令提取過程開始于緊接著其中指令的提取開始提取所述分支指令的處理循環(huán)之后 的處理循環(huán)中。
      5. 根據(jù)權(quán)利要求4所述的方法,其中所述預(yù)定量包括從所述指令高速緩沖存儲器提取 與存取所述BTAC之間的地址差,其等于比每次存取所述BTAC時的循環(huán)數(shù)目少一。
      6. 根據(jù)權(quán)利要求5所述的方法,其中每次存取所述BTAC由兩個處理循環(huán)組成;且所述預(yù)定量包括所述從所述指令高速緩沖存儲器提取指令與所述存取所述BTAC 之間的地址差,其等于一個指令地址。
      7. 根據(jù)權(quán)利要求5所述的方法,其中-每次存取所述BTAC由三個處理循環(huán)組成;且所述預(yù)定量包括所述從所述指令高速緩沖存儲器提取指令與所述存取所述BTAC 之間的地址差,其等于兩個指令地址。
      8. —種用于管線處理器中的提取指令的方法,其包括開始從指令高速緩沖存儲器提取第一指令;與所述開始提取所述第一指令同時,啟始分支目標(biāo)地址高速緩沖存儲器(BTAC) 中的提取,以提取對應(yīng)于所述第一指令之后的分支指令的目標(biāo)地址, 開始從所述指令高速緩沖存儲器提取所述分支指令;在開始提取所述分支指令之后,使用對應(yīng)于所述分支指令的所述目標(biāo)地址來開始 從所述指令高速緩沖存儲器提取目標(biāo)指令。
      9. 根據(jù)權(quán)利要求8所述的方法,其中所述BTAC中的提取需要兩個或兩個以上處理循 環(huán)。
      10. 根據(jù)權(quán)利要求9所述的方法,其中所述啟始所述BTAC中的提取提前于所述開始從 所述指令高速緩沖存儲器提取所述分支指令一個或一個以上處理循環(huán)。
      11. 根據(jù)權(quán)利要求10所述的方法,其中所述BTAC中的提取提前于所述開始從所述指 令高速緩沖存儲器提取所述分支指令所述一個或一個以上處理循環(huán)為比所述BTAC 中的提取所需的所述兩個或兩個以上處理循環(huán)少一。
      12. 根據(jù)權(quán)利要求8所述的方法,其中所述提取所述第一指令使用提取地址;且 所述BTAC中的提取使用相對于所述提取地址遞增的地址。
      13. 根據(jù)權(quán)利要求8所述的方法,其中所述提取所述第一指令使用提取地址;且所述BTAC中的同時提取使用所述提取地址,所述分支地址已以遞減的地址寫入 到所述BTAC以對應(yīng)于所述提取地址。
      14. 一種用于管線處理器中的提取指令的方法,其包括在第一處理循環(huán)中,開始從指令高速緩沖存儲器提取第一指令;在所述第一處理循環(huán)中,啟始分支目標(biāo)地址高速緩沖存儲器(BTAC)中的提取, 以提取對應(yīng)于在所述第一指令之后預(yù)定量的分支指令的目標(biāo)地址,在遲于所述第一處理循環(huán)的第二處理循環(huán)中,開始從所述指令髙速緩沖存儲器提 取所述分支指令并完成所述從所述BTAC提取所述目標(biāo)地址;在遲于所述第二處理循環(huán)的第三處理循環(huán)中,使用對應(yīng)于所述分支指令的所述目 標(biāo)地址來開始從所述指令高速緩沖存儲器提取目標(biāo)指令。
      15. 根據(jù)權(quán)利要求14所述的方法,其中所述第二處理循環(huán)在所述第一處理循環(huán)之后一 個或一個以上數(shù)目的處理循環(huán),所述數(shù)目比完成所述從所述BTAC提取所需的兩個 或兩個以上數(shù)目的處理循環(huán)少一。
      16. 根據(jù)權(quán)利要求14所述的方法,其中所述啟始所述BTAC中的提取的步驟包括-使在所述第一處理循環(huán)中開始從所述指令高速緩沖存儲器提取所述第一指令時 使用的指令地址遞增所述預(yù)定量;以及使用所述遞增的地址來開始所述BTAC中的提取,以提取對應(yīng)于所述分支指令的 所述目標(biāo)地址。
      17. 根據(jù)權(quán)利要求16所述的方法,其中每一遞增是一個或一個以上數(shù)目的地址,其比 完成所述從所述BTAC提取所需的兩個或兩個以上數(shù)目的處理循環(huán)少一。
      18. 根據(jù)權(quán)利要求14所述的方法,其中所述在所述第一處理循環(huán)中啟始所述BTAC中的提取的步驟包括使用在所述第 一處理循環(huán)中開始從所述指令高速緩沖存儲器提取所述第一指令時使用的指令地 址來存取所述BTAC;且用于將所述分支目標(biāo)地址寫入到所述BTAC的地址先前從用于將所述分支指令寫 入到所述指令高速緩沖存儲器的指令地址遞減了所述預(yù)定量,使得所述BTAC中的 目標(biāo)地址的地址對應(yīng)于在所述第一處理循環(huán)中開始從所述指令高速緩沖存儲器提 取所述第一指令時使用的所述指令地址。
      19. 根據(jù)權(quán)利要求18所述的方法,其中所述遞減是一個或一個以上數(shù)目的地址,其比 完成所述從所述BTAC提取所需的兩個或兩個以上數(shù)目的處理循環(huán)少一。
      20. —種處理器,其包括指令高速緩沖存儲器,其用于存儲指令;分支目標(biāo)地址高速緩沖存儲器,其用于存儲對應(yīng)于所述存儲的指令中的包括分支 指令的一者的分支目標(biāo)地址;提取級,其用于從所述指令高速緩沖存儲器提取指令,并用于從所述分支目標(biāo)地 址高速緩沖存儲器提取所述分支目標(biāo)地址;至少一個后續(xù)處理級,其用于根據(jù)所述提取的指令執(zhí)行一個或一個以上處理功 能;以及偏移邏輯,其用于使從所述分支目標(biāo)地址高速緩沖存儲器的提取比從所述指令高 速緩沖存儲器提取指令偏移一提前量,所述量與完成每次從所述分支目標(biāo)地址高速 緩沖存儲器提取所需的處理循環(huán)的數(shù)目相關(guān)。
      21. 根據(jù)權(quán)利要求20所述的處理器,其中所述量的數(shù)目比完成每次從所述分支目標(biāo)地 址高速緩沖存儲器提取所需的處理循環(huán)的數(shù)目少一。
      22. 根據(jù)權(quán)利要求20所述的處理器,其中所述邏輯包括與所述提取級相關(guān)聯(lián)以用于遞增所述提取級用以從所述指令高速 緩沖存儲器進(jìn)行提取的地址的邏輯;且所述提取級使用所述遞增的地址來從所述分支目標(biāo)地址高速緩沖存儲器進(jìn)行提 取。
      23. 根據(jù)權(quán)利要求20所述的處理器,其中 所述提取級同時使用指令地址從所述指令高速緩沖存儲器進(jìn)行提取以及從所述 分支目標(biāo)地址高速緩沖存儲器進(jìn)行提??;且所述邏輯包括用于遞減所述分支指令的地址并使用所述遞減的地址將所述分支 目標(biāo)地址寫入到所述分支目標(biāo)地址高速緩沖存儲器的邏輯。
      24. 根據(jù)權(quán)利要求23所述的處理器,其中所述用于遞減的邏輯與所述至少一個后續(xù)處 理級相關(guān)聯(lián)。
      25. 根據(jù)權(quán)利要求20所述的處理器,其中所述提取級包括許多管線處理級。
      26. 根據(jù)權(quán)利要求25所述的處理器,其中所述完成每次從所述分支目標(biāo)地址高速緩沖 存儲器提取所需的處理循環(huán)的數(shù)目等于所述管線處理級的數(shù)目。
      27. 根據(jù)權(quán)利要求20所述的處理器,其中所述至少一個后續(xù)處理級包括指令解碼級; 讀出級;指令執(zhí)行級;以及 結(jié)果回寫級。
      28. —種管線處理器,其包括提取級,其用于從指令高速緩沖存儲器提取指令,其中所述指令中的一者是分支指令,且用于從分支目標(biāo)地址高速緩沖存儲器提取對應(yīng)于所述分支指令的分支目標(biāo) 地址;至少一個后續(xù)處理級,其用于根據(jù)所述提取的指令執(zhí)行一個或一個以上處理功 能;以及偏移裝置,其用于使從所述分支目標(biāo)地址高速緩沖存儲器的提取偏移以提前于所 述從所述指令高速緩沖存儲器提取指令,以補(bǔ)償完成每次從所述分支目標(biāo)地址高速 緩沖存儲器提取所需的處理循環(huán)的數(shù)目。
      29. 根據(jù)權(quán)利要求28所述的管線處理器,其中所述提取級包括許多管線處理級。
      30.根據(jù)權(quán)利要求28所述的管線處理器,其中所述至少一個后續(xù)處理級包括: 指令解碼級; 讀出級;指令執(zhí)行級;以及 結(jié)果回寫級。
      全文摘要
      一種管線處理器包括指令高速緩沖存儲器(iCache)、分支目標(biāo)地址高速緩沖存儲器(BTAC)和處理級,所述處理級包含用于從所述iCache和所述BTAC進(jìn)行提取的級。為了補(bǔ)償從所述BTAC提取分支目標(biāo)地址所需的循環(huán)的數(shù)目,所述從所述BTAC提取比從所述iCache提取分支指令提前一量,所述量與從所述BTAC提取所需的所述循環(huán)相關(guān)。所揭示的實(shí)例以實(shí)質(zhì)上對應(yīng)于比BTAC提取所需循環(huán)少一的量遞減所述BTAC的寫入地址或遞增所述BTAC的提取地址。
      文檔編號G06F9/38GK101164043SQ200680013854
      公開日2008年4月16日 申請日期2006年3月3日 優(yōu)先權(quán)日2005年3月4日
      發(fā)明者布賴恩·邁克爾·斯坦普爾, 托馬斯·安德魯·薩托里烏斯, 杰弗里·托德·布里奇斯, 羅德尼·韋恩·史密斯, 詹姆斯·諾里斯·迪芬德爾費(fèi)爾 申請人:高通股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1