TWI525541B - 輸出可靠可預測指令序列的方法與系統,以及實施識別指令方法的微處理器 - Google Patents

輸出可靠可預測指令序列的方法與系統,以及實施識別指令方法的微處理器 Download PDF

Info

Publication number
TWI525541B
TWI525541B TW100136924A TW100136924A TWI525541B TW I525541 B TWI525541 B TW I525541B TW 100136924 A TW100136924 A TW 100136924A TW 100136924 A TW100136924 A TW 100136924A TW I525541 B TWI525541 B TW I525541B
Authority
TW
Taiwan
Prior art keywords
sequence
instructions
buffer
branch
instruction
Prior art date
Application number
TW100136924A
Other languages
English (en)
Other versions
TW201235939A (en
Inventor
摩翰麥德 艾伯戴爾拉
Original Assignee
軟體機器公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 軟體機器公司 filed Critical 軟體機器公司
Publication of TW201235939A publication Critical patent/TW201235939A/zh
Application granted granted Critical
Publication of TWI525541B publication Critical patent/TWI525541B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

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-404...步驟
500...指令序列緩衝器
501-503...部分
600...指令序列緩衝器
601-604...部分
611-614...比較邏輯部件
700...處理
701-704...步驟
800...微處理器管線
801...擷取模組
802...解碼模組
803...分配模組
804...派遣模組
805...執行模組
806...除役模組
本發明藉由範例進行說明並且不受其限制,在附圖中的數據以及其中相同的參考編號指示相同的元件。
圖1顯示由本發明一個具體實施例操作的示範指令序列。
圖2顯示含有個別程式碼區段的序列指令,應用於根據本發明一個具體實施例所例示的每一分支。
圖3顯示根據本發明的一個具體實施例,用於輸出替代指令序列給經常命中與經常錯失預測的分支之設備流程圖。
圖4顯示根據本發明一個具體實施例,用於輸出替代指令序列的處理步驟之概要流程圖。
圖5顯示根據本發明一個具體實施例的指令序列緩衝器之圖式。
圖6顯示根據本發明的一個具體實施例,用於儲存經常命中的可靠可預測分支之指令序列的指令序列緩衝器圖式。
圖7顯示根據本發明一個具體實施例,用於輸出可靠可預測指令序列的處理步驟之概要流程圖。
圖8顯示根據本發明一個具體實施例的示範微處理器管線之圖式。

Claims (17)

  1. 一種輸出可靠可預測指令序列的方法,該方法包括:追蹤重複命中,以決定一微處理器的一組經常命中指令序列;在該組之外,識別具有一系列的後續經常執行分支指令的一分支指令,形成一可靠可預測指令序列;將該可靠可預測指令序列儲存至一緩衝器內;對於該分支指令的一後續命中,從該緩衝器輸出該可靠可預測指令序列;其中使用一分支指令的一位址來索引該緩衝器。
  2. 如申請專利範圍第1項之方法,其中儲存該可靠可預測指令序列的該緩衝器用至少兩種方式來索引。
  3. 如申請專利範圍第1項之方法,其中使用複數個接續分支的位址當成標籤來索引該緩衝器。
  4. 如申請專利範圍第1項之方法,其中使用複數個分支預測位元當成標籤來索引該緩衝器。
  5. 如申請專利範圍第1項之方法,其中使用該分支指令的該位址之一雜湊來索引該緩衝器。
  6. 如申請專利範圍第1項之方法,其中使用比較邏輯來評估該可靠可預測指令序列,以決定是否應從該緩衝器剔除該序列。
  7. 一種輸出可靠可預測指令序列的系統,該系統包括:一擷取模組,其存取複數個指令,這些指令包含多分支指令;一緩衝器,其儲存可靠可預測指令序列;其中該擷取模組追蹤重複命中,以決定一微處理器的一組經常命中指令序列;在該組之外,該擷取模組識別具有一系列的後續經常執行分支指令的一分支指令,形成一可靠可預測指令序列;該擷取模組將該可靠可預測指令序列儲存至一緩衝器內;以及對於該分支指令的一後續命中,該擷取模組從該緩衝器開啟該可靠可預測指令序列;其中使用一分支指令的一位址來索引該緩衝器。
  8. 如申請專利範圍第7項之系統,其中儲存該可靠可預測指令序列的該緩衝器用至少兩種方式來索引。
  9. 如申請專利範圍第7項之系統,其中使用複數個接續分支的位址當成標籤來索引該緩衝器。
  10. 如申請專利範圍第7項之系統,其中使用複數個分支預測位元當成標籤來索引該緩衝器。
  11. 如申請專利範圍第7項之系統,其中使用該分支指令的該位址之一雜湊來索引該緩衝器。
  12. 如申請專利範圍第7項之系統,其中使用比較邏輯來評估該可靠可預測指令序列,以決定是否應從該緩衝器剔除該序列。
  13. 一種實施識別指令方法的微處理器,該微處理器包括:一微處理器管線;一擷取模組,其包含於該微處理器管線內;以及一緩衝器,其耦合至該擷取模組:其中該擷取模組追蹤重複命中,以決定一微處理器的一組經常命中指令序列;在該組之外,該擷取模組識別具有一系列的後續經常執行分支指令的一分支指令,形成一可靠可預測指令序列;該擷取模組將該可靠可預測指令序列儲存至一緩衝器內;以及在對於該分支指令的一後續命中當中,該擷取模組從該緩衝器開啟該可靠可預測指令序列;其中使用一分支指令的一位址來索引該緩衝器。
  14. 如申請專利範圍第13項之微處理器,其中儲存該可靠可預測指令序列的該緩衝器用至少兩種方式來索引。
  15. 如申請專利範圍第13項之微處理器,其中使用複數個接續分支的位址當成標籤來索引該緩衝器。
  16. 如申請專利範圍第13項之微處理器,其中使用複數個分 支預測位元當成標籤來索引該緩衝器。
  17. 如申請專利範圍第13項之微處理器,其中使用該分支指令的該位址之一雜湊來索引該緩衝器。
TW100136924A 2010-10-12 2011-10-12 輸出可靠可預測指令序列的方法與系統,以及實施識別指令方法的微處理器 TWI525541B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US39239210P 2010-10-12 2010-10-12

Publications (2)

Publication Number Publication Date
TW201235939A TW201235939A (en) 2012-09-01
TWI525541B true TWI525541B (zh) 2016-03-11

Family

ID=45938946

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100136924A TWI525541B (zh) 2010-10-12 2011-10-12 輸出可靠可預測指令序列的方法與系統,以及實施識別指令方法的微處理器

Country Status (5)

Country Link
US (2) US9733944B2 (zh)
EP (2) EP3306466B1 (zh)
CN (1) CN103262027B (zh)
TW (1) TWI525541B (zh)
WO (1) WO2012051281A2 (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2477109B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
TWI541721B (zh) 2010-10-12 2016-07-11 軟體機器公司 使用指令序列緩衝器來增強分支預測效能的方法、系統及微處理器
TWI533129B (zh) 2011-03-25 2016-05-11 軟體機器公司 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
KR101620676B1 (ko) 2011-03-25 2016-05-23 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
KR101639854B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
EP2710481B1 (en) 2011-05-20 2021-02-17 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
KR101842550B1 (ko) 2011-11-22 2018-03-28 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
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
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
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
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register 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
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
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
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
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
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
US9519481B2 (en) 2014-06-27 2016-12-13 International Business Machines Corporation Branch synthetic generation across multiple microarchitecture generations
US11249762B2 (en) * 2019-10-24 2022-02-15 Arm Limited Apparatus and method for handling incorrect branch direction predictions
TW202349201A (zh) * 2022-05-10 2023-12-16 大陸商華為技術有限公司 指令預測方法、裝置、系統及計算機可讀取儲存媒體

Family Cites Families (45)

* Cited by examiner, † Cited by third party
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
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
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
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
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
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
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
TWI541721B (zh) * 2010-10-12 2016-07-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 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
TW201235939A (en) 2012-09-01
US20170322811A1 (en) 2017-11-09
CN103262027B (zh) 2016-07-20
WO2012051281A3 (en) 2012-07-19
CN103262027A (zh) 2013-08-21
WO2012051281A2 (en) 2012-04-19
EP3306466A1 (en) 2018-04-11
EP3306466B1 (en) 2020-05-13
EP2628076A2 (en) 2013-08-21
US9733944B2 (en) 2017-08-15
EP2628076B1 (en) 2017-08-30
US20140075168A1 (en) 2014-03-13
EP2628076A4 (en) 2014-03-12

Similar Documents

Publication Publication Date Title
TWI525541B (zh) 輸出可靠可預測指令序列的方法與系統,以及實施識別指令方法的微處理器
TWI541721B (zh) 使用指令序列緩衝器來增強分支預測效能的方法、系統及微處理器
KR101685247B1 (ko) 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
US9378020B2 (en) Asynchronous lookahead hierarchical branch prediction
US7401206B2 (en) Apparatus and method for fine-grained multithreading in a multipipelined processor core
US20180210735A1 (en) System and method for using a branch mis-prediction buffer
US7509484B1 (en) Handling cache misses by selectively flushing the pipeline
US20150186293A1 (en) High-performance cache system and method
WO2015024452A1 (zh) 一种分支预测方法及相关装置
US9740553B2 (en) Managing potentially invalid results during runahead
US5935238A (en) Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US7320063B1 (en) Synchronization primitives for flexible scheduling of functional unit operations
US20100274993A1 (en) Logical map table for detecting dependency conditions
US9753855B2 (en) High-performance instruction cache system and method
US20140082337A1 (en) Branch target buffer preload table
US10423420B2 (en) Stream based branch prediction index accelerator for multiple stream exits
US7730288B2 (en) Method and apparatus for multiple load instruction execution
US7343474B1 (en) Minimal address state in a fine grain multithreaded processor
US9311247B1 (en) Method and apparatus for detecting patterns of memory accesses in a computing system with out-of-order program execution
US11947461B2 (en) Prefetch unit filter for microprocessor