国产精品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>

      在統(tǒng)一l2高速緩存中高速緩存經(jīng)適應(yīng)性定制大小的高速緩存像素塊的制作方法

      文檔序號(hào):6516829閱讀:204來源:國(guó)知局
      在統(tǒng)一l2高速緩存中高速緩存經(jīng)適應(yīng)性定制大小的高速緩存像素塊的制作方法
      【專利摘要】本發(fā)明的一個(gè)實(shí)施例包括用于在圖形系統(tǒng)中適應(yīng)性定制高速緩存像素塊大小的技術(shù)。與圖形系統(tǒng)相關(guān)聯(lián)的設(shè)備驅(qū)動(dòng)程序?qū)⑴c高速緩存像素塊相關(guān)聯(lián)的高速緩存像素塊大小設(shè)置為第一大小。檢測(cè)從包括第一渲染目標(biāo)集的第一渲染目標(biāo)配置到包括第二渲染目標(biāo)集的第二渲染目標(biāo)配置的改變。設(shè)備驅(qū)動(dòng)程序基于第二渲染目標(biāo)配置將高速緩存像素塊大小設(shè)置為第二大小。所公開的方法的一個(gè)優(yōu)點(diǎn)是高速緩存像素塊大小被適應(yīng)性定制,導(dǎo)致較少高速緩存像素塊用于較不復(fù)雜的渲染目標(biāo)配置。適應(yīng)性定制高速緩存像素塊大小產(chǎn)生更高效的處理器利用率和降低的能力要求。另外,統(tǒng)一的L2高速緩存像素塊允許高速緩存存儲(chǔ)器在高速緩存像素塊數(shù)據(jù)和其他數(shù)據(jù)之間的動(dòng)態(tài)分區(qū)。
      【專利說明】在統(tǒng)一 L2高速緩存中高速緩存經(jīng)適應(yīng)性定制大小的高速緩存像素塊
      [0001]相關(guān)串請(qǐng)的交叉引用
      [0002]本申請(qǐng)要求于2012年10月26日所提交的序列號(hào)為61/719,271的、標(biāo)題為“Anapproach for Tiled Caching”的美國(guó)臨時(shí)專利申請(qǐng)的優(yōu)先權(quán),本文通過援引的方式對(duì)該相關(guān)申請(qǐng)的主題加以合并。
      【技術(shù)領(lǐng)域】
      [0003]本發(fā)明的實(shí)施例總地涉及圖形處理,并且,更具體地,涉及采用表面壓縮在統(tǒng)一 L2高速緩存(cache)中高速緩存經(jīng)適應(yīng)性定制大小的高速緩存像素塊。
      【背景技術(shù)】
      [0004]—些用于渲染圖形圖像的圖形子系統(tǒng)實(shí)現(xiàn)拼接架構(gòu)(tiling architecture),在該情況下諸如幀緩沖區(qū)的一個(gè)或多個(gè)渲染目標(biāo)被分成稱為像素塊(tile)的屏幕空間分區(qū)。在這類拼接架構(gòu)中,圖形子系統(tǒng)重新布置工作使得與任何特定像素塊相關(guān)聯(lián)的工作留在片上高速緩存中的時(shí)間比采用未以該方式重新布置工作的架構(gòu)的更長(zhǎng)。該重新布置與非拼接架構(gòu)相比有助于改進(jìn)存儲(chǔ)器帶寬。
      [0005]典型地,隨著圖像的渲染的進(jìn)展,渲染目標(biāo)集隨時(shí)間改變。例如,第一遍可使用渲染目標(biāo)的第一配置來部分地渲染圖像。第二遍可使用渲染目標(biāo)的第二配置來進(jìn)一步渲染圖像。第三遍可使用第三渲染目標(biāo)集來完成圖像的最終渲染。在渲染過程期間,計(jì)算機(jī)圖形子系統(tǒng)可使用多達(dá)五十個(gè)或更多個(gè)不同渲染目標(biāo)配置來渲染最終圖像。每個(gè)不同渲染目標(biāo)配置會(huì)消耗不同量的存儲(chǔ)器。為了增加工作留在片上高速緩存中的可能性,像素塊典型地被定制大小以容納在圖像渲染期間所使用的渲染目標(biāo)的最復(fù)雜的配置。結(jié)果,像素塊被定制大小以容納在最終圖像的渲染期間所使用的各種渲染目標(biāo)配置的全部一從最復(fù)雜的到最不復(fù)雜的渲染目標(biāo)配置。
      [0006]上文的方法的一個(gè)缺點(diǎn)是像素塊被無效率地定制大小用于較不復(fù)雜的渲染目標(biāo)配置。此外,較不復(fù)雜的渲染目標(biāo)配置不需要較復(fù)雜的渲染目標(biāo)配置所需的較小的像素塊大小以使工作在渲染過程期間保持駐留在高速緩存中。與采用較大的像素塊大小需要較少的像素塊以覆蓋完整的屏幕空間相比,采用較小的像素塊大小需要較多像素塊以覆蓋相同屏幕空間。較小的像素塊大小導(dǎo)致計(jì)算開銷增加,因?yàn)橛?jì)算要求隨像素塊數(shù)目的增加而增力口。結(jié)果,針對(duì)較不復(fù)雜的渲染目標(biāo)配置浪費(fèi)了計(jì)算能力。
      [0007]如前述內(nèi)容示出的,本領(lǐng)域所需要的是用于更高效地在采用拼接架構(gòu)的圖形子系統(tǒng)中利用高速緩存存儲(chǔ)器的技術(shù)。

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

      [0008]本發(fā)明的一個(gè)實(shí)施例闡述用于在圖形系統(tǒng)中適應(yīng)性定制高速緩存像素塊大小的方法。方法包括將與第一高速緩存像素塊相關(guān)聯(lián)的高速緩存像素塊大小設(shè)置為第一大小。方法進(jìn)一步包括檢測(cè)從包括第一渲染目標(biāo)集的第一渲染目標(biāo)配置到包括第二渲染目標(biāo)集的第二渲染目標(biāo)配置的改變。方法進(jìn)一步包括基于第二渲染目標(biāo)配置將高速緩存像素塊大小設(shè)置為第二大小。
      [0009]其他實(shí)施例包括但不限于計(jì)算機(jī)可讀介質(zhì),其包括指令,該指令使處理單元能夠?qū)崿F(xiàn)所公開的方法的一個(gè)或多個(gè)方面。其他實(shí)施例包括但不限于包括配置為實(shí)現(xiàn)所公開的方法的一個(gè)或多個(gè)方面的處理單元的子系統(tǒng)以及配置為實(shí)現(xiàn)所公開的方法的一個(gè)或多個(gè)方面的系統(tǒng)。
      [0010]所公開的方法的一個(gè)優(yōu)點(diǎn)是高速緩存像素塊大小基于渲染目標(biāo)配置和高速緩存配置而被適應(yīng)性定制大小。選擇較小的高速緩存像素塊大小用于較復(fù)雜的渲染目標(biāo)配置,而選擇較大的高速緩存像素塊大小用于較不復(fù)雜的渲染目標(biāo)配置。通過基于渲染目標(biāo)配置來適應(yīng)性定制高速緩存像素塊大小,需要較少計(jì)算能力來處理高速緩存像素塊,這導(dǎo)致更高效的處理器利用率和降低的能力要求。
      【專利附圖】

      【附圖說明】
      [0011]因此,可以詳細(xì)地理解本發(fā)明的上述特征,并且可以參考實(shí)施例得到對(duì)如上面所簡(jiǎn)要概括的本發(fā)明的更具體的描述,其中一些實(shí)施例在附圖中示出。然而,應(yīng)當(dāng)注意的是,附圖僅示出了本發(fā)明的典型實(shí)施例,因此不應(yīng)被認(rèn)為是對(duì)其范圍的限制,本發(fā)明可以具有其他等效的實(shí)施例。
      [0012]圖1是示出了配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的框圖;
      [0013]圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、包括在圖1的并行處理子系統(tǒng)中的并行處理單元的框圖;
      [0014]圖3A是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、包括在圖2的并行處理單元中的通用處理集群的框圖;
      [0015]圖3B是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、可實(shí)現(xiàn)在圖2的并行處理單元內(nèi)的圖形處理管線的示意圖;
      [0016]圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、可配置圖3B的圖形處理管線對(duì)其進(jìn)行生成和處理的高速緩存像素塊的示意圖;
      [0017]圖5示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、如存儲(chǔ)在圖2的DRAM中的一個(gè)或多個(gè)中的渲染目標(biāo)集;
      [0018]圖6示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、與渲染計(jì)算機(jī)圖形圖像相關(guān)聯(lián)的一系列渲染目標(biāo)配置;以及
      [0019]圖7闡述根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于適應(yīng)性定制高速緩存像素塊大小的方法步驟的流程圖。
      【具體實(shí)施方式】
      [0020]在下面的描述中,將闡述大量的具體細(xì)節(jié)以提供對(duì)本發(fā)明更透徹的理解。然而,本領(lǐng)域的技術(shù)人員應(yīng)該清楚,本發(fā)明可以在沒有一個(gè)或多個(gè)這些具體細(xì)節(jié)的情況下得以實(shí)施。
      [0021]系統(tǒng)概述[0022]圖1為示出了配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)100的框圖。如所示,計(jì)算機(jī)系統(tǒng)100包括但不限于經(jīng)由存儲(chǔ)器橋105和通信路徑113耦連到并行處理子系統(tǒng)112的中央處理單元(CPU)102和系統(tǒng)存儲(chǔ)器104。存儲(chǔ)器橋105經(jīng)由通信路徑106進(jìn)一步耦連到I/O (輸入/輸出)橋107,并且I/O橋107轉(zhuǎn)而耦連到交換器116。
      [0023]在操作中,I/O橋107配置為從諸如鍵盤或鼠標(biāo)的輸入設(shè)備108接收用戶輸入信息,并且經(jīng)由通信路徑106和存儲(chǔ)器橋105將該輸入信息轉(zhuǎn)發(fā)到CPU102用于處理。交換器116配置為提供I/O橋107與計(jì)算機(jī)系統(tǒng)100的其他部件之間的連接,該其他部件諸如網(wǎng)絡(luò)適配器118以及各種插卡120和121。
      [0024]還如所示,I/O橋107耦連到可配置為存儲(chǔ)內(nèi)容和應(yīng)用和數(shù)據(jù)用于由CPU102和并行處理子系統(tǒng)112使用的系統(tǒng)盤114。一般來說,系統(tǒng)盤114提供用于應(yīng)用和數(shù)據(jù)的非易失性存儲(chǔ)并可包括固定或可移動(dòng)硬盤驅(qū)動(dòng)器、閃存設(shè)備和⑶-ROM (壓縮光盤只讀存儲(chǔ)器)、DVD-ROM (數(shù)字通用光盤-ROM)、藍(lán)光、HD-DVD (高清晰度DVD)、或其他磁、光、或固態(tài)存儲(chǔ)設(shè)備。最后,雖然未明確示出,但諸如通用串行總線或其他端口連接、壓縮光盤驅(qū)動(dòng)器、數(shù)字通用光盤驅(qū)動(dòng)器、膠片錄制設(shè)備及類似部件的其他部件,也可以連接到I/O橋107。
      [0025]在各種實(shí)施例中,存儲(chǔ)器橋105可以是北橋芯片,并且I/O橋107可以是南橋芯片。另外,通信路徑106和113以及計(jì)算機(jī)系統(tǒng)100內(nèi)的其他通信路徑可以使用任何技術(shù)上合適的協(xié)議實(shí)現(xiàn),包括但不限于AGP (加速圖形端口)、超傳輸或者任何其他本領(lǐng)域已知的總線或點(diǎn)到點(diǎn)通信協(xié)議。
      [0026]在一些實(shí)施例中,并行處理子系統(tǒng)112包括圖形子系統(tǒng),其將像素遞送到顯示設(shè)備110,該顯示設(shè)備110可以是任何常規(guī)的陰極射線管、液晶顯示器、發(fā)光二極管顯示器等。在這類實(shí)施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于圖形和視頻處理的電路,包括例如視頻輸出電路。如下文在圖2中以更多細(xì)節(jié)所描述的,可跨包括在并行處理子系統(tǒng)112內(nèi)的一個(gè)或多個(gè)并行處理單元(PPU)包含這類電路。在其他實(shí)施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于通用和/或計(jì)算處理的電路。再者,可跨包括在并行處理子系統(tǒng)112內(nèi)的一個(gè)或多個(gè)PTO包含這類配置為實(shí)施這類通用和/或計(jì)算操作的電路。在又一些實(shí)施例中,包括在并行處理子系統(tǒng)112內(nèi)的一個(gè)或多個(gè)PTO可配置為實(shí)施圖形處理、通用處理和計(jì)算處理操作。系統(tǒng)存儲(chǔ)器104包括至少一個(gè)設(shè)備驅(qū)動(dòng)程序103,其配置為管理并行處理子系統(tǒng)112內(nèi)的一個(gè)或多個(gè)PPU的處理操作。
      [0027]在各種實(shí)施例中,并行處理子系統(tǒng)112可與圖1的一個(gè)或多個(gè)其他元件集成以形成單個(gè)系統(tǒng)。例如,并行處理子系統(tǒng)112可與單個(gè)芯片上的CPU102和其他連接電路集成以形成片上系統(tǒng)(SoC)。
      [0028]應(yīng)該理解,本文所示系統(tǒng)是示例性的,并且變化和修改都是可能的。連接拓?fù)?,包括橋的?shù)目和布置、CPU102的數(shù)目以及并行處理子系統(tǒng)112的數(shù)目,可根據(jù)需要修改。例如,在一些實(shí)施例中,系統(tǒng)存儲(chǔ)器104可直接連接到CPU102而不是通過存儲(chǔ)器橋105,并且其他設(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í)施例中,圖1中示出的一個(gè)或多個(gè)部件可以不存在。例如,可去掉交換器116,網(wǎng)絡(luò)適配器118和插卡120、121將直接連接到I/O橋107。[0029]圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、包括在圖1的并行處理子系統(tǒng)112中的并行處理單元(PPU)202的框圖。雖然圖2描繪一個(gè)PPU202,但如上文所指示的,并行處理子系統(tǒng)112可包括任何數(shù)目的PPU202。如所示,PPU202耦連到本地并行處理(PP)存儲(chǔ)器204。PPU202和PP存儲(chǔ)器204可使用一個(gè)或多個(gè)集成電路設(shè)備來實(shí)現(xiàn),諸如可編程處理器、專用集成電路(ASIC)或存儲(chǔ)器設(shè)備,或者以任何其他技術(shù)上可行的方式來實(shí)現(xiàn)。
      [0030]在一些實(shí)施例中,PPU202包括圖形處理單元(GPU),其可配置為實(shí)現(xiàn)圖形渲染管線以實(shí)施與基于由CPU102和/或系統(tǒng)存儲(chǔ)器104所供應(yīng)的圖形數(shù)據(jù)來生成像素?cái)?shù)據(jù)相關(guān)的各種操作。當(dāng)處理圖形數(shù)據(jù)時(shí),PP存儲(chǔ)器204可用作圖形存儲(chǔ)器,其存儲(chǔ)一個(gè)或多個(gè)常規(guī)幀緩沖區(qū),并且如果需要的話也存儲(chǔ)一個(gè)或多個(gè)其他渲染目標(biāo)。此外,PP存儲(chǔ)器204可用來存儲(chǔ)和更新像素?cái)?shù)據(jù)并將最終像素?cái)?shù)據(jù)或顯示幀遞送到顯示設(shè)備110用于顯示。在一些實(shí)施例中,PPU202還可經(jīng)配置用于通用處理和計(jì)算操作。
      [0031]在操作中,CPU102是計(jì)算機(jī)系統(tǒng)100的主處理器,控制和協(xié)調(diào)其他系統(tǒng)部件的操作。具體地,CPU102發(fā)出控制PPU202的操作的命令。在一些實(shí)施例中,CPU102寫入用于PPU202的命令流到數(shù)據(jù)結(jié)構(gòu)中(在圖1或圖2中未明確示出),該數(shù)據(jù)結(jié)構(gòu)可位于系統(tǒng)存儲(chǔ)器104、PP存儲(chǔ)器204、或CPU102和PPU202都可訪問的另一存儲(chǔ)位置中。將指向數(shù)據(jù)結(jié)構(gòu)的指針寫到入棧緩沖區(qū)(pushbuffer)以發(fā)起對(duì)數(shù)據(jù)結(jié)構(gòu)中的命令流的處理。PPU202從入棧緩沖區(qū)讀取命令流,然后相對(duì)于CPU102的操作異步地執(zhí)行命令。在生成多個(gè)幀緩沖區(qū)的實(shí)施例中,可以經(jīng)由設(shè)備驅(qū)動(dòng)程序103由應(yīng)用程序?yàn)槊總€(gè)入棧緩沖區(qū)指定執(zhí)行優(yōu)先級(jí)以控制對(duì)不同入棧緩沖區(qū)的調(diào)度。
      [0032]還如所示,PPU202包括經(jīng)由通信路徑113和存儲(chǔ)器橋105與計(jì)算機(jī)系統(tǒng)100的其余部分通信的I/o (輸入/輸出)單元205。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ì)PP存儲(chǔ)器204的讀取或?qū)懭?引導(dǎo)到交叉開關(guān)單元210。主機(jī)接口 206讀取每個(gè)入棧緩沖區(qū),并且將存儲(chǔ)在入棧緩沖區(qū)中的命令流傳送到前端212。
      [0033]如上文結(jié)合圖1所提及的,PTO202到計(jì)算機(jī)系統(tǒng)100的其余部分的連接可以變化。在一些實(shí)施例中,包括至少一個(gè)PPU202的并行處理子系統(tǒng)112實(shí)現(xiàn)為可插入到計(jì)算機(jī)系統(tǒng)100的擴(kuò)展槽中的插卡。在其他實(shí)施例中,PPU202可采用諸如存儲(chǔ)器橋105或I/O橋107的總線橋來集成在單個(gè)芯片上。再者,還有在其他實(shí)施例中,PPU202的一些或所有元件可與CPU102 —起包括在單個(gè)集成電路或芯片系統(tǒng)(SoC)中。
      [0034]在操作中,前端212將從主機(jī)接口 206所接收的處理任務(wù)傳送到任務(wù)/工作單元207內(nèi)的工作分布單元(未示出)。工作分布單元接收指向編碼為任務(wù)元數(shù)據(jù)(TMD)并存儲(chǔ)在存儲(chǔ)器中的處理任務(wù)的指針。指向TMD的指針包括在存儲(chǔ)為入棧緩沖區(qū)并由前端單元212從主機(jī)接口 206接收的命令流中??梢跃幋a為TMD的處理任務(wù)包括與所要處理的數(shù)據(jù)相關(guān)聯(lián)的索引,以及定義數(shù)據(jù)將被如何處理的狀態(tài)參數(shù)和命令。例如,狀態(tài)參數(shù)和命令可定義要在數(shù)據(jù)上執(zhí)行的程序。任務(wù)/工作單元207從前端212接收任務(wù)并確保在由每一個(gè)TMD所指定的處理任務(wù)發(fā)起前,將GPC208配置為有效狀態(tài)??梢詾槊總€(gè)TMD指定用來調(diào)度處理任務(wù)的執(zhí)行的優(yōu)先級(jí)。還可從處理集群陣列230接收處理任務(wù)。可選地,TMD可包括控制將TMD添加到處理任務(wù)列表(或到指向處理任務(wù)的指針的列表)的頭部還是尾部的參數(shù),從而提供在執(zhí)行優(yōu)先級(jí)之上的另一級(jí)別的控制。
      [0035]有利地,PPU202基于處理集群陣列230實(shí)現(xiàn)高度并行處理架構(gòu),該陣列230包括一套C個(gè)通用處理集群(GPC) 208,其中C > I。每個(gè)GPC208能夠并發(fā)執(zhí)行大量的(例如,幾百或幾千)線程,其中每個(gè)線程是程序的實(shí)例(instance)。在各種應(yīng)用中,可分配不同的GPC208用于處理不同類型的程序或用于實(shí)施不同類型的計(jì)算。GPC208的分配可以取決于因每種類型的程序或計(jì)算所產(chǎn)生的工作量而變化。
      [0036]存儲(chǔ)器接口 214包括一套D個(gè)分區(qū)單元215,其中D≥I。每個(gè)分區(qū)單元215耦連到駐留在PPM存儲(chǔ)器204內(nèi)的一個(gè)或多個(gè)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)220。在一個(gè)實(shí)施例中,分區(qū)單元215的數(shù)目等于DRAM220的數(shù)目,并且每個(gè)分區(qū)單元215耦連到不同的DRAM220。在其他實(shí)施例中,分區(qū)單元215的數(shù)目也可以不同于DRAM220的數(shù)目。本領(lǐng)域的普通技術(shù)人員將理解,DRAM220可以采用任何其他技術(shù)上合適的存儲(chǔ)設(shè)備來替代。在操作中,諸如紋理映射圖和幀緩沖區(qū)的各種渲染目標(biāo)可以跨DRAM220而被存儲(chǔ),這允許分區(qū)單元215并行寫入每個(gè)渲染目標(biāo)的各部分以高效地使用PP存儲(chǔ)器204的可用帶寬。
      [0037]給定的GPC208可以處理要被寫到PP存儲(chǔ)器204內(nèi)的任何DRAM220的數(shù)據(jù)。交叉開關(guān)單元210配置為路由每個(gè)GPC208的輸出到任何分區(qū)單元215的輸入或到任何其他GPC208用于進(jìn)一步處理。GPC208經(jīng)由交叉開關(guān)單元210與存儲(chǔ)器接口 214通信,以對(duì)各種DRAM220進(jìn)行讀取或?qū)懭搿T谝粋€(gè)實(shí)施例中,交叉開關(guān)單元210具有到I/O單元205的連接,以及經(jīng)由存儲(chǔ)器接口 214到PP存儲(chǔ)器204的連接,從而使在不同GPC208內(nèi)的處理核心能夠與系統(tǒng)存儲(chǔ)器104或?qū)τ赑PU202而言非本地的其他存儲(chǔ)器通信。在圖2的實(shí)施例中,交叉開關(guān)單元210直接與I/O單元205連接。在各種實(shí)施例中,交叉開關(guān)單元210可使用虛擬信道來分開GPC208與分區(qū)單元215之間的業(yè)務(wù)(traffic)流。
      [0038]再者,GPC 208可被編程以執(zhí)行與種類繁多的應(yīng)用相關(guān)的處理任務(wù),包括但不限于,線性和非線性數(shù)據(jù)變換、視頻和/或音頻數(shù)據(jù)過濾、建模操作(例如,應(yīng)用物理定律以確定對(duì)象的位置、速率和其他屬性)、圖像渲染操作(例如,曲面細(xì)分(tessellation)著色器、頂點(diǎn)著色器、幾何著色器、和/或像素/片段著色器程序)、通用計(jì)算操作等等。在操作中,PPU202配置為將數(shù)據(jù)從系統(tǒng)存儲(chǔ)器104和/或PP存儲(chǔ)器204轉(zhuǎn)移到一個(gè)或多個(gè)片上存儲(chǔ)器單元中,處理該數(shù)據(jù),并且將結(jié)果數(shù)據(jù)寫回到系統(tǒng)存儲(chǔ)器104和/或PP存儲(chǔ)器204。結(jié)果數(shù)據(jù)可以隨后由其他系統(tǒng)部件訪問,所述其他系統(tǒng)部件包括CPU102、并行處理子系統(tǒng)112內(nèi)的另一 PPU202、或計(jì)算機(jī)系統(tǒng)100內(nèi)的另一并行處理子系統(tǒng)112。
      [0039]如上所示,在并行處理子系統(tǒng)112中可以包括任何數(shù)目的PPU202。例如,可在單個(gè)插卡上提供多個(gè)PPU202,或可將多個(gè)插卡連接到通信路徑113,或可將一個(gè)或多個(gè)PPU202集成到橋式芯片中。在多PPU系統(tǒng)中的PPU202可以彼此同樣或不同。例如,不同的PPU202可能具有不同數(shù)目的處理核心和/或不同容量的PP存儲(chǔ)器204。在存在多個(gè)PPU202的實(shí)現(xiàn)方案中,可并行操作那些PI3U從而以高于單個(gè)PPU202所可能達(dá)到的吞吐量來處理數(shù)據(jù)。包含一個(gè)或多個(gè)PPU202的系統(tǒng)可以以各種配置和形狀因素來實(shí)現(xiàn),包括但不限于臺(tái)式電腦、筆記本電腦、手持式個(gè)人計(jì)算機(jī)或其他手持式設(shè)備、服務(wù)器、工作站、游戲控制臺(tái)、嵌入式系統(tǒng)等等。
      [0040]圖3A是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、包括在圖2的PPU202中的GPC208的框圖。在操作中,GPC208可配置為并行執(zhí)行大量線程以實(shí)施圖形、一般處理和/或計(jì)算操作。如本文所使用的,“線程”是指在特定輸入數(shù)據(jù)集上執(zhí)行的特定程序的實(shí)例。在一些實(shí)施例中,單指令、多數(shù)據(jù)(SMD)指令發(fā)出技術(shù)用來在不提供多個(gè)獨(dú)立指令單元的情況下支持大量線程的并行執(zhí)行。在其他實(shí)施例中,單指令、多線程(SMT)技術(shù)用來使用配置為向GPC208內(nèi)的處理引擎集發(fā)出指令的公共指令單元來支持大量一般來說同步的線程的并行執(zhí)行。不同于所有處理引擎通常都執(zhí)行同樣指令的SMD執(zhí)行機(jī)制,SIMT執(zhí)行通過給定程序允許不同線程更容易跟隨分散執(zhí)行路徑。本領(lǐng)域普通技術(shù)人員將理解SMD處理機(jī)制代表SMT處理機(jī)制的功能子集。
      [0041]經(jīng)由將從任務(wù)/工作單元207內(nèi)的工作分布單元(未示出)所接收的處理任務(wù)分布到一個(gè)或多個(gè)流多處理器(SM) 310的管線管理器305來控制GPC208的操作。管線管理器305還可配置為通過為由SM310所輸出的所處理數(shù)據(jù)指定目的地來控制工作分布交叉開關(guān)330。
      [0042]在一個(gè)實(shí)施例中,GPC208包括一套M個(gè)SM310,其中M≥I。并且,每個(gè)SM310包括一套功能執(zhí)行單元(未示出),諸如執(zhí)行單元和加載-存儲(chǔ)單元。針對(duì)任何的功能執(zhí)行單元的處理操作可被管線化,其使新指令能夠在前一個(gè)指令已完成執(zhí)行之前被發(fā)出用于執(zhí)行??商峁┙o定SM310內(nèi)的功能執(zhí)行單元的任何組合。在各種實(shí)施例中,功能執(zhí)行單元可配置為支持各種各樣的不同操作,包括整數(shù)和浮點(diǎn)運(yùn)算(例如加法和乘法)、比較操作、布爾操作(AND、OR、X0R)、移位和各種代數(shù)函數(shù)的計(jì)算(例如平面插值與三角函數(shù)、指數(shù)函數(shù)和對(duì)數(shù)函數(shù)等等)。有利地,相同的功能執(zhí)行單元可配置為實(shí)施不同的操作。
      [0043]在操作中,每個(gè)SM310配置為處理一個(gè)或多個(gè)線程組。如本文所使用的,“線程組”或“線程束”是指對(duì)不同輸入數(shù)據(jù)并發(fā)執(zhí)行相同程序的一組線程,所述組的一個(gè)線程被指派到SM310內(nèi)的不同執(zhí)行單元。線程組可以包括比SM310內(nèi)的執(zhí)行單元數(shù)目少的線程,在這種情況下在該線程組正在被處理的周期期間一些執(zhí)行單元可閑置。線程組還可以包括比SM310內(nèi)的執(zhí)行單元數(shù)目多的線程,在這種情況下處理可在連續(xù)的時(shí)鐘周期上發(fā)生。因?yàn)槊總€(gè)SM310可以并發(fā)支持多達(dá)G個(gè)線程組,結(jié)果是在任何給定時(shí)間在GPC208中可以執(zhí)行多達(dá)G*M個(gè)線程組。
      [0044]另外,多個(gè)相關(guān)線程組可以在SM310內(nèi)同時(shí)活動(dòng)(在執(zhí)行的不同階段)。該線程組的集合在本文中稱為“協(xié)作線程陣列”(“CTA”)或“線程陣列”。特定CTA的大小等于m*k,其中k是線程組中并發(fā)執(zhí)行線程的數(shù)目,其典型地是SM310內(nèi)的執(zhí)行單元數(shù)目的整數(shù)倍,以及m是SM310內(nèi)同時(shí)活動(dòng)的線程組的數(shù)目。
      [0045]雖然在圖3A中未示出,但每個(gè)SM310包含一級(jí)(LI)高速緩存,或使用在SM310之外的相應(yīng)LI高速緩存中的空間,以支持此外由執(zhí)行單元所實(shí)施的加載和存儲(chǔ)操作。每個(gè)SM310都還有權(quán)訪問在PPU202中的所有GPC208之間共享的二級(jí)(L2)高速緩存(未示出)。L2高速緩存可用來在線程之間轉(zhuǎn)移數(shù)據(jù)。最后,SM310還有權(quán)訪問片外“全局”存儲(chǔ)器,所述“全局”存儲(chǔ)器可以包括PP存儲(chǔ)器204和/或系統(tǒng)存儲(chǔ)器104。將理解的是,PPU202外部的任何存儲(chǔ)器可用作全局存儲(chǔ)器。另外,如圖3A所示,一點(diǎn)五級(jí)(L1.5)高速緩存335可以包括在GPC208內(nèi),并配置為接收并保持由SM310經(jīng)由存儲(chǔ)器接口 214從存儲(chǔ)器所請(qǐng)求的數(shù)據(jù)。這類數(shù)據(jù)可包括但不限于指令、一致(uniform)數(shù)據(jù)和常量數(shù)據(jù)。在GPC208內(nèi)具有多個(gè)SM310的實(shí)施例中,SM310可有利地共享高速緩存在L1.5高速緩存335中的公共指令和數(shù)據(jù)。[0046]每個(gè)GPC208可以具有配置為將虛擬地址映射到物理地址中的相關(guān)聯(lián)的存儲(chǔ)器管理單元(MMU) 320。在各種實(shí)施例中,MMU320可以駐留在GPC208或存儲(chǔ)器接口 214 二者之一內(nèi)。MMU320包括用來將虛擬地址映射到像素塊或存儲(chǔ)器頁的物理地址的頁表?xiàng)l目(PTE)集和可選地包括高速緩存行索引。MMU320可以包括地址轉(zhuǎn)譯后備緩沖區(qū)(TLB)或包括可以駐留在SM310內(nèi)、在一個(gè)或多個(gè)LI高速緩存內(nèi)、或在GPC208內(nèi)的高速緩存。
      [0047]在圖形和計(jì)算應(yīng)用中,GPC208可經(jīng)配置使得每個(gè)SM310耦連到紋理單元315用于實(shí)施紋理映射操作,諸如確定紋理樣本位置、讀取紋理數(shù)據(jù)以及過濾紋理數(shù)據(jù)。
      [0048]在操作中,為了將所處理的任務(wù)提供給另一個(gè)GPC208用于進(jìn)一步處理或?yàn)榱私?jīng)由交叉開關(guān)單元210將所處理的任務(wù)存儲(chǔ)在L2高速緩存(未示出)、并行處理存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中,每個(gè)SM310將所處理的任務(wù)傳送到工作分布交叉開關(guān)330。另外,預(yù)光柵操作(preROP)單元325配置為從SM310接收數(shù)據(jù)、將數(shù)據(jù)引導(dǎo)到分區(qū)單元215內(nèi)的一個(gè)或多個(gè)光柵操作(ROP)單元、針對(duì)顏色混合實(shí)施優(yōu)化、組織像素顏色數(shù)據(jù)和實(shí)施地址轉(zhuǎn)譯。
      [0049]應(yīng)該理解本文所述的核心架構(gòu)是示例性的并且變化和修改都是可能的。此外,任何數(shù)目的處理單元諸如SM310、紋理單元315、或preROP單元325可以包括在GPC208內(nèi)。進(jìn)一步地,如上文結(jié)合圖2所描述的,PPU202可以包括任何數(shù)目的GPC208,所述GPC208配置為在功能上彼此相似以使得執(zhí)行行為不取決于哪個(gè)GPC208接收特定處理任務(wù)。進(jìn)一步地,每個(gè)GPC208獨(dú)立于PPU202中的其他GPC208進(jìn)行操作以為一個(gè)或多個(gè)應(yīng)用程序執(zhí)行任務(wù)。鑒于前述內(nèi)容,本領(lǐng)域普通技術(shù)人員將理解圖1-3A所描述的架構(gòu)決不限制本發(fā)明的范圍。
      [0050]圖形管線架構(gòu)
      [0051]圖3B是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、可實(shí)現(xiàn)在圖2的PPU202內(nèi)的圖形處理管線350的示意圖。如所示,圖形處理管線350包括但不限于基元分布器(PD) 355 ;頂點(diǎn)屬性獲取單元(VAF) 360 ;頂點(diǎn)、曲面細(xì)分、幾何處理單元(VTG) 365 ;視窗縮放、剔除和裁剪單元(VPC) 370 ;拼接單元375、設(shè)立單元(設(shè)立)380、光柵化器(光柵)385 ;還被標(biāo)識(shí)為像素著色單元(PS) 390的片段處理單元,以及光柵操作單元(ROP) 395。
      [0052]PD355從前端212收集與高階表面、圖形基元等相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)并將頂點(diǎn)數(shù)據(jù)傳送到VAF360。
      [0053]VAF360從共享存儲(chǔ)器檢索與傳入的頂點(diǎn)中的每一個(gè)相關(guān)聯(lián)的頂點(diǎn)屬性,并將頂點(diǎn)數(shù)據(jù)與相關(guān)聯(lián)的頂點(diǎn)屬性一起存儲(chǔ)到共享存儲(chǔ)器中。
      [0054]VTG365是可編程執(zhí)行單元,其配置為執(zhí)行頂點(diǎn)著色器程序、曲面細(xì)分程序和幾何程序。這些程序處理從VAF360所接收的頂點(diǎn)數(shù)據(jù)和頂點(diǎn)屬性,并產(chǎn)生圖形基元以及在用于圖形基元的每個(gè)頂點(diǎn)處的顏色值、表面法向矢量和透明度值,用于在圖形處理管線350內(nèi)進(jìn)一步處理。雖然未明確示出,但在一些實(shí)施例中,VTG365可包括頂點(diǎn)處理單元、曲面細(xì)分初始化處理單元、任務(wù)生成單元、任務(wù)分布器、拓?fù)渖蓡卧?、曲面?xì)分處理單元以及幾何處理單元中的一個(gè)或多個(gè)。
      [0055]頂點(diǎn)處理單元是可編程執(zhí)行單元,其配置為執(zhí)行頂點(diǎn)著色器程序,按頂點(diǎn)著色器程序的指定來照明和變換頂點(diǎn)數(shù)據(jù)。例如,頂點(diǎn)處理單元可被編程以將頂點(diǎn)數(shù)據(jù)從基于對(duì)象的坐標(biāo)表示(對(duì)象空間)變換到諸如世界空間或規(guī)格化設(shè)備坐標(biāo)(NDC)空間的可替代的坐標(biāo)系。頂點(diǎn)處理單元可讀取由VAF存儲(chǔ)在共享存儲(chǔ)器中的頂點(diǎn)數(shù)據(jù)和頂點(diǎn)屬性并可處理頂點(diǎn)數(shù)據(jù)和頂點(diǎn)屬性。頂點(diǎn)處理單元415將所處理的頂點(diǎn)存儲(chǔ)在共享存儲(chǔ)器中。
      [0056]曲面細(xì)分初始化處理單元是可編程執(zhí)行單元,其配置為執(zhí)行曲面細(xì)分初始化著色器程序。曲面細(xì)分初始化處理單元處理由頂點(diǎn)處理單元所產(chǎn)生的頂點(diǎn)并生成稱為補(bǔ)丁(patch)的圖形基元。曲面細(xì)分初始化處理單元還生成各種補(bǔ)丁屬性。曲面細(xì)分初始化處理單元隨后將補(bǔ)丁數(shù)據(jù)和補(bǔ)丁屬性存儲(chǔ)在共享存儲(chǔ)器中。在一些實(shí)施例中,曲面細(xì)分初始化著色器程序可稱為外殼著色器(hull shader)或曲面細(xì)分控制著色器。
      [0057]任務(wù)生成單元從共享存儲(chǔ)器檢索用于頂點(diǎn)和補(bǔ)丁的數(shù)據(jù)和屬性。任務(wù)生成單元生成用于處理頂點(diǎn)和補(bǔ)丁的任務(wù)以由圖形處理管線350中的后續(xù)級(jí)處理。
      [0058]任務(wù)分布器重新分布由任務(wù)生成單元所產(chǎn)生的任務(wù)。由頂點(diǎn)著色器程序和曲面細(xì)分初始化程序的各種示例所產(chǎn)生的任務(wù)可在一個(gè)圖形處理管線350和另一個(gè)之間顯著變化。任務(wù)分布器重新分布這些任務(wù),使得每個(gè)圖形處理管線350在后續(xù)的管線級(jí)期間具有近似相同的工作量。
      [0059]拓?fù)渖蓡卧獧z索由任務(wù)分布器所分布的任務(wù)。拓?fù)渖蓡卧獙ㄅc補(bǔ)丁相關(guān)聯(lián)的頂點(diǎn)的頂點(diǎn)編入索引,并計(jì)算用于曲面細(xì)分頂點(diǎn)和連接經(jīng)曲面細(xì)分的頂點(diǎn)以形成圖形基元的索引的(U,V)坐標(biāo)。拓?fù)渖蓡卧S后將被編入索引的頂點(diǎn)存儲(chǔ)在共享存儲(chǔ)器中。
      [0060]曲面細(xì)分處理單元是可編程執(zhí)行單元,其配置為執(zhí)行曲面細(xì)分著色器程序。曲面細(xì)分處理單元從共享存儲(chǔ)器讀取輸入數(shù)據(jù)并將輸出數(shù)據(jù)寫到共享存儲(chǔ)器。共享存儲(chǔ)器中的該輸出數(shù)據(jù)被傳遞到下一著色器級(jí)、幾何處理單元445作為輸入數(shù)據(jù)。在一些實(shí)施例中,曲面細(xì)分著色器程序可稱為域著色器或曲面細(xì)分評(píng)估著色器。
      [0061]幾何處理單元是可編程執(zhí)行單元,其配置為執(zhí)行幾何著色器程序,從而變換圖形基元。頂點(diǎn)被分組以構(gòu)建圖形基元用于處理,其中圖形基元包括三角形、線段、點(diǎn)等等。例如,幾何處理單元可被編程以將圖形基元細(xì)分成一個(gè)或多個(gè)新圖形基元并計(jì)算用來將新圖形基元光柵化的參數(shù),諸如平面方程系數(shù)。
      [0062]幾何處理單元將指定新圖形基元的參數(shù)和頂點(diǎn)傳送到VPC370。幾何處理單元可讀取存儲(chǔ)在共享存儲(chǔ)器中的數(shù)據(jù)用于在處理幾何數(shù)據(jù)中使用。VPC370實(shí)施剪裁、剔除、透視校正和視窗變換以確定在最終所渲染的圖像中的那些圖形基元是潛在可視的以及哪些圖形基元不是潛在可視的。VPC370隨后將所處理的圖形基元傳送到拼接單元375。
      [0063]如本文所進(jìn)一步描述的,拼接單元375是駐留在世界空間管線352和屏幕空間管線354之間的圖形基元排序引擎。圖形基元在世界空間管線352中被處理并隨后被傳送到拼接單元375。屏幕空間分成高速緩存像素塊,其中每個(gè)高速緩存像素塊與屏幕空間的一部分相關(guān)聯(lián)。針對(duì)每個(gè)圖形基元,拼接單元375標(biāo)識(shí)與圖形基元相交的高速緩存像素塊集,即在本文稱為“拼接”的過程。在拼接某數(shù)目的圖形基元之后,拼接單元375在高速緩存像素塊基礎(chǔ)上處理圖形基元,其中與特定高速緩存像素塊相關(guān)聯(lián)的圖形基元被傳送到設(shè)立單元380。拼接單元375 —次一個(gè)高速緩存像素塊地將圖形基元傳送到設(shè)立單元380。與多個(gè)高速緩存像素塊相交的圖形基元典型地在世界空間管線352中被處理一次,但隨后被多次傳送到屏幕空間管線354。
      [0064]這類技術(shù)改進(jìn)在于屏幕空間管線354中的處理期間的高速緩存存儲(chǔ)器局部性,其中與第一高速緩存像素塊相關(guān)聯(lián)的多個(gè)存儲(chǔ)器操作訪問L2高速緩存的區(qū)域,或在對(duì)第一高速緩存像素塊的屏幕空間處理期間可保持駐留的任何其他技術(shù)上可行的高速緩存存儲(chǔ)器的區(qū)域。一旦由屏幕空間管線354處理與第一高速緩存像素塊相關(guān)聯(lián)的圖形基元,則可轉(zhuǎn)儲(chǔ)(flush)與第一高速緩存像素塊相關(guān)聯(lián)的L2高速緩存的部分,并且拼接單元可傳送與第二高速緩存像素塊相關(guān)聯(lián)的圖形基元。與第二高速緩存像素塊相關(guān)聯(lián)的多個(gè)存儲(chǔ)器操作可隨后訪問在對(duì)第二高速緩存像素塊的屏幕空間處理期間可保持駐留的L2高速緩存的區(qū)域。因此,到L2高速緩存和到渲染目標(biāo)的整體存儲(chǔ)器業(yè)務(wù)可減少。在一些實(shí)施例中,針對(duì)給定的圖形基元實(shí)施一次世界空間計(jì)算,而不論在屏幕空間中與圖形基元相交的高速緩存像素塊的數(shù)目。
      [0065]設(shè)立單元380經(jīng)由拼接單元375從VPC370接收頂點(diǎn)數(shù)據(jù),并計(jì)算與圖形基元相關(guān)聯(lián)的參數(shù),包括但不限于邊沿方程、部分平面方程以及深度平面方程。設(shè)立單元380隨后將所處理的圖形基元傳送到光柵化器385。
      [0066]光柵化器385掃描轉(zhuǎn)換新圖形基元并將片段和覆蓋數(shù)據(jù)傳送到像素著色單元390。另外,光柵化器385可配置為實(shí)施z剔除(z-culling)和其他基于z的優(yōu)化。
      [0067]像素著色單元390是可編程執(zhí)行單元,其配置為執(zhí)行片段著色器程序,按片段著色器程序的指定來變換從光柵化器385所接收的片段。片段著色器程序可以像素級(jí)別粒度對(duì)片段著色,其中這類著色器程序可稱為像素著色器程序??商娲兀沃鞒绦蚩梢詷颖炯?jí)別粒度對(duì)片段著色,其中每個(gè)像素包括多個(gè)樣本,并且每個(gè)樣本表示像素的一部分??商娲?,片段著色器程序可以任何其他技術(shù)上可行的粒度對(duì)片段著色,這取決于程控采樣率。
      [0068]在各種實(shí)施例中,片段處理單元460可被編程以實(shí)施諸如透視校正、紋理映射、著色、混合等操作,以產(chǎn)生傳送到R0P395的經(jīng)著色的片段。像素著色單元390可讀取存儲(chǔ)在共享存儲(chǔ)器中的數(shù)據(jù)。
      [0069]R0P395是處理單元,其實(shí)施諸如模板(stencil)、z測(cè)試、混合等的光柵操作,并經(jīng)由存儲(chǔ)器接口 214傳送像素?cái)?shù)據(jù)作為所處理的圖形數(shù)據(jù)用于存儲(chǔ)在圖形存儲(chǔ)器中,其中圖形存儲(chǔ)器典型地被結(jié)構(gòu)化為一個(gè)或多個(gè)渲染目標(biāo)。所處理的圖形數(shù)據(jù)可存儲(chǔ)在圖形存儲(chǔ)器、并行處理存儲(chǔ)器204、或系統(tǒng)存儲(chǔ)器104中用于在顯示設(shè)備110上顯示或用于由CPU102或并行處理子系統(tǒng)112進(jìn)一步處理。在一些實(shí)施例中,R0P395配置為壓縮寫入到存儲(chǔ)器的z或顏色數(shù)據(jù)以及解壓縮從存儲(chǔ)器讀取的z或顏色數(shù)據(jù)。在各種實(shí)施例中,R0P395可位于存儲(chǔ)器接口 214中、GPC208中、GPC之外的處理集群陣列230中、或PPU202內(nèi)的分立單元(未示出)中。
      [0070]可由PPU202內(nèi)的一個(gè)或多個(gè)處理元件實(shí)現(xiàn)圖形處理管線。例如,圖3A的SM310中的一個(gè)可配置為實(shí)施VTG365和像素著色單元390中的一個(gè)或多個(gè)的功能。H)355、VAF360、VPC450、拼接單元375、設(shè)立單元380、光柵化器385和R0P395的功能還可由特定GPC208內(nèi)的處理元件結(jié)合相應(yīng)分區(qū)單元215來實(shí)施??商娲?,可使用用于上文所列出的功能中的一個(gè)或多個(gè)的專用固定功能處理元件來實(shí)現(xiàn)圖形處理管線350。在各種實(shí)施例中,PTO202可配置為實(shí)現(xiàn)一個(gè)或多個(gè)圖形處理管線350。
      [0071]在一些實(shí)施例中,圖形處理管線350可分成世界空間管線352和屏幕空間管線354。世界空間管線352處理3D空間中的圖形對(duì)象,其中每個(gè)圖形對(duì)象的位置相對(duì)于其他圖形對(duì)象和相對(duì)于3D坐標(biāo)系是已知的。屏幕空間管線354處理已從3D坐標(biāo)系投影到表示顯示設(shè)備110的表面的2D平面表面上的圖形對(duì)象。例如,世界空間管線352可包括圖形處理管線350中的從TO355到VPC370的管線級(jí)。屏幕空間管線354可包括圖形處理管線350中的從設(shè)立單元380到ROP395的管線級(jí)。拼接單元375將跟隨在世界空間管線352的最后級(jí)也就是VPC370之后。拼接單元375將在屏幕空間管線354的第一級(jí)也就是設(shè)立單元380之前。
      [0072]在一些實(shí)施例中,世界空間管線352可進(jìn)一步分成alpha階段管線和beta階段管線。例如,alpha階段管線可包括圖形處理管線350中的從TO355到任務(wù)生成單元的管線級(jí)。beta階段管線可包括圖形處理管線350中的從拓?fù)渖蓡卧絍PC370的管線級(jí)。圖形處理管線350在于alpha階段管線中的處理期間實(shí)施第一操作集以及在于beta階段管線中的處理期間實(shí)施第二操作集。如本文所使用的,操作集定義為由單個(gè)線程、線程組或由一致動(dòng)作的多個(gè)線程組所執(zhí)行的一個(gè)或多個(gè)指令。
      [0073]在采用多個(gè)圖形處理管線350的系統(tǒng)中,可劃分與圖形對(duì)象集相關(guān)聯(lián)的頂點(diǎn)數(shù)據(jù)和頂點(diǎn)屬性,使得每個(gè)圖形處理管線350具有近似相同的經(jīng)過alpha階段的工作量。alpha階段處理可顯著擴(kuò)展頂點(diǎn)數(shù)據(jù)和頂點(diǎn)屬性的量,使得由任務(wù)生成單元所產(chǎn)生的頂點(diǎn)數(shù)據(jù)和頂點(diǎn)屬性的量顯著大于由PD355和VAF360所處理的頂點(diǎn)數(shù)據(jù)和頂點(diǎn)屬性的量。進(jìn)一步地,與一個(gè)圖形處理管線350相關(guān)聯(lián)的任務(wù)生成單元可比與另一圖形處理管線350相關(guān)聯(lián)的任務(wù)生成單元產(chǎn)生顯著更多數(shù)量的頂點(diǎn)數(shù)據(jù)和頂點(diǎn)屬性,甚至在兩個(gè)圖形處理管線350在alpha節(jié)點(diǎn)管線的開始處處理相同數(shù)量的屬性的情況下。在這類情況下,任務(wù)分布器重新分布由alpha階段管線所產(chǎn)生的屬性,使得每個(gè)圖形處理管線350在beta階段管線的開始處具有近似相同的工作量。
      [0074]請(qǐng)注意,如本文所使用的,對(duì)共享存儲(chǔ)器的引用可包括任何一個(gè)或多個(gè)技術(shù)上可行的存儲(chǔ)器,包括但不限于,由一個(gè)或多個(gè)SM310所共享的本地存儲(chǔ)器,或經(jīng)由存儲(chǔ)器接口214可訪問的存儲(chǔ)器,諸如高速緩存存儲(chǔ)器、并行處理存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104。還請(qǐng)注意,如本文所使用的,對(duì)高速緩存存儲(chǔ)器的弓I用可包括任何一個(gè)或多個(gè)技術(shù)上可行的存儲(chǔ)器,包括但不限于,LI高速緩存、L1.5高速緩存以及L2高速緩存。
      [0075]拼接式進(jìn)行高速緩存
      [0076]圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、可配置圖3B的圖形處理管線350以對(duì)其進(jìn)行生成和處理的高速緩存像素塊410 (O)的示意圖。如所示,高速緩存像素塊410 (O)表示屏幕空間400的一部分并分成多個(gè)光柵像素塊420。
      [0077]屏幕空間400表示配置為存儲(chǔ)由圖形處理管線350內(nèi)的功能單元所傳送的所渲染的圖像數(shù)據(jù)和其他數(shù)據(jù)的一個(gè)或多個(gè)存儲(chǔ)器緩沖區(qū)。在一些實(shí)施例中,一個(gè)或多個(gè)存儲(chǔ)器緩沖區(qū)可配置為一個(gè)或多個(gè)渲染目標(biāo)。屏幕空間表示配置為存儲(chǔ)由圖形處理管線所渲染的圖像的存儲(chǔ)器緩沖區(qū)。屏幕空間400可與任何數(shù)目的渲染目標(biāo)相關(guān)聯(lián),其中每個(gè)渲染目標(biāo)可獨(dú)立于其他渲染目標(biāo)配置為包括任何數(shù)目的字段。渲染目標(biāo)內(nèi)的每個(gè)字段可獨(dú)立于其他字段配置為包括任何數(shù)目的位。每個(gè)渲染目標(biāo)可包括多個(gè)像元(像素),并且每個(gè)像素可轉(zhuǎn)而包括多個(gè)樣本。在一些實(shí)施例中,每個(gè)高速緩存像素塊的大小可基于與屏幕空間相關(guān)聯(lián)的渲染目標(biāo)的大小和配置。在操作中,一旦渲染完成,那么一個(gè)或多個(gè)渲染目標(biāo)中的像素可被傳送到顯示設(shè)備以顯示所渲染的圖像。
      [0078]以示例的方式,用于屏幕空間400的渲染目標(biāo)集可包括八個(gè)渲染目標(biāo)。第一渲染目標(biāo)可包括四個(gè)字段,其表示與相應(yīng)片段相關(guān)聯(lián)的包括紅、綠和藍(lán)分量顏色的顏色和透明度信息。第二渲染目標(biāo)可包括兩個(gè)字段,其表示與相應(yīng)片段相關(guān)聯(lián)的深度和模板信息。第三渲染目標(biāo)可包括三個(gè)字段,其表示與相應(yīng)片段相關(guān)聯(lián)的表面法向矢量信息,包括X軸法向矢量、y軸法向矢量和Z軸法向矢量。剩余五個(gè)渲染目標(biāo)可配置為存儲(chǔ)與相應(yīng)片段相關(guān)聯(lián)的附加信息。這類配置可包括用于各種信息的存儲(chǔ),各種信息包括但不限于3D位置數(shù)據(jù)、漫射照明信息和高光照明信息。
      [0079]每個(gè)高速緩存像素塊410表示屏幕空間400的一部分。為了清楚起見,圖4僅示出五個(gè)高速緩存像素塊410 (0)-410 (4)。在一些實(shí)施例中,高速緩存像素塊在X和Y屏幕空間中可具有任意大小。例如,如果高速緩存像素塊駐留在還用來存儲(chǔ)其他數(shù)據(jù)的高速緩存存儲(chǔ)器中,那么可定制高速緩存像素塊大小以僅消耗高速緩存存儲(chǔ)器的特定部分。高速緩存像素塊的大小可基于若干因素,包括與屏幕空間400相關(guān)聯(lián)的渲染目標(biāo)的數(shù)量和配置、每像素的樣本數(shù)量以及存儲(chǔ)在高速緩存像素塊中的數(shù)據(jù)是否被壓縮。一般來說,高速緩存像素塊被定制大小以增加高速緩存像素塊數(shù)據(jù)保持駐留在高速緩存存儲(chǔ)器中直到與高速緩存像素塊相關(guān)聯(lián)的所有圖形基元被完全處理為止的可能性。
      [0080]光柵像素塊420表示高速緩存像素塊410 (O)的一部分。如所示,高速緩存像素塊410 (O)包括以四個(gè)光柵像素塊420寬和四個(gè)光柵像素塊420高的陣列布置的十六個(gè)光柵像素塊420 (0)-420 (15)。在包括多個(gè)GPC208的系統(tǒng)中,可在可用的GPC208中劃分與給定高速緩存像素塊410 (O)相關(guān)聯(lián)的處理。在示出的示例中,如果高速緩存像素塊410 (O)的十六個(gè)光柵像素塊由四個(gè)不同的GPC208所處理,那么可指派每個(gè)GPC208處理高速緩存像素塊410 (O)的十六個(gè)光柵像素塊420中的四個(gè)。具體來講,可指派第一 GPC208處理光柵像素塊420 (0),420 (7),420 (10)和420 (13)??芍概傻诙?GPC208處理光柵像素塊420 (1),420 (4),420 (11)和420 (14)??芍概傻谌鼼PC208處理光柵像素塊420
      (2),420 (5),420 (8)和420 (15)。隨后將指派第四GPC208處理光柵像素塊420 (3),420
      (6),420 (9)和420 (12)。在其他實(shí)施例中,可以以任何技術(shù)上可行的方式在GPC208或被包括在計(jì)算機(jī)系統(tǒng)100內(nèi)的任何其他處理實(shí)體中對(duì)給定的高速緩存像素塊內(nèi)的不同光柵像素塊的處理加以分布。
      [0081]經(jīng)適應(yīng)性定制大小的高速緩存像素塊
      [0082]圖4的高速緩存像素塊被定制大小以容納特定渲染目標(biāo)配置。渲染目標(biāo)配置包括一個(gè)或多個(gè)渲染目標(biāo),其每一個(gè)包括一個(gè)或多個(gè)字段?;诮o定的渲染目標(biāo)配置的渲染目標(biāo)內(nèi)的各種字段的大小來計(jì)算高速緩存像素塊大小。
      [0083]圖5示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、存儲(chǔ)在圖2的DRAM220中的一個(gè)或多個(gè)的渲染目標(biāo)集500。如所示,渲染目標(biāo)集500包括五個(gè)單獨(dú)的渲染目標(biāo)510 (0)-510 (4)。
      [0084]第一渲染目標(biāo)510 (O)包括四個(gè)字段,其表不與相應(yīng)樣本或片段相關(guān)聯(lián)的第一顏色和透明度信息集。如所示,四個(gè)字段包括紅色值515、綠色值520、藍(lán)色值525和alpha或稱透明度值530。紅色值515、綠色值520、藍(lán)色值525和alpha值530中的每一個(gè)包括一個(gè)字節(jié)的數(shù)據(jù)。該第一渲染目標(biāo)510 (O)可被標(biāo)示為CO,指示第一渲染目標(biāo)510 (O)包括第一顏色和alpha信息集。
      [0085]第二渲染目標(biāo)510 (I)包括四個(gè)字段,其表示與相應(yīng)樣本或片段相關(guān)聯(lián)的第二顏色和透明度信息集。如所示,四個(gè)字段包括紅色值535、綠色值540、藍(lán)色值545和alpha或稱透明度值550。紅色值535、綠色值540、藍(lán)色值545和alpha值550中的每一個(gè)包括一個(gè)字節(jié)的數(shù)據(jù)。該第二渲染目標(biāo)520 (I)可被標(biāo)示為Cl,指示第二渲染目標(biāo)510 (I)包括第二顏色和alpha信息集。
      [0086]第三渲染目標(biāo)510 (2)包括兩個(gè)字段,其表示與相應(yīng)樣本或片段相關(guān)聯(lián)的第一深度和模板信息集。如所示,兩個(gè)字段包括z或稱深度值555以及包括模板掩碼560。如所示,z值555包括三個(gè)字節(jié)的數(shù)據(jù),而模板掩碼560包括一個(gè)字節(jié)的數(shù)據(jù)。該第三渲染目標(biāo)520 (2)可被標(biāo)示為Z0,指示第三渲染目標(biāo)510 (2)包括第一 z和模板信息集。
      [0087]第四渲染目標(biāo)510 (3)包括兩個(gè)字段,其表示與相應(yīng)樣本或片段相關(guān)聯(lián)的第二深度和模板信息集。如所示,兩個(gè)字段包括z或稱深度值565和包括模板掩碼570。如所示,z值565包括三個(gè)字節(jié)的數(shù)據(jù),而模板掩碼570包括一個(gè)字節(jié)的數(shù)據(jù)。該第四渲染目標(biāo)520
      (3)可被標(biāo)示為Z1,指示第四渲染目標(biāo)510 (3)包括第二 z和模板信息集。
      [0088]第五渲染目標(biāo)510 (4)包括四個(gè)字段,其表示與相應(yīng)樣本或片段相關(guān)聯(lián)的表面法向矢量信息。如所示,四個(gè)字段包括X軸法向矢量575、y軸法向矢量580和Z軸法向矢量585。在用于第五渲染目標(biāo)510 (4)的特定配置中,第四字段是未使用的字段590。x軸法向矢量575、y軸法向矢量580和z軸法向矢量585以及未使用的字段590中的每一個(gè)包括一個(gè)字節(jié)的數(shù)據(jù)。該第五渲染目標(biāo)520 (4)可被標(biāo)示為NO,指示第五渲染目標(biāo)510 (4)包括第一表面法向信息集。
      [0089]渲染目標(biāo)配置隨圖像渲染的進(jìn)展而改變。每個(gè)渲染目標(biāo)配置包括用于圖像渲染的特定階段的渲染目標(biāo)集。高速緩存像素塊可在當(dāng)前渲染目標(biāo)配置和新渲染目標(biāo)配置之間的分界處被轉(zhuǎn)儲(chǔ)和重新定制大小。在一些實(shí)施例中,在新渲染目標(biāo)配置是當(dāng)前渲染目標(biāo)配置的子集的情況下,高速緩存像素塊可不被轉(zhuǎn)儲(chǔ)和重新定制大小。
      [0090]圖6示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、與渲染計(jì)算機(jī)圖形圖像相關(guān)聯(lián)的一系列渲染目標(biāo)配置600。如所示,一系列渲染目標(biāo)配置600包括按照給定順序的八個(gè)渲染目標(biāo)配置610 (O) -610 (7)。
      [0091]隨著計(jì)算機(jī)圖形圖像的渲染的開始,第一渲染目標(biāo)配置610 (O)指定在該渲染階段期間使用第一顏色/alpha渲染目標(biāo)CO、第一 Z/模板渲染目標(biāo)ZO和法向矢量渲染目標(biāo)NO。因此,該第一渲染目標(biāo)配置610 (O)被標(biāo)示為C0Z0N0。
      [0092]基于第一渲染目標(biāo)配置610 (O)來計(jì)算高速緩存像素塊大小。首先,由高速緩存像素塊所消耗的高速緩存存儲(chǔ)器量除以第一渲染目標(biāo)配置610 (O)中的每個(gè)位置所需的存儲(chǔ)器空間,這得到高速緩存像素塊中的像素的數(shù)目??梢罁?jù)字節(jié)的數(shù)量、或以任何其他合適的量度來測(cè)量存儲(chǔ)器空間。該像素?cái)?shù)目隨后用來確定高速緩存像素塊大小。在一個(gè)示例中,高速緩存存儲(chǔ)器的大小是153,600字節(jié)并且高速緩存存儲(chǔ)器的二分之一由高速緩存像素塊所占用。由高速緩存像素塊所占用的存儲(chǔ)器的量將是153,600/2或76,800字節(jié)。由渲染目標(biāo)配置610 (O)中的每個(gè)位置所占用的字節(jié)的數(shù)目將是三個(gè)渲染目標(biāo)X每渲染目標(biāo)四字節(jié),或12個(gè)字節(jié)。那么高速緩存像素塊中的像素的數(shù)目將是76,800/12或6400個(gè)像素。對(duì)于正方形高速緩存像素塊,高速緩存像素塊將是64001/2或80個(gè)像素寬X80個(gè)像素高。可替代地,高速緩存像素塊大小可以是技術(shù)上可行的非正方形格式,諸如64個(gè)像素寬XlOO個(gè)像素高。
      [0093]隨著計(jì)算機(jī)圖形圖像的渲染繼續(xù),第二渲染目標(biāo)配置610 (I)指定在該渲染階段期間使用第二顏色/alpha渲染目標(biāo)Cl和第二 Z/模板渲染目標(biāo)Zl。因此,該第二渲染目標(biāo)配置610(1)被標(biāo)示為(:121。因?yàn)殇秩灸繕?biāo)配置已改變,所以轉(zhuǎn)儲(chǔ)高速緩存像素塊,并且計(jì)算新高速緩存像素塊大小。
      [0094]基于第二渲染目標(biāo)配置610 (I)來計(jì)算新高速緩存像素塊大小。在一個(gè)示例中,高速緩存存儲(chǔ)器的大小是153,600字節(jié)并且高速緩存存儲(chǔ)器的二分之一,76,800字節(jié),由高速緩存像素塊所占用。由渲染目標(biāo)配置610 (I)中的每個(gè)位置所占用的字節(jié)的數(shù)目將是兩個(gè)渲染目標(biāo)X每渲染目標(biāo)四字節(jié),或8個(gè)字節(jié)。那么高速緩存像素塊中的像素的數(shù)目將是76,800/8或9600個(gè)像素。對(duì)于正方形高速緩存像素塊,高速緩存像素塊將是96001/2,其上舍入到98個(gè)像素寬X98個(gè)像素高??商娲?,高速緩存像素塊大小可以是技術(shù)上可行的非正方形格式,諸如75個(gè)像素寬X128個(gè)像素高。
      [0095]隨著計(jì)算機(jī)圖形圖像的渲染繼續(xù),第三渲染目標(biāo)配置610 (2)指定在該渲染階段期間使用第一顏色/alpha渲染目標(biāo)CO和第一 Z/模板渲染目標(biāo)Z0。因此,該第三渲染目標(biāo)配置610(2)被標(biāo)示為0)20。因?yàn)殇秩灸繕?biāo)配置已改變,所以轉(zhuǎn)儲(chǔ)高速緩存像素塊,并且計(jì)算新高速緩存像素塊大小。在該情況下,與第三渲染目標(biāo)配置610 (2)相對(duì)應(yīng)的字節(jié)的數(shù)目與用于第二渲染目標(biāo)配置610 (I)的相同。因此,高速緩存像素塊的大小不從第二渲染目標(biāo)配置610 (I)改變到第三渲染目標(biāo)配置610 (2)。
      [0096]隨著計(jì)算機(jī)圖形圖像的渲染繼續(xù),第四渲染目標(biāo)配置610 (3)指定在該渲染階段期間使用第一顏色/alpha渲染目標(biāo)CO、第二顏色/alpha渲染目標(biāo)Cl和第一 Z/模板渲染目標(biāo)Z0。因此,該第四渲染目標(biāo)配置610(3)被標(biāo)示為C0C1Z0。因?yàn)殇秩灸繕?biāo)配置已改變,所以轉(zhuǎn)儲(chǔ)高速緩存像素塊,并且計(jì)算新高速緩存像素塊大小。在該情況下,與第四渲染目標(biāo)配置610 (3)相對(duì)應(yīng)的字節(jié)的數(shù)目與用于第一渲染目標(biāo)配置610 (O)的相同。因此,如上文結(jié)合第一渲染目標(biāo)配置610 (O)所描述的,計(jì)算高速緩存像素塊大小。
      [0097]隨著計(jì)算機(jī)圖形圖像的渲染繼續(xù),第五到第八渲染目標(biāo)配置610 (4)-610 (7)分別指定C0Z0、C0C1Z0、COCl和C0C1Z0的渲染目標(biāo)配置。在一個(gè)實(shí)施例中,隨著渲染前進(jìn)通過渲染目標(biāo)配置610中的每次改變,可轉(zhuǎn)儲(chǔ)高速緩存像素塊并可計(jì)算新高速緩存像素塊,如上文所描述的。然而,轉(zhuǎn)儲(chǔ)和重新定制高速緩存像素塊大小可能是高計(jì)算代價(jià)的,并且在正轉(zhuǎn)儲(chǔ)當(dāng)前高速緩存像素塊時(shí)可能延遲進(jìn)行采用新渲染目標(biāo)配置610的渲染。另外,轉(zhuǎn)儲(chǔ)減少可在高速緩存像素塊中被拼接在一起的圖形基元的數(shù)目,相應(yīng)地減少了拼接的益處。
      [0098]因此,在另一實(shí)施例中,如果新渲染目標(biāo)配置610表示當(dāng)前渲染目標(biāo)配置610的子集,那么高速緩存像素塊既不被轉(zhuǎn)儲(chǔ)也不被重新定制大小。該方法包括新渲染目標(biāo)配置610與當(dāng)前渲染目標(biāo)配置610相同的情況。這類方法可導(dǎo)致高速緩存存儲(chǔ)器的較低效的使用。另一方面,可減少高速緩存像素塊轉(zhuǎn)儲(chǔ)和重新定制大小,其可導(dǎo)致較高的效率和性能改進(jìn),超出對(duì)減少的高速緩存存儲(chǔ)器使用效率的彌補(bǔ)。在又一實(shí)施例中,產(chǎn)生自改變高速緩存像素塊大小的高速緩存存儲(chǔ)器效率的改進(jìn)可與針對(duì)不轉(zhuǎn)儲(chǔ)和重新定制高速緩存像素塊大小的性能改進(jìn)相比較。隨后可根據(jù)該比較做出是保持當(dāng)前高速緩存像素塊配置還是轉(zhuǎn)儲(chǔ)并重新定制聞速緩存像素塊大小的決策。
      [0099]采用該后者的方法,第五到第八渲染目標(biāo)配置610 (4)-610 (7)中的每一個(gè)是第四渲染目標(biāo)配置610 (3)的子集。這樣,在渲染前進(jìn)通過第五到第八渲染目標(biāo)配置610
      (4)-610 (7)的同時(shí),高速緩存像素塊大小可保持如針對(duì)第四渲染目標(biāo)配置610 (3)所配置的那樣??商娲?,可轉(zhuǎn)儲(chǔ)并重新定制高速緩存像素塊大小,并且在任何或所有第五到第八渲染目標(biāo)配置610 (4)-610 (7)中改變。
      [0100]在一個(gè)實(shí)施例中,可根據(jù)被當(dāng)前所選擇的抗鋸齒模式來修改高速緩存像素塊大小。在抗鋸齒模式中,多個(gè)樣本可被存儲(chǔ)用于每個(gè)像素位置并后續(xù)被混合,在最終所渲染的圖像中導(dǎo)致改進(jìn)的圖像質(zhì)量。可使用標(biāo)記諸如AA-1、AA-2、AA-4或AA-8,其指示每個(gè)像素分別包括1、2、4或8個(gè)樣本,來數(shù)字地指定抗鋸齒模式。因此,與當(dāng)不使用抗鋸齒時(shí)的高速緩存像素塊像素相比較,每個(gè)高速緩存像素塊像素可分別消耗1、2、4或8倍的字節(jié)數(shù)量。當(dāng)計(jì)算高速緩存像素塊大小時(shí),高速緩存像素塊大小的計(jì)算可將抗鋸齒模式納入考慮。例如,在每像素占用12個(gè)字節(jié)的渲染目標(biāo)配置中,高速緩存像素塊可包括76,800字節(jié)。如上文所描述的,不采用抗鋸齒模式,這樣的高速緩存像素塊將包括6400個(gè)像素。采用抗鋸齒模式,高速緩存像素塊針對(duì)AA-1、AA-2、AA-4、或AA-8模式將分別包括6400、3200、1600、或800個(gè)像素。如果高速緩存像素塊是正方形的,那么每個(gè)高速緩存像素塊將分別被格式化為80X80、57X57、40X40、或 29X29 個(gè)像素。
      [0101]在一些實(shí)施例中,高速緩存像素塊可以是較大的以利用可在較高抗鋸齒模式下壓縮用于每個(gè)像素的樣本數(shù)據(jù)的事實(shí)。例如,與當(dāng)不使用抗鋸齒時(shí)的高速緩存像素塊像素相比較,抗鋸齒模式AA-1、AA-2、AA-4、或AA-8可能分別消耗1、2、3、或5倍的字節(jié)數(shù)量。當(dāng)計(jì)算高速緩存像素塊大小時(shí)高速緩存像素塊大小的計(jì)算可將抗鋸齒模式納入考慮。在每像素占用12個(gè)字節(jié)的渲染目標(biāo)配置中,高速緩存像素塊可包括76,800字節(jié)。如上文所描述的,不采用抗鋸齒模式,這樣的高速緩存像素塊將包括6400個(gè)像素。采用抗鋸齒模式,高速緩存像素塊針對(duì)44-1、44-2、44-4、或4々-8模式將分別包括6400、3200、2134、或1280個(gè)像素。如果高速緩存像素塊是正方形的,那么每個(gè)高速緩存像素塊將分別被格式化為80X80、57X57、47X47、或 36X36 個(gè)像素。
      [0102]在又一實(shí)施例中,可使用表面壓縮來進(jìn)一步增加高速緩存像素塊大小。來自光柵操作單元395的表面數(shù)據(jù),諸如ZROP和CROP數(shù)據(jù),可以以經(jīng)壓縮的方式存儲(chǔ)在渲染目標(biāo)510中。這類經(jīng)壓縮的表面數(shù)據(jù)可轉(zhuǎn)移到L2高速緩存和轉(zhuǎn)移自L2高速緩存而不用解壓縮和重新壓縮數(shù)據(jù),這減少渲染目標(biāo)和L2高速緩存之間的業(yè)務(wù)。經(jīng)壓縮的表面數(shù)據(jù)可以以經(jīng)壓縮的格式存儲(chǔ)在L2高速緩存中,這減少L2高速緩存中的存儲(chǔ)器消耗??墒褂门c表面壓縮相關(guān)聯(lián)的、所估計(jì)的或?qū)嶋H的壓縮比,以類似于上文結(jié)合抗鋸齒模式所描述的方法的方式,來修改高速緩存像素塊大小計(jì)算。
      [0103]在另一實(shí)施例中,在聞速緩存像素塊駐留在統(tǒng)一的聞速緩存存儲(chǔ)器中的情況下,諸如本文所描述的L2高速緩存,則高速緩存控制器可進(jìn)一步利用到渲染目標(biāo)510和來自渲染目標(biāo)510的其他高速緩存業(yè)務(wù),以進(jìn)一步減少片外存儲(chǔ)器帶寬并增加性能。在EVICT_NORMAL逐出策略之下高速緩存像素塊可存儲(chǔ)在L2高速緩存存儲(chǔ)器中,其中高速緩存像素塊服從標(biāo)準(zhǔn)逐出規(guī)則,該標(biāo)準(zhǔn)逐出規(guī)則可應(yīng)用到存儲(chǔ)在L2高速緩存中的具有相同逐出策略的其他數(shù)據(jù),該其他數(shù)據(jù)諸如與ROP單元395、VAF360和紋理單元(未示出)相關(guān)的數(shù)據(jù)。隨著用于特定高速緩存像素塊的圖形基元被處理,流多處理器310(經(jīng)由全局加載和全局存儲(chǔ)操作)、R0P395和紋理單元可實(shí)施與屏幕的特定區(qū)域相關(guān)聯(lián)的、影響高速緩存像素塊的存儲(chǔ)器操作。所有這類存儲(chǔ)器操作可經(jīng)由相同L2高速緩存來實(shí)施。
      [0104]如上文所描述的,經(jīng)由統(tǒng)一的L2高速緩存來高速緩存數(shù)據(jù)允許高速緩存控制器在各種使用中動(dòng)態(tài)地分配高速緩存,各種使用包括但不限于高速緩存像素塊數(shù)據(jù)、頂點(diǎn)屬性數(shù)據(jù)和紋理數(shù)據(jù)。例如高速緩存控制器可分配較高百分比的高速緩存存儲(chǔ)器用于除高速緩存像素塊數(shù)據(jù)之外的諸如紋理數(shù)據(jù)的數(shù)據(jù),這導(dǎo)致對(duì)該其他數(shù)據(jù)的改進(jìn)的高速緩存性能。這樣,高速緩存控制器不局限于靜態(tài)L2高速緩存分區(qū),或不局限于包括用于高速緩存像素塊數(shù)據(jù)的單獨(dú)的專用高速緩存和用于其他數(shù)據(jù)的第二專用高速緩存的架構(gòu),該其他數(shù)據(jù)諸如頂點(diǎn)屬性數(shù)據(jù)和紋理數(shù)據(jù)。而是,高速緩存控制器基于針對(duì)高速緩存存儲(chǔ)器資源的當(dāng)前需求,動(dòng)態(tài)地選擇單個(gè)統(tǒng)一的L2高速緩存在高速緩存像素塊數(shù)據(jù)和其他數(shù)據(jù)之間的分區(qū)。
      [0105]因?yàn)楦咚倬彺嫦袼貕K數(shù)據(jù)訪問服從與其他L2數(shù)據(jù)業(yè)務(wù)流相同的EVICT_N0RMAL逐出策略,所以L2高速緩存不包括在這些不同業(yè)務(wù)流之間的靜態(tài)分區(qū)。因此,利用高速緩存數(shù)據(jù)的時(shí)間和空間局部性,高速緩存控制器可組合L2高速緩存和渲染目標(biāo)存儲(chǔ)器的各部分之間的業(yè)務(wù)以進(jìn)一步減少L2高速緩存和渲染目標(biāo)510之間的業(yè)務(wù)。
      [0106]在一個(gè)示例中,高速緩存控制器可組合被從ZROP單元、CROP單元或來自SM310的全局存儲(chǔ)器訪問中任何一個(gè)引導(dǎo)到相同渲染目標(biāo)位置的寫事務(wù)。在高速緩存像素塊駐留在L2高速緩存中的同時(shí),高速緩存控制器可經(jīng)由回寫策略在L2高速緩存中組合這些寫事務(wù)。高速緩存控制器隨后在單個(gè)事務(wù)中將數(shù)據(jù)從L2高速緩存寫入到渲染目標(biāo)510。該方法將利用空間局部性用于與渲染目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的寫事務(wù)。
      [0107]在另一個(gè)示例中,因?yàn)檎叫位蚓匦涡螤畹母咚倬彺嫦袼貕K表示渲染目標(biāo)510中的相鄰像素的區(qū)域,所以高速緩存控制器很可能從渲染目標(biāo)中讀取相鄰的存儲(chǔ)器地址。這類數(shù)據(jù)可從渲染目標(biāo)510獲取一次并存儲(chǔ)在L2高速緩存中。隨后當(dāng)數(shù)據(jù)駐留在L2高速緩存中時(shí)可多次訪問所讀取的數(shù)據(jù)。該方法將利用空間局部性用于與渲染目標(biāo)數(shù)據(jù)相關(guān)聯(lián)的讀事務(wù)。
      [0108]在又一示例中,在圖像渲染期間被引導(dǎo)到渲染目標(biāo)510中的相同位置的存儲(chǔ)器讀事務(wù)可能在時(shí)間上緊挨著出現(xiàn)。重疊的基元可能訪問相同紋理,其中紋理坐標(biāo)對(duì)齊到高速緩存像素塊坐標(biāo)。在這類情況下,渲染目標(biāo)510中的紋理存儲(chǔ)器將被多次訪問,其中訪問在時(shí)間上將彼此接近。高速緩存控制器可將這些訪問組合到被引導(dǎo)到渲染目標(biāo)510中的紋理存儲(chǔ)器的單個(gè)讀事務(wù)中。該方法將利用渲染目標(biāo)數(shù)據(jù)的時(shí)間局部性。除紋理訪問之外,還可取得時(shí)間局部性的類似優(yōu)點(diǎn)用于由R0P395進(jìn)行的讀和寫訪問以及由SM310進(jìn)行的一般全局加載和全局存儲(chǔ)訪問。在一些實(shí)施例中,可使用相同方法用于訪問與并非渲染目標(biāo)的表面相關(guān)聯(lián)的紋理存儲(chǔ)器。
      [0109]應(yīng)理解的是,本文所描述的架構(gòu)僅是示意性的,并且變形和修改是可能的。在一個(gè)示例中,本文圍繞給定配置中的具體渲染目標(biāo)集500來描述技術(shù)。然而,可使用任何數(shù)目的渲染目標(biāo)500來采用所描述的技術(shù)。每個(gè)渲染目標(biāo)510可獨(dú)立于其他渲染目標(biāo)配置為包括任何數(shù)目的字段。這類字段可包括但不限于3D位置、漫射照明信息和高光照明信息。渲染目標(biāo)510內(nèi)的每個(gè)字段可獨(dú)立于其他字段配置為包括任何數(shù)目的位。在另一個(gè)示例中,雖然在一系列的渲染目標(biāo)配置600中示出具體渲染目標(biāo)配置610,但可指定任何技術(shù)上可行的渲染目標(biāo)配置610。在又一示例中,在特定圖像的渲染期間,可采用任何系列的渲染目標(biāo)配置600,其中可指定任何數(shù)量的渲染目標(biāo)配置610,并且任何渲染目標(biāo)配置610可在任何其他渲染目標(biāo)配置610之前或之后。
      [0110]圖7闡述根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于適應(yīng)性定制高速緩存像素塊大小的方法步驟的流程圖。雖然結(jié)合圖1-6的系統(tǒng)描述方法步驟,但本領(lǐng)域普通技術(shù)人員將理解的是,配置為以任何次序?qū)嵤┓椒ú襟E的任何系統(tǒng)在本發(fā)明的范圍內(nèi)。
      [0111]如所示,方法700開始于步驟702,其中設(shè)備驅(qū)動(dòng)程序103檢測(cè)不同于當(dāng)前渲染目標(biāo)配置的新渲染目標(biāo)配置。渲染目標(biāo)配置中的改變可以是由于新圖像渲染過程的開始或由于在圖像渲染過程期間從當(dāng)前渲染目標(biāo)配置到新渲染目標(biāo)配置的改變。在步驟704,設(shè)備驅(qū)動(dòng)程序103確定新渲染目標(biāo)配置是否是當(dāng)前渲染目標(biāo)配置的子集。如果新渲染目標(biāo)配置是當(dāng)前渲染目標(biāo)配置的子集,那么方法700終止。
      [0112]然而,如果新渲染目標(biāo)配置不是當(dāng)前渲染目標(biāo)配置的子集,那么方法700前進(jìn)到步驟706,其中設(shè)備驅(qū)動(dòng)程序103計(jì)算由高速緩存像素塊所占用的高速緩存存儲(chǔ)器空間。例如,高速緩存像素塊可占用總可用高速緩存存儲(chǔ)器的二分之一或三分之一。在步驟708,設(shè)備驅(qū)動(dòng)程序103計(jì)算由每個(gè)像素所占用的存儲(chǔ)器空間的量。例如,設(shè)備驅(qū)動(dòng)程序103可將由新渲染目標(biāo)配置中的每個(gè)渲染目標(biāo)的每個(gè)字段所占用的字節(jié)數(shù)目相加。
      [0113]在步驟710,設(shè)備驅(qū)動(dòng)程序103對(duì)步驟708的存儲(chǔ)器空間計(jì)算應(yīng)用抗鋸齒模式因子。在一個(gè)示例中,針對(duì)AA-1、AA-2、AA-4、或AA-8模式,設(shè)備驅(qū)動(dòng)程序103可將每像素的存儲(chǔ)器空間分別乘以1、2、4、或8倍的因子。在另一示例中,針對(duì)AA-1、AA-2、AA-4、或AA-8模式,設(shè)備驅(qū)動(dòng)程序103可將每像素的存儲(chǔ)器空間分別乘以1、2、3、或5倍的因子,這解釋在較高抗鋸齒模式中壓縮像素的能力。在步驟712,設(shè)備驅(qū)動(dòng)程序103對(duì)步驟708的存儲(chǔ)器空間計(jì)算應(yīng)用表面壓縮因子。例如,設(shè)備驅(qū)動(dòng)程序103可將每像素的存儲(chǔ)器空間乘以基于ZROP數(shù)據(jù)或CROP數(shù)據(jù)的所估計(jì)的或?qū)嶋H的壓縮因子的因子。
      [0114]在步驟714,設(shè)備驅(qū)動(dòng)程序103基于以下因素中的一個(gè)或多個(gè)來計(jì)算高速緩存像素塊中的像素的數(shù)目:高速緩存存儲(chǔ)器配置、新渲染目標(biāo)配置、抗鋸齒因子和表面壓縮因子。在步驟716,設(shè)備驅(qū)動(dòng)程序103計(jì)算高速緩存像素塊大小。在步驟718,設(shè)備驅(qū)動(dòng)程序103將高速緩存像素塊大小設(shè)置為從步驟716中所計(jì)算的高速緩存像素塊大小。方法700隨后終止。
      [0115]總而言之,當(dāng)在渲染目標(biāo)配置中檢測(cè)到改變時(shí)高速緩存像素塊被重新定制大小。高速緩存像素塊的大小基于渲染目標(biāo)配置以及高速緩存配置。計(jì)算每個(gè)渲染目標(biāo)中的單個(gè)位置所需要的字節(jié)的總和。高速緩存存儲(chǔ)器中的可用于高速緩存像素塊的字節(jié)的數(shù)量除以該總和以確定高速緩存像素塊中的像素的數(shù)目。如果高速緩存像素塊是正方形的,那么計(jì)算像素的數(shù)目的平方根并將其上舍入到最接近整數(shù),得到高速緩存像素塊的寬度和高度。如果高速緩存像素塊是非正方形的,那么選擇寬度和高度,其中寬度和高度的積至少等于像素的數(shù)目。
      [0116]可選擇高速緩存像素塊大小以在高速緩存存儲(chǔ)器中容納多個(gè)高速緩存像素塊,使得在另一高速緩存像素塊正被處理的同時(shí)可接收用于一個(gè)或多個(gè)高速緩存像素塊的任務(wù)。在高速緩存像素塊駐留在通用高速緩存中的情況中,高速緩存像素塊大小可被設(shè)置為僅消耗高速緩存的一部分,諸如高速緩存存儲(chǔ)器的二分之一或三分之一,這留下剩余的高速緩存存儲(chǔ)器用于其他高速緩存客戶端。高速緩存像素塊數(shù)據(jù)可經(jīng)壓縮以進(jìn)一步減少高速緩存像素塊大小,以利用以較高抗鋸齒模式和諸如ZROP和CROP壓縮的表面壓縮的數(shù)據(jù)效率。
      [0117]所公開的方法的一個(gè)優(yōu)點(diǎn)是高速緩存像素塊大小基于渲染目標(biāo)配置和高速緩存配置而被適應(yīng)性定制。選擇較小的高速緩存像素塊大小用于較復(fù)雜的渲染目標(biāo)配置,而選擇較大的高速緩存像素塊大小用于較不復(fù)雜的渲染目標(biāo)配置。通過基于渲染目標(biāo)配置來適應(yīng)性定制高速緩存像素塊大小,需要較少計(jì)算能力來處理高速緩存像素塊,這導(dǎo)致更高效的處理器利用率和降低的能力要求。所公開的方法的另一優(yōu)點(diǎn)是,當(dāng)經(jīng)壓縮的高速緩存像素塊數(shù)據(jù)存儲(chǔ)在高速緩存中時(shí),高速緩存像素塊大小可進(jìn)一步減少,從而甚至進(jìn)一步增加可用的高速緩存存儲(chǔ)器??商娲?,高速緩存像素塊大小可保持相同大小,并且每個(gè)高速緩存像素塊可覆蓋屏幕表面的較大部分。結(jié)果,高速緩存像素塊的總數(shù)可減少,這導(dǎo)致與拼接相關(guān)的較小的處理開銷。另外,統(tǒng)一的L2高速緩存像素塊允許高速緩存在高速緩存像素塊數(shù)據(jù)和其他數(shù)據(jù)之間的動(dòng)態(tài)分區(qū),其中L2高速緩存被分配到各類數(shù)據(jù)的部分可基于當(dāng)前需求而變化。最后,通過將由多個(gè)客戶端所發(fā)出的讀和寫操作組合到相同渲染目標(biāo)來通過獲取渲染目標(biāo)數(shù)據(jù)一次并重新使用該數(shù)據(jù)多次以利用空間和時(shí)間局部性,高速緩存控制器可減少渲染目標(biāo)訪問的數(shù)量。
      [0118]本發(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è)備,諸如可由光盤只讀存儲(chǔ)器(⑶-ROM)驅(qū)動(dòng)器讀取的⑶-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ǔ)可更改的信息。
      [0119]以上已參照具體實(shí)施例對(duì)本發(fā)明進(jìn)行了描述。然而,本領(lǐng)域普通技術(shù)人員將理解的是,可對(duì)此做出各種修改和改變而不脫離如隨附權(quán)利要求書中所闡述的本發(fā)明的較寬精神和范圍。因此,前面的描述以及附圖應(yīng)被視為是例示性而非限制性的意義。
      [0120]因此,本發(fā)明的實(shí)施例的范圍在下面的權(quán)利要求中闡述。
      【權(quán)利要求】
      1.一種用于在圖形系統(tǒng)中適應(yīng)性定制高速緩存像素塊大小的方法,所述方法包括: 將與第一高速緩存像素塊相關(guān)聯(lián)的高速緩存像素塊大小設(shè)置為第一大?。? 檢測(cè)從包括第一多個(gè)渲染目標(biāo)的第一渲染目標(biāo)配置到包括第二多個(gè)渲染目標(biāo)的第二渲染目標(biāo)配置的改變;以及 基于所述第二渲染目標(biāo)配置將所述高速緩存像素塊大小設(shè)置為第二大小。
      2.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括確定所述第二多個(gè)渲染目標(biāo)不包括所述第一多個(gè)渲染目標(biāo)的子集。
      3.根據(jù)權(quán)利要求1所述的方法,其中所述第一大小和所述第二大小中的至少一個(gè)與不具有正方形規(guī)模的高速緩存像素塊相對(duì)應(yīng)。
      4.根據(jù)權(quán)利要求1所述的方法,其中所述第二大小進(jìn)一步基于其中駐留所述第一高速緩存像素塊的高速緩存存儲(chǔ)器的配置。
      5.根據(jù)權(quán)利要求4所述的方法,其中所述第一大小和所述第二大小中的至少一個(gè)被設(shè)置為確保所述第一高速緩存像素塊至多占用所述高速緩存存儲(chǔ)器的第一部分。
      6.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括基于與抗鋸齒模式相關(guān)聯(lián)的壓縮因子來修改所述高速緩存像素塊大小。
      7.—種圖形系統(tǒng),包括: 高速緩存存儲(chǔ)器,包括: 包括高速緩存像素塊的第一部分,以及 第二部分;以及 與所述高速緩存存儲(chǔ)器相關(guān)聯(lián)的高速緩存控制器,配置為: 確定駐留在所述第一高速緩存像素塊中的第一數(shù)據(jù)項(xiàng)和駐留在所述高速緩存存儲(chǔ)器的第二部分中的第二數(shù)據(jù)項(xiàng)被弓I導(dǎo)到第一渲染目標(biāo)中的相同位置;以及 在單個(gè)事務(wù)中將所述第一數(shù)據(jù)項(xiàng)和所述第二數(shù)據(jù)項(xiàng)寫入到所述第一渲染目標(biāo)。
      8.根據(jù)權(quán)利要求7所述的圖形系統(tǒng),其中所述高速緩存控制器進(jìn)一步配置為: 確定駐留在第一渲染目標(biāo)中的第一數(shù)據(jù)項(xiàng)和駐留在所述第一渲染目標(biāo)中的第二數(shù)據(jù)項(xiàng)被調(diào)度以加載到所述第一高速緩存像素塊中,其中所述第一數(shù)據(jù)項(xiàng)和所述第二數(shù)據(jù)項(xiàng)存儲(chǔ)在所述第一渲染目標(biāo)中的相鄰位置中;以及 在單個(gè)事務(wù)中從所述第一渲染目標(biāo)讀取所述第一數(shù)據(jù)項(xiàng)和所述第二數(shù)據(jù)項(xiàng)。
      9.根據(jù)權(quán)利要求7所述的圖形系統(tǒng),其中所述高速緩存控制器進(jìn)一步配置為: 確定第一圖形基元取決于駐留在第一渲染目標(biāo)中的第一數(shù)據(jù)項(xiàng); 確定第二圖形基元取決于所述第一數(shù)據(jù)項(xiàng);以及 在單個(gè)事務(wù)中從所述第一渲染目標(biāo)讀取所述第一數(shù)據(jù)項(xiàng)。
      10.根據(jù)權(quán)利要求7所述的圖形系統(tǒng),進(jìn)一步包括: 處理單元;以及 第一存儲(chǔ)器,其耦連到所述處理單元并存儲(chǔ)設(shè)備驅(qū)動(dòng)程序,所述設(shè)備驅(qū)動(dòng)程序配置為通過以下各項(xiàng)在所述圖形系統(tǒng)中適應(yīng)性定制高速緩存像素塊大小: 將與第一高速緩存像素塊相關(guān)聯(lián)的高速緩存像素塊大小設(shè)置為第一大小; 檢測(cè)從包括第一多個(gè)渲染目標(biāo)的第一渲染目標(biāo)配置到包括第二多個(gè)渲染目標(biāo)的第二渲染目標(biāo)配置的改變;以及基于所述第二渲染目標(biāo)配置將所述高速緩存像素塊大小設(shè)置為第二大小。
      【文檔編號(hào)】G06T1/20GK103810669SQ201310517195
      【公開日】2014年5月21日 申請(qǐng)日期:2013年10月28日 優(yōu)先權(quán)日:2012年10月26日
      【發(fā)明者】濟(jì)亞德·S·哈庫(kù)拉, 魯斯蘭·季米特洛夫, 埃米特·M·克里加里夫, 安德烈·霍達(dá)科夫斯基 申請(qǐng)人:輝達(dá)公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1