TW200841238A - Parallel prediction of multiple branches - Google Patents

Parallel prediction of multiple branches Download PDF

Info

Publication number
TW200841238A
TW200841238A TW097106017A TW97106017A TW200841238A TW 200841238 A TW200841238 A TW 200841238A TW 097106017 A TW097106017 A TW 097106017A TW 97106017 A TW97106017 A TW 97106017A TW 200841238 A TW200841238 A TW 200841238A
Authority
TW
Taiwan
Prior art keywords
branch
instruction
item
prediction
value
Prior art date
Application number
TW097106017A
Other languages
English (en)
Inventor
Ravindra N Bhargava
Brian Raf
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of TW200841238A publication Critical patent/TW200841238A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Description

200841238 . 九、發明說明: - 【發明所屬之技術領域】 ' 本申請案的揭露係一般相關於處理裝置(processing device )裡的程式流程(program flow )且更具體地與處理 裝置裡的分支預測相關。 【·先前技術】 為了增加在相當大的讀取頻寬時處理器中的指令輸 ^ 貫量(throughput ),在相同的提取窗口( fetch window ) 内預測多個分支指令通常是有幫助的。然而,許多傳統分 支預測子表(branch predictor tables)是以先前分支預測歷 史(也就是以前遭遇到分支的代表)為基礎來被編成索引 的。因此,為了準確地預測是否要採用程式流程裡一個的 Γ-ν 分支,通常需要預測或解析所有先前的分支。所以為了以 最新的分支歷史來編索引,在有單一讀取埠的典型分支預 測表裡需要對分支預測表作多重順序存取(multiple ⑩ sequential access)。為了努力避免這些順序存取在相同提取 窗口(fetch window)内獲得多重分支預測,已經發展出有多 重讀取埠(multiple read ports)的分支預測表以使得可以平 行存取個別的表項(table entry ),因此所有可能的分支歷 史的組合都在對應的讀取埠間被當成指標(indicia )來用。 然而,有多重讀取埠的分支預測表的實現大大地增加分支 預測結構(branch prediction scheme)的複雜性。而且,在順 序存取的常見單一讀取璋的實現與平行存取的多重讀取埠 分支預測表的實現兩者都需要更多的時間來從表中檢索預 5 94245 200841238 , 測資訊,而因此它們的使用造成如增加時鐘週期(cl〇ck ,period)以符合存取時間的增加或分支預測轉迴輸貫量 、 (tumaxoimd throughput)的減少的反效果。因此,多重分 支預測的改進技術將是有幫助的。 【發明内容】 依照本申請案的揭露的一個觀點,本發明為一種包含 決定處理裝置中與指令的第一組(first set)的第一分支指令 φ (first branch instruction)相關的分支歷史數值的方法。‘二 歷史數值表不在第一分支指令之前程式流程的分支歷史。 此方法復包括在處理裝置中以第一分支指令的分支歷史數 值和第一分支指令相關的第一識別碼為基礎來決定第一分 支指令的第-分支預測。此方法同時包括在處理裂置中以 第-分支指令相關的分支歷史數值和第二分支指令相關的 2識別碼為基礎來決定指令的第一組的第二分支指令的 第一分支預測。第二分支指令接在程式流程裡的第一分支 •指令,後而出現。此方法同時包括在處理裝置中以至少一 们的第刀支預測與第二分支預測為基礎來提取指令的第 依本申请案的揭露的另一個觀點,本發明為一種包 ,定處理裝置中與指令的第-組的第-分支指令相關的 弟一識別碼和與指今的楚 &匕… 識…二:的第二分支指令相關的第二 二入’ 、/ 。第一分支指令接在程式流程裡的第一分支 =之=:。此方法同時包括在處理裝置中決 在弟刀支指令之前的程式流程的分支歷史與以分支歷史 94245 200841238 ,數值為^礎來為分支預測表的第—項目編索引的分支歷史 -數值。帛-項目(first entry)包含複數個小項⑽她i⑻。 ,此方法同時包括以第一識別碼為基礎來選擇分支預測表的 第-項目的第-小項與以平行於選擇第一項目的第一小項 的第二識別碼為基礎來選擇分支預測表的第二項目的第二 小項?此方法復包括以儲存在第一小項的第一數值為基礎 來決定第-分支指令的第一分支預測與以儲存在第二小項 φ的第二數值為基礎來決定第二分支指令的第二分支預測。 此方法同時包括以至少一個的第一分支預測與第二分支預 測為基礎來提取指令的第二組。 、 再依照本申請案的揭露的另—個觀點,處理裝i包括 分十歷史表與分支制子模組。分支歷史表是要儲存代表 在指:的第-組的第一分支指令之前的程式流程的分支歷 =分支歷史數值。指令的第—組復包括在程式流程中接
分支指令之後出現的第二分支指令。分支預測子模 二n支歷史數值、第—分支指令相關的第—識別碼 (二 )和弟二分支指令相關的第二識別碼為基礎來決 疋第-分支指令的第一分支預測和第二分支 支預測。 ]弟一刀 "弟1圖至第3圖係為在已知提取窗口内預測多重分 的範例技術的示意圖。在實施例中,代表順序指令的 :令資料被提取來處理,因此順序指令的組包 或 1 二了:_令的組的程式流程裡產生Ϊ 支"而紅/刀支歷史數值,因此分支歷史數值代表 94245 200841238 '來自之前被提取的指令組的程式流程裡的第一分支指令之 ♦前的分支指令的順序的至少一部份的歷史(例如被採用或 '沒被採用的)。於是第一分支指令的分支歷史數值被用來當 成進入分支預測表的索引以便決定第一分支指令的預測。 此外,第一分支指令的分支歷史數值也被用來當成進入分 支預測表的索引以便決定在程式流程裡接在第一分支指令 後的順序指令的組的每個分支指令的預測。因此,藉由使 #用出現在指令順序中的初始分支指令的分支歷史數值來編 索引到初始分支指令和一個或多個接續的分支指令兩者的 分支預測表裡,連續地發生在指令順序中的多重分支指令 的預測不需要前面的分支指令的分支預測的解析就可以平 行地被決定。
在實施例中,分支預測表的每個項目包括複數個小項 ㈣論㈣,每個小項儲存代表分支預測的數值,因此第 -分支指令的分支歷史數值被用來指示特定項i從特定 項目中,兩個或更多的小項以正被預測的分支指令(舉例 部t或所有的分支指令的指令位址)相關的識別碼 為基礎的索引為基礎來被平行存取。在一財施例中,用 來選擇特定小項的索引(index)是根據順序指令的組的第一 的分支歷史數值的子組(subset)與正被預測 =令的組的分支指令相關的指令位址的子組的散列函數 (hash function亦稱雜湊函數)。 第1圖係為依照本申請案 範例處理裝置1〇〇的示意圖。 的揭露的至少一個實施例的 處理裝置100可包括舉例來 94245 8 200841238 ^ 說微處理器、微批也fα 控制為、應用4寸定積體電路(ASIC )盥之 一類的。 * ^在所說明的範例中,處理農置100包括處理器102、 °己丨思粗1〇4 (例如系統隨機存取記憶體(RAM))、與一個 或多個透過北橋110或其他匯流排結構.而結合的週邊裝置 (例如周邊裝置106與⑽)。處理器而包括執行管線 111、指令快取112與資料快取114。代表一個或更多個指 #令的程式的指令資料可儲存在指令快取ιΐ2、記憶體⑽ 或它們的組合。執行管線―npipel㈣m包括複數 個執行階段’如指令提取階段122、指令解碼階段PA 程器階段126、執行階段128、退出“心)階段n 母個階段可被貫施成一個或多個子階段。 在實施例中’提取階段(fetch stage) j22係配置成依照 程式流程來從指令快# 112 #取指彳資料的資料段 (block),目此指令資料的資料段包括代表複數個順序指 _令(在下文中稱為「提取組(fetch⑻」)的指令資料。 於是提取階段122提供一些或所有的指令資料給解碼階段 124’因此指令貢料被解碼來產生一個或多個指令。此一個 或多個指令之後被提供到排程器階段126,於是它們被排 程而由執行階段!28所執行。指令的執行結果被儲存在退 出階段130的重排序(re_〇rder)缓衝區或暫存器映像 (register map)直到任何之前的分支預測的解析出來。 在至少一個的實施例中,在處理裝置100裡正被執行 的程式或指令的程式包括依據是否採取此分支而可能改^ 9 94245 200841238 .T式流程的分支指令(例如有條件分支指令或無條件分支 才曰々)。依據被執行程式裡的分支指令的頻率與數量,提取 1來自指令快取112的提取組可包括一個或多個分支指令。 $ 了加速執行,提取階段122包括配置來識別提取組内的 /刀支指令、以儲存在分支預測表内的資訊為基礎來平行預 測是否採取被識別的分支齡、與以為提取組而做的一個 或多個分支預測為基礎來組構提取階段122以提取來自指 籲令快取112的下一個提取組的分支預測/提取模組132。 退出階段130係配置成回饋代表分支預測/提取模組 132做的分支預測的解析結果(被採取或不被採取)的分 支解析資訊134,因此分支預測/提取模組132可以分支解 析資訊134為基礎來精鍊(refjne )它的分支預測表。 第2圖係為根據至少一個本申請案的揭露的實施例的 分支預測/提取模組i 3 2的實施範例的示意圖。在描述的範 例中,分支預測/提取模組132包括分支識別碼模組吮 • identifier m〇dule)2〇2、分支預測子模組2〇4、下個指令提 取模組206、分支歷史表208與分支歷史管理模組 history management module)210。 分支識別碼模組202在實施例中係組構成識別獲得來 自指令快取112 (第1圖)的提取組(例如提取組212)裡 的分支指令的存在。分支識別碼模組2〇2可舉例來說,依 照分支指令相關的提取組内的運算碼來識別分支指令。在 一個實施例中,分支識別碼模組2〇2 一開始先掃瞄分支指 令的提取組,分支指令係提取來自指令快取112與儲存到 94245 10 200841238 提取階段122 (第1圖)的指令緩衝區214。 組202於是創造-個項目在提取組(帶有‘ 小所限制时支朗碼表216裡的項目數 16的大 別的分支指令的分支識別碼表216 M。在:母,破識 二’=碼階段124 (第1圖)裡的指令解碼元 为支指令與提供分支識別碼模組2G2進人 二 叫的資訊。在另-個實施例中,分支歷史管理^碼表 提供儲存器進入分支識別碼表216的資訊。 、汲210 分支識別碼表216裡的項目可包括舉例來說, 令的指令位址、以及分支指令的型式等等。所以, 曰 後相同或部分相同的提取組的提取時不需要重新掃瞒= 提取組來識別在那裡含有任何分支指令,分模且 搬可替代地把提取組相關的指令位址當成到分弓= 表加白令索引來決定在提取組裡是否有任何分支指令= 分支歷史表208包括複數的先進先出(fif〇)項目。 每個項目包括代表分支預測/提取模組132做的程式流程 的分支歷史的至少-部份的位元向量或其他數值,俾使分 支歷史表2G8裡的位元向量或數值的順序表示程式流程裡 的分支結果的順序。在範例的示意圖中,每個項目儲存一 個三位元的向量’因此位元向量的任何位元位置上的數值 「1」表示分支歷史裡的對應的分支被採用了,而數值「〇」 表示分支歷史裡的對應的分支沒被採用。然而,雖缺為了」 簡化討論而晝成三位元向量,應了解也可使用較大的位元 94245 11 200841238 向里或其他來代表分支歷史以便提供更仔細的以前的分支
歷史的表示法D 八在一個貫施例中,分支歷史管理模組210係組構成以 刀支預測子模組204做的分支預測為基礎去增加項目到分 ^歷史表208且以接收來自關於分支預測子模組2〇4做的 刀支預測的退出段丨3G (帛〗圖)的分支解析資訊工料 為基礎去修改或移除分支歷史表2〇8的項目。當分支預測 子杈組204做出分支預測時,分支預測子模組2〇4會送出 預測信號216到分支歷史管理模組21〇,因此預測信號216 狀態顯示預測分支預測被採用(例如一個「丨」)或被預測 不被採用(例如一個「〇」)。為了回應預測信號216,分支 歷史管理模組210獲得分支歷史表2〇8的最後一個(最近 的)項目裡的位元向量的複製件(c〇py)並移動預測信號 216的位元數值到複製件裡。為了說明,假設位元向量的 最右位元代表被代表的分支歷史的最不近的分支而位元向 量的最左位元代表最近的分支,分支歷史管理模組21〇可 右移位元向量的複製件然後在位元向量的最左位元位置裡 貼上預測信號216的位元數值。舉例來說,假設在分支歷 史表裡的最後項目包括「1〇〇」的位元向量,則顯示那時最 近的分支被採用了而之前兩個的分支沒被採用。為了回應 預測要採用程式流程裡的下個分支的分支預測子模組 204,於是送出「1」當作預測信號216,分支歷史管理模 組210從最近的項目複製位元向量「1〇〇」、向右移動—個 位元並貼上預測信號216的「1」而產生位元向量「11〇」, 94245 200841238 然後將它推入分支歷史表208的最後一個項目。如此,因 為創造此項目來回應分支預測子模組2〇4的分支預測,分 支歷史表208的一些或所有的分支歷史項目在對應的分支 預測的解析發生前是純理論的。在別的實施例中,分支預 測子杈組204維持純理論的分支歷史的複製件並且接著在 分支預測的解析後立即送出一個或多個項目的複製件給分 支歷史表208。
應了解的是’分支預測子模組204在程式流程裡可能 會做錯誤的分支預測。因此,—收到表示分支㈣是錯誤 的分支解析資訊134後,分支歷史管理模、组21〇立即修改 錯誤預測影響到的分支歷史項目的位元向量。在-個實施 例中’修改包括移除從分支歷史表旗中的因為錯誤預測 而再也不正確的任何項目。 、在们Λ施例中,分支預測子模組204藉著存取來 代表在提取組裡的第_分支指令前面的程式流程裡的一:
Lr支的刀支結果(例如被採用/不被採用)的分支歷史; 猫的分支歷史數值來決定提取組的每個分支指令的和 取支預測子模組2G4於是制與程式流程 =分支指令相關的分支歷史來決錢取組裡如 :令的分支預測。如同在此將更詳細地說明地,分: =子模;:204透過舉例來說,來自分支歷史表 :則子:的:士歷史數值來使用有多重可索引項目的分支a 所以二個項目包括儲存預測資訊的複數個小項 ’-固分支歷史數值可被用來索引對應於提取組的1 94245 13 200841238 .多相繼的分支指令的多重分支預測數值。選擇多重分支預 測數值的其中之一’然後其可使用與提取組的個別分支指 •令相關的識別碼來平行存取。分支預測子模組204之後以 、皮存取的77支預測數值為基礎來決定提取組的每個分支指 令的分支預測。 '對於做出的每個分支預測,分支預測子模組2〇4如上 述地提供分支預测信號216。如上所提到的,分支預測子 藝模、、且204可能正確地或不正確地預測分支。因此,在至少 一個實施例中,分支預測子模組2 〇 4接收來自退出階段! 3 〇 的分支解析資訊134並更新分支預測子表的相對應預測小 項來反應出真實分支結果。在此將更仔細地說明,在每個 項目裡的預測可包括代表預測(被採用或不被採用)的數 值’以及代表預測強度(例如弱或強)的數值。因此,當 分支預測子模組204被分支解析資訊134通知說它有錯誤 的分支預測時,分支預測子模組2〇4藉由舉例來說,改變 顯預測的強度、改變預測或其組合來更新與分支相關的對應 的小項。 ^ 下個指令提取模組206係組構成決定與從指令快取提 取的下個提取組相關的下個指令位址。下個指令提取模組 2〇6,在實施例中,以現在正被處理的提取組裡的每個分支 才曰々的为支預測子模組204做的每個分支預測為基礎來決 疋下個指令位址。為了說明,假設提取組212包括兩個分 支指令:分支指令222與分支指令224。在分支預測子^ 、、且204預測要採用分支指令222的事件中,下個指令提取 94245 14 200841238 =、、且206利用任何各種適當的技術來計算分支指令加的 刀支目標位址。或也可,在分支預測子模組2 ,旨令222而採用分支指令224的事件中,下= =莫組施計算分支指令以的分支目標織。在預測 都不採用的事件中’下個指令提取模組206以舉例來說, 式:十數裔(PC )的連續增加為基礎來計算下個指令位址。 第3圖為依照本申請案的揭露的至少一個實施例的分 _,測/提取核組132的分支預測子模組2()4的實現範例的 不思圖。在圖式的範例中,$ 了清楚地說明白,所以假設 2已知提取組(例如提取組212, f 2圖)包括最多兩 支扣7且因此分支預測子模組204係組構成平行預測 任何已知提取組的最多兩個連續分支、然而,應了解,、提 取組裡的可能分支指令的數量至少在某種程度上取決於提 取組的頻寬(也就是’提取組可代表指令數量),且因此可 延伸圖式說明的執行來支援每提取組多於兩個分支指令的 平行預測。 在敘述的範例中,分支預測子模組204包括分支預測 子表^02、多工器3〇2與多工器3〇4。分支預測子表 包括1個項目306 ’每個項目规包括複數個小項。在 圖弋t 4例中,每個項目3〇6包括四個小項:小項31 〇、 】項312,小項314與小項316 (在下文中,以「小項31〇 至^16」來表不)。應了解,在支援預測或提取組裡多於兩 個7刀支指令的實現方法中,可使用多於兩個的多工器。此 外雖然圖式的範例描述每個項目3〇6有四個小項,每個 15 94245 200841238 1已知項目306的小項數量可依照實現方法而改變大小。 母個小項包括代表分支預測的一個或多個位元。如圖 '式付號318所表示的檢索表(key ),每個小項包括兩個位 元’因此第一個位元數值表示預測的強度(例如「〇」指出 弱預測而「1」指出強預測)而第二個位元數值代表預測(例 如「力」指出不被採用的預測而「1」指出被採用的預測)。 以相關於項目的索引或其他東西的分支預測的解析為基礎 ⑩來调整每個小項的兩個位元數值。為了說明,當分支預測 子模組204正確地預測分支時,被映射到分支的小項可被 修改來代表預測強度的增加。這可包括,舉例來說,改變 第一位元數值從「〇」到「〗」來反應出預測強度的增加s。 相反地,當分支預測子模組2〇4不正確地預測分支時,被 映射到分支的小項可被修改來代表預測強度的減少(例如 改變第一位元數值從「i」到「〇」來反應出預測強度的減 少)或如果預測強度已經是弱的,可修改小項以使得之後 瞻項代表相反的預測(例如改變兩位元數值從「〇 1」到「〇〇」 來反應出改變預測從被採用的弱預測到不被採用的弱預 測)。 在一個實施例中,使用分支歷史表208的最不近的項 目的一些或全部位元(也就是正被處理的提取組裡的第一 分支指令的最前頭的程式流程的分支歷史)來編分支預測 表302的項目306的索引,使用兩個指令位址共同的指令 位址A1與A2的位元的組(例如相同的分頁數字或盆组 合)。在D圖中,進入分支預測表3〇2的索引是使用散列 94245 16 200841238 ;邏輯(hash i〇gic)33〇來產生的,其中散列邏輯330執行使 ‘用數值ΒΗ[0:η-1]與A[I:j]的散列運算(hash叩⑽㈣,此 .時是代表分支歷史表2()8 (第2圖)裡的分支歷 史數值的位元向里,x是相等或小於位元向量的全部位元 數η,且BH[0:X]代表用來指示其中一個小項遍的分支歷 史位元向量的部分位元’,而A[i;j]代表指令位址ai和Μ 兩者j同的位元組。因此’正被處理的提取組的連續指令 鲁裡的帛π支才曰令的最前頭的分支歷史的至少一部份索引 到項目306。在另一個實施例中,可在沒有指令位址數值 2使用分支歷史數值ΒΗ的—部份或全部來產生分支預測 表3〇2的索引數值。 如第一圖所圖式的,索引項目306的每個小項31〇 3i6被映射到多工器綱的對應輸入與多工器裏的對 剧入。多工器3G4 &括被配置來接收選擇信號(狐… 輸入’因此多工器3〇4以選擇信號322為基礎來 擇索引項目306的呈中一個j m ^ , ’、 、 至316的預測位元( 知用/不被採用或T/NTl)的輪出。同樣地,多工哭规 ,魏置來接收選擇㈣(SEL2) 324的控制輸入,因 306以選擇信號324為基礎來選擇索引項目寫 具中一個小項310至316的預制仞士 rm 肅2)的輸出。因"由預遠=被_™^ 々^ 此碏由連接每個小項310至316 夕工态304與多工器306兩者,#, 考超過一個的小項310至3 了不而夕重讀取琿地來同時 内)平行地被存取。也“在相同的時鐘週: 94245 17 200841238 在實施例中,選擇俨?卢322釦θ 取組裡的第一八古扣八。^ ‘疋以正被處理的提 (兴例央w刀曰7的取刖頭的程式流程的分支歷史 的纽元向4 Μ所絲的)為基礎來被產生 常駐的:二::::組202識別成正被處理的提取組裡 辨識碼 2與224 (第2圖)分別相關的 八…\母個分支指令的辨識碼可包括舉例來說,分支指 八士 t〆口15知的指令位址、相關於分支指令的運算碼、 刀扣7的型式與之類的。在描述的範例中,分支預測子 模組、=包括要產生選擇信號的322的散列邏輯332與要 產生選擇信號324的散列邏輯334。散列邏輯332使用分 支歷史位元向量(例如BH[x+1:y],其中y小於或等於 勺13伤位元與位址數值A〆 A! [k:m])(如同與分支指令 2阳相關聯的識別碼)的—部份位元來執行散列運算以產 生選f信號322。同樣地,散列邏輯334使用分支歷史位 兀向量(BH[x+1:y])的相同部份位元與位址數值A2(A2 ,加])(如同與分支指令222相關聯的識別碼)的相對應 部份位元來執行散列運算以產生選擇信號324。在實施例 中’數值A] [k:m]與A〕[k:m]至少一個位元數值是彼此不 同的。 因此,如同第3圖的實施方法所說明的,發生在提取 組=連績指令的第一分支指令的最前頭的分支歷史可在不 為取、、且的第一分支指令的分支預測的解析或不需存取使 用在第一分支指令之後的分支結果的每個可能排列的分支 預測表多重讀取埠地被用來存取提取組的一些或所有分支 18 94245 200841238 指令的分支預測表。所以,雖然 提取組裡的第二和之後的分支指令,但是在 用的分支歷史嵌入在索引架構裡破私 赫至丨1磕B士 /.^ U此田t由相同路徑地 八h ’缺取組裡的第-分支指令之後的所有分 二=㈣為基礎的索引將總是找到分支預測表地的相曰 、’攸而提供健全與可靠的預測架構。此外,以提 指令的所有分支的共同相同分支歷 =夕重多工器來存取被索引項目的小項,提取組的順序 ^裡的所有分支的分支預測可在同—個時鐘週期内被決 ^,因此增加了在處理裝置内的每週期指令 (instruction_per-cycle)輸貫量。 在此文件中,有關係的名稱如「第一」與「第二」與 之類的,在這樣的實體或動作間不要有或包括任二實 際這樣的關係或順序即可被單獨用來辨別—個實體或動作 與另一個實體或動作。名稱「包括(c〇mprise)」、「包括 (compnsing )」或任何其他它們的變化被意指來包括不排 他的包含,以致於包括一列表的元件的程序(pr〇cess)、 方法、物品或設備不只是包括那些元件且包括沒被明確列 出的或對這些程序、方法、物品或設備是不是固有的其他 元件。在元件之鈾的「包括…一個」(,,c〇mpHse··· )並 不沒有任何限制地排除包含元件的程序、方法、物品或設 備裡的更多相等元件的存在。 在沒裡用到的名稱「另一個(an〇ther )」定義為至少 第二個或更多。在這裡用到的「包括(including )」、「有 19 94245 200841238 (having )」或任何其他它們的變化的詞語定義為包括 (compnsmg)。在這裡用到的關於電光技術的名稱「結合 (coupled)」雖,然不—定是直接地且不是機械地連 接,係定義為連接。 當參照到信號、狀態位元或相似的設備進入它個別的 邏輯地真或。假的表現時,將使用名稱「主張(assen)」或 :组(set)」與「否定(negate)」(或「去主張㈤咖)」 或「清除(clear)」)。如果邏輯地真狀態是邏輯階層一, 則邏輯地假狀態是邏輯階層零。而如果邏輯地真狀^是邏 輯階層零,則邏輯地假狀態是邏輯階層一。 在這裡用到的名稱「匯流排(bus)」被用來參照到可 被用來改變一個或多個許多型式的資訊如資料、位址、控 制或狀態的複數個信號或導體。這裡被討論到的導體可被 說明或描述關於成為單一導體,、複數個導體、單向導體或 雙向導體。然而,不同的實施例可改變導體的實施方法。 舉例來說,可使用分開的單向導體而不是雙向導體且反之 亦然。此外,連續地或在時間多工方法地(比a multiplexed manner )改變多重信號的單一導體可取代複數6 個導體。同樣地,攜帶多重信號的單一導體可被分割成禆 帶這些信號的子組的許多不同導體。所以,改變信號存^ 許多選擇。 A 1此技蟄之人士在思考揭露在此的規格與實行方 法後將明白本申請案的揭露的其他實施例、用途與優點。 規格與圖式應该僅被視為示範的,且因此本申請案的揭恭 94245 20 200841238 ,的範圍是意指只限於下列申請專利範圍與其相等之物。 • 【圖式簡單說明】 , 藉由參照附帶的圖式,對於熟習該行技術的人,本申 請案之揭露可被較容易地理解且它許多的特色與優點將變 得顯而易見的。 第1圖係為依知本申请案之揭露的至少一個的實施例 來使=的多重分支預測結構的範例處理震置的方塊圖。 弟2圖係為依照本申請案之揭露的至少一個的 的範例分支預測/提取模組的方塊圖。 只 =弟1圖的分支預測/提取模組的 :< 方塊圖。 刀又頂利子拉組的 在不同圖式中使用相同參考符號 的項目。 Α糸代表相似或相同 【主要元件符號說明】 100 處理裝置 102 處理器 104 記憶體 106、 108周邊裝置 110 北橋 111 執行管線 112 指令快取 114 資料快取 122 才曰令提取階 94245 21 200841238 124 指令解碼階段 126 排程器階段 128 執行階段 130 退出階段 132 分支預測/提取模組 134 分支解析資訊 202 分支識別碼模組 204 分支預測子模組 206 下個指令提取模組 208 分支歷史表 210 分支歷史管理模組 212 提取組 214 指令缓衝區 216 分支識別碼表 222 分支指令 224 分支指令 302 分支預测子表 302 多工器 304 多工器 306 複數個項目 310 小項 312 小項 314 小項 316 小項 22 94245 200841238 1 318 檢索表 ^ 322 選擇信號(SEL1 ) * 324 選擇信號(SEL2) 330 散列邏輯 332 散列邏輯 ‘334 散列邏輯 23 94245

Claims (1)

  1. 200841238 十、申請專利範圍· 1 · 一種方法,係包括下列步驟: 決定,在處理裝置中,與第一指令組的第一分支 指令相關聯的分支歷史數值,此分支歷史數值代表第 一分支指令之前的程式流程的分支歷史; 決定,在處理裝置中,以第一分支指令的分支歷 史數值及第一分支指令相關聯的第一識別碼為基礎的 第一分支指令的第一分支預測; 決定,在處理裝置中,以第一分支指令相關聯的 分支歷史數值與第二分支指令相關聯的第二識別碼為 基礎的第一指令組的第二分支指令的第二分支預測, 該第二分支指令接在程式流程裡的第一分支指令之後 發生;以及 提取以至少一個的第一分支預測和第 2· 3· 為基礎的處理裝置裡的第二指令組。 2請專利範圍第1項之方法,其中,該指令組匕 連績指令的組。 值t:專利乾圍第1項之方法’其中,該分支歷史; ^括代表程式流程的至少-部份分支錢的位^ 置〇 • 申μ專利範圍第1 ϋ > #—土 ^ , 去苑、m 弟項之方法,其中,該決定第二 支預測之步驟包括決 一八士 花决疋弟一分支預測時平行地決定 刀支預測。 5·如申請專利範圍第4項 貝之方法,其中,該第一分支 94245 24 200841238 測與第二分支預測在處理裝置的同一個時鐘週期内做 決定。 6·如申請專利範圍第1項之方法,其中·· 該第—識別碼包括與第一分支指令相關聯的 指令位址;而 、 該第二識別碼包括與第二分支指令相關 指令位址。 ^ ^ 7. 如申請專利範圍第1項之方法,其中: 第—分支指令的第—分支預測之步驟包括 決疋儲存在分支預測表的第一位置裡的第一數值,該 第一數值為第一分支預測的代表且該第一位置係以°第 -分支指令和第一識別碼為基礎來被識別:以及 ^决定第—分支指令的第二分支預測之步驟包括 2定儲存在分支預測表的第二位置裡的第二數值,該 第二數值為第二分支預測的代表且該第二位置係以第 刀支扣7和第一識別碼為基礎來被識別。 8. 如申請專利範圍第7項之方法,其中,該決定第二數 值之步驟包括決定該第二數值時平行地決定該第I數 值。 9. 如申請專利範圍第7項之方法,其中,該第一位置包 括分支預測表的一個項目的第―小項而該第二位置包 括分支^則表的此項目的第二小項,該分支預測表的 此項目k以破至少一個的第—識別碼與第二識別碼 列的預測歷史數值的第—部分為基礎來被索引在該分 94245 200841238 二、内’該第一小項以預測歷史數值的第二部分 々、-:份的第一識別碼為基礎來被索引在此項目 一立’=該,二小項以預測歷史數值的第二部分和至少 部份的第二識別碼為基礎來被索引在此項目中。 .如申請專利範圍第9項之方法,其中:、 和卜% 彳項係以使用第二部分的預測歷史數值的 =散列運算與至少—部份的第—識別媽為基礎來被 索引;以及 —該第二小項係、以使用第二部分的預測歷史數值的 f-散料算鼓少—部份的第二朗碼為基礎來被 —種方法,係包括下列步驟: 決定,在處理裝置中,與第一指令組的第一分支 ♦曰令相關聯的第一識別碼以及與第一指令組的第二分 支指令相關聯的第二識別碼,該第二分支指令接:程 式流程裡的第一分支指令之後發生; 決定,在處理裝置中’代表第一分支指令之前的 程式流程的分支歷史的分支歷史數值; 索引以分支歷史數值為基礎的分支預測表的第一 項目,該第一項目包括複數個小項; 選擇以第-識別碼為基礎的分支預測表的第一項 目的第一小項; 、 項目的第一小項的第二 第二項目的第二小項; 選擇以平行選擇於該第一 識別碼為基礎的分支預測表白勺 94245 26 200841238 決定以儲存在該第—小 -分支指令的第一分支預測·:、弟-數值為基礎的第 決定以儲存在該第-丨 二分支指令的第二分項=二數值為基礎的第 提取以至少一個第一八 基礎的第二指令組。刀支預測和第二分支預測為 12·如申請專利範圍第u項之方 ^ 、 法,其中·· 呑系第一識別碼包括盘筮— 指令位址;以及 /、 1支指令相關聯的第一 該弟一識別碼包括愈第-八 指令位址。 弟-刀支指令相關聯的第 13·如申請專利範圍第12項之方 佶白妊补本$ I y 、 法’其中,該分支歷史數 值表至少-個部分的分支歷史的位元向量。 14·如申研專利靶圍第13項之方法,其中·· 該索引分支預測表的項目 ^ ^ - ΛΑ ^ 、目之步驟包括索引以使用 位::竭一部份與至少—個的第一指令位址和第 二^位址的—部份的第-散列運算為基礎的項目; 引以支預測表的項目的第一小項之步驟包括索 使用弟二部分的位元向量與至少一部份的第一指 令位址的第二散列運算為基礎的第一小項;以及 、索引分支預測表的項目的第二小項之步驟包括索 引以使用第二部分的位元内旦 7位兀向里與至少一部份的第二指 令位址的第三散列運算為基礎的第二小項。 15· —種處理裝置,包括·· 94245 27 200841238 , -個分支歷史表’係儲存代表第一指令〜 ' >支指令之前的程式流程的分支歷史的分支歷史=一 值,該第一指令組復包括接在程式流程裡的第一八 指令之後發生的第二分支指令;以及 为支 一個分支預測子模組,係以分支歷史數值、 分支指令相關聯的第一識別碼與第二分支指令: 的第二識別碼為基礎來決定第一分支指令的第一二如 • 預測與第二分支指令的第二分支預測。一分支 16·如申請專利範圍第15項之處理裝置,其中: 該第-識別碼包括與第一分支指令相關 指令位址;以及 ¥ 該第二識別碼包括與第二分支指令相 指令位址。 卜^弟一 I7.如申請專利範圍第15項之處理裝置,其中,該分支谔 鲁 史數值包括代表至少—部份分支歷史的位元向量刀。^ 8·如申請專利範圍第15項之處理裝置,其中,該八 測子模組包括: -個分支預測表’係包括以分支歷史數值為基礎 的可加索引的複數個項目,每個複數個項目包括複數 個小項; 一個第一多工器,係包括第一複數個資料輸入, 每個資料輸入可以結合到對應的分支預測表的被索引 的項目的小項、被配置以至少一部分的第一識別碼為 基礎來接收第一控制數值的選擇輸入與提供代表以第 94245 28 200841238 控制數值為基礎選擇自第—複數個資料輸入的第一 分支預測的第一預測數值的輸出;以及 一個第二多工器,係包括第二複數個資料輸入, 每個資料輸入可以結合到對應的分支預測表的被倉引 的項目的小項、被配置以至少一部分的第二識別碼為 基礎來接收第二控制數值的選擇輸入與提供代表以第 -控制數值為基礎選擇自第二複數個資料輸入的第二 . 分支預測的第二預測數值的輸出。 19.如申請專利範圍第18項之處理裝置,其中,該第一 ^ 工器與該第二多工器被配置來平行地輸出該第二預測 數值與該第二預測數值。 20·如申請專利範圍第18項之處理裝置,復包括: 第-散列邏輯,係組構成執行使用—部份的分支 歷史數值與至少-部份㈣—識別碼的第“散列運 以產生弟一控制數值;以及 第二散列邏輯,係組構成執行❹—部份 歷史數值與至少-部份的第二識別碼的第二散列 算0 94245 29
TW097106017A 2007-02-28 2008-02-21 Parallel prediction of multiple branches TW200841238A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/680,043 US20080209190A1 (en) 2007-02-28 2007-02-28 Parallel prediction of multiple branches

Publications (1)

Publication Number Publication Date
TW200841238A true TW200841238A (en) 2008-10-16

Family

ID=39415404

Family Applications (1)

Application Number Title Priority Date Filing Date
TW097106017A TW200841238A (en) 2007-02-28 2008-02-21 Parallel prediction of multiple branches

Country Status (3)

Country Link
US (1) US20080209190A1 (zh)
TW (1) TW200841238A (zh)
WO (1) WO2008106208A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
TWI549054B (zh) * 2011-12-28 2016-09-11 英特爾股份有限公司 用於分支預測錯誤之賦能及去能第二跳越執行單元之技術
TWI552069B (zh) * 2012-05-30 2016-10-01 蘋果公司 載入-儲存相依性預測器、用於在載入-儲存相依性預測器中處理操作的處理器與方法
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103646009B (zh) 2006-04-12 2016-08-17 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
CN103635875B (zh) 2011-03-25 2018-02-16 英特尔公司 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
US10140138B2 (en) * 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US10402200B2 (en) * 2015-06-26 2019-09-03 Samsung Electronics Co., Ltd. High performance zero bubble conditional branch prediction using micro branch target buffer
KR102635965B1 (ko) * 2015-06-26 2024-02-13 삼성전자주식회사 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법
US20170371669A1 (en) * 2016-06-24 2017-12-28 Qualcomm Incorporated Branch target predictor
CN106406823B (zh) 2016-10-10 2019-07-05 上海兆芯集成电路有限公司 分支预测器和用于操作分支预测器的方法
US20190369999A1 (en) * 2018-06-04 2019-12-05 Advanced Micro Devices, Inc. Storing incidental branch predictions to reduce latency of misprediction recovery
US11086629B2 (en) * 2018-11-09 2021-08-10 Arm Limited Misprediction of predicted taken branches in a data processing apparatus
US11698789B2 (en) * 2020-10-12 2023-07-11 Microsoft Technology Licensing, Llc Restoring speculative history used for making speculative predictions for instructions processed in a processor employing control independence techniques
US20230315469A1 (en) * 2022-03-30 2023-10-05 Advanced Micro Devices, Inc. Hybrid parallelized tagged geometric (tage) branch prediction

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519841A (en) * 1992-11-12 1996-05-21 Digital Equipment Corporation Multi instruction register mapper
JPH10333908A (ja) * 1997-05-30 1998-12-18 Mitsubishi Electric Corp 分岐予測方法
US6289441B1 (en) * 1998-01-09 2001-09-11 Sun Microsystems, Inc. Method and apparatus for performing multiple branch predictions per cycle
US6272624B1 (en) * 1999-04-02 2001-08-07 Compaq Computer Corporation Method and apparatus for predicting multiple conditional branches
KR100395763B1 (ko) * 2000-02-01 2003-08-25 삼성전자주식회사 멀티프로세싱 마이크로프로세서에 적합한 분기 예측기
US7139903B2 (en) * 2000-12-19 2006-11-21 Hewlett-Packard Development Company, L.P. Conflict free parallel read access to a bank interleaved branch predictor in a processor
US20050228977A1 (en) * 2004-04-09 2005-10-13 Sun Microsystems,Inc. Branch prediction mechanism using multiple hash functions
US7590830B2 (en) * 2004-05-28 2009-09-15 Sun Microsystems, Inc. Method and structure for concurrent branch prediction in a processor
US7523298B2 (en) * 2006-05-04 2009-04-21 International Business Machines Corporation Polymorphic branch predictor and method with selectable mode of prediction

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI549054B (zh) * 2011-12-28 2016-09-11 英特爾股份有限公司 用於分支預測錯誤之賦能及去能第二跳越執行單元之技術
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
TWI552069B (zh) * 2012-05-30 2016-10-01 蘋果公司 載入-儲存相依性預測器、用於在載入-儲存相依性預測器中處理操作的處理器與方法
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads

Also Published As

Publication number Publication date
US20080209190A1 (en) 2008-08-28
WO2008106208A1 (en) 2008-09-04

Similar Documents

Publication Publication Date Title
TW200841238A (en) Parallel prediction of multiple branches
EP2850515B1 (en) Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media
CN104067282B (zh) 状态机晶格中的计数器操作
TWI465945B (zh) 用於型樣辨識處理器中降低電力消耗之方法及裝置
US9600289B2 (en) Load-store dependency predictor PC hashing
US20140149722A1 (en) Fusing Immediate Value, Write-Based Instructions in Instruction Processing Circuits, and Related Processor Systems, Methods, and Computer-Readable Media
TW201030612A (en) Pipelined microprocessor with fast conditional branch instructions based on static exception state
TW201032085A (en) Pattern-recognition processor with matching-data reporting module
JPS62106545A (ja) 分岐命令の結果予測装置
JP2015534659A (ja) 状態機械エンジンをプログラミングするための方法およびデバイス
US20140281429A1 (en) Eliminating redundant synchronization barriers in instruction processing circuits, and related processor systems, methods, and computer-readable media
US9400752B1 (en) Store forwarding cache
US10078516B2 (en) Techniques to wake-up dependent instructions for back-to-back issue in a microprocessor
JP2001184211A (ja) 処理システムにおいてスタックのポップおよびプッシュ動作を行なうための装置および方法
CN110096701A (zh) 消息转换处理方法、装置、存储介质及电子设备
Raja et al. A hybrid named entity tagger for tagging human proteins/genes
US20140047221A1 (en) Fusing flag-producing and flag-consuming instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media
US10740104B2 (en) Tagging target branch predictors with context with index modification and late stop fetch on tag mismatch
Gero et al. Word centrality constrained representation for keyphrase extraction
WO2015055062A1 (zh) 数据文件写入方法及系统、数据文件读取方法及系统
US9858077B2 (en) Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media
US5838944A (en) System for storing processor register data after a mispredicted branch
US20200142697A1 (en) Instruction completion table with ready-to-complete vector
US20190065196A1 (en) Reduced logic level operation folding of context history in a history register in a prediction system for a processor-based system
US20230195517A1 (en) Multi-Cycle Scheduler with Speculative Picking of Micro-Operations