TWI467479B - 用於組構具有階段特定性執行緒選擇之處理管線的系統及其方法 - Google Patents

用於組構具有階段特定性執行緒選擇之處理管線的系統及其方法 Download PDF

Info

Publication number
TWI467479B
TWI467479B TW97149629A TW97149629A TWI467479B TW I467479 B TWI467479 B TW I467479B TW 97149629 A TW97149629 A TW 97149629A TW 97149629 A TW97149629 A TW 97149629A TW I467479 B TWI467479 B TW I467479B
Authority
TW
Taiwan
Prior art keywords
thread
instruction
buffer
processing
stage
Prior art date
Application number
TW97149629A
Other languages
English (en)
Other versions
TW200939117A (en
Inventor
Gene Shen
Sean Lie
Marius Evers
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of TW200939117A publication Critical patent/TW200939117A/zh
Application granted granted Critical
Publication of TWI467479B publication Critical patent/TWI467479B/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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Description

用於組構具有階段特定性執行緒選擇之處理管線的系統及其方法
本發明係關於指令處理,更詳而言之,係關於在處理管線中的多執行緒處理。
多執行緒處理設備(multithreaded processihg device)通常實行粗略的多執行緒處理(multithreading),藉此,處理管線(processing pipeline)得以於任何給予的時間中專屬於單一執行緒。於執行緒切換之事件中,處理管線會清除(flush)目前執行緒,並且,新選擇的執行緒的指令會被處理管線處理。清除處理管線的過程可能消耗大量的周期,並因此降低整體的指令執行頻寬。除此之外,一些多執行緒處理設備實行更精細的多執行緒處理,藉此,來自多個執行緒的指令在處理管線開始時可被多工執行(multiplexed)。然而,針對在處理管線開始時之處理所選擇的執行緒的順序一般係被維持於該管線的所有隨後階段。這將會導致無效的處理,如果處理管線的特別階段當指令操作在等待外部的事件(例如來自記憶體的資料返回)時會空轉。因此,在處理管線中更彈性的執行緒選擇技術係有利的。
因此,本發明提供一種方法,以解決先前技術的問題。
在本發明的實施例中,該方法包括:對複數個週期的每一個週期:於複數個執行緒之間進行選擇以決定用於處理管線的第一階段之第一選擇執行緒;於該第一階段處理關聯於用於該第一階段的該第一選擇執行緒之指令資料;於該複數個執行緒之間進行選擇以決定用於處理管線的第二階段之第二選擇執行緒;以及於該第二階段處理關聯於用於該第二階段的該第二選擇執行緒之指令資料。
在本發明的另二實施例中,係該方法包括:於第一次時,處理在處理管線的第一階段之第一指令資料以產生第二指令資料,且該第一指令資料及該第二指令資料係關聯於第一執行緒;於該第一次後的第二次時,處理在該處理管線的該第一階段之第三指令資料以產生第四指令資料,且該第三指令資料及該第四指令資料係關聯於與該第一執行緒不同的第二執行緒;於該第二次後的第三次時,處理在處理管線的第二階段之第四指令資料以產生第五指令資料;以及於該第三次後的第四次時,處理該第二指令資料以產生第六指令資料。
本發明另外提供一種系統,包括:第一管線階段,具有連接第一緩衝器的輸入及連接第二緩衝器的輸出;第二管線階段,具有連接該第二緩衝器的輸入及連接第三緩衝器的輸出;第一執行緒選擇控制器,用以在複數個執行緒之間反覆進行選擇,且從該第一緩衝器提供經選擇之執行緒之指令資料,以供該第一管線階段處理;以及第二執行緒選擇控制器,用以在複數個執行緒之間反覆進行選擇,且從該第二緩衝器提供經選擇之執行緒之指令資料,以供該第二管線階段處理。
第1圖係說明根據本發明至少一個實施例的處理設備100的實施例。該處理設備100包括多個處理器核心(例如處理器核心102、104、106及108)以及一個或多個相關的模組(記憶體管理單元109(MMU)),其係透過一個或多個互連(interconnect)110而連接,其中,互連110可包括像是匯流排、交點式開闢(cross-point switch)、橋接器(例如北橋或南橋)、HyperTransportTM 連接或相關的組合。記憶體管理單元109係組構成在處理設備100的處理器核心102、104、106及108(以下寫為處理器核心102-108)與一個或多個記憶體之間(像是系統記憶體或晶片外快取(off-chip cache))介接。雖然第1圖係描述具有四個處理器核心之處理設備以用來解說,得以瞭解在不違反本發明之範疇下,不同數目個處理器核心也可被應用。
參考第2至7圖以給予更詳細的描述,處理器核心102-108中的一個或多個的每一個可利用具有多個執行單元(例如整數執行單元或浮點單元)的處理管線,該多個執行單元係共同分享具有提取(fetch)指令、解碼(decode)及資源調度(dispatch)的預先執行前端(pre-execution front-end)。再者,如參考第3至第5圖所描述,處理器核心102-108中的一個或多個中的每一個都可應用調度資源,該調度資源係組構成透過個別的調度匯流排並行地調度多個指令至多個相對應的執行單元。再者,如參考第8至10圖所述,處理器核心102-108中一個或多個的處理管線的一些或全部階段可被組構成以使用用於相關階段的獨立執行緒選擇。
第2圖係說明相關於本發明至少一實施例中處理器核心的處理管線200的實施例。該處理管線200在一實施例中係使用於如第1圖中處理器核心102-108的一個或多個的每一個的處理管線。
在所描述的實施例中,該處理管線200包括預先執行前端單元202及執行後端單元204。該預先執行前端單元202(以下寫為“前端單元202”)包括指令提取模組206、指令解碼模組208及指令調度模組210。在一實施例中,指令提取模組206係用以提取與一個或多個執行緒(例如執行緒T0及T1)相關的指令以及儲存經提取之指令於指令提取緩衝器(未顯示於圖中)。指令提取模組206可用各式各樣的提取/預取技巧中的任何一項以提取指令資料。在一實施例中,指令解碼模組208係用以將經提取之指令解碼成一個或多個經解碼之指令、操作(例如微指令(microinstructions)或微碼(microcode)操作)以及緩衝經解碼之指令操作於解碼緩衝器中(未顯示於圖中)。在一實施例的指令調度模組210係用以調度從解碼緩衝器中所選出的經解碼之指令操作至許多不同執行後端單元204(以下寫為:“後端單元204”)。
在一實施例中的後端單元204包括多個整數執行單元,像是整數執行單元212及214,其係用以執行由指令調度模組210調度的整數指令操作。該後端單元204復可包括浮點單元216,其係用以執行由指令調度模組210所調度的浮點操作。藉由FPU 216的浮點操作的執行結果可被提供至整數執行單元212及214其中任一個,而用於藉由依據該結果之整數操作所進行的後續處理,反之亦然。
在一實施例中,整數執行單元212包括:至少一個資料算術邏輯單元220(data arithmetic logic unit:ALU),其係用以執行基於被執行的整數指令操作的算術操作;至少一個位址產生單元222(address generation unit:AGU),係用以產生位址以存取來自快取/記憶體之用於被執行的整數指令的資料;排程器(未顯示於圖中),用以控制從記憶體/儲存的資料載入至記憶體之載入/儲存單元224(load/store unit:LSU);以及執行緒收回模組226(thread retirement module),係用以維持中間的結果與將整數指令操作的結果提交至架構狀態。在一實施例中,ALU 220及AGU 222係當成相同的單元被實施。該整數執行單元212復可包括用以接收來自FPU 216的資料的輸入,而一個或多個被整數執行單元212處理的指令操作係依據從FPU 216接收的資料。該整數執行單元214可被相似地組構。
在操作上,整數執行單元212和214及FPU 216在分享前端單元202的資源時係並行的操作。關連於一個或多個執行緒的指令係由指令提取模組206所提取及由指令解碼模組208所解碼。該指令調度模組210接著可基於許多因素(像是操作形式(例如整數或浮點)、相關的執行緒、負載、資料有效性、架構限制以及其他)調度經解碼的指令所代表的指令操作至所選擇的一個或多個執行單元212、整數執行單元214或FPU 216。因此被調度的指令操作可由其各別的執行單元執行於相同的執行周期。對於由經緩衝的經解碼之指令所代表的浮點操作,該指令調度模組210基於執行緒優先性、向前移行需求(forward progress requirement)以及其他者而決定FPU 216的調度順序。對於由經緩衝的經解碼之指令所代表的整數指令操作,該指令調度模組210基於許多種調度準則中的任一種,像是執行緒連繫、優先順序、負載等決定調度順序及哪一個整數執行單元執行哪一個整數執行指令。
為了說明,假設有由處理管線200所處理的兩執行緒T0及T1。在本實施例中,指令調度模組210可被組構成將關於執行緒T0的整數指令操作調度至整數執行單元212、以及將關於執行緒T1的整數指令操作調度至整數執行單元214,而來自任一執行緒的浮點操作則以由執行緒優先性、FPU 216的負載等所決定的順序被調度至FPU 216。一旦被調度至他們各別的執行單元,該操作可被同時執行於相對應的執行周期。
或者是,整數指令操作可適時地調度至整數執行單元212及214。為了解釋說明,再次假設兩執行緒T0及T1被處理管線200所處理。在此實施例中,該指令調度模組210可以依據執行緒優先性、負載、向前移行需求及其他者將整數指令操作從執行緒T0及T1調度至整數執行單元212與214中的任一個。
在特定實施例中,該處理管線200可只處理單一執行緒。在此實施例中,指令調度模組210可被組構為依據預定或適時的調度計劃將相關於該執行緒的整數指令操作調度至整數執行單元212及214。除此之外,該指令調度模組210可被組構為將該單一執行緒的整數指令操作調度至整數執行單元212或214之其中之一,而未使用的整數執行單元可被關閉或者失能以降低電源的消耗。舉例而言,該未使用的整數執行單元可藉由降低供應至整數執行單元的電路的電源、時脈門控(clock-gating)整數執行單元的電路及其他方式而失能。
多個並行執行且分享相同的前端單元202之整數執行單元的實行透過整數執行單元之間的合作加速單一執行緒的執行。整數執行單元212及214可用於實行超前運轉計劃(run ahead scheme),其中,指令調度模組210調度記憶體存取操作(例如載入操作及儲存操作)至一個整數執行單元,同時調度非記憶體存取操作至其他整數執行單元。為了解釋說明,前端單元202可提取及解碼與執行緒相關的指令,以使在該執行緒的程式序列中之後的載入指令可被預先提取並進而調度至該等整數執行單元之一者,以被執行,同時其他整數執行單元依然執行於程式序列中較早點的非記憶體存取指令。以這樣的方式,在一個整數執行單元準備執行相依於載入操作的指令之前,記憶體資料已經被預先提取並且可於快取中取得(或是已經在被預先提取的過程中)。
整數執行單元202及204的合作使用的另一實施例係用於急切執行計劃(eager execution scheme),藉此在指令序列中分支的結果都可由每一整數指令單元被個別的繼續進行。當決定出正確的分支時,被指派給最終為正確之分支的整數指令單元可轉移其狀態至另一整數指令單元,然後兩整數指令單元都可被用於執行緒程式流的執行。表1係解釋執行緒指令的急切執行的實施例:
參考表1解釋說明,指令區段A代表導致及包括條件式跳躍指令(jne)的指令序列,指令區段C代表如果有跳躍時跟隨在後的指令序列,以及區段B代表條件式跳躍指令與條件式跳躍指令的目標(next)之間的指令序列。在本實施例中,前端單元202可調度區段A及B所代表的指令序列(例如在沒有執行跳躍之事件中的程式流)至整數執行單元212,以及調度區段A及C所代表的指令序列(例如在有執行跳躍之事件中的程式流)至整數執行單元214。如果最後決定執行跳躍,則已執行正確路徑的整數執行單元214的狀態可被轉換至整數執行單元212。相反地,如果最後決定不執行跳躍,則已執行正確路徑的整數執行單元212之狀態可被轉換至整數執行單元214。更詳細的執行實施例將參考第6圖及第7圖稍後描述。
如再一實施例,整數執行單元212及214可被一起實行用於單一執行緒的可靠執行計劃。在此實施例中,相同的整數指令操作被調度至整數執行單元212及214以用於執行,並且例如藉由每一整數執行單元的管線回收模組226來比較結果。如果結果符合,則整數指令操作的結果將被認為係可靠的且進行下一個指令操作的執行。反之,如果在相同指令操作的執行結果之間存有不符合的情形,則該結果被認為係不可靠的且將執行修正的動作,像是藉由發出異常或其他輸入、藉由再次執行整數指令操作等。
藉由利用分享一個FPU(或分享多個FPU)以及分享單一預處理前端單元之整數執行單元,可達成由多個執行單元所提供的增加之處理頻寬,同時降低或去除傳統設計的設計複雜性及電源消耗,該傳統設計係利用用於每一整數執行單元的分開的預處理前端單元。再者,因為在許多情形中,係執行單元造成處理管線的瓶頸,所以使用單一分享的前端將在處理頻寬上只些微(如果有的話)導致延遲,這是因為前端單元的提取、解碼及調度操作通常比兩個或多個執行單元結合的指令通量可實從於較高的指令通量之故。
第3圖係說明關於本發明至少一實施例的前端單元202的指令解碼模組208及指令調度模組210的實施例。
在本實施例中,該指令解碼模組208包括預先解碼/撿取模組302(predecode/pick module)、解碼控制器304以及並行解碼路徑305-308。每一解碼路徑包括解多工器(demuliplexer)310或其他轉換機構、微代碼解碼器312、捷徑硬體解碼器(fastpath hardware decoder)314以及兩個格式解碼器316及318,其中一個用於微代碼解碼器312,另一個用於捷徑硬體解碼器314。
該指令調度模組210包括調度緩衝器320、調度控制器322、資源監視器324、連接至調度匯流排328的匯流排控制器326以及連接至調度匯流排332的匯流排控制器330。該匯流排328係連接至執行單元334(如第4圖所示),而調度匯流排332係連接至執行單元336(如第4圖所示),其中執行單元334及336中任一個都可包括整數執行單元或浮點單元。本實施例中的該調度匯流排328及332係分開的,並且每一個係能夠同時傳送高達N個指令操作至對應的執行單元。在已經說明的實施例中,高達四個(例如N=4)指令操作可於所給定的任何調度周期被調度至各個調度匯流排。
參考第4圖,其係說明根據本發明至少一實施例的指令調度模組208、執行單元334及336、以及調度匯流排328及332的排列。在先前技術系統中,該調度模組透過單一調度匯流排連接多個執行匯流排,而因為該等執行單元合起來通常能夠發出比透過單一調度匯流排所能提供者更多的指令操作,因此該單一調度匯流排限制了調度頻寬。因此,如上所述,在一實施例中,指令調度模組208係利用兩個分別的調度匯流排,分別用於每一執行單元,以加倍可被調度於任何所給定的調度週期中的指令操作的最大數量。然而,吾人將可察覺到加倍的調度匯流排數量會加倍調度模組及執行單元間的導電跡線(conductive trace),且若不加以注意則每一導電跡線會消耗寶貴的空間。然而,在許多實作中,該調度模組一般係位於執行單元之間(例如配置於執行單元334及執行單元336之間的中心軸402上或靠近中心軸402)。在這樣的情形中,先前技術的單一調度匯流排應用將需要單一調度匯流排的導電跡線從調度模組朝雙方向延伸。然而,如第4圖所示,藉由維持在執行單元334及執行單元336之間的指令調度模組208,繞線軌跡(routing track)的數目相較於先前技術的單一調度匯流排應用不需要增加,這是因為調度匯流排328及332兩者的導電跡線能以與繞線軌跡相同的數目來設置,其中該繞線軌跡之數目係為了在執行單元之間延伸單一匯流排的導電跡線所必需者。
再者,藉由創造點對點的調度匯流排328及332,因為調度匯流排328及332的導電跡線短於實作單一調度匯流排所需的導電跡線,所以可以實現優於習知單一調度匯流應用的省電。因此,調度匯流排328及332具有較低的寄生電容,所以其需要較少的電源以在適當位準驅動訊號。
參考第5圖,其係如第3圖中所說明的根據本發明至少一實施例的前端單元200之操應用的範例方法500。在方塊502,指令提取模組206(如第1圖所示)提取指令資料至指令提取緩衝器338。在至少一實施例中,該指令資料代表一個或多個不同長度的指令,像是關於x86指令構造的指令。因此,在一實施例中,該指令資料包括一個或多個開始位元以及一個或多個結束位元以描述指令。在方塊504中,預先解碼/檢取模組302藉由掃瞄指令資料以執行初始指令處理,以辨視指令範圍以及查證代表的指令長度係正確的。再者,預先解碼/檢取模組302預先解碼經辨視的指令以辨視特定相關的特性,其係可影響下游指令的處理,像是該指令是否包括立即欄(immediate field)、是否有任何的分支、該指令是否需要下載操作、儲存操作或其他的記憶體操作等。
在校準及解碼後,每一指令係藉由方塊506中的解碼控制器304導向至並行解碼路徑305-308之其中之一。一旦在解碼路徑305-308中一個時,解碼控制器304透過解多工器310將指令導向微代碼解碼器312或捷徑硬體解碼器314之任一個。為了說明,要求多於兩個指令操作的指令係被導向至微代碼解碼器312,微代碼解碼器312使用一個或多個微解碼表(例如唯讀記憶體(ROM))的階系(hierarchy),以透過一個或多個表查操作將所接受的指令轉換至一個或多個微代碼指令操作的組集(set)。要求兩個或更少的指令操作的指令,可被導向至捷徑硬體解碼器314以解碼至相關的指令操作組集。
在方塊508中,格式解碼器316及318對微代碼解碼器312及捷徑硬體解碼器314所分別輸出的指令操作執行最後的解碼,以備調度。該最後的解碼可包括根據內部調度格式而組構指令操作、應用換名暫存器及其他。然後該格式化的指令操作被供至調度緩衝器320。
在方塊510中,調度控制器322從調度緩衝器320選擇指令操作,以使其被包含於欲透過調度匯流排328被調度至執行單元334的第一調度群組,或是欲透過調度匯流排332被調度至執行單元336的第二調度群組。可基於各種特性任一者而選擇該指令操作,以使其被包含於該第一調度群組或該第二調度群組。為了說明,執行單元334可被專用一個執行緒且該執行單元336專用於另一執行緒,因此調度控制器322係基於指令操作相關的執行緒以選擇指令操作。再者,在一實施例中,資源監視器324係組構成監視處理設備100的下游資源的可利用性,且該指令操作的選擇可基於資源可利用性。為了說明,可有動態及靜態的限制,使得指令操作可在該等限制之下調度於任何所給的週期。靜態的限制由處理設備的結構所造成,像是:每一調度群組最大只有兩個載入操作,此係因為,舉例而言,在載入佇列(queue)中只有兩個寫入埠(未顯示於圖中);每一調度群組最多有一個儲存操作,此係因為,舉例而言,在儲存佇列中只有一個寫入埠(未顯示於圖中);每一調度群組最多有一個分支,此係因為,舉例而言,在分支狀態暫存器(Branch Status Register)中的限制(未顯示於圖中);及其他。動態限制係由處理設備100的現有資源利用所造成,像是整數收回單元(未顯示於圖中)之項目的數量、核對點的數量、排程器項目的數量等。
當該第一及該第二調度群組準備好時,於每一零到N之間的指令操作,於方塊512中,該調度控制器322係針對現有的調度週期提供該第一調度群組的指令操作(如果有的話)至調度匯流排控制器328,以透過調度匯流排328傳送至執行單元334,及同時提供該第二調度群組的指令操作(如果有的話)至調度匯流排控制器330,以透過調度匯流排332傳送至執行單元336。然後執行單元334及336排程其各別用以執行的指令操作。方塊510及512的調度處理可被重複於下一個週期等。
如上所討論的,前端單元202可被多執行緒處理,以針對兩個用於執行的執行緒而處理指令。該多執行緒處理的組構可被用於適時的增加解碼/調度的頻寬,其係利用如第4圖中所解釋的應用。為了說明,如第3圖所述,該指令解碼模組208包括四個解碼路徑305-308,係並行操作以解碼四個並行的指令(巨集操作macrooperation)。然而,由於在任何所給的解碼路徑上的指令解碼只涉及微碼解碼器312或捷徑硬體解碼器314的其中之一,因此在解碼路徑中的另一解碼器會閒置。然而,因為格式解碼電路(格式解碼模組316及318)係針對微碼解碼器312及捷徑硬體解碼器314而被複製,因此,該解碼控制器304可從另一執行緒遞送指令至其他每一解碼路徑的另一閒置解碼器,因此每一解碼路徑可並行地解碼兩指令。換言之,每當一執行緒的指令在微碼解碼器312時,增加解碼頻寬的機會便會發生,這樣,另一執行緒的指令便可被提供至其他閒置捷徑硬體解碼器314用以並行解碼,反之亦然。因此,方塊506所代表的過程可包括將第一執行緒的指令導向至在方塊514的每一解碼路徑的微碼解碼器312或硬體解碼器314之一者,接著將第二執行緒的指令導向至方塊516的每一解碼路徑的另一解碼器,以便允許解碼路徑305-308中一些或全部的解碼器並行地解碼兩指令。
另一個增加前端頻寬的機會發生於前端單元202(如第2圖所示)有執行緒切換時。在執行緒從第一執行緒切換至第二執行緒時,在調度緩衝器320中可能會有一些關於的第一執行緒的指令操作。在習知系統中,該指令操作將被清除以回應執行緒切換。然而方塊510的調度過程中,可利用只調度準備好的提取及解碼的指令操作的最小成本,以回應從第一執行緒至第二執行緒的執行緒切換(如方塊518所示),藉由維持調度緩衝器320中第一執行緒的指令操作以及從該指令操作中選擇任何從第二執行緒的指令操作,用以包括在第一及第二調度群組中的一個或兩個直到調度匯流排320缺乏用於第一執行緒的指令操作,或直到一些在方塊520中的其他情形為止。
第6圖及第7圖係說明用於相關於本發明至少一實施例的第2圖所示的叢集執行單元結構的急切執行技術的實施例。急切執行係一種經常性地藉由同時地繼續執行接續於條件性分支之後的,可能執行路徑雙方而改善單一執行緒之執行的技術。許多分支係難以預測,而提取及執行分支的路徑兩者相較於只進行預測及只繼續提取及執行所預測的分支路徑係更有利。這樣的執行模式自然地產生了兩個整數操作執行的“流”,其可個別地被導向執行叢集中的一個。一路徑(例如該“未執行”路徑)可持續在原本的叢集執行,而該“執行”路徑可開始執行於另一叢集上。當分支被決定時,一路徑被終止但另一路徑則繼續。先前獨立之叢集(cluster)的此使用的難度係該等叢集現在必須溝通結構狀態以為了從初始訊號執行緒“分岐(fork)”兩個串流。在雙方之叢集中具有任何快取微結構(microarchitectural)狀態(L1資料快取、L1變換後備緩衝區(translation lookaside buffer:TLB))是有利於改善執行或未執行的路徑兩者之效能。
第6圖係說明達成立第2圖的處理管線構造的急切執行的範例應用。第6圖說明具有發生在時間601及602間的條件分支的單一執行緒之執行期間的時間601-604的序列。在時間601中,前端單元202已經提取關於執行緒的指令,並解碼該指令資料以產生指令操作的串流610,該指令操作的串流610係並行調度至整數執行單元212及214。在時間601中,整數執行單元212的結構狀態612係與整數執行單元214的結構狀態614相同。因此,整數執行單元212及214以密集的步驟執行串流610的指令操作,直到條件分支在單一執行緒的指令序列中被偵測出。
為了回應條件分支,在時間602,前端單元202提取第一指令資料以用於預測的執行分支路徑以及提取第二指令資料以用於預測的未執行分支路徑。該前端單元202解碼第一指令資料以產生代表預測的執行分支路徑的個別指令操作的串流616,以及調度串流616的指令操作至整數執行單元212以備執行。同時,該前端單元202解碼第二指令資料以產生代表預測的未執行分支路徑的指令操作的串流618,以及調度串流618的指令操作至整數執行單元214以備執行。
因為接收及執行不同的指令操作流,該結構狀態612以及614係相對於對方而改變。然而,為了盡力維持最小的一致性於微結構層中,在整數執行單元其中之一者的快取未中(cache miss)而從記憶體620獲得的資料也被提供至另一整數執行單元的快取,以維持整數執行單元212及214的一個或多個快取同步。
在時間603,前端單元202已經決定出預測的執行分支路徑(由串流616所代表)係條件分支中實際上被執行的分支路徑,因而終止進一步將另一串流618的指令操作調度至整數執行單元214。再者,藉由將結構狀態612複製至整數執行單元214,而將該結構狀態612實行為結構狀態614。該包括於複製的結構狀態中的資料包括(但並不限制於)整數執行單元212的一個或多個的暫存器(例如通用暫存器,general purpose register)的暫存器值,其係用於相對應之整數執行單元214的暫存器。其他轉移的資料可包括整數執行單元212的位址變換後備緩衝區(address translation look-aside buffer(TLB))項目、程式計數器等。結構狀態的轉移可透過在整數執行單元212之執行短微代碼序列、透過專用的結構同步介面、透過仿真記憶體(emulation memory)的使用等而完成。
由於回應於條件分支之決定而複製或轉移結構狀態612,該結構狀態612及614係相同的,且因此前端單元202並行地調度串流616的指令操作至整數執行單元212及214以平行執行。
第7圖說明應用至如第7圖的處理管線結構中的用以完成急切執行的應用的替代實施例。第7圖係說明具有發生在時間701及702間之條件分支的單一執行緒之執行期間之時間701-704的序列。在時間701,前端單元202已經提取關於執行緒的指令資料以及解碼該指令資料以產生指令操作的串流710,該指令操作的串流710係只被調度至整數執行單元212,整數執行單元212執行串流710的指令操作直到條件分支於單一執行緒的指令序列中被偵測出。在此期間,整數執行單元214可被閒置或被利用於執行關於不同執行緒的指令操作。
回應於條件分支,在時間702,藉由利用上述任何技術而將結構狀態612複製至整數執行單元214,而將該結構狀態612實行為結構狀態614。因此,在時間702,整數執行單元212及214係在相同的結構狀態,以備於了條件分支。
因此,在時間703,前端單元202提取第一指令資料以用於預測的執行分支路徑,以及提提取第二指令資料以用於預測的未執行分支路徑。前端單元202解碼第一指令資料以產生代表預測的執行分支路徑的指令操作的串流712,以及調度串流712的指令操作至整數執行單元212以備執行。在此同時,前端單元202解碼第二指令資料以產生代表預測的未執行分支路徑的指令操作的串流714,以及調度串流714的指令操作至整數執行單元214以備執行。由於接收及執行不同的指令操作流,該結構狀態612以及結構狀態614相對於對方而改變。然而,為了盡力維持最小的一致性於微結構層中,在整數執行單元其中之一的快取未中而從記憶體620獲得的資料亦被提供至另一整數執行單元的快取,以維持整數執行單元212及214的一個或多個快取同步。
在時間704,前端單元202已經決定出預測的未執行的分支路徑(由串流714所代表)係條件分支中實際上被執行的分支路徑,因而終止將另一串流712的指令操作進一步調度至整數執行單元712。接著該整數執行單元212可被閒置或用於執行來自其他執行緒的指令操作,但整數執行單元214持續執行由前端單元202所調度用於原來的執行緒的串流714的指令操作。
第8圖係說明相關於本發明至少一實施的具有階段特定性執行緒選擇技術的處理管線800的實施例。為了之後的討論,隨後的技術係被討論於用於兩執行緒的執行緒選擇的情況中。然而,該技術在不偏離本發明範疇下,可被延伸至多於兩執行緒之間的執行緒選擇。再者,該技術可結合上述技術而執行。
如所說明的,該處理管線800包括多個管線階段,像是管線階段A、B及C(也標記為管線階段802、804及806)。該管線階段A、B及C對應於指令管線的不同階段,像是提取階段、解碼階段以及調度階段或提取階段、解碼/調度階段以及執行階段等。
管線階段A、B及C中任一者包括多個對應於管線階段的特定操作的次階段。舉例而言,管線階段A包括次階段A0 、A1 及A2 ,管線階段B包括次階段B0 、B1 及B2 ,管線階段C包括次階段C0 、C1 及C2 。每一管線階段也包括執行緒選擇器模組(個別用於管線階段A、B及C的執行緒選擇器模組812、814及816)。連接於每一管線階段之間者係用於執行緒T0的緩衝器及用於執行緒T1的緩衝器,其中用於執行緒的緩衝器係儲存由先前管線階段所輸出之指令資料,而該先前管線階段所輸出之資料係由先前管線階段之對執行緒的指令進行處理所產生。在第8圖中的實施例中,緩衝器820儲存用於執行緒T0之指令資料以輸入至管線階段A,以及緩衝器822儲存用於執行緒T1之指令資料以輸入至管線階段A;緩衝器824儲存從管線階段A輸出(且輸入至管線階段B)之用於執行緒T0的指令資料,以及緩衝器826儲存從管線階段A輸出(且輸入至管線階段B)之用於執行緒T1的指令資料;緩衝器828儲存從管線階段B輸出(且輸入至管線階段C)之用於執行緒T0的指令資料,以及緩衝器830儲存從管線階段B輸出(且輸入至管線階段C)之用於執行緒T1的指令資料;緩衝器832儲存從管線階段C輸出之用於執行緒T0的指令資料以及緩衝器834儲存從管線階段C輸出之用於執行緒T1的指令資料。雖然第8圖說明階段之間用於每一執行緒的個別緩衝器,但得以瞭解階段之間的多個執行緒可利用單一緩衝器。
每一執行緒選擇器模組包括連接至在較早管線階段的輸出之緩衝器的輸入,以及連接至相關管線階段的第一次階段之輸入的輸出。在第8圖中,該執行緒選擇器模組812包括連接至緩衝器820及822之輸入以及連接至次階段A0 的輸入之輸出,該執行緒選擇器模組814包括連接至緩衝器824及826之輸入,以及連接至次階段B0 之輸出,並且該執行緒選擇器模組816包括連接至緩衝器828及830之輸入以及連接至次階段C0 之輸出。
在操作中,每一執行緒選擇器模組係被組構為獨立地於執行緒T0及T1之間進行選擇以用於處理管線800的每一周期的處理。為了說明,在一給予的周期中,該執行緒選擇器模組812可從用於執行緒T0的緩衝器820中選擇指令資料以在次階段A0進行處理,該執行緒選擇器模組814可從用於執行緒T1的緩衝器826中選擇指令資料以在次階段B0進行處理,以及該執行緒選擇器模組816可從用於執行緒T1的緩衝器830中選擇指令資料以在次階段C0進行處理。經選擇以用於在管線周期的任一給予處理器階段中處理的特定執行緒,可基於執行緒的特性(例如執行緒優先性、向前移行需求等)而被決定、可基於實行於階段的特定指令操作(例如需要被執行於指令操作的週期或次階段之數目)而被決定、可基於相關管線階段之前之緩衝器的特性或依據相關管線階段之後之緩衝器的特性而被決定、或基於其組合而被決定。在一實施例中予以說明,該執行緒選擇器模組係被設置成試圖維持在執行緒間近乎相同的緩衝器的滿度,俾使該執行緒選擇器模組選擇在相對應之管線階段的輸出具有較空的緩衝器之執行緒。例如假設緩衝器828(執行緒T0)比緩衝器830(執行緒T1)滿。在此例中,執行緒選擇器模組814可判定在緩衝器828和830各者的指令資料數量,並可在注意到緩、衝的指令資料的數量差別之情形下,從緩衝器826(執行緒T1)中選擇指令資料,以便將來自管線階段F處理的指令資料的結果儲存於緩衝器830中,以此方法可降低緩衝器溢位(overflow)/下溢(underflow)狀況的可能性。於另一實施例中,該執行緒選擇器模組可基於種種選擇方法來選擇一執行緒以進行處理,例如循環(round-robin)方法。
第9圖說明根據本發明所揭露之至少一實施例的處理管線800的操作之實施例。管線階段902說明了執行緒T0 至T1 的其中之一係在處理器週期K至K+2的次階段A0 、A1 、A2 、B0 、B1 、B2 、C0 、C1 、及C2 (以下稱次階段A0 至C2 )被處理,管線階段904說明了執行緒T0 至T1 的其中之一係在處理器週期L至L+2的次階段A0 至C2 被處理,管線階段906說明了執行緒T0 至T1 的其中之一係在處理器週期M至M+2的次階段A0 至C2 被處理。以下係以Tx (Y)表示執行緒X的第Y指令。
在週期K、K+1及K+2中,該執行緒選擇器模組812選擇了分別來自執行緒T0 、執行緒T0 及執行緒T1 的指令資料。因此,於週期K+2後,次週期A2 正處理來自執行緒T0 (定義為指令資料T0 (0))的指令資料,次週期A1 正處理來自執行緒T0 (定義為指令資料T0 (1))的指令資料,以及次週期A0 正處理來自執行緒T1 (定義為指令資料T1 (0))的指令資料。
在週期L,L+1及L+2中,該執行緒選擇器模組812選擇了分別來自執行緒T0 、執行緒T1 及執行緒T1 的指令資料,且該執行緒選擇器模組814選擇了分別來自執行緒T1 、執行緒T0 及執行緒T0 的指令資料。因此,於週期L++2後,次週期A2 正處理來自執行緒T0 (定義為指令資料T0 (2))的指令資料,於週期L+2後,次週期A1 正處理來自執行緒T1 (定義為指令資料T1 (1))的指令資料,以及次週期A0 正處理來自執行緒T1 (定義為指令資料T1 (2))的指令資料。並且,於週期L+2後,次週期B2 正處理來自執行緒T1 (定義為指令資料T1 (0))的指令資料,次週期B1 正處理來自執行緒T0 (定義為指令資料T0 (0))的指令資料,以及次週期B0 正處理來自執行緒T0 (定義為指令資料T0 (1))的指令資料。
在週期M、M+1及M+2中,該執行緒選擇器模組812對於三個週期全部選擇執行緒T1 的指令資料,而該執行緒選擇器模組814選擇了分別來自執行緒T1 、執行緒T1 及執行緒T0 的指令資料,且該執行緒選擇模組816選擇了分別來自執行緒T0 、執行緒T0 及執行緒T1 的指令資料。因此,於週期M+2後,次週期A2 正處理來自執行緒T1 (定義為指令資料T1(3))的指令資料,次週期A1 正處理來自執行緒T1 (定義為指令資料T1 (4))的指令資料,以及次週期A0 正處理來自執行緒T1 (定義為指令資料T1 (5))的指令資料。並且,於週期M+2後,次週期B2 正處理指令資料T1 (1),次週期B1 正處理指令資料T1 (2),次週期B0 正處理指令資料T0 (2),次週期C2 正處理指令資料T(0),次週期C1 正處理指令資料T0 (1),以及次週期C0 正處理指令資料T1 (0)。
第9圖說明了每一管線階段係獨立地在執行緒間作選擇,以至於在任何給予的管線週期中,該管線階段可令來自不同執行緒之指令資料分散在其次階段之中。這種在每一管線階段中的獨立選擇性可促進執行緒間更多的進展。
第10圖說明根據本發明所揭示之至少一實施例之管線階段特定執行緒執行的方法1000之實施例,簡單說明之,方法1000係描述在第9圖之處理管線900的內容。
針對一給予之管線週期,於步驟1002中,關聯於第一管線階段之執行緒選擇器模組(例如執行緒選擇器模組812、814或816)係從複數個用以於該第一管線階段進行處理之執行緒中選擇了第一選擇執行緒。於步驟1004中,從先前管線階段的輸出的緩衝器中獲得關聯於該第一選擇執行緒的指令資料,且該指令資料係被提供至該第一管線階段的初始次階段,以於該管線周期中進行處理。對相同的管線週期而言,於步驟1006中,關聯於第二管線階段之該執行緒選擇器模組係從複數個用以於該第二管線階段進行處理之執行緒中選擇了第二選擇執行緒。於步驟1008中,從該第二管線階段的前端之管線階段的輸出處之緩衝器中,獲得關聯於該第二選擇執行緒的指令資料,且該指令資料係被提供至該第二管線階段的初始次階段以於該管線週期中進行處理。於至少一實施例中,步驟1002至步驟1004的過程與步驟1006至步驟1008同時執行。
於至少一實施例中,該第一選擇執行緒及該第二選擇執行緒可為相同或不同的執行緒,該第一選擇執行緒及該第二選擇執行緒的選擇可基於下列者而執行:執行緒優先性、針對一執行緒所緩衝之指令資料相對於其他執行緒的比較量(例如用於一執行緒的緩衝指令資料數量與其他執行緒的緩衝指令數量之比例)、循環方法或其組合。
熟悉此技術之人士可由本說明書所揭示之說明和內容了解本發明之其他實施例、優點與功效,本發明之說明書及圖示僅例示性說明,且本發明所揭示之範圍,應僅由後述之申請專利範圍及其相當範圍所限制。
100...處理設備
102至108...處理器核心
109...記憶體管理單元
110...互連
200...處理管線
202...預先執行前端單元
204...執行後端單元
206...指令提取模組
208...指令解碼模組
210...指令調度模組
212,214...整數執行單元
216...浮點單元
220...算術邏輯單元
222...位置產生單元
224...載入/儲存單元
226...執行緒收回模組
302...預先解碼/撿取模組
304...解碼控制器
305至308...平行解碼路徑
310...解多工器
312...徵代碼解碼器
314...捷徑硬體解碼器
316,318‧‧‧格式解碼器
320‧‧‧調度緩衝器
322‧‧‧調度控制器
324‧‧‧資源監視器
326,330‧‧‧匯流排控制器
328,332‧‧‧調度匯流排
334,336‧‧‧執行單元
338‧‧‧指令提取緩衝器
402‧‧‧中間軸
502至520‧‧‧步驟
601至604‧‧‧時間
612至614‧‧‧結構狀態
610,618‧‧‧串流
620‧‧‧記憶體
701至704‧‧‧時間
710,712,714‧‧‧串流
802‧‧‧管線階段A
804‧‧‧管線階段B
806‧‧‧管線階段C
820至834‧‧‧緩衝器
812至816‧‧‧執行緒選擇器模組
902至906‧‧‧管線階段
1002至1008‧‧‧步驟
藉由參考所附加的圖示,可使本發明及其在相關技術領域中的特性與優點更容易被理解。
第1圖為方塊圖,係說明包括根據本發明至少一實施例的多個處理器核心;
第2圖為方塊圖,係說明具有多個可根據本發明至少一實施例並行實行的多個整數執行單元的處理器核心的處理管線;
第3圖為示意圖,係說明根據本發明至少一實施例之第2圖的處理管線的前端單元部份的實施例;
第4圖為示意圖,係說明根據本發明至少一實施例的指令調度模組;
第5圖為示意圖,係說明根據本發明至少一實施例的第2、3及4圖的處理管線的實施例;
第6圖為示意圖,係說明根據本發明至少一實施例的用於處理管線的急切執行技術的實施例;
第7圖為示意圖,係說明根據本發明至少一實施例的用於處理管線的急切執行技術的另一實施例;
第8圖為示意圖,係說明根據本發明至少一實施例被形成以用於獨立線選擇的包括多個處理階段的處理管線;
第9圖為示意圖,係說明根據本發明至少一實施例的第8圖的處理管線的操作實施例;以及
第10圖為流程圖,係說明根據本發明至少一實施例的用於處理管線的階段特定執行緒選擇的方法。
在不同的圖示中的相同參考符號係指相似或完全相同的物件。
200...處理管線
202...預先執行前端
204...預先執行後端
206...指令提取模組
208...指令解碼模組
210...指令調度模組
212,214...整數單元
216...浮點單元
220...算術邏輯單元
222...位置產生單元
224...載入/儲存單元
226...執行緒收回模組

Claims (12)

  1. 一種用於組構於處理管線內多執行緒之方法,包括:對複數個週期的每一個週期:於複數個執行緒之間進行選擇以決定用於處理管線的第一階段之第一選擇執行緒,其中該第一選擇執行緒係基於第一緩衝器的特性而被選擇,且該第一緩衝器係耦合在該第一階段的輸出;於該第一階段處理關聯於用於該第一階段的該第一選擇執行緒之指令資料;於該複數個執行緒之間進行選擇以決定用於處理管線的第二階段之第二選擇執行緒,其中該第二選擇執行緒係基於第二緩衝器的特性而被選擇,且該第二緩衝器係耦合在該第二階段的輸出;以及於該第二階段處理關聯於用於該第二階段的該第二選擇執行緒之指令資料;其中,該第一選擇執行緒及該第二選擇執行緒係被分享且調度至並行操作的多個執行單元。
  2. 如申請專利範圍第1項之方法,該方法又包括:對該複數個週期的每一個週期:於複數個執行緒之間進行選擇以決定用於處理管線的第三階段之第三選擇執行緒;於該第三階段處理關聯於用於該第三階段的該第三選擇執行緒之指令資料。
  3. 如申請專利範圍第2項之方法,其中,該第一階段包 括指令提取階段,該第二階段包括指令解碼階段,而該第三階段包括指令調度階段。
  4. 如申請專利範圍第1項之方法,其中,該第一緩衝器的該特性包括關聯於該第一選擇執行緒的指令資料之經緩衝之數量。
  5. 如申請專利範圍第1項之方法,其中,該第二緩衝器的該特性包括關聯於該第二選擇執行緒的指令資料之經緩衝之數量。
  6. 如申請專利範圍第1項之方法,其中,該第一選擇執行緒及該第二選擇執行緒係為相同的執行緒。
  7. 如申請專利範圍第1項之方法,其中,該第一選擇執行緒及該第二選擇執行緒係為不同的執行緒。
  8. 一種用於組構於處理管線內多執行緒之方法,包括:於第一次時,處理在處理管線的第一階段之第一指令資料以產生第二指令資料,且該第一指令資料及該第二指令資料係關聯於第一執行緒;於該第一次後的第二次時,處理在該處理管線的該第一階段之第三指令資料以產生第四指令資料,且該第三指令資料及該第四指令資料係關聯於與該第一執行緒不同的第二執行緒;於該第二次後的第三次時,處理在處理管線的第二階段之第四指令資料以產生第五指令資料;於該第三次後的第四次時,處理該第二指令資料以產生第六指令資料; 於該第一次前,基於連接該第一階段的輸出的緩衝器的第一特性選擇該第一執行緒;以及於該第二次前,基於該緩衝器的第二特性選擇該第二執行緒;其中,該第一執行緒及該第二執行緒係被分享且調度至並行操作的多個執行單元。
  9. 如申請專利範圍第8項之方法,其中,該第一特性包括在該第一次前於該緩衝器中進行緩衝的該第一執行緒所相關之指令資料的數量,而該第二特性包括在該第二次前於該緩衝器中進行緩衝的該第二執行緒所相關之指令資料的數量。
  10. 一種用於組構於處理管線內多執行緒之系統,包括:第一管線階段,具有連接第一緩衝器的輸入及連接第二緩衝器的輸出,其中,該第一執行緒選擇控制器係基於該第二緩衝器的第一特性而選擇執行緒;第二管線階段,具有連接該第二緩衝器的輸入及連接第三緩衝器的輸出,其中,該第二執行緒選擇控制器係基於該第二緩衝器的第二特性及該第三緩衝器的第三特性而選擇執行緒;第一執行緒選擇控制器,用以在複數個執行緒之間反覆進行選擇,且從該第一緩衝器提供經選擇之執行緒之指令資料,以供該第一管線階段處理;以及第二執行緒選擇控制器,用以在複數個執行緒之間反覆進行選擇,且從該第二緩衝器提供經選擇之執 行緒之指令資料,以供該第二管線階段處理;其中,從該第一緩衝器所選擇的該執行緒及從該第二緩衝器所選擇的該執行緒係被分享且調度至並行操作的多個執行單元。
  11. 如申請專利範圍第10項之系統,其中,該第一特性係包括在該第一緩衝器中進行緩衝的關聯於該第一執行緒之指令資料的數量,該第二特性係包括在該第二緩衝器中進行緩衝的關聯於第二執行緒之指令資料的數量,而該第三特性係包括在該第三緩衝器中進行緩衝的關聯於該第二執行緒之指令資料的數量。
  12. 如申請專利範圍第10項之系統,其中,該第一階段及該第二階段係各自包括指令提取階段、指令解碼階段、或指令調度階段的其中之一。
TW97149629A 2007-12-31 2008-12-19 用於組構具有階段特定性執行緒選擇之處理管線的系統及其方法 TWI467479B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/967,923 US8086825B2 (en) 2007-12-31 2007-12-31 Processing pipeline having stage-specific thread selection and method thereof

Publications (2)

Publication Number Publication Date
TW200939117A TW200939117A (en) 2009-09-16
TWI467479B true TWI467479B (zh) 2015-01-01

Family

ID=40243979

Family Applications (1)

Application Number Title Priority Date Filing Date
TW97149629A TWI467479B (zh) 2007-12-31 2008-12-19 用於組構具有階段特定性執行緒選擇之處理管線的系統及其方法

Country Status (3)

Country Link
US (1) US8086825B2 (zh)
TW (1) TWI467479B (zh)
WO (1) WO2009085086A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101325063B (zh) * 2007-06-12 2011-02-16 建兴电子科技股份有限公司 全息储存系统中寻找定位点位置的方法
US20090172370A1 (en) * 2007-12-31 2009-07-02 Advanced Micro Devices, Inc. Eager execution in a processing pipeline having multiple integer execution units
US7793080B2 (en) * 2007-12-31 2010-09-07 Globalfoundries Inc. Processing pipeline having parallel dispatch and method thereof
TWI474280B (zh) * 2010-04-21 2015-02-21 Via Tech Inc 增進繪圖處理單元之總處理量的方法與系統
US9798548B2 (en) 2011-12-21 2017-10-24 Nvidia Corporation Methods and apparatus for scheduling instructions using pre-decode data
JP5850774B2 (ja) * 2012-03-22 2016-02-03 ルネサスエレクトロニクス株式会社 半導体集積回路装置及びそれを用いたシステム
US9164570B2 (en) 2012-12-13 2015-10-20 Advanced Micro Devices, Inc. Dynamic re-configuration for low power in a data processor
US10140129B2 (en) * 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US9336003B2 (en) * 2013-01-25 2016-05-10 Apple Inc. Multi-level dispatch for a superscalar processor
IL225988A (en) * 2013-04-28 2017-12-31 Technion Res & Development Found Ltd Multi-process based management from Meristor
US9348595B1 (en) 2014-12-22 2016-05-24 Centipede Semi Ltd. Run-time code parallelization with continuous monitoring of repetitive instruction sequences
US10180841B2 (en) 2014-12-22 2019-01-15 Centipede Semi Ltd. Early termination of segment monitoring in run-time code parallelization
CN107003859A (zh) * 2014-12-22 2017-08-01 森蒂彼得塞米有限公司 通过连续监控重复指令序列的运行时代码并行化
US10296350B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences
US10296346B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences based on pre-monitoring
US9715390B2 (en) 2015-04-19 2017-07-25 Centipede Semi Ltd. Run-time parallelization of code execution based on an approximate register-access specification
US10034407B2 (en) 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023834A1 (en) * 1999-04-29 2003-01-30 Stavros Kalafatis Method and system to insert a flow marker into an instruction stream to indicate a thread switching operation within a multithreaded processor
US20040210742A1 (en) * 2003-04-21 2004-10-21 International Business Machines Corporation Method and circuit for modifying pipeline length in a simultaneous multithread processor
TW200622886A (en) * 2004-09-02 2006-07-01 Ibm Methods and apparatus for pipelined processing
TWI285314B (en) * 2004-12-23 2007-08-11 Intel Corp Dynamic allocation of a buffer across multiple clients in a threaded processor

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5051885A (en) * 1988-10-07 1991-09-24 Hewlett-Packard Company Data processing system for concurrent dispatch of instructions to multiple functional units
JP2858140B2 (ja) * 1988-10-19 1999-02-17 アポロ・コンピューター・インコーポレーテッド パイプラインプロセッサ装置および方法
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US6289442B1 (en) * 1998-10-05 2001-09-11 Advanced Micro Devices, Inc. Circuit and method for tagging and invalidating speculatively executed instructions
US20030046517A1 (en) * 2001-09-04 2003-03-06 Lauterbach Gary R. Apparatus to facilitate multithreading in a computer processor pipeline
US6745179B2 (en) 2001-10-12 2004-06-01 Shipley Company, L.L.C. Method and system for facilitating viewer navigation through online information relating to chemical products
US7209996B2 (en) * 2001-10-22 2007-04-24 Sun Microsystems, Inc. Multi-core multi-thread processor
US7313676B2 (en) * 2002-06-26 2007-12-25 Intel Corporation Register renaming for dynamic multi-threading
US7310722B2 (en) 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US7392366B2 (en) * 2004-09-17 2008-06-24 International Business Machines Corp. Adaptive fetch gating in multithreaded processors, fetch control and method of controlling fetches
US20060265555A1 (en) * 2005-05-19 2006-11-23 International Business Machines Corporation Methods and apparatus for sharing processor resources
US7509481B2 (en) * 2006-03-03 2009-03-24 Sun Microsystems, Inc. Patchable and/or programmable pre-decode
US20080263325A1 (en) * 2007-04-19 2008-10-23 International Business Machines Corporation System and structure for synchronized thread priority selection in a deeply pipelined multithreaded microprocessor
US7793080B2 (en) * 2007-12-31 2010-09-07 Globalfoundries Inc. Processing pipeline having parallel dispatch and method thereof
US20090172370A1 (en) * 2007-12-31 2009-07-02 Advanced Micro Devices, Inc. Eager execution in a processing pipeline having multiple integer execution units

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023834A1 (en) * 1999-04-29 2003-01-30 Stavros Kalafatis Method and system to insert a flow marker into an instruction stream to indicate a thread switching operation within a multithreaded processor
US20040210742A1 (en) * 2003-04-21 2004-10-21 International Business Machines Corporation Method and circuit for modifying pipeline length in a simultaneous multithread processor
TW200622886A (en) * 2004-09-02 2006-07-01 Ibm Methods and apparatus for pipelined processing
TWI285314B (en) * 2004-12-23 2007-08-11 Intel Corp Dynamic allocation of a buffer across multiple clients in a threaded processor

Also Published As

Publication number Publication date
TW200939117A (en) 2009-09-16
WO2009085086A1 (en) 2009-07-09
US8086825B2 (en) 2011-12-27
US20090172362A1 (en) 2009-07-02

Similar Documents

Publication Publication Date Title
TWI467479B (zh) 用於組構具有階段特定性執行緒選擇之處理管線的系統及其方法
US7793080B2 (en) Processing pipeline having parallel dispatch and method thereof
US20090172370A1 (en) Eager execution in a processing pipeline having multiple integer execution units
US7237094B2 (en) Instruction group formation and mechanism for SMT dispatch
US7398374B2 (en) Multi-cluster processor for processing instructions of one or more instruction threads
US6594755B1 (en) System and method for interleaved execution of multiple independent threads
CN100440139C (zh) 双线程处理器和方法
JP6043374B2 (ja) 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置
US7254697B2 (en) Method and apparatus for dynamic modification of microprocessor instruction group at dispatch
US6363475B1 (en) Apparatus and method for program level parallelism in a VLIW processor
US20040216106A1 (en) Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US20080046689A1 (en) Method and apparatus for cooperative multithreading
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
US20110265068A1 (en) Single Thread Performance in an In-Order Multi-Threaded Processor
US20080162904A1 (en) Apparatus for selecting an instruction thread for processing in a multi-thread processor
US20180365053A1 (en) Method and apparatus for dynamically balancing task processing while maintaining task order
WO2007100487A2 (en) Distributive scoreboard scheduling in an out-of-order processor
JP5861354B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20100050178A1 (en) Method and apparatus to implement software to hardware thread priority
US20140189300A1 (en) Processing Core Having Shared Front End Unit
JP5104861B2 (ja) 演算処理装置
JP4327008B2 (ja) 演算処理装置及び演算処理装置の制御方法
US6907518B1 (en) Pipelined, superscalar floating point unit having out-of-order execution capability and processor employing the same
US20080046684A1 (en) Multithreaded multicore uniprocessor and a heterogeneous multiprocessor incorporating the same
CN114514505A (zh) 退役队列压缩