TWI827754B - 誤預測恢復裝置以及用於自誤預測中恢復的方法 - Google Patents
誤預測恢復裝置以及用於自誤預測中恢復的方法 Download PDFInfo
- Publication number
- TWI827754B TWI827754B TW108144451A TW108144451A TWI827754B TW I827754 B TWI827754 B TW I827754B TW 108144451 A TW108144451 A TW 108144451A TW 108144451 A TW108144451 A TW 108144451A TW I827754 B TWI827754 B TW I827754B
- Authority
- TW
- Taiwan
- Prior art keywords
- misprediction
- branch
- redirection
- confidence
- mispredicted
- Prior art date
Links
- 238000011084 recovery Methods 0.000 title claims abstract description 100
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000004044 response Effects 0.000 claims description 29
- 238000012937 correction Methods 0.000 claims description 17
- 230000007704 transition Effects 0.000 claims description 17
- 239000000523 sample Substances 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 31
- 238000000605 extraction Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 101100292100 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) PHO92 gene Proteins 0.000 description 2
- 101100478213 Schizosaccharomyces pombe (strain 972 / ATCC 24843) spo5 gene Proteins 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
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, 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
Abstract
根據本發明實施例的誤預測恢復裝置包括指令執行單
元、分支預測器及誤預測恢復單元(MRU)。MRU可在來自指令執行單元的誤預測重定向之後提供離散週期預測。MRU可包括分支置信度過濾器,以生成預測分支的預測置信度資訊。MRU可包括標籤內容可定址記憶體(CAM)。標籤CAM可儲存誤預測低置信度分支、探測誤預測重定向以及自分支置信度過濾器獲得預測置信度資訊。MRU可包括誤預測恢復緩衝器(MRB),以儲存標籤CAM中存在的誤預測低置信度分支的替代路徑,而不儲存指令本身。亦揭露一種用於自與指令提取管線相關聯的誤預測中恢復的方法。
Description
本申請案主張於2018年12月20日提出申請的序列號為62/783,173的美國臨時申請案的權益,所述美國臨時申請案的內容全文併入本案供參考。
本揭露是有關於積體電路,且更具體而言有關於一種用於微處理器的分支與提取管線之誤預測恢復裝置以及方法。
中央處理單元(Central processing unit,CPU)效能在很大程度上取決於準確的分支預測。處理器採用複雜的分支預測器單元,以更佳地使用CPU資源、提高效能及減少損耗功率。儘管此種預測器能夠達成非常高的準確度,然而其通常使用多個週期來預測分支,從而對「取用(taken)」分支造成代價(penalty)。即使存在高度準確的預測器,分支的子集仍然難以預測且頻繁地被誤預測。
分支誤預測(尤其是在較深的管線處理器中)非常昂
貴,乃因分支誤預測需要沖洗(flush)整個管線。分支預測器潛時(branch predictor latency)普遍成為CPU的瓶頸,預測器需要在誤預測之後趕上進度(catch up)以填充空管道。誤預測潛時(或代價)可理解為執行指令且隨後執行被迫對提取管道進行重定向的誤預測分支所耗費的週期數。此不僅取決於分支預測管道/潛時,而且取決於例如快取未中(cache miss)等可能進一步有損於效能的其他事件。
分支預測器本身在實施上有所不同。並且,普遍地,分支預測器的準確度在其速度之間存在折衷(trade off)。如若分支預測器預測出分支被取用,則分支預測器將分支與提取管道重定向為自新位址開始,且因此可能遭受所謂的取用磁泡損失(taken bubble penalty),取用磁泡損失表示等待下一預測而造成的損失的或具有高度推測性的提取週期。當機器中的其他地點不存在後壓力(back pressure)來代替磁泡時,會出現此種代價。誤預測會沖洗管線,且因此直接使機器在緊接於誤預測之後的時間內暴露於取用磁泡損失。
本揭露的實例性實施例可提供一種用於微處理器的分支與提取管線之誤預測恢復裝置以及方法。
發明態樣包括一種誤預測恢復裝置。所述誤預測恢復裝置可包括一或多個指令執行單元。所述誤預測恢復裝置可包括一
或多個分支預測器。所述誤預測恢復裝置可包括誤預測恢復單元(misprediction recovery unit,MRU),MRU耦合至所述一或多個指令執行單元及所述一或多個分支預測器,且被配置成在來自所述一或多個指令執行單元的誤預測重定向之後提供離散週期預測。
MRU可包括分支置信度過濾器,分支置信度過濾器被配置成基於來自所述一或多個分支預測器的資訊及來自所述一或多個指令執行單元的誤預測重定向來生成預測分支的預測置信度資訊。MRU可包括標籤內容可定址記憶體(content-addressable memory,CAM)。標籤CAM可儲存誤預測低置信度分支、探測來自所述一或多個指令執行單元的誤預測重定向以及自與誤預測低置信度分支相關聯的分支置信度過濾器獲得預測置信度資訊。
MRU可更包括誤預測恢復緩衝器(mispredict recovery buffer,MRB),MRB被配置成儲存標籤CAM中存在的誤預測低置信度分支的替代路徑。MRB可因應於誤預測重定向而以替代路徑驅動指令提取管線。MRB可儲存替代路徑的指令位址,而不儲存指令本身。
實施例包括一種用於自與指令提取管線相關聯的誤預測中恢復的方法。所述方法可包括自所述一或多個指令執行單元接收誤預測重定向。所述方法可包括由誤預測恢復單元(MRU)在自所述一或多個指令執行單元接收到誤預測重定向之後提供離散週期預測。所述方法可包括由分支置信度過濾器基於來自一或
多個分支預測器的資訊及來自所述一或多個指令執行單元的誤預測重定向來生成預測分支的預測置信度資訊。所述方法可包括由標籤內容可定址記憶體(CAM)儲存誤預測低置信度分支。所述方法可包括由標籤CAM探測來自所述一或多個指令執行單元的誤預測重定向。所述方法可包括由標籤CAM自與誤預測低置信度分支相關聯的分支置信度過濾器獲得預測置信度資訊。所述方法可包括由誤預測恢復緩衝器(MRB)儲存標籤CAM中存在的誤預測低置信度分支的替代路徑。
本發明可消除藉由自先前預測的磁泡損失中進行提取而獲得的磁泡損失,所述先前預測的磁泡損失是藉由在不等待當前預測器結果的條件下自先前預測的高機率基本區塊中進行提取而獲得。本發明可立即恢復延遲,並提高具有不可預測分支及高預測失誤後準確度(post-predictive failure accuracy)的內核(kernel)的效能。
100:誤預測恢復裝置
105、MRB1、MRB2、MRB3:誤預測恢復緩衝器(MRB)
108:MRB分支
110:標籤內容可定址記憶體(CAM)
115:分支置信度過濾器
118:預測置信度資訊
120:選擇器
125:有限狀態機(FSM)
130:執行單元/指令執行單元
135:預測器/分支預測器
150:誤預測恢復單元(MRU)
155:資訊/分支預測資訊
160:重定向/重定向資訊
165:預測器置信度估計器
170:指令提取管線
175:分支流
180:替代路徑
185:常用分支流
190:重定向有效訊號
195:操作
200:實例圖
205:路徑深度/替代路徑深度
210:MRB分支預測記錄
215:緩衝器深度
220:區段
300:微處理器
405:閒置狀態
410:記錄狀態
415:校正狀態
420:重定向狀態
430、435、440、445、450、455:轉變
500:波形圖/實例性波形圖/實例性時序圖
505、605:重定向
510、515、520、525:記錄
600、700:波形圖/實例性波形圖
800、802:波形圖
900:計算系統
905:系統匯流排
910:時脈
915:快閃記憶體
920:使用者介面
925:數據機
940:電池
945:記憶體控制器
brInfo、preDir:分支資訊
CLK:時脈訊號
IA:分支/目標/指令分支目標位址
IA 1、IA 2、IA N:目標/指令分支目標位址
J、K、L:分支指令
圖1示出根據本文所揭露實施例的包括誤預測恢復緩衝器的誤預測恢復裝置的實例性方塊圖。
圖2示出根據本文所揭露實施例的標籤CAM的組織的實例圖。
圖3示出根據本文所揭露實施例的包括誤預測恢復單元(MRU)的微處理器的實例性方塊圖。
圖4示出根據本文所揭露實施例的用於控制誤預測恢復緩衝器的實例性有限狀態機(finite state machine,FSM)。
圖5示出根據本文所揭露實施例的誤預測恢復緩衝器的記錄狀態的實例性波形圖。
圖6示出根據本文所揭露實施例的誤預測恢復緩衝器的重定向狀態的實例性波形圖。
圖7示出實例性波形圖,其示出具有根據本文所揭露實施例的誤預測恢復緩衝器的情形與不具有根據本文所揭露實施例的誤預測恢復緩衝器的情形的比較。
圖8A示出根據本文所揭露實施例的具有不良MRB資料的重定向狀態的實例性波形圖。
圖8B示出根據本文所揭露實施例的校正狀態的實例性波形圖。
圖9是根據本文所揭露實施例的包括誤預測恢復緩衝器的計算系統的實例性方塊圖。
現在將詳細參考本發明概念的實施例,本發明概念的實例在附圖中加以說明。在以下詳細說明中,陳述諸多具體細節以使得能夠透徹地理解本發明概念。然而,應理解,此項技術中具有通常知識者無需該些具體細節即可實踐本發明概念。在其他情形中,未對眾所習知的方法、程序、部件、電路及網路加以詳細闡述,以免使實施例的態樣不必要地模糊不清。
將理解,儘管本文中可使用「第一」、「第二」等用語來闡述各種組件,但該些組件不應受該些用語限制。該些用語僅用於區分各個組件。舉例而言,可將第一緩衝器稱為第二緩衝器,且相似地,可將第二緩衝器稱為第一緩衝器,而此並不背離本發明概念的範圍。
本文中在對本發明概念的說明中所使用的術語僅出於闡述特定實施例的目的,而並非旨在限制本發明概念。除非上下文中另外清楚地指示,否則在對本發明概念的說明及隨附申請專利範圍中所使用的單數形式「一(a/an)」及「所述(the)」旨在亦包括複數形式。亦將理解,本文中所使用的用語「及/或(and/or)」指代且囊括相關聯列出項中一或多個項的任意及所有可能組合。更將理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是規定存在所述特徵、整數、步驟、操作、組件及/或部件,但不排除存在或添加一或多個其他特徵、整數、步驟、操作、組件、部件及/或其群組。圖式中的部件及特徵未必按比例繪製。
本揭露的實施例包括具有誤預測恢復單元(MRU)的誤預測恢復裝置。MRU可包括誤預測恢復緩衝器(MRB)、標籤內容可定址記憶體(CAM)及分支預測過濾器。利用高度準確的預測器,可預測分支的大部分。換言之,該些分支中僅一子集頻繁地被誤預測。誤預測恢復裝置使用任何合適的預測器置信度估計器來辨識低置信度分支。誤預測恢復裝置接著過濾頻繁出現的低
置信度分支,並記錄/儲存緊接於誤預測之後的極有可能的預測。誤預測恢復裝置接著能夠在誤預測之後驅動分支與提取管線達幾個週期,從而在不等待當前預測器結果的條件下自先前預測的高機率基本區塊中進行提取,且因此消除取用磁泡損失。緊接於低置信度誤預測分支之後的預測及提取潛時的此種減少使得實際的較高潛時預測器趕上進度並開始填充下游的管道。因此,此會迫使對緊接於被誤預測但被標記成低置信度的分支之後的一系列基本區塊進行預測及提取。所述結構提供每一低置信度分支最有可能的基本區塊提取路徑,從而在主預測器順沿校正路徑趕上提取進度的同時消除即時(immediate)預測器取用磁泡。此種方式的一顯著優勢是具有難以預測分支及高誤預測後準確度的內核的即時潛時恢復及效能提升。
圖1示出根據本文所揭露實施例的包括誤預測恢復緩衝器(MRB)105的誤預測恢復裝置100的實例性方塊圖。誤預測恢復裝置100可包括具有誤預測恢復緩衝器105的誤預測恢復單元(MRU)150。MRU 150可更包括標籤CAM 110及分支置信度過濾器115。MRB 105可以通訊方式耦合至選擇器120。選擇器120可為例如多工器。此外,誤預測恢復裝置100可包括有限狀態機(FSM)125。如以下進一步詳細闡述,FSM 125可控制MRB 105、標籤CAM 110及/或分支置信度過濾器115的各種態樣。誤預測恢復裝置100可更包括一或多個指令執行單元130以及一或多個分支預測器135。誤預測恢復裝置100可更包括指令提取管線170。
分支置信度過濾器115可基於自所述一或多個分支預測器135接收的分支預測資訊155以及自所述一或多個指令執行單元130接收的一或多個重定向160來實施置信度估計技術。分支置信度過濾器115可使用例如誤預測之間的距離、給定時間間隔內的正確預測/錯誤預測、預測器置信度及訓練等等各種量度方式。所收集的資訊可為全域的,或者以其他方式專用於特定分支。分支置信度過濾器115可基於來自所述一或多個分支預測器135的資訊155及來自所述一或多個指令執行單元130的重定向資訊160來生成並儲存預測分支的預測置信度資訊118。
標籤CAM 110可儲存頻繁誤預測低置信度分支。標籤CAM 110藉由探測來自所述一或多個執行單元130的重定向160並自所述一或多個分支預測器135獲得例如該些分支上的預測器置信度估計器165等置信度資訊來儲存頻繁誤預測低置信度分支。MRB 105可儲存標籤CAM 110中存在的低置信度分支的一或多個替代路徑180。用語「替代路徑」是指以誤預測分支開始自預測路徑分岔出的路徑。在誤預測上,MRB 105以此種替代路徑180驅動指令提取管線170。換言之,在誤預測上,選擇器120之後的分支流175可由MRB 105所儲存的替代路徑180驅動。更具體而言,MRB 105可發送MRB分支108,MRB分支108可由選擇器120基於重定向有效訊號190來選擇。MRB 105亦可接收來自所述一或多個分支預測器135的回饋,以確認所述一或多個分支預測器135是否與MRB 105就該些重定向達成一致。當MRB 105
不驅動指令提取管線170時,常用分支流185可經由選擇器120傳遞至指令提取管線170。選擇器120可由MRB 105所生成的重定向有效訊號190控制。如195處所示,自所述一或多個指令執行單元130接收的重定向160亦可被傳遞至分支及/或提取單元。
圖2示出根據本文所揭露實施例的標籤CAM 110的組織的實例圖200。現在參照圖1及圖2。
標籤CAM 110可儲存指令分支目標位址(例如,IA 1、IA 2至IA N)以及例如預測方向及分支類型等相關聯分支資訊(例如,brInfo、preDir)。標籤CAM 110中的表項(entry)可包括饋送指令提取管線170所需的任何必要資訊。此種資訊的最基本形式包括對分支及對應目標IA(例如,IA 1、IA 2至IA N)的預測,所述預測可用於對指令提取管線170進行重定向。區段220可輸入至標籤CAM 110中並儲存於標籤CAM 110中。MRB分支預測記錄210可儲存於MRB 105中。
替代路徑深度205可依據基本區塊的部分(例如MRB分支預測記錄210)來量測。MRB分支預測記錄210各自包括指令流,所述指令流以分支的目標或者新的順序快取行開始,且以取用分支或者快取行尾結束。MRB分支預測記錄210中的每一者可包括終止於取用分支或者快取行尾處的一或多個指令流。MRB分支預測記錄210提供接下來要沿循的哪一分支的最可能預測路徑以及其去向。
所期望的路徑深度205取決於分支管道的深度或與所述
一或多個分支預測器135相關聯的潛時。由於所述一或多個預測器135平均較MRB 105更準確,因此一旦足夠數目的指令已被發送至下游(即,發送至分支流175),所述一或多個分支預測器135便可接管。標籤CAM 110的組織亦慮及緩衝器深度215,或者換言之,被追蹤並儲存於標籤CAM 110中的低置信度分支的數目。
MRB 105可預測的分支的最大數目等於路徑深度205。由於每一分支可具有取用結果或未取用結果,因此存在各自具有路徑深度205的至少兩個可能的替代路徑。更具體而言,排列的數目是2^(路徑深度205)。舉例而言,例如對於每一分支分成兩路且該些路中的每一者亦分成兩路等等的樹,為三的深度具有八個可能的路徑(即分支)。在一些實施例中,樹內僅一個此種分支被記錄於MRB 105中。當路徑中存在順序行時,可能的替代路徑的此種數目相應減少。然而,MRB 105試圖儲存最可能的路徑。更準確的所述一或多個分支預測器135可對MRB 105進行確認及/或重定向,當然其進行此種操作的速率將可能慢得多。當MRB 105仍在預測的同時發生重定向時,MRB 105可停止驅動指令提取管線170。當由所述一或多個分支預測器135確定的路徑具有較高取用機率時,可更新儲存於MRB 105中的所述一或多個替代路徑180。MRB 105可藉此訓練自己來最小化未來的重定向。
本文所揭露的實例性實施例可辨識頻繁地被誤預測的分支,並在緊接於誤預測重定向之後的短持續時間內向指令提取管線170提供離散週期預測,藉此增加分支通量並隱藏取用磁泡
損失。MRU 150可使用直接來自所述一或多個分支預測器135的預測器置信度估計器165來辨識低置信度分支。接著,MRU 150可辨識頻繁出現的低置信度分支,且可記錄或以其他方式儲存緊接於誤預測之後的極有可能的預測(即,一或多個替代路徑180)。MRB 105可在誤預測之後驅動分支流175及/或指令提取管線170達幾個週期,從而在不等待來自所述一或多個分支預測器135的當前預測器結果的條件下提取已預測的高機率基本區塊,且因此消除取用磁泡損失。
由於MRB 105可驅動分支流175,因此在一些實施例中,較長潛時的分支預測器135可被饋送路徑資料(即MRB分支108)作為輸入,且可因此在指令在下游執行中被解析之前進行預測校正。此減少了來自MRU 150的後續不良預測的代價。
MRB 105可僅儲存和驅動基本區塊分支預測,而不儲存指令本身。儘管代價是仍然自指令位址提取實際指令,然而此使得能夠達成具有大的指令佔用面積覆蓋範圍(instruction footprint coverage)的小且簡單的實施方案。
本文所揭露的實例性實施例會增加誤預測後通量(post-mispredict throughput),但不未必會減少誤預測潛時。未取用預測不需要記錄於MRB 105中。此外,恆取用分支(always-taken branch)不需要在下游進行驗證,從而使得能夠對於給定週期達成多次取用。
標籤CAM 110可使用替換策略來過濾出頻繁誤預測分
支,並以新的誤預測替換不頻繁誤預測分支。具有較高權重(即頻繁誤預測)表項的分支只要繼續誤預測便可保留於標籤CAM 110中,而低權重(即,不頻繁誤預測)表項隨著時間而被替換。在標籤CAM 110中命中的每個重定向使標籤CAM 110的對應權重遞增。一旦任何權重飽和或者當CAM 110變滿時,權重可遞減或按比例縮小,以能夠辨識不經常被存取的標籤。
圖3示出根據本文所揭露實施例的包括MRU 150的微處理器300的實例性方塊圖。微處理器300可為例如高階精簡指令集電腦機器(advanced RISC machine,ARM)處理器、精簡指令集電腦(reduced instruction set computer,RISC)處理器、x86處理器等任何合適的處理器。微處理器300可包括如本文所述的FSM 125。微處理器300可包括如本文所述的MRU 150。MRU 150可包括如本文所述的MRB 105。
圖4示出根據本文所揭露實施例的用於控制誤預測恢復緩衝器105的實例性有限狀態機(FSM)125。現在參照圖1及圖4。
在閒置狀態405中,FSM 125是閒置的。在記錄狀態410中,FSM 125正在標籤CAM 110中創建新表項,並將對應的替代路徑180儲存於MRB 105中。在校正狀態415中,基於來自所述一或多個分支預測器135的回饋,FSM 125正在以較高機率的替代路徑180替換MRB 105中現有的替代路徑180。在重定向狀態420中,FSM 125可當出現誤預測時發佈來自MRB 105的讀取,
並使用資料對指令提取管線170進行重定向。
為簡單起見,可僅容許自閒置狀態405轉變為記錄狀態410、校正狀態415及重定向狀態420。在替代實施例中,可使用更複雜的狀態機以在不回復閒置狀態405的條件下確定狀態之間的優先級。
在430處,當特定分支是低置信度分支且存在誤預測且在標籤CAM 110中不存在命中時,FSM 125可自閒置狀態405轉變為記錄狀態410。當特定MRB分支預測記錄小於路徑深度(例如,圖2所示205)時,FSM 125可保持處於記錄狀態410。當特定MRB分支預測記錄等於路徑深度(例如,圖2所示205)時或因應於停止記錄命令,在435處,FSM 125可自記錄狀態410轉變回閒置狀態405。
在440處,當特定分支是低置信度分支且存在MRB誤預測且標籤CAM 110中存在命中時,FSM 125可自閒置狀態405轉變為校正狀態415。當特定MRB分支預測記錄小於路徑深度(例如,圖2所示205)時,FSM 125可保持處於校正狀態415。在445處,當特定MRB分支預測記錄等於路徑深度(例如,圖2所示205)時或因應於停止校正命令,FSM 125可自校正狀態415轉變回閒置狀態405。
在450處,當存在誤預測且在標籤CAM 110中存在命中時,FSM 125可自閒置狀態405轉變為重定向狀態420。當特定MRB分支預測記錄小於路徑深度(例如,圖2所示205)且MRB
分支預測記錄有效時,FSM 125可保持處於重定向狀態420。在455處,當特定MRB分支預測記錄等於路徑深度(例如,圖2所示205)時或因應於管道沖洗或因應於MRB誤預測,FSM 125可自重定向狀態420轉變回閒置狀態405。
圖5示出根據本文所揭露實施例的誤預測恢復緩衝器的記錄狀態(例如,圖4所示410)的實例性波形圖500。波形圖500示出時脈訊號CLK、實例性重定向波形、實例性沖洗波形、實例性預測取用分支波形、實例性分支IA波形及實例性MRB資料波形。
波形圖500示出在處於MRB 105的記錄狀態410的同時訊號的實例性時序關係。此實例性波形圖500示出MRU 150在所辨識低置信度誤預測被重定向之後將資料記錄至MRB 105中。經過真實路徑校正的每一表項均是以被預測為具有高機率的取用分支。當特定低置信度分支被誤預測且其尚未存在於標籤CAM 110中時,所述特定低置信度分支可被拾取用於記錄於MRB 105中。在一些實施例中,MRU 150拾取欲被記錄於MRB 105中的低置信度分支。對應的標籤被儲存於標籤CAM 110中且被分派初始替換權重。後續分支作為替代路徑180儲存於MRB 105中。實例性時序圖500假定路徑深度為三(3)。如圖5中所示,因應於505處的重定向(即,不良預測),分支IA波形示出分支指令J、K及L,其中多個2磁泡(2 bubble)代價散佈於流內。MRB 105在510處開始記錄MRB資料,且在515、520及525處繼續進行記錄。
圖6示出根據本文所揭露實施例的MRB 105的重定向狀態(例如,圖4所示420)的實例性波形圖600。現在參照圖1及圖6。
波形圖600示出時脈訊號CLK、實例性重定向波形、實例性沖洗波形、實例性預測取用分支波形、實例性MRB讀取波形、實例性MRB資料波形及實例性提取波形。當誤預測分支在MRB 105中命中(即,先前記錄的誤預測情況被檢測為已再次發生)時,替代路徑180被自MRB 105讀取且在指令提取管線170上進行驅動。MRB 105可在無磁泡的條件下驅動分支流175,且由於MRB 105使用先前儲存的分支資訊,因此可在同一週期中預測多個分支。如圖6中所示,因應於605處的重定向,提取波形沿循具有MRB1、MRB2及MRB3的真實路徑,且無磁泡損失散佈於流內。誤預測之後最重要的動作是在無磁泡的條件下盡可能快地饋送指令提取管線170。因此,實例性波形圖600示出MRU 150在已記錄高置信度替代之後啟動低置信度誤預測並自低置信度誤預測中恢復。
圖7示出實例性波形圖700,其示出具有根據本文所揭露實施例的MRB的情形與不具有根據本文所揭露實施例的MRB的情形的比較。現在參照圖1及圖7。
波形圖700示出時脈訊號CLK、實例性重定向波形、實例性沖洗波形、實例性預測取用分支波形、實例性正常分支IA波形、實例性驗證取用分支波形、實例性MRB讀取波形、實例性
MRB資料波形及實例性MRB分支IA波形。
將由所述一或多個分支預測器135驅動的正常分支IA流與由MRB 105驅動的MRB分支IA流進行比較,如可在圖7中看出,正常分支IA進行散佈有磁泡的取用預測,即以在每一取用預測之間散佈兩(2)個磁泡損失來驅動指令提取管線170。由於指令提取管線170已被沖洗,因而此會在所有下游單元均閒置的點處導致六(6)個額外的磁泡。相比之下,在此實例中,MRB分支IA流節省六(6)個磁泡。在一些實施例中,所節省的磁泡數目可大於或小於六個。所述波形包括藉由正常的所述一或多個分支預測器135進行預測驗證的兩週期延遲。經驗證的取用分支波形指示所述一或多個正常的分支預測器135是否與來自MRB 105的替代路徑180達成一致,且當所述一或多個正常的分支預測器135與來自MRB 105的替代路徑180有分歧時,則所述一或多個正常的分支預測器135可使狀態被校正。
圖8A示出根據本文所揭露實施例的具有不良MRB資料的重定向狀態的實例性波形圖。圖8B示出根據本文所揭露實施例的校正狀態的實例性波形圖。現在參照圖1、圖8A及圖8B。
圖8A及圖8B所示波形圖800及802分別示出時脈訊號CLK、實例性重定向波形、實例性沖洗波形、實例性預測取用分支波形、實例性MRB讀取波形、實例性MRB資料波形及實例性提取波形。波形圖802是波形圖800的延續。
所述一或多個分支預測器135可確認MRB 105對指令
提取管線170進行重定向的預測是否準確。若所述一或多個分支預測器135確定MRB 105動作不準確,則所述一或多個分支預測器135可沖洗指令提取管線170的一部分,並自分歧點重新開始。由於MRB 105儲存最可能的一或多個路徑,因此MRB 105動作不準確的情況僅會在很小一部分時間內發生。當所述一或多個分支預測器135認為另一路徑具有較高的被取用機率時,MRB 105可修復在FSM 125的校正狀態(例如,圖4所示415)期間儲存的路徑。
在此實例中,如圖8A中所示,提取路徑具有不良MRB2及MRB3表項。不良MRB2及MRB3表項可被認為是「不良」的是因為所述一或多個分支預測器135已確定MRB 105動作不準確,或者所述一或多個分支預測器135認為另一路徑具有較高的被取用機率。如作為校正狀態(例如,圖4所示415)的圖例的圖8B中所示,不良MRB2及MRB3表項被良好MRB2及MRB3表項替換。良好MRB2及MRB3表項可被認為是「良好」是因為相較於MRB 105中所儲存者而言所述一或多個分支預測器135在一些情形中更準確。如圖8B中所示,「良好」MRB2及MRB3表項可接著作為新的MRB2及MRB3表項儲存於MRB 105中。換言之,MRB 105可藉由儲存更新的分支資訊訓練自己來最小化未來的重定向。
圖9是根據本文所揭露實施例的包括微處理器300的計算系統900的實例性方塊圖。微處理器300可與本文所述微處理
器300相同,且可電性連接至系統匯流排905。計算系統900亦可包括時脈910、隨機存取記憶體(random access memory,RAM)及/或快閃記憶體915、記憶體控制器945、使用者介面920、數據機925(例如基頻晶片組)及/或自動測試設備(automated test equipment,ATE)935,所述元件中的任一者或所有者可電性耦合至系統匯流排905。
若計算系統900是行動元件,則其可更包括為計算系統900供電的電池940。儘管圖9中未示出,然而計算系統900可更包括應用晶片組、照相機影像處理器(camera image processor,CIS)、行動動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)等。記憶體控制器945及快閃記憶體915可構成使用非揮發性記憶體來儲存資料的固態驅動器/磁碟(solid state drive/disk,SSD)。
在實例性實施例中,計算系統900可用作電腦、可攜式電腦、超行動個人電腦(Ultra Mobile PC,UMPC)、工作站、上網本(net-book)、個人數位助理(Personal Digital Assistant,PDA)、網路平板電腦(web tablet)、無線電話、行動電話、智慧型電話、電子書、可攜式多媒體播放器(portable multimedia player,PMP)、數位照相機、數位音訊記錄器/播放器、數位圖片/視訊記錄器/播放器、可攜式遊戲機、導航系統、黑盒子(block box)、三維電視、能夠在無線條件下傳輸及接收資訊的元件、構成家庭網路的各種電子元件中的一者、構成電腦網路的各種電子元件中的一者、構
成電傳網路(telematics network)的各種電子元件中的一者、射頻辨識(radio frequency identification,RFID)或構成計算系統的各種電子元件中的一者。
可藉由能夠實行上述方法的各種操作的任何合適的構件(例如,各種硬體及/或軟體部件、電路及/或模組)來實行所述操作。
發明態樣包括誤預測恢復裝置。誤預測恢復裝置可包括一或多個指令執行單元。誤預測恢復裝置可包括一或多個分支預測器。誤預測恢復裝置可包括誤預測恢復單元(MRU),MRU耦合至所述一或多個指令執行單元及所述一或多個分支預測器,且被配置成在來自所述一或多個指令執行單元的誤預測重定向之後提供離散週期預測。
MRU可包括分支置信度過濾器,分支置信度過濾器被配置成基於來自所述一或多個分支預測器的資訊及來自所述一或多個指令執行單元的誤預測重定向來生成預測分支的預測置信度資訊。MRU可包括標籤內容可定址記憶體(CAM)。標籤CAM可儲存頻繁誤預測低置信度分支、探測來自所述一或多個指令執行單元的誤預測重定向以及自與頻繁誤預測低置信度分支相關聯的分支置信度過濾器獲得預測置信度資訊。
MRU可更包括誤預測恢復緩衝器(MRB),MRB被配置成儲存標籤CAM中存在的頻繁誤預測低置信度分支的替代路徑。MRB可因應於誤預測重定向而以替代路徑驅動指令提取管
線。MRB可儲存替代路徑的指令位址,而不儲存指令本身。
在一些實施例中,替代路徑以頻繁誤預測低置信度分支中的誤預測分支開始自預測路徑分岔出。
誤預測恢復裝置可更包括指令提取管線。因應於來自所述一或多個指令執行單元的誤預測重定向,MRB可被配置成以替代路徑驅動指令提取管線。MRU可被配置成在無磁泡損失的條件下向來自MRB的指令提取管線提供離散週期預測。MRB可被配置成儲存替代路徑的指令位址,而不儲存指令本身。MRB可被配置成緊接於誤預測重定向之後儲存替代路徑。MRB可被配置成儲存多個替代路徑,所述多個替代路徑各自與標籤CAM中存在的頻繁誤預測低置信度分支中的頻繁誤預測低置信度分支相關聯。MRU可被配置成至少基於儲存於MRB中的替代路徑而在誤預測重定向之後提供離散週期預測。
誤預測恢復裝置可更包括一或多個主要的分支預測器。所述一或多個分支預測器可被配置成判斷替代路徑是否準確。因應於確定替代路徑不準確,所述一或多個分支預測器可被配置成校正發送至指令提取管線的離散週期預測。MRU可被配置成儲存經校正的離散週期預測。
誤預測恢復裝置可更包括有限狀態機(FSM),FSM被配置成控制MRU,且在閒置狀態、記錄狀態、重定向狀態及校正狀態之間進行轉變。FSM可被配置成至少因應於誤預測重定向而自閒置狀態轉變為記錄狀態。FSM可被配置成至少因應於誤預測
重定向及標籤CAM中的命中而自閒置狀態轉變為重定向狀態。
誤預測重定向可被稱為第一誤預測重定向。FSM可被配置成至少因應於與MRB相關聯的第二誤預測重定向而自閒置狀態轉變為校正狀態。FSM可被配置成至少因應於與MRB相關聯的第二誤預測重定向及標籤CAM中的命中而自閒置狀態轉變為校正狀態。
實施例包括一種用於自與指令提取管線相關聯的誤預測中恢復的方法。所述方法可包括自所述一或多個指令執行單元接收誤預測重定向。所述方法可包括由誤預測恢復單元(MRU)在自所述一或多個指令執行單元接收到誤預測重定向之後提供離散週期預測。所述方法可包括由分支置信度過濾器基於來自一或多個分支預測器的資訊及來自所述一或多個指令執行單元的誤預測重定向來生成預測分支的預測置信度資訊。所述方法可包括由標籤內容可定址記憶體(CAM)儲存頻繁誤預測低置信度分支。所述方法可包括由標籤CAM探測來自所述一或多個指令執行單元的誤預測重定向。所述方法可包括由標籤CAM自與頻繁誤預測低置信度分支相關聯的分支置信度過濾器獲得預測置信度資訊。所述方法可包括由誤預測恢復緩衝器(MRB)儲存標籤CAM中存在的頻繁誤預測低置信度分支的替代路徑。
所主張的方法可更包括由MRB因應於來自所述一或多個指令執行單元的誤預測重定向而以替代路徑驅動指令提取管線。所主張的方法可更包括由MRU在無磁泡損失的條件下向來自
MRB的指令提取管線提供離散週期預測。所主張的方法可更包括由MRB儲存替代路徑的指令位址,而不儲存指令本身。所主張的方法可更包括由MRB緊接於來自所述一或多個指令執行單元的誤預測重定向之後儲存替代路徑。
所主張的方法可更包括由所述一或多個分支預測器判斷替代路徑是否準確。所主張的方法可更包括由所述一或多個分支預測器因應於確定替代路徑不準確而校正發送至指令提取管線的離散週期預測。所主張的方法可更包括由MRU儲存經校正的離散週期預測。
所主張的方法可更包括由有限狀態機(FSM)控制MRU。所主張的方法可更包括藉由FSM在閒置狀態、記錄狀態、重定向狀態及校正狀態之間進行轉變。所主張的方法可更包括藉由FSM至少因應於誤預測重定向而自閒置狀態轉變為記錄狀態。所主張的方法可更包括藉由FSM至少因應於誤預測重定向及標籤CAM中的命中而自閒置狀態轉變為重定向狀態。在一些實施例中,誤預測重定向被稱為第一誤預測重定向。所主張的方法可更包括藉由FSM至少因應於與MRB相關聯的第二誤預測重定向而自閒置狀態轉變為校正狀態。所主張的方法可更包括由FSM至少因應於與MRB相關聯的第二誤預測重定向及標籤CAM中的命中而自閒置狀態轉變為校正狀態。
結合本文中所揭露的實施例所述的方法的方塊或步驟或者演算法及功能可直接以硬體、以由處理器執行的軟體模組或
以硬體與軟體模組的組合來體現。若以軟體來實施,則所述功能可作為一或多個指令或碼而儲存於有形非暫時性電腦可讀媒體上或經由所述有形非暫時性電腦可讀媒體來傳輸。軟體模組可駐存於以下各項中:隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(Read Only Memory,ROM)、電性可程式化唯讀記憶體(Electrically Programmable ROM,EPROM)、電性可抹除可程式化唯讀記憶體(Electrically Erasable Programmable ROM,EEPROM)、暫存器、硬碟、可移動磁碟、光碟唯讀記憶體(Compact Disc ROM,CD ROM)或此項技術中已知的任何其他形式的儲存媒體。
以下論述旨在簡要總體地闡述可實施本發明概念的某些態樣的一或多種合適的機器。通常,所述一或多種機器包括附接有處理器、記憶體(例如,RAM、ROM或其他狀態保存媒體)、儲存元件、視訊介面及輸入/輸出介面埠的系統匯流排。所述一或多種機器可至少部分地由來自傳統輸入元件(例如,鍵盤、滑鼠等)的輸入以及自另一機器接收到的指示、與虛擬現實(virtual reality,VR)環境的交互、生物回饋或其他輸入訊號進行控制。本文中所使用的用語「機器」旨在廣泛地囊括單個機器、虛擬機器、或者由進行通訊耦合的機器、虛擬機器或一起運作的元件形成的系統。示例性機器包括計算元件(例如,個人電腦、工作站、伺服器、可攜式電腦、手持式元件、電話、平板電腦等)以及運輸元件(例如,私人運輸工具或公共運輸工具,例如汽車、火車、
計程車等)。
所述一或多種機器可包括嵌入式控制器(例如可程式化或不可程式化邏輯裝置或陣列)、應用專用積體電路(Application Specific Integrated Circuit,ASIC)、嵌入式電腦、智慧卡等。所述一或多種機器可利用與一或多個遠端機器的一或多種連接,例如經由網路介面、數據機或其他通訊耦合件。機器可藉由實體網路及/或邏輯網路(例如,內部網路、網際網路、區域網路、廣域網路等)互連。熟習此項技術者將理解,網路通訊可利用各種有線及/或無線的短程或長程載波及協定,包括射頻(RF)、衛星、微波、電氣電子工程師協會(Institute of Electrical and Electronics Engineers,IEEE)545.11、藍芽®(Bluetooth®)、光纖、紅外線、纜線、雷射等。
可參考或結合相關聯的資料來闡述本發明概念的實施例,所述相關聯的資料包括在被機器存取時使得所述機器實行任務或定義抽象資料類型或低階硬體配置(hardware context)的功能、程序、資料結構、應用程式等。相關聯的資料可儲存於例如揮發性記憶體及/或非揮發性記憶體(例如,RAM、ROM等)中、或儲存於其他儲存元件及其相關聯的儲存媒體(包括硬碟驅動器(hard-drive)、軟碟、光學儲存器、磁帶、快閃記憶體、記憶條、數位視訊磁碟、生物儲存器等)中。相關聯的資料可以封包、串列資料(serial data)、並列資料(parallel data)、傳播訊號(propagated signal)等形式在傳輸環境(包括實體網路及/或邏輯網路)中遞送,
且可以壓縮格式或加密格式使用。相關聯的資料可用於分佈式環境中,並儲存於本地及/或遠端以供機器存取。
已參考所示實施例闡述並示出本發明概念的原理,將認識到,可在不背離此種原理的情況下在排列及細節上對所示實施例進行修改,且可以任何所期望的方式組合所示實施例。且儘管前述論述著重於特定實施例,然而設想存在其他配置。具體而言,儘管本文中使用例如「根據本發明概念的實施例」等表達,然而該些片語意在籠統地提及實施例可能性,而並非旨在將本發明概念限制於特定實施例配置。本文所使用的該些用語可提及可組合成其他實施例的相同或不同的實施例。
本發明概念的實施例可包括包含可由一或多個處理器執行的指令的非暫時性機器可讀媒體,所述指令包括用以實行本文中所述的本發明概念的組件的指令。
前述例示性實施例不被解釋為對前述例示性實施例的發明概念加以限制。儘管已闡述了幾個實施例,然而熟習此項技術者將易於瞭解,可在不實質上背離本揭露的新穎教示內容及優點的情況下對該些實施例進行諸多潤飾。因此,所有此種潤飾皆旨在包含於申請專利範圍中所界定的本發明概念的範圍內。
可藉由在圖形處理單元(graphics processing unit,GPU)中或在處理器核心內實施本發明特徵中的某些特徵來最佳地達成該些特徵。其他類型的處理器或應用專用積體電路(ASIC)可實施本文中所揭露的本發明原理。可在各種行動元件(例如智慧型
電話、平板電腦、筆記本電腦等)的處理器及/或記憶體模組內或在各種靜止元件(例如桌上型電腦、路由器等)中實施本發明概念。
100:誤預測恢復裝置
105:誤預測恢復緩衝器(MRB)
108:MRB分支
110:標籤內容可定址記憶體(CAM)
115:分支置信度過濾器
118:預測置信度資訊
120:選擇器
125:有限狀態機(FSM)
130:執行單元/指令執行單元
135:預測器/分支預測器
150:誤預測恢復單元(MRU)
155:資訊/分支預測資訊
160:重定向/重定向資訊
165:預測器置信度估計器
170:指令提取管線
175:分支流
180:替代路徑
185:常用分支流
190:重定向有效訊號
195:操作
Claims (19)
- 一種誤預測恢復裝置,包括:一或多個指令執行單元;一或多個分支預測器;以及誤預測恢復單元(MRU),耦合至所述一或多個指令執行單元及所述一或多個分支預測器,且被配置成在來自所述一或多個指令執行單元的誤預測重定向之後提供離散週期預測,所述誤預測恢復單元包括:分支置信度過濾器,被配置成基於來自所述一或多個分支預測器的資訊及來自所述一或多個指令執行單元的所述誤預測重定向來生成預測分支的預測置信度資訊;標籤內容可定址記憶體(CAM),被配置成:儲存誤預測低置信度分支;探測來自所述一或多個指令執行單元的所述誤預測重定向;以及自所述分支置信度過濾器獲得與所述誤預測低置信度分支相關聯的所述預測置信度資訊;以及誤預測恢復緩衝器(MRB),被配置成儲存所述標籤內容可定址記憶體中存在的所述誤預測低置信度分支的替代路徑,其中所述誤預測恢復單元被配置成基於儲存於所述誤預測恢復緩衝器中的所述替代路徑在所述誤預測重定向之後提供所述離散週期預測。
- 如請求項1所述的誤預測恢復裝置,其中所述替代路徑以所述誤預測低置信度分支中的誤預測分支開始自預測路徑分岔出。
- 如請求項2所述的誤預測恢復裝置,更包括指令提取管線,其中因應於來自所述一或多個指令執行單元的所述誤預測重定向,所述誤預測恢復緩衝器被配置成以所述替代路徑驅動所述指令提取管線。
- 如請求項3所述的誤預測恢復裝置,其中所述誤預測恢復單元被配置成在無磁泡損失的條件下向來自所述誤預測恢復緩衝器的所述指令提取管線提供所述離散週期預測。
- 如請求項1所述的誤預測恢復裝置,其中所述誤預測恢復緩衝器被配置成儲存所述替代路徑的指令位址,而不儲存指令本身。
- 如請求項1所述的誤預測恢復裝置,其中所述誤預測恢復緩衝器被配置成在所述誤預測重定向之後儲存所述替代路徑。
- 如請求項1所述的誤預測恢復裝置,其中所述誤預測恢復緩衝器被配置成儲存替代路徑,所述替代路徑各自與所述標籤內容可定址記憶體中存在的所述誤預測低置信度分支中的誤預測低置信度分支相關聯。
- 如請求項1所述的誤預測恢復裝置,其中所述一或多個分支預測器被配置成判斷所述替代路徑是否準確。
- 如請求項8所述的誤預測恢復裝置,其中因應於確定所述替代路徑不準確,所述一或多個分支預測器被配置成校正發送至指令提取管線的所述離散週期預測。
- 如請求項9所述的誤預測恢復裝置,其中所述誤預測恢復單元被配置成儲存經校正的所述離散週期預測。
- 如請求項1所述的誤預測恢復裝置,更包括有限狀態機(FSM),所述有限狀態機被配置成控制所述誤預測恢復單元,且在閒置狀態、記錄狀態、重定向狀態及校正狀態之間進行轉變。
- 如請求項11所述的誤預測恢復裝置,其中所述有限狀態機被配置成因應於所述誤預測重定向而自所述閒置狀態轉變為所述記錄狀態。
- 如請求項11所述的誤預測恢復裝置,其中所述有限狀態機被配置成因應於所述誤預測重定向及所述標籤內容可定址記憶體中的命中而自所述閒置狀態轉變為所述重定向狀態。
- 如請求項11所述的誤預測恢復裝置,其中所述誤預測重定向被稱為第一誤預測重定向,且其中所述有限狀態機被配置成因應於與所述誤預測恢復緩衝器相關聯的第二誤預測重定向而自所述閒置狀態轉變為所述校正狀態。
- 如請求項14所述的誤預測恢復裝置,其中所述有限狀態機被配置成因應於與所述誤預測恢復緩衝器相關聯的所述第二誤預測重定向及所述標籤內容可定址記憶體中的命中而自所述 閒置狀態轉變為所述校正狀態。
- 一種用於自與指令提取管線相關聯的誤預測中恢復的方法,所述方法包括:自一或多個指令執行單元接收誤預測重定向;由誤預測恢復單元(MRU)在自所述一或多個指令執行單元接收到所述誤預測重定向之後提供離散週期預測;由分支置信度過濾器基於來自一或多個分支預測器的資訊及來自所述一或多個指令執行單元的所述誤預測重定向來生成預測分支的預測置信度資訊;由標籤內容可定址記憶體(CAM)儲存誤預測低置信度分支;由所述標籤內容可定址記憶體探測來自所述一或多個指令執行單元的所述誤預測重定向;由所述標籤內容可定址記憶體自所述分支置信度過濾器獲得與所述誤預測低置信度分支相關聯的所述預測置信度資訊;由誤預測恢復緩衝器(MRB)儲存所述標籤內容可定址記憶體中存在的所述誤預測低置信度分支的替代路徑;以及由所述誤預測恢復單元基於儲存於所述誤預測恢復緩衝器中的所述替代路徑在所述誤預測重定向之後提供所述離散週期預測。
- 如請求項16所述的方法,更包括:由所述誤預測恢復緩衝器因應於來自所述一或多個指令執行單元的所述誤預測重定向而以所述替代路徑驅動指令提取管線; 由所述誤預測恢復單元在無磁泡損失的條件下向來自所述誤預測恢復緩衝器的所述指令提取管線提供所述離散週期預測;由所述誤預測恢復緩衝器儲存所述替代路徑的指令位址,而不儲存指令本身;以及由所述誤預測恢復緩衝器在來自所述一或多個指令執行單元的所述誤預測重定向之後儲存所述替代路徑。
- 如請求項17所述的方法,更包括:由所述一或多個分支預測器判斷所述替代路徑是否準確;由所述一或多個分支預測器因應於確定所述替代路徑不準確而校正發送至所述指令提取管線的所述離散週期預測;以及由所述誤預測恢復單元儲存經校正的所述離散週期預測。
- 如請求項16所述的方法,更包括:由有限狀態機(FSM)控制所述誤預測恢復單元;藉由所述有限狀態機在閒置狀態、記錄狀態、重定向狀態及校正狀態之間進行轉變;藉由所述有限狀態機因應於所述誤預測重定向而自所述閒置狀態轉變為所述記錄狀態;藉由所述有限狀態機因應於所述誤預測重定向及所述標籤內容可定址記憶體中的命中而自所述閒置狀態轉變為所述重定向狀態;其中所述誤預測重定向被稱為第一誤預測重定向,所述方法更包括: 藉由所述有限狀態機因應於與所述誤預測恢復緩衝器相關聯的第二誤預測重定向而自所述閒置狀態轉變為所述校正狀態;以及藉由所述有限狀態機因應於與所述誤預測恢復緩衝器相關聯的所述第二誤預測重定向及所述標籤內容可定址記憶體中的命中而自所述閒置狀態轉變為所述校正狀態。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862783173P | 2018-12-20 | 2018-12-20 | |
US62/783,173 | 2018-12-20 | ||
US16/281,084 US10846097B2 (en) | 2018-12-20 | 2019-02-20 | Mispredict recovery apparatus and method for branch and fetch pipelines |
US16/281,084 | 2019-02-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202026867A TW202026867A (zh) | 2020-07-16 |
TWI827754B true TWI827754B (zh) | 2024-01-01 |
Family
ID=71098602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108144451A TWI827754B (zh) | 2018-12-20 | 2019-12-05 | 誤預測恢復裝置以及用於自誤預測中恢復的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10846097B2 (zh) |
KR (1) | KR20200077401A (zh) |
CN (1) | CN111352659B (zh) |
TW (1) | TWI827754B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10990403B1 (en) * | 2020-01-27 | 2021-04-27 | Arm Limited | Predicting an outcome of an instruction following a flush |
US11334361B2 (en) | 2020-03-02 | 2022-05-17 | Arm Limited | Shared pointer for local history records used by prediction circuitry |
US11157284B1 (en) | 2020-06-03 | 2021-10-26 | Arm Limited | Predicting an outcome of an instruction following a flush |
US20220075624A1 (en) * | 2020-09-04 | 2022-03-10 | Advanced Micro Devices, Inc. | Alternate path for branch prediction redirect |
EP3989063B1 (en) * | 2020-10-23 | 2023-08-30 | INTEL Corporation | High confidence multiple branch offset predictor |
US11768688B1 (en) * | 2022-06-02 | 2023-09-26 | Microsoft Technology Licensing, Llc | Methods and circuitry for efficient management of local branch history registers |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5796998A (en) * | 1996-11-21 | 1998-08-18 | International Business Machines Corporation | Apparatus and method for performing branch target address calculation and branch prediciton in parallel in an information handling system |
US6401196B1 (en) * | 1998-06-19 | 2002-06-04 | Motorola, Inc. | Data processor system having branch control and method thereof |
US20050138480A1 (en) * | 2003-12-03 | 2005-06-23 | Srinivasan Srikanth T. | Method and apparatus to reduce misprediction penalty by exploiting exact convergence |
US9477478B2 (en) * | 2012-05-16 | 2016-10-25 | Qualcomm Incorporated | Multi level indirect predictor using confidence counter and program counter address filter scheme |
TWI567636B (zh) * | 2013-03-15 | 2017-01-21 | 軟體機器公司 | 在硬體結構中排序元素的方法與設備 |
US10083041B2 (en) * | 2010-10-12 | 2018-09-25 | Intel Corporation | Instruction sequence buffer to enhance branch prediction efficiency |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6757816B1 (en) | 1999-12-30 | 2004-06-29 | Intel Corporation | Fast branch misprediction recovery method and system |
US7711932B2 (en) * | 2003-12-02 | 2010-05-04 | Intel Corporation | Scalable rename map table recovery |
WO2008077088A2 (en) * | 2006-12-19 | 2008-06-26 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | System and method for branch misprediction prediction using complementary branch predictors |
US7685410B2 (en) * | 2007-02-13 | 2010-03-23 | Global Foundries Inc. | Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects |
US7779232B2 (en) * | 2007-08-28 | 2010-08-17 | International Business Machines Corporation | Method and apparatus for dynamically managing instruction buffer depths for non-predicted branches |
US8255669B2 (en) * | 2008-01-30 | 2012-08-28 | International Business Machines Corporation | Method and apparatus for thread priority control in a multi-threaded processor based upon branch issue information including branch confidence information |
US20110320787A1 (en) * | 2010-06-28 | 2011-12-29 | Qualcomm Incorporated | Indirect Branch Hint |
US9348599B2 (en) * | 2013-01-15 | 2016-05-24 | International Business Machines Corporation | Confidence threshold-based opposing branch path execution for branch prediction |
GB2506462B (en) * | 2013-03-13 | 2014-08-13 | Imagination Tech Ltd | Indirect branch prediction |
-
2019
- 2019-02-20 US US16/281,084 patent/US10846097B2/en active Active
- 2019-11-19 KR KR1020190149080A patent/KR20200077401A/ko active Search and Examination
- 2019-12-05 TW TW108144451A patent/TWI827754B/zh active
- 2019-12-13 CN CN201911289097.1A patent/CN111352659B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5796998A (en) * | 1996-11-21 | 1998-08-18 | International Business Machines Corporation | Apparatus and method for performing branch target address calculation and branch prediciton in parallel in an information handling system |
US6401196B1 (en) * | 1998-06-19 | 2002-06-04 | Motorola, Inc. | Data processor system having branch control and method thereof |
US20050138480A1 (en) * | 2003-12-03 | 2005-06-23 | Srinivasan Srikanth T. | Method and apparatus to reduce misprediction penalty by exploiting exact convergence |
US10083041B2 (en) * | 2010-10-12 | 2018-09-25 | Intel Corporation | Instruction sequence buffer to enhance branch prediction efficiency |
US9477478B2 (en) * | 2012-05-16 | 2016-10-25 | Qualcomm Incorporated | Multi level indirect predictor using confidence counter and program counter address filter scheme |
TWI567636B (zh) * | 2013-03-15 | 2017-01-21 | 軟體機器公司 | 在硬體結構中排序元素的方法與設備 |
Non-Patent Citations (2)
Title |
---|
期刊 Eric Jacobsen Assigning Confidence to Conditional Branch Predictions MICRO96: 29th Annual International Symposium on Microarchitecture Paris France December 2 - 4, 1996 vol IEEE Computer Society1730 Massachusetts Ave., NW Washington, DCUnited States December 2 - 4, 1996 P.145 Section 3.2; * |
網路文獻 IBM Algorithm for Instruction Cache Arbitration Among Multiple Instruction Streams IBM Technical Disclosure Bulletin 1996年8月 NN9608113 * |
Also Published As
Publication number | Publication date |
---|---|
KR20200077401A (ko) | 2020-06-30 |
CN111352659B (zh) | 2024-04-02 |
US10846097B2 (en) | 2020-11-24 |
US20200201651A1 (en) | 2020-06-25 |
TW202026867A (zh) | 2020-07-16 |
CN111352659A (zh) | 2020-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI827754B (zh) | 誤預測恢復裝置以及用於自誤預測中恢復的方法 | |
TWI506552B (zh) | 迴圈預測器指導的迴圈緩衝器 | |
CN103119537B (zh) | 用于通过使指令拾取单元掉电来降低处理器中的功耗的方法和装置 | |
CN110007961B (zh) | 一种基于risc-v的边缘计算硬件架构 | |
US9498715B2 (en) | Speculative rendering using historical player data | |
US10402200B2 (en) | High performance zero bubble conditional branch prediction using micro branch target buffer | |
CN101228506B (zh) | 用于预测分支指令的方法和设备 | |
CN100530081C (zh) | 分支预测控制 | |
US8935518B2 (en) | Electronic device with UART and input control method | |
US6760835B1 (en) | Instruction branch mispredict streaming | |
CN112230992B (zh) | 一种包含分支预测循环的指令处理装置、处理器及其处理方法 | |
US20220283811A1 (en) | Loop buffering employing loop characteristic prediction in a processor for optimizing loop buffer performance | |
WO2019099959A1 (en) | Fast pipeline restart in processor with decoupled fetcher | |
KR102635965B1 (ko) | 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법 | |
WO2018059337A1 (zh) | 数据处理装置和方法 | |
US20140156979A1 (en) | Performance in Predicting Branches | |
US11467838B2 (en) | Fastpath microcode sequencer | |
US20140379995A1 (en) | Semiconductor device for controlling prefetch operation | |
CN106843816A (zh) | 一种分支预测控制方法及装置 | |
CN105404635A (zh) | 字符串匹配的方法、设备和异构计算系统 | |
US10896022B2 (en) | Sorting using pipelined compare units | |
US10628163B2 (en) | Processor with variable pre-fetch threshold | |
EP3646171A1 (en) | Branch prediction for fixed direction branch instructions | |
US20190065964A1 (en) | Method and apparatus for load value prediction | |
US8874884B2 (en) | Selective writing of branch target buffer when number of instructions in cache line containing branch instruction is less than threshold |