TWI307040B - - Google Patents

Download PDF

Info

Publication number
TWI307040B
TWI307040B TW095112523A TW95112523A TWI307040B TW I307040 B TWI307040 B TW I307040B TW 095112523 A TW095112523 A TW 095112523A TW 95112523 A TW95112523 A TW 95112523A TW I307040 B TWI307040 B TW I307040B
Authority
TW
Taiwan
Prior art keywords
bbq
circuit
instruction
branch
program
Prior art date
Application number
TW095112523A
Other languages
English (en)
Other versions
TW200739419A (en
Inventor
Lei Wang
Original Assignee
Univ Feng Chia
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 Univ Feng Chia filed Critical Univ Feng Chia
Priority to TW095112523A priority Critical patent/TW200739419A/zh
Priority to US11/500,298 priority patent/US20070239975A1/en
Publication of TW200739419A publication Critical patent/TW200739419A/zh
Application granted granted Critical
Publication of TWI307040B publication Critical patent/TWI307040B/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

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

1307040 九、發明說明: 【發明所屬之技術領域】 本發明係有關一種程式迴向跳躍指令之預測機制之方 法及電路,尤指一種針對迴向分支所作而提出的一迴向分 支預測仔列(Backward Branch prediction Queues,簡稱 BBQ )之預測機制,BBQ設計實際上是將一些加法器 (Adder)、閂(Latch)、計數器(Counter)以及一些規模 甚小的組合邏輯,並配合處理器管線作業的特定組合,且 融入原嵌入式處理器設計中,而協助微處理器解決因條件 分支指令在管線執行中所造成不可避免的控制危障 (Control Hazard)問題。 【先前技術】 在分支預測(Branch Prediction)的技術上,目前較常 見的作法為在指令執行路徑(Data Path)上加入分支目標 缓衝器(Branch Target Buffer,以下簡稱BTB)的電路, BTB將以往所執行過的分支指令跳躍的目的位址(Target Address)及跳躍紀錄儲存起來,當相同的分支指令再度被 執行時,在指令抓取階段便可根據以往的紀錄預測是否跳 躍及目的位址’因此下一個指令便可抓取預測執行的指 令,使分支指令對管線造成延遲的可能性降低。 另有諸如利用編譯器(Compiler)的編譯排程技巧(如 延遲分支(Delayed Branch))、敘詞執行(Predicated
Execution)的條件執行環境來解決分支延遲問題,此類做 法大部份為學術研究的題材,並漸漸為相關產業所運用。 6 1307040 ?件7月f(日修(惠)正替換頁 在BTB的硬體設計上’BTB因儲存的是最近執行之跳躍 指令貢訊,其硬體基本上與快取記憶體(Cache)相同為聯結 式記憶體(Associative Memory)架構,因BTB為達成在下 一個抓取(Fetch,即IF)階段即時送出預測位址以抓取 指令,在BTB攔位中所有的分支指令之程式計數器 (Program Counter,簡稱 pc)必須在一個週期(CyCie) 4 '内全部被頊出與目前抓取指令的PC值比較以快速取出跳 躍指令之相關資訊,因而BTB在設計上乃以較昂貴複雜的 _ 聯結式δ己體(Assoc i at i ve Memory )之組織配合多階複雜 的預測結構為主;並且在執行指令時,還需同步更新ΒΤβ 欄位資料並減少寫入BTB所造成的延遲而使控制電路之複 雜度亦大幅增加。總之,BTB配合多階預測結構的硬體成 本極尚,且電路複雜,易造成快速管線架構的執行瓶頸。 目鈉精簡指令集運算(Reduced Instruction Set Computing,簡稱RISC)嵌入式處理器的設計者亦宣稱:利 用編譯器的延遲分支技術,並結合敘詞執行(predicated Execution)的硬體執行功能,亦可達到上述效果。但是, ^ 若要利用上述兩項技術的整合以達到此效果,則須具備以 下條件: (1 )指令集架構所有指令均須有敘詞執行的條件執 行能力(全敘詞Fully Predication) ’且可完成各種不同 情況的條件執行;而考慮目前微處理器架構的特性可發 現’如Intel X86指令集架構及MIPS、Sprac等知名處理 器架構,均無全敘詞執行(Fully Predicated Execution) 7 1307040 听年7月//轉價)正替換買1 的執行設計。而在嵌入式處理器核心的主流―高級ϋ指-令集計算機,既ARM處理器(Advanced RISC Machine,簡 稱ARM)指令集架構中’雖有所有指令均能敘詞執行的條 件執行能力;但其條件控制只有利用簡單的旗標(Flag)控 制,因而一旦條件較複雜而無法以單一比較後的N,C,v, Z等旗標表達,則該敘詞執行即形同虛設,無法配合延遲 - 分支技術而達到去除分支危障(Branch Hazard)的目的。 (2)延遲分支的先決條件是引用該技術的指令集架 •構,主要將分支(Branch)指令分為兩類,一類為有延遲 分支的分支,使管線(Pipeline)執行不會自動清除管線 内分支的後續指令執行;另一類則為一般分支指令,執行 時將互鎖管線(Interi〇ck Pipeline)並清除管線内分支 的後續指令。否則就是必須限制所有分支的執行均不會自 動清除管線内分支的後續指令執行,而讓編譯器在找不到 適當指令填入延遲磁格(DelayedSlots)中時,採用填入 _ Ν0Ρ指令的方式,以避免執行錯誤。 然而’上述的第一種方法將使指令集架構複雜化,導 v 致硬體負擔增加,而第二種方法則不切實際,不適合具有 〇Ut 執行能力的超純量(Superscalar)環境,且 導致編碼尺寸(Code Size)因大量Ν0Ρ指令的加入而增大。 & ’ RISC嵌入式處理器利用編譯器的延遲分支技術,並結 合敛詞執行的硬體執行功能,將在硬體環境上面臨更嚴苛 及複雜的設計要求。 ’由管線技術的觀點而言,分支指令會造成管線 8 1307040 外卜"表…— L. …. 的控制危障(Control Hazard),使管線延遲抓取到正確指 令的時間’以ARM-9架構的五階管線為例,發生分支指令 日守,分支指令必須經過三個管線階段〔既抓取(Fetch , IF)、解碼(Decode,ID)、執行(Execution,ΕΧΕ)〕才能 得知正確的分支目的位址,導致下一指令的抓取必須延遲 兩個週期(Cycle)才能抓取到正確的指令,如此原本管線重 ^ - 疊執行的特性將被破壞而造成管線效能上的損失,因分支 指令會不會發生跳躍完全受到動態的條件判斷結果所控 制,所以無法預先得知其執行結果,當分支指令發生跳躍, 會使得依序抓取的指令為錯誤指令。預先猜測分支指令會 不會發生跳躍,可以使管線抓取指令時預測是否依序抓取 指令或者是抓取跳躍後位址的指令,若預測正確即可適時 抓取分支後的指令,消除上述的延遲。 在分支預測的施行策略上,若不考慮硬體成本及設計 負擔,則BTB確實也疋一種有效而積極的控制危障解決方 案,也因此而廣泛為高效能處理器採用;但考慮其硬體複 ..雜度,以及對所有分支指令一視同仁的處理方式,將βΤΒ ν的技術直接移入強調結構單純、支援特定應用、低成本、 低耗電量的嵌入式處理器,則不見得是一個很恰當的作法。 由於分支指令種類的不同擁有不同程式結構和特性, 故,對於不同類型的分支指令應發展出不同的策略,以尋 找最符合其分支指令種類的預測機制。而在分支指令分類 上,先就一般分支扣令而s,分支指令依據跳躍的方向可 以分成前置(Forward)、迴向(Backward)兩種。在程式 1307040 7月"日修(更)正替換頁 行為上’「前置分支指令」常發生在類似if—then_else的 程式結構中’根據if條件成立與否決定分支指令是否跳 躍’而「迴向分支指令」則發生在類似迴圈(Loop)的程式 結構中’這類的分支跳躍通常會數以百次的跳躍以重複執 行,直到迴圈結束為止。在前置分支指令的處理上,由於 〃 一般該類指令多出現於小基本區塊(Basic block)的流程 : 控制上’因而目前已日漸普及的敘詞執行(Predicated
Execution)方式,將 if-then-else 的控制相依(Control • Dependence)轉換成對救詞位元(predicated Bit)的資料 相依(Data Dependence),運用多個功能單元(Function
Unit ’ FU)平行執行,可有效的解決大部分此類指令。而 迴向分支的預測’則因其執行頻率較高且行為較固定易於 預測’應可發展出特定的預測機制以有效解決此類分支所 產生的控制危障。 【發明内容】 本發明之主要目的’在於解決上述的問題而提供一種 \ 程式迴向跳躍指令之預測機制之方法及電路,其由微處理 _器硬體架構著眼,並針對執行頻率最高且行為模式自成一 格的迴向分支作解決,因迴向分支的行為特定,且往往在 程式結構中會以巢狀包夾的形式出現,因此,根據這些行 為上、結構上的特徵,而特別設計一個簡單且有效的分支 預測機制以解決因此類指令在管線執行中所引起的控制危 障(Control Hazard),此機制即為迴向分支預測佇列 (Backward Branch prediction Queues,簡稱 BBQ)的設計 轉頁.丨 1307040 。故,BBQ電路硬體複雜度相當低,配合一般的管線執行 ,將可達到在第一個抓取階段即可完成預測的效果。 本發明之另一目的,係由於BBQ結構既不必儲存太多 才曰·?,也不必以聯結式5己憶體(Associat i ve Memory)的 技術作大量資料的快速比對,因而硬體十分簡單,十分適 合低成本’結構簡單的嵌入式處理器使用。
本發明之又一目的,係在於BBQ同時亦可與其它的分 支控制危障技術綜合使用,例如:可與敘詞執行(
Predicated Execution)技術合作,由bbQ做迴向分支的 預測’並以敘詞執行的方式去除大部份的前置分支指令; 或者’與分支目標緩衝器(Branch Target Buffer,簡稱 BTB)硬體合作,由BBQ做迴向分支的預測,BTB則專做前 置分支指令的儲存及預測,根據目前的模擬效能驗證,發 現此種組合可達到接近兩倍容量大小的BTB所能達成的預 測效率。 、 為達前述之目的,本發明之機制係包括一迴向分支預 ^ 測仔列(Backward Branch prediction Queues,簡稱 BBQ); 當程式開始執行時,在一最内層迴圈中,BBQ會第一 次遇到一最内層迴向分支指令,BBq會發現其為分支指令, 且根據該最内層迴向分支指令之目的位址與程式計數器 (Program Counter,簡稱PC)的大小,而判斷該最内層 迴向分支指令為迴向分支指令,因而首先將該最内層迴向 分支指令的PC值及目的位址存入bbq ’此時,雖因第 1307040 I ( - -次遇到該最内層迴向分支指令而無法立即提供目的位 址’但在爾後相同該最内層迴圈的執行時,_ 藉BBQ=讀出(Front)指標找到正確的預測位址。白 接著,當程式執行到脫離該最内層迴圈並進入— :圈:0 _發生對最内層迴向分支指令的預測錯i …後,BBQ亚不會清除其内容,待程式執行遇到一中層迴向 支指令時,由於該中層迴向分支指令同樣為迴向^支指 .令’並其目的位址在最内層迴向分支指令的目的位址丄 方,且該中層迴向分支指令之PC值大於該最内層迴向分支 指令的PC值,即目的位址(中層迴向分支指令目的位址 (最内層迴向分支指令) pc值(中層迴向分支指令)>pc 最内層迴向分支指令),因而BBQ將該中層迴向分支指 ·?亦存入BBQ中,在此之後,由於該中層迴向分支指令會 跳回重複執行,因而BBq的讀出(Fr〇nt)指標做歸零的動 作卩指標值為零,並指向BBQ儲存的最内層之迴向指令 .跳資訊,以從該BBQ儲存之最内層迴圈快速提供該最内 "θ匕向刀支指令的目的位址,直到其最後一次跳躍預測失 ’、:此日"^喂出(Front)指標即進入下一位,調整為下次預 測該中層迴向分支指令;其中,之前_只紀錄著該最内 層迴圈,受限於此,而無法猜測該中層迴圈,但是當該中 f迴圈被執行時,BBQ即紀錄下該中層迴圈,因此,當該 、=θ迴圈再次猜測錯誤時,便知道下一層迴圈為該中層 ^圈’而當該中層迴向分支指令成功預測該中層迴圈執行 後,的讀出(Front)指標會自動回到起點,即下次預 12 1307040 月"日修(楚)正替換頁 測又是該最内層迴向分支指令的執行。之後,BBQ就重複 著運行著以上的動作,不斷在最内層迴圈、中層迴圈、最 内層迴圈、中層迴圈…中更替這個過程,此時,BBQ欄位 紀錄著「雙層迴圈狀態」,此狀態會一直持續到該中層迴圈 執行沒有發生迴向跳躍(既該中層迴向分支指令迴向跳躍 錯誤)為止,並準備進入一最外層迴圈。 , 之後,當程式執行到該最外層迴圈時,會遇到一最外 層迴向分支指令,由於BBQ第一次遇到該最外層迴向分支 • 指令,BBQ中尚不會有紀錄,預測機制一定失敗;但同樣 因為該最外層迴圈是該最外層迴向分支指令所構成的巢狀 迴圈,即目的位址(最外層迴向分支指令)$目的位址(中層 迴向分支指令)&& PC值(最外層迴向分支指令)>PC(中層 迴向分支指令),因此不清除BBQ而直接加入該最外層迴圈 的紀錄,此時BBQ仍會設定預測機制以預測下次遇到迴向 分支指令時會跳回最内層迴圈,之後,BBQ欄位儲存著「 三層迴圈狀態」,將不斷在最内層迴圈、中層迴圈、最外層 ® 迴圈之任一情況中更替變動,並持續到該最外層迴圈執行 λ - 不發生跳躍為止,此時BBQ預測結束並準備離開此巢狀迴 圈,但仍暫時不清除BBQ攔位内容,以準備爾後新增另一 外層巢狀迴圈,若爾後執行遇到另一外層迴向分支指令, 而經BBQ比較發現條件不合,即目的位址(另一外層迴向分 支指令)> 目的位址(最外層迴向分支指令)| IPC值(另一外 層迴向分支指令)< PC值(最外層迴向分支指令),則清除 BBQ,並將該另一外層迴向分支指令存入BBQ中,而如同回 13 7月ί /曰修(¾正替換頁 1307040 到BBQ首先將該最内層迴向分支指令的PC值及目的位址存 入BBQ的狀況。 另外,可利用本發明之預測機制而設計成一硬體電 路,其電路係為一迴向分支預測佇列(Backward Branch Prediction Queues,簡稱BBQ)電路,包括有一迴向分支 預測仵列(Backward Branch prediction Queues,簡稱 ' BBQ)預測機制’及以 ARM 處理器(Advanced RISC Machine, 丨簡稱ARM)之多階管線作為基本架構,並配合該BBQ預測 機制依序於抓取(Fetch ’簡稱if)、解碼(Decode,簡稱 、執行(Execution,簡稱IE)三個管線階段分別設置 一抓取管線階段電路、一解碼管線階段電路、一執行管線 階段電路;並於該BBQ電路中均使用32BIT(32條訊號線) 的匯流排作資料或控制訊號的傳輸。 當一指令進入抓取階段時,該抓取管線階段電路利用 一 NPC多工器選擇位址並寫入一下一程式計數器(Ne対 Program Counter,簡稱NPC),以作為下一個抓取階段抓 -取指令的位址;該NPC多工器接受一邏輯運算單元(ALu)、 4 -記憶體存取、該程式計數器Pc (Pr〇gram c〇unter,簡 稱PC)累加值與新增之-條讀出預測迴向分支指令的目的 位址資料線的輸人,以供該BBQ電路提供闕執行時下一 個抓取階段,即可產生預測該指令的位址;該抓取管線階 段電路另有-比較電路用以列斷目前抓取指令的Pc 該BBQ電路預測指令之PC值是否相同,並湘㈣了的二 條判斷是否送出觸預測的目的位址之控制線輪出 1307040 _ |^年^月((曰修換頁 ^至該NPC多工器,若比較後兩者pc值為ITfr此"^^—一 2 NPC多工器送出—讀出預測迴向分支指令的目的位址 並寫回該下一程式計數器(NPC)。 當該指令進入解碼階段後,該解碼管線階段電路將抓 3令之[27:23]Bit,判斷指令是否為分支指令,並分辨 ^分支指令的種類’其為前置跳躍指令或迴向跳躍指令, ^用1 BIT的-條判斷是否為迴向跳躍分支指令控制訊
1_BIT的—條判斷是否為前置跳躍分支指令控制訊 =别出訊號至該執行管線階段之_電路使用;並取 :28]BIT條件攔位與·旗標值判定該指令條件是否 成立’ J'將判斷結果利们-BIT的-條判斷分支指令是否 :躍訊號線輸出至下—階段,既該執行㈣階段之_電 路0 其中’該解碼管線階段電路更包括 以提早-個管線階段可取得分支指令的目的位址, 即可提早在解碼階段就判斷該_電路所儲存的迴向分支 跳躍紀錄與新的迴向分支指令是否構成巢狀迴圈,或者, 是否造成破壞BBQ _機制的錯誤;該解碼管線階段電路 利用-比較器以判斷讀出該_儲存的巢狀迴圈最外層之 目的位址、該讀出BBQ儲存的巢狀迴圈最外層之pc值與新 發生的分支指令之目的位址及%值作比較,該比較㈣斷 的結果係利用1-BIT的-條判斷是否符合巢狀迴圈訊號線 輸出至下一階段之BBQ電路作辨別。 當該指令進入執行階段後,該執行管線階段電路根據 15 1307040 w年M f i日修⑧正替換頁 BBQ預測機制選擇讀出預測指令並更新bBQ攔位 本發明之上述及其他目的與優點,不難從下述所選用 實施例之詳細說明與附圖中,獲得深入了解。 、 當然,本發明在某些另件上,或另件之安排上容許有 所不同,但所選用之實施例,則於本說明書中,予以詳細 說明,並於附圖中展示其架構。 、 【實施方式】 本發明所提出之預測機制迴向分支預測佇列(
Backward Branch prediction Queues ’ 簡稱 BBQ)對迴向 分支指令的預測源自於迴圈不斷重複執行的特性:第一, 程式遇到迴圈時往往會重複執行多次。第二,每次迴圈跳 躍的位置都是同-個位址。第三,若有連續的迴向分支形 成巢狀的迴圈結構’則各迴向分支指令的執行次序亦有— 定的模式。本發明即循此特性加赠構出—套有效的分支 預測策略:由於第-個特性,在程式執行上迴圈往往佔有 極大的比重’決策成功必然可以帶來一定的效能提升;針 對迴向分支所做的糊機制能循迴圈的雜而增加預測的 準雜,时盲目的M㈣有分支;旨令㈣式計數 _m,nter ’簡稱Pc)位址,故需要用來支援指令 位址的gfe、比㈣硬體電路也就不需十分龐大,可 大降低硬體成本。 先以一個例子來分析巢狀迴圈的行為,第i⑷圖是_ 仙化的1綠迴_式鱗,第Hb)_為其程式執 行的流程示思圖。在第1(a)圖中χ:、γ:、z:分別代表 16 1307040 '昨輝丨::入讀:r' \ .. . - -..- · '-*'·'------------- 迴向分支之目的位址(Target Address) ; BRz、BRy、BRx 則為迴向分支指令的代稱,SI至S7則代表其它非分支指 令。而在第1(b)圖中,圓圈Z、Y、X代表各層迴圈,虛 線表示迴向分支指令跳躍,實線則表示迴向分支指令不跳 的循序流程。 觀察該巢狀迴圈之行為發現:各迴向分支指令的執行 次序類似於彳宁列(Queue ),週而復始的依序執行{Ζ}進而 {Z,Y}進而{Z,Y,X}的動作;但其行為實際上又跟佇列( Queue )不太相同,整個巢狀迴圈是繞著一個起點迴轉,每 當有巢狀迴圈的迴向分支指令跳躍時,巢狀迴圈即回到起 點(即第1 (b)圖中的Z),不跳時才進入下一個迴圈。由這 個跳躍模式中,其實要跳躍的位址亦即是我們要預測的位 址,這些位址不但固定而且有其大小(前後)的規律可循, 此處即是整個BBQ發展的中心構想來源。根據巢狀迴圈特 性,我們可以預測整個巢狀迴圈跳躍的情況並提高預測的 命中率。 根據上述的行為分析,我們發現要儲存BBQ預測所需 之紀錄,須有一讀出指標:front指標,依序讀出儲存的 資料,每次只需讀出一筆攔位的資料提供預測所需之紀錄 ,並有一寫入指標:rear指標,依序寫入所需的跳躍紀錄 ,每次寫入即移至下一攔位準備寫入新的資料。 BBQ該如何控制以達到準確儲存巢狀迴圈,以第2圖 為第一實施例之程式迴向跳躍指令之預測機制之方法的說 明: 17 1307040 丨則 ' 丨, 程式一開始執行,在一最内層迴圈z中,第一次遇到 最内層迴向分支指令BRz時,BBQ發現其為分支指令,且 根據其目的位址與PC值的大小判斷其為迴向分支指令,因 而首先將最内層迴向分支指令BRz的PC值及目的位址存入 BBQ,如第2 (a)圖所示,此時雖BBQ因第一次遇到最内層 _ . 迴向分支指令BRz而無法立即提供目的位址;但在爾後相 同最内層迴圈Z的執行,BBQ每次皆可藉BBQ的讀出(Front )指標找到正確的預測位址。 • 接著,當程式執行到脫離該最内層迴圈並進入一中層 迴圈Y時,即BBQ發生對最内層迴向分支指令BRz的預測 錯誤後,BBQ並不會清除其内容,待程式執行遇到中層迴 向分支指令BRy時,由於中層迴向分支指令BRy同樣為迴 向分支指令,且其目的位址在最内層迴向分支指令BRz的 目的位址上方,且中層迴向分支指令BRy之PC值大於最内 層迴向分支指令BRz的PC值,即目的位址(中層迴向分支 指令BRy)$目的位址(最内層迴向分支指令BRz) M PC值 ® (中層迴向分支指令BRy) > PC值(最内層迴向分支指令BRz) * . ,因而BBQ將該中層迴向分支指令BRy亦存入BBQ中,如 第2 (b)圖所示,在此之後,由於中層迴向分支指令BRy會 跳回重複執行,因而BBQ的讀出(Front)指標動作是做歸 零的動作,並剛好指標值為零(既指向BBQ儲存的最内層之 迴向指令跳躍資訊),以從最内層迴圈Z快速提供最内層迴 向分支指令BRz的位址,直到其最後一次跳躍預測失敗, 此時讀出(Front)指標即進入下一位,調整為下次預測中 18 1307040 月丨丨日修.(¾正替換頁 層迴向分支指令BRy,如第2(c)圖所示,(之前BBQ只紀 錄著最内層迴圈Z,受限於此,無法猜測中層迴圈Y,但是 當中層迴圈Y被執行時BBQ即紀錄下中層迴圈Y,因此當 最内層迴圈Z再次猜測錯誤時,便知道下一層迴圈為中層 迴圈Y),而當中層迴向分支指令BRy指令成功預測中層迴 •. 圈Y迴圈執行後,BBQ的讀出(Front)指標會自動回到起 點,如第2 (b)圖所示,即下次預測又是最内層迴向分支指 令BRz的執行。之後,BBQ就重複著運行著以上的動作, ί 不斷在最内層迴圈Z、中層迴圈Y、最内層迴圈Z、中層迴 圈Υ…中更替這個過程,此時BBQ攔位紀錄著「雙層迴圈 狀態」,此狀態會一直持續到中層迴圈Υ執行沒有發生迴向 跳躍(既該中層迴向分支指令BRy迴向跳躍錯誤(miss)) 為止,預測結束準備進入下一層迴圈,既最外層迴圈X。 之後,程式繼續執行到該最外層迴圈X,遇到最外層 迴向分支指令BRx,由於第一次遇到,BBQ中不會有紀錄, 預測機制一定失敗;但同樣因為此迴圈X是迴向分支指令 且構成巢狀迴圈(目的位址(BRx)S目的位址(BRy) M PC 值(BRx) > PC值(BRy)),因此不清除BBQ而直接加入最外
'V 層迴圈X的紀錄,如第2 (d)圖所示,此時仍設定BBQ預測 機制預測下次遇到迴向分支指令會跳回最内層迴圈Z,之 後BBQ欄位儲存著「三層迴圈狀態」,將分別在第2 (d)圖 、第2 (e)圖、第2 (f)圖中變動,持續到最外層迴圈X執 行不發生跳躍為止,此時預測結束並準備離開此巢狀迴圈 ,但仍暫時不清除BBQ欄位内容,以準備爾後新增一外層 19 1307040 7;川轉(擎着 >目的位址㈣層•二=二=) =向分支指令BRw)<Pc值(最外層迴向 二 清除_,並將另—外層迴向分支指令BRw = 回到第2 (a)圖的狀况。 仙Q’如同
以下將就者前置分支行為會破壞的制準確性 進行詳細㈣’雖然_本身並不會儲存前置分支 但刚置分支指令卿後卻會使巢狀迴圈依序由内至外^ 程序流程ϋ成破壞’目此本制卿也财慮前置分 7對BBQ預測機制的影響。依據對應用程式的動靜/態分 ’我們將此類冑置分支會影響巢狀迴圈規律行為二八 類為如第3圖所示的三種類型: 刀 第3 (a)圖及第3 (b)圖的情況並不至於對BBq已有的 預測機制產生破壞的作用,充其量只是造成BBQ 一時的誤 會,而儲存一組不需要的資訊,但隨著迴圈的運作,BBq 可依前述的判斷機制重組預測資訊,而消除此類的跳躍干 擾。 第3 (c)圖的情況則較為複雜,當一前置分支指令BRf 於巢狀迴圈之中而其目的位址也位於迴圈之中,且前置分 支指令BRf的PC值(意指前置分支指令BRf指令所在的位 址)與其目的位址(意指前置分支指令BRf指令執行跳躍 後後下一個執行指令所在的位址)跳越過巢狀迴圈最内層 迴向分支指令BRz ’因此在執行前置分支指令BRf後,位 !3〇7〇4〇 ?件Ί月丨/s修(¾^^] 址會移至前置分支指令謝之目的位 層迴向分支指令BRz位址(最内層迴向分支指令BRz未被執 行到),以第3 (c)圖作為本發明之第二實施例的說明。前 置刀支私令BRf其跳躍之目的位址跨越迴向分支指令 虽m置分支指令BRf跳躍時會使離開最内層迴圈z後的 …程序流程’因前置分支指令BRf跳躍而使流程直接進入最 ,外層迴圈X而沒有經過中層迴圈γ,而當離開最内層迴圈z 後,BBQ所預測的迴向分支指令為中層迴向分支指令抑乂 因剷置为支才曰令BRf的影響中層迴向分支指令無法 被正確預測,而造成預測錯誤並破壞BBQ預測機制,:且 别置为支才曰令BRf在巢狀迴圈中,會隨迴圈不斷重複執行 ,因此造成的重複破壞影響也較大。根據應用程式的動態 執行分析,我們發現此類情況平均佔全部執行指令次數的 0.9139% ’尤其在某些特定的應用’如測試程式】㈣及 dijkstra shortest path中,其分別佔所有分支指令數之 5. 773%、i 6. 8·,將影響_在此類程式中的預測效能。 -- 祕決此類前置分支指令造成BBQ的影響,只要依其 ,前置分支指令跳躍的目的位址與目前_攔位中紀錄的跳 躍資訊,利用比較器比較判斷前置分支指令黯跳躍的目 的位址是否大於目前BBQ預測之pc值位址,若大於,則 BBQ會尋找下一個有效欄位的預測pc值位址盥豆目的位址 ,再經比較直龍果為不大於,朗_整讀出(
Front)指標指向尋找到❹叫妓攔位及送出正確的預測 位址;反之,則BBQ不做任何改變。 1307040 ψ 以下將就著副程式行為會破壞BBQ的預測準確性再進 行詳細說明,呼叫副程序的指令亦為一分支指令,考量一 旦透過程式的呼叫’則目前的BBQ資料將暫時失去價值; 卻會在不久的將來再從新恢復㈣,其行為模式值得本發 明做更進一步的考量,並進而修復BBQ的設計,使其更臻 完美。若副程序中含有迴向分支指令,如第4 (a)圖所示, 當-呼叫副程序之分支指令BLa呼叫副程序中所執行到的 一迴向分支指令BRm、BRn均會破壞原有儲存的主程序迴圈 Z與主程序迴圈γ所組成巢狀迴圈之程式行為,因此當副 ^序被”4 ’原本儲存的迴圈Z與Y迴圈賴機制會被 "月除,而呼叫副程序之分支指令BLa其位在迴圈z之外迴 圈Y之内,當迴圈z紀錄位址建立,直到離開迴圈z結束
預測後才會開始呼叫副程序,z迴圈並未受到影響,而Y 坦圈構成巢狀迴圈内含有哞叫副程序之分支指彳I,副 ,序中的迴向分支指令BRm、BRn會造成迴圈γ每次建立: =、’、己錄後,在隨之而來的副程序呼叫會將迴圈Y跳躍記錄 清並預測副程序裡的巢狀迴圈,因此迴圈Y無法預測 成故,原本由迴圈z與迴圈γ所組成之巢狀迴圈無法 ί完整得預測,而副程序裡的巢狀迴圈雖會受副程序;叫 别、_的紀錄影響’而造成—開始建立的失誤,但其 預測不會影響正確性。 、 圈^第4(b)圖觀察其程序流程,我們可以發現主程序迴 者主程序迴圈Υ和副程序迴圈Μ及副程序迴圈Ν,兩 現為個別獨立的巢狀迴圈,若分別以兩套_預測機 22 1307040 η ί η -: 制提供主程序與副程序各自獨立使用,並以呼叫副程序的 分支指令BLa作為切換的控制’即可有效避免上述互相干 擾所造成BBQ預测失誤。 由於本發明所提出的BBQ預測機制之方法,其電路硬 體簡單、成本低廉’為避免上述因呼叫副程序的分支指令 … 造成的干擾,若增加BBQ的套數供主程序與副程序獨 入 立使用’並不會大幅增加硬體的複雜度;且連續呼叫/返回 田1J私序具有先呼叫後返回(First Caii Last Return,簡稱 I FCLR)的特性與堆疊(Stack)先進後出(FirstInLast〇ut ,簡稱FIL0 )的特性符合,故,增加一個堆疊電路用以儲 存連續呼叫/返回的副程序的資訊並控制數套BBq的切換 。我們將此一構想命名為堆疊式迴向分支預測佇列(
Stacked Backward Branch prediction Queues,簡稱
Stacked BBQ),再以深度為二的副程序為本發明第三實施 例’如第5圖所示,簡述說明此一方法。 當該程式包括一主程序及深度為二的副程序時(既一 • 第一深度副程序1與位於該第一深度副程序1下一深度的 、一第二深度副程序2);再者,該主程序具有一層主程序迴 圈X,而於該主程序迴圈X中更具有一主程序迴向分支指 令BRx,且另有可呼叫該第一深度副程序丄之一呼叫第一 深度副程序分支指令BLa位於該層主程序迴圈χ中;而該 第一深度副程序1具有一層第一深度副程序迴圈γ,而於 該第-深度副程序1中更具有一第一深度副程序迴向分支 指令BRy ’且另有可呼叫該第二深度副程序2之一呼叫第 23
1307040 二深度副程序分支指令BLb位於該層主程序迴圈Y中 該預測機制之方法及電路包括複數套的BBq以形成一 堆逢式迴向分支預測 <宁列(Stacked Backward Branch prediction Queues,簡稱 Stacked bbQ),以供該主程序 獨立使用第一套BBQ1,該第一深度副程序1獨立使用第二 套BBQ2,該第二深度副程序2獨立使用第三套BBQ3 ;以及 一堆壁電路用以儲存連續呼叫/返回的各該深度副程序的 資訊’且控制各套BBQ間的切換。 於程式執行中,當呼叫第一深度副程序分支指令BLa 呼叫第一深度副程序1發生時,Stacked BBQ會將此分支 才曰7。己錄壓入該堆疊電路中,並控制由目 师切換1下_套既第二套寒(如第6圖所示^且^ 本使用之第一套BBQ1保存原有的攔位不做任何改變;若第 -冰度副程序1未返回’而呼叫第二深度副程序分支指令 BLb繼續呼叫第二深度副程序2,則一樣將呼叫第二深产 副程序分支指♦ BLb壓入該堆疊電路中,並切換第二^ B&BQ2至下-套既第三套卿;#呼叫第二深度副程序分支 =7 BLb呼叫的第二深度副程序2返回時,則將呼叫第二 深度副程序分支指令BLb由堆叠電路彈出,並切換返回: 一套既第二套BBQ2。 如此,在加入Stacked BBQ預測機制後,副程序 使用-侧立的BBQ,若考慮辟序呼叫深度的問題, ^們並不能沒有限制的增加_的套數以提供每一個副程 序使用,因此Stacked BBQ在分配_使用權的策略上, 24 1307040
^員能有效判·程序是否_立使用—套_或多個副 程序八同使肖套BBQ,以減緩副程序呼叫深度對於bbq ,數的需求;且考慮特殊,叫_序_迴行為,其副程 ^斷呼叫本身但仍為同—個副程序,因此在_使用權 的分配策略上絲判別此類特殊行為則僅需—套即可 〇 * 接者,仍以深度為二的副程序為本發明第四實施例, 士,7圖所不’用以說明Stacked BBQ在分配卿使用權 的策略上,若能有效判別各副程序是否須分別獨立使用一 套_或多個副程序共同使用一套,而減緩副程序呼 叫深度對於BBQ套數的需求。 如第7圖所示為一個程式呼叫副程彳的可能情況,一 開始尚未呼叫副程序,stacked _預測機制會選擇使用 第-套BBQ1A,在第-套BBQ1A儲存著主程式序的迴向分 支的跳躍紀錄時,當呼叫副程序A時,此時由於第一套 BBQ1A儲存著副程序返回時將被再度使用的跳躍紀錄,因 -此切換第一套BBQ1A至下一套BBQ2A供副程序义所使用, ‘並將啤叫副程序A的跳躍紀錄、返回位址及目前使用下一 套BBQ2A的編號壓入堆疊電路的紀錄中。而在進入副程序 A後’因副程序A並未使用下一套卿“堵存迴向分支的 跳躍紀錄:故副程序A呼叫副程序B時BBQ2A會處於未被 使用的狀態,此時stacked 僅將呼叫副程序B的紀錄 壓入堆疊電路中,但不切換BBQ電路,以同—套bbq2a電 路供副程序B使用,如此可以減輕_電路套數的需求並 25 1307040 ” f丨丨 V ' 可有效利用BBQ。當副程序B返回時會將目前使用的bbq 儲存之跳躍紀錄清除,並將堆疊電路頂端的紀錄彈出,根 據堆疊紀錄的副程序A所使用之服卩電路編號到對應的BBq ,若未再呼叫副程序β,則直到副程序A返回後,依同樣 的動作將BBQ電路切換回第一套BBq1a。 … 此種6況的優點在於加入Stacked BBQ機制後,主程 ' 序與曰彳私序均各自使用一個獨立的BBQ,副程序與副程序 _ 之間的迴向分支指令可避免因副程序的呼叫/返回所帶來 的干擾以提升BBQ的預測正確率。 ,上,对肌f邈迴行為發生在Stacked BBQ預測中時β =、、田《兒明’在副程序呼叫行為上以遞迴形式的呼叫常佔^ 2的比例’其麵不斷呼叫_序本身常造成副程序ό =斷加冰’右不對其特別考量則容易造成卿電路4 :足而喪失Staeked _之效能。由於 =同’因而遞迴的程式行為僅需以一套_電: 如何辨;Ur 8圖表示遞迴呼叫的行為,並說' 支預^ 的呼°情為而僅使用-套_電路作迴向; (a)圖為—化簡的遞迴程式邏輯, 卓―_叫遞迴副程序A,其後 =BL-A( 程序A本身 ”則” β1-Α(2)不斷的呼叫 身 因,、目的位址A盘前^一個命絲· 4。rt 次呼叫副 /、則個、,,己錄相同。當第 序夺,Stacked BBQ切換下一套 程序A使用,伯^ * # BBQ電路供 BBQ電路^二一,之而來的呼叫為呼叫副程序A本身, 而要切換至下一套_電路’僅需固定使 26 1307040 %千7月叫修(更)正替換頁
==即可,而遞迴副程序返回的處理:僅需確G i回均為返回前一套_,由於指令BL-A(2)呼叫/ 次_電路。_電路,故並不需要每次返回印切換- 里察f8 (b)圖每次呼叫後將紀錄壓入堆疊中的社 分支二堆411中儲存不斷重複的跳躍紀錄,而 址不同:呼十=支指令bl-a(2)跳躍紀錄僅返回位 斜πΙ序位址均相同,所以在堆疊器的儲存上 f於相_紀錄僅會儲存—個進人堆疊,並且當連續呼叫 目同的私序位址時,我們判定其為—遞迴形式之呼叫,因 此在BBQ電路切換上,並不需要切換_至下—套 將跳躍靖壓㈣4,若分支齡的返回健與堆疊頂端 儲存相同則代表是由同—指令不斷呼叫副程序本身,故無 、將、’、己錄壓人堆疊,而是設定目前堆疊頂端的紀錄為一遞 迴形式的呼叫。 以下將就著BBQ作業模式融入處理器的指令管線流程
中以 ARM—9 處理器(Advanced RISC Machine,簡稱 ARM )之5階官線規劃為例,BBQ的作業將如第9圖所示,並 在抓取(Fetch,簡稱IF)、解碼(Decode,簡稱ID)、執 行(Execution,簡稱IE)三個階段產生如下所述之動作 匕入於抓取階段(IF ^age)中,把%值送至正欲抓取的 $ 7位址到BBQ中’與BBQ中讀出(Front)指標所指之紀 錄比對决疋是否為BBq紀錄過而為目前預測的迴向分支指 27 1307040 . ^/ι/Ι Εί^γ#κί: 二==:::位 r_“:的[ 定動作,而管線正不符合,則_不做特 論。=mtage)中,此處需要分為兩部分討 並已在之迴向跳躍指令, 矣一 y、BBQ預测正確,反之條件不成立則 令不纽^測失誤,此時必須清除陶預測所抓取的指 令非ΐ=Γ取正確的指令位址。『右線流程』表示指 解碼判支指令,當執行指令經 躍時,會判斷其跳躍:目::迴向分支指令且發生跳 的儲二的位址與pc包夾bbq儲存之最外層 之_*,右未構成綠職示已麟_已紀錄 紀:者皆於執行階段一)更新其對應 。『左m階mstage) +,此處亦分為兩部分討論 p ." 』4示扣令為以往執行過的迴向姚躍指令,並 測正:== 分支的效果,左側的第-條線”預 執行’預測令再一次被 乂大侧的特性,若未有其他分支指令更改程式流程 必然叫_所構建之巢狀迴圈最内層,因此更改 28 1307040 p——~^一 ”年7?月/丨曰修(更)正替換頁 BBQ讀出預測位址的讀出(Front)指標,令iJf向"^7 即才曰向巢狀迴圈的表内層)。左側第二條線,,預測失誤,,表 示BBQ會將讀出預測位址的續出(ρΓ〇ηΐ)指標指向下一個 BBQ欄位(即指向下一層迴圈),因其預測分支跳躍而未發 生跳躍,表示程式流程脫離現在的迴圈到下一層迴圈,故 •.更改指標使其指向下一層迴圈。『右線流程』最左侧的兩條 線建構BBQ 思4曰當扣令經過解喝階段(Π) stage)的 流程,確認此指令為一個發生跳躍的迴向分支指令且不在 • BBQ預測紀錄裡,若與BBQ攔位所儲存指令 1 ’會將其存入BBQ欄位中;反之若不構成巢狀迴圈,則清 除現有BBQ紀錄之各欄位的紀錄,再存入該指令紀錄以重 新構建另一新的巢狀迴圈。而最右側的三條流程” BBq不 做任何改變”則代表這個指令是一個迴向分支指令但是並 未發生跳躍’或是根本並非迴向分支指令,因而BBq不作 任何特定動作。 以下就著將B B Q作業模式融入處理器的指令管線流程 中,並將其以硬體電路實現作為本發明第五實施例的說明 。仍以ARM-9五階管線作為基本架構,並配合預測機 制於抓取OF)、解碼OD)、執行(IE)三個管線階段增 加所需的電路,首先我們定義BBQ電路的方塊圖(如第工〇 圖所示)與資料輸入/輸出及控制訊號表(如附件一所示), 並依抓取(IF)、解碼(ID)、執行(IE)三個管線階段分 別介紹。並於該BBQ電路中均使用32BIT (32條訊f卢線) 的匯流排作資料或控制訊號的傳輸。 ” 29 1307040 如第η圖所示’在指令抓取階段之抓取管緣階段電 路,其利用一 NPC多工器選擇位址寫入一下一程= (Next Program Counter » μΡΓχ ^ 段抓取指令的位址,㈣擇^ ~個抓取階 、_存取二^ 自邏輯運算單元⑽) 此體麵、PC值累加H們在h 出預測迴向分支指令的目的位址資料線的輸入,= ::電:預測執行時下〜個抓取階段即可產生預測指令 該抓取管線階段電路另有新增—組比較器電路判 斷目刖抓取指令的PC值與_預測指令之pc值是否 ^用i-BIT的-條判斷是否送出_預測的目的位址控 制線EQU輸出比較結果至Npc多工器,若比較後兩者跎 $相等,此時會控制NPC多工器送出讀出預測迴向 々的=的位址BTAR並寫回該下一程式計數器(Npc)。曰 當該指令進入解石馬階段後,該解碼管線 ,令之咖職(既以_組具有32條訊號線之^ 條到弟28條資料線作傳遞),判斷指令是否為分支指令, f分辨該分支指令的種類,其為前置跳躍指令或迴向曰:躍 曰·?,且利用1-BIT的一條判斷是否為迴向跳躍分支指八 ,制訊號線BACK與卜BIT的-條判斷是否為前置跳躍= 指令控制訊號線F0rward輸出訊號至該執行管線階^之 巧電路使用;並取[3ι:28]βΙΤ條件攔位與㈣旗襟二 疋该指令條件是否成立,且將判斷結果利们—ΒΙτ的 顯分支指令是否跳躍訊號線C 0 N D輸出至下一階段二 執行管線階段之BBQ電路。 §Λ 30 I3〇7〇4〇 丨” 7 : χ · 原本ARM _分支指令係純行階灰才利用而_ $支指令的目的位址,為避免_電路在執行階段時須 綠ALU運算後才能取得更新_攔位所需的資料而造成管 j之延遲’因此’該解碼管線階段電路更包括—快速加法 電路’以提早一個管線階段可取得分支指令的目的位址, • . ^後’即可提早在解碼階段關_ _電路所儲存的迴 ,=分支_紀錄錢的迴向分支指令是否構成巢狀迴圈, 或者’是否造成破壞_預測機制的錯誤。該解碼管線階 =電路利用一比較器以判斷讀出該_儲存的巢狀迴圈最 卜層之目的位址MTAR、讀出該_儲存的巢狀迴圈最外層 之PC值MPC與新發生的分支指令之目的位址及%值作二 較’該比較器判斷的結果係利用的一條判斷是否符 合巢狀迴圈訊號線L Τ輸出至下一階段之β B Q電路作辨別。 對於ARM-9管線架構上bbq於指令解碼階段新增一個 快速加法電路,除了可以避免_造成管線的關鍵路徑( Critical path)之外,因條件分支指令的條件判斷亦可在 解碼階段時完成,當位址計算提前至解碼階段計算後,即 可完成分支指令的執行動作並將原本分支指令造成兩個管 線階段延遲減少至一個;故可使分支指令即使非迴向分支 亦至多只造成一個管線階段延遲,產生更積極的消弭因分 支指令在管線上帶來的延遲。 當該指令進入執行階段後,BBq電路於執行階段主要 疋根據BBQ預測機制選擇讀出預測指令並更新攔位。 我們將BBQ電路中執行管線階段電路分成一 儲存電路 31 1307040 Μ年7月"日修(征替換頁i BBQ指標調整電路三部份來解=~~ 、一BBQ控制電路、 如第1 2圖所示。 此BBQ儲存雷路,1紗+ "YPE正反哭所电存搁位主要是由兩組tBIT的 %值和目的二1二,存分支指令跳躍記錄所需的 巢狀迴圈層數:大?ψ寡決定該_電路可以處理的 )指_===:指標與寫入(^
BBQ ^ 1: 選擇_攔位中儲存的最後-個有效攔位的讀出。 功能==:路^_虎如附件二所示,主要的 別正在寫人,以及依_階段判
计數器與該_計數器三個計數器。 ^ BBQR 此BBQ指標調整電路,其利用前置分支指 =目^儲存搁位中各個pc值比較其大小關^ 比較㈣麟後,雜果分職出為GQ、n、G2,並胁 师计數Θ的值,㈣用組合賴電路觸出正確 指:值S1,,如附件三所示,當該卿計數器輸:土 F :砍訊说為1時’該寒計數器會依據S0、S1輪入 值設疋為該BBQF計數器更改後的值。 上之電路設計可知,_的電路實際上只是一些 加/έΓΎΜά61*)、問(Latch)、計數器(Counter),以及 -=規私甚小的組合邏輯所喊’其硬體成本遠低於複雜 的刀支目;f不缓衝器(Branch Target Buffer,簡稱Rig) 32 1307040 或類似的分支預測機制,同時BBQ的反應速度亦i比^他· 預測機制快速。 一 匕人以下將繼續就著Stacked BBQ作業模式融入處理器的 指令管線流程中作一番說明’如第丄3圖所示為stacked BBQ的作業流程圖,左側為原本BBQ預測機制的作業流程 ,右側則是Stacked BBQ的控制流程。首先,在指令抓取 阳奴、’ Stacked BBQ利用PC值與堆疊頂端儲存的返回位址 比較判斷副程序是否為返回動作,若返回之副程序為遞迴 行為,則不對BBQ電路做任何改變,反之,則將清除目前 使用的BBQ跳躍紀錄,並返回前一層副程序使用的bbq電 路。指令進入解碼階段後經解碼電路判斷,若指令為呼叫 CALL指令,stacked BBQ將判斷呼叫副程序的行為;若為 遞,呼叫則不切換至下一套BBQ電路,並更新堆疊的紀錄 ;若為一般副程序呼叫則必須判斷目前BBQ電路是否已被 使用,當BBQ電路未被使用則呼叫的副程序與現在程序共 用相同的BBQ電路,反之,則切換BBQ電路至下一套BBQ 、 電路,以供呼叫的副程序獨自使用,並將其呼叫副程序的 、 跳躍紀錄壓入堆疊,等待副程序返回的動作。 在目刖Stacked BBQ架構之BBQ電路模組的設計中有 sfU虎線Enable與Reset訊號的設計,其Enable訊號控制 BBQ電路是否被選擇使用,若BBq電路未被選取使用時, 則必須能保持儲存的跳躍紀錄及設定不被改變;Reset訊 號則疋控制被選擇BBQ電路決定是否清除。首先我們定義 每套BBQ的基本電路(如第1 4 (a)圖所示),並將原本bBq 33 1307040
電路中動態δ周整指標功能的電路抽取出來使每一套bbq電 路共同使用(如第1 4 (b)圖所示),由於動態調整指標的電 路僅需調整目前使用中的BBQ電路,故僅需要一套即可, 如此可減輕每增加一套BBq電路對於硬體成本上的負擔。 整個Stacked BBQ電路架構設計如第丄5圖與附件四 所示,其係為本發明第六實施例。整個BBq電路 架構是以一堆疊式BBQ控制器(stacked BBQ c〇ntr〇Uer )、一組動態調整指標電路與複數套BBQ電路所組成。其深 度(Depth)控制訊號是由堆疊式BBQ控制器送出,^要 的功能為控制該Stacked BBQ電路選擇出一套BBQ電路及 送出該套_電狀_他,且㈣該動態調整指標電 路調整目前所使用的BBQ電路之讀$ (Fr〇nt)指標。堆疊 式BBQ控制器電路則如第丄6圖所示,是由一堆疊(stack) 電路與-控制電路㈣份所組成,在此亦根據此兩部份分 別介紹。
此堆疊電路,其係堆疊複數個登錄段(Entry),如第 17圖所示各登錄段均具有分別儲存呼叫副程序的目的位 址(BL-Targetaddress)、副程序的返回位址(BL仙rn address)、副程序返回後回復_電路的編號(
DePth-retUrn )與是否為遞迴行為的副程序( Recursive-bit)等四個攔位。 此控制電路,其主要的功能為判斷副程序的呼叫/返 並控制-腦電路與-POP電路的動作。順電路的 作為指令經解碼判斷為呼叫副程式指令B L指令後,如第 34 1307040 _’_**~〜一 一一“1.·———....... 旧修(¾正替換頁j 8圖所示為㈣P U S Η電路的電路’其讀 存的目的位址與此呼叫副程式指令BL之呼叫副程序的目 的位址比較後是否為遞迴形式⑽―仏以触―τ織 LR=StackH成立,則設定堆疊欄位儲存的遞迴行為 邏輯值(R—-bit)為!;反之,設定為◦,並將啤 叫副程序的呼叫im幻旨令BL壓人堆#,如附件五所示。 如第1 9圖所示為控制此堆疊P0P電路動作的電路,當指 令在指令抓取階段,經比較PC值位址與LR值相等時= 時會發出訊號控制堆疊作P0P的動作,若p〇p的為遞迴行 為的呼叫副程式指令BL時,BBQ電路不做任何改變,反之 則清除目前使用的BBQ電路,並返回上一層副程序所使用 的BBQ電路,如附件六所示。 由此可知,當一處理器融入Stacked BBQ預測機制之 後,雖然需要複製多套的BBQ硬體供stacked BBQ使用; 但由於單一套BBQ電路成本低廉,整體的電路成本與複雜 度並未大幅增加’在堆疊式BBQ控制器中的電路也相當簡 單’僅以堆疊電路與簡單的組合邏輯電路構成,符合BBQ 預測機制低成本、反應快速的設計精神。 最後’為了驗證BBQ預測機制能以極低的硬體成本有 政解決控制危障造成之效能損失’並模擬評估BBQ針對迴 向分支指令其預測的正確性,因此我們利用Mibench部份 代表程式作為標準效能測試程式’並以S imp 1 esca 1 ar模擬 程式作為模擬評估的測試平台,最後將獲得的模擬數據整 理並分析’以證明BBQ預測機制的價值。 35 1307040 j?,物两确靖 在、Slmplescalar架構設定上首先修改bpred.c加入 BB^預顺制同時亦建人—具有128-entry的BTB架構供 t 較,並修改Sim—bpred、Sim-outorder模組中其 模擬f數的料如附件七所示。為確保觀評估的正確性 與可仏度’在模擬的雜巾仙並未修改或是 抽=㈣hmark程式諸做模擬評估,且在模擬程式的參 ,又疋上不限制Benchmark指令執行之數目,因此在動態 才"執行數目相當可觀其模擬的結果亦較能以比較客 觀的角度評估硬體架構之效能。 如第2 0圖所示,在程式全部執行指令數中各類指令 =的比=分別為:分支指令平均為9.15%、記憶體存/取 曰々平均為47.80%、資料處理指令平均為4115%、副程序 呼4和令平均為1.9Gp此模擬的數據也與㈣如池以往 所做過的模擬分析數據近似,足以驗證對於我們此項模擬 的ΓΡ X念从。 如第2圖所示,我們以sim_bpred模組模擬 測機制對迴向分支指令之預測命中率,由模擬後的數據音 現其麵預測命中率均有不錯的預測正確性,除FFT: Qsort、Rijndael這三個預測命中率低於8〇 ’而Qsort與FFT其預測命中率最低,分 机腿’因此我們針㈣㈣與m討論其命中率較^ 因。我們以QS〇rt為例說日月,在觀察此Benchmarks程·^ 構後’發,圈包含有呼叫副程序指令二Ϊ: 程序指令H的副程序具有破壞則預測機制行為發逢 36 Ϊ307040 述呼叫副_令二:程“成 , 且Qs〇rt具有遞迴程式的結構其不 =叫本身的副程序因此其損失更加嚴重,請送出預 ^比W佔所有迴向分支指令中的μ·㈣。另外一個 Si Μ。:程式中迴向條件分支指令當條件成立而發生 .· 2的比例僅佔所有迴向分支的Μ%,故常造成圏送 ' A '則位址但因為本身條件的不成立而造成預測失敗,使 :預測命中率僅剩45._ ;但除了上述三個Be—ks 較不理想的"卩中率外’其餘都有理想的命中率並以 2 Tiff2bw命巾率最高,相㈣以上,若以程式應 分類上區隔BBQ表現的效能,則BBQ在μ—、G。靡⑵ 兩類的應用上表現最佳分別平均為94. 5i 6%、9Ο.棚,其 平均:p中率則達82.215°/。’因此卿預測機制已能有效的 預測迴向为支指令而減少其造成管線的控制危障以增進處 理器效能。 針對BTB與BBQ兩種不同分支預測效能的比較(如第2 2圖所不)’在BTB的設定上我們以XScale的βΤΒ架構作 為BBQ比較的架構,其在模擬中抽取對迴向分支指令預測 之預測命巾率作比較。由比較可知雜_的效能並未優 於BTB ;因II域特性較紊亂而使ΒΤβ A _表現均不理想 外,其他Benchmark在命中率的表現上BBq均與BTB非常 接近,而Tiff2bw與CRC32中BBQ與BTB的命中率更是幾 乎相等,若以整體平均的命中率而言,BBQ僅以一個簡單 的控制結構,利用四個entry即達到一個具128組entry 37 1307040 ί斧;月/1日修·(烫)正替換頁 的BTB之命中率的90· 35%。其模擬的結果證明BBQ能以簡 單的硬體達到接近於BTB的效能達90%以上,因此證明BBq 設計的理念及其有效性。 +在整體效能改進評估,我們選擇ARM-9為比較基礎, 模擬評估加入BBQ預測機制後於效能上的提昇(如第2 3 • ·圖所不)。雖大部分Benchmark其命中率均在80%以上;但 ·.卻並非所有的Benchmark之效能都大幅的增加,此一現象 以CRC32為例說明,雖然CRC32命中率達99.99%而效 月b提升僅2.87%,原因在於迴向分支指令僅佔全部執行指 々數的2. 22%但Load/Store指令卻佔82. 21%,故BBQ改善 迴向分支在管線上造成的影響後,因其迴向分支佔整個程 式總執行指令數目的比例太小*使效能提升有限;但在
Bitcount、tiff2bW、dijkStra、SHA 其迴向分支指令佔 有全部執行指令數的比例較高,分別為8. G8%、7. 64、6.㈣ 6. 45X,並且BBQ預測機制命中率均有8⑽以上,因此都 能達到ίο%以上效能的提昇,而所有Benchmark平均提升 . 的效能達到8.42%。 ·. f據以上的模擬評估,仙可以發現BBQ的結構不僅 構ie簡單,並月b在大部份的Bench邮中表現出超過9〇% 以上的預測正確率,而由這些模擬數據中,也發現出職 可進-步再度改良的方向,由於Qs〇rtAm的程式行為 刀析我們可以發ί見,只要卿能再有效的分辨程式呼叫/ 回返的動作’即可利用⑹ked _機制避免主副程式間 的預測污染效應,將整體預測正確率再度提升。 38 1307040 因此,本發明具有諸項優點: 其-,本發明之_電路硬體複雜度相當低。本發明 之圖電路硬體係由微處理器硬體架構著眼,並針對執行 頻率最南且行為模式自成-格的迴向分支作解決,因迴向 分支的行為肢,且姉在程式結構巾會H狀包爽的形 式出現,因此,根據這些行為上、結構上的特徵,而特別 設計-個簡單且有效的分支預測機制以解決因此類指令在
管線執行中所㈣的控制危障’此機制即為迴向分支預測 仔列(Backward Branch Predicti〇n .咖,簡稱 _)的 設計。故,_ f路硬體録度相#低,配合—般的管線 執行’將可達到在第-個抓取階段即可完成賴的效果。 其二,本發明十分適合低成本,結構簡單的嵌入式處 理器使用。其係由於BBQ結構既不必儲存太多指令,也不 必以聯結式記憶體(Associative Memory)的技術作大量 資料的快速比對,因而硬體十分簡單,十分適合低成本, 結構簡單的嵌入式處理器使用。 其三,本發明BBQ機制同時可與其它的分支控制危障 技術綜合使用。係在於BBQ同時亦可與其它的分支控制危 障技術綜合使用’例如:可與敘詞執行(predicated Execution)技術合作,由BBQ做迴向分支的預測,並以敘 詞執行的方式去除大部份的前置分支指令;或者,與分支 目標緩衝器(Branch Target Buffer,簡稱BTB)硬體合 作,由BBQ做迴向分支的預測,BTB則專做前置分支指令 的儲存及預測,根據目前的模擬效能驗證,發現此種組合 39 1307040 月㈣修(t)正替換頁 可達到接近雨倍容量大小的BTB所能達成的預須彳ϋ7™一~ 以上所述實施例之揭示係用以說明本發明,並非用以 限制本發明,故舉凡數值之變更或等效元件之置換仍應隸 屬本發明之範轉。 由以上詳細說明,可使熟知本項技藝者明瞭本發明的 確可達成前述目的,實已符合專利法之規定’爰提出專利 申言眚。 【圖式簡單說明】 第1 (a)圖係作為說明本發明之一個簡化的三層巢狀 迴圈程式結構圖 第1 (b)圖則為簡化三層巢狀迴圈程式結構之程式執 行的流程示意圖 第2圖係本發明第一實施例BBQ運作流程示意圖 第3 (a)圖係前置分支影響巢狀迴圈規律行為之第一 種情況之示意圖 第3 (b)圖係前置分支影響巢狀迴圈規律行為之第二 種情況之示意圖 第3 (c)圖係本發明第二實施例,當前置分支影響巢狀 迴圈規律行為並破壞BBQ準確預測時的情況之 示意圖 第4 (a)圖副程序中有迴向分支指令之巢狀迴圈程式 結構圖 第4(b)圖副程序中有迴向分支指令之巢狀迴圈程式 p 1 " χ 之程式執行的流程示意圖 第5圖係本發明第三實施例stacked BBQ之深声為_ 的副程序呼叫示意圖 又,一 第6圖係本發明第三實施例stacked BBQ動作概要示 意圖 μ 第7圖係本發明第四實施例stacked BBQ於呼叫複數 個副程式時的示意圖 第8 (a)圖係在Stacked BBQ預測中發生副程序遞迴 的邏輯示意圖 第8 (b)圖係在Stacked BBQ預測中發生副程序遞迴時 的堆疊紀錄示意圖 第9圖係本發明BBQ融入處理器的指令管線流程中的 作業流程圖 第1 0圖係本發明第五實施例之BBQ電路方塊圖 第1 1圖係本發明第五實施例BBQ電路於抓取、讀 取、執行管線階段的整體電路架構圖 第1 2圖係本發明第五實施例BBQ電路中執行管線階 $又電路架構,其可分成BBQ儲存電路、bbq控 制電路、BBQ指標調整電路三部分 第1 3圖係本發明stacked BBQ融入處理器的指令管 線流程中的作業流程圖 第1 4 (a)圖係本發明第六實施例之stacked BBQ中每 套BBQ的電路方塊圖 第1 4(b)圖係在本發明第六實施例之stacked BBQ中 1307040 η 1 ίΐ \ 每套BBQ電路共用動態指標電路方塊圖 第1 5 (a)圖係本發明第六實施例之整個Stacked BBQ 電路架構圖 第1 5 (b)圖係本發明第六實施例之堆疊式BBQ控制 器電路方塊圖 _ 第1 6圖係本發明第六實施例之堆疊式BBQ控制器電 路不意圖 ’ 第1 7圖係本發明第六實施例之堆疊式BBQ控制器中 φ 堆疊電路之堆疊登錄段攔位示意圖 第1 8圖係本發明第六實施例之堆疊式BBQ控制器中 控制電路之控制PUSH電路的電路方塊圖 第1 9圖係本發明第六實施例之堆疊式BBQ控制器中 控制電路之控制POP電路的電路方塊圖 第2 0圖係驗證本發明BBQ預測機制之程式執行時各 種類指令分佈圖 第2 1圖係sim-bpred模組模擬BBQ預測機制對迴向 分支指令之預測命中率分析圖 - 第2 2圖係針對BTB與BBQ兩種不同分支預測效能的 * 命中率比較圖 第2 3圖係模擬評估加入BBQ預測機制後於效能提昇 分析圖 附件一係本發明第五實施例BBQ電路之資料輸入/輸 出及控制訊號表 42 1307040 _:V"嗔 附件二係本發明第五實施例BBQ控制電路之輸入/輸 出訊號表 附件三係本發明第五實施例BBQ指標調整電路之真值 表 附件四係本發明第六實施例Stacked BBQ電路之輸入/ 輸出訊號表 附件五係本發明第六實施例之堆疊式BBQ控制器中控 制電路之控制PUSH電路之輸入/輸出訊號表與 • 真值表 附件六係本發明第六實施例之堆疊式BBQ控制器中控 制電路之控制POP電路之輸入/輸出訊號表與 真值表 附件七係S imp 1 esca 1 ar模擬參數設定 【主要元件符號說明】 (習用部分) 無 0 (本發明部分)
*; 最内層迴圈Z 嶠
, 最内層迴向分支指令BRz 中層迴圈Y 中層迴向分支指令BRy 最外層迴圈X 最外層迴向分支指令BRx 外層巢狀迴圈W 外層迴向分支指令BRw 43
月//曰修(動正替換頁 1307040 前置分支迴圈F 前置分支指令BRf 前置分支迴圈F 前置分支指令BRf 呼叫副程序之分支指令BLa 副程序迴圈Μ > 副程序迴圈Ν 迴向分支指令BRm 迴向分支指令BRn 主程序迴圈Y 主程序迴圈Z 第一深度副程序1 第二深度副程序2
主程序迴圈X 主程序迴向分支指令BRx 呼叫第一深度副程序分支指令BLa
第一深度副程序迴圈Y 第一深度副程序迴向分支指令BRy 呼叫第二深度副程序分支指令BLb 第一套BBQ1 第二套BBQ2 44
1307040 第三套BBQ3
第一套BBQ1A 下一套BBQ2A 副程序A 副程序B * . ' 指令 BL_A(1) I 指令 BLj(2)
讀出預測迴向分支指令的PC值BPC 讀出預測迴向分支指令的目的位址資料線BTAR 判斷是否送出BBQ預測的目的位址控制線EQU 判斷是否為迴向跳躍分支指令控制訊號線BACK 判斷是否為前置跳躍分支指令控制訊號線Forward 判斷分支指令是否跳躍訊號線C0ND , 讀出該BBQ儲存的巢狀迴圈最外層之目的位址MTAR ·* 讀出該BBQ儲存的巢狀迴圈最外層之PC值MPC 曹
判斷是否符合巢狀迴圈訊號線LT
令叫副程式指令BL 45

Claims (1)

  1. 十、申請專利範圍: 1 · 一種程式迴向跳躍指令之預測機制之方法,該方法係 包括一迴向分支預測彳宁列(Backward Branch prediction Queues,簡稱 BBQ); 當程式開始執行巢狀迴圈時,BBQ會根據最内層 迴向分支指令之目的位址與程式計數器(Program Counter,簡稱PC)的大小,而判斷將該最内層迴向 分支指令的PC值及目的位址存入BBQ,藉以在爾後相 同該最内層迴圈的執行時,BBQ每次皆可藉讀出 (Front)指標找到正確的預測位址; 當程式執行到次層迴向分支指令,因其目的位址 在最内層迴向分支指令的目的位址上方,且該次層迴 向分支指令之PC值大於該最内層迴向分支指令的PC 值,因而BBQ將該次層迴向分支指令亦存入BBQ中; 由於該次層迴向分支指令會跳回重複執行,因而 BBQ的讀出(Front)指標做歸零的動作,即指標值為 零,並指向BBQ儲存的最内層之迴向指令跳躍資訊, 以從該最内層迴圈快速提供該最内層迴向分支指令的 位址,直到其最後一次跳躍預測失敗,此時讀出 (Front)指標即進入下一位,調整為下次預測該層迴 向分支指令; 而當該次層迴向分支指令成功預測該次層迴圈執 行後,BBQ的讀出(Front)指標會自動回到最内層迴 向分支指令的執行,重複著運行著以上的動作; 46 1307040 i-.. 丨一w一从一 %年^月U日修(¾)正替換頁j 很爆题向分支指八 一— 、θ固处能,, 7之層數’ BBQ攔位紀錄著各層 迴圈狀態,此狀態會— 向跳躍(既該次層迴向八直/'、、貝到迴圈執行沒有發生迴 BBQ欄位儲存之,支指令迴向跳躍錯誤)為止; , 法^ 之廻圈狀態’將不斷在各層迴圈之 任一情況中更替變數、 路冼祉顿泛 並持續到該最外層迴圈執行不 迴圈,但㈣Q預測失敗並準備離開此巢狀 ^ , Θ除BBQ攔位内容,以準備爾後新 立曰另外層巢狀迴圈;
    卜r : : t執订遇到另一外層迴向分支指令,而經BBQ =义χί么、件不合,即目的位址(另一外層迴向分支指 々)>目的位址(最外層迴向分支指令川pc值(另-外 層迴向77支指令)< pC值(最外層迴向分支指令),則 /月除BBQ,並將该另一外層迴向分支指令存入bbq中, 而如同回到首先將該最内層迴向分支指令的pc值 及目的位址存入BBQ的狀況。
    2 ·依申请專利範圍第1項所述之程式迴向跳躍指令之預 測機制之方法’其中’當一前置分支指令於該巢狀迴 圈中’而該前置分支指令之目的位址也位於該巢狀迴 圈中’且該前置分支指令的PC值與目的位址跳越過該 巢狀迴圈之最内層迴圈的最内層迴向分支指令時,BBQ 依該前置分支指令跳躍的目的位址與目前BBQ欄位中 紀錄的跳躍資訊,並利用一比較器比較判斷該前置分 支指令跳躍的目的位址是否大於目前BBQ所預測之PC 值位址’若大於’則BBQ會尋找下一個有效欄位的預 47 1307040 測pc值位址與其目的位址,並再經該比較器判斷,直 到比較判斷結果為不大於狀態’且動態調整讀出 (Front)指標指向尋找到的BBQ有效欄位及送出正確 的預測位址;反之,則BBQ不做任何改變。
    •依申請專利範圍第1項所述之程式迴向跳躍指令之預 測機制之方涞,其中,當該程式包括一主程序及深度 為二的副程序;再者,該主程序具有一層主程序迴圈, 而於該主程序迴圈中更具有一主程序迴向分支指令, 且另有一呼叫第一深度副程序分支指令位於該層主程 序迴圈中;而該第一深度副程序具有一層第一深度副 程序迴圈,而於該第一深度副程序中更具有一第一深 度副程序迴向分支指令,且另有可呼叫該第二深度副 程序之一呼叫第二深度副程序分支指令位於該層主程 序迴圈中; 琢卞貝冽微刺急万活炅1 E括複數套的…,_//v 一堆疊式迴向分支預測佇列(Stacked Backwar
    Branch prediction Queues,簡稱 Stacke(i bBq),γ 供該主程序獨立使用第一套BBQ,該第一深度副程/ 獨=使用第二套BBQ,該第二深度副程序獨立使用^ 二以及—堆疊電路用以儲存連續呼叫/返回0 :22的資訊,且控制各套卿間的切換; 此分支於八』 厅發生時,backed BBQ 又守日令記錄壓入該堆聂^ 隹叠電路中,並控制由目 令哼叫行中啤叫第-S度副程序分支4 弟―深度副轉發生時,Sf d_^ m 48 1307040 千;丨修(纪;£替換!π 使用之第-套_保存原有的攔位不做 該f一深度副程序未返回,而該呼叫第-深度副程; =指令,續呼叫該第二深度副程序,則一樣將該呼 =一深度副程序分支指令塵入該堆叠電路中,並切 換苐一套_至下—套既第三套_,·當該呼叫第二 料副程序分支指令料叫的第二深度_序相 τ貝j將口亥呼叫第二深度副程序分支指令由堆疊電路 ^彈出且城相第二套而纽避免主程序盘 第一深度副程序、第—深度副程序與第二深度副㈣ 彼此之間的相互干擾所造成單一套BBQ預測的正確 性。 4依申印專利範圍第丄項所述之程式迴向跳躍指令之預 f機制之方法’其中’當該程式包括-主程序及複數 副程序時;再者,該主程序係為-巢狀迴圈,另有可 呼/各忒釗転序其中之一者的呼叫副程序分支指令位 於該主程序巢狀迴圈中;而該副程序亦具有可呼叫另 了副程序的呼叫副程序分支指令;各該副程序亦可為 巢狀迴圈; 一該預測機制之方法更可包括複數套的BBQ以形成 一堆疊式迴向分支預測佇列(Stacked Backward Branch prediction Queues,簡稱 stacked BBQ),以 心、"亥主私序獨立使用一套,而各該副程序則分別 獨立使用其所屬的以及―堆疊電路用以儲存連 49 1307040
    弓u日修(¾正替換頁 二I:返回的各該副程序 的資訊,且控制各套BBQ間 於程式執行中 BBQ預蜊機制 開始尚未啤叫副程序的Stacked 該主程式序的使用一套叫在該套_儲存著 序時,此時,由二:支之跳躍紀錄時,當呼叫-副程 被再度使用的跳躍儲存著該副程序返回時將 供該副程序所: 切換該套_至另一套 錄、返回位址及目ί用,並將呼叫該副程序的跳躍紀 堆疊電路的纪所使用該另一套_的編號壓入 序並未使用在進入該副程序後,因該副程 躍纪奸火二 # _儲存該副程序迴向分支的桃 维紀錄,當該副程序 51^ . ± 祧 J程序時,該另—套 Q :處於未被使用的狀態,此時,加咖 Γ该另—副程序的紀錄壓人該堆疊電路中,但不^ 換BBQ成該另一套_,而以同一套_(既該另—套 BBW供該另-副程序使用,以供減少卿使用套數; 田該另田彳耘序返回時,Stacked BBQ會清除目前使 用的另-套BBQ儲存之跳躍紀錄,並將堆疊電路頂端 的紀錄彈出,且根據堆疊電路紀錄的該副程序所使用 之BBQ編號作為切換到對應的BBQ,若未再呼叫另— 副程序,則直到該副程序返回後,Stacked BBQ依同 樣動作將BBQ切換回該套BBQ。 •一種程式迴向跳躍指令之預測機制之電路,其係為— 迴向分支預測仔列(Backward Branch prediction 50 1307040 V y ι(、 Queues,簡稱BBQ)電路,包括有一迴向分支預測佇 列(Backward Branch prediction Queues,簡稱 BBQ) 預測機制’及以ARM處理器(Advanced RI SC Mach i ne, 簡稱ARM)之多階管線作為基本架構,並配合該BBq 預測機制依序於抓取(Fetch,簡稱IF )、解碼(Dec〇de, 簡稱ID)、執行(Execution,簡稱IE)三個管線階段 分別設置一抓取管線階段電路、一解碼管線階段電 路、一執行管線階段電路;並於該電路中均使用 32BIT (32條訊號線)的匯流排作資料或控制訊號的 傳輸; 當一指令進入抓取階段時,該抓取管線階段電路 利用- NPC多工器選擇位址並寫入—下—程式計數器 (Next Program Counter,簡稱 NPC),以作為下一個 抓取階段抓取指令的位址;該Npc多工器接受一邏輯 運算單元(ALU)、一記憶體存取、pc累加值與一條新 增之讀出預測迴向分支指令的目的位址資料線的輸 入,以供該BBQ電路提供預測執行時下一個抓取階 段,即可產生預測該指令的位址;該抓取管線階段電 路另有一比較電路用以判斷目前抓取指令的pc值與 »亥BBQ電路預測和令之pc值是否相同,並利用 的條判斷是否送出BBQ預測的目的位址之控制線輸 出比較結果至該NPC多工器,若比較後兩者pc值為相 等,此時會控制該NPC多工器送出一讀出預測迴向分 支指令的目的位址並寫回該下—程式計數器(Npc); 51
    1307040 當該指令進入解碼階段後,該解碼管線階段電路 將抓取指令之[27:23]BIT,判斷指令是否為分支指 令’並分辨該分支指令的種類,其為前置跳躍指令或 迴向跳躍指令’且利用的一條判斷是否為迴向 跳躍分支指令控制訊號線與卜^了的一條判斷是否為 前置跳躍分支指令控制訊號線輸出訊號至該執行管線 階段之BBQ電路使用;並取[31:28]ΒΙΤ條件攔位與 NZCV旗標值判定該指令條件是否成立,且將判斷結果 利用1-BIT的一條判斷分支指令是否跳躍訊號線輸出 至下一階段’既該執行管線階段之BBQ電路; 其中,該解碼管線階段電路更包括一快速加法電 路,以提早一個管線階段可取得分支指令的目的位 址,之後,即可提早在解碼階段就判斷該BBq電路所 儲存的迴向分支跳躍紀錄與新的迴向分支指令是否構 ,巢狀迴圈,或者,是否造成破壞BBQ預測機制的錯 誤;該解碼管線階段電路利用一比較器以判斷讀出該 BBQ儲存的巢狀迴圈最外層之目的位址、讀出該bbq 儲存的巢狀迴圈最外層之PC值與新發生的分支指令 之目的位址及PC值作比較,該比較器判斷的結果係利 用1-BIT的一條判斷是否符合巢狀迴圈訊號線輸出至 下—階段之BBQ電路作辨別; 當該指令進入執行階段後,該執行管線階段電路 根據BBQ預測機制選擇讀出預測指令並更新BBQ攔位。 依申請專利範圍第5項所述之程式迴向跳躍指令之預 52 /則機制之電路,
    其中’該執行管線階段電路更包括: BBQ儲存電路,其儲存攔位主要是由兩組 犯〜ΒΠ的D_TYPE正反器所組成,分別儲存分支指令 躍°己錄所需的pc值和目的位址,欄位的多募決定該 BBQ電路可以處理的巢狀迴圈層數之大小;讀出 (Fyont)指標與寫入(Rear)指標分別由一 bbqf計 ,器與一 BBQR計數器二組計數器控制選擇_攔位之 項出與寫人’並使用—個_M計數料擇_棚位中 儲存的最後一個有效欄位的讀出; BBQ控制電路,其控制bbq攔位的讀出與寫入, 以及依據解碼階段判別正在抓取執行的指令,'而、去控 制該BBQF計數器、該卿計數器與該_計數: 個計數器; — 一 BBQ指標調整電路,其利用前置分支指令之目 的位址與目前BBq儲存攔位中各個pc值比較其大小關 係’經三比較器作判斷後,將結果分別輸出、 C2,並與該_計數器的值,而利用組合邏輯電 斷出正確的讀出指標值SQ,當該BBQF計數哭輪 入一卜Change訊號為1時,該BBQF計數器會依據 S1輸入值設定為該诎qF計數器更改後的值。 7 ·依中請專職ϋ第5項所述之程式迴向跳躍指令 測機制之電路,其中,該預測機制電路更包括一堆最 式(Stacked) BBQ控制器、—動態調整指標電路, 複數套BBQ電路,而形成一堆叠式迴向分支__ 1307040 力年?月/丨曰修動正#換頁I 8 (Stacked Backward Branch prediction Queues 簡稱Stacked BBQ)電路;其中,該堆疊式BBQ控制 器會送出深度(Depth)控制訊號,而控制該stacked BBQ電路選擇出一套BBQ電路及送出該套bbq電路之 預測位址,且控制該動態調整指標電路調整目前所使 用的BBQ電路之讀出(Front)指標。 .依申請專利範圍第7項所述之程式迴向跳躍指令之預 籲 測T制之電路,其中,該堆疊式BBQ控制器更包括一 堆疊電路與一控制電路。 9 .料料利_第8韻敎程歧向卿指令之預 之電路其中’该堆疊電路係堆疊複數個登錄 二:广,各該登錄段均具有分別儲存呼叫副程序 BB0雷紐、副程序的返回位址、副程序返回後回復 位電路的編號與是否為遞迴行為的副程序等四個攔 預、專利*圍第8項所述之程式迴向跳躍指令之 預測機制之電路,其中, 呼叫/ 、 ^亥控制電路係判斷副程序的 吁V返回,並控制一 Ρυ 11 ·依中請專·η 電路的動作。 之預測員所述之程式迴向跳躍指令 卜解制斷為一呼叫 =: 電路會與目前堆最了頁㈣— 制_的 〜lStack—τ継LR=Stack—RA),若成立,則設定 54 1307040 巧许7月//日修(更)正替換頁 堆疊欄位儲存的遞迴行為邏輯值為1,反之,設定為 〇,並將呼叫副程序的該呼叫副程式指令壓入堆疊; 當該指令在指令抓取階段時,經比較PC值位址與 LR值相等時,此時,會發出訊號控制堆疊作POP的動 作,若POP之遞迴行為為呼叫副程式指令時,BBQ電 路不做任何改變,反之,則清除目前使用的BBQ電路, 並返回上一層副程序所使用的BBQ電路。
    55 1307040 七、指定代表圖: (一) 本案指定代表圖為:第(2 )圖。 (二) 本代表圖之元件符號簡單說明: 最内層迴圈Z 最内層迴向分支指令BRz 中層迴圈Y 中層迴向分支指令BRy 最外層迴圈X 最外層迴向分支指令BRx 八、本案若有化學式時,請揭示最能顯示發明特徵的化學式:
TW095112523A 2006-04-07 2006-04-07 Prediction mechanism of a program backward jump instruction TW200739419A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW095112523A TW200739419A (en) 2006-04-07 2006-04-07 Prediction mechanism of a program backward jump instruction
US11/500,298 US20070239975A1 (en) 2006-04-07 2006-08-08 Programmable backward jump instruction prediction mechanism

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW095112523A TW200739419A (en) 2006-04-07 2006-04-07 Prediction mechanism of a program backward jump instruction

Publications (2)

Publication Number Publication Date
TW200739419A TW200739419A (en) 2007-10-16
TWI307040B true TWI307040B (zh) 2009-03-01

Family

ID=38576945

Family Applications (1)

Application Number Title Priority Date Filing Date
TW095112523A TW200739419A (en) 2006-04-07 2006-04-07 Prediction mechanism of a program backward jump instruction

Country Status (2)

Country Link
US (1) US20070239975A1 (zh)
TW (1) TW200739419A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI498820B (zh) * 2011-12-28 2015-09-01 Intel Corp 具有用於分支錯誤預測之第二跳躍執行單元的處理器

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7984279B2 (en) * 2006-11-03 2011-07-19 Qualcomm Incorporated System and method for using a working global history register
FR2910144A1 (fr) * 2006-12-18 2008-06-20 St Microelectronics Sa Procede et dispositif de detection errones au cours de l'execution d'un programme.
US8438003B2 (en) * 2007-04-12 2013-05-07 Cadence Design Systems, Inc. Methods for improved simulation of integrated circuit designs
US8160981B2 (en) * 2007-09-25 2012-04-17 Saffron Technology, Inc. Event-based anticipation systems, methods and computer program products for associative memories wherein times of future events occurring are predicted
US8612944B2 (en) 2008-04-17 2013-12-17 Qualcomm Incorporated Code evaluation for in-order processing
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
KR101731742B1 (ko) 2010-06-18 2017-04-28 보드 오브 리전츠 더 유니버시티 오브 텍사스 시스템 결합된 분기 타깃 및 프레디킷 예측
US9507600B2 (en) * 2014-01-27 2016-11-29 Texas Instruments Deutschland Gmbh Processor loop buffer
US10402200B2 (en) 2015-06-26 2019-09-03 Samsung Electronics Co., Ltd. High performance zero bubble conditional branch prediction using micro branch target buffer
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US10936316B2 (en) 2015-09-19 2021-03-02 Microsoft Technology Licensing, Llc Dense read encoding for dataflow ISA
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
GB2563582B (en) 2017-06-16 2020-01-01 Imagination Tech Ltd Methods and systems for inter-pipeline data hazard avoidance
CN111240682A (zh) * 2018-11-28 2020-06-05 深圳市中兴微电子技术有限公司 一种指令数据的处理方法及装置、设备、存储介质
WO2020139961A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Distributed system task management using a simulated clock
US11480964B2 (en) 2018-12-28 2022-10-25 Beijing Voyager Technology Co., Ltd. Distributed system execution using a serial timeline
CN110457208B (zh) * 2019-07-16 2023-01-06 百度在线网络技术(北京)有限公司 符号执行的引导方法、装置、设备及计算机可读存储介质
US11809790B2 (en) * 2020-09-22 2023-11-07 Beijing Voyager Technology Co., Ltd. Architecture for distributed system simulation timing alignment
US11740906B2 (en) * 2021-02-25 2023-08-29 Huawei Technologies Co., Ltd. Methods and systems for nested stream prefetching for general purpose central processing units
CN113868899B (zh) * 2021-12-03 2022-03-04 苏州浪潮智能科技有限公司 一种分支指令处理方法、系统、设备及计算机存储介质
CN117667222B (zh) * 2024-01-31 2024-04-30 睿思芯科(深圳)技术有限公司 时序优化的两级分支预测系统、方法及相关设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909573A (en) * 1996-03-28 1999-06-01 Intel Corporation Method of branch prediction using loop counters
US5752014A (en) * 1996-04-29 1998-05-12 International Business Machines Corporation Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction
US7085920B2 (en) * 2000-02-02 2006-08-01 Fujitsu Limited Branch prediction method, arithmetic and logic unit, and information processing apparatus for performing brach prediction at the time of occurrence of a branch instruction

Cited By (1)

* Cited by examiner, † Cited by third party
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
US20070239975A1 (en) 2007-10-11
TW200739419A (en) 2007-10-16

Similar Documents

Publication Publication Date Title
TWI307040B (zh)
US8230144B1 (en) High speed multi-threaded reduced instruction set computer (RISC) processor
EP0871110B1 (en) Branch prediction in computer system
Shimada et al. Evaluation of a prototype data flow processor of the sigma-1 for scientific computations
JP5573134B2 (ja) ベクトル型計算機及びベクトル型計算機の命令制御方法
Guck et al. Modelling, reduction and analysis of Markov automata
TW200525354A (en) Microprocessor and apparatus for performing fast speculative pop operation from a stack memory
CN103534686A (zh) 异构核心的自动内核迁移
CN104699422A (zh) 缓存数据的确定方法及装置
CN104156197A (zh) 微处理器以及微处理器操作方法
Lo et al. Slack-aware opportunistic monitoring for real-time systems
Kim et al. Behemoth: a flash-centric training accelerator for extreme-scale {DNNs}
CN106708749B (zh) 一种数据查找方法
TW202111524A (zh) 經由跳過無分歧的快取線改善分歧預測通量的設備及系統
CN106406820A (zh) 一种网络处理器微引擎的多发射指令并行处理方法及装置
CN104461798B (zh) 一种用于处理器算术逻辑单元指令的随机数验证方法
TWI245220B (en) Processor and method for pre-fetching out-of-order instructions
JP3683968B2 (ja) 情報処理装置
US20220091850A1 (en) Apparatus and method for efficient branch prediction using machine learning
Reineke The semantic foundations and a landscape of cache-persistence analyses
TW200832220A (en) Digital signal processor
CN105094750B (zh) 一种多线程处理器的返回地址预测方法和装置
Ustaoglu et al. SAT-Hard: A learning-based hardware SAT-solver
Andreozzi et al. A MILP approach to DRAM access worst-case analysis
TWI273485B (en) Pipeline microprocessor, apparatus, and method for generating early status flags

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees