TWI549054B - 用於分支預測錯誤之賦能及去能第二跳越執行單元之技術 - Google Patents
用於分支預測錯誤之賦能及去能第二跳越執行單元之技術 Download PDFInfo
- Publication number
- TWI549054B TWI549054B TW101149326A TW101149326A TWI549054B TW I549054 B TWI549054 B TW I549054B TW 101149326 A TW101149326 A TW 101149326A TW 101149326 A TW101149326 A TW 101149326A TW I549054 B TWI549054 B TW I549054B
- Authority
- TW
- Taiwan
- Prior art keywords
- jeu
- branch
- processor
- counter
- count
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 62
- 238000012545 processing Methods 0.000 claims description 20
- 230000000977 initiatory effect Effects 0.000 claims description 15
- 230000004913 activation Effects 0.000 claims description 14
- 230000009849 deactivation Effects 0.000 claims description 8
- 238000011156 evaluation Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 8
- 239000000872 buffer Substances 0.000 description 34
- 230000008569 process Effects 0.000 description 32
- 230000007246 mechanism Effects 0.000 description 27
- 230000002147 killing effect Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 14
- 230000009471 action Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 7
- 230000011664 signaling Effects 0.000 description 5
- 230000003213 activating effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008093 supporting effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000009194 climbing Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 230000002401 inhibitory effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000007727 signaling mechanism Effects 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Description
實施例大體而言係關於微處理器內之指令處理,且更具體而言係關於微處理器中分支操作預測錯誤之處置。
微處理器使用分支預測來改良效能。傳統處理器架構包括呈數位電路形式之一或多個分支預測器,該等分支預測器在程式碼分支指令(例如,若-則-否則(if-then-else)塊、另一條件陳述式或跳越陳述式)執行之前預測該分支指令將行進的路徑。後續單元可然後執行該分支指令且驗證分支預測之結果。此分支結果驗證電路通常被稱為分支執行單元或跳越執行單元。基於分支預測,可對按程式次序在已預測分支之後的一或多個微操作進行擷取、排程及/或推測式執行。在沒有分支預測之情況下,考慮到處理器將必須等到分支指令或跳越指令已執行(例如,等到其已判定將遵循哪一程式路徑),然後才能判定要擷取的後續指令,
處理器的操作效率可能較低。因此,分支預測允許處理器之指令管線中的流程得以改良。
不幸的是,存在分支預測器電路錯誤預測了分支(亦即,不正確地預測)的情況。在此等情況下,處理器執行清除處理程序來移除經擷取、經排程來執行、經部分執行及/或所遵循分支預期要完全執行之該等微操作。預測錯誤的偵測,清除處理程序及後續擷取、排程之執行,以及正確指令之執行的速度對處理器之效能有直接影響。
根據本發明之一實施例,係特地提出一種處理器,其包括:用於分支操作評估之一第一跳越執行單元(JEU);用於分支操作評估之一第二JEU,該第二JEU與該第一JEU平行地操作;以及一啟動組件,其至少部分基於由該第一JEU識別之分支預測錯誤之數目來啟動該第二JEU。
100‧‧‧處理器架構/架構/處理器
102‧‧‧暫存器分配表及資源分配器(RAT/ALLOC)
104‧‧‧保留站/微操作排程器/排程器
106、404、604、804、1004‧‧‧主JEU分派管線(主JEU DP)
108、406、606、806、1006‧‧‧次JEU分派管線(次JEU DP)
110‧‧‧主JEU
112‧‧‧次JEU
114‧‧‧滑移緩衝器/計數器
116‧‧‧分支排序緩衝器(BOB)
118‧‧‧重新排序緩衝器(ROB)
120‧‧‧為預測錯誤作準備訊息
122‧‧‧預測錯誤訊息
124‧‧‧訊息
126‧‧‧檢索預測錯誤資訊訊息
128‧‧‧計數器
200‧‧‧計算系統
202‧‧‧系統記憶體
204‧‧‧作業系統
206‧‧‧可執行組件
208‧‧‧程式/組件資料
210‧‧‧可移除式儲存體
212‧‧‧不可移除式儲存體
214‧‧‧輸入裝置
216‧‧‧輸出裝置
218‧‧‧通訊連接
220‧‧‧其他計算裝置
300‧‧‧示例性處理程序
408~418、608~626、808~812、1008~1014‧‧‧行
500、700‧‧‧示例性處理程序
302~310、502~514、702~710、902~912、1204~1214、1304~1314‧‧‧操作
1102、1104、1108、1110、111‧‧‧回饋資訊
1106‧‧‧信號
1200、1300‧‧‧示例性處理程序
1202、1302‧‧‧分支操作資訊
參考附圖描述詳細描述。在諸圖中,參考數字之最左位識別參考數字第一次出現之圖。不同圖中之相同參考數字指示類似或相同的項目。
圖1例示出根據實施例之用於微處理器之示例性架構。
圖2為繪示圖1之微處理器可在其中操作之示例性計算系統的示意圖。
圖3繪示根據實施例之用於處置來自第一及第二跳越執行單元之分支預測錯誤的說明性處理程序的流程圖。
圖4繪示根據實施例之處置來自第一及第二跳越執行單元之分支預測錯誤的處理程序中之指令管線的示意圖。
圖5繪示根據實施例之用於處置來自第一及第二跳越執行單元之分支預測錯誤及來自重新排序緩衝器之殺光(nuke)指令的說明性處理程序的流程圖。
圖6繪示根據實施例之處置來自第一及第二跳越執行單元之分支預測錯誤及來自重新排序緩衝器之殺光指令的處理程序中之指令管線的示意圖。
圖7繪示根據實施例之用於對第二跳越執行單元進行升階的說明性處理程序的流程圖。
圖8繪示根據實施例之對第二跳越執行單元進行升階的處理程序中之指令管線的示意圖。
圖9繪示根據實施例之用於處置來自第一及第二跳越執行單元之分支預測錯誤及較舊預測錯誤之偵測的說明性處理程序的流程圖。
圖10繪示根據實施例之處置來自第一及第二跳越執行單元之分支預測錯誤及較舊預測錯誤之偵測的處理程序中之指令管線的示意圖。
圖11例示出根據實施例之用於微處理器的示例性架構。
圖12繪示根據實施例之用於藉由使用壓力計數器來啟動及/或停用第二跳越執行單元之說明性處理程序的流程圖。
圖13繪示根據實施例之用於藉由使用置信度計數器來
啟動及/或停用第二跳越執行單元之說明性處理程序的流程圖。
描述用於賦能及去能處理器之第二跳越執行單元(JEU)之技術。如以下所述,實施例支援與第一JEU同時且/或平行地操作來同時執行多個分支的第二JEU,且/或同時偵測第一JEU及第二JEU上之分支預測錯誤。在處理器之JEU中執行程式碼分支,且在執行之後,比較實際分支方向與先前預測的分支方向,來判定預測錯誤是否已發生。自分支經排程來執行時起,到該分支實際上執行且潛在地偵測到預測錯誤,已經過去一定量之時間(例如,四個指令週期)。在該時段期間,處理器之各種單元收到如下通知:JEU正準備執行分支,及因此該等單元應準備在發生預測錯誤的情況下取消(back-out)比該分支新的所有微操作(例如,在該分支之後擷取之操作),此係因為該等微操作係經不正確地推測且並非來自正確的程式路徑。
當偵測到實際分支方向與預測分支方向之間的失配時,用信號發出預測錯誤且起始清除處理程序以自處理器清除經不正確地推測之微操作。在一些實施例中,此清除處理程序為核心寬度清除處理程序,其用以自核心清除比該分支新之所有微操作。處理器偵測預測錯誤且清除經不正確地推測之微操作之速度對於處理器效能可能很關
鍵。通常,多個分支可潛在地亂序執行,且清除處理程序可在偵測到預測錯誤之後立即開始,而非等到該分支引退才開始。
當執行某些程式時,每個週期執行兩個分支且每個週期評估兩個分支來發現任何預測錯誤可能為有利的,諸如在運行具有兩個獨立執行之執行緒之多執行緒程式、具有高密度分支操作之單執行緒程式時,或在其他情形下。然而,先前處理器微架構可限於每個指令週期起始僅一個核心寬度清除處理程序。考慮到上述情況,在一些情形下,能夠處置同時偵測到的多個分支預測錯誤,同時仍支援現有微架構元件可為有利的,該等現有微架構元件允許每個週期起始單個核心寬度清除處理程序。
因此,本文所述之實施例支援處理器中之第二JEU來提供與第一JEU同時進行的分支評估,且藉由允許第二JEU使用可供第一JEU利用的預測錯誤發信號機制來支援同時進行的分支預測錯誤。在一些實施例中,第二JEU為低成本JEU,其功能性與第一JEU相比有所減少。例如,第一JEU可具有至處理器核心之其他單元之連接,且因此能夠:用信號通知其他單元應針對可能的預測錯誤作準備,並且當預測錯誤發生時用信號通知其他單元。在一些實施例中,第二JEU沒有此能力。此外,在一些實施例中,第二JEU進一步受到的限制在於,其支援某些類型之分支,諸如預測要通過之分支(例如,使得擷取單元預測條件並非為真,且在該分支之後繼續擷取指令處之程式碼)。同
樣,在一些實施例中,第二JEU可支援分支條件之某些子集,可限於支援無條件分支,且/或可能無法支援間接分支。
本文針對四個不同示例性狀況描述了結合第一JEU使用第二JEU之實施例。在第一示例性狀況下,第一JEU及第二JEU同時(例如,在相同指令週期中)偵測到兩個分支預測錯誤。在此情況下,第二JEU觸發將其分支處理及核心寬度清除處理程序排程至第一JEU的分派管線中,比第一JEU的分支處理遲某一數目個指令週期。此較遲排程在本文中被稱為滑移(skid)處理程序。本文關於圖3及圖4進一步描述此第一示例性狀況。
在第二示例性狀況下,第二JEU上之分支預測錯誤導致會在自處理器之另一單元(諸如重新排序緩衝器(ROB))接收到「殺光」命令的同時在第一JEU上請求滑移分派,且該殺光亦請求在第一JEU上之相同分派槽(例如,殺光-滑移碰撞)。如本文中所使用,殺光係移除當前在用於特定執行緒之機器中之所有未引退微操作的命令。在一些實施例中,當存在中斷或使清空管線成為必需之其他類型之事件時,ROB可發送此訊息。當偵測到殺光時,保留第一JEU上之分派槽以用於殺光。因為殺光機制使用與分支預測錯誤相同的清除協定,所以在相同埠上在該週期上可能不存在同時的預測錯誤。因此,當殺光與滑移之間存在碰撞時,用於第二分支預測錯誤之分支處理沿管線滑移得更遠且經排程以在殺光命令之處理之後(例如,延遲一個週期)發生。本文關於圖5及圖6進一步論述此示例性狀況。
在第三示例性狀況下,第二JEU經升階而可以存取通常可供第一JEU存取之預測錯誤機制。在一些實施例中,關於預測錯誤之所有通訊係經由第一JEU來處理。然而,在一些情況下,當第一JEU具有經排程之非分支微操作時(例如,加法操作),第二JEU經升階以控制用於處置預測錯誤之各種緩衝器。在此等情況下,第二JEU實際上就好像第一JEU一樣起作用,直至第二JEU已完成其與處理分支及/或分支預測錯誤相關之操作為止。本文關於圖7及圖8進一步論述此示例性狀況。
第四示例性狀況類似於第一示例性狀況,但是有一個新增元件,即在第一JEU上偵測到之較舊預測錯誤,該較舊預測錯誤係在第二JEU滑移預測錯誤之後但在第二JEU的預測錯誤控制了第一JEU的控制來起始上述核心寬度清除處理程序之前。在此狀況下,清除比此新近偵測到的較舊預測錯誤新之所有操作,該等操作包括經滑移的第二JEU分支操作。當自ROB接收到較舊殺光命令時,可執行類似的但稍有不同的處理程序。本文關於圖9及圖10進一步描述此等實例。
在一些情況下,在第二JEU上偵測到的預測錯誤可能花費較長時間來清除,以使處理器回到正確的執行路徑上。因此,儘管第二JEU之操作可提供如本文所述之優點,但是其可能亦不利地影響程式效能。至少出於此原因,實施例支援在各種環境中對第二JEU之賦能及/或去能,以平衡分支指令之更及時的執行及評估與預測錯誤之
延遲觸發可能性。
在一些實施例中,第二JEU之啟動及/或停用可由壓力計數器或置信度計數器來控制。壓力計數器機制針對在處理器內執行之每一分支操作使計數遞增且在每一週期期間使該計數遞減一衰減值。置信度計數器機制針對每一已正確預測的分支使計數遞增,且針對每一預測錯誤使該計數遞減。在每一計數器超過臨界值時,該計數器用信號通知啟動組件(諸如暫存器分配表及資源分配器(RAT/ALLOC)組件中之埠連結邏輯)開始將微操作連結至第二JEU。計數器機制可為執行緒不可知的或執行緒特定的。本文參考圖11至13進一步描述第二JEU之啟動及停用。
在以下描述中,第一JEU及第二JEU替代地被稱為主JEU及次JEU。然而,主JEU及次JEU之此識別本身並非意欲作為此等組件之限制性描述。
圖1繪示用於微處理器(本文亦被稱為處理器或處理單元)之示例性微架構。在所展示之實例中,處理器架構100包括暫存器分配表及資源分配器(RAT/ALLOC)102,RAT/ALLOC 102操作以將微操作連結至處理器之可用分派埠及暫存器中的一者。RAT/ALLOC 102與處理器之保留站/微操作排程器104(本文中通常被稱為排程器)通訊。在一些實施例中,排程器104對傳入之微操作(包括分支操作)進行排程來執行。
每一分支操作可由排程器104排程來在JEU中之一者中執行。如以上所描述,具有平行地操作之兩個JEU之架構100允許兩個分支預測錯誤將被同時(例如,在單個指令週期中)偵測且如本文進一步描述地處理。如圖1所展示,架構100包括兩個JEU--主JEU 110及次JEU 112,主JEU 110及次JEU 112分別與主JEU分派管線(DP)106及次JEU DP 108相關聯。排程器104藉由將微操作分別寫入至主JEU DP 106或次JEU DP 108中來將該等微操作排程為在主JEU 110或次JEU 112中執行。
在一些實施例中,當分支預測錯誤經導引時,次JEU 112不能存取用於起始核心寬度清除處理程序之緩衝器及/或機制。因此,當其偵測到針對分支操作之預測錯誤時,次JEU 112可將與預測錯誤相關聯之資訊寫入至滑移緩衝器/計數器114中。此資訊可包括目標位址及用以幫助用實際輸出來更新分支預測器以改良將來預測的資訊。保存於滑移緩衝器/計數器114中之資訊然後可用來起始核心寬度清除處理程序。
此外,架構100可包括分支排序緩衝器(BOB)116。在一些實施例中,BOB 116維持輸入項,該輸入項儲存關於當前執行程式中之每一分支操作之位址資訊。當分支操作在主JEU 110中執行時,將關於所取得分支(例如,分支之實際所取得目標)之位址資訊寫入至BOB 116。當分支操作引退時,可接著自BOB 116檢索目標位址資訊(例如,將要執行之下一指令之位址)。然後,BOB 116
可將該資訊傳達至重新排序緩衝器(ROB)118,ROB 118持續追蹤在當前執行程式內之當前位置。因此,對於每一所取得分支,BOB 116可用關於按程式次序在該分支之後的下一指令之位址資訊來更新ROB 118,以便ROB 118可更新在程式內之當前位置。
在一些實施例中,主JEU 110具有寫入至BOB 116或ROB 118之能力。然而,次JEU 112可能無法將所取得目標寫入至BOB 116,但是其可能能夠寫入至ROB 118以將分支標記為已執行且完成的。因此,次JEU 112可被描述為低成本JEU,其能力與主JEU 110之能力相比略為有限。
儘管在圖1中未展示出,但是在一些實施例中次JEU 112可具有寫入至BOB 116之受限能力,此狀況在次JEU 112正執行預測要通過的分支(例如,正確預測僅需要ROB將指令指標推進至下一指令時所在之分支)之情況下係可接受的。若預測要通過的分支預測錯誤,則兩個動作可發生。第一,可起始清除處理程序。第二,可將正確的所取得目標寫入至BOB中。因為第一動作可能並非自次JEU執行且經滑移至主JEU,所以稍後可自主JEU更新BOB。此允許次JEU永遠不需要寫入至BOB之實施例。若預測所取得分支將在次JEU上被允許,則此可排除次JEU之低成本利益,考慮到正確預測將需要將所取得目標寫入至BOB,因此ROB可適當地更新指令指標。
此外,在一些實施例中,可對次JEU 112進行升
階,以便次JEU 112具有寫入至BOB 116及ROB 118之能力,及回應於所偵測預測錯誤而起始核心寬度清除處理程序且寫入至BOB 116之能力。以下關於圖7及圖8更詳細地描述此升階狀況。
如圖1中進一步所展示,主JEU DP 106可具有向處理器之一或多個其他組件發送為預測錯誤作準備訊息120之能力。在一些實施例中,為可能的預測錯誤作準備之此警報包括將關於正執行之分支操作之資訊發送至其他組件,以便其他組件在發生預測錯誤的情況下可準備取消比該分支新的所有微操作。例如,可自DP將訊息發送至擷取單元以使其準備開始自新位址擷取,發送至RAT/ALLOC以使ROB分配指標恢復至預測錯誤之點(亦即,取消不正確地推測之操作),且/或發送至保留站以判定自結構清除比預測錯誤分支新的哪些微操作。然後,若偵測到預測錯誤,則主JEU 110可將預測錯誤訊息122發送至其他組件,從而向該等其他組件通知:預測錯誤已發生,及該等其他組件可取消較新的操作。
如在此實例中所展示,主JEU 110及主JEU DP 106分別具有發送預測錯誤訊息122及為預測錯誤作準備訊息120之能力,但是次JEU 112及其DP不具有此能力。因此,當預測錯誤由次JEU 112偵測到時,次JEU 122可使用主JEU 110之機制來起始核心寬度清除處理程序,以自核心清除比第二分支新的彼等指令。在此等情況下,次JEU 112可將訊息124發送至排程器104以保留主JEU DP
106中之一或多個槽來發送為預測錯誤作準備訊息120且藉由發送預測錯誤訊息122來起始核心寬度清除處理程序。當彼等保留槽在主JEU DP 106中到達時,在檢索預測錯誤資訊訊息126中自滑移緩衝器/計數器114檢索關於預測錯誤之資訊。次JEU 112使用主JEU 110之預測錯誤機制之此處理程序在本文中被稱為滑移,且以下更詳細地描述該處理程序。
在一些實施例中,處理器架構100進一步包括計數器128,計數器128操作以判定何時賦能及/或去能次JEU 112。如圖1中所展示,計數器128可與主JEU 110及/或次JEU 112通訊,且可自每一JEU接收關於所執行分支操作之資訊。此資訊可包括關於所執行分支操作之數目及/或偵測到之分支預測錯誤之數目的資料。儘管在圖1中未繪示,但是計數器128可進一步與架構100之其他組件通訊。本文關於圖11至13進一步描述計數器128之操作。
圖2繪示示例性電腦系統(例如,一或多個計算裝置或設備)的圖,該電腦系統使用具有圖1中所展示之處理器架構100之一或多個處理器。一或多個處理器100可包括使用任何適合程式設計語言撰寫以執行本文所述之各種功能之電腦可執行指令、處理器可執行指令及/或機器可執行指令。計算系統200可亦包括系統記憶體202,系統記憶體202可包括依電性記憶體,諸如隨機存取記憶體(RAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶
體(DRAM)等。系統記憶體202可進一步包括非依電性記憶體,諸如唯讀記憶體(ROM)、快閃記憶體等。系統記憶體202可亦包括快取記憶體。如所展示,系統記憶體202包括一或多個作業系統204,該等作業系統可提供包括一或多個軟體控制、顯示元件等之使用者介面。
系統記憶體202也可包括可由處理器100載入且執行之一或多個可執行組件206,其包括組件、程式、應用程式及/或處理程序。系統記憶體202可進一步儲存由可執行組件206及/或作業系統204在其執行期間產生且/或使用的程式/組件資料208。
如圖2中所展示,計算系統200也可包括可移除式儲存體210及/或不可移除式儲存體212,包括但不限於磁碟儲存體、光碟儲存體、磁帶儲存體等。磁碟機及相關的電腦可讀取媒體可提供電腦可讀取指令、資料結構、程式模組及用於計算系統200之操作之其他資料的非依電性儲存。
通常,電腦可讀取媒體包括電腦儲存媒體及通訊媒體。
電腦儲存媒體包括依電性媒體及非依電性媒體、可移除式媒體及不可移除式媒體,該等媒體係以用於儲存諸如電腦可讀取指令、資料結構、程式模組及其他資料之資訊之任何方法或技術來實行的。電腦儲存媒體包括但不限於RAM、ROM、可抹除可規劃唯讀記憶體(EEPROM)、SRAM、DRAM、快閃記憶體或其他記憶體技
術、光碟唯讀記憶體(CD-ROM)、數位多功能磁片(DVD)或其他光學儲存體、磁卡、磁帶、磁碟儲存體或其他磁性儲存裝置,或可用來儲存供計算裝置取用之資訊之任何其他非傳輸媒體。
相較之下,通訊媒體可將電腦可讀取指令、資料結構、程式模組或其他資料實施於諸如載波或其他傳輸機制之調變資料信號中。如本文中所定義,電腦儲存媒體不包括通訊媒體。
計算系統200可包括輸入裝置214,其包括但不限於鍵盤、滑鼠、筆、遊戲控制器、用於語音辨識之語音輸入裝置、觸控式輸入裝置、用於拍攝圖像及/或視訊之攝影機裝置、一或多個硬體按鈕等。計算系統200可進一步包括輸出裝置216,其包括但不限於顯示器、印表機、音訊揚聲器、觸覺輸出等。計算系統200可進一步包括通訊連接218,通訊連接218允許計算系統200與其他計算裝置218通訊,其他計算裝置218包括用戶端裝置、伺服器裝置、資料庫及/或可用於經由網路通訊之其他網路連接式裝置。
圖3、5、7、9、12及13繪示展示出根據各種實施例之示例性處理程序的流程圖。在單獨方塊中例示出且參考彼等方塊來概述此等處理程序之操作。處理程序係例示為邏輯流程圖,該邏輯流程圖之每一操作可表示可於硬體、軟體或其組合中實行之一或多個操作。在軟體之情況
下,操作表示儲存在一或多個電腦儲存媒體上及/或在一或多個處理器上儲存在內部之電腦可執行指令。此等指令在由一或多個處理器執行時允許一或多個處理器執行所述操作。
通常,電腦可執行指令包括常式、程式、物件、模組、組件、資料結構及執行特定功能或實行特定抽象資料類型之類似者。描述該等操作之次序並非意欲被視為限制,且任何數目個所描述操作可按任何次序組合,再分為多個子操作,且/或平行地執行來實行所描述處理程序。由圖3、5、7及9例示出之示例性處理程序可由處理器架構100中所包括之組件中的一或多者來執行。
圖3繪示根據實施例之用於處置在第一JEU及第二JEU中同時偵測到之分支預測錯誤的示例性處理程序300。如以上所描述,支援實施例之處理器可併入有主JEU及次JEU。微操作排程器(諸如排程器104)可將程式之兩個不同分支操作排程為近乎同時在此等兩個不同JEU中執行。在一些實施例中,程式可以多執行緒模式運行,且兩個不同的分支操作可正在不同的執行緒內執行。在一些實施例中,兩個分支操作可正在相同執行緒內執行。
在302處,在第一JEU(例如,主JEU)處偵測第一分支預測錯誤。在304處,在第二JEU(例如,次JEU)處偵測第二分支預測錯誤,此係與第一JEU處對第一分支預測錯誤之偵測同時進行。在一些實施例中,兩個分支預測錯誤之偵測可發生在處理器之相同指令週期內。如以上
所描述,當偵測到分支預測錯誤時,起始核心寬度清除處理程序以指示處理器之其他組件移除比該分支新的微操作。
因為第二JEU不能存取用於起始核心寬度清除處理程序之機制,所以執行一或多個滑移操作以賦能使用可供第一JEU利用的機制來起始核心寬度清除處理程序。關於圖4更詳細地描述此等滑移操作。在306處,將關於第二分支預測錯誤之資訊儲存在諸如滑移緩衝器/計數器114之滑移緩衝器中。在第二JEU上之預測錯誤比在第一JEU上且在相同執行緒上之預測錯誤新的情況下,考慮到由第一預測錯誤引起之清除將自動地引起由於第二預測錯誤而不正確地推測之彼等操作之清除,可不將第二預測錯誤寫入至滑移緩衝器。
在308處,基於在306處儲存在滑移緩衝器中之資訊,將核心寬度清除處理程序排程在用於第一JEU之DP中。如以上所描述,此核心寬度清除處理程序自核心清除比第二分支新的指令。在一些實施例中,將核心寬度清除處理程序排程在第二JEU偵測到第二分支預測錯誤之後的預定數目個指令週期處。在310處,當經排程之核心清除指令到達第一JEU時,自第一JEU起始核心清除。
圖4繪示根據實施例之沿具有同時偵測到之分支預測錯誤的分派管線及執行管線進行之示例性指令集。此實例繪示用於在指令管線中之五個週期期間在JEU中處置分支操作的五階段處理程序。在此五階段處理程序期
間,可排程分支來執行,且可向處理器之其他組件通知該分支被排程,且向該等其他組件警告預測錯誤可發生(例如,向該等其他組件發送為預測錯誤作準備訊息120)。在圖4(及圖6、8及10)中所例示之實施例中,行對應於用於沿分派管線及執行管線進行之指令及/或微操作之週期且繪示該等週期。在圖4(及圖6、8及10)中,時間自左向右前進,因為在圖中更靠右的指令週期在時間上較遲被處理。
圖4之各列分別繪示主JEU DP 404及次JEU DP 406中之指令。在行408處,將第一分支操作(例如,分支A)排程於主JEU DP 404中,且將第二分支操作(例如,分支B)排程於次JEU DP 406中。在此實例中,將分支A及分支B排程於相同指令週期中。在行410處,將關於分支A之為預測錯誤作準備資訊自主JEU發送至其他單元(例如,處理器之其他組件)。在行412處,針對分支A偵測到預測錯誤,此係與針對分支B偵測到之預測錯誤同時進行(例如,在如所展示之相同指令週期期間)。
在此階段,主JEU發送訊息(例如,預測錯誤訊息122),從而向處理器之其他組件通知已針對分支A偵測到預測錯誤,且起始核心寬度清除處理程序。然而,因為在特定指令週期中可用信號發出單個預測錯誤,所以分支B上偵測到之預測錯誤觸發滑移,藉由該滑移,在主JEU DP 404中將五階段分支處理程序排程得較遲,以在用於分支A之五階段處理程序之後發生。在繪示之實例中,在行414處,排程該滑移,且在針對分支A用信號發出預測錯誤之
後,使槽為分支B保留兩個指令週期。然後,將五階段處理程序之其他階段排程為滑移之部分。例如,在行416處,將關於分支B之分支資訊發送至處理器之其他單元,以向該等其他單元通知分支B可能預測錯誤。在行418處,發送針對分支B之預測錯誤信號,從而向其他單元通知預測錯誤已發生。以此方式,滑移處理程序將五階段分支處理程序重新排程為在主JEU管線中發生得較遲,從而允許使用用於用信號發出預測錯誤之主JEU機制來一個接一個地處理兩個同時偵測到的分支預測錯誤。
在一些實施例中,滑移處理程序使得對應於分支B之核心寬度清除被排程為在偵測到分支B預測錯誤之後的預定數目的週期處發生。例如,可將此預定數目設定為六個週期。在該實例中,為實現此操作,在次JEU中之分支B預測錯誤之後將主JEU上之分派槽保留兩個週期,以確保在用信號發出分支B預測錯誤時,沒有其他操作正在主JEU上執行。以此方式,可將滑移處理程序描述為自定時的,使得用於分支B之滑移被排程在比分支B在次JEU DP中之最初排程處理遲預定數目個指令週期處。在其他實施例中,可從頭開始重新分派且重新執行分支B,而不依賴滑移緩衝器。
在一些實施例中,在主JEU及次JEU正在相同程式執行緒中同時執行分支操作的情況下使用滑移機制。當主JEU的分支按程式次序比次JEU的分支新時,基於主JEU的分支來起始核心清除未能清除掉針對第二分支預測
而推測式地擷取、排程且/或執行之操作。因此,可使次JEU的分支滑移以確保清除此等操作。然而,當主JEU的分支按程式次序比次JEU的分支舊時,考慮到由主JEU上之第一分支預測錯誤起始之核心清除亦清除與次JEU上之第二分支相關之操作,可不執行滑移。
在另一實例中,在主JEU及次JEU正在分開的、獨立的執行緒中執行分支操作且兩個分支皆預測錯誤之情況下,使次JEU之分支滑移以確保針對第二分支預測錯誤之成功核心清除。此外,在一些情況下兩個分支可經排程為在主JEU及次JEU上同時執行,且第二分支預測錯誤,但是第一分支並未預測錯誤。在此等狀況下,次JEU不發送為預測錯誤作準備信號且不能取用核心清除控制,因此觸發滑移來根據所描述之機制允許次JEU可以取用主JEU之核心清除功能性。
在一些情況下,在次JEU上偵測到分支預測錯誤,且另外,ROB用信號發出殺光命令來移除當前在DP中之所有微操作。如以上所描述,當存在中斷或使清空管線成為必需之其他類型之事件時,ROB可發送殺光。如以上所描述,考慮到殺光及次JEU預測錯誤皆可能試圖使用主JEU DP之機制來執行其個別操作,可將此等情況描述為殺光與次JEU滑移請求之間的碰撞。因此,實施例提供一種手段來偵測何時發生此碰撞且藉由以下操作來解決此碰撞:使針對第二分支預測錯誤之分支處理在主JEU DP中滑
移得更遠,以便該碰撞經排程為在殺光命令之處理之後發生。在圖5及圖6中例示出此狀況。
圖5繪示根據實施例之用於適應同時偵測到之分支預測錯誤以及自ROB用信號發出之殺光的示例性處理程序500。在502處,在第一JEU處偵測到第一分支預測錯誤。在504處,在第二JEU處偵測到第二分支預測錯誤,此係與第一分支預測錯誤之偵測同時進行(例如,在相同指令週期內)。在506處,將與第二分支預測錯誤相關聯之資訊儲存在滑移緩衝器中。在實施例中,用於502、504及506之操作可與以上關於圖3所描述之彼等操作類似地進行。
在508處,自ROB(例如,ROB 118)接收殺光命令或指令。在一些實施例中,殺光命令可為早期殺光命令,亦即,對處理器將要殺光或可能要殺光之早期指示。在510處,使第二分支預測錯誤之處理滑移,使得針對第二分支預測錯誤將核心清除在主JEU DP中排程得更遠。在一些實施例中,此滑移類似於以上關於圖3所描述之滑移,只是此滑移在DP中排程得較遲以在殺光之處理之後發生。在一些實施例中,將滑移排程為比圖3的實例中遲一個指令週期,以適應殺光。在512處,執行用於殺光之一或多個操作,且在514處(例如,在殺光之後),當經排程之核心清除到達主JEU之DP中時,起始針對第二分支預測錯誤之核心清除。此外,在一些情況下,若殺光及預測錯誤係在相同執行緒上,則殺光處理可阻止滑移在稍後週期中用信號發出預測錯誤。
圖6繪示根據實施例之用以處置同時偵測到的分支預測錯誤以及來自ROB之額外殺光命令之示例性管線指令集。如圖4中類似地展示出,圖6繪示用於在主JEU DP 604及次JEU DP 606中之預測錯誤及殺光處置的五階段處理程序。在行608處,將第一分支操作(例如,分支A)排程於主JEU上,且同時將第二分支操作(例如,分支B)排程於次JEU上。在行610處,將關於分支A之分支資訊發送至處理器中之其他單元(例如,在為預測錯誤作準備訊息中)。
在行612處,主JEU及次JEU分別針對分支A及分支B同時偵測到預測錯誤。在此週期期間,主JEU發送對應於分支A預測錯誤之預測錯誤訊息,從而指示處理器之其他單元起始核心寬度清除處理程序來清除比分支A新的所有微操作,如以上所描述。在相同指令週期期間,針對分支B之預測錯誤觸發滑移,使得五階段分支處理程序在主JEU DP中排程得較遲(例如,經滑移)。
在行614處,自ROB接收早期殺光命令。此早期殺光係排程至主JEU DP中以在行612處用信號發出主JEU預測錯誤之後執行。然後,使針對第二分支預測錯誤之經滑移五階段分支處理程序延遲額外的至少一個指令週期,到達行618,使得在行618處為分支B滑移保留一個槽。在行620處,將殺光資訊發送至處理器中之其他單元,從而指示該等其他單元為殺光作準備。在行622處,針對分支B之五步驟分支處理程序繼續將關於分支B之分支資
訊發送至處理器之其他單元(例如,為預測錯誤作準備訊息)。在行624處,將殺光命令發送至其他單元且將目標位址發送至擷取單元,且在行626處,發送預測錯誤信號以觸發針對所偵測分支B預測錯誤之核心寬度清除。若殺光命令及分支B預測錯誤係在相同執行緒上,則抑制針對分支B之核心寬度清除操作,因為殺光係較舊的。
圖7及圖8例示出對次JEU進行升階以使其可以存取通常可供主JEU存取之預測錯誤機制的示例性狀況。如以上所描述,在一些實施例中,用信號發出預測錯誤係由主JEU執行。然而,在一些情況下,當主JEU具有經排程之非分支微操作(例如,加法操作)或無效/空操作(例如,無操作(noop))時,對次JEU進行升階且允許次JEU控制用於用信號發出預測錯誤之各種機制可為有利的。在此等情況下,次JEU實際上就好像第一JEU一樣起作用,直至次JEU已完成其與處理分支及/或分支預測錯誤相關之操作為止,此時可使次JEU降階回至其受限功能性狀態。
圖7繪示用於次JEU之升階之示例性處理程序700。在702處,在第一JEU的DP中偵測到經排程之非分支操作或判定在第一JEU上無操作經排程(亦即,其係閒置的)。非分支操作可為不涉及分支、跳越或其他條件之任何操作(例如,加法操作)。非分支操作亦可為無效操作(例如,無操作)。在704處,在第二JEU的DP中偵測到經排程之分支操作,其係與第一JEU DP中之非分支操作同時排程。
在706處,基於702及704之此等所偵測操作,對用於第二JEU之DP提供對用於起始核心寬度清除處理程序之緩衝器及/或其他機制之存取權。例如,可給第二JEU提供手段來發送為預測錯誤作準備訊息120及預測錯誤訊息122。在708處,第二JEU DP將分支資訊發送至處理器之其他單元,從而向該等其他單元警告可能的分支預測錯誤(例如,發送為預測錯誤作準備訊息)。在710處,第二JEU在偵測到其分支操作上的預測錯誤時起始核心清除處理程序。儘管在圖7中未展示,但是在執行此等操作之後次JEU可被降階且返回至其受限功能性狀態。
此外,在一些實施例中,政策可指定僅在第一JEU閒置(亦即,沒有操作被排程),同時第二JEU上有分支操作之情形下允許升階。在一些實施例中,當在第一JEU上不存在使用預測錯誤信號(亦即,使用至擷取單元之取得位址線)之其他操作被排程時,可判定第二JEU之升階。
圖8例示出根據此升階狀況之用於主JEU及次JEU之示例性DP。兩個列分別展示出主JEU DP 804及次JEU DP 806。在行808處,非分支操作已排程於主JEU DP中,且針對分支B之分支操作已排程於用於次JEU之DP中。
在此實例中,因為在主JEU DP中偵測到非分支操作,所以次JEU經升階且因此在行810處能夠自行將關於分支B之分支資訊發送至處理器中之其他單元。此外,在行812處次JEU亦能夠發送關於分支B之預測錯誤訊息
來起始核心寬度清除處理程序。在一些實施例中,在次JEU完成其針對分支B之處理之後(例如,在該分支引退之後),次JEU被降階且返回至其受限功能性狀態,使得其不再能夠回應於預測錯誤而直接起始清除處理程序。
一些實施例支援針對相同執行緒在次JEU滑移之後在主JEU上偵測到較舊預測錯誤之額外示例性狀況。此狀況類似於以上關於圖3及圖4描述之第一滑移狀況,但是具有額外特性。在次JEU滑移之後,在主JEU上偵測到按程式次序比所偵測預測錯誤次JEU舊的另一預測錯誤。在此情況下,清除比此新近偵測到的較舊預測錯誤新的所有操作,其包括經滑移的次JEU分支操作自身。在實施例(不限於圖3及圖4中例示出之彼等實施例)中,當較舊的預測錯誤已在滑移處理程序中時,沒有預測錯誤被允許自任何JEU發信號或被允許進入滑移。
圖9繪示用於處置此等情況之示例性處理程序。在902處,在第一JEU處偵測到第一分支預測錯誤。在904處,在第二JEU處偵測到第二分支預測錯誤,此係與第一分支預測錯誤之偵測同時進行(例如,在相同指令週期中)。在906處,將與第二分支預測錯誤相關之資訊儲存在滑移緩衝器中。在908處,基於滑移緩衝器中所儲存之資訊,將核心清除排程於第一JEU之DP中。在一些實施例中,將核心清除排程在偵測到第二分支預測錯誤之後的預定數目個指令週期(例如,六個指令週期)處。在一些實施
例中,902、904、906及908與以上關於圖3描述之對應操作類似地進行。
在910處,自第一JEU接收第三分支預測錯誤之指示,該第三分支預測錯誤按程式次序比第一或第二分支預測錯誤舊。在912處,回應於此指示,阻止先前排程的核心清除之起始。在一些實施例中,此操作包括:自滑移緩衝器刪除關於第二分支預測錯誤之已儲存資訊或使該資訊無效,及/或將滑移計數器設定回至其初始化狀態,就好像針對第二分支處理根本沒有滑移。在一些實施例中,對主JEU偵測到之每一預測錯誤與當前正被滑移之任何預測錯誤進行比較。若新近偵測到之預測錯誤按程式次序比先前經滑移之預測錯誤舊,則阻止彼等先前經滑移之預測錯誤且/或自滑移緩衝器清除彼等先前經滑移之預測錯誤。以此方式,一些實施例可確保不用信號發出比另一偵測到且經滑移之預測錯誤新的預測錯誤。
一些實施例可適應類似的但稍有不同的狀況,在該等狀況下,自ROB接收較舊的殺光命令,亦即,按程式次序比相同執行緒上之第一或第二分支預測錯誤舊的殺光命令。在此等情況下,較舊殺光之指示促使如以上所描述而阻止及/或清除第二JEU上之先前經滑移之預測錯誤。
圖10例示出根據此示例性狀況之用於主JEU及次JEU的示例性DP。兩個列分別展示出主JEU DP 1004及次JEU DP 1006。在行1008處,已將用於第一分支(分支A)之分支操作排程於主JEU DP中,且已將用於第二分支
(分支B)之分支操作排程於用於次JEU之DP中。
在行1010處,將關於分支A之分支資訊從主JEU DP發送至處理器中之其他單元(例如,發送為預測錯誤作準備訊息)。在行1012處,主JEU用信號發出分支A上之預測錯誤,以起始針對該分支之核心清除處理程序。在相同指令週期中,次JEU偵測到分支B上之預測錯誤且如以上所描述地滑移。在滑移之後,主JEU偵測到較舊的預測錯誤(或殺光命令)。儘管圖10繪示在滑移之後的兩個週期偵測到此較舊的預測錯誤,但是實施例支援在滑移之後且在發送經滑移之預測錯誤信號之前的任何週期期間(例如,遲五個週期)偵測到較舊的預測錯誤。基於偵測到較舊的預測錯誤,清除滑移緩衝器且阻止針對分支B之經滑移預測錯誤。清除滑移緩衝器之此較舊的分支預測錯誤可能來自主JEU或次JEU。不論在哪一情況下,根據先前描述之狀況可應用用於該週期之組合分支及預測錯誤之適當動作。
以上實例描述滑移中存在分支,但是該滑移在主JEU用信號發出較舊的預測錯誤或殺光時尚未到達主JEU之情況。一些實施例支援額外情況,此時滑移在作用中且尚未到達主JEU,並且次JEU具有較舊的預測錯誤,同時第一JEU在作用中且具有另一分支。在此等情況下,次JEU亦滑移,且因為該次JEU係較舊的,所以其自滑移清除掉較新的預測錯誤,並且以此較舊的次預測錯誤重新開始滑移處理程序。
表1概述根據實施例之可能狀況及回應於彼等狀況所採取之動作。在表1中,第一行描述在用於主JEU之埠上接收到之資訊(例如,信號)。第二行描述在用於次JEU之埠上接收到之資訊。第三行列出在用於ROR之埠上接收到之資訊。第四行描述在每一狀況下所採取之動作。
在列1之實例中,主JEU及次JEU各自正執行相同執行緒中之分支操作且各自預測錯誤。若主JEU上之預測錯誤係較舊的,則針對此較舊的預測錯誤所起始之核心清除處理程序亦清除與第二預測錯誤相關聯之操作,且因此不採取動作被來使次JEU上之分支滑移。
在列2之實例中,主JEU及次JEU各自正執行相同執行緒中之分支操作且各自預測錯誤。在此示例性狀況下,主JEU上之預測錯誤係針對較新的分支,且次JEU上之分支如以上關於圖3及圖4所描述地滑移。
在列3之實例中,主JEU及次JEU正執行不同程式執行緒上之分支操作,且每一分支預測錯誤。因為分支係在不同的、獨立執行的執行緒上,所以處置兩個預測錯誤(例如,起始核心清除處理程序來解決每一預測錯誤)。因此,在此示例性狀況下,次JEU分支如以上關於圖3及圖4所描述地滑移。
在列4之實例中,由主JEU執行之分支並未預測錯誤,而由次JEU執行之分支預測錯誤。在此實例中,將針對次JEU的分支起始核心清除處理程序,且觸發滑移以允許次JEU取用主JEU之核心清除功能性。
在列5之實例中,非分支操作(或無操作)正在主JEU上執行(或主JEU係閒置的)且次JEU正執行分支操作。在此實例中,如以上關於圖7及圖8所描述地對次JEU進行升階。
在列6之實例中,分支正在主JEU上執行,且次JEU錯誤預測需要滑移,並且ROB請求與經滑移分支相同的主JEU分派槽之一信號被接收以處理殺光。在此實例中,如以上關於圖5及圖6所描述,使滑移延遲而在殺光操作之後發生。
在列7之實例中,分支正在主JEU上執行,且次JEU錯誤預測需要滑移,並且主JEU隨後執行ROB請求的殺光命令,該殺光命令比針對相同執行緒之預測錯誤舊。亦即,ROB信號為發生在寫入滑移之時間與讀取滑移之時間之間的殺光信號。在此實例中,如以上關於圖9及圖10所描述地阻止次JEU的分支之滑移。
在列8之實例中,主JEU及次JEU正各自執行分支操作,但皆未預測錯誤。因此,在此實例中,不執行動作。
儘管在表1中未列出,但是一些實施例支援次JEU需要滑移但在滑移緩衝器中已存在分支之額外情況。若新近經滑移之分支比當前在滑移緩衝器中之分支新,則其預測錯誤被當前在滑移緩衝器中之較舊的預測錯誤清除。然而,若新近經滑移之分支比當前在滑移緩衝器中之分支舊,則滑移緩衝器被清除,且新近經滑移之分支開始其自己的滑移處理程序。
一些實施例可支援替代性方法,在該方法中,經滑移之分支微操作由排程器沿主JEU的管線重新分派,而非滑移來自次JEU之結果。在分支如在以上所述之滑移情
況下將到達主JEU之前,此操作仍可消耗某一數目個週期(例如,六個週期)。然而,在許多情況下,比較微操作及分支微操作係組合為由微架構進行的單個「融合式」微操作。在此等情形下,滑移機制可導致較低功率,此係因為並未重新計算比較操作。比較結果在分支於次JEU上執行之後立即就緒,且可由另一取用者在隨後週期使用而非等待重新分派完成。
一些實施例提供用於啟動及/或停用次JEU之技術及/或機制。在一些情況下,在某一數目個分支操作正在處理器中執行的情況下,且/或基於針對所執行分支操作之正確分支預測及不正確分支預測之數目,可啟動次JEU。在其他時段期間可停用次JEU,以降低處理器中之功率消耗或以其他方式最佳化處理器之操作。
考慮到滑移操作用來處置預測錯誤之較長潛時可能具有不利的效能影響,在某些情況下去能次JEU可提供針對處理器效能之優點。例如,假定次JEU被賦能且可比其他情況下早三個週期來執行且/或評估分支,但是次JEU上之分支預測錯誤,其如在以上所展示之實例中一樣引起六個週期的延遲。在此等情況下,核心寬度清除及重新開始擷取之預測錯誤動作實際上比其他情況下遲三個週期(亦即,6-3)。在一些情況下,此可能並非有益權衡。
圖11繪示示例性處理器架構100,其具有類似於圖1中所展示之元件的元件,且包括額外元件來例示出
用於啟動及/或停用次JEU 112之示例性操作。如所展示,計數器128可自主JEU 110接收回饋資訊1102且/或自次JEU 112接收回饋資訊1104。在一些實施例中,計數器128包括壓力計數器,該壓力計數器基於由主JEU 110及/或次JEU 112(例如,當次JEU 112在作用中時)執行之分支操作之數目來維持壓力計數。在此等實施例中,回饋資訊1102及1104包括關於由JEU執行之分支操作之數目的資訊。在其他實施例中,計數器128包括置信度計數器,該置信度計數器基於由主JEU 110及/或次JEU 112(例如,當次JEU 112在作用中時)偵測到之正確分支預測及不正確分支預測之數目來維持置信度計數。在此等實施例中,回饋資訊1102及1104包括關於在任一JEU中偵測到之正確分支預測及不正確分支預測之數目的資訊。本文關於圖12及圖13進一步描述用於壓力計數器及置信度計數器之示例性操作。
基於接收到的回饋資訊,計數器128可將信號1106發送至RAT/ALLOC 102或其他啟動組件,以指示次JEU 112需被啟動(若其目前不在作用中)或停用(若其目前在作用中)。以此方式,計數器128可基於接收到的分支操作資訊來判定何時次JEU 112將在作用中。若信號106指示次JEU 112將被啟動,則RAT/ALLOC 102可藉由啟動次JEU 112來對該信號作出回應。
在一些實施例中,啟動次JEU 112包括將一或多個分支操作連結至次JEU 112之埠或次JEU DP 108,使得該等分支操作在次JEU 112中被解析(例如,被執行)。在一
些實施例中,RAT/ALLOC 102或其他啟動組件使用一或多種埠平衡準則或演算法來平衡兩個JEU之間的分支操作之負載。在一些實施例中,此等準則可包括選擇最小負載埠(例如,如藉由追蹤仍駐留於保留站中之該埠之未執行微操作的數目所判定)。在一些實施例中,當埠負載經稍微平均地平衡時,可使用諸如循環法(round robin)之負載平衡方法。若信號106指示次JEU 112將被停用,則RAT/ALLOC 102可藉由停用次JEU 112(例如,不再將任何分支操作連結至次JEU之埠或其DP)來對該信號作出回應。
在一些實施例中,計數器128可使用額外回饋資訊來判定何時啟動或停用次JEU 112。例如,主JEU DP 106可發送回饋資訊1108且/或次JEU DP 108可發送回饋資訊1110,回饋資訊包括關於排程於任一DP內之分支操作之資訊。RAT/ALLOC 102亦可將回饋資訊1112發送至計數器128。在一些實施例中,此回饋資訊可包括以下中之一或多者:按時間來算的分支操作密度(例如,每單位時間之分支操作數目)、作為所分配之總操作之百分比的分支操作密度、發送至主JEU所連接至的相同分派埠之所有操作之密度(例如,按時間來算或作為總操作之百分比),或其他資訊。此外,在一些實施例中,架構100之不同組件(例如,排程器104)可基於自計數器128接收的信號來啟動或停用次JEU 112。
圖12繪示用於基於分支操作資訊來啟動及/或停用次JEU的示例性處理程序1200。在此實例中,計數器128
正作為壓力計數器操作,且基於在處理器中執行之所偵測分支操作來判定何時啟動或停用次JEU。如所展示,處理程序1200接收分支操作資訊1202。此分支操作資訊可包括自主JEU接收之回饋資訊1102。另外,當次JEU在作用中時,分支操作資訊可亦包括來自次JEU之回饋資訊1104。分支操作資訊1202可進一步包括圖11中所展示之額外回饋資訊1108、1110及/或1112。
在1204處,在執行分支操作之每一指令週期期間使壓力計數遞增一遞增值,如根據接收到的分支操作資訊1202所判定。在一些實施例中,壓力計數為n個位元之二進位計數器值。例如,壓力計數可為四個位元的飽和計數器,其以0為底且以最大值15為頂。在1206處,針對每一指令週期使壓力計數遞減一衰減值。
在1208處,壓力計數器比較壓力計數與臨界值,且在壓力計數超過臨界值時用信號通知次JEU需被啟動。此信號可被發送至啟動組件,例如,如以上所描述之RAT/ALLOC 102。在1210處,在接收到該信號時,啟動組件開始將新的(例如,傳入的)分支操作連結至次JEU之埠或其DP。在1212處,當壓力計數下降至臨界值以下時,壓力計數器可用信號通知次JEU將被停用。在1214處,在接收到停用信號時,啟動組件停止將新的分支操作連結至次JEU。
在一些實施例中,啟動組件可根據滯後來操作,其中當壓力計數上升至第一(例如啟動)臨界值以上時,啟動
次JEU,且當壓力計數下降至第二(例如,停用)臨界值以下時,停用次JEU,該第二臨界值比第一臨界值低。
在一些實施例中,壓力計數器之目標係在當相當多之分支操作正被執行時賦能或去能次JEU,此係因為次JEU分支預測錯誤潛時比主JEU之分支預測錯誤潛時長六個週期。實施例可針對遞增值、衰減值及/或臨界值使用各種值。例如,對於四個位元的壓力計數,遞增值A可具有值A=2,衰減值C可具有值C=1,且臨界值可為D=8。因此,在此實例中,當壓力計數大於8時,可啟動次JEU。在一些實施例中,可將相同遞增值A用於在主JEU上偵測到之分支操作且用於在次JEU上偵測到之分支操作,使得當在任一JEU上偵測到分支操作時,使壓力計數遞增A。在其他實施例中,可使用不同遞增值B來針對在次JEU上偵測到之分支操作使壓力計數遞增。
在一些實施例中,變數A、B、C及/或D可為實行於處理器之硬體中之靜態值。在其他實施例中,此等變數可儲存在控制暫存器中且可在處理器之操作期間由該處理器之軟體、作業系統及/或基本輸入/輸出系統(BIOS)動態地控制。在一些實施例中,可使用動態調整機制(例如,爬山演算法),該動態調整機制嘗試此等變數中之一或多者之各種值且量測次JEU預測錯誤頻率及/或處理器之其他效能基準之變化,且為了使處理器效能最大化或基於其他準則而調整該等值。
在一些實施例中,壓力計數器機制可為執行緒不
可知的,亦即,該機制針對在處理器之核心上運行之所有執行緒保持單個壓力計數。在其他實施例中,可複製壓力計數器機制,使得針對每一執行的執行緒有一個機制(例如,一個壓力計數值)操作。在一些實施例中,取決於壓力計數器機制係執行緒不可知的還是執行緒特定的,可使用針對以上變數A、B、C及/或D之不同值。
圖13繪示用於基於分支操作資訊來啟動及/或停用次JEU的示例性處理程序1300。在此實例中,計數器128係作為置信度計數器操作,且基於在處理器中執行之正確地及不正確地預測的分支操作來判定何時啟動或停用次JEU。如所展示,處理程序1300接收分支操作資訊1302。如以上所描述,此資訊可包括回饋資訊1102、1104、1108、1110及/或1112。
在1304處,針對在處理器中執行之每一正確地預測之分支操作使置信度計數遞增一遞增值,如根據接收到的分支操作資訊1302所判定。在一些實施例中,置信度計數為n個位元之二進位計數器值。例如,置信度計數可為六個位元的飽和計數器,其具有最小值0及最大值63。在1306處,針對在處理器中執行之每一不正確地預測之分支操作(例如,針對每一預測錯誤)使置信度計數遞減一遞減值。
在1308處,置信度計數器將置信度計數與臨界值進行比較,且在置信度計數超過臨界值時用信號通知次JEU需被啟動。此信號可被發送至啟動組件,例如,如以
上所描述之RAT/ALLOC 102。在1310處,在接收到該信號時,啟動組件開始將新的(例如,傳入的)分支操作連結至次JEU之埠或其DP。在1312處,當置信度計數下降至臨界值以下時,置信度計數器可用信號通知次JEU將被停用。在1314處,在接收到停用信號時,啟動組件停止將新分支操作連結至次JEU。
在一些實施例中,啟動組件根據滯後來操作,使得當置信度計數到達第一(例如啟動)臨界值以上時,啟動次JEU,且當置信度計數到達第二(例如,停用)臨界值以下時,停用次JEU,該第二臨界值比第一臨界值低。
在一些實施例中,六個位元的置信度計數器可具有遞增值A=1、遞減值B=32,及臨界值D=32。如以上關於壓力計數器所描述,此等值可為靜態的或在處理器之操作期間動態地改變。此外,置信度計數器機制可為執行緒不可知的或執行緒特定的,如以上關於壓力計數器所描述。
關於以上所描述之壓力計數器或置信度計數器實施例中的任一者或兩者,在一些實施例中應注意,可能沒有特殊條件是必要的以使得在次JEU的使用上退讓。在一些情況下,自分支預測錯誤恢復可在管線中產生氣泡,該等氣泡當然可使計數器遞減且最終下降至臨界值以下,因此禁止微操作連結至次JEU。
儘管已使用特定針對結構特徵及/或方法行為之語言描述技術,但是需理解,隨附申請專利範圍不一定限
於所描述之特定特徵或行為。實情為,揭示特定特徵及行為作為實行此等技術之示例性形式。
100‧‧‧處理器架構/架構/處理器
102‧‧‧暫存器分配表及資源分配器(RAT/ALLOC)
104‧‧‧保留站/微操作排程器/排程器
106‧‧‧主JEU分派管線(主JEU DP)
108‧‧‧次JEU分派管線(主JEU DP)
110‧‧‧主JEU
112‧‧‧次JEU
114‧‧‧滑移緩衝器/計數器
116‧‧‧分支排序緩衝器(BOB)
118‧‧‧重新排序緩衝器(ROB)
128‧‧‧計數器
1102、1104、1108、1110、1112‧‧‧回饋資訊
1106‧‧‧信號
Claims (26)
- 一種處理器,其包含:用於分支操作評估之一第一跳越執行單元(JEU);用於分支操作評估之一第二JEU,該第二JEU與該第一JEU平行地操作;一啟動組件,其至少部分基於由該第一JEU識別之分支預測錯誤之一數目來啟動該第二JEU;以及一置信度計數器,該置信度計數器基於分支預測錯誤之該數目來追蹤一置信度計數,且在該置信度計數超過一啟動置信度臨界值時,用信號通知該啟動組件啟動該第二JEU。
- 如申請專利範圍第1項之處理器,其中該啟動組件使用一埠連結演算法。
- 如申請專利範圍第1項之處理器,其中當該置信度計數下降至一停用置信度臨界值以下時,該置信度計數器用信號通知該啟動組件停用該第二JEU。
- 如申請專利範圍第1項之處理器,其中該置信度計數係動態可調整的。
- 如申請專利範圍第1項之處理器,其中該置信度計數係進一步基於由該第二JEU識別之分支預測錯誤之一第二數目。
- 如申請專利範圍第1項之處理器,該第一JEU及該第二JEU平行地操作,以同時偵測一第一分支上之一第一預測錯誤及一第二分支上之一第二預測錯誤。
- 一種處理器,其包含:一第一跳越執行單元(JEU),其評估針對一第一分支預測錯誤的一第一分支操作;一計數器,其計數由該第一JEU評估之分支操作之一數目,其中該計數器為一壓力計數器,該壓力計數器回應於該第一JEU或該第二JEU執行一分支操作而使一壓力計數遞增,且在每一指令週期期間使該壓力計數遞減;以及一第二JEU,其至少部分地基於分支操作之該計數數目而被啟動,該第二JEU經啟動以在與該第一JEU評估該第一分支操作相同的一指令週期期間評估針對一第二分支預測錯誤的一第二分支操作。
- 如申請專利範圍第7項之處理器,其進一步包括一啟動組件,該啟動組件使用一埠連結演算法來啟動該第二JEU。
- 如申請專利範圍第8項之處理器,其中該計數器基於分支操作之該計數數目來用信號通知該啟動組件啟動該第二JEU。
- 如申請專利範圍第7項之處理器,其中該計數器針對在該處理器上執行之所有執行緒來計數分支操作之該數目。
- 如申請專利範圍第7項之處理器,其中該計數器個別地針對在該處理器上執行之每一執行緒來計數分支操作之該數目。
- 如申請專利範圍第7項之處理器,其中當該壓力計數超過一啟動臨界值時,該壓力計數器用信號通知該處理器之一啟動組件啟動該第二JEU。
- 如申請專利範圍第7項之處理器,其中當該壓力計數下降至一停用臨界值以下時,該壓力計數器用信號通知該處理器之一啟動組件停用該第二JEU。
- 如申請專利範圍第7項之處理器,其中該計數器為一壓力計數器,該壓力計數器回應於該第一JEU執行一分支操作而使一壓力計數遞增,且在每一指令週期期間使該壓力計數遞減。
- 一種方法,其包含下列步驟:藉由一處理器之一主跳越執行單元(JEU)來解析一第一分支;在多個指令週期中之每一者期間使一壓力計數遞減一衰減值;在偵測到一分支操作之該等多個指令週期中之每一者期間使該壓力計數遞增一遞增值;以及基於超過一啟動臨界值之該壓力計數來啟動該處理器之一次JEU以與該主JEU平行地操作,該次JEU經啟動以在與該主JEU解析該第一分支相同的一指令週期期間解析一第二分支。
- 如申請專利範圍第15項之方法,其中啟動該次JEU包括將一信號發送至該處理器之一埠連結組件,該埠連結組件回應於該信號將一或多個分支操作連結至該次 JEU之一埠。
- 如申請專利範圍第15項之方法,其進一步包括當該壓力計數下降至一停用臨界值以下時,停用該次JEU。
- 如申請專利範圍第17項之方法,其中該衰減值、該遞增值、該啟動臨界值或該停用臨界值中之至少一者係動態可調整的。
- 如申請專利範圍第15項之方法,其進一步包含,當該次JEU在作用中時,基於一平衡準則將一或多個分支操作連結至該主JEU及該次JEU。
- 一種方法,其包含下列步驟:藉由一處理器之一主跳越執行單元(JEU)來解析一第一分支;針對每一正確地預測之分支操作,使一置信度計數遞增一遞增值;針對每一不正確地預測之分支操作,使該置信度計數遞減一遞減值;以及基於超過一啟動臨界值之該置信度計數來啟動該處理器之一次跳越執行單元(JEU)以與該主JEU平行地操作,該次JEU經啟動以在與該主JEU解析該第一分支相同的一指令週期期間解析一第二分支。
- 如申請專利範圍第20項之方法,其中啟動該次JEU包括將一信號發送至該處理器之一埠連結組件,該埠連結組件回應於該信號將一或多個分支操作連結至該次JEU之一埠。
- 如申請專利範圍第20項之方法,其進一步包含,當該置信度計數下降至一停用臨界值以下時,停用該次JEU。
- 如申請專利範圍第22項之方法,其中該遞增值、該遞減值、該啟動臨界值或該停用臨界值中之至少一者係動態可調整的。
- 如申請專利範圍第20項之方法,其中啟動該次JEU包括:基於超過該啟動臨界值之該置信度計數將一信號發送至該處理器之一埠連結組件;以及在該埠連結組件處,基於一埠平衡準則且回應於該信號而將一或多個分支操作連結至該主JEU或該次JEU。
- 一種系統,其包含:至少一個處理單元,其包括:用於分支操作評估之一第一跳越執行單元(JEU);用於分支操作評估之一第二JEU;一啟動組件,其至少部分地基於該第一JEU之偵測到的分支操作來啟動該第二JEU,該第二JEU經啟動以與該第一JEU平行地操作;以及一計數器組件,該計數器組件至少部分地基於該偵測到的分支操作來用信號通知該啟動組件啟動該第二JEU,其中該計數器組件為一壓力計數器,該壓力計數器針對由該第一JEU執行之分支操作之一數目保 持一壓力計數,且在該壓力計數超過一啟動臨界值時,用信號通知該啟動組件啟動該第二JEU。
- 如申請專利範圍第25項之系統,其中該啟動組件為該至少一個處理單元之一埠連結組件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/067658 WO2013100999A1 (en) | 2011-12-28 | 2011-12-28 | Enabling and disabling a second jump execution unit for branch misprediction |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201349112A TW201349112A (zh) | 2013-12-01 |
TWI549054B true TWI549054B (zh) | 2016-09-11 |
Family
ID=48698240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101149326A TWI549054B (zh) | 2011-12-28 | 2012-12-22 | 用於分支預測錯誤之賦能及去能第二跳越執行單元之技術 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20140156977A1 (zh) |
TW (1) | TWI549054B (zh) |
WO (1) | WO2013100999A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9396044B2 (en) * | 2014-04-25 | 2016-07-19 | Sony Corporation | Memory efficient thread-level speculation |
US11809874B2 (en) * | 2022-02-01 | 2023-11-07 | Apple Inc. | Conditional instructions distribution and execution on pipelines having different latencies for mispredictions |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050210226A1 (en) * | 2004-03-18 | 2005-09-22 | Arm Limited | Function calling mechanism |
TW200745945A (en) * | 2005-10-31 | 2007-12-16 | Mips Tech Inc | Processor core and method for managing branch misprediction in an out-order processor pipeline |
TW200841238A (en) * | 2007-02-28 | 2008-10-16 | Advanced Micro Devices Inc | Parallel prediction of multiple branches |
CN101523344A (zh) * | 2006-09-27 | 2009-09-02 | 高通股份有限公司 | 用于解析同时所预测分支指令的方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809271A (en) * | 1994-03-01 | 1998-09-15 | Intel Corporation | Method and apparatus for changing flow of control in a processor |
US20050044429A1 (en) * | 2003-08-22 | 2005-02-24 | Ip-First Llc | Resource utilization mechanism for microprocessor power management |
US7890738B2 (en) * | 2005-01-20 | 2011-02-15 | International Business Machines Corporation | Method and logical apparatus for managing processing system resource use for speculative execution |
US7673122B1 (en) * | 2005-09-29 | 2010-03-02 | Sun Microsystems, Inc. | Software hint to specify the preferred branch prediction to use for a branch instruction |
KR100804647B1 (ko) * | 2005-11-15 | 2008-02-20 | 삼성전자주식회사 | 병렬형 플래시 인터페이스를 지원하는 직렬형 플래시메모리 장치를 이용한 시스템 부팅 방법 및 장치 |
-
2011
- 2011-12-28 US US13/994,699 patent/US20140156977A1/en not_active Abandoned
- 2011-12-28 WO PCT/US2011/067658 patent/WO2013100999A1/en active Application Filing
-
2012
- 2012-12-22 TW TW101149326A patent/TWI549054B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050210226A1 (en) * | 2004-03-18 | 2005-09-22 | Arm Limited | Function calling mechanism |
TW200745945A (en) * | 2005-10-31 | 2007-12-16 | Mips Tech Inc | Processor core and method for managing branch misprediction in an out-order processor pipeline |
CN101523344A (zh) * | 2006-09-27 | 2009-09-02 | 高通股份有限公司 | 用于解析同时所预测分支指令的方法及系统 |
TW200841238A (en) * | 2007-02-28 | 2008-10-16 | Advanced Micro Devices Inc | Parallel prediction of multiple branches |
Also Published As
Publication number | Publication date |
---|---|
US20140156977A1 (en) | 2014-06-05 |
WO2013100999A1 (en) | 2013-07-04 |
TW201349112A (zh) | 2013-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100880470B1 (ko) | 스레드 라이브록 유닛 | |
US7836291B2 (en) | Method, medium, and apparatus with interrupt handling in a reconfigurable array | |
US7941643B2 (en) | Multi-thread processor with multiple program counters | |
TWI498820B (zh) | 具有用於分支錯誤預測之第二跳躍執行單元的處理器 | |
EP1685486B1 (en) | Interrupt handling in an embedded multi-threaded processor to avoid priority inversion and maintain real-time operation | |
US9858101B2 (en) | Virtual machine input/output thread management | |
US10248463B2 (en) | Apparatus and method for managing a plurality of threads in an operating system | |
US7590990B2 (en) | Computer system | |
TW201030610A (en) | Method for performing fast conditional branch instructions and executing two types of conditional branch instructions and related microprocessor, computer program product and pipelined microprocessor | |
US20130173885A1 (en) | Processor and Methods of Adjusting a Branch Misprediction Recovery Mode | |
TWI549054B (zh) | 用於分支預測錯誤之賦能及去能第二跳越執行單元之技術 | |
US10740102B2 (en) | Hardware mechanism to mitigate stalling of a processor core | |
EP1323033A1 (en) | A pipelined microprocessor and a method relating thereto | |
US9626194B2 (en) | Thread livelock unit | |
JP2008204013A (ja) | スレッド動作異常検知方法、マルチスレッドシステム | |
JP2008204011A (ja) | マルチスレッドシステム、スレッド動作異常検知方法 | |
US20160364260A1 (en) | Event router and routing method for symmetric multiprocessor virtual machine using queue | |
KR102639414B1 (ko) | 멀티스레딩 프로세서 및 이의 동작 방법 | |
US20230004394A1 (en) | Thread priorities using misprediction rate and speculative depth | |
US8516231B2 (en) | Interrupt handling apparatus and method for equal-model processor and processor including the interrupt handling apparatus | |
EP1450255B1 (en) | Microcontroller device for complex processing procedures and corresponding interrupt management process | |
JP2006195705A (ja) | プロセッサ | |
JP5365201B2 (ja) | プロセス実行制御システム、プロセス実行制御方法、及びプロセス実行制御プログラム | |
JP2006146641A (ja) | マルチスレッドプロセッサ及びマルチスレッドプロセッサの割込み方法 |