TWI575477B - 圖像處理單元預測 - Google Patents
圖像處理單元預測 Download PDFInfo
- Publication number
- TWI575477B TWI575477B TW103128854A TW103128854A TWI575477B TW I575477 B TWI575477 B TW I575477B TW 103128854 A TW103128854 A TW 103128854A TW 103128854 A TW103128854 A TW 103128854A TW I575477 B TWI575477 B TW I575477B
- Authority
- TW
- Taiwan
- Prior art keywords
- execution
- instructions
- predicate
- registers
- sequence
- Prior art date
Links
- 238000012545 processing Methods 0.000 claims description 58
- 238000000034 method Methods 0.000 claims description 21
- 238000011156 evaluation Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 7
- 230000015654 memory Effects 0.000 description 39
- 238000003860 storage Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 15
- 238000004040 coloring Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 239000012634 fragment Substances 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 4
- 238000001427 incoherent neutron scattering Methods 0.000 description 4
- 238000005286 illumination Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000009849 deactivation Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30181—Instruction operation extension or modification
-
- 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/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
Description
本發明大體上係關於處理器,且更具體言之,係關於實施預測之圖像處理單元。
圖像處理單元(GPU)通常使用多個執行管線或著色器對大量圖像資料並行地進行操作。隨著現代GPU變得愈來愈可程式化,且較少計算在固定功能硬體中完成,GPU現在執行比以前複雜之任務。此等任務可包括與圖像處理相關聯之任務,以及經由使用諸如OpenCL®之構架以將工作負載自中央處理單元(CPU)卸載至GPU之無關於圖像應用之任務。由於GPU複雜性已增加,因此其指令集架構(ISA)之複雜性已增加。
許多GPU ISA現在支援基於諸如分支指令之所評估條件影響控制流程之指令。然而,難以基於每執行個體在諸如GPU之單指令多資料(SIMD)機器中實施分支指令。GPU可替代地將預測用作基於每執行個體促進對控制流程之管理的方式。
在各種實施例中,揭示一種關於一或多個執行管線實施預測之圖像處理單元。在一項實施例中,該圖像處理單元可包括用以促進預測之實施的經架構性定義暫存器之一第一集合及影子暫存器之一第二集合。在一些實施例中,該等影子暫存器接近該等執行管線之輸出而
定位,且用於儲存寫回之述詞值。在一些實施例中,該等影子暫存器用於更新該等經架構性定義暫存器。在一項實施例中,該圖像處理單元評估儲存於該等影子暫存器中之述詞值以判定是否中斷執行一指令序列。
在一些實施例中,可並行地執行一指令序列之多個執行個體。在此實施例中,一控制單元可判定相關於預測之控制資訊(例如,相依性資訊、述詞寫入器資訊、執行個體有效性資訊等)。在一項實施例中,該控制單元經組態以最小化其基於每執行個體所判定之控制資訊的量。
本發明包括對「一項實施例」或「一實施例」之參考。片語「在一項實施例中」或「在一實施例中」之出現未必指同一實施例。可以與本發明相一致之任何合適方式來組合特定特徵、結構或特性。
可將各種單元、電路或其他組件描述或主張為「經組態以」執行一或多項任務。在此等上下文中,「經組態以」用以藉由指示單元/電路/組件包括在操作期間執行彼等一或多項任務之結構(例如,電路)
而暗示結構。因而,單元/電路/組件可據稱經組態以執行任務,即使在所指定之單元/電路/組件當前並不操作(例如,未接通)時亦如此。與「經組態以」之語言一起使用的單元/電路/組件包括硬體,例如,電路、儲存可執行以實施操作之程式指令的記憶體等。敍述單元/電路/組件「經組態以」執行一或多項任務明確地意欲不針對彼單元/電路/組件援引35 U.S.C.§ 112第六段。另外,「經組態以」可包括由軟體及/或韌體(例如,FPGA或執行軟體之一般用途處理器)操縱以能夠執行相關任務之方式操作的一般結構(例如,一般電路)。「經組態以」亦可包括調適製造程序(例如,半導體製造設施)以製造經調適以實施或執行一或多項任務之器件(例如,積體電路)。
如本文中所使用,術語「基於」用於描述影響判定之一或多個因素。此術語不排除可影響判定之額外因素。亦即,判定可僅僅基於彼等因素或至少部分基於彼等因素。考慮片語「基於B判定A」。雖然在此狀況下B為影響A之判定的因素,但此片語並不排除亦基於C判定A。在其他情況下,可僅僅基於B判定A。
100‧‧‧圖像管線
110‧‧‧變換及照明步驟
115‧‧‧裁剪步驟
120‧‧‧點陣化步驟
130‧‧‧著色步驟
135‧‧‧圖框緩衝器
150‧‧‧圖像處理單元(GPU)
160‧‧‧統一著色叢集(USC)
165‧‧‧紋理處理單元(TPU)
170‧‧‧像素後端(PBE)
175‧‧‧片段管路
180‧‧‧記憶體介面
185‧‧‧頂點管路
210‧‧‧暫存器儲存區
220A‧‧‧執行個體執行堆疊(IES)
220B‧‧‧執行個體執行堆疊(IES)
220N‧‧‧執行個體執行堆疊(IES)
230‧‧‧控制單元
232‧‧‧控制資訊
240‧‧‧影子暫存器
250‧‧‧預測暫存器
310‧‧‧資料路徑
312‧‧‧指令
314‧‧‧述詞值
320‧‧‧級控制單元
320A‧‧‧級控制單元
320B‧‧‧級控制單元
320N‧‧‧級控制單元
330‧‧‧控制緩衝器
400‧‧‧指令表
410‧‧‧項目
410A‧‧‧項目
410B‧‧‧項目
412‧‧‧指令相依性
414‧‧‧述詞相依性
416‧‧‧述詞極性
418‧‧‧指令寫入器旗標
420‧‧‧目標暫存器識別符
450‧‧‧執行個體表
460‧‧‧項目
460A‧‧‧項目
460B‧‧‧項目
462‧‧‧各別有效性指示
464‧‧‧填充述詞值
500‧‧‧用於執行預測之方法
600‧‧‧計算系統
610‧‧‧網狀架構
620‧‧‧中央處理單元(CPU)
625‧‧‧匯流排介面單元(BIU)
630‧‧‧快取記憶體
635‧‧‧核心
640‧‧‧核心
645‧‧‧快取記憶體/記憶體控制器
650‧‧‧輸入/輸出(I/O)橋接器
665‧‧‧顯示單元
圖1A為例示性圖像處理管線之方塊圖。
圖1B為說明圖像處理單元之一項實施例的方塊圖。
圖2為說明統一著色叢集之一項實施例的方塊圖。
圖3為說明執行個體執行堆疊之一項實施例的方塊圖。
圖4A為說明包括基於每指令所維護之預測資訊的表之一項實施例的方塊圖。
圖4B為說明包括基於每執行個體所維護之預測資訊的表之一項實施例的方塊圖。
圖5為說明用於執行預測之方法的一項實施例之流程圖。
圖6為說明例示性計算系統之一項實施例的方塊圖。
本發明描述圖像處理單元實施預測之實施例。術語「預測」具有其在此項技術中之一般及公認意義,且係指在知曉影響控制流程之指令(例如,下文所論述之述詞寫入器)的結果之前,開始執行對彼指令具有相依性之指令。更具體言之,一指令序列可測試條件(亦即,述詞),且基於彼條件之結果執行動作集合,例如,比較兩個值且在值匹配之情況下執行操作集合的指令序列。為了評估該條件,指令序列可包括有助於解析述詞(亦即,判定條件之結果)的初始指令集。舉例而言,此初始集合可包括可執行以對兩個值進行相減(若結果為零,則可識別出匹配)之指令。此初始指令集可藉由將指示所測試條件之結果的值(例如,指示兩個值之間的匹配之布林值)置放於可由隨
後執行之指令檢查的暫存器中的最後指令而結束。如本文中所使用,術語「述詞寫入器」係指在暫存器中設定用於所評估條件之值的指令;該值在本文中被稱作「述詞值」。一旦已由述詞寫入器將述詞值寫入至暫存器中,便可隨後檢查該值以便判定控制流程之路徑(亦即,取決於述詞值而判定是否執行動作集合)。在上文之實例中,若兩個值匹配,則控制流程之路徑將包括執行動作集合。
如本文中所使用,術語「述詞讀取器」係指讀取述詞值之任何指令。在一些實施例中,述詞讀取器包括分支指令,其可基於述詞值藉由改變程式計數器而影響控制流程。在上文之實例中,此指令可讀取指示兩個值之間的匹配之述詞值,且調整程式計數器以使得控制路徑包括(或不包括)執行相依動作之集合。在一些實施例中,述詞讀取器可替代地包括基於述詞值條件性地執行之指令。舉例而言,在一項實施例中,本文中所描述之圖像處理單元支援多個版本之相加指令,亦即,獨立於任何述詞值而執行之版本及取決於具有特定值之述詞值而執行之版本。在此實施例中,不同版本之相加指令可具有不同之各別作業碼。
因此,在實施預測之各種實施例中,圖像處理單元可在已知述詞值之前開始取決於述詞寫入器之執行指令(亦即,述詞讀取器)。在此實施例中,若稍後判定彼等指令並不駐留於所獲取之控制流程路徑中(如由述詞值(一旦已知)所指示),則圖像處理單元並不允許提交彼等指令之結果從而更新架構狀態。(應注意,預測與用於推測之無序執行相反,此係因為該等指令仍以程式次序發出)。繼續上文之實例,若兩個值並不匹配,則當實施預測時,可捨棄執行操作之相依指令的結果。
如下文所論述,在各種實施例中,圖像處理單元可實施各種技術以較有效地實施預測。在一項實施例中,圖像處理單元可包括用於
儲存預測資訊(例如,述詞值)之暫存器之兩個集合。第一集合可經架構性定義(亦即,GPU支援用於擷取及/或改變暫存器之內容的經ISA定義指令);然而,此等暫存器可遠離產生預測資訊之電路而定位。相反,暫存器之第二集合可未經架構性定義,但接近判定預測資訊之電路而定位。在此實施例中,當判定述詞值時,歸因於其接近位置,最初可在將述詞值儲存於暫存器之第一集合中之前將其儲存於暫存器之第二集合中。在一些實施例中,暫存器之第二集合饋入有可停用執行駐留於非所獲取路徑中(亦即,並不駐留於控制流程之路徑中)之指令的電路(例如,管線級)之邏輯。在各種實施例中,以此方式停用電路可減少GPU之功率消耗;再此外,使用暫存器之第二集合以饋入邏輯可允許較快速地停用電路。在一些實施例中,圖像處理單元亦能夠在無需執行管線暫停之情況下停用執行指令之電路。
在一些實施例中,圖像處理單元包括用以並行執行指令串流之多個執行管線。術語「執行管線」具有其在此項技術中之普通及公認意義,且係指實施由指令所指定之操作執行的電路。此等操作可包括提取、解碼、發出、執行、提交等。(不應將此術語與下文所論述之「圖像管線」混淆,該管線係指經執行以產生顯示圖框之操作集合)。如本文中所使用,術語「執行管線」可指執行管線之一部分或整個執行管線。在此實施例中,使用多個執行管線可使得圖像處理單元能夠並行執行指令序列之多個執行個體。舉例而言,可在第一執行管線中執行指令序列之第一執行個體以對所顯示圖框之左上角處之像素執行操作,同時可在第二執行管線中執行指令序列之第二執行個體以對圖框之右下角處的像素執行相同操作。如下文所論述,在一些實施例中,可基於每指令而非基於每執行個體儘可能多地產生及儲存用於促進預測之控制資訊。舉例而言,若正執行相同指令之四個執行個體,則可產生控制資訊(例如,相依性資訊)之單一集合,而非單獨產
生相同控制資訊之四個複本,此為效率低的。
參看圖1A及圖1B,本發明最初描述圖像管線及例示性圖像處理單元之概述。然而,本文中所描述之技術及結構決不限於圖1A及圖1B中所展示之圖像管線及圖像處理單元;更確切而言,僅將此上下文提供為一個可能實施。接著參看圖2至圖5描述實施預測之統一著色叢集的實施例。最後,參看圖6描述例示性計算系統。
現轉向圖1A,展示用於處理圖像資料之例示性圖像管線100的方塊圖。在一項實施例中,變換及照明步驟110可涉及:基於所界定光源位置、反射率等處理自應用程式所接收的關於頂點之照明資訊;將頂點組合成多邊形(例如,三角形);及/或基於三維空間中之位置將多邊形變換至正確的大小及定向。裁剪步驟115可涉及捨棄在可檢視區域外之多邊形或頂點。點陣化步驟120可涉及(例如)基於多邊形之頂點的紋理座標在每一多邊形內界定片段或像素且為每一片段指派初始色彩值。著色步驟130可涉及基於照明、陰影、凹凸貼圖、半透明度等變更像素組件。可將經著色像素組合於圖框緩衝器135中。如接下來所論述,圖像處理單元(GPU)150可包括允許由應用程式開發人員自訂著色及其他處理步驟之可程式化著色器。因此,在各種實施例中,可以各種次序執行、並行執行或省略圖1A之例示性步驟,且可實施額外處理步驟。
現轉向圖1B,展示GPU 150之方塊圖。在所說明之實施例中,GPU 150包括統著色叢集(USC)160、頂點管路185、片段管路175、紋理處理單元(TPU)165、像素後端(PBE)170及記憶體介面180。在一項實施例中,GPU 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之例示性實施例僅僅展示GPU 150之一個可能組態。
現轉向圖2,描繪統一著色叢集(USC)160之方塊圖。如下文所論述,在各種實施例中,USC 160包括經組態以執行指令之多個執行管線。USC 160可進一步實施如上文所論述之預測。因此,在所說明之實施例中,USC 160包括執行個體執行堆疊(IES)220A至220N、暫存器儲存區210、控制單元230、影子暫存器240及預測暫存器250。在其他實施例中,USC 160可經不同組態,例如,在一項實施例中,預測暫存器250可位於控制單元230內。
在一項實施例中,暫存器儲存區210維護由包括USC 160之GPU 150操作的資料。此資料可包括(例如)正顯現圖框之頂點資料、像素資料、圖框資料等。可使用各種適當儲存結構中之任一者實施暫存器儲存區210。在一項實施例中,暫存器儲存區210針對每一IES 220包括可橫跨多個組分散之一百個或一百個以上暫存器。在一項實施例中,可單獨地存取此等組中之每一者。在一項實施例中,暫存器儲存區210之每一組包括用於多個IES 220之暫存器。在其他實施例中,暫存器儲存區210可並未分裂成多個組,但可包括多個讀取埠。在一些實施例中,TPU 165(上文所論述)可經組態以在排程對片段分量之著色器操作之前將片段分量儲存於暫存器儲存區210中。
在一項實施例中,IES 220為執行管線,每一執行管線能夠執行各別指令序列。因此,IES 220可包括諸如算術邏輯單元(ALU)之執行單元,其包括浮點單元、整數單元、移位單元等。IES 220A至220N可經組態以自暫存器儲存區210讀取來源運算元,且將執行結果寫入
至暫存器儲存區210及/或在內部將結果作為運算元轉遞回以用於後續指令。IES 220A至220N可包括運算元快取記憶體儲存器以自暫存器儲存區210快取結果及/或來源運算元。在一些實施例中,IES 220可能並不實施整個執行管線,例如,在一項實施例中,可由其他電路(未展示)處置提取、解碼及發出級。
在各種實施例中,IES 220經組態以並行地執行相同指令序列之多個執行個體。舉例而言,IES 220A可對第一像素執行用於著色操作之指令序列,而IES 220B對第二像素執行相同指令序列。再此外,在一些實施例中,IES 220可係多執行緒的。因此,在一項實施例中,IES 220可實施執行緒交錯,使得執行管線中之級可在第一循環期間處理第一執行緒之指令、在第二循環期間處理第二執行緒之指令,等等。
在一項實施例中,控制單元230經組態以管理包括暫存器儲存區210及IES 220之USC 160的操作。因此,在一項實施例中,控制單元230部分地解碼指令,且判定用於執行彼等指令之適當控制資訊。此控制資訊可用於促進將指令投送至適當IES 220及自暫存器儲存區210擷取資料。控制單元230亦可經組態以自USC 160外部之源接收命令,且促進彼等命令之實施。
在所說明之實施例中,USC 160經由使用元件220至250來實施預測。
在一項實施例中,影子暫存器240儲存所解析述詞之最近述詞值。亦即,如上文所論述,指令序列可包括可執行以儲存正評估述詞之述詞值的被稱為述詞寫入器之指令。在述詞寫入器運算之後,IES 220可將述詞值儲存於影子暫存器240中。可接著在稍後述詞讀取器之執行期間評估此所儲存值,以便判定控制流程。在各種實施例中,影子暫存器240可支援儲存用於多個執行緒之述詞值以及用於給定執行
緒之多個述詞值。舉例而言,在IES 220A支援三個執行緒且每執行緒支援至多兩個經架構性定義述詞暫存器之一項實施例中,影子暫存器240A可包括六個暫存器。在一些實施例中,影子暫存器240可儲存關於所儲存述詞值之額外後設資料,諸如指示何時已儲存述詞值之初始位元及指示所儲存述詞值是否已過時之已變更位元。在其他實施例中,此後設資料可儲存於別處(諸如,控制單元230內)。如下文結合圖3所論述,在各種實施例中,影子暫存器240經組態以將述詞值提供至經組態以結合控制資訊232評估述詞值之邏輯,以便判定是否停用指令序列之執行個體。在所說明之實施例中,暫存器240表徵為「影子」暫存器,此係因為其未經架構性定義且經組態以鏡像複製預測暫存器250(亦即,維護影子暫存器240與預測暫存器250之間的一致性)。
在一項實施例中,預測暫存器250為儲存述詞值之經架構性定義暫存器。亦即,GPU 150可支援用於自暫存器250讀取及/或寫入至該等暫存器之指令。在各種實施例中,與影子暫存器240相反,預測暫存器250並不耦接至經組態以停用指令執行之控制邏輯。再此外,在一些實施例中,影子暫存器240可接近IES 220之控制邏輯及輸出級而定位,而預測暫存器250可遠離控制邏輯及輸出級而定位。結果,相比於IES控制邏輯已讀取對應預測暫存器250之情況,該控制邏輯可較快速地自影子暫存器240讀取述詞值。因此,控制邏輯可能夠較快速地中斷指令序列之執行。在一些實施例中,類似於影子暫存器240,預測暫存器250可經組態以儲存用於多個執行緒之述詞值、用於給定執行緒之每一執行個體的多個述詞值,及甚至用於給定執行個體之多個述詞值。預測暫存器250亦可儲存相關於述詞值之後設資料,諸如初始位元及已變更位元。
在各種實施例中,USC 160藉由將經解析述詞值自IES 220寫入至
影子暫存器240且接著使用影子暫存器240更新預測暫存器250來維護影子暫存器240與預測暫存器250之間的一致性。舉例而言,如下文關於圖3所論述,在一項實施例中,在述詞寫入器完成之後,IES 220A可將述詞值寫回至影子暫存器240A,該影子暫存器又將述詞值提供至對應預測暫存器250。在各種實施例中,USC 160亦藉由用來自預測暫存器250之述詞值(被稱作填充值)更新影子暫存器240來維護一致性。在一項實施例中,可回應於執行緒重新啟動而發生此更新。亦即,USC 116(或更具體言之,在一項實施例中為控制單元230)可出於各種原因判定自執行一個執行緒切換至執行另一執行緒。在執行切換時,可藉由用於新執行緒之述詞值替換影子暫存器240中用於執行緒之述詞值(亦即,在此實施例中,影子暫存器240並不儲存用於非執行緒之述詞值;然而,預測暫存器250儲存該等述詞值)。當重新啟動原始執行緒之執行時,可將來自預測暫存器250之述詞值寫回至影子暫存器240中,以便維護一致性。
在一些實施例中,可用來自預測暫存器250之述詞值更新影子暫存器240,即使影子暫存器240與經停用執行個體(亦即,已中斷執行之執行個體)相關聯亦如此。如上文所提到,可基於先前述詞寫入器之述詞值來停用指令序列之執行個體。亦可在將指令序列發出至IES 220後停用指令序列之執行個體。此情況可在將相同指令序列發出至所有IES 220而不管是否需要執行許多執行個體之一些實施例中發生。亦即,對於一些任務,僅執行指令序列之一個或兩個執行個體可係適當的。在此實施例中,可將指令序列發出至所有IES 220,而非將指令序列僅發出至(例如)IES 220A及220B。然而,可在發出後停用並未提供至IES 220A及220B的指令序列之執行個體。在一些實施例中,維護用於甚至經停用執行個體之述詞值的一致性可減少追蹤待處理述詞寫入器之額外負荷。
在各種實施例中,控制單元230經進一步組態以產生用以促進預測之控制資訊(在所說明之實施例中展示為控制資訊232)。在一些實施例中,控制資訊232可包括相關於暫存器240與250之間的一致性之資訊。因此,在一項實施例中,控制單元230可將述詞值寫入至預測暫存器250中之一者(例如,回應於執行緒重新啟動),且回應於寫入述詞值而將述詞值作為控制資訊232發出至對應IES 220以使得將述詞值儲存於影子暫存器240中。如下文關於圖3所論述,在此實施例中,控制單元230可使用IES 220之資料路徑將述詞填充值儲存於影子暫存器240中。在一些實施例中,控制資訊232亦可包括由控制邏輯在評估述詞值以判定是否停用執行個體時使用之相依性資訊。如下文關於圖4A所論述,此相依性資訊可包括指令是否取決於述詞寫入器且若如此,則取決於哪一特定述詞寫入器之指示。此相依性資訊亦可包括極性之指示及哪一影子暫存器240儲存相關述詞值之指示。在一些實施例中,控制資訊232可進一步識別哪些指令為述詞寫入器,以及指定待寫入有述詞值之暫存器240。如下文關於圖4B所論述,控制資訊232亦可包括指定執行個體是否仍有效(亦即,尚未停用)之有效性指示。
在一些實施例中,控制單元230經組態以基於待發出至IES 220之指令解碼以及預測暫存器250中之先前所判定述詞值來判定控制資訊232。舉例而言,控制單元230可檢查作業碼及述詞值以判定一般控制流程,以及識別哪些指令為述詞讀取器、述詞寫入器及取決於述詞寫入器之指令。在一項實施例中,在識別出指令序列包括述詞寫入器後,控制單元230可將相關於彼述詞寫入器的用於預測暫存器250之已變更位元設定為任何所儲存述詞值,此係因為在完成述詞寫入器之執行後暫存器250可變得過時。
在各種實施例中,控制單元230經組態以基於每指令而非每執行
個體來判定盡可能多的控制資訊。在一項實施例中,此控制資訊包括如上文所論述之相依性資訊。因此,控制單元230可針對在IES 220A至220N中執行之指令而執行相依性資訊之單一判定,而非針對指令之每一執行個體執行N個判定。再此外,控制單元230可儲存其分散至IES 220的控制資訊之單一複本(與儲存多個複本相對比)。在一些實施例中,此控制資訊亦包括如上文所論述之述詞寫入器資訊。
在一些實施例中,由USC 116所實施之技術中之各者可改良GPU 150之效能及/或功率節省。使用接近IES 220之輸出的影子暫存器240可允許較快地停用管線級,因此節省功率。再此外,如將關於圖3所論述,在一些實施例中,可以並不包括執行管線暫停之方式停用指令序列之執行,因此增加GPU 150之效能。相比於基於每執行個體判定控制資訊,基於每指令判定控制資訊亦可消耗較少計算資源及功率。
現轉向圖3,描繪IES 220之方塊圖。在所說明之實施例中,IES 220包括影子暫存器240、資料路徑310、級控制單元320及控制緩衝器330。在其他實施例中,IES 220可不同於所展示地組態,例如,在一項實施例中,可將級控制單元320及控制緩衝器330視為上文所論述之控制單元230的部分。
在一項實施例中,資料路徑310經組態以在管線級e0至eN內執行所接收指令312。在一項實施例中,級e0中之資料路徑電路可自暫存器儲存區210接收待在後續級中處理之作業碼、控制信號及資料運算元。在一項實施例中,級e1可包括讀取本端運算元快取記憶體且將級e0中所接收之資訊投送至適當ALU的電路。在一項實施例中,在級e2至級eN-1中,ALU可歷時一或多個時脈週期對資料進行操作以計算指令結果。最後,在級eN中,可將指令結果寫回(亦即,提交)至一或多個暫存器(且在一些實施例中,轉遞至暫存器儲存區210)。
在各種實施例中,在完成述詞寫入器之執行後,將所判定述詞
值314寫回至影子暫存器240。在一些實施例中,可基於如上文所提到之控制資訊232來選擇影子暫存器240以用於儲存述詞值。如所展示,影子暫存器240靠近級eN(亦即,在所說明之實施例中為資料路徑310之輸出)而定位。(如上文所提到,在一些實施例中,此情況可允許較快地評估述詞值)。在所說明之實施例中,可隨後將寫回至影子暫存器240之述詞值314提供至級控制單元320及預測暫存器350。在一項實施例中,當將資料自影子暫存器240提供至預測暫存器250時,將暫存器240之全部寫入至預測暫存器250(與對應於述詞值314中之經更新者的個別位元相對比)。在如此操作時,USC 116可放棄實施遮罩以選擇個別位元來傳輸,因此簡化邏輯。
在一項實施例中,級控制單元320經組態以評估述詞值314及控制資訊232,以便判定是否在資料路徑310中之各別管線級處停用指令序列之執行。在一項實施例中,若已在給定管線級處針對相依指令判定述詞值,則級控制單元230可相對於極性(在一些實施例中,如由控制資訊232所指定)評估述詞值。取決於此評估,級控制單元320可停用其各別級處之執行(例如,對於級控制單元320A,停用級e0)。在一項實施例中,級控制單元320藉由時脈閘控管線級(或至少彼級內之邏輯的一部分)使得並不驅動邏輯而執行停用。然而,在另一實施例中,級控制單元320可功率閘控管線級。隨著指令推進至後續級,對應於彼等級之級控制單元230可執行相同評估,且進行類似判定以啟用或停用指令之執行。在一項實施例中,若尚未針對相依指令判定述詞值(亦即,資料路徑310中仍正處理述詞寫入器),則級控制單元320可允許指令繼續執行且可推遲評估。如上文所提到,控制資訊232可指定給定指令取決於哪一指令(例如,給定指令取決於一個指令前之述詞寫入器、兩個指令前之述詞寫入器等),使得級控制單元320知曉述詞值何時將變得可用於評估。因此,隨著指令推進通過資料路徑
310之級,後續級控制單元320可在判定述詞值後評估述詞值。此時,後續級控制單元320可判定停用執行。在各種實施例中,能夠在每一管線處評估指令允許在指令處於資料路徑310中(例如,發出後)時且在無需暫停管線之情況下停用指令執行。亦即,並不需要將指令保持於特定級處,直至判定對應述詞值為止,因此亦防止指令阻擋資料路徑310中之稍後指令。
在一項實施例中,控制緩衝器330經組態以儲存自控制單元230所接收之控制資訊232,且將彼資訊中繼傳遞至適當的級控制單元320。因此,當指令312到達級e0處時,控制緩衝器330可將用於彼指令之對應控制資訊232提供至級控制單元320A。隨著指令推進至資料路徑310之稍後級,控制緩衝器330可將用於彼指令之控制資訊232提供至後續級控制單元320。在一些實施例中,控制緩衝器330實施為循環緩衝器。亦即,在一項實施例中,控制緩衝器330可維護識別可儲存用於指令之控制資訊232的下一可用項目之指標。在已填充項目時,控制緩衝器330可依序推進指標。在到達緩衝器330中之最後項目後,可將指標迴轉至初始項目,因此給予緩衝器其「循環」名稱。在一項實施例中,控制緩衝器330可基於此指標之位置判定將資料自緩衝器項目投送至何處。在一些實施例中,控制緩衝器330可儲存來自預測暫存器250之填充值以更新影子暫存器240。如上文所提到,在一項實施例中,控制單元230可回應於執行緒重新啟動而以此方式更新述詞值。在一些實施例中,在如此操作後,控制單元230可將述詞值提供為控制資訊232。在此實施例中,控制緩衝器330可儲存所接收述詞值,且將其提供至資料路徑310(例如,至級eN)以用於儲存於影子暫存器240中。接下來關於圖4A及圖4B描述可包括於控制緩衝器330內之資訊的實例。
現轉向圖4A,描繪指令表400之方塊圖。指令表400為如上文所
論述的可基於每指令產生之控制資訊的一項實施例。在一些實施例中,可由控制單元230判定表400內之資料且將其儲存於控制緩衝器330內。在所說明之實施例中,表400內之項目410指定指令相依性412、述詞相依性414、述詞極性416、指令寫入器旗標418及目標暫存器識別符420。在此實施例中,資訊412至416可大體上被稱作相依性資訊,而資訊418及420可大體上被稱作述詞寫入器資訊。
在一項實施例中,指令相依性412指定指令是否取決於另一指令,且若如此,則識別特定指令。舉例而言,指令相依性412可指定特定管線級處之指令取決於資料路徑310中兩個指令前之述詞寫入器。如上文所提到,指令相依性412可用於判定是否需要針對給定指令評估述詞值以及彼述詞值何時將變得可用。
在一項實施例中,述詞相依性414指定哪一特定影子暫存器240包括相關於給定指令之述詞值。如上文所提到,影子暫存器240可儲存用於給定執行個體之多個述詞值,該執行個體可為可對應於若干執行緒中之一者的若干執行個體中之一者。因此,級控制單元320可使用述詞相依性414來識別將讀取之正確暫存器240。
在一項實施例中,述詞極性416識別述詞讀取器之述詞值的極性。亦即,在一項實施例中,GPU 150可支援回應於述詞值為真而指示採取特定路徑(例如,寫回述詞讀取器結果)的第一類型之述詞,及回應於述詞值為假而指示採取該路徑的第二類型之述詞讀取器。因此,述詞極性416可識別述詞讀取器為第一類型抑或第二類型。
在一項實施例中,指令寫入器旗標418識別給定指令是否為述詞寫入器。因此,可由資料路徑310在判定是否將針對指令執行至影子暫存器240中之一者的寫回時使用旗標418。
在一項實施例中,目標暫存器識別符420進一步指定述詞寫入器之述詞值將寫入至的影子暫存器240。因此,資料路徑310可使用目標
暫存器識別符420以將述詞值投送至適當影子暫存器240。
現轉向圖4B,描繪執行個體表450之方塊圖。執行個體表450為可基於每執行個體產生之控制資訊的一項實施例。在一些實施例中,可由控制單元230判定表450內之資料且將其儲存於控制緩衝器330內。在所說明之實施例中,表450內之項目460包括各別有效性指示462及填充述詞值464。
在一項實施例中,有效性指示462在任何述詞值待決之情況下指示是否將停用或啟用給定執行個體。如上文所提到,在一些實施例中,可將相同指令序列發出至IES 220中之每一者,即使對於特定任務僅需要執行一個或兩個執行個體亦如此。因此,在此實施例中,控制單元220可在發出時經由有效性指示462指定並不需要執行給定執行個體,因此對於彼執行個體可保證並不評估任何述詞值。
在一項實施例中,填充述詞值464為待寫入至影子暫存器240以便維護一致性的來自預測暫存器250之述詞值。因此,當(例如)如上文所論述地重新啟動執行緒時,可提供填充述詞值464。
現轉向圖5,描繪方法500之流程圖。方法500為可由實施預測之圖像處理單元(諸如,GPU 150)執行之方法的一項實施例。在一些實施例中,執行方法500可改良圖像處理單元之功率節省及/或效能。
在步驟510中,在圖像處理單元中針對經架構性定義暫存器之集合(例如,預測暫存器250)維護影子暫存器之集合(例如,影子暫存器240)。在此實施例中,經架構性定義暫存器之集合儲存用於指令序列之述詞值(例如,述詞值314)。在一些實施例中,步驟510包括執行計算用於指令序列之述詞的指令,且將經計算述詞之述詞值寫回至影子暫存器之集合,之後將經寫回述詞值儲存於經架構性定義暫存器中。
在步驟520中,基於影子暫存器之集合中之一個影子暫存器中的述詞值作出是否中斷執行指令序列之判定。在一項實施例中,在將經
寫回述詞值儲存於經架構性定義暫存器之集合中之前執行該判定。在一些實施例中,步驟520包括在單獨執行管線(例如,單獨IES 220)中執行指令之複數個執行個體,針對指令執行控制資訊(例如,控制資訊232)之單一判定,且將控制資訊分散至執行管線中之每一者。在各種實施例中,回應於判定中斷執行指令序列,在無需在執行指令序列之執行管線中執行暫停的情況下中斷指令序列之執行。在一些實施例中,步驟520進一步包括控制邏輯(例如,級控制單元320)時脈閘控執行管線之一或多個級(例如,級e0至eN)。
接下來轉向圖6,展示說明計算系統600之例示性實施例的方塊圖。計算系統600為可包括上文所論述之圖像處理單元150的計算系統之一項實施例。在一些實施例中,計算系統600之元件可包括於系統單晶片(SoC)內。在一些實施例中,計算系統600可包括於可經電池供電之行動器件中。因此,計算系統600之功率消耗可係重要的設計考慮因素。在所說明之實施例中,計算系統600包括網狀架構610、中央處理單元(CPU)620、輸入/輸出(I/O)橋接器650、快取記憶體/記憶體控制器645、圖像處理單元150及顯示單元665。
網狀架構610可包括各種互連件、匯流排、MUX、控制器等,且可經組態以促進計算系統600之各種元件之間的通信。在一些實施例中,網狀架構610之部分可經組態以實施各種不同通信協定。在其他實施例中,網狀架構610可實施單一通信協定,且耦接至網狀架構610之元件可在內部自單一通信協定轉換至其他通信協定。
在所說明之實施例中,CPU 620包括匯流排介面單元(BIU)625、快取記憶體630以及核心635及640。在各種實施例中,CPU 620可包括各種數目個核心及/或快取記憶體。舉例而言,CPU 620可包括1個、2個或4個處理器核心,或任何其他合適數目個處理器核心。在一項實施例中,快取記憶體630為集合關聯L2快取記憶體。在一些實施
例中,核心635及/或640可包括內部指令及/或資料快取記憶體。在一些實施例中,網狀架構610、快取記憶體630中或計算系統600中別處之一致性單元(未展示)可經組態以維護計算系統600之各種快取記憶體之間的一致性。BIU 625可經組態以管理CPU 620與計算系統600之其他元件之間的通信。諸如核心635及640之處理器核心可經組態以執行特定指令集架構(ISA)之指令,該等指令可包括作業系統指令及使用者應用程式指令。
快取記憶體/記憶體控制器645可經組態以管理網狀架構610與一或多個快取記憶體及/或記憶體之間的資料傳送。舉例而言,快取記憶體/記憶體控制器645可耦接至L3快取記憶體,其可又耦接至系統記憶體。在其他實施例中,快取記憶體/記憶體控制器645可直接耦接至記憶體。在一些實施例中,快取記憶體/記憶體控制器645可包括一或多個內部快取記憶體。
如本文中所使用,術語「耦接至」可指示元件之間的一或多個連接,且耦接可包括介入元件。舉例而言,在圖6中,可將圖像處理單元150描述為經由網狀架構610及快取記憶體/記憶體控制器645「耦接至」記憶體。相比之下,在圖6之所說明實施例中,圖像處理單元150「直接耦接」至網狀架構610,此係因為並不存在介入元件。
GPU 150可接收圖像導向式指令,諸如OPENGL®或DIRECT3D®指令。GPU 150可基於所接收圖像導向式指令來執行特殊化GPU指令或執行其他操作。GPU 150可大體上經組態以並行地處理大資料區塊,且可在圖框緩衝器中建置影像以用於輸出至顯示器。GPU 150可包括一或多個圖像處理管線中之變換、照明、三角化及/或顯現引擎。GPU 150可輸出用於顯示影像之像素資訊。在所說明之實施例中,GPU 150包括USC 160;在一些實施例中,GPU 150可具有各自包括各別USC 160之多個處理核心。
顯示單元665可經組態以自圖框緩衝器讀取資料且提供用於顯示之像素值之串流。在一些實施例中,顯示單元665可經組態為顯示管線。另外,顯示單元665可經組態以混合多個圖框以產生輸出圖框。另外,顯示單元665可包括用於耦接至使用者顯示器(例如,觸控螢幕或外部顯示器)之一或多個介面(例如,MIPI®或嵌入式顯示埠(eDP))。
I/O橋接器650可包括經組態以實施以下各者之各種元件:(例如)通用串列匯流排(USB)通信、安全性、音訊及/或低功率始終接通(always-on)功能性。I/O橋接器650亦可包括諸如脈寬調變(PWM)、一般用途輸入/輸出(GPIO)、串列周邊介面(SPI)及/或積體電路間(I2C)之介面。各種類型之周邊裝置及器件可經由I/O橋接器650耦接至計算系統600。
***
儘管上文已描述特定實施例,但此等實施例並不意欲限制本發明之範疇,即使在關於特定特徵僅描述單一實施例之情況下亦如此。除非另外陳述,否則本發明中所提供之特徵的實例意欲為說明性而非限制性的。上文描述意欲涵蓋如對於受益於本發明之熟習此項技術者而言將顯而易見的此等替代例、修改及等效物。
本發明之範疇包括本文中所揭示之任何特徵或特徵之組合(明確地抑或隱含地),或其任何推廣,而無論其是否減輕本文中所解決之問題中的任一者或全部。因此,可在本申請案(或主張其優先權之申請案)之審查期間將新申請專利範圍制定為特徵之任何此種組合。詳言之,參考隨附申請專利範圍,來自附屬請求項之特徵可與獨立請求項之彼等特徵組合,且來自各別獨立請求項之特徵可以任何適當方式而不僅僅以隨附申請專利範圍中所列舉之特定組合來組合。
160‧‧‧統一著色叢集(USC)
210‧‧‧暫存器儲存區
220A‧‧‧執行個體執行堆疊(IES)
220B‧‧‧執行個體執行堆疊(IES)
220N‧‧‧執行個體執行堆疊(IES)
230‧‧‧控制單元
232‧‧‧控制資訊
240A、240B...240N‧‧‧影子暫存器
250‧‧‧預測暫存器
Claims (17)
- 一種圖像處理單元,其包含:暫存器之一第一集合,其中該暫存器之一第一集合包括經架構性定義暫存器;暫存器之一第二集合,其經組態以鏡像複製暫存器之該第一集合;及一執行管線,其經組態以:針對具有作業碼之一指令序列之執行預測,該等作業碼指示該指令序列是否基於由一述詞寫入器指令所產生的一述詞值而被有條件地(conditionally)執行;及儲存該述詞值於暫存器之該第二集合中;及用儲存在暫存器之該第二集合中之該述詞值來更新該暫存器之該第一集合;及控制邏輯,其經組態以:在暫存器之該第二集合中執行該述詞值之評估;及基於該評估以藉由時脈閘控該執行管線之一或多個級而使該執行管線中斷執行該指令序列。
- 如請求項1之圖像處理單元,其中暫存器之該第二集合包括接近該執行管線之一輸出的一或多個暫存器,使得與暫存器之該第一集合相比,該一或多個暫存器較靠近該輸出。
- 如請求項1之圖像處理單元,其中該執行管線經組態以在無需暫停之情況下中斷執行該指令序列。
- 如請求項1之圖像處理單元,其進一步包含:複數個執行管線,其中每一執行管線經組態以並行地執行該指令序列之一各別執行個體;且 其中暫存器之該第二集合經組態以儲存與在該複數個執行管線內執行之該等執行個體中之每一者相關聯的多個預測值。
- 如請求項4之圖像處理單元,其進一步包含:一控制單元,其經組態以將用於該指令序列之相依性資訊提供至包括該執行管線之該複數個執行管線,其中該複數個執行管線經組態以使用相依性資訊及儲存於暫存器之該第二集合中的多個預測值,以判定是否中斷執行該等執行個體。
- 如請求項5之圖像處理單元,其中該控制單元經組態以基於每指令來判定該相依性資訊。
- 如請求項6之圖像處理單元,其中該相依性資訊將暫存器之該第二集合中之一或多者指定為具有相關於該指令序列之述詞值。
- 如請求項1之圖像處理單元,其進一步包含:一控制單元,其經組態以將一述詞值發出至該執行管線以使得將該述詞值儲存於暫存器之該第二集合中。
- 一種用於執行關於一或多個執行管線之預測之方法,其包含:在一圖像處理單元中針對經架構性定義暫存器之一集合維護影子暫存器之一集合,其中經架構性定義暫存器之該集合經組態以儲存用於具有作業碼之一指令序列之一述詞值,該等作業碼指示該指令序列基於該述詞值而被有條件地執行;在一執行管線處執行一指令,其用以判定供該指令序列用之一述詞值;將該述詞值寫回至影子暫存器之該集合,之後將經寫回之該述詞值儲存於該等經架構性定義暫存器中;在影子暫存器之該集合中評估該述詞值之一極性;及基於該評估以藉由停用供應至該執行管線之一或多個級之一時脈信號而判定是否中斷該指令序列之執行。
- 如請求項9之方法,其中該判定係在將經寫回之該述詞值儲存於經架構性定義暫存器之該集合中之前執行。
- 如請求項9之方法,其進一步包含:在單獨執行管線中執行一指令之複數個執行個體;針對該指令執行控制資訊之一單一判定;及將該控制資訊分散至該等執行管線中之每一者。
- 如請求項9之方法,其進一步包含:回應於判定中斷執行該指令序列,在無需在執行該指令序列之一執行管線中執行一暫停的情況下中斷執行該指令序列。
- 一種用於執行關於一或多個執行管線之預測之裝置,其包含:一圖像處理單元之一執行管線,其經組態以:針對具有作業碼之一指令序列執行預測,該等作業碼指定該指令序列基於由一述詞寫入器指令所產生的一述詞值而被有條件地執行;及執行述詞寫入器指令以產生該述詞值;及控制邏輯,其經組態以:相對於自該等作業碼所識別之一極性以執行該經產生的述詞值之一極性的評估;基於該評估以致使該執行管線之一或多個管線級內之邏輯的時脈閘控來中斷在該一或多個管線級處之執行。
- 如請求項13之裝置,其進一步包含一控制單元,其經組態以藉由時脈閘控該邏輯來提供可由該控制邏輯所使用及與該述詞值一起使用以判定是否停用該指令序列之執行的相依性資訊。
- 如請求項14之裝置,其中該控制單元經組態以將該相依性資訊提供至一循環緩衝器,該循環緩衝器耦接該控制邏輯。
- 如請求項13之裝置,其進一步包含:複數個多執行緒執行管線,其中每一執行管線經組態以執行該指令序列之一各別執行個體,且其中該控制單元經組態以使得時脈閘控每一執行管線內之邏輯。
- 如請求項15之裝置,其進一步包含:一電路,其經組態以在一圖像管線中執行著色操作,其中該電路包括該執行管線及該控制單元。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/975,520 US9633409B2 (en) | 2013-08-26 | 2013-08-26 | GPU predication |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201520971A TW201520971A (zh) | 2015-06-01 |
TWI575477B true TWI575477B (zh) | 2017-03-21 |
Family
ID=51492450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103128854A TWI575477B (zh) | 2013-08-26 | 2014-08-21 | 圖像處理單元預測 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9633409B2 (zh) |
TW (1) | TWI575477B (zh) |
WO (1) | WO2015031086A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI682357B (zh) * | 2017-04-28 | 2020-01-11 | 美商英特爾股份有限公司 | 用於低精度機器學習運算之計算最佳化 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2536658B (en) * | 2015-03-24 | 2017-03-22 | Imagination Tech Ltd | Controlling data flow between processors in a processing system |
US10115175B2 (en) | 2016-02-19 | 2018-10-30 | Qualcomm Incorporated | Uniform predicates in shaders for graphics processing units |
US10613987B2 (en) * | 2016-09-23 | 2020-04-07 | Apple Inc. | Operand cache coherence for SIMD processor supporting predication |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5724565A (en) * | 1995-02-03 | 1998-03-03 | International Business Machines Corporation | Method and system for processing first and second sets of instructions by first and second types of processing systems |
US5787026A (en) * | 1995-12-20 | 1998-07-28 | Intel Corporation | Method and apparatus for providing memory access in a processor pipeline |
US6282585B1 (en) * | 1999-03-22 | 2001-08-28 | Agere Systems Guardian Corp. | Cooperative interconnection for reducing port pressure in clustered microprocessors |
US6753878B1 (en) * | 1999-03-08 | 2004-06-22 | Hewlett-Packard Development Company, L.P. | Parallel pipelined merge engines |
US7039793B2 (en) * | 2001-10-23 | 2006-05-02 | Ip-First, Llc | Microprocessor apparatus and method for accelerating execution of repeat string instructions |
WO2008027574A2 (en) * | 2006-09-01 | 2008-03-06 | Brightscale, Inc. | Stream processing accelerator |
WO2013101560A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Programmable predication logic in command streamer instruction execution |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5430841A (en) * | 1992-10-29 | 1995-07-04 | International Business Machines Corporation | Context management in a graphics system |
US6128728A (en) * | 1997-08-01 | 2000-10-03 | Micron Technology, Inc. | Virtual shadow registers and virtual register windows |
US8274517B2 (en) * | 2003-11-14 | 2012-09-25 | Microsoft Corporation | Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques |
US7490229B2 (en) * | 2004-03-30 | 2009-02-10 | Sun Microsystems, Inc. | Storing results of resolvable branches during speculative execution to predict branches during non-speculative execution |
JP5043560B2 (ja) | 2007-08-24 | 2012-10-10 | パナソニック株式会社 | プログラム実行制御装置 |
US8151031B2 (en) * | 2007-10-31 | 2012-04-03 | Texas Instruments Incorporated | Local memories with permutation functionality for digital signal processors |
US20090327674A1 (en) * | 2008-06-27 | 2009-12-31 | Qualcomm Incorporated | Loop Control System and Method |
US8615646B2 (en) | 2009-09-24 | 2013-12-24 | Nvidia Corporation | Unanimous branch instructions in a parallel thread processor |
US10360039B2 (en) * | 2009-09-28 | 2019-07-23 | Nvidia Corporation | Predicted instruction execution in parallel processors with reduced per-thread state information including choosing a minimum or maximum of two operands based on a predicate value |
US20120084539A1 (en) | 2010-09-29 | 2012-04-05 | Nyland Lars S | Method and sytem for predicate-controlled multi-function instructions |
-
2013
- 2013-08-26 US US13/975,520 patent/US9633409B2/en active Active
-
2014
- 2014-08-18 WO PCT/US2014/051427 patent/WO2015031086A1/en active Application Filing
- 2014-08-21 TW TW103128854A patent/TWI575477B/zh active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5724565A (en) * | 1995-02-03 | 1998-03-03 | International Business Machines Corporation | Method and system for processing first and second sets of instructions by first and second types of processing systems |
US5787026A (en) * | 1995-12-20 | 1998-07-28 | Intel Corporation | Method and apparatus for providing memory access in a processor pipeline |
US6753878B1 (en) * | 1999-03-08 | 2004-06-22 | Hewlett-Packard Development Company, L.P. | Parallel pipelined merge engines |
US6282585B1 (en) * | 1999-03-22 | 2001-08-28 | Agere Systems Guardian Corp. | Cooperative interconnection for reducing port pressure in clustered microprocessors |
US7039793B2 (en) * | 2001-10-23 | 2006-05-02 | Ip-First, Llc | Microprocessor apparatus and method for accelerating execution of repeat string instructions |
WO2008027574A2 (en) * | 2006-09-01 | 2008-03-06 | Brightscale, Inc. | Stream processing accelerator |
WO2013101560A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Programmable predication logic in command streamer instruction execution |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI682357B (zh) * | 2017-04-28 | 2020-01-11 | 美商英特爾股份有限公司 | 用於低精度機器學習運算之計算最佳化 |
US10726514B2 (en) | 2017-04-28 | 2020-07-28 | Intel Corporation | Compute optimizations for low precision machine learning operations |
US10853906B2 (en) | 2017-04-28 | 2020-12-01 | Intel Corporation | Compute optimizations for low precision machine learning operations |
US11138686B2 (en) | 2017-04-28 | 2021-10-05 | Intel Corporation | Compute optimizations for low precision machine learning operations |
US11468541B2 (en) | 2017-04-28 | 2022-10-11 | Intel Corporation | Compute optimizations for low precision machine learning operations |
US11948224B2 (en) | 2017-04-28 | 2024-04-02 | Intel Corporation | Compute optimizations for low precision machine learning operations |
Also Published As
Publication number | Publication date |
---|---|
TW201520971A (zh) | 2015-06-01 |
WO2015031086A1 (en) | 2015-03-05 |
US20150054837A1 (en) | 2015-02-26 |
US9633409B2 (en) | 2017-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10692170B2 (en) | Software scoreboard information and synchronization | |
US10324726B1 (en) | Providing instruction characteristics to graphics scheduling circuitry based on decoded instructions | |
TWI546736B (zh) | 多執行緒圖形處理單元管線 | |
US10930047B2 (en) | Resource synchronization for graphics processing | |
US9594395B2 (en) | Clock routing techniques | |
US10223822B2 (en) | Mid-render compute for graphics processing | |
TWI575477B (zh) | 圖像處理單元預測 | |
KR102455417B1 (ko) | Simd 프로세서에서의 명령어 레벨 콘텍스트 스위치 | |
US10902545B2 (en) | GPU task scheduling | |
US10699366B1 (en) | Techniques for ALU sharing between threads | |
US20180182058A1 (en) | Local Image Blocks for Graphics Processing | |
US11727530B2 (en) | Instruction storage | |
US9183611B2 (en) | Apparatus implementing instructions that impose pipeline interdependencies | |
US10613987B2 (en) | Operand cache coherence for SIMD processor supporting predication | |
US9632785B2 (en) | Instruction source specification | |
US9519944B2 (en) | Pipeline dependency resolution | |
US10387119B2 (en) | Processing circuitry for encoded fields of related threads | |
US11422822B2 (en) | Multi-channel data path circuitry | |
US10114650B2 (en) | Pessimistic dependency handling based on storage regions | |
US10475152B1 (en) | Dependency handling for set-aside of compute control stream commands | |
US10452401B2 (en) | Hints for shared store pipeline and multi-rate targets |