專利名稱:用于分支預測的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及一種用于分支預測的方法和系統(tǒng),所述方法和系統(tǒng)特別適合用于執(zhí)行可編程集成電路的連續(xù)程序的處理器中。
背景技術:
分支是被中斷的連續(xù)程序中的點。如果分支是無條件的,那么其結果始終是相同的,即,所述分支始終被采用。然而,當所述分支有條件時,其結果只有當所述條件是已知的時才能夠獲知。換言之,基于測試某些數(shù)據(jù)段,條件分支指令有條件地引起控制轉移。除目標地址的描述之外,這種指令還包含待測試的條件。這種條件通常是數(shù)字的代數(shù)屬性的其中一個較小集合。如果條件符合,那么采用分支。否則,不采用它。
流水線處理器的性能由于執(zhí)行條件分支所要求的時間而嚴重受到限制。當在待測試的數(shù)據(jù)的代數(shù)條件已經(jīng)確定以前取出所述分支時,會出現(xiàn)由流水線計算機中的條件分支引起的這種性能降低。在所述分支指令自身指定待測試數(shù)據(jù)的位置的那種計算機中,這種現(xiàn)象是最不利的。對代數(shù)條件的評估只是在已經(jīng)經(jīng)過流水線的多個階段以后才被執(zhí)行。由于直到取出所述分支指令才可以開始,故而直到取出所述分支之后的多個時鐘周期才可以獲知待測試的條件。由于直到已經(jīng)測試過數(shù)據(jù)之后才可以肯定地確定出待取出的下一指令的位置,所以在多個時鐘周期內無法取出指令。
為了減少這種性能的降低,可以使用分支預測技術。分支預測使用同一分支或者其它分支的歷史來預測當前分支的結果。所述分支因此可以基于這種預測來執(zhí)行,以此試圖避免浪費性能。當然,每當預測的結果不正確時,所述系統(tǒng)必須回到分支點,在不正確地預測的分支點之后取出的所有指令的執(zhí)行效果必須被逆轉,并且所述系統(tǒng)然后必須經(jīng)由正確的分支結果繼續(xù)執(zhí)行。由此,由于不良分支之后取出的所有指令必須被丟棄,所以它們象征所有努力被浪費,并且因此很顯然的是,機器的性能與分支預測的準確性直接相關。
對于用于分支預測而言存在各種常規(guī)的思想。分支預測方案可以是靜態(tài)的或者動態(tài)的。在靜態(tài)方案中,所述分支指令自身包含預測;這通常基于已經(jīng)執(zhí)行了典型數(shù)據(jù)集上的程序的編譯器、由生成程序的編譯器來提供。只有當計算機的指令集已經(jīng)著眼于這一方面而進行設計時,才能夠進行靜態(tài)預測。大部分商業(yè)上成功的指令集不提供允許靜態(tài)分支預測的手段。
動態(tài)分支預測使用與程序執(zhí)行期間由硬件收集的分支有關的信息。所述程序只得“獲知”給定分支指令的過去執(zhí)行模式,因此其動態(tài)預測必須基于這種信息。由于條件分支是十分頻繁的,所以可以為每個趨勢存儲的歷史量不是非常大,從而避免了對非常大的存儲能力的需要。通常,分支預測信息只保存在程序中較小、但是變化的分支子集上。
另一思想被稱為“雙模態(tài)”分支預測,并且涉及使用兩位飽和計數(shù)器作為預測指示符以便表明是否應該采用分支。兩位飽和計數(shù)器利用這樣的假定,即應該成組地采用分支,如此使得應該采用分支還是分支組可以就最后采用分支還是分支組來進行預測。
例如在第WO 98/36350號國際性專利申請、第5,896,529號美國專利、第6,438,656 B1號美國專利以及第5,948,100號美國專利中描述了各種已知的分支預測方法。
由此,概括地說,依照現(xiàn)有技術,分支預測勢必主要基于如下兩個思想的組合——基于其歷史預測分支結果。在該情況下,通常使用表來存儲最后的結果,也就是說,所述分支執(zhí)行2或者4次?;谧铑l繁的結果,做出預測。然而應該很明顯的是,預測可靠程度將改變。例如,如果所述分支結果始終是相同的,那么可靠程度將是100%。然而,如果分支結果每次改變,那么可靠程度將是0%。
——基于先前n個分支的結果來預測分支結果。動作和實現(xiàn)方式與前述的概念相似,只是預測所基于的信息明顯不同。再次,預測的可靠程度將極大地改變。
當分支預測的可靠程度不是很高時,預測很可能失敗。
我們現(xiàn)在已經(jīng)設計出了改進的結構。
發(fā)明內容
依照本發(fā)明,提供了用于預測計算機系統(tǒng)內條件分支的結果的設備,所述設備包括用于識別條件分支出現(xiàn)的裝置,用于獲得自從先前分支以來與系統(tǒng)活動(activity)有關的數(shù)據(jù)的裝置,用于把所述數(shù)據(jù)同與先前系統(tǒng)活動有關的數(shù)據(jù)進行比較的裝置以及用于基于這種比較來預測分支結果的裝置。
此外,依照本發(fā)明,提供了用于預測計算機系統(tǒng)內條件分支的結果的方法,所述方法包括如下步驟識別條件分支的出現(xiàn),獲得自從先前分支以來與系統(tǒng)活動有關的數(shù)據(jù),把所述數(shù)據(jù)同與先前系統(tǒng)活動有關的數(shù)據(jù)進行比較并且基于這種比較來預測分支的結果。
在優(yōu)選的實施例中,與系統(tǒng)活動有關的數(shù)據(jù)包括平均系統(tǒng)活動。優(yōu)選的是,提供活動歷史表,其中存儲有與先前系統(tǒng)活動有關的數(shù)據(jù)以及與這種活動對應的分支結果。由此,在優(yōu)選的實施例中,當遇到條件分支時,在當前和先前分支之間檢索涉及所述系統(tǒng)活動的數(shù)據(jù)(優(yōu)選的是,通過活動監(jiān)控器來檢索),把此數(shù)據(jù)與活動歷史表中包含的數(shù)據(jù)進行比較,并且選擇以下的分支結果,與其相關的活動數(shù)據(jù)最接近于當前所檢索的活動數(shù)據(jù)。然后,優(yōu)選的是,據(jù)此利用最新的活動數(shù)據(jù)和所選的分支結果來更新活動歷史表。
在優(yōu)選的實施例中,所述設備還包括用于使用所述和/或先前分支的結果歷史來預測條件分支的結果的裝置。有益的是,如果使用分支歷史的分支結果預測的準確性的可靠程度相對較低,也許低于預定閾值,那么與系統(tǒng)活動有關的數(shù)據(jù)只用于分支結果預測。
依照現(xiàn)有技術,分支預測考慮了分支歷史,但沒有慮及產(chǎn)生此歷史的系統(tǒng)活動。本發(fā)明提出了使用另一個參數(shù)進行分支預測,即上一次預測的分支和當前分支之間的系統(tǒng)活動、與執(zhí)行了多少計算量相關的活動。
活動監(jiān)控主要是一種對同一系統(tǒng)(或者部分系統(tǒng))的先前系統(tǒng)狀態(tài)和當前系統(tǒng)狀態(tài)之間差異的測量。差異越大,系統(tǒng)活動就越大。存在多個方式來實現(xiàn)活動監(jiān)控器,并且這些對于所屬技術領域的專業(yè)人員而言是顯而易見的。較為簡單的一種方式涉及監(jiān)控電源電流,其也給予系統(tǒng)活動。利用文獻中眾所周知的電路來測量平均電流并且由此監(jiān)控平均活動通常是可能的。稍候比較詳細地描述示例性活動監(jiān)控器。
通過所附的示例性附圖和隨后的描述能夠闡明本發(fā)明的這些以及其它特征。
現(xiàn)在根據(jù)附圖、僅僅通過舉例來描述本發(fā)明的實施例,其中圖1是舉例說明依照本發(fā)明示例性實施例的分支預測方法的示意性流程圖;圖2是舉例說明用于本發(fā)明示例性實施例的活動監(jiān)控器操作的基本原理的示意性電路圖;并且圖3舉例說明了示例性活動監(jiān)控器的一般實施例。
具體實施例方式
參照附圖的圖1,舉例說明了用于圖示依照本發(fā)明示例性實施例的分支預測方法的流程圖。
在步驟100,取出指令,并且就它是否是分支做出確定(在步驟102)。如果它不是分支,那么執(zhí)行指令(步驟104)。如果是分支,那么就它是否是有條件的做出確定(步驟105)。如果沒有,執(zhí)行指令(步驟104),否則在步驟106檢索最后基本塊(即,上一次預測的分支和當前分支之間的代碼塊)的與系統(tǒng)活動有關的數(shù)據(jù)。提供了活動歷史表,其中把與平均系統(tǒng)活動有關的數(shù)據(jù)與各個結果相關聯(lián)地存儲。比較檢索出的活動數(shù)據(jù)(在步驟110),并且通過選擇存儲在活動歷史表中的結果來預測分支結果(步驟108),其具有與已檢索的活動數(shù)據(jù)最類似的活動。然后據(jù)此執(zhí)行所述分支(步驟104),并且更新所述表以便反映最新的系統(tǒng)活動數(shù)據(jù)和所預測的分支結果。然后,取出下一指令并且再次執(zhí)行所述過程。
由此,概括地說,使用系統(tǒng)活動進行分支預測涉及存儲每個分支結果的平均活動;把最后基本塊的活動與這些值進行比較;并且基于哪些已存儲的結果具有最類似的活動來預測分支結果。
在優(yōu)選的實施例中,所述比較步驟涉及只比較已檢索的活動值中某些最高有效位。
參照附圖的圖2,示出了活動監(jiān)控器的電路圖,其可以被用來獲得執(zhí)行如上所述的方法所需的各種活動值。然而,所屬技術領域的專業(yè)人員將理解的是,存在很多本領域眾所周知的不同類型的程序,這些程序的任何一個均可與本發(fā)明結合使用。
所舉例說明的活動監(jiān)控器10包括一系列D型鎖存器12a-12e(有時稱為觸發(fā)器或者時序邏輯)以及兩個組合邏輯塊14、16。
應該注意的是,出于描述活動監(jiān)控器的此示例性實施例的目的,已經(jīng)描述了并且舉例說明了D-型觸發(fā)器。然而,正如本領域技術人員顯而易見的那樣,此類電路的目的還可以通過利用其它的邏輯、順序的或者相反的(諸如J-K或者S-R型觸發(fā)器)來實現(xiàn)。此外,組合邏輯塊14、16意在非窮舉地舉例說明,例如可以是處理邏輯塊和數(shù)據(jù)通路邏輯塊。
在使用過程中,觸發(fā)器12a接收輸入信號I1,并且生成適當?shù)妮敵鲂盘?1,其充當?shù)谝贿壿媺K14的第一輸入信號。觸發(fā)器12b接收輸入信號I2,其是來自第一邏輯塊14的第一輸出信號,并且生成適當?shù)妮敵鲂盘?2,其充當?shù)诙壿媺K16的第一輸入信號。觸發(fā)器12c接收輸入信號I3,其是來自第二邏輯塊16的第一輸出信號,并且生成適當?shù)妮敵鲂盘?3。觸發(fā)器12d接收輸入信號I4,其是來自第一邏輯塊14的第二輸出信號,并且生成適當?shù)妮敵鲂盘?4,其充當?shù)谝贿壿媺K14的第二輸入信號。觸發(fā)器12e接收輸入信號I5,其是來自第二邏輯塊16的第二輸出信號,并且生成適當?shù)妮敵鲂盘?5,其充當?shù)诙壿媺K16的第二輸入信號。每個觸發(fā)器12a-12e還接收時鐘信號CLK,其用于可操作地控制輸入和輸出信號。
如果任一觸發(fā)器12a-12e的數(shù)據(jù)內容沒有改變,那么沒有邏輯狀態(tài)改變(即,沒有系統(tǒng)活動)。然而,如果在一個或多個觸發(fā)器12a-12e并且一個或者兩個邏輯塊14、16或者其各個部分內由于適當?shù)募钇鞒霈F(xiàn)狀態(tài)改變,那么此狀態(tài)改變通過電路10傳送。因此,對于給定時鐘周期來說,系統(tǒng)活動與包括電路10的元件內進行的狀態(tài)改變次數(shù)成比例。因此,獲知給定時鐘周期內改變狀態(tài)的元件數(shù)目可以在給定時鐘周期內提供與系統(tǒng)活動的直接相關。應該注意的是,現(xiàn)代化的數(shù)字集成電路工藝和工具允許響應于輸入端激勵器、使設計者利用許多電路來預先獲知正在發(fā)生什么樣的狀態(tài)改變,并且在哪發(fā)生改變。這種提前的知識對于本發(fā)明的目的明顯有益。
參照附圖的圖3,活動監(jiān)控器20是用于參照附2描述的電路的監(jiān)控活動的基本構成塊。在此特殊的示例中,所述觸發(fā)器或邏輯狀態(tài)12具有相關聯(lián)的兩個輸入端、一個輸出端的活動監(jiān)控器20?;顒颖O(jiān)控器20的第一輸入端與觸發(fā)器12的輸入端D相連,并且活動監(jiān)控器20的第二輸入端與觸發(fā)器12的輸出端Q相連。所述活動監(jiān)控器20生成輸出信號CS,其通過觸發(fā)器12的各個D和Q端子上的輸入和輸出信號I、O的狀態(tài)來確定。
由此,本發(fā)明的實現(xiàn)方式可以與外加用于監(jiān)控系統(tǒng)活動的結構的常規(guī)分支預測差不多相同。本發(fā)明可以單獨使用,但是優(yōu)選的是,可結合常規(guī)的分支預測方案來使用。優(yōu)選的是,本發(fā)明提供的方案往往只有當其它方法的可靠程度非常低時才使用。在分支預測中使用系統(tǒng)活動監(jiān)控可以通過考慮系統(tǒng)/核心活動來改善預測準確性。
應該注意的是,上述實施例是舉例說明而非限制本發(fā)明,并且本領域技術人員在不脫離所附權利要求的范圍的情況下,將能夠設計出許多替代性的實施例,本發(fā)明的范圍由所附權利要求書限定。在權利要求書中,不應該把置于括號內的任何參考標記認為是限制權利要求。詞語“包括”及其詞形變化等等不排除存在沒有在任何權利要求或者說明書中列出的元件或步驟。單個提及的元件不排除涉及多個這種元件,反之亦然。本發(fā)明可以借助于包括多個獨立元件的硬件來實現(xiàn),和借助于適當?shù)目删幊逃嬎銠C來實現(xiàn)。在列舉了多個裝置的設備權利要求中,這些裝置的一些可以通過同一硬件項目來實現(xiàn)。事實是,在相互不同的從屬權利要求中講述的某些措施不表明這些措施的組合無法使用。
權利要求
1.用于預測計算機系統(tǒng)內條件分支的結果的設備,所述設備包括用于識別條件分支出現(xiàn)的裝置,用于獲得自從先前分支以來與系統(tǒng)活動有關的數(shù)據(jù)的裝置(20),用于把所述數(shù)據(jù)同與先前系統(tǒng)活動有關的數(shù)據(jù)進行比較的裝置,以及用于基于這種比較來預測分支結果的裝置。
2.如權利要求1所述的設備,其中與系統(tǒng)活動有關的數(shù)據(jù)包括平均系統(tǒng)活動。
3.如權利要求1或者權利要求2所述的設備,其中提供了活動歷史表,其中存儲了與先前系統(tǒng)活動有關的數(shù)據(jù)以及與這種活動相對應的分支結果。
4.如權利要求3所述的設備,包括當遇到條件分支時、在當前和先前分支之間檢索涉及所述系統(tǒng)活動的數(shù)據(jù)的裝置,以及用于把此數(shù)據(jù)與活動歷史表中包含的數(shù)據(jù)進行比較的裝置,其中用于預測分支結果的所述裝置選擇以下的分支結果,與其相關的活動數(shù)據(jù)最接近于當前所檢索的活動數(shù)據(jù)。
5.如權利要求4所述的設備,其中所述活動歷史表利用最新的活動數(shù)據(jù)和所選的分支結果來更新。
6.如先前任一項權利要求所述的設備,包括用于使用所述和/或先前分支的結果歷史來預測條件分支的結果的裝置。
7.如權利要求7所述的設備,其中如果使用分支歷史的分支結果預測準確性的可靠程度相對較低,那么與系統(tǒng)活動有關的數(shù)據(jù)只用于分支結果預測。
8.一種用于預測計算機系統(tǒng)內條件分支結果的方法,所述方法包括如下步驟識別(105)條件分支的出現(xiàn),獲得(106)自從先前分支以來與系統(tǒng)活動有關的數(shù)據(jù),把所述數(shù)據(jù)和與先前系統(tǒng)活動有關的數(shù)據(jù)進行比較(110),并且基于這種比較來預測(108)分支結果。
全文摘要
一種用于預測計算機系統(tǒng)內條件分支結果的系統(tǒng)和方法,所述方法包括如下步驟識別(105)條件分支的出現(xiàn),獲得(106)自從先前分支以來與系統(tǒng)活動有關的數(shù)據(jù),把所述數(shù)據(jù)和與先前系統(tǒng)活動有關的數(shù)據(jù)進行比較(110),并且基于這種比較來預測(108)分支結果??梢允褂没顒颖O(jiān)控器(圖3-20)來提供與系統(tǒng)活動有關的數(shù)據(jù)。
文檔編號G06F9/38GK1860435SQ200480019523
公開日2006年11月8日 申請日期2004年7月5日 優(yōu)先權日2003年7月9日
發(fā)明者F·佩索拉諾 申請人:皇家飛利浦電子股份有限公司