TWI317091B - A method and microprocessor for predicting branch instructions - Google Patents
A method and microprocessor for predicting branch instructions Download PDFInfo
- Publication number
- TWI317091B TWI317091B TW095119436A TW95119436A TWI317091B TW I317091 B TWI317091 B TW I317091B TW 095119436 A TW095119436 A TW 095119436A TW 95119436 A TW95119436 A TW 95119436A TW I317091 B TWI317091 B TW I317091B
- Authority
- TW
- Taiwan
- Prior art keywords
- branch
- instruction
- prediction
- microprocessor
- target cache
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 31
- 238000000605 extraction Methods 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 11
- 239000000284 extract Substances 0.000 claims description 4
- 241000282320 Panthera leo Species 0.000 claims 1
- 230000006399 behavior Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 210000005103 brain tumor initiating cell Anatomy 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 239000002023 wood Substances 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/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)
- Memory System Of A Hierarchy Structure (AREA)
Description
1317091 九、發明說明: 【發明所屬之技術領域】 本發明大體上係關於微處理器,且特定言之係關於分支 預測微處理器。 【先前技術】 當管線微處理器等待確定是否應執行條件分支指令時, 其通常使用分支預測來避免使其指令管線停止運作。分支 預測機構允許該等微處理器在實際 你耳丨不汗估其分支條件之前來 推測執行還是不執行條件分支指令。 :=支預測方法依賴於維護一分支歷史表,該表包 器。兴 寸數盗或其他追蹤指示 大信' 5 ’―個:位元飽和計數器計數至-為11之最 值且计數至一為00之最小值,並 ^ ^ y ,、T值11代表強執行,10 =弱執行’(Η代表弱不執行且〇〇代表強不執行。基於運 縱過去分支行為。 數益例如微處理器追 因為藉由分支預测獲得之實 声而中m , 此日5視分支預測準確 又二因此對於不同指令位址範圍可使用不同計數器, 以使待每個計數器之 更好地反映分支,人 較窄指令位址範圍内 為一相對行/不執行行為。由於每個計數器 之預測準確度二方立Γ圍提供—分支預測子,因此改良 匕方式可導致一相對大數量。 用。因此,分支坪由 D十數器之使 史表可為相對大的,且編入它們夕" 需要將—有效數番+ > 八匕們之中可 之心令位址位元解碼以識別所涉及之相 111497.doc 1317091 對窄指令位址範圍。 維護人員延遲限制了藉由分支目標位址快取(或者,相告 於,分支目標快取)之使用實現進一步分支預測效能增益: 能力。該等分支目標快取保持先前識別之分支指令之指= 位址,例如,先前由該微處理器提取、解碼且識別為二^ 指令之分支指令,且藉由將每個新提取指令之指令值址與 分支目標快取内容相比較,在解碼前可檢測分支指令。一 分支目標快取"命中,,指示該指令位址符合—先前識 支,而一分支目標快取,,未命中,,指示該指令並非—先前 別之分支’意謂著微處理器必須等待直至指令解碼階 定該指令是否為一分支指令。 又 因此,可將為分支目標快取命中之分支指令預測為執行 或不執行而無需等待指令解碼。然而,使用分支歷史表作 出該等預測之能力依賴在與用來檢測分支目標快 時間數量相等之時間内可用之表資訊。大分支歷史表通; 不能足夠快地存取以用於預測分支目標快取命中。吊 及夺預測資λ之不可利雜使得微處理 法。在一個替代方汰A t 个他方 中之八主浐入立’,段設總是執行為分支目標快取命 致_^ "即,固定執行該”預測”。該等方法可導 致一相备大數量之次數之# 支歷史表加速曰1 另一替代方法為使分 ^, 精由使其變得足夠小以使得直在沪人 資訊為可用的。然:,=:在指令解碼之前預測 來在指令位址之-較財 目㈣子(或—些預測子) 廣乾圍内預測分支,故以此方式之收 111497.doc 1317091 縮分支歷史表通常降低了預測準確度。 【發明内容】 在一或多個實施例中,一微處理器使用一第—分支歷史 表來預測為分支目標快取命中之分支指令,且使用_ =二 刀支歷史表來預測為分支目標快取未命中之分支指八今 第一分支歷史表經配置以具有一與分支目標快取之存取速 度相等之存取速度,以使得其預測資訊在微處理器之指八 管線中之早期即可使用,其中分支目標快取之命中與:: 中在指令管線中經檢測。因為在該管線中直至後期^前; 需其預測資訊’故該第二分支歷史表不需和該第—二 史表-樣快。該事實使得在配置第二分支歷史表之大小: 準確度時具有顯著靈活性。 微處理器可包括—分支預測電路,該分支㈣電路經配 置以基於將提取入該微處理器之一指令管線中之分支指人 預測為執行或不執行而引導對該指令管線的自—指令 :指令提取。該分支預測電路之一實施例包含:一分支目 一、取、其經配置以為已知分支指令儲存分支目標資訊 一 * 支歷史表,其經配置以儲存第-分支預測資訊 二刀支歷史表,其經配置以儲存第二分支預測資訊; :支控制邏輯。該分支控制邏輯可經配置以根據為分支 目標快取命中之&去 ± 支扣々之該第一分支預測資訊並根據為 分支目標快取未命 象為 ^ 之刀支才日令的該第二分支預測資訊來 將分支指令預測為執行或不執行。 來 在Λ知例中,該第一分支歷史表經配置以具有一與分 111497.doc 1317091 支目標快取之存取速度相等之存取速度’且該第二分支歷 史表經配置以具有—與指令快取之存取速度相等之存取速 度。更-般化地,該第—分支歷史表經配置以使得其分支 預測資訊結合檢測分支目標快取命中(例如,在指令管線之 提取階段早期)為可用的’而該第:分支較表經配置以使 得其分支預測資訊結合識別分支指令(例如,在指令管線之 解碼階段後期)為可用的。 ’ 上述微處理器可體現使用第一分支歷史表預測分支目栌 快取命中與使用第二分支歷史表預測分支目標快取未命中丁 之方法之-或多個變化。例如,微處理器可經配置 第-分支預測資訊為分支目標快取命中作出初始預測,且 其可經配置以根據第二分支預測資訊為分支目標快取命中 作出對應後續預測。因此,該微處理器可經配置以根據該 專初始預測引導資訊提取,且根據該等對應後續預測有條 :地重引導資訊提取。意即,由於第二分支歷史表可比第 y分支歷史表大(且更為準確),因衫對應後續預測與既定 初始預測不一致,則微處理器可重引導資訊提取。 八此外,該微處理器可經配置以回應於將分支預測分解為 分支目標快取命中與未命中而更新該第二分支預測資訊, 以使得該第二分支預測資訊反映分支目標快取命中與未命 中兩者之分支歷史。利用該方法,微處理器可經配置以更 :作為第二分支預測資訊之—函數之第—分支預測資訊。 意:’該第二分支歷史表用來反映所有經執行之分支指令 之刀支歷史,無論它們是否在分支目標快取中表示。 ],1497.doc 1317091 或者’該微處理器可經配置以回應於將分支預測分解為 刀支目標快取未命中而更新該第二分支預測資訊,且其經 配置以回應於將分支預測分解為分支目標快取命中而更新 該第一分支預測資訊。利用該方法,第一分支歷史表反映 在快取内表示之該等分支指令之分支歷史,且第二分支歷 史表反映未在快取中表示之該等分支指令之分支歷史。 【貫施方式】
以非限定性實例說明,圖1說明一微處理器1〇,其可包含 一管線精簡指令集電腦(RISC)微處理器。在所說明之實施 例中,微處理器10包含輸入/輸出(1/〇)電路12、一指令快取 14 一資料快取16與一指令管線18,該管線包含一前端電 路〇 執行單元22與一完成單元24。 在操作中,前端電路20自指令快取14提取資訊,快取14 °為一機载一級(L1)快取。根據一可包括程式分支或跳躍 =經定義之電腦程式流程提取該等指令。微處理器⑺使用 分支預測來預測是否要執行或不執行條件分支,使得當遭 遇條件分支指令時,微處理器通常不中斷其指令提取操作。 。將匕提取之f訊解碼且發給執行單元22,根據—超純量 木構可貫施單元22。執行單元22執行該等經發出之指令, j完成單元24收回該等經執行之資訊。完成單元24可包含 將執仃結果儲存入一或多個目標檔案暫存器之回寫機 以非限疋性實例說明,執行單元咖含—整數單元%、 L儲存單元28與—浮點單元3〇。因此,前端電路2〇可 A配置來將整數指令調度至整數單元26,將記憶體存取指 1I1497.doc 1317091 令調度至負载/儲存單元28等等。 熟私此項技術者應瞭解在執行單元22内之每個該子單元 =身可包含若干連續管線階段且在執行單元22内實施之該 等特定子單元可變化。實際上,熟習此項技術者應瞭解在 不偏離本文揭示之分支預測方法與裝置之條件下,微處理 器ίο之架構可顯著變化。 根據微處理器10之-個實施例來研究分支預測之一較詳 細之處理,前端電路20包含若干管線階段,包括連續提取 階段32與34(在圖中亦表示為Fm與ρΕ2)、連續解碼階段% 與3 8(在圖中亦表示為Dc丨與DC2)與—發出/調度階段4〇(在 圖中亦表示為IS)。言玄等前端管,線階段之一或多者與—分支 預測電路42相結合,電路42包含分支控制邏輯44、一分支 目標快取46、一第—分支歷史表48(在圖中亦表示為贿〇 與一第二分支歷史表5〇(在圖中亦表示為BHT2)。 提取階段32可經配置來維護一代表將提取入指令管線a 之下一指令之指令位址之位址計數器。將在提取階段U中 保持之值提供至指令快取14,以使得指令快取⑷字在特定 位址處保持之實際程式指令輸出從而由解碼階段36解碼。 在提取階段32中保持之值通常在每個時脈週期中更新。對 於連績提取’更新該值包含將其增量至指向指令之當前序 列中之下-程式指令。然而,若經提取之最後指令為—將 執行之條件分支指令,那麼則連續提取為不合適的。實情 為,指令提取應經重引導至分支指令之目標位址。 所以’分支預測電路42使用分支歷史資訊來_執行還 111497.doc 1317091 不執行既定條件分支指令。可根據一或多種啟發法產 生該刀支貝訊。以非限定性實例說明,該分支預測資訊可 基於备控執行或不執行多少個最後R分支。可精化該資訊, Ή藉由維6蔓關於正向分支與反向分支之分離歷史資訊, 及/或藉由維護總程式指令位址空間之子範圍之分支歷史 預測子’以使得每個分支預測子反映-相對小指令位址範 圍之執仃/不執行行為。由於藉由每個預測子代表之分支之 數量減少且推測起來其更反映了較小數量之分支之特定行 為’故將每個預測子限制在__較小範目之指令位址可提供 一較準確預測子。 然而,維護一較大數量之預測子通常需要一大分支歷史 表,這樣會降低該表可經存取之速度。就在指令管線18中 之解碼步驟前未經識別(且因此未經預測)為分支指令而 吕,一較慢之存取速度並沒有問題,但對於在指令管線18 中早期經識別作為分支指令之分支指令,其為有問題的, 藉由分支目標快取46,其提供微處理器10在資訊經解碼之 前識別一新的經提取之資訊是否為一分支指令之能力。 以非限定性實例說明,分支目標快取“可實施為—分支 目標位址快取(稱為”BTAC”)或實施為一分支目標指令快取 (通常稱為’’BTIC")。在第一種狀況下,分支目標快取“儲 存先珂經識別之分支指令之指令位址且儲存對應分支目標 位址。在第二種狀況下,分支目標快取46儲存先前經識別 之分支指令之指令位址,該等分支指令之實際目標指令, 及繼該目標指令之位址後之下一指令位址。 111497.doc 1317091 ,’、、4如何’右一既定指令先前經提取、解碼且識別為一 條件分支指令’則其對應指令位址可儲存在分支目標快取 46中 刀支目標快取46因此儲存已知分支指令之指令位 址’且可將每個新提取指令之指令位址與分支目標快取46 中保持之位址值相比較。一比較匹配(一分支目標快取命中) 意謂著該新經提取之指令為-已知分支指令,而不匹配(一
分支目標快取未命中)意謂著需要指令解碼來確定該新經 提取指令是否為一分支指令。 :基於刀支目4示快取命中檢測而識別出分支指令之階 段比基於指令解碼而識別出分支指令之階段早,因此用來 預測作為分支目標快取命中之分支指令之分支預測資訊必 須比用來預測為分支目標快取未命中之分支指令的分支預 測資訊為更快可用#。因此’在微處理器ι〇之至少一個實 施例中’其分支預測方法包含:維護用於已知分支指令之 制之分支目標快取46,確定經提取人微處理器1〇之指令 s線1 8中之刀支私令疋分支目標快取命中還是分支目標快 取未命中’且根據儲存在第—分支歷史表辦之第一分支 預測資訊預測執行或不執行為分支目標快取命中之分支指 々,且根據儲存在第二分支歷史 史表50中之第二分支預測資 訊預測執行或不執行為分支目標快取未命中之分支指令。 該方法可進—步包含配置第—分支歷史表48具有-盥分 支目標快取46之存取速度㈣之存取速度,絲置第二分 支歷史表50具有-與指令快取14之存取速度相等之存取速 度,指令自快取14提取入指令管線18。通常,指令快取Μ 111497.doc -13. 1317091 之存取速度使得實際(經提取)程式指令在合適之指令時脈 週』提ί、至第-解碼階段36。舉例而言,可配置第—分支 歷史表48與分支目標快取46在指令管線18之Μ週期中為可 存取的’且可酉己置第:分支歷史表50在指令管線18之Ν週期 中為可存取的,其中_N為第一數目與第二數目 N。 仍 、一種配置第—分支歷史表48比第二分支歷史表50快之方 会匕3配置第一分支歷史表48儲存之分支預測子之數量比 f二分支歷史表5G少’以使得在第—分支歷史_中存取 分支預測子所花時間比在第:分支歷史表5时存取—八 支預測子所花時間少。如先前所說明,儲存在分支歷史二 8與50之個別預測子可包含飽和計數器,例如, :器,其提供以-具有強執行、弱執行、弱不執行與強; 十 分= ㈣示器之形式的分支預測資訊 '然而,應理解 -史表48與5G可㈣-不同類型之計數 不同之形式之分支預測子。 木用“ 處=2述之兩表分支預測方法之—進—步態樣中,微 命中作中置根據第一分支預測資訊為分支目標快取 快取人中=始預測’且根據第二分支預測資訊為分支目標 來^使用出對應隨後預測。意即,微處理器1〇可經配置 二用:存在第一分支歷史表48中之資訊作出之一初 :早:冷支預測為分支目標快取命中控制其指令提取,且 儲存在第二分支歷史表5〇中之資訊作出 分支預測與最初預測不-致則置換該控制。 111497.doc -14- 1317091 4本文中,置換較早預測可包含重引導資訊提取。例如, 方執们刀始預測,則分支預測電路42可將指令提取引導至 =不分支目標位址’且若不執行隨後預測,則該分支預測 -路繼不執行分支指令後將指令提取重引導回下—連 址使用ik後分支預測來有條件地重引導(置換)較早分支 測具有優點,諸如第二分支歷史表5〇與較小且較快之第一 分支歷史表48相比,其較大且推測起來較準確。 取ίΓΓ、方法,第二分支歷史表50儲存用於分支目標快 卩與为支目標快取未命中之兩者之預測資訊。同樣 地,一種更新第二分支歷史表50之方法包含回應於將分支 預測分解為分支目標快取命中與未命中而更新第二分 測資訊,以使得該第二分支預測資訊反映分支目標快取命 中與未命中之分支歷史。意,,關於是否實際地執行或不 執订分支目標快取命中與未命中之個別分支指彳,執行單 元22可經配置來提供回饋至分支預測電路42,且該回饋可 用於更新儲存在第二分支歷史表5〇中之預測資訊。反過 來^儲存在第-分支歷史表48中之預測資訊可作為該(經更 新)第二分支預測資訊之一函數更新。同樣地,-至少可將分 支目標快取命中之回饋提供至分支預測電路42,其直接: 於更新第一分支歷史表48。 j文教示之兩表分支預測方法之另—實施例包含回應於 將一指令位址提取入指令管線18而啟動對第一與第二^支 歷史表48與5G之存取,且回應於檢測出該指令位址為2 目標快取46中之一命中而中止對第二分支歷 <表5〇之存 111497.doc -15· 1317091 取 固此,微處理器1〇將—新指令提取入指令管線i8之同 二:對第一與第二分支歷史表48與5〇之存取。若該新提 取“經檢測為-分支目標快取命中,那麼由於不必要故 微處理器10中止對第二分支歷史表5〇之存取。 在該等狀況下終止該存取可保存能量。例如, 自第二分支歷史表50之分支預測姑要&山^ 將來 # 刀叉預測結果輸出之感應放大器及 /或其他輸出電路不需要加電。此外,即使中止一歧數量之 =專存取,根據以上方法對第二分支歷史表5q之存取之啟 動保證所需結果將以一及時之方式可用,意即,對第二八 支歷史表5〇之存取在指令管線18中早期經啟動,以使得: 自於第二分支歷史表5G之關於分支目標快取未命中之預測 結果在指令管線18中後期為就緒且可用的。 =法容許第—分支歷史表48專門地為作為分支目標快 取π中之》支指令儲存_資訊,且容許第二分支 5 〇專門地為作為分支目標快取 杳1 η这 个Ρ Τ又刀又私令儲存預測 貝"樣地’微處理器1〇採用之分支預測資訊更新之方 法可包含回應於將分支預測分解為分支目標快取未命 更新該第二Μ,資訊,且㈣於將分支預測分解為八 支目標快取命中而更新該第-分支預測資訊。 換言之,微處理器1G可利用來自執行單元22之㈣ 定是實際地執行還是不執行分支指令。關 快取命中之分#户人夕门拉 刀文目才示 支指7之回饋可用來更新儲存在第一分 史表48中之預測資訊’且關於作為分支目標快取未命心 分支指令之回饋可用來更新儲存在第二分支歷史表5〇中之 H1497.doc • 16 - 1317091 預測資訊。以此方式將預測資訊分離改良微處理器ι〇之預 測準確度’至少達到了分支目標快取命中與未命中表現出 不同執行/不執行行為之程度。 圖2提供微處理器10之一部分之一功能方塊圓,其中所說 明之功能元件可經配置來進行本文教示之兩表分支預測方 法。自該說明’吾人看出指令管線18之提取階段32將指令 位址提供至指令快取14且至分支控制邏輯44 ^指令快取“ φ 使用該等位址來提取對應指令輸出至指令管線之解碼階段 36,而分支控制邏輯44將每個提取位址與分支目標快取46 相比較以檢測已知分支指令,意即,以識別出與一儲存在 分支目標快取46中之指令位址相匹配之該等經提取之指令 位址。 若分支目標快取46轉回一命中指示至分支控制邏輯44, 那麼分支控制邏輯44獲得來自第一分支歷史表48之預測資 訊以確定應將該分支目標快取預測為執行還是不執行。若 • 預測指示器指示一執行預測,那麼分支控制邏輯44使提取 階段32之下一提取位址由分支快取命中之分支目標位址更 新,其在圖中表示為"BTA(BTC HIT)”,以指示關於一分支 目標快取(BTC)命中之分支目標位址(BTA)。 為刀支目4示快取未命中之指令位址通過提取階段3 2與3 4 順序地傳播,且對應於該等位址之指令由指令快取Μ提供 用於在解碼階段36處解碼。在該點上’在分支目標快取牝 中為未命中之經解碼之分支指令經識別,且分支控制邏輯 44使用來自於第二分支歷史表5〇之預測資訊來預測執行或 川 497.doc -17· 1317091 不執行分支指令。若預測為執行,則分支控制邏輯44為提 取階段32提供對應分支目標位址,在圖中表示為”bta(btc MISS)",以指示關於一BTC未命中之BTA。 • 圖3說明上述功能性之一或多個實施例之存取週期時 序,其中第一分支歷史表48經配置具有一與分支目標快取 46之存取速度相等之存取速度。該匹配容許微處理器丨〇在 微處理器10基於檢測分支目標快取命中而識別出分支指令 _ 之相同官線階段獲得分支預測資訊。舉例而言,分支目標 决取46與第一分支歷史表48兩者在指令管線18之M週期(例 如7時脈週期)中為可存取的。該配置容許微處理器 10繼Μ+1個週期後將為分支目標快取命中之分支指令之分 支目標位址提供至提取階段3 2。 此外,第二分支歷史表50可經配置具有一存取速度,其 等於指令快取14之存取速度,或等於適合於指令位址提取 與對應指令之隨後解碼(藉由解碼階段36)間之延遲之任何 • 速度。舉例而言,可配置指令快取14與第二分支歷史表5〇 在指令管線18之Ν週期中為可存取的。該配置容許微處理器 10繼Ν+1個週期後將為分支目標快取未命中之分支指令之 分支目標位址提供至提取階段32。 以非限定性實例說明,Μ可為一個時脈週期,且Ν可為兩 個時脈週期。因此,微處理器1〇使用第一分支歷史表咐 兩個指令時脈週期中獲得分支目標快取命中之分支預測, 與第二分支歷史表50相比,第一分支歷史表48以其所含之 個別分支預測子之數量而言為相對小的。此外,微處理器 111497.doc • 18- !317091 10使用第二分支歷史表5G在三個指令時脈週期中 目標快取命中之分支預測。 '又亏刀 自上述實例,吾人看出藉由使用一”小型,,分支歷史表(音 尸,第一分支歷史表48),微處理器10捭 " g ^ ^ ^ 日加關於檢測為分支 輮快取命中之分支指令之—預 μ ^ ^ 捉取效旎的優點。此 起旬較準確之主分支歷史表之代價二任…(推測 之代價(意即,第二分支歷史表 〇)’該表可用來預測不是分支目標快取命中之分支指人, 且/或用作置換小型表所作之初始預測。 刀97 , 、同樣地’熟習此項技術者應瞭解本文揭示之兩 測可發生許多變化,諸如以下方 Γ々囟.楗處理器架構、小型 为支歷史表與主分支歷史表間之相對指令週期存取時序差 =、是否使用小型表專門地或初始地預測分支目標快取命 、啟發法與選來用於更新小型分支歷史表與主分支歷史 表之方法、儲存在小型表與主表中之分支預測資訊之特定 格式、小型表與主表之相對大小等等。更特定言之,熟習 此難術者應瞭解本發.明不由上述討論或隨附圖式限^ 事貫上’本發明僅由下述申請專利範圍與其法定等價物限 制。 、义 【圖式簡單說明】 圖1係一微處理器之一方塊圖。 圖2係一可實施在^之微處a器中之指令管線的_前端 電路之一方塊圖。 圖3係一圖2中說明之前端電路之一實施例之指令處理之 J11497.doc -19- 1317091 流程圖。 【主要元件符號說明】
10 微處理器 12 輸入/輸出電路 14 指令快取 16 資料快取 18 指令管線 20 前端電路 22 執行單元 24 完成單元 26 整數單元 28 負載/儲存單元 30 浮點單元 32, 34 提取階段 36, 38 解碼階段 40 發出/調度階段 42 分支預測電路 44 分支控制邏輯 46 分支目標快取 48 第一分支歷史表 50 第二分支歷史表 111497.doc -20-
Claims (1)
13 17®獅119436號專利申請案 中文申請專利範圍替換本(98年5月) 十、申請專利範圍: 1. 一種可以預測分支指令的微處理器,其包含一指令管 線’該指令管線包括或結合: 一指令快取,其經配置以快取提取進入該指令管線之 快取指令; 一分支目標快取,其經配置以儲存已知分支指令之分 支目標資訊; 第为支歷史表’其經配置以儲存第一分支預測資 訊; 一第二分支歷史表,其經配置以儲存第二分支預測資 訊;及 分支控制邏輯,其經配置以根據分支目標快取命中之 分支指令之該第一分支預測資訊及根據為分支目標快取 未命中之分支指令之該第二分支預測資訊以預測分支指 令為執行或不執行,其中該微處理器經配置以回應於將 一指令位址提取進入該指令管線而起始對該第一與該第 二分支歷史表之存取,且其進一步經配置以回應於檢測 出該指令位址為一在該分支目標快取中之命中而中止對 s亥第二分支歷史表之該存取,以避免被分支目標快取命 中之分支指令對該第二分支歷史表之一全存取。 2. 如請求項1之微處理器,其中該第一分支歷史表經配置以 具有一與該分支目標快取之存取速度相等之存取速度, 且其中該第二分支歷史表經配置以具有一與該指令快取 之存取速度相等之存取速度。 111497-980506.doc 1317091 3. 如請求们之微處理器,其中該第一分支歷史表與該分支 目標快取經配置以在該指令管線之M週期中為可存取 的’且其中該第二分支歷史表經配置以在該指令管線之N 週期中為可存取的,其中_N為第一數目與第二數目, Μ小於N。 4. 如請求項丄之微處理器,其中該第一分支歷史表包含一比 :第二分支歷史表數量小之分支預測子,以使得在該第 一分支歷史表中存取-分支預測子所花時間比在該第二 刀支歷史表中存取一分支預測子所花時間少。 5. 如清求項1之微處理器,纟中該微處自器經配置以根據該 第一分支預測資訊為分支目標快取命中作出初始預測, 且其經配置以根據該第二分支預測資訊為該分支目標快 取命中作出對應隨後預測。 6. 如請求項5之微處理器,其中該微處理器經配置以根據該 等初始預測來引導指令提取,且根據該等對應隨後預測 有條件地再引導指令提取。 7·如請求項6之微處理器,其中該微處理器經配置以對於一 既定初始預測,若該對應隨後預測與該既定初始預測不 一致則藉由重引導指令提取來有條件地重引導指令提 取。 8_如請求項1之微處理器,其中該微處理器經配置以回應於 將分支預測分解為分支目標快取命中與未命中而更新該 第一分支預測資訊,以使得該第二分支預測資訊反映分 支目標快取命中與未命中兩者之分支歷史。 ]11497-980506.doc 13 17〇9i •如請求項8之微處理器’其中該微處理器經配置以更新作 為該第二分支預測資訊之一函數之該第一分支預測資 訊。 1〇·如請求項1之微處理器’其中該微處理器經配置以回應於 將分支預測分解為分支目標快取未命中而更新該第二分 支預測資訊’且其經配置以回應於將分支預測分解為分 支目標快取命中而更新該第一分支預測資訊。 如請求項1之微處理器,其中該分支目標快取包含一分支 目標位址快取或一分支目標指令快取中之一者。 12. —種在一微處理器中之分支指令預測之方法: 維護一可識別已知分支指令之分支目標快取; 確定提取進入該微處理器之一指令管線中之分支指令 是分支目標快取命中還是分支目標快取未命中;及 根據儲存在一第一分支歷史表中之第一分支預測資訊 以預測分支目標快取命中之分支指令為執行或不執行, 且根據儲存在一第二分支歷史表中之第二分支預測資訊 以預測分支目標快取未命中之分支指令為執行或不執 行;及 回應於將一指令位址提取進入該指令管線而起始對該 第一與該第二分支歷史表之存取,且回應於檢測出該指 令位址為一在該分支目標快取中之命中而中止對該第二 分支歷史表之該存取,以避免被分支目標快取命中之分 支扣令對該第二分支歷史表之一全存取。 13. 如請求項12之方法,其進一步包含配置該第一分支歷史 111497-980506.doc Γ317091 表以具有-與該分支目標快取之存取速度相等 度,且配置該第二分支歷史表 子取速 文表以具有一與一指令快取之 存取速度相等之存取速度,兑由兮社人 ^其中該指令係自該 提取進入該指令管線。 71·开取 14. 如請求項12之方法,其進一牛七人龙 冑纟包含酉己置該第一分支歷史 表與該分支目標快取在該指令營磕 ^ Α θ 7 S線之“週期中成為可存 取的,且配置該第二分支厢φ矣*—> 廿 刀叉以表在該指令管線之N週期中 成為可存取的,其中M_為第一數目與第二數目且 於N。 15. 如請求項12之方法,其進一步包 少匕3配置該第一分支歷史 表以儲存一比該第二分支歷史 又歷文表數置小之分支預測子, 以使得在該第一分支歷史表中得 —+ 付以存取一分支預測子所 化時間比在該第二分支歷史表中. 時間^ <表中存取-分支預測子所花 %如請求項12之方法,其中該根據儲存在—第—分支歷史 表:之第-分支預測資訊以預測分支目標快取命中之分 支指令為執行或不執行係包含:根據該第一分支預測資 訊為分支目標快取命中作出初始預測,且根據該第二分 支預测資訊為該分支目標快取命中作出對應隨後預測。 17.如請求们6之方法’其進—步包含根據該等初始預測引 導指令提取,且根據該等對應隨後預測有條件地再引導 指令提取。 項17之方法’其中該根據等對應隨後預測有條件 地再弓丨導指令提取係包含:對於—既定初始預測,若該 111497-980506.doc • 4 - 1317091 對應隨後預測與該既定初 取。 °預測不一致則再引導指令提 19. 如請求項12之方法,其谁_ 丹運一步包含回應於將分支預測分 解為分支目標快取命中與未命中而更新該第二分支預測 資訊以使付該第二分支預測資訊反映分支目標快取命 中與未命中兩者之分支歷史。 20. 如明求項19之方法,其進一步包含更新該第一分支預測 資訊以作為該第二分支預測資訊之一函數。 21·如請求項12之方法’其進一步包含回應於將分支預測分 解為分支目標快取未命中而更新該第二分支預測資訊, 且回應於將分支預測分解為分支目標快取命中而更新該 第一分支預測資訊。 22·如請求項12之方法,其進一步包含將該分支目標快取配 置為一分支目標位址快取與一分支目標指令快取中之一 者0 111497-980506.doc
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/144,206 US7278012B2 (en) | 2005-06-02 | 2005-06-02 | Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200713035A TW200713035A (en) | 2007-04-01 |
TWI317091B true TWI317091B (en) | 2009-11-11 |
Family
ID=37482175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW095119436A TWI317091B (en) | 2005-06-02 | 2006-06-01 | A method and microprocessor for predicting branch instructions |
Country Status (9)
Country | Link |
---|---|
US (1) | US7278012B2 (zh) |
EP (1) | EP1889152B1 (zh) |
JP (1) | JP4950186B2 (zh) |
KR (1) | KR100974384B1 (zh) |
CN (1) | CN101228506B (zh) |
BR (1) | BRPI0610926A2 (zh) |
IL (1) | IL187609A0 (zh) |
TW (1) | TWI317091B (zh) |
WO (1) | WO2006130466A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI498820B (zh) * | 2011-12-28 | 2015-09-01 | Intel Corp | 具有用於分支錯誤預測之第二跳躍執行單元的處理器 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070081696A (ko) * | 2006-02-13 | 2007-08-17 | 삼성전자주식회사 | 분기 예측 정보를 저장하는 분기 타겟 버퍼 및 그것을포함한 분기 예측 회로 |
US7984279B2 (en) | 2006-11-03 | 2011-07-19 | Qualcomm Incorporated | System and method for using a working global history register |
US8639913B2 (en) * | 2008-05-21 | 2014-01-28 | Qualcomm Incorporated | Multi-mode register file for use in branch prediction |
KR101579589B1 (ko) * | 2009-02-12 | 2015-12-22 | 삼성전자 주식회사 | 파이프라인 프로세서를 위한 정적 분기 예측 방법과 이를 위한 컴파일 방법 |
US20110047357A1 (en) * | 2009-08-19 | 2011-02-24 | Qualcomm Incorporated | Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions |
US8370671B2 (en) * | 2009-12-02 | 2013-02-05 | International Business Machines Corporation | Saving power by powering down an instruction fetch array based on capacity history of instruction buffer |
JP5656074B2 (ja) * | 2011-02-21 | 2015-01-21 | 日本電気株式会社 | 分岐予測装置、プロセッサ及び分岐予測方法 |
US10007523B2 (en) | 2011-05-02 | 2018-06-26 | International Business Machines Corporation | Predicting cache misses using data access behavior and instruction address |
US9298465B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Asynchronous lookahead hierarchical branch prediction |
US9430241B2 (en) | 2012-06-15 | 2016-08-30 | International Business Machines Corporation | Semi-exclusive second-level branch target buffer |
US9280351B2 (en) | 2012-06-15 | 2016-03-08 | International Business Machines Corporation | Second-level branch target buffer bulk transfer filtering |
KR102077753B1 (ko) * | 2013-10-25 | 2020-04-07 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 레벨 1 명령 캐시 및 분기 예측 유닛에서의 대역폭 증가 |
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 |
US20160239309A1 (en) * | 2015-02-12 | 2016-08-18 | International Business Machines Corporation | Branch target buffer column predictor |
US20170083333A1 (en) * | 2015-09-21 | 2017-03-23 | Qualcomm Incorporated | Branch target instruction cache (btic) to store a conditional branch instruction |
US9507598B1 (en) * | 2015-12-15 | 2016-11-29 | International Business Machines Corporation | Auxiliary branch prediction with usefulness tracking |
US10175982B1 (en) * | 2016-06-16 | 2019-01-08 | Apple Inc. | Storing taken branch information |
US10684951B2 (en) | 2017-08-04 | 2020-06-16 | International Business Machines Corporation | Minimizing cache latencies using set predictors |
US10713054B2 (en) * | 2018-07-09 | 2020-07-14 | Advanced Micro Devices, Inc. | Multiple-table branch target buffer |
US11099852B2 (en) * | 2018-10-25 | 2021-08-24 | Arm Limitied | Apparatus and method for maintaining prediction performance metrics for prediction components for each of a plurality of execution regions and implementing a prediction adjustment action based thereon |
US20210149676A1 (en) * | 2019-11-14 | 2021-05-20 | Higon Austin R&D Center Corporation | Branch Prediction Method, Branch Prediction Unit and Processor Core |
US11467966B2 (en) * | 2020-09-02 | 2022-10-11 | Shenzhen GOODIX Technology Co., Ltd. | Cache memory having a programmable number of ways |
US11783050B2 (en) * | 2020-11-13 | 2023-10-10 | Centaur Technology, Inc. | Spectre fixes with predictor mode tag |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
JPH0820950B2 (ja) * | 1990-10-09 | 1996-03-04 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチ予測型分岐予測機構 |
JPH11143597A (ja) | 1997-11-05 | 1999-05-28 | Kawasaki Steel Corp | マイクロプロセッサ装置 |
US6374349B2 (en) * | 1998-03-19 | 2002-04-16 | Mcfarling Scott | Branch predictor with serially connected predictor stages for improving branch prediction accuracy |
US6550004B1 (en) * | 1999-11-05 | 2003-04-15 | Ip-First, Llc | Hybrid branch predictor with improved selector table update mechanism |
US7165169B2 (en) * | 2001-05-04 | 2007-01-16 | Ip-First, Llc | Speculative branch target address cache with selective override by secondary predictor based on branch instruction type |
US7024545B1 (en) * | 2001-07-24 | 2006-04-04 | Advanced Micro Devices, Inc. | Hybrid branch prediction device with two levels of branch prediction cache |
US7493480B2 (en) * | 2002-07-18 | 2009-02-17 | International Business Machines Corporation | Method and apparatus for prefetching branch history information |
-
2005
- 2005-06-02 US US11/144,206 patent/US7278012B2/en active Active
-
2006
- 2006-05-24 JP JP2008514713A patent/JP4950186B2/ja not_active Expired - Fee Related
- 2006-05-24 CN CN2006800271026A patent/CN101228506B/zh not_active Expired - Fee Related
- 2006-05-24 BR BRPI0610926-8A patent/BRPI0610926A2/pt not_active IP Right Cessation
- 2006-05-24 WO PCT/US2006/020440 patent/WO2006130466A2/en active Application Filing
- 2006-05-24 KR KR1020087000077A patent/KR100974384B1/ko not_active IP Right Cessation
- 2006-05-24 EP EP06760424.9A patent/EP1889152B1/en not_active Not-in-force
- 2006-06-01 TW TW095119436A patent/TWI317091B/zh not_active IP Right Cessation
-
2007
- 2007-11-25 IL IL187609A patent/IL187609A0/en unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI498820B (zh) * | 2011-12-28 | 2015-09-01 | Intel Corp | 具有用於分支錯誤預測之第二跳躍執行單元的處理器 |
Also Published As
Publication number | Publication date |
---|---|
WO2006130466A2 (en) | 2006-12-07 |
CN101228506B (zh) | 2010-05-19 |
EP1889152B1 (en) | 2018-10-10 |
IL187609A0 (en) | 2008-03-20 |
KR20080023723A (ko) | 2008-03-14 |
CN101228506A (zh) | 2008-07-23 |
EP1889152A2 (en) | 2008-02-20 |
JP2008542917A (ja) | 2008-11-27 |
WO2006130466A3 (en) | 2007-11-22 |
KR100974384B1 (ko) | 2010-08-05 |
JP4950186B2 (ja) | 2012-06-13 |
TW200713035A (en) | 2007-04-01 |
US7278012B2 (en) | 2007-10-02 |
US20060277397A1 (en) | 2006-12-07 |
EP1889152A4 (en) | 2008-10-15 |
BRPI0610926A2 (pt) | 2010-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI317091B (en) | A method and microprocessor for predicting branch instructions | |
US7783869B2 (en) | Accessing branch predictions ahead of instruction fetching | |
US8627044B2 (en) | Issuing instructions with unresolved data dependencies | |
KR101081662B1 (ko) | 비순차적 명령 어드레스들을 프리패치하기 위한 방법 및 장치 | |
US10628160B2 (en) | Selective poisoning of data during runahead | |
TW201030612A (en) | Pipelined microprocessor with fast conditional branch instructions based on static exception state | |
JPH07281895A (ja) | 分岐キャッシュ | |
TW200820072A (en) | Methods an apparatus for emulating the branch prediction behavior of an explicit subroutine call | |
TW200821924A (en) | Self prefetching L2 cache mechanism for instruction lines | |
JP2010511251A (ja) | サブルーチン呼び出しを認識(recognize)する方法及び装置 | |
EP2220556B1 (en) | A method and a system for accelerating procedure return sequences | |
US7844807B2 (en) | Branch target address cache storing direct predictions | |
US11099849B2 (en) | Method for reducing fetch cycles for return-type instructions | |
JP5415268B2 (ja) | 分岐先アドレスキャッシュにおけるルックアップの低減方法および装置 | |
US10747540B2 (en) | Hybrid lookahead branch target cache | |
US11086629B2 (en) | Misprediction of predicted taken branches in a data processing apparatus | |
JP2596712B2 (ja) | 近接した分岐命令を含む命令の実行を管理するシステム及び方法 | |
US7571305B2 (en) | Reusing a buffer memory as a microcache for program instructions of a detected program loop | |
US20060294346A1 (en) | Method and apparatus for managing a link return stack | |
US20040225866A1 (en) | Branch prediction in a data processing system | |
JPH09330221A (ja) | マイクロプロセッサにおける早期例外を追跡するシステム及び方法 | |
US5987599A (en) | Target instructions prefetch cache | |
JP5696210B2 (ja) | プロセッサ及びその命令処理方法 | |
US9823931B2 (en) | Queued instruction re-dispatch after runahead | |
CN115617402B (zh) | 一种适用于通用处理器的解耦合分支预测方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |