TW200939117A - Processing pipeline having stage-specific thread selection and method thereof - Google Patents

Processing pipeline having stage-specific thread selection and method thereof Download PDF

Info

Publication number
TW200939117A
TW200939117A TW097149629A TW97149629A TW200939117A TW 200939117 A TW200939117 A TW 200939117A TW 097149629 A TW097149629 A TW 097149629A TW 97149629 A TW97149629 A TW 97149629A TW 200939117 A TW200939117 A TW 200939117A
Authority
TW
Taiwan
Prior art keywords
thread
instruction
buffer
selection
stage
Prior art date
Application number
TW097149629A
Other languages
English (en)
Other versions
TWI467479B (zh
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

200939117 六、發明說明: 【發明所屬之技術領域】 本發明係關於指令處理,更詳而言之,係關於在處理 管線中的多執行緒處理。 【先前技術】 Ο 多執行緒處理設備(multithreaded processing device) 通常實行粗略的多執行緒處理(multithreading) ’藉此,處 理管線(processing pipeiine)得以於任何給予的時間中專屬 於單一執行緒。於執行緒切換之事件中,處理管線會清除 (flush)目前執行緒,並且,新選擇的執行緒的指令會被處 理管線處理。清除處理管線的過程可能消耗大量的周期, 並因此降低整體的指令執行頻寬。除此之外,一些多執行 緒處理設備實行更精細的多執行緒處理,藉此,來自多個 執行緒的指令在處理管線開始時可被多工執行 〇 (mUltipleXed>。“,針料餘管㈣糾之處理所選 擇的執行緒的順序—般係被維持於該管線的所有隨後階 段。追將會導致無效的處理,如果處理管線的特別階段當 指令祕在特㈣的事件(例如來自記憶體的資料返 :=。因此’在處理管線中更彈性的執行緒购 係有利的。 . · 【發明内容】 V . . · .· - · . · 因此,本發明提供一種方鈕& .aH. ^ 凌以解決先刖技術的問題。 每個ia期例中,該方法包括:對魏個週期的 母-個雜.於錢個執㈣之㈣行選擇叫定用於處 94558 4 200939117 理管蜂的第i段之第-選擇執行緒;於該第一階段處理 關聯於用於該第一階段的該第一選擇執行緒之指令資料. 於該複數個執行緒之間進行選择以決定用於處理;線的第 V二階段之第二卿執行緒;以及於·二階段處理關聯於 用於該第一階段的該第一遷擇執行緒之指令資料。 在本發明的另一實施例中,係該方法包括:於第一次 時,處理在處理管線的第一階段之第一指令資料以產生第 約二指令資料’且該第>指令資料及該第二指令資料係關聯 於第一執行緒;於該第一次後的第二次時,處理在該處理 管線的該苐一階段之第三指令資料以產生第四指令資科, 且該第二指令資料及該第四指令資料係關聯於與該第一執 行緒不同的第二執行緒,於該第二次後的第三次時,處理 在處理管線的第二階段之第四指令資料以產生第五指令資 料;以及於該第三次後的第四次時,處理該第二指令資料 以產生第六指令資料。 ❹ 本發明另外提供一種系統,包括:第一管線階段,具· 有連接第一緩衝器的輸入及連接第二緩衝器的輸出;第二 官線階段,具有連接該第二緩衝器的輸入及連接第三缓衡 器的輪出’第一執行緒選擇控制器,用以在複數個執行緒 之間反覆進行選擇,且從該第一緩衝器提供經選擇之執行 緒之#曰令負料’以稃該第一管線階段處理;以及第二執行 、’者選擇控制器,用以在複數個執行緒之間反覆進行選擇, 且從該第二緩衝器提供經選擇之執行緒之指令資料,以供 該第二管線階段處理。 、 5 94558 200939117 【實施方式】 第1圖係說明根據本發明至少一個實施例的處理設備 100的實施例。該處理設備100包括多個處理器核心(例如 處理器核心102、104、10.6及108)以及一個或多個相關的 模組(記憶體管理單元109(MMU)),其係透過一個或多個 互連(interconnect) 110而連接,其中,互連110可包括像 是匯流排、交點式開闢(cross-point switch) >橋接器(例如 北橋或南橋)、HyperTransport™連接或相關的組合。記憶 體管理單元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中一個1或多個的處理管 200939117 線的一些或全部階段可被組構成以使用用於相關階段的獨 立執行绪選擇。 第2圖係說明相關於本發明至少一實施例中處理器核 心的處理管線200的實施例。該處理管線200在一實施例 中係使用於如第1圖中處理器核心102-108的一個或多個 的每一個的處理管線。 在所描述的實施例中,談處理管線200包括預先執行 前端單元202及執行後端單元204。該預先執行前端單元 〇 2〇2(以下寫為“前端單元202”)包括指令提取模組2〇6、 指令解竭模組208及指令調度模組210。在一實施例中, 指令提取模組206係用以提取與一個或多個執行緒(例如 執行緒T0及T1)相關的指令以及儲存經提取之指令於指 7知:取緩衝器(未顯示於圖中)。指令提取模組206可用 各式各樣的提取/預取技巧中的任何一項以提取指令資 料。在一實施例中,指令解碼模組208係甩以將經提取之 ❹指令解碼成一個或多個經解碼之指令操作(例如微指令 (microinstructions)或微碼(microc〇de)操作)以及緩衝經解 碼之指令操作於解碼缓衝器中(未顯示於圖中)。在一實施 例的指令調度模組21 〇係用以調度從解碼緩衝器中所選出 的經解碼之指令操作至許多不同執行後端單元2 〇4(以下寫 為:“後端單元204”)。 . · 、 . 在一實施例中的後端單元204包括多個整數執行單 元,像是整數執行單元212及214,其係用以執行由指令 調度模組210調度的整數指令操作。該後端單元2〇4復可 94558 7 200939117 包括浮點單元216,其係用以執行由指令調度模組21〇所 調度的浮點操作。藉由FPU 216的浮點操作的執行結果可 被提供至整數執行單元212及214其中任一個,而用於藉 由依據該結果之整數操作所進行的後續處理,反之亦然。 在一實施例中,整數執行單元212包括··至少一個資 料算術邏輯早元 220(data arithmetic logic unit : ALU),其 係用以執行基於被執行的整數指令操作的算術操作;至少 一個位址產生單元 222(address generation unit : AGU),係 用以產生位址以存取來自快取/記憶體之用於被執行的整❹ 數指令的資料;排程器(未顯示於圖中)’用以控制從記憶 體/儲存的資料載入至記憶體之载入/儲存單元. 224(l〇ad/St〇re unit: LSU);以及執行緒收回模組 226(thread retirement module) ’係用以維持中間的結果與將整數指令 操作的、、.α果提父至架輪狀態。在一實施例中,及 AGU 222係當成相同的單元被實施。該整數執行單元 復可包括用以接收來自咖216❺資料的輸入,而一個或 多個被整數執行單元2U處理的指令操作係依據從 216接—資料。該整數執行料2M可被相似地組構…. 在操作上’整數執行單元212和214及在分 享前端單元202的資源時係並行的操作。關連於—個或彡 個執行緒的才曰7係由指令提取模組施所提取及由指令解 馬模組2〇8所解褐。該指令調度模組训接著可基於許多 ^素(像疋操作形式(例如整數或浮點)、相關的執行緒、負 、資料有效f生架構限制以及其他)調度經解瑪的指令所 ' 8 94558 200939117 代表的指令操作至所選擇的一個或多個執行單元212、整 數執行單元214或FJPU 216。因此被調度的指令操作可由 其各別的執行單元執行於相同的執行周期。對於由經緩衝 的經解碼之指令所代表的浮點操作,該指令調度模組21Q 基於執行緒優先性、向前移行需求(forward progress requirement)以及其他者而決定FpiJ216的調度順序。對於 ❹ ❹ 由經緩衝的經解碼之指令所代表的整數指令操作,該指令 調度模組210基於許多種調度準則中的任一種,像是執行 緒連繫、優先順序、負载等決定調度順序及哪一個整數執 行單元執行哪一個整數執行指令。 為了說明,假設有由處理管線2〇〇所處理的兩執行緒 蔣關>在本實施例中’指令調度模組210可被組構成 ’ Λ订緒TG的整數指令操作調度至整數執行單元 行單於决執白行緒T1的整數指令操作調度至整數執 優先“執行緒的浮點操作則以由執行緒 優先性、FPU 210的負载等所也_ 田轨玎縉
216。曰、斤决疋的順序被調度至FHJ 216 —旦被調度至他們各別的勃弁又王ru 執行於相對應的執行周期。 早疋’該操作可被同時 或者是,整數指令操作可適. 212及214。為了解釋說明,再欠調度至整數執行單元 被處理管線200所處理。在此實-人假設兩執行緒T.0及T1 21〇可以依據執行緒優先性例中,該指令調度模組 孝 者將整數指令操作從執行緒τ〇及 212與214中的任一個。 ^、㈣移㈣求及其他
Tl調度至整數執行單为 94558 200939117 在特定實施例中,該處理管線200可只處理單一執_ =在此實施例中,指令調度模組㈣可被組構為依據^丁 疋或適時的調度計劃將相關於該執行緒的整數 度至整數執行單it 212纟214。除此之外,該指令調度模 組210可被組構為將該單一執行緒的整數指令操作調产至 整數執行單元212或214之1中夕一,而土杜m 又 仵罝ίηη 〃中之而未使用的整數執 灯早凡可被關閉或者失能以降低電源的消耗。舉例而+ 該未使用的整數執行單元可藉由降低供應至整數執行^元 Ο 的電路的電源、時脈門控(cl〇ck训ing)整數執行軍元 路及其他方式而失能。 多個並行執行且分享相同的前端單元2〇2之整勃〜 單元的實行透過整數執行單元之間的合作加速單-執行^ 的執行。整數執行單元212及214可用於實行超前運轉叶 劃(nm ahead scheme),其中,指令調度模組2ί 〇 體存取操作(例如載入操作及儲存操作)至一個整數 兀’同時職非記賴麵操作至其他整數執行單元。急 =釋說明,前端料加可提取及解碼與執行緒相關的 指々,以使在該執行緒的程式序列中之後的载入指令可被 預先提取並進而調度至該等整數執行單元之一者執 單元依然執行於程式序列中較早點 的非σ己隐體存取指令。以彳含禅 - k樣的方式,在一個整數執行單 元準備執行相依於狀操作賴令之前,記題資 取並且可於快取争取得(或是已經在被預先提取 的過程中)。 94558 10 200939117 整數執行單元202及204的合作使用的另一實施例係 用於^、切執行计劃(eaSer execution scheme),藉此在指令序 /列中=支的結果都可由每—錄指令單元被烟的繼續進 灯°田決定出正柄分支時’被指派給最終為正確之分支 的整數指令單元可轉移其狀態至另一整數指令單元,然後 兩整數指令單元都可被用於執行緒流執 解釋執行緒指令的急切執行的實施例:—表1係 表1 :急切執行實施例 一區段 ----— 指令 ~^ΙΓ~~~~^~ add rl,~~~~- A ---- cmp rl,r3 jne next 3.0.0. r3~’~3~>~~~~~~~ --- B ------ • · · mov r6,r3 C next : addT3Tj7~~--— - ' '——---
參考表1解釋說明,指令區段八代夹站 式跳躍指令(jne)的指令序列,指令區段、及包括條件 時跟隨在後的指令序列,以及區::、c代表如果有跳躍 與條件式跳躍指令的目樣(next)^3^代^^條件式跳躍指令 例中,前端單元202可調度區段A及的^曰7序列。在本實施 (例如在沒有執行跳躍之事件中的々^代表的指令序列 212,以及調度區段Α及c所代表的^ 至整數執行單元 行跳躍之事件中的程式流)至整數θ 7序列(例如在有執 執彳T單it 214。如果最後 94558 11 200939117 決定執行跳躍,則p私/ 狀態可被轉換至整數執;^確路徑的整數執行單元2H的 定不執行跳躍,則⑽Γ早元212。相反地,如果最後決 狀態可被㈣至的整數執行單元212之 將參考第7 更詳㈣執行實施例 如再一實施例’整數執行單元212及214可被 打::單一執行緒的可靠執行計劃。在此 的整數指令操作被調度至整數執行單元212及Μ 2 執行,並且例如藉由每一 用於 〇 226來比料# u整數執 官線回收模組 將被初為符合,職數齡操作的結果 將被4 #、了靠的且進行下-健令㈣的執行。反之 則該,果被認為係不可靠的且將執行修正的動作, 由發出異常或其他輸入、藉由再次執行整數指令操作等。曰 .藉由利用分享-個FPU(或分享多個Fpu)以及享單 〇
了^理前端單元之整數執行單元,可達成衫個執行I 凡供的增加之處理頻寬,同時降低或去除傳統設計的 設t複雜性及電源祕,該傳統設計係湘用於每一整數 執行單元的分開的預處理前端單元。再者,因為在許多情 射’係執行單元造成處理管線的瓶頸,所錢用單一^ 享,前端將在處理頻寬上只些微(如果有的話)導致延遲, 這是因為前端單元的提取、解碼及調度操作通常比兩個或 多個執行單元結合的指令通量可實從於較高的指令通量之 故。 94558 12 200939117 第3圖係說明關於本發明至少一實施例的前端單元 202的指令解碼模組208及指令調度模組210的實施例。 在本實施例中,該指令解碼模組208包括預先解碼/ 撿取模組302(predecode/pick module)、解碼控制器304以 及並行解碼路徑305-308。每一解碼路徑包括解多工器 (demuliplexer)310或其他轉換機構、微代碼解碼器312、 捷徑硬體解碼器(fastpath hardware decoder)3l4以及兩個 格式解碼器316及318’其中一個用.於微代喝解碼器312., © 另一個用於捷徑硬體解碼器314。 該指令調度模組210包括調度緩衝器320、調度控制 器322、資源監視器324、連接至調度匯流排328的匯流排 控制器326以及連接至調度匯流排332的匯流排控制器 330。該匯流排328係連接至執行單元334(如第4圖所示), 而調度匯流排332係連接至執行單元336 (如第4圖所 不)’其中執行單το 334及336中任一個都可包括整數執行 ❹單兀或洋點單元。本實施例中的該調度匯流拂328及332 係分開的,並且每一個係能夠同時傳送高達N個指令操作 至對應的執行單元4已經說明的實施例中,高達四個(例 如N,旨令操作可於所給定的任何調度周期被調度至各 個調度匯流排。 > 參考第4圖,其係說明根據本發明至少—實施例的指 令調度模組208、執行單元334及336、以及調度匯流排 =8及332的排列。在先前技術系統中,該調度模組透過 單-調度匯流排連接多個執行匯流排,而因為該等執行單 94558 13 200939117 70合起來通常能夠發出比透過單一調度匯流排所能提供者 〇多的指令操作,因此該單—調度匯流排限制了調^ 。因此’如上所述,在一實施例中’指令調度模組纖 '、利用兩個分別的調度匯流排,分別用於每一執行單元, 二加倍可被調度於任何所給定的調度週期中的指的 大數量。然而’吾人將可察覺到加倍的調度匯流排數量 ^加倍調度模組及執行單元間的導電跡線(c〇nductive 〇 =吟且若不加以注意則每—導電跡線會消耗寶貴的空 然而’在許多實作中’該調度·—般係位於執行單 疋之間(例如配置於執行單元334及執行單元幻6之間的中 上或靠近中心軸撕)。在這樣的情形中,先前技 線從2調度隨排應㈣需要單—調度_排的導電跡 維=模向延伸。然而’如第4圖所示,藉由 〇 執行單元336之間的指令調度模組 择繞、線軌跡(細ing track)的數目相較於先前技術的單 及满度匯流排應用不需要增加,這是因為調度匯流排328 置 兩者的導電跡線能以與繞線執跡相同的數目來設 4該繞線軌跡之數目係為了在執行單元之間延伸單 <排的導電跡線所必需者。 為調ί者,藉由創造點對點的調度匯流排似及332,因 流排^流排328及332的導電跡線短於實作單―調度匯 流應用^導電跡線,所以可以實現優於習知單一調度匯 寄生=省電。因此’調度匯流排咖及说具有較低的 〜所以其需要較少的電源以在適當位準驅動訊號。 94558 14 200939117 參考第5圖’其係如第3圖中所說明的根據本發明至 少一實施例的前端單元200之操應用的範例方法s〇〇。在 方塊502’指令提取模組206(如第!圖所示)提取 欠 ❹ 至指令提取緩衝器338。在至少一實施例中,該料 代表一個或多個不同長度的指令,像是關於χ86 ^ :二造 的指令。因此,在一貪施例中,該指令資料包括一個哎多 個開始位元以及一個或多個結束位元以描述指令。在方二 5〇4中,預先解碼/檢取模組3〇2藉由掃瞄指令資料以執行 初始指令處理,,以辨視指令範圍以及查證代表的指人長^ 係正確的。再者,預先解碼/檢取模組3〇2預先解^二辨= 的指令以辨視特定相關的特性,其係可影響下游指令的處 理,像是該指令是否包括立即欄(immediate field)、是否有 任何的分支、該指令是否需要下載操作、儲存操作=其他 的記憶體操作等' ^ ^ ^ ^ ^ ^ ^ ^ 在校準及解碼後,每一指令係藉由方塊5〇6中的解碼 ❹控制器304導向至並行解碼路徑3〇5_3〇8之其中之—。一 旦在解碼路徑305-308中一個時,解碼控制器3〇4透過解 多工器310將指令導向微代碼解碼蒸312或捷徑硬體解碼 器M4之任一個。為了說明,要求多於兩個指令操作的指 令係被導向至微代碼解碼器312,微代碼解碼器312使^ 一個或多個微解碼表(例如唯讀記憶體(R〇M))的階系 (hierarchy),以透過一個或多個表查操作將所接受的指^ 轉換至一個或多個微代碼指令操作的組集(set)。要求 或更少的指令操作的指令,可被導向至捷徑硬體解碼器 94558 15 200939117 314以解碼至相關的指令操作組集。 在方塊508中’格式解碼器316及318對微代碼解碼 器312及捷徑硬體解碼器314所分別輸出的指令操作執行 最後的解碼,以備調度。該最後的鮮碼可包括根據内部調 度格式而組構指令操作、制換名暫存器及其他。然後該 格式化的指令操作被供至調度緩衝器320。 © ❹ 在方塊510中’調度控制器322從調度緩衝器細選 曰1?::以使其破包含於欲透過調度匯流排328被調 :332::: Γ·!的第一調度群組’或是欲透過調度匯流 種特性任-者而選擇第二調度群組。可基於各 調度群組或該第二調度'、叫其被包含於該第一 被專用-個執行緒且該執行單為:說明’執行單元334可 因此調度控制器322係義、匕兀36專用於另一執行緒, 指令操作。再者,在=於指令操作相關的執行緒以選擇 成監視處理設備1〇〇的下、例中,資源監視器324係組構 作的選擇可基於資源可^資源的可利用性,且該指令操 態的限制,使得指令操作可為了說明,可有動態及靜 給的週期。靜態的限制由處f等限制之下調度於任何所 每-調度群、%最大只有兩個^備的結構所造成,像是·· 言,在載入佇列(queUe)令尸入操作,此係因為,舉例而 中),·每一調度群組最多有一^有兩個寫入埠(未顯示於圖 而言,在儲存佇列中只有〜j儲存操作,此係因為,舉例 一調度群組最多有一個 寫入埠(未顯示於圖中);每 '[此係因為,舉例而言,在分 94558 16 200939117 支狀悲暫存器(Branch Status Register)中的限制(未顯示於 圖中);及其他。動態限制係由處理設備1〇〇的現有資源利 用所造成,像是整數收回單元(未顯示於圖中)之項目的數 量、核對點的數量、排程器項目的數量等。 ❹ 虽該第一及諒第二調度群組準備好時,於每一零到N =間的指令操作’於方塊512中,該調度控制器M2係針 2有的難週期提供該第—調度群組的指令操作(如果 調度匯_控制器328 ’以透過調度匯流排似 ;^你執行單凡334 ’及同時提供該第二調度群組的指令 =如=的話)至調度匯流排剛330,以透過調度匯 排兹盆 送至執仃單元336。然後執行單元334及336 處理用以執行的指令操作。方塊51G及512的調度 處理可被重複於下-個週期等。 針對討論…前端單元逝可被多執行緒處理,以 〇 的組構可、皮t執订的執行緒而處理指令。該多執行緒處理 、破用於適時的增加解碼 第4圖中所解釋的應 ?用又㈣見-係利用如 令解碼触2〇8包知2㈣’如f 3 _述’該指 以解碼四個並行的指路徑3〇5_308 ,係並行操作 -acrooperation) 〇 , 器犯或触硬體^赴的齡解碼只涉及微碼解碼 徑中的另-解喝器會^ 314的其中之一,因此在解碼路 解碼模組3! 6及3丨=罝。然而,因為格式解碼電路(格式 碼器314而被複製,函糸針對微碼解碼器312及捷徑硬體解 此’該解碼控制器304可從另一執 945! 17 200939117 :緒遞=令至其他每一解碼路徑的另一間置解碼器,因 此母-解碼路徑可並行地解碼兩指令。換言之,每當一執 指ί:微:解碼器312時,增加解碼頻寬的機會便 會發生讀,另-執行緒的指令便 捷徑硬體解碼器314用以並行解 ,、八巧置 塊506所代表的過程可包括將第^反之亦然。因此,方 =每接,Γ徑的微, 〇 中一些或全部的解⑽並躲解解碼純-- 另一個增加前端頻寬的機會發生於前端單元202(如 第2圖所示)有執行緒切換 _ J碼早疋啊如 至第二執行緒時,在調/仃緒從第—執行緒切換 的第-執行緒的指中可能會有,^ 被清除以回應執行緒切換。統中’該指令操作將 可利用只調度準備好的提^解方 =t〇入的調度過程中, 〇 本,以回應從第-執行碼^旨令操作的最小成 塊训㈣,藉由 ::作::=:操作中選擇任何從第二執行緒:: 操作’用以包括在第一及笛-ϋβτίΕ·^/丄 5._ . . . , _ _Λ 弟一调度群組中的一個或兩個直 到調度匯流排似缺乏用於第—執行緒的 ^ 到一些在方塊520中的其他情形為止。戈直 第6圖及第7圖係說明用於相關於本發明至於 例的第2圖所示的叢集執行單元結構的急切執行技術2 94558 18 200939117 ::件種經常性地藉由同時地繼續執行接續 於條件I支之後的,可能執行路 緒之執行的技術。許多分支係難以預測,=執:: 支的路㈣者相較於 測的分支路徑係更有利。這樣的=取及執灯所預 個整數操作執行的“流,,,A ^自然地產生了兩 徊'八了個別地破導向執行叢集中的 Ο ❹ :個。闕‘‘未執行,,路徑)可持續在原權 執灯,而該“執行,,路徑可開始執行於另一叢集上。者分支 時’-路徑被終止但另—路徑則繼續:、先前二立之 =(2str)的此㈣的難度係該«集現在必須溝通結 構狀仙為了從初始訊號執行緒“分岐伽k),,兩個串流、在 雙方之叢集中具有任何快取微結構(mic贿Chiteetural)狀 _資料快取、:L1變換後傷緩衝區⑽油編減純 buffer :TLB))是有利於改善執行或未執行的路徑兩者之效 能。 第6圖係說明達成在處理管線構造的急切執 行的範例應用。第6圖說明具有發生在時間刪及6〇2間 的條件分支的單-執行緒之執行期間的時間 601-604 的序 列。在時間观中,前端單元202已經提取關於執行緒的 指令,並解碼該指令資料以產生指令_的串& _,該 指令操作的串流61G係並行調度至整數執行單元212及 214。在時間601中,整數執行單元212的結構狀態612 係與整數執行單兀214的結構狀態614相同。因此,整數 執行單兀212及214以密集的步驟執行串流61〇的指令操 94558 19 200939117 作,直到條件分支在 為了回應條件分執行緒的指令序列中被债測出。 第一指令資料以田认’在時間602,前端單元202提取 令資料以用於預_3的執行分支路徑以及提取第二指 碼第—指令資料執行分支路徑。該前端單元搬解 令操作的串流616,ρ代表預測的執行分支路徑的個別指 執行單元212卩備執Z調度串流616的指令操作至整數 指令資料姦 .。同時,該前端單元202解碼第二 串^^ 代麵_未執行分支路㈣齡操作的
別以備執^調度串流618的指令操作至整數執行單元 以及及執仃^的指令操作流,該結構狀態612 對於對方而改變。然而,為了盡力維㈣ 取未竹^微結構層中’在整數執行單元其中之一者的快 :S,emiSSM記憶體_獲得的資料也被提供至 另數執行單福快取,以維持整數執行單元212及214 的一個或多個快取同步。
在時間603 ’刖端單疋2〇2已經決定出預測的執行分 支路獲(由串流616所絲)係條件分支巾實際上被執行的 分支路徑’因而終止進-步將另―串流618的指令操作調 度至整數執行單元214。再者,藉由縣構狀態—複製 至整數執行單元214,而將該結構狀態612實行為結構狀 態614。該包括於複製的結構狀態中的資料包括(但並不限 制於)整數執行單元212的一個或多個的暫存器(例如通用 暫存器,general purpose register)的暫存器值,其係用於相 94558 20 200939117 對應之整數執行單元214的暫存器。其他轉移的資料可包 括整數執行單元212的位址變換後備緩衝區仏化代沾 translation look-aside buffer(TLB))項目、程式計數器等。 • 結構狀態的轉移可透過在整數執行單元212之勃许二傅你 碼序列、透過專用的結構同步介面、透過仿真記憶體 (emulation memory)的使用等而完成。 由於回應於條件分支之決定而複製或轉移結構狀態 ❹ 612,該結構狀態612及614係相同的,且因此前端單元 202並行地調度串流616的指令操作至整數執行單元212 及214以平行執行。 二第7圖說明應用至如第2圖的處理管線結構中的用以 完成急切執行的應用的替代實施例。第7圓係說明具有發 „ 701及702間之條件分支的單一執行緒之執行: 曰之時間701-704的序列。在時間7〇1,前端單元搬已 經提取關於執行緒的指令資料以及解碼該指令資料以產生 流I該指令操作的串流⑽ 指=早疋212,整數執行單元212執行串流710的 出曰::此期支3:執行緒的指令序列,嫌 行關於不同執行緒的指令^作 〇 回應於條件分支,在時間7〇2,兹 術而將結構狀態612複製至整數執行;:上述任何技 構狀態612餘/ λ 丁早疋214 ’而將該結 執行單元吉構狀態614。因此,在時間逝,整數 2及214係在相同的結構狀態’以備於了條件 94558 21 200939117 分支。 以用;^ 1在時間7〇3,前端單元202提取第一指令資料 用於預二仃分支路徑’以及提提取第二指令資料以 資料==^^_°_料2()2㈣第一指令 712,以及二預測的執行分支路徑的指令操作的串流 以傷的指令操作至整數執行單元-產生代表預測3二元202解碼第二指令資料以 © 持最小的-致性於微結文f然、而,為了盡力維 的快取未μ從記,_ 62Ga ^執行單元其中之- 數執行單元的快取 =的資料亦被提供至另-整 個或多個快取同步。、’、、正數執行單元212及214的一 ❹ 在時間704,前端單元2〇2已經 的分支路徑(由串流714所代表‘决疋出預測的未執行 行的分支路徑,因而終止將另一)係,件分支中實際上被執 步調度至整數執行草元。接串机712的指令操作進一 被閒置或用於執行來自其他執〜該整數執行單元212可 行單元叫持續執行由前端單^緒的指令操作,但整數執 行緒的串流714的指令操作。疋202所調度用於原來的執 第8圖係說明相關於本發明至I 定性執行緒選擇技術的處理管線二具有階段特 的實%例。為了之後 94558 22 200939117 的討論’隨後的技術係被討論於用於兩執行绪的執行緒選 擇的情況中。然而,該技術在不偏離本發明範缚下,才被 延伸至多於兩執行緒之間的執行緒選擇。再者,該技術< 結合上述技術而執行。 p如所說叫’該處理管線_包括多卿線階段,像 疋々管線階段A、B及c(也標記為管線階段8〇2、綱及8〇6)。 線階&A 對應於指令管線的不同階段,像是 ❹ =取階段、解觸段以及調度階段或提取階段、解碼/調度 階段以及執行階段等。 A、B&C中任-者包括多個對應於管線階 =特疋操作的次階段。舉例而言,管線階段人包括次階 〇、Al& A2’管線階段B包括次階段B〇、B1 括執行緒選擇器模組(個別用於管線階段A、 的 ❹ 間==16)。連接於每—管線階段之 哭=於執賴,的緩衝器及用於執行緒冬嶋
二;執行緒的緩衝器係儲存由先前管線階W 气線二 該先前管線階段所輸出之資料係由先前 h之對執行緒的指令進行處理所產生4第 3施例中’緩衝器82G儲存用於執行緒TG資 以輸j管線階段A,以及緩衝器822儲存用於執㈣資^ 之曰7貝料以輪入至管線階段A ;緩衝器824 從 :輸出(且輪入至管線階段B)之用於執行:τ= ’""及826儲存從管線賴Α輸出(且輸入至 94558 23 200939117 管線階段B)之用於執行緒T1的指令資料;缓衝器828儲 存從管線階段Β輸出(且輸入至管線階段C)之用於執行緒 Τ0的指令資料,以及緩衝器830儲存從管線階段Β輸出(且 輸入至管線階段C)之用於執行緒T1的指令資料;緩衝器 8 32儲存從管線階段c輸出之用於執行緒τ 〇的指令資料以 及緩衝器834儲存從管線階段c輸出之用於執行緒了^的 指令資料。雖然第8圖說明階段之間用於每一執行緒的個 〇 別緩衝器’但得以瞭解階段之間的多個執行緒可利用單— 緩衝器。 每-執行緒選擇器模組包括連接至在較早管線階段 ^出凡之缓衝器的輸人,以及連接至相關管線階段的第— -包括連接至緩衝器中,該執行緒選擇器模組 段A〇的輸入之輸出,:_及822之輸入以及連接至次階 缓衝器824及826之^订緒選擇器模組814包括連接至 〇 並且該執行緒選擇器模及連接至次階段Β〇之輸出, 830之輸入以及連接至f 816包括連接至緩衝器828及 在操作中,每it階段c〇之輸出。
於執行緒T0及T1之p行緒選擇器模組係被組構為獨立地 一周期的處理。為Ύ =進行選擇以用於處理管線80〇的I 選擇器模組812可從用 在—給予的周期中,該執行鳍 指令資料以在次階段執行緒T0的緩衝器820中選擇 814可從用於執行緒Τι〇、進行處理,該執行緒選擇器模叙 次階段B0進行處理的緩衝器826中選擇指令資料以在 執行誠擇賴組816可從 24 94558 200939117 Ο 用於執行绪Ti的緩衝器㈣中選擇指令資料以在次 C0進行處理。經選擇以用於在管線周期的任—給予處理 階段中處料特定執行緒,可基於執賴的特性(例如執^ 緒優先性、向前移行需料)㈣決定、可基於實行於階段 的特定指令操作(例如需要被執行於指令操作的週期或次 階段之數目)而被決定、可基於相關管線階段之前之緩衝器 的特性或依據相關管線階段之後之緩衝器的特性而被決 定、或基於其組合而被決定。在一實施例中予以說明,該 執行緒選擇H模組係被設置成試gj維持在執行緒間近乎相 同的缓衝器的滿度,俾使該執行緒選擇器模組選擇在相對 應之管線階段的輸出具有較空的緩衝器之執行緒。例如假 設緩衝器828(執行緒T0)比緩衝器830(執行緒T1)滿。在 此例中,執行緒選擇器模組814可判定在緩衝器828和83〇 各者的指令資料數量,並可在注意到緩衝的指令資料的數 ϊ差別之情形下,從緩衝器826(執行緒Τ1)中選擇指令資 ❹料,以便將來自管線階段B處理的指令資料的結果儲存於 緩衝器830中,以此方法可降低緩衝器溢位(〇verfl〇w)/下 溢(underflow)狀況的可能性。於另一實施例中,該執行緒 選擇器模組可基於種種選擇方法來選擇一執行緒以進行處 理,例如循環(round-robin)方法。 第9圖說明根據本發明所揭露之至少一實施例的處理 管線800的操作之實施例。管線階段902說明了執行緒T〇 至丁1的其中之一係在處理器週期K至K+2的次階段A〇、 A!、A2、B〇、、B2、C〇、C!、及 C2(以下稱次階段 A〇 至 94558 25 200939117 C2)被處理,管線階段904說明了執行緒Τ〇至1\的其中之 一係在處理器週期L至L+2的次階段A〇至C2被處理,管 線階段906說明了執行緒T0至的其中之一係在處理器 週期Μ至M+2的次階段A〇至C2被處理。以下係以TX(Y) · 表示執行緒X的第Υ指令。 在週期Κ、Κ+1及Κ+2中,該執行緒選擇器模組812 選擇了分別來自執行緒To、執行緒TG及執行緒的指令 資料。因此,於週期K+2後,次週期A2正處理來自執行 緒T〇(定義為指令資料T〇(0))的指令資料,次週期Ai正處 〇 理來自執行緒T〇(定義為指令資料T〇(l))的指令資料,以及 次週期Αα正處理來自執行緒1(定義為指令資料1(0))的 指令資料。 在週期L,L+1及L+2中,該執行緒選擇器模組812 選擇了分別來自執行緒TQ、執行緒ΊΥ及執行緒IV的指令 資料,且該執行緒選擇器模組814選擇了分別來自執行緒 L、執行緒T〇及執行緒T〇的指令資料。因此,於週期L+2 q 後,次週期A2正處理來自執行緒T〇(定義為指令資料T〇(2)) 的指令資料,於週期L+2後,次週期Α!正處理來自執行 緒L(定義為指令資料TK1))的指令資料,以及次週期A〇 正處理來自執行緒Τ!(定義為指令資料1(2))的指令資 料。並且,於週期L+2後,次週期B2正處理來自執行緒 L(定義為指令資料1(0))的指令資料,次週期匕正處理來 自執行緒T〇(定義為指令資料T〇(0))的指令資料,以及次週 期Β〇正處理來自執行緒Τ〇(定義為指令資料T〇(l))的指令 26 94558 2〇〇939i17 資料。 在週期Μ、Μ+1及Μ+2中,該執行緒選摆哭Α 對 伴器模組812 二個週期全部選擇執行緒Τ!的指令資料,而兮 壤娌 π叩磙執行緒 Ο 心释器模組814選擇了分別來自執行緒Tl、執行緒τ 執行绪TG的指令資料,且該執行緒選擇模組816選擇 别來自執行緒T0、執行緒T〇及執行緒T!的指令資料。刀 此,於週期M+2後,次週期A2正處理來自執行绪Τι(定因 為指令資料Tl(3))的指令資料,次週期心正處理來 緒Τι(定義為指令資料1(4))的指令資料,以及次週期仃 正處理來自執行緒Τ!(定義為指令資料τ(5) Α〇 料。並且’於週期㈣後,次週期= K )久週期Bi正處理指令資料Τι(2),次週期正产^ 心7資料T〇(2) ’次週期C:2正處理指令資料τ(〇),次週期 ^(正處理指令資料τ〇(1),以及次週期A正處理指令黉料 第9圖說明了每一管線階段係獨立地在執行緒間作選 擇以至於在任何給予的管線週期中,該管線階段可令來 2 =同執行緒之指令資料分散在其次階段之中。這種在每 &線階段中的獨立選擇性可促進執行緒間更多的進展。 第1 〇圖說明根據本發明所揭示之至少一實施例之管 :階段料執行難行的方法_之實施例,簡單說明 方法1000係描述在第9圖之處理管線卿的内容。 —其^對、Ό予之管線週期,於步驟1002中,關聯於第 s線階段之㈣绪卿賴組⑽如執行誠擇器模組 94558 27 200939117 812、814或816)係從複數個用以於該第一管線階段進行處 理之執行緒中選擇了第一選擇執行緒。於步驟1〇〇4中,從 先前管線階段的輸出的緩衝器中獲得關聯於該第一選擇執 ^緒的指令資料’且該指令資料係被提供至該第一管線階 · ,的初始次階段,以於該管線周期中進行處理。對相同的 管線週期而言,於步驟1006中,關聯於第二管線階段之該 執行緒選擇器模組係從複數個用以於該第二管線階段進行 處理之執行緒中選擇了第二選擇執行緒。於步驟1〇〇8中, 從該第二管線階段的前端之管線階段的輸出處之緩衝器❹ =’獲得關聯於該第二選擇執行緒的指令資料,且該指令 資料係被提供至該第二管線階段的初始次階段以於該管線 週期中進行處理。於至少一實施例中,步驟職至步驟 1〇〇4的過程與步驟1〇〇6至步驟1〇〇8同時執行。 於至少一實施例中,該第一選擇執行緒及該第二選擇、 :行緒可為相同或不同的執行緒,該第一選擇執行緒及該 -選擇執行緒的選擇可基於下列者喊行··執行祕先 性:針對-執行緒所緩衝之指令資料相對於其他執行緒的W j &量(例如用於-執行緒的緩衝指令資料數量與其他執 仃緒的緩衝指令數量之比例)、循環方法或其組合。 办热悉此技術之人士可由本說明書所揭示之說明和内 :了解本發明之其他實施例、優點與功效,本發明之說明 :及圖不僅例示性說明,且本發明所揭示之範圍,應僅由 後述之申請專利範圍及其相當範圍所限制。 【圖式簡單說明】 94558 28 200939117 藉由參考所附加的圖示,可使本發明及其在相關技術 領域中的特性與優點更容易被理解。 第1圖為方塊圖,係說明包括根據本發明至少一實施 • 例的多個處理器核心; 第2圖為方塊圖,係說明具有多個可根據本發明至少 一實施例並行實行的多個整數執行單元的處理器核心的處 理管線; 第3圖為示意圖,係說明根據本發明至少一實施例之 ❹第2圖的處理管線的前端單元部份的實施例; 第4圖為示意圖,係說明根據本發明至少一實施例的 指令調度模組; 第5圖為示意圖,係說明根據本發明至少一實施例的 第2、3及4圖的處理管線的實施例; 第6圖為示意圖,係說明根據本發明至少一實施例的 用於處理管線的急切執行技術的實施例; q 第7圖為示意圖,係說明根據本發明至少一實施例的 用於處理管線的急切執行技術的另一實施例; 第8圖為示意圖,係說明根據本發明至少一實施例被 形成以用於獨立線選擇的包括多個處理階段的處理管線; 第9圖為示意圖,係說明根據本發明至少一實施例的 第8圖的處理管線的操作實施例;以及 第10圖為流程圖,係說明根據本發明至少一實施例 的用於處理管線的階段特定執行緒選擇的方法。 在不同的圖示中的相同參考符號係指相似或完全相 29 94558 200939117 同的物件。 【主要元件符號說明】 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 捷徑硬體解碼器 200939117 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 804 806 820 至 834 812 至 816 902 至 906 1002 至 1008 格式解碼器 調度缓衝器 調度控制器 資源監視器 匯流排控制器 調度匯流排 執行單元 指令提取緩衝器 中間轴 步驟 時間 結構狀態 串流 記憶體 時間 串流 管線階段A 管線階段B 管線階段C 缓衝器 執行緒選擇器模組 管線階段 步驟 31 94558

Claims (1)

  1. 200939117 七、申請專利範圍: 1. 一種方法,包括: 對複數個週期的每一個週期: 於複數個執行緒之間進行選擇以決定用於處理管 線的第一階段之第一選擇執行緒; 於該第一階段處理關聯於用於該第一階段的該第 一選擇執行緒之指令資料; 於該複數個執行緒之間進行選擇以決定用於處理 管線的第二階段之第二選擇執行緒;以及 於該第二階段處理關聯於用於該第二階段的該第 二選擇執行緒之指令資料。 2. 如申請專利範圍第1項之方法,復包括: 對該複數個週期的每一個週期: 於複數個執行緒之間進行選擇以決定用於處理管 線的第三階段之第三選擇執行緒; 於該第三階段處理關聯於用於該第三階段的該第 三選擇執行緒之指令資料。 3. 如申請專利範圍第2項之方法,其中,該第一階段包 括指令提取階段,該第二階段包括指令解碼階段,而 該第三階段包括指令調度階段。 4. 如申請專利範圍第1項之方法,其中,該第一選擇執 行緒係基於第一緩衝器的特性而被選擇,且該第一緩 衝器係耦合在該第一階段的輸出。 5. 如申請專利範圍第4項之方法,其中,該第一缓衝器 32 94558 200939117 的該特性包括關聯於該第一選擇執行緒的指令資料之 經緩衝之數量。 6. 如申請專利範圍第4項之方法,其中,該第二選擇執 " 行緒係基於第二缓衝器的特性而被選擇,且該第二缓 衝器係耦合在該第二階段的輸出。 7. 如申請專利範圍第6項之方法,其中,該第二缓衝器 的該特性包括關聯於該第二選擇執行绪的指令資料之 經缓衝之數量。 ❹ 8.如申請專利範圍第1項之方法,其中,該第一選擇執 行緒係基於與該第一選擇執行緒有關的優先性而被選 擇。 9. 如申請專利範圍第1項之方法,其中,該第一選擇執 行緒係基於循環(round-robin)選擇而被選擇。 10. 如申請專利範圍第1項之方法,其中,該第一選擇執 行緒及該第二選擇執行緒係為相同的執行緒。 Q 11.如申請專利範圍第1項之方法,其中,該第一選擇執 行绪及該第二選擇執行緒係為不同的執行緒。 12. —種方法,包括·· 於第一次時,處理在處理管線的第一階段之第一 指令資料以產生第二指令資料,且該第一指令資料及 該第二指令資料係關聯於第一執行緒; 於該第一次後的第二次時,處理在該處理管線的 該第一階段之第三指令資料以產生第四指令資料,且 該第三指令資料及該第四指令資料係關聯於與該第一 33 94558 200939117 執行緒不同的第二執行緒; 於該第二次後的第三次時,處理在處理管線的第 二階段之第四指令資料以產生第五指令資料;以及 於該第三次後的第四次時,處理該第二指令資料 以產生第六指令資料。 13. 如申請專利範圍第12項之方法,復包括: 於該第一次前,基於連接該第一階段的輸出的缓 衝器的第一特性選擇該第一執行緒;以及 於該第二次前,基於該缓衝器的第二特性選擇談 第二執行緒。 14. 如申請專利範圍第13項之方法,其中,該第一特性包 括在該第一次前於該缓衝器中進行缓衝的該第一執行 緒所相關之指令資料的數量,而該第二特性包括在該 第二次前於該缓衝器中進行緩衝的該第二執行緒所相 關之指令資料的數量。 15. —種系統,包括: 第一管線階段,具有連接第一缓衝器的輸入及連 接第二緩衝器的輸出; 第二管線階段,具有連接該第二緩衝器的輸入及 連接第三緩衝器的輸出; 第一執行緒選擇控制器,用以在複數個執行緒之 間反覆進行選擇,且從該第一緩衝器提供經選擇之執 行緒之指令資料,以供該第一管線階段處理;以及 第二執行緒選擇控制器,用以在複數個執行緒之 34 94558 200939117 間反覆進行選擇,且從該第二缓衝器提供經選擇之執 行緒之指令資料,以供該第二管線階段處理。 16. 如申請專利範圍第15項之系統,其中,該第一執行緒 — 選擇控制器係基於該第二緩衝器的第一特性而選擇執 行緒。 17. 如申請專利範圍第16項之系統,其中,該第二執行緒 選擇控制器係基於該第二緩衝器的第二特性及該第三 缓衝器的第三特性而選擇執行緒。 〇 18.如申請專利範圍第17項之系統,其中,該第一特性係 包括在該第一緩衝器中進行緩衝的關聯於該第一執行 緒之指令資料的數量,該第二特性係包括在該第二緩 衝器中進行緩衝的關聯於第二執行緒之指令資料的數 量,而該第三特性係包括在該第三緩衝器中進行緩衝 的關聯於該第二執行緒之指令資料的數量。 19.如申請專利範圍第15項之系統,其中,該第一階段及 0 該第二階段係各自包括指令提取階段、指令解碼階 段、或指令調度階段的其中之一。 35 94558
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 true TW200939117A (en) 2009-09-16
TWI467479B 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI493451B (zh) * 2011-12-21 2015-07-21 Nvidia Corp 使用預解碼資料進行指令排程的方法和裝置
CN107003859A (zh) * 2014-12-22 2017-08-01 森蒂彼得塞米有限公司 通过连续监控重复指令序列的运行时代码并行化

Families Citing this family (15)

* 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 增進繪圖處理單元之總處理量的方法與系統
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
US10180841B2 (en) 2014-12-22 2019-01-15 Centipede Semi Ltd. Early termination of segment monitoring in run-time code parallelization
US9348595B1 (en) 2014-12-22 2016-05-24 Centipede Semi Ltd. Run-time code parallelization with continuous monitoring of repetitive instruction sequences
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
US10390114B2 (en) 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center

Family Cites Families (19)

* 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
EP0365322A3 (en) * 1988-10-19 1991-11-27 Hewlett-Packard Company Method and apparatus for exception handling in pipeline processors having mismatched instruction pipeline depths
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
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
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
US7248585B2 (en) * 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
US7313676B2 (en) * 2002-06-26 2007-12-25 Intel Corporation Register renaming for dynamic multi-threading
US7000233B2 (en) * 2003-04-21 2006-02-14 International Business Machines Corporation Simultaneous multithread processor with result data delay path to adjust pipeline length for input to respective thread
US7310722B2 (en) 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US8082422B2 (en) * 2004-09-02 2011-12-20 International Business Machines Corporation Pipelined processing
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
US7603544B2 (en) * 2004-12-23 2009-10-13 Intel Corporation Dynamic allocation of a buffer across multiple clients in multi-threaded processor without performing a complete flush of data associated with allocation
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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI493451B (zh) * 2011-12-21 2015-07-21 Nvidia Corp 使用預解碼資料進行指令排程的方法和裝置
US9798548B2 (en) 2011-12-21 2017-10-24 Nvidia Corporation Methods and apparatus for scheduling instructions using pre-decode data
CN107003859A (zh) * 2014-12-22 2017-08-01 森蒂彼得塞米有限公司 通过连续监控重复指令序列的运行时代码并行化

Also Published As

Publication number Publication date
US20090172362A1 (en) 2009-07-02
TWI467479B (zh) 2015-01-01
WO2009085086A1 (en) 2009-07-09
US8086825B2 (en) 2011-12-27

Similar Documents

Publication Publication Date Title
TW200939117A (en) Processing pipeline having stage-specific thread selection and method thereof
KR101594090B1 (ko) 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들
US9645819B2 (en) Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor
TW554287B (en) Method and apparatus for managing resources in a multithreaded processor
JP6043374B2 (ja) 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置
US7793080B2 (en) Processing pipeline having parallel dispatch and method thereof
US7441101B1 (en) Thread-aware instruction fetching in a multithreaded embedded processor
EP2441013B1 (en) Shared resource multi-thread processor array
CN101957744B (zh) 一种用于微处理器的硬件多线程控制方法及其装置
US20170235578A1 (en) Method and Apparatus for Scheduling of Instructions in a Multi-Strand Out-Of-Order Processor
US20040216106A1 (en) Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US8914672B2 (en) General purpose hardware to replace faulty core components that may also provide additional processor functionality
US20070204135A1 (en) Distributive scoreboard scheduling in an out-of order processor
JPH04360234A (ja) 情報処理装置
US10437638B2 (en) Method and apparatus for dynamically balancing task processing while maintaining task order
TW200951809A (en) Method & apparatus for real-time data processing.
US20090172370A1 (en) Eager execution in a processing pipeline having multiple integer execution units
TW201209572A (en) Apparatus, method, and system for improving power performance efficiency by coupling a first core type with a second core type
US7263604B2 (en) Heterogeneous parallel multithread processor (HPMT) with local context memory sets for respective processor type groups and global context memory
US20150074353A1 (en) System and Method for an Asynchronous Processor with Multiple Threading
EP2573673B1 (en) Multithreaded processor and instruction fetch control method of multithreaded processor
US7360062B2 (en) Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
CN113326066A (zh) 量子控制微体系结构、量子控制处理器及指令执行方法
CN101763251A (zh) 多线程微处理器的指令译码缓冲装置
JP5104861B2 (ja) 演算処理装置