专利摘要:
一種態樣的處理器包括前端邏輯以處理程式碼的小包。每個小包具有多個指令。處理器的分支預測器係耦接於前端邏輯。分支預測器係用來預測程式碼之分支指令的方向。處理器包括超前跳躍邏輯,用來使分支預測器跳過在每個具有至少一分支指令的程式碼之小包之間不具有分支指令的程式碼之至少一小包。
公开号:TW201303721A
申请号:TW101112303
申请日:2012-04-06
公开日:2013-01-16
发明作者:Polychronis Xekalakis;Pedro Marcuello;Fernando Latorre
申请人:Intel Corp;
IPC主号:G06F9-00
专利说明:
具有超前跳躍邏輯以跳過缺少分支程式碼部分的分支預測器
本發明之實施例係關於分支預測的領域。本發明之實施例特別係關於一種具有超前跳躍邏輯的分支預測器,以使分支預測器能夠跳過缺少分支的程式碼部分。
處理器所執行的組合碼或機器碼一般都含有分支。分支可代表條件跳躍指令、條件分支指令、或其他類型的分支指令或分支。通常,分支可使執行流程往兩個可能方向的其中一個方向分支。這兩個方向通常稱為「採用分支」和「不採用分支」。「不採用分支」一般通到執行中的程式碼之接著的連續部分,反之「採用分支」一般導致跳躍或分支到程式碼之不同且不連續的部分。在條件分支的情況下,是否採用或不採用分支可取決於與指令相關之條件的結果(例如,一數值是否大於另一數值等等),其為之後於處理器管線之執行階段期間所求之值。
處理器通常具有分支預測器,以在判斷出實際的分支方向之前幫助預測分支的方向。實際上直到在指令管線的執行階段中評估條件後才會知道最後是否將採用或不採用條件分支。然而,例如基於過去的執行歷史,分支預測器可使用預測機制或邏輯來預測分支的方向,以幫助增進處理器效能。若沒有分支預測器,處理器在取得下一組指令進管線之前就必須等待直到實際評估分支為止。分支預測器藉由試著預測是否很有可能採用或不採用分支來幫助避免浪費時間。所預測的分支方向可接著用來取得一組指令,如此能在求得分支的實際方向之前,準備執行及/或推測地執行此組指令。在推測地執行指令之情況下,若之後判斷所預測的分支方向是錯誤的,則可丟棄推測地執行結果/狀態,且執行可回到目前已知的實際分支方向的分支。
在某種程度上來說,分支預測器是處理器的重要元件,因為它們幫助提供連續的指令流給處理器管線的執行階段。若沒有分支預測器,處理器每週期可能無法取得足夠之用於執行和後端階段的指令數量以處理,其可能容易限制效能。另外,分支預測器一般應該作出準確的預測以幫助避免代價高的錯誤預測,且應該夠快以停在處理器管線的執行階段之前,使得能在實際執行之前產生並利用所預測的分支方向。
在接下來的說明中,提出許多具體細節。然而,了解沒有這些具體細節也可實作出本發明的實施例。在其他實例中,不會詳細顯示熟知的電路、結構和技術,以免混淆本說明的理解。
第1圖係處理器100之一實施例的方塊圖。處理器包括一分離分支預測器102、一取得佇列108、及一處理器前端110。應了解處理器包括其他邏輯(例如,執行邏輯、回收邏輯、快取,等等),不顯示其以免模糊說明。
分支預測器102可產生由處理器前端110消耗或利用的預測。分支預測器一般處理分開的具有多個指令之程式碼部分(例如,取得區塊、取得小包,等等)。藉由舉例,但不限定,在一些實施例中,取得區塊或取得小包可具有固定長度(例如,它們可能沒有以採用分支開始並結束的可變長度)。有利的是,這可幫助避免需要包括額外的硬體(例如,串流預測器)。在一實施例中,取得小包為32位元且可含有高達四個控制指令,然而並非必要。
在一實施例中,分支預測器可預測是否在取得小包或其他分離的程式碼部分中有分支、是否將採用分支、以及分支的目的位址及/或程式計數器(若預測分支欲被採用的話)。分支預測器可包括可用來預測分支方向的電路、函數單元、或其他邏輯(硬體、軟體、或組合)。處理器前端可使用預測來改變處理器接下來的控制流程。例如,處理器前端可包括一指令取得單元,用來基於預測從特定位置取得一組指令、一用來解碼所取得之指令的解碼器、及/或其他邏輯或單元,用來基於預測以別的方法準備指令來執行。就某種意義來說,分支預測器可經由程式計數器帶領處理器前端及/或處理器前端的指令取得器到與分支相關的不同程式碼段。當實際決定分支方向時,可回傳更新資訊給分支預測器以透過與實際進行之執行一致的資訊來更新分支預測器。
在所述的實施例中,分支預測器102是一種通過中介取得佇列108與處理器前端110分離的分離分支預測器。特別是,分支預測器的輸出耦接於取得佇列的輸入,且取得佇列的輸出耦接於處理器前端的輸入。分支預測器可在取得佇列中儲存包括預測的資訊,且處理器前端可從中介取得佇列接收包括預測的資訊。
以取得佇列分開分支預測器和處理器前端可能是有利的。首先,分開分支預測器和處理器前端可幫助使分支預測器能夠較獨立地運作及/或與處理器及/或隨後的管線階段不同步。這樣可幫助使分支預測器能夠留在執行中的處理器前端之前。取得佇列可緩衝預測以避免分支預測器在執行中的處理器前端之前。取得佇列亦可幫助避免由於指令快取失敗或因為發送佇列已滿而在處理器前端中的延遲。此外,取得佇列可幫助緩和處理器前端的頻繁目標。由於分支預測器與處理器前端分開,所以在特定時間上的分支預測器目前正在處理之程式碼的取得小包或其他部分通常可能會與處理器前端正在處理的部分不同。
如先前提到,分支預測器一般處理分開的具有多個指令之程式碼部分。這些通常稱為取得區塊、取得小包等等。藉由舉例,取得區塊或小包可具有固定長度,例如在一實施例中為32位元,然而並非必要。這些取得區塊或小包含有多個指令。顯然地,一般並非所有的取得區塊或取得小包都具有分支。基於某些類型之具有四個指令的取得小包之工作量的分析似乎指出平均只有一半左右的取得小包具有分支指令。分析亦指出平均每取得小包只有約1至1.5個分支指令,且大部分(例如80%或更多)的取得小包具有不超過2個的分支指令。甚至對其他更多分支密集的工作量,一般預期大部分的取得區塊或小包可能不具有分支。
再參考第1圖,分支預測器具有超前跳躍邏輯104。超前跳躍邏輯包括資訊106以使分支預測器能夠跳過或略過至少一些(大部分或所有)沒有分支的程式碼之取得小包或區塊或其他分開部分。有利的是,藉由跳過或略過至少一些或所有沒有分支的取得小包,分支預測器不必處理每個單一取得小包。反而,分支預測器可能只處理取得小包的子集,例如只處理每個具有一或更多分支指令的取得小包。亦即,分支預測器可能只處理含有至少一個分支指令的取得小包,而不具有分支的取得小包卻可能被分支預測器略過或跳過,分支預測器不必處理它們。經由舉例,略過或跳過這些取得小包可包括略過或跳過對應於這些取得小包之程式計數器位址或值的程式計數器。
對照下,處理器的前端和執行階段一般必須順著程式流程方向及/或順著正確執行路徑流程來遍歷並處理所有指令(來自所有取得小包),即使它們不具有分支。換言之,分支預測器可能只處理處理器之前端及/或執行階段所處理之取得小包的子集。由於分支預測器比處理器前端及/或執行階段處理較少的取得小包和指令,因此可幫助分支預測器能在大部分執行期間在處理器前端及/或執行階段之前運行。來自分支預測器的預測可儲存並累積在取得佇列108中。在某種程度上來說,取得佇列的長度決定分支預測器可距離前端之前多遠運行。以此方法,分支預測器可及時地提供預測給前端,以幫助提高處理器效能。此外,由於分支預測器不必處理所有的取得小包,因此可易於減少分支預測器所耗損的功率量及/或分支預測器所產生的熱量。
第2圖顯示具有含與不含分支指令之取得小包(FP)的程式碼212之實例部分。顯示第一取得小包(FP1)、第二取得小包(FP2)、第三取得小包(FP3)、第四取得小包(FP4)、第五取得小包(FP5)、和第六取得小包(FP6)。以實線矩形顯示一具有分支指令的取得小包之子集。以虛線矩形顯示另一沒有分支指令的取得小包之子集。使用實線來標出正確路徑,而使用虛線來標出不正確路徑。
假設遍歷了正確路徑,分支預測器可能只處理第一取得小包(FP1)和第六取得小包(FP6)。超前跳躍邏輯可使分支預測器能略過或跳過第二小包(FP2)和第四小包(FP4)。對照下,處理器前端(以及管線的執行階段)必須處理所有的第一小包(FP1)、第二小包(FP2)、第四小包(FP4)和第六小包(FP6)。亦即,處理器前端(以及管線的執行階段)必須處理較多的取得小包(例如,此例中約為分支預測器的兩倍)。如先前提到,處理較少取得小包可幫助分支預測器能在處理器前端之前運行。
如將於下面進一步說明,超前跳躍邏輯及/或分支預測器可利用指出具有分支的取得小包之資訊以及指出具有分支的取得小包之間距離的資訊。亦即,超前跳躍邏輯可維持表現程式碼之控制流程圖的資訊,如同被動態地遍歷。對於所示之範例碼,超前跳躍邏輯可識別FP1、FP5和FP6具有分支、識別在FP1之後的下個取得小包係在採用路徑的三個取得小包中(即,FP6)以及在FP1之不採用路徑的兩個取得小包中(即,FP5)。
第3圖係在分支預測期間跳過省略分支的小包之發明方法之實施例的方塊流程圖。可由分支預測器、處理器、及/或電腦系統來執行方法。
在方塊331中,方法包括預測程式碼之一第一小包的一或更多分支指令的一或更多分支方向。在方塊332中,方法亦包括至少跳過程式碼的一第二小包到程式碼的一第三小包,第二小包不具有分支指令。接著,在方塊333中,預測程式碼之第三小包的一或更多分支指令的一或更多分支方向。
第4圖係分離分支預測器402之一實施例的方塊圖。分支預測器包括分支預測單元(BPU)442、取得目標緩衝器(FTB)440、預測佇列(PQ)444、分支資訊表(BIT)448、取得小包程式計數器(PC)446、以及超前跳躍邏輯(JA)404的實施例。分離分支預測器402係耦接於取得佇列408。
當預測佇列444是空的時,可使用目前的取得小包程式計數器446來實質上並列地存取取得目標緩衝器(FTB)440和分支預測單元(BPU)442。存取分支預測單元可提供關於特定分支是否被預測為採用的資訊。對取得目標緩衝器之存取可藉由判斷目前取得小包是否出現在取得目標緩衝器中來判斷是否有有關於目前取得小包的資訊。
假設取得小包程式計數器表現在取得目標緩衝器中,就表示有分支,取得目標緩衝器可輸出或提供與分支相關的分支資訊。例如,在一實施例中,取得目標緩衝器可提供至少一些或全部的:(1)分支位置識別資訊,識別取得小包中的哪些指令具有分支、(2)分支類型識別資訊,識別分支的類型(例如,指出分支是否為直接條件分支、直接非條件分支、或其他分支類型等等)、(3)根據本發明之實施例的超前跳躍資訊,指出跳過或略過一或更多取得小包(例如,指出包含一分支的下一個小包離特定取得小包多遠)、及(4)目的位址識別資訊,指出目前取得小包的目的位址。在另一實施例中,可隨意地提供更少或更多資訊。
繼續進行到第4圖之說明之前,討論取得目標緩衝器的特定實施例和上述資訊類型的特定實例可能會有幫助。第5圖係適當取得目標緩衝器(FTB)540之實例的方塊圖。取得目標緩衝器有時候亦被認為在分支目標緩衝器的技術中。實施例取得目標緩衝器為256組、8路關聯位址快取,其可用來儲存關於取得小包之分支的分支資訊。可替代地使用較大、較小、或不同排列的取得目標緩衝器。
對取得目標緩衝器的每個項目包括一些欄位。欄位包括一標籤欄位541、分支資訊欄位542-545、及一目的位址識別欄位546。如項目之實施例所示,所示之分支資訊欄位包括一分支類型識別欄位(TYPE)542、一分支位置識別欄位(POS)543、一採用方向(TD)超前跳躍位元欄位544、以及一不採用方向(NTD)超前跳躍位元欄位545。所示之欄位排列係為隨意的且非必須的。此外,如稍後所述,欄位的大小為隨意的且非必須的。
標籤欄位541可被用來判斷對特定取得小包程式計數器的資訊是否存在取得目標緩衝器中。可由取得小包程式計數器來探測取得目標緩衝器。標籤命中時,可讀出關於目前取得小包的資訊。在實施例中,標籤欄位具有10位元,然而此並非必須的。
分支位置識別欄位(POS)543識別取得小包中的哪些指令具有分支。根據一實施例,可為在取得小包中的每個可能指令擁有一個分支位置識別位元(在此亦簡稱為位置位元)。例如,在取得小包具有最多包括四個指令的固定長度之實施例中,可有四個對應的每指令位置位元,然而本發明之範疇並不以此為限。所示之位置位元具有4位元。每個位置位元可具有指出對應指令為分支指令的第一位元值(例如1),或指出對應指令不為分支指令的第二位元值(例如0)。替代地,若在取得小包中有更多或更少指令,則可能多於或少於四個位置位元。
分支類型識別欄位(TYPE)542對屬於相關取得小包的每個分支識別它們的分支類型(例如,指出分支是否為直接條件分支、直接非條件分支、或其他分支類型等等)。在所示之實施例中,假設取得目標緩衝器僅係用來管理直接類型分支,因此對每個在可包含分支的取得小包中之每個可能指令,可僅包括一個每指令類型位元。每個每指令類型位元可具有指出或表明對應指令為第一類型分支指令(例如,直接條件分支)的第一位元值(例如1),或指出對應指令為第二類型分支指令(例如,直接非條件分支)的第二位元值(例如0)。替代地,若給定架構中存在更多類型的分支指令,可包括兩個或更多每指令類型位元,以在多於兩分支類型之間作選擇。如先前提到的,在所示之實施例中,取得小包可具有高達四個分支指令,因此類型欄位為4位元欄位,每指令位元符合每個在取得小包中的對應指令。替代地,取得小包可具有更多或更少可能的分支指令。
請注意取得目標緩衝器亦儲存超前跳躍資訊,符合採用方向(TD)超前跳躍位元欄位544以及不採用方向(NTD)超前跳躍位元欄位545的格式。超前跳躍位元欄位可指出或具體指名一或更多不具有分支的取得小包,其會被分支預測器跳過或略過。在特定所示之實施例中,取得小包可具有高達四個可能的分支指令,且每個分支指令可具有採用分支方向(TD)或不採用分支方向(NTD),可設置八個採用方向(TD)位元,且可設置八個不採用方向(NTD)位元。四組兩位元中的每個採用方向(TD)位元可分別對應至取得小包中的四個可能分支指令之每一者。同樣地,四組兩位元中的每個不採用方向(NTD)位元可分別對應至取得小包中的四個可能分支指令之每一者。替代地,若在取得小包中可包括更多或更少的可能分支指令,則可分別提供多於或少於四組。此外,在另一實施例中,可任意地設置如兩個般少的不採用方向(NTD)位元,因為不採用方向路徑意味著取得小包的所有分支必定是不採用的。這樣可減少所儲存之位元的數量,但並非必要且必須的。
兩位元組之各者可具有四個可能數值之其一者以指出從相關取得小包到下一個具有分支之取得小包的距離。根據一個可能的規範,00之兩位元值可表示零略過或跳躍距離(例如,下個連續的取得小包即為待處理的及/或有緊接著/毗連之具有分支的取得小包),01值可表示一個取得小包略過或跳躍距離(例如,待跳過或略過一個中介取得小包),10值可表示兩個取得小包略過或跳躍距離(例如,待跳過或略過兩個緊接著/毗連之中介取得小包),且11值可表示三個取得小包略過或跳躍距離(例如,待跳過或略過三個中介緊接著/毗連之中介取得小包)。替代地,在其他實施例中,可使用更少或更多位元(例如,可使用單一位元、或三或更多位元)以分別指出較小或較大的跳躍距離。此外,如先前所述,在取得小包中可出現少於或多於四個指令,並可相應地設置更少或更多組的每指令超前跳躍位元。
目的位址識別欄位546指出目前取得小包的目的位址。在一態樣中,可隨意地儲存所有的目的位址。替代地,不一定要保持所有的目的位址,因為可直接從分支位址取得其餘的位元。所示之目的欄位是24位元,然而此並非必須的。
取得目標緩衝器亦含有小型虛擬最近最少使用(PLRU)資訊陣列,其保持用於每組主要取得目標緩衝器陣列的PLRU資訊。因為有八路,所以在PLRU陣列中的每項目可具有七個位元。關於取得目標緩衝器的更新,可更新PLRU位元,假使被認為是適當地替換,可商議它們以確定適當的方法來替代。
既然已說明了取得目標緩衝器的特定實施例,以及可儲存在取得目標緩衝器中的資訊類型之特定實例,就回到第4圖的說明。再參考第4圖,一旦分支預測器402判斷已採用分支,就得到程式碼之下個區塊的起始位址(例如,分支目標)。取得目標緩衝器440儲存先前執行之分支的取得或分支目標,於是當採用分支時,分支預測器便根據取得目標緩衝器決定分支目標位址,並提供此分支目標位址給前端,使得前端可從這個位址開始取得指令。如果是非條件分支,下一個取得小包程式計數器可能是非條件分支的目的位址,且亦可刪除分支預測單元的飛行中預測。如果取得目標緩衝器未命中,可刪除分支預測單元的飛行中預測,且可使用下一個連續的取得小包程式計數器。
假設取得小包程式計數器係表現在指出有分支的取得目標緩衝器中,取得目標緩衝器可輸出或提供與分支相關的分支資訊。分支位置識別資訊(例如,POS位元)和分支類型識別資訊(例如,TYPE位元)可從取得目標緩衝器提供至預測佇列。預測佇列亦可接收取得小包程式計數器。
預測佇列可幫助將取得目標緩衝器的輸出轉換成適合分支預測單元的輸出。取得目標緩衝器的輸出是每個取得小包,因此取得目標緩衝器可提供用於每週期之多個分支的輸出資訊(例如,在一實施例中高達四個分支)。另一方面,在所示之實施例中,分支預測單元每週期只處理一個分支。若有位置位元,就可能意味著在取得小包中有多於一個的分支。在一實施例中,預測佇列可包括內部佇列,以在目前取得小包中存在多於一個分支的情形下進行中間緩衝。典型地,在取得小包可具有高達四個分支指令的實施例中,預測佇列可具有三個佇列項目,或有需要的話會更多。
預測佇列可產生一分支程式計數器,用於一或更多指示存在於目前取得小包中的額外分支。這個資訊可接著被用來連續地存取分支預測單元並對目前取得小包產生一或更多額外的預測。分支預測單元可基於程式過去的行為使用一些不同類型的分支預測演算法之任一者來預測分支,而本發明之範疇並不限於任何已知的演算法。若預測採用任何分支,則可停止對目前取得小包的預測。接著可將來自分支預測單元的預測與提供給取得小包中的分支之資訊收集在一起。當從預測佇列移除來自給定取得小包的所有分支時,可提供信號以組合所有用於給定取得小包的資訊。預測佇列的輸出可包括用於取得小包中之每個分支的分支程式計數器,且不管分支是否是條件式的。所累積的資訊可儲存在取得佇列中。如先前提到的,取得佇列可用來傳遞控制流程資訊至處理器前端。
再參考第4圖,分支預測器具有超前跳躍邏輯404。如圖中所示,超前跳躍邏輯404的第一輸入係耦接取得目標緩衝器440的輸出,而超前跳躍邏輯404的第二輸入係耦接分支預測單元442的輸出。超前跳躍邏輯的輸出係耦接取得小包程式計數器446的輸入。
如先前提到的,在本發明之實施例中,超前跳躍邏輯可用來跳過或略過至少一些(大部分)或全部不具有分支的取得小包或區塊。有利的是,藉由跳過或略過至少一些或全部不具有分支的取得小包,分支預測器不必處理每個單一取得小包。反而,分支預測器可僅處理取得小包的子集,例如僅處理各具有一或更多分支指令的取得小包。亦即,分支預測器可僅處理含有至少一分支指令的取得小包。藉由分支預測器可略過或跳過不具有分支指令的取得小包,而分支預測器不必處理它們。藉由舉例,略過或跳過這些取得小包可包括略過或跳過對應於這些取得小包的程式計數器位址或值的程式計數器。
對照下,典型地,處理器的前端和執行階段通常必須順著程式流程方向及/或順著正確執行路徑流程來遍歷並處理所有來自所有取得小包的指令,即使它們不具有分支。換言之,分支預測器可能只處理處理器之前端及/或執行階段所處理之取得小包的子集。由於分支預測器比處理器前端及/或執行階段處理較少的取得小包和所有指令,因此可幫助分支預測器能在大部分執行期間在處理器前端及/或執行階段之前運行。來自分支預測器的預測可儲存並累積在取得佇列中。在某種程度上來說,取得佇列的長度決定分支預測器可距離前端之前多遠運行。以此方法,分支預測器可及時地提供預測給前端,以幫助提高處理器效能。此外,由於分支預測器不必處理所有的取得小包,因此可易於減少分支預測器所耗損的功率量及/或分支預測器所產生的熱量。
如先前提到的,取得目標緩衝器440可儲存超前跳躍位元544、545,其指出跳過或略過一或更多不具有分支的取得小包。超前跳躍位元可儲存在每個取得目標緩衝器項目中。替代地,超前跳躍位元可儲存在除了取得目標緩衝器之外的另一位置,例如在專用緩衝器、暫存器、或分支預測器內部或可存取到的其他位置。在本發明之實施例中,超前跳躍位元可指出離目前取得小包多遠處為下一個包含至少一分支的取得小包,及/或各具有至少一分支的取得小包之間的距離。在本發明之實施例中,可設置超前跳躍位元以指出在取得小包中的複數個可能分支指令之各者之距離與分支方向。
經由舉例,在取得小包可具有高達四個可能分支指令,且每個分支指令可具有採用分支方向(TD)或不採用分支方向(NTD)的特定實施例中,可設置八個採用方向(TD)位元,且可設置八個不採用方向(NTD)位元。四組兩位元中的每個採用方向(TD)位元可分別對應至取得小包中的四個可能分支指令之每一者。同樣地,四組兩位元中的每個不採用方向(NTD)位元可分別對應至取得小包中的四個可能分支指令之每一者。替代地,在另一實施例中,可任意地設置如兩個般少的不採用方向(NTD)位元,因為不採用方向路徑意味著取得小包的所有分支必定是不採用的。
兩位元組之各者可具有四個可能數值之其一者以指出從相關取得小包到下一個具有分支之取得小包的距離。根據一個可能的規範,00之兩位元值可表示零略過或跳躍距離(例如,下個連續的取得小包即為待處理的及/或有緊接著/毗連之具有分支的取得小包),01值可表示一個取得小包略過或跳躍距離(例如,待跳過或略過一個中介取得小包),10值可表示兩個取得小包略過或跳躍距離(例如,待跳過或略過兩個緊接著/毗連之中介取得小包),且11值可表示三個取得小包略過或跳躍距離(例如,待跳過或略過三個中介緊接著/毗連之中介取得小包)。替代地,在其他實施例中,可使用更少或更多位元(例如,單一位元、或三或更多位元)以分別指出較小或較大的跳躍距離。
假使具有分支的取得小包之間的實際距離大於可能數值之有效數目所能表現者,可使用可表現的最大跳躍或略過值。因為不會略過含有分支的取得小包,所以此方法不會犧牲正確性,反而可能易於犧牲小部分的潛在利益。然而,因為架構研究似乎指出絕大多數具有分支的取得小包之間的距離都是相對小的(例如,一般小於跳過三個中介取得小包),損失的利益通常被認為是可接受的小。
可提供從取得目標緩衝器440輸出的超前跳躍位元作為給超前跳躍邏輯404的輸入。在目前取得小包中作出的預測之最後分支的預測亦可從分支預測單元442輸出,並被提供作為給超前跳躍邏輯404的輸入。超前跳躍邏輯可操作來使用超前跳躍位元以判斷下一個對應於具有分支的取得小包之取得小包程式計數器。可使用來自分支預測單元442的預測來判斷是否對分支使用TD或NTD超前跳躍位元。經由舉例,超前跳躍位元所指的略過或跳躍距離可表示一可加至目前取得小包程式計數器的偏移量,以便得到下一個對應於具有分支的取得小包之取得小包程式計數器。經由舉例,關於上述的具體超前跳躍位元,01值可使超前跳躍位元將取得小包程式計數器增量足夠跳過一個循序取得小包的量(例如,在32位元取得小包的情況下,增量取得小包程式計數器64位元組)。
因為在預測階段時通常不可使用超前跳躍位元,由於它們待從取得目標緩衝器讀出,若沿著不採用路徑(在一態樣中可為沿著預測階段的預設路徑),則超前跳躍邏輯可僅將目前取得小包變成大於一個取得小包的距離。因為存取取得目標緩衝器通常是管線式的,等到已知道到下一個具有分支的取得小包之距離的時候,通常就已經開始對下一個連續取得小包存取取得目標緩衝器。就其本身而論,若距離是一個取得小包,則可能不必略過一個取得小包,因為取得小包程式計數器可能已經在前面了。然而,關於直接採用分支或由於分支錯誤預測的重新操縱,可使用對採用和不採用路徑兩者的距離。
在一些實施例中,可在處理器及/或允許自我修改碼之架構中使用分支預測器。自我修改碼可使控制流程圖改變,且超前跳躍邏輯可適應於說明自我修改碼所造成的控制流程圖改變。自我修改碼可使兩分支之間的距離大於或小於初始值。在距離變得比原本更大的情形中,改變將不成問題並在第一次執行具有分支的兩個取得小包之前會被糾正。將會更新超前跳躍位元,且將得到新的距離。在距離變得比原本更小的情形中,這可能往往發生錯誤取得,因為可能跳過取得小包。一旦偵測到錯誤取得,便可更新取得目標緩衝器以符合改變(例如,可改變超前跳躍位元以符合改變)。替代地,在其他實施例中,可在處理器及/或不允許自我修改碼之架構中使用分支預測器。
第6圖係一適當取得佇列608之實施例的方塊圖。如先前提到的,取得佇列係為將分支預測器作出的預測提供至前端的元件,以消耗預測。當分支預測器對取得小包中的所有分支作出預測時,便提供或儲存這個資訊到取得佇列的項目中。所示之取得佇列具有第一項目和第N項目600-N。在一特定實施例中,取得佇列可保持四個取得小包的分支資訊,然而可替代地使用較少或較多。
依照本發明之實施例,對第一項目600-1顯示了可包括在取得佇列之項目中的資訊。資訊包括位置識別位元643及類型識別位元642。這些可在管線階段的錯誤取得階段時用來檢查是否有錯誤取得。此外,亦設置觸發預測的取得小包程式計數器662,如此在取得階段時能判斷是否應消耗項目。若任何分支被預測為採用,則將如取得目標緩衝器所預測的目的取得小包程式計數器663放到對應欄位中。若取得目標緩衝器包含根據預測之任意路徑的距離資訊,則會放在距離(dist)欄位644中。請注意這是根據所儲存之預測的任意路徑。例如,若所有的分支都預測為不採用,則可將採用方向(TD)位元儲存在距離(dist)欄位644中。這些相對路徑超前跳躍位元可與指令一同遍歷,且如果發生錯誤盜取時會被送回分支預測器。一旦發生錯誤預測,應重新操縱前端和分支預測器到正確位址。超前跳躍邏輯可使用這些相對路徑超前跳躍位元來幫助分支預測器跳過不具有分支的重新操縱正確位址開始的取得小包。例如,分支預測器的重新操縱位址可被計算為重新操縱位址加上已從後段被送回的相對路徑超前跳躍位元。因為這些是相對路徑超前跳躍位元,且因為先前採用的路徑被判斷為不正確的,所以相對路徑超前跳躍位元會被使用並可送回分支預測器。有利的是,即使發生錯誤預測時,這可幫助分支預測器重新作出處理器前端的超前預測。然而,這是可選且非必須的。亦加上產生預測的項目之路組664,用來更新超前跳躍邏輯。當準備所有資訊以在取得階段時探查,有效位元(V)665便設為0。
在一些實施例中,當取得佇列滿了時,沒有必要作更多預測而浪費電力。就其本身而論,當取得佇列滿了或充滿時,可任意地降低給整個分支預測器102、402的電力(例如,可基於來自取得佇列的滿或充滿指示信號來時脈閘給分支預測器的電力)。之後,當取得佇列不再滿時,分支預測器可重新繼續作出預測。這是隨意且非必須的。
在處理器前端110,當待產生下一個取得小包程式計數器時,便對照在取得佇列之頂端項目之目前取得小包程式計數器來檢查目前取得小包程式計數器。若兩者相符,則可能表示前端的控制流程應改變。可從取得佇列輸出項目,且其內容可被用來產生下一個取得小包程式計數器。更具體來說,若在取得小包中的分支被預測為採用,則下一個取得小包的程式計數器可能是如從取得佇列項目讀出的目的取得小包程式計數器。若分支被預測為不採用,則下一個取得小包程式計數器可能是下面連續的。若從取得佇列消耗項目,則基於它而取得的取得小包可標記為預測,且對應於它的分支資訊可與取得小包相關。這可幫助偵測取得目標緩衝器的不一致並幫助更新分支預測單元。
處理器亦可包括在超前跳躍邏輯404之外的邏輯,其記錄運作時間行為並記錄超前跳躍資訊。當作出對取得區塊的預測時,便將超前跳躍位元(TD和NTD位元兩者)和預測的路組兩者傳到主要管線。起初,所有TD和NTD超前跳躍位元可能是零,因此其不會影響下一個取得小包程式計數器。當在取得目標緩衝器中發生命中且在取得區塊中的所有分支都被預測為不採用時,連同預測之取得目標緩衝器項目的路組便被傳到前端。一旦採用預測,反而傳播採用預測的路組。在解碼階段時將資訊存進暫存器中,以保持路組和預測(採用或不採用)。此外,飽和超前跳躍計數器(例如,如果發生兩個每指令超前跳躍位元,是兩位元飽和超前跳躍計數器)會設成零。在經解碼且不包含分支指令的每個取得區塊上,可逐一增量超前跳躍計數器。超前跳躍計數器可對順著執行路徑之每個在具有分支的取得小包之間由解碼器解碼的取得小包增量(例如,超前跳躍計數器可計數沒有待被跳過之具有分支之取得小包之間的分支的取得小包之數目)。解碼器可記錄最近在取得目標緩衝器上命中的組路以及最近分支的方向。當解碼下一個具有分支的取得區塊時,根據先前分支的方向,可順著保持到下一個取得小包之距離的超前跳躍計數器來對第一分支的路組和方向更新取得目標緩衝器。接著可重置超前跳躍計數器並可儲存新資訊。
雖然解碼期間會有關於分支是否在正確或錯誤路徑上的有限資訊,但也無所謂,因為即使是錯誤路徑,處理器只是習得一部分不需要的控制流程圖。又,當由於間接分支而發生重新操縱時,會重置超前跳躍計數器,並將取得目標緩衝器中的資訊向後推,因為我們不要超前跳躍邏輯略過取得小包而改變執行流程。又,在錯誤預測或例外之後的管線清除上,可刪除解碼階段時的資訊。
在解碼階段時,當已知關於包含在特定取得小包中之分支的資訊時,硬體結構可檢查在分支預測單元所提供的預測資訊和實際情況之間是否有不一致。兩路中的不相配使分支預測單元要被調整(若不相配不是由於分支預測單元落後而造成的),且對前端的內部邏輯可重新操縱並造成清除取得佇列。接著可在處理器的後端處理分支,使得若預測為正確,則可相應地更新分支預測單元,或者或發生錯誤預測,則可更正分支預測單元的推測狀態。請注意不同於非分離分支預測器的配置,可順著剩餘的管線清除取得佇列的錯誤預測和例外。
在傳統分支預測器中,沒有提供管理在錯誤預測及/或例外之後所發生的分支。在本發明之實施例中,分支預測器可決定是否應短暫地拖延主要管線(例如,一個週期),以便確保分支預測器能夠領先主要管線。
因為平均大約每兩個取得小包只含有一分支,所以裝有超前跳躍邏輯的分支預測器通常能夠實際隱藏所有由於分支預測器落後於前端所造成的錯誤取得。取得佇列幫助確保在給定的一些週期中,分支預測器能夠以比前端消耗更快的速度為具有分支的取得小包產生資訊,即使是暫時性顛倒(例如,前端以比分支預測器可產生的速度更快的速度消耗),應仍然不會顯著發生錯誤取得。某種程度上來說,取得佇列的大小決定分支預測器能超前前端多遠處。在一些實施例中,取得佇列可具有至少12、至少14、或至少16個項目。若希望的話可使用較少的項目,但可能容易造成較多的錯誤取得。
本發明之實施例係關於一種具有如本文所述之一或更多處理器及/或進行如本文所述之方法的系統(例如,桌上型電腦、膝上型電腦、電腦系統、伺服器、行動電話、機上盒、或其它電子裝置)。
第7圖係為適用於合併本發明之實施例的電腦系統或電子裝置790之實施例的方塊圖。電腦系統包括一處理器700。處理器可具有一或更多核心。就多核心處理器而言,多個核心可整個整合於單一積體電路(IC)晶片或晶粒上。在一態樣中,每個核心可包括至少一執行單元和至少一快取。處理器亦可包括一或更多共享快取。
在一特定實施例中,處理器可包括整合式圖形控制器、整合式視訊控制器、及整合式記憶體控制器,其各整個整合於通用微處理器的單一晶粒上,然而此並非必要的。替代地,一些或所有這些元件可置於處理器外。例如,處理器可省略整合式記憶體控制器,且晶片組可具有記憶體控制集線器(MCH)。
在本發明之實施例中,處理器包括分支預測器702,具有可操作來使分支預測器跳過不具有分支的程式碼之取得小包或其他部分的超前跳躍邏輯704。在實施例中,處理器的解碼器及/或執行單元(未顯示)可能無法跳過這些取得小包或程式碼部分。
處理器經由匯流排(例如,前端匯流排)或其他互連線791來耦接至晶片組792。互連線可用來經由晶片組傳送處理器和系統中其他元件之間的資料信號。記憶體793耦接至晶片組。在各種實施例中,記憶體可包括隨機存取記憶體(RAM)。動態RAM(DRAM)是在一些而非所有電腦系統中使用的RAM之類型的實例。記憶體可儲存程式碼以由處理器處理。
元件互連線794亦耦接於晶片組。在一或更多實施例中,元件互連線可包括一或更多周邊元件互連快捷(PCIe)介面。元件互連線可使其它元件能夠經由晶片組耦接到其餘的系統。上述元件的一個實例係為繪圖晶片或其他圖形裝置,然而此為隨意且非必須的。
資料儲存器796耦接至晶片組。在各種實施例中,資料儲存器可包括硬碟機、軟碟機、CD-ROM裝置、快閃記憶體裝置、動態隨機存取記憶體(DRAM)、或之類、或其組合。網路控制器795亦耦接至晶片組。網路控制器亦使系統能夠耦接於網路。序列擴充埠797亦耦接於晶片組。在一或更多實施例中,序列擴充埠可包括一或更多通用串列匯流排(USB)埠。序列擴充埠可使各種其他類型的輸入/輸出裝置能夠經由晶片組耦接至其餘的系統。
可非必要地耦接於晶片組的其它元件之一些說明實例包括,但不限於,音頻控制器、無線傳送器、及使用者輸入裝置(例如,鍵盤、滑鼠)。在一或更多實施例中,電腦系統可執行從華盛頓雷德蒙之微軟公司得到的WINDOWSTM作業系統版本。替代地,可使用其他作業系統,例如UNIX、Linux、或嵌入式系統。
這只是一個適當電腦系統的特定實例。本領域中用於膝上型電腦、桌上型電腦、可攜式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、視訊遊戲裝置、機上盒、及各種其他具有處理器的電子裝置之所知的其他系統設計和配置係適合的。在一些例子中,系統可具有多個處理器。
在說明和申請專利範圍中,可使用「耦接」和「連接」及與其衍生之名詞。應了解到這些名詞並不打算作為彼此的同義字。反而,在特定實施例中,可使用「連接」來表示兩個或更多元件係為彼此直接實體或電性接觸。「耦接」可能表示兩個或更多元件係為直接實體或電性接觸。然而,「耦接」亦可能表示兩個或更多元件不是彼此直接接觸,但仍會彼此共同運作或互動。
在上面敘述中,為了解釋之目的,已提出許多具體細節以提供本發明之實施例的全盤了解。然而顯然地對本領域之熟知技藝者來說,毋須這些具體實例亦可實作一或更多其他實施例。所述之特定實施例並非提出來限制本發明而是用來說明用。本發明之範疇不由上面所提出的具體實例而定,而僅由下面的申請專利範圍而定。在其他舉例中,熟知的電路、結構、裝置和操作已顯示成方塊圖的形式,而沒有太詳細以免混淆本說明的理解。
同樣將了解到,藉由本領域之熟知技藝者,可對本文所揭露之實施例作出修改,例如針對實施例之元件的配置、功能、運作方式、和使用。圖中所示和說明書所述之所有等效關係都包含在本發明之實施例內。適當考慮下,參考數字或參考數字的終端部分已經重複於圖之間以表示對應或類似的元件,其可能隨意地具有類似的特性。
已說明了各種操作和方法。在流程圖之基本形式中已說明了一些方法,但可隨意地添加操作到方法中及/或從方法中移除操作。此外,儘管流程圖顯示根據實施例之操作的特定順序,但應了解這個特定順序是示範用的。其他實施例可隨意地以不同順序來進行操作、合併某些操作、重疊某些操作等等。可經考量對方法作出許多修改和改變。
同樣應了解到遍及本說明書的「一個實施例」、「一實施例」、「一或更多實施例」例如表示特定特徵可包括在本發明之實作中。同樣地,應了解到在本說明中,各種特徵有時會合併在單一實施例、圖式、或其說明中,以簡化揭露書並幫助理解各種發明態樣。然而,揭露書的方法不應解釋成反映出本發明需要比各申請專利範圍明確所述更多特徵的意圖。反而,隨著以下申請專利範圍反映,發明態樣可憑藉比單一揭露實施例之所有特徵更少的特徵。於是,在詳細說明之後的申請專利範圍於此明確地合併至詳細說明中,依據其本身的每個申請專利範圍係為本發明之分開實施例。
100‧‧‧處理器
102‧‧‧分離分支預測器
104‧‧‧超前跳躍邏輯
106‧‧‧資訊
108‧‧‧取得佇列
110‧‧‧處理器前端
212‧‧‧程式碼
FP1‧‧‧第一取得小包
FP2‧‧‧第二取得小包
FP3‧‧‧第三取得小包
FP4‧‧‧第四取得小包
FP5‧‧‧第五取得小包
FP6‧‧‧第六取得小包
402‧‧‧分離分支預測器
404‧‧‧超前跳躍邏輯
408‧‧‧取得佇列
440‧‧‧取得目標緩衝器
442‧‧‧分支預測單元
444‧‧‧預測佇列
446‧‧‧取得小包程式計數器
448‧‧‧分支資訊表
540‧‧‧取得目標緩衝器
541‧‧‧標籤欄位
542‧‧‧分支類型識別欄位
543‧‧‧分支位置識別欄位
544‧‧‧採用方向超前跳躍位元欄位
545‧‧‧不採用方向超前跳躍位元欄位
546‧‧‧目的位址識別欄位
547‧‧‧虛擬最近最少使用資訊陣列
608‧‧‧取得佇列
600-1‧‧‧第一項目
600-N‧‧‧第N項目
643‧‧‧位置識別位元
642‧‧‧類型識別位元
662‧‧‧目前取得小包程式計數器
663‧‧‧目的取得小包程式計數器
644‧‧‧距離欄位
664‧‧‧路組
665‧‧‧有效位元
700‧‧‧處理器
702‧‧‧分支預測器
704‧‧‧超前跳躍邏輯
790‧‧‧電子裝置
791‧‧‧互連線
792‧‧‧晶片組
793‧‧‧記憶體
794‧‧‧元件互連線
795‧‧‧網路控制器
796‧‧‧資料儲存器
797‧‧‧序列擴充埠
最好藉由參考接下來的敘述和用來說明本發明之實施例的附圖來了解本發明。在圖中:
第1圖係處理器之一實施例的方塊圖。
第2圖顯示具有含與不含分支指令之取得小包(FP)的程式碼之實例部分。
第3圖係在分支預測期間跳過省略分支的小包之發明方法之實施例的方塊流程圖。
第4圖係分離分支預測器之一實施例的方塊圖。
第5圖係適當的取得目標緩衝器之一實施例的方塊圖。
第6圖係適當的取得佇列之一實施例的方塊圖。
第7圖係適合用來併入本發明之實施例的電腦系統或電子裝置之一實施例的方塊圖。
100‧‧‧處理器
102‧‧‧分離分支預測器
104‧‧‧超前跳躍邏輯
106‧‧‧資訊
108‧‧‧取得佇列
110‧‧‧處理器前端
权利要求:
Claims (22)
[1] 一種處理器,包含:前端邏輯,用來處理程式碼的小包,該些小包之各者具有多個指令;一分支預測器,係耦接於該前端邏輯,該分支預測器預測該程式碼之分支指令的方向;及超前跳躍邏輯,用來使該分支預測器在每個具有至少一分支指令的該程式碼之小包之間跳過不具有分支指令的該程式碼之至少一小包。
[2] 如申請專利範圍第1項所述之處理器,其中該分支預測器包含一分支預測單元以及一取得目標緩衝器,且其中該不具有該分支指令的該至少一小包並未用來存取該分支預測單元或該取得目標緩衝器。
[3] 如申請專利範圍第1項所述之處理器,其中該分支預測器包含一取得目標緩衝器,且其中該取得目標緩衝器係用來儲存指示該分支預測器欲跳過不具有該分支指令的該至少一小包的超前跳躍資訊。
[4] 如申請專利範圍第3項所述之處理器,其中該超前跳躍資訊指出該分支預測器予以在一具有分支指令的給定小包與一具有分支指令的下一小包之間跳過的複數個沒有分支指令的小包中的數目。
[5] 如申請專利範圍第1項所述之處理器,其中該分支預測器係用來儲存並使用採用方向(TD)超前跳躍位元以及不採用方向(NTD)超前跳躍位元用於小包中的複數個可能的分支指令之每一者。
[6] 如申請專利範圍第1項所述之處理器,其中該超前跳躍邏輯係用來使該分支預測器的一取得小包程式計數器增量以藉由跳過不具有該分支指令的該中介至少一小包來從一初始小包跳到一目的小包。
[7] 如申請專利範圍第1項所述之處理器,其中該前端邏輯包含一飽和計數器,其遇到不具有該分支指令的該小包即增量。
[8] 如申請專利範圍第1項所述之處理器,其中該前端邏輯係用來處理不具有該分支指令的該至少一小包。
[9] 如申請專利範圍第1項所述之處理器,更包含一取得佇列,其耦接於該前端邏輯與該分支預測器之間。
[10] 如申請專利範圍第1項所述之處理器,其中該前端邏輯包含至少一用來取得該些小包的取得邏輯,以及一用來解碼該些小包之該些指令的解碼器。
[11] 一種方法,包含:預測用於程式碼之第一小包的一或更多分支指令的一或更多分支方向;至少跳過該程式碼的第二小包到該程式碼的第三小包,該第二小包不具有分支指令;及預測用於該程式碼之該第三小包的一或更多分支指令的一或更多分支方向。
[12] 如申請專利範圍第11項所述之方法,其中預測用於該第一和該第三小包的該些分支方向包括為該第一和該第三小包存取一分支預測單元以及一取得目標緩衝器,且其中不為該第二小包存取該分支預測單元以及該取得目標緩衝器。
[13] 如申請專利範圍第11項所述之方法,其中跳過該第二小包係基於從取得目標緩衝器所存取的超前跳躍資訊來執行,該超前跳躍資訊指示跳過該第二小包。
[14] 如申請專利範圍第13項所述之方法,其中跳躍包括跳過複數個不具有分支指令的小包,且其中該超前跳躍資訊具體指定該複數個小包中的數目。
[15] 如申請專利範圍第11項所述之方法,其中跳過該第二小包包含增量由分支預測器所使用的取得小包程式計數器以跳過該第二小包。
[16] 如申請專利範圍第11項所述之方法,更包含解碼該第二小包的指令。
[17] 一種系統,包含:一處理器,包括:一解碼器,用來解碼程式碼的小包,該些小包之各者具有多個指令;一分支預測器,係耦接於該解碼器,該分支預測器預測該程式碼之分支指令的方向;及邏輯,用來使該分支預測器在每個具有至少一分支指令的該程式碼之小包之間跳過不具有分支指令的該程式碼之至少一小包;及一動態隨機存取記憶體,耦接於該處理器以儲存該程式碼。
[18] 如申請專利範圍第17項所述之系統,其中該分支預測器包含分支預測單元以及取得目標緩衝器,且其中不具有該分支指令的該至少一小包並未用來存取該分支預測單元以或該取得目標緩衝器,但具有至少一分支指令的該程式碼之該些小包則被用來存取該分支預測單元以及該取得目標緩衝器。
[19] 如申請專利範圍第17項所述之處理器,其中該分支預測器包含取得目標緩衝器,且其中該取得目標緩衝器係用來儲存指示該分支預測器欲跳過不具有該分支指令的該至少一小包的資訊。
[20] 如申請專利範圍第17項所述之處理器,其中該邏輯係用來使該分支預測器的程式計數器增量以跳過不具有該分支指令的該至少一小包。
[21] 如申請專利範圍第1項所述之處理器,更包含一取得佇列,其耦接於該前端邏輯與該分支預測器之間,且其中該分支預測器係用來儲存由該取得佇列中的該分支預測器所預測的替代路徑之超前跳躍位元。
[22] 如申請專利範圍第11項所述之方法,更包含:從一分支預測器提供相反路徑超前跳躍位元給一處理器前端,其中該相反路徑超前跳躍位元係關於除了所預測之外的一替代路徑;及回應錯誤預測,返還該相反路徑超前跳躍位元給該分支預測器以允許該分支預測器。
类似技术:
公开号 | 公开日 | 专利标题
TWI482088B|2015-04-21|具有超前跳躍邏輯以跳過缺少分支程式碼部分的分支預測器
US9891923B2|2018-02-13|Loop predictor-directed loop buffer
EP2674858B1|2019-10-30|Loop buffer learning
US10037211B2|2018-07-31|Operation of a multi-slice processor with an expanded merge fetching queue
US7278012B2|2007-10-02|Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
US8086826B2|2011-12-27|Dependency tracking for enabling successive processor instructions to issue
KR20010075258A|2001-08-09|간접 분기 목적지 산출 방법
US20050216713A1|2005-09-29|Instruction text controlled selectively stated branches for prediction via a branch target buffer
US7447883B2|2008-11-04|Allocation of branch target cache resources in dependence upon program instructions within an instruction queue
US10318419B2|2019-06-11|Flush avoidance in a load store unit
WO2005062167A2|2005-07-07|Transitioning from instruction cache to trace cache on label boundaries
JP2009536770A|2009-10-15|ブロックに基づく分岐先アドレスキャッシュ
US10353710B2|2019-07-16|Techniques for predicting a target address of an indirect branch instruction
US20130151823A1|2013-06-13|Next fetch predictor training with hysteresis
US8028180B2|2011-09-27|Method and system for power conservation in a hierarchical branch predictor
US20170329715A1|2017-11-16|Hazard avoidance in a multi-slice processor
US20040225866A1|2004-11-11|Branch prediction in a data processing system
US8909907B2|2014-12-09|Reducing branch prediction latency using a branch target buffer with a most recently used column prediction
US9652245B2|2017-05-16|Branch prediction for indirect jumps by hashing current and previous branch instruction addresses
US10691460B2|2020-06-23|Pointer associated branch line jumps for accelerated line jumps
JP6796717B2|2020-12-09|分岐ターゲットバッファの圧縮
JPH09330221A|1997-12-22|マイクロプロセッサにおける早期例外を追跡するシステム及び方法
WO2018059337A1|2018-04-05|数据处理装置和方法
JP5696210B2|2015-04-08|プロセッサ及びその命令処理方法
US7343481B2|2008-03-11|Branch prediction in a data processing system utilizing a cache of previous static predictions
同族专利:
公开号 | 公开日
WO2012166240A1|2012-12-06|
TWI482088B|2015-04-21|
US20120311308A1|2012-12-06|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
JP2603626B2|1987-01-16|1997-04-23|三菱電機株式会社|データ処理装置|
US4860197A|1987-07-31|1989-08-22|Prime Computer, Inc.|Branch cache system with instruction boundary determination independent of parcel boundary|
US5142634A|1989-02-03|1992-08-25|Digital Equipment Corporation|Branch prediction|
GB2285154B|1993-12-24|1998-04-01|Advanced Risc Mach Ltd|Branch cache|
US6223254B1|1998-12-04|2001-04-24|Stmicroelectronics, Inc.|Parcel cache|
US20040181654A1|2003-03-11|2004-09-16|Chung-Hui Chen|Low power branch prediction target buffer|
US7430657B2|2003-12-31|2008-09-30|Intel Corporation|System, method and device for queuing branch predictions|
TWI295032B|2005-12-01|2008-03-21|Ind Tech Res Inst||
US7681021B2|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|
US7702888B2|2007-02-28|2010-04-20|Globalfoundries Inc.|Branch predictor directed prefetch|
US20110047357A1|2009-08-19|2011-02-24|Qualcomm Incorporated|Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions|US10241557B2|2013-12-12|2019-03-26|Apple Inc.|Reducing power consumption in a processor|
US9996351B2|2016-05-26|2018-06-12|International Business Machines Corporation|Power management of branch predictors in a computer processor|
US20200065106A1|2018-08-22|2020-02-27|Advanced Micro Devices, Inc.|Filtered branch prediction structures of a processor|
US11182165B2|2018-11-19|2021-11-23|International Business Machines Corporation|Skip-over offset branch prediction|
US11182166B2|2019-05-23|2021-11-23|Samsung Electronics Co., Ltd.|Branch prediction throughput by skipping over cachelines without branches|
US20210326139A1|2020-04-20|2021-10-21|Saurabh Gupta|Instruction set architecture based and automatic load tracking for opportunistic re-steer of data-dependent flaky branches|
法律状态:
2017-01-21| MM4A| Annulment or lapse of patent due to non-payment of fees|
优先权:
申请号 | 申请日 | 专利标题
US13/150,970|US20120311308A1|2011-06-01|2011-06-01|Branch Predictor with Jump Ahead Logic to Jump Over Portions of Program Code Lacking Branches|
[返回顶部]