TW200939117A - Processing pipeline having stage-specific thread selection and method thereof - Google Patents
Processing pipeline having stage-specific thread selection and method thereof Download PDFInfo
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 99
- 238000000034 method Methods 0.000 title claims description 42
- 239000000872 buffer Substances 0.000 claims description 72
- 239000000463 material Substances 0.000 claims description 23
- 230000008569 process Effects 0.000 claims description 11
- 238000007667 floating Methods 0.000 abstract description 9
- 230000015654 memory Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 238000000605 extraction Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000007616 round robin method Methods 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 235000017166 Bambusa arundinacea Nutrition 0.000 description 1
- 235000017491 Bambusa tulda Nutrition 0.000 description 1
- 241001330002 Bambuseae Species 0.000 description 1
- 206010011469 Crying Diseases 0.000 description 1
- 235000015334 Phyllostachys viridis Nutrition 0.000 description 1
- 206010039740 Screaming Diseases 0.000 description 1
- 208000027418 Wounds and injury Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000011425 bamboo Substances 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000002996 emotional effect Effects 0.000 description 1
- 239000011536 extraction buffer Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 208000014674 injury Diseases 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003071 parasitic effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 239000000779 smoke Substances 0.000 description 1
- 239000002689 soil Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000004804 winding 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent 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/3891—Concurrent 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)
- 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
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)
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)
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)
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 |
-
2007
- 2007-12-31 US US11/967,923 patent/US8086825B2/en active Active
-
2008
- 2008-12-03 WO PCT/US2008/013302 patent/WO2009085086A1/en active Application Filing
- 2008-12-19 TW TW97149629A patent/TWI467479B/zh active
Cited By (3)
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) | 演算処理装置 |