TWI546736B - 多執行緒圖形處理單元管線 - Google Patents

多執行緒圖形處理單元管線 Download PDF

Info

Publication number
TWI546736B
TWI546736B TW103126275A TW103126275A TWI546736B TW I546736 B TWI546736 B TW I546736B TW 103126275 A TW103126275 A TW 103126275A TW 103126275 A TW103126275 A TW 103126275A TW I546736 B TWI546736 B TW I546736B
Authority
TW
Taiwan
Prior art keywords
pipeline
execution
threads
given
stage
Prior art date
Application number
TW103126275A
Other languages
English (en)
Other versions
TW201516864A (zh
Inventor
安德魯M 哈弗里爾
詹姆士S 布羅恩葛雷
特蘭斯M 波特
Original Assignee
蘋果公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 蘋果公司 filed Critical 蘋果公司
Publication of TW201516864A publication Critical patent/TW201516864A/zh
Application granted granted Critical
Publication of TWI546736B publication Critical patent/TWI546736B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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/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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3873Variable length pipelines, e.g. elastic pipeline
    • 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/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

多執行緒圖形處理單元管線
本發明大體係關於電腦處理,且更具體言之,係關於多執行緒執行管線。
圖形處理單元(GPU)通常使用多個執行管線或著色器並行地對大量圖形資料進行操作。現代GPU正變得愈來愈可程式化,在固定功能硬體中進行較少計算且使用執行來自應用程式開發人員之圖形指令的可程式化著色器進行更多計算。尤其在更強大之GPU中,此等指令之執行可消耗相當大的功率。此情形在電池為電源之行動圖形應用中可為有問題的。
揭示關於一多執行緒執行管線之技術。在一些實施例中,一種裝置經組態以將數個執行緒指派給一執行管線,該等執行緒之數目為一執行單元經組態以使用以自輸入運算元之一給定集合產生一執行結果的循環之最小數目的整數倍。在一項實施例中,該裝置經組態以要求該等執行緒之嚴格排序,其中一執行緒必須在每當按照嚴格排序而輪到其時釋放指令或NOP。此嚴格排序可導致管線級之間的固定關係,此可減少相依性檢查邏輯且因此降低複雜性及/或功率消耗。
在一項實施例中,例如,該裝置經組態以使得在一給定循環中僅一個執行緒存取(例如,讀取及/或寫入)一暫存器檔案,此情形可允 許編譯器減少該暫存器檔案中之庫衝突(bank clash)。
在一項實施例中,該裝置經組態以使得同一執行緒在一給定循環中並不將一個以上運算元寫入至一運算元快取記憶體。此情形可允許單埠運算元快取記憶體之實施。
在一項實施例中,該裝置經組態以自與第一指令相同之執行緒轉遞該第一指令之一結果作為用於一後續指令之一運算元。此情形可縮短執行緒對運算元之等待。
在一項實施例中,該裝置經組態以暫停執行緒之該嚴格排序中的一個執行緒,同時允許該排序中之其他執行緒的執行繼續。在一項實施例中,該裝置經組態以將暫停僅廣播至處理該執行緒之管線級。此情形可實現更有效的執行緒執行及/或降低用以廣播暫停指示之電路的複雜性。
100‧‧‧用於處理圖形資料之處理流程
135‧‧‧圖框緩衝器
150‧‧‧圖形單元
160‧‧‧統一著色叢集(USC)
165‧‧‧紋理處理單元(TPU)
170‧‧‧像素後端(PBE)
175‧‧‧片段管路
180‧‧‧記憶體介面
185‧‧‧頂點管路
210‧‧‧執行個體執行堆疊(IES)
210A‧‧‧執行個體執行堆疊(IES)
210B‧‧‧執行個體執行堆疊(IES)
210N‧‧‧執行個體執行堆疊(IES)
215‧‧‧仲裁器
220‧‧‧寫入佇列
230A‧‧‧多工器
230B‧‧‧多工器
230N‧‧‧多工器
245‧‧‧統一儲存器
315A‧‧‧運算元快取記憶體(OC)
315B‧‧‧運算元快取記憶體(OC)
315N‧‧‧運算元快取記憶體(OC)
320A‧‧‧算術邏輯單元(ALU)級1
320B‧‧‧算術邏輯單元(ALU)級2
320N‧‧‧算術邏輯單元(ALU)級N
330‧‧‧運算元快取記憶體(OC)來源寫回
340‧‧‧運算元快取記憶體(OC)結果寫回/運算元快取記憶體(OC)結果寫回信號
350‧‧‧US結果寫回
355‧‧‧算術邏輯單元(ALU)結果
365A‧‧‧多工器(MUX)
365B‧‧‧多工器(MUX)
365N‧‧‧多工器(MUX)
385‧‧‧多工器(MUX)
400‧‧‧用於將執行緒指派給管線之方法
500‧‧‧器件
510‧‧‧網狀架構
520‧‧‧計算複合體
525‧‧‧匯流排介面單元(BIU)
530‧‧‧快取記憶體
535‧‧‧核心
540‧‧‧核心
545‧‧‧快取記憶體/記憶體控制器
550‧‧‧輸入/輸出(I/O)橋接器
565‧‧‧顯示單元
e0‧‧‧級
e1‧‧‧級
e2‧‧‧級
e3‧‧‧級
eM‧‧‧級
eM-1‧‧‧級
ez‧‧‧級
圖1A為說明例示性圖形處理流程之方塊圖。
圖1B為說明圖形單元之一項實施例的方塊圖。
圖2為說明統一著色叢集之一項實施例的方塊圖。
圖3為說明執行管線之一項實施例的方塊圖。
圖4為說明用於將執行緒指派給管線之方法之一項實施例的流程圖。
圖5為說明包括圖形單元之器件之一項實施例的方塊圖。
本說明書包括對「一項實施例」或「一實施例」之參考。片語「在一項實施例中」或「在一實施例中」之出現未必指同一實施例。特定特徵、結構或特性可以與本發明一致之任何合適的方式來組合。
各種單元、電路或其他組件可描述或主張為「經組態以」執行一或多項任務。在此等上下文中,「經組態以」用以藉由指示單元/電路/組件包括在操作期間執行該一或多項任務之結構(例如,電路)而暗 示結構。因而,單元/電路/組件可據稱為經組態以甚至在所指定單元/電路/組件當前未操作(例如,未接通)時仍執行任務。與「經組態以」語言一起使用之單元/電路/組件包括硬體(例如)電路、儲存可執行以實施操作之程式指令的記憶體等。敍述單元/電路/組件「經組態以」執行一或多項任務明確地不欲針對彼單元/電路/組件援引35 U.S.C.§112(f)。
參看圖1A至圖1B,本發明最初描述圖形處理流程及例示性圖形單元之綜述。圖形管線之實施例係參看圖2至圖4進一步詳細描述,且例示性器件係參看圖5描述。在一些實施例中,圖形管線實施可在圖形指令之執行中降低功率消耗及/或改良效能。
參看圖1A,展示說明用於處理圖形資料之例示性處理流程100的流程圖。在一項實施例中,變換及照明步驟110可涉及:基於經界定之光源位置、反射率等處理自應用程式接收之關於頂點的照明資訊;將頂點組合為多邊形(例如,三角形);及/或基於三維空間中之位置將多邊形變換為正確的大小及定向。裁剪步驟115可涉及捨棄在可視區域外之多邊形或頂點。點陣化步驟120可涉及:(例如)基於多邊形之頂點的紋理座標在每一多邊形內界定片段或像素且為每一片段指派初始色值。著色步驟130可涉及基於照明、陰影、凹凸貼圖、半透明度等來更改像素組件。經著色像素可組合於圖框緩衝器135中。現代GPU通常包括允許由應用程式開發人員自訂著色及其他處理步驟的可程式化著色器。因此,在各種實施例中,圖1A之例示性步驟可以各種次序執行、並行地執行或省略,且額外處理步驟可被實施。
現參看圖1B,展示說明圖形單元150之一項實施例的簡化方塊圖。在所說明實施例中,圖形單元150包括統一著色叢集(USC)160、頂點管路185、片段管路175、紋理處理單元(TPU)165、像素後端 (PBE)170,及記憶體介面180。在一項實施例中,圖形單元150可經組態以使用USC 160處理頂點及片段資料兩者,該USC可經組態以使用多個執行管線或執行個體並行地處理圖形資料。
在所說明實施例中,頂點管路185可包括經組態以處理頂點資料之各種固定功能硬體。頂點管路185可經組態以與USC 160通信,以便協調頂點處理。在所說明實施例中,頂點管路185經組態以將經處理資料發送至片段管路175及/或USC 160以供進一步處理。
在所說明實施例中,片段管路175可包括經組態以處理像素資料之各種固定功能硬體。片段管路175可經組態以與USC 160通信,以便協調片段處理。片段管路175可經組態以對來自頂點管路185及/或USC 160之多邊形執行點陣化以產生片段資料。頂點管路185及/或片段管路175可耦接至記憶體介面180(未展示耦接),以便存取圖形資料。
在所說明實施例中,USC 160經組態以自頂點管路185接收頂點資料及自片段管路175及/或TPU 165接收片段資料。USC 160可經組態以對頂點資料執行頂點處理任務,該等任務可包括頂點資料之各種變換及/或調整。在所說明實施例中,USC 160亦經組態以對像素資料執行片段處理任務,諸如紋理化及著色。USC 160可包括用於並行地處理資料之多個執行個體。在所說明實施例中,在USC 160經組態以處理頂點資料及片段資料兩者之意義上,USC 160可被稱為「統一」。在其他實施例中,可程式化著色器可經組態以僅處理頂點資料或僅處理片段資料。
在所說明實施例中,TPU 165經組態以排程來自USC 160之片段處理任務。在一項實施例中,TPU 165可經組態以預先擷取紋理資料,且將初始色彩指派給片段以供藉由USC 160進一步處理(例如,經由記憶體介面180)。舉例而言,TPU 165可經組態而以正規化整數格 式或浮點格式提供片段分量。在一項實施例中,TPU 165可經組態而以呈2×2格式之四個(「片段四邊形」)的群組提供待藉由USC 160中的四個執行個體之群組處理的片段。
在所說明實施例中,PBE 170經組態以儲存經處理影像塊,且可在所呈現影像傳送至圖框緩衝器(例如,在系統記憶體中,經由記憶體介面180)之前對其執行最終操作。在各種實施例中,記憶體介面180可促進與各種記憶體階層架構中之一或多者通信。
在各種實施例中,諸如USC 160之可程式化著色器可以各種適當組態中之任一者耦接至圖形單元中之其他可程式化及/或固定功能元件。為說明性目的,圖1B之例示性實施例展示圖形單元150之一個可能組態。
現參看圖2,展示說明USC 160之一項實施例的方塊圖。在所說明實施例中,USC 160包括仲裁器215、寫入佇列220、MUX 230A至230N、統一儲存器245,及執行個體執行堆疊(IES)210A至210N。在一項實施例中,USC 160經組態以使用IES 210並行地執行圖形指令。
在一項實施例中,仲裁器215經組態以判定數個代理中之哪一者被允許在給定循環中寫入至寫入佇列220。代理之非限制性實例包括記憶體控制器單元、TPU 165,或迭代器。在一項實施例中,寫入佇列220經組態以儲存待寫入至統一儲存器245之資訊,且在不與藉由IES 210A至210N之寫入衝突之情況下將所儲存資料寫入至統一儲存器245。MUX 230A至230N可控制對統一儲存器245之寫入存取,且可經組態以將優先權給予IES 210A至210N。
在一些實施例中,IES 210A至210N可各自包括執行單元或算術邏輯單元(ALU),該執行單元或算術邏輯單元(ALU)包括浮點單元、整數單元、移位單元等。IES亦可被稱為「著色器」、「著色器管線」或「圖形管線」,且可各自包括一或多個執行管線。在各種實施例 中,USC 160可包括任何數目個IES 210,諸如16、128、1024等。IES 210A至210N可經組態以自統一儲存器245讀取來源運算元。IES 210A至210N可經組態以將執行結果寫入至統一儲存器245及/或將結果作為運算元在內部轉遞回以用於後續指令。在一些實施例中,IES 210A至210N包括運算元快取儲存器以自統一儲存器245快取結果及/或來源運算元。運算元快取記憶體可降低在讀取運算元時所使用之功率消耗。IES 210A至210N可經組態以並行地對多個執行緒操作。在一項實施例中,USC 160經組態以針對所有IES 210在給定循環中處理同一指令。在一項實施例中,IES 210A至210N可以四個之2×2群組配置。
可使用各種適當的儲存結構中之任一者來實施統一儲存器245。在一項實施例中,統一儲存器245可針對每一IES 210包括一百個暫存器或更多暫存器,該等暫存器可跨越多個庫而散佈。在一項實施例中,可單獨地存取此等庫中之每一者。在一項實施例中,統一儲存器245之每一庫包括用於多個IES 210之暫存器。此情形可減少IES 210之間的暫存器檔案存取衝突,此係因為每一庫讀取可為多個IES提供資料,同時不同庫上之不同暫存器可在同一循環中加以存取。在其他實施例中,統一儲存器245可能不分裂成多個庫,但可包括多個讀取埠。然而,將統一儲存器245分裂成多個庫與實施多埠儲存元件相比可降低功率消耗。TPU 165可經組態以在排程對片段分量之著色器操作之前將片段分量儲存於統一儲存器245中。在一項實施例中,統一儲存器245亦經組態以儲存頂點資料。統一儲存器245亦可被稱為「暫存器檔案」。
每一IES 210可經組態以一次處理多個執行緒,(例如)以便避免在等待執行單元的同時暫停。在一些實施例中,此多執行緒組態可實現較大功率效率及/或效能優點。
例示性處理管線
現參看圖3,展示說明IES 210之一項實施例的方塊圖。IES 210亦可被稱為著色器管線或執行管線。在所說明實施例中,IES 210包括運算元快取記憶體315A至315N、MUX 365A至365N及385,以及ALU級320A至320N。在所說明實施例中,使用虛線展示統一儲存器245以指示統一儲存器245可能不被考慮為IES 210之部分。在所說明實施例中,水平虛線標示管線級之間的邊界,且諸如鎖存器之一或多個儲存元件可用以儲存多個級之間的資料。因此,例如,在所說明實施例中,級「e1」鄰近於級「e0」及「e2」。
如本文所使用,術語「管線」包括其在此項技術中充分理解的含義,其包括處理器元件之序列,其中一個元件之輸出為下一元件之輸入,且該等元件各自針對給定操作執行不同功能性(例如,如藉由指令所指定)。指令解碼、分派、執行及淘汰僅為不同的指令管線級之一些(非限制性)實例。在所說明實施例中,USC 160可經組態以針對圖形指令執行擷取及解碼操作且將運算元提供至IES 210以供進一步處理。IES 210中之管線可被稱為「執行管線」,且可對來自USC 160之所提供運算元執行各種操作。如本文所使用,術語「執行管線」可指管線之一部分或整個管線,且包括至少一執行單元。
各種管線架構涵蓋有不同數目及排序之級/元件/部分。在一項實施例中,每一管線級在單一時脈循環期間執行特定功能,接著將資料傳遞至另一級。
在一些實施例中,IES 210經組態以使用ALU 320執行圖形操作。舉例而言,ALU 320可包括浮點單元及複數單元,連同各種額外功能區塊中之任一者。在所說明實施例中,ALU 320經組態以在至少N個循環內執行運算且包括至少N個管線級(ALU 320可包括未展示之額外管線級)。ALU結果355可在管線級eM-1處藉由其他處理元件(未圖示)使用。
在所說明實施例中,運算元快取記憶體315A至315N經組態以自統一儲存器245快取來源運算元(例如,經由OC來源寫回330)及/或自ALU級N快取結果(例如,經由OC結果寫回340)。在所說明實施例中,MUX 365A至365N經組態以在至每一運算元快取記憶體315之此等輸入之間選擇。快取來源及結果與自統一儲存器245存取資料相比可改良效能及/或減小功率消耗。在一項實施例中,每一運算元快取記憶體315經組態以維持快取資訊(諸如,標籤狀態、有效狀態及替換狀態),且可計算命中及未命中。在其他實施例中,此快取資訊係藉由USC 160之集中式控制單元一次針對多個執行個體來維持。在另外其他實施例中,運算元快取記憶體315可實施為佇列而非快取記憶體。術語「運算元快取記憶體」指經組態以儲存用於管線之運算元的任何儲存元件。通常,運算元快取記憶體包括於執行管線中或非常接近於執行管線。在一項實施例中,運算元快取記憶體為快取記憶體階層架構中之最低層級儲存元件。在一項實施例中,運算元快取記憶體位於暫存器檔案與執行管線之間,且經組態以快取已藉由暫存器檔案及/或其他運算元提供者提供至執行管線之運算元。
在所說明實施例中,MUX 385經組態以自統一儲存器245、運算元快取記憶體315A至315N及/或OC結果寫回信號340選擇且提供用於ALU級1320A之運算元。在一項實施例中,MUX 385可經組態以將來自此等來源中之一或多者的數個運算元(諸如,三個運算元)提供至ALU 320。統一儲存器245可如上文參看圖2所描述而組態。在一些實施例中,MUX 385可經組態以自其他IES或其他處理元件(未圖示)接收運算元,且可將此等運算元指派給ALU級1320A之輸入。
對於ez級,在所說明實施例中,若來自統一儲存器245之指令需要來自統一儲存器245之一或多個運算元,則IES 210經組態以針對該指令起始讀取。在此實施例中,IES 210亦經組態以起始結果寫回350 至統一儲存器245之儲存。在一些實施例中,若ez級中之指令需要讀取eM級中之指令的結果,則IES 210經組態以既將來自eM級之結果寫入至統一儲存器245,亦轉遞結果以使其可用於ez級中的指令。此情形可避免ez級中之指令必須存取統一儲存器以得到結果。在一項實施例中,IES 210經組態以將來自eM級之所轉遞結果儲存於IES 210內的儲存元件(未圖示)中,該結果待在ez級中之指令到達ALU 320時用作至ALU 320之來源輸入。
對於e0級,在所說明實施例中,IES 210經組態以等待來自統一儲存器245之資料,且將資料儲存於運算元快取記憶體315中之一或多者中(例如,使用來源寫回330及/或結果寫回340)。
對於e1級,在所說明實施例中,IES 210經組態以藉由自運算元快取記憶體315A至315N、統一儲存器245及/或其他運算元來源(未圖示)選擇運算元而設置ALU 320。在此實施例中,IES 210亦經組態以將運算元提供至ALU 320之來源。在一些實施例中,IES 210可經組態以選擇運算元來使用OC來源寫回信號330寫入至運算元快取記憶體315及/或自運算元快取記憶體315選擇運算元以寫入至統一儲存器245(路徑選擇未展示)。
對於e2級,在所說明實施例中,IES 210經組態以使用ALU 320開始對運算元進行運算。在此實施例中,IES 210亦經組態以使用來源寫回330將運算元提供至級e2中之運算元快取記憶體315中的一者。
對於e3至eM-1級,在所說明實施例中,ALU 320經組態以繼續處理運算元。對於級eM-1,在所說明實施例中,IES 210經組態以產生待藉由級e0寫入至運算元快取記憶體315之OC結果寫回340。
對於eM級,在所說明實施例中,IES 210經組態以提供待藉由級ez寫入至統一儲存器245之US結果寫回350。
管線規則及優點
在一項實施例中,USC 160經組態以針對在IES 210上之執行指派或排程至少N個執行緒,其中N為ALU 320經組態以針對輸入運算元之給定集合產生執行結果的循環之最小數目。換言之,ALU 230經組態以使用至少N個循環產生可使用執行結果。經組態以產生此結果之ALU 230的N個級可描述為「關鍵迴圈」。如所展示,在關鍵迴圈內,每一管線級可將其結果發送至下一管線級,且結果不可藉由其他處理元件使用直至關鍵迴圈之最後級為止。在一項實施例中,ALU 230可經組態以使用N個以上循環來產生一些運算之結果,且可包括除關鍵迴圈中之彼等級之外的級。然而,在一些實施例中,ALU 230可經組態以產生藉由ALU 230在N個循環中所執行之大多數運算的結果。
在一項實施例中,USC 160經組態以指派為N之整數倍的數目個執行緒以供在管線上執行。此情形可允許執行緒在不暫停之情況下連續地執行,同時等待來自ALU 320之結果。在一些實施例中,USC 160經組態以要求在IES 210上執行之執行緒的嚴格排序。舉例而言,在所說明實施例中,在循環e0中自統一儲存器245讀取之執行緒必須每循環改變。在所說明實施例中,每一執行緒為運算元快取記憶體315A至315N之所指派者。在下文之論述中,假設N個執行緒正在IES 210上以嚴格排序之方式執行。然而,亦涵蓋N個以上執行緒指派給一給定IES 210之組態。
如本文所使用,片語「嚴格排序」用於給定執行管線之執行緒的執行意謂,對於N個執行緒之集合,至執行管線內之級的給定輸入或輸出每N個循環將與N個執行緒中之特定一者相關聯一次且僅一次。
舉例而言,考慮具有N=4個執行緒及排序:T0、T1、T2、T3、T0、T1、T2、T3之情形。在此實例中,在此等4個執行緒藉由執行管線之嚴格執行排序下,彼管線中之給定級每4個循環與執行緒T0相關 聯一次且僅一次。
為了強制執行嚴格排序,裝置可經組態以基於此排序來交替發佈用於執行緒之指令。若在嚴格排序組態中之執行緒並未就緒來發佈指令(例如,在由於統一儲存器245中之庫衝突而等待用於指令之運算元資料的同時),則其可將泡泡或NOP插入至管線中,但型樣中之另一執行緒不可在不違反嚴格排序之情況下替代等待執行緒。因此,例如,在給定循環中與執行緒「相關聯」之管線級可對應於針對執行緒接收指令或NOP。注意,例如,一旦嚴格排序組態中之特定執行緒已完成執行,則新的執行緒(亦即,尚未包括於排序中之執行緒)可在不違反嚴格排序的情況下代替該特定執行緒。然而,代替執行緒必須在不違反排序之情況下逐步執行所代替執行緒之排序。因此,若執行緒T7在排序T0、T1、T2、T3、T0、T1、T2、T3……中代替T0,則新的排序必須為T7、T1、T2、T3、T7、T1、T2、T3……以避免違反嚴格排序。在一項實施例中,USC 160經組態以在N個接連循環中之每一者中發佈來自不同執行緒之指令或NOP,以便促進嚴格排序。
在一項實施例中,IES 210經組態以暫停一個執行緒(例如,在等待解決統一儲存器245中之庫衝突的同時),同時允許其他執行緒繼續執行。在一項實施例中,IES 210經組態以將指示暫停之資訊廣播至處理一個執行緒之管線級,但並不廣播至其他管線級。在此實施例中,經組態以接收廣播之管線級可經組態以儲存其資料而非將其傳遞至下一級,直至暫停結束為止。因此,在此實施例中,每一管線級可包括用於N個執行緒之單獨儲存器。在所說明實施例中,接收廣播之管線級為固定的。此情形可降低廣播通路及總體管線設計之複雜性,同時改良效能。
在一些實施例中,上文所論述之嚴格排序規則及所說明之管線組態可實現數種改良或最佳化以降低功率消耗及/或增加效能。
首先,在所說明實施例中,IES 210經組態以使得來自同一執行緒之指令將在給定循環期間駐留於ez及eM管線級中。因此,在此實施例中,可在給定循環中寫入至統一儲存器245之同一執行緒亦可在彼循環中自統一儲存器245讀取(且在IES 210上執行之其他執行緒在彼循環中可能不存取統一儲存器245)。在一些實施例中,此情形可將每一循環存取統一儲存器245所需物之全部知識給予(給定執行緒之)編譯器,此可允許編譯器藉由減少給定執行緒中之指令存取統一儲存器245中之同一庫的情形而避免針對執行緒的庫衝突。一般而言,在一些實施例中,僅允許單一執行緒在給定循環中存取暫存器檔案。
在一項實施例中,用於給定IES 210之暫存器可跨越統一儲存器245之多個庫而散佈。在此實施例中,編譯器可嘗試為來自同一執行緒之鄰近指令指派並非來自統一儲存器245之同一庫的結果及輸入暫存器。在各種實施例中,較舊指令可在來自同一執行緒之較新指令自統一儲存器245讀取結果的同一循環中將結果寫回至統一儲存器245(當該兩個指令經組合以使得其不存取同一庫時)。
其次,在所說明實施例中,IES 210經組態,使得同一執行緒在給定循環期間駐留於e1及eM-1管線級中。此外,在所說明實施例中,駐留於e1及eM-1管線級中之指令必須為鄰近指令。換言之,指令中之一者(級e1中之「較新」指令)在程式次序上將緊隨另一指令(級eM-1中之「較舊指令」)。此情形允許經由OC結果寫回340將ALU級N之結果的轉遞至MUX 385,以供藉由在級e1處之緊隨指令使用。在所說明實施例中,此結果寫回340首先在緊隨指令接收其運算元之同一循環中可用,此情形允許在彼循環中轉遞結果寫回(例如,在無需針對任何介入循環儲存其之情況下)。因此,在所說明實施例中,具有鄰近的相依指令之執行緒無需在等待來自ALU 320之結果的同時暫停,此係因為IES 210經組態以在給定執行緒中將結果直接轉遞至下一指 令。
在一些實施例中,IES 210經組態以朝著N的倍數個管線級之相反方向轉遞結果。此情形可藉由確保發送級及接收級皆處理同一指令而簡化轉遞。舉例而言,考慮N為3之例示性實施例。在此實施例中,所論述之OC結果寫回340在正處理同一執行緒之3個循環之前提供至級(e1)。在此實施例中,US結果寫回350在6個循環之前提供至級(ez),且6為3之整數倍。類似地,在ALU 320包括N個以上管線級(未圖示)之實施例中,藉由此等額外級所產生之結果可朝著N的倍數個級之相反方向轉遞。
圖3之管線級的分割可產生管線級之間的固定關係,其連同執行緒之嚴格排序執行可簡化相依性檢查邏輯。在執行緒保持嚴格排序之實施例中,給定執行緒佔用IES 210中之管線級的有限集合。因此,可大大減少相依性檢查邏輯之量,例如,此係因為必須對照彼此檢查相依性的級之組合的數目減少。在一些實施例中,此情形可降低功率消耗及設計複雜性。
如本文所使用,術語「緊隨」指在排序方案中緊跟在第一實體之後的下一實體。因此,「緊隨指令」為在程式次序上處於給定指令之後的下一指令,且「緊隨循環」為恰好在給定時脈循環之後出現的下一時脈循環。因此,對於給定指令,在以下情況下另一指令並非緊隨給定指令:在程式次序上在該兩個指令之間存在其他指令。術語「程式次序」指電腦程式碼中指令之排序,其可能依據指令在處理器內執行的次序。舉例而言,對於程式:load r1,#4
subtract r1,r1,#1
store r1,r3
「store」在程式次序上跟隨「subtract」。
第三,在所說明實施例中,給定指令可引起至運算元快取記憶體315之兩次寫入。在此實施例中,第一次寫入可經由OC來源寫回信號330在級e2處發生,且第二次寫入可經由OC結果寫回信號340在級eM-1處發生。在所說明實施例中,每一運算元快取記憶體315係指派給單一執行緒。在所說明實施例中,IES 210經組態以使得不同執行緒在給定循環中駐留於級e2及eM-1處。因此,在此實施例中,IES 210經組態以使得每一運算元快取記憶體315每循環被寫入至多一次,此情形允許運算元快取記憶體315藉由單一輸入埠來實施,即使其可經組態以快取來源及結果兩者亦如此。與具有多個輸入埠之運算元快取記憶體相比,具有單一輸入埠之運算元快取記憶體可降低功率消耗。在所說明實施例中,MUX 365位於運算元快取記憶體315外部,且經組態以在給定循環中為OC 315之單一輸入埠選擇適當的輸入。因此,可基於指派給給定運算元快取記憶體315之執行緒當前所駐留於之管線級來控制MUX 365。
IES 210之所說明組態意欲為例示性及非限制性的;在其他實施例中,可重新配置或省略IES 210之管線元件且可包括額外管線元件。在一些實施例中,可包括本文所描述之改良或最佳化中之一或多者的任何組合,且可省略改良或最佳化中之一些或全部。在其他實施例中,可實施各種適當的管線組態中之任一者。
現參看圖4,展示說明用於將執行緒指派給管線之方法400之一個例示性實施例的流程圖。可結合本文所揭示之電腦系統、器件、元件或組件中的任一者連同其他器件來使用圖4中所展示之方法。在各種實施例中,所展示之方法元件中之一些元件可同時執行、以不同於所展示次序的次序執行,或可省略。亦可按需要執行額外方法元件。流程在區塊410處開始。
在區塊410處,指派複數個執行緒以供在圖形管線上執行。在所 說明實施例中,該複數個執行緒之數目為管線之執行單元經組態以自輸入運算元之給定集合產生可使用之執行結果的最小數目個級之整數倍。舉例而言,若執行單元經組態以在N個循環內執行操作,則步驟410可包括將至少N個執行緒指派給管線。流程繼續進行至區塊420。
在區塊420處,維持執行緒之嚴格排序。舉例而言,在一項實施例中,USC 160經組態以使得執行緒必須每N個循環釋放指令抑或NOP,其中N為指派給管線之執行緒的數目。流程在區塊420處結束。
在一些實施例中,管線組態可允許編譯器將自暫存器檔案之讀取及至暫存器檔案之寫入自特定執行緒指派給暫存器檔案之不同庫,例如,此係因為統一儲存器245每一循環僅藉由至多一個執行緒存取。此情形可減少暫存器檔案中之庫衝突,且因此減少與存取運算元相關聯之延遲及功率消耗。編譯器可組合指令,以便將在附近指令中之讀取及/或寫入指派給不同庫。編譯器可經組態以嘗試防止不同指令在同一循環中存取同一庫。
在一些實施例中,維持執行緒之嚴格排序確保給定執行緒在同一循環中不將運算元及結果寫入至運算元快取記憶體。此情形可允許在各種實施例中之單埠運算元快取記憶體實施,其與具有多埠運算元快取記憶體之實施例或不包括運算元快取記憶體之實施例相比可降低功率消耗。
在一些實施例中,方法可包括將來自給定執行緒中之第一指令之執行的結果作為輸入運算元轉遞,以用於給定執行緒中的緊隨指令。該方法可包括在緊隨結果可用之時脈循環的時脈循環中在執行單元處提供輸入運算元。
現參看圖5,展示說明器件500之例示性實施例的方塊圖。在一些實施例中,器件500之元件可包括於系統單晶片內。在一些實施例 中,器件500可包括於可為電池供電之行動器件中。因此,器件500之功率消耗可為重要的設計考慮因素。在所說明實施例中,器件500包括網狀架構510、計算複合體520、輸入/輸出(I/O)橋接器550、快取記憶體/記憶體控制器545、圖形單元150,及顯示單元565。
網狀架構510可包括各種互連件、匯流排、MUX、控制器等,且可經組態以促進在器件500之各種元件之間的通信。在一些實施例中,網狀架構510之部分可經組態以實施各種不同的通信協定。在其他實施例中,網狀架構510可實施單一通信協定,且耦接至網狀架構510之元件可在內部自單一通信協定轉換至其他通信協定。
在所說明實施例中,計算複合體520包括匯流排介面單元(BIU)525、快取記憶體530,以及核心535及540。在各種實施例中,計算複合體520可包括各種數目個核心及/或快取記憶體。舉例而言,計算複合體520可包括1、2或4個處理器核心,或任何其他合適的數目。在一項實施例中,快取記憶體530為集合關聯L2快取記憶體。在一些實施例中,核心535及/或540可包括內部指令及/或資料快取記憶體。在一些實施例中,網狀架構510中之一致性單元(未圖示)、快取記憶體530,或器件500中之其他位置可經組態以維持器件500之各種快取記憶體之間的一致性。BIU 525可經組態以管理計算複合體520與器件500之其他元件之間的通信。諸如核心535及540之處理器核心可經組態以執行特定指令集架構(ISA)之指令,其可包括作業系統指令及使用者應用程式指令。
快取記憶體/記憶體控制器545可經組態以管理資料在網狀架構510與一或多個快取記憶體及/或記憶體之間的傳送。舉例而言,快取記憶體/記憶體控制器545可耦接至L3快取記憶體,L3快取記憶體可又耦接至系統記憶體。在其他實施例中,快取記憶體/記憶體控制器545可直接耦接至記憶體。在一些實施例中,快取記憶體/記憶體控制器 545可包括一或多個內部快取記憶體。
如本文所使用,術語「耦接至」可指示元件之間的一或多個連接,且耦接可包括介入元件。舉例而言,在圖5中,圖形單元150可描述為經由網狀架構510及快取記憶體/記憶體控制器545「耦接至」記憶體。對比而言,在圖5之所說明實施例中,圖形單元150「直接耦接」至網狀架構510,此係因為不存在介入元件。
圖形單元150可如上文參看圖1B、圖2及圖3所描述而組態。圖形單元150可包括一或多個處理器及/或一或多個圖形處理單元(GPU)。舉例而言,圖形單元150可接收圖形導向指令,諸如OPENGL®或DIRECT3D®指令。圖形單元150可基於所接收之圖形導向指令執行特殊化GPU指令或執行其他操作。圖形單元150可大體經組態以並行地處理大的資料區塊,且可在圖框緩衝器中建置影像以供輸出至顯示器。圖形單元150可包括一或多個圖形處理管線中之變換、照明、三角形及/或呈現引擎。圖形單元150可輸出用於顯示影像之像素資訊。在所說明實施例中,圖形單元150包括USC 160。
顯示單元565可經組態以自圖框緩衝器讀取資料且提供像素值之串流以供顯示。在一些實施例中,顯示單元565可組態為顯示管線。另外,顯示單元565可經組態以調合多個圖框來產生輸出圖框。此外,顯示單元565可包括用於耦接至使用者顯示器(例如,觸控螢幕或外部顯示器)之一或多個介面(例如,MIPI®或嵌入式顯示埠(eDP))。
舉例而言,I/O橋接器550可包括經組態以實施以下各者之各種元件:通用串列匯流排(USB)通信、安全性、音訊及/或低功率始終接通功能性。舉例而言,I/O橋接器550亦可包括介面,諸如脈寬調變(PWM)、一般用途輸入/輸出(GPIO)、串列周邊介面(SPI),及/或內置積體電路(I2C)。各種類型之周邊設備及器件可經由I/O橋接器550耦接至器件500。
***
儘管上文已描述特定實施例,但此等實施例不欲限制本發明之範疇,甚至在關於特定特徵描述僅單一實施例的情況下亦如此。除非另外規定,否則本發明中所提供之特徵的實例意欲為說明性的而非限制性的。以上描述意欲涵蓋如對於受益於本發明之熟習此項技術者而言將顯而易見的此等替代例、修改及等效物。
本發明之範疇包括本文所揭示之任何特徵或特徵之組合(明確地抑或隱含地),或其任何概括,而無論其是否減輕本文所解決之問題中的任一者或全部。因此,可在本申請案(或主張其優先權之申請案)之審查期間將新技術方案制定為特徵之任何此組合。詳言之,參考所附申請專利範圍,來自附屬請求項之特徵可與獨立請求項之彼等特徵組合,且來自各別獨立請求項之特徵可以任何適當的方式而不僅僅以所附申請專利範圍中所列舉之特定組合來組合。
210‧‧‧執行個體執行堆疊(IES)
245‧‧‧統一儲存器
315A‧‧‧運算元快取記憶體(OC)
315B‧‧‧運算元快取記憶體(OC)
315N‧‧‧運算元快取記憶體(OC)
320A‧‧‧算術邏輯單元(ALU)級1
320B‧‧‧算術邏輯單元(ALU)級2
320N‧‧‧算術邏輯單元(ALU)級N
330‧‧‧運算元快取記憶體(OC)來源寫回
340‧‧‧運算元快取記憶體(OC)結果寫回/運算元快取記憶體(OC)結果寫回信號
350‧‧‧US結果寫回
355‧‧‧算術邏輯單元(ALU)結果
365A‧‧‧多工器(MUX)
365B‧‧‧多工器(MUX)
365N‧‧‧多工器(MUX)
385‧‧‧多工器(MUX)
e0‧‧‧級
e1‧‧‧級
e2‧‧‧級
e3‧‧‧級
eM‧‧‧級
eM-1‧‧‧級
ez‧‧‧級

Claims (9)

  1. 一種裝置,其包含:一執行管線,其包括一執行單元,該執行單元經組態以自輸入運算元產生執行結果,其中對於輸入運算元之任何給定集合,該執行單元經組態以使用至少N個循環來產生一對應執行結果,其中N為大於或等於2之一整數;其中該裝置經組態以指派由該執行管線所執行的一數目個執行緒,其中該數目為N之整數倍;且其中該裝置經組態以對該等執行緒藉由該執行管線之執行嚴格地排序。
  2. 如請求項1之裝置,其中該執行管線經組態以處理用於在一給定循環中在一第一管線級中之一執行緒之一第一操作及處理用於在該給定循環中在一第二管線級中之一執行緒之一第二操作,其中該第一管線級經組態以自一暫存器檔案讀取資料,且其中該第二管線級經組態以將資料寫入至該暫存器檔案;其中該執行管線經組態以使得僅執行一單一給定執行緒之管線級在一給定循環中能夠存取該暫存器檔案;且其中該執行管線之該組態允許一編譯器獨立於藉由該執行管線中之其他執行緒進行的庫存取而避免一給定執行緒之指令的庫衝突。
  3. 如請求項1之裝置,其進一步包含:複數個運算元快取記憶體,其中該裝置經組態以將該複數個運算元快取記憶體之一者指派至該等執行緒之各者;及複數個管線級,其經組態以寫入至該等運算元快取記憶體中 之多者;其中該裝置經組態以處理多個管線級中經組態以在一相同循環中寫入至該等運算元快取記憶體中之多者之多個不同執行緒。
  4. 如請求項1之裝置,其中該執行管線經組態以將一結果自該執行管線之一第一級轉遞至該執行管線之一第二級,其中該執行管線之該第二級為在該執行管線中之該第一級之前的N之整數倍個級。
  5. 如請求項1之裝置,其中該裝置經組態以暫停該數目個執行緒中之一者且向對該執行緒操作之管線級指示該暫停,但並不向對其他執行緒操作的管線級指示該暫停。
  6. 一種方法,其包含:指派複數個執行緒以供在一管線上執行,其中該複數個執行緒之一數目為該管線之一執行單元經組態以自輸入運算元之一給定集合產生一可使用執行結果的級之一最小數目的整數倍;維持該複數個執行緒之一嚴格排序;及將來自一給定執行緒中之一第一指令之執行的一結果作為用於該給定執行緒中之一後續指令的一輸入運算元來轉遞,其中該第一指令在一第一管線級中,該第一管線級為一第二管線級之前的最小數目個級的整數倍,其中該後續指令在該第二管線級中。
  7. 如請求項6之方法,其進一步包含:僅允許該管線之與一單一執行緒相關聯的管線級在一給定循環中存取一暫存器檔案。
  8. 如請求項6之方法,其進一步包含:在一給定循環中將一結果寫入至一第一運算元快取記憶體;及 在該給定循環中將一運算元寫入至一第二運算元快取記憶體。
  9. 一種裝置,其包含:一暫存器檔案;複數個運算元快取記憶體;及一圖形管線,其包含:一執行單元,其經組態以使用至少N個循環來產生一可使用執行結果,其中N為大於或等於2之一整數;一第一管線級,其經組態以將一來源寫入至該複數個運算元快取記憶體中之一者;及一第二管線級,其經組態以將一結果寫入至該複數個運算元快取記憶體中之一者;其中該裝置經組態以一次將N之倍數個執行緒指派給該管線以供執行;其中該裝置經組態以對該等執行緒之執行嚴格地排序;其中該管線經組態以使得在一給定循環中在該第一管線級中之一第一執行緒為不同於在該給定循環中在一第二管線級中之一第二執行緒的一執行緒;且其中該複數個運算元快取記憶體中之該者包括至多一個寫入埠。
TW103126275A 2013-07-31 2014-07-31 多執行緒圖形處理單元管線 TWI546736B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/956,299 US9508112B2 (en) 2013-07-31 2013-07-31 Multi-threaded GPU pipeline

Publications (2)

Publication Number Publication Date
TW201516864A TW201516864A (zh) 2015-05-01
TWI546736B true TWI546736B (zh) 2016-08-21

Family

ID=51263555

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103126275A TWI546736B (zh) 2013-07-31 2014-07-31 多執行緒圖形處理單元管線

Country Status (3)

Country Link
US (1) US9508112B2 (zh)
TW (1) TWI546736B (zh)
WO (1) WO2015017129A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10353711B2 (en) 2016-09-06 2019-07-16 Apple Inc. Clause chaining for clause-based instruction execution
US10453261B2 (en) * 2016-12-13 2019-10-22 Brillio LLC Method and electronic device for managing mood signature of a user
US10452552B2 (en) * 2017-04-17 2019-10-22 Intel Corporation Memory-based dependency tracking and cache pre-fetch hardware for multi-resolution shading
US10467724B1 (en) * 2018-02-14 2019-11-05 Apple Inc. Fast determination of workgroup batches from multi-dimensional kernels
US11163578B2 (en) * 2018-02-23 2021-11-02 Intel Corporation Systems and methods for reducing register bank conflicts based on a software hint bit causing a hardware thread switch
US11237827B2 (en) 2019-11-26 2022-02-01 Advanced Micro Devices, Inc. Arithemetic logic unit register sequencing

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0676690B1 (en) 1994-03-09 2003-05-14 Sun Microsystems, Inc. Delayed write of store instruction in processor device
US20040034759A1 (en) 2002-08-16 2004-02-19 Lexra, Inc. Multi-threaded pipeline with context issue rules
US6904511B2 (en) 2002-10-11 2005-06-07 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
US9659339B2 (en) * 2003-10-29 2017-05-23 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US7761688B1 (en) 2003-12-03 2010-07-20 Redpine Signals, Inc. Multiple thread in-order issue in-order completion DSP and micro-controller
US7234044B1 (en) 2003-12-03 2007-06-19 Altera Corporation Processor registers having state information
US7284092B2 (en) 2004-06-24 2007-10-16 International Business Machines Corporation Digital data processing apparatus having multi-level register file
US7426630B1 (en) 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
US7339592B2 (en) * 2004-07-13 2008-03-04 Nvidia Corporation Simulating multiported memories using lower port count memories
TWI326428B (en) 2005-03-18 2010-06-21 Marvell World Trade Ltd Real-time control apparatus having a multi-thread processor
US7626521B2 (en) 2006-06-08 2009-12-01 Via Technologies, Inc. Decoding control of computational core of programmable graphics processing unit
US8103888B2 (en) 2008-11-26 2012-01-24 Oracle America, Inc. Method and apparatus for power savings in a multi-threaded processor using a symbol gated with a clock signal
US8601485B2 (en) * 2011-05-25 2013-12-03 Arm Limited Data processing apparatus and method for processing a received workload in order to generate result data
US9171525B2 (en) * 2013-02-26 2015-10-27 Nvidia Corporation Graphics processing unit with a texture return buffer and a texture queue

Also Published As

Publication number Publication date
TW201516864A (zh) 2015-05-01
WO2015017129A1 (en) 2015-02-05
US9508112B2 (en) 2016-11-29
WO2015017129A4 (en) 2015-04-02
US20150035841A1 (en) 2015-02-05

Similar Documents

Publication Publication Date Title
TWI546736B (zh) 多執行緒圖形處理單元管線
US10692170B2 (en) Software scoreboard information and synchronization
US10324726B1 (en) Providing instruction characteristics to graphics scheduling circuitry based on decoded instructions
US20130042090A1 (en) Temporal simt execution optimization
US20110072249A1 (en) Unanimous branch instructions in a parallel thread processor
US9594395B2 (en) Clock routing techniques
US10089115B2 (en) Apparatus to optimize GPU thread shared local memory access
US20180113713A1 (en) Compiler-based instruction scoreboarding
US10699366B1 (en) Techniques for ALU sharing between threads
US20140351826A1 (en) Application programming interface to enable the construction of pipeline parallel programs
US10699362B2 (en) Divergent control flow for fused EUs
US9697044B2 (en) Application programming interface to enable the construction of pipeline parallel programs
US9183611B2 (en) Apparatus implementing instructions that impose pipeline interdependencies
US11727530B2 (en) Instruction storage
US20180121202A1 (en) Simd channel utilization under divergent control flow
US9633409B2 (en) GPU predication
US9632785B2 (en) Instruction source specification
KR20220074969A (ko) 다수의 레지스터들 중에서의 선택을 이용한 simd 피연산자 순열
US9519944B2 (en) Pipeline dependency resolution
US11422822B2 (en) Multi-channel data path circuitry
US10114650B2 (en) Pessimistic dependency handling based on storage regions
US20180032431A1 (en) Banking Graphics Processor Shared Local Memory
US9542192B1 (en) Tokenized streams for concurrent execution between asymmetric multiprocessors