專利名稱:分支目標緩存器分配的制作方法
技術領域:
本公開一般地涉及半導體處理器,并且更具體地,涉及具有分支目標緩存器的半 導體處理器。
背景技術:
分支預測是用于避免或減少處理器空閑時間的常見技術。分支預測通常包括使 用分支目標緩存器(BTB),分支目標緩存器用于存儲預期要重新使用的分支信息,以加速 分支指令的執行。BTB條目用于通過將與與分支指令關聯的信息高速緩存在BTB條目內 來加速取回(fetching)位于分支目標目的地的分支目標指令的處理過程。在執行分支指 令時,分支指令的目的地(分支目標指令)被加載到處理器內的指令隊列中。優選地,用 于所預測的分支的條目是在BTB中,從而使得可以快速地獲得分支目標并將其加載到指令 隊列中。對于獲得并加載不在BTB中的分支目標,花費更長的時間,結果可能存在其中中 央處理單元(CPU)空閑的時鐘周期。因此,期望加載BTB以使得每次存在分支時在BTB中 存在命中。這可能很難實現,但是期望具有較少的其中必須從BTB外部獲得分支目標的次 數° 在 J. K. L. Lee 禾口 A. J. Smith 所著的"Branch prediction strategies and branch targetbuffer Design" (Computer, 17 (1), January 1984)中呈現了對分支預測問題及 BTB的替代物的概述。也可以將輔助分支預測器結構與BTB組合以便增強分支性能。由于BTB條目包含 分支目標信息以及可選的預測器,因此它們是大的,并且僅可以提供有限數目的條目。為 了輔助分支性能,可以結合BTB使用一個或更多個另外的分支預測器結構,以預測未確定 的條件分支的方向,并允許投機性的取回和預測的分支路徑的可選的執行。通常使用的一 種這樣的結構是分支歷史表(BHT),其包含小預測器的集合。不存儲分支目標信息,因此, 對于給定的面積,BHT的容量可以大于BTB。在BHT中,對于每一個分支,或者對于分支結 果的全局歷史,存儲分支先前的分支結果的歷史,并搜索該表以獲得分支預測。可以以高 的準確度與適中的成本來構建BHT預測器。注意,利用BHT,執行時間比分支在BTB中命中 的情況的大,但是相對于不使用分支預測器要減小。在S. McFarling所著的"Combining BranchPredictors “ (DEC WRL-TN-36)中可以找到BHT風格的良好的概述以及更加復雜的 結構。除所描述的BTB和BHT結構以外,另一分支加速技術是使用置信預測器。置信 預測器分配置信水平以評估分支預測正確的可能性。可以使用分支預測器置信機制來 基于規定的置信水平修改從分支預測器獲得的預測,以便進一步增加分支預測的有效 性。置信預測器還可以用在混合分支預測方案中作為動態選擇器。在混合分支預測方案 中,實現多個預測器,并對于每一個分支從預測器中的一個進行選擇。該選擇可以是基于 置信預測器的,或者基于嘗試為每一個分支結果探察最佳預測器的置信邏輯的。可以在 E. Jacobsen,E. Rotenberg,禾口 J. E. Smith所著的〃 Assigning Confidence to Conditional BranchPredictions" (MICR0-29)中找到關于置信預測器和關于置信邏輯的另外的信息。
用于增加分支在BTB中的可能性技術一個技術是BTB具有大的存儲容量。增加 BTB的大小增加了 BTB的成本,因此增加了具有該處理器的集成電路的面積。盡管面積增加 可能是小的,但是它可能是顯著的,特別是對于低成本處理器。因此,需要這樣一種技術,其 不要求BTB中的另外的存儲,用于避免或減少其中緩存器加載以分支目標導致其中處理器 空閑的時鐘周期的情況。
通過示例的方式示出本發明,并且本發明不受附圖的限制,在附圖中,相同的附圖 標記表示類似的元件。圖中的元件出于簡化和清楚的目的而示出,并且并不必然按比例繪 制。圖1是根據一實施例的具有分支目標緩存器(BTB)的處理器的框圖;以及圖2是在理解圖1的處理器的中有用的表。
具體實施例方式在一個方面中,處理器具有分支目標緩存器(BTB),其用于存儲預期被預測用于供 處理器使用的分支指令地址。BTB條目包含分支目標信息以及用于相應分支的預測器。在 為在BTB中未中的分支分配BTB中的條目中,當前在BTB中的分支被識別為最可能被取代 的一個,并且可以被稱作取代候選者(!^placement candidate) 0與取代候選者關聯的是 在未來被使用的可能性。處理器最近已執行了的但是不在BTB中的分支(其可以被稱作當 前分支)被考慮用于取代該取代候選者,而不是自動地取代該取代候選者。將取代候選者 的存儲的預測信息與當前分支的預測進行比較,并且基于該比較做出分配的決定。如果當 前分支被認為比取代候選者分支更可能被采用,則執行分配并且當前分支取代該取代候選 者。如果取代候選者分支被認為比當前分支更可能被采用,則處理器不執行分配并且取代 候選者被保持在BTB中。在就哪個更可能被使用進行確定中也可以使用預測的置信。這通 過參考附圖以及下面的說明將最佳地理解。如在此所使用的,術語“總線”用于表示可以用來傳送一個或更多個各種類型的信 息(諸如,數據、地址、控制、或狀態)的多個信號或導體。如此處討論的導體可以參考作為 單個導體、多個導體、單向導體、或雙向導體來示出或描述。然而,不同實施例可以改變導體 的實現方式。例如,可以使用分立的單向導體而不是雙向導體,反之亦然。此外,可以用串 行地或以時分復用方式傳送多個信號的單個導體取代多個導體。同樣地,承載多個信號的 單個導體可以被分開成承載這些信號的子集的多種不同導體。因此對于傳送信號存在許多 選擇。圖1所示的是數據處理系統10,其包括處理器40以及總線22。數據處理系統10 可以另外地包括存儲器和I/O單元,以及多種其它電路(未示出)。處理器40包括耦合到 總線22的處理邏輯12、BTB 14、BTB控制器16、邏輯18、分支歷史表(BHT) 20。處理器40 可以是任何類型的處理器,諸如,例如微處理器、微控制器、數字信號處理器等。在一個實施 例中,處理器40可以稱作處理器核。在另一實施例中,處理器40可以是多處理器數據處理 系統中的許多處理器中的一個。此外,處理器40可以是流水線式的處理器,盡管未如此示 出。處理器40可以包括另外的電路,但是為了清楚理解本發明的操作而并未示出。處理邏輯12具有執行單元。BHT 20具有分支歷史寄存器沈和置信預測器觀。處理邏輯12具有 從執行單元M耦合到BTB控制器16的輸出。BTB 14具有耦合到邏輯18的輸出。BHT 20 具有耦合到邏輯18的第一輸出和從置信預測器觀耦合到邏輯18的第二輸出。邏輯18具 有耦合到BTB控制器16的輸出。在該示例中,BTB可以具有相對小數目的可能的條目,諸 如32個。舉例來說,那些條目中的一個在圖1中被示出為具有兩個部分目標地址30和預 測32。每一個條目還具有分支指令地址(未示出),其被用作用于確定命中的標簽(tag) 信息。分支指令地址被用于通過與BTB 14中每一個條目的存儲的標簽信息進行比較來確 定在BTB 14中是否存在命中。此外,在該條目中可能存在未示出的另外的比特,諸如有效 比特。在該示例中,預測32具有兩個比特以指示以下四種情形之一強不采用、弱不采用、 弱采用、以及強采用。通常對于目標地址識別這四種可能性。該兩比特預測信息先前在現 有技術中已經使用以幫助預測分支是否將被采用或不采用以及相應地指引指令取回。當在 BTB 14中執行的分支指令命中時,匹配的條目將該分支的目標地址(目標地址30)以及基 于預測32的狀態的關于該分支是否將被采用或不采用的預測提供到邏輯18。邏輯18將該 信息提供到處理邏輯12以允許處理邏輯12指引指令取回以及預測的分支路徑的執行。在操作中,處理器40根據處理邏輯12中的指令緩存器執行指令。當分支指令(或 者簡單地,分支)被解碼并開始執行時,這時它成為所述當前分支。在每一分支的執行時, BHT 20基于該分支的結果更新分支歷史,包括該分支選擇的預測器,以及分支歷史寄存器 26。分支歷史寄存器沈存儲最后N個分支的結果。在一個實施例中,分支歷史寄存器沈被 實現為移位寄存器,并且每次執行分支指令時,如果該分支未被采用,則將0的值移位到該 寄存器中,而如果該分支被采用,則將1的值移位到該寄存器中。來自該寄存器的最老的值 被丟棄。因此,分支歷史寄存器沈提供了最后N個執行的分支的采用/不采用的歷史,提供 了分支行為的全局歷史。分支歷史寄存器26的大小在不同的實施例中可以改變。在典型 的實施例中,N范圍可以從0(在這種情況下,沒有實現分支歷史寄存器)到小的最大數值, 諸如16。對于其中當前分支不在BTB 14中的情況,BHT 20提供了兩比特預測器用于當前 分支,其表示下列四種狀態中的一個強不采用、弱不采用、弱采用、以及強采用。BHT 20將 用于當前分支的兩比特預測器提供到邏輯18。在操作中,BHT 20存儲多個預測器,并且從 BHT中選擇用于當前分支的預測器。該選擇可以基于分支歷史沈中包含的當前分支歷史、 基于當前分支的程序計數器值、基于該程序計數器值和分支歷史寄存器26的某種組合、或 者以本領域種已知的各種方式來進行。BTB控制器16在BTB 14中的條目當中識別取代候 選者。BTB 14將用于取代候選者的兩比特預測器提供到邏輯18。然后,邏輯18確定當前 分支是否比取代候選者更可能被使用。如果當前分支更可能被使用,則BTB控制器執行分 配,并用當前分支取代該取代候選者。BTB控制器響應于處理邏輯12而操作,并因此從處 理邏輯12接收關于當前分支的所需信息。如果取代候選者更可能被使用,則這是不分配情 形,并且取代候選者被保持在BTB 14中,且在BTB 14不對當前分支進行分配。圖2中示出了邏輯18決定是否是不分配情形或者是否應當執行分配的基礎的一 個示例。圖2中示出了一表,其示出了對于取代候選者的四種可能的預測強不采用、弱不 采用、弱采用、以及強采用。對于取代候選者的這四種可能性中的每一個,對于當前分支存 在同樣的四種可能性,并且在表中進行了示出。因此,存在所示出的十六種可能的組合,并 且對于每一種組合在表中示出了相應的決定。對于其中取代候選者被預測為強不采用的情況,決定是進行分配而不管當前分支的預測。在這種情況下,對于所述可能性中的三種,當 前分支具有較高的被采用的預測,并且在第四種上持平。由于當前分支比取代候選者更最 近地被采用,因此決定進行分配。對于具有弱不采用預測的取代候選者的情況,決定也是對 于所有四種可能性進行分配。對于該情況的不同決定是合理的可能性。對于其中對于取代 候選者預測是弱不采用而對于當前分支預測是強不采用的情況,該預測對于取代候選者是 稍微更有利的,是一類別不同(one category difference),但是決定仍是進行分配。當前 分支的更最近的執行被認為比稍微的不同更有利。在對于取代候選者分支是弱采用的情 況,除了當前分支是強不采用的情況(這是兩類別不同)以外,決定都是分配。對于當前分 支是弱不采用的一類別不同,決定是進行分配。再次地,對于這種情況,不同的決定將被認 為是合理的。對于取代候選者分支具有強采用的預測的情況,僅對于具有弱不采用和強不 采用預測的當前分支決定是進行分配。如在前述的兩種情況中那樣,在其中存在有利于取 代候選者的一類別不同的情況下,決定是進行分配,但是作出相反的決定也可能是合理的。 本發明構思了作為對圖2中的條目進行分配或不分配的決定結果的替代,特別是對于其中 取代候選者分支通過一類別不同而具有更有利的被采用的結果的情況。所述決定可以由邏 輯18實現,并且在某些實施例中,可以實現多個表(諸如圖2中所示的表),對于所述表中 的特定條目作出不同的分配決定,并且可以由邏輯18使用動態選擇處理來確定在當前分 支在BTB中未中的情況下為當前分支進行分配確定時所依賴的所述多個表中的表。在進行分配決定時的進一步的考慮是考慮BHT 20的置信預測器觀所提供的置信 預測器。利用置信預測器進一步修改預測。在圖2的表的示例中,對于當前分支,預測被認 為是高度可信的。低的置信度可能改變決定。例如,如果對于對當前分支為弱采用并且對 取代候選者為強采用的預測的置信度為低,則更好的決定可能是不分配。在其中置信度非 常低的情況下,可能甚至使對于其中取代候選者和當前分支都被預測為弱采用的情況的決 定從分配切換到不分配。在某些實施例中,可以利用邏輯18來基于置信預測器觀所提供 的置信值改變圖2中所示的表中的一個或更多個條目,或者,可以利用邏輯18來在分配決 定的多個表中的一個或多個表當中進行選擇。注意,盡管置信預測器觀被示出為BHT 20 的一部分,然而,在替代實施例中,置信預測器觀可以作為獨立結構而存在。在另一替代實 施例中,可以使用多個預測器,而不是單個BHT 20,并且對于當前分支,置信預測器觀可以 基于圖2中表條目選擇多個預測器的多個預測中的一個,作為要用于邏輯18所執行的選擇 處理的預測。在又一實施例中,多個預測器中的一個可以具有其自己的取代決定表,并且置 信預測器觀對于要用于當前分支的具體預測器的選擇也可以選擇與該具體的選擇的預測 器相關聯的特定表以供邏輯18在進行分配確定時使用。用于提供預測的歷史方法通常被認為是最準確的,并且添加置信因子在進行決定 時提供了進一步的指引。存在仔細考慮過的提供閾值的其他技術,并且可以提供諸如簡化 和速度等方面的優點。所描述的在分配和不分配之間進行決定時將取代候選者的預測與當 前分支的預測進行比較的方法可以受益于使用通過置信方法增強了的歷史方法。其他的預 測方案也可以是有效的。在BTB的分配中的改進可以仍利用獲得對于當前分支以及對于取 代候選者的預測的另一方法實現。不管所選擇的預測方案如何,將取代候選者的預測和當 前分支的預測進行比較以用于決定是否以用于在BTB中未中的當前分支的新條目取代BTB 中的當前條目,都是進一步的改進。
至此應當理解,已經提供了一種分配分支目標緩存器(BTB)中的多個條目中的條 目的方法。所述方法包括接收要在數據處理器中執行的分支指令。所述方法進一步包括 確定BTB不包括與所述分支指令對應的條目。所述方法進一步包括識別BTB中用于分配 的條目,所識別的BTB中的條目包括目標標識符以及對于先前接收的分支指令的第一預測 值。所述方法進一步包括基于所述第一預測值與第二預測值的比較確定是否將所述分支 指令分配到所識別的BTB中的條目。所述方法可以進一步特征在于所述確定步驟進一步 特征在于,所述第二預測值產生自分支歷史表(BHT)。所述方法可以進一步包括如果與所 述第一預測值相比,所述第二預測值指示更強采用預測,則將所述分支指令分配到所識別 的條目。所述方法可以進一步包括將多個比特移位到分支歷史寄存器中,其中所述多個比 特中的每一比特指示分支指令的結果,并且其中所述多個比特中的一個或多個比特被用在 生成用于對BHT尋址的索引中。所述方法可以進一步包括當作為所述分支指令的結果出 現指令流改變時,更新BHT。所述方法可以進一步特征在于所述第二預測值是基于多個先 前的指令分支的結果的。所述方法可以進一步特征在于所述第二預測值是基于多個先前 的指令分支的結果的。所述方法可以進一步包括基于多個正確的預測,產生預測置信值; 將所述預測置信值與所述第二預測值組合以產生第三預測值;以及利用所述第三預測值確 定是否將所述分支指令分配到所識別的條目。所述方法可以進一步特征在于所述第一預 測值包括兩比特預測值,用于指示下列狀態中的一個強不采用狀態、弱不采用狀態、弱采 用狀態、以及強采用狀態。所述方法可以進一步特征在于所述第二預測值包括兩比特預測 值,用于指示下列狀態中的一個強不采用狀態、弱不采用狀態、弱采用狀態、以及強采用狀 態。還公開了一種在數據處理系統中分配分支目標緩存器(BTB)中的多個條目中的 條目的方法。所述方法包括接收要在所述數據處理系統中執行的多個指令,所述多個指令 包括一個或更多個分支指令。所述方法進一步包括產生分支歷史表BHT,其中BHT是基于 在所述多個指令的指令執行期間指令流改變結果的累積的,其中所述指令流改變結果的累 積用于產生第一預測值。所述方法進一步包括接收要在所述數據處理系統中執行的第一 分支指令。所述方法進一步包括確定BTB不包括與所述第一分支指令對應的條目。所述 方法進一步包括識別BTB中用于分配的條目,所識別的BTB中的條目包括用于第二分支指 令的第二預測值。所述方法進一步包括基于所述第一預測值與所述第二預測值的比較確 定是否將所述第一分支指令分配到所識別的BTB中的條目。所述方法進一步包括如果與 所述第二預測值相比,所述第一預測值指示更強采用預測,則將所述第一分支指令分配到 所識別的條目;以及如果與所述第二預測值相比,所述第一預測值指示更強不采用預測,則 不將該條目分配給所述第二分支指令。所述方法可以進一步包括基于所述數據處理系統 中的多個正確的預測產生預測置信值;將所述預測置信值與所述第一預測值組合以產生第 三預測值;以及,利用所述第三預測值確定是否將所述分支指令分配到所識別的條目。所述 方法可以進一步特征在于所述第一預測值包括兩比特預測值,用于指示下列狀態中的一 個強不采用狀態、弱不采用狀態、弱采用狀態、以及強采用狀態。所述方法可以進一步特征 在于所述第二預測值包括兩比特預測值,用于指示下列狀態中的一個強不采用狀態、弱 不采用狀態、弱采用狀態、以及強采用狀態。所述方法可以進一步包括將多個比特移位到 分支歷史寄存器中,其中所述多個比特中的每一比特指示分支指令的結果,并且其中所述多個比特中的至少一個被用用于產生用于對BHT尋址的索引。還公開了一種數據處理系統。所述數據處理系統包括處理邏輯,用于執行指令。 所述數據處理系統進一步包括分支目標緩存器BTB,其耦合到所述處理邏輯,所述BTB具 有多個條目,所述多個條目中的條目包括與第一分支指令對應的第一預測值。所述數據處 理系統進一步包括BTB控制器,其耦合到所述BTB,用于選擇所述多個條目中要被取代的 條目。所述數據處理系統進一步包括分支歷史表(BHT),其耦合到處理邏輯,用于基于所 述多個指令的執行期間指令流改變結果的累積提供第二預測值,所述第二預測值對應于第 二分支指令。所述數據處理系統進一步包括BTB取代分配邏輯,其耦合到所述BTB以接收 所述第一預測值,并耦合到所述BHT以接收所述第二預測值,所述BTB取代分配邏輯用于執 行所述第一預測值與所述第二預測值的比較,以及用于基于所述比較使所述多個條目中的 所述條目分配給所述第二分支指令。所述數據處理系統可以進一步包括置信預測器,其耦 合到所述BTB取代分配邏輯,所述置信預測器用于基于多個正確的分支預測產生預測置信 值,其中所述預測置信值與所述第二預測值組合以產生第三預測值,并且其中所述第三預 測值被用于確定是否將所述多個條目中的所述條目分配給第二分支指令。所述數據處理系 統可以進一步特征在于所述第一預測值包括兩比特預測值,用于指示下列狀態中的一個 強不采用狀態、弱不采用狀態、弱采用狀態、以及強采用狀態。所述數據處理系統可以進一 步特征在于所述第二預測值包括兩比特預測值,用于指示下列狀態中的一個強不采用 狀態、弱不采用狀態、弱采用狀態、以及強采用狀態。所述數據處理系統可以進一步特征在 于所述比較確定如果與所述第一預測值相比所述第二預測值指示更強采用值,對所述第 二分支指令分配所述多個條目中的所述條目。由于實現本發明的設備大部分由對于本領域技術人員已知的電子部件和電路構 成,因此,并未在比如上面所說明的被認為是必要的程度更大的程度上解釋電路細節,以便 于理解和領會本發明的基本概念并且不使本發明的教導不清楚或被分散。因此,應當理解,此處所描述的架構僅僅是示例性的,實際上,可以實現許多其它 架構來實現相同功能。在一抽象的但仍是清楚的意義上來說,用于實現相同功能的組件的 任何布置被有效地"關聯"以使得實現期望的功能。因此,此處組合來實現特定功能的任 何兩個組件可以被看作彼此"關聯"以使得實現期望的功能,而不管架構或中間部件。同 樣地,如此關聯的任何兩個部件也可以被視為彼此"操作連接"或"操作耦合"以實現期 望的功能。此外,本領域技術人員將認識到,上面描述的操作的功能之間的界限僅是說明性 的。多個操作的功能可以組合到單個操作中,和/或單個操作的功能可以分布在另外的操 作中。此外,替代的實施例可以包括特定的操作的多個實例,并且操作的順序在多種其它實 施例中可以改變。盡管此處參考特定實施例描述了本發明,但是可以進行多種修改和改變而不偏離 如下面的權利要求所提出的本發明的范圍。例如,BTB14被描述為具有32個條目,然而也 可以使用不同的數目。因此,本申請文件和附圖應被認為是說明性的而不是限制性的意思, 并且意圖將所有這樣的修改包括在本發明的范圍內。此處就特定實施例描述的任何益處、 優點、或對問題的解決方案意圖不應被認為是任何或全部權利要求的關鍵的、需要的、或實 質性的特征或要素。
如在此所使用的術語"耦合"意圖不應被限制為直接耦合或機械耦合。此外,如在此所使用的術語"a"或"an"( —)被定義為一個或多于一個。此 外,權利要求中引入性的短語諸如"至少一個"和"一個或更多個"的使用不應當被認為 暗示了通過不定冠詞"a"或"an"( —)而對另一權利要求要素的引入將含這樣引入 的權利要求要素的任何特定權利要求限制到僅包含一個這樣的要素的發明,即使在同一 權利要求包括引入性的短語"一個或更多個"或"至少一個"以及不定冠詞諸如"a" 或"an"( —)時也是如此。對于定冠詞的使用也是如此。除非以另外的方式說明,否則諸如"第一"和"第二"之類的術語被用于任意地 在這樣的術語描述的要素之間進行區分。因此,這些術語并不必然意圖表示這些要素的時 間上的或其它優先級。
權利要求
1.一種分配分支目標緩存器BTB中的多個條目中的條目的方法,所述方法包括接收要在數據處理器中執行的分支指令;確定BTB不包括與所述分支指令對應的條目;識別BTB中用于分配的條目,所識別的BTB中的條目包括目標標識符以及對于先前接 收的分支指令的第一預測值;以及基于所述第一預測值與第二預測值的比較確定是否將所述分支指令分配到所識別的 BTB中的條目。
2.如權利要求1所述的方法,其中所述確定步驟進一步特征在于所述第二預測值產 生自分支歷史表BHT。
3.如權利要求2所述的方法,進一步包括如果與所述第一預測值相比,所述第二預測 值指示更強采用預測,則將所述分支指令分配到所識別的條目。
4.如權利要求2所述的方法,進一步包括將多個比特移位到分支歷史寄存器中,其中 所述多個比特中的每一比特指示分支指令的結果,并且其中所述多個比特中的一個或多個 比特被用在生成用于對BHT尋址的索引中。
5.如權利要求2所述的方法,進一步包括當作為所述分支指令的結果出現指令流改 變時,更新BHT。
6.如權利要求1所述的方法,其中所述第二預測值是基于多個先前的指令分支的結果的。
7.如權利要求1所述的方法,其中將所述分支指令分配到所識別的條目進一步包括 如果所述第二預測值指示所述分支不大可能被采用,則不將所述分支指令分配到所識別的 條目。
8.如權利要求1所述的方法,進一步包括基于多個正確的預測,產生預測置信值;將所述預測置信值與所述第二預測值組合以產生第三預測值;以及利用所述第三預測值確定是否將所述分支指令分配到所識別的條目。
9.如權利要求1所述的方法,其中所述第一預測值包括兩比特預測值,用于指示下列 狀態中的一個強不采用狀態、弱不采用狀態、弱采用狀態、以及強采用狀態。
10.如權利要求1所述的方法,其中所述第二預測值包括兩比特預測值,用于指示下列 狀態中的一個強不采用狀態、弱不采用狀態、弱采用狀態、以及強采用狀態。
11.一種在數據處理系統中分配分支目標緩存器BTB中的多個條目中的條目的方法, 所述方法包括接收要在所述數據處理系統中執行的多個指令,所述多個指令包括一個或更多個分支 指令;產生分支歷史表BHT,其中BHT是基于在所述多個指令的指令執行期間指令流改變結 果的累積的,其中所述指令流改變結果的累積用于產生第一預測值;接收要在所述數據處理系統中執行的第一分支指令;確定BTB不包括與所述第一分支指令對應的條目;識別BTB中用于分配的條目,所識別的BTB中的條目包括用于第二分支指令的第二預 測值;基于所述第一預測值與所述第二預測值的比較確定是否將所述第一分支指令分配到 所識別的BTB中的條目;以及如果與所述第二預測值相比,所述第一預測值指示更強采用預測,則將所述第一分支 指令分配到所識別的條目;以及如果與所述第二預測值相比,所述第一預測值指示更強不 采用預測,則不將該條目分配給所述第二分支指令。
12.如權利要求11所述的方法,進一步包括基于所述數據處理系統中的多個正確的預測產生預測置信值; 將所述預測置信值與所述第一預測值組合以產生第三預測值;以及 利用所述第三預測值確定是否將所述分支指令分配到所識別的條目。
13.如權利要求11所述的方法,其中所述第一預測值包括兩比特預測值,用于指示下 列狀態中的一個強不采用狀態、弱不采用狀態、弱采用狀態、以及強采用狀態。
14.如權利要求11所述的方法,其中所述第二預測值包括兩比特預測值,用于指示下 列狀態中的一個強不采用狀態、弱不采用狀態、弱采用狀態、以及強采用狀態。
15.如權利要求11所述的方法,進一步包括將多個比特移位到分支歷史寄存器中,其 中所述多個比特中的每一比特指示分支指令的結果,并且其中所述多個比特中的至少一個 被用于產生用于對BHT尋址的索引。
16.一種數據處理系統,包括 處理邏輯,用于執行指令;分支目標緩存器BTB,其耦合到所述處理邏輯,所述BTB具有多個條目,所述多個條目 中的條目包括與第一分支指令對應的第一預測值;BTB控制器,其耦合到所述BTB,用于選擇所述多個條目中要被取代的條目; 分支歷史表BHT,其耦合到處理邏輯,用于基于所述多個指令的執行期間指令流改變結 果的累積提供第二預測值,所述第二預測值對應于第二分支指令;以及BTB取代分配邏輯,其耦合到所述BTB以接收所述第一預測值,并耦合到所述BHT以接 收所述第二預測值,所述BTB取代分配邏輯用于執行所述第一預測值與所述第二預測值的 比較,以及用于基于所述比較使所述多個條目中的所述條目分配給所述第二分支指令。
17.如權利要求16所述的數據處理系統,進一步包括置信預測器,其耦合到所述BTB取 代分配邏輯,所述置信預測器用于基于多個正確的分支預測產生預測置信值,其中所述預 測置信值與所述第二預測值組合以產生第三預測值,并且其中所述第三預測值被用于確定 是否將所述多個條目中的所述條目分配給第二分支指令。
18.如權利要求16所述的數據處理系統,其中所述第一預測值包括兩比特預測值,用 于指示下列狀態中的一個強不采用狀態、弱不采用狀態、弱采用狀態、以及強采用狀態。
19.如權利要求16所述的數據處理系統,其中所述第二預測值包括兩比特預測值,用 于指示下列狀態中的一個強不采用狀態、弱不采用狀態、弱采用狀態、以及強采用狀態。
20.如權利要求16所述的數據處理系統,其中當所述比較確定如果與所述第一預測值相比所述第二預測值指示更強采用值,對所述第二分支指令分配所述多個條目中的所述條目。
全文摘要
提供了用于分配分支目標緩存器(BTB)(14)中的條目的數據處理系統(10)和方法。所述方法包括接收要在數據處理器(40)中執行的分支指令;確定BTB不包括與所述分支指令對應的條目;識別BTB中用于分配的條目,所識別的BTB中的條目包括目標標識符(30)以及對于先前接收的分支指令的第一預測值(32);基于所述第一預測值與第二預測值的比較確定是否將所述分支指令分配到所識別的BTB中的條目,其中所述第二預測值產生自分支歷史表(BHT);以及,如果與所述第一預測值相比,所述第二預測值指示更強采用預測,則將所述分支指令分配到所識別的條目。
文檔編號G06F9/38GK102112964SQ200980129456
公開日2011年6月29日 申請日期2009年5月11日 優先權日2008年7月29日
發明者J·W·斯考特, W·C·莫耶 申請人:飛思卡爾半導體公司