TWI541721B - 使用指令序列緩衝器來增強分支預測效能的方法、系統及微處理器 - Google Patents
使用指令序列緩衝器來增強分支預測效能的方法、系統及微處理器 Download PDFInfo
- Publication number
- TWI541721B TWI541721B TW100136923A TW100136923A TWI541721B TW I541721 B TWI541721 B TW I541721B TW 100136923 A TW100136923 A TW 100136923A TW 100136923 A TW100136923 A TW 100136923A TW I541721 B TWI541721 B TW I541721B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- sequence
- branch
- instructions
- buffer
- Prior art date
Links
- 239000000872 buffer Substances 0.000 title claims description 76
- 238000000034 method Methods 0.000 title claims description 26
- 230000002708 enhancing effect Effects 0.000 title 1
- 238000010586 diagram Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000006641 stabilisation Effects 0.000 description 2
- 238000011105 stabilization Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000012536 storage buffer Substances 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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- 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/30058—Conditional branch instructions
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Description
本發明一般係關於數位電腦系統,尤其係關於選擇包括一指令序列的指令之系統及方法。
改善電腦架構效能是一項困難的工作,已經想到的改善方式有頻率調整、單指令多資料(Single Instruction Multiple Data,SIMD)、超長指令字(Very Long Instruction Word,VLIW)、多執行緒與多處理器技術。這些方式主要在於改善程式執行的處理量。許多技術都需要軟體明確並行處理,相較之下,頻率調整改善處理量與延遲,並不需要軟體明確加註並行處理。近來,頻率調整已經達到瓶頸,因此透過頻率調整來改善有困難。如此,除非有大量明確軟體並行處理,否則難以增加處理量。
關於單執行緒程式執行,程式執行由分支指令控制,指示該程式控制流程。當分支指令有條件或分支目標不直接時,程式指令序列會隨時變動。在這種情況下,基本上要讓處理器的擷取邏輯找出是否採用分支的條件分支。這可使擷取邏輯產生遵守分支目標或遵守分支指令本身之指令序列。不過這在擷取階段上存在一個問題,分支本身執行之前並不知道分支的條件成果。
在克服此問題的嘗試當中,先前技術設計已經實施分支預測邏輯,來預測分支的成果。在微處理器的擷取階段上,該預測的成果可讓擷取邏輯預期從哪個地方帶出下一個指令序列。不過問題仍舊存在,原因在於此處理在本質上需要依序進行。目前的分支需要先處理,以便知道從何處帶來下一個指令序列。因此擷取階段內處理分支的序列性質,在微處理器的單執行緒執行速度上加諸效能瓶頸。不正確分支預測的處罰通常牽涉到清除微處理器的整個管線、存取快取以及重新載入新指令序列。這些處罰會大幅降低一次預測一個以上分支的動機。
本發明的具體實施例實施一種提高指令序列的分支預測處理效能之演算法(例如方法與設備)。
在一個具體實施例內,將本發明實施為一種輸出替代指令序列的方法。該方法包括追蹤重複命中,以決定微處理器的一組經常命中指令序列。其中識別經常錯失預測的分支指令,其中該分支指令的該預測成果經常錯誤。用於該分支指令目標的替代指令序列則儲存到緩衝器內。對於該分支指令的後續命中,其中該分支指令的預測成果是錯誤的,則從該緩衝器輸出該替代指令序列。
上述為總結,因此必須簡單扼要並且省略細節;因此精通技術人士將了解,該總結僅為例示,並不成為任何限制。從下列非限制的詳細說明當中,將了解如同申請專利範圍所單獨定義的本發明之其他態樣、發明特徵以及優點。
雖然本發明已經搭配一個具體實施例來說明,但本發明並不欲限制於此處所公佈的特殊形式。相反地,吾人想要如後附申請專利範圍所定義將此等替代、修改以及同等配置合理包含在本發明的範疇內。
在下列詳細說明當中,許多特定細節,例如特定方法序列、結構、元件以及連接都已經公布。不過吾人要了解,這些與其他特定細節並不需要用於實現本發明的具體實施例。在其它情形中,已知的結構、元件或連接都已經省略或未詳細說明,以避免不必要地模糊本說明。
說明書內參考本發明的「一個具體實施例」或「具體實施例」用於表示,與該具體實施例有關連所說明的特定特徵、結構或特性包含在本發明的至少一個具體實施例內。出現在整個說明書內許多地方的「在一個具體實施例內」一詞,並不一定全都參照到同一個具體實施例,也不是與其他具體實施例互斥的個別或替代具體實施例。所述的不同特徵可由某些具體實施例展示,而其它實施例未展示。同樣,所述的不同需求可為某些具體實施例所需但是其他具體實施例不需要。
以下某些部分的詳細說明都以可在電腦記憶體上執行的資料位元上操作之程序、步驟、邏輯區塊、處理以及其他符號表示之方式來呈現。這些說明與表示為精通資料處理技術的人士用來將其工作內容灌輸給其他精通此技術人士的最有效方式。此處的程序、電腦可執行步驟、邏輯區塊、處理等等一般係認為是導致所要結果的步驟或指令的自洽序列。這些步驟為所需的物理量之物理操縱。通常,雖然非必要,不過這些量採用電腦可讀取儲存媒體並且可以在電腦系統內儲存、傳輸、結合、比較以及操縱的電或磁性信號形式。有時為了方便起見,原則上因為常用,所以這些信號代表位元、數值、元件、符號、字元、詞彙、數字等等。
不過,吾人應該瞭解,所有這些與類似詞彙都與適當的物理量相關連,並且僅為適用這些量的便利符號。除非特別說明,否則從下列討論中可瞭解,整個說明書的討論運用像是「處理」、「存取」、「寫入」、「儲存」或「複製」等詞表示電腦系統或類似電子計算裝置的動作以及處理,其操縱以及轉換代表電腦系統暫存器、記憶體和其他電腦可讀取媒體內物理(電子)量的資料成為類似代表電腦系統記憶體、暫存器或其他這種資訊儲存、傳輸或顯示裝置內物理量的其他資料。
在一個具體實施例內,本發明實施一種演算法(例如方法與設備),用於輸出替代指令序列給經常命中與經常錯失預測的分支。該方法包括追蹤一分支指令的重複命中,以決定微處理器的一組經常命中指令序列。然後識別經常錯失預測的分支指令,其中該分支指令的該預測成果經常錯誤。該分支指令的替代指令序列儲存到緩衝器內(例如指令序列緩衝器)。對於該分支指令的後續命中,其中該分支指令的該預測成果是錯誤的,則從該緩衝器輸出該替代指令序列。因此,該替代指令序列避免微處理器管線全部清除。該替代指令序列直接由該緩衝器提供,其對比於例如清除整個管線、存取快取並且組合新的指令序列。圖1顯示由本發明具體實施例操作的示範指令序列。接著圖2顯示由多層分支產生之替代指令序列的流程圖,並且圖3顯示根據本發明一個具體實施例,用於輸出替代指令序列的處理步驟之概要流程圖。
在替代具體實施例內,指令序列緩衝器的儲存資源會使用兩次。取代儲存替代指令序列,其用於經常錯失預測分支中的經常命中。該指令序列緩衝器的儲存資源用於儲存經常命中以及可靠預測分支的指令序列。因此,並非儲存替代指令序列給採用情況與不採用情況,而是使用緩衝器600的儲存資源來儲存經常命中與可靠可預測分支的指令序列,以及許多後續接續分支。底下圖6內顯示並說明此替代具體實施例。這兩個具體實施例可並存,但是用不同方式共享相同的儲存緩衝器。
圖1顯示由本發明一個具體實施例操作的示範指令序列。如圖1內所示,由圖1的頂端到底部,指令序列100總共包括16個指令。如圖1內所見,序列100包括四個分支指令101-104。
本發明具體實施例的一個目的就是輸出替代指令序列給經常命中與經常錯失預測的分支。輸出該替代指令序列,當成大幅減少從頭組裝替代指令序列的延遲處罰之手段。根據不同的具體實施例,這些指令可包括原生指令(例如微處理器架構的原生指令,例如x86指令、MIPS指令等)。另外,這些指令可包括微程式碼。如稍早所述,指令序列內包括越多分支,則發生並需要處理的組合與可能之結果序列越多。這特性例示於底下圖2內。
圖2顯示含個別程式碼區段,用於根據本發明一個具體實施例所例示每一分支的該序列指令100。如上述,指令序列內呈現越多分支,則需要辨明的指令序列組合與可能性越多。
這例示於圖2內,顯示若採用分支c1時,則發生第一結果序列「1」。如本說明書所提,若程式執行流程移動到一分支的目標,則採用該分支。這由每一分支指令末端上括號內的兩位數所表示,例如分支c1的目標為11,造成省略接下來6個指令,同樣的,分支c2的目標為10,造成省略接下來2個指令,以此類推。
如此,若發生了採用分支c2時,則顯示第二結果序列「2」。若發生了採用分支c3時,則顯示第三結果序列「3」。同樣的,若發生了採用分支c4時,則顯示第四結果序列「4」。
本發明的具體實施例輸出替代指令序列給經常命中與經常錯失預測的分支。如圖2內所示,屬於該預測指令序列的任何分支已錯失預測時,則發生不同的指令序列。本發明的具體實施例將一些這些替代指令序列儲存在非常靠近解碼器硬體的緩衝器內。輸出該儲存的替代指令序列,當成大幅減少從頭組裝替代指令序列的延遲處罰之手段。此演算法進一步圖示於底下圖3內。
圖3顯示根據本發明的一個具體實施例,用於輸出替代指令序列給經常命中與經常錯失預測的分支之設備300流程圖。如圖3內所描述,設備300包括一序列預測器301、一分支預測表302以及一系列的穩定計數器303。
在圖3的具體實施例內,設備300的作用為追蹤重複命中,來決定一組經常命中的分支及其對應的指令序列。這些分支例示為圖3內的B0至B8。如上述,根據該等分支的該分支預測,組裝一預測指令序列。顯示線條連接第一分支B0至接續分支B1與B5,以及從B1與B5到其個別接續分支B2、B4與B6,以此類推。
分支預測表302用於追蹤分支預測,以便決定哪個指令序列經常錯失預測以及哪個指令序列很少錯失預測。
在圖3的具體實施例內,分支會從初始分支B0開始往下分析三層。如此例如:替代指令序列可從B0到B1、到B2以及到B3而組裝。根據緩衝器的大小,可分析與儲存較多或較少層接續分支。
序列預測器301的作用為預測分支的成果,來組裝一預測指令序列。因此,該序列預測器可監視這些分支的執行,並且識別經常錯失預測的分支指令。可使用不同數量的機構,識別經常錯失預測的分支指令。在一個具體實施例內,使用例如序列穩定計數器303這類標籤結構,累積對於相同指令序列(例如經常擷取序列)的重複命中。一旦超過臨界值,則將已知的分支指令識別並看待成經常錯失預測分支指令。
圖4顯示根據本發明一個具體實施例,用於輸出替代指令序列的程序400步驟之概要流程圖。程序400顯示例如微處理器指令擷取模組的示範操作步驟。
程序400從步驟401開始,在此追蹤存取以便決定一組經常命中指令序列。如上述,該序列預測器組裝預測的指令序列,其可決定哪個指令序列為經常擷取的序列。
在步驟402上,在該組之外,該序列預測器識別一經常錯失預測的分支指令。如上述,此分支指令的該預測成果經常是錯誤的。
在步驟403上,用於該分支指令的替代指令序列儲存到緩衝器內。如上述,如此不能正確與可靠預測此分支成果會導致管線經常清除。不過根據本發明的具體實施例,替代指令序列儲存在指令序列緩衝器內。
在步驟404上,對於該分支指令的後續命中,其中預測成果是錯誤的,則從該緩衝器輸出該替代指令序列。因此,該替代指令序列避免微處理器管線全部清除。該替代指令序列直接由該緩衝器提供,其對比於例如清除整個管線、存取快取並且組合新的指令序列。
請注意在一個具體實施例內,該分支預測表可用於運用該分支預測表內的飽和計數器,計算重複存取至特定分支的次數,事先審查進入該標籤結構的指令序列之資格。一旦達到飽和,則將在該分支成果上開始的指令序列位址輸入該追蹤標籤結構內。此結構具有較少量的輸入,並且具有較多的飽和計數器。一旦該計數器達到判斷所儲存指令序列的大計數臨界值,則將該指令序列輸入緩衝器。
請注意在一個具體實施例內,若命中的序列係根據預測準確的分支或經常錯失預測的分支,則可使用不同的臨界值。此後每次擷取硬體跳至此特定指令序列時,則從此緩衝器存取指令序列,並由引導至此的分支之位址來加上索引。
圖5顯示根據本發明一個具體實施例的指令序列緩衝器500之圖式。如圖5內所述,緩衝器500包括三個部分501-503。緩衝器500和該等部分501-503顯示本發明具體實施例儲存從分支B0以來每一可能接續分支的替代指令序列之範例。針對每一分支B1至B8,不管採不採用,都會儲存來自每一分支的可能結果指令序列,例如:分支B0的指令序列已經採用(例如引導至B1)或不採用(例如引導至B5)都會儲存至緩衝器500。同樣地,分支B1的指令序列已經採用(例如引導至B2)或不採用(例如引導至B4)都會儲存至緩衝器500,每一接續分支都以此類推。
如此,緩衝器500包括分支B0以來的所有可能指令序列。此屬性可從分支B0的錯失預測當中迅速復原,例如:對於該分支指令B0的後續命中,其中該分支指令的預測成果是錯誤的,則可從緩衝器500迅速輸出替代指令序列。這避免清除整個管線、存取快取並且從頭組裝新替代指令序列(例如重新擷取指令等)之必要性。
圖5的具體實施例顯示部分501-503如何包括針對每一分支B0至B8的採用案例與不採用案例之指令序列。例如:部分501顯示儲存在左手邊該部分第一方式的採用案例之指令。這由該部分頂端上的「T」表示。不採用案例的指令則儲存在右手邊,由該部分頂端上的「NT」表示。採用與不採用案例呈現兩種可索引緩衝器部分或快取的方式,這由該部分頂端上的方式1「W1」與方式2「W2」表示。這些屬性針對每一其他部分502-503都類似的表示。
圖5的下半部例示索引緩衝器500的方式。在圖5的具體實施例內,若要每一接續分支的採用與不採用案例來存取替代指令序列,則使用已知接續分支的位址來索引緩衝器500。請注意,該等替代指令序列都用正交方式儲存在部分501-503內。換言之,可從已知分支採用的該等替代指令序列並不在相同部分內,例如如圖5所述,因為用於分支B1或分支B5的指令序列都將發生,所以分支B1和B5的該等替代指令序列可位於部分501內,這是因為將採用或不採用分支B0的緣故。因此並無來自分支B1和分支B5的指令都將發生的情勢。同樣地,在從分支B0移除的下一層上,用於分支B2、B4和B6的該等替代指令序列可儲存在部分502內。這些替代指令序列都互斥,只有三個其中之一可以執行。同樣地在下一層上,部分503儲存用於分支B3、B7和B8的替代指令序列。
圖6顯示根據本發明的一個具體實施例,用於儲存經常命中的可靠可預測分支之指令序列的指令序列緩衝器600之圖式。如圖6內所示,緩衝器600包括四個部分601-604。每一部分601-604都耦合至個別比較邏輯部件611-614。
圖6例示另一種指令序列緩衝器的儲存資源之使用方式。在圖6的具體實施例內,並非儲存用於經常錯失預測分支內經常命中的替代指令序列,該等儲存資源用於儲存經常命中以及可靠預測分支的指令序列。因此,並非儲存替代指令序列給採用案例與不採用案例,而是使用緩衝器600的儲存資源來儲存經常命中與可靠可預測分支的指令序列,以及許多後續接續分支。
儲存經常命中與可靠可預測分支的指令序列以及一些後續接續分支能夠提供一些優點,在後續命中上由於可靠可預測分支,該可預測分支以及一些後續接續分支的該指令序列可直接由緩衝器600提供。這節省一些有關從正常解碼器模組管線組裝可靠可預測分支指令序列的延遲週期。如此,本發明的具體實施例採用這些可靠可預測指令序列,利用提供直接來自緩衝器600的這些序列,縮短延遲週期。
請注意,緩衝器600的結構基本上與圖5的緩衝器500相同。不同之處在於其中緩衝器600加上索引的方式。如上述,緩衝器600用於儲存來自多分支的可靠可預測指令序列。該等可靠可預測指令序列有許多儲存方式,在每一部分601-604頂端上顯示為方式1「W1」和方式2「W2」。在一個具體實施例內,使用分支的位址(例如分支B1)來索引至快取內,例如在其中可靠可預測指令序列從B0流至B1到B2到B3的案例中,第一接續分支B1的位址用於索引緩衝器600,其中接續分支B2和B3用來當成標籤。接續分支B2和B3應該容許透過具有兩個不同標籤(b2和b3)的兩種不同方式,來存取相同索引。在一個具體實施例內,該分支預測的位元(例如由表302內的分支提供)也可用來當成標籤。在一個具體實施例內,接續分支B1及其個別接續分支B2和B3的雜湊(hash)應該用來存取緩衝器600。
比較邏輯部件611-614的作用為比較分支序列預測。部件611-614將預測與序列命中比較,對可靠可預測序列的相對價值打分數,例如:若可靠可預測序列因為某些因素無法強烈預測,則此部件會從緩衝器600內將此序列剔除。在一個具體實施例內,若該可靠可預測序列將成為經常錯失預測序列內的經常命中,則該序列從圖6內例示的存取與儲存方法當中移動至圖5內例示的存取與儲存方法。
請注意,緩衝器600可實施為統一快取架構。在這種具體實施例內,經常錯失預測指令序列內經常命中與經常命中和可靠可預測指令序列的指令序列都可儲存在緩衝器600的共用結構內。差異在於其所存取、索引與擷取的方法。在這種具體實施例內,需要包括邏輯來確定剔除因為衝突等情況而毀損的任何指令序列。
或者在一個具體實施例內,緩衝器600可分割或分配,使得儲存資源可分別專屬於經常錯失預測指令序列內的經常命中,以及專屬於可靠可預測指令序列。這種專屬分配藉由使指令序列比較不會彼此破壞,來簡化緩衝器600的管理。
圖7顯示根據本發明一個具體實施例,用於輸出可靠可預測指令序列的程序700步驟之概要流程圖。程序700顯示例如微處理器指令擷取模組的示範操作步驟。
程序700從步驟701開始,在此追蹤存取以便決定一組經常命中指令序列。如上述,該序列預測器組裝預測的指令序列,其可決定哪個指令序列為經常擷取的序列。
在步驟702上,在該組之外,該序列預測器識別具有一系列的後續接續分支指令的一分支指令,形成一可靠可預測指令序列。
在步驟703上,用於該分支指令的一可靠可預測指令序列儲存到緩衝器內(例如緩衝器600)。
在步驟704上,對於該分支指令的後續命中,從該緩衝器輸出該可靠可預測指令序列。這節省一些有關從正常解碼器模組管線組裝可靠可預測分支指令序列的延遲週期。如此,本發明的具體實施例採用這些可靠可預測指令序列,利用提供直接來自緩衝器600的這些序列,縮短延遲週期。
圖8顯示根據本發明一個具體實施例的示範微處理器管線800之圖式。微處理器管線800包含一擷取模組801,用於實施識別並擷取包括執行的指令之處理功能,如上述。在圖8的具體實施例內,該擷取模組接著一解碼模組802、一分配模組803、一派遣模組804、一執行模組805以及一除役模組806。請注意,微處理器管線800只是實施上述本發明具體實施例功能性的一個管線範例,精通技術人士應該了解,可實施包含上述解碼模組功能性的其他微處理器管線。
在上面的說明中,為了解釋而參考特定具體實施例做說明。不過,上面例示的討論並非用於專屬或限制本發明於所說明的精確形式中。許多修改與變化都可以上述教示為依據。具體實施例經過選擇與說明來最佳闡述本發明原理及其實際應用,並且讓其他精通此技術的人士最有效利用本發明及多種具體實施例,這些具體實施例可經多種修正以適合所考慮的特定用途。
100‧‧‧指令序列
100‧‧‧序列指令
101-104‧‧‧分支指令
300‧‧‧設備
301‧‧‧序列預測器
302‧‧‧分支預測表
303‧‧‧穩定計數器
400‧‧‧程序
401‧‧‧追蹤存取來決定一組經常命中指令序列
402‧‧‧識別經常錯失預測分支指令,其中該分支指令的預測成果經常錯誤
403‧‧‧將該分支指令的替代指令序列儲存到緩衝器內
404‧‧‧對於分支指令的後續命中,其中該預測成果是錯誤的,則從該緩衝器輸出該替代指令序列
500‧‧‧指令序列緩衝器
501-503‧‧‧部分
600‧‧‧指令序列緩衝器
601-604‧‧‧部分
611-614‧‧‧比較邏輯部件
700‧‧‧程序
701‧‧‧追蹤存取來決定一組經常命中指令序列
702‧‧‧識別具有一系列的後續經常執行分支指令的分支指令,形成一可靠可預測指令序列
703‧‧‧將該分支指令的該可靠可預測指令序列儲存到緩衝器內
704‧‧‧對於分支指令的後續命中,從該緩衝器輸出該可靠可預測指令序列
800‧‧‧微處理器管線
801‧‧‧擷取模組
802‧‧‧解碼模組
803‧‧‧分配模組
804‧‧‧派遣模組
805‧‧‧執行模組
806‧‧‧除役模組
本發明藉由範例進行說明並且不受其限制,在附圖中的數據以及其中相同的參考編號指示相同的元件。
圖1顯示由本發明一個具體實施例操作的示範指令序列。
圖2顯示含有個別程式碼區段的序列指令,應用於根據本發明一個具體實施例所例示的每一分支。
圖3顯示根據本發明的一個具體實施例,用於輸出替代指令序列給經常命中與經常錯失預測的分支之設備流程圖。
圖4顯示根據本發明一個具體實施例,用於輸出替代指令序列的處理步驟之概要流程圖。
圖5顯示根據本發明一個具體實施例的指令序列緩衝器之圖式。
圖6顯示根據本發明的一個具體實施例,用於儲存經常命中的可靠可預測分支之指令序列的指令序列緩衝器圖式。
圖7顯示根據本發明一個具體實施例,用於輸出可靠可預測指令序列的處理步驟之概要流程圖。
圖8顯示根據本發明一個具體實施例的示範微處理器管線之圖式。
400‧‧‧程序
401‧‧‧追蹤存取來決定一組經常命中指令序列
402‧‧‧識別經常錯失預測分支指令,其中該分支指令的預測成果經常錯誤
403‧‧‧將該分支指令的替代指令序列儲存到緩衝器內
404‧‧‧對於分支指令的後續命中,其中該預測成果是錯誤的,則從該緩衝器輸出該替代指令序列
Claims (20)
- 一種輸出替代指令序列的方法,該方法包括:追蹤重複命中,以決定一微處理器的一組經常命中指令序列;識別一經常錯失預測的分支指令,其中該分支指令的該預測成果經常錯誤;將用於該分支指令的一替代指令序列儲存到一緩衝器;對於該分支指令的一後續命中,其中該分支指令的該預測成果是錯誤的,則從該緩衝器輸出該替代指令序列。
- 如申請專利範圍第1項之方法,其中已識別複數個錯失預測分支目標指令,並且一對應的複數個個別替代指令序列儲存在該緩衝器內。
- 如申請專利範圍第1項之方法,其中替代指令序列被儲存於一些接續分支深度階層。
- 如申請專利範圍第3項之方法,其中已儲存的替代指令序列用於該等接續分支的採用與不採用情況。
- 如申請專利範圍第1項之方法,其中從該緩衝器輸出該替代指令序列避免引起該微處理器的一指令管線全部清除。
- 如申請專利範圍第1項之方法,其中從該緩衝器輸出該替代指令序列減少來自錯誤預測一分支指令的一效能處罰。
- 如申請專利範圍第1項之方法,其中使用一標籤結構來識別該組經常命中指令序列。
- 一種輸出替代指令序列的系統,該系統包括:一擷取模組,其存取複數個指令,這些指令包括多分支指令;一緩衝器,其儲存替代指令序列;其中該擷取模組追蹤重複命中,以決定一微處理器的一組經常命中指令序列;其中在該擷取模組識別一經常錯失預測的分支指令,其中該分支指令的該預測成果經常錯誤;該擷取模組將用於該分支指令的一替代指令序列儲存到一緩衝器;對於該分支指令的一後續命中,其中該分支指令的該預測成果是錯誤的,該擷取模組輸出來自該緩衝器的該替代指令序列。
- 如申請專利範圍第8項之系統,其中該擷取模組更識別複數個錯失預測分支指令、並將一對應的複數個個別替代指令序列儲存在該緩衝器內。
- 如申請專利範圍第8項之系統,其中該擷取模組更將替代指令序列儲存於一些接續分支深度階層。
- 如申請專利範圍第10項之系統,其中該擷取模組更儲存替代指令序列以用於該等接續分支的採用與不採用情況。
- 如申請專利範圍第8項之系統,其中從該緩衝器輸出該替代指令序列避免引起該微處理器的一指令管線全部清除。
- 如申請專利範圍第8項之系統,其中從該緩衝器輸出該替 代指令序列減少來自錯誤預測一分支指令的一效能處罰。
- 如申請專利範圍第8項之系統,其中該擷取模組更使用一標籤結構來識別該組經常命中指令序列。
- 一種實施識別指令方法的微處理器,該微處理器包括:一微處理器管線;一擷取模組,其包含於該微處理器管線內;以及一緩衝器,其耦合至該擷取模組:其中該擷取模組追蹤重複命中,以決定一微處理器的一組經常命中指令序列;其中在該擷取模組識別一經常錯失預測的分支指令,其中該分支指令的該預測成果經常錯誤;該擷取模組將用於該分支指令的一替代指令序列儲存到一緩衝器;對於該分支指令的一後續命中,其中該分支指令的該預測成果是錯誤的,該擷取模組輸出來自該緩衝器的該替代指令序列。
- 如申請專利範圍第15項之微處理器,其中已識別複數個錯失預測分支指令,並且一對應的複數個個別替代指令序列儲存在該緩衝器內。
- 如申請專利範圍第15項之微處理器,其中替代指令序列被儲存於一些接續分支深度階層,並且其中已儲存的替代指令序列用於該等接續分支的採用與不採用情況。
- 如申請專利範圍第15項之微處理器,其中從該緩衝器輸 出該替代指令序列避免引起該微處理器的一指令管線清除。
- 如申請專利範圍第15項之微處理器,其中從該緩衝器輸出該替代指令序列減少來自錯誤預測一分支指令的一效能處罰。
- 如申請專利範圍第15項之微處理器,其中使用一標籤結構來識別該組經常命中指令序列。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US39239110P | 2010-10-12 | 2010-10-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201237751A TW201237751A (en) | 2012-09-16 |
TWI541721B true TWI541721B (zh) | 2016-07-11 |
Family
ID=45938943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100136923A TWI541721B (zh) | 2010-10-12 | 2011-10-12 | 使用指令序列緩衝器來增強分支預測效能的方法、系統及微處理器 |
Country Status (5)
Country | Link |
---|---|
US (3) | US9678755B2 (zh) |
EP (1) | EP2628072B1 (zh) |
CN (2) | CN103282874B (zh) |
TW (1) | TWI541721B (zh) |
WO (1) | WO2012051262A2 (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8327115B2 (en) | 2006-04-12 | 2012-12-04 | Soft Machines, Inc. | Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode |
CN107368285B (zh) | 2006-11-14 | 2020-10-09 | 英特尔公司 | 多线程架构 |
US10228949B2 (en) | 2010-09-17 | 2019-03-12 | Intel Corporation | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
TWI525541B (zh) * | 2010-10-12 | 2016-03-11 | 軟體機器公司 | 輸出可靠可預測指令序列的方法與系統,以及實施識別指令方法的微處理器 |
US9678755B2 (en) | 2010-10-12 | 2017-06-13 | Intel Corporation | Instruction sequence buffer to enhance branch prediction efficiency |
CN103547993B (zh) | 2011-03-25 | 2018-06-26 | 英特尔公司 | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 |
CN108108188B (zh) | 2011-03-25 | 2022-06-28 | 英特尔公司 | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 |
US9842005B2 (en) | 2011-03-25 | 2017-12-12 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
TWI548994B (zh) | 2011-05-20 | 2016-09-11 | 軟體機器公司 | 以複數個引擎支援指令序列的執行之互連結構 |
CN107729267B (zh) | 2011-05-20 | 2022-01-25 | 英特尔公司 | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 |
WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
KR101703401B1 (ko) | 2011-11-22 | 2017-02-06 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
US8930674B2 (en) | 2012-03-07 | 2015-01-06 | Soft Machines, Inc. | Systems and methods for accessing a unified translation lookaside buffer |
US9229873B2 (en) | 2012-07-30 | 2016-01-05 | Soft Machines, Inc. | Systems and methods for supporting a plurality of load and store accesses of a cache |
US9740612B2 (en) | 2012-07-30 | 2017-08-22 | Intel Corporation | Systems and methods for maintaining the coherency of a store coalescing cache and a load cache |
US9710399B2 (en) | 2012-07-30 | 2017-07-18 | Intel Corporation | Systems and methods for flushing a cache with modified data |
US9916253B2 (en) | 2012-07-30 | 2018-03-13 | Intel Corporation | Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput |
US9678882B2 (en) | 2012-10-11 | 2017-06-13 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
EP2972836B1 (en) | 2013-03-15 | 2022-11-09 | Intel Corporation | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
CN105210040B (zh) | 2013-03-15 | 2019-04-02 | 英特尔公司 | 用于执行分组成块的多线程指令的方法 |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
CN104156196B (zh) * | 2014-06-12 | 2017-10-27 | 龚伟峰 | 重命名预处理方法 |
US10318303B2 (en) | 2017-03-28 | 2019-06-11 | Oracle International Corporation | Method and apparatus for augmentation and disambiguation of branch history in pipelined branch predictors |
US11068612B2 (en) * | 2018-08-01 | 2021-07-20 | International Business Machines Corporation | Microarchitectural techniques to mitigate cache-based data security vulnerabilities |
US11099851B2 (en) | 2018-10-26 | 2021-08-24 | International Business Machines Corporation | Branch prediction for indirect branch instructions |
US10846097B2 (en) * | 2018-12-20 | 2020-11-24 | Samsung Electronics Co., Ltd. | Mispredict recovery apparatus and method for branch and fetch pipelines |
US11520590B2 (en) * | 2020-09-02 | 2022-12-06 | Microsoft Technology Licensing, Llc | Detecting a repetitive pattern in an instruction pipeline of a processor to reduce repeated fetching |
WO2022212220A1 (en) * | 2021-03-27 | 2022-10-06 | Ceremorphic, Inc. | Mitigation of branch misprediction penalty in a hardware multi-thread microprocessor |
US20220308888A1 (en) * | 2021-03-27 | 2022-09-29 | Redpine Signals, Inc. | Method for reducing lost cycles after branch misprediction in a multi-thread microprocessor |
US20220308887A1 (en) * | 2021-03-27 | 2022-09-29 | Redpine Signals, Inc. | Mitigation of branch misprediction penalty in a hardware multi-thread microprocessor |
Family Cites Families (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5539911A (en) | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
US5881277A (en) * | 1996-06-13 | 1999-03-09 | Texas Instruments Incorporated | Pipelined microprocessor with branch misprediction cache circuits, systems and methods |
US6253316B1 (en) | 1996-11-19 | 2001-06-26 | Advanced Micro Devices, Inc. | Three state branch history using one bit in a branch prediction mechanism |
US5903750A (en) | 1996-11-20 | 1999-05-11 | Institute For The Development Of Emerging Architectures, L.L.P. | Dynamic branch prediction for branch instructions with multiple targets |
US6256728B1 (en) | 1997-11-17 | 2001-07-03 | Advanced Micro Devices, Inc. | Processor configured to selectively cancel instructions from its pipeline responsive to a predicted-taken short forward branch instruction |
US6609189B1 (en) | 1998-03-12 | 2003-08-19 | Yale University | Cycle segmented prefix circuits |
US6157998A (en) | 1998-04-03 | 2000-12-05 | Motorola Inc. | Method for performing branch prediction and resolution of two or more branch instructions within two or more branch prediction buffers |
US6115809A (en) | 1998-04-30 | 2000-09-05 | Hewlett-Packard Company | Compiling strong and weak branching behavior instruction blocks to separate caches for dynamic and static prediction |
US6205545B1 (en) | 1998-04-30 | 2001-03-20 | Hewlett-Packard Company | Method and apparatus for using static branch predictions hints with dynamically translated code traces to improve performance |
US6256727B1 (en) | 1998-05-12 | 2001-07-03 | International Business Machines Corporation | Method and system for fetching noncontiguous instructions in a single clock cycle |
US6260138B1 (en) | 1998-07-17 | 2001-07-10 | Sun Microsystems, Inc. | Method and apparatus for branch instruction processing in a processor |
US6332189B1 (en) | 1998-10-16 | 2001-12-18 | Intel Corporation | Branch prediction architecture |
US6247097B1 (en) | 1999-01-22 | 2001-06-12 | International Business Machines Corporation | Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions |
US6418530B2 (en) | 1999-02-18 | 2002-07-09 | Hewlett-Packard Company | Hardware/software system for instruction profiling and trace selection using branch history information for branch predictions |
US6643770B1 (en) | 1999-09-16 | 2003-11-04 | Intel Corporation | Branch misprediction recovery using a side memory |
US6457120B1 (en) | 1999-11-01 | 2002-09-24 | International Business Machines Corporation | Processor and method including a cache having confirmation bits for improving address predictable branch instruction target predictions |
US6594755B1 (en) | 2000-01-04 | 2003-07-15 | National Semiconductor Corporation | System and method for interleaved execution of multiple independent threads |
CN1156760C (zh) * | 2000-12-12 | 2004-07-07 | 智原科技股份有限公司 | 适用于处理器的存储器数据存取装置及其存取方法 |
US7024545B1 (en) | 2001-07-24 | 2006-04-04 | Advanced Micro Devices, Inc. | Hybrid branch prediction device with two levels of branch prediction cache |
US6718440B2 (en) | 2001-09-28 | 2004-04-06 | Intel Corporation | Memory access latency hiding with hint buffer |
US6938151B2 (en) * | 2002-06-04 | 2005-08-30 | International Business Machines Corporation | Hybrid branch prediction using a global selection counter and a prediction method comparison table |
JP3845043B2 (ja) | 2002-06-28 | 2006-11-15 | 富士通株式会社 | 命令フェッチ制御装置 |
JP3982353B2 (ja) | 2002-07-12 | 2007-09-26 | 日本電気株式会社 | フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム |
US7191349B2 (en) | 2002-12-26 | 2007-03-13 | Intel Corporation | Mechanism for processor power state aware distribution of lowest priority interrupt |
US7178010B2 (en) | 2003-01-16 | 2007-02-13 | Ip-First, Llc | Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack |
US7143273B2 (en) | 2003-03-31 | 2006-11-28 | Intel Corporation | Method and apparatus for dynamic branch prediction utilizing multiple stew algorithms for indexing a global history |
US7010676B2 (en) | 2003-05-12 | 2006-03-07 | International Business Machines Corporation | Last iteration loop branch prediction upon counter threshold and resolution upon counter one |
JP2005032018A (ja) | 2003-07-04 | 2005-02-03 | Semiconductor Energy Lab Co Ltd | 遺伝的アルゴリズムを用いたマイクロプロセッサ |
TWI281121B (en) | 2003-10-06 | 2007-05-11 | Ip First Llc | Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence |
EP1628235A1 (en) * | 2004-07-01 | 2006-02-22 | Texas Instruments Incorporated | Method and system of ensuring integrity of a secure mode entry sequence |
JP4287799B2 (ja) | 2004-07-29 | 2009-07-01 | 富士通株式会社 | プロセッサシステムおよびスレッド切り替え制御方法 |
US7152155B2 (en) | 2005-02-18 | 2006-12-19 | Qualcomm Incorporated | System and method of correcting a branch misprediction |
US20060200655A1 (en) | 2005-03-04 | 2006-09-07 | Smith Rodney W | Forward looking branch target address caching |
US7475231B2 (en) | 2005-11-14 | 2009-01-06 | Texas Instruments Incorporated | Loop detection and capture in the instruction queue |
US20080126771A1 (en) | 2006-07-25 | 2008-05-29 | Lei Chen | Branch Target Extension for an Instruction Cache |
US7707396B2 (en) | 2006-11-17 | 2010-04-27 | International Business Machines Corporation | Data processing system, processor and method of data processing having improved branch target address cache |
US20080235500A1 (en) | 2006-11-21 | 2008-09-25 | Davis Gordon T | Structure for instruction cache trace formation |
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 |
US7711935B2 (en) | 2007-04-30 | 2010-05-04 | Netlogic Microsystems, Inc. | Universal branch identifier for invalidation of speculative instructions |
US7870371B2 (en) | 2007-12-17 | 2011-01-11 | Microsoft Corporation | Target-frequency based indirect jump prediction for high-performance processors |
CN105468334A (zh) * | 2008-12-25 | 2016-04-06 | 世意法(北京)半导体研发有限责任公司 | 对非控制流指令减少分支检验 |
US8099586B2 (en) | 2008-12-30 | 2012-01-17 | Oracle America, Inc. | Branch misprediction recovery mechanism for microprocessors |
US20120005462A1 (en) | 2010-07-01 | 2012-01-05 | International Business Machines Corporation | Hardware Assist for Optimizing Code During Processing |
US9678755B2 (en) | 2010-10-12 | 2017-06-13 | Intel Corporation | Instruction sequence buffer to enhance branch prediction efficiency |
TWI525541B (zh) | 2010-10-12 | 2016-03-11 | 軟體機器公司 | 輸出可靠可預測指令序列的方法與系統,以及實施識別指令方法的微處理器 |
US10795683B2 (en) | 2014-06-11 | 2020-10-06 | International Business Machines Corporation | Predicting indirect branches using problem branch filtering and pattern cache |
CN105511838B (zh) | 2014-09-29 | 2018-06-29 | 上海兆芯集成电路有限公司 | 处理器及其执行方法 |
US9875106B2 (en) | 2014-11-12 | 2018-01-23 | Mill Computing, Inc. | Computer processor employing instruction block exit prediction |
JP2018005488A (ja) | 2016-06-30 | 2018-01-11 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
-
2011
- 2011-10-12 US US13/879,365 patent/US9678755B2/en active Active
- 2011-10-12 CN CN201180057070.5A patent/CN103282874B/zh active Active
- 2011-10-12 EP EP11833310.3A patent/EP2628072B1/en active Active
- 2011-10-12 TW TW100136923A patent/TWI541721B/zh active
- 2011-10-12 WO PCT/US2011/055917 patent/WO2012051262A2/en active Application Filing
- 2011-10-12 CN CN201710260951.6A patent/CN107092467B/zh not_active Expired - Fee Related
-
2016
- 2016-11-16 US US15/353,623 patent/US9921850B2/en active Active
-
2018
- 2018-01-02 US US15/860,469 patent/US10083041B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2012051262A3 (en) | 2012-06-14 |
CN107092467B (zh) | 2021-10-29 |
TW201237751A (en) | 2012-09-16 |
US10083041B2 (en) | 2018-09-25 |
US9678755B2 (en) | 2017-06-13 |
US20130311759A1 (en) | 2013-11-21 |
WO2012051262A2 (en) | 2012-04-19 |
US9921850B2 (en) | 2018-03-20 |
US20180121206A1 (en) | 2018-05-03 |
EP2628072B1 (en) | 2016-10-12 |
EP2628072A4 (en) | 2014-03-05 |
CN103282874B (zh) | 2017-03-29 |
US20170068544A1 (en) | 2017-03-09 |
CN103282874A (zh) | 2013-09-04 |
CN107092467A (zh) | 2017-08-25 |
EP2628072A2 (en) | 2013-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI541721B (zh) | 使用指令序列緩衝器來增強分支預測效能的方法、系統及微處理器 | |
TWI525541B (zh) | 輸出可靠可預測指令序列的方法與系統,以及實施識別指令方法的微處理器 | |
US10409605B2 (en) | System and method for using a branch mis-prediction buffer | |
KR101685247B1 (ko) | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 | |
US9378020B2 (en) | Asynchronous lookahead hierarchical branch prediction | |
WO2015024452A1 (zh) | 一种分支预测方法及相关装置 | |
US9740553B2 (en) | Managing potentially invalid results during runahead | |
US20030110366A1 (en) | Run-ahead program execution with value prediction | |
US9235419B2 (en) | Branch target buffer preload table | |
US5964869A (en) | Instruction fetch mechanism with simultaneous prediction of control-flow instructions | |
US7730288B2 (en) | Method and apparatus for multiple load instruction execution | |
US9311247B1 (en) | Method and apparatus for detecting patterns of memory accesses in a computing system with out-of-order program execution | |
US7343474B1 (en) | Minimal address state in a fine grain multithreaded processor | |
US11947461B2 (en) | Prefetch unit filter for microprocessor | |
US20040128488A1 (en) | Strand switching algorithm to avoid strand starvation | |
JP2023540036A (ja) | 分岐予測リダイレクトのための代替パス |