TW455810B - A method and apparatus for branch prediction using a second level branch prediction table - Google Patents
A method and apparatus for branch prediction using a second level branch prediction table Download PDFInfo
- Publication number
- TW455810B TW455810B TW088113818A TW88113818A TW455810B TW 455810 B TW455810 B TW 455810B TW 088113818 A TW088113818 A TW 088113818A TW 88113818 A TW88113818 A TW 88113818A TW 455810 B TW455810 B TW 455810B
- Authority
- TW
- Taiwan
- Prior art keywords
- address
- branch
- bpt
- branch prediction
- patent application
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 18
- 230000015654 memory Effects 0.000 claims description 10
- 230000002079 cooperative effect Effects 0.000 claims description 8
- 239000000872 buffer Substances 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 4
- 239000013589 supplement Substances 0.000 claims 2
- 230000003068 static effect Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 8
- VVTNSTLJOVCBDL-UHFFFAOYSA-N 4-[[3,5-bis(trimethylsilyl)benzoyl]amino]benzoic acid Chemical compound C[Si](C)(C)C1=CC([Si](C)(C)C)=CC(C(=O)NC=2C=CC(=CC=2)C(O)=O)=C1 VVTNSTLJOVCBDL-UHFFFAOYSA-N 0.000 description 2
- 239000004020 conductor Substances 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 101100368700 Caenorhabditis elegans tac-1 gene Proteins 0.000 description 1
- 208000036343 KIF1A related neurological disease Diseases 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000000875 corresponding effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Description
A7 B7 45^81〇 五、發明說明( 發明領域 本發明係相關於電腦系統’更特定於— J用第·一階與第 二階分支預測表執行分支預測的處理器。 、 發明背景 高等處理器採用管線技術來非常高速地執行指人。在匕 樣的處理器上,整個的機器被組織成多個 : \&線,包含幾個 率接級的硬體。指令的處理被劃分為—連_的動作,而每 個動作係由相對應管線級Γ導管級")中的硬體執行;Z幾 個指令無關的動作可以由不同的導管級同時處理,增加此 處理器的指令處理量。其中管線的處理器包含在每個導管 級中的多個執行資源,此處理器的處理量可以超過每時鐘 週期一個指令。要完全利用指令的執行能力,必須從正= 的執行路徑提供足夠的指令給此處理器的執行資源。 經濟部智慧財產局員工消費合作 '社印製 在典型的電腦系統中,一指令指標(ΙΡ)指引此處理器從 此程式碼的一個指令到下一個指令。一指令可以指引ΙΡ 以晋通的程式碼順序到下一個指令,或者它可以指引工Ρ 跳過一部份的程式碼並繼續執行非連績性的指令。使得處 理5或繼績依序地執行下一個指令或"分支,,到—不同, 4 L η彳Ej令的心令稱為分支指令。例如,當字處理器做了 扭平檢查,執行軟體指令來驗證每個字是正確的拼字。只 要子把得正確,此指令便依序地執行。然而,一旦發現不 正確括字的字,一分支指令指引I p分支到一副程序,其 週知使用者此不正確的拼字。這個副程序接著由處理器執 行。 -4™ 氏張尺度翻_關家標準(CNS)A4規格(21ϋ X 297公爱) 5 經濟部智慧財產局員工消費合作社印製 4
B 1 Q A7 ---—---- B7 五、發明說明(2 ) 分支指令提出保持管線填滿來自正確執行路徑之指令的 王要挑戰。當執行-分支指令而分支條件滿足時,處理器 的控制流程跳到-個新的程式順序,&自新程式碼順序的 指令轉移到此管線。分支執行通常發生在管線的後端,而 指令則是在管線的前端取回。如果指令的取回依賴分支的 執行來決定正確的執行路徑,在分支條件決定出來之前, 此處理器管線可能填滿來自錯誤執行路徑的指令。這些指 令接著可能必須要自管線中清除掉,在來自正確執行路徑 的指令取回的同時讓受到影響的管線級中的資源間置。此 間置的管線級參考為管線氣泡’因為在它們被填入來自正 確執行路徑的指令前所提供的無用的輸出。 現代的處理器納入分支預測模组在它們的管線前端,以 降低管線氣泡的數目。當分支指令進入管線的前端時,當 它在管線後端執行時此分支預測模组預測是否這個分支指 令將被採用。如果預測此分支會被採用(非順序性的指令 執行)’此分支預測模組提供一分支標的位址給指令取回 模組’藉由設定此I P位址等於包含分支的程式碼之第一 個指令的位址來將此I p轉向。包含分支的程式碼之第— 個指令的位址稱為"標的位址,,。此取回模组,其同樣位 在管線前端的,開始從此標的位址取回指令。如果,反過 來說’一分支預測器預測將不會採用此分支(順序的指令 執行),此分支預測器遞增此I P位址,這樣I p則指向益通 程式碼順序的下一個指令。當分支執行發生在管線後端 時’此處理器可以驗證在前端做出的預測是否正確。如果 -5- 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) i Ί ί- I ---!裂…— . (請先閱讀背面之注意事項莽:.寫本頁) 訂· -線_ 4 5 5 8 1 0 A7 B7 五、發明說明(3 ) 是不正確的,此管線被清除掉。此分支預測的準確度越 高,管線氣泡及清除掉的數目越少。 經濟部智慧財產局員工消費合作社印製 傳統的分支預測模组採用分支標的緩衝器(BTBs)來错 存預測輸入項,其包含的資訊例如是否採用一分支及在分 支被採用時可能的標的位址。這些分支預測輸入項與包含 分支指令的此IP位址結合。對於在分支預測表中追赖的 每個I P位址,其結合的分支預測輸入項包含此I ρ位址與 歷史資訊,其有助於預測此分支是否在將來會被採用。然 而,即使在B T B中指令的查閱處理,決定出是否採用此 分支’以及在被採用的預測提供標的位址給取回模組,造 成再導引此處理器到此標的位址的延遲°這項延遲可以讓 來自錯誤執行路徑的指令進入並在管線中傳播向下。因為 這些指令並未加到預測執行路徑的向前進行,當它們被清 除掉時其在管線中建立”氣泡”。更為準確及完整的分支 預測演繹(利用較大尺寸的分支表)花更久時間來完成並在 再導處理中產生更大的延遲。再引導此管線所需要的時 鐘週期數目越大,則在管線中產生的氣泡數目越大^因此 在存取分支預測結構的速度及這些結構内容的大小與準確 度要有折裒。對於速度及成本的原因,現代的處理器經常 會限制所採用B T B的大小。這會降低分支檢測及預測的 準確度,特別是在大工作量時。假定較小尺寸的B τ B, 有時必須以新的分支預測輸入項覆寫較舊的分支預測輸入 項=如裝一結合被覆寫分支預測輸入項的分支指令接著由 處埋器重新執行,並沒有存在歷史資訊來幫助此分支預刹 -6 - 本紙張尺度適用中國國家標準(CNS)A4規格(210 X 297公釐) 45531 〇 A7 B7 五、發明說明(4 ) 盗預測此分支是否被採用。結果,分支預測準確度減低, _低了處理器的效能。當軟體應用程式大小增加時,在這 些應用程式中分支指令的數目也增加,而分支預測表的限 制大小變成很大的問題。因此需要提供一解決方案,其提 供最頻繁分支子集的低延遲分支預測(那些具高位置關 係)’並再提供整體工作集的有意義預測。 發明概要 說明的是一個分支預測器。一第一分支預測表連結到一 Ϊ P產生器來儲存分支預測輸入項。一第二分支預測表也 速結到此1 p產生器來儲存較大數目的分支預測入項。 根據本發明的具體實例,可找出此兩個層次的分支預測 結構來結合高速(低延遲)分支預測及分支的最高位置關係 的再引導的好處,以及整體高準確度的分支檢測及大型即 使降低速度的整體工作集合的預測。這可以完成而不需要 預測大小相當的成長。本發明的其他特色及優點將從隨附 圖式及梃面的詳細說明變得明顯。 圖式簡述 本發明藉由範例的方式加以說明但不受隨附圖式的眼 制’其中類似參考指示出類似的元件,其中: 圖2顯7F根據本發明之一具體實例的分支預測管線; 圆3顯不出圖2的分支預測器;以及 圆1為顯示本發明之方法的流程圖。 詳細說明 說明一具有第一階與第二階分支預測表之處理器的分支 -7- 本紙張尺度1¾用中國國豕標準(CNS)A4規格(210x297公髮) i:---,-ιϊ! -裝 i — (請先閲讀背面之注意事項寫本頁) 訂_ ΐ 經濟部智慧財產局員工消費合作社印製 4 5 5 8 1 〇 a? B7 經濟部智慧財產局員工消f合作社印製 五、發明說明(5 ) 預測器。一起始的指令指標(I P )位址由I p產生器所產 生。在此第一階(L 1 )的分支預測表(BPT )及第二階(L2) BPT中搜尋與起始I P位址結合的分支預測輸入項。對於本 發明的具體實例,此L1 BPT為結合性的(也就是,完全結 合或多向集合結合的)而L2 BPT是直接對映的。 因為此LI BPT為結合性的,分支預測輸入項被加上標 籤’而這些標籤,與分支預測資訊一起,被儲存在u BPT。在直接對映L2 BPT中的分支預測輸入項沒有加上標 籤,所以只有分支預測資訊儲存在L2 BPT中。因為L1 BPT中的分支預測輸入項大於L2 BPT中的分支預測輸入 項,此L2 BPT在與U BPT相同量的空間中可以有較多的 分1預測輸入項=因而,雖然LI BPT可比L2 BPT更為準 確及更快,此L2 BPT當做是LI BPT的"備援·•,可以讓額 外的分支預測資訊儲存在相當小量增加的處理器大小。藉 由在一處理器中同時包含LI BPT及L2 BPT,分支預測準 確度及整體的速度可同時改善而不須大量增加硬體成本。 力外’適度的增加L2 BPT的大小可以進—步的增強儲存 容量以便用大工作集合維持程式中的大量分支。 糾不結合起始I p位址的分支預測輸入項在[1 bpt中找 到(稱為L I BPT的”命中"),則與此輸入項結合的分支預 測访訊被用來預測一分支被採用或不採用(也就是,預測 接F來的i p位址)。如果與此起始I p位址結合的分支預測 輸入’未在此L 1 BPT找到(稱為LI BPT中的,'失誤"),則 與此[P位址結合的指令被解碼來決定其是否為分支指 -8- 本紙張尺度適用中國國家標準(CNS)A4規格(210 x 297公釐〉 --:---.---------裂 *-- (請先閱讀背面之注意事項里本頁) >SJ· Γ 線· ^6 58 1 〇
經濟部智慧財產居員工消費合作社印製 五、發明說明(6 ) 々。如果是分支指令’則來自L2 BPT的分支預測資訊被 用來預測一分支的採用或不採用。 對於本發明的替代具體實例,此軟體提供對此處理器的 提π來幫助分支預測。對此具體實例,這些提示係用來決 足疋否使用此來自L2 ΒΡΤ的分支預測資訊或在軟體本身 解碼的分支預測資訊來預測—分支被採用或不採用。 —兩層次的分支預測器設計,例如可以發現這對用來執 行大型應用私式的處理器特別有用,例如那些在词服器及 工作站上執行的。本發明的具體實例的更詳盡說明,包含 不同組態及貫作’在下面提供°圖1為顯示本發明之方法 的流程圖。在步騾205上’對Li&L2分支預測表搜尋與 起始I P位址結合的分支預測輸入項。此Li BPT為—加上 標籤’結合性的表而L2 BPT為未加標籤直接對映的表。 對一具體實例,此LI BPT儲存比丄2 bpt為少的分支預測 輸入項’但此LI BPT較快且提供比L2 BPT更好的分支預 測+確度。因為此L1 BPT儲存較少的分支預測輸入項, 此LI BPT只儲存最近使用到的那些分支預測輸入項,因 而,最可能在最近的未來再次使用到的。 在圖I的步驟210上’決定出在結合起始丨^位址的 BPT中是否有命中。如果在LI BPT有命中,接著在步驟 2 1 5決定出是否結合起始I p位址的l 1 BPT中的分支預測 資訊指示出此分支應被預測為採用。如果此分支預測為採 用1則在步驟2 2 0上接下來的〖p位址再引導至來自τ a匸 或R S B的位址°如果,取而代之的,此分支預測為不採 -9 - 本紙張尺度適用令國國家標準(CNS)A4規格(210x 297公釐) ------.--------I --- (請先閱讀背面之注意事項表ί'寫本頁) 1Γ ;線. 45 581 〇 Α7 五、發明說明(7 ) 用,則在步騾2 2 5沒有再引導信號送出。 如果在LI BPT中沒有命中(L 1 BPT中的失誤),一解瑪 器在圖1的步驟2 3 0上解碼至少部份的指令來決定出結合 起始I P位址的指令為一分支指令。如果決定出此指令為 一分支指令’一標的位址也由解碼器在步騾2 3 〇做解碼, 以及是否此指令為一回傳。對其中分支預測命中由分支指 令提供到分支預測器的具體實例,此解碼器也在步驟2 3 〇 上解碼此命中資訊。 如果在圖1中的步驟2 3 5上決定出此指令不是分支指 令,則在步驟2 4 0上没有任何再引導信號送出。如果此指 令經決/i出為一分支指令,則接下來在步驟2 5 〇決定結合 此刀支‘令的命中疋否為靜態的。應注意到本發明的一替 代具體實例其中沒有實作命中,步驟25〇及26〇被除去, 而如果決定出此指令為一分支,則此處理流跳過步騾2 3 5 到步项:2 5 5 。 經濟部智慧財產局員工消費合作社印製 如果結合此分支指令的命中不是靜態的(也就是,是動 恐的)’則在圖1的步驟2 5 5上接著決定結合起始〗p位址的 L2 B PT中的分支預測資訊是否表示出此分支應預測為採 用=如果分支經預測為採用的,則在步驟265上此接下來 i p位址被再引導,預測接下來的t p為來自丁 A c、r s b的 位址(如果決足出指令為—回傳指令),或是由解碼器解碼 的位址。如果,取代的,此分支預測為不採用的’則在步 驟2 4 0上沒有再引導信號送出。 如裒,取代的,與此分支指令結合的提示為靜態的,則 -10- 本紙張尺度適用中國國家標準(CNS)A4規格(210 x 297公釐) 455810 A7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(8 ) 接下來在圖1的步騾260中決定出此提示是否表示此分支 應被預測為採用或不採用。如果此分支被提示為採用,則 此處理流程如上述的繼續到步驟2 6 5。如果,取代的,此 分支被提示為不採用’則此處理流程如上述的繼續到步驟 240 = 應注意到在本發明的具體實例中,在圖1的步驟2 2 〇或 2 2 5上做出的分支預測比步驟2 4 0或2 6 5上的分支預測為 較早完成。 圖2顯示根據本發明的具體實例之分支預測管線。根據 圖2的管線’ I p多工器^ 0的輸出提供起始I p位址到遞增器 2 0 ’第一階(l 1 )分支預測器2 1及第二階(L 2 )分支預測器 2」遞心器20適當的遞增起始ιρ位址來產生接下來的ip L址並在第一管線級期間内提供接下來I p位址回到1 p 多工器10的輸入。IP遞增器20採用起始IP位址並以預定 I:遞増之=此加到起始I p位址的遞増量是將要執行的程 式碼的儲存連續性指令或指令群之兩個連續記憶體位址間 的差異。 分支預測器2丨可以產生一再引導信號並提供此信號 到丨P控制1 1的輸入。此信號指示出是否接下來的丨p位址 與此起始IP位址是連續的。如果L1分支預測器21送出再 引導信號到IP控制丨丨,這表示接下來的IP是非連續性 的,而Li分支預測器21接著在第二管線級期間内提供接 下來的I P位址到丨P多工器i 〇的輸入a L2分支預測器22還可以產生一再引導信號並提供此信 -11 - 本紙張尺度通用中國國家標準(CNS)A4規格(210 χ 297公釐) -1 ----------I------ (請先閱讀背面之注意事項寫本頁> iJ_ Γ -線_ 5 經濟部智慧財產局員工消費合作社印製 4 8 1 〇 Α7 --------B7 五、發明說明(9 ) 號到I P控制1 1的另一個輸入。此信號同樣的指示是否接 下來的I P位址與起始的I P位址為連續的。如果L 2分支預 測器2 2送出再引導信號到丨p控制1 1,這表示接下來的I P 是非連續的’而L 2分支預測器2 2接著在第三管線及期間 内提供接下來的1 P位址到I P多工器I 0的輸入。 I P控制1 1接著決定出,根據來自L 2分支預測器2 2及 L 1分支預測器2 1的信號,I p多工器1 〇的三個輸入中的那 一個會傳遞到此多工器的輸出,如果L I分支預測器2 i及 L 2分支預測器2 2都不送出再引導信號,來自遞增器2 〇的 遞增IP位址被選為來自多工器的接下來11}位址輸出。 如果L 1分支預測器2 t送出再引導信號,來自l丨分支預測 器2 1輸出的I p位址被選為來自多工器1 〇的接下來丨p位 址輸出。如果L 2分支預測器2 1送出再引導信號,來自L 2 刀支預測器2 1輸出的I p位址被選為來自多工器1 〇的接下 來丨P位址輸出。應注意到在此使用的’術語,,起始丨p位址 V考到任意I P位址,其用作預測接下來丨p位址的參考 加 畦始I P位址"並不限制於結合特定軟體應用程式的 0 —吖程式碼的I P位址。起始丨p位址可以是結合—應用 程式 < 任意行程式碼的任意丨p位址。圖3顯示根據本發明 具體rr例 < 圖2中L I分支預測器2丨及L 2分支預測器2 2。 圖3的分支預測器可以整個的包含在與此分支預測I為之 做分支預測的處理器同一個半導體基質上。對另_個具體 赏分:‘此分支_器的一或多個功能方塊位在分開的丰導 體基質上。例如,要減少處理器的整個大小,L2BPT i⑽ -12- 4 5 5 8 1 〇 A7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(1Q ) 可以位在分開的丰導體基質上。L1 BPT 100為一結合表, 其包含由位址標籤參考的分支預測輸入項。每個位址標籤 結合一包含分支指令的1]3位址。LI BPT 1〇〇中的每個分支 預測輸入項包含,除了結合的位址標籤外,分支預測資 訊* °此分支預測資訊係由分支預測器用來預測此分支是否 被採用。儲存在L 1 BPT 1 〇〇中特定形態之分支預測資訊等 比例於分支預測器可實作之任何不同形態分支預測演繹法 則’其令許多為熟習本技藝人所熟知。例如,根據本發明 的具體實例’位置關係歷史預測演繹法則併同u Βρτ ι〇〇 一起製作。對於另一個具體實例,總體性歷史分支預測演 釋法則或計數器預測器(例如,2位元的上下計數器,也 習知為兩種統計分支預測器)製作在L1 BPT 100中。對於 替代的具體實例’ L1 BPT i00被分割兩或多個分開的分支 于貝測表,每個表實作不同的分支預測演繹法則。一選擇器 電路接著決定那個演繹法則可提供特定案例的最準確預測 並選擇適當的表。 對於本發明之一具體實例,圖3的LI BPT 100為一多向 集合結合。對於本發明的另一具體實例,LI BPT 100為完 全結合性的》要改善LI BPT 1〇〇中的分支預測輸入向的搜 尋速度’此表要保持相當的小,有大約5 1 2到2 K的分支 預測輸入項的儲存容量》 起始I P位址提供到圖3的L !分支預測器2 1。這個起始 1 P仏址係.用來搜哥LI BPT 100及標的位址快取記憶體 (TAC) 101 。如果此位址在li bpt中找到,這是—個命 -13- > t -I I J------I! *-- . \)/ <請先閱讀背面之注意事項严..一寫本頁) 訂! -Γ -線. 本紙張尺度適用t囤國家標準(CNS)A4規格(210 χ·297公楚) 4 5 5 8 1 0 A7 B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(11 ) 中’而一命中信號從命中/失誤信號線1 2 1送到A N 〇閉 I 4 4的輸入。如果此位址沒有在LI BPT 100中找到,遠是 一個失誤’而一失誤信號在命中/失誤信號線1 2 1上送 出。如果在LI BPT 100中有一命中,而LI BPT 100中的結 合輸入項指示此分支被採用,這是由在採用/不採用信號 線1 2 2上送到A N D閘1 4 4其他輸入的採用信號指示。如果 在LI BPT 100中有一命中,而LI BPT 100中的結合輸入項 指示出此分支不被採用,這是由在採用/不採用信號線 122上送出的不採用信號指示。如果有一命中從liBP 丁 100中取出,而此L1BPT還指示出此分支是一回傳,遠是 由在回傳/不回傳信號線1 4 3設定到多工器1 〇 6的控制輸 入之回傳信號指示。如果有一命中自L1 BPT 100取出,而 此LI BPT指示出此分支不是回傳,這是由在回傳/不回傳 k號線上1 4 3設定的不回傳信號指示。 如果在圖3的LI BPT 100中有一命中,而此LI BPT指示 出此分支被採用,A N D閘1 4 4輸出再引導信號到I p控制 1 1 :如果在LI BPT 100中有一失誤或或在LI BPT中不採 用命屮’ A N D閘1 4 4不輸出一再引導信號。如果a N D閘 1 4 4輪出一再引導信號,也從多工器1 〇 6輸出丨p位址。回 傳/不回傳信號線1 4 3決定多工器1 〇 6的輪出。如果信號 線丨4 3指示出此分支為一回傳指令,來自連結到多工器 1 0 6輸入的回傳堆疊緩衝器(RSB) ίο之回傳位址傳遞到 夕工,ίττ I 0 6的輸出’接著到I p多工器1 〇。如果信號線1 4 3 指示出分支不是回傳指令(對於LI BPT〗〇〇中的採用命 -14 - 本纸張尺度適用令國國家標準(CNS)A4規格(210 X 297公釐) - -------------裝 (請先M讀背面之注意事ifif:,寫本頁〕 Γ ----訂---------線
HKiη!Η~ΓΤΓΗML 4 5 5 8 1 〇 A7 _ _B7 經濟部智慧財產局員工消費合作社印製 五、發明說明(12 ) 中)’來自TAC 101的標的位址’其透過標的匯流排1 2 3連 結到多工器1 〇 ό的其他輸入,其傳遞到多工器丨〇 6的輸 出’並接著,到I P多工器1 〇。另外,在TAC 101中找到的 標的位址,與一命中失誤信號—起,也被提供到L 2分支 預測器2 2的多工器1 0 9輸入,如下面說明的。 圖3的L2 BPT 102為一包含分支預測輸入項的直接對映 表*其包含沒有位址標籤的分支預測資訊。此分支預測資 訊係由分支預測器用來預測~分支是否將被採用。儲存在 L2 BPT 102中的特定形態之分支預測資訊等比例於分支預 測器可實作之任何不同形態分支預測演繹法則,其中許多 為熟習本技藝人所熟知。某些這些分支預測演繹法則在上 面併同U BPT 100 —起說明。L2 BPT 102可以實作任何的 這些演繹法則或這些演繹法則的組合,不管Li BPT 100所 實作的演繹法則形態。 這是很優異的,特別是在成本上的考量,對於圖3的L2 B P T 1 0 2中贯作的分支預測演绎法則佔了極少量的空間。 因此’根據本發明的具體實例,L2 BPT 102實作出二位元 的計數器演繹法则做為它的分支預測方法。雖然二位元計 數器演繹法則可能不像,例如,在LI BPT 100中實作的本 地或總體的分支預測演繹法則一樣準確,一使用二位元計 數器演繹法則的分支預測表對每個分支預測輸入項只需要 兩個位元的儲存單元。實作本地的或總體的分支預測演繹 法則的分支預測表對於每個分支預測輸入項可需要恰好超 過兩個位元的儲存單元^藉由利用未加標籤的分支預測輸 -15- 本紙張尺度適用中國國豕標準(CNS)A4規格(21〇 κ 297公爱) (請先閱讀背面之注意事項导iv寫本頁) 裝 訂 Γ 線· 5 I. I: 45581〇 A7 _ ____ B7 五、發明說明(13 ) 入項及二位元計數器演繹法則,L2 BPT 102可用大約相同 量的空間儲存四到八倍或更多倍L1 BPT 100所可以儲存的 分支預測輸入項。因此’對於本發明的一個具體實例,L2 BPT 102有相當大的儲存容量大約2 κ到8 κ或更多的分支 預測輸入項。對一具體實例,其中L2 ΒΡΤ是未加標籤 的,一沒有結合的靜態提示(在下面更詳盡說明的)的分支 可以在失效後更新L2 ΒΡΤ預測。 儲存在結合起始I Ρ位址的分支預測輸入項中的分支預測 資訊從圖3的L2 ΒΡΤ 102讀取,而一採用或不採用的分支 預測利用這項資訊加以計算。取決分支的預測,採用或不 採用信號在t / η線1 2 6上送到多工器I 〇 7的輸入。對本發 明的具體實例’其中的L2 ΒΡΤ 102是直接對映的,總是會 有命中在這個表中。這表示某些百分比的這些命中可結合 一個I Ρ位址與不同I ρ位址的分支預測資訊。避免此問題 的一個方式為將位址標籤儲存在L2 ΒΡΤ 102中,並將那些 標奴與進來的I Ρ位址的標籤做比較。然而,藉由不儲存 標蕺在L2 ΒΡΤ 102中降低表大小之成本效益,可以發現比 儲存標蕺而獲得增加的分支預測準確度更有價值。 利m來自圖3之I Ρ多工器丨〇的ί Ρ位址對輸入指令緩衝器 1 0 3搜分而結合的指令提供給指令解碼器1 〇 4。對本發明 之一具體實例’解碼器1 〇 4部份或完全的解碼此指令來決 定出此指令是否為一分支指令,並且,如果是的話,解碼 器颔外的決定出此標的位址以及此指令是否為一回傳。取 決於此指令是否為一分支(或回傳),適當的信號經由b/nb -16- 本紙張尺度適用中國國家標準(CNS)A4規格(210 χ 297公釐) I _---1----!·裝 i ! (諳先閱讀背面之注意事項^.'寫本頁) Γ .線- 經濟部智慧財產局員工消費合作社印製 4-55810 Α7 Β7 五、發明說明(14 ) 線1 2 9送到A N D閘1 0 8的輪入。標的位址i 3 〇從解碼器 104送到多工器1〇9的輸入。 對其中分支預測提示包含在此指令中的—具體實例,圖 3的解碼器1 〇 4還決定出此分支預測提示是靜態的或是動 態的,並也’如果是靜態的,此解碼器決定出此提示為採 用的或不採用的。一指示此提示為靜態的或動態的信號經 由s/d提示線1 2 7提供到多工器! 0 7的控制輸入。一指示出 提πτ為採用或不採用的信號經t/ll提示線1 2 8提供到多工器 1 0 7的一個輸入。一靜態提示指示此分支預測器該結合的 分支指令應總是預測為採用或不不採用(取決於採用/不採 用提示值)而不管在L2 BPT 102中找到的任何分支預測資 訊。一動態提示指示此分支預測器在L2 Βρτ 102中找到的 分支預測資訊應被用來預測此分支為採用的或不採用。對 於本發明的替代性具體實例,一包含動態提示的指令還包 含一採用/不採用提示’其用來做為此分支指令的起始執 行時的此分支預測。之後,儲存在分支預測表中的分支預 測資訊被用來決定此分支指令接下來的分支預測。 經濟部智慧財產局員工消費合作社印製 如果經由sM提示線1 2 7提供到圖3的多工器1 〇 7的控制 輸入信號指示出此提示為動態的,則此多工器選擇,做為 它的輸出,此跨t/n線I 2 6來自L2 BPT 102的採用/不採用 信號。如果提供到多工器1 0 7控制輸入的信號取代的指示 此提示為靜感的’則此多工器選擇,做為它的輸出,此跨 t/n線1 2 8來自解碼器1 〇 4的採用/不採用提示信號。對於 其中L 2 β P T F為加上標藏的具體實例,此提示為動態的, -17- 本紙張尺度適用中國國家標準(CNS)A4規格(210、297公g ) 5 4 經濟部智慧財產局員工消費合作社印製 58 10 κι -------一 _Β7____五、發明說明(15 ) 而在此L2 BPT中有一失誤,此解碼的預測仍然被使用。 對此具體實例’ 一來自L2 BPT 102的命中/失誤線(或其之 相反值)與s/d提示線1 2 7 (或其之相反值)ANDed (或 W ANDed) ’而其輸出連結到多工器丨〇 7的控制輸入。 如果'經由圖3 b/nb線1 2 9提供到A N D閘1 0 8的信號指示 〜&此IP位址的指令為一分支(或回傳)指令’而多工 盗1 0 7的輸出指數出此分支為採用的,則A N D閛1 〇 8輸出 一再引導信號到AN D閘1 4 1的一個輸入。否則的話, A NJ D閉I 〇 8並不輸出一再引導信號。a N d閘1 4 I的其他 輸入為連結到來自LI BPT 100的命中/失誤信號線1 2 1的 反向輸入。AN D閘1 4 1係工作來防止載引導信號送到I p 控制1 1,如果A N D閘1 〇 8的輸出指示為再引導,但在L1 BPT中有一命中。這是因為找到來自LI BPT 100的早期預 測可以比來自L2 BPT 102的晚期預測更為準確而做到。因 此’ KAND閘1〇8的輸出指示再引導且在[I bpt 10〇中有 —夫誤時,A N D閘1 4 1輸出一再引導信號到〗p控制M。 4 的多工器1 〇 9係由經r/nr信號線丨4 〇之來自指令解碼 :奋I 0 4的回傳/非回傳信號,及經由h/in信號線丨5 〇的tac I 〇丨命屮/失誤信號所控制。指令解碼器丨〇 4選擇多工器 1 〇 9 fi.]適當輸出-例如,如果n/nr信號線丨4 〇指示出此指 令為一回傳指令’來自回傳堆疊緩衝器(RSB)丨42 (提供到 L I分支預測器2 1的相同r s B輸出)的回傳位址,其連結 到夕工忘1 0 9的輸入’傳遞到多工器1 〇 9的輸出以及接下 來的,到丨P多工器1 〇。如果信號線1 4 〇指示出此分支不 -18 - 本纸張灵度適用中舀國家標準(CNSU4規格(210 X 297公釐) ------------------—裂--- (請先閱讀背面之注意事項^',窝本頁) . -線· 5 4 5 8 10 A7 ____ _B7______五、發明說明(Μ ) 疋一回傳指令(對於一個採用的分支來自丁AC 1 〇丨的標 的位址傳遞到多工器i 09的輸出,如果在TAC 1〇1中有一 命中’如h/m信號線1 5 〇所指示的。否則的話,由解碼器 1 0 4解碼的標的位址並經由標的匯流排i 3 〇提供到多工器 1 0 9的另一個輸入傳遞到多工器1 〇 9的輸出。 接下來的I P預測接著提供給處理器,而位在該位址的指 令由此處理器執行。這項預測稍後被決定為正確的或不正 確的=結合此分支預測指令的儲存在Li BPT 1〇〇及在L2 BPT 1 02中的分支預測資訊可接著被更新來改善下次分支 指令執行的預測準確度。對於本發明之一具體實例,如果 結合一分支指令的I P位址在此L1 bpt中失誤而此分支指 令並未提供一靜態提示,此L〗BPT被更新來包含一結合 此丨P位址的分支預測輸入項。 本發明已參考其特定的示範性具體實例加以說明。然 而’它將不證自明的具有這項揭示的優點,其中可以對這 些具體實例做出不同的修改及改變,而不會背離本發明較 寬廣的精神與範疇。因此,此規格及圖式被認為是說明性 而不是限制性的。 (請先閱讀背面之注意事項寫本頁) •裝 . -線· 經濟部智慧財產局員工消費合作社印製 sll L· -19- 本紙張尺度適用中囷國家標準(CNS>A4規格(210 X 297公釐) .^βΒΗΜΜ
Claims (1)
- ί558 Ί Ο 第δ8113818號專利申請案 申清專利範圍修正本(9Q年7月) 六、申請專利範圍ί. 一種分支預測器,其包含: 第—分支預測表(ΒΡΤ),其連結到一指令指標(Ιρ)產 生器’來儲存複數個分支預測輸入項;以及 第一 ΒΡΤ,其連接到此IP產生器,來儲存一較大複數 個分支預測輸入項。 2. 如申請專利範圍第ί項的分支預測器,此第一 BpT儲存 加標籤的分支預測輸入項而·第二BPT儲存未加標籤的分 支預測輸入項。 3. 如申請專利範圍第1項的分支預測器,其還包含第—電 路連接到此第一 B P T來預測做為儲存在標的位址快取記 憶體中的標的位址之I P位址,如果第一 B P T指示出一分 支被採用的話a 4 .如申請專利範圍第1項的分支預測器,其還包含第二電 路連結到此第二B P T來預測做為儲存在標的位址快取記 憶體中的標的位址之IP位址,如果第二B P T指示出一分 支被採用的話" 5. 如申請專利範園第1項的分支預測器,其還包含第二電 路連結到此第二B P T來預測從一指令解碼與計算的標的 位址之IP位址,如果第二B P T指示出一分支為採用的 話。 6. 如申請專利範圍第1項的分支預測器,其還包含第二電 路連結到此第二B P T來預測儲存在回傳堆疊缓衝器中的 標的位址之IP位址’如果第二BPT指示出一分支為採用 的話。 本紙張尺度適用中國國家揉準(CNS ) A4規格(210X297公4 ) (請先閱讀背面之注意事項再填寫本買) -¾ 、«1 Γ ά 5 5 8 10 A8 B8 C8 D8 經濟部中央標準局舅工消費合作社印製 申請專利範圍 7. 如申請專利範圍第1項的分支預測器,其中此第二Β ρ τ 的大小調整來儲存第一BPT數目之二或更多倍的分支預 測輸入項。 8. 如申請專利範圍第丨項的分支預測器,其中第—b p τ實 作第一種形態的預測演繹法則而第二Β Ρ τ實作第二種形 態的預測/夫繹’法則,其不同於第一種形態的預測演繹法 則。 . 9. 一種處理器,其包含: 一指令指標(IΡ )產生器; 連結到此IP產生器之第一階分支預測表ΒΡΤ,此第一 階B P T在其中儲存有結合第一複數個位址的第一複數個 分支預測輸入項;以及 連結到此IP產生器之第二階分支預測表Βρτ,此第二 階B P T在其中儲存有結合第二複數個位址的.第二複數個 _分支預測輸入項。 10‘如申請專利範圍第9項的處理器,其還包含一連結到此 i P產生器的標的位址快取記憶體並在其中儲存有結合第 一複數個位址的複數個標的位址。 11. 如申請專利範園第1 〇項的處理器,其還包含第一電路來 從此標的位址快取記憶體中選擇,做為其輸出,一標的 位址,如果在此第一階ΒΡΤ有一命中表示一分支被採用 的話。 12. 如申請專利範圍第9項的處理器,其還包含連結到此工ρ 產生器的記憶體位置中的指令群组並在其中儲存有複數 (請先閲讀背面之注意事項再填寫本頁) '集. 訂 锊 本紙張尺度適用t國國家標準(CNS ) A4規格(210X297公釐)4 5 5 8 1 〇 Α8 Β8 C8 D8 經濟部中央揉準局員工消費合作社印裝 六、申請專利範圍 個分支提示。 Π·如申請專利範圍第12項的處理器,其還包含第二電路來 從此1已憶體位置中選擇,做為其輸出,一標的位址,如 果在此第二階BPT中一命中指示出一分支被採用而記憶 體位置中的結合命中是動態的。 14.如申請專利範圍第9項的處理器,其中在第二複數個位 址中有相對於第一複數個位址之二到四倍的位址,而此 弟一複數個位址包含第一複數個位址。 15‘一種在處理器中執行分支預測的方法,其包含的步驟: I · 在第一階的分支預測表(BPT)搜尋結合一指令指標 (I P )位址的第一分支預測輸入項; 在第二階B P T搜尋結合此I p位址的第二分支預測輸入 項;以及 如果第一分支預測輸入項在第一階B P T中找到的話, 則根據第一分支預測輸入項做出一分支預測,而如果第 一分支輸入項在第一階BPT中失誤的話,則根據第二分 支預測輸入項做出一分支預測。 16. 如申請專利範圍第1 5項的方法,其還包含以第一階B P T 實作第一種形態預測演繹法則的步驟,以及以第二階 BPT實作第二種形態的預測演繹法則,其不同於第一種 形態的預測演繹法則。 17. 如申請專利範圍第1 5項的方法*其中根據第二分支預測 輸入項做出分支預測的步騾在一結合此I P位址的指令被 解碼且決定為分支指令時做到。 -3 - 本紙張尺度逋用中围國家揉準(CMS ) Α4規格(210Χ297公釐) (請先聞讀背面之注$項再填寫本頁) 訂 % 修正補充 4 5 58 1 0 A8 B8 C8 D8 經濟部中央標準局員工消費合作社印製 六、申請專利範圍 18. 如申請專利範圍第1 5項的方法,其中搜尋第一階B P T與 搜尋第二階B P T的步驟同時的發生。 19. 如申請專利範圍第1 5項的方法,其中搜尋第一階B P T的 步驟包含比較此I P位址的位址標籤輿儲存在第一階;B P T 中的位址標籤的步驟,而搜尋此第二階B P T的步騾包含 從一直接對映表中選出一輸入項的步驟。 20. —種在一指定起始I P位址而預測處理器中接下來指令指 ' 標(I P )位址的方法,此方法包含步驟: 從一標的位址快取記憶體中預測成為標的位址的接下 來IP位址,如果在結合此起始IP位址的第一分支預測表 (B P T )中的分支預測輸入項指示出此分支為採用的話; 以及 從一結合此起始IP位址的指令預測解碼標的位址的接 下來IP位址,如果在此第一 B P T中沒有分支預測輸入項 與此起始I .P位址結合而結合此起始ϊ P位址的第二B p T中 的分支預測輸入項指示出此分支為採用的話》 21. 如申請專利範圍第2 0項的方法’還包含預測為起始I ρ位 址遞增一預定量的接下來I Ρ位址的步驟,如果在第一 ΒΡΤ中結合此起始IP位址的分支預測輸入項指示出此分 為不採用的話® 22. 如申請專利範圍第2 0項的方法,其還包含預測為起始工ρ 位址遞增一預定量的接下來IP位址的步驟,如果在第一 BPT中没有與起始IP位址結合的分支預測輸入項而第二 Β Ρ T中結合此起始I P位址的分支預測輸入項指示出此分 -4- 本紙張尺度適用中國國家搖準(CNS ) A4規格(210X297公釐) (請先聞讀背面之注意事項再填寫本頁) -訂.· 綉 潘年7 月厶日 修正 補充 4 5 5 8 10 as B8 C8 D8 經濟部4-央揉準局舅工消費合作社印製 :、申請專利範圍 支為不採用的話。 23. 如申請專利範園第2 0項的方法’其還包含預測為起始工P 位址遞增一預定量的接下來ip位址的步驟,如果在第— B P T中沒有與起始I p位址結合的分支預測輸入項,第二 B P T中與此起始I p位址結合的分支預測輸入項指示出此 分支為.不採用,而結合此起始IP位址的指令提示經.解碼 為動態的話。 * 24. 如申請專利範圍第2 0項的方法,其中從一標的位址快取 記憶體中预測成為標的位址的接下來IP位址的步驟包含 在第一 B PT中搜尋符合結合此起始I p位址的位址標籤的 位址標籤的步驟,而預測為從指令解碼之標的位址的接· 下來I P位址的步驟包含在第二B PT中選擇結合此起始工P 位址的直接對映輸入項的步驟。 5- M氏珉尺度適用中國國家揉準(> A4規格(210X297公釐) (請先閎讀背面之注意事項再填寫本頁)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/149,885 US6553488B2 (en) | 1998-09-08 | 1998-09-08 | Method and apparatus for branch prediction using first and second level branch prediction tables |
Publications (1)
Publication Number | Publication Date |
---|---|
TW455810B true TW455810B (en) | 2001-09-21 |
Family
ID=22532208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW088113818A TW455810B (en) | 1998-09-08 | 1999-08-12 | A method and apparatus for branch prediction using a second level branch prediction table |
Country Status (8)
Country | Link |
---|---|
US (1) | US6553488B2 (zh) |
KR (1) | KR100411529B1 (zh) |
CN (1) | CN1302376C (zh) |
AU (1) | AU5699299A (zh) |
DE (1) | DE19983517B4 (zh) |
GB (1) | GB2357871B (zh) |
TW (1) | TW455810B (zh) |
WO (1) | WO2000014628A1 (zh) |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6546481B1 (en) * | 1999-11-05 | 2003-04-08 | Ip - First Llc | Split history tables for branch prediction |
US7107437B1 (en) * | 2000-06-30 | 2006-09-12 | Intel Corporation | Branch target buffer (BTB) including a speculative BTB (SBTB) and an architectural BTB (ABTB) |
JP4027620B2 (ja) | 2001-06-20 | 2007-12-26 | 富士通株式会社 | 分岐予測装置、プロセッサ、及び分岐予測方法 |
US7024545B1 (en) * | 2001-07-24 | 2006-04-04 | Advanced Micro Devices, Inc. | Hybrid branch prediction device with two levels of branch prediction cache |
US7343397B2 (en) * | 2002-03-29 | 2008-03-11 | Lucent Technologies Inc. | Method and apparatus for performing predictive caching of DNS requests by correlating IP addresses |
US6978361B2 (en) * | 2002-09-20 | 2005-12-20 | International Business Machines Corporation | Effectively infinite branch prediction table mechanism |
US7831817B2 (en) * | 2003-04-15 | 2010-11-09 | Arm Limited | Two-level branch prediction apparatus |
DE602004030575D1 (de) * | 2003-07-09 | 2011-01-27 | Nxp Bv | Verfahren und system zur zweigprädiktion |
US20050015578A1 (en) * | 2003-07-14 | 2005-01-20 | Kimming So | Two-bit branch prediction scheme using reduced memory size |
JP2005149297A (ja) * | 2003-11-18 | 2005-06-09 | Renesas Technology Corp | プロセッサおよびそのアセンブラ |
US7243219B2 (en) * | 2003-12-24 | 2007-07-10 | Intel Corporation | Predicting instruction branches with a plurality of global predictors using varying amounts of history instruction |
US20050149680A1 (en) * | 2003-12-30 | 2005-07-07 | Intel Corporation | Fast associativity collision array and cascaded priority select |
US20050283593A1 (en) * | 2004-06-18 | 2005-12-22 | Vladimir Vasekin | Loop end prediction |
US7890735B2 (en) * | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
US7752426B2 (en) * | 2004-08-30 | 2010-07-06 | Texas Instruments Incorporated | Processes, circuits, devices, and systems for branch prediction and other processor improvements |
US7428632B2 (en) * | 2004-09-14 | 2008-09-23 | Arm Limited | Branch prediction mechanism using a branch cache memory and an extended pattern cache |
US7836288B2 (en) * | 2004-09-14 | 2010-11-16 | Arm Limited | Branch prediction mechanism including a branch prediction memory and a branch prediction cache |
DE102005001679B4 (de) * | 2005-01-13 | 2008-11-13 | Infineon Technologies Ag | Mikroprozessor-Einrichtung, und Verfahren zur Branch-Prediktion für conditional Branch-Befehle in einer Mikroprozessor-Einrichtung |
US20070050608A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporatin Of The State Of Delaware | Hardware-generated and historically-based execution optimization |
US7739524B2 (en) * | 2005-08-29 | 2010-06-15 | The Invention Science Fund I, Inc | Power consumption management |
US8209524B2 (en) | 2005-08-29 | 2012-06-26 | The Invention Science Fund I, Llc | Cross-architecture optimization |
US7627739B2 (en) * | 2005-08-29 | 2009-12-01 | Searete, Llc | Optimization of a hardware resource shared by a multiprocessor |
US8255745B2 (en) | 2005-08-29 | 2012-08-28 | The Invention Science Fund I, Llc | Hardware-error tolerant computing |
US8516300B2 (en) | 2005-08-29 | 2013-08-20 | The Invention Science Fund I, Llc | Multi-votage synchronous systems |
US8375247B2 (en) | 2005-08-29 | 2013-02-12 | The Invention Science Fund I, Llc | Handling processor computational errors |
US7877584B2 (en) * | 2005-08-29 | 2011-01-25 | The Invention Science Fund I, Llc | Predictive processor resource management |
US7725693B2 (en) * | 2005-08-29 | 2010-05-25 | Searete, Llc | Execution optimization using a processor resource management policy saved in an association with an instruction group |
US7774558B2 (en) | 2005-08-29 | 2010-08-10 | The Invention Science Fund I, Inc | Multiprocessor resource optimization |
US7779213B2 (en) * | 2005-08-29 | 2010-08-17 | The Invention Science Fund I, Inc | Optimization of instruction group execution through hardware resource management policies |
US8423824B2 (en) | 2005-08-29 | 2013-04-16 | The Invention Science Fund I, Llc | Power sparing synchronous apparatus |
US7647487B2 (en) * | 2005-08-29 | 2010-01-12 | Searete, Llc | Instruction-associated processor resource optimization |
US8181004B2 (en) | 2005-08-29 | 2012-05-15 | The Invention Science Fund I, Llc | Selecting a resource management policy for a resource available to a processor |
US7512842B2 (en) * | 2005-08-29 | 2009-03-31 | Searete Llc | Multi-voltage synchronous systems |
US8214191B2 (en) | 2005-08-29 | 2012-07-03 | The Invention Science Fund I, Llc | Cross-architecture execution optimization |
US20070050605A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Freeze-dried ghost pages |
US7487340B2 (en) * | 2006-06-08 | 2009-02-03 | International Business Machines Corporation | Local and global branch prediction information storage |
US8301871B2 (en) * | 2006-06-08 | 2012-10-30 | International Business Machines Corporation | Predicated issue for conditional branch instructions |
US20070288732A1 (en) * | 2006-06-08 | 2007-12-13 | Luick David A | Hybrid Branch Prediction Scheme |
US8935517B2 (en) * | 2006-06-29 | 2015-01-13 | Qualcomm Incorporated | System and method for selectively managing a branch target address cache of a multiple-stage predictor |
US7472264B2 (en) * | 2006-06-30 | 2008-12-30 | Sun Microsystems, Inc. | Predicting a jump target based on a program counter and state information for a process |
US20080040591A1 (en) * | 2006-08-11 | 2008-02-14 | Moyer William C | Method for determining branch target buffer (btb) allocation for branch instructions |
US20080040590A1 (en) * | 2006-08-11 | 2008-02-14 | Lea Hwang Lee | Selective branch target buffer (btb) allocaiton |
US7533252B2 (en) * | 2006-08-31 | 2009-05-12 | Intel Corporation | Overriding a static prediction with a level-two predictor |
TW200816282A (en) * | 2006-09-27 | 2008-04-01 | Promos Technologies Inc | Method for reducing stress between a conductive layer and a mask layer and use of the same |
US8782384B2 (en) * | 2007-12-20 | 2014-07-15 | Advanced Micro Devices, Inc. | Branch history with polymorphic indirect branch information |
US8909907B2 (en) * | 2008-02-12 | 2014-12-09 | International Business Machines Corporation | Reducing branch prediction latency using a branch target buffer with a most recently used column prediction |
US7890739B2 (en) * | 2008-02-19 | 2011-02-15 | Oracle America, Inc. | Method and apparatus for recovering from branch misprediction |
US9021240B2 (en) * | 2008-02-22 | 2015-04-28 | International Business Machines Corporation | System and method for Controlling restarting of instruction fetching using speculative address computations |
US20110093658A1 (en) * | 2009-10-19 | 2011-04-21 | Zuraski Jr Gerald D | Classifying and segregating branch targets |
CN102306094B (zh) * | 2011-08-16 | 2014-03-26 | 北京北大众志微系统科技有限责任公司 | 实现现代处理器间接转移预测的装置及方法 |
US8739186B2 (en) | 2011-10-26 | 2014-05-27 | Autodesk, Inc. | Application level speculative processing |
US8959320B2 (en) * | 2011-12-07 | 2015-02-17 | Apple Inc. | Preventing update training of first predictor with mismatching second predictor for branch instructions with alternating pattern hysteresis |
US9009734B2 (en) * | 2012-03-06 | 2015-04-14 | Autodesk, Inc. | Application level speculative processing |
US9262169B2 (en) | 2012-06-11 | 2016-02-16 | International Business Machines Corporation | Branch prediction table install source tracking |
US9235419B2 (en) * | 2012-06-11 | 2016-01-12 | International Business Machines Corporation | Branch target buffer preload table |
US9250909B2 (en) | 2012-06-12 | 2016-02-02 | International Business Machines Corporation | Fast index tree for accelerated branch prediction |
US9250912B2 (en) * | 2012-06-12 | 2016-02-02 | International Business Machines Corporation | Fast index tree for accelerated branch prediction |
US9430241B2 (en) | 2012-06-15 | 2016-08-30 | International Business Machines Corporation | Semi-exclusive second-level branch target buffer |
US9298465B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Asynchronous lookahead hierarchical branch prediction |
US9280351B2 (en) | 2012-06-15 | 2016-03-08 | International Business Machines Corporation | Second-level branch target buffer bulk transfer filtering |
US9563430B2 (en) | 2014-03-19 | 2017-02-07 | International Business Machines Corporation | Dynamic thread sharing in branch prediction structures |
US20150268961A1 (en) * | 2014-03-21 | 2015-09-24 | Samsung Electronics Co., Ltd. | Decoupling l2 btb from l2 cache to accelerate search for miss after miss |
US10241800B2 (en) | 2015-06-16 | 2019-03-26 | International Business Machines Corporation | Split-level history buffer in a computer processing unit |
US10592248B2 (en) * | 2016-08-30 | 2020-03-17 | Advanced Micro Devices, Inc. | Branch target buffer compression |
US10747539B1 (en) | 2016-11-14 | 2020-08-18 | Apple Inc. | Scan-on-fill next fetch target prediction |
US10613867B1 (en) * | 2017-07-19 | 2020-04-07 | Apple Inc. | Suppressing pipeline redirection indications |
US10929136B2 (en) * | 2018-04-11 | 2021-02-23 | Futurewei Technologies, Inc. | Accurate early branch prediction using multiple predictors having different accuracy and latency in high-performance microprocessors |
US10817299B2 (en) * | 2018-09-07 | 2020-10-27 | Arm Limited | Handling multiple control flow instructions |
CN111209044B (zh) * | 2018-11-21 | 2022-11-25 | 展讯通信(上海)有限公司 | 指令压缩方法及装置 |
US11163573B2 (en) * | 2019-02-13 | 2021-11-02 | International Business Machines Corporation | Hierarchical metadata predictor with periodic updates |
US11614944B2 (en) * | 2020-11-09 | 2023-03-28 | Centaur Technology, Inc. | Small branch predictor escape |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5230068A (en) * | 1990-02-26 | 1993-07-20 | Nexgen Microsystems | Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence |
US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
US5608886A (en) * | 1994-08-31 | 1997-03-04 | Exponential Technology, Inc. | Block-based branch prediction using a target finder array storing target sub-addresses |
US5732253A (en) * | 1994-10-18 | 1998-03-24 | Cyrix Corporation | Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches |
US5815700A (en) * | 1995-12-22 | 1998-09-29 | Intel Corporation | Branch prediction table having pointers identifying other branches within common instruction cache lines |
WO1998008160A1 (en) * | 1996-08-20 | 1998-02-26 | Idea Corporation | A method for identifying hard-to-predict branches to enhance processor performance |
US5995749A (en) * | 1996-11-19 | 1999-11-30 | Advanced Micro Devices, Inc. | Branch prediction mechanism employing branch selectors to select a branch prediction |
US5903750A (en) * | 1996-11-20 | 1999-05-11 | Institute For The Development Of Emerging Architectures, L.L.P. | Dynamic branch prediction for branch instructions with multiple targets |
US6119222A (en) * | 1996-12-23 | 2000-09-12 | Texas Instruments Incorporated | Combined branch prediction and cache prefetch in a microprocessor |
US5802602A (en) | 1997-01-17 | 1998-09-01 | Intel Corporation | Method and apparatus for performing reads of related data from a set-associative cache memory |
US5805878A (en) * | 1997-01-31 | 1998-09-08 | Intel Corporation | Method and apparatus for generating branch predictions for multiple branch instructions indexed by a single instruction pointer |
US5978909A (en) * | 1997-11-26 | 1999-11-02 | Intel Corporation | System for speculative branch target prediction having a dynamic prediction history buffer and a static prediction history buffer |
-
1998
- 1998-09-08 US US09/149,885 patent/US6553488B2/en not_active Expired - Lifetime
-
1999
- 1999-08-12 TW TW088113818A patent/TW455810B/zh not_active IP Right Cessation
- 1999-08-26 DE DE19983517T patent/DE19983517B4/de not_active Expired - Fee Related
- 1999-08-26 GB GB0105285A patent/GB2357871B/en not_active Expired - Fee Related
- 1999-08-26 WO PCT/US1999/019892 patent/WO2000014628A1/en active IP Right Grant
- 1999-08-26 KR KR10-2001-7002916A patent/KR100411529B1/ko not_active IP Right Cessation
- 1999-08-26 AU AU56992/99A patent/AU5699299A/en not_active Abandoned
- 1999-08-26 CN CNB998130613A patent/CN1302376C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB2357871A (en) | 2001-07-04 |
KR100411529B1 (ko) | 2003-12-18 |
KR20010074978A (ko) | 2001-08-09 |
WO2000014628A1 (en) | 2000-03-16 |
DE19983517B4 (de) | 2006-12-07 |
GB0105285D0 (en) | 2001-04-18 |
CN1328664A (zh) | 2001-12-26 |
CN1302376C (zh) | 2007-02-28 |
US20010047467A1 (en) | 2001-11-29 |
DE19983517T1 (de) | 2002-07-11 |
AU5699299A (en) | 2000-03-27 |
GB2357871B (en) | 2003-09-24 |
US6553488B2 (en) | 2003-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW455810B (en) | A method and apparatus for branch prediction using a second level branch prediction table | |
US6430674B1 (en) | Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time | |
US6101577A (en) | Pipelined instruction cache and branch prediction mechanism therefor | |
US20080276070A1 (en) | Reducing the fetch time of target instructions of a predicted taken branch instruction | |
US6081887A (en) | System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction | |
US5623614A (en) | Branch prediction cache with multiple entries for returns having multiple callers | |
KR101459536B1 (ko) | 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치 | |
US6697932B1 (en) | System and method for early resolution of low confidence branches and safe data cache accesses | |
US7609582B2 (en) | Branch target buffer and method of use | |
US5752259A (en) | Instruction cache configured to provide instructions to a microprocessor having a clock cycle time less than a cache access time of said instruction cache | |
US8572358B2 (en) | Meta predictor restoration upon detecting misprediction | |
US20050210224A1 (en) | Processor including fallback branch prediction mechanism for far jump and far call instructions | |
KR101081674B1 (ko) | 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법 | |
JPH0334024A (ja) | 分岐予測の方法とそのための装置 | |
EP3321811A1 (en) | Processor with instruction cache that performs zero clock retires | |
US7107437B1 (en) | Branch target buffer (BTB) including a speculative BTB (SBTB) and an architectural BTB (ABTB) | |
US6253315B1 (en) | Return address predictor that uses branch instructions to track a last valid return address | |
US8943301B2 (en) | Storing branch information in an address table of a processor | |
US6219781B1 (en) | Method and apparatus for performing register hazard detection | |
JPH1040104A (ja) | 分岐命令の結果予測装置及び方法 | |
US5987599A (en) | Target instructions prefetch cache | |
US7603545B2 (en) | Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching | |
US20050132174A1 (en) | Predicting instruction branches with independent checking predictions | |
Hasan et al. | An improved pipelined processor architecture eliminating branch and jump penalty | |
JP2006031697A (ja) | 分岐ターゲットバッファと使用方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent | ||
MM4A | Annulment or lapse of patent due to non-payment of fees |