專(zhuān)利名稱(chēng):數(shù)據(jù)處理系統(tǒng)、處理器和進(jìn)行數(shù)據(jù)處理的方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及數(shù)據(jù)處理,并且特別地涉及分支預(yù)測(cè)。更特別地,
本發(fā)明涉及具有改進(jìn)的分支目標(biāo)地址高速緩存(BTAC)的數(shù)據(jù)處理系 統(tǒng),處理器和進(jìn)行數(shù)據(jù)處理的方法。
背景技術(shù):
根據(jù)現(xiàn)有技術(shù)的微處理器可以包括例如用于存儲(chǔ)指令和數(shù)據(jù)的高速 緩存,用于從所述高速緩存取指令、為所述取到的指令排序并且分發(fā)所 述取到的指令用于執(zhí)行的指令排序邏輯, 一個(gè)或多個(gè)用于處理序列指令 的序列指令執(zhí)行單元,以及用于處理分支指令的分支處理單元(BPU)。
BPU執(zhí)行的分支指令可以歸類(lèi)為條件分支指令或非條件分支指令。 非條件分支指令是將程序執(zhí)行流程從順序執(zhí)行路徑改變到特定的目標(biāo)執(zhí) 行路徑并且不依賴(lài)于事件發(fā)生所提供的條件的分支指令。這樣,總是選 擇非條件分支指令所規(guī)定的分支。與此相比,條件分支指令是根據(jù)處理 器內(nèi)部的條件可能選擇也可能不選擇程序執(zhí)行流程中所指示的分支的分 支指令,所述條件例如特定條件寄存器位的狀態(tài)或計(jì)數(shù)器的值。
條件分支指令可以根據(jù)在BPU評(píng)估條件分支指令時(shí)所述分支所依 賴(lài)的條件是否具備進(jìn)一步分類(lèi)為解析或未解析的條件分支指令。由于解 析條件分支指令所依賴(lài)的條件在執(zhí)行前是已知的,典型地可以在執(zhí)行序 列指令時(shí)延遲很小或無(wú)延遲的情況下執(zhí)行解析條件分支指令并且提取所 述目標(biāo)執(zhí)行路徑上的指令。另一方面,如果順序指令的提取被延遲直至 所述分支所依賴(lài)的條件具備并且所述分支被解析為止,則未解析條件分 支可造成嚴(yán)重的性能損失。
因此,為了使執(zhí)行停滯最小化,某些處理器推測(cè)性地將未解析分支 指令的結(jié)果預(yù)測(cè)為選取或不選取。隨后取指令器就能夠利用所述預(yù)測(cè)結(jié)
果在所述分支解析前取所述推測(cè)性的執(zhí)行路徑上的指令,這樣在隨后所 述分支被解析為預(yù)測(cè)正確的情況下,就可避免執(zhí)行管道中的停滯。傳統(tǒng) 地,已經(jīng)利用靜態(tài)分支預(yù)測(cè)或利用動(dòng)態(tài)分支預(yù)測(cè)實(shí)現(xiàn)未解析條件分支指 令的預(yù)測(cè),其中靜態(tài)分支預(yù)測(cè)基于在程序執(zhí)行前確定的標(biāo)準(zhǔn)預(yù)測(cè)分支指
地址高速緩存(BTAC)中在逐個(gè)地址基礎(chǔ)上積累的分支歷史來(lái)預(yù)測(cè)分 支指令的解析。
現(xiàn)代微處理器從指令高速緩存中取指令、掃描所取指令的分支并且 預(yù)測(cè)未解析條件分支指令的結(jié)果需要若干周期。如果任何分支被預(yù)測(cè)為 被選取,取指令被重定向到新的預(yù)測(cè)地址。這個(gè)改變所取指令的過(guò)程稱(chēng) 為"被選取分支重定向"。在所述取指令、分支掃描以及被選取分支重定 向需要的若干周期中,繼續(xù)沿著未選取的路徑取指令;對(duì)于被預(yù)測(cè)為選 取的分支,所述被預(yù)測(cè)選取路徑內(nèi)的指令被丟棄,造成性能降低以及功 耗浪費(fèi)。
現(xiàn)有的幾種方法用于降低或消除所述分支重定向的損失。 一種普遍 采用的降低分支重定向損失的方法是提前取指令并將所述指令放到指令 緩沖器中;然而,如果所述緩沖器例如由于分支錯(cuò)誤預(yù)測(cè)、指令高速緩 存未命中或在快速接替中有太多被選取分支而為空,那么指令管道的部 分或全部可能空閑,從而降低性能。
較不常用的降低由于被選取分支造成的性能損失的方法是實(shí)施 BTAC,其高速緩存被選取分支的所述分支目標(biāo)地址和相關(guān)聯(lián)的所述取 分支指令地址。在操作中,在取指令的同時(shí)訪問(wèn)BTAC,并且在BTAC 中搜索取指令地址與傳送給所述指令高速緩存的取地址相匹配的條目。 如果存在這樣的BTAC條目,取指令被重定向到所述匹配的BTAC條目 所提供的所述分支目標(biāo)地址。由于所述BTAC訪問(wèn)所需的周期典型地少 于所述取指令、分支掃描和被選取分支重定向序列的周期,正確的BTAC 預(yù)測(cè)能夠通過(guò)促使取指令早于沒(méi)有BTAC的情況開(kāi)始于新地址,從而提 高性能。
發(fā)明內(nèi)容
本發(fā)明提供采用增強(qiáng)分支目標(biāo)地址高速緩存的改進(jìn)的數(shù)據(jù)處理系 統(tǒng),處理器和進(jìn)行數(shù)據(jù)處理的方法。
處理器包括執(zhí)行單元和取指令用以執(zhí)行的指令排序邏輯。指令排序 邏輯包括具有分支目標(biāo)緩沖器的分支目標(biāo)地址高速緩存,分支目標(biāo)緩沖 器包含多個(gè)條目,每個(gè)條目將分支指令地址的至少一部分與預(yù)測(cè)分支目 標(biāo)地址相關(guān)聯(lián)。分支目標(biāo)地址高速緩存使用分支指令地址訪問(wèn)分支目標(biāo) 緩沖器,以獲取預(yù)測(cè)的分支目標(biāo)地址作為取指令地址使用。分支目標(biāo)地 址高速緩存也包括緩沖一個(gè)或多個(gè)候選分支目標(biāo)地址預(yù)測(cè)的過(guò)濾緩沖 器。過(guò)濾緩沖器將各個(gè)表明預(yù)測(cè)準(zhǔn)確性的置信度指示與每個(gè)候選分支目 標(biāo)地址預(yù)測(cè)相關(guān)聯(lián)。分支目標(biāo)地址高速緩存根據(jù)候選分支目標(biāo)地址預(yù)測(cè) 各自的置信度指示將其從過(guò)濾緩沖器推進(jìn)到分支目標(biāo)緩沖器。
通過(guò)下文的詳述可以理解本發(fā)明所有的目的、特性和優(yōu)勢(shì)。
權(quán)利要求書(shū)中提出了被認(rèn)為是本發(fā)明特有的新穎性特征。然而,參
方法有最好的理解,其中
圖1是根據(jù)本發(fā)明的數(shù)據(jù)處理系統(tǒng)的一個(gè)示例性實(shí)施例;
圖2是圖1的所述數(shù)據(jù)處理系統(tǒng)中分支預(yù)測(cè)單元的更為詳細(xì)的方框
圖3是根據(jù)本發(fā)明的一個(gè)示例性方法的高級(jí)邏輯流程圖,所述分支
預(yù)測(cè)單元內(nèi)的分支目標(biāo)地址高速緩存(BTAC)利用該方法產(chǎn)生取指令 i也址;以及
圖4A-圖4C是根據(jù)本發(fā)明的一個(gè)示例性方法的高級(jí)邏輯流程圖, 利用該方法更新所述BTAC內(nèi)的所述分支目標(biāo)地址預(yù)測(cè)。
具體實(shí)施例方式
現(xiàn)在參照?qǐng)D1,圖1示出了根據(jù)本發(fā)明的示例性數(shù)據(jù)處理系統(tǒng)8的
高級(jí)方框圖。如圖所示,數(shù)據(jù)處理系統(tǒng)8包括處理器10,處理器10包 括單一集成電路超標(biāo)量處理器,其如下文進(jìn)一步所述包括各種執(zhí)行單元、
寄存器、緩沖器、存儲(chǔ)器和其他全部由集成電路形成的功能單元。處理 器IO可以通過(guò)互連架構(gòu)14連接到其他設(shè)備例如系統(tǒng)存儲(chǔ)器12和第二個(gè) 處理器IO,以構(gòu)成數(shù)據(jù)處理系統(tǒng)8,如工作站或服務(wù)器計(jì)算機(jī)系統(tǒng)。處 理器10也包括片上多級(jí)高速緩存層級(jí),其分別包括統(tǒng)一的二級(jí)(L2) 高速緩存16以及分為兩部分的一級(jí)(Ll)指令(I)和數(shù)據(jù)(D)高速 緩存18和20。本領(lǐng)域的普通技術(shù)人員已經(jīng)了解,高速緩存16、 18和20 提供對(duì)應(yīng)于系統(tǒng)存儲(chǔ)器12中存儲(chǔ)器位置的高速緩存線(xiàn)的低延遲訪問(wèn)。
取指令并對(duì)其排序以供處理器io內(nèi)的指令排序邏輯13處理。在所 示的實(shí)施例中,指令排序邏輯13包括取指令地址寄存器(IFAR) 30, 其包括表明應(yīng)從L1 I-高速緩存18中提取用以執(zhí)行的指令的高速緩存線(xiàn) 的有效地址(EA)。在每個(gè)周期中,可以從至少三個(gè)源之一將新的取指 令地址載入IFAR 30:提供條件分支指令預(yù)測(cè)所產(chǎn)生的推測(cè)性目標(biāo)路徑 地址的分支預(yù)測(cè)單元(BPU )36,提供序列路徑地址的全局完成表(GCT) 38,以及提供從預(yù)測(cè)的條件分支指令解析得到的非推測(cè)性地址的分支執(zhí) 行單元(BEU) 92。載入IFAR30的有效地址根據(jù)優(yōu)先級(jí)方案從所述多 個(gè)源提供的地址中選出,該過(guò)程可能考慮例如在一個(gè)給定周期內(nèi)提交地 址供選擇的源的相對(duì)優(yōu)先級(jí),以及任何未完成的未解析條件分支指令的 年齡。
如果在有效-真實(shí)地址翻譯(ERAT) 32翻譯完IFAR 30中包含的 EA并且在I-高速緩存目錄34中查找所述真實(shí)地址(RA)后,命中/未 命中邏輯22確定對(duì)應(yīng)于IFAR 30中所述EA的指令的高速緩存線(xiàn)不存在 于L1 I-高速緩存18中,那么命中/未命中邏輯22通過(guò)I-高速緩存請(qǐng)求總 線(xiàn)24將RA作為請(qǐng)求地址提供給L2高速緩存16。該請(qǐng)求地址也可以由 在L2高速緩存16內(nèi)或在處理器10的其他位置的預(yù)取邏輯根據(jù)最近訪 問(wèn)模式產(chǎn)生。響應(yīng)于請(qǐng)求地址,L2高速緩存16輸出高速緩存線(xiàn)的指令, 其可能在通過(guò)預(yù)解碼邏輯(未示出)后,通過(guò)I-高速緩存重載總線(xiàn)26 被載入預(yù)取緩沖器(PB ) 28和Ll I-高速緩存18。
如果IFAR 3 0中的所述EA規(guī)定的所述高速緩存線(xiàn)存在于L1高速緩 存18中,則Ll I-高速緩存18將所述高速緩存線(xiàn)輸出到分支預(yù)測(cè)單元
(BPU) 36和取指令緩沖器(IFB) 40。如下文參照?qǐng)D2進(jìn)一步所述, BPU 36掃描所述高速緩存線(xiàn)的指令中的分支指令并且如果有分支指令, 則預(yù)測(cè)條件分支指令的結(jié)果。在分支預(yù)測(cè)之后,BPU36如上文所述將推 測(cè)性取指令地址提供給IFAR 30,并且將所述預(yù)測(cè)傳遞給分支指令隊(duì)列 64,以便在所述條件分支指令隨后被分支執(zhí)行單元92解析時(shí)確定所述預(yù) 測(cè)的準(zhǔn)確性。
IFB 40臨時(shí)地緩沖從L1 I-高速緩存18接收的所述高速緩存線(xiàn)的指 令,直至所述高速緩存線(xiàn)的指令能夠被指令翻譯單元(ITU) 42翻譯為 止。在所示的處理器10的實(shí)施例中,ITU 42將指令從用戶(hù)指令集合體 系結(jié)構(gòu)(UISA)指令(例如PowerPC 指令)翻譯成可能不同數(shù)量的內(nèi) 部ISA (IISA)指令,IISA指令可被所述處理器的執(zhí)行單元直接執(zhí)行。 所述翻譯可以例如參照存儲(chǔ)在只讀存儲(chǔ)器(ROM)模板中的微碼執(zhí)行。 在至少一些實(shí)施例中,UISA-IISA翻譯得到與UISA指令不同數(shù)量的IISA 指令和/或與相應(yīng)的UISA指令不同長(zhǎng)度的IISA指令。所得到的IISA指 令隨后由全局完成表38分配給指令群組,所述群組的成員被允許不按照 彼此的順序執(zhí)行。全局完成表38通過(guò)至少一個(gè)相關(guān)聯(lián)的EA追蹤尚需完 成執(zhí)行的每個(gè)指令群組,所述EA優(yōu)選地是所述指令群組中最老的指令 的EA。
在UISA-IISA指令翻譯后,指令被根據(jù)指令類(lèi)型按照順序分發(fā)給鎖 存器44、 46、 48和50之一。也就是說(shuō),分支指令和其他條件寄存器(CR) 修改指令被分發(fā)給鎖存器44,定點(diǎn)和加載-存儲(chǔ)指令被分發(fā)給鎖存器46 和48之一,并且浮點(diǎn)指令被分發(fā)給鎖存器50。隨后由CR映射器52, 鏈接和計(jì)數(shù)(LC)寄存器映射器54,例外寄存器(XER)映射器56, 通用寄存器(GPR)映射器58,以及浮點(diǎn)寄存器(FPR)映射器60中適 當(dāng)?shù)挠成淦髟诩拇嫫魑募袨槊總€(gè)需要重命名寄存器用于臨時(shí)地存儲(chǔ)執(zhí) 行結(jié)果的指令分配一個(gè)或多個(gè)寄存器。
被分發(fā)的指令隨后臨時(shí)地纟皮放置在CR發(fā)送隊(duì)列(CRIQ)62、分支
發(fā)送隊(duì)列(BIQ) 64、定點(diǎn)發(fā)送隊(duì)列(FXIQ) 66和68、以及浮點(diǎn)發(fā)送 隊(duì)列(FPIQ) 70和72中適當(dāng)?shù)年?duì)列中。指令可以隨機(jī)地(即可能無(wú)序 地)從發(fā)送隊(duì)列62, 64, 66, 68, 70和72 ^皮發(fā)送》會(huì)處理器10的所述執(zhí) 行單元用于執(zhí)行。在某些實(shí)施例中,所述指令也被保留在發(fā)送隊(duì)列62-72中,直至所述指令執(zhí)行完成并且如果有任何結(jié)果數(shù)據(jù)時(shí)所述結(jié)果數(shù)據(jù) 被寫(xiě)回為止,以防萬(wàn)一需要重新發(fā)送所述指令的情況發(fā)生。
如圖所示,處理器10的所述執(zhí)行單元包括用于執(zhí)行CR修改指令的 CR單元(CRU) 90,用于執(zhí)行分支指令的分支執(zhí)行單元(BEU) 92, 用于執(zhí)行定點(diǎn)指令的兩個(gè)定點(diǎn)單元(FXU) 94和100,用于執(zhí)行加載和 存儲(chǔ)指令的兩個(gè)加載-存儲(chǔ)單元(LSU) 96和98,以及用于執(zhí)行浮點(diǎn)指 令的兩個(gè)浮點(diǎn)單元(FPU) 102和104。每個(gè)執(zhí)行單元90 - 104優(yōu)選地作
為有多個(gè)管道級(jí)的執(zhí)行管道實(shí)施。
在執(zhí)行單元90- 104之一內(nèi)的執(zhí)行過(guò)程中,如果有運(yùn)算對(duì)象,指令 從連接到所述執(zhí)行單元的寄存器文件內(nèi)的一個(gè)或多個(gè)體系化的和/或重 命名寄存器接收運(yùn)算對(duì)象。當(dāng)執(zhí)行CR修改指令或依賴(lài)于CR的指令時(shí), CRU 90和BEU 92訪問(wèn)CR寄存器文件80,所述CR寄存器文件80在 優(yōu)選的實(shí)施例中包括一個(gè)CR寄存器和多個(gè)CR重命名寄存器,所述CR 重命名寄存器分別包括多個(gè)由一位或多位構(gòu)成的不同字段。這些字段中 有分別表明值(典型地是指令的結(jié)果或運(yùn)算對(duì)象)是小于零,大于零還 是等于零的LT, GT和EQ字段。鏈接和計(jì)數(shù)寄存器(LCR)的寄存器 文件82包括計(jì)數(shù)寄存器(CTR),鏈接寄存器(LR)和其各自的重命名 寄存器,BEU 92也可通過(guò)所述這些寄存器解析條件分支以獲得路徑地 址。通用寄存器文件(GPR) 84和86是同步的相同的寄存器文件,其 存儲(chǔ)由FXU 94和100以及LSU 96和98訪問(wèn)和產(chǎn)生的定點(diǎn)和整數(shù)值。 浮點(diǎn)寄存器文件(FPR) 88象GPR82和GPR86 —樣也可以作為同步寄 存器的復(fù)制集合實(shí)施,其包括FPU 102和104執(zhí)行浮點(diǎn)指令和LSU 96 和98執(zhí)行浮點(diǎn)加載指令得到的浮點(diǎn)值。
在執(zhí)行單元完成指令執(zhí)行后,執(zhí)行過(guò)程通知GCT38, GCT38按照 程序順序?yàn)橹噶钔瓿芍贫〞r(shí)間表。為完成CRU 90,FXU 94和100或FPU
102和104執(zhí)行的指令,GCT38向適當(dāng)?shù)挠成淦靼l(fā)出信號(hào),所述映射器 設(shè)置一個(gè)指示以表明分配給指令的所述寄存器文件的寄存器現(xiàn)在包含所 述寄存器的體系化狀態(tài)。隨后從所述發(fā)送隊(duì)列移除所述指令,并且一旦 指令群組內(nèi)的所有指令都已完成,即從GCT 38中移除所述指令。但其 他類(lèi)型的指令以不同的方式完成。
當(dāng)BEU 92解析條件分支指令并且確定應(yīng)當(dāng)選擇的執(zhí)行路徑的路徑 地址時(shí),將所述路徑地址與BPU 36預(yù)測(cè)的推測(cè)性的路徑地址相比較。 如果所述路徑地址匹配,如果需要,BPU36更新其預(yù)測(cè)裝置。但是如果 計(jì)算所得的^各徑地址與所述預(yù)測(cè)地址不匹配,BEU92將正確地路徑地址 ^是供給IFAR30,并且BPU36按照下文進(jìn)一步所述更新其預(yù)測(cè)裝置。在 上述兩種情況中,隨后都可以從BIQ64移除所述分支指令,并且當(dāng)同一 指令群組內(nèi)的所有其他指令都已經(jīng)完成時(shí),從GCT 38移除所述分支指 令。
在執(zhí)行加載指令后(包括加載-存儲(chǔ)指令),通過(guò)執(zhí)行所述加載指令 計(jì)算得到的有效地址被數(shù)據(jù)ERAT (未示出)翻譯成真實(shí)地址并且隨后 作為請(qǐng)求地址提供給L1 D高速緩存20。此時(shí),所述加載操作被從FXIQ 66或68移除并且;f皮;改入加載數(shù)據(jù)隊(duì)列(LDQ) 114直至所指示的加載 被執(zhí)行為止。如果所述請(qǐng)求地址在U D高速緩存20中未命中,所述請(qǐng) 求地址被放入加載未命中隊(duì)列(LMQ) 116,被請(qǐng)求的數(shù)據(jù)通過(guò)所述隊(duì) 列從L2高速緩存16獲取,并且如果所述獲取失敗,從另一個(gè)處理器 IO或從系統(tǒng)存儲(chǔ)器12中獲取。
類(lèi)似地使用存儲(chǔ)隊(duì)列(STQ) 110完成存儲(chǔ)指令(包括存儲(chǔ)條件指 令),其中在執(zhí)行所述存儲(chǔ)指令后將用于存儲(chǔ)的有效地址加載到所述存儲(chǔ) 隊(duì)列110。在對(duì)目標(biāo)地址進(jìn)行有效-真實(shí)翻譯后,數(shù)據(jù)從STQ110存儲(chǔ)到 Ll D高速緩存20和L2高速緩存16之一或兩者中。
現(xiàn)在參照?qǐng)D2,圖2是圖1的分支預(yù)測(cè)單元36關(guān)于指令排序邏輯13 的其他組件的示例性實(shí)施例的更為詳細(xì)的方框圖。在所示的實(shí)施例中, 分支預(yù)測(cè)單元36包括指令解碼器128,分支方向預(yù)測(cè)電路如分支歷史表 (BHT) 130,以及分支目標(biāo)地址預(yù)測(cè)電-各如分支目標(biāo)地址高速緩存(BTAC) 132。在本發(fā)明的替代性實(shí)施例中,所述分支方向預(yù)測(cè)電路可 以使用靜態(tài)分支預(yù)測(cè)電路或兩級(jí)動(dòng)態(tài)分支預(yù)測(cè)電路實(shí)施。
指令解碼器128連接用于當(dāng)從L1 I高速緩存18中提取每個(gè)高速緩 存線(xiàn)指令并放入取指令緩存器40時(shí),接收所述每個(gè)高速緩存線(xiàn)指令。指 令解碼器128掃描每個(gè)高速緩存線(xiàn)指令的分支指令并且響應(yīng)于探測(cè)到分 支指令,將所述分支指令傳送到所述分支方向預(yù)測(cè)電路(例如BHT130) 用于方向預(yù)測(cè)。如BHT 130和取指令緩沖器40之間的連接進(jìn)一步所指 示的,在BTAC 132沿BHT 130預(yù)測(cè)為未選取的路徑調(diào)用提取過(guò)程的情 況下,BHT130從取指令緩沖器40中取消不正確的路徑中的指令并沿順 序路徑重定向提取過(guò)程。
如圖所示,BTAC 132包括過(guò)濾緩沖器140,連接到過(guò)濾緩沖器140 的分支目標(biāo)緩沖器(BTB) 150,以及連接到BTB 150的犧牲高速緩存 160。過(guò)濾緩沖器140包括多個(gè)條目142,每個(gè)所述條目包括用于存儲(chǔ)至 少分支指令地址(BIA)標(biāo)記部分的BIA字段144,用于存儲(chǔ)分支目標(biāo) 地址(BTA)的BTA字段146,以及表明所述BTA正確性的置信度的 置信(C)字段148。 BTB 150類(lèi)似地包括多個(gè)條目152。在一個(gè)優(yōu)選的 實(shí)施例中,BTB150的條目152數(shù)量限于相對(duì)較小的數(shù)量(例如8或16) 以使實(shí)施BTAC 132需要的片區(qū)最小化。BTB150的每個(gè)條目152包括 用于存儲(chǔ)至少BIA標(biāo)記部分的分支指令地址(BIA)字段154,用于存 儲(chǔ)BTA的分支目標(biāo)地址(BTA)字段156,以及表明反映BTA字段156 中所述BTA的歷史準(zhǔn)確性的分?jǐn)?shù)的分?jǐn)?shù)(S)字段158。犧牲高速緩存 160緩沖/人BTB 150驅(qū)逐的條目152的內(nèi)容,犧牲高速緩存160包括多 個(gè)條目162,所述條目的格式與BTB 150的條目152的格式類(lèi)似,并且 包括BIA字段164, BTA字段166以及分?jǐn)?shù)字段168。
在操作中,過(guò)濾緩沖器140捕獲并緩存"候選"分支目標(biāo)預(yù)測(cè)用于 可能地包含到BTB 150中。如果所述候選分支預(yù)測(cè)的準(zhǔn)確性的置信度足 夠高,如相關(guān)聯(lián)的置信字段148所指示的,則所述條目被從過(guò)濾緩沖器 140傳輸?shù)紹TB 150用于隨后在作出分支目標(biāo)地址預(yù)測(cè)時(shí)使用。如上文 所述,BTB 150只有有限數(shù)量的條目152。相應(yīng)地,隨著新條目152進(jìn) 入BTB150,其他條目152從BTB 150中被驅(qū)逐并且放到犧牲高速緩存 160中作為犧牲高速緩存條目162。犧牲高速緩存條目162可以例如響應(yīng) 于所述犧牲高速緩存條目162的再次使用而回到BTB 150,或者當(dāng)4皮后 續(xù)被驅(qū)逐的BTB條目152替代時(shí)被丟棄。圖3和圖4A-4C示出BTAC 132 工作的更多細(xì)節(jié)。
現(xiàn)在看圖3,圖3示出了根據(jù)本發(fā)明BTAC 132產(chǎn)生取指令地址的 示例性方法的高級(jí)邏輯流程圖。圖示過(guò)程始于方框300并且隨后進(jìn)入方 框302,其示出了隨著取指令地址從IFAR30被傳輸?shù)絃I I高速緩存18 以發(fā)起取指令,BTAC 132接收所述取指令地址。響應(yīng)于接收所述取指 令地址,BTAC 132 (可能并行地)詢(xún)問(wèn)BTB 150和犧牲高速緩存160 以確定所述取指令地址是否在BTB 150和犧牲高速緩存160中命中,也 就是說(shuō),是否所述取指令地址與條目152, 162的字段154, 164所包含 的任何BIA (或其標(biāo)記部分)匹配(方框304和306)。如果不匹配,過(guò) 程進(jìn)入下述方框308。然而,響應(yīng)于在方框304或方框306確定所述取 指令地址在BTB 150或犧牲高速緩存160中命中,在某些實(shí)施例中過(guò)程 進(jìn)入下述方框310,并且在替代性實(shí)施例中進(jìn)入可選的方框307。
方框307示出了確定所述匹配條目152或162的分?jǐn)?shù)字段158是否 超過(guò)預(yù)定的閾值(例如1 ),該閾值決定了是否所述匹配條目中的所述分 支目標(biāo)地址預(yù)測(cè)的準(zhǔn)確性足夠高,可以保證其用于重定向取指令。可以 理解,可以對(duì)BTB 150和160應(yīng)用不同的預(yù)測(cè)閾值。響應(yīng)于方框307作 出否定的確定,所述過(guò)程進(jìn)入下述方框308。然而,如果BTAC 132在 方框307確定所述匹配條目152的分?jǐn)?shù)字段158指示的分?jǐn)?shù)超過(guò)了所述 預(yù)測(cè)的閾值,過(guò)程進(jìn)入方框310,其中BTAC 132將所述BTA從所述匹 配條目152, 162的BTA字段156, 166提供給IFAR 30以沿著與所述 BIA相關(guān)聯(lián)的選取路徑發(fā)起提取過(guò)程。
現(xiàn)在參照方框308,響應(yīng)于方框304或306的否定的確定或響應(yīng)于 可選的方框307的否定的確定,IFAR 30選4奪下一個(gè)指令高速緩存線(xiàn)的 序列地址作為下一個(gè)取指令地址,如方框308所示。在方框308或方框 310后,圖3示出的過(guò)程終止直至BTAC 132接收到下一個(gè)取指令地址 為止。
參照?qǐng)D4A-4C,圖4A-4C共同示出了根據(jù)本發(fā)明更新BTAC 132 中的分支目標(biāo)地址預(yù)測(cè)的示例性方法的高級(jí)邏輯流程圖。所述過(guò)程開(kāi)始 于圖4A的方框400并且隨后進(jìn)入方框402,其中BTAC 132從BEU 92 接收BIA標(biāo)記以及被執(zhí)行的分支指令的BTA。響應(yīng)于接收到所述BIA 標(biāo)記和BTA,如方框404和方框420所示,BTAC 132(可能并行地) 詢(xún)問(wèn)BTB 150和犧牲高速緩存160以確定是否所述BIA標(biāo)記在BTB 150 或犧牲高速緩存160中命中,也就是說(shuō),是否所述BIA標(biāo)記與條目152, 162的字段154, 164中包含的任何BIA (或其標(biāo)記部分)匹配。響應(yīng)于 方框404確定BEU 92所提供的所述BIA標(biāo)記在BIB 150的條目152中 命中,BTAC 132在方框406進(jìn)一步確定是否所述匹配條目152的BTA 字段156規(guī)定的BTA與BEU 92返回的BTA匹配。如果匹配,如方框 408所示,BTAC 132提高所述匹配條目152的分?jǐn)?shù)字段158所指示的分 數(shù),以表明所述匹配條目152所包含的分支目標(biāo)地址預(yù)測(cè)正確的確定性 提高。例如,在分?jǐn)?shù)字段158作為飽和2位計(jì)數(shù)器實(shí)施的示例性實(shí)施例 中,如果分?jǐn)?shù)字段158小于最大值3,則所述分?jǐn)?shù)字段158增加1。此后 所述過(guò)程在方框426結(jié)束。
回到方框406,響應(yīng)于確定所述匹配條目152的BTA字段156*見(jiàn)定 的BTA與BEU 92返回的BTA不匹配,如方框410所示,降低所述匹 配條目152的分?jǐn)?shù)字段158所指示的分?jǐn)?shù),以表明所述匹配條目152所 包含的分支目標(biāo)地址預(yù)測(cè)正確的確定性降低。例如,在分?jǐn)?shù)字段158作 為飽和2位計(jì)數(shù)器實(shí)施的示例性實(shí)施例中,如果分?jǐn)?shù)字段158的值大于 最小值0,則所述分?jǐn)?shù)字段158減1。替代地,無(wú)論所述分?jǐn)?shù)字段158 當(dāng)前的值是多少,可以簡(jiǎn)單地將所述分?jǐn)?shù)字段158的值減為最小值0。 并且,分?jǐn)?shù)字段158還可以根據(jù)BEU 92所報(bào)告的所述分支的方向減不 同的量。
方框412示出了,在方框410降低所述分?jǐn)?shù)后,BTAC 132確定是 否所述分?jǐn)?shù)字段158所指示的分?jǐn)?shù)降至低于為BTB 150預(yù)定的最小閾 值。如果否,所述過(guò)程在方框426結(jié)束。然而,如果所述分?jǐn)?shù)字段158
所指示的分?jǐn)?shù)已經(jīng)降至低于預(yù)定的最小閾值,在方框414, BTAC132檢 查是否BEU 92報(bào)告所述分支已經(jīng)被選取。如果所述分支未被選取,如 方框416所示,BTAC 132從BTB 150移除條目152,并且所述過(guò)程在 方框426結(jié)束。如果BTAC 132在方框414確定BEU 92 ^^告所述分支 被選取,則BTAC 132使用正確的BTA更新所述條目152的BTA字段 156。然后過(guò)程在方框426處結(jié)束。
再回到方框420,響應(yīng)于確定BEU 92所提供的所述BIA標(biāo)記在犧 牲高速緩存160的條目162中命中,所述過(guò)程進(jìn)入方框424,其描述了 BTAC 132更新?tīng)奚咚倬彺?60,如下文參照?qǐng)D4C進(jìn)一步描述那樣。 然而,如果BTAC 132在方框420確定BEU 92所提供的所述BIA標(biāo)記 在BTB 150和犧牲高速緩存160中都未命中,如下文參照?qǐng)D4B更為詳 細(xì)的描述那樣,BTAC 132在方框422更新過(guò)濾緩沖器140。在方框422 或方框424后,所述過(guò)程在方框426結(jié)束。
現(xiàn)在參照?qǐng)D4B,圖4B更為詳細(xì)地示出了圖4A的方?jīng)_匡424更新?tīng)?牲高速緩存160的過(guò)程。響應(yīng)于在圖4A的方框420中確定BEU 92所提 供的所述BIA標(biāo)記在犧牲高速緩存160的條目162中命中,圖4B所示 的過(guò)程開(kāi)始于方框430。所述過(guò)程隨后進(jìn)入方框432, BTAC132確定所 述匹配條目162的BTA字段166所規(guī)定的BTA是否與BEU 92所返回 的BTA匹配。如果否,意味著所述匹配條目162所包含的分支目標(biāo)地址 預(yù)測(cè)不正確,BTAC 132從犧牲高速緩存160中移除所述匹配條目162。 隨后所述過(guò)程在方框446結(jié)束。
回到方框432,響應(yīng)于確定所述匹配條目162的BTA字段166所規(guī) 定的BTA與BEU 92所返回的BTA匹配,BTAC 132在方框436提高所 述匹配條目162的分?jǐn)?shù)字段168所指示的分?jǐn)?shù)。例如,在分?jǐn)?shù)字段168 作為飽和2位計(jì)數(shù)器實(shí)施的示例性實(shí)施例中,如果分?jǐn)?shù)字段168小于最 大值3,則所述分?jǐn)?shù)字段168增加1。增加的分?jǐn)?shù)表明所述匹配條目162 所包含的分支目標(biāo)地址預(yù)測(cè)正確的確定性提高。在方框436之后,BTAC 132在方框440確定是否所述分?jǐn)?shù)字段168所指示的分?jǐn)?shù)高于應(yīng)用于犧 牲高速緩存160的升級(jí)閾值,例如,BTB 150中的任何分?jǐn)?shù)字段158當(dāng)
前所指示的最低分?jǐn)?shù)。響應(yīng)于方框440做出否定的確定,所述進(jìn)程簡(jiǎn)單 地在方框446結(jié)束。另一方面,如果所述匹配條目162的分?jǐn)?shù)字段168 所指示的分?jǐn)?shù)高于所述升級(jí)閾值,所述過(guò)程進(jìn)入方框442。
在方框442, BTAC 132在BTB 150中選擇要驅(qū)逐的條目152。在一 個(gè)示例性實(shí)施例中,BTB150中的所述條目152從使用預(yù)定的替換算法 如最近最少使用(LRU)或輪轉(zhuǎn)法標(biāo)記為要替換(通過(guò)分?jǐn)?shù)字段158或 其他方式)的條目152中選4奪。在利用分?jǐn)?shù)將條目152標(biāo)記為可用于替 換的實(shí)施例中,所述替換算法優(yōu)選地首先從當(dāng)前分?jǐn)?shù)最低的條目152的 子集中選擇,或者如果所述子集為空,從有較高分?jǐn)?shù)值的條目152的更 為廣泛的集合中選擇。在方框442之后,BTAC 132隨后在方框444用 犧牲高速緩存160中的所述匹配條目162調(diào)換BTB 150中被選中的條目 152。在這種情況下,所述分支目標(biāo)地址預(yù)測(cè)的確定性足夠高,使其可以 存儲(chǔ)在BTB 150中。在方框444后,所述過(guò)程在方框446結(jié)束。
現(xiàn)在參照?qǐng)D4C,圖4C更為詳細(xì)地示出了圖4A的方框422所述的 更新過(guò)濾緩沖器140的過(guò)程。響應(yīng)于圖4A的方框420確定BEU 92所提 供的BIA標(biāo)記在BTB 150和犧牲高速緩存160中均未命中,圖4C所示 的過(guò)程開(kāi)始于方框450。隨后所述過(guò)程進(jìn)入方框452, BTAC132確定是 否從BEU 92接收的所述BIA標(biāo)記在過(guò)濾緩沖器140中命中,也就是說(shuō), 是否所述BIA標(biāo)記與條目142的字段144所包含的任何BIA (或其標(biāo)記 部分)匹配。如果否,BTAC 132在方框454進(jìn)一步確定是否BEU92報(bào) 告所述分支被選取。如果是,BTAC 132在過(guò)濾緩沖器140中分配一個(gè) 新條目并且用BEU92提供的所述BIA標(biāo)記和BTA填充所述新條目142。 可以理解,方框456的分配新條目142可能涉及丟棄現(xiàn)有條目,可以利 用例如LRU或輪轉(zhuǎn)替換算法選擇所述丟棄的條目。在方框456之后或方 框454做出否定的確定后,所述過(guò)程在方框474結(jié)束。
回到方框452,響應(yīng)于確定BEU 92提供的所述BIA標(biāo)記在過(guò)濾緩 沖器140的條目142中命中,BTAC 132在方框460進(jìn)一步確定是否所 述匹配條目142的BTA字段146所規(guī)定的BTA與BEU 92返回的BTA 匹配。如果否,BTAC 132在方框461檢查BEU 92所報(bào)告的所述分支的
處理情況(即選取或未選取)。如果所述分支被選取,BTAC 132用BEU 92提供的所述BTA更新BTA字段146并且重置置信度字段148。例如, 在置信度字段作為飽和2位計(jì)數(shù)器實(shí)施的示例性實(shí)施例中,置信度字段 148被重置為0。此后所述過(guò)程在方框474結(jié)束。如果BTAC 132在方框 461確定BEU 92報(bào)告所述分支為未被選取,BTAC 132從過(guò)濾緩沖器140 中移除所述條目142(方框463 ),并且所述過(guò)程在方框474結(jié)束。
然而如果BTAC 132在方框460確定所述匹配條目142的BTA字賴(lài): 146所規(guī)定的BTA與BEU 92返回的BTA匹配,BTAC 132在方框464 提高所述匹配條目142的置信度字段148所指示的值,以表明所述匹配 條目142所包含的分支目標(biāo)地址預(yù)測(cè)正確的置信度提高。例如,在置信 度字段148作為飽和2位計(jì)數(shù)器實(shí)施的示例性實(shí)施例中,如果置信度字 段148小于最大值3,則所述置信度字段148增加1。
在方框464之后,BTAC 132在方框466確定置信度字段148所指 示的值是否超過(guò)應(yīng)用于過(guò)濾緩沖器140的升級(jí)閾值(例如2 )。如果否, 所述過(guò)程在方框474結(jié)束。另一方面,如果所述匹配條目142的置信度 字段148所指示的值超過(guò)所述升級(jí)閾值,所述過(guò)程進(jìn)入方框470。在方 框470, BTAC 132選擇BTB 150的條目152以及犧牲高速緩存160中 要驅(qū)逐的條目162,并且用BTB 150中所選擇的條目152替換在犧牲高 速緩存160中所述選擇的條目162 。在一個(gè)示例性實(shí)施例中,BTB 150 中的所述條目152從使用預(yù)定的替換算法如LRU或輪轉(zhuǎn)法標(biāo)記為要替換 (由分?jǐn)?shù)字段158或其他方式)的條目152中選擇。類(lèi)似地,可以利用 LRU或輪轉(zhuǎn)替換算法選擇犧牲高速緩存160中要驅(qū)逐的條目162。隨后 在方框472, BTAC 132將過(guò)濾緩沖器140中的所述匹配條目142傳送到 BTB 150的空槽位并且初始化其分?jǐn)?shù)字段158。在這種情況下,所述分 支目標(biāo)地址預(yù)測(cè)準(zhǔn)確性的置信度足夠高,使其可以存儲(chǔ)在BTB 150中并 且使用所述分支目標(biāo)地址預(yù)測(cè)產(chǎn)生未來(lái)取指令地址。
根據(jù)本發(fā)明至少一部分實(shí)施例,在方框472, BTAC 132對(duì)BTB 150 的條目152的分?jǐn)?shù)字段158的初始化的分?jǐn)?shù)根據(jù)相關(guān)聯(lián)的分支指令類(lèi)型 而不同,在這樣的實(shí)施例中由BEU 92向BTAC 132指示所述類(lèi)型。例
如,在上述分?jǐn)?shù)字段148作為飽和2位計(jì)數(shù)器實(shí)施的示例性實(shí)施例中, BTAC 132可以將具有固定分支目標(biāo)地址的非條件分支的分?jǐn)?shù)字段158 初始化為值3,將具有固定分支目標(biāo)地址的條件分支的分?jǐn)?shù)字段158初 始化為值2,將具有可變分支目標(biāo)地址的非條件分支的分?jǐn)?shù)字段158初 始化為值1,將具有可變分支目標(biāo)地址的條件分支的分?jǐn)?shù)字段158初始 化為值0。在本發(fā)明的其他實(shí)施例中,每個(gè)新條目152的分?jǐn)?shù)字段158 可以簡(jiǎn)單地初始化為0。在另一些實(shí)施例中,每個(gè)新條目152的分^t字 段158可以初始化為被用于填充BTB 150的過(guò)濾緩沖器140的條目142 的置信度字^L 148的值。在方框472后,圖4C所示的過(guò)程在方框474 結(jié)束。
如上文所述,本發(fā)明提供了使用改進(jìn)的分支目標(biāo)地址高速緩存 (BTAC)產(chǎn)生分支目標(biāo)地址預(yù)測(cè)的數(shù)據(jù)處理系統(tǒng),處理器和數(shù)據(jù)處理 方法。根據(jù)本發(fā)明,在BTAC中將過(guò)濾緩沖器或犧牲高速緩存之一或兩 者與分支目標(biāo)緩沖器(BTB)聯(lián)合使用。所述犧牲高速緩存減少了為了
所述過(guò)濾緩沖器減少了很少選取的分支的分支目標(biāo)地址預(yù)測(cè)對(duì)BTB的 污染。BTB中的每個(gè)條目?jī)?yōu)選地有相關(guān)聯(lián)的分?jǐn)?shù)表明所述條目提供的分 支目標(biāo)地址預(yù)測(cè)的準(zhǔn)確性。在選擇從BTB中驅(qū)逐的條目時(shí)可以有利地考 慮所述分?jǐn)?shù)。
盡管特別地參照一個(gè)優(yōu)選實(shí)施例描述了本發(fā)明,然而本領(lǐng)域的普通 技術(shù)人員可以理解,在不背離本發(fā)明主旨和范圍的情況下可以在形式和 細(xì)節(jié)方面對(duì)本發(fā)明做出各種修改。
權(quán)利要求
1.一種處理器,包括至少一個(gè)執(zhí)行指令的執(zhí)行單元;以及連接到所述至少一個(gè)執(zhí)行單元的指令排序邏輯,其從存儲(chǔ)器系統(tǒng)取指令以供所述至少一個(gè)執(zhí)行單元執(zhí)行,所述指令排序邏輯包括輸出預(yù)測(cè)的分支目標(biāo)地址以作為取指令地址使用的分支目標(biāo)地址高速緩存,所述分支目標(biāo)地址高速緩存包括包含多個(gè)條目的分支目標(biāo)緩沖器,每個(gè)所述條目將分支指令地址的至少一部分與預(yù)測(cè)的分支目標(biāo)地址相關(guān)聯(lián),其中所述分支目標(biāo)地址高速緩存使用所述分支指令地址的至少一部分訪問(wèn)所述分支目標(biāo)緩沖器,以獲取預(yù)測(cè)的分支目標(biāo)地址作為取指令地址使用;以及連接到所述分支目標(biāo)緩沖器的過(guò)濾緩沖器,其緩沖一個(gè)或多個(gè)候選分支目標(biāo)地址預(yù)測(cè),用于可能包括到所述分支目標(biāo)緩沖器中,所述過(guò)濾緩沖器將各個(gè)表明預(yù)測(cè)準(zhǔn)確性的置信度指示與每個(gè)所述候選分支目標(biāo)地址預(yù)測(cè)相關(guān)聯(lián),其中所述分支目標(biāo)地址高速緩存根據(jù)候選分支目標(biāo)地址預(yù)測(cè)各自的置信度指示將所述候選分支目標(biāo)地址預(yù)測(cè)從所述過(guò)濾緩沖器推進(jìn)到所述分支目標(biāo)緩沖器。
2. 根據(jù)權(quán)利要求l的處理器,其中所述分支目標(biāo)緩沖器中的每個(gè)條目都有各自相關(guān)聯(lián)的分?jǐn)?shù);并且 所述分支目標(biāo)地址高速緩存根據(jù)所述多個(gè)條目各自的分?jǐn)?shù)將替代 策略應(yīng)用到所述多個(gè)條目。
3. 根據(jù)權(quán)利要求l的處理器,其中所述分支目標(biāo)緩沖器中的每個(gè)條目都有各自相關(guān)聯(lián)的分?jǐn)?shù);并且 所述分支目標(biāo)地址高速緩存根據(jù)由包含在所述多個(gè)條目中的一個(gè)條目中的所述分支指令地址的至少一部分確定的分支指令類(lèi)型,將該條目的分?jǐn)?shù)初始化為多個(gè)可能分?jǐn)?shù)中的一個(gè)。
4. 根據(jù)權(quán)利要求3的處理器,其中所述分支指令類(lèi)型是包括條件 分支指令和非條件分支指令的集合中的 一種。
5. 根據(jù)權(quán)利要求3的處理器,其中所述分支指令類(lèi)型是包括具有 固定分支目標(biāo)地址的分支指令和具有可變分支目標(biāo)地址的分支指令的 集合中的一種。
6. 根據(jù)權(quán)利要求l的處理器,其中所述分支目標(biāo)緩沖器中的每個(gè)條目都有各自相關(guān)聯(lián)的分?jǐn)?shù);并且 響應(yīng)于接收到前一個(gè)取指令地址,所述指令排序邏輯使用所述前一個(gè)取指令地址訪問(wèn)所述分支目標(biāo)緩沖器,并且如果在所述分支目標(biāo)緩沖 器中發(fā)現(xiàn)匹配條目,只有當(dāng)所述匹配條目的分?jǐn)?shù)足夠時(shí),才使用所述匹 配條目的預(yù)測(cè)的分支目標(biāo)地址作為下一個(gè)取指令地址。
7. 根據(jù)權(quán)利要求l的處理器,其中 所述至少一個(gè)執(zhí)行單元包括執(zhí)行分支指令的分支執(zhí)行單元; 所述分支執(zhí)行單元向所述指令排序邏輯報(bào)告被執(zhí)行的分支指令的結(jié)果;并且所述分支目標(biāo)地址高速緩存根據(jù)所述報(bào)告的被執(zhí)行的分支指令的 結(jié)果在所述過(guò)濾緩沖器中增加新的候選分支目標(biāo)地址預(yù)測(cè)。
8. 根據(jù)權(quán)利要求1的處理器,所述分支目標(biāo)地址高速緩存進(jìn)一步 包括連接到所述分支目標(biāo)緩沖器的犧牲高速緩存,其中所述犧牲高速緩 存接收并緩存從所述分支目標(biāo)緩沖器驅(qū)逐出的條目。
9. 根據(jù)權(quán)利要求8的處理器,其中所述分支目標(biāo)緩沖器中的每個(gè)條目都有各自相關(guān)聯(lián)的分?jǐn)?shù); 所述犧牲高速緩存中的每個(gè)條目都有各自相關(guān)聯(lián)的分?jǐn)?shù);并且 如果所述犧牲高速緩存中的條目關(guān)聯(lián)的分?jǐn)?shù)好于所述分支目標(biāo)緩 沖器中多個(gè)條目之一關(guān)聯(lián)的分?jǐn)?shù),則所述分支目標(biāo)地址高速緩存將所述 犧牲高速緩存中的所述條目傳輸回所述分支目標(biāo)緩沖器。
10. 根據(jù)權(quán)利要求l的處理器,其中 所述存儲(chǔ)器系統(tǒng)包括高速緩沖存儲(chǔ)器; 所述處理器包括所述高速緩沖存儲(chǔ)器;并且 所述指令排序邏輯使用取指令地址并發(fā)地訪問(wèn)所述分支目標(biāo)地址高速緩存和所述高速緩沖存儲(chǔ)器。
11. 一種數(shù)據(jù)處理系統(tǒng),包括 根據(jù)權(quán)利要求1的處理器; 連接到所述處理器的互連;以及 連接到所述互連的存儲(chǔ)器系統(tǒng)。
12. —種在處理器中進(jìn)行數(shù)據(jù)處理的方法,所述處理器包括至少一 個(gè)執(zhí)行單元和包含分支目標(biāo)地址高速緩存的指令排序邏輯,所述分支目 標(biāo)地址高速緩存包括分支目標(biāo)緩沖器和連接到所述分支目標(biāo)緩沖器的 過(guò)濾緩沖器,所述方法包括在所述分支目標(biāo)緩沖器中緩沖多個(gè)條目,每個(gè)所述條目將分支指令 地址的至少一部分與預(yù)測(cè)的分支目標(biāo)地址相關(guān)聯(lián);使用分支指令地址的至少一部分訪問(wèn)所述分支目標(biāo)緩沖器以獲取統(tǒng)作為取指令地址;在所述過(guò)濾緩沖器中緩沖一個(gè)或多個(gè)候選分支目標(biāo)地址預(yù)測(cè),用于 可能包含到所述分支目標(biāo)緩沖器中,所述過(guò)濾緩沖器將各個(gè)表明預(yù)測(cè)準(zhǔn) 確性的置信度指示與每個(gè)所述候選分支目標(biāo)地址預(yù)測(cè)相關(guān)聯(lián);并且根據(jù)候選分支目標(biāo)地址預(yù)測(cè)各自的置信度指示將所述候選分支目 標(biāo)地址預(yù)測(cè)從所述過(guò)濾緩沖器推進(jìn)到所述分支目標(biāo)緩沖器。
13. 根據(jù)權(quán)利要求12的方法,其中所述分支目標(biāo)緩沖器中的每個(gè)條目都有各自相關(guān)聯(lián)的分?jǐn)?shù);并且 所述方法進(jìn)一步包括根據(jù)所述多個(gè)條目各自的分?jǐn)?shù)將替代策略應(yīng) 用到所述多個(gè)條目。
14. 根據(jù)權(quán)利要求12的方法,其中所述分支目標(biāo)緩沖器中的每個(gè)條目都有各自相關(guān)聯(lián)的分?jǐn)?shù);并且 所述方法進(jìn)一步包括根據(jù)由包含在所述多個(gè)條目中的一個(gè)條目中的所述分支指令地址的至少一部分確定的分支指令類(lèi)型,將該條目的分?jǐn)?shù)初始化為多個(gè)可能分?jǐn)?shù)中的一個(gè)。
15. 根據(jù)權(quán)利要求14的方法,其中所述分支指令類(lèi)型是包括條件 分支指令和非條件分支指令的集合中的一種。
16. 根據(jù)權(quán)利要求14的方法,其中所述分支指令類(lèi)型是包括具有 固定分支目標(biāo)地址的分支指令和具有可變分支目標(biāo)地址的分支指令的 集合中的一種。
17. 根據(jù)權(quán)利要求12的方法,其中所述方法進(jìn)一步包括響應(yīng)于接收到前一個(gè)取指令地址,所述指令排序邏輯使用所述 前一個(gè)取指令地址訪問(wèn)所述分支目標(biāo)緩沖器并且如果在所述分支目標(biāo)緩沖器中發(fā)現(xiàn)匹配條目,只有當(dāng)所述匹配 條目的分?jǐn)?shù)足夠時(shí),才使用所述匹配條目的預(yù)測(cè)的分支目標(biāo)地址作為下 一個(gè)耳又指令地址。
18. 根據(jù)權(quán)利要求12的方法,其中 所述至少一個(gè)執(zhí)行單元包括執(zhí)行分支指令的分支執(zhí)行單元; 所述方法進(jìn)一步包括所述分支執(zhí)行單元向所述指令排序邏輯報(bào)告被執(zhí)行的分支指 令的結(jié)果;并且所述分支目標(biāo)地址高速緩存根據(jù)所述報(bào)告的被執(zhí)行的分支指 令的結(jié)果在所述過(guò)濾緩沖器中增加新的候選分支目標(biāo)地址預(yù)測(cè)。
19. 根據(jù)權(quán)利要求12的方法,其中所述分支目標(biāo)地址高速緩存進(jìn)一步包括連接到所述分支目標(biāo)緩沖 器的犧牲高速緩存,并且所述方法進(jìn)一步包括犧牲高速緩存接收并緩存從所述分支目標(biāo)緩 沖器驅(qū)逐出的條目。
20. 根據(jù)權(quán)利要求19的方法,其中所述分支目標(biāo)緩沖器中的每個(gè)條目都有各自相關(guān)聯(lián)的分?jǐn)?shù); 所述犧牲高速緩存中的每個(gè)條目都有各自相關(guān)聯(lián)的分?jǐn)?shù);并且 所述方法進(jìn)一步包括如果所述犧牲高速緩存中的條目相關(guān)聯(lián)的分?jǐn)?shù)好于所述分支 目標(biāo)緩沖器中多個(gè)條目之一相關(guān)聯(lián)的分?jǐn)?shù),則所述分支目標(biāo)地址高速緩存將所述犧牲高速緩存中的所述條目傳輸回所述分支目標(biāo)緩沖器。
21.根據(jù)權(quán)利要求l的處理器,其中 所述存儲(chǔ)器系統(tǒng)包括高速緩沖存儲(chǔ)器;所述方法進(jìn)一步包括使用所述取指令地址并發(fā)地訪問(wèn)所述分支目 標(biāo)地址高速緩存和所述高速緩沖存儲(chǔ)器。
全文摘要
本發(fā)明公開(kāi)了一種數(shù)據(jù)處理系統(tǒng)、處理器和進(jìn)行數(shù)據(jù)處理的方法。該處理器包括執(zhí)行單元和指令排序邏輯。指令排序邏輯包括具有分支目標(biāo)緩沖器的分支目標(biāo)地址高速緩存,分支目標(biāo)緩沖器包含多個(gè)條目,每個(gè)條目將分支指令地址的至少一部分與預(yù)測(cè)的分支目標(biāo)地址相關(guān)聯(lián)。分支目標(biāo)地址高速緩存使用分支指令地址訪問(wèn)分支目標(biāo)緩沖器,以獲取預(yù)測(cè)的分支目標(biāo)地址作為取指令地址使用。分支目標(biāo)地址高速緩存也包括緩沖一個(gè)或多個(gè)候選分支目標(biāo)地址預(yù)測(cè)的過(guò)濾緩沖器。過(guò)濾緩沖器將各個(gè)表明預(yù)測(cè)準(zhǔn)確性的置信度指示與每個(gè)候選分支目標(biāo)地址預(yù)測(cè)相關(guān)聯(lián)。分支目標(biāo)地址高速緩存根據(jù)候選分支目標(biāo)地址預(yù)測(cè)各自的置信度指示將其從過(guò)濾緩沖器推進(jìn)到分支目標(biāo)緩沖器。
文檔編號(hào)G06F9/38GK101187863SQ200710192759
公開(kāi)日2008年5月28日 申請(qǐng)日期2007年11月16日 優(yōu)先權(quán)日2006年11月17日
發(fā)明者B·辛哈羅伊, D·R·洛根, J·P·布拉德福德, R·J·艾克邁耶, R·W·多英格, W·E·斯佩特, W·R·艾-埃薩懷, 張立新 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司