專(zhuān)利名稱(chēng):基于區(qū)塊的分支目標(biāo)地址高速緩沖存儲(chǔ)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及處理器的領(lǐng)域,且明確地說(shuō),涉及基于區(qū)塊的分支目標(biāo)地址高速 緩沖存儲(chǔ)器。
微處理器在各種各樣的應(yīng)用中執(zhí)行計(jì)算任務(wù)。改進(jìn)處理器性能是設(shè)計(jì)目標(biāo),以通過(guò) 經(jīng)由增強(qiáng)型軟件實(shí)現(xiàn)更快速的操作和/或增加的功能性來(lái)推動(dòng)產(chǎn)品改進(jìn)。在常見(jiàn)的嵌入式 應(yīng)用(例如便攜式電子裝置)中,節(jié)省功率和減小芯片尺寸也是處理器設(shè)計(jì)和實(shí)施中的 重要目標(biāo)。
常見(jiàn)的現(xiàn)代處理器采用管線式結(jié)構(gòu),其中每一者具有多個(gè)執(zhí)行步驟的連續(xù)指令在執(zhí) 行中是重疊的。此利用連續(xù)指令流中的指令之間的并行性的能力有助于改進(jìn)處理器性 能。在理想條件下目.在使每一管道級(jí)在一個(gè)循環(huán)中完成并隨后進(jìn)行填充管線的簡(jiǎn)單初始 過(guò)程的處理器中,指令可在每個(gè)循環(huán)內(nèi)完成執(zhí)行。
由于多種因素,包括指令之間的數(shù)據(jù)相依性(數(shù)據(jù)冒險(xiǎn))、例如分支等控制相依性 (控制冒險(xiǎn))、處理器資源分配沖突(結(jié)構(gòu)冒險(xiǎn))、中斷、高速緩沖存儲(chǔ)器未中等,所述 理想條件在實(shí)踐中即使能實(shí)現(xiàn)也很少能實(shí)現(xiàn)。處理器設(shè)計(jì)的主要目標(biāo)是避免這些冒險(xiǎn)和 使管線保持"滿"。
現(xiàn)實(shí)程序可包括分支指令,所述分支指令可包含無(wú)條件分支指令或條件分支指令。 經(jīng)常直到在管線深處評(píng)估分支指令時(shí)才知道所述分支指令的實(shí)際分支行為。由于處理器 不知道在分支指令之后將取出哪些指令且直到分支指令評(píng)估時(shí)才會(huì)知道,所以這產(chǎn)生使 管線暫停的控制冒險(xiǎn)。常見(jiàn)的現(xiàn)代處理器采用各種形式的分支預(yù)測(cè),借此在管線早期預(yù) 測(cè)條件分支指令的分支行為和分支目標(biāo)地址。處理器基于分支預(yù)測(cè)而推測(cè)地取出并執(zhí)行 指令,從而使管線保持滿。如果所述預(yù)測(cè)是正確的,則將使性能最大化目.使功率消耗最 小化。在實(shí)際評(píng)估分支指令時(shí),如果分支被錯(cuò)誤預(yù)測(cè),則必須將所推測(cè)地取出的指令從 管線清除,并從正確的分支目標(biāo)地址取出新指令。被錯(cuò)誤預(yù)測(cè)的分支對(duì)處理器性能和功 率消耗具有不利影響。
分支預(yù)測(cè)具有兩個(gè)組成部分條件評(píng)估和分支目標(biāo)地址。條件評(píng)估(當(dāng)然,僅與條件分支指令有關(guān))為二元決策采納所述分支,從而導(dǎo)致執(zhí)行跳至不同的代碼序列;或 者不采納所述分支,在此情況下處理器執(zhí)行跟隨條件分支指令之后的下一連續(xù)指令。分 支目標(biāo)地址(BTA)是針對(duì)無(wú)條件分支指令或評(píng)估為被采納的條件分支指令控制分支所 到達(dá)的地址。 一些分支指令包括指令操作代碼中的BTA,或包括偏移,借此可容易地計(jì) 算BTA。對(duì)于其它分支指令,在處于管線深處之前不會(huì)計(jì)算BTA,且因此必須預(yù)測(cè)BTA。
一種已知的BTA預(yù)測(cè)技術(shù)是分支目標(biāo)地址高速緩沖存儲(chǔ)器(BTAC)?,F(xiàn)有技術(shù)中 所已知的BTAC是用分支指令地址(BIA)索引的完全相關(guān)聯(lián)高速緩沖存儲(chǔ)器,其中每 一數(shù)據(jù)位置(或高速緩沖存儲(chǔ)器"線")含有單個(gè)BTA。當(dāng)分支指令在管線中經(jīng)評(píng)估為 被采納且其實(shí)際BTA經(jīng)計(jì)算時(shí),將BIA和BTA寫(xiě)入至BTAC (例如,在回寫(xiě)管線級(jí)期 間)。當(dāng)取出新指令時(shí),與指令高速緩沖存儲(chǔ)器(或I高速緩沖存儲(chǔ)器)并行地存取BTAC。 如果指令地址在BTAC中命中,則處理器知道所述指令是分支指令(這在從I高速緩沖 存儲(chǔ)器取出的指令被解碼之前)且提供所預(yù)測(cè)的BTA,其是所述分支指令的先前執(zhí)行的 實(shí)際BTA。如果分支預(yù)測(cè)電路預(yù)測(cè)所述分支被采納,則在所預(yù)測(cè)的BTA處開(kāi)始指令取 出。如果預(yù)測(cè)所述分支未被采納,則指令取出繼續(xù)順序進(jìn)行。
請(qǐng)注意,術(shù)語(yǔ)BTAC在此項(xiàng)技術(shù)中還用于表示使飽和計(jì)數(shù)器與BIA相關(guān)聯(lián)的高速緩 沖存儲(chǔ)器,因而僅提供條件評(píng)估預(yù)測(cè)(即,采納或不采納)。這并不是本文中所使用的 此術(shù)語(yǔ)的意義。
高性能處理器可一次從I高速緩沖存儲(chǔ)器取出一個(gè)以上指令。舉例來(lái)說(shuō),可包含(例 如)四個(gè)指令的整個(gè)高速緩沖存儲(chǔ)器線可被取出至指令取出緩沖器中,所述指令取出緩 沖器將所述指令依序饋送至管線中。轉(zhuǎn)讓給本申請(qǐng)案的受讓人且以引用方式并入本文中 的第11/089,072號(hào)專(zhuān)利申請(qǐng)案揭示一種BTAC,其在每一高速緩沖存儲(chǔ)器線中存儲(chǔ)兩個(gè) 或兩個(gè)以上BTA,并索引分支預(yù)測(cè)偏移表(BPOT)以確定所述BTA中的哪一者被釆納 為BTAC命中的所預(yù)測(cè)BTA。BPOT避免具有多個(gè)讀取端口的BTAC的高成本硬件結(jié)構(gòu), 所述讀取端口將共同用于并行地存取多個(gè)BTA。
由于常見(jiàn)的指令群組或區(qū)塊并非完全或甚至通常由分支指令組成,所以為區(qū)塊中的 每一指令提供BTAC中的單獨(dú)BTA存儲(chǔ)浪費(fèi)了 BTAC中的存儲(chǔ)器單元。然而,在區(qū)塊 取出指令時(shí)存取BTAC以確定所述區(qū)塊中的指令是無(wú)條件分支指令還是已被評(píng)估為被采 納的條件分支指令并獲得其BTA對(duì)于分支預(yù)測(cè)且因此對(duì)于處理器性能很有價(jià)值。
發(fā)明內(nèi)容
根據(jù)一個(gè)或一個(gè)以上實(shí)施例,分支目標(biāo)地址高速緩沖存儲(chǔ)器(BTAC)存儲(chǔ)多個(gè)條目,每一條目與具有兩個(gè)或兩個(gè)以上指令的區(qū)塊相關(guān)聯(lián),所述區(qū)塊包括已被評(píng)估為被釆 納的至少一個(gè)分支指令(即,無(wú)條件分支指令,或先前在管線中經(jīng)評(píng)估為被采納的條件 分支指令)。BTAC條目包括被采納分支的分支目標(biāo)地址(BTA),以及指示所述相關(guān)聯(lián) 區(qū)塊內(nèi)的哪個(gè)指令為所述分支的指示符。指令區(qū)塊大小可(但未必)對(duì)應(yīng)于每個(gè)指令高 速緩沖存儲(chǔ)器線的指令數(shù)目。每一BTAC條目是用區(qū)塊中的指令的共同位(即,最低有 效位被截?cái)嗟闹噶畹刂?來(lái)索引的。
一個(gè)實(shí)施例涉及一種在處理器中預(yù)測(cè)條件分支指令的方法。將與具有兩個(gè)或兩個(gè)以 上指令的區(qū)塊(所述區(qū)塊包括已被評(píng)估為被釆納的至少一個(gè)分支指令)相關(guān)聯(lián)的條目存 儲(chǔ)在BTAC中。在取出指令后,存取BTAC以確定對(duì)應(yīng)區(qū)塊中的指令是否為被采納分支 指令。
另一實(shí)施例涉及一種處理器。所述處理器包括存儲(chǔ)多個(gè)條目的BTAC,每一 BTAC 條目與具有兩個(gè)或兩個(gè)以上指令的區(qū)塊相關(guān)聯(lián),所述區(qū)塊包括已被評(píng)估為被釆納的至少 一個(gè)分支指令。所述處理器還包括指令執(zhí)行管線,其操作以在取出一個(gè)或一個(gè)以上指令 后用經(jīng)截?cái)嗟闹噶畹刂匪饕鼴TAC。
圖1為處理器的一個(gè)實(shí)施例的功能方框圖。
圖2為分支目標(biāo)地址高速緩沖存儲(chǔ)器和伴隨電路的一個(gè)實(shí)施例的功能方框圖。
具體實(shí)施例方式
圖1描繪處理器10的功能方框圖。處理器IO根據(jù)控制邏輯11在指令執(zhí)行管線12 中執(zhí)行指令。在一些實(shí)施例中,管線12可為具有多個(gè)并行管線的超標(biāo)量設(shè)計(jì)。管線12 包括經(jīng)組織為數(shù)個(gè)管道級(jí)的各種寄存器或鎖存器16,以及一個(gè)或一個(gè)以上算術(shù)邏輯單元 (ALU) 18。通用寄存器(GPR)堆20提供組成存儲(chǔ)器分級(jí)結(jié)構(gòu)的頂層的寄存器。
管線12從指令高速緩沖存儲(chǔ)器(I高速緩沖存儲(chǔ)器)22取出指令,其中通過(guò)指令側(cè) 轉(zhuǎn)譯后備緩沖器(ITLB) 24管理存儲(chǔ)器地址轉(zhuǎn)譯和準(zhǔn)許。并行地,管線12將經(jīng)截?cái)嗟?指令地址提供給基于區(qū)塊的分支目標(biāo)地址高速緩沖存儲(chǔ)器(BTAC) 25。如果所述經(jīng)截 斷地址在BTAC 25中命中,則BTAC 25可將分支目標(biāo)地址(BTA)提供給I高速緩沖存 儲(chǔ)器22,以立即開(kāi)始從所預(yù)測(cè)的BTA取出指令?;趨^(qū)塊的BTAC25的結(jié)構(gòu)和操作在 下文中加以更全面描述。
從數(shù)據(jù)高速緩沖存儲(chǔ)器(D高速緩沖存儲(chǔ)器)26存取數(shù)據(jù),其中通過(guò)主轉(zhuǎn)譯后備緩沖器(TLB) 28管理存儲(chǔ)器地址轉(zhuǎn)譯和準(zhǔn)許。在各種實(shí)施例中,ITLB可包含TLB的一 部分的復(fù)本?;蛘?,ITLB與TLB可經(jīng)集成。類(lèi)似地,在處理器10的各種實(shí)施例中,I 高速緩沖存儲(chǔ)器22與D高速緩沖存儲(chǔ)器26可經(jīng)集成或統(tǒng)一。I高速緩沖存儲(chǔ)器22和/ 或D高速緩沖存儲(chǔ)器26中的未中致使在存儲(chǔ)器接口 30的控制下對(duì)主(芯片外)存儲(chǔ)器 32進(jìn)行存取。
處理器10可包括輸入/輸出(1/0)接口34,其控制對(duì)各種外圍裝置36、 38的存取。 所屬領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,處理器10的許多變型是可能的。舉例來(lái)說(shuō),處理器10 可包括用于I高速緩沖存儲(chǔ)器22和D高速緩沖存儲(chǔ)器26中的任一者或兩者的二級(jí)(L2) 高速緩沖存儲(chǔ)器。另外,特定實(shí)施例可省略處理器10中所描繪的功能區(qū)塊中的一者或 一者以上。
分支指令在一些代碼中是常見(jiàn)的。根據(jù)一些估計(jì),通常五個(gè)指令中有一個(gè)可能為分 支。因此,早期分支檢測(cè)、分支評(píng)估預(yù)測(cè)(用于條件分支指令)和從所預(yù)測(cè)的BTA取 出指令對(duì)于處理器性能可能是至關(guān)重要的。常見(jiàn)的現(xiàn)代處理器包括將多個(gè)指令存儲(chǔ)于每 一高速緩沖存儲(chǔ)器線中的I高速緩沖存儲(chǔ)器22??梢淮螐腎高速緩沖存儲(chǔ)器取出整個(gè)線 (或更多)。出于本發(fā)明的目的,假定I高速緩沖存儲(chǔ)器22每個(gè)高速緩沖存儲(chǔ)器線存儲(chǔ)四 個(gè)指令,但此實(shí)例僅為說(shuō)明性的而并非限制性的。為了存取現(xiàn)有技術(shù)BTAC以并行地搜 尋所有四個(gè)指令地址將需要四個(gè)地址比較輸入端口、四個(gè)BTA輸出端口以及多路復(fù)用 器和控制邏輯以從與所述區(qū)塊相關(guān)聯(lián)的多達(dá)四個(gè)BTA中選擇BTA (如果所有四個(gè)地址 均在BTAC中命中)。雖然具有四個(gè)分支指令的區(qū)塊是罕見(jiàn)的,但本文中所教示的BTAC 適應(yīng)所述可能性。
根據(jù)一個(gè)或一個(gè)以上實(shí)施例,基于區(qū)塊的BTAC25將與指令區(qū)塊(例如,四個(gè)指令) 相關(guān)聯(lián)的被采納分支信息存儲(chǔ)于每一BTAC 25高速緩沖存儲(chǔ)器線中。此信息包含所述區(qū) 塊中的至少一個(gè)指令是已被評(píng)估為被采納的分支指令的事實(shí)(通過(guò)基于區(qū)塊的BTAC 25 中的命中來(lái)指示)、指示所述區(qū)塊中的哪個(gè)指令為被采納分支的指示符,以及其BTA。
圖2描繪基于區(qū)塊的BTAC 25、 I高速緩沖存儲(chǔ)器22、管線12和分支預(yù)測(cè)邏輯電
路15 (其可例如包含控制邏輯11的一部分)的功能方框圖。在此實(shí)例中,指令A(yù)至L
駐留在I高速緩沖存儲(chǔ)器22中的三個(gè)線中。所述指令在所述方框圖的左側(cè)處列出。在此
實(shí)例的基于區(qū)塊的BTAC 25中,BTAC 25的區(qū)塊大小對(duì)應(yīng)于I高速緩沖存儲(chǔ)器22線長(zhǎng)
度——四個(gè)指令,但此對(duì)應(yīng)關(guān)系并不是常見(jiàn)的。圖2的基于區(qū)塊的BTAC25中的每一條
目包含三個(gè)組成部分標(biāo)簽字段,其包含每一區(qū)塊中的四個(gè)指令的共同指令地址位(即,
兩個(gè)最低有效位被截?cái)嗟闹噶畹刂?;分支指示符,其描繪所述區(qū)塊內(nèi)的所述指令中的哪一者為被采納分支;和分支目標(biāo)地址(BTA),其對(duì)應(yīng)于所述被采納分支指令。
BTAC 25中的第一條目對(duì)應(yīng)于I高速緩沖存儲(chǔ)器22的第一線,所述第一線包含指 令A(yù)、 B、 C和D。在這些指令中,指令C是已被評(píng)估為被采納的分支指令。通過(guò)分支 指示符地址10 (在其它實(shí)施例中,分支指示符可為經(jīng)解碼格式,例如0010)將指令C 識(shí)別為被采納分支?;趨^(qū)塊的BTAC25額外存儲(chǔ)指令C的分支目標(biāo)地址(BTAc)。
I高速緩沖存儲(chǔ)器22的第二線中的指令(E、 F、 G或H)沒(méi)有一個(gè)是分支指令。因 此,基于區(qū)塊的BTAC 25中不存在對(duì)應(yīng)于此高速緩沖存儲(chǔ)器線的條目。
基于區(qū)塊的BTAC 25中的第二條目對(duì)應(yīng)于I高速緩沖存儲(chǔ)器22的第三線,所述第 三線包含指令I(lǐng)、 J、 K禾卩L。在此區(qū)塊內(nèi),指令I(lǐng)和L兩者均為分支指令。在此實(shí)例中, 指令L最后經(jīng)評(píng)估為被釆納,且基于區(qū)塊的BTAC25存儲(chǔ)BTA^并通過(guò)分支指示符值 11將所述區(qū)塊中的第四指令識(shí)別為被采納分支。
在操作中,管線12中的解碼/取出邏輯13產(chǎn)生用于從I高速緩沖存儲(chǔ)器22取出下 一群組指令的指令地址。將包含同時(shí)被取出的所有指令的共同地址位的經(jīng)截?cái)嘀噶畹刂?與基于區(qū)塊的BTAC 25的標(biāo)簽字段進(jìn)行比較。如果所述經(jīng)截?cái)嗟刂放c基于區(qū)塊的BTAC 25中的標(biāo)簽匹配,則將對(duì)應(yīng)分支指示符提供給解碼/取出邏輯13以指示所述區(qū)塊中的哪 個(gè)指令是被采納分支指令。還將所述指示符提供給分支預(yù)測(cè)邏輯15。同時(shí),在所述分支 被預(yù)測(cè)為被采納的情況下,將BTAC條目的BTA提供給I高速緩沖存儲(chǔ)器22,以立即 開(kāi)始從BTA進(jìn)行推測(cè)取出,以便使管線保持滿。
在管線12中的執(zhí)行級(jí)的邏輯14中評(píng)估所述分支指令。將所述分支評(píng)估提供給分支 預(yù)測(cè)邏輯15,以按照實(shí)際分支行為更新預(yù)測(cè)邏輯。EXE邏輯14在分支指令評(píng)估為被采 納的情況下額外地計(jì)算并提供所述指令的BTA。分支預(yù)測(cè)邏輯15更新其預(yù)測(cè)表(例如 分支歷史寄存器、分支預(yù)測(cè)表、飽和計(jì)數(shù)器等),且額外更新基于區(qū)塊的BTAC 25。明 確地說(shuō),分支預(yù)測(cè)邏輯15針對(duì)評(píng)估為被采納的每一新分支指令在基于區(qū)塊的BTAC 25 中創(chuàng)建對(duì)應(yīng)于具有四個(gè)指令的區(qū)塊的新條目,且更新基于區(qū)塊的BTAC 25中現(xiàn)有條目的 分支指示符和/或BTA字段。
因此,基于區(qū)塊的BTAC 25中的每一條目與包括已被評(píng)估為被采納的至少一個(gè)分支 指令的指令區(qū)塊相關(guān)聯(lián)。每一條目包括標(biāo)簽,所述標(biāo)簽包含所述區(qū)塊中的所述指令的共 同位。通過(guò)與從I高速緩沖存儲(chǔ)器22取出一個(gè)或一個(gè)以上指令并行地存取基于區(qū)塊的 BTAC 25,使用經(jīng)截?cái)嘀噶畹刂穪?lái)與基于區(qū)塊的BTAC 25的標(biāo)簽進(jìn)行比較,處理器10 可確定所述區(qū)塊中是否有任何指令為被采納分支指令和所述區(qū)塊中的哪個(gè)指令為被采 納分支指令。另外,處理器IO可立即開(kāi)始從所述被采納分支的BTA推測(cè)地取出指令,從而維持滿管線并優(yōu)化性能,其中所述分支再次評(píng)估為被采納。與BTAC條目相關(guān)聯(lián)的 指令的區(qū)塊結(jié)構(gòu)消除了三個(gè)輸入端口、三個(gè)輸出端口和輸出多路復(fù)用器,而使用常規(guī) BTAC條目時(shí)將需要所述輸入端口、輸出端口和輸出多路復(fù)用器以實(shí)現(xiàn)相同功能性,其 中每一BTAC條目專(zhuān)用于單個(gè)被采納分支指令。
如本文中所使用的, 一般來(lái)說(shuō),分支指令可指代條件分支指令或無(wú)條件分支指令。 如本文中所使用的,"被采納分支"、"被采納分支指令"或"已被評(píng)估為被釆納的分支 指令"指代無(wú)條件分支指令或已被評(píng)估為使順序指令執(zhí)行流轉(zhuǎn)向非順序地址(即,與不 采納相對(duì)的采納)的條件分支指令。
雖然本文中已相對(duì)于其特定特征、方面和實(shí)施例描述了本發(fā)明,但將容易明白在本 發(fā)明的廣泛范圍內(nèi),許多變型、修改和其它實(shí)施例也是可能的,且因此所有變型、修改 和實(shí)施例應(yīng)視為屬于本發(fā)明的范圍內(nèi)。因此,本發(fā)明的實(shí)施例在所有方面應(yīng)被解釋為說(shuō) 明性的而并非限制性的,且屬于所附權(quán)利要求書(shū)的意義和均等范圍內(nèi)的所有變化均既定 涵蓋于其中。
權(quán)利要求
1. 一種在處理器中預(yù)測(cè)分支指令的方法,其包含將條目存儲(chǔ)于分支目標(biāo)地址高速緩沖存儲(chǔ)器(BTAC)中,所述BTAC條目與具有兩個(gè)或兩個(gè)以上指令的區(qū)塊相關(guān)聯(lián),所述區(qū)塊包括已被評(píng)估為被采納的至少一個(gè)分支指令;和在取出一群組指令后,存取所述BTAC以確定所述對(duì)應(yīng)區(qū)塊中的指令是否為被采納分支指令。
2. 根據(jù)權(quán)利要求1所述的方法,其中每一BTAC條目包括標(biāo)簽,所述標(biāo)簽包含所述區(qū) 塊中的所有指令的地址的共同位。
3. 根據(jù)權(quán)利要求2所述的方法,其中存取所述BTAC包含將正被取出的所述指令的所 述地址的對(duì)應(yīng)位與所有BTAC條目的所述標(biāo)簽進(jìn)行比較。
4. 根據(jù)權(quán)利要求l所述的方法,其進(jìn)一步包含在每一BTAC條目中存儲(chǔ)指示符,所述 指示符指示所述相關(guān)聯(lián)區(qū)塊內(nèi)的哪個(gè)指令是被釆納分支指令。
5. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包含在每一BTAC條目中存儲(chǔ)所述相關(guān)聯(lián)區(qū) 塊內(nèi)的被采納分支指令的分支目標(biāo)地址(BTA)。
6. 根據(jù)權(quán)利要求5所述的方法,其進(jìn)一步包含在存取所述BTAC之后從所述BTA取 出指令。
7. 根據(jù)權(quán)利要求1所述的方法,其中每一指令區(qū)塊對(duì)應(yīng)于指令高速緩沖存儲(chǔ)器線。
8. —種處理器,其包含分支目標(biāo)地址高速緩沖存儲(chǔ)器(BTAC),其存儲(chǔ)多個(gè)條目,每一BTAC條目與具 有兩個(gè)或兩個(gè)以上指令的區(qū)塊相關(guān)聯(lián),所述區(qū)塊包括已被評(píng)估為被采納的至少一個(gè) 分支指令;和指令執(zhí)行管線,其操作以在取出一個(gè)或一個(gè)以上指令后用經(jīng)截?cái)嗟闹噶畹刂匪饕鯞TAC。
9. 根據(jù)權(quán)利要求8所述的處理器,其中每一BTAC條目包括標(biāo)簽,所述標(biāo)簽包含所述 區(qū)塊中的所有指令的地址的共同位。
10. 根據(jù)權(quán)利要求8所述的處理器,其中每一BTAC條目包括指示符,所述指示符指示 所述相關(guān)聯(lián)區(qū)塊內(nèi)的哪個(gè)指令是被采納分支指令。
11. 根據(jù)權(quán)利要求8所述的處理器,其中每一BTAC條目包括所述相關(guān)聯(lián)區(qū)塊內(nèi)的被采 納分支指令的分支目標(biāo)地址(BTA)。
12. 根據(jù)權(quán)利要求8所述的處理器,其中每一指令區(qū)塊對(duì)應(yīng)于指令高速緩沖存儲(chǔ)器線。
13. —種用于在處理器中預(yù)測(cè)分支指令的處理器,其包含用于將條目存儲(chǔ)于分支目標(biāo)地址高速緩沖存儲(chǔ)器(BTAC)中的裝置,所述BTAC條目與具有兩個(gè)或兩個(gè)以上指令的區(qū)塊相關(guān)聯(lián),所述區(qū)塊包括已被評(píng)估為被采納的 至少一個(gè)分支指令;和用于在取出一群組指令后存取所述BTAC以確定所述對(duì)應(yīng)區(qū)塊中的指令是否為被 采納分支指令的裝置。
14. 根據(jù)權(quán)利要求13所述的處理器,其中每一 BTAC條目包括標(biāo)簽,所述標(biāo)簽包含所 述區(qū)塊中的所有指令的地址的共同位。
15. 根據(jù)權(quán)利要求14所述的處理器,其中所述用于存取所述BTAC的裝置包含用于將 正被取出的所述指令的所述地址的對(duì)應(yīng)位與所有BTAC條目的所述標(biāo)簽進(jìn)行比較的裝置。
16. 根據(jù)權(quán)利要求13所述的處理器,其進(jìn)一步包含用于在每一 BTAC條目中存儲(chǔ)指示 符的裝置,所述指示符指示所述相關(guān)聯(lián)區(qū)塊內(nèi)的哪個(gè)指令是被采納分支指令。
17. 根據(jù)權(quán)利要求13所述的處理器,其進(jìn)一步包含用于在每一 BTAC條目中存儲(chǔ)所述 相關(guān)聯(lián)區(qū)塊內(nèi)的被采納分支指令的分支目標(biāo)地址(BTA)的裝置。
18. 根據(jù)權(quán)利要求17所述的處理器,其進(jìn)一步包含用于在存取所述BTAC之后從所述 BTA取出指令的裝置。
19. 根據(jù)權(quán)利要求13所述的處理器,其中每一指令區(qū)塊對(duì)應(yīng)于指令高速緩沖存儲(chǔ)器線。
全文摘要
本發(fā)明提供一種分支目標(biāo)地址高速緩沖存儲(chǔ)器(BTAC),其存儲(chǔ)多個(gè)條目,每一BTAC條目與具有兩個(gè)或兩個(gè)以上指令的區(qū)塊相關(guān)聯(lián),所述區(qū)塊包括已被評(píng)估為被采納的至少一個(gè)分支指令。所述BTAC條目包括指示所述相關(guān)聯(lián)區(qū)塊內(nèi)的哪個(gè)指令是被采納分支指令的指示符。所述BTAC條目還包括所述被采納分支的分支目標(biāo)地址(BTA)。區(qū)塊大小可(但未必)對(duì)應(yīng)于每個(gè)指令高速緩沖存儲(chǔ)器線的指令數(shù)目。
文檔編號(hào)G06F9/38GK101438237SQ200780016471
公開(kāi)日2009年5月20日 申請(qǐng)日期2007年4月23日 優(yōu)先權(quán)日2006年5月10日
發(fā)明者托馬斯·安德魯·薩托里烏斯, 羅德尼·韋恩·史密斯, 詹姆斯·諾里斯·迪芬德?tīng)柗驙?申請(qǐng)人:高通股份有限公司