專利名稱:用于預測分支指令的方法和設備的制作方法
技術領域:
本發明大體上涉及微處理器,且特定來說涉及分支預測微處理器。
技術背景管線微處理器通常使用分支預測來避免在等待確定是否應被采取條件分支指令時 使其指令管線停滯。分支預測機制允許此類微處理器在實際評估其分支條件之前"猜測" 將采取還是不采取條件分支指令。常用的分支預測方法依賴于維持包含許多飽和計數器或提供分支預測信息的其它 跟蹤指示符的分支歷史表。作為一個實例,兩位飽和計數器計數至最大值U,且低至最 小值OO,其中值ll表示強采取,io表示弱采取,Ol表示弱不采取,且oo表示強不采取。可基于運行時直觀推斷,例如跟蹤過去分支行為的微處理器,來動態維持此類計數 器。 ^因為通過分支預測獲得的實際性能增益取決于分支預測精度,所以不同的計數器可 用于不同的指令地址范圍,使得每一計數器的指示符狀態較好地反映較窄指令地址范圍 內分支指令的采取/不采取行為。以此方式改進預測精度可導致使用相對大量的計數器, 因為每一計數器提供針對相對小的指令地址范圍的分支預測符。因此,分支歷史表可能相對大,且將其編入索引可能需要對大量的指令地址位進行解碼以識別所涉及的相對窄 的指令地址范圍。伴隨的延遲限制了通過使用分支目標地址高速緩沖存儲器(或等效地,分支目標指 令高速緩沖存儲器)實現進一步分支預測性能增益的能力。此類分支目標高速緩沖存儲 器保存先前辨識的分支指令的指令地址,例如先前由微處理器獲取、解碼和識別為分支 指令的分支指令,且可通過比較每一新獲取指令的指令地址與分支目標高速緩沖存儲器 內容而在解碼之前檢測分支指令。分支目標高速緩沖存儲器"命中"指示指令地址對應 于先前辨識的分支,而分支目標高速緩沖存儲器"未命中"指示指令并非先前辨識的分 支,意味著微處理器必須等待,直到指令解碼級確定指令是否為分支指令為止。因此,作為分支目標高速緩沖存儲器命中的分支指令可預測為采取或不采取,而不 用等待指令解碼。然而,使用分支歷史表作出此類預測的能力取決于在其用以檢測分支 目標高速緩沖存儲器命中的相同時間量中可用的表信息。通常不能足夠快速地存取較大的分支歷史表以用于預測分支目標高速緩沖存儲器命中。及時預測信息的不可用迫使微處理器采用其它方法。在一個替代方法中,假定總是 采取作為分支目標高速緩沖存儲器命中的分支指令,S卩,"預測"被固定為采取。此類 方法可導致顯著多次的錯誤預測。另一替代方案是通常通過使分支歷史表足夠小從而可 在指令管線的獲取階段較早存取,使得預測信息在指令解碼之前可用,而加速分支歷史 表。然而,以此方式縮減分支歷史表通常減小預測精度,因為相同的預測符用于在較廣 范圍的指令地址內預測分支。發明內容在一個或一個以上實施例中, 一種微處理器使用第一分支歷史表來預測作為分支目 標高速緩沖存儲器命中的分支指令,并使用第二分支歷史表中來預測作為所述分支目標 高速緩沖存儲器未命中的分支指令。第一分支歷史表經配置以具有與分支目標高速緩沖 存儲器的存取速度匹配的存取速度,使得其預測信息在所述微處理器的檢測到分支目標 高速緩沖存儲器命中和未命中的指令管線中較早地可用。因為在管線中直到稍后才需要 其預測信息,所以第二分支歷史表不需要與第一分支歷史表一樣快。此事實允許在配置 第二分支歷史表的大小和精度時具有顯著的靈活性。所述微處理器可包含分支預測電路,所述分支預測電路經配置以基于預測獲取到指 令管線中的分支指令是被采取還是不被采取來引導從指令高速緩沖存儲器的指令獲取 以用于所述微處理器的所述指令管線。所述分支預測電路的一個實施例包括分支目標高速緩沖存儲器,其經配置以存儲針對已知分支指令的分支目標信息;第一分支歷史表, 其經配置以存儲第一分支預測信息;第二分支歷史表,其經配置以存儲第二分支預測信 息;以及分支控制邏輯。所述分支控制邏輯可經配置以根據針對作為分支目標高速緩沖 存儲器命中的分支指令的第一分支預測信息以及根據針對作為分支目標高速緩沖存儲 器未命中的分支指令的第二分支預測信息來預測分支指令是被采取還是不被采取。在一個實施例中,所述第一分支歷史表經配置為具有與所述分支目標高速緩沖存儲 器的存取速度匹配的存取速度,且所述第二分支歷史表經配置為具有與所述指令高速緩 沖存儲器的存取速度匹配的存取速度。更一般來說,第一分支歷史表經配置以使得其分 支預測信息結合檢測到分支目標高速緩沖存儲器命中而(例如)在指令管線的獲取級中 較早可用,而第二分支歷史表經配置以使得其分支預測信息結合辨識的分支指令而(例 如)在指令管線的解碼級中稍后可用。上述微處理器可實施使用第一分支歷史表預測分支目標高速緩沖存儲器命中和使用第二分支歷史表預測分支目標高速緩沖存儲器未命中的方法的一個或一個以上變化。 舉例來說,微處理器可經配置以根據所述第一分支預測信息針對分支目標高速緩沖存儲 器命中作出初始預測,且經配置以根據所述第二分支預測信息針對所述分支目標高速緩 沖存儲器命中作出相應的后續預測。因此,微處理器可經配置以根據所述初始預測引導 指令獲取,且根據所述相應的后續預測有條件地重新引導指令獲取。也就是說,由于第 二分支歷史表可比第一分支歷史表更大(且更精確),所以微處理器可在所述相應的后 續預測與給定的初始預測不一致時重新引導指令獲取。此外,微處理器可經配置以響應于解析針對分支目標高速緩沖存儲器命中和未命中 作出的分支預測而更新所述第二分支預測信息,使得所述第二分支預測信息反映分支目 標高速緩沖存儲器命中和未命中兩者的分支歷史。通過所述方法,微處理器可經配置以 將所述第一分支預測信息更新為所述第二分支預測信息的函數。也就是說,使第二分支 歷史表反映所有執行的分支指令的分支歷史,而無論其是否在分支目標高速緩沖存儲器 中表示。或者,微處理器可經配置以響應于解析針對分支目標高速緩沖存儲器未命中作出的 分支預測而更新所述第二分支預測信息,且經配置以響應于解析針對分支目標高速緩沖 存儲器命中作出的分支預測而更新所述第一分支預測信息。通過此方法,第一分支歷史 表反映在高速緩沖存儲器內表示的那些分支指令的分支歷史,且第二分支歷史表反映在 高速緩沖存儲器中未表示的那些分支指令的分支歷史。
圖1是微處理器的框圖。圖2是可在圖1的微處理器中實施的指令管線的前端電路的框圖。 圖3是用于圖2中說明的前端電路實施例的指令處理的流程圖。
具體實施方式
通過非限制性實例,圖1說明微處理器10,其可包括管線式RISC微處理器。在所 說明的實施例中,微處理器10包括輸入/輸出(I/O)電路12、指令高速緩沖存儲器14、 數據高速緩沖存儲器16,以及指令管線18,其包括前端電路20、執行單元22和完成單 元24。在操作中,前端電路20從可為板上1級(Ll)高速緩沖存儲器的指令高速緩沖存 儲器14獲取指令。根據可包含程序分支或轉移的經界定的計算機程序流獲取指令。微 處理器10使用分支預測來預測將采取還是不采取條件分支,使得在遇到條件分支指令時其通常不中斷其指令獲取操作。獲取的指令經解碼并發出到可根據超標量結構實施的執行單元22。執行單元22執 行發出的指令,且完成單元24使己執行的指令退出。完成單元24可包括回寫機制,其 將執行結果存儲在一個或一個以上目標文件寄存器中。通過非限制性實例,執行單元22 包括整數單元26、加載/存儲單元28和浮點單元30。因此,前端電路20可經配置以向 整數單元26分派整數指令,向加載/存儲單元28分派存儲器存取指令,等等。所屬領域的技術人員將了解,執行單元22內的每一此類子單元本身均可包括許多 連續的管線級,且執行單元22內實施的特定子單元可不同。實際上,所屬領域的技術 人員將了解,在不脫離本文揭示的分支預測方法和設備的情況下,微處理器10的結構 可顯著變化。轉到根據微處理器IO的一個實施例的分支預測的更詳細處理,前端電路20包括許 多管線級,包含連續的獲取級32和34 (圖中還標記為FE1和FE2)、連續的解碼級36 和38 (圖中還標記為DC1和DC2)以及發出/分派級40 (圖中還標記為IS)。這些前端 管線級中的一者或一者以上與分支預測電路42相關聯,分支預測電路42包括分支控制 邏輯44、分支目標高速緩沖存儲器46、第一分支歷史表48 (圖中還標記為BHT1)和 第二分支歷史表50 (圖中還標記為BHT2)。獲取級32可經配置以維持表示將在指令管線18內獲取的下一指令的指令地址的地 址計數器。將保存在獲取級32中的值提供到指令高速緩沖存儲器14,使得指令高速緩 沖存儲器14輸出保存在規定地址的實際程序指令以供解碼級36解碼。保存在獲取級32 中的值通常在每個時鐘循環更新。對于連續獲取,更新所述值包括使其遞增以指向當前 指令序列中的下一程序指令。然而,如果獲取的最后指令是將采取的條件分支指令,那 么連續獲取是不適當的。確切來說,應將指令獲取重新引導到分支指令的目標地址。因此,分支預測電路42使用分支歷史信息來預測將采取還是不采取給定的條件分 支指令。可根據一個或一個以上直觀推測來產生此類分支信息。通過非限制性實例,分 支預測信息可基于監視采取或不采取最后R個分支中的多少分支。可例如通過維持前向 和反向分支的單獨歷史信息和/或通過維持針對總程序指令地址空間的子范圍的分支歷 史預測符,使得每一分支預測符反映相對小的指令地址范圍的采取/不采取行為,來提煉 此類信息。將每一預測符限制于較小范圍的指令地址可提供更精確的預測符,因為每一 預測符所表示的分支的數目減少,且預測更能反映所述較小數目的分支的特定行為。然而,維持較大數目的預測符通常需要較大的分支歷史表,其可能減小可對表進行 存取的速率。較慢的存取速度就在指令管線18中的解碼步驟之前未辨識(且因此未預測)的分支指令方面不成問題,但對于通過分支目標高速緩沖存儲器46早期在指令管 線18中辨識為分支指令的分支指令來說存在問題,所述分支目標高速緩沖存儲器46向 微處理器IO提供在新獲取的指令解碼之前辨識所述指令是否為分支指令的能力。通過非限制性實例,分支目標高速緩沖存儲器46可實施為分支目標地址高速緩沖 存儲器(稱為"BTAC")或實施為分支目標指令高速緩沖存儲器(稱為"BTIC")。在第 一種情況下,分支目標高速緩沖存儲器46存儲先前識別的分支指令的指令地址,并存 儲相應的分支目標地址。在第二種情況下,分支目標高速緩沖存儲器46存儲先前識別 的分支指令的指令地址、那些分支指令的實際目標指令以及目標指令的地址之后的下一 指令地址。然而,如果給定的指令先前被獲取、解碼并識別為條件分支指令,那么其相應指令 地址可存儲在分支目標高速緩沖存儲器46中。因此分支目標高速緩沖存儲器46存儲已 知分支指令的指令地址,且可將每一新獲取的指令的指令地址與保存在分支目標高速緩 沖存儲器46中的地址值進行比較。比較匹配(分支目標高速緩沖存儲器命中)意味著 新獲取的指令是已知的分支指令,而不匹配(分支目標高速緩沖存儲器未命中)意味著 將需要指令解碼來確定新獲取的指令是否為分支指令。由于基于分支目標高速緩沖存儲器命中檢測來識別分支指令的級早于基于指令解 碼來識別分支指令的級,因此用于預測作為分支目標高速緩沖存儲器命中的分支指令的 分支預測信息必須比用于預測作為分支目標高速緩沖存儲器未命中的分支指令的分支 預測信息更快地可用。因此,在微處理器10的至少一個實施例中,其分支預測方法包 括維持分支目標高速緩沖存儲器46以用于識別已知的分支指令,確定微處理器IO的指 令管線18內獲取的分支指令是分支目標高速緩沖存儲器命中還是分支目標高速緩沖存 儲器未命中,以及根據存儲在第一分支歷史表48中的第一分支預測信息來預測作為分 支目標高速緩沖存儲器命中的分支指令是被釆取還是不被采取,和根據存儲在第二分支 歷史表50中的第二分支預測信息來預測作為分支目標高速緩沖存儲器未命中的分支指 令是被采取還是不被采取。所述方法可進一步包括將第一分支歷史表48配置為具有與分支目標高速緩沖存儲 器46的存取速度匹配的存取速度,以及將第二分支歷史表50配置為具有與指令高速緩 沖存儲器14的存取速度匹配的存取速度,指令管線18是從所述高速緩沖存儲器14獲 取指令。通常,指令高速緩沖存儲器14的存取速度可使得在適當的指令時鐘循環將實 際(獲取的)程序指令提供到第一解碼級36。舉例來說,第一分支歷史表48和分支目 標高速緩沖存儲器46可經配置以可在指令管線18的M個循環中存取,且第二分支歷史表50可經配置以可在指令管線18的N個循環中存取,其中M和N是第一數目和第二 數目,且M小于N。一種將第一分支歷史表48配置為快于第二分支歷史表50的方法包括將第一分支歷 史表48配置為存儲比第二分支歷史表50數目少的分支預測符,使得存取第一分支歷史 表48中的分支預測符比存取第二分支歷史表50中的分支預測符花費較少的時間。如先 前所述,存儲在分支歷史表48和50中的個別預測符可包括飽和計數器,例如兩位計數 器,其提供具有指示符形式的分支預測信息,所述指示符具有強采取、弱采取、弱不采 取和強不采取狀態。然而應了解,分支歷史表48和50可能采用不同類型的計數器,或 采用完全不同形式的分支預測符。在上文概述的兩表分支預測方法的又一方面中,微處理器10可經配置以根據第一 分支預測信息針對分支目標高速緩沖存儲器命中作出初始預測,且根據第二分支預測信 息針對分支目標高速緩沖存儲器命中作出相應的后續預測。也就是說,微處理器10可 經配置以基于使用存儲在第一分支歷史表48中的信息作出的初始(早期)分支預測來 控制其針對分支目標高速緩沖存儲器命中的指令獲取,并隨后在使用存儲在第二分支歷史表50中的信息作出的相應后續分支預測與初始預測不一致時超馳此控制。在此情形中,超馳較早預測可包括重新引導指令獲取。舉例來說,如果采取初始預 測,那么分支預測電路42可將指令獲取引導到所指示的分支目標地址,且如果不采取 后續預測,那么分支預測電路可將指令獲取重新引導回到未被采取的分支指令之后的下 一連續地址。例如在第二分支歷史表50較大且預測比較小且較快的第一分支歷史表48 更精確的情況下,使用后續分支預測有條件地重新引導(超馳)較早的分支預測可能是 有利的。通過上述方法,第二分支歷史表50存儲用于分支目標高速緩沖存儲器命中和分支 目標髙速緩沖存儲器未命中兩者的預測信息。同樣,更新第二分支歷史表50的方法包 括響應于解析針對分支目標高速緩沖存儲器命中和未命中作出的分支預測而更新第二 分支預測信息,使得第二分支預測信息反映分支目標高速緩沖存儲器命中和未命中兩者 的分支歷史。也就是說,執行單元22可經配置以向分支預測電路42提供關于實際采取 還是不采取針對分支目標高速緩沖存儲器命中和未命中的個別分支指令的反饋,且所述 反饋可用于更新存儲在第二分支歷史表50中的預測信息。隨后,存儲在第一分支歷史 表48中的預測信息可更新為(經更新的)第二分支預測信息的函數。等效地,可至少 將針對分支目標高速緩沖存儲器命中的反饋提供到分支預測電路42以直接用于更新第 一分支歷史表48。本文教示的兩表分支預測方法的另一實施例包括響應于在指令管線18內獲取指令 地址而起始對第一和第二分支歷史表48和50的存取,以及響應于檢測到指令地址是分 支目標高速緩沖存儲器46中的命中而中止對第二分支歷史表50的存取。因此,微處理 器10結合在指令管線18內獲取新指令而起始對第一和第二分支歷史表48和50的存取。 如果檢測到新獲取的指令為分支目標高速緩沖存儲器命中,那么微處理器10在不必要 時中止對第二分支歷史表50的存取。在此種情況下中止所述存取可節省功率。舉例來說,讀出放大器和/或用于從第二分 支歷史表50輸出分支預測結果的其它輸出電路無需加電。此外,根據上述方法起始對 第二分支歷史表50的存取即使在這些存取中的某一數目的存取被中止的情況下也確保 所需的結果將以及時的方式可用,即,在指令管線18中較早起始對第二分支歷史表50 的存取,使得來自第二分支歷史表50的針對分支目標高速緩沖存儲器未命中的預測結 果稍后在指令管線18中將就緒且可用。此方法允許第一分支歷史表48存取專門用于作為分支目標高速緩沖存儲器命中的 分支指令的預測信息,且允許第二分支歷史表50存儲專門用于作為分支目標高速緩沖 存儲器未命中的分支指令的預測信息。同樣,微處理器10采用的分支預測信息更新的 方法可包括響應于解析針對分支目標高速緩沖存儲器未命中作出的分支預測而更新第 二分支預測信息,以及響應于解析針對分支目標高速緩沖存儲器命中作出的分支預測而 更新第一分支預測信息。換句話說,微處理器IO可使用來自執行單元22的反饋來確定實際采取還是不采取 分支指令。針對作為分支目標高速緩沖存儲器命中的分支指令的反饋可用于更新第一分 支歷史表48中存儲的預測信息,且針對作為分支目標高速緩沖存儲器未命中的分支指 令的反饋可用于更新第二分支歷史表50中存儲的預測信息。以所述方式分離預測信息 至少在分支目標高速緩沖存儲器命中和未命中展現不同的采取/不采取行為的程度上改 進了微處理器IO的預測精度。圖2提供微處理器10的一部分的功能框圖,其中所說明的功能元件可經配置以實 施本文教示的兩表分支預測方法。從說明中可見,指令管線18的獲取級32將指令地址 提供到指令高速緩沖存儲器14,且提供到分支控制邏輯44。指令高速緩沖存儲器14使 用這些地址來獲取相應的指令以輸出到指令管線的解碼級36,同時分支控制邏輯44比 較每一獲取地址與分支目標高速緩沖存儲器46以檢測已知的分支指令,即識別與存儲 在分支目標高速緩沖存儲器46中的指令地址匹配的那些所獲取的指令地址。如果分支目標高速緩沖存儲器46向分支控制邏輯44返回命中指示,那么分支控制邏輯44從第一分支歷史表48獲得預測信息以確定應將分支目標高速緩沖存儲器命中預 測為被釆取還是不被采取。如果預測指示符指示被采取的預測,那么分支控制邏輯44 促使用分支高速緩沖存儲器命中的分支目標地址(在圖中表示為"BTA (BTC命中)") 更新獲取級32的下一獲取地址,以指示針對分支目標高速緩沖存儲器(BTC)命中的 分支目標地址(BTA)。作為分支目標高速緩沖存儲器未命中的指令地址循序地傳播通過獲取級32和34, 且由指令高速緩沖存儲器14提供對應于那些地址的指令以用于解碼級36的解碼。在該 點,辨識在分支目標高速緩沖存儲器46中未命中的經解碼分支指令,且分支控制邏輯 44使用來自第二分支歷史表50的預測信息將所述分支指令預測為被采取或不被采取。 如果預測為被采取,那么分支控制邏輯44向獲取級32提供相應的分支目標地址(在圖 中表示為"BTA (BTC未命中)")以指示針對BTC未命中的BTA。圖3說明針對上述功能性的一個或一個以上實施例的存取循環時序,其中第一分支 歷史表48經配置為具有與分支目標高速緩沖存儲器46的存取速度匹配的存取速度。此 匹配允許微處理器IO在與微處理器IO基于檢測到分支目標高速緩沖存儲器命中而識別 分支指令相同的管線級中獲得分支預測信息。舉例來說,分支目標高速緩沖存儲器46 和第一分支歷史表48兩者可在指令管線18的M個循環(例如M個指令時鐘循環)中 存取。所述配置允許微處理器10在M+l個循環之后向獲取級32提供針對作為分支目 標高速緩沖存儲器命中的分支指令的分支目標地址。此外,第二分支歷史表50可經配置為具有與指令高速緩沖存儲器14的存取速度匹 配,或與對于指令地址獲取與解碼級36對相應指令的后續解碼之間的延遲來說是適當 的任何速度匹配的存取速度。舉例來說,指令高速緩沖存儲器14和第二分支歷史表50 可經配置以在指令管線18的N個循環中存取。所述配置允許微處理器10在N+l個循 環之后向獲取級32提供針對作為分支目標高速緩沖存儲器未命中的分支指令的分支目 標地址。通過非限制性實例,M可為一個時鐘循環,且N可為兩個時鐘循環。因此,微處理 器10使用第一分支歷史表48在兩個指令時鐘循環中獲得針對分支目標高速緩沖存儲器 命中的分支預測,所述第一分支歷史表48與第二分支歷史表50相比在其含有的個別分 支預測符的數目方面可能相對較小。此外,微處理器使用第二分支歷史表50在三個指 令時鐘循環中獲得針對分支目標高速緩沖存儲器命中的分支預測。從上述實例中可見,通過使用"小型"分支歷史表(即,第一分支歷史表48),微 處理器10得到針對作為分支目標高速緩沖存儲器命中檢測到的分支指令的預測和獲取性能優點。而且,這些性能增加并不是以維持任意大且(預測)更精確的主分支歷史表 (即,第二分支歷史表50)為代價,所述主分支歷史表可用于預測不是作為分支目標高 速緩沖存儲器命中的分支指令,和/或用于超馳從小型表作出的初始預測。同樣,所屬領域的技術人員應了解,本文揭示的兩表分支預測可例如在以下方面經 受許多變化微處理器結構、小型與主分支歷史表之間的相對指令循環存取時序差、是 使用小型表專門還是初始預測分支目標高速緩沖存儲器命中、為更新小型和主分支歷史 表而選擇的直觀推斷和方法、存儲在小型和主表中的分支預測信息的特定格式、小型和 主表的相對大小等。更特定來說,所屬領域的技術人員應了解,本發明不受先前論述或 附圖限制。實際上,本發明僅受所附權利要求書及其合法等效物限制。
權利要求
1.一種包括分支預測電路的微處理器,所述分支預測電路經配置以基于預測被獲取到指令管線內的分支指令是被采取還是不被采取來為所述微處理器的所述指令管線引導指令獲取,所述分支預測電路包括分支目標高速緩沖存儲器,其經配置以存儲針對已知分支指令的分支目標信息;第一分支歷史表,其經配置以存儲第一分支預測信息;第二分支歷史表,其經配置以存儲第二分支預測信息;以及分支控制邏輯,其經配置以根據針對作為分支目標高速緩沖存儲器命中的分支指令的所述第一分支預測信息,并根據針對作為分支目標高速緩沖存儲器未命中的分支指令的所述第二分支預測信息來預測分支指令是被采取還是不被采取。
2. —種包括指令管線的微處理器,所述指令管線包含以下者或與其相關聯指令高速緩沖存儲器,其經配置以高速緩沖存儲用于獲取到所述指令管線內的指 令;分支目標高速緩沖存儲器,其經配置以存儲針對己知分支指令的分支目標信息; 第一分支歷史表,其經配置以存儲第一分支預測信息; 第二分支歷史表,其經配置以存儲第二分支預測信息;以及 分支控制邏輯,其經配置以根據針對作為分支目標高速緩沖存儲器命中的分支指 令的所述第一分支預測信息,并根據針對作為分支目標高速緩沖存儲器未命中的分 支指令的所述第二分支預測信息來預測分支指令是被采取還是不被采取。
3. 根據權利要求2所述的微處理器,其中所述第一分支歷史表經配置為具有與所述分 支目標高速緩沖存儲器的存取速度匹配的存取速度,且其中所述第二分支歷史表經 配置為具有與所述指令高速緩沖存儲器的存取速度匹配的存取速度。
4. 根據權利要求2所述的微處理器,其中所述第一分支歷史表和所述分支目標高速緩 沖存儲器經配置以可在所述指令管線的M個循環中存取,且其中所述第二分支歷 史表經配置以可在所述指令管線的N個循環中存取,其中M和N是第一數目和第 二數目,且M小于N。
5. 根據權利要求2所述的微處理器,其中所述第一分支歷史表包括比所述第二分支歷 史表數目少的分支預測符,使得存取所述第一分支歷史表中的分支預測符比存取所 述第二分支歷史表中的分支預測符花費較少的時間。
6. 根據權利要求2所述的微處理器,其中微處理器經配置以根據所述第一分支預測信 息針對分支目標高速緩沖存儲器命中作出初始預測,并根據所述第二分支預測信息 針對所述分支目標高速緩沖存儲器命中作出相應的后續預測。
7. 根據權利要求6所述的微處理器,其中所述微處理器經配置以根據所述初始預測引 導指令獲取,并根據所述相應的后續預測有條件地重新引導指令獲取。
8. 根據權利要求7所述的微處理器,其中所述微處理器經配置以通過針對給定的初始 預測,在所述相應的后續預測與所述給定的初始預測不一致時重新引導指令獲取而 有條件地重新引導指令獲取。
9. 根據權利要求2所述的微處理器,其中所述微處理器經配置以響應于解析針對分支 目標高速緩沖存儲器命中和未命中作出的分支預測而更新所述第二分支預測信息, 使得所述第二分支預測信息反映分支目標高速緩沖存儲器命中和未命中兩者的分 支歷史。
10. 根據權利要求9所述的微處理器,其中所述微處理器經配置以依據所述第二分支預 測信息來更新所述第一分支預測信息。
11. 根據權利要求2所述的微處理器,其中所述微處理器經配置以響應于解析針對分支 目標高速緩沖存儲器未命中作出的分支預測而更新所述第二分支預測信息,以及經 配置以響應于解析針對分支目標高速緩沖存儲器命中作出的分支預測而更新所述 第一分支預測信息。
12. 根據權利要求2所述的微處理器,其中所述微處理器經配置以響應于將指令地址獲 取到所述指令管線內而起始對所述第一和第二分支歷史表的存取,以及進一步經配 置以響應于檢測到所述指令地址是所述分支目標高速緩沖存儲器中的命中而中止 對所述第二分支歷史表的存取,使得針對作為分支目標高速緩沖存儲器命中的分支 指令避免了對所述第二分支歷史表的完全存取。
13. 根據權利要求2所述的微處理器,其中所述分支目標高速緩沖存儲器包括分支目標 地址高速緩沖存儲器或分支目標指令高速緩沖存儲器中的一者。
14. 一種在微處理器中進行分支預測的方法維持識別已知分支指令的分支目標高速緩沖存儲器;確定獲取到所述微處理器的指令管線內的分支指令是分支目標高速緩沖存儲器 命中還是分支目標高速緩沖存儲器未命中;以及根據存儲在第一分支歷史表中的第一分支預測信息來預測作為分支目標高速緩 沖存儲器命中的分支指令是被采取還是不被采取,并根據存儲在第二分支歷史表中的第二分支預測信息來預測作為分支目標高速緩沖存儲器未命中的分支指令是被 采取還是不被采取。
15. 根據權利要求14所述的方法,其進一步包括將所述第一分支歷史表配置為具有與 所述分支目標高速緩沖存儲器的存取速度匹配的存取速度,且將所述第二分支歷史 表配置為具有與獲取到所述指令管線內的指令所來自的指令高速緩沖存儲器的存 取速度匹配的存取速度。
16. 根據權利要求14所述的方法,其進一步包括將所述第一分支歷史表和所述分支目 標高速緩沖存儲器配置為可在所述指令管線的M個循環中存取,且將所述第二分 支歷史表配置為可在所述指令管線的N個循環中存取,其中M和N是第一數目和 第二數目,且M小于N。
17. 根據權利要求14所述的方法,其進一步包括配置所述第一分支歷史表以存儲比所 述第二分支歷史表數目少的分支預測符,使得存取所述第一分支歷史表中的分支預 測符比存取所述第二分支歷史表中的分支預測符花費較少的時間。
18. 根據權利要求14所述的方法,其中根據存儲在第一分支歷史表中的第一分支預測 信息來預測作為分支目標高速緩沖存儲器命中的分支指令是被采取還是不被采取 包括根據所述第一分支預測信息針對分支目標高速緩沖存儲器命中作出初始預 測,并根據所述第二分支預測信息針對所述分支目標高速緩沖存儲器命中作出相應 的后續預測。
19. 根據權利要求18所述的方法,其進一步包括根據所述初始預測引導指令獲取,并 根據所述相應的后續預測有條件地重新引導指令獲取。
20. 根據權利要求19所述的方法,其中根據所述相應的后續預測有條件地重新引導指 令獲取包括針對給定的初始預測,在所述相應的后續預測與所述給定的初始預測 不一致時重新引導指令獲取。
21. 根據權利要求14所述的方法,其進一步包括響應于解析針對分支目標高速緩沖存 儲器命中和未命中作出的分支預測而更新所述第二分支預測信息,使得所述第二分 支預測信息反映分支目標高速緩沖存儲器命中和未命中兩者的分支歷史。
22. 根據權利要求21所述的方法,其進一步包括依據所述第二分支預測信息來更新所 述第一分支預測信息。
23. 根據權利要求14所述的方法,其進一步包括響應于解析針對分支目標高速緩沖存 儲器未命中作出的分支預測而更新所述第二分支預測信息,以及響應于解析針對分 支目標高速緩沖存儲器命中作出的分支預測而更新所述第一分支預測信息。
24. 根據權利要求14所述的方法,其進一步包括響應于將指令地址獲取到所述指令管 線內而起始對所述第一和第二分支歷史表的存取,以及響應于檢測到所述指令地址 是所述分支目標高速緩沖存儲器中的命中而中止對所述第二分支歷史表的存取,使 得針對作為分支目標高速緩沖存儲器命中的分支指令避免了對所述第二分支歷史 表的完全存取。
25. 根據權利要求14所述的方法,其進一步包括將所述分支目標高速緩沖存儲器配置 為分支目標地址高速緩沖存儲器和分支目標指令高速緩沖存儲器中的一者。
全文摘要
一種微處理器包含兩個分支歷史表,且經配置以使用所述分支歷史表中的第一者來預測作為分支目標高速緩沖存儲器中的命中的分支指令,并使用所述分支歷史表中的第二者來預測作為所述分支目標高速緩沖存儲器中的未命中的分支指令。同樣,所述第一分支歷史表經配置以具有與所述分支目標高速緩沖存儲器的存取速度匹配的存取速度,使得其預測信息相對于分支目標高速緩沖存儲器命中檢測是及時可用的,其中所述分支目標高速緩沖存儲器命中檢測可在所述微處理器的指令管線中早期發生。因此所述第二分支歷史表僅需要與例如在所述指令管線的指令解碼級處提供與將分支目標高速緩沖存儲器未命中辨識為分支指令相關聯的及時預測信息所需的速度一樣快。
文檔編號G06F9/42GK101228506SQ200680027102
公開日2008年7月23日 申請日期2006年5月24日 優先權日2005年6月2日
發明者布賴恩·邁克爾·斯坦普爾, 托馬斯·安德魯·薩托里烏斯, 杰弗里·托德·布里奇斯, 羅德尼·韋恩·史密斯, 詹姆斯·諾里斯·迪芬德爾費爾 申請人:高通股份有限公司