TW201235940A - Bimodal branch predictor encoded in a branch instruction - Google Patents
Bimodal branch predictor encoded in a branch instruction Download PDFInfo
- Publication number
- TW201235940A TW201235940A TW100140771A TW100140771A TW201235940A TW 201235940 A TW201235940 A TW 201235940A TW 100140771 A TW100140771 A TW 100140771A TW 100140771 A TW100140771 A TW 100140771A TW 201235940 A TW201235940 A TW 201235940A
- Authority
- TW
- Taiwan
- Prior art keywords
- branch
- instruction
- prediction
- bit
- bimodal
- Prior art date
Links
- 230000002902 bimodal effect Effects 0.000 title claims description 74
- 238000000034 method Methods 0.000 claims description 42
- 230000009977 dual effect Effects 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 9
- 230000007704 transition Effects 0.000 claims description 9
- 238000011156 evaluation Methods 0.000 claims description 8
- 229920006395 saturated elastomer Polymers 0.000 claims description 8
- 239000000284 extract Substances 0.000 claims description 6
- 238000004458 analytical method Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 claims description 3
- 238000000605 extraction Methods 0.000 claims description 2
- 230000004044 response Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 235000011389 fruit/vegetable juice Nutrition 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 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)
Description
201235940 六、發明說明: 【發明所屬之技術領域】 本發明大體上係關於減少電力及實施複雜性且改良支援 分支預測之處理系統之效能的技術,且更具體而言,係關 於用於在儲存於多層級記憶體階層架構中之分支指令中動 態地編碼分支預測資訊的有利技術。 【先前技術】 諸如蜂巢式電話、膝上型電腦、個人數位助理(PDA)或 其類似者之許多攜帶型產品併有執行支援通信及多媒體應 用的程式之一或多個處理器。用於此等產品之處理器習知 地具有階層式記憶體組態,該階層式記憶體組態具有包括 才曰令快取記憶體、資料快取記憶體及系統記憶體之多個層 級的快取記憶體。處理器亦需要以高效能及效率來操作以 支援此等產品之複數個計算密集型功能。處理器通常為管 線式的且支援條件分支指令之執行。 在管線式處理器上條件分支指令之執行可在條件之判定 以前使管線暫停。為了避免使處理器暫停,通常在管線中 提早使用某種形式之分支預測,從而允許處理器基於預測 之为支行為理論式提取及執行指令。若誤預測條件分支, 則自管線清空相關聯之理論式提取之指令且自判定之分支 位址提取新的指令。此誤預測減少處理器效能且增加電力 使用。 分支預測之習知做法歸因於分支預測電路之實施成本及 複雜性而受到限制,所有該等分支預測電路皆消耗電力。 160026.doc 201235940 【發明内容】 在本發明之若干態樣當中,本發明辨識對具有一低實施 成本且減少電力使用之改良之分支預測能力的需要。為了 達成此等目的’本發明之—竇 、 ^ 貫施例應用一種將雙模態分支 預測子位元儲存於-指令快取記憶體中之—分支指令中之 方法。基於儲存於自一指令快取記憶體提取之一分支指令 中的雙模態分支預測子位元預測—分支目標位址。基於回 應於該分支指令之執行的對分支預測準確性之一評估而判 J定是否改變該等雙模態分支預測子位元。已自該經提取之 分支指令中之該等雙模態分支預測子位元改變的雙模態分 支預測子位元儲存於該指令快取記憶體中。 本發明之另一實施例處理一種分支預測裝置。一指令快 取圮憶體經組態以用於在一指令提取位址處儲存及提供一 分支指令,該分支指令具有雙模態分支預測子位元。管線 儲存器經組態以用於儲存該分支指令之該指令提取位址。 一預測電路經組態以用於基於對與該經提供之分支指令相 關聯之一條件的一評估而判定是否改變雙模態分支預測位 元。一寫入控制邏輯電路經組態以用於在該指令快取記憶 體中在該經儲存之指令提取位址處之該分支指令中儲存已 自該經提供之分支指令中之該等雙模態分支預測位元改變 的該等雙模態分支預測位元。 本發明之另一實施例處理一種用於雙模態分支預測之方 法。在執行期間動態地產生與一條件分支指令相關聯之分 支預測位元。該等動態地產生之分支預測位元儲存於一指 160026.doc -4 - 201235940 令快取記憶體中之該條件分支指令中。 根據以下實施方式及隨附圖式,可更全面理解本發明且 本發明之其他特徵及優勢將顯而易見。 【實施方式】 現將參看展示本發明之若干實施例的隨附圖式更完全地 描述本發明。然而,本發明可以各種形式體現且不應解釋 為限於本文中所陳述之實施例。實情為,提供此等實施例 以使得本發明將為全面且完整的,且將向熟習此項技術者 完全地傳達本發明之範疇。 最初可以諸如 C、C++、JAVA®、Smalltalk、JavaScript®、 Visual Basic®、TSQL、Perl之高階程式設計語言或以各種其 他程式設計語言來撰寫在根據本發明之教示之操作時所操 作的或用於執行根據本發明之教示之操作的電腦程式碼或 「程式碼」。藉由將高階程式碼轉換成原生組譯器程式而 將以此等語言中之一者撰寫的程式編譯至目標處理器架 構。用於目標處理器架構之程式亦可直接以原生組譯器語 吕來撰寫。原生組譯器程式使用機器層級二進位指令之指 令助憶表示法。如本文中所使用之程式碼或電腦可讀媒體 指代諸如目的碼之機器語言碼,其格式可由處理器理解。 圖1說明可有利地使用本發明之實施例的例示性無線通 信系統100。為了達成說明之目的,圖1展示三個遠端單元 120 ' 130及150及兩個基地台140。應認識到,常見無線通 系統可具有更多遠端早元及基地台。如下文進一步論 述,分別包括如由組件125A、125C、125B及125D表示之 160026.doc 201235940 硬體組件、軟體組件或兩者之遠端單元丨2〇、i 3〇、150及 基地台140已經調適以體現本發明。圖1展示自基地台140 至遠端單元120、130及150之前向鏈路信號18〇以及自遠端 單凡120、130及150至基地台140之反向鏈路信號19〇。 在圖1中’遠端單元120經展示為行動電話,遠端單元 130經展示為攜帶型電腦,且遠端單元15〇經展示為無線區 域迴路系統中之固定位置遠端單元。藉由實例,遠端單元 或者可為蜂巢式電話、呼叫器、對講機、手持型個人通信 系統(PCS)單元、諸如個人數位助理之攜帶型資料單元, 或諸如儀錶讀取設備之固定位置資料單元。儘管圖丨說明 根據本發明之教示的遠端單元,但本發明不限於此等例示 性所說明之單元。本發明之實施例可適合地使用於支援分 支預測及支援具有快取記憶體之記憶體階層架構之任何處 理器系統中。 分支預測技術可包括靜態預測及動態預測之技術。一些 为支指令之可能的行為可由程式設計師及/或編譯者靜態 地預測。舉例而言,可基於執行階段屬性(諸如,為至迴 圈之開始處之前一位址的分支的迴圈結束評估)靜態地預 測分支指令。此等r後向」分支常常被預測為開始留在迴 圈中。當迴圈結束且藉由落至分支之後的下—指令而不採 納该分支’藉此結束迴圈時,「後向」分支將被誤預測。 亦可針對特又私式判定「前向」分支極少被採納。因此, 「後向」分支可靜態地預測為「採納」,且「前向」分支 可靜態地預測為「不採納」。 160026.doc 201235940 動態預測一般係基於 中之特定八φ 、,儲存於特殊分支歷史記憶體電路 中之特疋分支之行為的 新mw 史之汗估。程式之分析-般指示 新近過去之为支評估型 指示符。作為簡行為的良好 ,早刀支歷史分支預測子 複數個-位元旗標,其中备 貫例了,准濩 其中母一一位元旗標與條件分支指令 —立址:聯。在相關聯之條件分支評估為「採納」時設 疋:;τ且在該條件分支評估為「不採納」時重設每 一旗軚。該條件分去> 下一 人出現之預測接著可簡單地為 相關聯的旗標之值。對 準確之預測。 ^支指令’此預測子可產生 與最大化分支預測準確性緊密地相關之設計目標係最小 2錯誤分支預測之不利影響。考慮上文所描述之「後向」 。条件且使用-位元旗標作為動態分支預測子。在處理 器在坦圈中時’採納分支,且相關聯之旗標在通過迴圈之 每:循環中保持為「-」並針對「後向」/分支指令之未來 執行預測「採納」。在迴圈將結束時,「後向」分支被誤預 測為「採納」謂誤指令被預取至管線中^處理器根據已 知之分支誤預測恢復方法自錯誤分支預測恢復,同時導致 此之損失且浪費電力。歸因於此事件,重設相關聯之一 位元旗標以反映「不採納」分支歷史。然而,「後向」分 支指令之下一執行將很可能在迴圈之第一循環中且基於 不採、内J旗標之預測將不正確。在此情形中,單位元分 支'平估歷史導致針對每一迴圈結束分支評估之兩個誤預 個在迴圈結束端處且另一個在迴圈之第一循環尹 160026.doc 201235940 「後向」分支指令之下一後續執行處。 種用於最小化誤預測之分支評估之效應的技術為藉由 信賴因子加權分支預測以指示強或弱預測。舉例而言,可 藉由基於由二位元飽和計數器之狀態表示的分支歷史之雜 模態分支預測子產生信賴因子。對於使用此技術預測之二 -分支’需要單獨計數器或單獨二位元歷史儲存器。每一 計數器採取四個狀態中之一者,每_狀態表示加 值,諸如: π -強預測採納 10 -弱預測採納 01 -弱預測不採納 00 -強預測不採納 舉例而言,計數器每次在對應條件分支指令評估為「採 納」時遞增且每次在指令評估為「不採納」時遞減。遞^ 為在兩個狀態之間在朝向「強預測採納」狀態之方向上的 前向轉變且遞減為在兩個狀態之間在朝向「強預測不採 納」狀態之方向上的反向轉變。舉例而言,自「 口 υ 1」弱預 測不採納狀態之遞增為至「10」弱預測採納狀態之前向轉 變。此遞增/遞減在遞增停止於01311處及遞減停止於扑卯 處時「飽和」。因此,分支預測不僅包括如可藉由檢驗二 位元飽和計數器輸出之最高有效位元(MSB)而判定的採納 或不採納預測’且亦包括利用計數器值之兩個位元指示預 測之強度或信賴度的加權因子。 用於實施雙模態分支預測子之替代技術係基於有限狀熊 160026.doc 201235940 機。單獨有限狀態機預測子被用於被預測之每一分支。有 限狀態機預測子具有四個狀態,每一狀態表示加權預測 值,諸如: 11 -強預測採納 10 -弱預測採納 〇〇 -弱預測不採納 〇 1 -強預測不採納 取決於當前狀態及相關聯之條件分支指令是否評估為 「採納」,有限狀態機預測子在加權預測值之兩個狀態之 間進行前向轉變「01」—「00」4「10」—「u」,飽和於 「11」處。取決於當前狀態及相關聯之條件分支指令是否 評估為「不採納」,有限狀態機預測子在加權預測值之兩 個狀態之間進行反向轉變「丨i4i 0」4「⑻」4 〇1 J ’飽和於「00」處。藉由有限狀態機預測子,加權 預測值之最高有效位元被標記為p位元,且加權預測值之 最低有效位元被標記為Q位元且表示預測之強度。 」分支指令之分支指令藉由雙 一次,而非如藉由單位元旗標
諸如上文所考慮之「後向」分』 模態分支預測子將僅誤預測一次, 預測子之兩次。在迴圈結束處之 160026.doc 201235940 測值之二進位值判定分支制信賴度之強度,其中在範圍 之任端處l賴度較咼’且朝向範圍之中間信賴度較低。 實施此雙模態預測系統之成本為昂貴的,需要分支歷史 表或其類似者及構件以將分支計數器或有限狀態機預測子 與分支指令之位址相關聯。為了支援每五至七個指令可遇 到分支指令一次之大程式,分支歷史表可為極大的。 圖2為根據本發明之用於儲存編碼於儲存於記憶體階層 架構2 0 2中之 > 支指+中的雙模態分支預測子的處理複合 體200之功能性方塊圖,處理器複合體2〇〇包括記憶體階層 架構202及具有處理器管線2〇6、控制電路2〇8及暫存器檔 案(RF)210之處理器204。記憶體階層架構2〇2包括第i層級 指令快取記憶體(LI Icache)230、第1層級資料快取記憶體 (LI Dcache)232及記憶體系統234。控制電路208包括程式 汁數器(PC)209。為了論述之清楚起見,未展示可連接至 處理器複合體之周邊器件。處理器複合體2〇〇可適合地使 用於圖1之硬體組件125 A至125D中以用於執行儲存於L1 Icache 230中之程式碼’利用儲存於li Dcache 232中且與 可包括較高層級之快取記憶體及主記憶體之記憶體系統 234相關聯之資料。處理器2〇4可為通用處理器、多線緒處 理器、數位信號處理器(DSP)、特殊應用處理器(ASP)或其 類似者。處理複合體200之各種組件可使用特殊應用積體 電路(ASIC)技術、場可程式化閘陣列(FPGA)技術或其他可 程式化邏輯、離散閘或電晶體邏輯或適合於既定之應用之 任何其他可用技術來實施。 160026.doc -10- 201235940 處理态管線206包括(例如)六個主級:指令提取級2.ι4、 具有預測邏輯電路217及雙«預測H電路218之解碼及預 測級叫、調度級219、讀取暫存器級22〇、執行級似及寫 回級224。雖然展示單_、處理器管線細,但使用本發明之 記憶體階層架構202以及解碼及預測級216來處理指令可適 用於超純量設計及實施平行管線之其他架構。舉例而言, 設計用於高時脈率之超純量處理器可具有支援多個線緒之 兩個或兩個以上平行管線且每一管線可將指令提取級 214、解碼級216、調度級219、讀取暫存器級22〇、執行級 222及寫回級224劃分成兩個或兩個以上管線式級,從而增 加總的處理器管線深度以便支援高時脈率。且,出於設 計、實施或其他原因,預測邏輯電路217及雙模態預測器 電路218可位於處理器2〇4中之別處,諸如在(例如)控制電 路208中》 伙處理器管線206之第一級開始,與程式計數器(pc)2〇9 相關聯之指令提取級214自LI Icache 230提取指令以用於 藉由更後級來處理。若指令提取在£^ Icache 23〇中未命 中’意味待提取之指令不在LI Icache 230中,則自可包括 多個層級之快取記憶體(諸如,第2層級(L2)快取記憶體)及 主s己憶體之記憶體系統234提取指令。指令可自其他源(諸 如,啟動唯讀記憶體(R0M)、硬碟機、光碟)或自外部介面 (諸如’網路)載入至記憶體系統234。接著在解碼級216中 解碼所提取之指令。 調度級219取得一或多個經解碼之指令且將其調度至一 160026.doc 201235940 或多個指令管線。讀取暫存器級220自RF 2 10提取資料運 算兀。執行級222執行經調度之指令且寫回級224將結果寫 入至RF 210。來自執行級222之結果運算元可花費多個執 行循環以判定條件分支指令所使用之條件。在此等循環期 間,處理器管線206須等待直到結果運算元可用為止。因 為可不按程式次序之次序在寫回級224中接收結果,所以 寫回級224使用處理器設施來在將結果寫入至RJF 210時保 留程式次序。 ^ 處理複合體200可經組態以在儲存於電腦可讀儲存媒 體上之程式的控制下執行指令。舉例而言,電腦可讀儲存 媒體可直接在本端與處理器複合體2〇〇相關聯(諸如,可自 LI Icache 230可用)以用於對自L1 Dcache 232及記憶體系 統234獲得之資料進行操作,或經由(例如)輸入/輸出介面 (未圖示)與處理器複合體2〇〇相關聯。在指令提取級214中 接收自LI Icache 230提取之條件分支指令(Cbranch)。在解 碼及預測級216中擷取及使用動態地儲存於L1 Icaehe 23〇 中之Cbranch中之雙模態預測位元以預測所提取之條件分 支指令將為採納抑或不採納。可基於該預測理論式提取其 他指令。在Cbranch在執行級222中時,判定條件且經由預 測信號223通知雙模態預測器電路218以在Cbranch被採納 之狀況下進行雙模態預測子之狀態的前向轉變且在 Cbranch不被採納之狀況下進行雙模態預測子之狀態的反 向轉變。接著經由雙模態位元信號240傳遞雙模態預測器 電路218之經更新狀態以在Ll Icache 230中在下一可用寫 160026.doc 12 201235940 入循環將雙模態預測位元健存於相關聯之Cbranch中。所 儲存之Cbranch指令中之經改變的雙模態分支預測子位元 影響下一次提取Cbranch指令時下一分支目標位址之預測 而不影響Cbranch指令之功能。下文藉由詳細程式碼實例 提供使用1^11〇3〇1^ 230以及解碼及預測級216之處理器管 線206之更詳細描述。 圖3分別說明根據本發明之支援雙模態分支預測子位元 之動態編碼的例示性32位元及16位元條件分支指令格式 302及304。32位元條件分支指令格式302包括第一條件程 式碼選擇攔位306、第一作業碼308、預測位元3 10、24位 元帶正負號偏移312及Q位元314。16位元條件分支指令格 式304包括第二作業碼320、第二條件程式碼選擇欄位322 及用於在半字位址邊界上識別16位元指令之位址的8位元 帶正負號偏移324。 在載入程式之前靜態地判定條件分支指令中之預測位元 (諸如,預測位元310) ^舉例而言,如自後向分支指令之24 位元帶正負號偏移攔位312判定,藉由確證p位元3 10為值 一’後向分支可由編譯器預測為「採納」。藉由雙模態預 測器電路218之有限狀態機實施,Q位元3 14可被設定為值 一以指示強預測。或者’ Q位元3 14可被設定為值零以指示 弱預測。舉例而言’針對Q位元314之初始或預設設定可為 零。在替代實施例中,雙模態預測子位元兩者可靜態地藉 由對程式之分析來判定且在執行程式之前規定於分支指令 中。舉例而言,在具有用作為回送功能之條件分支 160026.doc • 13· 201235940 (Cbranch)指令的程式内容脈絡中,p位元310可被設定為 「1」且Q位元3 14可被設定為「〇」,指示弱採納狀態。在 通過迴圈之第一循環時’ Cbranch指令將很可能被預測為 採納且亦將很可能被評估為採納。採納之評估結果將導致 雙模態預測器電路前進至「11」強採納狀態。 藉由雙模態預測器電路2 1 8之2位元飽和計數器實施,可 藉由檢驗2位元飽和計數器輸出之最高有效位元(MSB)來判 定採納或不採納預測。預測之強度或信賴度可藉由檢驗計 數器值之兩個位元來確定。舉例而言,2位元飽和計數器 輸出之互斥或非(-« XOR)提供預測之強度的二進位指示, 其中「1」指示強預測且「0」指示弱預測。藉由使用如上 文所描述之2位元飽和計數器之加權預測值,所要狀態(諸 如,為「10」之弱預測之採納狀態或為r 〇1」之弱預測之 不採納狀態)可在載入程式之前被選擇且初始設定於條件 分支指令中。檢驗雙模態預測器電路218之兩個位元以判 定加權預測值之狀態的改變。 分別藉由與條件分支指令相關聯之雙模態預測器電路的 最高有效位元(MSB)及最低有效位元(LSB)來動態地判定預 測位元310及Q位元314。可在解碼期間藉由第一作業碼3〇8 之編碼來識別條件分支指令。q位元3 1 4位於3 2位元條件分 支指令格式302之位元0位置處。位址之位元〇位置一般使 用於具有1 6位元及32位元指令之處理器中以在半字位址邊 界上識別1 6位元指令。然而,位元〇位置不在32位元條件 分支指令格式302中用於定址目的’此係因為根據定義, 14 160026.doc 201235940 所有32位元指令皆為字對準的且位元〇表示16位元位址位 元。或者’對於每一條件分支指令,Q位元可儲存於單獨 陣列中,而預測位元保持儲存於條件分支指令中。 圖4說明根據本發明之耦接至處理器管線2〇6之級的例示 性第1層級指令快取記憶體(Li lcache)子系統4〇〇。L1 Icache子系統400包括LI lcache 230及處理器管線206之多 個級。LI Icache 230包括指令内容可定址記憶體 (ICAM)402、指令隨機存取記憶體(IRAm)403及寫入控制 邏輯404。 在將提取指令時’處理器管線206之指令提取級214發出 接收於LI Icache 230之ICAM 402中的提取位址408。提取 位址408包括(例如)快取行位址及在由該快取行位址定址之 快取行中分支指令位置之偏移。將提取位址408與icAM 402中之輸入項相比較以判定是否將在快取記憶體之iram 403中發現提取位址408處之指令。若在ICAM 402中判定 匹配,則產生命中指示41 〇以選擇與icAM 402中之匹配輸 入項相關聯之IRAM 403中的行。舉例而言,可選擇指令 行412’其包括第一指令(instr. 1)414、具有p位元417及q 位元418之條件分支指令(Cbranch)416,及額外指令420。 所選擇之指令行412被引導至LI Icache 230之輸出424且 接收於指令提取級214中。在處理器管線206之下一級中, 對於Cbranch 416,解碼及預測級216使用P位元417及Q位 元418來預測Cbranch 416將被採納抑或不被採納。基於預 測’相應地調整PC 209且指令提取級214產生採納或不採 I60026.doc • 15- 201235940 納位址處之下一提取位址。Cbranch 416之位址以及預測p 位元417及Q位元418儲存於管線緩衝器421中以用於在條件 判定之後的稍後檢驗。
Cbranch 4 16繼續沿處理器管線206往下,例如通過調度 級219、讀取暫存器級220且到達判定條件之執行級222。 預測信號223通知解碼及預測級216以在條件指示「採納」 之狀況下在雙模態預測器電路(BP)218中進行前向轉變且 在條件指示「不採納」之狀況下在BP 2 1 8中進行反向轉 變。解碼及預測級21 6接著將選自BP 2 18之雙模態分支位 元經由雙模態位元信號240傳遞至寫入控制邏輯4〇4。若最 新雙模態分支位元值不同於先前P位元417及Q位元418值, 則寫入控制邏輯404藉由更新LI Icache 230中之Cbranch指 令416中的相關聯之p位元及q位元值而導致最新p位元及q 位元值得以儲存。因此’先前P位元417及先前q位元418值 可被替換。舉例而言’可經由内部信號43〇傳遞p位元及Q 位元之最新版本以载入於指令行412中之Cbranch位置中。 在替代做法中,可經由内部信號43〇傳遞藉由p位元及Q位 疋之最新版本更新之經提取Cbranch指令以載入於指令行 412中之Cbranch位置中。内部信號428及432與指令快取行 中之其他指令位置相關聯以支援對可儲存於彼等位址中之 條件分支指令的存取。若在自Icache讀取條件分支指令之 時直至將分支預測資訊寫入回至Icache之點之間的時間期 間已自Icache替換icache行,則清空分支預測資訊且不更 新快取記憶體。 160026.doc -16- 201235940 若在Ll Icache 230中未發現Cbranch指令,則指示未命 中且將提取位址遞送至記憶體階層架構中之下一層級記憶 體。舉例而言,可使用統一第2層級快取記憶體(L2快取記 憶體)。在L2快取記憶體中命中時,將自L2快取記憶體存 取之Cbranch指令遞送至L1 Icache 23〇以用於載入且平行 地遞送至處理器管線206中之指令提取級214。在判定對 Cbranch之雙模態預測位元之更新時,動態地藉由p位元及 Q位元之最新值來更新LI lcache 230中之Cbranch。舉例而 言,若LI Icache為單一埠器件,則cbranch指令之更新可 在LI lcache正提取指令之狀況下(其一般具有高於更新之 優先權)暫停。若LI lcache為二埠器件,則可使用一個埠 執行Cbranch指令之更新,同時使用第二個埠自Icache提取 指令。亦將分支預測資訊遞送至L2快取記憶體,即使具有 Cbranch指令之快取行存在於L1 Icache中亦為如此。若基 於替換原則(諸如,最近最少使用(LRU))替換L1R,則下 次I L2快取記憶體提取行時,使得最新預測資訊可自L2快 取§己憶體中之所儲存之Cbranch指令獲得,此係因為L2快 取行已經更新。在另一做法中,在藉由分支資訊更新以 Icache時,設定與具有Cbranch指令之指令行相關聯之標籤 中的已變更位元。在替換Li icache中之已變更行時,接著 在L2快取記憶體中更新舊的已變更行。 對於所展示之例示性管線206,四個雙模態預測器電路 可位於解碼及預測級216中以考慮到管線中之四個背對背 條件分支之可能性。雙模態預測器電路之數目隨管線之深 160026.doc 201235940 度而變化。對於具有較大深度之管線,將需要大於四個雙 模態預測器電路,且取決於需要,可實施「n」個雙模態 .預測器電路’其中「n」小於由管線深度支援之數目。在 此狀況下,在接收「n+1」條件分支指令時,此分支將不 具有預測支援且將暫停^舉例而言,在制之分支目標位 址處的理論式存取將被暫停直到在判定針對「」分支 之條件時能夠產生分支目標位址為止。 使用(例如)與每一條件分支指令相關聯之雙模態計數器 之分支預測通常使用預測邏輯電路,預測邏輯電路具有單 獨分支預測陣列以儲存雙模態計數器位元及針對相關聯的 條件分支指令之對應值。本發明不需要在容量上由電路要 求限制之此分支預測陣列。因此,在維持分支預測之有效 性的同時根據本發明之硬體電路實施得以減少。而且,如 本文中所描述之分支預測可將雙模態預測資訊與每一分支 指令儲存在一起且在容量上不由分支預測陣列限制。因 此,與使用分支預測陣列之做法相比,電力使用得以嘬小 化。 圖5說明根據本發明之用於在Icache中之分支指令中讀取 及寫入雙模態分支預測位元的程序。參看先前諸圖以強調 及闡明實施細節。在第一步驟502中,程式開始於處理複 合體200上。且’程序500在流經處理器管線2〇6時遵循一 條件分支指令之路徑。 在步驟504處,自LI Icache 230提取指令。在決策步驟 506處,判定所提取之指令是否為條件分支(Cbranch)指 160026.doc 201235940 令。若所提取之指令不為Cbranch指令,則程序500返回至 步驟504。若所提取之指令為Cbranch指令,則程序5〇〇繼 續進行至步驟508。 在步驟508處,在解碼及預測級216中解碼所提取之 Cbranch指令且自條件分支指令選擇雙模態預測位元.在 步驟5 10處,將Cbranch指令之提取位址及所選擇之雙模態 預測位元儲存於圖5之管線緩衝器421中。在步驟512處, 基於雙模態預測位元預測分支目標位址。在決策步驟514 處’判定是否應更新提取位址。若提取位址需要改變至所 預測之分支目標位址,則程序500繼續進行至步驟516。在 步驟5 16處,基於所預測之分支目標位址理論式更新用於 在指令提取級214中在步驟504處提取指令之提取位址,且 程序500繼續進行至步驟518。返回至決策步驟514,若提 取位址不需要改變,則程序500繼續進行至步驟518。 在步驟518處,(例如)在執行級222處判定Cbranch指令之 條件且程序500平行地繼續進行至決策步驟52〇及52卜在 步驟518處判定之條件用於判定雙模態分支預測準確性。 在決策步驟520處’判定是否誤預測Cbranch指令。若誤預 測Cbranch指令,則程序5〇〇繼續進行至步驟522。在步驟 522處’清空處理器管線2_將提取位址設定為經校正之 提取位址。若未誤預測Cbranch指令,則程序遍繼續進行 至步驟524。在步驟524處,程序管線細繼續進行正常管 操作。 在決策步驟521處,剌宗怂Α β文此_ J疋條件疋否指示Cbranch指令評估 160026.doc •19· 201235940 為採、,内。若Cbranch指令未評估為採納換言之,cbranch 才曰7砰估為不採納,則程序5〇〇繼續進行至步驟526。在步 驟526處,在反向方向上調整雙模態預測器電路,其中預 測值在為「〇〇」之雙模態預測值處飽和,且程序5〇〇繼續 進仃至決策步驟530。返回至決策步驟52〇,若Chanch指 ?孑估為採納,則程序5〇〇繼續進行至步驟528。在步驟 528處,在前向方向上調整雙模態預測器電路,其中預測 值在為11」之雙模態預測值處飽和,且程序5〇〇繼續進 行至決策步驟5 3 〇。 在決策步驟530處,判定雙模態預測器電路位元是否不 同於自所提取之Cbranch指令選擇的雙模態預測位元。若 雙模態預測器電路位元與自所提取2Cbranch指令選擇的 雙模態預測位元相同,則程序5〇〇繼續進行至步驟5〇“若 雙模態預測器電路位元不同於Cbranch指令之雙模態預測 位兀,則程序500繼續進行至步驟532 ^在步驟532處,在 可用1(^(:116寫入循環處更新儲存於LI Icache中之Cbranch指 令中的雙模態預測位元。程序5〇〇接著繼續進行至步驟 504 〇 ^ 結合本文中所揭示之實施例描述的方法可以硬體之組合 及以儲存由處理器執行之非暫時性信號的軟體模組來體 現。軟體模組可駐存於隨機存取記憶體(RAM)、快閃記情 體、唯讀記憶體(ROM)、電可程式化唯讀記憶體 (EPROM)、硬碟、抽取式磁碟、磁帶、緊密光碟唯讀記憶 體(CD-ROM)或此項技術中已知之任何其他形式的儲存媒 160026.doc -20· 201235940 體中儲存媒體可耗接至處理器’使得處理器可自儲存媒 體讀取資訊及在-些狀況下將資訊寫入至儲存媒體。耦接 二處理态之儲存媒體可為與電路實施成一體之直接耦接件 或可利用-或多個介面,支援直接存取或使用下載技術之 資料串流傳輸。 雖然本發明揭示於用於處理器系統中之說明性實施例的 内令脈絡中’但應認識到可由一般熟習此項技術者與上文 卿述及下文之申請專利範圍相一致地使用廣泛各種實施。 本技術可擴充至包括第3層級快取記憶體及主記憶體之記 隐體階層架構之所有層級。而且,條件分支指令可與單一 比較分支指令中之比較指令相組合。單一比較分支指令在 比較分支指令之指令格式中包括雙模態分支預測位元。舉 例而s,指令格式中之未使用位元可用於雙模態分支預測 位疋。另外,條件分支指令可在亦包括雙模態分支預測位 疋之單一載入及分支指令中與載入指令相組合。 【圖式簡單說明】 圖1為可有利地使用本發明之實施例的例示性無線通信 系統之方塊圖; 圖2為根據本發明之用於儲存編碼於儲存於記憶體階層 架構中之分支指令中的雙模態分支預測子的處理複合體之 功能性方塊圖; 圖3說明根據本發明之支援雙模態分支預測子位元之動 態編碼的例示性3 2位元及i 6位元條件分支指令格式; 圖4說明根據本發明之耦接至處理器管線之級的例示性 160026.doc -21 - 201235940 第1層級指令快取記憶體子系統;及 圖5說明根據本發明之用於在指令快取記憶體(Icache)中 之分支指令中讀取及寫入雙模態分支預測位元的程序。 【主要元件符號說明】 100 無線通信系統 · 120 遠端單元 . 125A 硬體組件 125B 硬體組件 125C 硬體組件 125D 硬體組件 130 遠端單元 140 基地台 150 遠端單元 180 前向鏈路信號 190 反向鏈路信號 200 處理複合體/處理器複合體 202 記憶體階層架構 204 處理器 206 處理器管線 . 208 控制電路 209 程式計數器(PC) 210 暫存器檔案(RF) 214 指令提取級 216 解碼及預測級 160026.doc -22- 201235940 217 218 219 220 222 223 224 230 232 234 240 302 304 306 308 310 312 314 320 322 324 400 402 預測邏輯電路 雙模態預測器電路 調度級 讀取暫存器級 執行級 預測信號 寫回級 第1層級指令快取記憶體(LI Icache) 第1層級資料快取記憶體(LI Dcache) 記憶體系統 雙模態位元信號 32位元條件分支指令格式 16位元條件分支指令格式 第一條件程式碼選擇欄位 第一作業碼 預測位元 24位元帶正負號偏移 Q位元 第二作業碼 第二條件程式碼選擇欄位 8位元帶正負號偏移 第1層級指令快取記憶體(LI Icache)子系統 指令内容可定址記憶體(ICAM) 指令隨機存取記憶體(IrAM) 403 160026.doc -23. 201235940 404 寫入控制邏輯 408 提取位址 410 命中指示 412 指令行 414 第一指令(Instr. 1) 416 條件分支指令(Cbranch) 417 P位元 418 Q位元 420 額外指令 421 管線緩衝器 424 輸出 428 内部信號 430 内部信號 432 内部信號 444 系統記憶體或L2快取記憶體輸出 500 程序 160026.doc -24-
Claims (1)
- 201235940 七、申請專利範圍: 1 · 一種將雙模態分支預測子位元儲存於一指令快取記憶體 中之一分支指令中之方法,該方法包含: 基於儲存於自一指令快取記憶體提取之一分支指令中 的雙模態分支預測子位元預測一分支目標位址; 基於回應於該分支指令之執行的分支預測準確性之一 評估而判定是否改變該等雙模態分支預測子位元;及 將已自該經提取之分支指令中之該等雙模態分支預測 子位元改變的雙模態分支預測子位元儲存於該指令快取 記憶體中。 2.如請求項1之方法,其中該等雙模態分支預測子位元為 來自冑模態預測器電路之位元,該等位元指示一強採 納分支預測指示、-弱採納分支預測指示、—弱不採納 分支預測指示及-強不採納分支預測指示。 3·如清求項2之方法,其中該雙模態預測器電路之一最低 有效位元經指派至在_32位元分支指令格式之—位元搁 4中未使用的-位元’其中彼位元使用於—對應^ 6位元 分支指令格式中。 4·如請求項1之方法’其中該等雙模態預測子位元靜態地 藉由一程式之""分析來判定且在執行該程式之前在載入 於記憶體中之該分支指令中予以規定。 5.如請求項1之方法,其進一步包含: 在已提取該&支指令之後將指令提取位址儲存於管線 級中,其中該指令提取位址為一快取行位址及在藉由 160026.doc 201235940 該快取行位址定址之一快取行中分支指令位置一 且* 』一 1-¾ 移;及 選擇該所错存之快取行位址及該快取行中之偏移以作 為用於儲存經改變之雙模態分支預測位元的該指令提取 位址。 6. 如請求項1之方法,其中該指令快取記憶體為_第丨層級 指令快取記憶體。 7. 如請求項1之方法,其進一步包含: 藉由具有該等經改變之雙模態分支預測子位元的該分 支指令更新一第2層級指令快取記憶體。 8. 如請求項丨之方法,其中該所儲存之分支指令中的該等 經改變之雙模態分支預測子位元影響在下一次提取分支 才曰令時一下一分支目標位址之一預測而不影響該分支指 令之功能。 9. 如明求項1之方法,其中藉由儲存具有該等經改變之雙 模態分支預測子位it的該分支指令而將該等經改變之雙 模態77支預測子位元儲存於該指令快取記憶體中。 ϊ〇· 一種分支預測裝置,其包含: 一指令快取記憶體,其經組態以用於在一指令提取位 址處儲存及提供-分支指令,該分支指令具有雙模態分 支預測子位元; 官線儲存器,其經組態以用於儲存該分支指令之該指 令提取位址; 一預測電路,其經組態以用於基於對與該經提供之分 160026.doc 201235940 支指令相關聯之一條件的一評估而判定是否改變雙模態 分支預測位元;及 一寫入控制邏輯電路,其經組態以用於在該指令快取 記憶體中在該經儲存之指令提取位址處之該分支指令中 儲存已自該經提供之分支指令中之該等雙模態分支預測 位元改變的該等雙模態分支預測位元。 11 ·如請求項10之分支預測裝置,其中該寫入控制邏輯電路 進一步在該指令快取記憶體中在該經儲存之指令提取位 址處儲存具有已自該經提取之分支指令中之該等雙模態 分支預測位元改變的該等雙模態分支預測位元的該分支 指令。 12. 如請求項10之分支預測裝置,其中該分支指令為一比較 及分支指令。 13. 如請求項1〇之分支預測裝置,其中該分支指令為一載入 及分支指令。 14. 如明求項1〇之分支預測裝置,其中該分支預測電路進一 步包含: 具有強採納、弱採納、弱不採納及強不採納之狀態的 . 一個二位元計數器,該二位元計數器經組態以對於每一 . 採、·内刀支遞增,其飽和於表示強採納之一為三之二進位 十數處,且對於母一不採納分支遞減,其飽和於表示強 不採柄之為零之二進位計數處。 15. 種用於雙模態分支預測之方法,該方法包含: 在執行期間動態地產生與一條件分支指令相關聯之分 160026.doc 201235940 支預測位元;及 將該等動態地產生之分支預測位元儲存於一指令快取 記憶體中之該條件分支指令中。 16. 如請求項15之方法,其進一步包含: 若該條件分支指令評估為採納,則在加權預測值之一 田則狀悲與一下一狀態之間朝向一飽和強採納狀態進行 一前向轉變; 若該條件分支指令評估為不採納,則在該等加權預測 值之該當前狀態與一下一狀態之間朝向一飽和強不採納 狀態進行一反向轉變。 17. 如吻求項16之方法,其中該等加權預測值之該當前狀態 及省下狀態為一有限狀態機預測子之狀態,該等狀態 表示執行該條件分支指令之一強採納、弱採納、弱不採 納及強不採納歷史。 18. 如請求項15之方法,其進一步包含: 基於由該條件分支指令規定之一條件的一採納或不採 納決議而調整一雙模態預測電路;及 在由該雙模態預測電路表示之該等分支預測位元與自 該條件分支指令解碼之該等雙模態預測位元相同時動態 地判定不更新儲存於該條件分支指令内之該等分支預測 位元。 19. 如睛求項15之方法,纟中該分支預測位元最初被設定成 為1之—最咼有效位元及為〇之一最低有效位元,指示一 雙模態預測電路之一弱採納狀態。 160026.doc • 4 - 201235940 20.如請求項〗5之方法 在一臨時緩衝器 分支預測位元; ,其進—步包含: 中儲存該條件分支指令之位址及該等 將ο等儲存之分支預測位元與基於由該條件分支指 令規定之一條件的一採納或不採納決議加以調整的一雙 模態預測電路值比較;及 操取该條件分支指令之該經儲存之位址以識別在何處 儲存該等動態判定之分支預測位元。 21.如請求項15之方法,其中該條件分支指令具有包括該等 雙模態預測位元之一固定指令集架構格式。 160026.doc
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/941,105 US9122486B2 (en) | 2010-11-08 | 2010-11-08 | Bimodal branch predictor encoded in a branch instruction |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201235940A true TW201235940A (en) | 2012-09-01 |
Family
ID=45217633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100140771A TW201235940A (en) | 2010-11-08 | 2011-11-08 | Bimodal branch predictor encoded in a branch instruction |
Country Status (7)
Country | Link |
---|---|
US (1) | US9122486B2 (zh) |
EP (1) | EP2638463A1 (zh) |
JP (1) | JP5745638B2 (zh) |
KR (1) | KR101536179B1 (zh) |
CN (1) | CN103238134B (zh) |
TW (1) | TW201235940A (zh) |
WO (1) | WO2012064677A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9519479B2 (en) | 2013-11-18 | 2016-12-13 | Globalfoundries Inc. | Techniques for increasing vector processing utilization and efficiency through vector lane predication prediction |
US9690587B2 (en) | 2014-04-08 | 2017-06-27 | International Business Machines Corporation | Variable updates of branch prediction states |
US10853074B2 (en) * | 2014-05-01 | 2020-12-01 | Netronome Systems, Inc. | Table fetch processor instruction using table number to base address translation |
US9442726B1 (en) | 2015-12-15 | 2016-09-13 | International Business Machines Corporation | Perceptron branch predictor with virtualized weights |
US10474462B2 (en) * | 2016-02-29 | 2019-11-12 | Qualcomm Incorporated | Dynamic pipeline throttling using confidence-based weighting of in-flight branch instructions |
CN105867884B (zh) * | 2016-03-24 | 2018-06-15 | 清华大学 | 一种改进型PAp分支预测方法 |
US11086629B2 (en) * | 2018-11-09 | 2021-08-10 | Arm Limited | Misprediction of predicted taken branches in a data processing apparatus |
US11163577B2 (en) | 2018-11-26 | 2021-11-02 | International Business Machines Corporation | Selectively supporting static branch prediction settings only in association with processor-designated types of instructions |
US20230103206A1 (en) * | 2021-09-24 | 2023-03-30 | Intel Corporation | Caching based on branch instructions in a processor |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09500989A (ja) | 1993-05-14 | 1997-01-28 | インテル・コーポレーション | 分岐ターゲット・バッファにおける推論履歴 |
US5878255A (en) | 1995-06-07 | 1999-03-02 | Advanced Micro Devices, Inc. | Update unit for providing a delayed update to a branch prediction array |
US5887159A (en) | 1996-12-11 | 1999-03-23 | Digital Equipment Corporation | Dynamically determining instruction hint fields |
JP2943772B2 (ja) | 1997-06-20 | 1999-08-30 | 日本電気株式会社 | 分岐予測方式 |
GB2389211B (en) | 1998-12-31 | 2004-02-04 | Intel Corp | A method and apparatus for improved predicate prediction |
US6351796B1 (en) | 2000-02-22 | 2002-02-26 | Hewlett-Packard Company | Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache |
US20030126414A1 (en) | 2002-01-02 | 2003-07-03 | Grochowski Edward T. | Processing partial register writes in an out-of order processor |
US6978361B2 (en) | 2002-09-20 | 2005-12-20 | International Business Machines Corporation | Effectively infinite branch prediction table mechanism |
US7752426B2 (en) | 2004-08-30 | 2010-07-06 | Texas Instruments Incorporated | Processes, circuits, devices, and systems for branch prediction and other processor improvements |
US7587580B2 (en) | 2005-02-03 | 2009-09-08 | Qualcomm Corporated | Power efficient instruction prefetch mechanism |
US7461243B2 (en) | 2005-12-22 | 2008-12-02 | Sun Microsystems, Inc. | Deferred branch history update scheme |
US20070260862A1 (en) | 2006-05-03 | 2007-11-08 | Mcfarling Scott | Providing storage in a memory hierarchy for prediction information |
US7523298B2 (en) | 2006-05-04 | 2009-04-21 | International Business Machines Corporation | Polymorphic branch predictor and method with selectable mode of prediction |
US7487340B2 (en) | 2006-06-08 | 2009-02-03 | International Business Machines Corporation | Local and global branch prediction information storage |
US20080040576A1 (en) | 2006-08-09 | 2008-02-14 | Brian Michael Stempel | Associate Cached Branch Information with the Last Granularity of Branch instruction in Variable Length instruction Set |
US20080072024A1 (en) | 2006-09-14 | 2008-03-20 | Davis Mark C | Predicting instruction branches with bimodal, little global, big global, and loop (BgGL) branch predictors |
EP2063355B1 (en) * | 2007-11-22 | 2017-09-20 | Sony Interactive Entertainment Europe Limited | Branch prediction method |
TWI379230B (en) * | 2008-11-14 | 2012-12-11 | Realtek Semiconductor Corp | Instruction mode identification apparatus and instruction mode identification method |
CN105468334A (zh) | 2008-12-25 | 2016-04-06 | 世意法(北京)半导体研发有限责任公司 | 对非控制流指令减少分支检验 |
US20130283023A1 (en) | 2012-04-18 | 2013-10-24 | Qualcomm Incorporated | Bimodal Compare Predictor Encoded In Each Compare Instruction |
-
2010
- 2010-11-08 US US12/941,105 patent/US9122486B2/en active Active
-
2011
- 2011-11-07 EP EP11793537.9A patent/EP2638463A1/en not_active Ceased
- 2011-11-07 WO PCT/US2011/059658 patent/WO2012064677A1/en active Application Filing
- 2011-11-07 KR KR1020137014862A patent/KR101536179B1/ko active IP Right Grant
- 2011-11-07 CN CN201180057844.4A patent/CN103238134B/zh active Active
- 2011-11-07 JP JP2013537922A patent/JP5745638B2/ja not_active Expired - Fee Related
- 2011-11-08 TW TW100140771A patent/TW201235940A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
KR101536179B1 (ko) | 2015-07-13 |
JP2013545194A (ja) | 2013-12-19 |
CN103238134B (zh) | 2016-03-30 |
JP5745638B2 (ja) | 2015-07-08 |
CN103238134A (zh) | 2013-08-07 |
US20120117327A1 (en) | 2012-05-10 |
WO2012064677A1 (en) | 2012-05-18 |
US9122486B2 (en) | 2015-09-01 |
EP2638463A1 (en) | 2013-09-18 |
KR20130111583A (ko) | 2013-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201235940A (en) | Bimodal branch predictor encoded in a branch instruction | |
KR101459536B1 (ko) | 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치 | |
US6502185B1 (en) | Pipeline elements which verify predecode information | |
JP5335946B2 (ja) | 電力的に効率的な命令プリフェッチ機構 | |
EP2864868B1 (en) | Methods and apparatus to extend software branch target hints | |
JP3871883B2 (ja) | 間接分岐ターゲットを計算するための方法 | |
US7437543B2 (en) | Reducing the fetch time of target instructions of a predicted taken branch instruction | |
US9367471B2 (en) | Fetch width predictor | |
US6823446B1 (en) | Apparatus and method for performing branch predictions using dual branch history tables and for updating such branch history tables | |
EP1974254B1 (en) | Early conditional selection of an operand | |
CN116302106A (zh) | 用于促进分支预测单元的改善的带宽的设备、方法和系统 | |
US9489204B2 (en) | Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process | |
US6859874B2 (en) | Method for identifying basic blocks with conditional delay slot instructions | |
TW202420078A (zh) | 用於在處理器中的獲取迴路中的預測控制指令的多個例項的分支資訊佇列項目的重用 |