国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于曲面細(xì)分和幾何著色器的電力高效屬性處置的制作方法

      文檔序號(hào):6527003閱讀:307來源:國知局
      用于曲面細(xì)分和幾何著色器的電力高效屬性處置的制作方法
      【專利摘要】公開了用于曲面細(xì)分和幾何著色器的電力高效屬性處置。圖形對(duì)象的屬性在多個(gè)圖形處理管線中進(jìn)行處理。流多處理器(SM)從緩沖區(qū)的第一集合檢索與圖形對(duì)象的集合相關(guān)聯(lián)的參數(shù)的第一集合。SM根據(jù)處理的第一階段對(duì)參數(shù)的所述第一集合實(shí)施操作的第一集合以產(chǎn)生存儲(chǔ)在緩沖區(qū)的第二集合中的參數(shù)的第二集合。SM根據(jù)處理的第二階段對(duì)參數(shù)的第二集合實(shí)施操作的第二集合以產(chǎn)生存儲(chǔ)在緩沖區(qū)的第三集合中的參數(shù)的第三集合。所公開技術(shù)的一個(gè)優(yōu)勢(shì)在于,工作從圖形處理的第一階段到第二階段進(jìn)行重新分布而不必須將屬性拷貝到高速緩存或系統(tǒng)存儲(chǔ)器以及從高速緩存或系統(tǒng)存儲(chǔ)器檢索屬性,這導(dǎo)致功耗降低。
      【專利說明】用于曲面細(xì)分和幾何著色器的電力高效屬性處置
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明總地涉及三維(3D)圖形處理,并且更具體地,涉及用于曲面細(xì)分(tessellation)和幾何著色器的電力高效屬性處置。
      【背景技術(shù)】
      [0002]包括2D和3D圖形對(duì)象的計(jì)算機(jī)生成的圖像典型地使用具有一個(gè)或多個(gè)多級(jí)圖形處理管線的圖形處理單元(GPU)來渲染。這類圖形管線包括各種可編程和固定功能級(jí)??删幊碳?jí)包括各種處理單元,該處理單元執(zhí)行著色器程序以渲染圖形對(duì)象以及生成與圖形對(duì)象相關(guān)聯(lián)的各種視覺效果。
      [0003]為了高效處理,圖形對(duì)象典型地分布在多級(jí)圖形處理管線當(dāng)中,使得每個(gè)圖形處理管線具有接近相同量的工作量。隨著圖形對(duì)象在圖形處理管線中進(jìn)行處理,圖形處理管線中的一個(gè)或多個(gè)中可能存在高度的工作量擴(kuò)張。例如,圖形對(duì)象的表面在被稱為曲面細(xì)分的過程中可被再分成大量較小圖形對(duì)象,諸如三角形。由曲面細(xì)分所產(chǎn)生的較小圖形對(duì)象的數(shù)量可從一個(gè)圖形對(duì)象到另一個(gè)對(duì)象極大地進(jìn)行變化。作為結(jié)果,即使當(dāng)管線的工作量在曲面細(xì)分之前是平衡的時(shí),圖形處理管線的工作量也可在曲面細(xì)分期間變成不平衡的。具有相對(duì)低工作量的圖形處理管線可以提早完成處理。這類圖形處理管線可以進(jìn)入空閑狀態(tài),掛起具有相對(duì)高工作量的圖形處理管線的處理的完成。圖形處理管線當(dāng)中的這類不平衡工作量可能降低GPU的效率。
      [0004]對(duì)于該問題的一個(gè)可能解決方案是在曲面細(xì)分級(jí)處重新平衡圖形處理管線當(dāng)中的工作量。在重新平衡之后,各種圖形對(duì)象的處理然后可由與在重新平衡之前不同的圖形處理管線來處理。在重新平衡之前,圖形處理管線將圖形對(duì)象的屬性從本地存儲(chǔ)器拷貝到高速緩存或系統(tǒng)存儲(chǔ)器。在重新平衡之后,圖形處理管線根據(jù)經(jīng)重新平衡的工作量指派從高速緩存或系統(tǒng)存儲(chǔ)器檢索圖形對(duì)象的屬性并且將屬性拷貝到本地存儲(chǔ)器。該方法的一個(gè)缺點(diǎn)在于,當(dāng)屬性在本地存儲(chǔ)器和高速緩存或系統(tǒng)存儲(chǔ)器之間轉(zhuǎn)移時(shí)消耗電力。在低功率應(yīng)用中,諸如當(dāng)GPU與移動(dòng)設(shè)備相關(guān)聯(lián)時(shí),當(dāng)數(shù)據(jù)被寫到高速緩存或系統(tǒng)存儲(chǔ)器以及從高速緩存或系統(tǒng)存儲(chǔ)器被讀取時(shí)所消耗的電力降低移動(dòng)設(shè)備的電池壽命并且因此降低設(shè)備的可用操作時(shí)間。
      [0005]如前述所示,本領(lǐng)域需要的是用于重新平衡圖形處理管線中的工作量的經(jīng)改進(jìn)技術(shù)。

      【發(fā)明內(nèi)容】

      [0006]本發(fā)明的一個(gè)實(shí)施例闡述用于處理多個(gè)圖形處理管線中的圖形對(duì)象的屬性。方法包括從緩沖區(qū)的第一集合檢索與圖形對(duì)象的集合相關(guān)聯(lián)的參數(shù)的第一集合。方法進(jìn)一步包括根據(jù)處理的第一階段(phase)對(duì)參數(shù)的第一集合實(shí)施操作的第一集合以產(chǎn)生參數(shù)的第二集合,并且將參數(shù)的第二集合存儲(chǔ)在緩沖區(qū)的第二集合中。方法進(jìn)一步包括根據(jù)處理的第二階段對(duì)參數(shù)的第二集合實(shí)施操作的第二集合以產(chǎn)生參數(shù)的第三集合,并且將參數(shù)的第三集合存儲(chǔ)在緩沖區(qū)的第三集合中。
      [0007]其他實(shí)施例包括但不限于,包括指令的計(jì)算機(jī)可讀介質(zhì),指令使處理單元能夠?qū)崿F(xiàn)所公開方法的一個(gè)或多個(gè)方面。其他實(shí)施例包括但不限于,包括配置為實(shí)現(xiàn)所公開方法的一個(gè)或多個(gè)方面的處理單元以及配置為實(shí)現(xiàn)所公開方法的一個(gè)或多個(gè)方面的計(jì)算設(shè)備的子系統(tǒng)。
      [0008]所公開技術(shù)的一個(gè)優(yōu)勢(shì)在于,工作從圖形處理的第一階段到圖形處理的第二階段被單個(gè)流多處理器系統(tǒng)重新分布而不必須將圖形對(duì)象的屬性拷貝到高速緩存和系統(tǒng)存儲(chǔ)器并且然后稍后從這些存儲(chǔ)器中的一個(gè)檢索屬性。將屬性拷貝到遠(yuǎn)程存儲(chǔ)器以及從遠(yuǎn)程存儲(chǔ)器檢索屬性典型地涉及激勵(lì)多級(jí)存儲(chǔ)器層級(jí)中的多個(gè)芯片外存儲(chǔ)器、控制器以及接口部件,所述遠(yuǎn)程存儲(chǔ)器諸如高速緩存和系統(tǒng)存儲(chǔ)器??截惖竭h(yuǎn)程存儲(chǔ)器以及從遠(yuǎn)程存儲(chǔ)器檢索也可涉及將一些部件從低功耗狀態(tài)轉(zhuǎn)變到高功耗狀態(tài)。訪問本地共享存儲(chǔ)器典型地不涉及激勵(lì)或者改變芯片外部件的電力狀態(tài)。因此,所公開技術(shù)降低總功耗并且起到延長移動(dòng)設(shè)備的電池充電周期之間的操作時(shí)間的作用。
      【專利附圖】

      【附圖說明】
      [0009]因此,可以詳細(xì)地理解本發(fā)明的上述特征,并且可以參考示范性實(shí)施例得到對(duì)如上面所簡要概括的本發(fā)明更具體的描述,其中一些實(shí)施例在附圖中示出。然而,應(yīng)當(dāng)注意的是,附圖僅示出了本發(fā)明的典型實(shí)施例,因此不應(yīng)被認(rèn)為是對(duì)其范圍的限制,本發(fā)明可以具有其他等效的實(shí)施例。
      [0010]圖1是示出了配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的框圖;
      [0011]圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于圖1的計(jì)算機(jī)系統(tǒng)的并行處理子系統(tǒng)的框圖;
      [0012]圖3A是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的PPU中的一個(gè)內(nèi)的分區(qū)單元的框圖;
      [0013]圖3B是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的通用處理集群(GPC)內(nèi)的流多處理器(SM)的一部分的框圖;
      [0014]圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的并行處理單元中的一個(gè)或多個(gè)可配置為實(shí)現(xiàn)其的圖形處理管線的示意圖;
      [0015]圖5示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖3B的共享存儲(chǔ)器的分配圖;
      [0016]圖6示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的、圖3B的共享存儲(chǔ)器的分配圖;
      [0017]圖7A-7B闡述了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于重新分布由圖形處理管線所處理的圖形對(duì)象的屬性的方法步驟的流程圖。
      【具體實(shí)施方式】
      [0018]在下面的描述中,將闡述大量的具體細(xì)節(jié)以提供對(duì)本發(fā)明更透徹的理解。然而,本領(lǐng)域的技術(shù)人員應(yīng)該清楚,本發(fā)明可以在沒有一個(gè)或多個(gè)這些具體細(xì)節(jié)的情況下得以實(shí)踐。
      [0019]系統(tǒng)概述
      [0020]圖1是示出了配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)100的框圖。計(jì)算機(jī)系統(tǒng)100包括經(jīng)由可以包括存儲(chǔ)器橋105的互連路徑通信的中央處理單元(CPU) 102和系統(tǒng)存儲(chǔ)器104。存儲(chǔ)器橋105可以是例如北橋芯片,經(jīng)由總線或其他通信路徑106 (例如超傳輸(HyperTransport)鏈路)連接到I/O (輸入/輸出)橋107。I/O橋107,其可以是例如南橋芯片,從一個(gè)或多個(gè)用戶輸入設(shè)備108 (例如鍵盤、鼠標(biāo))接收用戶輸入并且經(jīng)由通信路徑106和存儲(chǔ)器橋105將該輸入轉(zhuǎn)發(fā)到CPU102。并行處理子系統(tǒng)112經(jīng)由總線或第二通信路徑113 (例如外圍部件互連(PCI)Express、加速圖形端口或超傳輸鏈路)耦連到存儲(chǔ)器橋105 ;在一個(gè)實(shí)施例中,并行處理子系統(tǒng)112是將像素傳遞到顯示設(shè)備110的圖形子系統(tǒng),該顯示設(shè)備110可以是任何常規(guī)的基于陰極射線管、液晶顯示器、發(fā)光二極管顯示器等等。系統(tǒng)盤114也連接到I/O橋107并可配置為存儲(chǔ)內(nèi)容應(yīng)用和數(shù)據(jù)用于由CPU102和并行處理子系統(tǒng)112使用。 系統(tǒng)盤114為應(yīng)用和數(shù)據(jù)提供非易失性存儲(chǔ)并且可以包括固定的或可移動(dòng)的硬盤驅(qū)動(dòng)器、閃存設(shè)備以及CD-ROM (壓縮光盤只讀存儲(chǔ)器)、DVD-R0M (數(shù)字多用光盤-ROM)、藍(lán)光、HD-DVD (高清晰度DVD)或其他磁性、光學(xué)或固態(tài)存儲(chǔ)設(shè)備。
      [0021]交換器116提供I/O橋107與諸如網(wǎng)絡(luò)適配器118以及各種插卡120和121的其他部件之間的連接。其他部件(未明確示出),包括通用串行總線(USB)或其他端口連接、壓縮光盤(⑶)驅(qū)動(dòng)器、數(shù)字多用光盤(DVD)驅(qū)動(dòng)器、膠片錄制設(shè)備及類似部件,也可以連接到I/O橋107。圖1所示的各種通信路徑包括具體命名的通信路徑106和113可以使用任何適合的協(xié)議實(shí)現(xiàn),諸如PC1-EXpreSS、AGP (加速圖形端口)、超傳輸或者任何其他總線或點(diǎn)到點(diǎn)通信協(xié)議,并且如本領(lǐng)域已知的,不同設(shè)備間的連接可使用不同協(xié)議。
      [0022]在一個(gè)實(shí)施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于圖形和視頻處理的電路,包括例如視頻輸出電路,并且構(gòu)成圖形處理單元(GPU)。在另一個(gè)實(shí)施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于通用處理的電路,同時(shí)保留底層(underlying)的計(jì)算架構(gòu),本文將更詳細(xì)地進(jìn)行描述。在又一個(gè)實(shí)施例中,可以將并行處理子系統(tǒng)112與一個(gè)或多個(gè)其他系統(tǒng)元件集成在單個(gè)子系統(tǒng)中,諸如結(jié)合存儲(chǔ)器橋105、CPU102以及I/O橋107,以形成片上系統(tǒng)(SoC)。
      [0023]應(yīng)該理解,本文所示系統(tǒng)是示例性的,并且變化和修改都是可能的。連接拓?fù)?,包括橋的?shù)目和布置、CPU102的數(shù)目以及并行處理子系統(tǒng)112的數(shù)目,可根據(jù)需要修改。例如,在一些實(shí)施例中,系統(tǒng)存儲(chǔ)器104直接連接到CPU102而不是通過橋,并且其他設(shè)備經(jīng)由存儲(chǔ)器橋105和CPU102與系統(tǒng)存儲(chǔ)器104通信。在其他替代性拓?fù)渲?,并行處理子系統(tǒng)112連接到I/O橋107或直接連接到CPU102,而不是連接到存儲(chǔ)器橋105。而在其他實(shí)施例中,I/O橋107和存儲(chǔ)器橋105可能被集成到單個(gè)芯片上而不是作為一個(gè)或多個(gè)分立設(shè)備存在。大型實(shí)施例可以包括兩個(gè)或更多個(gè)CPU102以及兩個(gè)或更多個(gè)并行處理子系統(tǒng)112。本文所示的特定部件是可選的;例如,任何數(shù)目的插卡或外圍設(shè)備都可能得到支持。在一些實(shí)施例中,交換器116被去掉,網(wǎng)絡(luò)適配器118和插卡120、121直接連接到I/O橋107。
      [0024]圖2示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的并行處理子系統(tǒng)112。如所示的,并行處理子系統(tǒng)112包括一個(gè)或多個(gè)并行處理單元(PI3U) 202,每個(gè)并行處理單元202都耦連到本地并行處理(PP)存儲(chǔ)器204。通常,并行處理子系統(tǒng)包括U個(gè)PPU,其中U≥1。(本文中,類似對(duì)象的多個(gè)實(shí)例需要時(shí)以標(biāo)識(shí)對(duì)象的參考數(shù)字和標(biāo)識(shí)實(shí)例的括號(hào)中的數(shù)字來表示。)PPU202和并行處理存儲(chǔ)器204可使用一個(gè)或多個(gè)集成電路設(shè)備來實(shí)現(xiàn),諸如可編程處理器、專用集成電路(ASIC)或存儲(chǔ)器設(shè)備,或者以任何其他技術(shù)可行的方式來實(shí)現(xiàn)。
      [0025]再參考圖1以及圖2,在一些實(shí)施例中,并行處理子系統(tǒng)112中的一些或所有PPU202是具有渲染管線的圖形處理器,其可以配置為實(shí)施與下述相關(guān)的各種操作:經(jīng)由存儲(chǔ)器橋105和第二通信路徑113從CPU102和/或系統(tǒng)存儲(chǔ)器104所供應(yīng)的圖形數(shù)據(jù)生成像素?cái)?shù)據(jù),與本地并行處理存儲(chǔ)器204 (可被用作圖形存儲(chǔ)器,包括例如常規(guī)幀緩沖區(qū)(buffer))交互以存儲(chǔ)和更新像素?cái)?shù)據(jù),傳遞像素?cái)?shù)據(jù)到顯示設(shè)備110等等。在一些實(shí)施例中,并行處理子系統(tǒng)112可包括一個(gè)或多個(gè)作為圖形處理器而操作的PPU202以及一個(gè)或多個(gè)用于通用計(jì)算的其他PPU202。這些PTO可以是同樣的或不同的,并且每個(gè)PPU可具有專用并行處理存儲(chǔ)器設(shè)備或不具有專用并行處理存儲(chǔ)器設(shè)備。并行處理子系統(tǒng)112中的一個(gè)或多個(gè)PPU202可輸出數(shù)據(jù)到顯示設(shè)備110,或者并行處理子系統(tǒng)112中的每個(gè)PPU202可輸出數(shù)據(jù)到一個(gè)或多個(gè)顯示設(shè)備110。
      [0026]在操作中,CPU102是計(jì)算機(jī)系統(tǒng)100的主處理器,控制和協(xié)調(diào)其他系統(tǒng)部件的操作。具體地,CPU102發(fā)出控制PPU202的操作的命令。在一些實(shí)施例中,CPU102寫入用于每個(gè)PPU202的命令流到數(shù)據(jù)結(jié)構(gòu)中(在圖1或圖2中未明確示出),該數(shù)據(jù)結(jié)構(gòu)可位于系統(tǒng)存儲(chǔ)器104、并行處理存儲(chǔ)器204、或CPU102和PPU202都可訪問的其他存儲(chǔ)位置中。將指向每個(gè)數(shù)據(jù)結(jié)構(gòu)的指針寫到入棧緩沖區(qū)(pushbuffer)以發(fā)起對(duì)數(shù)據(jù)結(jié)構(gòu)中的命令流的處理。PPU202從一個(gè)或多個(gè)入棧緩沖區(qū)讀取命令流,然后相對(duì)于CPU102的操作異步地執(zhí)行命令。可以經(jīng)由設(shè)備驅(qū)動(dòng)程序103由應(yīng)用程序?yàn)槊總€(gè)入棧緩沖區(qū)指定執(zhí)行優(yōu)先級(jí)以控制對(duì)不同入棧緩沖區(qū)的調(diào)度。
      [0027]現(xiàn)在返回參考圖2和圖1,每個(gè)PPU202包括經(jīng)由連接到存儲(chǔ)器橋105 (或者,在一個(gè)替代性實(shí)施例中,直接連接到CPU102)的通信路徑113與計(jì)算機(jī)系統(tǒng)100的其余部分通信的I/O (輸入/輸出)單元205。PPU202到計(jì)算機(jī)系統(tǒng)100的其余部分的連接也可以變化。在一些實(shí)施例中,并行處理子系統(tǒng)112可實(shí)現(xiàn)為可插入到計(jì)算機(jī)系統(tǒng)100的擴(kuò)展槽中的插卡。在其他實(shí)施例中,PPU202可以和諸如存儲(chǔ)器橋105或I/O橋107的總線橋集成在單個(gè)芯片上。而在其他實(shí)施例中,PPU202的一些或所有元件可以和CPU102集成在單個(gè)芯片上。
      [0028]在一個(gè)實(shí)施例中,通信路徑113是PCI Express鏈路,如本領(lǐng)域所知的,其中專用通道被分配到每個(gè)PPU202。也可以使用其他通信路徑。I/O單元205生成用于在通信路徑113上傳送的包(或其他信號(hào)),并且還從通信路徑113接收所有傳入的包(或其他信號(hào)),將傳入的包引導(dǎo)到PPU202的適當(dāng)部件。例如,可將與處理任務(wù)相關(guān)的命令引導(dǎo)到主機(jī)接口206,而將與存儲(chǔ)器操作相關(guān)的命令(例如,對(duì)并行處理存儲(chǔ)器204的讀取或?qū)懭?引導(dǎo)到存儲(chǔ)器交叉開關(guān)單元210。主機(jī)接口 206讀取每個(gè)入棧緩沖區(qū),并且將存儲(chǔ)在入棧緩沖區(qū)中的命令流輸出到前端212。
      [0029]有利地,每個(gè)PPU202都實(shí)現(xiàn)高度并行處理架構(gòu)。如詳細(xì)示出的,PPU202 (O)包括處理集群陣列230,該陣列230包括C個(gè)通用處理集群(GPC)208,其中C≥I。每個(gè)GPC208能夠并發(fā)執(zhí)行大量的(例如,幾百或幾千)線程,其中每個(gè)線程是程序的實(shí)例(instance)。在各種應(yīng)用中,可分配不同的GPC208用于處理不同類型的程序或用于實(shí)施不同類型的計(jì)算。GPC208的分配可以取決于因每種類型的程序或計(jì)算所產(chǎn)生的工作量而變化。
      [0030] GPC208從任務(wù)/工作單元207內(nèi)的工作分布單元接收所要執(zhí)行的處理任務(wù)。工作分布單元接收指向編碼為任務(wù)元數(shù)據(jù)(TMD)并存儲(chǔ)在存儲(chǔ)器中的處理任務(wù)的指針。指向TMD的指針包括在存儲(chǔ)為入棧緩沖區(qū)并由前端單元212從主機(jī)接口 206接收的命令流中??梢跃幋a為TMD的處理任務(wù)包括所要處理的數(shù)據(jù)的索引,以及定義數(shù)據(jù)將被如何處理(例如,什么程序?qū)⒈粓?zhí)行)的狀態(tài)參數(shù)和命令。任務(wù)/工作單元207從前端212接收任務(wù)并確保在每一個(gè)TMD所指定的處理發(fā)起前,將GPC208配置為有效狀態(tài)??梢詾槊總€(gè)TMD指定用來調(diào)度處理任務(wù)的執(zhí)行的優(yōu)先級(jí)。還可從處理集群陣列230接收處理任務(wù)??蛇x地,TMD可包括控制將TMD添加到處理任務(wù)列表(或指向處理任務(wù)的指針的列表)的頭部還是尾部的參數(shù),從而提供除優(yōu)先級(jí)以外的另一級(jí)別的控制。
      [0031]存儲(chǔ)器接口 214包括D個(gè)分區(qū)單元215,每個(gè)分區(qū)單元215直接耦連到并行處理存儲(chǔ)器204的一部分,其中D > I。如所示的,分區(qū)單元215的數(shù)目一般等于動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM) 220的數(shù)目。在其他實(shí)施例中,分區(qū)單元215的數(shù)目也可以不等于存儲(chǔ)器設(shè)備的數(shù)目。本領(lǐng)域的普通技術(shù)人員應(yīng)該理解DRAM220可以用其他合適的存儲(chǔ)設(shè)備來替代并且可以是一般常規(guī)的設(shè)計(jì)。因此省略了詳細(xì)描述。諸如幀緩沖區(qū)或紋理映射圖的渲染目標(biāo)可以跨DRAM220加以存儲(chǔ),這允許分區(qū)單元215并行寫入每個(gè)渲染目標(biāo)的各部分以有效地使用并行處理存儲(chǔ)器204的可用帶寬。
      [0032]任何一個(gè)GPC208都可以處理要被寫到并行處理存儲(chǔ)器204內(nèi)的任何DRAM220的數(shù)據(jù)。交叉開關(guān)單元210配置為路由每個(gè)GPC208的輸出到任何分區(qū)單元215的輸入或到另一個(gè)GPC208用于進(jìn)一步處理。GPC208通過交叉開關(guān)單元210與存儲(chǔ)器接口 214通信,以對(duì)各種外部存儲(chǔ)器設(shè)備進(jìn)行讀取或?qū)懭?。在一個(gè)實(shí)施例中,交叉開關(guān)單元210具有到存儲(chǔ)器接口 214的連接以和I/O單元205通信,以及到本地并行處理存儲(chǔ)器204的連接,從而使得在不同GPC208內(nèi)的處理內(nèi)核能夠與系統(tǒng)存儲(chǔ)器104或?qū)τ赑PU202而言非本地的其他存儲(chǔ)器通信。在圖2所示的實(shí)施例中,交叉開關(guān)單元210直接與I/O單元205連接。交叉開關(guān)單元210可使用虛擬信道來分開GPC208與分區(qū)單元215之間的業(yè)務(wù)流。
      [0033]另外,GPC208可被編程以執(zhí)行與種類繁多的應(yīng)用相關(guān)的處理任務(wù),包括但不限于,線性和非線性數(shù)據(jù)變換、視頻和/或音頻數(shù)據(jù)過濾、建模操作(例如,應(yīng)用物理定律以確定對(duì)象的位置、速率和其他屬性)、圖像渲染操作(例如,曲面細(xì)分著色器、頂點(diǎn)著色器、幾何著色器、和/或像素著色器程序)等等。PPU202可將數(shù)據(jù)從系統(tǒng)存儲(chǔ)器104和/或本地并行處理存儲(chǔ)器204轉(zhuǎn)移到內(nèi)部(片上)存儲(chǔ)器中,處理該數(shù)據(jù),并且將結(jié)果數(shù)據(jù)寫回到系統(tǒng)存儲(chǔ)器104和/或本地并行處理存儲(chǔ)器204,其中這樣的數(shù)據(jù)可以由其他系統(tǒng)部件訪問,所述其他系統(tǒng)部件包括CPU102或另一個(gè)并行處理子系統(tǒng)112。
      [0034]PPU202可配備有任何容量(amount)的本地并行處理存儲(chǔ)器204,包括沒有本地存儲(chǔ)器,并且可以以任何組合方式使用本地存儲(chǔ)器和系統(tǒng)存儲(chǔ)器。例如,在統(tǒng)一存儲(chǔ)器架構(gòu)(UMA)實(shí)施例中,PPU202可以是圖形處理器。在這樣的實(shí)施例中,將不提供或幾乎不提供專用的圖形(并行處理)存儲(chǔ)器,并且PPU202會(huì)以排他或幾乎排他的方式使用系統(tǒng)存儲(chǔ)器。在UMA實(shí)施例中,PPU202可集成到橋式芯片中或處理器芯片中,或作為具有高速鏈路(例如,PCI Express)的分立芯片提供,所述高速鏈路經(jīng)由橋式芯片或其他通信手段將PPU202連接到系統(tǒng)存儲(chǔ)器。
      [0035]如上所示,在并行處理子系統(tǒng)112中可以包括任何數(shù)目的PPU202。例如,可在單個(gè)插卡上提供多個(gè)PPU202、或可將多個(gè)插卡連接到通信路徑113、或可將一個(gè)或多個(gè)PPU202集成到橋式芯片中。在多PPU系統(tǒng)中的PPU202可以彼此同樣或不同。例如,不同的PPU202可能具有不同數(shù)目的處理內(nèi)核、不同容量的本地并行處理存儲(chǔ)器等等。在存在多個(gè)PPU202的情況下,可并行操作那些PI3U從而以高于單個(gè)PPU202所可能達(dá)到的吞吐量來處理數(shù)據(jù)。包含一個(gè)或多個(gè)PPU202的系統(tǒng)可以以各種配置和形式因素來實(shí)現(xiàn),包括臺(tái)式電腦、筆記本電腦或手持式個(gè)人計(jì)算機(jī)、服務(wù)器、工作站、游戲控制臺(tái)、嵌入式系統(tǒng)等等。
      [0036]圖3A是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的PPU中的一個(gè)內(nèi)的分區(qū)單元215的框圖。如所示,分區(qū)單元215包括L2高速緩存350、幀緩沖區(qū)(FB)DRAM接口 355以及光柵操作單元(R0P)360。L2高速緩存350是配置為實(shí)施從交叉開關(guān)單元210和R0P360所接收的加載和存儲(chǔ)操作。讀未命中和緊急回寫請(qǐng)求由L2高速緩存350輸出到FB DRAM接口 355用于處理。臟(dirty)更新也發(fā)送到FB355用于伺機(jī)性(opportunistic)處理。FB355直接與DRAM220配合,輸出讀和寫請(qǐng)求以及接收從DRAM220所讀取的數(shù)據(jù)。
      [0037]在圖形應(yīng)用中,R0P360是實(shí)施光柵操作以及輸出像素?cái)?shù)據(jù)作為經(jīng)處理的圖形數(shù)據(jù)用于圖形存儲(chǔ)器中的存儲(chǔ)的處理單元,所述光柵操作諸如模板、z測(cè)試、混合等等。在本發(fā)明的實(shí)施例中,ROP包括在每個(gè)GPC208而不是分區(qū)單元215內(nèi),并且像素讀和寫請(qǐng)求在交叉開關(guān)單元210而不是像素片段數(shù)據(jù)之上進(jìn)行傳送。
      [0038]經(jīng)處理的圖形數(shù)據(jù)可以顯示在顯示設(shè)備110上或者被路由用于由CPU102或由并行處理子系統(tǒng)112內(nèi)的處理實(shí)體中的一個(gè)進(jìn)一步處理。每個(gè)分區(qū)單元215包括R0P360以分布光柵操作的處理。在一些實(shí)施例中,R0P360可配置為壓縮被寫到存儲(chǔ)器的z或顏色數(shù)據(jù)以及解壓縮從存儲(chǔ)器所讀取的z或顏色數(shù)據(jù)。
      [0039]圖3B為根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的通用處理集群(GPC) 208內(nèi)的流多處理器(SM)310的一部分的框圖。每個(gè)GPC208可配置為并行執(zhí)行大量線程,其中術(shù)語“線程”是指在特定輸入數(shù)據(jù)集上執(zhí)行的特定程序的實(shí)例。在一些實(shí)施例中,單指令、多數(shù)據(jù)(SMD)指令發(fā)出技術(shù)用于在不提供多個(gè)獨(dú)立指令單元的情況下支持大量線程的并行執(zhí)行。在其他實(shí)施例中,單指令、多線程(SMT)技術(shù)用于使用配置為向GPC208中的每一個(gè)內(nèi)的處理引擎集發(fā)出指令的公共指令單元來支持大量一般來說同步的線程的并行執(zhí)行。不同于所有處理引擎通常都執(zhí)行同樣指令的SMD執(zhí)行機(jī)制,SIMT執(zhí)行通過給定線程程序允許不同線程更容易跟隨分散執(zhí)行路徑。本領(lǐng)域普通技術(shù)人員應(yīng)該理解SMD處理機(jī)制代表SMT處理機(jī)制的功能子集。
      [0040]經(jīng)由將處理任務(wù)分布到一個(gè)或多個(gè)流多處理器(SM)310的管線管理器(未示出)來有利地控制GPC208的操作。其中每個(gè)SM310配置為處理一個(gè)或多個(gè)線程組。每個(gè)SM310包括配置為經(jīng)由GPC208內(nèi)的L1.5高速緩存(未示出)從存儲(chǔ)器接收指令和常量的LI高速緩存370。線程束(warp)調(diào)度器和指令單元312從指令LI高速緩存370接收指令和常量并且根據(jù)指令和常量來控制本地寄存器堆304和SM310功能單元。SM310功能單元包括N個(gè)exec (執(zhí)行或處理)單元302和P個(gè)加載-存儲(chǔ)單元(LSU) 303。SM功能單元可以是管線化的,其允許在前一個(gè)指令完成之前發(fā)出新指令。可提供功能執(zhí)行單元的任何組合。在一個(gè)實(shí)施例中,功能單元支持各種各樣的操作,包括整數(shù)和浮點(diǎn)運(yùn)算(例如加法和乘法)、比較操作、布爾操作(AND、0R、X0R)、移位和各種代數(shù)函數(shù)的計(jì)算(例如平面插值、三角函數(shù)、指數(shù)函數(shù)和對(duì)數(shù)函數(shù)等等);以及相同功能單元硬件可均衡地用來實(shí)施不同的操作。
      [0041]如本文之前所定義的,傳送到特定GPC208的一系列指令構(gòu)成線程,并且跨SM310內(nèi)的并行處理引擎(未示出)的某一數(shù)目的并發(fā)執(zhí)行線程的集合在本文中稱為“線程束”或“線程組”。如本文所使用的,“線程組”是指對(duì)不同輸入數(shù)據(jù)并發(fā)執(zhí)行相同程序的一組線程,所述組的一個(gè)線程被指派到SM310內(nèi)的不同處理引擎。線程組可以包括比SM310內(nèi)的處理引擎數(shù)目少的線程,在這種情況下一些處理引擎將在該線程組正在被處理的周期期間處于閑置狀態(tài)。線程組還可以包括比SM310內(nèi)的處理引擎數(shù)目多的線程,在這種情況下處理將在連續(xù)的時(shí)鐘周期內(nèi)發(fā)生。因?yàn)槊總€(gè)SM310可以并發(fā)支持多達(dá)G個(gè)線程組,結(jié)果是包括M個(gè)流多處理器310的GPC208中的系統(tǒng)在任何給定時(shí)間在GPC208中可以執(zhí)行多達(dá)G*M個(gè)線程組。
      [0042]此外,多個(gè)相關(guān)線程組可以在SM310內(nèi)同時(shí)活動(dòng)(在執(zhí)行的不同階段)。該線程組集合在本文中稱為“協(xié)作線程陣列”(“CTA”)或“線程陣列”。特定CTA的大小等于m*k,其中k是線程組中并發(fā)執(zhí)行線程的數(shù)目并且通常是SM310內(nèi)的并行處理引擎數(shù)目的整數(shù)倍,以及m是SM310內(nèi)同時(shí)活動(dòng)的線程組的數(shù)目。CTA的大小一般由編程者以及可用于CTA的硬件資源諸如存儲(chǔ)器或寄存器的容量來確定。
      [0043]在本發(fā)明的實(shí)施例中,使用計(jì)算系統(tǒng)的PPU202或其他處理器來使用線程陣列執(zhí)行通用計(jì)算是可取的。為線程陣列中的每個(gè)線程指派在線程的執(zhí)行期間對(duì)于線程可訪問的唯一的線程標(biāo)識(shí)符(“線程ID”)??杀欢x為一維或多維數(shù)值的線程ID控制線程處理行為的各方面。例如,線程ID可用于確定線程將要處理輸入數(shù)據(jù)集的哪部分和/或確定線程將要產(chǎn)生或?qū)戄敵鰯?shù)據(jù)集的哪部分。
      [0044]每線程指令序列可包括定義線程陣列的代表性線程和一個(gè)或多個(gè)其他線程之間的協(xié)作行為的至少一個(gè)指令。例如,每線程指令序列可能包括在序列中的特定點(diǎn)處掛起用于代表性線程的操作執(zhí)行直到諸如其他線程的一個(gè)或多個(gè)到達(dá)該特定點(diǎn)的時(shí)間為止的指令、用于代表性線程將數(shù)據(jù)存儲(chǔ)在其他線程的一個(gè)或多個(gè)有權(quán)訪問的共享存儲(chǔ)器中的指令、用于代表性線程原子地讀取和更新存儲(chǔ)在其他線程的一個(gè)或多個(gè)基于它們的線程ID有權(quán)訪問的共享存儲(chǔ)器中的數(shù)據(jù)的指令等等。CTA程序還可以包括計(jì)算數(shù)據(jù)將從其讀取的共享存儲(chǔ)器中的地址的指令,該地址是線程ID的函數(shù)。通過定義合適的函數(shù)并提供同步技術(shù),可以以可預(yù)測(cè)的方式由CTA的一個(gè)線程將數(shù)據(jù)寫入共享存儲(chǔ)器中的給定位置并由同一個(gè)CTA的不同線程從該位置讀取數(shù)據(jù)。因此,數(shù)據(jù)在線程之間共享的任何期望模式可以得到支持,以及CTA中的任何線程可以與同一個(gè)CTA中的任何其他線程共享數(shù)據(jù)。如果存在數(shù)據(jù)在CTA的線程之間的共享,則其范圍由CTA程序確定;因此,應(yīng)該理解的是,在使用CTA的特定應(yīng)用中,CTA的線程可能會(huì)或可能不會(huì)真正互相共享數(shù)據(jù),這取決于CTA程序,術(shù)語“CTA”和“線程陣列”在本文作為同義詞使用。
      [0045]SM310提供具有不同級(jí)別的可訪問性的片上(內(nèi)部)數(shù)據(jù)存儲(chǔ)。特殊寄存器(未示出)對(duì)于LSU303可讀但不可寫并且用于存儲(chǔ)定義每個(gè)線程的“位置”的參數(shù)。在一個(gè)實(shí)施例中,特殊寄存器包括每線程(或SM310內(nèi)的每exec單元302) —個(gè)的存儲(chǔ)線程ID的寄存器;每個(gè)線程ID寄存器僅由各自的exec單元302可訪問。特殊寄存器還可以包括附加寄存器,其對(duì)于執(zhí)行由任務(wù)元數(shù)據(jù)(TMD)(未示出)所代表的同一個(gè)處理任務(wù)的所有線程(或由所有LSU303)可讀,其存儲(chǔ)CTA標(biāo)識(shí)符、CTA維數(shù)、CTA所屬網(wǎng)格(grid)的維數(shù)(或隊(duì)列位置,如果TMD編碼隊(duì)列任務(wù)而不是網(wǎng)格任務(wù)的話)、以及CTA被指派到的TMD的標(biāo)識(shí)符。
      [0046]如果TMD是網(wǎng)格TMD,則TMD的執(zhí)行會(huì)啟動(dòng)和執(zhí)行固定數(shù)目的CTA以處理存儲(chǔ)在隊(duì)列525中的固定量的數(shù)據(jù)。將CTA的數(shù)目指定為網(wǎng)格寬度、高度和深度的乘積??梢詫⒐潭康臄?shù)據(jù)存儲(chǔ)在TMD中或TMD可以存儲(chǔ)指向?qū)⒂蒀TA所處理的數(shù)據(jù)的指針。TMD還存儲(chǔ)由CTA所執(zhí)行的程序的開始地址。[0047]如果TMD是隊(duì)列TMD,那么使用TMD的隊(duì)列特點(diǎn),這意味著將要被處理的數(shù)據(jù)量不一定是固定的。隊(duì)列條目存儲(chǔ)用于由指派到TMD的CTA所處理的數(shù)據(jù)。隊(duì)列條目還可以代表在線程執(zhí)行期間由另一個(gè)TMD所生成的子任務(wù),從而提供嵌套并行性。通常線程或包括線程的CTA的執(zhí)行被掛起直到子任務(wù)的執(zhí)行完成??梢詫㈥?duì)列存儲(chǔ)在TMD中或與TMD分開存儲(chǔ),在該情況下TMD存儲(chǔ)指向該隊(duì)列的隊(duì)列指針。有利地,當(dāng)代表子任務(wù)的TMD正在執(zhí)行時(shí)可以將由子任務(wù)所生成的數(shù)據(jù)寫到隊(duì)列。隊(duì)列可以實(shí)現(xiàn)為循環(huán)隊(duì)列以使得數(shù)據(jù)的總量不限于隊(duì)列的大小。
      [0048]屬于網(wǎng)格的CTA具有指示網(wǎng)格內(nèi)各自CTA的位置的隱含網(wǎng)格寬度、高度和深度參數(shù)。在初始化期間響應(yīng)于經(jīng)由前端212從設(shè)備驅(qū)動(dòng)程序103所接收的命令來寫特殊寄存器并且在處理任務(wù)的執(zhí)行期間特殊寄存器不改變。前端212調(diào)度每個(gè)處理任務(wù)用于執(zhí)行。每個(gè)CTA與具體TMD相關(guān)聯(lián)用于一個(gè)或多個(gè)任務(wù)的并發(fā)執(zhí)行。此外,單個(gè)GPC208可以并發(fā)執(zhí)行多個(gè)任務(wù)。
      [0049]參數(shù)存儲(chǔ)器(未示出)存儲(chǔ)可由同一個(gè)CTA內(nèi)的任何線程(或任何LSU303)讀取但不可由其寫入的運(yùn)行時(shí)間參數(shù)(常量)。在一個(gè)實(shí)施例中,設(shè)備驅(qū)動(dòng)程序103在引導(dǎo)SM310開始執(zhí)行使用參數(shù)的任務(wù)之前將這些參數(shù)提供給參數(shù)存儲(chǔ)器。任何CTA內(nèi)的任何線程(或SM310內(nèi)的任何exec單元302)可以通過存儲(chǔ)器接口 214訪問全局存儲(chǔ)器??梢詫⑷执鎯?chǔ)器的各部分存儲(chǔ)在LI高速緩存320中。
      [0050]每個(gè)線程將本地寄存器堆304用作暫存空間;每個(gè)寄存器被分配以專用于一個(gè)線程,并且在本地寄存器堆304的任何部分中的數(shù)據(jù)僅對(duì)于寄存器被分配到的線程可訪問。本地寄存器堆304可以實(shí)現(xiàn)為物理上或邏輯上分為P個(gè)通道的寄存器堆,每個(gè)通道具有一定數(shù)目的條目(其中每個(gè)條目可以存儲(chǔ)例如32位字)。將一個(gè)通道指派到N個(gè)exec單元302和P個(gè)下載-存儲(chǔ)單元LSU303的每一個(gè),并且利用用于執(zhí)行同一個(gè)程序的不同線程的數(shù)據(jù)來填充不同通道中的相應(yīng)條目以幫助SIMD執(zhí)行。可以將通道的不同部分分配到G個(gè)并發(fā)線程組中的不同線程組,以使得本地寄存器堆304中的給定條目僅對(duì)于特定線程可訪問。在一個(gè)實(shí)施例中,保留本地寄存器堆304內(nèi)的某些條目用于存儲(chǔ)線程標(biāo)識(shí)符,實(shí)現(xiàn)特殊寄存器之一。此外,一致LI高速緩存375存儲(chǔ)用于N個(gè)exec單元302和P個(gè)下載-存儲(chǔ)單元LSU303的每個(gè)通道的一致值或常量值。
      [0051]共享存儲(chǔ)器306對(duì)于單個(gè)CTA內(nèi)的線程可訪問;換言之,共享存儲(chǔ)器306中的任何位置對(duì)于同一個(gè)CTA內(nèi)的任何線程(或?qū)τ赟M310內(nèi)的任何處理引擎)可訪問。共享存儲(chǔ)器306可以實(shí)現(xiàn)為具有允許任何處理引擎對(duì)共享存儲(chǔ)器中的任何位置讀取或?qū)懭氲幕ミB的共享寄存器堆或共享片上高速緩存存儲(chǔ)器。在其他實(shí)施例中,共享狀態(tài)空間可能映射到片外存儲(chǔ)器的每CTA區(qū)上并被高速緩存在LI高速緩存320中。參數(shù)存儲(chǔ)器可以實(shí)現(xiàn)為在實(shí)現(xiàn)共享存儲(chǔ)器306的同一個(gè)共享寄存器堆或共享高速緩存存儲(chǔ)器內(nèi)的指定部分,或者實(shí)現(xiàn)為LSU303對(duì)其具有只讀訪問權(quán)限的分開的共享寄存器堆或片上高速緩存存儲(chǔ)器。在一個(gè)實(shí)施例中,實(shí)現(xiàn)參數(shù)存儲(chǔ)器的區(qū)域還用于存儲(chǔ)CTA ID和任務(wù)ID,以及CTA和網(wǎng)格維數(shù)或隊(duì)列位置,實(shí)現(xiàn)特殊寄存器的各部分。SM310中的每個(gè)LSU303耦連到統(tǒng)一地址映射單元352,統(tǒng)一地址映射單元352將為在統(tǒng)一存儲(chǔ)器空間中所指定的加載和存儲(chǔ)指令所提供的地址轉(zhuǎn)換為每個(gè)各異存儲(chǔ)器空間中的地址。因此,指令可以用于通過指定統(tǒng)一存儲(chǔ)器空間中的地址來訪問本地、共享或全局存儲(chǔ)器空間中的任何一個(gè)。[0052]每個(gè)SM310中的LI高速緩存320可以用于高速緩存私有的每線程本地?cái)?shù)據(jù)還有每應(yīng)用全局?jǐn)?shù)據(jù)。在一些實(shí)施例中,可以將每CTA共享數(shù)據(jù)高速緩存在LI高速緩存320中。LSU303經(jīng)由存儲(chǔ)器和高速緩存互連380耦連到共享存儲(chǔ)器306和LI高速緩存320。
      [0053]應(yīng)該理解,本文所描述的核心架構(gòu)是示例性的并且變化和修改是可能的。任何數(shù)目的處理單元例如SM310可以包括在GPC208內(nèi)。進(jìn)一步地,如圖2所示,PPU202可以包括任何數(shù)目的GPC208,其有利地功能上彼此類似使得執(zhí)行行為不取決于哪個(gè)GPC208接收特定處理任務(wù)。進(jìn)一步地,每個(gè)GPC208有利地使用分開并且各異的處理單元、LI高速緩存獨(dú)立于其他GPC208進(jìn)行操作以執(zhí)行用于一個(gè)或多個(gè)應(yīng)用程序的任務(wù)。
      [0054]本領(lǐng)域普通技術(shù)人員將理解的是,圖1-3B所描述的架構(gòu)決不限制本發(fā)明的范圍并且本文所教導(dǎo)的技術(shù)可以實(shí)現(xiàn)在任何經(jīng)適當(dāng)配置的處理單元上而不脫離本發(fā)明的范圍,所述處理單元包括但不限于一個(gè)或多個(gè)CPU、一個(gè)或多個(gè)多核心CPU、一個(gè)或多個(gè)PPU202、一個(gè)或多個(gè)GPC208、一個(gè)或多個(gè)圖形或?qū)S锰幚韱卧鹊取?br> [0055]圖形管線架構(gòu)
      [0056]圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的PPU202中的一個(gè)或多個(gè)可配置為實(shí)現(xiàn)其的圖形處理管線400的示意圖。例如,SM310中的一個(gè)可配置為實(shí)現(xiàn)以下各項(xiàng)中的一個(gè)或多個(gè)的各功能:頂點(diǎn)處理單元415、曲面細(xì)分初始化處理單元420、曲面細(xì)分處理單元440、幾何處理單元445以及片段處理單元460。基元分布器和頂點(diǎn)屬性獲取410、任務(wù)生成單元425、任務(wù)分布器430、拓?fù)渖蓡卧?35、視口縮放、剔除以及修剪單元450、光柵器455以及光柵操作單元465的各功能也可由GPC208內(nèi)的其他處理引擎以及相應(yīng)的分區(qū)單元215來實(shí)施。替代地,圖形處理管線400可以使用用于一個(gè)或多個(gè)功能的專用處理單元來實(shí)現(xiàn)。
      [0057]圖形處理管線400還包括在圖形處理管線400當(dāng)中共享的本地存儲(chǔ)器。例如,圖形處理管線可以使用SM310內(nèi)的共享存儲(chǔ)器306作為這類本地存儲(chǔ)器。如下文進(jìn)一步所描述的,共享存儲(chǔ)器306內(nèi)的級(jí)間緩沖區(qū)(未示出)由圖形處理管線400內(nèi)的各處理單元按需要進(jìn)行分配和解除分配。處理單元從一個(gè)或多個(gè)級(jí)間緩沖區(qū)讀取輸入數(shù)據(jù),處理輸入數(shù)據(jù)以產(chǎn)生輸出數(shù)據(jù),以及將產(chǎn)生的輸出數(shù)據(jù)存儲(chǔ)在一個(gè)或多個(gè)級(jí)間緩沖區(qū)中。隨后的處理單元處理數(shù)據(jù)并且將輸出數(shù)據(jù)存儲(chǔ)在一個(gè)或多個(gè)級(jí)間緩沖區(qū)中等等。共享存儲(chǔ)器306和圖形處理管線的各其他級(jí)經(jīng)由存儲(chǔ)器接口 214與外部存儲(chǔ)器連接。
      [0058]基元分布器和頂點(diǎn)屬性獲取410處理單元采集用于高階表面的頂點(diǎn)數(shù)據(jù)、基元等等,并且將包括頂點(diǎn)屬性的頂點(diǎn)數(shù)據(jù)輸出到頂點(diǎn)處理單元415。在一些實(shí)施例中,基元分布器和頂點(diǎn)屬性獲取410可以包括經(jīng)由存儲(chǔ)器接口 214檢索頂點(diǎn)屬性和存儲(chǔ)頂點(diǎn)屬性的頂點(diǎn)屬性獲取單元。在其他實(shí)施例中,基元分布器和頂點(diǎn)屬性獲取410可以包括頂點(diǎn)屬性獲取單元,其從共享存儲(chǔ)器306檢索頂點(diǎn)屬性并且將頂點(diǎn)屬性存儲(chǔ)在共享存儲(chǔ)器306中。頂點(diǎn)處理單元415是可編程執(zhí)行單元,其配置為執(zhí)行頂點(diǎn)著色器程序,照明和變換如由頂點(diǎn)著色器程序所指定的頂點(diǎn)數(shù)據(jù)。例如,頂點(diǎn)處理單元415可被編程以將頂點(diǎn)數(shù)據(jù)從基于對(duì)象的坐標(biāo)表示(對(duì)象空間)變換到可替代地基于的坐標(biāo)系,諸如世界空間或規(guī)格化設(shè)備坐標(biāo)(NDC)空間。頂點(diǎn)處理單元415可通過基元分布器和頂點(diǎn)屬性獲取410來讀取存儲(chǔ)在共享存儲(chǔ)器306、LI高速緩存320、并行處理存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中的數(shù)據(jù)用于在處理頂點(diǎn)數(shù)據(jù)中使用。頂點(diǎn)處理單元415將經(jīng)處理的頂點(diǎn)存儲(chǔ)在共享存儲(chǔ)器306內(nèi)的級(jí)間緩沖區(qū)中。[0059]曲面細(xì)分初始化處理單元420是配置為執(zhí)行曲面細(xì)分初始化著色器程序的可編程執(zhí)行單元。曲面細(xì)分初始化處理單元420處理由頂點(diǎn)處理單元415所產(chǎn)生的頂點(diǎn)并且生成被稱為補(bǔ)丁(patch)的圖形基元。曲面細(xì)分初始化處理單元420還生成各種補(bǔ)丁屬性。曲面細(xì)分初始化處理單元420然后將補(bǔ)丁數(shù)據(jù)和補(bǔ)丁屬性存儲(chǔ)在共享存儲(chǔ)器306內(nèi)的級(jí)間緩沖區(qū)中。在一些實(shí)施例中,曲面細(xì)分初始化著色器程序可以叫做外殼(hull)著色器或曲面細(xì)分控制著色器。
      [0060]任務(wù)生成單元425檢索用于來自共享存儲(chǔ)器306的級(jí)間緩沖區(qū)的頂點(diǎn)和補(bǔ)丁的數(shù)據(jù)和屬性。任務(wù)生成單元425生成用于處理頂點(diǎn)的任務(wù)以及用于由圖形處理管線400中的稍后的級(jí)處理的補(bǔ)丁。
      [0061]任務(wù)分布器430重新分布由任務(wù)生成單元425所產(chǎn)生的任務(wù)。由頂點(diǎn)著色器程序和曲面細(xì)分初始化程序的各實(shí)例所產(chǎn)生的任務(wù)可以在一個(gè)圖形處理管線400和另一個(gè)圖形處理管線400之間顯著地變化。任務(wù)分布器430重新分布這些任務(wù),使得每個(gè)圖形處理管線400在稍后管線級(jí)期間具有接近相同的工作量。
      [0062]拓?fù)渖蓡卧?35檢索由任務(wù)分布器430所分布的任務(wù)。拓?fù)渖蓡卧?35對(duì)包括與補(bǔ)丁相關(guān)聯(lián)的頂點(diǎn)的頂點(diǎn)進(jìn)行索引并且計(jì)算用于連接經(jīng)曲面細(xì)分的頂點(diǎn)以形成圖形基元的索引和曲面細(xì)分頂點(diǎn)的(U、V)坐標(biāo)。拓?fù)渖蓡卧?35然后將經(jīng)索引的頂點(diǎn)存儲(chǔ)在共享存儲(chǔ)器306內(nèi)的級(jí)間緩沖區(qū)中。
      [0063]曲面細(xì)分處理單元440是配置為執(zhí)行曲面細(xì)分著色器程序的可編程執(zhí)行單元。曲面細(xì)分處理單元440從共享存儲(chǔ)器306的級(jí)間緩沖區(qū)讀取輸入數(shù)據(jù)并且將輸出數(shù)據(jù)寫到共享存儲(chǔ)器306的級(jí)間緩沖區(qū)。級(jí)間緩沖區(qū)中的該輸出數(shù)據(jù)被移交到下一個(gè)著色器級(jí)幾何處理單元445作為輸入數(shù)據(jù)。在一些實(shí)施例中,曲面細(xì)分著色器程序可以叫做域著色器或曲面細(xì)分評(píng)估著色器。
      [0064]幾何處理單元445是配置為執(zhí)行幾何著色器程序從而變換圖形基元的可編程執(zhí)行單元。頂點(diǎn)被分組以構(gòu)建圖形基元用于處理,其中圖形基元包括三角形、線段、點(diǎn)等等。例如,幾何處理單元445可經(jīng)編程以將圖形基元再分成一個(gè)或多個(gè)新圖形基元以及計(jì)算用來將新圖形基元進(jìn)行光柵化的參數(shù),諸如平面方程系數(shù)。
      [0065]在一些實(shí)施例中,幾何處理單元445也可以添加或刪除幾何流中的元素。幾何處理單元445將指定新圖形基元的參數(shù)和頂點(diǎn)輸出到視口縮放、剔除以及修剪單元450。幾何處理單元445可以讀取存儲(chǔ)在共享存儲(chǔ)器306、并行處理存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中的數(shù)據(jù)用于在處理幾何數(shù)據(jù)中使用。視口縮放、剔除和修剪單元450實(shí)施修剪、剔除和視口變換并且將經(jīng)處理的圖形基元輸出到光柵器455。
      [0066]光柵器455掃描對(duì)新圖形基元進(jìn)行轉(zhuǎn)換并且將片段和覆蓋數(shù)據(jù)輸出到片段處理單元460。此外,光柵器455可配置為實(shí)施z剔除以及其他基于z的優(yōu)化。
      [0067]片段處理單元460是配置為執(zhí)行片段著色器程序的可編程執(zhí)行單元,其變換由片段著色器程序所指定、從光柵器455所接收的片段。例如,片段處理單元460可被編程以實(shí)施諸如透視校正、紋理映射、著色、混合等等的操作以產(chǎn)生被輸出到光柵操作單元465的經(jīng)著色片段。片段處理單元460可以讀取存儲(chǔ)在共享存儲(chǔ)器306、并行處理存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中的數(shù)據(jù)用于在處理片段數(shù)據(jù)中使用。片段可以在像素、樣本或其他粒度(granularity)上進(jìn)行著色,這取決于所編程的采樣率。[0068]光柵操作單元465是實(shí)施光柵操作以及輸出像素?cái)?shù)據(jù)作為經(jīng)處理的圖形數(shù)據(jù)用于圖形存儲(chǔ)器中的存儲(chǔ)的處理單元,所述光柵操作諸如模板、z測(cè)試、混合等等。經(jīng)處理的圖形數(shù)據(jù)可以包括在圖形存儲(chǔ)器例如并行處理存儲(chǔ)器204和/或系統(tǒng)存儲(chǔ)器104中用于顯示設(shè)備110上的顯示或者用于由CPU102或并行處理子系統(tǒng)112進(jìn)一步處理。在本發(fā)明的一些實(shí)施例中,光柵操作單元465配置為壓縮寫到存儲(chǔ)器的z或顏色數(shù)據(jù)以及解壓縮從存儲(chǔ)器讀取的z或顏色數(shù)據(jù)。在各實(shí)施例中,R0P465可以位于存儲(chǔ)器接口 214、GPC208、GPC外的處理集群陣列230或PPU202內(nèi)的分開的單元(未示出)中。
      [0069]用于曲面細(xì)分和幾何著色器的電力高效屬性處置
      [0070]如上文結(jié)合圖4所描述的,圖2的PPU202中的一個(gè)或多個(gè)內(nèi)的SM310可配置為實(shí)現(xiàn)圖形處理管線400中的至少一部分。SM310可配置為實(shí)施以下各項(xiàng)中的一個(gè)或多個(gè)的各功能:頂點(diǎn)處理單元415、曲面細(xì)分初始化處理單元420、曲面細(xì)分處理單元440、幾何處理單元445以及片段處理單元460?;植计骱晚旤c(diǎn)屬性獲取410、任務(wù)生成單元425、任務(wù)分布器430、拓?fù)渖蓡卧?35、視口縮放、剔除和修剪單元450、光柵器455以及光柵操作單元465的各功能也可以由GPC208內(nèi)的其他處理引擎和相應(yīng)的分區(qū)單元215來實(shí)施。
      [0071]在一些實(shí)施例中,每個(gè)圖形處理管線400可以分成世界空間管線和屏幕空間管線。世界空間管線處理3D空間中的圖形對(duì)象,其中每個(gè)圖形對(duì)象的位置相對(duì)于其他圖形對(duì)象以及相對(duì)于3D坐標(biāo)系是已知的。屏幕空間管線處理已被從3D坐標(biāo)系投射到表示顯示設(shè)備110的表面的2D平面上的圖形對(duì)象。例如,世界空間管線可以包括從基元分布器和頂點(diǎn)屬性獲取410到視口縮放、剔除和修剪單元450的圖形處理管線400中的管線級(jí)。屏幕空間管線可以包括從光柵器455到光柵操作單元465的圖形處理管線400中的管線級(jí)。
      [0072]在一些實(shí)施例中,世界空間管線可以進(jìn)一步分成阿爾法(alpha)階段管線和貝塔(beta)階段管線。例如,阿爾法階段管線可以包括從基元分布器和頂點(diǎn)屬性獲取410到任務(wù)生成單元425的圖形處理管線400中的管線級(jí)。貝塔階段管線可以包括從拓?fù)渖蓡卧?35到視口縮放、剔除和修剪單元450的圖形處理管線400中的管線級(jí)。包括相關(guān)聯(lián)的SM310的圖形處理管線400在阿爾法階段管線中的處理期間實(shí)施操作的第一集合,以及在貝塔階段管線中的處理期間實(shí)施操作的第二集合。如本文所使用的,操作的集合定義為由單個(gè)線程、線程組或CTA所執(zhí)行的一個(gè)或多個(gè)指令。
      [0073]與圖形對(duì)象的集合相關(guān)聯(lián)的屬性可被劃分,使得每個(gè)圖形處理管線400通過阿爾法階段具有接近相同量的工作量。阿爾法階段處理可以顯著地?cái)U(kuò)張圖形對(duì)象屬性的數(shù)量,使得由任務(wù)生成單元425所產(chǎn)生的屬性的數(shù)量顯著地比由基元分布器和頂點(diǎn)屬性獲取410所檢索的屬性的數(shù)量更大。進(jìn)一步地,即使在兩個(gè)圖形處理管線400在阿爾法階段管線的開始處理相同數(shù)量的管線,與一個(gè)圖形處理管線400相關(guān)聯(lián)的任務(wù)生成單元425也可以比與另一個(gè)圖形處理管線400相關(guān)聯(lián)的任務(wù)生成單元425產(chǎn)生顯著更大數(shù)量的屬性。在這種情況下,任務(wù)分布器430重新分布由阿爾法階段管線所產(chǎn)生的屬性,使得每個(gè)圖形處理管線400在貝塔階段管線的開始具有接近相同的工作量。
      [0074]圖5示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖3B的共享存儲(chǔ)器306的分配圖500。如所示,分配圖500包括阿爾法階段期間的分配510和貝塔階段期間的分配540。
      [0075]阿爾法階段期間的分配510示出了在頂點(diǎn)著色器程序由頂點(diǎn)處理單元415執(zhí)行之前共享存儲(chǔ)器306的分配。如所示,分配包括用于頂點(diǎn)著色器輸入520的片段和用于頂點(diǎn)著色器輸出530的區(qū)段。頂點(diǎn)著色器輸入520包括與由基元分布器和頂點(diǎn)屬性獲取410所指派到頂點(diǎn)著色器程序的圖形對(duì)象相關(guān)聯(lián)的參數(shù)。頂點(diǎn)處理單元415根據(jù)頂點(diǎn)著色器程序檢索來自頂點(diǎn)著色器輸入520的參數(shù)并且處理相關(guān)聯(lián)的圖形對(duì)象。頂點(diǎn)處理單元415然后將經(jīng)修改的屬性存儲(chǔ)在頂點(diǎn)著色器輸出530中。在一些實(shí)施例中,圖形對(duì)象可能不經(jīng)歷曲面細(xì)分。在這種情況下,曲面細(xì)分輸入處理單元420和曲面細(xì)分處理單元440被繞過,任務(wù)生成單元425直接檢索頂點(diǎn)著色器輸出530。如上文結(jié)合圖4所描述的,任務(wù)生成單元準(zhǔn)備用于貝塔階段管線的任務(wù)。
      [0076]因?yàn)轫旤c(diǎn)著色器程序的各實(shí)例可以生成數(shù)量彼此不同的工作量,所以任務(wù)分布器430在貝塔階段管線處理之前重新分布圖形處理管線400當(dāng)中的任務(wù)。作為結(jié)果,由給定的圖形處理管線在阿爾法階段期間所處理的圖形對(duì)象可能不一定在貝塔階段期間由相同圖形處理管線400來處理。例如,頂點(diǎn)處理單元415可以在阿爾法階段期間處理單個(gè)圖形對(duì)象,并且作為結(jié)果,產(chǎn)生大量產(chǎn)生的圖形對(duì)象。在這種情況下,任務(wù)分布器430可將圖形對(duì)象重新分布到一個(gè)或多個(gè)圖形處理管線400用于貝塔階段,其可以或可以不包括在阿爾法階段期間處理圖形對(duì)象的圖形處理管線400。如果針對(duì)貝塔階段被指派以處理圖形對(duì)象的所有圖形處理管線400與針對(duì)阿爾法階段所指派的圖形處理管線在相同SM310中,那么頂點(diǎn)著色器輸出530不需要被拷貝到外部存儲(chǔ)器諸如L2高速緩存350中。而是,頂點(diǎn)著色器輸出530仍然保持駐留在本地共享存儲(chǔ)器306中用于貝塔階段期間的處理。
      [0077]貝塔階段期間的分配540示出了幾何著色器程序由幾何處理單元445執(zhí)行之前的共享存儲(chǔ)器306的分配。如所示,分配包括用于頂點(diǎn)著色器輸出530的片段和用于幾何著色器輸出550的區(qū)段。頂點(diǎn)著色器輸出530包括與由任務(wù)分布器430所指派到幾何著色器程序的圖形對(duì)象相關(guān)聯(lián)的參數(shù)。拓?fù)渖蓡卧?35對(duì)來自頂點(diǎn)著色器輸出530的頂點(diǎn)進(jìn)行索引并且計(jì)算與頂點(diǎn)相應(yīng)的紋理坐標(biāo)。幾何處理單元445根據(jù)幾何著色器程序檢索來自頂點(diǎn)著色器輸出530的經(jīng)索引參數(shù)以及處理相關(guān)聯(lián)的圖形對(duì)象。幾何處理單元445然后將經(jīng)進(jìn)一步修改的屬性存儲(chǔ)在幾何著色器輸出550中。幾何著色器輸出550然后被轉(zhuǎn)移到屏幕空間管線。
      [0078]在具有單個(gè)SM310的系統(tǒng)中,同一 SM310處理阿爾法和貝塔工作量二者。因此,與圖形對(duì)象相關(guān)聯(lián)的屬性可以在阿爾法和貝塔階段之間仍然保持駐留在本地于SM310的存儲(chǔ)器諸如共享存儲(chǔ)器306中。阿爾法階段數(shù)據(jù)仍然恰當(dāng)?shù)乇3衷赟M310的共享存儲(chǔ)器306中并且不被拷貝到L2高速緩存350。圖形處理管線400從本地共享存儲(chǔ)器306檢索重新分布在SM310內(nèi)的圖形處理管線400當(dāng)中的貝塔工作量。
      [0079]在一些實(shí)施例中,可以使用先進(jìn)先出(FIFO)分配策略來配置共享存儲(chǔ)器306的頂點(diǎn)著色器輸出520、頂點(diǎn)著色器輸出530以及幾何著色器輸出550區(qū)域,提供簡化的硬件實(shí)現(xiàn)方案并且避免死鎖。第一區(qū)域可以在阿爾法階段期間針對(duì)頂點(diǎn)著色器輸入520進(jìn)行分配,并且可以在貝塔階段期間針對(duì)幾何著色器輸出550進(jìn)行分配。一旦頂點(diǎn)著色器程序的實(shí)例已完成處理,則頂點(diǎn)著色器輸入520可以解除分配。在頂點(diǎn)著色器輸入520被解除分配之后,第一區(qū)域可以針對(duì)幾何著色器輸出550進(jìn)行分配。第二區(qū)域可以針對(duì)來自阿爾法階段的頂點(diǎn)著色器輸出530進(jìn)行分配以存儲(chǔ)由最后的阿爾法級(jí)著色程序所生成的屬性。頂點(diǎn)著色器輸出530區(qū)域中的數(shù)據(jù)可以仍然保持駐留在共享存儲(chǔ)器306中并且在所有阿爾法線程束已完成執(zhí)行之后被分配。在貝塔階段期間,幾何著色器程序的實(shí)例可以直接訪問來自分配在第二區(qū)域中的著色器輸出530的輸入屬性。一旦幾何著色器程序的實(shí)例已完成處理,則頂點(diǎn)著色器輸出530可以解除分配。一旦幾何著色器輸出550中的數(shù)據(jù)被轉(zhuǎn)移到屏幕空間管線,則幾何著色器輸出550可以解除分配。
      [0080]在完成貝塔階段處理之后,共享存儲(chǔ)器306的頂點(diǎn)著色器輸出530和幾何著色器輸出500區(qū)域二者針對(duì)其他圖形對(duì)象可用于隨后的阿爾法階段。處理以在阿爾法和貝塔直接交替的圖形管線繼續(xù)用于圖形對(duì)象的不同集合,轉(zhuǎn)移使用本地共享存儲(chǔ)器306內(nèi)的兩個(gè)區(qū)域的屬性。
      [0081]在一些實(shí)施例中,頂點(diǎn)著色器程序可能具有比可存儲(chǔ)在頂點(diǎn)著色器輸入520中的數(shù)據(jù)更多的頂點(diǎn)數(shù)據(jù)要處理。在這種情況下,頂點(diǎn)著色器程序可以處理存儲(chǔ)在頂點(diǎn)著色器輸入520中的頂點(diǎn)數(shù)據(jù),將結(jié)果存儲(chǔ)在頂點(diǎn)著色器輸出530中,直到頂點(diǎn)著色器輸入520幾乎空。頂點(diǎn)著色器輸入520的各部分可以解除分配,并且然后被重新分配以接收附加的頂點(diǎn)數(shù)據(jù)用于處理。頂點(diǎn)著色器程序可以繼續(xù)訪問頂點(diǎn)數(shù)據(jù)直到頂點(diǎn)著色器輸出530幾乎滿。圖形處理管線400然后可以進(jìn)入貝塔階段以處理存儲(chǔ)在頂點(diǎn)著色器輸出530中的數(shù)據(jù)。
      [0082]在一些實(shí)施例中,處理頂點(diǎn)著色器輸出530可以導(dǎo)致產(chǎn)生比可存儲(chǔ)在幾何著色器輸出550中的數(shù)據(jù)更多的數(shù)據(jù)。在這種情況下,幾何著色器程序可以處理圖形對(duì)象并且將輸出數(shù)據(jù)存儲(chǔ)在幾何著色器輸出550中直到幾何著色器輸出550幾乎滿。幾何著色器輸出550然后可被轉(zhuǎn)移到屏幕空間管線,并且?guī)缀沃鬏敵?50可以解除分配。幾何著色器程序可以繼續(xù)處理圖形對(duì)象并且將輸出數(shù)據(jù)存儲(chǔ)在幾何著色器輸出550中,直到幾何著色器輸出550再次幾乎滿。幾何著色器輸出550可再次被轉(zhuǎn)移到屏幕空間管線。過程可以繼續(xù)直到貝塔處理完成。
      [0083]在這種情況下,頂點(diǎn)著色器輸出530區(qū)域的大小可經(jīng)調(diào)整大小以存儲(chǔ)來自頂點(diǎn)著色器程序的單個(gè)線程束的數(shù)據(jù)輸出的最大大小。頂點(diǎn)著色器輸入520/幾何著色器輸出550區(qū)域可經(jīng)調(diào)整大小以存儲(chǔ)來自頂點(diǎn)著色器程序的單個(gè)線程束的數(shù)據(jù)輸入的最大大小或來自幾何著色器程序的單個(gè)線程束的數(shù)據(jù)輸出的最大大小。例如,頂點(diǎn)著色器輸出530區(qū)域的大小可以是16.75kb (千字節(jié)),頂點(diǎn)著色器輸入520/幾何著色器輸出550區(qū)域的大小可以是31.25kb。共享存儲(chǔ)器306的總大小將是48kb。
      [0084]圖6示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的、圖3B的共享存儲(chǔ)器306的分配圖600。如所示,分配圖600包括阿爾法階段期間的分配610和貝塔階段期間的分配640。除如下文所進(jìn)一步描述的,阿爾法階段期間的分配610和貝塔階段期間的分配640功能與圖5中的相似分配相同。
      [0085]阿爾法階段期間的分配示出了頂點(diǎn)著色器程序由頂點(diǎn)處理單元415執(zhí)行之前共享存儲(chǔ)器306的分配。如所示,分配包括用于頂點(diǎn)著色器輸入和頂點(diǎn)著色器輸出620的片段和用于曲面細(xì)分初始化著色器輸出530的區(qū)段。頂點(diǎn)處理單元415根據(jù)頂點(diǎn)著色器程序檢索來自頂點(diǎn)著色器輸入和頂點(diǎn)著色器輸出620的參數(shù)并且處理相關(guān)聯(lián)的圖形對(duì)象。頂點(diǎn)處理單元415然后將經(jīng)修改的屬性存儲(chǔ)在頂點(diǎn)著色器輸入和頂點(diǎn)著色器輸出620中。曲面細(xì)分初始化處理單元420根據(jù)曲面細(xì)分初始化程序從頂點(diǎn)著色器輸入和頂點(diǎn)著色器輸出620檢索由頂點(diǎn)處理單元415所處理的圖形對(duì)象并且處理相關(guān)聯(lián)的圖形對(duì)象。曲面細(xì)分輸入處理單元420然后將與圖形對(duì)象相關(guān)聯(lián)的經(jīng)修改屬性存儲(chǔ)在曲面細(xì)分初始化著色器輸出630中。任務(wù)生成單元425檢索曲面細(xì)分初始化著色器輸出630。如上文結(jié)合圖4所描述的,任務(wù)生成單元準(zhǔn)備用于貝塔階段管線的任務(wù)。
      [0086]因?yàn)榍婕?xì)分初始化著色器程序的各實(shí)例可以生成數(shù)量彼此不同的工作量,所以任務(wù)分布器430在貝塔階段管線處理之前重新分布圖形處理管線400當(dāng)中的任務(wù)。作為結(jié)果,由給定的圖形處理管線在阿爾法階段期間所處理的圖形對(duì)象可能不一定在貝塔階段期間由相同圖形處理管線400來處理。例如,曲面細(xì)分初始化處理單元420可以在阿爾法階段期間處理單個(gè)圖形對(duì)象,并且作為結(jié)果,產(chǎn)生大量產(chǎn)生的圖形對(duì)象。在這種情況下,任務(wù)分布器430可將圖形對(duì)象重新分布到一個(gè)或多個(gè)圖形處理管線400用于貝塔階段,其可以或可以不包括在阿爾法階段期間處理圖形對(duì)象的圖形處理管線400。如果針對(duì)貝塔階段被指派以處理圖形對(duì)象的所有圖形處理管線400與針對(duì)阿爾法階段所指派的圖形處理管線在相同SM310中,那么曲面細(xì)分初始化著色器輸出630不需要被拷貝到外部存儲(chǔ)器諸如L2高速緩存350中。而是,曲面細(xì)分初始化著色器輸出630仍然保持駐留在本地共享存儲(chǔ)器306中用于貝塔階段期間的處理。
      [0087]貝塔階段期間的分配640示出了曲面細(xì)分著色器程序由曲面細(xì)分處理單元440執(zhí)行之前的共享存儲(chǔ)器306的分配。如所示,分配包括用于曲面細(xì)分初始化著色器輸出630的片段和用于曲面細(xì)分著色器輸出和幾何著色器輸出650的區(qū)段。曲面細(xì)分初始化著色器輸出630包括與由任務(wù)分布器430所指派到曲面細(xì)分著色器程序的圖形對(duì)象相關(guān)聯(lián)的參數(shù)。拓?fù)渖蓡卧?35對(duì)來自曲面細(xì)分初始化著色器輸出630的頂點(diǎn)進(jìn)行索引并且計(jì)算用于連接經(jīng)曲面細(xì)分的頂點(diǎn)以形成圖形基元的索引和曲面細(xì)分頂點(diǎn)的(U、V)坐標(biāo)。曲面細(xì)分處理單元440根據(jù)曲面細(xì)分著色器程序檢索來自曲面細(xì)分初始化著色器輸出630的經(jīng)索引參數(shù)以及處理相關(guān)聯(lián)的圖形對(duì)象。曲面細(xì)分處理單元440然后將結(jié)果存儲(chǔ)在曲面細(xì)分著色器輸出和幾何著色器輸出650的曲面細(xì)分著色器輸出部分中。幾何處理單元445然后根據(jù)幾何著色器程序從曲面細(xì)分著色器輸出和幾何著色器輸出650的曲面細(xì)分著色器輸出部分檢索曲面細(xì)分著色器結(jié)果并且處理相關(guān)聯(lián)的圖形對(duì)象。幾何處理單元445然后將經(jīng)進(jìn)一步修改的屬性存儲(chǔ)在曲面細(xì)分著色器輸出和幾何著色器輸出650的幾何著色器輸出部分中。幾何著色器輸出然后被轉(zhuǎn)移到屏幕空間管線。
      [0088]應(yīng)該理解,本文所描述的架構(gòu)僅是示例性的并且變化和修改是可能的。在一個(gè)示例中,本文在具有48kb的存儲(chǔ)容量的共享存儲(chǔ)器以及共享存儲(chǔ)器306的兩個(gè)部分之間的具體分段的上下文中對(duì)技術(shù)進(jìn)行描述。然而,可使用任何技術(shù)上可行的大小的共享存儲(chǔ)器306和分段分割來采用所描述的技術(shù)。在另一個(gè)示例中,共享存儲(chǔ)器的兩個(gè)部分之間的分段可以是固定的或者可在圖形處理期間動(dòng)態(tài)地進(jìn)行改變。
      [0089]圖7A-7B闡述了根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于重新分布由圖形處理單元所處理的圖形對(duì)象的屬性的方法步驟的流程圖。盡管結(jié)合圖1-6的系統(tǒng)描述了方法步驟,但是本領(lǐng)域普通技術(shù)人員將理解的是,配置為以任何次序?qū)嵤┓椒ú襟E的任何系統(tǒng)均在本發(fā)明的范圍內(nèi)。
      [0090]如所示,方法700開始于步驟702,在該處SM310從共享存儲(chǔ)器的第一部分內(nèi)的緩沖區(qū)的第一集合檢索與圖形對(duì)象的集合相關(guān)聯(lián)的參數(shù)的第一集合,其中緩沖區(qū)的第一集合先前已被分配。在步驟704,SM310處理利用由頂點(diǎn)處理單元所執(zhí)行的頂點(diǎn)著色器程序來處理參數(shù)的第一集合,產(chǎn)生頂點(diǎn)輸出數(shù)據(jù)。在步驟706,SM310將頂點(diǎn)輸出數(shù)據(jù)存儲(chǔ)在緩沖區(qū)的第一集合中。在步驟708,SM310利用由曲面細(xì)分初始化處理單元所執(zhí)行的曲面細(xì)分著色器程序來處理所存儲(chǔ)的頂點(diǎn)輸出數(shù)據(jù),產(chǎn)生曲面細(xì)分初始化輸出數(shù)據(jù)。在步驟710,SM310將參數(shù)的第二集合設(shè)定為曲面細(xì)分初始化輸出數(shù)據(jù)。在步驟712,SM310為共享存儲(chǔ)器的第二部分內(nèi)的緩沖區(qū)的第二集合分配空間用于參數(shù)的第二集合的存儲(chǔ)。在步驟714,SM310將參數(shù)的第二集合存儲(chǔ)在緩沖區(qū)的第二集合中。在步驟716,SM310將緩沖區(qū)的第一集合解除分配。
      [0091]在步驟718,SM310在進(jìn)一步處理之前將參數(shù)的第二集合重新分布在多個(gè)圖形處理管線中的圖形處理管線當(dāng)中。在步驟720,SM310利用由曲面細(xì)分處理單元所執(zhí)行的曲面細(xì)分著色器程序來處理參數(shù)的第二集合,產(chǎn)生曲面細(xì)分輸出數(shù)據(jù)。在步驟722,SM310為共享存儲(chǔ)器的第一部分內(nèi)的緩沖區(qū)的第三集合分配空間用于存儲(chǔ)。在步驟724,SM310將曲面細(xì)分輸出數(shù)據(jù)存儲(chǔ)在緩沖區(qū)的第三集合中。在步驟726,SM310利用由幾何處理單元所執(zhí)行的幾何著色器程序來處理所存儲(chǔ)的曲面細(xì)分輸出數(shù)據(jù),產(chǎn)生幾何輸出數(shù)據(jù)。在步驟728,SM310將參數(shù)的第三集合設(shè)定為幾何輸出數(shù)據(jù)。在步驟730,SM310將參數(shù)的第三集合存儲(chǔ)在緩沖區(qū)的第三集合中。在步驟732,SM310將緩沖區(qū)的第二集合解除分配。在步驟734,SM310將緩沖區(qū)的第三集合轉(zhuǎn)移到SM310內(nèi)的一個(gè)或多個(gè)圖形處理管線400中的管線級(jí)中的稍后的級(jí)。例如,SM310將緩沖區(qū)的第三集合轉(zhuǎn)移到圖形處理管線400的視口縮放、剔除和修剪單元450。在步驟736,SM310將緩沖區(qū)的第三集合解除分配。方法700然后終止。
      [0092]總而言之,與一個(gè)或多個(gè)圖形對(duì)象相關(guān)聯(lián)的屬性存儲(chǔ)在本地于流多處理器(SM)的共享存儲(chǔ)器的第一部分中。SM將屬性分布到圖形處理管線用于處理。圖形處理管線從共享存儲(chǔ)器的第一部分檢索屬性。圖形處理管線實(shí)施與圖形處理的第一階段相關(guān)的操作,創(chuàng)建經(jīng)修改的屬性用于在圖形處理的第二階段中使用。圖形處理管線將經(jīng)修改的屬性存儲(chǔ)在共享存儲(chǔ)器的第二部分中。SM然后將經(jīng)修改的屬性重新分布到圖形處理管線來為圖形處理的第二階段作準(zhǔn)備。圖形處理管線從共享存儲(chǔ)器的第二部分檢索經(jīng)修改的屬性。圖形處理管線實(shí)施與圖形處理的第二階段相關(guān)的操作,創(chuàng)建經(jīng)進(jìn)一步修改的屬性用于附加的圖形處理。圖形處理管線將經(jīng)進(jìn)一步修改的屬性存儲(chǔ)在共享存儲(chǔ)器的第一部分中。經(jīng)進(jìn)一步修改的屬性然后從共享存儲(chǔ)器的第一部分被轉(zhuǎn)移到圖形處理管線中的稍后的級(jí)。
      [0093]所公開技術(shù)的一個(gè)優(yōu)勢(shì)在于,工作從圖形處理的第一階段到圖形處理的第二階段被重新分布在單個(gè)流多處理器系統(tǒng)中而不必須將圖形對(duì)象的屬性拷貝到高速緩存或系統(tǒng)存儲(chǔ)器以及然后稍后從這些存儲(chǔ)器中的一個(gè)檢索屬性。將屬性拷貝到遠(yuǎn)程存儲(chǔ)器以及從遠(yuǎn)程存儲(chǔ)器檢索屬性典型地涉及激勵(lì)多級(jí)存儲(chǔ)器層級(jí)中的多個(gè)芯片外存儲(chǔ)器、控制器和接口部件,所述遠(yuǎn)程存儲(chǔ)器諸如高速緩存或系統(tǒng)存儲(chǔ)器。將屬性拷貝到遠(yuǎn)程存儲(chǔ)器以及從遠(yuǎn)程存儲(chǔ)器檢索屬性還涉及將一些部件從低功耗狀態(tài)轉(zhuǎn)變到高功耗狀態(tài)。訪問本地共享存儲(chǔ)器典型地不涉及激勵(lì)或改變芯片外部件的電力狀態(tài)。因此,所公開技術(shù)降低總功耗并且起延長移動(dòng)設(shè)備中的電池充電周期之間的操作時(shí)間的作用。
      [0094]本發(fā)明的一個(gè)實(shí)施例可被實(shí)施為與計(jì)算機(jī)系統(tǒng)一起使用的程序產(chǎn)品。該程序產(chǎn)品的程序定義實(shí)施例的各功能(包括本文中描述的方法)并且可以被包含在各種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上。示例性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括但不限于:(i)不可寫的存儲(chǔ)介質(zhì)(例如,計(jì)算機(jī)內(nèi)的只讀存儲(chǔ)器設(shè)備,諸如可由CD-ROM驅(qū)動(dòng)器讀取的光盤只讀存儲(chǔ)器(CD-ROM)盤、閃存、只讀存儲(chǔ)器(ROM)芯片或任何類型的固態(tài)非易失性半導(dǎo)體存儲(chǔ)器),在其上存儲(chǔ)永久性信息jP(ii)可寫的存儲(chǔ)介質(zhì)(例如,磁盤驅(qū)動(dòng)器或硬盤驅(qū)動(dòng)器內(nèi)的軟盤或者任何類型的固態(tài)隨機(jī)存取半導(dǎo)體存儲(chǔ)器),在其上存儲(chǔ)可更改的信息。
      [0095]以上已參照特定實(shí)施例對(duì)本發(fā)明進(jìn)行了描述。然而,本領(lǐng)域普通技術(shù)人員將理解的是,可對(duì)此做出各種修改和變化而不脫離如隨附權(quán)利要求書中所闡述的本發(fā)明的較寬精神和范圍。因此,前面的描述以及附圖應(yīng)被視為是例示性而非限制性的意義。
      [0096]因此,本發(fā)明的實(shí)施例的范圍由下面的權(quán)利要求書進(jìn)行闡述。
      【權(quán)利要求】
      1.一種用于在多個(gè)圖形處理管線中處理圖形對(duì)象的屬性的方法,所述方法包括: 從緩沖區(qū)的第一集合檢索與圖形對(duì)象的集合相關(guān)聯(lián)的參數(shù)的第一集合; 根據(jù)處理的第一階段對(duì)所述參數(shù)的第一集合實(shí)施操作的第一集合以產(chǎn)生參數(shù)的第二集合; 將所述參數(shù)的第二集合存儲(chǔ)在緩沖區(qū)的第二集合中; 根據(jù)處理的第二階段對(duì)所述參數(shù)的第二集合實(shí)施操作的第二集合以產(chǎn)生參數(shù)的第三集合;以及 將所述參數(shù)的第三集合存儲(chǔ)在緩沖區(qū)的第三集合中
      2.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 在共享存儲(chǔ)器的第一部分內(nèi)為所述緩沖區(qū)的第一集合分配空間;以及 在所述共享存儲(chǔ)器的第二部分內(nèi)為所述緩沖區(qū)的第二集合分配空間。
      3.根據(jù)權(quán)利要求2所述的方法,進(jìn)一步包括: 針對(duì)所述緩沖區(qū)的第一集合解除分配所述空間;以及 在所述共享存儲(chǔ)器的所述第一部分內(nèi)為所述緩沖區(qū)的第三集合分配空間。
      4.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括,在實(shí)施操作的所述第二集合之前,跨所述多個(gè)圖形處理管線將所述參數(shù)的第二集合進(jìn)行重新分布。
      5.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括將所述緩沖區(qū)的第三集合的內(nèi)容轉(zhuǎn)移到包括在所述多個(gè)圖形處理管線中的第一圖形處理管線中的稍后的級(jí)。
      6.根據(jù)權(quán)利要求1所述的方法,其中實(shí)施操作的所述第一集合包括: 利用由頂點(diǎn)處理單元所執(zhí)行的頂點(diǎn)著色器程序處理參數(shù)的所述第一集合以產(chǎn)生頂點(diǎn)輸出數(shù)據(jù);以及將參數(shù)的所述第二集合指定為所述頂點(diǎn)輸出數(shù)據(jù)。
      7.根據(jù)權(quán)利要求6所述的方法,其中實(shí)施操作的所述第二集合包括: 利用由幾何處理單元所執(zhí)行的幾何著色器程序處理參數(shù)的所述第二集合以產(chǎn)生幾何輸出數(shù)據(jù);以及 將參數(shù)的所述第三集合指定為所述幾何輸出數(shù)據(jù)。
      8.根據(jù)權(quán)利要求1所述的方法,其中實(shí)施操作的所述第一集合包括: 利用由頂點(diǎn)處理單元所執(zhí)行的頂點(diǎn)著色器程序處理參數(shù)的所述第一集合以產(chǎn)生頂點(diǎn)輸出數(shù)據(jù); 將所述頂點(diǎn)輸出數(shù)據(jù)存儲(chǔ)在緩沖區(qū)的所述第一集合中; 利用由曲面細(xì)分初始化處理單元所執(zhí)行的曲面細(xì)分初始化著色器程序處理所述所存儲(chǔ)的頂點(diǎn)輸出數(shù)據(jù)以產(chǎn)生曲面細(xì)分初始化輸出數(shù)據(jù);以及 將參數(shù)的所述第二集合指定為所述曲面細(xì)分初始化輸出數(shù)據(jù)。
      9.根據(jù)權(quán)利要求8所述的方法,其中實(shí)施操作的所述第二集合包括: 利用由曲面細(xì)分處理單元所執(zhí)行的曲面細(xì)分著色器程序處理參數(shù)的所述第二集合以產(chǎn)生曲面細(xì)分輸出數(shù)據(jù); 將所述曲面細(xì)分輸出數(shù)據(jù)存儲(chǔ)在緩沖區(qū)的所述第三集合中; 利用由幾何處理單元所執(zhí)行的幾何著色器程序處理所述所存儲(chǔ)的曲面細(xì)分輸出數(shù)據(jù)以產(chǎn)生幾何輸出數(shù)據(jù);以及 將參數(shù)的所述第三集合指定為所述幾何輸出數(shù)據(jù)。
      10.一種子系統(tǒng),包括: 流多處理器,其配置為通過實(shí)施以下步驟在第一處理階段和第二處理階段之間重新分布圖形處理管線中的圖形對(duì)象的屬性: 從緩沖區(qū)的第一集合檢索與圖形對(duì)象的集合相關(guān)聯(lián)的參數(shù)的第一集合; 根據(jù)處理的第一階段對(duì)參數(shù)的所述第一集合實(shí)施操作的第一集合以產(chǎn)生參數(shù)的第二集合; 將參數(shù)的所述第二集合存儲(chǔ)在緩沖區(qū)的第二集合中; 根據(jù)處理的第二階段對(duì)參數(shù)的所述第二集合實(shí)施操作的第二集合以產(chǎn)生參數(shù)的第三集合;以及 將參數(shù)的所述 第三集合存儲(chǔ)在緩沖區(qū)的第三集合中。
      【文檔編號(hào)】G06T15/00GK103996216SQ201310752252
      【公開日】2014年8月20日 申請(qǐng)日期:2013年12月31日 優(yōu)先權(quán)日:2013年2月20日
      【發(fā)明者】濟(jì)亞德·S·哈庫拉, 戴爾·L·柯克蘭 申請(qǐng)人:輝達(dá)公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1