欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于經(jīng)由紋理硬件實(shí)施存儲(chǔ)器訪問操作的技術(shù)的制作方法

文檔序號(hào):6524566閱讀:187來源:國(guó)知局
用于經(jīng)由紋理硬件實(shí)施存儲(chǔ)器訪問操作的技術(shù)的制作方法
【專利摘要】本發(fā)明公開了用于經(jīng)由紋理硬件實(shí)施存儲(chǔ)器訪問操作的技術(shù)。紋理處理管線可經(jīng)配置以為表示紋理數(shù)據(jù)訪問操作或通用數(shù)據(jù)訪問操作的存儲(chǔ)器訪問請(qǐng)求服務(wù)。當(dāng)紋理處理管線接收到表示紋理數(shù)據(jù)訪問操作的存儲(chǔ)器訪問請(qǐng)求時(shí),紋理處理管線可基于紋理坐標(biāo)來檢索紋理數(shù)據(jù)。當(dāng)存儲(chǔ)器訪問請(qǐng)求表示通用數(shù)據(jù)訪問操作時(shí),紋理管線從存儲(chǔ)器訪問請(qǐng)求中提取虛擬地址,并隨后基于該虛擬地址檢索數(shù)據(jù)。紋理處理管線還配置為對(duì)代表一組線程所檢索的通用數(shù)據(jù)進(jìn)行高速緩存,并配置為隨后在線程組退出時(shí)使該通用數(shù)據(jù)無(wú)效。
【專利說明】用于經(jīng)由紋理硬件實(shí)施存儲(chǔ)器訪問操作的技術(shù)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明總地涉及存儲(chǔ)器訪問操作,并且更具體地,涉及用于經(jīng)由紋理硬件實(shí)施存儲(chǔ)器訪問操作的技術(shù)。
【背景技術(shù)】
[0002]常規(guī)的圖形處理單元(GPU)包括紋理處理硬件,其配置為實(shí)施各種與紋理相關(guān)的操作,包括紋理加載操作和紋理高速緩存操作。圖形程序開發(fā)者可生成使用這種紋理處理硬件的著色器程序以渲染三維圖形場(chǎng)景。
[0003]近年來,程序開發(fā)者們已經(jīng)開始生成實(shí)施任意的、非面向圖形的操作的著色器程序,所述操作利用(leverage)GPU的并行處理架構(gòu)的杠桿。然而,考慮到紋理處理硬件的架構(gòu),那些存儲(chǔ)器訪問操作必須被仔細(xì)地設(shè)計(jì)以類似于紋理處理操作。例如,典型的紋理訪問操作基于與紋理相關(guān)聯(lián)的二維(2D)坐標(biāo)和維度從存儲(chǔ)器讀取2D紋理數(shù)據(jù)。為了生成能夠加載非紋理數(shù)據(jù)的著色器程序,程序開發(fā)者必須將所有數(shù)據(jù)元素明確地聲明為具有體現(xiàn)與紋理相似的2D數(shù)據(jù)結(jié)構(gòu)的2D坐標(biāo)和維度,而不管與該數(shù)據(jù)相關(guān)聯(lián)的實(shí)際維度。
[0004]上述方法是有問題的,因?yàn)閯?chuàng)建實(shí)施任意計(jì)算的著色器程序要求大量的紋理處理操作知識(shí),而許多希望利用GPU的并行處理架構(gòu)的程序開發(fā)者缺乏這類知識(shí)。這些要求為許多程序開發(fā)者造成了相當(dāng)大的進(jìn)入障礙。
[0005]該問題的一個(gè)解決方案是除了現(xiàn)存的紋理處理硬件之外,還為通用存儲(chǔ)器訪問操作創(chuàng)建單獨(dú)的數(shù)據(jù)路徑。采用該方法,希望采用任意的非紋理數(shù)據(jù)來實(shí)施處理操作的程序開發(fā)者可簡(jiǎn)單地寫出依靠該單獨(dú)路徑的程序。然而,該方法是有問題的,因?yàn)槌R?guī)的GPU就是缺乏集成附加數(shù)據(jù)路徑所要求的空間,并且增加GPU的大小代價(jià)很高。
[0006]因此,本領(lǐng)域需要的是用于經(jīng)由紋理處理硬件來實(shí)施通用數(shù)據(jù)訪問操作的更有效的技術(shù)。

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

[0007]一種用于實(shí)施數(shù)據(jù)訪問操作的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括:接收來自線程組內(nèi)的線程的存儲(chǔ)器訪問請(qǐng)求,確定與存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)部分未存在于高速緩存存儲(chǔ)器單元中,從全局存儲(chǔ)器中檢索與存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)部分,在線程組內(nèi)的線程的執(zhí)行期間將數(shù)據(jù)部分存儲(chǔ)在高速緩存存儲(chǔ)器單元內(nèi),以及一旦確定線程組內(nèi)的每個(gè)線程均已在處理單元上完成執(zhí)行則將數(shù)據(jù)部分從高速緩存存儲(chǔ)器單元中清除(flush)。
[0008]所公開的技術(shù)的一個(gè)優(yōu)點(diǎn)是,紋理處理硬件能夠針對(duì)線程組的持續(xù)時(shí)間對(duì)針對(duì)該組線程所檢索的通用數(shù)據(jù)進(jìn)行高速緩存,從而高效地利用紋理硬件內(nèi)的高速緩存資源。
【專利附圖】

【附圖說明】
[0009]因此,可以詳細(xì)地理解本發(fā)明的上述特征,并且可以參考實(shí)施例得到對(duì)如上面所簡(jiǎn)要概括的本發(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的前端的框圖;
[0013]圖3B是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的并行處理單元之一內(nèi)的通用處理集群的框圖;
[0014]圖3C是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖3B的流多處理器的一部分的框圖;
[0015]圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的并行處理單元中的一個(gè)或多個(gè)可經(jīng)配置以實(shí)現(xiàn)的圖形處理管線的概念圖;
[0016]圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖3B的通用處理集群內(nèi)的紋理單元可經(jīng)配置以實(shí)現(xiàn)的紋理處理管線的概念圖;
[0017]圖6是根據(jù)本發(fā)明的一個(gè)實(shí)施例的標(biāo)簽表的概念圖;
[0018]圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于經(jīng)由圖5中所示的紋理處理管線來實(shí)施存儲(chǔ)器訪問操作的方法步驟的流程圖;以及
[0019]圖8是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于對(duì)與在圖3B中所示的流多處理器上執(zhí)行的一組線程相關(guān)聯(lián)的數(shù)據(jù)進(jìn)行高速緩存和使其無(wú)效的方法步驟的流程圖。
【具體實(shí)施方式】
[0020]在下面的描述中,將闡述大量的具體細(xì)節(jié)以提供對(duì)本發(fā)明更透徹的理解。然而,本領(lǐng)域的技術(shù)人員應(yīng)該清楚,本發(fā)明可以在沒有一個(gè)或多個(gè)這些具體細(xì)節(jié)的情況下得以實(shí)施。在其他實(shí)例中,未描述公知特征以避免對(duì)本發(fā)明造成混淆。
[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的互連路徑通信的中央處理單元(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 (例如常規(guī)的基于陰極射線管或液晶顯示器的監(jiān)視器)的圖形子系統(tǒng)。系統(tǒng)盤114也連接到I/O橋107。交換器116提供I/O橋107與諸如網(wǎng)絡(luò)適配器118以及各種插卡120和121的其他部件之間的連接。其他部件(未明確示出),包括通用串行總線(USB )或其他端口連接、壓縮光盤(CD)驅(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é)議。[0023]在一個(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)。
[0024]應(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。[0025]圖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)。
[0026]再參考圖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。
[0027]在操作中,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)度。[0028]現(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è)芯片上。
[0029]在一個(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。
[0030]有利地,每個(gè)PPU202都實(shí)現(xiàn)高度并行處理架構(gòu)。如詳細(xì)示出的,PPU202 (O)包括處理集群陣列230,該陣列230包括C個(gè)通用處理集群(GPC)208,其中C≥1。每個(gè)GPC208能夠并發(fā)執(zhí)行大量的(例如,幾百或幾千)線程,其中每個(gè)線程是程序的實(shí)例(instance)。在各種應(yīng)用中,可分配不同的GPC208用于處理不同類型的程序或用于實(shí)施不同類型的計(jì)算。GPC208的分配可以取決于因每種類型的程序或計(jì)算所產(chǎn)生的工作量而變化。
[0031]GPC208從任務(wù)/工作單元207內(nèi)的工作分布單元接收所要執(zhí)行的處理任務(wù)。工作分布單元接收指向編碼為任務(wù)元數(shù)據(jù)(TMD)并存儲(chǔ)在存儲(chǔ)器中的處理任務(wù)的指針。指向TMD的指針包括在存儲(chǔ)為入棧緩沖區(qū)并由前端單元212從主機(jī)接口 206接收的命令流中。可以編碼為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í)別的控制。
[0032]存儲(chǔ)器接口 214包括D個(gè)分區(qū)單元215,每個(gè)分區(qū)單元215直接耦連到并行處理存儲(chǔ)器204的一部分,其中D > 1。如所示的,分區(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的可用帶寬。
[0033]任何一個(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ù)流。
[0034]另外,GPC208可被編程以執(zhí)行與種類繁多的應(yīng)用相關(guān)的處理任務(wù),包括但不限于,線性和非線性數(shù)據(jù)變換、視頻和/或音頻數(shù)據(jù)過濾、建模操作(例如,應(yīng)用物理定律以確定對(duì)象的位置、速率和其他屬性)、圖像渲染操作(例如,曲面細(xì)分(tessellation)著色器、頂點(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。
[0035]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ǔ)器。
[0036]如上所示,在并行處理子系統(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)等等。
[0037]多個(gè)并發(fā)任務(wù)調(diào)度
[0038]可以在GPC208上并發(fā)執(zhí)行多個(gè)處理任務(wù)并且處理任務(wù)在執(zhí)行期間可以生成一個(gè)或多個(gè)“子”處理任務(wù)。任務(wù)/工作單元207接收任務(wù)并動(dòng)態(tài)調(diào)度處理任務(wù)和子處理任務(wù)用于由GPC208執(zhí)行。
[0039]圖3A為根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖2的任務(wù)/工作單元207的框圖。任務(wù)/工作單元207包括任務(wù)管理單元300和工作分布單元340。任務(wù)管理單元300基于執(zhí)行優(yōu)先級(jí)級(jí)別來組織所要調(diào)度的任務(wù)。對(duì)于每個(gè)優(yōu)先級(jí)級(jí)別,任務(wù)管理單元300將指向與任務(wù)相對(duì)應(yīng)的TMD322的指針的列表存儲(chǔ)在調(diào)度器表321中,其中所述列表可以實(shí)現(xiàn)為鏈表??梢詫MD322存儲(chǔ)在PP存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中。任務(wù)管理單元300接受任務(wù)并將任務(wù)存儲(chǔ)在調(diào)度器表321中的速度與任務(wù)管理單元300調(diào)度任務(wù)用于執(zhí)行的速度是解耦的。因此,任務(wù)管理單元300可以在調(diào)度任務(wù)之前收集數(shù)個(gè)任務(wù)。之后可以基于優(yōu)先級(jí)信息或使用其他技術(shù)諸如輪叫調(diào)度來調(diào)度所收集的任務(wù)。
[0040]工作分布單元340包括具有槽的任務(wù)表345,每個(gè)槽可以被用于正在執(zhí)行的任務(wù)的TMD322所占用。當(dāng)任務(wù)表345中有空閑槽時(shí),任務(wù)管理單元300可以調(diào)度任務(wù)用于執(zhí)行。當(dāng)沒有空閑槽時(shí),未占用槽的較高優(yōu)先級(jí)任務(wù)可以驅(qū)逐占用槽的較低優(yōu)先級(jí)任務(wù)。當(dāng)任務(wù)被驅(qū)逐時(shí),該任務(wù)被停止,并且如果該任務(wù)的執(zhí)行沒有完成,則將指向該任務(wù)的指針添加到所要調(diào)度的任務(wù)指針的列表以使得任務(wù)的執(zhí)行稍后將恢復(fù)。當(dāng)生成子處理任務(wù)時(shí),在任務(wù)的執(zhí)行期間,將指向該子任務(wù)的指針添加到所要調(diào)度的任務(wù)指針的列表。可以由在處理集群陣列230中執(zhí)行的TMD322生成子任務(wù)。
[0041 ] 不同于由任務(wù)/工作單元207從前端212接收的任務(wù),子任務(wù)從處理集群陣列230接收。子任務(wù)不被插入入棧緩沖區(qū)或傳送到前端。當(dāng)生成子任務(wù)或?qū)⒂糜谧尤蝿?wù)的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中時(shí)不通知CPU102。通過入棧緩沖區(qū)提供的任務(wù)與子任務(wù)之間的另一個(gè)區(qū)別是通過入棧緩沖區(qū)提供的任務(wù)由應(yīng)用程序來定義而子任務(wù)是在任務(wù)執(zhí)行期間動(dòng)態(tài)生成的。
[0042]任務(wù)處理概述
[0043]圖3B為根據(jù)本發(fā)明的一個(gè)實(shí)施例的在圖2的PPU202之一內(nèi)的GPC208的框圖。每個(gè)GPC208可配置為并行執(zhí)行大量線程,其中術(shù)語(yǔ)“線程”是指在特定輸入數(shù)據(jù)集上執(zhí)行的特定程序的實(shí)例。在一些實(shí)施例中,單指令、多數(shù)據(jù)(SIMD)指令發(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ī)制的功能子集。
[0044]經(jīng)由將處理任務(wù)分布到流多處理器(SM) 310的管線管理器305來有利地控制GPC208的操作。管線管理器305還可配置為通過為由SM310所輸出的處理數(shù)據(jù)指定目的地來控制工作分布交叉開關(guān)330。 [0045]在一個(gè)實(shí)施例中,每個(gè)GPC208包括M個(gè)SM310,其中M≥1,每個(gè)SM310配置為處理一個(gè)或多個(gè)線程組。另外,如本領(lǐng)域已知的,每個(gè)SM310有利地包括可以管線化的同樣功能執(zhí)行單元集(例如執(zhí)行單元和加載-存儲(chǔ)單元一在圖3C中示出為Exec單元302和LSU303 ),其允許在前一個(gè)指令完成之前發(fā)出新指令??商峁┕δ軋?zhí)行單元的任何組合。在一個(gè)實(shí)施例中,功能單元支持各種各樣的操作,包括整數(shù)和浮點(diǎn)運(yùn)算(例如加法和乘法)、比較操作、布爾操作(AND、OR、X0R)、移位和各種代數(shù)函數(shù)的計(jì)算(例如平面插值、三角函數(shù)、指數(shù)函數(shù)和對(duì)數(shù)函數(shù)等等);以及相同功能單元硬件可均衡地用來實(shí)施不同的操作。
[0046]如本文之前所定義的,傳送到特定GPC208的一系列指令構(gòu)成線程,并且跨SM310內(nèi)的并行處理引擎(未示出)的某一數(shù)目的并發(fā)執(zhí)行線程的集合在本文中稱為“線程束(warp)”或“線程組”。如本文所使用的,“線程組”是指對(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é)果是在任何給定時(shí)間在GPC208中可以執(zhí)行多達(dá)G*M個(gè)線程組。
[0047]此外,多個(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ǔ)器或寄存器的容量來確定。
[0048]每個(gè)SM310包含一級(jí)(LI)高速緩存(圖3C所示)或使用用于實(shí)施加載和存儲(chǔ)操作的SM310外部的相應(yīng)LI高速緩存中的空間。每個(gè)SM310都還有權(quán)訪問在所有GPC208之間共享并且可用于在線程之間轉(zhuǎn)移數(shù)據(jù)的二級(jí)(L2)高速緩存。最后,SM310還有權(quán)訪問片夕卜“全局”存儲(chǔ)器,所述“全局”存儲(chǔ)器可以包括例如并行處理存儲(chǔ)器204和/或系統(tǒng)存儲(chǔ)器104。應(yīng)該理解,PPU202外部的任何存儲(chǔ)器可用作全局存儲(chǔ)器。此外,一點(diǎn)五級(jí)(L1.5)高速緩存335可以包括在GPC208內(nèi),其配置為接收并保持由SM310所請(qǐng)求的經(jīng)由存儲(chǔ)器接口 214從存儲(chǔ)器獲取的數(shù)據(jù),包括指令、一致(uniform)數(shù)據(jù)和常數(shù)數(shù)據(jù),并將所請(qǐng)求的數(shù)據(jù)提供給SM310。在GPC208中具有多個(gè)SM310的實(shí)施例有利地共享了高速緩存在L1.5高速緩存335中的公共指令和數(shù)據(jù)。
[0049]每個(gè)GPC208可以包括配置為將虛擬地址映射到物理地址中的存儲(chǔ)器管理單元(MMU) 328ο在其他實(shí)施例中,MMU328可以駐留在存儲(chǔ)器接口 214內(nèi)。MMU328包括用于將虛擬地址映射到像素塊(tile)的物理地址的頁(yè)表?xiàng)l目(PTE)集和可選地包括高速緩存行索引。MMU328可以包括地址轉(zhuǎn)譯后備緩沖區(qū)(TLB)或可以駐留在多處理器SM310或LI高速緩存或GPC208內(nèi)的高速緩存。物理地址經(jīng)處理以分布表面數(shù)據(jù)訪問位置來允許高效請(qǐng)求在分區(qū)單元215之間交錯(cuò)。高速緩存行索引可用于確定用于高速緩存行的請(qǐng)求是命中還是未命中。
[0050]在圖形和計(jì)算應(yīng)用中,GPC208可配置為使得每個(gè)SM310耦連到用于實(shí)施紋理映射操作例如確定紋理樣本位置、讀取紋理數(shù)據(jù)以及過濾該紋理數(shù)據(jù)的紋理單元315。從內(nèi)部紋理LI高速緩存(未示出)或者在一些實(shí)施例中從SM310內(nèi)的LI高速緩存讀取紋理數(shù)據(jù)并根據(jù)需要從在所有GPC208之間共享的L2高速緩存、并行處理存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中獲取紋理數(shù)據(jù)。為了將所處理的任務(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。preROP (預(yù)光柵操作)325配置為從SM310接收數(shù)據(jù)、將數(shù)據(jù)引導(dǎo)到分區(qū)單元215內(nèi)的ROP單元以及針對(duì)顏色混合實(shí)施優(yōu)化、組織像素顏色數(shù)據(jù)和實(shí)施地址轉(zhuǎn)譯。
[0051]應(yīng)該理解本文所述的內(nèi)核架構(gòu)是示例性的并且變化和修改都是可能的。任何數(shù)目的處理單元例如SM310或紋理單元315、preR0P325可以包括在GPC208內(nèi)。進(jìn)一步地,如圖2所示,PPU202可以包括任何數(shù)目的GPC208,所述GPC208有利地在功能上彼此相似以使得執(zhí)行行為不取決于哪個(gè)GPC208接收特定處理任務(wù)。進(jìn)一步地,每個(gè)GPC208有利地使用分開且各異的處理單元、LI高速緩存來獨(dú)立于其他GPC208操作以為一個(gè)或多個(gè)應(yīng)用程序執(zhí)行任務(wù)。
[0052]本領(lǐng)域普通技術(shù)人員應(yīng)該理解圖1、2、3A和3B所描述的架構(gòu)決不限制本發(fā)明的范圍并且在不脫離本發(fā)明范圍的情況下本文所教導(dǎo)的技術(shù)可以在任何經(jīng)適當(dāng)配置的處理單元上實(shí)現(xiàn),所述處理單元包括但不限于一個(gè)或多個(gè)CPU、一個(gè)或多個(gè)多核CPU、一個(gè)或多個(gè)PPU202、一個(gè)或多個(gè)GPC208、一個(gè)或多個(gè)圖形或?qū)S锰幚韱卧鹊取?br> [0053]在本發(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ù)集的哪部分。
[0054]每線程指令序列可包括定義線程陣列的代表性線程和一個(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ù)語(yǔ)“CTA”和“線程陣列”在本文作為同義詞使用。
[0055]圖3C為根據(jù)本發(fā)明的一個(gè)實(shí)施例的圖3B的SM310的框圖。SM310包括配置為經(jīng)由L1.5高速緩存335從存儲(chǔ)器接收指令和常數(shù)的指令LI高速緩存370。線程束調(diào)度器和指令單元312從指令LI高速緩存370接收指令和常數(shù)并根據(jù)該指令和常數(shù)控制本地寄存器堆304和SM310功能單元。SM310功能單元包括N個(gè)exec (執(zhí)行或處理)單元302和P個(gè)加載-存儲(chǔ)單元(LSU) 303。
[0056]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í)行由TMD322所代表的同一個(gè)處理任務(wù)的所有線程(或由所有LSU303)可讀,其存儲(chǔ)CTA標(biāo)識(shí)符、CTA維數(shù)、CTA所屬網(wǎng)格(grid)的維數(shù)(或隊(duì)列位置,如果TMD322編碼隊(duì)列任務(wù)而不是網(wǎng)格任務(wù)的話)、以及CTA被指派到的TMD322的標(biāo)識(shí)符。
[0057]如果TMD322是網(wǎng)格TMD,則TMD322的執(zhí)行會(huì)啟動(dòng)和執(zhí)行固定數(shù)目的CTA以處理存儲(chǔ)在隊(duì)列525中的固定量的數(shù)據(jù)。將CTA的數(shù)目指定為網(wǎng)格寬度、高度和深度的乘積??梢詫⒐潭康臄?shù)據(jù)存儲(chǔ)在TMD322中或TMD322可以存儲(chǔ)指向?qū)⒂蒀TA所處理的數(shù)據(jù)的指針。TMD322還存儲(chǔ)由CTA所執(zhí)行的程序的開始地址。
[0058]如果TMD322是隊(duì)列TMD,那么使用TMD322的隊(duì)列特點(diǎn),這意味著將要被處理的數(shù)據(jù)量不一定是固定的。隊(duì)列條目存儲(chǔ)用于由指派到TMD322的CTA所處理的數(shù)據(jù)。隊(duì)列條目還可以代表在線程執(zhí)行期間由另一個(gè)TMD322所生成的子任務(wù),從而提供嵌套并行性。通常線程或包括線程的CTA的執(zhí)行被掛起直到子任務(wù)的執(zhí)行完成??梢詫㈥?duì)列存儲(chǔ)在TMD322中或與TMD322分開存儲(chǔ),在該情況下TMD322存儲(chǔ)指向該隊(duì)列的隊(duì)列指針。有利地,當(dāng)代表子任務(wù)的TMD322正在執(zhí)行時(shí)可以將由子任務(wù)所生成的數(shù)據(jù)寫到隊(duì)列。隊(duì)列可以實(shí)現(xiàn)為循環(huán)隊(duì)列以使得數(shù)據(jù)的總量不限于隊(duì)列的大小。
[0059]屬于網(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與具體TMD322相關(guān)聯(lián)用于一個(gè)或多個(gè)任務(wù)的并發(fā)執(zhí)行。此外,單個(gè)GPC208可以并發(fā)執(zhí)行多個(gè)任務(wù)。
[0060]參數(shù)存儲(chǔ)器(未示出)存儲(chǔ)可由同一個(gè)CTA內(nèi)的任何線程(或任何LSU303)讀取但不可由其寫入的運(yùn)行時(shí)間參數(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中。
[0061]每個(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è)并發(fā)線程組中的不同線程組,以使得本地寄存器堆304中的給定條目?jī)H對(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è)通道的一致值或常數(shù)值。
[0062]共享存儲(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)為L(zhǎng)SU303對(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è)。
[0063]每個(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。
[0064]圖形管線架構(gòu)
[0065]圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的PPU202中的一個(gè)或多個(gè)可經(jīng)配置以實(shí)現(xiàn)的圖形處理管線400的概念圖。例如,SM310中的一個(gè)可配置為實(shí)施頂點(diǎn)處理單元415、幾何處理單元425、片段處理單元460中的一個(gè)或多個(gè)的功能。還可由GPC208內(nèi)的其他處理引擎和相應(yīng)的分區(qū)單元215實(shí)施數(shù)據(jù)匯編器410、基元匯編器420、光柵化器455和光柵操作單元465的功能??商娲?,可使用用于一個(gè)或多個(gè)功能的專用處理單元來實(shí)現(xiàn)圖形處理管線400。
[0066]數(shù)據(jù)匯編器410處理單元收集用于高階表面、基元等的頂點(diǎn)數(shù)據(jù),并將包括頂點(diǎn)屬性的頂點(diǎn)數(shù)據(jù)輸出到頂點(diǎn)處理單元415。頂點(diǎn)處理單元415是可編程執(zhí)行單元,其配置為執(zhí)行頂點(diǎn)著色器程序,按頂點(diǎn)著色器程序所指定的來亮化和變換頂點(diǎn)數(shù)據(jù)。例如,頂點(diǎn)處理單元415可被編程以將頂點(diǎn)數(shù)據(jù)從基于對(duì)象的坐標(biāo)表示(對(duì)象空間)變換到可替代地基于諸如世界空間或規(guī)格化設(shè)備坐標(biāo)(NDC)空間的坐標(biāo)系。頂點(diǎn)處理單元415可讀取由數(shù)據(jù)匯編器410所存儲(chǔ)在LI高速緩存320、并行處理存儲(chǔ)器204、或系統(tǒng)存儲(chǔ)器104中的數(shù)據(jù)用于在處理頂點(diǎn)數(shù)據(jù)中使用。
[0067]基元匯編器420從頂點(diǎn)處理單元415接收頂點(diǎn)屬性、按需要讀取所存儲(chǔ)的頂點(diǎn)屬性、并構(gòu)建圖形基元用于由幾何處理單元425處理。圖形基元包括三角形、線段、點(diǎn)等等。幾何處理單元425是可編程執(zhí)行單元,其配置為執(zhí)行幾何著色器程序,按幾何著色器程序所指定的來變換從基元匯編器420所接收的圖形基元。例如,幾何處理單元425可被編程以將圖形基元細(xì)分成一個(gè)或多個(gè)新圖形基元并計(jì)算用來將新圖形基元光柵化的參數(shù),諸如平面方程系數(shù)。
[0068]在一些實(shí)施例中,幾何處理單元425還可在幾何流中添加或刪除元素。幾何處理單元425將指定新圖形基元的參數(shù)和頂點(diǎn)輸出到視口縮放、剔除(cull)和裁剪(clip)單元450。幾何處理單元425可讀取存儲(chǔ)在并行處理存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中的數(shù)據(jù)用于在處理幾何數(shù)據(jù)中使用。視口縮放、剔除和裁剪單元450實(shí)施裁剪、剔除和視口縮放,并將所處理的圖形基元輸出到光柵化器455。
[0069]光柵化器455掃描轉(zhuǎn)換新圖形基元并將片段和覆蓋數(shù)據(jù)輸出到片段處理單元460。此外,光柵化器455可配置為實(shí)施z剔除(z-culling)和其他基于z的優(yōu)化。
[0070]片段處理單元460是可編程的執(zhí)行單元,其配置為執(zhí)行片段著色器程序,按片段著色器程序所指定的來變換從光柵化器455所接收的片段。例如,片段處理單元460可被編程以實(shí)施諸如透視校正、紋理映射、著色、混合等操作,以產(chǎn)生輸出到光柵操作單元465的經(jīng)著色的片段。在一個(gè)實(shí)施例中,片段處理單元460結(jié)合圖3B中所示的紋理單元315進(jìn)行操作以實(shí)施紋理映射操作。片段處理單元460可讀取存儲(chǔ)在并行處理存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中的數(shù)據(jù)用于在處理片段數(shù)據(jù)中使用??梢韵袼亍颖?、或其他粒度對(duì)片段著色,這取決于所編程的采樣率。
[0071]光柵操作單元465是處理單元,其實(shí)施諸如模板(Stencil)、Z測(cè)試、混合等的光柵操作,并輸出像素?cái)?shù)據(jù)作為經(jīng)處理的圖形數(shù)據(jù)用于存儲(chǔ)在圖形存儲(chǔ)器中。經(jīng)處理的圖形數(shù)據(jù)可存儲(chǔ)在圖形存儲(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ù)。
[0072]如上文結(jié)合圖3B所述,圖3B中所示的紋理單元315配置為代表SM310(也在圖3B中示出)實(shí)施紋理處理操作。這樣做時(shí),紋理單元315配置為從圖1-3C中所示的存儲(chǔ)器單元中的任何一個(gè)讀取紋理數(shù)據(jù)。此外,紋理單元315還可配置為實(shí)施全局存儲(chǔ)器加載操作,以使用現(xiàn)存的紋理數(shù)據(jù)路徑從那些存儲(chǔ)器單元讀取任意數(shù)據(jù)。當(dāng)SM310配置為實(shí)施通用處理操作時(shí),紋理單元315可配置為實(shí)現(xiàn)紋理處理管線,如下文結(jié)合圖5所討論的。下文所討論的紋理處理管線允許紋理單元315經(jīng)由相同數(shù)據(jù)路徑讀取紋理數(shù)據(jù)或通用全局?jǐn)?shù)據(jù)。
[0073]經(jīng)由紋理硬件實(shí)施存儲(chǔ)器訪問操作
[0074]圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖3B的通用處理集群208內(nèi)的紋理單元315可經(jīng)配置以實(shí)現(xiàn)的紋理處理管線500的概念圖。如所示的,紋理處理管線500包括耦連到狀態(tài)高速緩存504的紋理輸入(TEXIN)單元502、細(xì)節(jié)級(jí)別(LOD)單元506、地址單元508、標(biāo)簽單元510、未命中(miss)處理單元512、以及包括先入先出(FIF0)516和高速緩存單元518的數(shù)據(jù)單元514。
[0075]紋理處理管線500配置為處理從圖3B中所示的SM310所接收的存儲(chǔ)器訪問請(qǐng)求。給定的存儲(chǔ)器訪問請(qǐng)求可以表示紋理數(shù)據(jù)訪問操作,諸如例如從存儲(chǔ)器讀取紋理的讀操作??商娲?,給定的存儲(chǔ)器訪問請(qǐng)求可以表示通用數(shù)據(jù)訪問操作,諸如例如全局存儲(chǔ)器加載操作。
[0076]給定的存儲(chǔ)器訪問請(qǐng)求包括“狀態(tài)索引”,TEXIN單元502使用該“狀態(tài)索引”來確定存儲(chǔ)器訪問請(qǐng)求表示紋理數(shù)據(jù)訪問操作還是通用數(shù)據(jù)訪問操作。當(dāng)紋理處理管線500接收到存儲(chǔ)器訪問請(qǐng)求時(shí),TEXIN單元502從存儲(chǔ)器訪問請(qǐng)求中提取狀態(tài)索引,并且隨后將狀態(tài)索引的一部分與TEXIN單元502內(nèi)的請(qǐng)求狀態(tài)寄存器進(jìn)行比較。請(qǐng)求狀態(tài)寄存器指示與通用數(shù)據(jù)訪問操作相關(guān)聯(lián)的特定索引。當(dāng)與給定存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的狀態(tài)索引與請(qǐng)求狀態(tài)寄存器相匹配時(shí),TEXIN單元502對(duì)紋理處理管線500進(jìn)行配置以實(shí)施通用數(shù)據(jù)訪問操作。TEXIN單元502還可修改存儲(chǔ)器訪問請(qǐng)求以體現(xiàn)對(duì)與通用數(shù)據(jù)訪問操作相關(guān)聯(lián)的數(shù)據(jù)進(jìn)行高速緩存的特定級(jí)別。在一個(gè)實(shí)施例中,TEXIN單元502由在SM310上執(zhí)行的軟件應(yīng)用所配置以修改存儲(chǔ)器訪問請(qǐng)求以體現(xiàn)特定高速緩存級(jí)別。
[0077]在TEXIN單元502確定存儲(chǔ)器訪問請(qǐng)求表示紋理數(shù)據(jù)訪問操作的情況下,TEXIN單元502對(duì)紋理處理管線500進(jìn)行配置以實(shí)施紋理數(shù)據(jù)訪問操作。在一個(gè)實(shí)施例中,可執(zhí)行諸如例如圖1中所示的驅(qū)動(dòng)程序103的軟件應(yīng)用以配置請(qǐng)求狀態(tài)寄存器。
[0078]在對(duì)表示紋理數(shù)據(jù)訪問操作的存儲(chǔ)器訪問請(qǐng)求進(jìn)行處理時(shí),TEXIN單元502使用狀態(tài)索引來訪問狀態(tài)高速緩存504。TEXIN單元502從狀態(tài)高速緩存504中提取與將被從存儲(chǔ)器所訪問的紋理數(shù)據(jù)相對(duì)應(yīng)的附加紋理信息。附加紋理信息可包括紋素(texel)大小、紋理起點(diǎn)、紋理維度以及紋理邊界數(shù)據(jù),或其他類型的與紋理相關(guān)的信息。TEXIN單元502可將該附加紋理信息合并到存儲(chǔ)器訪問請(qǐng)求中,并且隨后將存儲(chǔ)器訪問請(qǐng)求傳遞到LOD單元 506。
[0079]LOD單元506配置為基于包括在存儲(chǔ)器訪問請(qǐng)求內(nèi)的坐標(biāo)集的位置和方向來計(jì)算用于將被從存儲(chǔ)器所訪問的紋理數(shù)據(jù)的“細(xì)節(jié)級(jí)別”。坐標(biāo)集可表示駐留在圖形場(chǎng)景內(nèi)的紋理的位置和方向。LOD單元506可將所計(jì)算的細(xì)節(jié)級(jí)別合并到存儲(chǔ)器訪問請(qǐng)求中,并且隨后將存儲(chǔ)器訪問請(qǐng)求傳遞到地址單元508。地址單元508配置為基于存儲(chǔ)器訪問請(qǐng)求內(nèi)的坐標(biāo)來實(shí)施各種地址計(jì)算。地址計(jì)算的結(jié)果可用來標(biāo)識(shí)包括在標(biāo)簽單元510內(nèi)的標(biāo)簽表中的條目。地址單元508將存儲(chǔ)器訪問請(qǐng)求和地址計(jì)算結(jié)果傳遞到標(biāo)簽單元510。
[0080]標(biāo)簽單元510包括存儲(chǔ)條目集的標(biāo)簽表。每個(gè)條目表示高速緩存單元內(nèi)的行。高速緩存單元518可表示駐留在紋理單元315內(nèi)的高速緩存存儲(chǔ)器,或者還可表示駐留在圖3C中所示的SM310內(nèi)的LI高速緩存320,或其他高速緩存存儲(chǔ)器單元。一旦從地址單元508接收到存儲(chǔ)器訪問請(qǐng)求和地址計(jì)算結(jié)果,標(biāo)簽單元510確定標(biāo)簽表是否包括與將被檢索的紋理數(shù)據(jù)相對(duì)應(yīng)的條目。下文結(jié)合圖6更詳細(xì)討論包括在標(biāo)簽單元510內(nèi)的標(biāo)簽表。
[0081]當(dāng)標(biāo)簽表包括與將被訪問的紋理數(shù)據(jù)相對(duì)應(yīng)的條目時(shí),發(fā)生高速緩存命中,并且標(biāo)簽單元510確定將被訪問的紋理數(shù)據(jù)駐留在高速緩存單元518中。標(biāo)簽單元510通過搜索標(biāo)簽表來檢索條目,并檢索高速緩存518內(nèi)的偏移,紋理數(shù)據(jù)實(shí)際駐留在該偏移處。該條目可包括U-坐標(biāo)和V-坐標(biāo)。標(biāo)簽單元510將偏移傳遞到FIF0516,并且高速緩存單元518可隨后將所高速緩存的數(shù)據(jù)提供給SM310。
[0082]當(dāng)標(biāo)簽表不包括與將被訪問的紋理數(shù)據(jù)相對(duì)應(yīng)的條目時(shí),發(fā)生高速緩存未命中,并且標(biāo)簽單元510使未命中處理單元512從全局存儲(chǔ)器訪問所請(qǐng)求的紋理數(shù)據(jù)。未命中處理單元512可通過基于包括在存儲(chǔ)器訪問請(qǐng)求內(nèi)的數(shù)據(jù)計(jì)算虛擬地址、實(shí)施虛擬到物理地址的轉(zhuǎn)譯、并且隨后從物理位置讀取所請(qǐng)求的數(shù)據(jù)來訪問所請(qǐng)求的紋理數(shù)據(jù)。在一個(gè)實(shí)施例中,未命中處理單元512駐留在圖3B中所示的MMU328內(nèi)。未命中處理單元512可隨后采用從全局存儲(chǔ)器所訪問的紋理數(shù)據(jù)來填充高速緩存單元518,并更新標(biāo)簽單元510內(nèi)的標(biāo)簽表以體現(xiàn)所新高速緩存的紋理數(shù)據(jù)。該紋理數(shù)據(jù)可隨后被提供給SM310。
[0083]如上文所述,紋理處理管線500還可配置為處理與紋理數(shù)據(jù)不具體相關(guān)聯(lián)的通用數(shù)據(jù)訪問操作,諸如例如全局存儲(chǔ)器加載操作,或其他。當(dāng)紋理處理管線500接收到與通用數(shù)據(jù)訪問操作相關(guān)聯(lián)的存儲(chǔ)器訪問請(qǐng)求時(shí),TEXIN單元502基于包括在存儲(chǔ)器訪問請(qǐng)求內(nèi)的狀態(tài)索引,即通過以如上文所述的類似方式將狀態(tài)索引與請(qǐng)求狀態(tài)寄存器進(jìn)行比較,來確定存儲(chǔ)器訪問請(qǐng)求與通用數(shù)據(jù)訪問操作相關(guān)聯(lián)。也如所述的,TEXIN單元502還可修改存儲(chǔ)器訪問操作以體現(xiàn)對(duì)與通用數(shù)據(jù)訪問操作相關(guān)聯(lián)的數(shù)據(jù)進(jìn)行高速緩存的特定級(jí)別。
[0084]當(dāng)TEXIN單元502確定存儲(chǔ)器訪問請(qǐng)求與通用數(shù)據(jù)訪問操作相關(guān)聯(lián)時(shí),TEXIN單元502隨后相應(yīng)地對(duì)紋理處理管線500進(jìn)行配置。這樣做時(shí),TEXIN單元502可使LOD單元506將存儲(chǔ)器訪問請(qǐng)求直接傳遞到地址單元508 (即不對(duì)存儲(chǔ)器訪問請(qǐng)求實(shí)施任何處理操作)。TEXIN單元502還可使地址單元508將來自LOD單元506的存儲(chǔ)器訪問請(qǐng)求直接傳遞到標(biāo)簽單元510 (即不對(duì)存儲(chǔ)器訪問請(qǐng)求實(shí)施任何處理操作)。以該方式,存儲(chǔ)器訪問請(qǐng)求可有效地繞開LOD單元506和地址單元508。
[0085]標(biāo)簽單元510接收到存儲(chǔ)器訪問請(qǐng)求并提取包括在存儲(chǔ)器訪問請(qǐng)求內(nèi)的虛擬地址。虛擬地址與將通過實(shí)施與存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的通用數(shù)據(jù)訪問操作而被檢索的通用數(shù)據(jù)相對(duì)應(yīng)。標(biāo)簽單元510隨后確定標(biāo)簽表是否包括與所提取的虛擬地址相對(duì)應(yīng)的條目。如上文所討論的,標(biāo)簽表配置為存儲(chǔ)與紋理數(shù)據(jù)相關(guān)聯(lián)的條目以及與通用數(shù)據(jù)相關(guān)聯(lián)的虛擬地址。如上文所述,下文結(jié)合圖6更詳細(xì)討論標(biāo)簽單元510內(nèi)的標(biāo)簽表。
[0086]當(dāng)標(biāo)簽表包括與所提取的虛擬地址相對(duì)應(yīng)的條目時(shí),發(fā)生高速緩存命中,并且將被檢索的通用數(shù)據(jù)駐留在高速緩存單元518中。標(biāo)簽單元510從虛擬地址中提取偏移并將該偏移推送到FIF0516。當(dāng)FIF0516內(nèi)的預(yù)存偏移已退出FIF0516時(shí),數(shù)據(jù)單元514可從FIF0516中取出(pop)該偏移,并且隨后基于該偏移從高速緩存518檢索所請(qǐng)求的數(shù)據(jù)。數(shù)據(jù)單元514可隨后將與該偏移相關(guān)聯(lián)的數(shù)據(jù)提供給SM310。
[0087]當(dāng)標(biāo)簽表不包括與所提取的虛擬地址相對(duì)應(yīng)的條目時(shí),發(fā)生高速緩存未命中,并且標(biāo)簽單元510使未命中處理單元512從全局存儲(chǔ)器檢索所請(qǐng)求的通用數(shù)據(jù),即通過實(shí)施虛擬到物理地址的轉(zhuǎn)譯和從物理位置讀取所請(qǐng)求的數(shù)據(jù)。未命中處理單元512可隨后采用所檢索的通用數(shù)據(jù)來填充高速緩存單元518,并更新標(biāo)簽單元510內(nèi)的標(biāo)簽表以體現(xiàn)所新高速緩存的通用數(shù)據(jù)。該通用數(shù)據(jù)可隨后被提供給SM310。
[0088]如上文所討論的,通過實(shí)現(xiàn)紋理處理管線500,紋理單元315可經(jīng)配置以經(jīng)由相同數(shù)據(jù)路徑實(shí)施紋理數(shù)據(jù)訪問操作以及通用數(shù)據(jù)訪問操作。此外,在CPU102和/或并行處理子系統(tǒng)112上執(zhí)行的軟件,包括驅(qū)動(dòng)程序103,可經(jīng)配置以包括將通用數(shù)據(jù)訪問操作暴露給軟件開發(fā)者的簡(jiǎn)化的存儲(chǔ)器訪問命令。采用該方法,軟件開發(fā)者能夠生成包括可由SM310和紋理處理管線500所服務(wù)的通用存儲(chǔ)器訪問操作的程序代碼。并且,不要求軟件開發(fā)者包括任何面向紋理的程序代碼來實(shí)現(xiàn)那些存儲(chǔ)器訪問操作。
[0089]圖6是根據(jù)本發(fā)明一個(gè)實(shí)施例的、上文結(jié)合圖5所討論的標(biāo)簽表600的概念圖。如所示的,標(biāo)簽表600包括條目集602-1、602-2、602-3和602-N。每個(gè)條目602包括相應(yīng)的狀態(tài)索引604。條目602-1包括狀態(tài)索引604-1,條目602-2包括狀態(tài)索引604-2,條目602-3包括狀態(tài)索引604-3,以及條目602-N包括狀態(tài)索引604-N。每個(gè)條目602與存儲(chǔ)在圖5中所示的高速緩存單元518中的一數(shù)據(jù)部分相對(duì)應(yīng)。存儲(chǔ)在圖5中所示的高速緩存單元518中的該數(shù)據(jù)部分可以是紋理數(shù)據(jù)或通用數(shù)據(jù)。
[0090]與紋理數(shù)據(jù)相對(duì)應(yīng)的給定條目602包括U-坐標(biāo)606和v_坐標(biāo)608。如所示的,條目602-1與紋理數(shù)據(jù)相對(duì)應(yīng)并且因此包括U-坐標(biāo)606-1和V-坐標(biāo)608-1。同樣地,條目602-N與紋理數(shù)據(jù)相對(duì)應(yīng)并且因此包括U-坐標(biāo)606-N和V-坐標(biāo)608-N。與通用數(shù)據(jù)相對(duì)應(yīng)的給定條目602包括與該通用數(shù)據(jù)相關(guān)聯(lián)的虛擬地址610。如所示的,條目602-2與通用數(shù)據(jù)相對(duì)應(yīng)并且因此包括虛擬地址610-2,而條目602-3也與通用數(shù)據(jù)相對(duì)應(yīng)并且因此包括虛擬地址610-3。
[0091]當(dāng)圖5中所示的紋理處理管線500配置為處理存儲(chǔ)器訪問請(qǐng)求時(shí),如上文結(jié)合圖5所討論的,標(biāo)簽單元510可針對(duì)每個(gè)這類存儲(chǔ)器訪問請(qǐng)求查詢標(biāo)簽表600。針對(duì)給定的存儲(chǔ)器訪問請(qǐng)求,標(biāo)簽單元510查詢標(biāo)簽表600以確定將結(jié)合該存儲(chǔ)器訪問請(qǐng)求而被檢索的數(shù)據(jù)是駐留在高速緩存單元518中還是應(yīng)被從全局存儲(chǔ)器進(jìn)行檢索。
[0092]當(dāng)給定的存儲(chǔ)器訪問請(qǐng)求表示紋理數(shù)據(jù)訪問操作時(shí),標(biāo)簽單元510可標(biāo)識(shí)標(biāo)簽表600內(nèi)的條目602,這指示高速緩存命中。標(biāo)簽單元510可隨后針對(duì)將被從該條目?jī)?nèi)檢索的紋理數(shù)據(jù)提取高速緩存地址。當(dāng)給定的存儲(chǔ)器訪問請(qǐng)求表示通用數(shù)據(jù)訪問操作時(shí),標(biāo)簽單元510也可標(biāo)識(shí)標(biāo)簽表600內(nèi)的條目602,這指示高速緩存命中。標(biāo)簽單元510可隨后針對(duì)將被從該條目檢索的紋理數(shù)據(jù)提取高速緩存地址。
[0093]采用上文的方法,可以類似的方式將紋理數(shù)據(jù)和通用數(shù)據(jù)高速緩存在高速緩存單元518內(nèi)并經(jīng)由標(biāo)簽表600對(duì)其進(jìn)行管理?,F(xiàn)在參考回圖5,當(dāng)SM310 (也在圖3B中示出)執(zhí)行一個(gè)或多個(gè)線程組時(shí),紋理處理管線500可由圖3B中所示的紋理單元315所實(shí)現(xiàn)。給定的線程組可經(jīng)由上文結(jié)合圖5所描述的技術(shù)來實(shí)施紋理數(shù)據(jù)訪問操作或通用數(shù)據(jù)訪問操作。
[0094]當(dāng)代表給定線程組內(nèi)的線程來處理表示通用數(shù)據(jù)訪問操作的存儲(chǔ)器訪問請(qǐng)求時(shí),標(biāo)簽單元510可能確定由存儲(chǔ)器訪問請(qǐng)求所指示的通用數(shù)據(jù)沒有駐留在高速緩存單元518內(nèi)(即發(fā)生高速緩存未命中)。作為響應(yīng),標(biāo)簽單元510配置為使未命中處理單元512檢索全局?jǐn)?shù)據(jù)并將該數(shù)據(jù)存儲(chǔ)在高速緩存單元518內(nèi),如先前所討論的。通過對(duì)與線程組內(nèi)的給定線程相關(guān)聯(lián)的數(shù)據(jù)進(jìn)行高速緩存,標(biāo)簽單元510可使該線程組內(nèi)的其他線程能夠訪問針對(duì)給定線程所檢索的數(shù)據(jù)的經(jīng)高速緩存的版本。采用該方法,標(biāo)簽單元510可阻止下述情況:線程組內(nèi)的每個(gè)線程嘗試訪問數(shù)據(jù)的相同部分從而產(chǎn)生針對(duì)數(shù)據(jù)的相同部分的多個(gè)并發(fā)高速緩存未命中。這類情況可導(dǎo)致未命中處理單元512對(duì)數(shù)據(jù)的相同部分檢索多次(SP一次針對(duì)每個(gè)線程)。
[0095]此外,當(dāng)代表給定線程組來高速緩存通用數(shù)據(jù)時(shí),標(biāo)簽單元510配置為更新標(biāo)簽表600以體現(xiàn)所高速緩存的數(shù)據(jù)僅用于針對(duì)其數(shù)據(jù)被檢索的線程組的持續(xù)時(shí)間而被高速緩存。因?yàn)楹罄m(xù)的線程組可能不要求針對(duì)給定線程組所高速緩存的通用數(shù)據(jù),所以一旦退出線程組可使該數(shù)據(jù)無(wú)效,從而節(jié)省高速緩存資源。在一個(gè)實(shí)施例中,與標(biāo)簽表內(nèi)的給定條目相關(guān)聯(lián)的狀態(tài)索引604指示與該條目相關(guān)聯(lián)的數(shù)據(jù)是針對(duì)當(dāng)前線程組的持續(xù)時(shí)間而被高速緩存還是針對(duì)多于一個(gè)的線程組而被高速緩存。在另一個(gè)實(shí)施例中,TEXIN單元502基于狀態(tài)索引更新存儲(chǔ)器訪問請(qǐng)求以包括指示對(duì)與存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)進(jìn)行高速緩存的級(jí)別的標(biāo)注,并且標(biāo)簽單元510將該標(biāo)注合并到標(biāo)簽表內(nèi)與存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的條目中。
[0096]所描述的用于經(jīng)由紋理管線500實(shí)施通用數(shù)據(jù)訪問操作、以及用于使針對(duì)線程組的持續(xù)時(shí)間所高速緩存的通用數(shù)據(jù)無(wú)效的技術(shù)將在下文中分別結(jié)合圖7和圖8進(jìn)行更詳述描述。
[0097]圖7是根據(jù)本發(fā)明一個(gè)實(shí)施例的、用于經(jīng)由圖5中所示的紋理處理管線來實(shí)施全局存儲(chǔ)器加載操作的方法步驟的流程圖。雖然結(jié)合圖1、2、3A、3B和3C的系統(tǒng)描述了方法步驟,但是本領(lǐng)域普通技術(shù)人員將理解的是,配置為以任何次序?qū)嵤┓椒ú襟E的任何系統(tǒng)均在本發(fā)明的范圍內(nèi)。
[0098]如所示的,方法700開始于步驟702,此處紋理處理管線500內(nèi)的TEXIN單元502從SM310接收存儲(chǔ)器訪問請(qǐng)求。存儲(chǔ)器訪問請(qǐng)求可表示紋理數(shù)據(jù)訪問操作或可表示通用數(shù)據(jù)訪問操作。
[0099]在步驟704,TEXIN單元502確定存儲(chǔ)器訪問請(qǐng)求表示通用數(shù)據(jù)訪問操作。在一個(gè)實(shí)施例中,TEXIN單元502從存儲(chǔ)器訪問請(qǐng)求中提取狀態(tài)索引并將狀態(tài)索引的一部分與請(qǐng)求寄存器進(jìn)行比較,以確定存儲(chǔ)器訪問請(qǐng)求表示通用數(shù)據(jù)訪問操作。請(qǐng)求寄存器存儲(chǔ)與通用數(shù)據(jù)訪問操作相對(duì)應(yīng)的狀態(tài)索引,并且其可由在SM310上執(zhí)行的軟件應(yīng)用所配置。
[0100]在步驟706,TEXIN單元502對(duì)紋理處理管線500進(jìn)行配置以實(shí)施通用數(shù)據(jù)訪問操作。這樣做時(shí),TEXIN單元502可使LOD單元506和地址單元508簡(jiǎn)單地將所接收的存儲(chǔ)器訪問請(qǐng)求傳遞到紋理處理管線500的后續(xù)單元而不對(duì)該存儲(chǔ)器訪問請(qǐng)求實(shí)施任何操作。以該方式,TEXIN單元502可使存儲(chǔ)器訪問請(qǐng)求繞過LOD單元506和地址單元508。
[0101]在步驟708,紋理處理管線500內(nèi)的標(biāo)簽單元510從存儲(chǔ)器訪問請(qǐng)求中提取虛擬地址并確定虛擬地址是否存在于標(biāo)簽表中。標(biāo)簽表可以是例如圖6中所示的標(biāo)簽表600。如果標(biāo)簽單元510確定虛擬地址存在于標(biāo)簽表中,那么發(fā)生高速緩存命中,并且方法700前進(jìn)到步驟710。
[0102]在步驟710,標(biāo)簽單元510使數(shù)據(jù)單元514從高速緩存單元518檢索與虛擬地址相關(guān)聯(lián)的數(shù)據(jù)。標(biāo)簽單元510可將與虛擬地址相關(guān)聯(lián)的偏移推送到FIF0516中,并且當(dāng)FIF0516內(nèi)的預(yù)存偏移已退出FIF0516時(shí)數(shù)據(jù)單元514可隨后從FIF0516中取出偏移。數(shù)據(jù)單元514可隨后基于該偏移從高速緩存單元518中檢索所請(qǐng)求的數(shù)據(jù)。方法700隨后前進(jìn)到步驟714,此處數(shù)據(jù)單元514將所高速緩存的數(shù)據(jù)提供給SM310。
[0103]在步驟708,如果標(biāo)簽單元510確定虛擬地址未存在于標(biāo)簽表中,那么發(fā)生高速緩存未命中,并且方法700前進(jìn)到步驟712。在步驟712,未命中處理單元512從全局存儲(chǔ)器檢索所請(qǐng)求的數(shù)據(jù)。這樣做時(shí),未命中處理單元512可實(shí)施虛擬到物理地址的轉(zhuǎn)譯并且隨后從物理位置訪問所請(qǐng)求的數(shù)據(jù)。未命中處理單元512可配置為將所請(qǐng)求的數(shù)據(jù)高速緩存到高速緩存單元518中。方法隨后前進(jìn)到步驟714,此處數(shù)據(jù)單元514以上文所述的類似方式將所新高速緩存的數(shù)據(jù)提供給SM310。
[0104]通過實(shí)現(xiàn)方法700,紋理單元315可經(jīng)配置以實(shí)現(xiàn)紋理處理管線500,以經(jīng)由相同數(shù)據(jù)路徑來實(shí)施紋理數(shù)據(jù)訪問操作以及通用數(shù)據(jù)訪問操作。
[0105]圖8是根據(jù)本發(fā)明一個(gè)實(shí)施例的、用于對(duì)與在圖3B中所示的流多處理器上執(zhí)行的一組線程相關(guān)聯(lián)的數(shù)據(jù)進(jìn)行高速緩存和使其無(wú)效的方法步驟的流程圖。雖然結(jié)合圖1、2、3A、3B和3C的系統(tǒng)描述了方法步驟,但是本領(lǐng)域普通技術(shù)人員將理解的是,配置為以任何次序?qū)嵤┓椒ú襟E的任何系統(tǒng)均在本發(fā)明的范圍內(nèi)。
[0106]如所示的,方法800開始于步驟802,此處SM310啟動(dòng)一組線程。一組線程可生成表示紋理數(shù)據(jù)訪問操作或通用數(shù)據(jù)訪問操作的存儲(chǔ)器訪問請(qǐng)求。SM310配置為使紋理單元315為那些存儲(chǔ)器訪問請(qǐng)求服務(wù)。這樣做時(shí),紋理單元315可實(shí)現(xiàn)圖5中所示的紋理處理管線500,并可實(shí)施上文結(jié)合圖7所討論的方法700。
[0107]在步驟804,紋理處理管線500內(nèi)的標(biāo)簽單元510確定由一組線程內(nèi)的線程所生成的通用數(shù)據(jù)訪問操作導(dǎo)致發(fā)生高速緩存未命中。通用數(shù)據(jù)訪問操作由存儲(chǔ)器訪問操作所表示,所述存儲(chǔ)器訪問操作由紋理處理管線500從一組線程內(nèi)的線程所接收。存儲(chǔ)器訪問操作包括與將被檢索的數(shù)據(jù)相對(duì)應(yīng)的虛擬地址。標(biāo)簽單元510配置為通過確定虛擬地址未存在于包括在標(biāo)簽單元510內(nèi)的標(biāo)簽表中來確定發(fā)生了高速緩存未命中。
[0108]在步驟806,標(biāo)簽單元510使未命中處理單元512從全局存儲(chǔ)器檢索與通用數(shù)據(jù)訪問操作相關(guān)聯(lián)的數(shù)據(jù)。這樣做時(shí),未命中處理單元512可將包括在存儲(chǔ)器訪問請(qǐng)求內(nèi)的虛擬地址轉(zhuǎn)譯成物理地址。未命中處理單元512可隨后從與該物理地址相關(guān)聯(lián)的地址位置讀取所請(qǐng)求的數(shù)據(jù)。
[0109]在步驟808,標(biāo)簽單元510對(duì)高速緩存單元518內(nèi)的高速緩存行進(jìn)行分配以存儲(chǔ)由未命中處理單元512所檢索的數(shù)據(jù),并隨后使數(shù)據(jù)被存儲(chǔ)在所分配的高速緩存行內(nèi)。在步驟810,標(biāo)簽單元510指定包括在標(biāo)簽單元510內(nèi)的標(biāo)簽表內(nèi)的條目用于所新高速緩存的數(shù)據(jù)。標(biāo)簽表可以是例如圖6中所示的標(biāo)簽表600。所指定的條目指示所新高速緩存的數(shù)據(jù)僅針對(duì)線程組的持續(xù)時(shí)間而被高速緩存,所述線程組包括是導(dǎo)致高速緩存未命中的原因的線程。在一個(gè)實(shí)施例中,由線程組內(nèi)的線程所生成的存儲(chǔ)器訪問請(qǐng)求指示將與所新高速緩存的數(shù)據(jù)相關(guān)聯(lián)的高速緩存級(jí)別,包括回收策略,或其他事項(xiàng)。
[0110]方法800在步驟812等待直到線程組內(nèi)的所有線程均已完成執(zhí)行。當(dāng)線程組內(nèi)的最后一個(gè)線程或線程子集退出時(shí),方法800前進(jìn)到步驟814,此處標(biāo)簽單元510使高速緩存單元518內(nèi)與代表線程組所檢索的數(shù)據(jù)相關(guān)聯(lián)的條目無(wú)效。隨后可將代表一組線程所高速緩存的通用數(shù)據(jù)從高速緩存單元518中清除(flush)。隨后方法800結(jié)束。
[0111]采用該方法,在針對(duì)線程組內(nèi)的線程處理通用數(shù)據(jù)訪問操作時(shí)所檢索的數(shù)據(jù)可針對(duì)線程組的持續(xù)時(shí)間而被高速緩存,并且隨后一旦線程組退出可被無(wú)效。這類功能性可阻止線程組內(nèi)的不同線程所導(dǎo)致的多個(gè)高速緩存未命中,并且可產(chǎn)生較好的高速緩存資源使用。
[0112]總而言之,紋理處理管線可經(jīng)配置以為表示紋理數(shù)據(jù)訪問操作或通用數(shù)據(jù)訪問操作的存儲(chǔ)器訪問請(qǐng)求服務(wù)。當(dāng)紋理處理管線接收到表示紋理數(shù)據(jù)訪問操作的存儲(chǔ)器訪問請(qǐng)求時(shí),紋理處理管線可基于紋理坐標(biāo)來檢索紋理數(shù)據(jù)。當(dāng)存儲(chǔ)器訪問請(qǐng)求表示通用數(shù)據(jù)訪問操作時(shí),紋理管線從存儲(chǔ)器訪問請(qǐng)求中提取虛擬地址,并隨后基于該虛擬地址來檢索數(shù)據(jù)。紋理處理管線還配置為對(duì)代表一組線程所檢索的通用數(shù)據(jù)進(jìn)行高速緩存,并配置為隨后在一組線程退出時(shí)使該通用數(shù)據(jù)無(wú)效。
[0113]有利地,圖形處理單元(GPU)內(nèi)的紋理硬件可配置為實(shí)施通用數(shù)據(jù)訪問操作。該方法使軟件開發(fā)者能夠生成利用GPU的并行架構(gòu)的程序代碼,而不要求其實(shí)現(xiàn)面向紋理的存儲(chǔ)器訪問操作。此外,紋理硬件能夠?qū)︶槍?duì)一組線程的持續(xù)時(shí)間針對(duì)該組線程所檢索的通用數(shù)據(jù)進(jìn)行高速緩存,從而高效地利用紋理硬件內(nèi)的高速緩存資源。
[0114]本發(fā)明的一個(gè)實(shí)施例可被實(shí)現(xiàn)為與計(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ǔ)器(CD-ROM)驅(qū)動(dòng)器讀取的CD-ROM盤、閃存存儲(chǔ)器、只讀存儲(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ǔ)可更改的信息。
[0115]以上已參照具體實(shí)施例對(duì)本發(fā)明進(jìn)行了描述。然而,本領(lǐng)域普通技術(shù)人員將理解的是,可對(duì)此做出各種修改和改變而不脫離如隨附權(quán)利要求書中所闡述的本發(fā)明的較寬精神和范圍。因此,前面的描述以及附圖應(yīng)被視為是例示性而非限制性的意義。
【權(quán)利要求】
1.一種用于針對(duì)在處理單元上執(zhí)行的線程組而實(shí)施通用數(shù)據(jù)訪問操作的計(jì)算機(jī)實(shí)現(xiàn)方法,所述方法包括: 接收來自所述線程組內(nèi)的線程的存儲(chǔ)器訪問請(qǐng)求; 確定與所述存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)部分未存在于高速緩存存儲(chǔ)器單元中; 從全局存儲(chǔ)器中檢索與所述存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的所述數(shù)據(jù)部分; 在所述線程組內(nèi)的所述線程的執(zhí)行期間,將所述數(shù)據(jù)部分存儲(chǔ)在所述高速緩存存儲(chǔ)器單元內(nèi);以及 一旦確定所述線程組內(nèi)的每個(gè)線程均已在所述處理單元上完成執(zhí)行,則將所述數(shù)據(jù)部分從所述高速緩存存儲(chǔ)器單元中清除。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中確定與所述存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的所述數(shù)據(jù)部分未存在于高速緩存存儲(chǔ)器單元中包括:確定包括在所述存儲(chǔ)器訪問請(qǐng)求內(nèi)的虛擬地址未存在于標(biāo)簽表中。
3.根據(jù)權(quán)利要求2所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中從全局存儲(chǔ)器中檢索與所述存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的所述數(shù)據(jù)部分包括: 將包括在所述存儲(chǔ)器訪問請(qǐng)求內(nèi)的所述虛擬地址轉(zhuǎn)譯成物理地址;以及 從與所述物理地址相關(guān)聯(lián)的物理位置檢索所述數(shù)據(jù)部分。
4.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)方法,進(jìn)一步包括更新標(biāo)簽表中的條目以反映與所述高速緩存存儲(chǔ)器單元內(nèi)的 所述數(shù)據(jù)部分相關(guān)聯(lián)的位置。
5.根據(jù)權(quán)利要求4所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中所述標(biāo)簽表中的所述條目反映與所述存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的可配置高速緩存級(jí)別,所述可配置高速緩存級(jí)別指示用于使所述標(biāo)簽表中的所述條目無(wú)效的條件。
6.根據(jù)權(quán)利要求5所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中所述條件指示當(dāng)所述線程組內(nèi)的每個(gè)線程均已在所述處理單元上完成執(zhí)行時(shí),所述標(biāo)簽表中的所述條目應(yīng)被無(wú)效,并且進(jìn)一步包括一旦確定所述線程組內(nèi)的每個(gè)線程均已在所述處理單元上完成執(zhí)行,則使所述標(biāo)簽表中的所述條目無(wú)效。
7.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中所述處理單元配置為實(shí)現(xiàn)紋理處理管線,所述線程組內(nèi)的每個(gè)線程配置為在所述紋理處理管線上執(zhí)行,并且進(jìn)一步包括對(duì)所述紋理處理管線進(jìn)行配置,以針對(duì)所述線程組內(nèi)的線程來實(shí)施通用非紋理數(shù)據(jù)訪問操作而不是紋理數(shù)據(jù)訪問操作。
8.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中所述存儲(chǔ)器訪問請(qǐng)求反映通用非紋理數(shù)據(jù)訪問操作。
9.一種配置為針對(duì)在處理單元上執(zhí)行的線程組而實(shí)施通用數(shù)據(jù)訪問操作的計(jì)算設(shè)備,包括: 處理單元,其配置為: 接收來自所述線程組內(nèi)的線程的存儲(chǔ)器訪問請(qǐng)求, 確定與所述存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)部分未存在于高速緩存存儲(chǔ)器單元中, 從全局存儲(chǔ)器中檢索與所述存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的所述數(shù)據(jù)部分, 在所述線程組內(nèi)的所述線程的執(zhí)行 期間,將所述數(shù)據(jù)部分存儲(chǔ)在所述高速緩存存儲(chǔ)器單元內(nèi),以及一旦確定所述線程組內(nèi)的每個(gè)線程均已在所述處理單元上完成執(zhí)行,則將所述數(shù)據(jù)部分從所述高速緩存存儲(chǔ)器單元中清除。
10.根據(jù)權(quán)利要求9所述的計(jì)算設(shè)備,進(jìn)一步包括: 耦連到所述處理單元的存儲(chǔ)器單元,其存儲(chǔ)程序指令,所述程序指令當(dāng)由所述處理單元執(zhí)行時(shí),使所述處理單元進(jìn)行下列操作: 確定與所述存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)部分未存在于高速緩存存儲(chǔ)器單元中, 從全局存儲(chǔ)器中檢索與所述存儲(chǔ)器訪問請(qǐng)求相關(guān)聯(lián)的所述數(shù)據(jù)部分, 在所述線程組內(nèi)的所述線程的執(zhí)行期間,將所述數(shù)據(jù)部分存儲(chǔ)在所述高速緩存存儲(chǔ)器單元內(nèi),以及 一旦確定所述線程組內(nèi)的每個(gè)線程均已在所述處理單元上完成執(zhí)行,則將所述數(shù)據(jù)部分從所述高速緩存存儲(chǔ)器單元 中清除。
【文檔編號(hào)】G06F13/16GK103885902SQ201310704648
【公開日】2014年6月25日 申請(qǐng)日期:2013年12月19日 優(yōu)先權(quán)日:2012年12月19日
【發(fā)明者】布雷恩·法斯, 埃里克·T·安德森, 尼克·巴羅威廉姆斯, 瑟利斯·加德雷, 喬爾·詹姆斯·麥科馬克, 布里翁·S·諾德奎斯特, 尼馬爾·拉伊·薩克塞納, 蘭基·V·姍 申請(qǐng)人:輝達(dá)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
黄平县| 葵青区| 阜城县| 军事| 济源市| 海安县| 阳原县| 防城港市| 永昌县| 且末县| 府谷县| 乌什县| 江北区| 黄平县| 汪清县| 航空| 固原市| 广昌县| 峡江县| 公主岭市| 德庆县| 隆林| 红安县| 太保市| 苍梧县| 黄陵县| 深水埗区| 平塘县| 潼关县| 富蕴县| 双流县| 隆回县| 平舆县| 宁远县| 澎湖县| 山东| 广西| 西峡县| 思南县| 赤壁市| 历史|