TW201434011A - 曲面細分及幾何著色器的功率效率屬性處理 - Google Patents

曲面細分及幾何著色器的功率效率屬性處理 Download PDF

Info

Publication number
TW201434011A
TW201434011A TW102147466A TW102147466A TW201434011A TW 201434011 A TW201434011 A TW 201434011A TW 102147466 A TW102147466 A TW 102147466A TW 102147466 A TW102147466 A TW 102147466A TW 201434011 A TW201434011 A TW 201434011A
Authority
TW
Taiwan
Prior art keywords
processing
parameters
memory
vertex
buffers
Prior art date
Application number
TW102147466A
Other languages
English (en)
Other versions
TWI633516B (zh
Inventor
Ziyad S Hakura
Dale L Kirkland
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of TW201434011A publication Critical patent/TW201434011A/zh
Application granted granted Critical
Publication of TWI633516B publication Critical patent/TWI633516B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本發明揭示圖形物件的屬性在複數個圖形處理管線內處理。一串流多重處理器(SM,Streaming Multiprocessor)取得有關來自第一組緩衝區的一組圖形物件之第一組參數,該串流多重處理器根據處理的第一階段,在該第一組參數上執行第一組操作,以產生儲存在第二組緩衝區內的第二組參數。該串流多重處理器根據處理的一第二階段,在該第二組參數上執行第二組操作,以產生儲存在一第三組緩衝區內的一第三組參數。揭示技術的一優點在於,工作是從圖形處理的一第一階段重新分配至一第二階段,不必將該等屬性複製到該快取或系統記憶體及從此擷取該等屬性,導致降低功率消耗。

Description

曲面細分及幾何著色器的功率效率屬性處理
本發明通常有關三維(3D)圖形處理,尤其係,有關曲面細分及幾何著色器的功率效率屬性處理。
通常使用具有一或多個多重階段圖形處理管線的圖形處理單元(GPU,Graphics Processing Unit),以著色電腦所產生包含2D和3D圖形物件的影像。這種圖形管線包括許多可程式與固定式功能階段。可程式階段包括許多處理單元,執行著色程式以著色圖形物件,及產生有關圖形物件伴的許多視覺效果。
為了有效率處理,圖形物件通常分配在多重階段圖形處理管線之間,使得每一圖形處理管線具有大約相同工作負載量。當在該等圖形處理管線內處理該等圖形物件,在該等圖形處理管線之一或多者內可能有相當程度的工作負載膨脹,例如:圖形物件的表面可在已知為曲面細分的處理當中,區分成一些更小的圖形物件,例如三角形。這些由曲面細分產生的更小圖形物件會因為圖形物件而有極大不同。因此,該等圖形處理管線的工作負載應在曲面細分期間會變成不平衡,即使在曲面細分之前該等管線的工作負載已經平衡。具有相對低工作負載的圖形處理管線應早期完成處理,這種圖形處理管線應該進入待命狀態,等待具有相對高工作負載的圖形處理管線完成處理。這種圖形處理管線之間的不平衡工作負載會降低圖形處理單元的效率。
這個問題的一可能解決方案是要在該曲面細分階段上,重新平衡該等圖形處理管線之間的工作負載。然後在該重新平衡之後而非該重新平衡之前,可由不同圖形處理管線處理許多圖形物件的處理。重新平衡 之前,該等圖形處理管線可從本機記憶體將該等圖形物件的屬性複製到快取或系統記憶體。重新平衡之後,該等圖形處理管線根據該重新平衡的工作負載指派,從該快取或系統記憶體擷取該等圖形物件的屬性,且將該等屬性複製到本機記憶體。這種方式的一缺點為在該本機記憶體與該快取或系統記憶體之間傳輸屬性時會消耗電力。在低功率應用當中,例如當該圖形處理單元關聯於一行動裝置時,將資料寫入及讀取自快取或系統記憶體時消耗的電力會降低該行動裝置的電池壽命,因此減少該裝置的可用操作時間。
如先前所例示,業界需要一種用於將一圖形管線內的工作負載重新平衡之改良式技術。
【簡述】
本發明之一具體實施例揭示一種在複數個圖形處理管線內處理圖形物件的屬性之方法。該方法包括擷取有關來自一第一組緩衝區的一組圖形物件之第一組參數,該方法更包括根據處理的一第一階段在該第一組參數上執行第一組操作,以產生第二組參數,且將該第二組參數儲存在第二組緩衝區內。該方法更包括根據處理的第二階段在該第二組參數上執行第二組操作,以產生第三組參數,且將該第三組參數儲存在第三組緩衝區內。
其他具體實施例包括但不受限於:一電腦可讀取媒體,其包含允許一處理單元實施所揭示方法之一或多個態樣的指令。本發明的其他具體實施例包括但不受限於一子系統,其包括:一處理單元,構成實施該等揭示方法之一或多個態樣,及一計算裝置,構成實施該等揭示方法的一或更多態樣。
揭示技術的一項優點在於,工作是從圖形處理的第一階段至圖形處理的第二階段之重新分配的單一串流多重處理器系統,而不必將該等圖形物件的屬性複製到該快取或系統記憶體,且稍後從這些記憶體之一者擷取該等屬性。將屬性複製到遠端記憶體,例如快取或系統記憶體,及從此擷取屬性,通常牽涉將多個非晶片上記憶體、控制器及多層記憶體階層內的介面組件通電。複製到遠端記憶體及從其擷取也可牽涉到,將某些 組件從低耗電狀態轉換成高耗電狀態。存取本機共用記憶體通常不牽涉到通電或改變非晶片上組件的功率狀態。因此,揭示的技術降低整體功率消耗,且用來延長行動裝置內電池充電循環之間的操作時間。
100‧‧‧電腦系統
102‧‧‧中央處理單元
103‧‧‧裝置驅動程式
104‧‧‧系統記憶體
105‧‧‧記憶體橋接器
106‧‧‧通訊路徑
107‧‧‧輸入/輸出橋接器
108‧‧‧使用者輸入裝置
110‧‧‧顯示裝置
112‧‧‧平行處理子系統
113‧‧‧第二通訊路徑
114‧‧‧系統磁碟
116‧‧‧開關
118‧‧‧網路配接器
120-121‧‧‧外接卡
202‧‧‧平行處理單元
204‧‧‧平行處理記憶體
205‧‧‧輸入/輸出橋接器
206‧‧‧主介面
207‧‧‧任務/工作單元
208‧‧‧一般處理叢集
210‧‧‧記憶體交換開關單元
212‧‧‧前端
214‧‧‧記憶體介面
215‧‧‧劃分單元
220‧‧‧動態隨機存取記憶體
230‧‧‧處理叢集陣列
302‧‧‧執行單元
303‧‧‧載入儲存單元
304‧‧‧本機暫存檔
305‧‧‧管線管理員
306‧‧‧共用記憶體
310‧‧‧串流多重處理器
312‧‧‧線程束排程器與指令單元
320‧‧‧L1快取
328‧‧‧記憶體管理單元
335‧‧‧第一點五層快取
350‧‧‧L2快取
352‧‧‧統一位址映射單元
355‧‧‧訊框緩衝區動態隨機存取記憶體介面
360‧‧‧光柵操作單元
370‧‧‧指令L1快取
380‧‧‧記憶體與快取互連
400‧‧‧圖形處理管線
410‧‧‧圖元分配器與頂點屬性擷取
415‧‧‧頂點處理單元
420‧‧‧曲面細分初始化處理單元
425‧‧‧任務產生單元
430‧‧‧任務分配器
435‧‧‧拓撲產生單元
440‧‧‧曲面細分處理單元
445‧‧‧幾何處理單元
450‧‧‧視埠縮放、消隱與裁切單元
455‧‧‧光柵器
460‧‧‧片段處理單元
465‧‧‧光柵操作單元
500‧‧‧分配映射
510‧‧‧α階段期間的分配
520‧‧‧頂點著色器輸入
525‧‧‧佇列
530‧‧‧頂點著色器輸出
540‧‧‧β階段期間的分配
550‧‧‧幾何著色器輸出
600‧‧‧分配映射
610‧‧‧α階段期間的分配
620‧‧‧頂點著色器輸入與頂點著色器輸出
630‧‧‧曲面細分初始化著色器輸出
640‧‧‧β階段期間的分配
650‧‧‧曲面細分著色器輸出與幾何著色器輸出
700‧‧‧方法
如此上面簡單彙總可詳細了解本發明上述特色的方式,本發明的更特定說明則參照具體實施例,某些具體實施例說明於附圖。不過吾人應該注意,附圖只說明本發明的典型具體實施例,因此並不對本發明的範疇產生限制,本發明承認其他等效具體實施例。
第一圖為例示構成實施本發明之一或多個態樣之電腦系統的方塊圖;第二圖為根據本發明之一具體實施例之用於第一圖中該電腦系統之一平行處理子系統的方塊圖;第三A圖為根據本發明之一具體實施例之第二圖中平行處理單元之一者內之一劃分單元的方塊圖;第三B圖為根據本發明之一具體實施例之第二圖中一般處理叢集(GPC,General Processing Cluster)內的一串流多重處理器(SM,Streaming Multiprocessor)之一部分的方塊圖;第四圖為根據本發明之一具體實施例之可構成第二圖中平行處理單元之一或多者以實施圖形處理管線的概念圖;第五圖例示根據本發明之一具體實施例之第三B圖的共用記憶體之分配映射;第六圖根據本發明之另一具體實施例,例示第三B圖的共用記憶體之分配映射;及第七A圖至第七B圖揭示根據本發明之一具體實施例之一種用於重新分配已經由一圖形處理單元處理過的圖形物件的屬性之方法步驟的流程圖。
在以下描述中,揭示許多特定細節以對本發明有更徹底之理解。但是,精通技術人士應瞭解,在沒有一或多個該等特定細節之下還是 可實施本發明。
系統概觀
第一圖為例示構成實施本發明之一或多個態樣的電腦系統100之方塊圖。電腦系統100包括一中央處理單元(CPU,Central Processing Unit)102,及通過一互連路徑通訊的一系統記憶體104,其中該路徑可包括一記憶體橋接器105。例如可為北橋晶片的記憶體橋接器105透過匯流排或其他通訊路徑106(例如超傳輸連結),連接一I/O(輸入/輸出)橋接器107。例如可為南僑晶片的輸入/輸出橋接器107接收來自一或多個使用者輸入裝置108(例如鍵盤、滑鼠)的使用者輸入,並透過通訊路徑106和記憶體橋接器105將該輸入轉送至中央處理單元102。一平行處理子系統112透過匯流排或第二通訊路徑113(例如週邊組件互連(PCI)Express、加速圖形連接埠(Accelerated Graphics Port)或HyperTransport連結)連接記憶體橋接器105;在一具體實施例中,平行處理子系統112為傳遞畫素給顯示裝置110(任何傳統陰極射線管、液晶監視器、發光二極體顯示器等等)的圖形子系統。系統磁碟114也連接I/O橋接器107,且可構成儲存內容與應用程式以及資料,供中央處理單元102及平行處理子系統112使用。系統磁碟114提供非揮發性儲存裝置給應用程式與資料,且可包括固定式或可移除式硬碟機、快閃記憶體裝置及CD-ROM(小型光碟唯讀記憶體)、DVD-ROM(數位多用途光碟-ROM)、藍光、HD-DVD(高傳真DVD)或其他詞性、光學或固態儲存裝置。
一開關116提供輸入/輸出橋接器107與其他組件,像是網路配接器118及許多外接卡120和121之間的連接。其他組件(未明確顯示),包括萬用序列匯流排(USB,Universal Serial Bus)或其他連接埠連接、小型光碟(CD)光碟機、數位多用途光碟(DVD)光碟機、檔案記錄裝置等等,也可連接輸入/輸出橋接器107。第一圖顯示的許多通訊路徑,包括特別指名的通訊路徑106和113,都可使用任何合適的協定來實施,例如PCI Express、AGP(加速圖形連接埠)、HyperTransport或任何其他匯流排或點對點通訊協定,以及不同組件之間的連接都可使用業界內已知的不同協定。
在一具體實施例中,平行處理子系統112併入將圖形與視訊 處理最佳化的電路,包括例如視訊輸出電路,且構成一圖形處理單元(GPU,Graphics Processing Unit)。在另一具體實施例中,平行處理子系統112併入將一般用途處理最佳化的電路,同時保留底層計算架構,本說明書內有更詳細描述。尚且在另一具體實施例中,平行處理子系統112可在單一子系統內合併一或多個其他系統元件,例如結合記憶體橋接器105、中央處理單元102和輸入/輸出橋接器107以形成一晶片上系統(SoC,System on Chip)。
應瞭解,本說明書顯示的該系統為例示,所以可進行改變與修改。包括橋接器的數量與配置、中央處理單元102的數量及平行處理子系統112的數量這類連接拓撲可依照需求修改。例如在某些具體實施例中,系統記憶體104直接連接中央處理單元102,而不是透過橋接器,且其他裝置透過記憶體橋接器105及中央處理單元102與系統記憶體104通訊。在其他替代拓撲中,平行處理子系統112連接輸入/輸出橋接器107或直接連接中央處理單元102,而不是連接記憶體橋接器105。在仍舊其他具體實施例中,輸入/輸出橋接器107和記憶體橋接器105可整合成為單一晶片,替代現有的一或多個分散裝置。大型組件可包括兩或多個中央處理單元102及兩或多個平行處理子系統112。本說明書顯示的該等特定組件為選擇性;例如可支援任何數量的外接卡或周邊裝置。在某些具體實施例中,省略開關116,且網路配接器118和外接卡120、121直接連接輸入/輸出橋接器107。
第二圖例示根據本發明之一具體實施例之一平行處理子系統112。如所示,平行處理子系統112包括一或多個平行處理單元(PPU,Parallel Processing Unit)202,每一者耦接至本機平行處理(PP,Parallel Processing)記憶體204。一般來說,平行處理子系統包括數量為U的平行處理單元,其中U1。(本說明書多個類似物體的實例都用參考號碼標示出該物體,且括號標示所需的實例。)平行處理單元202及平行處理記憶體204可使用一或多個積體電路裝置來實施,例如可程式處理器、特殊應用積體電路(ASIC,Application Specific Integrated Circuit)或記憶體裝置,或以任何其他技術可行方式。
請即重新參考第一圖以及第二圖,在一具體實施例中,平行處理子系統112內的某些或全部平行處理單元202為具有著色管線的圖形 處理器,其可構成執行許多操作,這些操作有關透過記憶體橋接器105和第二通訊路徑113,從中央處理單元102及/或系統記憶體104供應的圖形資料產生畫素資料、與本機平行處理記憶體204(可用來當成圖形記憶體,包括例如傳統訊框緩衝區)互動來儲存與更新畫素資料、傳遞畫素資料給顯示裝置110等等。在某些具體實施例中,平行處理子系統112可包括操作當成圖形處理器的一或多個平行處理單元202,及用於一般用途計算的一或多個其他平行處理單元202。該等平行處理單元可一致或不同,且每一平行處理單元都可擁有一專屬的平行處理記憶體裝置或無專屬的平行處理記憶體裝置。平行處理子系統112內的一或多個平行處理單元202可輸出資料至顯示裝置110,或平行處理子系統112內的每一平行處理單元202都可輸出資料至一或多個顯示裝置110。
在操作上,中央處理單元102為電腦系統100的主要處理器,控制與協調其他系統組件的操作。尤其,中央處理單元102發出指令控制平行處理單元202的操作。在某些具體實施例中,中央處理單元102將每一平行處理單元202的指令串流寫入一資料結構(第一圖或第二圖未明確顯示),其可位於系統記憶體104、平行處理記憶體204內或可存取中央處理單元102和平行處理單元202的其他儲存位置內。每一資料結構已經寫入一推送緩衝區的指標,開始在該資料結構內處理該指令串流。平行處理單元202讀取來自一或多個推送緩衝區的指令串流,然後關於中央處理單元102的操作非同步執行指令。利用應用程式透過裝置驅動程式103來控制不同推送緩衝區的排程,指定每一推送緩衝區的執行優先順序。
請即重新參考第二圖以及第一圖,每一平行處理單元202都包括一I/O(輸入/輸出)單元205,其透過連接記憶體橋接器105(或在替代具體實施例中,直接至中央處理單元102)的通訊路徑113,與電腦系統100的其餘組件通訊。平行處理單元202與電腦系統100其餘組件的連接也可改變。在某些具體實施例中,平行處理子系統112實施成為可插入電腦系統100內擴充槽的外接卡。在其他具體實施例中,平行處理單元202可與例如記憶體橋接器105或輸入/輸出橋接器107這類匯流排橋接器整合在單一晶片上。在仍舊其他具體實施例中,平行處理單元202的某些或全部元 件可與中央處理單元102整合在單一晶片上。
在一具體實施例中,通訊路徑113為一PCI Express連結,其中分配專屬通道給每一平行處理單元202,如業界內所熟知。在一具體實施例中,通訊路徑113為一PCI Express連結,其中分配專屬通道給每一平行處理單元202,如業界內所熟知。一輸入/輸出單元205產生在通訊路徑113上傳輸的封包(或其他信號),也從通訊路徑113上接收所有傳入封包(或其他信號),將該等傳入封包導引至平行處理單元202的適當組件。例如:有關處理任務的指令可導引至主介面206,而有關記憶體操作的指令(例如讀取或寫入平行處理記憶體204)可導引至記憶體交換開關單元210。主介面206讀取每一推送緩衝區,並將該推送緩衝區內儲存的該指令串流輸出至一前端212。
每一平行處理單元202都有利地實施一高平行處理架構。如詳細所示,平行處理單元202(0)包括一處理叢集陣列230,其包括數量為C的一般處理叢集(GPC,General Processing Cluster)208,其中C1。每個一般處理叢集208都可同時執行大量的(例如數百或數千)執行緒,其中每一執行緒都是一程式的實例。在許多應用當中,不同的一般處理叢集208可分配用於處理不同種類的程式,或用於執行不同種類的計算。一般處理叢集208的分配絕大部分取決每一種程式或計算所賦予的工作負擔。
一般處理叢集208從任務/工作單元207內的工作分配單元當中接收要執行的處理任務,該工作分配單元接收指標來處理任務,其編碼為任務中繼資料(TMD,Task Metadata)並儲存在記憶體內。該指標至任務中繼資料包括在指令串流內,其儲存當成一推送緩衝區並由前端單元212從主介面206接收。可編碼為任務中繼資料的處理任務包括要處理的資料索引,以及定義如何處理該資料的狀態參數與指令(例如要執行哪個程式)。任務/工作單元207從前端212接收任務,且確保在每一任務中繼資料指定的處理開始之前已經將一般處理叢集208構成有效狀態。一優先順序可指定給每一任務中繼資料,用來排定該處理任務的執行時間。處理任務也可從處理叢集陣列230接收。或者,該任務中繼資料可包括一參數,其控制該任務中繼資料加入處理任務清單(或處理任務指標清單)的頭部或尾部,藉 此提供優先順序之上的另一控制等級。
記憶體介面214包括數量為D的劃分單元215,這些單元每一都直接連接一部分平行處理記憶體204,其中D1。如所示,劃分單元215的數量一般等於動態隨機存取記憶體(DRAM,Dynamic Random Access Memory)220的數量。在其他具體實施例中,劃分單元215的數量可不等於記憶體裝置的數量。精通技術人士應瞭解,動態隨機存取記憶體220可用其他合適的裝置取代,且可為一般傳統設計,因此省略其詳細說明。像是訊框緩衝區或紋理地圖這類著色目標可通過動態隨機存取記憶體220儲存,允許劃分單元215平行寫入每一著色目標的部分,以有效使用平行處理記憶體204的可用頻寬。
一般處理叢集208之任一者都可處理寫入平行處理記憶體204內的動態隨機存取記憶體220之任一者的資料。交換開關單元210構成將每個一般處理叢集208的輸出繞送至任意劃分單元215的輸入或至其他一般處理叢集208供進一步處理。一般處理叢集208透過交換開關單元210與記憶體介面214通訊,來讀取或寫入許多外部記憶體裝置。在一具體實施例中,交換開關單元210具有一連接記憶體介面214來與輸入/輸出單元205通訊,及一連接本機平行處理記憶體204,藉此讓不同一般處理叢集208內的處理核心與系統記憶體104或不在平行處理單元202本機上的其他記憶體通訊。在第二圖所示的具體實施例中,交換開關單元210直接連接輸入/輸出單元205。交換開關單元210可使用虛擬通道,以分隔一般處理叢集208與劃分單元215之間的流量串流。
一般處理叢集208同樣可程式編輯來執行有關廣泛應用的處理任務,包括但不受限於線性與非線性資料傳輸、視訊及/或音訊資料篩選、模型化運算(例如套用實體規則來決定位置、速度及其他物體屬性)、影像著色運算(例如曲線細分著色、影點著色、幾何著色及/或畫素著色程式)等等。平行處理單元202可從系統記憶體104及/或本機平行處理記憶體204將資料傳輸至(晶片上)記憶體內、處理該資料及將結果資料寫回系統記憶體104及/或本機平行處理記憶體204,其中這種資料可由其他系統組件存取,包括中央處理單元102或另一平行處理子系統112。
一平行處理單元202可提供任何數量的本機平行處理記憶體204,包括非本機記憶體,且可任何情況下使用本機記憶體和系統記憶體。例如:平行處理單元202可為統一記憶體架構(UMA,Unified Memory Architecture)具體實施例內的圖形處理器。在這種具體實施例中,提供一些或無專屬圖形(平行處理)記憶體,且平行處理單元202完全或幾乎完全使用系統記憶體。在統一記憶體架構具體實施例中,平行處理單元202可整合至橋接器晶片或處理器晶片,或提供當成分散式晶片,具有高速連結(例如PCI Express)透過橋接器晶片或其他通訊方式將平行處理單元202連接系統記憶體。
如上述,任何數量的平行處理單元202都可包括在一平行處理子系統112內。例如:單一外接卡上可提供多個平行處理單元202,或多張外接卡可連接通訊路徑113,或一或多個平行處理單元202可整合到一橋接器晶片上。多平行處理單元系統內的平行處理單元202可彼此一致或不同。例如:不同的平行處理單元202可具有不同數量的處理核心、不同大小的本機平行處理記憶體等等。當存在多個平行處理單元202時,這些平行處理單元可平行操作,以比單一平行處理單元202還要高產量的方式來處理資料。合併一或多個平行處理單元202的系統可在許多設置與外型因素之下實施,包括桌上型、膝上型或手持式個人電腦、伺服器、工作站、遊戲機、嵌入式系統等等。
第三A圖為根據本發明之一具體實施例之第二圖中平行處理單元202之一者內之一劃分單元215的方塊圖。如所示,劃分單元215包括一L2快取350、一訊框緩衝區(FB,Frame Buffer)隨機存取記憶體介面355及一光柵操作單元(ROP,Raster Operation Unit)360。L2快取350為一讀取/寫入快取,構成執行接收自交換開關單元210和光柵操作單元360的載入與儲存操作。讀取遺失與緊急寫回要求由L2快取350輸出至訊框緩衝區隨機存取記憶體介面355供處理。髒更新也傳送至訊框緩衝區355用於隨機處理。訊框緩衝區355直接介接隨機存取記憶體220、輸出讀與寫請求並且接收讀取自隨機存取記憶體220的資料。
在圖形應用當中,光柵操作單元360為一種處理單元,其執 行光柵操作,例如模板、z測試、混色等等,且將像素資料當成處理過的圖形資料輸出,以儲存在圖形記憶體內。在本發明的某些具體實施例中,光柵操作單元360包括在每個一般處理叢集208而非分歌單緣215內,且像素讀與寫請求透過交換開關單元210傳輸,而非像素片段資料。
該處理圖形資料可顯示在顯示裝置110,或繞送供中央處理單元102或平行處理子系統112內該等處理實體之一者進一步處理。每一劃分單元215都包括一光柵操作單元360,以分配該等光柵操作的處理。在本發明的某些具體實施例中,光柵操作單元360構成將寫入記憶體的z或顏色資料壓縮,且將從記憶體讀取的z或顏色資料解壓縮。
第三B圖為根據本發明之一具體實施例之第二圖中一般處理叢集(GPC,General Processing Cluster)208內的一串流多重處理器(SM,Streaming Multiprocessor)310之一部分的方塊圖。每個一般處理叢集208都可構成同時執行大量執行緒,其中「執行緒」一詞代表在特定輸入資料集上執行的特定程式之實例。在某些具體實施例中,單一指令、多重資料(SIMD,Single-Instruction,Multiple-Data)指令發行技術用於支援大量執行緒的平行執行,而不用提供多個獨立指令單元。在其他具體實施例中,單一指令、多重執行緒(SIMT,Single-Instruction,Multiple-Thread)技術用於支援大量一般同步執行緒的平行執行,使用共用指令單元,其構成發出指令至每個一般處理叢集208內的處理引擎集。不同於一單一指令、多重資料執行系統,其中所有處理引擎通常都執行相同的指令,單一指令、多重執行緒執行允許不同執行緒透過一已知執行緒程式以更迅速遵循分散的執行路徑。業界內精通技術人士應瞭解,單一指令、多重資料處理區域代表一單一指令、多重執行緒處理區域的函數子集。
透過將處理任務分配至一或多個串流多重處理器(SM,Streaming Multiprocessor)310的管線管理員(未顯示)可有利地控制一般處理叢集208的操作,其中每一串流多重處理器310都構成處理一或多個執行緒群組。每一串流多重處理器310都包括一指令L1快取370,其構成透過一般處理叢集208內的一L1.5快取(未顯示)接收指令與常數。一線程束排程器與指令單元312接收來自指令L1快取370的指令與常數,且根據該等 指令與常數控制本機暫存檔304及串流多重處理器310功能單元。串流多重處理器310功能單元包括N個執行(執行或處理)單元302及P個載入儲存單元(LSU,Load-Store Unit)303。該串流多重處理器功能單元可管線化,允許在先前指令完成之前發出新指令,如業界所熟知。本發明可提供任何功能執行單元組合。在一具體實施例中,該等功能單元支援許多種運算,包括整數與浮點演算(例如加法與乘法)、比較運算、布林運算(AND、OR、XOR)、位元位移和許多代數函數的計算(例如平面插值、三角函數及對數函數等等);並且可運用該相同功能單元來執行不同運算。
傳輸至特定一般處理叢集208的該序列指令構成一執行緒,如本說明書先前所定義,且通過串流多重處理器310內平行處理引擎(未顯示)的特定數量同時執行的執行緒之集合在此稱為「線程束」或「執行緒群組」。如本說明書中的使用,「執行緒群組」代表在不同輸入資料上同時執行相同程式的執行緒群組,其中該群組的一執行緒指派給串流多重處理器310內不同的處理引擎。一執行緒群組可包括數量比串流多重處理器310內處理引擎數量還要少的執行緒,在此案例中,某些處理引擎會在循環期間處理該執行緒群組時閒置。執行緒群組也可包括數量比串流多重處理器310內處理引擎數量還要多的執行緒,在此案例中,將在連續時脈循環上進行處理。因為每一串流多重處理器310都可同時支援最多G個執行緒群組,接著在任何已知時間上一般處理叢集208內都可執行最多G*M個執行緒群組之系統,其位於包括 M 個串流多重處理器310的一般處理叢集208內。
此外,在串流多重處理器310內可同時啟用複數個相關執行緒群組(在不同執行階段內)。此執行緒群組的集合稱為「協作執行緒陣列」(CAT,Cooperative Thread Array)或「執行緒陣列」。特定協作執行緒陣列的大小等於m*k,其中k為執行緒群組內同時執行的執行緒數量,通常為串流多重處理器310內平行處理引擎數量的整數倍數,且m為串流多重處理器310內同時啟用的執行緒群組數量。協作執行緒陣列的大小通常由程式設計師及該協作執行緒陣列可用的硬體資源數量,例如記憶體或暫存器,來決定。
在本發明的具體實施例中,想要使用一計算系統的平行處理單元202或其他處理器,運用執行緒陣列以執行一般用途計算。該執行緒陣列內的每一執行緒都可指派一獨一的執行緒識別碼(「執行緒ID」),其可在該執行緒執行期間存取該執行緒。該執行緒ID可定義為一維度或多維度數值,控制該執行緒處理行為的許多態樣。例如:一執行緒ID可用於決定設定一執行緒的哪個輸入資料部分要處理及/或決定設定一執行緒的哪個輸入資料部分要產生或寫入。
一序列的每個執行緒指令可包括至少一指令,其定義該代表性執行緒與該執行緒陣列之一或多個其他執行緒之間的協作行為。例如:每一執行緒指令的順序可包括:一中斷指令,用以中斷在該順序的特定點上該代表執行緒運算的執行,直到一或多個其他執行緒到達該特定點上為止;一儲存指令,用於該代表執行緒將一或多個其他執行緒可存的資料儲存在一共用記憶體;一讀取與更新指令,用以該代表執行緒根據其執行緒ID自動讀取與更新一共用記憶體內的一或多個該等其他執行緒已存取過的資料等等。該協作執行緒陣列程式也可包括一計算指令,用以計算該共用記憶體內所要讀取資料的位址,其中該位址為執行緒ID的函數。利用定義合適的功能並且提供同步技術,資料可利用CAT的一執行緒寫入共用記憶體內的一已知位置,且以可預測方式用相同協作執行緒陣列的不同執行緒從該位置當中讀取。因此,支援在執行緒之間共用的任何資料圖案,且一協作執行緒陣列內的任何執行緒都可與相同協作執行緒陣列內任何其他執行緒共用資料。在協作執行緒陣列執行緒之間共用的資料內容(若有的話)由該協作執行緒陣列程式決定;如此應瞭解,在使用協作執行緒陣列的特定應用當中,根據該協作執行緒陣列程式,協作執行緒陣列的執行緒彼此之間不會確實共用資料,且在本說明書同時使用「協作執行緒陣列」與「執行緒陣列」等詞。
串流多重處理器310提供具備不同存取階層的晶片上(內部)資料儲存。特殊暫存器(未顯示)可由載入儲存單元303讀取但是無法寫入,且可用於定義每一直執行緒「位置」的參數。在一具體實施例中,特殊暫存器包括每一執行緒(或串流多重處理器310內每一執行單元302)一暫存 器,其儲存一執行緒ID;每一執行緒ID暫存器都只能由個別一執行單元302存取。特殊暫存器也可包括額外暫存器,可由執行任務中繼資料(TMD)(未顯示)(或由所有載入儲存單元303)所呈現相同處理任務的所有執行緒讀取,其儲存一協作執行緒陣列識別碼、該協作執行緒陣列維度、該協作執行緒陣列所屬網格的維度(或若任務中繼資料編碼一佇列任務而非一網格任務時的佇列位置)及指派協作執行緒陣列的任務中繼資料之識別碼。
若任務中繼資料為一網格任務中繼資料,則執行任務中繼資料會導致啟動並執行固定數量的協作執行緒陣列,來處理佇列525內所儲存的固定數量資料。協作執行緒陣列的數量依照網格寬度、高度與深度的乘積來指定。該固定數量的資料可儲存在任務中繼資料內,或任務中繼資料可儲存將由協作執行緒陣列處理的資料之指標。任務中繼資料也儲存該協作執行緒陣列所執行程式的開始位址。
若任務中繼資料為佇列任務中繼資料,然後使用任務中繼資料的佇列功能,表示要處理的資料量並不需要固定。佇列記錄儲存資料,供指派給任務中繼資料的該等協作執行緒陣列處理。該等佇列記錄也呈現執行緒執行期間由另一任務中繼資料產生的子代任務,藉此提供巢狀平行。一般來說,執行緒的執行或包括該執行緒的協作執行緒陣列會中止,直到子代任務執行完成為止。該佇列可儲存在任務中繼資料內,或與任務中繼資料分開,在此案例中任務中繼資料儲存至該佇列的佇列指標。有利的是,由該子代任務產生的資料可寫入該佇列,同時任務中繼資料代表已經執行的該子代任務。該佇列可實施為一圓形佇列,如此資料總量並不受限於該佇列的大小。
屬於一網格的協作執行緒陣列具有隱函的網格寬度、高度和深度參數,指示該網格內個別協作執行緒陣列的位置。在初始化期間會寫入特殊暫存器,以回應透過前端212從裝置驅動程式103接收命令,且在一處理任務期間不會改變。前端212排程執行每一處理任務。每一協作執行緒陣列都有關一特定任務中繼資料,以同時執行一或多個任務。此外,單一一般處理叢集208可同時執行多個任務。
一參數記憶體(未顯示)儲存可由相同協作執行緒陣列(或任 何載入儲存單元303)內任何執行緒讀取但無法寫入的執行時間參數(常數)。在一具體實施例中,裝置驅動程式103在導引串流多重處理器310開始執行使用這些參數的任務之前,提供參數該參數記憶體。任何協作執行緒陣列內的任何執行緒(或串流多重處理器310內的任何執行單元)都可透過記憶體介面214存取全域記憶體。全域記憶體的數個部分可儲存在L1快取320內。
每一執行緒都使用本機暫存檔304當成暫存空間;每一暫存器都分配給一執行緒專用,且任何本機暫存檔304內的資料都只能由分配給該暫存器的該執行緒存取。本機暫存檔304可實施為實體上或邏輯上區分成P個通路的暫存檔,每一通路都具有某些數量的記錄(在此每一記錄都可儲存例如32位元字)。一通路指派給該N個執行單元302及P個載入儲存單元載入儲存單元303之每一者,且不同通路內的對應記錄可填入執行相同程式的不同執行緒之資料,以幫助單一指令、多重資料執行。通路的不同部分可分配給該G個同時執行緒群組中不同的執行緒,如此本機暫存檔304內的一已知記錄只能由特定執行緒存取。在一具體實施例中,本機暫存檔304內的特定記錄保留用於儲存執行緒識別碼,實施該等特殊暫存器之一者。此外,一同型L1快取375儲存N個執行單元302及P個載入儲存單元載入儲存單元303的每一通路之同型或常數值。
共用記憶體306可由單一協作執行緒陣列內的執行緒存取;換言之,共用記憶體306內任何位置都可由相同協作執行緒陣列內任何執行緒(或串流多重處理器310內任何處理引擎)來存取。共用記憶體306可實施為具有互連的一共用暫存檔或共用晶片上記憶體,允許任何處理引擎從該共用記憶體內任何位置讀取或寫入。在其他具體實施例中,共用的狀態空間可映射至晶片外記憶體的每一協作執行緒陣列區域,且快取在L1快取320內。該參數記憶體可實施為該相同共用暫存檔或實施共用記憶體306的共用快取記憶體內的一指定區段,或實施為載入儲存單元303具有唯讀存取的一別共用暫存檔或晶片上快取記憶體。在一具體實施例中,實施該參數記憶體的區域也用於儲存該協作執行緒陣列ID和任務ID,及協作執行緒陣列和網格尺寸或佇列位置,實施該特殊暫存器的位置。串流多重處 理器310內的每一載入儲存單元303耦接至統一位址映射單元352,將提供用於載入與儲存統一記憶體空間內所指定指令的一位址轉換成每一分散記憶體空間內的一位址。因此,利用指定該統一記憶體空間內的一位址,可使用一指令來存取任何該本機、共用或全域記憶體空間。
每一串流多重處理器310內的L1快取320都可用於快取私用每一執行緒本機資料,且也快取每一應用程式全域資料。在某些具體實施例中,該每一協作執行緒陣列共用資料可快取在L1快取320內。載入儲存單元303可透過一記憶體與快取互連380耦接至共用記憶體306及L1快取320。
應瞭解,本說明書描述的該核心架構為例示,且可改變及修改。任何數量的處理單元,例如串流多重處理器310可包括在一般處理叢集208內。此外,如第二圖所示,平行處理單元202可包括任意數量功能彼此類似的一般處理叢集208,如此執行行為並不取決於接收特定處理任務的一般處理叢集208。此外,每個一般處理叢集208都得利於與其他一般處理叢集208無關的操作,運用分離並分散的處理單元、L1快取來執行一或多個應用程式的任務。
精通此技術人士應瞭解,第一圖至第三B圖描述的架構並非用於限制本發明範疇,本說明書內的技術可在任何正確設置的處理單元上實施,在不悖離本發明範疇之下包括但不受限於一或多個中央處理單元、一或多個多核心中央處理單元、一或多個平行處理單元202、一或多個一般處理叢集208、一或多個圖形或特殊用途處理單元等等。
圖形管線架構
第四圖為根據本發明之一具體實施例之可構成第二圖中平行處理單元202之一或多者來實施之一圖形處理管線400的概念圖。例如:一串流多重處理器310可構成執行頂點處理單元415、曲面細分初始化處理單元420、曲面細分處理單元440、幾何處理單元445及片段處理單元460之一者或多者的功能。圖元分配器與頂點屬性擷取410、任務產生單元425、任務分配器430、拓撲產生單元435、視埠縮放、消隱與裁切單元450、光柵器455及光柵操作單元465的功能也可由一般處理叢集208與對應劃分 單元215內其他處理引擎執行。另外,可使用一或多個功能的專屬處理單元,實施圖形處理管線400。
圖形處理管線400也包括在圖形處理管線400之間共用的一本機記憶體。例如:該圖形處理管線應該串流多重處理器310內的使用共用記憶體360,例如一本機記憶體。如以下進一步描述,依照需要,共用記憶體306內的中間階段緩衝區(未顯示)已經由圖形處理管線400內許多處理單元分配與取消分配。一處理單元從一或多個中間階段緩衝區讀取輸入資料、處理該輸入資料以產生輸出資料,且將該結果輸出資料儲存在一或多個中間緩衝區內。一後續處理單元可讀取此結果輸出資料,當成該後續處理單元的輸入資料。該後續處理單元處理該資料,且將輸出資料儲存在一或多個中間階段緩衝區內,以此類推。共用記憶體306和該圖形處理管線的許多其他階段都透過記憶體介面214,與外部記憶體相連。
圖元分配器與頂點屬性擷取410處理單元集合高階表面、圖元等等的頂點資料,且將包括該等頂點屬性的該頂點資料輸出至頂點處理單元415。在某些具體實施例中,圖元分配器與頂點屬性擷取410可包括一頂點屬性擷取單元,其取得該等頂點屬性並且透過記憶體介面214儲存該等頂點屬性。在其他具體實施例中,圖元分配器與頂點屬性擷取410可包括一頂點屬性擷取單元,其從共用記憶體306取得該等頂點屬性並且儲存該等頂點屬性至此。頂點處理單元415為一可程式執行單元,其構成執行頂點著色程式,依照該頂點著色程式所規定照明與轉換頂點資料。例如:頂點處理單元415可程式編輯成將該頂點資料從一物件型座標代表(物件空間)轉換成一替代型座標系統,例如世界空間或標準化裝置座標(NDC,Normalized Device Coordinate)空間。頂點處理單元415可用圖元分配器與頂點屬性擷取410讀取共用記憶體306、L1快取320、平行處理記憶體204或系統記憶體104內儲存的資料,用來處理該頂點資料。頂點處理單元415將處理過的頂點儲存在共用記憶體306內的中間階段緩衝區內。
曲面細分初始化處理單元420為一可程式執行單元,其構成執行曲面細分初始化著色程式。曲面細分初始化處理單元420處理由頂點處理單元415所產生的頂點,並產生已知為塊面的圖形圖元。曲面細分初 始化處理單元420也產生許多塊面屬性,然後曲面細分初始化處理單元420將該塊面資料及塊面屬性儲存在共用記憶體360內的該等中間階段緩衝區內。在某些具體實施例中,該曲面細分初始化著色程式可稱為一輪廓著色器或曲面細分控制著色器。
任務產生單元425從共用記憶體306的該等中間階段緩衝區當中取得頂點的資料與屬性及塊面。任務產生單元產生425產生用於處理該等頂點與塊面的任務,供圖形處理管線400內稍後階段的處理。
任務分配器430重新分配任務產生單元425所產生的任務。該頂點著色程式及該曲面細分初始化程式的許多實例所產生之任務可在一圖形處理管線400與另一之間顯著改變。任務分配器430重新分配這些任務,如此每一圖形處理管線400在稍後管線階段期間具有大約相同的工作負擔。
拓撲產生單元435獲得任務分配器430分配的任務。拓撲產生單元435將該等頂點加上索引,包括有關塊面的頂點,且計算(U,V)曲面細分頂點的座標,及連接該等曲面細分頂點形成圖形圖元的索引。然後拓撲產生單元435將索引頂點儲存在共用記憶體306內的中間階段緩衝區內。
曲面細分處理單元440為一可程式執行單元,其構成執行曲面細分著色程式。曲面細分處理單元440讀取來自共用記憶體的輸入資料,且將輸出資料寫入共用記憶體306的該等中間階段緩衝區。在該中間階段緩衝區內的此輸出資料會傳遞至下一著色階段,當成幾何處理單元455的輸入資料。在某些具體實施例中,該曲面細分著色程式可稱為一領域著色器或一曲面細分評估著色器。
曲面細分處理單元445為一可程式執行單元,其構成執行幾何著色程式,藉此轉換圖形圖元。頂點經過分組,建構用於處理的圖形圖元,其中圖形圖元包括三角形、線段、點等等。例如:幾何處理單元445可程式編輯成將該等圖形圖元分成一或多個新圖形圖元,且計算參數,例如平面等式係數,用來將該等新圖形圖元光柵化。
在某些具體實施例中,幾何處理單元445也可新增或刪除該幾何串流內的元件。幾何處理單元445輸出將新圖形圖元指定至一視埠縮 放、消隱及裁切單元450的該等參數與頂點。幾何處理單元445可讀取儲存在共用記憶體306、平行處理記憶體204或系統記憶體104內的資料,用來處理該幾何資料。視埠縮放、消隱與裁切單元450執行裁切、消隱與視埠轉換,且將處理過的圖形圖元輸出至一光柵器455。
光柵器455掃描轉換新圖形圖元,且將片段與覆蓋資料輸出至片段處理單元460。此外,光柵器455可構成執行z消隱及其他z型最佳化。
片段處理單元460為一可程式執行單元,其構成執行片段著色程式,依照該片段著色程式所規定轉換接收自光柵器455的片段。例如:片段處理單元460可程式編輯成執行操作,例如透視修正、紋理映射、著色、混色等等,以產生輸出至光柵操作單元465的已著色片段。片段處理單元460可讀取儲存在共用記憶體306、平行處理記憶體204或系統記憶體104內的資料,用來處理該片段資料。根據該程式編輯的取樣率,片段可依照像素、取樣或其他間隔尺寸來著色。
光柵操作單元465為一種處理單元,其執行光柵操作,例如模板、z測試、混色等等,且將像素資料當成處理過的圖形資料,以儲存在圖形記憶體內。該處理過的圖形資料可儲存在圖形記憶體內,例如平行處理記憶體204,及/或系統記憶體104,用於顯示在顯示裝置110或用於由中央處理單元102或平行處理子系統112進一步處理。在本發明的某些具體實施例中,光柵操作單元465構成將寫入記憶體的z或顏色資料壓縮,且將從記憶體讀取的z或顏色資料解壓縮。在許多具體實施例中,光柵運算單元465可位於記憶體介面214內、一般處理叢集208內、該一般處理叢集之外的處理叢集陣列230內或平行處理單元202內的一別單元(未顯示)內。
曲面細分及幾何著色器的功率效率屬性處理
如上面結合第四圖所述,第二圖中的一或多個平行處理單元202內的串流多重處理器310可構成實施至少部分圖形處理管線400。串流多重處理器310可構成執行頂點處理單元415、曲面細分初始處理單元420、曲面細分處理單元440、幾何處理單元445及片段處理單元460之一 者或多者的功能。圖元分配器與頂點屬性擷取410、任務產生單元425、任務分配器430、拓撲產生單元435、視埠縮放、消隱與裁切單元450、光柵器455及光柵操作單元465的功能也可由一般處理叢集208與對應劃分單元215內其他處理引擎所執行。
在某些具體實施例中,每一圖形處理管線400可分成一世界空間管線及一螢幕空間管線。世界空間管線在3D空間內處理圖形物件,其中相對於其他圖形物件及相對於一3D座標系統已知每一圖形物件的位置。螢幕空間管線處理已經從該3D座標系統投射至一2D平面(呈現出顯示裝置110的表面)之圖形物件。例如:世界空間管線可包括圖形處理管線400內從圖元分配器與頂點屬性擷取410到視埠比例、消隱及裁切單元450的管線階段。螢幕空間管線可包括圖形處理管線400內從光柵器455到光柵操作單元465的管線階段。
在某些具體實施例中,世界空間管線可進一步分成一α階段管線及一β階段管線。例如:該α階段管線可包括圖形處理管線400內從圖元分配器與頂點屬性擷取410到任務產生單元425的管線階段。該β階段管線可包括圖形處理管線400內從該拓撲產生單元435到視埠比例、消隱及裁切單元450的管線階段。圖形處理管線400,包括相關的串流多重處理器310,在該α階段管線內處理期間執行一第一組操作,且在該β階段管線內處理期間執行一第二組操作。如本說明書內所用,一組操作定義為由單一執行緒、一執行緒群組、或由一協作執行緒陣列執行的一或多個指令。
有關一組圖形物件的該等屬性可細分,如此每一圖形處理管線400通過該α階段都具有大約相同的工作負載。α階段處理可顯著擴充該圖形物件屬性數量,如此任務產生單元425生產的屬性數量顯著大於由圖元分配器與頂點屬性擷取410所取得的屬性數量。此外,即使兩個圖形處理管線400在該α階段管線開始時處理相同屬性量,相較於有關另一圖形處理管線400的任務產生單元425,有關一圖形處理管線400的任務產生單元425則可產生顯著較多的屬性數量。在這種情況下,任務分配器430重新分配該α階段管線產生的該等屬性,如此每一圖形處理管線400在該 β階段管線開始時都具有大約相同的工作負擔。
第五圖例示根據本發明之一具體實施例之第三B圖的共用記憶體306之分配映射500。如所示,分配映射500包括一α階段510期間的分配及一β階段540期間的分配。
α階段510期間的分配例示由頂點處理單元415執行該頂點著色器程式之前,共用記憶體306的分配。如所示,該分配包括用於頂點著色器輸入520的片段及用於頂點著色器輸出530的區段。頂點著色器輸入520包括有關由圖元分配器與頂點屬性擷取410指派給該頂點著色器程式的圖形物件之參數。頂點處理單元415取得來自頂點著色器輸入520的該等參數,且根據該頂點著色器程式處理該相關的圖形物件。然後頂點處理單元415將修改過的屬性儲存在頂點著色器輸出530內。在某些具體實施例中,該等圖形物件並不進行曲面細分。在這種情況下,都繞過曲面細分輸入處理單元420和曲面細分處理單元440,且任務產生單元425直接取得頂點著色器輸出530。如上面結合第四圖的描述,該任務產生單元準備用於該β階段管線的任務。
因為該頂點著色器程式的許多實例彼此可產生不同的工作負載量,任務分配器430會在由該β階段管線處理之前重新分配圖形處理管線400之間的任務。因此,由已知圖形處理管線在該α階段期間處理的一圖形物件,並不需要在該β階段期間由相同的圖形處理管線400處理。例如:一頂點處理單元415應該在該α階段期間處理單一圖形物件,結果產生大量的結果圖形物件。在這種情況下,任務分配器430可於該β階段,將該等圖形物件重新分配至一或多個圖形處理管線400,這可以或可不包括在該α階段期間處理該圖形物件的該圖形處理管線400。若指派處理用於該β階段的處理圖形物件之所有圖形處理管線400,都在與指派用於該α階段的該等圖形處理管線相同之串流多重處理器310內,則頂點著色器輸出530不需要複製到外部記憶體,例如L2快取350。相反地,頂點著色器輸出530仍舊位於本機共用記憶體306內,用於在β階段期間進行處理。
β階段540期間的分配例示由幾何處理單元445執行該幾何著色器程式之前,共用記憶體306的分配。如所示,該分配包括用於頂 點著色器輸出530的片段及用於幾何著色器輸出550的區段。頂點著色器輸出530包括有關由任務分配器430指派給該幾何著色器程式的圖形物件之參數。拓撲產生單元435將來自頂點著色器輸出530的該等頂點索引,且計算對應至該等頂點的紋理座標。幾何處理單元445取得來自頂點著色器輸出530的該等索引參數,且根據該幾何著色器程式處理該相關的圖形物件。幾何處理單元445然後將進一步修改過的屬性儲存在幾何著色器輸出550內。然後,幾何著色器輸出550傳輸至該螢幕空間管線。
在具有單一串流多重處理器310的系統內,相同的串流多重處理器310處理該α與β工作負載。如此,有關圖形物件的屬性在α與β階段之間,仍舊位於串流多重處理器310的本機記憶體內,例如共用記憶體306。α階段資料仍舊留在串流多重處理器310的共用記憶體306原位置,並沒有複製到L2快取350。在串流多重處理器310內的圖形處理管線400之間重新分配的β工作負載,由圖形處理管線400從本機共用記憶體306當中取得。
在某些具體實施例中,共用記憶體306的頂點著色器輸入520、頂點著色器輸出530、及幾何著色器輸出550區域可構成使用先進先出(FIFO,First-In First-Out)分配政策,提供用於簡化硬體實施及避免死結。該第一區域在該α階段期間可分配給頂點著色器輸入520,且在該β階段期間可分配給幾何著色器輸出550。一旦該頂點著色器程式的實例已經完成處理,則解除頂點著色器輸入520的分配。在頂點著色器輸入520解除分配之後,該第一區域可分配給幾何著色輸出550。該第二區域可分配給來自該α階段的頂點著色器輸出530,以儲存該最後α階段著色程式。頂點著色器輸出530區域內的該資料仍舊位於共用記憶體306內,且在所有α交換都已經完成執行之後分配。在該β階段期間,該幾何著色器程式的該等實例可直接存取該第二區域內所分配,來自頂點著色器輸出530的屬性。一旦該幾何著色器程式的實例已經完成處理,則解除頂點著色器輸出530的分配。一旦幾何著色器輸出550內的該資料已經傳輸至該螢幕空間管線,則解除幾何著色器輸出550的分配。
在完成β階段處理之後,共用記憶體306的頂點著色器輸 出530和幾何著色器輸出550區域可用於其他圖形物件的後續α階段。用在α與β階段之間交替的該等圖形管線繼續該處理,用於不同的圖形物件集合,使用本機共用記憶體306內兩個區域傳輸屬性。
在某些具體實施例中,該頂點著色器程式要處理比頂點著色器輸入520內所儲存更多的頂點資料。在這種情況下,該頂點著色器程式可處理頂點著色器輸入520內儲存的頂點資料,將結果儲存在頂點著色器輸出530內,直到頂點著色器輸入520接近清空。頂點著色器輸入520的部分可解除分配,然後重新分配來接收額外頂點資料進行處理。該頂點著色器程式可繼續處理頂點資料,直到頂點著色器輸出530接近全滿。然後圖形處理管線400可進入該β階段,處理頂點著色器輸出530內儲存的該資料。
在某些具體實施例中,處理頂點著色器輸出530會導致產生的資料比幾何著色器輸出550內所能儲存的資料更多。在這種情況下,該幾何著色器程式可處理圖形物件,且將輸出資料儲存在幾何著色器輸出550內,直到幾何著色器輸出550接近全滿。然後幾何著色器輸出550可傳輸至該螢幕空間管線,且可解除幾何著色器輸出550的分配。該幾何著色器程式可繼續處理圖形物件,且將輸出資料儲存在幾何著色器輸出550內,直到幾何著色器輸出550再度接近全滿。然後,幾何著色器輸出550再度傳輸至該螢幕空間管線。該處理可繼續到β處理完成。
在這種情況下,頂點著色器輸出530區域的大小可縮放,以儲存來自一頂點著色器程式單次交換的最大資料輸出規模。頂點著色器輸入520/幾何著色器輸出550區域可縮放,以儲存來自一頂點著色器程式單一交換的最大資料輸入大小,或來自一幾何著色器程式單一交換的最大資料輸出大小。例如:頂點著色器輸出530區域的大小應該為16.75千位元組,且頂點著色器輸入520/幾何著色器輸出550的大小應該為31.25千位元組。共用記憶體306的總大小應該為48千位元組。
第六圖例示根據本發明之另一具體實施例之第三B圖的共用記憶體306之分配映射600。如所示,分配映射600包括一α階段610期間的分配及一β階段640期間的分配。除了以下的進一步說明以外,該 α階段610期間的分配及該β階段640期間的分配作用大體上與第五圖之類似分配相同。
α階段期間的分配例示由頂點處理單元415執行該頂點著色器程式之前,共用記憶體306的分配。如所示,該分配包括用於頂點著色器輸入的片段及用於曲面細分初始化著色器輸出530的區段。頂點處理單元415取得來自頂點著色器輸入與頂點著色器輸出620的參數,且根據該頂點著色器程式處理該等相關的圖形物件。然後頂點處理單元415將修改過的屬性儲存在頂點著色器輸入與頂點著色器輸出620內。曲面細分初始化處理單元420取得來自頂點著色器輸入與頂點著色器輸出620並且由頂點處理單元415處理過的圖形物件,且根據該曲面細分初始化著色器程式處理該等相關的圖形物件。然後曲面細分輸入處理單元420將有關該等圖形物件的修改過屬性儲存在曲面細分初始化著色器輸出630內。任務產生單元425取得曲面細分初始化著色器輸出630。如上面有關第四圖的描述,該任務產生單元準備用於該β階段管線的任務。
因為該曲面細分初始化著色器程式的許多實例彼此可產生不同的工作負載量,任務分配器430會在由該β階段管線處理之前重新分配圖形處理管線400之間的任務。因此,由已知圖形處理管線在該α階段期間處理的一圖形物件,並不需要在該β階段期間由相同的圖形處理管線400處理。例如:一曲面細分初始化處理單元420應該在該α階段期間處理單一圖形物件,結果產生大量的結果圖形物件。在這種情況下,任務分配器430可將該等圖形物件重新分配至一或多個圖形處理管線400用於該β階段,這可或不可包括在該α階段期間處理該圖形物件的該圖形處理管線400。若指派處理用於該β階段的處理圖形物件之所有圖形處理管線400,都在與指派用於該α階段的該等圖形處理管線400相同之串流多重處理器310內,則曲面細分初始化著色器輸出630不需要複製到外部記憶體,例如L2快取350。而是曲面細分初始化著色器輸出630仍舊位於本機共用記憶體306內,用於在β階段期間進行處理。
β階段640期間的分配例示由曲面細分處理單元440執行該曲面細分著色器程式之前,共用記憶體306的分配。如所示,該分配包 括用於曲面細分初始化著色器輸出630的片段及用於曲面細分著色器輸出與幾何著色器輸出650的區段。曲面細分初始化著色器輸出630包括有關由任務分配器430指派給該曲面細分著色器程式的圖形物件之參數。拓撲產生單元435將來自該曲面細分初始化著色器輸出630的該等頂點加上索引,且計算(U,V)曲面細分頂點的座標,及連接該等曲面細分頂點形成圖形圖元的索引。曲面細分處理單元440取得來自曲面細分初始化著色器輸出630的該等索引參數,且根據該曲面細分著色器程式處理該相關的圖形物件。然後曲面細分處理單元440將結果儲存在曲面細分著色器輸出與幾何著色器輸出650的該曲面細分著色器輸出部分。然後幾何處理單元445取得來自曲面細分著色器輸出與幾何著色器輸出650的該曲面細分著色器輸出部分之該等曲面細分著色器結果,且根據該幾何著色器程式處理該相關的圖形物件。然後幾何處理單元445將進一步修改屬性儲存在曲面細分著色器輸出與幾何著色器輸出650的該曲面細分著色器輸出部分內。然後,幾何著色器輸出傳輸至該螢幕空間管線。
應瞭解,本說明書顯示的該架構僅為例示,故可改變與修改。在一具體實施例中,在此以共用記憶體306具有48kbyte(千位元組)儲存容量及共用記憶體306的兩部分之間特定分段之範疇來描述該等技術。不過,可運用使用任何可行大小或片段分離的共用記憶體306之所述技術。在另一範例中,共用記憶體的兩部分間之該分段可固定,或可在圖形處理期間動態改變。
第七A圖至第七B圖揭示根據本發明之一具體實施例之一種用於重新分配已經由一圖形處理單元處理過的圖形物件屬性之方法步驟的流程圖。雖然已經結合第一圖至第六圖的系統來描述該等方法步驟,精通技術人士應瞭解,構成執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法700從步驟702開始,在此串流多重處理器310從共用記憶體的第一部分內的第一組緩衝區,取得有關第一組圖形物件的第一組參數,其中該第一組緩衝區之前已經過分配。在步驟704,串流多重處理器310使用由一頂點處理單元執行的一頂點著色器程式,來處理該 第一組參數,產生頂點輸出資料。在步驟706,串流多重處理器310將該頂點輸出資料儲存在該第一組緩衝區內。在步驟708,串流多重處理器310使用由一曲面細分初始化處理單元執行的一曲面細分初始化著色器程式,來處理該已儲存的頂點輸出資料,產生曲面細分初始化輸出資料。在步驟710,串流多重處理器310將第二組參數設定為該曲面細分初始化輸出資料。在步驟712,串流多重處理器310分配空間給該共用記憶體的第二部分內的該第二組緩衝區,用於儲存該第二組參數。在步驟714,串流多重處理器310將該第二組參數儲存在該第二組緩衝區內。在步驟716,串流多重處理器310解除分配該第一組緩衝區。
在步驟718,串流多重處理器310在進一步處理之前,重新分配該等複數個圖形處理管線內該等圖形處理管線之間的該第二組參數。在步驟720,串流多重處理器310使用由一曲面細分處理單元執行的一曲面細分著色器程式,來處理該第二組參數,產生曲面細分輸出資料。在步驟722,串流多重處理器310分配空間給該共用記憶體的第一部分內的一第三組緩衝區用於儲存。在步驟724,串流多重處理器310將該曲面細分輸出資料儲存在該第三組緩衝區。在步驟726,串流多重處理器310使用由一幾何處理單元執行的一幾何著色器程式,來處理該已儲存的曲面細分輸出資料,產生幾何輸出資料。在步驟728,串流多重處理器310將一第三組參數設定為該幾何輸出資料。在步驟730,串流多重處理器310將該第三組參數儲存在該第三組緩衝區內。在步驟732,串流多重處理器310解除分配該第二組緩衝區。在步驟734,在串流多重處理器310內的一或多個圖形處理管線400內該館現階段上,串流多重處理器310將該第三組緩衝區傳輸至稍後階段。例如:串流多重處理器310將該第三組緩衝區傳輸至圖形處理管線400的視埠比例、消隱及裁切單元450。在步驟736,串流多重處理器310解除分配該第三組緩衝區。然後方法700終止。
總結來說,有關一或多個圖形物件的屬性都儲存在對一串流多重處理器(SM,Streaming Multiprocessor)而言屬於本機的共用記憶體的第一部分內。該串流多重處理器將該等屬性分配給圖形處理管線,用於處理。該等圖形處理管線取得來自該共用記憶體的第一部分的該等屬性。該圖形 處理管線執行有關圖形處理的第一階段的操作、建立已修改的屬性用於圖形處理的第二階段。該等圖形處理管線將該已修改的屬性儲存在該共用記憶體的第二部分內。然後,該串流多重處理器將該已修改的屬性重新分配給該等圖形處理管線,準備用於圖形處理的第二階段。該等圖形處理管線取得來自該共用記憶體的第二部分的該等已修改屬性。該圖形處理管線執行有關圖形處理的第二階段的操作、建立進一步修改的屬性用於額外圖形處理。該等圖形處理管線將該進一步修改的屬性儲存在該共用記憶體的第一部分內。然後將該等進一步修改的屬性從該共用記憶體的第一部分傳輸至該圖形處理管線內稍後階段。
所揭示技術的一項優點為工作是從圖形處理的第一階段至圖形處理的第二階段的重新分配單一串流多重處理器系統,不用將該等圖形物件的屬性複製到該快取或系統記憶體,然後之後從這些記憶體之一者擷取該等屬性。將屬性複製到遠端記憶體,例如快取或系統記憶體,及從此擷取屬性,通常牽涉到將多個非晶片上記憶體、控制器及多層記憶體階層內的介面組件通電。複製到遠端記憶體及從此擷取也可牽涉到,將某些組件從低耗電狀態轉換成高耗電狀態。存取本機共用記憶體通常不牽涉到通電或改變非晶片上組件的功率狀態。因此,所揭示的技術降低整體功率消耗,且用來延長行動裝置內電池充電循環之間的操作時間。
本發明之一具體實施例可實施當成搭配電腦系統使用的程式產品。該程式產品的程式定義該等具體實施例(包括本說明書所述的方法)的功能,且可包括在電腦可讀取儲存媒體上。例示的電腦可讀取儲存媒體包括但不受限於:(i)其上資訊永久儲存的不可抹寫儲存媒體(例如電腦內的唯讀記憶體裝置,例如小型碟片唯讀記憶體(CD-ROM)光碟機可讀取的CD-ROM光碟、快閃記憶體、ROM晶片或任何一種固態非揮發性半導體記憶體);及(ii)上其儲存可變資訊的可抹寫儲存媒體(例如磁碟機或硬碟內的磁碟或任何一種固態隨機存取半導體記憶體)。
在此已經參考特定具體實施例說明本發明。不過精通此技術的人士將會了解,在不悖離申請專利範圍內公佈之本發明廣泛精神及領域下,可進行許多修改與變更。因此前述說明與圖式僅供參考而不做限制。
因此,本發明具體實施例的範疇公布於以下的申請專利範圍內。

Claims (10)

  1. 一種在複數個圖形處理管線內處理圖形物件屬性之方法,該方法包括:擷取有關來自第一組緩衝區的一組圖形物件之第一組參數;根據處理的第一階段,在該第一組參數上執行第一組操作,以產生一第二組參數;將該第二組參數儲存在一第二組緩衝區內;根據處理的第二階段,在該第二組參數上執行第二組操作,以產生一第三組參數;及將該第三組參數儲存在第三組緩衝區內。
  2. 如申請專利範圍第1項之方法,更包括:分配空間給一共用記憶體的第一部分內的該第一組緩衝區;及分配空間給該共用記憶體的第二部分內的該第二組緩衝區。
  3. 如申請專利範圍第2項之方法,更包括:解除分配給該第一組緩衝區的該空間;及分配空間給該共用記憶體的第一部分內的該第三組緩衝區。
  4. 如申請專利範圍第1項之方法,其更包括,在執行該第二組操作之前,重新分配跨該等複數個圖形處理管線的該第二組參數。
  5. 如申請專利範圍第1項之方法,更包括將該第三組緩衝區的內容傳輸至該等複數個圖形處理管線含有的一第一圖形處理管線中的一稍後階段。
  6. 如申請專利範圍第1項之方法,其中執行該第一組操作包括:使用由一頂點處理單元執行的一頂點著色器程式,來處理該第一組參數,以產生頂點輸出資料;及指定該第二組參數當成該頂點輸出資料。
  7. 如申請專利範圍第6項之方法,其中執行該第二組操作包括:使用由一幾何處理單元執行的一幾何著色器程式,來處理該第二組參數,以產生幾何輸出資料;及指定該第三組參數當成該幾何輸出資料。
  8. 如申請專利範圍第1項之方法,其中執行該第一組操作包括: 使用由一頂點處理單元執行的一頂點著色器程式,來處理該第一組參數,以產生頂點輸出資料;將該頂點輸出資料儲存在該第一組緩衝區內;使用由一曲面細分初始化處理單元執行的一曲面細分初始化著色器程式,處理該已儲存的頂點輸出資料,以產生曲面細分初始化輸出資料;及指定該第二組參數當成該曲面細分初始化輸出資料。
  9. 如申請專利範圍第8項之方法,其中執行該第二組操作包括:使用由一曲面細分處理單元執行的一曲面細分著色器程式,來處理該第二組參數,以產生曲面細分輸出資料;將該曲面細分輸出資料儲存在該第三組緩衝區內;使用由一幾何處理單元執行的一幾何著色器程式,來處理該已儲存的曲面細分輸出資料,以產生幾何輸出資料;及指定該第三組參數當成該幾何輸出資料。
  10. 一種子系統,包括:一串流多重處理器,其構成利用執行以下步驟,將圖形物件的屬性重新分配在一第一處理階段與一第二處理階段之間的一圖形處理管線:擷取有關來自一第一組緩衝區的一組圖形物件之一第一組參數;根據處理的一第一階段,在該第一組參數上執行第一組操作,以產生一第二組參數;將該第二組參數儲存在一第二組緩衝區內;根據處理的一第二階段,在該第二組參數上執行第二組操作,以產生一第三組參數;及將該第三組參數儲存在一第三組緩衝區內。
TW102147466A 2013-02-20 2013-12-20 曲面細分及幾何著色器的功率效率屬性處理 TWI633516B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/772,182 US11663767B2 (en) 2013-02-20 2013-02-20 Power efficient attribute handling for tessellation and geometry shaders
US13/772,182 2013-02-20

Publications (2)

Publication Number Publication Date
TW201434011A true TW201434011A (zh) 2014-09-01
TWI633516B TWI633516B (zh) 2018-08-21

Family

ID=51263727

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102147466A TWI633516B (zh) 2013-02-20 2013-12-20 曲面細分及幾何著色器的功率效率屬性處理

Country Status (4)

Country Link
US (1) US11663767B2 (zh)
CN (1) CN103996216A (zh)
DE (1) DE102013020966B4 (zh)
TW (1) TWI633516B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9251557B2 (en) * 2013-06-05 2016-02-02 Nvidia Corporation System, method, and computer program product for recovering from a memory underflow condition associated with generating video signals
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
US20160035128A1 (en) * 2014-08-03 2016-02-04 Mediatek Singapore Pte. Ltd. Graphics processing system for performing deferred vertex attribute shading based on split vertex bitstreams and related graphics processing method
US10600151B2 (en) * 2015-06-05 2020-03-24 Apple Inc. Automatic determination of a region of influence
US10410311B2 (en) * 2016-03-07 2019-09-10 Intel Corporation Method and apparatus for efficient submission of workload to a high performance graphics sub-system
US10853904B2 (en) * 2016-03-24 2020-12-01 Advanced Micro Devices, Inc. Hierarchical register file at a graphics processing unit
US9953395B2 (en) * 2016-08-29 2018-04-24 Intel Corporation On-die tessellation distribution
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978370A (en) * 1997-01-13 1999-11-02 At&Tcorp Circuit-switched switching system
US6070194A (en) * 1997-12-17 2000-05-30 Advanced Micro Devices, Inc. Using an index and count mechanism to coordinate access to a shared resource by interactive devices
US7065630B1 (en) * 2003-08-27 2006-06-20 Nvidia Corporation Dynamically creating or removing a physical-to-virtual address mapping in a memory of a peripheral device
US7000048B2 (en) * 2003-12-18 2006-02-14 Intel Corporation Apparatus and method for parallel processing of network data on a single processing thread
US8184120B2 (en) * 2008-05-19 2012-05-22 Siemens Aktiengesellschaft Framework for processing and rendering large volume data
US8884957B2 (en) 2009-09-09 2014-11-11 Advanced Micro Devices, Inc. Tessellation engine and applications thereof
US8917271B2 (en) * 2009-10-05 2014-12-23 Nvidia Corporation Redistribution of generated geometric primitives
US8786618B2 (en) * 2009-10-08 2014-07-22 Nvidia Corporation Shader program headers
US8427493B2 (en) * 2009-10-13 2013-04-23 Nvidia Corporation Draw commands with built-in begin/end
US8514235B2 (en) 2010-04-21 2013-08-20 Via Technologies, Inc. System and method for managing the computation of graphics shading operations
US8803892B2 (en) * 2010-06-10 2014-08-12 Otoy, Inc. Allocation of GPU resources across multiple clients

Also Published As

Publication number Publication date
DE102013020966B4 (de) 2022-10-13
TWI633516B (zh) 2018-08-21
US20140232729A1 (en) 2014-08-21
DE102013020966A1 (de) 2014-08-21
US11663767B2 (en) 2023-05-30
CN103996216A (zh) 2014-08-20

Similar Documents

Publication Publication Date Title
TWI559729B (zh) 用於低功率圖形著色的像素著色器省略
TWI633516B (zh) 曲面細分及幾何著色器的功率效率屬性處理
TWI537870B (zh) 多重解析度一致性光柵化
TWI515716B (zh) 具備緩衝區限制處理的世界空間與螢幕空間管線間之圖元重新排序
TWI525584B (zh) 多執行緒處理單元內之可程式繫結
TWI529660B (zh) 使用每像素著色器執行緒的高效超取樣
TWI533255B (zh) 快取具有表面壓縮的統一l2快取內之自調適大小快取拼貼
US9293109B2 (en) Technique for storing shared vertices
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
CN109978751A (zh) 多gpu帧渲染
TWI466027B (zh) 解決執行緒發散的方法及系統
TW201432609A (zh) 已分配的拼貼快取
TW201439975A (zh) 在光柵操作中處理後置z覆蓋率資料
US9418616B2 (en) Technique for storing shared vertices
TWI489392B (zh) 多個應用程式分享的圖形處理單元
TW201435591A (zh) 存取內容可定址記憶體之技術
TWI528178B (zh) 用於分析圖形處理管線效能之方法及計算系統
TWI502489B (zh) 叢集多階暫存檔的暫存器分配
US9720842B2 (en) Adaptive multilevel binning to improve hierarchical caching
TWI525438B (zh) 透過貼圖硬體執行記憶體存取操作之技術
TWI611373B (zh) 路徑著色的最佳化三角形拓撲
TW201428676A (zh) 在上游著色器內設定下游著色狀態
TW201439770A (zh) 透過貼圖硬體執行記憶體存取操作之技術
TW201351276A (zh) 計算工作的排程和執行
TW201432571A (zh) 儲存與復原執行緒群組操作狀態之技術