專(zhuān)利名稱:負(fù)載均衡的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在例如(舉例而言)協(xié)處理器之間進(jìn)行負(fù)載均衡。
背景技術(shù):
計(jì)算機(jī)圖形是一廣泛的領(lǐng)域,在過(guò)去的大約二十年中在該領(lǐng)域中進(jìn)行了大量的硬件及軟件開(kāi)發(fā)。例如,參見(jiàn)“計(jì)算機(jī)圖形原理及實(shí)踐(Computer GraphicsPrinciplesand Practice)”(Foley、Van Dam、Feiner及Hughes著,1997年由Addison-Wesley出版)。通常,在計(jì)算機(jī)平臺(tái)或其他類(lèi)似計(jì)算裝置中,采用專(zhuān)用圖形硬件來(lái)渲染圖形圖像,例如(舉例而言)與計(jì)算機(jī)游戲結(jié)合使用的那些圖形圖像。對(duì)于此類(lèi)系統(tǒng)而言,專(zhuān)用圖形硬件可在有可能影響圖形質(zhì)量的多個(gè)方面(包括硬件靈活性及/或其渲染功能)受到限制。
在圖形中,通常,標(biāo)準(zhǔn)計(jì)算平臺(tái)將包括中央處理器(CPU)及圖形處理單元(GPU)。隨著GPU不斷變得更加復(fù)雜及能夠承擔(dān)更大量的計(jì)算任務(wù),處理器之間的負(fù)載均衡處理技術(shù)就變得更為人們所需要。
發(fā)明內(nèi)容
本文闡述用于對(duì)例如(舉例而言)用于圖形及/或視頻處理的兩個(gè)處理器進(jìn)行負(fù)載均衡的方法、設(shè)備、裝置及/或系統(tǒng)的實(shí)施例。根據(jù)一實(shí)施例,一種用于在可編程GPU與CPU之間進(jìn)行負(fù)載均衡的方法包括下列內(nèi)容。由各自能夠至少部分地由所述GPU及所述CPU處理的單獨(dú)工作單元形成雙端隊(duì)列。所述GPU及所述CPU通過(guò)使所述GPU及CPU從所述隊(duì)列的各個(gè)端選擇工作單元來(lái)處理工作單元。
在說(shuō)明書(shū)的結(jié)束部分中具體指出并明確請(qǐng)求本發(fā)明的標(biāo)的物。然而,可通過(guò)結(jié)合附圖閱讀下文詳細(xì)說(shuō)明來(lái)最好地了解所請(qǐng)求的關(guān)于組織與操作方法兩方面的標(biāo)的物連同其目的、特征及優(yōu)點(diǎn),在圖式中圖1為顯示典型圖形管線的一實(shí)施例的方塊圖;圖2為一包括例如可編程GPU等專(zhuān)用圖形硬件的計(jì)算機(jī)平臺(tái)的一實(shí)施例的示意圖;圖3為一顯示一種負(fù)載均衡方法的一實(shí)施例的流程圖;圖4為一顯示典型可編程頂點(diǎn)著色器的一實(shí)施例的方塊圖;圖5為一顯示典型可編程片段處理級(jí)的一實(shí)施例的方塊圖;圖6為一顯示帶有限制圖形對(duì)象的框的二維網(wǎng)格的一實(shí)施例的示意圖;圖7為一流程圖的一部分,其顯示一種負(fù)載均衡方法的另一實(shí)施例的一部分;圖8為一顯示計(jì)算機(jī)平臺(tái)的另一實(shí)施例的示意圖。
具體實(shí)施例方式
在下文詳細(xì)說(shuō)明中,陳述大量具體細(xì)節(jié),以便實(shí)現(xiàn)對(duì)所請(qǐng)求標(biāo)的物的透徹了解。然而,所屬領(lǐng)域的技術(shù)人員將了解,在沒(méi)有這些具體細(xì)節(jié)的情況下也可實(shí)施所請(qǐng)求的標(biāo)的物。在其他情況下,未對(duì)眾所周知的方法、程序、組件及/或電路加以詳細(xì)闡述以免淡化所請(qǐng)求的標(biāo)的物。
計(jì)算機(jī)圖形是一廣泛的領(lǐng)域,在過(guò)去的大約二十年中在該領(lǐng)域中進(jìn)行了大量的硬件及軟件開(kāi)發(fā)。例如,參見(jiàn)“計(jì)算機(jī)圖形原理及實(shí)踐(Computer GraphicsPrinciplesand Practice)”(Foley、Van Dam、Feiner及Hughes著,1997年由Addison-Wesley出版)。通常,在計(jì)算機(jī)平臺(tái)或其他類(lèi)似計(jì)算裝置中,采用專(zhuān)用圖形硬件來(lái)渲染圖形圖像,例如(舉例而言)與計(jì)算機(jī)游戲結(jié)合使用的那些圖形圖像。對(duì)于此類(lèi)系統(tǒng)而言,專(zhuān)用圖形硬件可在有可能影響圖形質(zhì)量的多個(gè)方面(包括硬件靈活性及/或其渲染功能)受到限制。但是,隨著技術(shù)及市場(chǎng)的不斷發(fā)展,不斷需要更高質(zhì)量的圖形。因此,用于擴(kuò)展現(xiàn)有硬件在可產(chǎn)生高質(zhì)量圖形方面的能力的信號(hào)處理技術(shù)及/或其他技術(shù)仍屬于要研究的領(lǐng)域。
如前面所述,專(zhuān)用圖形硬件可在其功能(例如其圖形渲染功能及/或其靈活性功能)方面受到限制。此限制可至少部分地例如歸因于提供改良能力的硬件的成本相對(duì)于對(duì)此種硬件的需求。但是,盡管如此,近年來(lái),在目前技術(shù)水平計(jì)算機(jī)平臺(tái)及/或類(lèi)似計(jì)算系統(tǒng)上所提供的專(zhuān)用圖形硬件的功能已得到改良且仍在不斷改良。例如,固定功能管線已被可編程頂點(diǎn)及片段處理級(jí)所代替。就在6年之前,大多數(shù)消費(fèi)者三維(3D)圖形操作還基本是在CPU上進(jìn)行計(jì)算,且圖形卡還主要以幀緩沖器的形式來(lái)顯示結(jié)果。然而,專(zhuān)用圖形硬件已發(fā)展成包括上千萬(wàn)個(gè)晶體管的圖形管線。目前,可編程圖形處理單元(GPU)能夠不只是簡(jiǎn)單地進(jìn)行前饋三角形渲染。如在下文中所更詳細(xì)闡述,目前技術(shù)水平的圖形芯片(例如(舉例而言)NVIDIA GeForce 4及ATI Radon 9000)以可編程的級(jí)代替固定功能頂點(diǎn)及片段處理級(jí)。如在下文中所將更詳細(xì)闡述,這些可編程的頂點(diǎn)及片段處理級(jí)具有執(zhí)行程序的功能,從而能夠?qū)χ?或紋理計(jì)算進(jìn)行控制。
與CPU架構(gòu)相似,GPU可分解成若干管線級(jí)。但是,CPU包含用于執(zhí)行任意程序的通用設(shè)計(jì),而GPU卻構(gòu)造成處理原始幾何數(shù)據(jù)并最終以像素形式將該信息呈現(xiàn)在顯示器(例如(舉例而言)監(jiān)視器)上。圖1為一典型圖形管線的概念的方塊圖。
通常,對(duì)于所要繪制的目標(biāo),此種管線執(zhí)行下列操作1.在CPU上執(zhí)行的應(yīng)用程序可指令GPU在哪里查找位于存儲(chǔ)器一部分內(nèi)的頂點(diǎn)數(shù)據(jù),例如105。
2.頂點(diǎn)級(jí)110可將所述頂點(diǎn)數(shù)據(jù)從模型空間變換至剪輯空間并可實(shí)施照明計(jì)算等等。
3.頂點(diǎn)級(jí)110可根據(jù)數(shù)學(xué)公式來(lái)產(chǎn)生紋理座標(biāo)。
4.可將圖元(例如三角形、點(diǎn)、四角形等等)光柵化成片段。
5.可通過(guò)由片段處理級(jí)180處理片段來(lái)確定片段顏色,片段處理級(jí)180也可特別是實(shí)施紋理存儲(chǔ)器查找。
6.可實(shí)施某些測(cè)試來(lái)判定是否應(yīng)丟棄片段。
7.可至少部分地根據(jù)片段顏色及通常涉及片段或像素的α通道的其他運(yùn)算來(lái)計(jì)算像素顏色。
8.可將像素信息提供至幀緩沖器160。
9.可例如由顯示器170來(lái)顯示像素。
如圖1的方塊115所示,在圖形管線的幾何處理階段的初期進(jìn)行更高階表面鑲嵌。更高階表面使用數(shù)學(xué)公式及/或函數(shù)來(lái)呈現(xiàn)三維(3D)表面。其實(shí)例包括非均勻有理B樣條(NURB)、貝齊爾(Bezier)曲線、N補(bǔ)片(N-patches)及更多其他公式及/或函數(shù)。對(duì)所傳送的數(shù)據(jù)進(jìn)行鑲嵌以產(chǎn)生更復(fù)雜的模型。因此,GPU動(dòng)態(tài)地產(chǎn)生或?qū)?lái)自應(yīng)用程序的原始模型數(shù)據(jù)鑲嵌成更加詳細(xì)及復(fù)雜的幾何結(jié)構(gòu)。
如方塊120所示及前面所提到,圖形管線通常將實(shí)施變換及照明(T&L)運(yùn)算及類(lèi)似運(yùn)算。方塊120描繪一固定功能單元;然而,這些運(yùn)算正越來(lái)越多地被也稱作頂點(diǎn)著色器的可編程頂點(diǎn)單元(例如130)代替。頂點(diǎn)著色器130對(duì)頂點(diǎn)流應(yīng)用頂點(diǎn)程序。因此,所述程序處理頂點(diǎn)級(jí)的數(shù)據(jù)。大多數(shù)運(yùn)算均在一個(gè)循環(huán)中實(shí)施,雖然不必應(yīng)用此種限制。典型的頂點(diǎn)程序處于一百個(gè)或更多個(gè)指令的數(shù)量級(jí)。圖4為一顯示典型可編程頂點(diǎn)著色器的一實(shí)施例的方塊圖。如圖所示,頂點(diǎn)屬性410應(yīng)用于頂點(diǎn)程序420。所述屬性存儲(chǔ)于寄存器中且所述程序包括用于處理寄存器中的數(shù)據(jù)的一系列指令。所得到的處理數(shù)據(jù)-其在圖4中顯示為頂點(diǎn)輸出數(shù)據(jù)430-也存儲(chǔ)在寄存器中。通常,當(dāng)所述程序執(zhí)行時(shí),其將獲得由圖4中的450所示的程序參數(shù),且其將利用由圖4中的460所示的臨時(shí)寄存器。
如同頂點(diǎn)級(jí)一樣,片段處理級(jí)也已經(jīng)歷了從例如方塊140所示的固定功能單元到例如方塊150所示的可編程單元的進(jìn)化。因此,先前使用固定功能狀態(tài)機(jī)或類(lèi)似硬件實(shí)施紋理化、過(guò)濾及混合。如同頂點(diǎn)著色器一樣,像素著色器(例如150,也稱作可編程片段處理級(jí))允許對(duì)編程控制進(jìn)行定制。因此,程序師能夠逐一像素地計(jì)算顏色等等,以產(chǎn)生所期望的定制視覺(jué)效果。圖5為一顯示典型像素著色器或片段處理級(jí)的實(shí)施例的方塊圖。與其在頂點(diǎn)級(jí)中的對(duì)應(yīng)物相似,實(shí)施例500包括片段輸入數(shù)據(jù)510、片段程序520及片段輸出數(shù)據(jù)530。同樣地,該級(jí)包括紋理存儲(chǔ)器540及臨時(shí)寄存器550。在此上下文中,紋理存儲(chǔ)器是指作為片段處理級(jí)的一部分所包含的GPU的存儲(chǔ)器部分,其通常為高速緩沖存儲(chǔ)器,在執(zhí)行頂點(diǎn)處理及類(lèi)似處理后,可在其中加載特定像素值以供進(jìn)行額外處理,例如過(guò)濾、著色、及/或類(lèi)似處理,例如(舉例而言)通常與形成所要渲染的目標(biāo)的可視表面的外觀相關(guān)聯(lián)的處理。
圖形管線的這些可編程性趨勢(shì)已改變了圖形處理單元(GPU)及其潛在應(yīng)用。因此,此種處理器或處理單元的一潛在應(yīng)用是實(shí)現(xiàn)高質(zhì)量圖形處理,例如針對(duì)各種各樣的不同情形(例如(舉例而言)針對(duì)形成動(dòng)畫(huà)等)可能需要的處理。更具體而言,近年來(lái),圖形硬件的性能已比中央處理器(CPU)的性能得到更快提高。如前面所示,CPU設(shè)計(jì)通常旨在對(duì)順序代碼進(jìn)行高性能處理。因此,使用增多的晶體管來(lái)改良處理性能正變得越發(fā)具有挑戰(zhàn)性。相比之下,如剛才所示,可編程圖形硬件則設(shè)計(jì)用于并行地處理頂點(diǎn)及片段級(jí)代碼。因此,GPU能夠比CPU更有效地使用增多的晶體管來(lái)形成處理性能的改良。因此,隨著半導(dǎo)體制造技術(shù)的不斷進(jìn)步,GPU會(huì)提供維持處理性能改良的潛力。
當(dāng)然,可編程性是相對(duì)新的創(chuàng)新。此外,在“可編程性”的意義內(nèi)包含一系列不同的功能。為了闡述此具體實(shí)施例,將著重于GPU的片段處理級(jí)而不是頂點(diǎn)級(jí),但當(dāng)然,所請(qǐng)求的標(biāo)的物在范圍上不僅限于這一方面。因此,在一個(gè)實(shí)施例中,可編程GPU可包括具有簡(jiǎn)單指令集的片段處理級(jí)。片段程序數(shù)據(jù)類(lèi)型可主要包括定點(diǎn)輸入紋理。輸出幀緩沖器顏色可通常每一顏色分量包括八位。同樣地,一個(gè)級(jí)通常可具有有限數(shù)量的數(shù)據(jù)輸入元件及數(shù)據(jù)輸出元件、有限數(shù)量的現(xiàn)用紋理及有限數(shù)量的相關(guān)紋理。此外,單個(gè)程序的寄存器數(shù)量及指令數(shù)量可相對(duì)較短。硬件可能只允許僅在程序內(nèi)的某些點(diǎn)處具有用于計(jì)算紋理地址的某些指令。硬件可能在給定的一遍中只允許將單個(gè)顏色值寫(xiě)入至幀緩沖器,且程序可不環(huán)回或執(zhí)行條件轉(zhuǎn)移指令。在此上下文中,具有此種功能水平或類(lèi)似功能水平的GPU的實(shí)施例應(yīng)稱作定點(diǎn)可編程GPU。
與此相反,更先進(jìn)的專(zhuān)用圖形處理器或?qū)S脠D形硬件可包括更先進(jìn)的特征。片段處理級(jí)可使用例如浮點(diǎn)指令及/或寄存器來(lái)編程。同樣地,可具有浮點(diǎn)紋理幀緩沖器格式。片段程序可由一組能夠執(zhí)行各種操縱的匯編語(yǔ)言級(jí)指令形成。此類(lèi)程序可相對(duì)較長(zhǎng),例如處于數(shù)百個(gè)指令或以上的數(shù)量級(jí)??稍试S在片段程序內(nèi)進(jìn)行紋理查找,而在一些實(shí)施例中可不存在對(duì)程序內(nèi)紋理提取數(shù)量或紋理相關(guān)級(jí)數(shù)量的限制。片段程序可具有直接寫(xiě)入至紋理存儲(chǔ)器及/或模版緩沖器的功能,且可具有將浮點(diǎn)矢量寫(xiě)入至幀緩沖器(例如RGBA)的功能。在此上下文中,具有此種功能水平或類(lèi)似功能水平的GPU的實(shí)施例可稱作浮點(diǎn)可編程GPU。
同樣地,專(zhuān)用圖形硬件的第三實(shí)施例或示例在此處應(yīng)稱作可編程流式處理器??删幊塘魇教幚砥靼ㄌ幚砥?,其中將數(shù)據(jù)流應(yīng)用至所述處理器且所述處理器對(duì)所述數(shù)據(jù)流的各元素執(zhí)行類(lèi)似的計(jì)算或處理。因此,所述系統(tǒng)可通過(guò)下述方式來(lái)執(zhí)行程序或核心將所述程序或核心應(yīng)用至所述流的元素并通過(guò)在輸出流中提供處理結(jié)果。同樣地,在此上下文中,主要著重于處理片段流的可編程流式處理器包括可編程流式片段處理器。在此種處理器中,可提供完整的指令集及更大的數(shù)據(jù)類(lèi)型。然而,應(yīng)注意,甚至在流式處理器中,在沒(méi)有源自于專(zhuān)用圖形硬件外部(例如來(lái)自CPU)的干預(yù)的情況下,通常也不能執(zhí)行環(huán)回及條件轉(zhuǎn)移。同樣,在此上下文中,具有此功能水平或類(lèi)似水平的GPU的實(shí)施例包括可編程流式處理器。
圖2為一顯示實(shí)施例200的示意圖,實(shí)施例200包括可采用專(zhuān)用圖形硬件(例如(舉例而言)GPU 210)的系統(tǒng)。應(yīng)注意,為了易于闡述及圖解說(shuō)明,圖2為一簡(jiǎn)化圖。因此,已省略了例如存儲(chǔ)器控制器/仲裁器、用于執(zhí)行標(biāo)準(zhǔn)接口協(xié)議(例如AGP及/或PCI)的接口單元、顯示裝置、輸入裝置等方面,以免不必要地淡化本說(shuō)明。
在此具體實(shí)施例中,GPU 210可包括可編程GPU的任一示例,例如(舉例而言)前面所述的三個(gè)實(shí)施例中的一個(gè)實(shí)施例,但為了便于進(jìn)行本說(shuō)明,假定GPU 210包括可編程浮點(diǎn)GPU。同樣地,當(dāng)然應(yīng)了解,所請(qǐng)求的標(biāo)的物在范圍上并不僅限于前面所述的這三種類(lèi)型的GPU。這三種類(lèi)型僅供作為對(duì)典型可編程GPU的舉例說(shuō)明。當(dāng)前已知或以后要開(kāi)發(fā)的所有其他類(lèi)型的可編程GPU均包括在所請(qǐng)求的標(biāo)的物范圍內(nèi)。例如,雖然圖2顯示離散圖形硬件,但另一選擇為,圖形硬件也可與CPU一起集成于IC上且仍屬于所請(qǐng)求的標(biāo)的物范圍內(nèi)。同樣地,一系統(tǒng)實(shí)施例-例如(舉例而言)圖2中所示的實(shí)施例-的應(yīng)用包括許多可能的應(yīng)用,例如在下列設(shè)備內(nèi)或上的應(yīng)用桌上型計(jì)算平臺(tái)、移動(dòng)計(jì)算平臺(tái)、手持式裝置、工作站、游戲控制臺(tái)、機(jī)頂盒、母板、圖形卡及其他設(shè)備。
同樣地,對(duì)于此簡(jiǎn)化的實(shí)施例而言,系統(tǒng)200包括CPU 230及GPU 210。在此具體實(shí)施例中,存儲(chǔ)器240包括隨機(jī)存取存儲(chǔ)器或RAM,但所請(qǐng)求的標(biāo)的物在范圍上并不僅限于這一方面。可采用當(dāng)前已知或要開(kāi)發(fā)的各種存儲(chǔ)器類(lèi)型中的任何一種。應(yīng)注意,在此具體實(shí)施例中,存儲(chǔ)器240包括幀緩沖器250,但同樣地,所請(qǐng)求的標(biāo)的物在范圍上并不僅限于這一方面。例如,圖8顯示一實(shí)施例,其中相同的參考編號(hào)表示對(duì)應(yīng)的方面。然而,在實(shí)施例600中,幀緩沖器650并不駐存于存儲(chǔ)器640內(nèi)。如在圖2中進(jìn)一步顯示,在此具體實(shí)施例中,各種系統(tǒng)元件之間的通信是通過(guò)總線220來(lái)進(jìn)行的。
值得重復(fù)的是,圖2僅供用于舉例說(shuō)明目的,而決非打算限制所請(qǐng)求的標(biāo)的物的范圍。包括GPU及CPU的系統(tǒng)可具有大量架構(gòu),且所請(qǐng)求的標(biāo)的物打算涵蓋所有這些架構(gòu)。雖然所請(qǐng)求的標(biāo)的物在范圍上并不僅限于剛才所述的圖2所示實(shí)施例,但應(yīng)注意,此具體實(shí)施例包括采用兩個(gè)協(xié)處理器(CPU 230及GPU 210)的系統(tǒng)。因此,在至少此方面中,此實(shí)施例代表目前技術(shù)水平的計(jì)算平臺(tái)。因此,如前面所述,需要具有采用此種系統(tǒng)來(lái)實(shí)施高質(zhì)量圖形處理的功能。然而,同樣應(yīng)注意,所請(qǐng)求的標(biāo)的物并不僅限于高質(zhì)量圖形。例如,將顯而易見(jiàn),所請(qǐng)求的標(biāo)的物的實(shí)施例可證明在計(jì)算機(jī)游戲及/或其他更低端應(yīng)用中較佳。
在圖形中,一種典型且頻繁的計(jì)算稱作“光線跟蹤”。在圖形中,以多種方式采用光線跟蹤,例如用于模擬照明效果(包括陰影、反射、及/或折射)以及其他用途。通常,光線跟蹤是指一種過(guò)程,其通過(guò)跟蹤從觀察者眼睛到景物中的目標(biāo)的假想光線來(lái)確定存在于特定圖形圖像中的表面的可見(jiàn)性。例如,參見(jiàn)“計(jì)算機(jī)圖形(ComputerGraphics)”,第15.10節(jié),第701-718頁(yè)。
光線跟蹤的困難之一在于其通常是所要實(shí)施的最耗時(shí)的圖形操作之一。此外,光線跟蹤通常在CPU上而不是在GPU上實(shí)施,這至少部分地歸因于所涉及的計(jì)算復(fù)雜度。然而,最近,已開(kāi)始將可編程GPU用于計(jì)算過(guò)程的工作。例如,在Timothy Purcell等人的“對(duì)可編程圖形硬件進(jìn)行光線跟蹤(Ray Tracing on Programmable GraphicsHardware)”(ACM圖形學(xué)報(bào)(ACM Transactions On Graphics),2002年)中,探討了存儲(chǔ)及/或存取數(shù)據(jù)以在GPU上進(jìn)行通用計(jì)算的有趣方法。然而,Purcell等人所提出的方法的一個(gè)問(wèn)題在于,在實(shí)施計(jì)算的同時(shí)存儲(chǔ)整個(gè)景物需要具有大存儲(chǔ)量功能。在Nathan Carr等人的另一最新論文“光線引擎(The Ray Engine)”(圖形硬件(GraphicsHardware),2002年)中,提出一種其中采用GPU來(lái)計(jì)算光線-三角形交叉的方法。此方法的困難在于每次一個(gè)三角形地在GPU上計(jì)算光線-三角形交叉。因此,此種方法可能耗時(shí)且可能未充分利用通過(guò)可編程GPU可得到的并行處理功能。因此,需要具有使用可編程GPU來(lái)對(duì)圖形處理實(shí)施光線跟蹤的其他技術(shù)。
雖然光線跟蹤是耗時(shí)的操作,但至少對(duì)于某些計(jì)算而言,可能花費(fèi)在確定圖像中不需要利用光線跟蹤的部分上的時(shí)間多于花費(fèi)在實(shí)際實(shí)施及計(jì)算光線-圖元交叉上的時(shí)間。因此,如在下文中將變得更加顯而易見(jiàn),可通過(guò)下述方式來(lái)獲得處理優(yōu)點(diǎn)應(yīng)用可編程GPU來(lái)通過(guò)確定圖像中不需要進(jìn)行光線跟蹤的那些部分而減少所要完成或?qū)嵤┑墓饩€-圖元交叉計(jì)算的數(shù)量。
例如,圖3為一種用于使用所提出的可編程GPU來(lái)進(jìn)行光線跟蹤的方法的一實(shí)施例的流程圖。雖然此具體實(shí)施例具有各種各樣的實(shí)施細(xì)節(jié),但在高層次上,采用可編程GPU來(lái)計(jì)算多個(gè)光線(此處稱作一批)與一經(jīng)構(gòu)造以在特定圖像中對(duì)目標(biāo)進(jìn)行限界的表面層次之間的交叉。此將有助于消除圖像中要實(shí)施光線跟蹤的部分,因?yàn)?,如果所述表面不交叉,則由所述表面限界的圖元也將不交叉。
此具體實(shí)施例的另一方面是采用GPU的并行處理功能。具體而言,使多個(gè)光線與一限界表面層次交叉意味著可有可能在GPU上有效地實(shí)施重復(fù)計(jì)算。下文說(shuō)明著重于由GPU本身所進(jìn)行的處理及GPU如何與CPU交互作用以實(shí)施負(fù)載均衡及計(jì)算光線-圖元交叉。因此,此具體實(shí)施例的再一方面涉及在GPU與CPU之間進(jìn)行負(fù)載均衡。
現(xiàn)在參見(jiàn)圖3,方塊310描繪針對(duì)此具體實(shí)施例將圖像細(xì)分成工作單元以幫助實(shí)施光線跟蹤。如前面所示,采用可編程GPU來(lái)計(jì)算多個(gè)光線與分級(jí)限界一組圖形目標(biāo)的一組表面之間的交叉。然而,在開(kāi)始時(shí),使用環(huán)繞目標(biāo)的非重疊表面來(lái)劃分圖像。因此,在此實(shí)施例中,至少部分地根據(jù)限界目標(biāo)(不管目標(biāo)形狀如何)用一表面來(lái)劃分圖像,以便在空間上將各目標(biāo)分開(kāi)。在此具體實(shí)施例中,目標(biāo)包括一四邊形圖元網(wǎng)格,但是,當(dāng)然,所請(qǐng)求的標(biāo)的物在范圍上并不僅限于此方面。在此上下文中,圖元可包括任一多邊形。
應(yīng)注意,限界表面的形狀可呈任一形式。例如,限界表面的形狀可包括球形、正方形、矩形、凸?fàn)畋砻婊蚱渌?lèi)型的表面。對(duì)于此具體實(shí)施例而言,限界表面包括框,在此處稱作限界框。采用框的一個(gè)優(yōu)點(diǎn)在于實(shí)施起來(lái)快且容易。在此上下文中,限界框也應(yīng)稱作體元或體積。至少部分地由于此處使用限界框,如(舉例而言)在圖6中所示及下文中所述,對(duì)圖像的劃分是大致上基于網(wǎng)格。如所提出,網(wǎng)格方法具有包括簡(jiǎn)單、易于實(shí)施及計(jì)算速度在內(nèi)的優(yōu)點(diǎn)。然而,此方法的缺點(diǎn)在于,作為一種用于確定圖元的光線交叉的方法,其相對(duì)粗糙。此處,一種解決此缺點(diǎn)的方式是如下文所將更詳細(xì)闡述,采用一限界框?qū)哟蝸?lái)提供更高的精度。
如前面所提到,圖6為一提供網(wǎng)格方法的簡(jiǎn)單二維表示形式的示意圖,但此處的網(wǎng)格中的框具有不同的尺寸。網(wǎng)格610具有位于行1、列1、行2、列2、及行3列3處的框中的目標(biāo)。在此具體實(shí)施例中,所述目標(biāo)分別標(biāo)記為620、630及640。當(dāng)然,所請(qǐng)求的標(biāo)的物在范圍上并不僅限于網(wǎng)格方法或此例示性實(shí)例。
在此具體實(shí)施例中,如圖6中所示,由像素表示光線。因此,在可編程GPU上,可渲染一像素四邊形,例如660,其實(shí)際上表示如圖6中用圖形方式所標(biāo)記的指向網(wǎng)格610的成批光線,例如650。光線650及像素660由一側(cè)視圖表示在圖6中。圖6中未明確顯示,沿著在垂直指向頁(yè)平面的方向上所顯示的像素對(duì)齊的是毗鄰的其他像素串,其同樣具有對(duì)應(yīng)的光線。雖然在圖6中未按比例精確描繪,但一目了然,限界框因環(huán)繞不同的圖形目標(biāo)而占據(jù)不同的部分或體積。當(dāng)然,圖6也僅是為便于進(jìn)行圖解說(shuō)明而提供的對(duì)網(wǎng)格的過(guò)分簡(jiǎn)單化的二維表示形式。
由于在空間上劃分圖像,因此可至少部分地根據(jù)與周邊交叉的光線的數(shù)量(此處稱作一批光線)來(lái)對(duì)體元進(jìn)行分等。此處應(yīng)注意,對(duì)于此種特定技術(shù)的此特定應(yīng)用而言,光線大致相干。因此,至少部分地根據(jù)與其周邊交叉的光線的數(shù)量,限界框或體元在此上下文中表示要由處理器實(shí)施的工作量,此處稱作工作項(xiàng)目或工作單元。要對(duì)一特定工作單元或工作項(xiàng)目實(shí)施的工作量至少部分地相關(guān)于與所述特定限界框的周邊交叉的光線的數(shù)量。另外,限界框內(nèi)是一系列附加限界框或一層次。因此,例如圖6中顯示于行1、列1處的特定限界框?qū)⑦M(jìn)一步細(xì)分成連續(xù)的限界框?qū)哟?。然而,在所述過(guò)程的此階段中,如圖3中的方塊320所示,在此處使用批大小來(lái)形成“雙邊”隊(duì)列。具體而言,為了更充分地利用GPU的并行處理功能,需要對(duì)那些在一批中具有相對(duì)大光線的數(shù)量的體元應(yīng)用GPU。同樣地,還需要使用CPU來(lái)處理那些具有相對(duì)小的批的體元。
如圖3所示的方塊330處所描繪,CPU及GPU自所述隊(duì)列的相應(yīng)端開(kāi)始處理各單獨(dú)的工作單元。如下文中所將更詳細(xì)地闡述,對(duì)工作單元進(jìn)行公式化的方式使工作單元能夠至少部分地由GPU或CPU來(lái)處理。因此,這時(shí),需要著重于由GPU進(jìn)行的處理并闡述GPU與CPU之間的負(fù)載均衡。在此上下文中,負(fù)載均衡是指一種隱式或顯式的機(jī)制,其允許特定處理器在處理器之間分配處理負(fù)載,以便比在通過(guò)偶然事件或通過(guò)隨機(jī)化分配來(lái)分配處理負(fù)載的情況下完成更多的處理。
一旦GPU開(kāi)始處理一工作單元,例如(舉例而言)標(biāo)記為網(wǎng)格610的行1、列1的工作單元,其便能夠使用一種在一個(gè)循環(huán)中處理十個(gè)光線及八個(gè)限界框的技術(shù)來(lái)處理該體元,但當(dāng)然,所請(qǐng)求的標(biāo)的物在范圍上并不僅限于此方面。但是,在一個(gè)GPU循環(huán)中要處理的光線及限界框的數(shù)量可因多種因素而異。還應(yīng)注意,在此實(shí)施例中,應(yīng)用相同的十個(gè)光線。此外,對(duì)于此具體實(shí)施例而言,八個(gè)框包括在層次上連續(xù)的框,但當(dāng)然,所請(qǐng)求的標(biāo)的物在范圍上并不僅限于采用在層次上連續(xù)的框。因此,如下文所將更詳細(xì)地闡述,如果此處一特定光線與所有八個(gè)限界框交叉,則此會(huì)提供某些將用于進(jìn)一步圖形處理的信息。
用來(lái)在一個(gè)循環(huán)中處理十個(gè)光線及八個(gè)限界框的機(jī)制涉及利用包括如前面所述的可編程像素著色器級(jí)的GPU架構(gòu)。因此,例如,用于在GPU上進(jìn)行處理的光線的數(shù)量可至少部分地因應(yīng)用及特定情形而異。其也可至少部分地因例如(舉例而言)特定GPU、其特定架構(gòu)、被處理的特定圖像等其他因素而異。同樣地,類(lèi)似的變化形式也可適用于在一個(gè)循環(huán)中所要處理的限界框的數(shù)量。
如前面所解釋?zhuān)袼刂鲌?zhí)行所謂“片段程序”。因此,在GPU的片段級(jí)(例如(舉例而言)片段級(jí)180)中,為像素著色器(例如(舉例而言)150)提供呈所要執(zhí)行的指令形式的片段程序。同樣地,指定需要對(duì)其執(zhí)行片段程序的特定像素。當(dāng)執(zhí)行此種程序時(shí),GPU通常產(chǎn)生或輸出值至特定像素的特定位置。因此,在此實(shí)施例中,為了實(shí)施并行計(jì)算(例如在一循環(huán)中計(jì)算八個(gè)限界框),將特定光線/像素計(jì)算的結(jié)果寫(xiě)入至特定位置,在此具體實(shí)施例中,寫(xiě)入至模版緩沖器。更具體而言,對(duì)于由像素著色器處理的像素而言,通常GPU計(jì)算其顏色(例如紅、緣、藍(lán))、α(例如覆蓋范圍)、深度、及特定片段程序可特有的其他附加值。對(duì)于此具體實(shí)施例而言,模版緩沖器包括用于存儲(chǔ)那些其他附加值的字節(jié)或八個(gè)位。因此,對(duì)于此具體實(shí)施例而言,在一個(gè)循環(huán)中處理八個(gè)各自利用所述模版字節(jié)的一位的限界框。同樣,所請(qǐng)求的標(biāo)的物在范圍上并不僅限于此特定方面。例如,可改為以深度形式、以顏色形式、或以GPU具有其特定緩沖位置的某一其他屬性形式來(lái)存儲(chǔ)計(jì)算結(jié)果。此處,如所顯示,模版緩沖器中的每一位均表示特定光線與特定限界框之間的交叉的計(jì)算結(jié)果。因此,采用模版緩沖器的一個(gè)優(yōu)點(diǎn)在于從輸入/輸出觀點(diǎn)來(lái)看,因屏蔽模版緩沖器的其他位而相對(duì)容易讀出特定的計(jì)算結(jié)果。
如前面所述,在此特定實(shí)施例中,在一個(gè)循環(huán)中處理十個(gè)光線。在此特定實(shí)施例中,此處理是以2×5像素陣列的形式來(lái)進(jìn)行的,但是,所請(qǐng)求的標(biāo)的物在范圍上并不僅限于此方面。通常,為有效地利用GPU,需要使用維數(shù)為2的倍數(shù)的陣列,。當(dāng)然,所請(qǐng)求的標(biāo)的物在范圍上并不僅限于采用2×N陣列,其中N為任一正整數(shù)。因此,在此特定實(shí)施例中,為了獲得并行處理的效率,對(duì)于此特定實(shí)施例而言,在一個(gè)循環(huán)中處理十個(gè)光線。
在此特定實(shí)施例中,限界框表示為X的范圍、Y的范圍及Z的范圍。因此,可寫(xiě)入片段程序來(lái)為十個(gè)像素確定與那些像素相關(guān)聯(lián)的光線是否與此一限界框交叉。如果出現(xiàn)交叉,則可在模版緩沖器中為所述特定像素設(shè)定一位。同樣地,如前面所述,通過(guò)使用片段程序,在一個(gè)循環(huán)中計(jì)算八個(gè)限界框能利用GPU的硬件架構(gòu)。
采用GPU時(shí)的一個(gè)問(wèn)題是確定處理何時(shí)停止。為了對(duì)此進(jìn)行確定,CPU詢問(wèn)GPU。然而,此種詢問(wèn)在一定程度上牽涉到效率。詢問(wèn)GPU會(huì)使GPU停止其處理,以便其能夠向CPU提供數(shù)據(jù)。因此,可能不希望太頻繁地詢問(wèn),因?yàn)榇丝蓪?dǎo)致處理效率低下。然而,同樣地希望不要太不頻繁地詢問(wèn),因?yàn)镚PU一旦停止,其就可能處于空閑狀態(tài),從而意味著浪費(fèi)處理時(shí)間。
對(duì)于此特定實(shí)施例而言,如前面所述,雙邊隊(duì)列提供一種均衡這些考慮因素的機(jī)制,如在下文中所將更詳細(xì)地闡述。在此上下文內(nèi),如所提到,CPU詢問(wèn)GPU機(jī)制的頻率可影響GPU的處理效率。因此,根據(jù)所述特定實(shí)施方案或?qū)嵤├?,可能需要改變此頻率。
如前面所述,GPU及CPU首先如圖3的方塊330所示開(kāi)始單獨(dú)的工作單元。因此,對(duì)于此實(shí)施例而言,CPU及GPU計(jì)算多個(gè)光線與一組用于限制一個(gè)或多個(gè)圖形目標(biāo)的表面之間的交叉。然而,應(yīng)注意,在此上下文中,圖形目標(biāo)包括一組圖元。對(duì)于此特定實(shí)施例而言,雖然所請(qǐng)求的標(biāo)的物在范圍上并不僅限于此方面,且如圖3的方塊340所進(jìn)一步顯示,CPU是否及何時(shí)完成其工作單元是判決點(diǎn)。在此上下文中,完成工作單元是指停止處理所述特定工作單元,且如果有的話,則開(kāi)始處理另一工作單元。如果CPU尚未停止或完成處理,則CPU與GPU二者繼續(xù)進(jìn)行處理,如在方塊370中所示。然而,一旦CPU已結(jié)束處理,其便如圖3中的方塊350所描繪詢問(wèn)GPU關(guān)于所述GPU是否已停止處理。如果GPU具有對(duì)其所開(kāi)始的最新工作單元的附加處理,則GPU繼續(xù)進(jìn)行。如果附加工作單元仍在隊(duì)列中,則已完成處理的CPU從所述隊(duì)列的端部拉取另一工作單元。然后,如前所述,CPU繼續(xù)進(jìn)行,直至其完成其工作單元為止,且隨后其再次詢問(wèn)GPU。如果這時(shí)GPU已停止處理,則GPU將信息提供回至CPU,例如如果已發(fā)生“命中”或交叉。如果尚未發(fā)生命中,則此指示所述光線均未與GPU所處理的體元或工作單元的限界框交叉。因此,因無(wú)光線與圖元交叉,此工作單元完成。如果存在其他工作單元,則GPU及CPU接受其他工作單元且此種循環(huán)繼續(xù)進(jìn)行。此由包括方塊385、335、365及355的循環(huán)在圖3中說(shuō)明。當(dāng)然,應(yīng)注意,對(duì)于此特定實(shí)施例而言,如例如方塊386所示,一旦不再存在更多的工作單元且一旦CPU及GPU不存在對(duì)其各自工作單元的附加處理,則所述過(guò)程結(jié)束。
然而,如果替代地GPU已揭示命中,則此意味著一些光線與所述特定體元的限界框交叉。GPU通過(guò)將關(guān)于發(fā)生此種交叉處的光線的數(shù)據(jù)提供回至CPU,來(lái)幫助CPU確定仍保持“現(xiàn)用”于進(jìn)一步處理的光線的數(shù)量。此信息使CPU能夠?qū)⒘硪还ぷ鲉卧才庞谇懊嫠龅碾p邊隊(duì)列中。CPU進(jìn)行的此種安排確定對(duì)此特定體元的附加處理將由GPU還是由CPU來(lái)實(shí)施。
然而,在某一時(shí)刻,所述層次中不再存在其他限界框。一旦出現(xiàn)此種情況,假定GPU已揭示“命中”,則此指示實(shí)施計(jì)算來(lái)確定所述一個(gè)或多個(gè)光線是否與由所述限界框限界的圖元交叉。在此特定實(shí)施例中,此后一種計(jì)算是由CPU而不是GPU實(shí)施的。因此,CPU至少部分地根據(jù)GPU所實(shí)施的計(jì)算來(lái)計(jì)算一個(gè)或多個(gè)光線與一個(gè)或多個(gè)圖形目標(biāo)之間的交叉。CPU通過(guò)確定所述一個(gè)或多個(gè)光線是否與任何圖元交叉來(lái)完成針對(duì)特定工作單元的此種處理。此由方塊375及371在圖3中說(shuō)明。如圖3中所描繪,在方塊380處,一旦CPU完成對(duì)工作單元的光線-圖元交叉計(jì)算,CPU及GPU二者便均選擇另一工作單元(如果有)。如前所述,此由包括方塊335、365及355的循環(huán)描繪。
光線有可能與兩個(gè)或三個(gè)目標(biāo)交叉。為了解決此問(wèn)題,使用z緩沖器來(lái)對(duì)光線與圖元之間的交叉進(jìn)行高速緩存及分類(lèi),以確定哪個(gè)圖元為第一或最接近的交叉者。
當(dāng)然,應(yīng)注意,所請(qǐng)求的標(biāo)的物在范圍上并不僅限于此特定實(shí)施例,例如并不僅限于CPU詢問(wèn)GPU的特定時(shí)間。作為一個(gè)實(shí)例,CPU可以大致預(yù)定的時(shí)間間隔詢問(wèn)GPU?;蛘撸谝环N自適應(yīng)方法中,CPU可至少部分地根據(jù)GPU要對(duì)GPU所開(kāi)始的最新工作單元進(jìn)行的處理量來(lái)進(jìn)行詢問(wèn)。如所提到,CPU詢問(wèn)GPU的方式可影響GPU的處理效率。因此,打算將CPU可用以詢問(wèn)GPU的任何及所有方式均包括在所請(qǐng)求的標(biāo)的物的范圍內(nèi)。應(yīng)清楚地看出,希望使GPU及CPU處理短暫重合或重疊。通常,這兩個(gè)處理器并行進(jìn)行處理的時(shí)間量越大,處理量就越大。因此,希望CPU對(duì)GPU進(jìn)行的詢問(wèn)以一種使這些處理器的短暫處理重疊盡可能廣的方式來(lái)進(jìn)行。當(dāng)然,如前面所示,有效達(dá)到此目的方式可隨特定實(shí)施方式而變化。如同樣在前面所提到,在此具體實(shí)施例中,GPU因此用來(lái)通過(guò)幫助CPU確定那些在其中不希望試圖計(jì)算光線-圖元交叉的體元來(lái)加快處理。
為了顯示GPU在任一時(shí)刻的詢問(wèn),圖7為一流程圖的一部分,其顯示圖3所示方法實(shí)施例的一替代形式??蓪D7直接與圖3相比較。具體而言,圖7適合處于圖3所示的方塊330與方塊375之間并替換方塊340至360。因此,圖7中所描繪的流程圖與圖3所示的流程圖;然而,如上文所提到,差別在于GPU未必一定詢問(wèn)CPU何時(shí)完成一工作單元。此例如由方塊740顯示。具體而言,此判決塊表示CPU對(duì)GPU進(jìn)行的詢問(wèn)。然而,無(wú)論CPU是否詢問(wèn)GPU,一分別位于745或765處的判決塊均判定CPU是否已完成對(duì)一工作單元的處理。如果未完成,則如分別由方塊780及791所示,GPU及CPU繼續(xù)進(jìn)行處理。但如果相反,CPU已完成其處理,則如分別于方塊785及795處所示,作出一關(guān)于是否具有其他工作單元的判定。
在此特定實(shí)施例中,如上文所提到,當(dāng)受到詢問(wèn)時(shí),如果處理已停止,則GPU向CPU提供關(guān)于限界框是否已與所述特定體元中的一個(gè)或多個(gè)目標(biāo)交叉或所述一個(gè)或多個(gè)光線是否已錯(cuò)過(guò)所述特定體元中的一個(gè)或多個(gè)目標(biāo)的信息。命中或與限界框交叉意味著需要進(jìn)行附加處理;但如果未命中或與限界框交叉,則同樣地,由框所限界的圖元將不交叉。當(dāng)然,應(yīng)注意,所需信息不僅僅在于光線已與圖元交叉,而且還在于所述交叉出現(xiàn)在何處、哪個(gè)是最接近的光線-圖元交叉、等等。這就是一旦所述層次中不再有更多限界框便讓CPU完成由GPU所開(kāi)始的過(guò)程的原因。實(shí)質(zhì)上,GPU用于確定何時(shí)希望讓CPU計(jì)算一特定胞或體元的光線-圖元交叉。然而,采用GPU來(lái)不時(shí)地“在所述層次中移動(dòng)”的優(yōu)點(diǎn)包括GPU可與CPU并行實(shí)施計(jì)算且GPU可比CPU更有效地實(shí)施某些計(jì)算。
總之,在此特定實(shí)施例中,采用一組分級(jí)次的體元或限界框。通過(guò)限界框?qū)哟蝸?lái)迭代各批大致相干的光線。在體元完成其處理后,將所述一批光線向前移動(dòng)至下一組體元。在此過(guò)程中,采用體元中所包含的光線數(shù)量來(lái)通過(guò)雙邊隊(duì)列以隱式方式確定為實(shí)現(xiàn)負(fù)載均衡目的而較佳由GPU還是由CPU實(shí)施計(jì)算。如前面所示,希望在GPU上處理大批光線并在CPU上處理小批光線,以利用這些相應(yīng)處理器的特定功能。
當(dāng)然,至少部分地根據(jù)前述內(nèi)容,現(xiàn)在應(yīng)了解,可形成能夠形成所期望的圖形處理的軟件。當(dāng)然還應(yīng)了解,雖然本文剛才闡述了特定實(shí)施例,但所請(qǐng)求的標(biāo)的物在范圍上并不僅限于特定實(shí)施例或?qū)嵤┓绞?。例如,一?shí)施例可呈硬件形式,例如(舉例而言)經(jīng)構(gòu)建以在前面所述的裝置或裝置組合上運(yùn)行,而另一實(shí)施例可呈軟件形式。同樣地,一實(shí)施例可例如以固件或以硬件、軟件、及/或固件的任一組合形式來(lái)構(gòu)建。同樣地,雖然所請(qǐng)求的標(biāo)的物在范圍上并不僅限于此方面,但一實(shí)施例可包括一個(gè)或多個(gè)物件,例如一個(gè)或多個(gè)存儲(chǔ)媒體。此存儲(chǔ)媒體(例如(舉例而言)一個(gè)或多個(gè)CD-ROM及/磁盤(pán))上可存儲(chǔ)有指令,所述指令在由系統(tǒng)(例如(舉例而言)計(jì)算機(jī)系統(tǒng)、計(jì)算平臺(tái)、GPU、CPU、另一裝置或系統(tǒng)、或其組合)執(zhí)行時(shí),可產(chǎn)生一種根據(jù)所正執(zhí)行的所請(qǐng)求標(biāo)的物的方法的一實(shí)施例,例如(舉例而言)前面所述的實(shí)施例之一。作為一潛在的實(shí)例,計(jì)算平臺(tái)可包括一個(gè)或多個(gè)處理單元或處理器、一個(gè)或多個(gè)輸入/輸出裝置(例如顯示器)、鍵盤(pán)及/或鼠標(biāo)、及/或一個(gè)或多個(gè)存儲(chǔ)器(例如靜態(tài)隨機(jī)存取存儲(chǔ)器、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器、閃速存儲(chǔ)器、及/硬盤(pán)驅(qū)動(dòng)器),但同樣地,所請(qǐng)求的標(biāo)的物在范圍上并不僅限于此實(shí)例。
在前述說(shuō)明中,已對(duì)所請(qǐng)求的標(biāo)的物的各個(gè)方面進(jìn)行了闡述。為便于進(jìn)行解釋?zhuān)谐隽司唧w數(shù)字、系統(tǒng)及/或配置以實(shí)現(xiàn)對(duì)所請(qǐng)求的標(biāo)的物的透徹了解。然而,所屬領(lǐng)域的技術(shù)人員通過(guò)此揭示內(nèi)容應(yīng)易知,在沒(méi)有所述具體細(xì)節(jié)的情況下也可實(shí)施所請(qǐng)求的標(biāo)的物。在其他情況下,省略及/或簡(jiǎn)化了眾所周知的特征以免淡化所請(qǐng)求的標(biāo)的物。雖然本文中已顯示及/或闡述了某些特征,但所屬領(lǐng)域的技術(shù)人員現(xiàn)在將會(huì)聯(lián)想到諸多修改、替換、改動(dòng)及/或等效形式。因此,應(yīng)了解,隨附權(quán)利要求書(shū)打算涵蓋屬于所請(qǐng)求標(biāo)的物的真正精神范圍內(nèi)的所有此類(lèi)修改及/或改動(dòng)。
權(quán)利要求
1.一種用于在一可編程GPU與一CPU之間進(jìn)行負(fù)載均衡的方法,其包括形成各自能夠至少部分地由所述GPU與所述CPU處理的單獨(dú)工作單元的一雙端隊(duì)列;及通過(guò)使所述GPU及所述CPU從所述隊(duì)列的各自端選擇工作單元來(lái)處理所述工作單元。
2.如權(quán)利要求1所述的方法,其中處理包括所述CPU詢問(wèn)所述GPU。
3.如權(quán)利要求2所述的方法,其中所述CPU以大致預(yù)定的時(shí)間間隔詢問(wèn)所述GPU。
4.如權(quán)利要求2所述的方法,其中所述CPU在一至少部分地基于對(duì)所述GPU所開(kāi)始的最新工作單元的處理量的時(shí)間處詢問(wèn)所述GPU。
5.如權(quán)利要求2所述的方法,其中所述CPU在不同的時(shí)間處詢問(wèn)所述GPU。
6.如權(quán)利要求1所述的方法,其中至少部分地根據(jù)所述GPU及所述CPU中的一者有效地處理各自的工作單元的能力來(lái)對(duì)所述雙端隊(duì)列進(jìn)行排序。
7.如權(quán)利要求6所述的方法,其中至少部分地根據(jù)所述特定各自的工作單元的一批光線的尺寸來(lái)測(cè)定所述GPU及所述CPU中的一者處理所述各自工作單元的能力。
8.如權(quán)利要求2所述的方法,其中當(dāng)所述CPU完成一工作單元后,所述CPU詢問(wèn)所述GPU。
9.如權(quán)利要求8所述的方法,其中在所述詢問(wèn)的結(jié)果指示所述GPU尚未停止處理所述GPU所開(kāi)始的最新工作單元的情況下,則所述CPU開(kāi)始另一工作單元。
10.如權(quán)利要求8所述的方法,其中在所述詢問(wèn)的結(jié)果指示所述GPU已停止處理所述GPU所開(kāi)始的最新工作單元的情況下,則所述GPU及CPU分別開(kāi)始另一工作單元。
11.如權(quán)利要求8所述的方法,其中在所述詢問(wèn)結(jié)果指示所述GPU已完成所述GPU所開(kāi)始的最新工作單元的情況下,則所述GPU開(kāi)始另一工作單元。
12.如權(quán)利要求2所述的方法,其中對(duì)于所述GPU所處理的所述工作單元中的至少一些單元,處理是由所述CPU完成的。
13.如權(quán)利要求2所述的方法,其中對(duì)于所述GPU所處理的所述工作單元中的至少一些單元,所述CPU計(jì)算光線圖元交叉。
14.如權(quán)利要求1所述的方法,其中由所述GPU及所述CPU實(shí)施的所述處理至少部分地短暫重合。
15.一種物件,其包括上面存儲(chǔ)有指令的一存儲(chǔ)媒體,所述指令在被執(zhí)行時(shí)促成實(shí)施一種在一可編程GPU與一CPU之間進(jìn)行負(fù)載均衡的如下方法形成各自能夠至少部分地由所述GPU及所述CPU處理的單獨(dú)工作單元的一雙端隊(duì)列;及通過(guò)使所述GPU及所述CPU從所述隊(duì)列的各自端選擇工作單元來(lái)處理所述工作單元。
16.如權(quán)利要求15所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成所述CPU在所述處理期間詢問(wèn)所述GPU。
17.如權(quán)利要求16所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成所述CPU以大致預(yù)定的時(shí)間間隔詢問(wèn)所述GPU。
18.如權(quán)利要求16所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成所述CPU在一至少部分地基于對(duì)所述GPU所開(kāi)始的最新工作單元的處理量的時(shí)間處詢問(wèn)所述GPU。
19.如權(quán)利要求16所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成所述CPU在不同的時(shí)間處詢問(wèn)所述GPU。
20.如權(quán)利要求15所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成至少部分地根據(jù)所述GPU及所述CPU中的一者有效地處理所述各自工作單元的能力對(duì)所述雙端隊(duì)列進(jìn)行排序。
21.如權(quán)利要求20所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成至少部分地根據(jù)所述特定各自工作單元的一批光線的尺寸來(lái)測(cè)定所述GPU及所述CPU中的一者處理所述各自工作單元的能力。
22.如權(quán)利要求16所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成當(dāng)所述CPU完成一工作單元后,所述CPU詢問(wèn)所述GPU。
23.如權(quán)利要求22所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成在所述詢問(wèn)的結(jié)果指示所述GPU尚未停止處理所述GPU所開(kāi)始的最新工作單元的情況下,則所述CPU開(kāi)始另一工作單元。
24.如權(quán)利要求22所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成在所述詢問(wèn)的結(jié)果指示所述GPU已停止處理所述GPU所開(kāi)始的最新工作單元的情況下,則所述GPU及CPU分別開(kāi)始另一工作單元。
25.如權(quán)利要求22所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成在所述詢問(wèn)的結(jié)果指示所述GPU已完成所述GPU所開(kāi)始的最新工作單元的情況下,則所述GPU開(kāi)始另一工作單元。
26.如權(quán)利要求16所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成對(duì)于所述GPU所處理的所述工作單元中的至少一些單元,處理是由所述CPU完成的。
27.如權(quán)利要求16所述的物件,當(dāng)所述指令被執(zhí)行時(shí)進(jìn)一步促成對(duì)于所述GPU所處理的所述工作單元中的至少一些單元,所述CPU計(jì)算光線圖元交叉。
28.如權(quán)利要求15所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成所述GPU與所述CPU所實(shí)施的所述處理至少部分地短暫重合。
29.一種設(shè)備,其包括一CPU及一可編程GPU;所述CPU及GPU適于形成各自能夠至少部分地由所述GPU及所述CPU處理的單獨(dú)工作單元的一雙端隊(duì)列;所述GPU及所述CPU進(jìn)一步適于從所述隊(duì)列的各自端選擇工作單元。
30.如權(quán)利要求29所述的設(shè)備,其中所述CPU進(jìn)一步適于詢問(wèn)所述GPU。
31.如權(quán)利要求30所述的設(shè)備,其中所述CPU適于以大致預(yù)定的時(shí)間間隔詢問(wèn)所述GPU。
32.如權(quán)利要求30所述的設(shè)備,其中所述CPU適于在一至少部分地基于對(duì)所述GPU所開(kāi)始的最新工作單元的處理量的時(shí)間處詢問(wèn)所述GPU。
33.如權(quán)利要求30所述的設(shè)備,其中所述CPU適于在不同的時(shí)間處詢問(wèn)所述GPU。
34.如權(quán)利要求30所述的設(shè)備,其中所述CPU適于在所述CPU完成一工作單元后詢問(wèn)所述GPU。
35.如權(quán)利要求34所述的設(shè)備,其中所述CPU適于在所述詢問(wèn)的結(jié)果指示所述GPU尚未停止處理所述GPU所開(kāi)始的最新工作單元的情況下開(kāi)始另一工作單元。
36.如權(quán)利要求34所述的設(shè)備,其中所述GPU及CPU分別適于在所述詢問(wèn)的結(jié)果指示所述GPU已停止處理所述GPU所開(kāi)始的最新工作單元的情況下開(kāi)始另一工作單元。
37.如權(quán)利要求34所述的設(shè)備,其中所述GPU適于在所述詢問(wèn)的結(jié)果指示所述GPU已完成所述GPU所開(kāi)始的最新工作單元的情況下開(kāi)始另一工作單元。
38.如權(quán)利要求30所述的設(shè)備,其中所述CPU適于計(jì)算所述GPU所處理的所述工作單元中的至少一些單元的光線圖元交叉。
39.如權(quán)利要求29所述的設(shè)備,其中所述可編程GPU被并入下列系統(tǒng)中的至少一者中一桌上型計(jì)算機(jī)、一移動(dòng)式計(jì)算機(jī)、一游戲控制臺(tái)、一手持式裝置、一無(wú)線通信裝置、一聯(lián)網(wǎng)裝置、一顯示系統(tǒng)、一母板、一圖形卡及一集成電路芯片。
40.一種設(shè)備,其包括一第一處理裝置,其耦接至一第二處理裝置,所述第二處理裝置包括一圖形處理裝置;所述第一裝置及所述第二裝置適于形成各自能夠至少部分地由所述第一裝置及所述第二裝置處理的單獨(dú)工作單元的一雙端隊(duì)列;所述第一及第二裝置進(jìn)一步適于從所述隊(duì)列的各自端選擇工作單元。
41.如權(quán)利要求40所述的設(shè)備,其中所述第一裝置進(jìn)一步適于詢問(wèn)所述第二裝置。
42.如權(quán)利要求41所述的設(shè)備,其中所述第一裝置適于以大致預(yù)定的時(shí)間間隔詢問(wèn)所述第二裝置。
43.如權(quán)利要求41所述的設(shè)備,其中所述第一裝置適于在某一至少部分地基于對(duì)所述第二裝置所開(kāi)始的最新工作單元的處理量的時(shí)間處詢問(wèn)所述第二裝置。
44.如權(quán)利要求41所述的設(shè)備,其中所述第一裝置適于在不同的時(shí)間處詢問(wèn)所述第二裝置。
45.如權(quán)利要求41所述的設(shè)備,其中所述第一裝置適于在所述第一裝置完成一工作單元后詢問(wèn)所述第二裝置。
46.如權(quán)利要求45所述的設(shè)備,其中所述第一裝置適于在所述詢問(wèn)的結(jié)果指示所述第二裝置尚未停止處理所述第二裝置所開(kāi)始的最新工作單元的情況下開(kāi)始另一工作單元。
47.如權(quán)利要求45所述的設(shè)備,其中所述第一及第二裝置分別適于在所述詢問(wèn)的結(jié)果指示所述第二裝置已停止處理所述第二裝置所開(kāi)始的最新工作單元的情況下開(kāi)始另一工作單元。
48.如權(quán)利要求45所述的設(shè)備,其中所述第二裝置適于在所述詢問(wèn)的結(jié)果指示所述第二裝置已完成所述第二裝置所開(kāi)始的最新工作單元的情況下開(kāi)始另一工作單元。
49.如權(quán)利要求41所述的設(shè)備,其中所述第一裝置適于計(jì)算所述第二裝置所處理的所述工作單元中的至少一些單元的光線圖元交叉。
50.如權(quán)利要求40所述的設(shè)備,其中所述第二裝置包括一可編程GPU。
51.如權(quán)利要求50所述的設(shè)備,其中所述可編程GPU被并入下列系統(tǒng)中的至少一者一桌上型計(jì)算機(jī)、一移動(dòng)式計(jì)算機(jī)、一游戲控制臺(tái)、一手持式裝置、一無(wú)線通信裝置、一聯(lián)網(wǎng)裝置、一顯示系統(tǒng)、一母板、一圖形卡及一集成電路芯片。
52.一種使用一可編程GPU來(lái)減少光線圖元交叉計(jì)算數(shù)量的方法,其包括在所述可編程GPU上計(jì)算多個(gè)光線與限界至少一個(gè)圖形目標(biāo)的一組表面之間的交叉。
53.如權(quán)利要求52所述的方法,其中所述至少一個(gè)圖形目標(biāo)包括多個(gè)圖形目標(biāo)。
54.如權(quán)利要求53所述的方法,其中并行實(shí)施所述計(jì)算。
55.如權(quán)利要求54所述的方法,其中由一可編程像素著色器實(shí)施所述并行計(jì)算。
56.如權(quán)利要求55所述的方法,其中所述可編程像素著色器使用其中維數(shù)中的一者為二的倍數(shù)的一像素陣列來(lái)計(jì)算所述交叉。
57.如權(quán)利要求53所述的方法,其中所述限界表面中的至少一些表面包括凸?fàn)畋砻妗?br>
58.如權(quán)利要求57所述的方法,其中所述一組限界凸?fàn)畋砻嬷械闹辽僖恍┍砻姘ㄒ幌藿缈颉?br>
59.如權(quán)利要求53所述的方法,其中所述一組限界表面是分級(jí)的。
60.如權(quán)利要求53所述的方法,且進(jìn)一步包括在一CPU上至少部分地根據(jù)所述CPU所計(jì)算的交叉而計(jì)算所述多個(gè)光線中的至少一些光線與所述多個(gè)圖形目標(biāo)中的至少一些圖形目標(biāo)之間的交叉。
61.如權(quán)利要求60所述的方法,且進(jìn)一步包括在所述GPU計(jì)算與所述CPU計(jì)算之間進(jìn)行負(fù)載均衡。
62.如權(quán)利要求53所述的方法,且進(jìn)一步包括在所述CPU上計(jì)算另外多個(gè)光線與另外多個(gè)圖形目標(biāo)之間的交叉;及在所述GPU計(jì)算與所述CPU計(jì)算之間進(jìn)行負(fù)載均衡。
63.如權(quán)利要求52所述的方法,其中光線的數(shù)量為二的倍數(shù)。
64.如權(quán)利要求63所述的方法,其中光線的數(shù)量為10且限界表面的數(shù)量為8。
65.如權(quán)利要求52所述的方法,其中所述至少一個(gè)圖形目標(biāo)包括一組圖元,且其中所述圖元各自包括一四邊形。
66.一種物件,其包括上面存儲(chǔ)有指令的一存儲(chǔ)媒體,所述指令在被執(zhí)行時(shí)促成按下述方式實(shí)施一種通過(guò)使用一可編程GPU減少光線圖元交叉計(jì)算的數(shù)量來(lái)進(jìn)行光線跟蹤的方法在所述可編程GPU上計(jì)算多個(gè)光線與限界至少一個(gè)圖形目標(biāo)的一組表面之間的交叉。
67.如權(quán)利要求66所述的物件,其中所述至少一個(gè)圖形目標(biāo)包括多個(gè)圖形目標(biāo)。
68.如權(quán)利要求67所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成并行實(shí)施計(jì)算。
69.如權(quán)利要求68所述的物件,其中所述并行計(jì)算由一可編程像素著色器實(shí)施。
70.如權(quán)利要求69所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成所述可編程像素著色器使用其中維數(shù)中的一者為二的倍數(shù)的一像素陣列來(lái)計(jì)算所述交叉。
71.如權(quán)利要求67所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成所述限界表面中的至少一些表面包括凸?fàn)畋砻妗?br>
72.如權(quán)利要求71所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成所述一組限界凸?fàn)顟B(tài)表面中的至少一些表面包括一限界框。
73.如權(quán)利要求67所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成所述一組限界表面為分級(jí)的。
74.如權(quán)利要求67所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成在一GPU上至少部分地根據(jù)所述GPU所計(jì)算的交叉來(lái)計(jì)算所述多個(gè)光線中的至少一些光線與所述多個(gè)圖形目標(biāo)中的至少一些圖形目標(biāo)之間的交叉。
75.如權(quán)利要求74所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成在所述GPU計(jì)算與所述GPU計(jì)算之間進(jìn)行負(fù)載均衡。
76.如權(quán)利要求67所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成在所述CPU上計(jì)算另外多個(gè)光線與另外多個(gè)圖形目標(biāo)之間的交叉;及在所述GPU計(jì)算與所述CPU計(jì)算之間進(jìn)行負(fù)載均衡。
77.如權(quán)利要求66所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成光線的數(shù)量為二的倍數(shù)。
78.如權(quán)利要求77所述的物件,其中所述指令在被執(zhí)行時(shí)進(jìn)一步促成光線的數(shù)量為10且限界表面的數(shù)量為8。
79.如權(quán)利要求66所述的物件,其中所述至少一個(gè)圖形目標(biāo)包括一組圖元,且其中所述圖元各自包括一四邊形。
80.一種設(shè)備,其包括一圖形管線;所述圖形管線適于通過(guò)在所述圖形管線上計(jì)算多個(gè)光線與限界至少一個(gè)圖形目標(biāo)的一組表面之間的交叉來(lái)減少用于光線跟蹤的光線圖元交叉計(jì)算的數(shù)量。
81.如權(quán)利要求80所述的設(shè)備,其中所述圖形管線被并入一可編程GPU中。
82.如權(quán)利要求81所述的設(shè)備,其中所述至少一個(gè)圖形目標(biāo)包括多個(gè)圖形目標(biāo)。
83.如權(quán)利要求82所述的設(shè)備,其中所述可編程GPU適于并行實(shí)施所述計(jì)算。
84.如權(quán)利要求83所述的設(shè)備,其中所述可編程GPU適于使用一可編程像素著色器來(lái)實(shí)施所述并行計(jì)算。
85.如權(quán)利要求84所述的設(shè)備,其中所述可編程像素著色器適于使用其中維數(shù)中的一者為二的倍數(shù)的一像素陣列憑借一片段程序來(lái)計(jì)算所述交叉。
86.如權(quán)利要求82所述的設(shè)備,其中所述可編程GPU適于使所述限界表面中的至少一些表面包括凸?fàn)畋砻妗?br>
87.如權(quán)利要求86所述的設(shè)備,其中所述可編程GPU適于使所述一組限界凸?fàn)畋砻嬷械闹辽僖恍┍砻姘ㄒ幌藿缈颉?br>
88.如權(quán)利要求82所述的設(shè)備,其中所述可編程GPU適于使所述一組限界表面為分級(jí)的。
89.如權(quán)利要求82所述的設(shè)備,其進(jìn)一步包括CPU;其中所述CPU適于至少部分地根據(jù)所述GPU所計(jì)算的交叉來(lái)計(jì)算所述多個(gè)光線中的至少一些光線與所述多個(gè)圖形目標(biāo)中的至少一些圖形目標(biāo)之間的交叉。
90.如權(quán)利要求89所述的設(shè)備,其中所述處理器適于在GPU計(jì)算與CPU計(jì)算之間進(jìn)行負(fù)載均衡。
91.如權(quán)利要求82所述的設(shè)備,且進(jìn)一步包括一CPU;其中所述CPU適于計(jì)算另外多個(gè)光線與另外多個(gè)圖形目標(biāo)之間的交叉;且其中所述處理器適于在GPU計(jì)算與CPU計(jì)算之間進(jìn)行負(fù)載均衡。
92.如權(quán)利要求81所述的設(shè)備,其中所述可編程GPU適于使光線的數(shù)量為二的倍數(shù)。
93.如權(quán)利要求92所述的設(shè)備,其中所述可編程GPU適于使光線的數(shù)量為10且限界表面的數(shù)量為8。
94.如權(quán)利要求82所述的設(shè)備,其中所述可編程GPU被并入下列系統(tǒng)中的至少一者中一桌上型計(jì)算平臺(tái)、一移動(dòng)式計(jì)算機(jī)、一游戲控制臺(tái)、一手持式裝置、一無(wú)線通信裝置、一聯(lián)網(wǎng)裝置、一顯示系統(tǒng)、一母板、一圖形卡及一集成電路芯片。
95.一種設(shè)備,其包括一第一處理裝置,其耦接至一第二處理裝置,所述第二處理裝置包括一圖形處理裝置;所述第二圖形處理裝置進(jìn)一步適于通過(guò)在所述圖形處理裝置上計(jì)算多個(gè)光線與限界至少一個(gè)圖形目標(biāo)的一組表面之間的交叉來(lái)減少用于光線跟蹤的光線圖元交叉計(jì)算的數(shù)量。
96.如權(quán)利要求95所述的設(shè)備,其中所述圖形處理裝置被并入一可編程GPU中。
97.如權(quán)利要求95所述的設(shè)備,其中所述至少一個(gè)圖形目標(biāo)包括多個(gè)圖形目標(biāo)。
98.如權(quán)利要求97所述的設(shè)備,其中所述圖形處理裝置適于并行實(shí)施所述計(jì)算。
99.如權(quán)利要求98所述的設(shè)備,其中所述圖形處理裝置適于使用一可編程像素著色器來(lái)實(shí)施所述并行計(jì)算。
100.如權(quán)利要求99所述的設(shè)備,其中所述可編程像素著色器適于使用其中所述維數(shù)中的一者為二的倍數(shù)的一像素陣列憑借一片段程序來(lái)計(jì)算所述交叉。
101.如權(quán)利要求97所述的設(shè)備,其中所述圖形處理裝置適于使所述限界表面中的至少一些表面包括凸?fàn)畋砻妗?br>
102.如權(quán)利要求101所述的設(shè)備,其中所述圖形處理裝置適于使所述一組限界凸?fàn)畋砻嬷械闹辽僖恍┍砻姘ㄏ藿缈颉?br>
103.如權(quán)利要求97所述的設(shè)備,其中所述圖形處理裝置適于使所述一組限界表面為分級(jí)的。
104.如權(quán)利要求97所述的設(shè)備,其中所述第一處理裝置包括一CPU;其中所述CPU適于至少部分地根據(jù)所述圖形處理裝置所計(jì)算的交叉來(lái)計(jì)算所述多個(gè)光線中的至少一些光線與所述多個(gè)圖形目標(biāo)中的至少一些圖形目標(biāo)之間的交叉。
105.如權(quán)利要求104所述的設(shè)備,其中所述圖形處理裝置包括一可編程GPU,且其中所述處理器適于在GPU計(jì)算與CPU計(jì)算之間進(jìn)行負(fù)載均衡。
106.如權(quán)利要求96所述的設(shè)備,其中所述第一處理裝置包括一CPU;其中所述CPU適于計(jì)算另外多個(gè)光線與另外多個(gè)圖形目標(biāo)之間的交叉;且其中所述處理器適于在GPU計(jì)算與CPU計(jì)算之間進(jìn)行負(fù)載均衡。
107.如權(quán)利要求96所述的設(shè)備,其中所述可編程GPU適于使光線的數(shù)量為二的倍數(shù)。
108.如權(quán)利要求107所述的設(shè)備,其中所述可編程GPU適于使光線的數(shù)量為10且限界表面的數(shù)量為8。
109.如權(quán)利要求96所述的設(shè)備,其中所述可編程GPU被并入下列系統(tǒng)中的至少一者中一桌上型計(jì)算平臺(tái)、一移動(dòng)式計(jì)算機(jī)、一游戲控制臺(tái)、一手持式裝置、一無(wú)線通信裝置、一聯(lián)網(wǎng)裝置、一顯示系統(tǒng)、一母板、一圖形卡及一集成電路芯片。
全文摘要
本文闡述用于對(duì)兩個(gè)處理器,例如對(duì)用于圖形及/或視頻處理的兩個(gè)處理器進(jìn)行負(fù)載均衡的方法、設(shè)備、裝置及/或系統(tǒng)的實(shí)施例。
文檔編號(hào)G06F15/16GK101091175SQ200580031001
公開(kāi)日2007年12月19日 申請(qǐng)日期2005年9月16日 優(yōu)先權(quán)日2004年9月16日
發(fā)明者丹尼爾·埃利奧特·韋克斯勒, 拉里·I·格里茨, 埃里克·B·恩德?tīng)栴D, 卡斯·W·埃弗里特 申請(qǐng)人:輝達(dá)公司