TW201903602A - 圖形處理單元及處理圖形應用程式的方法 - Google Patents
圖形處理單元及處理圖形應用程式的方法 Download PDFInfo
- Publication number
- TW201903602A TW201903602A TW107107887A TW107107887A TW201903602A TW 201903602 A TW201903602 A TW 201903602A TW 107107887 A TW107107887 A TW 107107887A TW 107107887 A TW107107887 A TW 107107887A TW 201903602 A TW201903602 A TW 201903602A
- Authority
- TW
- Taiwan
- Prior art keywords
- thread
- unit
- processing
- work order
- stallable
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 230
- 238000000034 method Methods 0.000 title claims abstract description 89
- 230000008569 process Effects 0.000 title claims abstract description 66
- 239000013598 vector Substances 0.000 claims abstract description 115
- 230000015654 memory Effects 0.000 claims abstract description 86
- 238000003860 storage Methods 0.000 claims description 103
- 239000000872 buffer Substances 0.000 claims description 87
- 239000000463 material Substances 0.000 claims description 28
- 238000004148 unit process Methods 0.000 claims description 2
- 238000007667 floating Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 239000004744 fabric Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000001934 delay Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 102100026693 FAS-associated death domain protein Human genes 0.000 description 1
- 101000911074 Homo sapiens FAS-associated death domain protein Proteins 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 239000012464 large buffer Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000009941 weaving 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/22—Microcontrol or microprogram arrangements
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30098—Register arrangements
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/3824—Operand accessing
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- 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/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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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
-
- 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory 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)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Multimedia (AREA)
- Mathematical Physics (AREA)
- Image Generation (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
Abstract
一種圖形處理單元可包括暫存器檔案記憶體、處理元件、及加載儲存單元。暫存器檔案記憶體包括多個暫存器。處理元件耦合至暫存器檔案記憶體且處理圖形應用程式的執行緒向量的至少一個執行緒。執行緒向量中的每一執行緒是以非失速方式被處理。處理元件將藉由處理至少一個執行緒而產生的且將被路由至處於處理元件外部的第一可失速邏輯單元的資料儲存於暫存器檔案記憶體中的多個暫存器的第一預定集合中。加載儲存單元耦合至暫存器檔案記憶體,且加載儲存單元存取多個暫存器的第一預定集合中的資料且將其路由至第一可失速邏輯單元。
Description
本文中所揭露主題是有關於一種圖形處理單元(graphics processing unit,GPU)。更具體而言,本文中所揭露主題是有關於一種在低電力結構中維持資料的系統及方法。 [相關申請案的交叉參考] 本專利申請案基於35 U.S.C. §119(e)主張於2017年4月18日提出申請的美國臨時專利申請案第62/486,957號的優先權,所述美國專利申請案的揭露內容全文併入本案供參考。
圖形處理單元執行可與應用程式相關聯的圖形程式。圖形處理單元可包括可用於執行例如著色器程式(shader program)(著色器)的通用可程式化引擎。在統一圖形處理單元架構中相同的可程式化引擎(其可被稱為著色器核心(shader core))對於特定圖形配置運行一定數目的程式中的每一者。慮及圖形程式的性質,圖形處理單元是具有平行運行的大的執行緒合集的高度平行的機器。高度平行的系統常常在所述系統的不同部分之間移動大量資料—傾向於消耗相對大的電量的操作。因此,若圖形處理單元被設計成手持式裝置的一部分,則低電力設計變得極其重要。
示例性實施例提供一種圖形處理單元,所述圖形處理單元可包括暫存器檔案記憶體、處理元件(processing element,PE)、及加載儲存單元(load-store unit,LSU)。所述暫存器檔案記憶體可包括多個暫存器。所述處理元件可耦合至所述暫存器檔案記憶體,且所述處理元件可處理圖形應用程式的執行緒向量的至少一個執行緒,其中所述執行緒向量中的每一執行緒將以非失速方式被處理,且所述處理元件可將藉由處理所述至少一個執行緒而產生的且將被路由至處於所述處理元件外部的第一可失速邏輯單元的資料儲存於所述暫存器檔案記憶體中的所述多個暫存器的第一預定集合中。所述加載儲存單元可耦合至所述暫存器檔案記憶體,且所述加載儲存單元可存取所述多個暫存器的所述第一預定集合中的所述資料且可將所述資料路由至所述第一可失速邏輯單元。所述圖形處理單元可更包括工作次序漏斗(work-order hopper)記憶體,所述工作次序漏斗記憶體耦合至所述加載儲存單元,其中所述工作次序漏斗記憶體可能夠儲存與所述處理單元處理所述圖形應用程式的所述執行緒向量的所述至少一個執行緒相關聯的至少一個工作次序訊息,且其中所述至少一個工作次序訊息可包括儲存有將被路由至所述第一可失速邏輯單元的所述資料的所述多個暫存器中的所述第一預定集合的第一位置。所述至少一個工作次序訊息可更包括所述暫存器檔案記憶體中的所述多個暫存器的第二預定集合的第二位置,所述第二位置指示將在何處儲存所述第一可失速邏輯單元的結果。
示例性實施例提供一種圖形處理單元,所述圖形處理單元可包括處理元件、指令管線剖析器、及加載儲存單元。所述處理元件可處理圖形應用程式的執行緒向量的至少一個執行緒,其中所述執行緒向量中的每一執行緒將以非失速方式被處理。若所述圖形應用程式的執行緒向量的所述至少一個執行緒的指令包括將資料路由至處於所述處理元件外部的第一可失速邏輯單元的操作,則所述指令管線剖析器可產生工作次序訊息。所述工作次序訊息可包括用以儲存由所述處理元件處理的將被路由至所述第一可失速邏輯單元的資料的第一位置。所述加載儲存單元可包括能夠儲存所述工作次序訊息的工作次序漏斗記憶體。所述加載儲存單元可接收所述工作次序漏斗記憶體中的所述工作次序訊息並可將所述第一位置處的所述資料路由至所述第一可失速邏輯單元。所述處理元件可包括暫存器檔案記憶體,所述暫存器檔案記憶體包括多個暫存器,其中儲存所述資料的所述第一位置包括所述暫存器檔案記憶體中的所述多個暫存器的第一集合。所述工作次序訊息可更包括所述暫存器檔案記憶體中的所述多個暫存器的第二預定集合的第二位置,所述第二位置指示將在何處儲存所述第一可失速邏輯單元的結果。
一個示例性實施例提供一種處理圖形應用程式的方法,所述方法可包括:在處理元件中藉由處理所述圖形應用程式的執行緒向量的至少一個執行緒而產生資料,其中所述執行緒向量的每一執行緒將在非失速進程中被處理,且所述資料可被路由至處於所述非失速進程外部的可失速進程;將所述資料儲存於暫存器檔案記憶體中的多個暫存器的第一預定集合中,其中所述暫存器檔案記憶體可耦合至所述處理元件;由耦合至所述暫存器檔案記憶體的加載儲存單元存取被儲存於所述多個暫存器的所述第一預定集合中的所述資料;以及由所述加載儲存單元將所存取的所述資料路由至所述可失速進程。所述方法可更包括:若所述圖形應用程式的所述向量的所述至少一個執行緒的指令包括將資料路由至所述可失速進程的操作,則由指令管線剖析器產生工作次序訊息,其中所述工作次序訊息可包括用以儲存將被路由至所述可失速進程的所述資料的所述多個暫存器的所述第一預定集合的第一位置。所述工作次序訊息可更包括所述暫存器檔案記憶體中的所述多個暫存器的第二預定集合的第二位置,所述第二位置指示將在何處儲存所述可失速進程的結果。
一個示例性實施例提供一種處理圖形應用程式的方法,所述方法可包括:若所述圖形應用程式的指令包括將資料路由至可失速進程的操作,則在指令管線剖析器處產生工作次序訊息,其中所述圖形應用程式可包括至少一個執行緒向量,所述至少一個執行緒向量中的每一執行緒將在非失速進程中被處理,且其中所述工作次序訊息可包括用以儲存藉由執行所述指令而產生的資料的第一位置;將所述工作次序訊息儲存於加載儲存單元的工作次序漏斗記憶體中;在處理元件中藉由在所述非失速進程中對所述圖形應用程式的執行緒向量的至少一個執行緒執行所述指令而產生資料,其中所產生的所述資料可被路由至失速進程;將所述資料儲存於暫存器檔案記憶體中的多個暫存器的第一預定集合中,其中所述多個暫存器的所述第一預定集合對應於所述第一位置,且所述暫存器檔案記憶體可耦合至所述處理元件;所述加載儲存單元存取被儲存於所述多個暫存器的所述第一預定集合中的所述資料;以及所述加載儲存單元將所存取的所述資料路由至所述失速進程。
在以下詳細說明中,闡述了許多具體細節以提供對本發明的透徹理解。然而,熟習此項技術者將理解,沒有該些具體細節亦可實踐所揭露的態樣。在其他實例中,未詳細闡述眾所習知的方法、程序、組件及電路以避免使本文中所揭露的主題模糊不清。
本說明書通篇中所提及的「一個實施例」或「實施例」意指結合所述實施例所闡述的特定特徵、結構或特性可包括於本文中所揭露的至少一個實施例中。因此,在本說明書通篇中各處出現的片語「在一個實施例中」或「在實施例中」抑或「根據一個實施例」(或具有相似含義的其他片語)可能未必皆指同一實施例。此外,在一或多個實施例中,特定特徵、結構或特性可以任何適當的方式進行組合。鑒於此,本文中所使用的詞「示例性」意指「充當例子、實例、或例證」。本文中被闡述為「示例性」的任何實施例並非被視為必定較其他實施例更佳或具有優勢。此外,相依於本文論述的上下文,單數用語可包括對應的複數形式且複數用語可包括對應的單數形式。應進一步注意,本文中所示出及論述的各種圖(包括組件圖)僅用於說明目的,且並非按比例繪製。相似地,示出各種波形圖及時序圖僅用於說明目的。舉例而言,為清晰起見,可將一些元件的尺寸相對於其他元件進行誇大。此外,在適宜時在各圖中重複使用參考編號來指示對應的及/或類似的元件。
本文所使用的術語僅用於闡述特定示例性實施例,而並非旨在限制本主張主題。除非上下文中清楚地另外指明,否則本文所用的單數形式「一(a/an)」及「所述(the)」旨在亦包含複數形式。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件、及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件、及/或其群組的存在或添加。本文中所使用的用語「第一」、「第二」等是作為其後面所跟名詞的標記來使用,且除非明確如此定義,否則並不暗含任何類型的次序(例如,空間的、時間的、邏輯的等)。此外,可在兩個或更多個圖式中交叉使用相同的參考編號來指代具有相同或相似功能的部件、組件、區塊、電路、單元、或模組。然而,此類用法僅是出於說明簡潔及易於論述的目的,而並非暗含此類組件或單元的構造或架構細節在所有實施例中均相同抑或暗含此類具有共用參考編號的部件/模組是實作本文中所揭露的特定實施例的教示的唯一途徑。
除非另外定義,否則本文中所使用的全部用語(包括技術及科學用語)的含義均與本主題所屬技術領域中具有通常知識者所通常理解的含義相同。舉例而言,本文中所使用的用語「模(mod)」意指「模數(modulo)」。應進一步理解,用語(例如在常用字典中所定義的用語)應被解釋為具有與其在相關技術的上下文中的含義一致的含義,且除非本文中進行明確定義,否則不應將其解釋為具有理想化或過於正式的意義。
本文中所使用的用語「模組」是指用以在與模組連接時提供本文中所述功能的軟體、韌體、及/或硬體的任意組合。應用於本文中所述任意實作方案的用語「軟體」可被實施為軟體封裝、碼、及/或指令集或指令。應用於本文中所述任意實作方案的用語「硬體」可包括例如單一地或以任意組合形式對由可程式化電路系統執行的指令的進行儲存的硬導線電路系統(hardwired circuitry)、可程式化電路系統、狀態機電路系統(state-machine circuitry)、及/或韌體。模組可集體地或各別地實施為軟體、韌體、及/或硬體,所述軟體、韌體、及/或硬體形成更大的系統(例如但不限於積體電路(integrated circuit,IC)、系統芯片(system on-chip,SoC)等)的一部分。
本文中所揭露主題提供一種圖形處理單元系統,所述圖形處理單元系統包括處理元件,所述處理元件在不使用滑動緩衝器(skid buffer)及/或可賦能正反器(enablable flip-flop)的條件下運行非失速初級進程(non-stalling primary process)。可在非失速進程外部執行可包括潛在未知或不可知延遲
的非失速初級進程的所有態樣,藉此以非失速方式有效地處理潛在未知或不可知延遲。
在一個實施例中,圖形處理單元系統可包括非失速中央引擎,所述非失速中央引擎藉由相對大的靜態隨機存取記憶體(static random access memory,SRAM)而與潛在失速第二進程交換資料。非失速中央引擎可包括處理元件,所述處理元件動態地對靜態隨機存取記憶體進行定址以使非失速初級進程可產生資料並將資料儲存於所述靜態隨機存取記憶體中。對於具有未知或不可知延遲的操作,潛在失速第二進程可存取靜態隨機存取記憶體以對所儲存資料實行附加功能。因此,本文中所揭露的圖形處理單元系統的高效儲存結構允許可用於達成非失速初級進程中的操作的輸入,但可具有可失速態樣,所述可失速態樣將在所述儲存結構中產生且維持於所述儲存結構中直至第二進程可完成潛在可失速態樣之時為止。
另外,處理元件的非失速特性容許所述處理元件被配置成相較於包括失速管線的傳統圖形處理元件而言使用較小的芯片面積且耗散較少的電力。亦即,非失速初級進程藉由靜態隨機存取記憶體來交換資料這一配置提供使用最小儲存空間量的相對低電力圖形處理單元系統。用於製作如靜態隨機存取記憶體一樣的儲存器的當前技術使得相對大的靜態隨機存取記憶體能夠在面積及電力方面相對於製作如可能在傳統圖形處理單元中使用的正反器一樣的儲存器的技術而言更高效。另外,如本文中所揭露,使用更少數目的相對較大的靜態隨機存取記憶體可較使用諸多相對較小的靜態隨機存取記憶體的情形的成本效率更高,乃因內部靜態隨機存取記憶體結構藉由較少的相對較大的靜態隨機存取記憶體進行的攤銷可較藉由諸多相對較小的靜態隨機存取記憶體進行的攤銷更高效。
在一個實施例中,處理元件可耦合至在本文中被稱為向量暫存器檔案(vector register file,vRF)的相對大的靜態隨機存取記憶體,向量暫存器檔案可保持由所述處理元件執行的非失速進程所發射的資料。資料可因應於指令集架構(instruction set architecture,ISA)的外顯發射指令而自非失速進程發射或者以暗含方式作為可使資料離開處理元件的任何其他指令的一部分而發射。所發射的特定資料可包含於作為向量暫存器檔案的一部分的可辨識發射緩衝器中。自程式化角度來看,使用發射緩衝器可由於不使用外顯指令狹槽而為高效的,藉此消除與附加程式獲取能量及延遲相關聯的負擔且減小程式儲存空間。
在一個實施例中,圖形處理單元系統可提供著色器核心引擎,所述著色器核心引擎可以非失速方式進行操作,且任何可失速的操作均可在不使用用於資料輸入及輸出的正反器組的條件下在非失速著色器核心引擎的外部執行。著色器核心引擎可被配置成使得核心中的操作總是耗用相同數目的循環。由著色器核心引擎處理的所有大資料保持處於基於靜態隨機存取記憶體的暫存器檔案中且對特定暫存器檔案的管理可為著色器程式編譯器與一或多個運行時間定序器的組合,所述著色器程式編譯器可在編譯時間處實行對暫存器檔案配置的各種最佳化,所述一或多個運行時間定序器可在操作期間提供暫存器的準確位址。藉由基於靜態隨機存取記憶體的暫存器檔案進行的資料互換可為靈活的且可涉及與所述基於靜態隨機存取記憶體的暫存器檔案內的暫存器檔案分配有關的最少編譯器知識。因此,與傳送整個大資料訊息(包括所述訊息內的所有擴展部分)相反,本文中所揭露主題本質上提供傳參考呼叫(call-by-reference)(而非傳值(by-value))進程,在所述傳參考呼叫進程中指示在何處尋找大訊息的所述部分的少量描述(或工作次序)被發送至可失速引擎。
不再在由圖形應用程式呈現的準確序列中外顯地運行著色器程式的所有指令,而是本文中所揭露主題可允許依序執行操作(現代圖形處理單元的通用處理器部分中的經編譯指令)或可當操作的任意態樣包括未知延遲態樣(例如,對一些外部資源的相依性)時使所述操作放置於隊列中以供隨後處理。因此,本文中所揭露主題提供用於小指令集的高效解耦技術,所述高效解耦技術為高效非失速核心提供可失速輔助處理單元,所述可失速輔助處理單元處置放置於隊列中的操作(例如記憶體輸入/輸出(input/output,I/O))(即,織構及屬性提取)及位於所述核心外部的其他圖形操作。儘管指令操作可能無法以應用程式所提供的次序實體地運行,然而所述指令操作在邏輯上保持有序,其中可失速的指令在單獨的隊列中運行。
在本文中所揭露圖形處理單元系統的一個實施例中,針對著色器的通用處理可由一或多個處理元件實行,所述一或多個處理元件可被組成一或多個處理元件叢集(PE cluster,PEC)。本文中所使用的處理元件是指能夠以非失速方式執行指令串流的通用處理器。本文中所使用的處理元件叢集是指形成平行處理陣列的處理元件的多重性(multiplicity)。在一個實施例中,每一處理元件叢集可存在四個處理元件。在另一實施例中,每一處理元件叢集的處理元件的數目可不同於每一處理元件叢集四個處理元件。對於每一循環,處理元件在執行緒合集(或經構)中的每一執行緒上處理相同的指令。為達成高效能,處理元件可為多執行緒機器。在一個實施例中,處理元件可為單指令多執行緒(SIMT)引擎。
本文中所使用的執行緒是指可執行指令的控制點。本文中所使用的追蹤(trace)是指以非失速連續序列運行的指令合集。追蹤可使用一或多個循環來執行。舉例而言,一個循環可專用於追蹤中的每一指令。每一執行緒的主動狀態可藉由執行遮罩中的對應位元來控制。本文中所使用的經構是多個執行緒的合集,且經構可指在循環中執行的所有執行緒。
對處理元件執行的程式可包括一或多個追蹤且可利用例如加載儲存單元等外部可失速單元。本文中所使用的加載儲存單元是指處置例如加載及儲存等可失速操作以及例如但不限於織構存取或使用共享資源(例如數學共處理器等)等其他潛在可失速操作的處理單元。一或多個加載儲存單元可與每一處理元件叢集相關聯。
圖1繪示根據本文中所揭露主題的圖形處理單元系統100的示例性實施例。圖形處理單元系統100可包括控制器單元101、處理元件叢集102、圖形處理單元系統100的其他單元103、及位於處理元件叢集102與其他單元103之間的通訊構架(communication fabric)104。控制器單元101可耦合至處理元件叢集102及其他單元103以提供對圖形處理單元系統100的操作的總體控制。其他單元103可包括可失速單元,例如但不限於織構單元、光柵化單元、影像緩衝單元、超越運算單元、共享記憶體、數學共處理器單元、1級快取、插值屬性單元(interpolating attribute unit)、及晶片上網路(network on a chip,NOC)。
處理元件叢集102可包括工作向量構造器105、一或多個處理元件106、一或多個加載儲存單元107、及定序器108。儘管處理元件叢集102可包括任意數目的處理元件106,然而如圖1中所繪示處理元件叢集102可包括四個處理元件106。相依於相對處理要求,單一加載儲存單元107可服務於多個處理元件106,藉此進一步減少總體面積及儲存要求。儘管處理元件叢集102可包括任意數目的加載儲存單元107,然而在圖1中所繪示示例性實施例中處理元件叢集102的兩個處理元件106可使用單一加載儲存單元107。工作向量構造器105、處理元件106、加載儲存單元107、及定序器108中的一或多者可被實施為模組。
每一處理元件106可包括向量暫存器檔案109及純量暫存器檔案(scalar register file,sRF)110。本文中所使用的向量暫存器檔案是指藉由針對每一執行緒提供儲存來支援處理元件106的相對大的記憶體,且可一般能夠由處理元件106及與處理元件106相關聯的加載儲存單元107來存取。本文中所使用的純量暫存器檔案是指藉由提供純量資料儲存(例如但不限於執行緒執行遮罩)來支援處理元件106的記憶體。向量暫存器檔案109可一般較純量暫存器檔案110大得多。另外,向量暫存器檔案109及純量暫存器檔案110可被配置成提供足夠的儲存以使得若由於一或多個經構可能要等待資源而使所述經構無法繼續進行,則能夠在可在處理元件106上執行的多個經構之間進行切換以將效率最大化。在一個實施例中,向量暫存器檔案109及純量暫存器檔案110可自靜態隨機存取記憶體形成。
工作向量構造器105耦合至所述一或多個處理元件106及定序器108。工作向量構造器105進行操作以對被放入至由處理元件叢集102處理的執行緒中的工作項進行組合。關於圖形,工作項可包括但不限於將被處理的畫素或頂點。
定序器108可包括指令管線頂端(TotIP)剖析器108a,指令管線頂端剖析器108a可包括對由處理元件叢集102執行的程式指令進行剖析以進行以下操作的邏輯:判斷指令是否可包括可失速態樣,且若所述指令可包括可失速態樣,則指令管線頂端剖析器108a產生訊息(在本文中被稱為工作次序),所述訊息可儲存於加載儲存單元107中的工作次序漏斗(work-order hopper)111中。本文中所使用工作次序可為可包含發射緩衝器(在向量暫存器檔案109及/或純量暫存器檔案110中)的位置以及將對所述發射緩衝器中的資料實行的一或多個動作(即,資料調處)的指令封包。
處理元件106可進行操作以處理形成經構的多個執行緒,其中所述經構的所述執行緒中的每一者是非可失速的。處理元件106所可引起的訊息中的諸多訊息可由於圖形處理單元系統100的執行緒平行性質而為大的。因此,處理元件106可為大量大資料的生產方且相關聯加載儲存單元107可對所述大資料進行路由並且在一些情形中對「飛行中的(in flight)」資料進行操作,例如若所述資料可包含可被合併以提高往來於快取的存取效率的加載或儲存的位址陣列。處理元件106與加載儲存單元107之間的交互作用可藉由向量暫存器檔案109及純量暫存器檔案110來達成,以使在發送及儲存固有大量資料的能量及負擔方面的成本可最小化。由處理元件106產生的大資料在向量暫存器檔案109及/或純量暫存器檔案110中保持處於本地直至所述大資料可被另一單元103使用為止。加載儲存單元107可包括專用於處理元件106的向量暫存器檔案的專用介面,及/或可將讀取/寫入存取埠週期挪用(cycle steal)至處理元件靜態隨機存取記憶體。
經構可被配置成在空間維度上及在時間維度上管理執行緒。圖2繪示經構200的示例性實施例,經構200包括被組織成在空間維度中有八個執行緒且在時間維度中有四個執行緒的32個執行緒201的單指令多執行緒群組。在四個循環內平行地進行操作的所述八個執行緒在圖2中所示時間/空間內完成32個單元的工作。所述執行的八個寬性質(eight-wide nature)可藉由處理元件106的八個道(lane)(即,平行的八個算數邏輯單元)來處理。時間維度中的所述四個執行緒可被作為計算單元管線中的四次系統時鐘敲擊來管理。所述四次敲擊組織在本文中可被稱為通道(Pass)。應理解,本文中所揭露主題可支持任意數目的經構以及向量暫存器檔案109及純量暫存器檔案110中的任意數目的暫存器檔案。
經構中的每一執行緒可具有所述執行緒所可調處的獨立資源及資料,且因此經構的執行緒資料的量可變大(特別是若所述資料是浮點值(floating-point value))。舉例而言,每當指令呼叫執行緒的任何資料時,三十二個32位元值形成1千位元的資料。經構的寬的寬度可用於既在處理元件106內部進行又在與外部單元(即,圖1中的另一單元103)進行通訊時進行的操作。
重新參照圖1,除處理元件106與加載儲存單元107之間的分工(即,處理元件106產生資料且加載儲存單元107對所述資料進行路由及操作)以外,在所述資料被創建的時刻與所述資料被加載儲存單元107處理的時刻之間可能存在延遲。所述延遲的範圍可介於幾乎為零至相當長的時間(若加載儲存單元107恰巧在所述時刻被處理元件叢集102的另一處理元件106佔用,或者因等待來自另一單元103的響應而以其他方式出現延遲)。加載儲存單元107中不再具有大緩衝器,而是處理元件所生產的大資料可被維持於處理元件106的向量暫存器檔案109內的以邏輯方式形成的子緩衝器中。此種子緩衝器可在本文中被稱為發射緩衝器300(圖3)。發射緩衝器300可保持由處理元件106發射的資料,而無論所述資料是由於指令集架構中的外顯發射指令而發射還是以暗含方式作為使資料離開處理元件106的任何其他指令的一部分而發射。處理元件106可計算在何處向發射緩衝器300中進行寫入及加載儲存單元107可在何處自發射緩衝器300進行讀取。
加載儲存單元107管理資料自處理元件106至系統100的處於處理元件106外部的其餘部分進行的分佈。在一個實施例中,加載儲存單元107可包括可變深度隊列,所述可變深度隊列在本文中被稱為工作次序漏斗111。本文中所使用的工作次序漏斗是指可用於將工作次序自非失速引擎(即,處理元件106)傳遞至圖形處理單元系統100的可失速引擎部分的輸入隊列結構。在一個實施例中,工作次序漏斗111的深度可被設定成16。在其他實施例中,工作次序漏斗111的深度可不同於16。
工作次序漏斗111可為較向量暫存器檔案109小的儲存器,但能夠在不負面地影響主處理元件執行引擎的條件下支援工作次序指令的後台執行。工作次序漏斗111的實際尺寸可為完全靈活的。由指令管線頂端108a寫入的工作次序被放置至加載儲存單元107的工作次序漏斗111中且可以抵達次序被處理,但是與誘發處理元件指令異步地進行。亦即,加載儲存單元107可以工作次序在工作次序漏斗111中排隊的相同次序處理工作次序漏斗111中的所述工作次序。作為另一選擇,若加載儲存單元107可服務於多於一個處理元件106,則加載儲存單元107可使用循環法(round-robin)或其他仲裁方案來選擇下一步所要服務於的工作次序/處理元件。
所述進程的涉及加載儲存單元107的部分是以如下操作為開始:定序器108中的指令管線頂端剖析器108a對指令進行剖析並向加載儲存單元107中的工作次序漏斗111發送工作次序。在一個實施例中,自定序器108至加載儲存單元107的工作次序漏斗111的路徑中的延遲可足夠長而使可進行處理元件106所涉及的用於產生將按照工作次序而被處理的資料的任意操作。
表1闡述提供可用於處理向量暫存器檔案109及/或純量暫存器檔案110中的資料的最少資訊量的示例性四欄位32位元工作次序的一個實施例。表1闡述32位元工作次序的示例性配置。第一欄位,位元[31:24]可用於選擇或辨識工作次序且隨後的[23:15]位元可對所述工作次序提供修飾符(modifier)。後續的[14:7]及[6:0]欄位可用於分別存取處理元件的向量暫存器檔案及純量暫存器檔案中的資料。在加載儲存單元107處理工作次序期間,舉例而言,遮罩及其他資料可能需要恰當地執行工作次序並將所述工作次序的結果返送至適宜的暫存器檔案。 表1
圖3繪示根據本文中所揭露主題的發射緩衝器300的示例性實施例。發射緩衝器300可為位於形成處理元件106的向量暫存器檔案109的一組暫存器內且已被分配至經構的一系列暫存器位置。處理元件106的向量暫存器檔案109可基於指示在何處定位用於特定經構的特定向量暫存器檔案空間的WARPid.RFbase暫存器中所包含的資訊而被劃分至一組空間中。WARPid.RFbase暫存器可維持於定序器108中。在一個實施例中,存在定序器108所控制的每一處理元件的該些暫存器中的每一者的副本。因此,向量暫存器檔案109可被配置成包含多個發射緩衝器300。可基於例如WARPid.RFbase暫存器的內容加WARPid.EMITbase暫存器的內容來定位及存取特定發射緩衝器300。WARPid.EMITbase暫存器可維持於定序器108中。隨著表項將被添加至發射緩衝器(如由指令管線頂端剖析器108a決定),定序器108對WARPid.EMITbase暫存器進行遞增。在一個實施例中,發射緩衝器300的壽命可等於追蹤的長度。因此,發射緩衝器300中的資料可在單一追蹤內被創建及消耗。
如圖3中所繪示,向量暫存器檔案109包括由已被分配至一或多個經構中的每一者的暫存器R0
、R1
、...形成的排列形式。應理解,儘管圖3中繪示僅經構301a至301c,然而向量暫存器檔案109可包括任意數目的經構。每一經構301可被配置成包括例如32個執行緒,此可與圖2中所繪示示例性經構相似。
發射緩衝器300中的資料與被發送至加載儲存單元107的工作次序漏斗111的工作次序直接關聯。更具體而言,發射緩衝器109中的資料可包含將由處理元件106發射的大向量值,且對應的工作次序可包含與發射緩衝器300中的資料有關的特定請求。當例如著色器程式的指令執行時,若存在將自處理元件106傳遞至可失速單元103的資料,則將被傳遞的所述資料可被存放於處理元件106的向量暫存器檔案109內的發射緩衝器300中。可在設計時間(即,合成時間)處確定可使資料發射至發射緩衝器的指令集架構層階指令的準確清單,或者可將所述準確清單製錶於維持運行時間的表中。表2闡述示例性指令的清單。在任一種情形中,在運行時間期間,每當例如定序器108中的指令管線頂端剖析器108a對指令進行剖析時,可判斷所述指令是否完全在處理元件106中運行或者判斷所述指令是否亦可包括所述指令的可排隊於加載儲存單元107中以進行進一步可失速處理的一部分。
圖3可繪示以下示例性情境:在所述示例性情境中,追蹤執行已執行規定例如織構座標緩衝器(texture coordinate buffer,TCBUF)的指令,且輸出使用64位元位址的記憶體存取,且接著向輸出暫存器(o#)輸出兩次不同的寫入。本文中所使用的織構座標緩衝器(TCBUF)是指可用於接收及儲存織構座標的遠端儲存元件(即,遠離向量暫存器檔案)。在圖3中執行的追蹤亦可包括例如FMUL TCBUF2
, R1
, R2
等指令,所述指令可使乘積R1
× R2
放置於發射緩衝器300的第一表項中。FMUL指令中的織構座標緩衝器目的地的下標「2」可為可被發送至加載儲存單元107的工作次序漏斗111的工作次序的一部分。當加載儲存單元107實行工作次序時,加載儲存單元107請求向量暫存器檔案109存取發射緩衝器300的位置,且藉由規定例如TEX.TA.TCBUF(即,織構單元中的定址子模組中的織構座標緩衝器)的標簽,在被辨識為發射緩衝器109的向量暫存器檔案109中的位置處可獲得將寫入至TEX.TA.TCBUF的資料向量,所述標簽指示所述操作是織構座標緩衝器加載操作且指示所存取的TEX.TA.TCBUF為數字2。應注意,將操作稱為「加載」或「儲存」操作是相對於被服務的單元或記憶體而言。亦即,進入正文緩衝器單元表項中的寫入被稱為「加載」(例如,「織構座標緩衝器加載」),儘管自加載儲存單元107或處理元件106的角度來看,所述操作仍可被視為儲存操作。
繼續參照圖3中所繪示示例性情境,有時在追蹤的指令的稍後的部分中,可能存在使用64位元位址的記憶體存取。此可能使得兩個32位元位址部分被處理元件106寫入至發射緩衝器300中。大向量資料(即,位址)被維持於向量暫存器檔案109中,且當加載儲存單元107基於加載儲存單元107的工作次序漏斗111中的工作次序而對向量暫存器檔案109作出請求時此種記憶體操作可被傳送至加載儲存單元107。
在追蹤的再稍後的部分中,可能存在參考輸出暫存器(即,o#)的指令(例如指令FADD O3
, R14
, R6
),此導致圖3中所繪示特定情境。發射緩衝器300可包含將被寫入至o[3]的向量值,且工作次序包含常數「3」。隨後,進行第二輸出暫存器寫入且第二向量可被寫入至發射緩衝器300,且對應地,第二o#工作次序被發送至加載儲存單元107的工作次序漏斗111。著色器程式的當前著色器類型可由PEC.WSQ.TotIP暫存器指示。PEC.WSQ.TotIP暫存器可位於定序器108中。除其他用途以外,著色器類型可用於區分如何處理o#操作。被發送至加載儲存單元107的工作次序中亦可指示:o#是否是對前端著色器進行,在此種情形中輸出暫存器寫入是對共享記憶體進行;或者o#是否是對畫素著色器進行,在此種情形中輸出暫存器寫入是對光柵化子系統進行。
表2闡述可包括與發射緩衝器300相關聯的動作的指令集架構(或指令的變型)的示例性清單(例如在向織構座標緩衝器進行寫入的情形中)。表2闡述包括發射緩衝器動作的示例性指令及指令變型。表2中題為「規定形式」的第二行指示定序器108可藉由指令管線頂端剖析器108a測驗哪一(哪些)欄位來判斷發射緩衝器300是否可用於特定指令。對於一些情形,檢驗指令運算碼便可足夠,但在其他情形中可進一步優化所述判斷。 表2
根據表2中的第二行,檢測指令是否包括發射緩衝器操作可能涉及不僅僅對主要/次要運算碼進行解碼且可能需要檢驗指令字中的附加欄位。舉例而言,雙倍精度浮點運算可與單倍精度浮點運算區分開的原因是僅雙倍精度浮點運算可誘發發射緩衝器動作,而單倍精度浮點運算可在定序器108不進行任何額外動作且加載儲存單元107不進行任何交互作用的條件下在處理元件106中計算。在雙倍精度浮點運算與單倍精度浮點運算之間進行區分可包括檢驗指令的精確類型欄位。
表3中提供指令管線頂端剖析器108a如何檢測表2中所示情形的附加細節。表3闡述用於辨識誘發發射緩衝器的情境的附加細節。表3的最右邊兩行分別呈現在一個實施例中當處理特定指令時在發射緩衝器300中消耗的向量暫存器及純量暫存器的數目。圖4繪示當確定示例性發射緩衝器400將被用作對與TCBUF有關的指令進行的處理的一部分時指令管線頂端剖析器108a可檢驗到的示例性TCBUF指令的示例性欄位401。 表3
出於時序原因,指令管線頂端剖析器108a在向處理元件106發送指令之前可不修改追蹤中的指令中的任一者,而是相反可在適宜時提供替代性目的地欄位位元,處理元件106可隨後在管線中使用所述替代性目的地欄位位元來代替所述指令的目的地欄位位元。
確定表3中所示向量暫存器檔案及純量暫存器檔案表項的數目的通用規則可包括以下考慮。對於發射緩衝器的分配,可存在兩個計數器EmitVrf及EmitSrf,其中0、1、或2向量暫存器檔案表項可依據即將到來的指令而針對每一源向量或目的地向量進行分配。向量暫存器檔案分配指針可以所分配向量暫存器檔案表項的數目遞減。四個純量暫存器檔案表項可被分配成包含標頭(header)、執行遮罩、及各種其他欄位。每一純量暫存器檔案表項的準確尺寸以及所呈現表項的數目可由設計考慮來指定。第一純量暫存器檔案方塊可自S63..S60進行分配,並以四為單位向下擴展。在指令完成時,工作次序可自指令管線頂端剖析器108a傳遞至加載儲存單元107的工作次序漏斗111。加載儲存單元可讀取純量暫存器檔案表項及向量暫存器檔案表項。在另一實施例中,向向量暫存器檔案及純量暫存器檔案中進行定址可以向下計數方式進行,且因此在追蹤開始時,EmitVrf可為向量暫存器檔案大小—1,且EmitSrf可為60..63。若在發射緩衝器中向量暫存器檔案空間不被用作表項,則編譯器可使用未分配空間來保持持久性資料,藉此減小圖形處理單元系統100所需的總體記憶體佔用面積(footprint)。
發射緩衝器可能在根本上受到儲存於純量暫存器檔案中的標頭的數目限制。在一個實施例中,可容許使用八個純量暫存器檔案標頭。編譯器可能因不在將被標頭重寫的純量暫存器檔案表項中放置持久性資料而使用更多的標頭。具體而言,可被發送至雙倍精度單元的示例性指令FMAD.64僅可使用一個純量暫存器檔案標頭但使用六個向量暫存器檔案表項來提供三個64位元運算元且因此被成對地使用以形成所述運算元,其中每一向量暫存器檔案是32位元表項向量。所消耗的純量暫存器檔案標頭的最大數目可為每一指令集架構指令一個。
發射緩衝器可為遠端單元{超越(transcendentals)、雙倍精度、織構位址計算、...}提供運算元。遠端運算可能需要一或多個運算元,例如分別涉及一或多個運算元的sin(x)或A*B。「動態」源運算元可被複製至發射緩衝器中的新分配的表項中。動態運算元可為可來自於例如純量暫存器、常數暫用暫存器(constant scratch register)、可被移動至發射緩衝器位置(例如用於儲存指令集架構層階立即值)的立即值、或轉發值(即,前一指令的輸出,所述輸出可在未作為中間步驟儲存於向量暫存器檔案中的條件下被直接使用)的運算元;或者本地臨時暫存器。每一此種運算元可消耗發射緩衝器表項。發射緩衝器表項可佔用所述發射緩衝器中的一個{Q, H, S}或兩個{D}向量。本文中所使用的初始值Q、H、S、及D分別代表四分之一寬度、二分之一寬度、單倍寬度、及兩倍寬度且分別表示8位元數量、16位元數量、32位元數量、及64位元數量。
在一個實施例中,使用發射緩衝器的每一指令可消耗充當所述標頭的一個發射緩衝器標頭(四個純量暫存器檔案表項)。若可在遠端單元中計算指令,則向量暫存器檔案源運算元不佔用發射緩衝器,但可自其原始位置被直接存取。發射緩衝器中的此種非表項可能仍消耗四個純量暫存器檔案表項,所述四個純量暫存器檔案表項充當例如執行遮罩等的標頭。若指令藉由發射緩衝器遞送結果,則所述結果可藉由非遠端計算指令來產生,因此源發射緩衝器的使用與目的地發射緩衝器的使用可為正交的(orthogonal)。若指令藉由發射緩衝器遞送結果,則發射緩衝器表項可分配有一個或兩個向量暫存器檔案表項及四個純量暫存器檔案表項。所計算結果可被放置於所分配表項中。純量暫存器檔案可被設定成使得加載儲存單元107可在適宜時間處將資料路由至目標功能單元。
圖5繪示根據本文中所揭露主題的處理元件106與加載儲存單元107之間的示例性記憶體交互作用的序列圖500。在圖5中的501處,指令管線頂端剖析器108a(圖1)對作為例如著色器程式的指令串流的一部分的指令進行剖析,所述著色器程式被執行且作為所述指令的操作的一部分判斷所述指令應被引導至所述系統的僅非失速進程還是應被引導至所述系統的非失速進程及可失速進程二者。對於此例子,指令管線頂端剖析器108a確定指令應被引導至非失速進程與可失速進程二者,因此在502處將所述指令(例如對向量暫存器檔案109進行的寫入)發送至處理元件106以被執行,且在503處將工作次序發送至加載儲存單元107的工作次序漏斗111。工作次序可包含與將藉由指令來操作的發射緩衝器的位置有關的資訊。對於可具有相關聯返回值的任何操作(其可本質上為除儲存操作以外的所有操作),工作次序漏斗111中的工作次序亦可包括資料所將返送至的小指針,即處理元件的向量暫存器檔案109中的資料所將返送至的地方。
所述操作的形成工作次序的部分亦可包括處理元件106的一些功能。可使工作次序輸入至加載儲存單元107的工作次序漏斗111的指令的例子可包括加載,但不限於自記憶體進行的加載、對記憶體進行的儲存、原子記憶體操作、將資料發送至織構座標緩衝器、請求經過濾織構樣本、超越運算、對數函數及反對數函數、倒數、倒數平方根、自屬性內插器進行的讀取、及雙倍精度運算。所述操作中的一些可為圖形專用的(例如,針對織構及屬性內插器的操作),然而應理解可以工作次序漏斗中的工作次序存取可處於非失速處理元件叢集102外部的任何可失速單元103。
舉例而言,慮及指令SIN R3
, R2
,指令SIN R3, R2可用於計算暫存器R2
中的值的正弦並將結果放置於暫存器R3
中。可在例如呈現可失速時序輪廓的共享數學共處理器(即,單元103)中的處理元件106外部實行例如超越運算等操作。指令管線頂端剖析器108a在亦對處理元件106提供指令的同時對SIN運算進行解碼且產生工作次序。處理元件106可負責任意本地處理(例如減小運算元範圍)且亦負責保存可在實行超越運算的向量時由共處理器使用的相關資訊。圖形處理單元架構100的高度平行性質使得對整個執行緒向量給定SIN指令,處理元件藉由所述SIN指令進行操作。因此,處理元件106、加載儲存單元107、及超越單元103(圖中未示出)必須皆能夠在遇到SIN指令的時間處有效地存取特定向量狀態。此包括包含欄位(例如但不限於可用於對哪些執行緒可為現用的或者可能不是現用的進行指示的遮罩)、函數的任意虛擬化指針(例如暫存器重命名)、及任何其他模式(即,精度、格式轉換等)的其他資訊。欄位中的所有者形成大量資料,在加載儲存單元107中的隊列中儲存所述大量資料將為昂貴的且繁複的。相反,留下小的指針來作為指向處理元件106中的向量暫存器檔案109及純量暫存器檔案110的大本地儲存器的參考,在所述大本地儲存器中大量資料被維持於原位。
隨後在504處,加載儲存單元107藉由工作次序漏斗111中的工作次序進行處理,且在505處對處理元件106的向量暫存器檔案109及/或純量暫存器檔案110中的資料進行一或多次存取。一些運算可為一元的且可涉及單一記憶體存取,而例如ATOMIC比較及調換操作等其他操作可涉及三個運算元及對應數目的存取。在一個實施例中,儘管每一運算元的大小可為1024位元(三十二個32位元運算元),然而可以工作次序使用8位元值來參考所述運算元,且因此面積及功耗的降低可為顯著的。
在506處可存取將被加載儲存單元107操作的儲存於向量暫存器檔案109及/或純量暫存器檔案110中的資料且在507處可藉由用於依據指令進行進一步處理的目的地單元103來對所述資料進行處理(例如剖析、格式化及/或路由)。若在507處完成處理,則在508處將相依性清除訊息(dependency clear message)發送至指令管線頂端剖析器108a。若在507處將存取單元103,則在509處確定存取的類型。若所述存取為寫入,則在510處執行所述寫入。若所述存取為讀取,則在511處執行所述讀取,在512處將所述讀取格式化以在513處儲存於向量暫存器檔案109中。
作為另一實例,將在將向織構座標緩衝器寫入資料的處理元件106中運行的示例性著色器程式視作準備存取織構映射(其可為電腦圖形中的標準操作)的一部分。織構單元103可為可在各種處理引擎之間共享的主要子系統且可失速且因此可呈現不可知延遲。織構單元可因此作為相對於非失速處理元件106而言的外部單元而藉由加載儲存單元107來存取。存取織構座標緩衝器可涉及以下序列。指令管線頂端剖析器108a可對織構座標緩衝器的參考進行解碼,對處理元件106提供發射緩衝器位址,且產生將被儲存於加載儲存單元107的工作次序漏斗111中的工作次序。處理元件106計算將被路由至織構單元103的資料且將該些資料儲存於與由指令管線頂端剖析器108a提供的發射緩衝器位址對應的暫存器中。加載儲存單元107接收並處理工作次序,且對向量暫存器檔案109中的發射緩衝器作出讀取請求以使資料寫入至織構單元103。織構單元103接收資料並將所述資料寫入至織構單元103的記憶體。
在一個實施例中,可使用指令中的特定TCBUFn
目的地欄位將向織構座標緩衝器中進行的寫入編碼於著色器程式中。舉例而言,示例性指令FMUL TCBUF R1, R2可進行操作以將加載初始化至處於編譯器的軟體控制下的織構緩衝器TCBUF。在運行時間處,可對指令進行剖析且可檢測特定TCBUFn
目的地欄位的存在。因應於此,指令管線頂端剖析器108a可確定應以處理元件106的向量暫存器檔案109內的實際位置(即,發射緩衝器300中的下一可用空間)替換指令中的織構座標緩衝器。另外,可將與此位置對應的工作次序輸入至加載儲存單元107的工作次序漏斗111。處理元件106可接收經修改指令,例如FMUL Remit
R1, R2,其中Remit
可為藉由簡單示例性計算Remit
= WARPid.EMITbase[7:0]而增大的值。另外,指令管線頂端剖析器108a亦可為處理元件106提供指示可保存執行遮罩的一對訊號及用以在純量暫存器檔案110中保存所述執行遮罩的位址。指令管線頂端剖析器108可接著產生加載儲存單元107的工作次序,所述工作次序可包含用於將資料移動至織構座標緩衝器的運算碼並對所述織構座標緩衝器供應位址。
對於此例,在工作次序處理期間,一旦加載儲存單元107已存取織構單元103(即,織構單元103在任意給定時刻可為或可不為可用的且可呈現變化的延遲及通量),則加載儲存單元107可發送其中加載儲存單元107提供包含三十二個32位元fp32字或六十四個16位元fp16半字的1024位元的資料(如所述一個實施例中的256個位元/循環)的訊息;以及可被織構單元用於將處理限定於僅現用執行緒的執行遮罩位元,此可用於達成功能正確性及藉由不更新非現用執行緒的織構座標緩衝器值來節省電力。
應注意,自處理元件的角度來看,此特定示例性序列是唯寫操作(write-only operation)。著色器程式已被寫入至織構座標緩衝器中且有時被寫入於處理元件106內的非失速序列外部,此操作完成。隨後,當著色器程式可自織構單元進行讀取時,可產生新工作次序,所述新工作次序可請求所述讀取且向向量暫存器檔案109中提供返回資料所被寫入至的位址。
熟習此項技術者將認識到,可在各種各樣的應用中對本文中所闡述的新穎概念作出潤飾及變化。因此,所主張主題的範圍不應僅限於以上所論述的任何具體示例性教示內容,而是由以下申請專利範圍所限定。
100‧‧‧系統/圖形處理單元系統
101‧‧‧控制器單元
102‧‧‧處理元件叢集
103‧‧‧單元/其他單元/可失速單元/超越單元/目的地單元/織構單元
104‧‧‧通訊構架
105‧‧‧工作向量構造器
106‧‧‧處理元件/非失速處理元件
107‧‧‧加載儲存單元
108‧‧‧定序器
108a‧‧‧指令管線頂端剖析器
109‧‧‧向量暫存器檔案
110‧‧‧純量暫存器檔案
111‧‧‧工作次序漏斗
200、301a、301b、301c‧‧‧經構
201‧‧‧執行緒
300、400‧‧‧發射緩衝器
401‧‧‧欄位
500‧‧‧序列圖
501、502、503、504、505、506、507、508、509、510、511、512、513‧‧‧步驟
R0、R1‧‧‧暫存器
在以下部分中,將參照圖中所示的示例性實施例來闡述本文中所揭露主題的態樣,其中: 圖1繪示根據本文中所揭露主題的圖形處理單元系統的示例性實施例。 圖2繪示經構(warp)的示例性實施例,所述經構包括被組織成在空間維度中有八個執行緒且在時間維度中有四個執行緒的執行緒的單指令多執行緒(single-instruction-multiple-thread,SIMT)群組。 圖3繪示根據本文中所揭露主題的發射緩衝器(emit buffer)的示例性實施例。 圖4繪示當確定示例性發射緩衝器400將被用作對與TCBUF有關的指令進行的處理的一部分時指令管線頂端(top of the instruction pipeline,TotIP)剖析器可檢驗到的示例性TCBUF指令的示例性欄位(field)。 圖5繪示根據本文中所揭露主題的處理元件與加載儲存單元之間的示例性記憶體交互作用的序列圖。
Claims (25)
- 一種圖形處理單元,包括: 暫存器檔案記憶體,包括多個暫存器; 處理元件,耦合至所述暫存器檔案記憶體,所述處理元件處理圖形應用程式的執行緒向量的至少一個執行緒,所述執行緒向量中的每一執行緒將以非失速方式被處理,且所述處理元件將藉由處理所述至少一個執行緒而產生的且將被路由至處於所述處理元件外部的第一可失速邏輯單元的資料儲存於所述暫存器檔案記憶體中的所述多個暫存器的第一預定集合中;以及 加載儲存單元,耦合至所述暫存器檔案記憶體,所述加載儲存單元存取所述多個暫存器的所述第一預定集合中的所述資料且將所述資料路由至所述第一可失速邏輯單元。
- 如申請專利範圍第1項所述的圖形處理單元,更包括工作次序漏斗記憶體,所述工作次序漏斗記憶體耦合至所述加載儲存單元,所述工作次序漏斗記憶體能夠儲存與所述處理單元處理所述圖形應用程式的所述執行緒向量的所述至少一個執行緒相關聯的至少一個工作次序訊息,所述至少一個工作次序訊息包括儲存有將被路由至所述第一可失速邏輯單元的所述資料的所述多個暫存器中的所述第一預定集合的第一位置。
- 如申請專利範圍第2項所述的圖形處理單元,其中所述至少一個工作次序訊息更包括所述暫存器檔案記憶體中的所述多個暫存器的第二預定集合的第二位置,所述第二位置指示將在何處儲存所述第一可失速邏輯單元的結果。
- 如申請專利範圍第2項所述的圖形處理單元,更包括指令管線剖析器,若所述圖形應用程式的所述執行緒向量的所述至少一個執行緒的指令包括將資料路由至所述第一可失速邏輯單元的操作,則所述指令管線剖析器產生所述至少一個工作次序訊息。
- 如申請專利範圍第1項所述的圖形處理單元,其中所述暫存器檔案記憶體包括向量暫存器檔案記憶體及純量暫存器檔案記憶體。
- 如申請專利範圍第1項所述的圖形處理單元,其中所述處理元件更處理所述圖形應用程式的多個執行緒向量中的每一者的至少一個執行緒,所述多個執行緒向量中的每一執行緒向量中的每一執行緒將以非失速方式被處理。
- 如申請專利範圍第1項所述的圖形處理單元,更包括多個暫存器檔案記憶體、多個處理元件及多個加載儲存單元, 其中所述多個處理元件中的每一者耦合至所述多個暫存器檔案記憶體中對應的暫存器檔案記憶體,所述多個處理元件中的每一者處理所述圖形應用程式的執行緒向量中的至少一個執行緒,所述執行緒向量中的每一執行緒將以非失速方式被處理,且所述多個處理元件中的每一者將資料儲存於與所述處理元件對應的所述暫存器檔案記憶體中的所述多個暫存器的第二預定集合中,將被儲存的所述資料是藉由所述處理元件處理所述執行緒向量的所述至少一個執行緒而產生且將被路由至處於所述處理元件外部的第二可失速邏輯單元;且 其中所述加載儲存單元中的每一者耦合至所述暫存器檔案記憶體中的至少一個暫存器檔案記憶體,所述加載儲存單元中的每一者存取所述加載儲存單元所耦合至的所述暫存器檔案記憶體中的每一者的所述多個暫存器的所述第二預定集合中的所述資料並將所述資料路由至所述第二可失速邏輯單元。
- 如申請專利範圍第7項所述的圖形處理單元,其中所述第一可失速邏輯單元或所述第二可失速邏輯單元包括織構單元、光柵化單元、影像緩衝單元、超越運算單元或數學共處理器。
- 一種圖形處理單元,包括: 處理元件,處理圖形應用程式的執行緒向量的至少一個執行緒,所述執行緒向量中的每一執行緒將以非失速方式被處理; 指令管線剖析器,若所述圖形應用程式的執行緒向量的所述至少一個執行緒的指令包括將資料路由至處於所述處理元件外部的第一可失速邏輯單元的操作,則所述指令管線剖析器產生工作次序訊息,所述工作次序訊息包括用以儲存由所述處理元件處理的將被路由至所述第一可失速邏輯單元的資料的第一位置;以及 加載儲存單元,包括能夠儲存所述工作次序訊息的工作次序漏斗記憶體,所述加載儲存單元接收所述工作次序漏斗記憶體中的所述工作次序訊息並將所述第一位置處的所述資料路由至所述第一可失速邏輯單元。
- 如申請專利範圍第9項所述的圖形處理單元,其中所述處理元件更處理所述圖形應用程式的多個執行緒向量中的每一者的至少一個執行緒,所述多個執行緒向量中的每一者中的每一執行緒將以非失速方式被處理。
- 如申請專利範圍第9項所述的圖形處理單元,其中所述處理元件包括暫存器檔案記憶體,所述暫存器檔案記憶體包括多個暫存器, 其中儲存所述資料的所述第一位置包括所述暫存器檔案記憶體中的所述多個暫存器的第一集合。
- 如申請專利範圍第11項所述的圖形處理單元,其中所述工作次序訊息更包括所述暫存器檔案記憶體中的所述多個暫存器的第二預定集合的第二位置,所述第二位置指示將在何處儲存所述第一可失速邏輯單元的結果。
- 如申請專利範圍第11項所述的圖形處理單元,其中所述暫存器檔案記憶體包括向量暫存器檔案記憶體及純量暫存器檔案記憶體。
- 如申請專利範圍第11項所述的圖形處理單元,更包括多個處理元件,所述多個處理元件中的每一者耦合至對應的暫存器檔案記憶體,所述多個處理元件中的每一處理元件處理所述圖形應用程式的執行緒向量中的至少一個執行緒,所述執行緒向量中的每一執行緒將以非失速方式被處理,且所述多個處理元件中的每一者將資料儲存於與所述處理元件對應的所述暫存器檔案記憶體中的所述多個暫存器的對應的第一預定集合中,將被儲存的所述資料是藉由所述處理元件處理所述執行緒向量的所述至少一個執行緒而產生且將被路由至處於所述處理元件外部的第二可失速邏輯單元;以及 多個加載儲存單元,所述加載儲存單元中的每一者耦合至至少一個暫存器檔案記憶體,所述加載儲存單元中的每一者包括能夠儲存工作次序訊息的工作次序漏斗記憶體,且所述加載儲存單元中的每一者處理所述工作次序漏斗記憶體中的工作次序訊息並將所述多個暫存器的對應的所述第一預定集合中的所述資料路由至所述第二可失速邏輯單元。
- 如申請專利範圍第14項所述的圖形處理單元,其中所述第一可失速邏輯單元或所述第二可失速邏輯單元包括織構單元、光柵化單元、影像緩衝單元、超越運算單元或數學共處理器。
- 一種處理圖形應用程式的方法,所述方法包括: 在處理元件中藉由處理所述圖形應用程式的執行緒向量的至少一個執行緒而產生資料,所述執行緒向量的每一執行緒將在非失速進程中被處理,且所述資料將被路由至處於所述非失速進程外部的可失速進程; 將所述資料儲存於暫存器檔案記憶體中的多個暫存器的第一預定集合中,所述暫存器檔案記憶體耦合至所述處理元件; 由耦合至所述暫存器檔案記憶體的加載儲存單元存取被儲存於所述多個暫存器的所述第一預定集合中的所述資料;以及 由所述加載儲存單元將所存取的所述資料路由至所述可失速進程。
- 如申請專利範圍第16項所述的方法,更包括:若所述圖形應用程式的所述向量的所述至少一個執行緒的指令包括將資料路由至所述可失速進程的操作,則由指令管線剖析器產生工作次序訊息,所述工作次序訊息包括用以儲存將被路由至所述可失速進程的所述資料的所述多個暫存器的所述第一預定集合的第一位置。
- 如申請專利範圍第17項所述的方法,其中所述工作次序訊息更包括所述暫存器檔案記憶體中的所述多個暫存器的第二預定集合的第二位置,所述第二位置指示將在何處儲存所述可失速進程的結果。
- 如申請專利範圍第16項所述的方法,其中所述暫存器檔案記憶體包括向量暫存器檔案記憶體及純量暫存器檔案記憶體。
- 如申請專利範圍第16項所述的方法,其中處理所述圖形應用程式的執行緒向量的所述至少一個執行緒包括:處理所述圖形應用程式的多個執行緒向量中的每一者的至少一個執行緒,所述多個執行緒向量中的每一者中的每一執行緒將以非失速方式被處理。
- 如申請專利範圍第16項所述的方法,其中所述可失速進程包括織構單元、光柵化單元、影像緩衝單元、超越運算單元或數學共處理器的操作。
- 一種處理圖形應用程式的方法,所述方法包括: 若所述圖形應用程式的指令包括將資料路由至可失速進程的操作,則在指令管線剖析器處產生工作次序訊息,所述圖形應用程式包括至少一個執行緒向量,所述至少一個執行緒向量中的每一執行緒將在非失速進程中被處理,所述工作次序訊息包括用以儲存藉由執行所述指令而產生的資料的第一位置; 將所述工作次序訊息儲存於加載儲存單元的工作次序漏斗記憶體中; 在處理元件中藉由在所述非失速進程中對所述圖形應用程式的執行緒向量的至少一個執行緒執行所述指令而產生資料,所產生的所述資料將被路由至失速進程; 將所述資料儲存於暫存器檔案記憶體中的多個暫存器的第一預定集合中,所述多個暫存器的所述第一預定集合對應於所述第一位置,且所述暫存器檔案記憶體耦合至所述處理元件; 所述加載儲存單元存取被儲存於所述多個暫存器的所述第一預定集合中的所述資料;以及 所述加載儲存單元將所存取的所述資料路由至所述失速進程。
- 如申請專利範圍第22項所述的方法,其中所述工作次序訊息更包括所述暫存器檔案記憶體中的所述多個暫存器的第二預定集合的第二位置,所述第二位置指示將在何處儲存所述可失速進程的結果。
- 如申請專利範圍第22項所述的方法,其中所述圖形應用程式更包括多個執行緒向量,所述多個執行緒向量中的每一者中的每一執行緒將在所述非失速進程中被處理。
- 如申請專利範圍第22項所述的方法,其中所述可失速進程包括織構單元、光柵化單元、影像緩衝單元、超越運算單元或數學共處理器的操作。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762486957P | 2017-04-18 | 2017-04-18 | |
US62/486,957 | 2017-04-18 | ||
US15/633,746 US10360034B2 (en) | 2017-04-18 | 2017-06-26 | System and method for maintaining data in a low-power structure |
US15/633,746 | 2017-06-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201903602A true TW201903602A (zh) | 2019-01-16 |
TWI764997B TWI764997B (zh) | 2022-05-21 |
Family
ID=63790035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107107887A TWI764997B (zh) | 2017-04-18 | 2018-03-08 | 圖形處理單元及處理圖形應用程式的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10360034B2 (zh) |
KR (1) | KR102502731B1 (zh) |
CN (1) | CN108734623B (zh) |
TW (1) | TWI764997B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI819498B (zh) * | 2022-02-18 | 2023-10-21 | 瑞昱半導體股份有限公司 | 記憶體共享電子電路系統以及能使用主機記憶體的外部裝置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10747711B2 (en) * | 2018-03-20 | 2020-08-18 | Arizona Board Of Regents On Behalf Of Northern Arizona University | Dynamic hybridized positional notation instruction set computer architecture to enhance security |
US11120603B2 (en) * | 2019-06-18 | 2021-09-14 | Samsung Electronics Co., Ltd. | Heavy-weight/light-weight GPU shader core pair architecture |
CN111124994B (zh) * | 2019-11-29 | 2022-11-11 | 苏州浪潮智能科技有限公司 | 一种数据传输方法、装置、gpu及可读存储介质 |
KR20210092467A (ko) * | 2020-01-16 | 2021-07-26 | 삼성전자주식회사 | 로컬 프로세서와 글로벌 프로세서를 포함하는 메모리 다이, 메모리 장치, 및 전자 장치 |
CN112199119B (zh) * | 2020-10-21 | 2022-02-01 | 上海壁仞智能科技有限公司 | 向量运算装置 |
US12008369B1 (en) | 2021-08-31 | 2024-06-11 | Apple Inc. | Load instruction fusion |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2216307B (en) | 1988-03-01 | 1992-08-26 | Ardent Computer Corp | Vector register file |
US5623650A (en) * | 1989-12-29 | 1997-04-22 | Cray Research, Inc. | Method of processing a sequence of conditional vector IF statements |
WO1997013201A1 (en) | 1995-10-06 | 1997-04-10 | Advanced Micro Devices, Inc. | Unified multi-function operation scheduler for out-of-order execution in a superscalar processor |
US6895452B1 (en) | 1997-06-04 | 2005-05-17 | Marger Johnson & Mccollom, P.C. | Tightly coupled and scalable memory and execution unit architecture |
US6587941B1 (en) * | 2000-02-04 | 2003-07-01 | International Business Machines Corporation | Processor with improved history file mechanism for restoring processor state after an exception |
US6922414B1 (en) | 2000-08-21 | 2005-07-26 | Hewlett-Packard Development Company, L.P. | Apparatus and method for dynamic command queue depth adjustment for storage area network nodes |
US7251721B1 (en) | 2001-11-05 | 2007-07-31 | Verisilicon Holdings (Cayman Islands) Co. Ltd. | Conditional link pointer register sets marking the beginning and end of a conditional instruction block where each set corresponds to a single stage of a pipeline that moves link pointers through each corresponding register of said register sets as instructions move through the pipeline |
US7152152B2 (en) | 2004-01-22 | 2006-12-19 | International Business Machines Corporation | Method of avoiding flush due to store queue full in a high frequency system with a stall mechanism and no reject mechanism |
US7401206B2 (en) * | 2004-06-30 | 2008-07-15 | Sun Microsystems, Inc. | Apparatus and method for fine-grained multithreading in a multipipelined processor core |
US7657883B2 (en) * | 2005-02-04 | 2010-02-02 | Mips Technologies, Inc. | Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor |
US20080252652A1 (en) * | 2007-04-13 | 2008-10-16 | Guofang Jiao | Programmable graphics processing element |
US9250899B2 (en) * | 2007-06-13 | 2016-02-02 | International Business Machines Corporation | Method and apparatus for spatial register partitioning with a multi-bit cell register file |
US8174534B2 (en) * | 2007-12-06 | 2012-05-08 | Via Technologies, Inc. | Shader processing systems and methods |
US20090164758A1 (en) | 2007-12-20 | 2009-06-25 | Haertel Michael J | System and Method for Performing Locked Operations |
US8248422B2 (en) * | 2008-01-18 | 2012-08-21 | International Business Machines Corporation | Efficient texture processing of pixel groups with SIMD execution unit |
US7904700B2 (en) * | 2008-03-10 | 2011-03-08 | International Business Machines Corporation | Processing unit incorporating special purpose register for use with instruction-based persistent vector multiplexer control |
US9513905B2 (en) | 2008-03-28 | 2016-12-06 | Intel Corporation | Vector instructions to enable efficient synchronization and parallel reduction operations |
GB2470780B (en) | 2009-06-05 | 2014-03-26 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing a predetermined rearrangement operation |
US8533438B2 (en) | 2009-08-12 | 2013-09-10 | Via Technologies, Inc. | Store-to-load forwarding based on load/store address computation source information comparisons |
US8514235B2 (en) * | 2010-04-21 | 2013-08-20 | Via Technologies, Inc. | System and method for managing the computation of graphics shading operations |
US9069664B2 (en) * | 2010-09-24 | 2015-06-30 | Nvidia Corporation | Unified streaming multiprocessor memory |
US8990602B2 (en) * | 2010-12-21 | 2015-03-24 | Intel Corporation | Apparatus, method, and system for early deep sleep state exit of a processing element |
WO2012142510A1 (en) * | 2011-04-15 | 2012-10-18 | Skyfire Labs, Inc. | Real-time video detector |
KR20130051821A (ko) | 2011-11-10 | 2013-05-21 | 삼성전자주식회사 | 인터럽트 속도 지연이 개선된 코어 시스템 및 이의 벡터 레지스터 파일 데이터 전송방법 |
US9135077B2 (en) | 2012-03-16 | 2015-09-15 | Advanced Micro Devices, Inc. | GPU compute optimization via wavefront reforming |
US20150074353A1 (en) * | 2013-09-06 | 2015-03-12 | Futurewei Technologies, Inc. | System and Method for an Asynchronous Processor with Multiple Threading |
US9471307B2 (en) * | 2014-01-03 | 2016-10-18 | Nvidia Corporation | System and processor that include an implementation of decoupled pipelines |
US20160179542A1 (en) * | 2014-12-23 | 2016-06-23 | Patrick P. Lai | Instruction and logic to perform a fused single cycle increment-compare-jump |
US9817664B2 (en) * | 2015-02-19 | 2017-11-14 | Apple Inc. | Register caching techniques for thread switches |
US9804666B2 (en) * | 2015-05-26 | 2017-10-31 | Samsung Electronics Co., Ltd. | Warp clustering |
US10001822B2 (en) * | 2015-09-22 | 2018-06-19 | Intel Corporation | Integrating a power arbiter in a processor |
US10043232B1 (en) * | 2017-04-09 | 2018-08-07 | Intel Corporation | Compute cluster preemption within a general-purpose graphics processing unit |
-
2017
- 2017-06-26 US US15/633,746 patent/US10360034B2/en active Active
-
2018
- 2018-02-26 KR KR1020180023041A patent/KR102502731B1/ko active IP Right Grant
- 2018-03-08 TW TW107107887A patent/TWI764997B/zh active
- 2018-04-03 CN CN201810293752.XA patent/CN108734623B/zh active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI819498B (zh) * | 2022-02-18 | 2023-10-21 | 瑞昱半導體股份有限公司 | 記憶體共享電子電路系統以及能使用主機記憶體的外部裝置 |
Also Published As
Publication number | Publication date |
---|---|
TWI764997B (zh) | 2022-05-21 |
KR102502731B1 (ko) | 2023-02-22 |
US20180300131A1 (en) | 2018-10-18 |
CN108734623B (zh) | 2023-11-28 |
US10360034B2 (en) | 2019-07-23 |
KR20180117031A (ko) | 2018-10-26 |
CN108734623A (zh) | 2018-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11113057B2 (en) | Streaming engine with cache-like stream data storage and lifetime tracking | |
TWI764997B (zh) | 圖形處理單元及處理圖形應用程式的方法 | |
US11099933B2 (en) | Streaming engine with error detection, correction and restart | |
US11573847B2 (en) | Streaming engine with deferred exception reporting | |
US10007527B2 (en) | Uniform load processing for parallel thread sub-sets | |
US10255228B2 (en) | System and method for performing shaped memory access operations | |
US20130159628A1 (en) | Methods and apparatus for source operand collector caching | |
US20130117541A1 (en) | Speculative execution and rollback | |
US11068164B2 (en) | Streaming engine with fetch ahead hysteresis | |
US11709778B2 (en) | Streaming engine with early and late address and loop count registers to track architectural state | |
US20130166877A1 (en) | Shaped register file reads | |
US12045614B2 (en) | Streaming engine with cache-like stream data storage and lifetime tracking |