TWI295032B - - Google Patents
Download PDFInfo
- Publication number
- TWI295032B TWI295032B TW094142240A TW94142240A TWI295032B TW I295032 B TWI295032 B TW I295032B TW 094142240 A TW094142240 A TW 094142240A TW 94142240 A TW94142240 A TW 94142240A TW I295032 B TWI295032 B TW I295032B
- Authority
- TW
- Taiwan
- Prior art keywords
- branch
- distance
- dynamic
- instruction
- predictor
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 36
- 239000000872 buffer Substances 0.000 claims description 19
- 238000000605 extraction Methods 0.000 claims description 10
- 206010011469 Crying Diseases 0.000 claims description 2
- 239000000463 material Substances 0.000 claims 2
- 230000000116 mitigating effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 241000283690 Bos taurus Species 0.000 description 1
- 206010011224 Cough Diseases 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 210000004072 lung Anatomy 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 241000894007 species Species 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, 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
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
-
- 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, 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
Description
1295032 .九、發明說明: 【發明所屬之技術領域】 本發明係有關於一種降低虚 f々仫各 裡丨牛低處理态漓耗功率之技術,更 理器消耗功率的技術有動‘ "分支預測機制之處 【先前技術】 自從電腦發㈣來’處理n效能的提升—直是 ㈣:發人員所致力追求的目的。當程式透過處理器執;; ^取大的要求便是執行時間短且執行速度快。自管線式 ⑺Pelining)架構被提出來後,已成為高速處理器架構 的主流。理論上,利用指令管線執行的方式,讓多個指令 在處理器中同時執行’可以大幅提升效能。但實際在程式 執行的過程中,因為指令間具有相依性關係,故使得管^ 式架構處理器的產出(Throughput)並非管線理想值。 前述之相依性關係包括:硬體上的資源衝突、指令使 用上的相依性以及由分支指令所造成之控制相依性能 分支預測器即是目前解決控制相依性技術中 效的手段,並且已經廣為被管線式架構處理器採用取 對於大部分的指令集架構(ISA) ^,有所謂控制 流程指令(Contro卜Flow Instructions),此類指令會改 變程式計數器的内容值,使得程式執行的流向改變^ ^常 將其稱之為分支指令(Branch Instructions)。分支於八 大抵可分稱二種不同形式:一種是有條件者;另一種則為 無條件者。條件式的分支指令再執行時會有二種可能的二 18928 (§: 5 1295032 ' r •果·種疋不發生(t Taken),即依照原來的路徑繼續 .執行。另一種則是發生(Taken),即跳躍至分之目的位址 (Target Address)繼續執行。至於程式執行時是發 生,完全由分支指令執行的結果予以決定。大部分的/支 預測機制被用來預測有條件分支的結果。 目前嵌入式處理器相當注重低功率設計,動態分支預 測(Dynamic Branch Prediction)通常搭配分支目的緩 衝器(Branch Target Buffer,BTB)等記憶緩衝器,藉 以有效提高處理器之執行速度。 曰 由於分支目的緩衝器(BTB)每一個指令循環 (Instruction Cycle)都要被查找,此外分支指令約佔 程式執行時動態指令的百分之十五,因此在管線式架構中 •對於那些非分支指令之動態分支預測器查找動作佔據了 動態分支預測器功率消耗的百分之八十五並且這百分之 八十五的功率消耗並沒有任何實質上的意義,原因是動態 鲁分支預測器查找僅對分支指令具有意義。因此使得動態分 支預測成為處理器中耗電的動作之一。 美國專利第US 2004/0181654號公開案揭露一種 「LOW POWER BRANCH PREDICTION TARGET BUFFER」。此案 揭露之方法係應用於管線式處理器中,該處理器包括用以 執行指令提取與分支預測運算之第一層級(stage),以及 用以處理透過該第一層級所提取之指令的第二層級。而該 方法包含:第-層級提取第一指令;自該第一指令取得分 支預測致能訊息;傳送該第一指令至該第二層級;針對= 18928 ⑧ 6 1295032 •縯於該第-指令之第二指令依據該分支預測致能訊息致 -能或失能該分支預測電路之至少一部分;以及該第一層級 依據該第二指令執行該指令提取與分支預測運算。其中, 該分支預測致能運算係相應於編碼於該第一指令中之分 支預測致能訊息透過該分支電路依據該第二指令予以執 行。此案,主要係透過指令編碼之方式,在指令中應用未利 用的運算碼(unused opcode)告知處理器開啟或關閉⑽ 電路,或透過指令序列的產生以達到開啟或關閉Βτβ電路 Ρ之目的。 惟前述習知技術係透過修改處判之原始程式碼、編 譯器與指令集架構等方式以實現控制βΤΒ電路的目的會 增加處理器,不但複雜且需更改處理器架構。此外,習曰知 技術於發現分支預測錯誤(MispredietiQn) _,I法即 ,調整分支預測,相對的會造成多餘的耗電或效 【發明内容】 一 為解決前述習知技術的種種問題,本發明之主要目的 在於提供-種透過硬體架構設計能動態紀八 距離並據以停止非分主指入夕屯μ 態分支預測系分支預測器查找的動 本發明之另一目的在於提供一種無須修改處理哭之 ==器與指令集架構即能運作之動軸 靭心刀叉預測系統以及方 18928 7 1295032 • 法。 .^為達成上述及其他目的,本發明之動態分支預測系統 ,應用於具有動態分支預測器之處理器中,包括:用以計 #相姊一分支指令間之分支距離值之分支距離產生模 用以儲存該分支距離產生模組所計算出之相鄰二分支 指令間之分支距離值的分支距離表;用以自該分支距離表 取出”亥刀支距離值並據之判斷停止查找動態分支預測 修器次數的動態分支預測器致能模組,該動態分支預測器具 有用作為緩衝儲存處理之分支目的緩衝器。 ^於本發明之一種型態中’該動態分支預測器致能模組 復包括次分支距離計數器,係用以表示尚有多少指令循環 =遇到-人分支指令。此外,當該次分支距離計數器為「〇」 蚪,次一指令循環即啟動動態分支預測器;若非為「〇」 時’則使動態分支預測器查找失能。此外,該次分支距離 計數器於該動態分支預測器命中時,會重新被寫入新的分 ♦支距離值,俾表示該處㈣正提取—個分支指令。 於本發明之另-種型態中,復包括分支預測錯誤處置 模組,係用於判斷出預測錯誤發生時重新自該分支距離表 中擷取丨iL確之分支距純並儲存至該次分支距離計數 透過前述本發明之動態分支預測系統,所執行之動能 分支預測方法包括:計算相鄰二分支指令間之分支距/ 值;將該計算出之分支距離值儲存至分支距離表中;以及 自該分支距離表中取出該分支距離值並據之判斷停止查 18928 8 1295032 找動態分支預測器的次數。 八於本發明之一種型態中,該計算相鄰二分支指令間之 t支距離值步驟復包括:判斷處理的指令是否為分支指 令,若否,則不予處理;若是,則計算上一分支指令之曰分 支=離;以及將該計算出之上一分支指令之分支距離儲^ 支距離表中。其中,該上一分支指令之分支距離係= 知δ亥分支指令的分支行為予以計算。 上、於本發明之另一種型態中,該自該分支距離表中取出 該分支距離值並據之判斷停止查找動態分支預測器的次 ,之步驟復包括:判斷該分支目的緩衝器是否命中;若 是二則接著判斷預測發生與否;若是,則自該分支距離表 =咳取务生分支距離;若否,則自該分支距離表中讀取未 發生分支距離;將該發生分支距離或未發生分支距離儲存 至次分支距離計數器,並將該次分支距離計數器減一回 $,以及令次一循環的動態分支預測器查找失能。其中, :该分支目的緩衝器未命中,則判斷該次分支距離計數器 是否為零’若{’則致能次一循環的動態分支預測器查 找;若否,則將該次分支距離計數器減一回存;以及令次 一循環的動態分支預测器查找失能。 於本發明之又-種型態中,復包括:判斷出預測錯誤 發生時重新自該分支距離表巾擷取出正確之分支距離值 並儲存至該次分支距離計數器。 相較於習知之分支預測技術,本發明之動態分支預測 系統以及方法,透過該分支距離產生機制、分支距離表動 18928 ⑧ 9 1295032 •態分支預測器致能機制以及分支預測錯誤處置,無須修改 •處理器之原始程式碼、編譯器與指令集架構即能運作^堇 透過硬體架構設計即能動態紀錄程式中分支距離並據以 停止非分支指令,此外’復能於發現分支預測錯誤時,能 即時調整動態分支預測並且不會有任何的效能損耗。 【實施方式】 以下係藉由特定的具體實施例說明本發明之實施方 春式’熟悉此技藝之人士可由本說明書所揭示之内容輕易地 瞭解本發明之其他優點與功效。本發明亦可藉由其他不同 的具體實施例加以施行或應用,本說明書中的各項細節亦 可基於不同觀點與應用,在不脖離本發明之精神下進 種修飾與變更。 請參閱第i圖,其係本發明之動態分支預測系統之應 用架構示意圖。如圖所示,本發明之動態分支預測系統工 係應用於一般具有動態分支預測機制之處理器2中,並搭 —·接至該處理器2中的動態分支預測器11。於本實施例中。, 本U之動悲分支預測系、統J包括:分支距離產生模組 13、分支距離表15、動態分支預測器致能模組17以及分 支預測錯决處置模組19。 於本實施例中,「分支距離」(BranchDistance,BD) 為該處理器2執行過程中,相鄰二個分支指令間之非分支 指令的個數。該處理器2若能在遇到任一分支指令時預知 其分支距離的值,則可據之停止所有動態分支預測,直至 遇到次一分支指令為止。 18928 10 1295032 * — f實施例中’針對本發明之動態分支預測系統丨如何 -鬼集程式執行過程中產生之所有分支距離,以及如何利用 δ亥分支距離準確的啟動或關閉該動態分支預測,合先說 日月0 ^ 口 該動態分支預測器11具有用作為緩衝儲存分支目的 位址之刀支目的緩衝器丨i丨,該分支目的緩衝器111係為 快取^意體架構,主要包括用以儲存目標位址的攔位。舉 _例而言,其可包括用以儲存分支指令位址、分支目的位址 以及預測訊息等資料之攔位。其中,該預測訊息棚位即是 動態分支預測器Μ一種常見的實施方式,其係利用2 位兀計數器紀錄最近數次分支指令之結果。起始值為2, 最大值為3,最小值為〇,並隨著分支指令在程式執行過 •程中持續的被執行而改變。如果分支的結果是發生則該值 加2,直到最大值3為止;反之若結果不發生則減丨,直 到最小值0為止。當分支指令再次被讀取時,若該2位元 _计數裔所預測的結果是發生,則該分支目的緩衝器111 中相對應於此分支指令的目的位址就直接被使用,故可省 略计异目的位址的程序,而不致產生分支損失。須特別說 明者,係該動態分支預測器Η暨其分支目的緩衝器m 的架構能有多種型態,例如將前述之最小值〇與最大值3 固定於預設之攔位中等。此處對於該動態分支預測器丄丄 暨其为支目的緩衝器111之例舉,並非用以限定本發明之 動態分支預測系統以及方法之權利範圍。 該分支距離產生模組13,係用以計算相鄰二分支指 18928 11 1295032 » · • 令間之分支距離值。 所支f離表15 ’係用以儲存該分支距離產生模組 所计异出之相鄰二分支指令間之分支距離值。 ㈣態致能模組17’係用以自該分支距 支二二中ϊΤί 5亥分支距離值並據之判斷停止查找動態分 數。於本實施例中,該動態分支預測器致 Γ夕、〜入设匕括次分支距離計數器171,係用以表示尚 "猶環會遇到次一分支指令。此外,當該次分支 距離計數器171為「 Α > 人73支 分支預測器U’·若非為Υ0’Γ 環即查找分動態 查找 丨H則使動態分支預測器η 支預,、則:η人亥次分支距離特器171於該分動態分 W:。/中時’會重新寫入新的分支距離值,俾表 不δ玄處理盗2正提取一個分支指令。 誤發生彳:誤^置模組19’係用於判斷出預測錯 離值並= 離表15中操取出正確之分支距 、’堵存至该次分支距離計數器171。 李统?參::2圖,其係透過前述本發明之動態分支預測 所一 執行之動態分支預測方法之步驟流程圖。如圖 離值。接著進至步:二“支指令間之分支距 支距S202中’將該計算出之分支距離值储存至分 表中。接著進至步驟S203中。 t=S203中’自該分支距離表中取出該分支距離 康之判斷停止查找動態分支預測器的次數。 18928 ⑧ 12 1295032 * . ▲ 請參閱第3圖,如圖所示,於本實施例中,步驟S201 泰復包括: 步驟S2011,判斷處理的指令是否為分支指令,若 否,則不予處理,結束步驟;若是,則進至步驟S2012。 於步驟S2012中,計算上一分支指令之分支距離。接 著進至步驟S2013。 於步驟S2013中,將該計算出之上一分支指令之分支 距離儲存至分支距離表中。 其中’該上一分支指令之分支距離係依照該分支指令 的分支行為予以計算。 請參閱第4圖,如圖所示,於本實施例中,該步驟 ‘ S203復包括: - 於步驟S2031中,判斷該分支目的緩衝器是否命中, 若是,則進至步驟S2032 ;若否,則進至步驟S2037。 於步驟S2032中,判斷預測發生與否;若是,則進至 籲步驟S2033 ;若否,則進至步驟S2034。 於步驟S2033中,自該分支距離表中讀取發生分支距 離。接著進至步驟S2035。 於步驟S2034中,自該分支距離表中讀取未發生分支 距離。接著進至步驟S2035。 於步驟S2035中,將該發生分支距離或未發生分支距 離儲存至次分支距離計數器,並將該次分支距離計數器減 一回存。接著進至步驟S2036。 於步驟S2036中,令次一循環的動態分支預測器查找 13 18928 1295032 失能。 —a於步驟S2037,判斷該次分支距離計 右疋,目丨|、狂 疋否為零, 貝J進至步驟S2038 ;若否,則返回牛 次分支距離斗說„, ν驟S2035將該 預測器查找失能。 \ _的動態分支 找。於步驟S2038中,致能次一循環的動態分支預測器查 =1第5圖’如圖所示,於本實施例中,復包括: 中判斷預測錯誤是否發生,若否則結 不/知,右否,則進至步驟s3〇2。 於步驟S302中,重新自該分支距離表中掏 存至該次分支距離計數器。 、 、’诸 本發明之動態分支預測系統以及方法,舉例而言, 在八有以下之條件之貫施例中實作。該假設條件有三: 1. 該處理器2前三個管線層級包括:提取、解_· Φ及執行層級。 2. 動態分支預測器丨丨在提取層級被查找且在 層級被更新。 3. 分支距離表15每個項目均有三個攔位:分支指 令位址、發生分支距離以及未發生分支距離。 曰 承前,該分支距離產生模組13在執行層級負責將每 一個分支指令之發生分支距離與未發生分支距離儲存至 該分支距離表15之相對應的攔位中,而未儲存有資料的 攔位的預設值均為〇。該動態分支預測器致能模組丨7在 18928 14 Ι295Ό32 提取層級運作,並依據該次分支距離計數器丨7 1的值,致 忐或失能次一指令循環之動態分支預測器查找運作。此 外,該分支預測錯誤處置模組19在執行層級判斷是否發 生錯誤預測JU故出相對應之處i。由於該分支距離表15 可動態紀肺缝行過程巾所有的分技冑,是故本發明 之動態分支預測系統以及方法除於每一個分支指令初始 執行時較不準確外,其餘時間皆可準確的開啟或關閉動態 分支預測器查找運作。 另一方面,由於該分支距離表15為準確的開啟或關 閉動態分支預測器查找運作,需佔用較大的容量。故於本 發明之其他實施例中,該分支距離表15佔用容量之縮減 方法至少包括: r便用程式計數器(Program c〇unter,pc)作為 索引(mdex)时式存取該分支距離表i5,故 至完全無須分支指令位址攔位〆 成^甚 2·針對每-個分支指令僅存人符合使用頻率設定 ^分支距離或當前之分支距離,故可節省—半以上之分 支距離的欄位空間。具體而言,該分支距離或當前之分支 距離之使用頻率設定值可由❹者視實際需要^以設定。 單一暫/減支㈣表15之項目數量’甚至僅利用 兮^ 最新的分支距離值,故可大幅減少 ϋ亥为支距離表15之容量。 性門分支距離表15所佔用之空間與預測之準確 S 口際需要予以取檢。惟即使如前述第3種情況 18928 15 1295032 ‘做科-暫存n作為該分纽絲15,且僅能記住單 ::支距離值’當程式在執行減當迴圈時,由於減當迴 〃 ^期’ gj此該動態分支預測器致能模組17仍 I準確的在次-分支指令來臨前之循環將動態分支預測 為查找予以致能。而當在比較複雜的控制架構中執行時, T支行為通常會固定一段時間而甚少交錯變化,故錯誤的 分支距離預測不易發生。分支距離值預測產生錯誤的情況 • 若該值過大,則會使次—分支指令無法查找該動態 刀支預測器,可能會使得程式執行時間略為增加;若該值 過小二則僅增加非分支指令的查找,並不影響處理效能。 …综上所述,本發明之動態分支預測系統以及方法,透 過该分支距離產生機制、分支距離表動態分支預測器致能 -機制以及分支賴錯誤處置,無婦改處理器之原始程式 碼、編澤益與指令集架構即能運作,僅透過硬體架構設計 即能動態紀錄程式中分支距離並據以停止非分支指令,此 ♦外,復能^發現分支預測錯誤時,能即時調整分支預測。 上述實施例僅為例示性說明本發明之原理及其功 效,而非用於限制本發明。任何熟習此項技藝之人士均可 在不違背本發明之精神及範訂,對上述實施例進行修飾 與變化。因此’本發明之權利保護範圍,應如後述之申請 專利範圍所列。 【圖式簡單說明】 立第1圖係本發明之動態分支預測系統之應用架構示 意圖;以及 18928 ⑧ 16 1295032 * . • 第2至5圖係本發明之動態分支預測方法之流程圖。 -【主要元件符號說明】 1 動態分支預測系統 2 處理器 11 動態分支預測器 111 分支目的緩衝器 13 分支距離產生模組 15 分支距離表 17 動態分支預測器致能模組 171 次分支距離計數器 19 分支預測錯誤處置模組 S20卜 S203 步驟 S2011 〜S2013 步驟 S2031 〜S2038 步驟 S301- S302 步驟 17 18928 ⑧
Claims (1)
1295032 十 、申請專利範圍: :種動態分支預測系統’係應用於具有動態分支預測 态之處理器中,包括: 、、 分支距離產生模组,係用以計算相鄰二分支指入 間之分支距離值; 曰7 :支距離表,係用以儲存該分支距離產生模組所 开=相鄰二分支指令間之分支距離值;以及 =分支預測器致能模組,細以自該分支距離 ,中取出該分支距離值並據之㈣停止查找動態分 支預測器次數,其中該動態分支 衝儲存處理之分支目的緩衝器。 -有用作為緩 辄圍第1項之系統,*中,該動態分支預 尚二:復包括次分支距離計數器,係用以表示 口夕少指令循環會遇到次一分支指八。 利範圍第2項之系統,*中:當該次分支距 預、、則哭=「/」時,次一指令循環即啟動動態分支 料為n則使動態分支預測器查找 叶數乾圍弟2項之系統’其中’該次分支距翻 :。。於该動態分支預測器命中時,會重新寫入料 ,值’俾表示該處理器正提取一個分支指令。 處二;f利範圍第1項之系統’復包括分支預測錯驾 ::、、且,係用於判斷出預測錯誤發生時重新自該分 支距縣中擷取出並儲存至該次分支距離計數器。 18928 18 1295032 ’ 6.如申請專利範圍第1項之系統,其中,該處理器之前 - 二個管線層級包括:提取、解碼以及執行層級;該動 態分支預測器在提取層級被查找且在執行層級被更 新;以及該分支距離表之每個項目均有三個攔位:分 支指令位址、發生分支距離以及未發生分支距離。 7·如申請專利範圍第6項之系統,其中,該分支距離產 生模組在執行層級負責將每一個分支指令之發生分 > 支距離與未發生分支距離儲存至該分支距離表之相 對應的攔位中,而未儲存有資料的攔位的預設值均為 〇 ;該動態分支預測器致能模組在提取層級運作,並 依據該動態分支預測器致能模組的值啟閉次一指令 循環之動態分支預測器查找運作。 • 8.如申請專利範圍第!項之系統,其中,該分支距離表 係使用程式計數器(program c〇unter,pC)作為索 引(index)予以存取。
9. 如申請專利範圍第!項之系統,其中,該分支距離表 針對每-個分支指令僅存入符合使用頻率設定值的 分支距離以及當前之分支距離其中之一者。 10. 如申請專利範圍第1項之系、統,其中,該分支距 係利用單-暫存器只記錄目前最新的分支距離值。、 11. 一種動態分支制方法,係助於具有動 器之處理器中,包括: 又頂列 計算相鄰二分支指令間之分支距離值; 將該計算出之分支距離值儲 > 八 值减存至分支距離表中 18928 19 1295032 • 以及 - ▲自該分支距離表中取出該分支距離值並據之判斷 停止查找動態分支預測器的次數。 12. 如=請專利範圍f n狀方法,其巾,該計算相鄰 二分支指令間之分支距離值步驟復包括: 判斷處理的指令是否為分支指令,若否,則 處理;若是,則計算上一分支指令之分支距離、;以: φ 將該計算出之上-分支指令之分支距離儲存至分支 距離表中;其中’該上一分支指令之分支距離係依照 違分支指令的分支行為予以計算。 13. 如★申請專利範圍第μ之方法,其中,該自該分支 f離表中取出該分支距離值並據之判斷停止查找動 .態分支預測器的次數之步驟復包括:判斷該分支目的 ,,态是否命中;若是’則接著判斷預測發生與否, 右疋,則自該分支距離表中讀取發生分支距離;若 • $ ’則自該分支距離表中讀取未發生分支距離;將該 發生分支距離或未發生分支距離儲存至次分支距離 =數器,並將該次分支距離計數器減一回存;以及令 次一循環的動態分支預測器查找失能。 14. 如申請專利範圍第13項之方法,其中,若該分支目 =緩=未命中’則判斷該次分支距離計數器是否為 三右是,則致能次一循環的動態分支預測器查找; 右否,則將該次分支距離計數器減一回存;以及令次 一循環的動態分支預測器查找失能。 18928 (§) 20 1295032 15.如申請專利範圍第11項之方法,復包括:判斷預測 錯誤是否發生並於判斷出預測錯誤發生時重新自該 分支距離表中擷取出並儲存至該次分支距離計數哭。
16·如申請專利範圍第11項之方法,其中,該處理器°°之 前三個管線層級包括:提取、解碼以及執行層級;該 動態分支預測器在提取層級被查找且在執行層級被 更新;以及該分支距離表之每個項目均有三㈣位: 分支指令位址、發生分支距離以及未發生分支距離。 Π.如申請專利範圍帛16項之方法,其中,該分支距離 產生模組在執行層級負責將每一個分支指令之笋生 分支距離與未發生分支距離儲存至該分支距離2 相對應的攔位中,而未儲存有資料的棚位的預設值均 為0 ;該動態分支預測器致能模組在提取層級運作, 並依據該動態分支預測ϋ致能模組的值啟閉次一指 令循環之動態分支預測器查找運作。 18.t申請專利範圍第11項之方法,其中,該分支距離 表係使用程式計數器作為索引予以存取。 利範圍第11項之方法,其中,。該分支距離 每-個分支指令僅存入符合使用頻率設定值 的为支距離以及當前之分支距離其中之一者。 2〇·如申請專利範圍第i i項之方法,其 Μ λ% 4|I ffl ^ ^ ^ 、 ,口亥刀支距離 表係利用早-暫存器只記錄目前最新的分支距離值。 18928 21
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW094142240A TW200723094A (en) | 2005-12-01 | 2005-12-01 | Dynamic branch prediction system and method |
US11/450,404 US20070130450A1 (en) | 2005-12-01 | 2006-06-12 | Unnecessary dynamic branch prediction elimination method for low-power |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW094142240A TW200723094A (en) | 2005-12-01 | 2005-12-01 | Dynamic branch prediction system and method |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200723094A TW200723094A (en) | 2007-06-16 |
TWI295032B true TWI295032B (zh) | 2008-03-21 |
Family
ID=38120163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW094142240A TW200723094A (en) | 2005-12-01 | 2005-12-01 | Dynamic branch prediction system and method |
Country Status (2)
Country | Link |
---|---|
US (1) | US20070130450A1 (zh) |
TW (1) | TW200723094A (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7681021B2 (en) * | 2006-09-28 | 2010-03-16 | Freescale Semiconductor, Inc. | Dynamic branch prediction using a wake value to enable low power mode for a predicted number of instruction fetches between a branch and a subsequent branch |
US8225046B2 (en) * | 2006-09-29 | 2012-07-17 | Intel Corporation | Method and apparatus for saving power by efficiently disabling ways for a set-associative cache |
US9384003B2 (en) * | 2007-10-23 | 2016-07-05 | Texas Instruments Incorporated | Determining whether a branch instruction is predicted based on a capture range of a second instruction |
US8443176B2 (en) * | 2008-02-25 | 2013-05-14 | International Business Machines Corporation | Method, system, and computer program product for reducing cache memory pollution |
US8521996B2 (en) * | 2009-02-12 | 2013-08-27 | Via Technologies, Inc. | Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution |
US20120311308A1 (en) * | 2011-06-01 | 2012-12-06 | Polychronis Xekalakis | Branch Predictor with Jump Ahead Logic to Jump Over Portions of Program Code Lacking Branches |
US9396117B2 (en) | 2012-01-09 | 2016-07-19 | Nvidia Corporation | Instruction cache power reduction |
US9552032B2 (en) * | 2012-04-27 | 2017-01-24 | Nvidia Corporation | Branch prediction power reduction |
US9547358B2 (en) | 2012-04-27 | 2017-01-17 | Nvidia Corporation | Branch prediction power reduction |
US9753733B2 (en) | 2012-06-15 | 2017-09-05 | Apple Inc. | Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer |
US9557999B2 (en) | 2012-06-15 | 2017-01-31 | Apple Inc. | Loop buffer learning |
US9891922B2 (en) | 2012-06-15 | 2018-02-13 | International Business Machines Corporation | Selectively blocking branch prediction for a predetermined number of instructions |
US20140143526A1 (en) * | 2012-11-20 | 2014-05-22 | Polychronis Xekalakis | Branch Prediction Gating |
US9471322B2 (en) | 2014-02-12 | 2016-10-18 | Apple Inc. | Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold |
US10289417B2 (en) * | 2014-10-21 | 2019-05-14 | Arm Limited | Branch prediction suppression for blocks of instructions predicted to not include a branch instruction |
US9639370B1 (en) * | 2015-12-15 | 2017-05-02 | International Business Machines Corporation | Software instructed dynamic branch history pattern adjustment |
US11550588B2 (en) | 2018-08-22 | 2023-01-10 | Advanced Micro Devices, Inc. | Branch target filtering based on memory region access count |
US11513801B2 (en) * | 2018-09-10 | 2022-11-29 | Advanced Micro Devices, Inc. | Controlling accesses to a branch prediction unit for sequences of fetch groups |
EP4081899A4 (en) * | 2019-12-23 | 2024-03-06 | Advanced Micro Devices Inc | CONTROLLING ACCESS TO A CONNECTION PREDICTION UNIT FOR EXTRACTION GROUP SEQUENCES |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6401196B1 (en) * | 1998-06-19 | 2002-06-04 | Motorola, Inc. | Data processor system having branch control and method thereof |
US20040181654A1 (en) * | 2003-03-11 | 2004-09-16 | Chung-Hui Chen | Low power branch prediction target buffer |
-
2005
- 2005-12-01 TW TW094142240A patent/TW200723094A/zh not_active IP Right Cessation
-
2006
- 2006-06-12 US US11/450,404 patent/US20070130450A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20070130450A1 (en) | 2007-06-07 |
TW200723094A (en) | 2007-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI295032B (zh) | ||
JP5357017B2 (ja) | 高速で安価なストア−ロード競合スケジューリング及び転送機構 | |
EP1889152B1 (en) | A method and apparatus for predicting branch instructions | |
JP5335946B2 (ja) | 電力的に効率的な命令プリフェッチ機構 | |
KR101174560B1 (ko) | 잘못된 추측성 업데이트의 링크 스택 복구 | |
TWI386850B (zh) | 用於主動式分支目標位址快取記憶體管理之方法以及裝置 | |
TWI499975B (zh) | 具有遲滯現象下一個提取預測器之訓練 | |
US7865769B2 (en) | In situ register state error recovery and restart mechanism | |
JP2011100466A (ja) | ループ終結分岐により分岐履歴レジスタの更新を抑制すること | |
JP2004533695A (ja) | 分岐目標を予測する方法、プロセッサ、及びコンパイラ | |
TW201017531A (en) | Apparatus and methods for speculative interrupt vector prefetching | |
US8601240B2 (en) | Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution | |
JP7160956B2 (ja) | 分岐命令のタイプに基づく先行分岐予測の選択的実行 | |
KR20090061644A (ko) | 명시적 서브루틴 호출의 브랜치 예측 동작을 에뮬레이트하기 위한 방법 및 장치 | |
JP2003519832A (ja) | アントレーニングを備えるストア−ロード転送プレディクタ | |
US11347839B2 (en) | Techniques for control flow protection | |
TW200813823A (en) | Block-based branch target address cache | |
JP2006520964A5 (zh) | ||
JP2006520964A (ja) | 分岐ターゲットに基づいて分岐予測をするための方法および装置 | |
US11301253B2 (en) | Branch prediction structure indexed based on return address popped from a call-return stack | |
RU2419835C2 (ru) | Способы и устройства для сокращения поисков в кэше целевых адресов ветвлений | |
WO2018059337A1 (zh) | 数据处理装置和方法 | |
KR102635965B1 (ko) | 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법 | |
US7913068B2 (en) | System and method for providing asynchronous dynamic millicode entry prediction | |
US20040225866A1 (en) | Branch prediction in a data processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |