TWI423123B - 用於推測性指令之無效的通用分支系統、其方法、其識別器與其電腦可讀取儲存媒體 - Google Patents
用於推測性指令之無效的通用分支系統、其方法、其識別器與其電腦可讀取儲存媒體 Download PDFInfo
- Publication number
- TWI423123B TWI423123B TW097115993A TW97115993A TWI423123B TW I423123 B TWI423123 B TW I423123B TW 097115993 A TW097115993 A TW 097115993A TW 97115993 A TW97115993 A TW 97115993A TW I423123 B TWI423123 B TW I423123B
- Authority
- TW
- Taiwan
- Prior art keywords
- branch
- instruction
- bit
- logic
- predicted
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 44
- 230000004044 response Effects 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002902 bimodal effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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
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
許多處理器使用某一類型之分支預測以預期在一給定指令流中將需要哪些指令。分支預測係用於藉由推測性擷取對應於一預測之分支路徑之指令潛在提高處理器之性能。存在許多預測分支路徑、推測性擷取指令及解析實際是否使用該預測之分支路徑或該預測之分支路徑是否係一錯誤預測的習知方法。
若針對一預測分支路徑推測性擷取指令,且之後該預測之分支路徑成為一錯誤預測之分支路徑,則應存在令該等推測性擷取之指令無效的某一方式,以便可使該等管線資源分配給其他指令。儘管一些習知推測性指令技術使用無效方法,但該等習知無效方法很複雜且難以實施或不允許令所有錯誤推測之指令瞬時(原子)無效。
本發明說明一系統之具體實施例。在一項具體實施例中,該系統係用於推測性分支預測之一系統。該系統之一具體實施例包括分支預測邏輯、擷取邏輯及分支識別邏輯。該分支預測邏輯經組態以針對一指令流中一分支預測一分支路徑。該擷取邏輯係耦合至該分支預測邏輯。該擷取邏輯經組態以推測性擷取對應於該預測之分支路徑的一指令。該分支識別邏輯係耦合至該分支預測邏輯
及該擷取邏輯。該分支識別邏輯經組態用以借助於使用一通用識別格式之一分支識別器標記該推測性擷取之指令。該通用分支識別格式在對應於該預測之分支路徑之一位元位置處包括一位元值。亦描述該系統的其他具體實施例。
亦描述一方法的具體實施例。在一項具體實施例中,該方法係用於推測性分支預測之一方法。該方法之一具體實施例包括針對一指令流中一分支預測一分支路徑,擷取對應於該預測之分支路徑的一指令,且使用一通用分支識別格式以一分支識別器標記該推測性擷取之指令。該通用分支識別格式在對應於該預測分支路徑之一位元位置處包括一位元值。亦描述該方法之其他具體實施例。
亦描述一電腦可讀取儲存媒體之具體實施例。在一項具體實施例中,該電腦可讀取儲存媒體具體化可藉由一數位處理器執行之機器可讀取指令之一程式以便實行用以促進推測性指令無效之操作。該等操作包括在一指令流中擷取對應於一預測之分支路徑的一指令之一操作。該等操作亦包括使用一通用分支識別格式以一分支識別器標記該推測性擷取之指令。該通用分支識別格式在對應於該預測之分支路徑之一位元位置處包括一位元值。該等操作亦包括令推測性擷取之指令無效的一操作以回應一無效命令。該無效命令在對應於該預測之分支路徑的位元位置處包括位元值。亦描述該電腦可讀取儲存媒體之其他具體實施例。
根據以下的詳細描述,結合附圖以及藉由範例說明的本發明的原理,可以更清楚的瞭解本發明之具體實施例的其他態樣及優點。
100‧‧‧處理器
102‧‧‧擷取邏輯
104‧‧‧解碼邏輯
106‧‧‧排程器
108‧‧‧算術邏輯單元
110‧‧‧浮點單元
112‧‧‧載入/儲存單元
114‧‧‧記憶體管理單元
116‧‧‧分支控制單元
118‧‧‧比較器
120‧‧‧分支預測邏輯
122‧‧‧指令識別邏輯
124‧‧‧指令無效邏輯
126‧‧‧檢查點暫存器
130‧‧‧指令流
132‧‧‧通用分支識別格式
134‧‧‧指令識別表
圖1描述一處理器之一項具體實施例的示意方塊圖。
圖2描述具有多重分支及預測之分支路徑的一指令流之一項具體實施例的示意圖。
圖3描述用以識別對應於不同預測之分支路徑的複數個推測
性擷取指令的一通用分支識別格式之一項具體實施例的示意圖。
圖4描述用於識別複數個推測性擷取之指令的一指令識別表之一項具體實施例的一示意圖。
圖5描述使用圖3之通用分支識別格式指派一通用分支識別器之一方法的一項具體實施例之示意流程圖。
圖6描述使用圖3之通用分支識別格式用於分支解析及清除命令產生之一方法的一項具體實施例之示意流程圖。
圖7描述圖6之解析方法的指令無效操作之一更詳細具體實施例的示意流程圖。
在整個說明中,相同參考數字可用於識別相同元件。
圖1描述一處理器100之一項具體實施例的示意方塊圖。在一項具體實施例中,處理器100實施一精簡指令集電腦(RISC)設計。此外,處理器100可基於MIPS指令集架構(ISA)實施一設計。不過,替代性具體實施例可實施其他指令集架構。此外,處理器100之其他具體實施例可筆包括圖1中所示的更少或更多組件。
所示處理器100包括擷取邏輯102、解碼邏輯104及一排程器106。一般而言,擷取邏輯102在一特定位址處自一快取記憶體(未顯示)擷取指令。一旦在該指定位址處擷取到一指令,該解碼邏輯104管理與擷取之指令相關聯之暫存器。接著,排程器106排程用於調度之每一指令至一適當執行單元。
所示處理器100包括四個執行單元,包括一算術邏輯單元(ALU)108、一浮點單元(FPU)110、一載入/儲存單元(LSU)112及一記憶體管理單元(MMU)114。此些執行單元之每一者係耦合至排程指令以藉由該等執行單元之一執行之排程器106。一旦排程一指令用以執行,可將該指令傳送至其中儲存於一指令佇列或緩衝器中的對應執行單元。
一分支控制單元116亦係耦合至該等執行單元之一或多者。在一項具體實施例中,分支控制單元116管理與預測之分支路徑相關之推測性擷取之指令。換言之,分支控制單元116可藉由清除空中指令控制該等執行單元的操作之至少一些。
在一項具體實施例中,分支控制單元116包括各種元件,例如分支預測邏輯120、指令識別邏輯122及指令無效邏輯124。分支控制單元116亦包括一分支檢查點暫存器126。分支控制單元116之其他具體實施例可包括更少或更多的邏輯組件以及其他組件。例如,分支控制單元116可包括一記憶體裝置(未圖示)。可將該分支檢查點暫存器126儲存於分支控制單元116之記憶體裝置中。或者,可將該分支控制單元116耦合至一區域記憶體裝置(例如快取記憶體)。此外,可將分支控制單元116直接或間接耦合至擷取邏輯102、解碼邏輯104及排程器106之一或多者。
在一項具體實施例中,分支預測邏輯120經組態以針對一指令流中一分支預測一分支路徑。圖2顯示一指令流中之預測之分支的一範例且下文將作詳細說明。依據分支預測邏輯120之實施方案,分支預測邏輯120可實施一或多個類型的分支預測。例如,分支預測邏輯120可實施靜態分支預測、雙峰分支預測或其他類型的分支預測。一旦預測到一分支路徑,擷取邏輯102經組態以推測性擷取對應於該預測之分支路徑的一指令。
在一項具體實施例中,指令識別邏輯122經組態以借助於使用一通用分支識別格式之一分支識別器標記該推測性擷取之指令。該通用分支識別格式在對應於該預測分支路徑之一位元位置處包括一位元值。特定言之,通用分支識別格式針對各分支指派一位元位置,且針對各預測之分支路徑進一步指派一位元值。例如,一預測之分支路徑之位元值可為一邏輯高信號(例如邏輯"1")或一邏輯低信號(例如邏輯"0")。
可在一多緒系統中實施其他具體實施例,其中在處理器100
之管線中同時擷取及/或執行多緒。在一多緒系統中,通用分支識別格式亦包括一執行緒識別器。以此方式,一執行緒之一分支錯誤預測導致屬於該執行緒但不屬於其他執行緒之指令的無效。除位元向量(即位置與值)外,無效格式係延伸包括一執行緒ID。各種執行單元中的比較器比較該等執行緒識別器與一無效命令之執行緒識別器。此促進必要時將無效命令限制於特定執行緒。在一些具體實施例中,使用位元向量,而對多緒環境不作任何改變。在另一項具體實施例中,將位元向量分割成群組,每一群組對應於一特定執行緒。在此具體實施例中,無效命令不需要進行延伸以包括執行緒ID。下面結合圖3之說明提供該通用分支識別格式之一具體實施例的額外細節。
在一項具體實施例中,該指令無效邏輯124經組態用以令一推測性擷取之指令無效以回應一無效命令。可產生該無效命令(例如)以回應一錯誤預測之分支之出現。或者,可產生該無效命令以回應例外或另一類型之事件的出現。若一指令遇到例外,則分支控制單元116可等待所有先前指令完成,且接著針對所對應之分支路徑發出一清除。以此方式,不必清除例外之前的指令。
在一項具體實施例中,無效命令包括在對應於一預測之分支路徑之一位元位置處的一位元值。儘管下文更詳細的描述無效命令之格式與實施方案,但應注意,執行單元(即ALU 108、FPU 110、LSU 112及MMU 114)之每一者包括一比較器118以比較該無效命令及與對應指令佇列中之空中指令之任一者相關聯之分支識別器。以此方式,比較器118依據無效命令是否匹配分支識別器之任一者,決定是否令空中指令之任一者無效。
在一項具體實施例中,分支檢查點暫存器126係用於檢查一分支指令前處理器100之狀態。儘管可以各種組態實施分支檢查點暫存器126,但一些具體實施例仍使用分支檢查點暫存器126之項目內的分支位置作為分支識別器中的位置。以此方式,針對
各分支之一位置之分配很簡單且不需要額外的邏輯。
圖2描述具有多分支及預測之分支路徑之一指令流130之一項具體實施例的示意圖。各非分支指令係指定為Ii,其中在指令流130中顯示八個非分支指令I0至I7。各分支係指定為BRi,其中在指令流130中顯示三個分支BR0至BR2。使用一實線箭頭指定經預測之各分支路徑,而使用虛線箭頭指定未經預測之分支路徑。
為識別指令流130之各種指令,可使用通用分支識別格式。在一項具體實施例中,通用分支識別格式包括與各分支相關聯之一位元位置,及與對應分支之各預測之分支路徑相關聯之一位元值。以此方式,在一預測之分支路徑中的各指令將指派一分支識別器,其在對應之位元位置處具有對應之位元值。例如,在根據分支BR0之預測之分支路徑中的指令I2及I3可具有與在位元位置"0"之一位元值"1"相關聯的分支識別器。以類似方式,在根據分支BR1之預測之分支路徑中的指令I4及I5可具有與在位元位置"1"之一位元值"1"相關聯的分支識別器。此外,在根據分支BR2之預測之分支路徑中的指令I6及I7可具有與在位元位置"2"之一位元值"1"相關聯的分支識別器。
圖3描述用於識別對應於不同預測之分支路徑的複數個預測性擷取指令的一通用分支識別格式132之一項具體實施例的示意圖。所示通用分支識別格式132包括以位置"0"、位置"1"及位置"2"指定的三個位元位置。此等位元位置對應於指令流130中的特定分支。特定言之,位元位置"0"對應於分支BR0,位元位置"1"對應於分支BR1,且位元位置"2"對應於圖2中所示之指令流130之分支BR2。
如一範例,位元位置"0"處的位元值為邏輯"1",其指示對應之推測性指令與分支BR0之預測之分支路徑相關聯。相反,在位元位置"1"及"2"處的位元值係邏輯"0",其指示對應之推測性指令與
分支BR1及BR2之預測性分支路徑無關。
以此方式,通用分支識別格式132可藉由簡單改變在對應位元位置處的位元值用於指令流130中的所有指令。當各位元位置係用於指令流130中的至少一分支時,通用分支識別格式藉由使用n個位元可識別至少n個且至多2n個不同的預測之分支路徑。特定言之,通用分支預測格式可藉由使用一單一分支之各位元位置識別使用n個位元之n個未解析之分支路徑。
在一些具體實施例中,通用分支預測格式可使用指令流130中的兩個分支的各位元位置識別2n個預測之分支路徑。為使用兩個分支的各位元位置,可使用不同位元值識別指派相同位元位置之不同分支。例如,指派為位元位置"0"之一分支的第一預測之分支路徑可由邏輯"1"表示,而指派相同位元位置之一第二分支的第二預測之分支路徑可由邏輯"0"表示。以此方式,針對相同指令流130中的不同分支使用交替位元值,可重新使用該等位元值。
在某些具體實施例中,一單一位元位置可用於藉由邏輯倒轉舊值且使用倒轉值作為一後續預測之分支路徑之新值來識別多個預測分支路徑。該分支識別器中的所有其他位元係保持相同。此外,分支識別器中的某些位元可不使用。未使用之位元可用於新的分支。在某些具體實施例中,該等位元可視為"隨意位元"。然而,其他位元對應於上代分支,此有效允許新分支"繼承"舊分支的位元。因此,可不必分別追蹤上代位元位置與值。
圖4描述用於識別複數個推測性擷取之指令的一指令識別表134之一項具體實施例的一示意圖。在所示具體實施例中,三個位元位置係用於識別與指令流130中的三個分支之預測之分支路徑相關聯的指令。
指令識別表134指示指令I2與I3以及分支指令BR1,其皆與對應於位置"0"(最右端位元位置)之分支的預測之分支路徑相關聯,因為在位元位置"0"處,位元值為"1"。此關係可自圖2之指
令流130看出。
同樣,指令識別表134指示指令I4與I5以及分支指令BR2,其皆與對應於位置"1"(中心位元位置)之分支的預測之分支路徑相關聯,因為在位元位置"1"處,位元值為"1"。對於指令I4、I5以及BR2,分支識別器亦指示該等指令亦與對應於位元位置"0"之分支的預測之分支路徑相關聯。此關係係由位元位置"0"中的底線之"1"表示。指令識別表134中的該等底線值表示自先前預測之分支路徑的繼承位元值。先前預測之分支路徑亦可稱作先前上代分支路徑。例如,與分支BR1相關聯之預測之分支路徑係與分支BR2相關聯之預測之分支路徑的預測之上代分支路徑。
指令識別表134亦指示指令I6與I7係與對應於位置"2"(最左端的位元位置)之分支的預測之分支路徑相關聯,因為在位元位置"2"處,位元值為"1"。對於指令I6及I7,分支識別器亦指示該等指令亦與對應於位元位置"0"及"1"之分支BR0及BR1的預測之上代分支路徑相關聯。
為令對應於一預測之分支路徑之指令無效(例如用以回應一錯誤預測之分支),指令無效邏輯124可發出具有(pos,val)之格式的一無效命令,其中pos指定對應於預測之分支路徑的位元位置,且val指定對應於該預測之分支路徑之位元值。或者,在一多緒處理器中,無效命令亦可具有(threadID,pos,val)之一格式以指示執行緒識別器。若該分支識別器難以分割成多個群組,則可省略執行緒ID。在其他具體實施例中,指令無效邏輯124可發出具有其他格式之無效命令。
如一範例,若指令無效邏輯124發出一無效命令以令與在分支BR2處的預測之分支路徑相關聯之指令無效或將其清除,則可將該無效命令格式化為(2,1)以指示應令在位元位置"2"處具有一位元值"1"之指令無效。再參考圖2之指令流130及圖4之指令識別表134,此無效命令將令指令I6及I7無效,因為其在位元位置
"2"處各具有一位元值"1"。
如另一範例,若指令無效邏輯124發出一無效命令以令與在分支BR1處的預測之分支路徑相關聯之指令無效或將其清除,則可將該無效命令格式化為(1,1)以指示應令在位元位置"1"處具有一位元值"1"之指令無效。再參考圖2之指令流130及圖4之指令識別表134,此無效命令將令包括分支指令BR2在內的指令I4至I7無效,因為其在位元位置"1"處各具有一位元值"1"。應注意,此無效命令將令與BR1及BR2兩者之預測分支路徑相關聯的指令無效,因為分支BR1之預測之分支指令係分支BR2之一預測之上代分支路徑。結果,所有指令I4至I7係取決於分支BR1處的預測之分支路徑,且指令I6及I7在位元位置"1"處包括一繼承位元值"1",因此該無效命令將令所有指令I4至I7無效。
如另一範例,若指令無效邏輯124發出一無效命令以令與在分支BR0處的預測之分支路徑相關聯之指令無效或將其清除,則可將該無效命令格式化為(0,1)以指示應令在位元位置"0"處具有一位元值"1"之指令無效。再參考圖2之指令流130及圖4之指令識別表134,此無效命令將令包括分支指令BR1及BR2在內的指令I2至I7無效,因為其在位元位置"0"處各具有一位元值"1"。
應注意,此無效命令將令與BR0、BR1及BR2之預測分支路徑相關聯的指令無效,因為分支BR0之預測之分支指令係分支BR1及BR2之一預測之上代分支路徑。結果,所有指令I2至I7係取決於分支BR0處的預測之分支路徑,且指令I4及I7在位元位置"0"處包括一繼承位元值"1",因此該無效命令將令所有指令I2至I7無效。
應注意,某些具體實施例在一單一記憶體位置中可儲存指令識別表134之一代表符。在其他具體實施例中,可橫跨或在整個管線上分佈對應於指令識別表134之資訊。
圖5描述使用圖3之通用分支識別格式指派一通用分支識別
器之一方法的一項具體實施例之示意流程圖。可結合圖1所示且如上所述之處理器100實施指派方法140之某些具體實施例。可結合其他類型的處理器(例如一多緒處理器)實施指派方法140之其他具體實施例。
在一項具體實施例中,將位元值與位元位置初始化成預設值,例如(0,0)。在指派方法140中,擷取邏輯102推測性擷取142用於一指令流的下一指令。接下來,分支控制單元116使用通用分支識別格式132以一當前分支識別器標記144該指令。在一項具體實施例中,如上所述,分支控制單元116調用指令識別邏輯122以建立指令識別表134,以記錄指派給每一指令之分支識別器。
接著,分支控制單元116決定146所擷取指令是否係一分支指令,若否,則返回擷取142指令流中的下一指令。否則,若所擷取指令係一分支指令,則分支控制單元116採用148現有分支識別器並向新分支指派150任何未用的單元位置。在一項具體實施例中,該未使用的位元位置可為首先可以一特定順序使用之一發現。或者,該未使用之位元位置可為與先前選定位元位置之順序無關的任何位元位置。或者,此位元位置可與分支檢查點暫存器126中之分支位置相同。
接著,分支識別邏輯122倒轉152新指派的位元位置之邏輯值以向對應的預測分支路徑在該位元位置處給定一唯一值。例如,若在選定位元位置處的位元值先前為邏輯"0",則分支識別邏輯122將該邏輯值倒轉成邏輯"1"。或者,若在選定位元位置處的位元值先前為邏輯"1",則分支識別邏輯122將該邏輯值倒轉成邏輯"0"。接著,分支識別邏輯122暫存154新的位元位置與位元值(即(pos,val)對)作為一分支識別器用以後續使用。此新(pos,val)對係與引起其之分支相關聯,儘管該分支自身繼承舊的位元向量。若此分支經錯誤預測,則該新(pos,val)對係用於無效命令中。在一項具體實施例中,分支控制單元116將更新之分支識別器儲存於一區
域記憶體裝置中。接著結束所示指派方法140。
應注意,在一項具體實施例中,更新分支識別器以使一次僅改變一個位元值。在非選定位元位置中的所有其他位元值保持相同。一些位元位置可不使用,因為未將其指派給一預測分支路徑,或已解析其所指派給的分支。該等未使用的位元可為"隨意位元"。剩餘位元屬於上代分支,且藉由保持該等上代分支的該等位元值,允許新分支識別器繼承合適的位元值以指示兩個或更多分支路徑之間的一分支相依性。以此方式,令一上代分支路徑之一指令無效的一無效命令可延伸以清除所有子分支及相關指令。
圖6描述使用圖3之通用分支識別格式用於分支解析及清除命令產生之一方法的一項具體實施例之示意流程圖。可結合圖1所示且如上所述之處理器100實施解析方法160之一些具體實施例。可結合其他類型的處理器(例如一多緒處理器)實施解析方法160之其他具體實施例。
在解析方法160中,發出162一分支指令且解析164該分支。接著,分支控制單元116決定166所解析分支是否經錯誤預測。若所解析分支係經錯誤預測,則分支無效邏輯124傳送168一無效或清除命令至執行單元之一或多者。在一項具體實施例中,該無效命令在指派程序140期間使用與其相關聯之(pos,val)對。為回應此,各執行單元清除該無效命令所識別的指令。在一些具體實施例中,該無效命令促進一原子清除。指令無效操作168之額外範例細節在圖7中顯示並在下文加以說明。
在分支無效邏輯124傳送無效命令後,或若分支控制單元116決定166該分支未經錯誤預測,則分支識別邏輯122釋放170對應應分支的位元位置,以便針對指令流130中的一後續分支可重新使用該位元位置。接著,所述解析方法160結束。
圖7描述一無效方法180之一項具體實施例的示意流程圖。在一項具體實施例中,無效方法180係圖6之解析方法160之指
令無效操作168的一更詳細之具體實施例。可結合圖1所示且如上所述之處理器100實施無效方法180之一些具體實施例。可結合其他類型的處理器(例如一多緒處理器)實施無效方法180之其他具體實施例。
在無效方法180中,指令無效邏輯124產生一無效命令以令與一或多個預測分支路徑相關聯之指令無效。各執行單元接收182無效命令以令指令流130中的至少一推測性指令無效。在一項具體實施例中,指令無效邏輯124將該無效命令幾乎同時廣播至所有執行單元。在另一項具體實施例中,指令無效邏輯124傳送該無效命令至該等執行單元之一,且各執行單元連續傳遞該無效命令至一相鄰執行單元直至所有執行單元已接收到該無效命令。
一旦一執行單元接收到該無效命令,該執行單元識別184該命令所指示之一位元位置及一位元值。在一些具體實施例中,一單一無效命令可指示多個位元位置及/或多個位元值。接著,執行單元識別186一或多個空中指令,且對於每一空中指令,對應執行單元之比較器118比較188無效命令之位元位置及位元值與所識別之空中指令的位元位置及位元值。若比較器118決定190空中指令與在相同位元位置之無效命令具有相同位元值,則該執行單元令空中指令無效192。否則,執行單元不會令該空中指令無效。在某些具體實施例中,比較器118亦可決定是否指示正確執行緒。
接著,執行單元決定194是否存在更多需要比較的指令,若是,則繼續比較該等空中指令與無效命令,如上所述。在另一項具體實施例中,執行單元可執行一原子清除以令多個指令幾乎同時無效或將其清除。一旦已令所有所示空中指令無效,則結束所示指令無效操作156。
應注意,可將指派方法140、解析方法160及無效方法180的具體實施例實施在軟體、韌體、硬體或其某一組合內。此外,
可使用與上述操作有關的一或多個演算法之一硬體或軟體代表實施指派方法140、解析方法160及無效方法180之一些具體實施例。例如,可實施軟體、硬體,或軟體與硬體之一組合以進行一分支預測,以一分支識別器標記每一推測性擷取之指令,或比較實際分支與預測之分支。
本發明之具體實施例亦可涉及藉由一電腦處理器可執行之多個功能,例如該電腦處理器為一中央處理單元(CPU)、一圖形處理單元(GPU)、或一微處理器。該微處理器可為一特殊或專用微處理器,其經組態以藉由執行定義特定任務之機器可讀取之軟體編碼來執行特定任務。該微處理器亦可經組態以與其他裝置一起操作且通信,例如該等裝置為直接記憶存取模組、記憶體儲存裝置、網際網路相關之硬體及與資料傳送有關的其他裝置。可使用軟體格式,例如Java、C++、XML(可擴充標示語言)及可用於定義與需要執行與本文所述相關的功能性操作之裝置的操作有關之功能的其他語言,來配置該軟體代碼。可以其中許多熟悉此項技術者已知的不同形式及式樣寫入該代碼。可實施軟體程式之不同代碼格式、代碼組態、式樣及形式,以及組態代碼以定義一微處理器之操作的其他構件。
在使用本發明之不同類型的電腦中(例如電腦伺服器),存在不同類型的記憶體裝置用以儲存及擷取資訊同時執行本文所述的部分或所有功能。在一些具體實施例中,其中儲存資料之記憶體/儲存裝置可為該處理器外部之一分離裝置,或可組態於一單石裝置中,其中該記憶體或儲存裝置係位於相同積體電路上,例如連接至一單一基板上的元件。快取記憶體裝置通常包括於電腦中,以被CPU或GPU用作用於經常儲存且擷取之資訊的一便利儲存位置。同樣,此等電腦通常亦使用一永久型記憶體用以保持經常藉由一中央處理單元擷取之資訊,但不會經常在該永久型記憶體中改變該記憶體,此與快取記憶體不同。亦常包括主記憶體用以儲
存且擷取大量之資訊,例如經組態以當藉由中央處理單元執行時實行特定功能的資料及軟體應用程式。該等記憶體裝置可組態成隨機存取記憶體(RAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、快閃記憶體、可藉由一中央處理單元存取以儲存且擷取資訊之其他記憶儲存裝置。可使用各種記憶體及儲存裝置以及用於儲存至該等記憶體裝置且自該等記憶體裝置擷取之任何通常使用的協定實施具體實施例。
儘管本文以一特定順序顯示並描述方法之操作,但可改變各方法之操作的順序,使得可以相反順序執行特定操作或使得可與其他操作同時(至少部分地)執行特定操作。在另一具體實施例中,可以一間歇及/或交替方式實施不同操作的指令或子操作。
儘管已描述本發明的特定具體實施例,但本發明並不侷限於所描述及說明的特定部件形式或配置。本發明之範疇係由隨附的申請專利範圍及其等效內容來定義。
130‧‧‧指令流
Claims (25)
- 一種用於推測性分支預測之系統,該系統包括:分支預測邏輯,其用以針對一指令流中之一分支預測一分支路徑;擷取邏輯,其係耦合至該分支預測邏輯,該擷取邏輯用以推測性地擷取對應於該預測之分支路徑的一指令;分支識別邏輯,其係耦合至該分支預測邏輯及該擷取邏輯,該分支識別邏輯用以使用一通用分支識別格式以一分支識別器標記該推測性擷取之指令,該通用分支識別格式在對應於該預測之分支路徑的一位元位置處包括一位元值;分支無效邏輯耦合至該分支識別邏輯,該分支無效邏輯用以令該推測性擷取之指令無效以回應在對應於該預測之分支路徑的該位元位置處包括該位元值之一無效命令,該無效命令與一例外之一出現相關聯,該無效的推測性擷取之指令在與該例外之該出現相關聯的一指令之後。
- 如請求項1之系統,耦合至一執行單元之該分支無效邏輯包括比較邏輯,該比較邏輯用以比較該無效命令及與複數個空中指令相關聯之複數個分支識別器,以決定是否令該複數個空中指令中任一者無效。
- 如請求項1之系統,該無效命令包括(pos,val)之一格式,其中pos指定對應於該預測之分支路徑之該位元位置,且val指定對應於該預測之分支路徑的該位元值。
- 如請求項3之系統,該無效命令進一步包括用以指定一多緒程序之一執行緒的一執行緒識別器,該指定的執行緒對應於該預測之分支路徑。
- 如請求項1之系統,該無效命令與一錯誤預測之分支之一出現相關聯。
- 如請求項1之系統,該通用分支識別格式進一步包括在對應於該 指令流中一上代分支之一預測上代分支路徑的一第二位元位置處的一第二位元值。
- 如請求項1之系統,其進一步包括一分支檢查點暫存器,該分支檢查點暫存器包括對應於複數個位元位置之複數個項目,該複數個位元位置包括對應於該預測之分支路徑的該位元位置。
- 如請求項1之系統,該分支識別邏輯進一步組態以向該預測之分支路徑隨機指派該位元位置。
- 如請求項1之系統,該分支識別邏輯進一步組態以實施一第一發現指派常式以向該預測之分支路徑指派該位元位置。
- 如請求項1之系統,該通用分支識別格式包括n個位元位置,其包括對應於該預測之分支路徑的該位元位置,其中n指定該指令流中擷取未解析之分支的一限值。
- 如請求項10之系統,將n個位元位置分割成群組,各群組對應於一唯一執行緒。
- 如請求項1之系統,該通用分支識別格式包括n個位元位置,其包括對應於該預測之分支路徑的該位元位置,其中2n指定可識別之分支路徑的一限值。
- 如請求項12之系統,該分支識別邏輯進一步組態用以指派一第二位元值以指定一第二預測之分支路徑,在相同位元位置處的該第二位元值對應於該預測之分支路徑。
- 如請求項13之系統,該分支識別邏輯進一步組態以將該位元值倒轉從而針對該第二預測之分支路徑在該相同位置處指派該第二位元值。
- 一種用於推測性分支預測之方法,該方法包括:針對一指令流中一分支預測一分支路徑;擷取對應於該預測之分支路徑的一指令;使用一通用分支識別格式以一分支識別器標記該推測性擷取之指令,該通用分支識別格式包括在對應於該預測之分支路徑之 一位元位置處的一位元值;以及令該推測性擷取之指令無效以回應一例外之一出現。
- 如請求項15之方法,令該推測性擷取之指令無效以回應一無效命令,該無效命令包括在對應於該預測之分支路徑之該位元位置處的該位元值。
- 如請求項16之方法,其進一步包括比較該無效命令及與複數個空中指令相關聯之複數個分支識別器以決定是否令該複數個空中指令之任一者無效。
- 如請求項16之方法,其進一步包括令該推測性擷取之指令無效以回應一錯誤預測之分支之一出現。
- 如請求項16之方法,該通用分支識別格式包括複數個位元位置,該複數個位元位置包括對應於該預測之分支路徑的該位元位置,該複數個位元位置之每一者對應於該指令流之複數個預測之分支路徑的至少一者。
- 如請求項19之方法,其進一步包括儲存一指令識別表,該指令識別表包括複數個推測性擷取之指令及對應之複數個分支識別器。
- 一種電腦可讀取儲存媒體,其具體化可藉由一數位處理器執行之機器可讀取指令之一程式以實行促進推測性指令無效之操作,該等操作包括:在一指令流中擷取對應於一預測之分支路徑的一指令;使用一通用分支識別格式以一分支識別器標記該推測性預測之指令,該通用分支識別格式包括在對應於該預測之分支路徑之一位元位置處的一位元值;令該推測性擷取之指令無效以回應一無效命令,該無效命令包括在對應於該預測之分支路徑之該位元位置處的該位元值;以及令該推測性擷取之指令無效以回應一例外之一出現。
- 如請求項21之電腦可讀取儲存媒體,該等操作進一步包括比較該無效命令及與複數個空中指令相關聯之複數個分支識別器之一操作,以決定是否令該複數個空中指令之任一者無效。
- 如請求項21之電腦可讀取儲存媒體,該等操作進一步包括用以產生該無效命令以回應一錯誤預測之分支的一出現之一操作。
- 如請求項21之電腦可讀取儲存媒體,該等操作進一步包括用以產生該無效命令以回應一例外之一出現的一操作。
- 如請求項21之電腦可讀取儲存媒體,該等操作進一步包括用以儲存一指令識別表之一操作,該指令識別表包括複數個推測性擷取之指令及對應之複數個分支識別器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/799,293 US7711935B2 (en) | 2007-04-30 | 2007-04-30 | Universal branch identifier for invalidation of speculative instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200849091A TW200849091A (en) | 2008-12-16 |
TWI423123B true TWI423123B (zh) | 2014-01-11 |
Family
ID=39888438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097115993A TWI423123B (zh) | 2007-04-30 | 2008-04-30 | 用於推測性指令之無效的通用分支系統、其方法、其識別器與其電腦可讀取儲存媒體 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7711935B2 (zh) |
TW (1) | TWI423123B (zh) |
WO (1) | WO2008136974A1 (zh) |
Families Citing this family (34)
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 |
EP2527972A3 (en) | 2006-11-14 | 2014-08-06 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US8145890B2 (en) * | 2009-02-12 | 2012-03-27 | Via Technologies, Inc. | Pipelined microprocessor with fast conditional branch instructions based on static microcode-implemented instruction state |
KR101685247B1 (ko) * | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
US9678755B2 (en) | 2010-10-12 | 2017-06-13 | Intel Corporation | Instruction sequence buffer to enhance branch prediction efficiency |
US9733944B2 (en) | 2010-10-12 | 2017-08-15 | Intel Corporation | Instruction sequence buffer to store branches having reliably predictable instruction sequences |
EP2689326B1 (en) | 2011-03-25 | 2022-11-16 | Intel Corporation | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
CN108376097B (zh) | 2011-03-25 | 2022-04-15 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
CN103547993B (zh) | 2011-03-25 | 2018-06-26 | 英特尔公司 | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 |
WO2012162189A1 (en) | 2011-05-20 | 2012-11-29 | Soft Machines, Inc. | An interconnect structure to support the execution of instruction sequences by a plurality of engines |
TWI603198B (zh) | 2011-05-20 | 2017-10-21 | 英特爾股份有限公司 | 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行 |
WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
EP2783280B1 (en) | 2011-11-22 | 2019-09-11 | Intel Corporation | An accelerated code optimizer for a multiengine microprocessor |
US8930674B2 (en) | 2012-03-07 | 2015-01-06 | Soft Machines, Inc. | Systems and methods for accessing a unified translation lookaside buffer |
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 |
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 |
US9678882B2 (en) | 2012-10-11 | 2017-06-13 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
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 |
CN105247484B (zh) | 2013-03-15 | 2021-02-23 | 英特尔公司 | 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法 |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
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 |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction 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 |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
EP2972845B1 (en) | 2013-03-15 | 2021-07-07 | Intel Corporation | A method for executing multithreaded instructions grouped onto blocks |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US10095525B2 (en) | 2017-09-21 | 2018-10-09 | Dejan Spasov | Method and apparatus for flushing instructions from reservation stations |
US10782976B2 (en) | 2018-05-07 | 2020-09-22 | Dejan Spasov | Issuing and flushing instructions from reservation stations using wrap bits and indexes |
CN115225572B (zh) * | 2022-07-13 | 2023-05-26 | 阿里巴巴(中国)有限公司 | 路由信息的处理方法、装置、电子设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0465319B1 (en) * | 1990-06-29 | 1995-08-02 | Digital Equipment Corporation | Error transition mode for multi-processor system |
US5608886A (en) * | 1994-08-31 | 1997-03-04 | Exponential Technology, Inc. | Block-based branch prediction using a target finder array storing target sub-addresses |
US6477640B1 (en) * | 1998-04-03 | 2002-11-05 | Motorola, Inc. | Apparatus and method for predicting multiple branches and performing out-of-order branch resolution |
TW200527288A (en) * | 2004-02-04 | 2005-08-16 | Via Tech Inc | Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions |
EP1185924B1 (en) * | 1999-04-29 | 2006-12-20 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
TW200703093A (en) * | 2005-04-04 | 2007-01-16 | Advanced Micro Devices Inc | System for speculative branch prediction optimization and method thereof |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5604909A (en) | 1993-12-15 | 1997-02-18 | Silicon Graphics Computer Systems, Inc. | Apparatus for processing instructions in a computing system |
US5809566A (en) * | 1996-08-14 | 1998-09-15 | International Business Machines Corporation | Automatic cache prefetch timing with dynamic trigger migration |
US6092187A (en) * | 1997-09-19 | 2000-07-18 | Mips Technologies, Inc. | Instruction prediction based on filtering |
US6581138B2 (en) * | 2000-02-29 | 2003-06-17 | Stmicroelectronics, Inc. | Branch-prediction driven instruction prefetch |
US7082520B2 (en) | 2002-05-09 | 2006-07-25 | International Business Machines Corporation | Branch prediction utilizing both a branch target buffer and a multiple target table |
US7552318B2 (en) | 2004-12-17 | 2009-06-23 | International Business Machines Corporation | Branch lookahead prefetch for microprocessors |
US7797520B2 (en) | 2005-06-30 | 2010-09-14 | Arm Limited | Early branch instruction prediction |
TWI328771B (en) | 2005-07-15 | 2010-08-11 | Nvidia Corp | Pipelined central processing unit structure and method of processing a sequence of instructions |
-
2007
- 2007-04-30 US US11/799,293 patent/US7711935B2/en not_active Expired - Fee Related
-
2008
- 2008-04-29 WO PCT/US2008/005509 patent/WO2008136974A1/en active Application Filing
- 2008-04-30 TW TW097115993A patent/TWI423123B/zh not_active IP Right Cessation
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0465319B1 (en) * | 1990-06-29 | 1995-08-02 | Digital Equipment Corporation | Error transition mode for multi-processor system |
US5608886A (en) * | 1994-08-31 | 1997-03-04 | Exponential Technology, Inc. | Block-based branch prediction using a target finder array storing target sub-addresses |
US6477640B1 (en) * | 1998-04-03 | 2002-11-05 | Motorola, Inc. | Apparatus and method for predicting multiple branches and performing out-of-order branch resolution |
EP1185924B1 (en) * | 1999-04-29 | 2006-12-20 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
TW200527288A (en) * | 2004-02-04 | 2005-08-16 | Via Tech Inc | Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions |
TW200703093A (en) * | 2005-04-04 | 2007-01-16 | Advanced Micro Devices Inc | System for speculative branch prediction optimization and method thereof |
Also Published As
Publication number | Publication date |
---|---|
US20080270774A1 (en) | 2008-10-30 |
WO2008136974A1 (en) | 2008-11-13 |
US7711935B2 (en) | 2010-05-04 |
TW200849091A (en) | 2008-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI423123B (zh) | 用於推測性指令之無效的通用分支系統、其方法、其識別器與其電腦可讀取儲存媒體 | |
US7028166B2 (en) | System and method for linking speculative results of load operations to register values | |
JP5894120B2 (ja) | ゼロサイクルロード | |
US7415597B2 (en) | Processor with dependence mechanism to predict whether a load is dependent on older store | |
US7133969B2 (en) | System and method for handling exceptional instructions in a trace cache based processor | |
US6845442B1 (en) | System and method of using speculative operand sources in order to speculatively bypass load-store operations | |
US7721076B2 (en) | Tracking an oldest processor event using information stored in a register and queue entry | |
US7263600B2 (en) | System and method for validating a memory file that links speculative results of load operations to register values | |
US6505293B1 (en) | Register renaming to optimize identical register values | |
US9690589B2 (en) | Computer instructions for activating and deactivating operands | |
US20020091915A1 (en) | Load prediction and thread identification in a multithreaded microprocessor | |
EP1296230A2 (en) | Instruction issuing in the presence of load misses | |
US20070234011A1 (en) | Method and system for on-demand scratch register renaming | |
US10776123B2 (en) | Faster sparse flush recovery by creating groups that are marked based on an instruction type | |
US6772317B2 (en) | Method and apparatus for optimizing load memory accesses | |
CN116302106A (zh) | 用于促进分支预测单元的改善的带宽的设备、方法和系统 | |
US11567771B2 (en) | Method and apparatus for back end gather/scatter memory coalescing | |
US11567767B2 (en) | Method and apparatus for front end gather/scatter memory coalescing | |
US7197630B1 (en) | Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation | |
US7222226B1 (en) | System and method for modifying a load operation to include a register-to-register move operation in order to forward speculative load results to a dependent operation | |
US7937569B1 (en) | System and method for scheduling operations using speculative data operands | |
CN113568663A (zh) | 代码预取指令 | |
CN115858022A (zh) | 集群化解码管线的可缩放切换点控制电路系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |