TWI588739B - 在超越分流預測器中之推測歷史轉遞及其相關電路、方法及電腦可讀媒體 - Google Patents

在超越分流預測器中之推測歷史轉遞及其相關電路、方法及電腦可讀媒體 Download PDF

Info

Publication number
TWI588739B
TWI588739B TW104109240A TW104109240A TWI588739B TW I588739 B TWI588739 B TW I588739B TW 104109240 A TW104109240 A TW 104109240A TW 104109240 A TW104109240 A TW 104109240A TW I588739 B TWI588739 B TW I588739B
Authority
TW
Taiwan
Prior art keywords
prediction
shunt
offload
history
predictor
Prior art date
Application number
TW104109240A
Other languages
English (en)
Other versions
TW201602907A (zh
Inventor
雪克 瑞米 默漢麥德 艾爾
瑞谷藍 達莫達倫
Original Assignee
高通公司
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 高通公司 filed Critical 高通公司
Publication of TW201602907A publication Critical patent/TW201602907A/zh
Application granted granted Critical
Publication of TWI588739B publication Critical patent/TWI588739B/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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • 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 or 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

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

在超越分流預測器中之推測歷史轉遞及其相關電路、方法及電腦可讀媒體
本發明之技術大體上係關於電腦系統中之分流預測。
指令管線操作(instruction pipelining)為藉以可藉由將每一指令之處置分裂成一系列步驟來增加由處理器執行之電腦指令之輸送量的處理技術。此等步驟執行於由多個級(stage)構成之執行管線中。若執行管線中之所有級能夠同時地處理指令,則可達成最佳處理器效能。然而,執行管線中的指令之同時執行可受到條件分流指令(conditional branch instruction)之存在妨礙。條件分流指令可基於在執行條件分流指令時評估之條件來重新導向程式之流程。結果,處理器可必須暫停擷取額外指令直至已執行條件分流指令為止,從而引起縮減處理器效能且增加功率消耗。
一種用於最大化處理器效能之途徑涉及利用分流預測電路以預測是否將採取條件分流指令。是否將採取條件分流指令之預測可基於先前條件分流指令之分流預測歷史。可接著由處理器擷取及推測地執行對應於經預測分流之指令。在經錯誤預測分流之情況下,處理器可招致延遲,同時自執行管線清空對應於經錯誤預測分流之經擷取指 令,且擷取對應於經採取分流之指令。因此,需要準確分流預測器以最小化分流錯誤預測之損失(在減低之處理器效能及不必要之功率消耗兩者方面)。
習知分流預測器之準確性通常可對應於產生分流預測所需要之處理器時脈循環之數目。舉例而言,相對簡單之分流預測器可需要僅單一處理器時脈循環以提供分流預測,但所得分流預測可較不準確。相反地,較複雜之分流預測器可提供較高程度之準確性,但可遭受多循環潛時(亦即,可需要多個處理器時脈循環以產生分流預測)。
為了緩解準確性與速度之間的取捨,「超越分流預測器」可結合較慢的較準確之第二分流預測器而使用較快的較不準確之第一分流預測器。兩個分流預測器皆提供針對每一條件分流指令之預測,其中第二分流預測器相比於第一分流預測器在幾個處理器時脈循環以後提供其預測。處理器最初基於第一分流預測器之分流預測來擷取指令。當產生第二分流預測器之分流預測時,處理器比較該分流預測與第一分流預測。若該等預測不同,則使用第二預測以覆寫用於第一分流預測器之分流預測歷史中的第一預測,且基於第二分流預測來重新擷取適當指令。即使重新擷取指令可招致效能損失,但與由在重新擷取之前等待直至指令到達執行級為止招致的損失相比較,處理器仍達成淨效能改良。在處理器於指令擷取與指令執行之間具有大數目個管線級的情況下特別為此狀況。
然而,由於超越分流預測器之第二分流預測器的多循環潛時,第二分流預測器必須使其分流預測基於為「陳舊(stale)」(亦即,不含有針對最近遇到之條件分流指令之分流預測)之分流預測歷史。結果,第二分流預測器之準確性及效能可並非最佳。
本發明之實施例提供在超越分流預測器中之推測歷史轉遞。亦 揭示相關電路、方法及電腦可讀媒體。就此而言,在一個實施例中,提供一種包括一第一分流預測器及一第二分流預測器之分流預測電路。該第一分流預測器產生針對一條件分流指令之一第一分流預測,且將該第一分流預測儲存於一第一分流預測歷史中。亦將該第一分流預測推測地轉遞至一第二分流預測歷史。該第二分流預測器隨後基於包括該經推測轉遞之第一分流預測的該第二分流預測歷史來產生一第二分流預測。藉由使該第二分流預測器能夠使其分流預測基於該經推測轉遞之第一分流預測,可改良該第二分流預測器之一準確性。
在另一實施例中,提供一種用於在一處理器中執行經擷取指令之分流預測之分流預測電路。該分流預測電路包含一第一分流預測器、一轉遞電路及一第二分流預測器。該第一分流預測器經組態以預測一指令佇列中之一條件分流指令之一第一分流預測,且基於針對該條件分流指令之該第一分流預測來更新一第一分流預測歷史暫存器。該轉遞電路經組態以將針對該條件分流指令之該第一分流預測作為一推測預測而轉遞至一第二分流預測歷史暫存器。該第二分流預測器經組態以基於包括該推測預測之該第二分流預測歷史暫存器來預測該指令佇列中之該條件分流指令之一第二分流預測。以此方式,可藉由使分流預測基於該經推測轉遞之分流預測來改良該第二分流預測器之一準確性。
在另一實施例中,提供一種用於在一處理器中執行經擷取指令之分流預測之分流預測電路。該分流預測電路包含一第一分流預測器構件,其用於預測一指令佇列中之一條件分流指令之一第一分流預測,且基於針對該條件分流指令之該第一分流預測來更新一第一分流預測歷史暫存器。該分流預測電路進一步包含一轉遞構件,其用於將針對該條件分流指令之該第一分流預測作為一推測預測而轉遞至一第二分流預測歷史暫存器。該分流預測電路亦包含一第二分流預測器構 件,其用於基於包括該推測預測之該第二分流預測歷史暫存器來預測該指令佇列中之該條件分流指令之一第二分流預測。
在另一實施例中,提供一種用於在一處理器中執行經擷取指令之分流預測之方法。該方法包含由一第一分流預測器基於一第一分流預測歷史來預測一指令佇列中之一條件分流指令之一第一分流預測。該方法進一步包含基於針對該條件分流指令之該第一分流預測來更新該第一分流預測歷史。該方法亦包含將針對該條件分流指令之該第一分流預測作為一推測預測而轉遞至一第二分流預測歷史。該方法另外包含由一第二分流預測器基於包括該推測預測之該第二分流預測歷史來預測該指令佇列中之該條件分流指令之一第二分流預測。
在另一實施例中,提供一種非暫時性電腦可讀媒體,其上儲存有用以致使一處理器實施用於在該處理器中執行經擷取指令之分流預測之一方法的電腦可執行指令。由該等電腦可執行指令實施之該方法包含由一第一分流預測器基於一第一分流預測歷史來預測一指令佇列中之一條件分流指令之一第一分流預測。由該等電腦可執行指令實施之該方法進一步包含基於針對該條件分流指令之該第一分流預測來更新該第一分流預測歷史。由該等電腦可執行指令實施之該方法亦包含將針對該條件分流指令之該第一分流預測作為一推測預測而轉遞至一第二分流預測歷史。由該等電腦可執行指令實施之該方法另外包含由一第二分流預測器基於包括該推測預測之該第二分流預測歷史來預測該指令佇列中之該條件分流指令之一第二分流預測。
10‧‧‧處理器
12‧‧‧分流預測電路(BPC)
14‧‧‧輸入/輸出電路
16‧‧‧指令快取記憶體
18‧‧‧資料快取記憶體
20‧‧‧執行管線
22‧‧‧前端電路
24‧‧‧執行單元
26‧‧‧完成單元
28‧‧‧鏈接棧
30‧‧‧暫存器
32‧‧‧一般用途暫存器(GPR)
34‧‧‧程式計數器
36‧‧‧鏈接暫存器
38‧‧‧擷取/解碼管線級
40‧‧‧指令佇列
42‧‧‧第一分流預測器
44‧‧‧第二分流預測器
45‧‧‧轉遞電路
46‧‧‧第一分流預測歷史暫存器
48‧‧‧第二分流預測歷史暫存器
50‧‧‧第一分流預測歷史
52‧‧‧第二分流預測歷史
54(0)‧‧‧條件分流指令
54(1)‧‧‧條件分流指令
54(2)‧‧‧條件分流指令
54(3)‧‧‧條件分流指令
56‧‧‧一個處理器時脈循環之潛時
58‧‧‧三個處理器時脈循環之多循環潛時
60(0)‧‧‧分流預測
60(1)‧‧‧分流預測
60(2)‧‧‧分流預測
62‧‧‧分流預測
64‧‧‧第一分流預測歷史
66‧‧‧第二分流預測歷史
68(0)‧‧‧條件分流指令
68(1)‧‧‧條件分流指令
68(2)‧‧‧條件分流指令
68(3)‧‧‧條件分流指令
70‧‧‧一個處理器時脈循環之潛時
72‧‧‧三個處理器時脈循環之多循環潛時
74(0)‧‧‧分流預測
74(1)‧‧‧分流預測
74(2)‧‧‧分流預測
76(0)‧‧‧推測預測
76(1)‧‧‧推測預測
76(2)‧‧‧推測預測
78‧‧‧分流預測
80‧‧‧區塊
82‧‧‧區塊
84‧‧‧區塊
86‧‧‧區塊
88‧‧‧區塊
90‧‧‧區塊
92‧‧‧區塊
94‧‧‧區塊
96‧‧‧單一歷史暫存器
98‧‧‧指標
100‧‧‧指標
102‧‧‧基於處理器之系統
104‧‧‧中央處理單元(CPU)
106‧‧‧處理器
108‧‧‧快取記憶體
110‧‧‧系統匯流排
112‧‧‧記憶體系統
114(0)‧‧‧記憶體單元
114(N)‧‧‧記憶體單元
116‧‧‧記憶體控制器
118‧‧‧輸入裝置
120‧‧‧輸出裝置
122‧‧‧網路介面裝置
124‧‧‧顯示控制器
126‧‧‧網路
128‧‧‧顯示器
130‧‧‧視訊處理器
A‧‧‧分流指令
B‧‧‧分流指令
C‧‧‧分流指令
D‧‧‧分流指令
F0‧‧‧執行管線級
F1‧‧‧執行管線級
F2‧‧‧執行管線級
F3‧‧‧執行管線級
圖1為例示性處理器之方塊圖,該處理器包括提供較快但較不準確之第一分流預測器及較慢但較準確之第二分流預測器的分流預測電路,且經組態以執行推測歷史轉遞;圖2為說明在無推測歷史轉遞之情況下使用超越分流預測器來處 理例示性條件分流指令的時序圖;圖3為說明由圖1之分流預測電路在例示性條件分流指令之處理期間使用推測歷史轉遞以改良分流預測準確性的時序圖;圖4為用於執行推測歷史轉遞之例示性操作的流程圖;圖5為說明用於儲存多個分流預測歷史之例示性單一歷史暫存器的圖解;及圖6為可包括圖1之分流預測電路的例示性基於處理器之系統的方塊圖。
現在參考圖式,描述本發明之若干例示性實施例。詞語「例示性」在本文中用以意謂「充當實例、例項或說明」。本文中被描述為「例示性」之任何實施例未必被認作比其他實施例較佳或有利。
本發明之實施例提供在超越分流預測器中之推測歷史轉遞。亦揭示相關電路、方法及電腦可讀媒體。就此而言,在一個實施例中,提供一種包括一第一分流預測器及一第二分流預測器之分流預測電路。該第一分流預測器產生針對一條件分流指令之一第一分流預測,且將該第一分流預測儲存於一第一分流預測歷史中。亦將該第一分流預測推測地轉遞至一第二分流預測歷史。該第二分流預測器隨後基於包括該經推測轉遞之第一分流預測的該第二分流預測歷史來產生一第二分流預測。藉由使該第二分流預測器能夠使其分流預測基於該經推測轉遞之第一分流預測,可改良該第二分流預測器之一準確性。
在另一實施例中,提供一種用於在一處理器中執行經擷取指令之分流預測之分流預測電路。該分流預測電路包含一第一分流預測器、一轉遞電路及一第二分流預測器。該第一分流預測器經組態以預測一指令佇列中之一條件分流指令之一第一分流預測,且基於針對該條件分流指令之該第一分流預測來更新一第一分流預測歷史暫存器。 該轉遞電路經組態以將針對該條件分流指令之該第一分流預測作為一推測預測而轉遞至一第二分流預測歷史暫存器。該第二分流預測器經組態以基於包括該推測預測之該第二分流預測歷史暫存器來預測該指令佇列中之該條件分流指令之一第二分流預測。以此方式,可藉由使分流預測基於該經推測轉遞之分流預測來改良該第二分流預測器之一準確性。
就此而言,圖1為例示性處理器10之方塊圖。處理器10包括經組態以提供推測歷史轉遞以改良預測準確性之分流預測電路12,如本文中所揭示。「推測歷史轉遞」係指用於利用由第一分流預測器產生之分流預測以補充針對第二分流預測器之分流預測歷史的操作,第二分流預測器歸因於潛時問題而原本將使其分流預測基於陳舊分流預測歷史。在論述圖1之處理器10的例示性推測歷史轉遞特徵之前,提供圖1之簡要介紹。接下來,關於圖2中對不使用推測歷史轉遞之分流預測的說明來論述不使用推測歷史轉遞之分流預測的實例。接著,在圖3中描述由圖1之分流預測電路12使用推測歷史轉遞以改良分流預測準確性。
就此而言,在圖1中,處理器10可涵蓋已知數位邏輯元件、半導體電路、處理核心及/或記憶體結構等等中之任一者,或其組合。本文中描述之實施例並不限於任何特定配置之元件,且所揭示技術可容易地延伸至半導體晶粒或封裝上之各種結構及佈局。處理器10包括輸入/輸出電路14、指令快取記憶體16及資料快取記憶體18。處理器10進一步包含執行管線20,其包括前端電路22、執行單元24及完成單元26。處理器10另外包括鏈接棧28及暫存器30,該等暫存器包含一或多個一般用途暫存器(GPR)32、程式計數器34及鏈接暫存器36。在一些實施例(諸如,使用ARM® ARM7TM架構之實施例)中,鏈接暫存器36為GPR 32中之一者,如圖1所展示。替代地,一些實施例(諸如,利用 IBM® PowerPC®架構之實施例)可規定鏈接暫存器36與GPR 32分離(未圖示)。
作為一非限制性實例,在例示性操作中,執行管線20之前端電路22自指令快取記憶體16擷取指令(未圖示),該指令快取記憶體在一些實施例中可為晶片上層級1(L1)快取記憶體。由前端電路22解碼經擷取指令且將其發出至執行單元24。執行單元24執行經發出指令,且完成單元26引退經執行指令。在一些實施例中,完成單元26可包含將執行結果儲存於暫存器30中之一或多者中的寫回機構。應理解,執行單元24及/或完成單元26可各自包含一或多個循序管線級。應進一步理解,可以一個以上指令之群組擷取及/或解碼指令。
為了改良效能,處理器10可使用分流預測,現在描述分流預測之例示性操作。前端電路22包含一或多個擷取/解碼管線級38,其使能夠同時地擷取及解碼多個指令。用於將經擷取指令待決分派保存至執行單元24之指令佇列40以通信方式耦接至擷取/解碼管線級38中之一或多者。指令佇列40亦以通信方式耦接至分流預測電路12,其經組態以產生針對指令佇列40中遇到之條件分流指令之分流預測(未圖示)。在圖1之實例中,分流預測電路12包括第一分流預測器42、第二分流預測器44及轉遞電路45。在一些實施例中,相比於第二分流預測器44,第一分流預測器42可經組態成以較低潛時進行操作。舉例而言,第一分流預測器42可運用僅單一處理器時脈循環之潛時來產生分流預測,而第二分流預測器44可需要多個處理器時脈循環(亦即,多循環潛時)以產生較準確分流預測。在此等實施例中,相比於第二分流預測器44,第一分流預測器42通常以較低準確性進行操作。因此,第一分流預測器42之實施例可較快但較不準確,而第二分流預測器44之實施例可較慢(亦即,可遭受多循環潛時)但較準確。分流預測電路12之轉遞電路45經組態以進行用於推測歷史轉遞之操作,如下文更詳 細地所論述。
由第一分流預測器42及第二分流預測器44產生之一或多個分流預測可分別儲存於暫存器30之第一分流預測歷史暫存器46及第二分流預測歷史暫存器48中。在一些實施例中,第一分流預測歷史暫存器46及/或第二分流預測歷史暫存器48可包括於暫存器30之GPR 32當中,或可與暫存器30分離地被實施。一些實施例可規定可使用單一歷史暫存器(未圖示)來實施第一分流預測歷史暫存器46及第二分流預測歷史暫存器48,其中第一及第二指標(未圖示)分別指示對應於第一分流預測歷史暫存器46及第二分流預測歷史暫存器48中之每一者的最近項目。下文關於圖5來更詳細地論述此實施例。
應理解,第一分流預測歷史暫存器46及第二分流預測歷史暫存器48可經組態以儲存此項技術中已知有用於分流預測的任何類型之歷史資料。作為非限制性實例,歷史資料可包括本機歷史、全域歷史及/或路徑歷史。本機歷史可包含包括針對特定條件分流指令之分流預測的分流預測歷史,而全域歷史可包含包括針對所有條件分流指令之分流預測的共用分流預測歷史。路徑歷史可包含包括諸如分流目標、是否採取特定分流之判定及/或通向條件分流指令之路徑之上下文之資料的分流預測歷史。
在圖1之實例中,處理器10之分流預測電路12作為超越分流預測器進行操作。因此,當在指令佇列40中遇到條件分流指令時,第一分流預測器42及第二分流預測器44兩者開始操作以判定分流預測。第一分流預測器42產生第一分流預測(未圖示),其儲存於第一分流預測歷史暫存器46中。處理器10繼續進行以推測地擷取及執行對應於分流預測之指令。取決於第二分流預測器44之額外潛時,第二分流預測器44在數個處理器時脈循環以後產生第二較準確分流預測(未圖示)。將第二分流預測儲存於第二分流預測歷史暫存器48中。接著比較第二分流 預測與第一分流預測。若存在失配,則使用第二分流預測以藉由超越第一分流預測來更新第一分流預測歷史暫存器46。因為第二分流預測可被假定為相比於第一分流預測較準確,所以可藉由運用第二分流預測來更新第一分流預測歷史暫存器46而改良第一分流預測器42之準確性。處理器10接著重新擷取對應於第二分流預測之指令。
雖然第二分流預測器44相比於第一分流預測器42可達成較高準確性,但在不存在推測歷史轉遞之情況下,第二分流預測器44歸因於其多循環潛時對第二分流預測歷史暫存器48之效應而仍可不達成最佳準確性。詳言之,由於第二分流預測器44之多循環潛時,第二分流預測歷史暫存器48可在第二分流預測器44產生新分流預測時缺乏針對最近遇到之條件分流指令之分流預測。結果,第二分流預測器44必須使其分流預測基於陳舊分流預測歷史,此情形可引起次最佳準確性位準。
為了說明在不存在推測歷史轉遞之情況下的多循環潛時之效應,提供圖2。圖2為說明由在無推測歷史轉遞之情況下處理例示性條件分流指令54(0)至54(3)引起的第一分流預測歷史50及第二分流預測歷史52之內容的時序圖。圖2之時序圖之行表示執行管線級,在此實例中被稱作F0、F1、F2及F3。時序圖之列表示處理器時脈循環0至3,且說明在每一處理器時脈循環期間的執行管線級之內容。每一列亦展示在對應處理器時脈循環期間的第一分流預測歷史50及第二分流預測歷史52之內容。應理解,第一分流預測歷史50係與較快的較不準確分流預測器(諸如,圖1之第一分流預測器42)相關聯。同樣地,第二分流預測歷史52對應於較慢的較準確分流預測器,諸如,圖1之第二分流預測器44。出於說明之目的,假定與第一分流預測歷史50相關聯之第一分流預測器42具有一個處理器時脈循環之潛時56,而與第二分流預測歷史52相關聯之第二分流預測器44具有三個處理器時脈循環之多 循環潛時58。應進一步理解,第一分流預測歷史50及第二分流預測歷史52可分別表示儲存於圖1之第一分流預測歷史暫存器46及第二分流預測歷史暫存器48中的內容。
參考圖2,處理自處理器時脈循環0開始。此時,條件分流指令54(0)(被稱作分流指令A)進入執行管線級F0。在處理器時脈循環0期間,第一分流預測器42及第二分流預測器44兩者開始產生針對分流指令A之分流預測(未圖示)。此時,第一分流預測歷史50及第二分流預測歷史52皆空白。
在處理器時脈循環1時,第一分流預測器42已完成其針對分流指令A之分流預測60(0)之產生。更新第一分流預測歷史50以含有針對分流指令A之分流預測60(0)。然而,第二分流預測器44尚未產生針對分流指令A之預測。因此,第二分流預測歷史52仍空白。分流指令A繼續至執行管線級F1,而條件分流指令54(1)(分流指令B)進入執行管線級F0。此時,第一分流預測器42及第二分流預測器44兩者開始產生針對分流指令B之分流預測(未圖示)。因為第一分流預測歷史50包括針對分流指令A之分流預測60(0),所以第一分流預測器42在產生針對分流指令B之預測時具有較早分流預測之好處。第二分流預測44仍不具有可作為其分流預測之所本之分流預測歷史。
在處理器時脈循環2中,第一分流預測器42已產生針對分流指令B之分流預測60(1),其現在儲存於第一分流預測歷史50中。第二分流預測歷史52保持空白,此係因為第二分流預測器44仍尚未完成產生針對分流指令A及B中之任一者之分流預測。在分流指令A及B分別繼續進行至執行管線級F2及F1時,條件分流指令54(2)(分流指令C)進入執行管線級F0。第一分流預測器42及第二分流預測器44開始產生針對分流指令C之分流預測(未圖示)。第一分流預測器42在產生其分流預測時分別具有針對分流指令A及B之分流預測60(0)及60(1)的好處,而第 二分流預測器44不具有任何好處。
在處理器時脈循環3時,分流指令A、B及C已分別繼續至執行管線級F3、F2及F1上,且條件分流指令54(3)(分流指令D)進入執行管線級F0。至此時,第一分流預測器42已產生針對分流指令C之分流預測60(2),其現在儲存於第一分流預測歷史50中。因此,當第一分流預測器42開始產生針對分流指令D之分流預測(未圖示)時,其可使彼分流預測分別基於針對分流指令A、B及C之先前分流預測60(0)、60(1)及60(2)。在處理器時脈循環3中,第二分流預測器44終於完成產生針對分流指令A之分流預測62。結果,更新第二分流預測歷史52以包含針對分流指令A之分流預測62。比較分流預測62與在處理器時脈循環1中儲存於第一分流預測歷史50中之分流預測60(0)。若分流預測62不同於分流預測60(0),則超越第一分流預測歷史50(亦即,運用分流預測62進行更新)。藉由超越第一分流預測歷史50,可改良第一分流預測器42之準確性。然而,應注意,在第二分流預測器44開始產生針對分流指令D之分流預測(未圖示)時,其仍僅具有供使其分流預測所基於的針對分流指令A之先前分流預測62。
為了緩解圖2所描述的多循環潛時對第二分流預測器44之效應,在圖1中之處理器10中提供分流預測電路12之轉遞電路45。轉遞電路45經組態以提供推測歷史轉遞以補充由第二分流預測器44使用之分流預測歷史,以便改良第二分流預測器44之準確性。就此而言,提供圖3以說明由使用由轉遞電路45提供之推測歷史轉遞來處理例示性條件分流指令68(0)至68(3)引起的第一分流預測歷史64及第二分流預測歷史66之內容。
就此而言,如同圖2一樣,圖3之時序圖之行表示執行管線級F0、F1、F2及F3,而時序圖之列說明在處理器時脈循環0至3期間的第一分流預測歷史64及第二分流預測歷史66之內容。在此實例中,第一分流 預測歷史64對應於圖1之較快的較不準確之第一分流預測器42,而第二分流預測歷史66對應於圖1之較慢的較準確之第二分流預測器44。出於說明之目的,假定第一分流預測器42具有一個處理器時脈循環之潛時70,而第二分流預測器44具有三個處理器時脈循環之多循環潛時72。應進一步理解,第一分流預測歷史64及第二分流預測歷史66可分別表示儲存於圖1之第一分流預測歷史暫存器46及第二分流預測歷史暫存器48中的內容。
在處理器時脈循環0時,處理自條件分流指令68(0)(被稱作分流指令A)進入執行管線級F0而開始。第一分流預測器42及第二分流預測器44兩者開始產生針對分流指令A之分流預測。在處理器時脈循環0期間,第一分流預測歷史64及第二分流預測歷史66兩者空白。
在處理器時脈循環1期間,由第一分流預測器42產生針對分流指令A之分流預測74(0)且將其儲存於第一分流預測歷史64中。此時,分流預測電路12之轉遞電路45亦將由第一分流預測器42針對分流指令A所產生之分流預測74(0)作為推測預測76(0)而轉遞至第二分流預測歷史66。在分流指令A繼續至執行管線級F1上時,條件分流指令68(1)(分流指令B)進入執行管線級F0。此時,第一分流預測器42及第二分流預測器44兩者開始產生針對分流指令B之分流預測。因為第一分流預測歷史64包括針對分流指令A之分流預測74(0),所以第一分流預測器42在產生針對分流指令B之分流預測時具有較早分流預測之好處。另外,因為第二分流預測歷史66現在含有針對分流指令A之推測預測76(0),所以第二分流預測器44現在可使其針對分流指令B之下一分流預測基於推測預測76(0)。與使分流預測基於陳舊分流預測歷史相比較,此情形可引起由第二分流預測器44針對分流指令B產生較準確分流預測。
處理在處理器時脈循環2中以類似方式而繼續。此處,第一分流 預測器42完成其針對分流指令B之分流預測74(1)之產生,且更新第一分流預測歷史64以儲存分流預測74(1)。亦由轉遞電路45將分流預測74(1)作為推測預測76(1)而轉遞至第二分流預測歷史66。在分流指令A及B分別繼續進行至執行管線級F2及F1時,條件分流指令68(2)(分流指令C)進入執行管線級F0。第一分流預測器42及第二分流預測器44開始產生針對分流指令C之分流預測,其中第一分流預測器42及第二分流預測器44兩者具有由第一分流預測器42作出的針對分流指令A及B之較早分流預測的好處。
在處理器時脈循環3時,分流指令A、B及C已分別繼續至執行管線級F3、F2及F1上,且條件分流指令68(3)(分流指令D)進入執行管線級F0。此時,第一分流預測器42已產生針對分流指令C之分流預測74(2),其現在儲存於第一分流預測歷史64中,且其作為推測預測76(2)而轉遞至第二分流預測歷史66。因此,當第一分流預測器42開始產生針對分流指令D之分流預測(未圖示)時,其使彼分流預測分別基於針對分流指令A、B及C之先前分流預測74(0)、74(1)及74(2)。在處理器時脈循環3期間,第二分流預測器44最後完成產生針對分流指令A之分流預測78。比較分流預測78與在處理器時脈循環1中轉遞至第二分流預測歷史66之推測預測76(0)。若分流預測78不同於推測預測76(0),則超越第二分流預測歷史66(亦即,運用分流預測78進行更新),如圖3所展示。亦可基於分流預測78來超越第一分流預測歷史64中之分流預測74(0)。第二分流預測器44接著繼續進行基於第二分流預測歷史66之內容來產生針對分流指令D之分流預測(未圖示)。
圖4為用於(作為實例)在圖1中之處理器10中執行上文所描述之推測歷史轉遞之例示性操作的流程圖。出於清楚起見,在描述圖4時參考圖1及圖3之元件。在圖4中,操作自分流預測電路12之第一分流預測器42基於第一分流預測歷史64來預測指令佇列40中之條件分流指令 68之第一分流預測74(區塊80)而開始。第一分流預測歷史64對應於圖1之第一分流預測歷史暫存器46的內容。
繼續參考圖4,分流預測電路12接下來基於針對條件分流指令68之第一分流預測74來更新第一分流預測歷史64(區塊82)。分流預測電路12之轉遞電路45接著將針對條件分流指令68之第一分流預測74作為推測預測76而轉遞至第二分流預測歷史66(區塊84)。第二分流預測器44接著基於包括推測預測76之第二分流預測歷史66來預測指令佇列40中之條件分流指令68之第二分流預測78(區塊86)。以此方式,與使用陳舊分流預測歷史來產生分流預測相比較,使最初由第一分流預測器42產生之推測預測76可用於第二分流預測器44以改良其準確性。
在一些實施例中,可由圖1之分流預測電路12進行額外選用步驟。分流預測電路12可比較第二分流預測78與推測預測76(區塊88)。基於比較,分流預測電路12可判定第二分流預測78是否不同於推測預測76(區塊90)。若否,則將推測預測76假定為正確(區塊92)。若分流預測電路12在區塊90處判定第二分流預測78不同於推測預測76,則分流預測電路12藉由基於第二分流預測78來更新第一分流預測歷史64中之第一分流預測74及第二分流預測歷史66中之推測預測76而超越推測預測76(區塊94)。
如上文所提到,在一些實施例中,第一分流預測歷史暫存器46及第二分流預測歷史暫存器48可被實施為單一歷史暫存器。就此而言,圖5說明用於儲存多個分流預測歷史之例示性單一歷史暫存器96。單一歷史暫存器96可被實施為圖1之暫存器30中之一者,或可被實施為分離結構。
如在圖5中所見,單一歷史暫存器96儲存由圖1之第一分流預測器42及第二分流預測器44兩者產生的分流預測。兩個指標98及100分別指示由第一分流預測器42及第二分流預測器44儲存於單一歷史暫存 器96中之最近分流預測。在初始化後,指標98及100兩者就指向單一歷史暫存器96內之相同位置。在第一分流預測器42及第二分流預測器44中之每一者產生分流預測時,運用最近分流預測來更新由每一指標98、100指向之位置,且推進指標98、100。因為第一分流預測器42相比於第二分流預測器44具有較低潛時,所以對應於第一分流預測器42之指標98將推進對應於潛時差之位置數目。一旦第二分流預測器44開始產生其分流預測,指標98及100就步調一致地移動。
第一分流預測器42及第二分流預測器44兩者經組態以存取儲存於單一歷史暫存器96中之分流預測歷史(未圖示)。根據第二分流預測器44之觀點,指標100與指標98之間的分流預測為推測預測。在第二分流預測器44產生分流預測時,其可在必要時更新由指標100指向之位置處的分流預測以超越由第一分流預測器42產生之任何推測錯誤預測。
根據本文中揭示之實施例的分流預測電路12可提供於或整合至任何基於處理器之裝置中。在無限制之情況下,實例包括機上盒、娛樂單元、導航裝置、通信裝置、固定位置資料單元、行動位置資料單元、行動電話、蜂巢式電話、電腦、攜帶型電腦、桌上型電腦、個人數位助理(PDA)、監視器、電腦監視器、電視、調諧器、無線電、衛星無線電、音樂播放器、數位音樂播放器、攜帶型音樂播放器、數位視訊播放器、視訊播放器、數位視訊光碟(DVD)播放器,及攜帶型數位視訊播放器。
就此而言,圖6說明可使用圖1所說明之分流預測電路12的基於處理器之系統102的實例。在此實例中,基於處理器之系統102包括一或多個中央處理單元(CPU)104,每一CPU包括可包含圖1之分流預測電路(BPC)12的一或多個處理器106。CPU 104可具有耦接至處理器106以用於快速地存取暫時儲存之資料的快取記憶體108。CPU 104耦 接至系統匯流排110,且可相互耦接包括於基於處理器之系統102中的主控器裝置與受控器裝置。如所熟知,CPU 104藉由經由系統匯流排110來交換位址、控制及資料資訊而與此等其他裝置通信。舉例而言,CPU 104可將匯流排異動請求傳達至提供記憶體單元114(0)至114(N)之記憶體系統112。
其他主控器裝置及受控器裝置可連接至系統匯流排110。作為實例,如圖6所說明,此等裝置可包括記憶體控制器116、一或多個輸入裝置118、一或多個輸出裝置120、一或多個網路介面裝置122,及一或多個顯示控制器124。輸入裝置118可包括任何類型之輸入裝置,包括但不限於輸入按鍵、開關、語音處理器等等。輸出裝置120可包括任何類型之輸出裝置,包括但不限於音訊、視訊、其他視覺指示器等等。網路介面裝置122可為經組態以允許向及自網路126交換資料之任何裝置。網路126可為任何類型之網路,包括但不限於有線或無線網路、私用或公用網路、區域網路(LAN)、廣泛區域網路(WLAN),及網際網路。網路介面裝置122可經組態以支援任何類型之所要通信協定。
CPU 104亦可經組態以經由系統匯流排110而存取顯示控制器124以控制被發送至一或多個顯示器128之資訊。顯示控制器124經由一或多個視訊處理器130而將待顯示資訊發送至顯示器128,該或該等視訊處理器將待顯示資訊處理成適合於顯示器128之格式。顯示器128可包括任何類型之顯示器,包括但不限於陰極射線管(CRT)、液晶顯示器(LCD)、電漿顯示器等等。
熟習此項技術者將進一步瞭解,結合本文中揭示之實施例所描述的各種說明性邏輯區塊、模組、電路及演算法可被實施為電子硬體、儲存於記憶體或另一電腦可讀媒體中且由處理器或其他處理裝置執行之指令,或此兩者之組合。作為實例,本文中描述之主控器裝置 及受控器裝置可用於任何電路、硬體組件、積體電路(IC)或IC晶片中。本文中揭示之記憶體可為任何類型及大小之記憶體,且可經組態以儲存任何類型之所要資訊。為了清楚地說明此可互換性,上文已大體上在功能性方面描述各種說明性組件、區塊、模組、電路及步驟。如何實施此功能性取決於特定應用、設計選擇及/或強加於整個系統之設計約束。熟習此項技術者可針對每一特定應用而以變化方式來實施所描述功能性,但此等實施決策不應被解譯為導致脫離本發明之範疇。
可運用經設計成執行本文所描述之功能的處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或其他可程式化邏輯裝置、離散閘或電晶體邏輯、離散硬體組件或其任何組合來實施或執行結合本文所揭示之實施例所描述的各種說明性邏輯區塊、模組及電路。處理器可為微處理器,但在替代例中,處理器可為任何習知處理器、控制器、微控制器或狀態機。處理器亦可被實施為計算裝置之組合,例如,DSP與微處理器之組合、複數個微處理器、一或多個微處理器結合DSP核心,或任何其他此類組態。
本文中揭示之實施例可體現於硬體中及體現於儲存於硬體中之指令中,且可駐留於(例如)隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(ROM)、電可程式化ROM(EPROM)、電可抹除可程式化ROM(EEPROM)、暫存器、硬碟、可移除式磁碟、CD-ROM或此項技術中所知的任何其他形式之電腦可讀媒體中。例示性儲存媒體耦接至處理器,使得處理器可自儲存媒體讀取資訊及將資訊寫入至儲存媒體。在替代例中,儲存媒體可與處理器成一體式。處理器及儲存媒體可駐留於ASIC中。ASIC可駐留於遠端台中。在替代例中,處理器及儲存媒體可作為離散組件而駐留於遠端台、基地台或伺服器中。
亦應注意,描述本文中之例示性實施例中之任一者中描述的操 作步驟以提供實例及論述。可以不同於所說明序列之眾多不同序列來執行所描述操作。此外,實際上可以數個不同步驟來執行單一操作步驟中描述之操作。另外,可組合例示性實施例中論述之一或多個操作步驟。應理解,如熟習此項技術者將容易地顯而易見,流程圖圖解中說明之操作步驟可經受眾多不同修改。熟習此項技術者亦將理解,可使用多種不同技術中之任一者來表示資訊及信號。舉例而言,可由電壓、電流、電磁波、磁場或磁性粒子、光場或光學粒子或其任何組合表示在整個上文描述中可參考之資料、指令、命令、資訊、信號、位元、符號及碼片。
提供本發明之先前描述以使任何熟習此項技術者能夠進行或使用本發明。在不脫離本發明之精神或範疇的情況下,對本發明之各種修改對於熟習此項技術者而言將容易地顯而易見,且本文中定義之一般原理可應用於其他變化。因此,本發明並不意欲限於本文中描述之實例及設計,而應符合與本文中揭示之原理及新穎特徵相一致的最廣範疇。
10‧‧‧處理器
12‧‧‧分流預測電路(BPC)
14‧‧‧輸入/輸出電路
16‧‧‧指令快取記憶體
18‧‧‧資料快取記憶體
20‧‧‧執行管線
22‧‧‧前端電路
24‧‧‧執行單元
26‧‧‧完成單元
28‧‧‧鏈接棧
30‧‧‧暫存器
32‧‧‧一般用途暫存器(GPR)
34‧‧‧程式計數器
36‧‧‧鏈接暫存器
38‧‧‧擷取/解碼管線級
40‧‧‧指令佇列
42‧‧‧第一分流預測器
44‧‧‧第二分流預測器
45‧‧‧轉遞電路
46‧‧‧第一分流預測歷史暫存器
48‧‧‧第二分流預測歷史暫存器

Claims (20)

  1. 一種用於在一處理器中執行經擷取指令之分流預測之分流預測電路,其包含:一第一分流預測器,其經組態以:預測一指令佇列中之一條件分流指令之一第一分流預測;及基於針對該條件分流指令之該第一分流預測來更新一第一分流預測歷史暫存器;一轉遞電路,其經組態以將針對該條件分流指令之該第一分流預測作為一推測預測而轉遞至一第二分流預測歷史暫存器;及一第二分流預測器,其經組態以基於包括該推測預測之該第二分流預測歷史暫存器來預測該指令佇列中之該條件分流指令之一第二分流預測。
  2. 如請求項1之分流預測電路,其經進一步組態以:比較該第二分流預測與該推測預測;及回應於該第二分流預測不同於該推測預測,藉由基於該第二分流預測來更新該第一分流預測歷史暫存器中之該第一分流預測及該第二分流預測歷史暫存器中之該推測預測而超越該推測預測。
  3. 如請求項1之分流預測電路,其中該第一分流預測器經組態成以一第一潛時及一第一準確性進行操作,且該第二分流預測器經組態成以高於該第一潛時之一第二潛時及高於該第一準確性之一第二準確性進行操作。
  4. 如請求項1之分流預測電路,其中:該第一分流預測歷史暫存器包含一第一全域歷史、一第一本機歷史,或一第一路徑歷史,或其一組合;且 該第二分流預測歷史暫存器包含一第二全域歷史、一第二本機歷史,或一第二路徑歷史,或其一組合。
  5. 如請求項1之分流預測電路,其進一步包含一單一歷史暫存器,該單一歷史暫存器包含該第一分流預測歷史暫存器及該第二分流預測歷史暫存器。
  6. 如請求項5之分流預測電路,其中該單一歷史暫存器包含:一第一指標,其指示該第一分流預測歷史暫存器中之一最近分流預測;及一第二指標,其指示該第二分流預測歷史暫存器中之一最近分流預測。
  7. 如請求項1之分流預測電路,其整合至一積體電路中。
  8. 如請求項1之分流預測電路,其整合至選自由以下各者組成之群組的一裝置中:一機上盒、一娛樂單元、一導航裝置、一通信裝置、一固定位置資料單元、一行動位置資料單元、一行動電話、一蜂巢式電話、一電腦、一攜帶型電腦、一桌上型電腦、一個人數位助理(PDA)、一監視器、一電腦監視器、一電視、一調諧器、一無線電、一衛星無線電、一音樂播放器、一數位音樂播放器、一攜帶型音樂播放器、一數位視訊播放器、一視訊播放器、一數位視訊光碟(DVD)播放器,及一攜帶型數位視訊播放器。
  9. 一種用於在一處理器中執行經擷取指令之分流預測之分流預測電路,其包含:一第一分流預測器構件,其用於:預測一指令佇列中之一條件分流指令之一第一分流預測;及基於針對該條件分流指令之該第一分流預測來更新一第一分流預測歷史暫存器; 一轉遞構件,其用於將針對該條件分流指令之該第一分流預測作為一推測預測而轉遞至一第二分流預測歷史暫存器;及一第二分流預測器構件,其用於基於包括該推測預測之該第二分流預測歷史暫存器來預測該指令佇列中之該條件分流指令之一第二分流預測。
  10. 一種用於在一處理器中執行經擷取指令之分流預測之方法,其包含:由一第一分流預測器基於一第一分流預測歷史來預測一指令佇列中之一條件分流指令之一第一分流預測;基於針對該條件分流指令之該第一分流預測來更新該第一分流預測歷史;將針對該條件分流指令之該第一分流預測作為一推測預測而轉遞至一第二分流預測歷史;及由一第二分流預測器基於包括該推測預測之該第二分流預測歷史來預測該指令佇列中之該條件分流指令之一第二分流預測。
  11. 如請求項10之方法,其進一步包含:比較該第二分流預測與該推測預測;及回應於該第二分流預測不同於該推測預測,藉由基於該第二分流預測來更新該第一分流預測歷史中之該第一分流預測及該第二分流預測歷史中之該推測預測而超越該推測預測。
  12. 如請求項10之方法,其中該第一分流預測器以一第一潛時及一第一準確性進行操作,且該第二分流預測器以高於該第一潛時之一第二潛時及高於該第一準確性之一第二準確性進行操作。
  13. 如請求項10之方法,其中:該第一分流預測歷史包含一第一全域歷史、一第一本機歷 史,或一第一路徑歷史,或其一組合;且該第二分流預測歷史包含一第二全域歷史、一第二本機歷史,或一第二路徑歷史,或其一組合。
  14. 如請求項10之方法,其進一步包含將該第一分流預測歷史及該第二分流預測歷史儲存於一單一歷史暫存器中。
  15. 如請求項14之方法,其進一步包含:由一第一指標指示該單一歷史暫存器中之該第一分流預測歷史中之一最近分流預測;及由一第二指標指示該單一歷史暫存器中之該第二分流預測歷史中之一最近分流預測。
  16. 一種非暫時性電腦可讀媒體,其上儲存有用以致使一處理器實施用於在該處理器中執行經擷取指令之分流預測之一方法的電腦可執行指令,該方法包含:由一第一分流預測器基於一第一分流預測歷史來預測一指令佇列中之一條件分流指令之一第一分流預測;基於針對該條件分流指令之該第一分流預測來更新該第一分流預測歷史;將針對該條件分流指令之該第一分流預測作為一推測預測而轉遞至一第二分流預測歷史;及由一第二分流預測器基於包括該推測預測之該第二分流預測歷史來預測該指令佇列中之該條件分流指令之一第二分流預測。
  17. 如請求項16之非暫時性電腦可讀媒體,其上儲存有用以致使該處理器實施該方法之該等電腦可執行指令,該方法進一步包含:比較該第二分流預測與該推測預測;及 回應於該第二分流預測不同於該推測預測,藉由基於該第二分流預測來更新該第一分流預測歷史中之該第一分流預測及該第二分流預測歷史中之該推測預測而超越該推測預測。
  18. 如請求項16之非暫時性電腦可讀媒體,其上儲存有用以致使該處理器實施該方法之該等電腦可執行指令,其中該第一分流預測器以一第一潛時及一第一準確性進行操作,且該第二分流預測器以高於該第一潛時之一第二潛時及高於該第一準確性之一第二準確性進行操作。
  19. 如請求項16之非暫時性電腦可讀媒體,其上儲存有用以致使該處理器實施該方法之該等電腦可執行指令,該方法進一步包含將該第一分流預測歷史及該第二分流預測歷史儲存於一單一歷史暫存器中。
  20. 如請求項19之非暫時性電腦可讀媒體,其上儲存有用以致使該處理器實施該方法之該等電腦可執行指令,該方法進一步包含:由一第一指標指示該單一歷史暫存器中之該第一分流預測歷史中之一最近分流預測;及由一第二指標指示該單一歷史暫存器中之該第二分流預測歷史中之一最近分流預測。
TW104109240A 2014-03-24 2015-03-23 在超越分流預測器中之推測歷史轉遞及其相關電路、方法及電腦可讀媒體 TWI588739B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/223,091 US9582285B2 (en) 2014-03-24 2014-03-24 Speculative history forwarding in overriding branch predictors, and related circuits, methods, and computer-readable media

Publications (2)

Publication Number Publication Date
TW201602907A TW201602907A (zh) 2016-01-16
TWI588739B true TWI588739B (zh) 2017-06-21

Family

ID=52829348

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104109240A TWI588739B (zh) 2014-03-24 2015-03-23 在超越分流預測器中之推測歷史轉遞及其相關電路、方法及電腦可讀媒體

Country Status (8)

Country Link
US (1) US9582285B2 (zh)
EP (1) EP3123305A1 (zh)
JP (1) JP6370918B2 (zh)
KR (1) KR101829369B1 (zh)
CN (1) CN106104466B (zh)
CA (1) CA2939834C (zh)
TW (1) TWI588739B (zh)
WO (1) WO2015148372A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11995447B2 (en) * 2020-10-15 2024-05-28 Centaur Technology, Inc. Quick predictor override and update by a BTAC
JP2022094507A (ja) 2020-12-15 2022-06-27 富士通株式会社 演算処理回路及び演算処理方法
US11868773B2 (en) 2022-01-06 2024-01-09 International Business Machines Corporation Inferring future value for speculative branch resolution in a microprocessor

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1397876A (zh) * 2001-05-04 2003-02-19 智慧第一公司 假想分支目标地址高速缓存中置换目标地址的装置及方法
US20050132175A1 (en) * 2001-05-04 2005-06-16 Ip-First, Llc. Speculative hybrid branch direction predictor
US20060036837A1 (en) * 2004-08-13 2006-02-16 Stark Jared W Prophet/critic hybrid predictor
US20070050776A1 (en) * 2005-08-29 2007-03-01 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Predictive processor resource management
TW201108109A (en) * 2009-08-28 2011-03-01 Via Tech Inc Method for updating a branch target address cache in a microprocessor and related microprocessor

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6374349B2 (en) 1998-03-19 2002-04-16 Mcfarling Scott Branch predictor with serially connected predictor stages for improving branch prediction accuracy
US6134654A (en) 1998-09-16 2000-10-17 Sun Microsystems, Inc. Bi-level branch target prediction scheme with fetch address prediction
KR100317240B1 (ko) * 1999-10-21 2001-12-22 윤종용 분기 예측 정확도 히스토리를 이용한 분기 예측기
US7836288B2 (en) 2004-09-14 2010-11-16 Arm Limited Branch prediction mechanism including a branch prediction memory and a branch prediction cache
US7673122B1 (en) 2005-09-29 2010-03-02 Sun Microsystems, Inc. Software hint to specify the preferred branch prediction to use for a branch instruction
US7707398B2 (en) 2007-11-13 2010-04-27 Applied Micro Circuits Corporation System and method for speculative global history prediction updating
US8788797B2 (en) 2010-12-22 2014-07-22 Advanced Micro Devices, Inc. Combined level 1 and level 2 branch predictor
JPWO2012127666A1 (ja) * 2011-03-23 2014-07-24 富士通株式会社 演算処理装置、情報処理装置及び演算処理方法
US9201654B2 (en) 2011-06-28 2015-12-01 International Business Machines Corporation Processor and data processing method incorporating an instruction pipeline with conditional branch direction prediction for fast access to branch target instructions
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1397876A (zh) * 2001-05-04 2003-02-19 智慧第一公司 假想分支目标地址高速缓存中置换目标地址的装置及方法
US20050132175A1 (en) * 2001-05-04 2005-06-16 Ip-First, Llc. Speculative hybrid branch direction predictor
US20060036837A1 (en) * 2004-08-13 2006-02-16 Stark Jared W Prophet/critic hybrid predictor
US20070050776A1 (en) * 2005-08-29 2007-03-01 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Predictive processor resource management
TW201108109A (en) * 2009-08-28 2011-03-01 Via Tech Inc Method for updating a branch target address cache in a microprocessor and related microprocessor

Also Published As

Publication number Publication date
WO2015148372A1 (en) 2015-10-01
CA2939834A1 (en) 2015-10-01
CN106104466A (zh) 2016-11-09
JP6370918B2 (ja) 2018-08-08
KR20160135726A (ko) 2016-11-28
CA2939834C (en) 2019-09-17
KR101829369B1 (ko) 2018-02-19
JP2017509995A (ja) 2017-04-06
EP3123305A1 (en) 2017-02-01
CN106104466B (zh) 2019-05-28
US9582285B2 (en) 2017-02-28
TW201602907A (zh) 2016-01-16
US20150268958A1 (en) 2015-09-24

Similar Documents

Publication Publication Date Title
US10255074B2 (en) Selective flushing of instructions in an instruction pipeline in a processor back to an execution-resolved target address, in response to a precise interrupt
KR20180127379A (ko) 프로세서-기반 시스템들 내의 로드 경로 이력에 기반한 어드레스 예측 테이블들을 사용하는 로드 어드레스 예측들의 제공
US9830152B2 (en) Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor
EP3433728B1 (en) Providing references to previously decoded instructions of recently-provided instructions to be executed by a processor
US20180081690A1 (en) Performing distributed branch prediction using fused processor cores in processor-based systems
TWI588739B (zh) 在超越分流預測器中之推測歷史轉遞及其相關電路、方法及電腦可讀媒體
JP6271572B2 (ja) 実行パイプラインバブルを低減するためにサブルーチンリターンのための分岐ターゲット命令キャッシュ(btic)エントリを確立すること、ならびに関連するシステム、方法、およびコンピュータ可読媒体
US20160019060A1 (en) ENFORCING LOOP-CARRIED DEPENDENCY (LCD) DURING DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA
TWI752354B (zh) 提供預測性指令分派節流以防止在基於亂序處理器(oop)的設備中的資源溢出
US20170046167A1 (en) Predicting memory instruction punts in a computer processor using a punt avoidance table (pat)
US20160077836A1 (en) Predicting literal load values using a literal load prediction table, and related circuits, methods, and computer-readable media
US10331447B2 (en) Providing efficient recursion handling using compressed return address stacks (CRASs) in processor-based systems
US9858077B2 (en) Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media
US20190065060A1 (en) Caching instruction block header data in block architecture processor-based systems
US20190294443A1 (en) Providing early pipeline optimization of conditional instructions in processor-based systems