專利名稱:使用圖形處理進(jìn)行粒子操作的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)圖形領(lǐng)域,具體而言,涉及對(duì)大量圖形數(shù)據(jù)進(jìn) 行處理的方法和裝置。
背景技術(shù):
近年來(lái),由于刀片(cutting-edge)計(jì)算機(jī)應(yīng)用變得越來(lái)越復(fù)雜, 而且對(duì)處理系統(tǒng)的要求不斷提高,從而對(duì)處理數(shù)據(jù)吞吐的更快計(jì)算機(jī) 的需求不斷提升,由于圖形應(yīng)用在相對(duì)較短時(shí)期需要進(jìn)行大量數(shù)據(jù)訪 問(wèn)、數(shù)據(jù)計(jì)算和數(shù)據(jù)操作以實(shí)現(xiàn)所需視覺(jué)效果,從而,它屬于對(duì)處理 系統(tǒng)要求最高的應(yīng)用。實(shí)時(shí)、多媒體應(yīng)用也對(duì)處理系統(tǒng)具有較高要求; 當(dāng)然,它們需要極快的處理速度,例如,每秒數(shù)千兆位的數(shù)據(jù)。
例如,對(duì)在三維(3D)空間中移動(dòng)的大量小對(duì)象(例如,雨滴、 雪花、彈起的球等)的模擬,在每幀中就涉及確定每個(gè)對(duì)象的空間位 置變化、執(zhí)行3D/2D變換、多邊形化和繪制對(duì)象以便在顯示屏上顯示 的步驟。為實(shí)現(xiàn)滿意的視覺(jué)效果,通常以約30Hz(例如,約33毫秒/ 幀)的幀速率繪制圖形數(shù)據(jù),以便向人眼呈現(xiàn)出實(shí)時(shí)平滑的運(yùn)動(dòng)。進(jìn) 行這樣實(shí)時(shí)運(yùn)動(dòng)對(duì)象模擬所需的大量計(jì)算對(duì)計(jì)算機(jī)處理系統(tǒng)提出了較 高要求。
某些處理系統(tǒng)采用單個(gè)處理器達(dá)到快速處理速度,而其它系統(tǒng)則 使用多處理器體系結(jié)構(gòu)實(shí)現(xiàn)。在多處理器系統(tǒng)中,多個(gè)子處理器能夠 并行(或至少同時(shí))操作,以實(shí)現(xiàn)預(yù)期處理效果。此外,還考慮在多 處理系統(tǒng)中采用模塊化結(jié)構(gòu),其中,計(jì)算模塊可通過(guò)寬帶網(wǎng)絡(luò)(例如 Internet)訪問(wèn),計(jì)算模塊可在許多用戶之間進(jìn)行共享。關(guān)于該模塊化 結(jié)構(gòu)的細(xì)節(jié)可參看美國(guó)專利No. 6,526,491 ,其全部?jī)?nèi)容在此引作參考。
某些多處理系統(tǒng)采用單指令多數(shù)據(jù)(SIMD)處理體系結(jié)構(gòu)來(lái)提
高處理呑吐量。然而,即便通過(guò)SIMD處理系統(tǒng),對(duì)106或更多對(duì)象 的實(shí)時(shí)模擬也可能是不夠的。因此,在本領(lǐng)域中需要對(duì)圖形數(shù)據(jù)進(jìn)行處理的新方法和裝置,其 能夠處理與大量圖形對(duì)象有關(guān)的圖形數(shù)據(jù),以便實(shí)現(xiàn)實(shí)時(shí)模擬效果。發(fā)明內(nèi)容根據(jù)本發(fā)明的一個(gè)或多個(gè)方面,有效執(zhí)行對(duì)在每個(gè)幀中多個(gè)對(duì)象 的任何位置變化的計(jì)算,特別是當(dāng)在空間中具有數(shù)量可觀(例如,1 百萬(wàn)或更多)的對(duì)象時(shí)。即便當(dāng)采用SIMD并行處理環(huán)境時(shí),本發(fā)明 的各方面也允許對(duì)對(duì)象數(shù)據(jù)在并行處理器之間如何分配和/或在存儲(chǔ) 器中如何存儲(chǔ)對(duì)象數(shù)據(jù)進(jìn)行控制。例如,可將3D空間的對(duì)象劃分成多個(gè)子空間(或桶),其中, 每個(gè)桶包含一定數(shù)量的對(duì)象。在每個(gè)幀中,每個(gè)并行處理器讀入特定 桶的對(duì)象數(shù)據(jù)(初始位置、速度、力、顏色等),并執(zhí)行在該桶內(nèi)的 對(duì)象運(yùn)動(dòng)和/或碰撞計(jì)算(例如,使用Euler方程)。當(dāng)每個(gè)處理器完 成桶的計(jì)算時(shí),將數(shù)據(jù)(例如,最終位置、最終速度、顏色等)寫回 到存儲(chǔ)器中,并對(duì)下一個(gè)桶進(jìn)行處理。優(yōu)選地,每個(gè)處理器使用"雙緩沖器"技術(shù)對(duì)存儲(chǔ)器讀取和寫入數(shù) 據(jù),以便隱藏桶之間的DMA訪問(wèn)時(shí)延。此外,優(yōu)選地根據(jù)周期時(shí)間 (幀速率)、讀取周期/字節(jié)、寫入周期/字節(jié)、計(jì)算周期/字節(jié)和本地 存儲(chǔ)存儲(chǔ)器尺寸來(lái)選擇將桶的尺寸。優(yōu)選地按照與在3D空間中粒子位置相符的順序,將粒子數(shù)據(jù)存 儲(chǔ)在系統(tǒng)存儲(chǔ)器中。例如,在系統(tǒng)存儲(chǔ)器內(nèi),將在特定桶中的所有粒 子彼此鄰近地存儲(chǔ)。這提高了在處理器的系統(tǒng)存儲(chǔ)器與本地存儲(chǔ)器之 間可進(jìn)行數(shù)據(jù)傳送(例如,DMA傳送)的效率。此外,當(dāng)采用SIMD 體系結(jié)構(gòu)時(shí),優(yōu)選地將各種對(duì)象數(shù)據(jù)(例如,位置數(shù)據(jù)、速度數(shù)據(jù)、 力數(shù)據(jù)等)按照彼此鄰近的方式分組(或矢量化),以便符合處理器 的SIMD能力。例如,如果處理器在一個(gè)指令中可執(zhí)行四個(gè)數(shù)據(jù)單元, 則優(yōu)選地以彼此鄰近的方式存儲(chǔ)四個(gè)位置數(shù)據(jù)單元、四個(gè)速度數(shù)據(jù)單
元和四個(gè)力數(shù)據(jù)單元等,以提高SIMD處理速度。當(dāng)對(duì)對(duì)象數(shù)據(jù)進(jìn)行操作之后,優(yōu)選地按照如上所述位置將數(shù)據(jù)寫 入系統(tǒng)存儲(chǔ)器中,所述位置可能根據(jù)該幀的對(duì)象的最終位置需進(jìn)行重 新組織。根據(jù)本發(fā)明的一個(gè)或多個(gè)方面,所提供的方法和裝置用于將三 維(3D)圖形空間內(nèi)的對(duì)象分成多個(gè)對(duì)象集,每個(gè)對(duì)象集處在3D空 間內(nèi)的相應(yīng)子空間中;基于每個(gè)對(duì)象的初始圖形數(shù)據(jù),計(jì)算對(duì)象集的 每個(gè)對(duì)象的最終圖形數(shù)據(jù),其中,使用多處理器系統(tǒng)的多個(gè)處理器中 的相應(yīng)處理器,執(zhí)行對(duì)于每個(gè)對(duì)象集的相應(yīng)計(jì)算;對(duì)于多個(gè)圖像幀的 每個(gè),使用源自前一圖像幀的最終圖形數(shù)據(jù)作為當(dāng)前圖像幀的初始圖 形數(shù)據(jù),重復(fù)上述步驟。給定對(duì)象的最終圖形數(shù)據(jù)計(jì)算可包括根據(jù)對(duì)象的初始位置數(shù)據(jù) 和以下各項(xiàng)中的至少之一來(lái)計(jì)算將對(duì)象的最終位置數(shù)據(jù)源自速度數(shù) 據(jù)的對(duì)象初始速度、源自力數(shù)據(jù)的對(duì)象初始力和源自質(zhì)量數(shù)據(jù)的對(duì)象 初始質(zhì)量??蛇x地,或作為補(bǔ)充,給定對(duì)象的最終圖形數(shù)據(jù)的計(jì)算可 包括關(guān)于對(duì)象與另一對(duì)象是否碰撞的計(jì)算。優(yōu)選地,將對(duì)象分組成3D空間的子空間內(nèi)的對(duì)象集的步驟包括 當(dāng)最終圖形數(shù)據(jù)的計(jì)算表明一個(gè)或多個(gè)對(duì)象具有落在它們的初始子空 間外部的最終位置數(shù)據(jù)時(shí),將至少某些對(duì)象進(jìn)行重新分組。該方法和裝置還可用于將對(duì)象的最終圖形數(shù)據(jù)存儲(chǔ)在與多個(gè)處 理器連接的系統(tǒng)存儲(chǔ)器中;以及按照與對(duì)象集和子空間相對(duì)應(yīng)的方式, 對(duì)系統(tǒng)存儲(chǔ)器內(nèi)的最終圖形數(shù)據(jù)進(jìn)行分組。優(yōu)選地,當(dāng)最終圖形數(shù)據(jù) 的計(jì)算表明一個(gè)或多個(gè)對(duì)象具有落在它們的初始子空間外部的最終位 置數(shù)據(jù)時(shí),在系統(tǒng)存儲(chǔ)器內(nèi)將最終圖形數(shù)據(jù)進(jìn)行重新分組。根據(jù)本發(fā)明的一個(gè)或多個(gè)其它方面,處理器可用于對(duì)系統(tǒng)存儲(chǔ)器 進(jìn)行按塊數(shù)據(jù)讀/寫,每個(gè)塊是系統(tǒng)存儲(chǔ)器中的連續(xù)區(qū)域。例如,進(jìn)行 以下至少之一的操作(i)將所有位置數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的相應(yīng)一個(gè) 或多個(gè)連續(xù)塊中;(ii)將所有力數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的相應(yīng)一個(gè)或多 個(gè)連續(xù)塊中;(iii)將所有速度數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的相應(yīng)一個(gè)或多個(gè)
連續(xù)塊中;以及(iv)將所有顏色數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的相應(yīng)一個(gè)或多 個(gè)連續(xù)塊中。可選地,進(jìn)行以下至少之一的搮作將給定對(duì)象的所有圖形數(shù)據(jù) 存儲(chǔ)在系統(tǒng)存儲(chǔ)器的同一塊中;將多個(gè)對(duì)象的所有圖形數(shù)據(jù)存儲(chǔ)在系 統(tǒng)存儲(chǔ)器的同一塊或連續(xù)塊中;將給定對(duì)象集的所有圖形數(shù)據(jù)存儲(chǔ)在 系統(tǒng)存儲(chǔ)器的同一塊或連續(xù)塊中。此外,可將給定對(duì)象的所有圖形數(shù) 據(jù)順序存儲(chǔ)在系統(tǒng)存儲(chǔ)器的同 一塊中。可選地,處理器可用于執(zhí)行單指令多數(shù)據(jù)(SIMD)計(jì)算,多數(shù) 據(jù)計(jì)算的數(shù)量為N;以及將具有N個(gè)對(duì)象的各個(gè)集合的至少某些圖形 數(shù)據(jù)順序存儲(chǔ)在系統(tǒng)存儲(chǔ)器中的同一塊內(nèi)。優(yōu)選地,將具有N個(gè)對(duì)象 的各個(gè)集合的位置數(shù)據(jù)、力數(shù)據(jù)、速度數(shù)據(jù)、顏色數(shù)據(jù)和質(zhì)量數(shù)據(jù)中 的至少之一,順序存儲(chǔ)在系統(tǒng)存儲(chǔ)器的同一塊內(nèi)。該方法和裝置優(yōu)選地還用于當(dāng)處理器變得可用時(shí),使用所述處 理器從系統(tǒng)存儲(chǔ)器讀取和處理子空間的對(duì)象集的圖形數(shù)據(jù)。此處,結(jié)合附圖,通過(guò)關(guān)于本發(fā)明的描述,將能夠明白本發(fā)明的 其它方面、特征、優(yōu)點(diǎn)等。
出于說(shuō)明本發(fā)明各方面的目的,在附圖中顯示出優(yōu)選實(shí)施方式。 然而應(yīng)該理解。本發(fā)明并不局限于所示的具體設(shè)置和實(shí)施方式。圖l所示視圖表示用于根據(jù)本發(fā)明一個(gè)或多個(gè)實(shí)施例對(duì)對(duì)象運(yùn)動(dòng) 進(jìn)行模擬的計(jì)算機(jī)模型;圖2的流程圖表示,根據(jù)本發(fā)明一個(gè)或多個(gè)實(shí)施例,對(duì)如圖1所 示對(duì)象進(jìn)行操作的處理步驟;圖3的框圖表示具有能夠執(zhí)行圖2所示處理步驟的兩個(gè)或多個(gè)子 處理器的多處理系統(tǒng)的結(jié)構(gòu);圖4的框圖表示,根據(jù)本發(fā)明的一個(gè)或多個(gè)方面,采用SIMD技 術(shù)的可選計(jì)算機(jī)體系結(jié)構(gòu);圖5的框圖表示,根據(jù)本發(fā)明的一個(gè)或多個(gè)其它實(shí)施例,圖4所 示系統(tǒng)的示例性子處理單元(SPU)的結(jié)構(gòu);圖6的框圖表示,根據(jù)本發(fā)明的一個(gè)或多個(gè)其它實(shí)施例,圖4所 示系統(tǒng)的處理單元(PU)的結(jié)構(gòu);圖7表示,根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,在圖3和/或圖4所示計(jì)算機(jī)系統(tǒng)的系統(tǒng)存儲(chǔ)器中,如何對(duì)圖形數(shù)據(jù)進(jìn)行組織;圖8表示,根據(jù)本發(fā)明的一個(gè)或多個(gè)其它實(shí)施例,在圖3和/或 圖4所示計(jì)算機(jī)系統(tǒng)的系統(tǒng)存儲(chǔ)器中,如何對(duì)圖形數(shù)據(jù)進(jìn)行組織的可選方法;圖9表示,根據(jù)本發(fā)明的一個(gè)或多個(gè)其它實(shí)施例,在圖3和/或 圖4所示計(jì)算機(jī)系統(tǒng)的系統(tǒng)存儲(chǔ)器中,如何對(duì)圖形數(shù)據(jù)進(jìn)行組織的另 一可選方法;以及圖10表示,根據(jù)本發(fā)明的一個(gè)或多個(gè)其它實(shí)施例,使用圖3和/ 或圖4所示計(jì)算機(jī)系統(tǒng)對(duì)圖形數(shù)據(jù)進(jìn)行的并行處理。
具體實(shí)施方式
本發(fā)明有利地提供了用于對(duì)與圖形對(duì)象(尤其是大量對(duì)象,例如, 約106之多或更多)相關(guān)的圖形數(shù)據(jù)進(jìn)行處理(例如,實(shí)現(xiàn)計(jì)算機(jī)模 擬)的方法和裝置。例如,這樣對(duì)象可為雨滴、雪花等,其數(shù)量可為 數(shù)千、數(shù)十萬(wàn)、數(shù)百萬(wàn)以及更多,這取決于具體模擬和對(duì)象被放置在 的3D空間。此處,可將這些以及類似運(yùn)動(dòng)的對(duì)象稱為粒子(particle )。圖1所示視圖100表示用于根據(jù)本發(fā)明一個(gè)或多個(gè)實(shí)施例對(duì)3D 空間104中運(yùn)動(dòng)對(duì)象102進(jìn)行模擬的計(jì)算機(jī)模型。3D空間104示意性 地具有寬度106、高度108和深度110,并被劃分成多個(gè)(N個(gè))單獨(dú) 子空間或桶112。在所示實(shí)施例中,3D空間104示意性地包括四個(gè)塊 (pane) 114,每個(gè)這樣的塊具有36個(gè)桶112,所有桶都具有同一尺 寸。在可選實(shí)施例中,3D空間104可具有任意數(shù)量的塊,塊可具有任 意數(shù)量的桶。此外,桶112的尺寸還可根據(jù)具體應(yīng)用而變化。根據(jù)一個(gè)或多個(gè)示例性實(shí)施例,在任意時(shí)刻,可將每個(gè)對(duì)象102 定義成具有質(zhì)量(或重量)M、具體尺寸、顏色屬性L (RGB,"、 速度V(x,y,z),施加在其上的力F(x,y,z)和/或空間位置P(x,y,z)。此處, x, y和z表示直角迪卡爾坐標(biāo),縮寫RGB通常涉及標(biāo)準(zhǔn)(紅/綠/藍(lán)) 顏色方案,4表示對(duì)象102的視覺(jué)圖像的強(qiáng)度。應(yīng)該理解,在不偏離 本發(fā)明精神和范圍的條件下,也可采用其它坐標(biāo)系,以及可采用其它 顏色約定。在所示實(shí)施例中,對(duì)象102示意性地具有同一質(zhì)量和尺寸。然而, 在其它實(shí)施例(未示出)中,可部分或完全地去除這樣的限制。例如, 可對(duì)至少一部分給定對(duì)象102指定單獨(dú)特性(例如,尺寸或質(zhì)量)。 此外,對(duì)象102可有選擇性地與其它特性(諸如時(shí)間、表面硬度等) 相關(guān)聯(lián)。因此,為了對(duì)具有這樣特性的對(duì)象進(jìn)行模擬,可能需要更多 的計(jì)算資源和更多存儲(chǔ)器。根據(jù)本發(fā)明的一個(gè)或多個(gè)方面,基于每個(gè)對(duì)象104的初始圖形數(shù) 據(jù),計(jì)算在3D空間104中每個(gè)對(duì)象102的最終圖形數(shù)據(jù)。優(yōu)選地逐 幀執(zhí)行這樣的計(jì)算,使得可繪制和顯示圖形數(shù)據(jù),以提供在空間104 內(nèi)對(duì)象102的實(shí)時(shí)運(yùn)動(dòng)的表現(xiàn)。在許多應(yīng)用中,幀持續(xù)期優(yōu)選地約為 1/30秒。在幀中,每個(gè)桶112可包括同時(shí)處在3D空間104中的對(duì)象 102總量中的任何部分。因此,在連續(xù)幀中,桶112可包括數(shù)量相同 或不同的對(duì)象102,這是由于某些對(duì)象102能夠移入或移出任何桶112。根據(jù)本發(fā)明的一個(gè)或多個(gè)其它方面,在3D空間104中的對(duì)象102 的所計(jì)算的運(yùn)動(dòng)可導(dǎo)致在對(duì)象102之間和/或與一個(gè)或多個(gè)其它對(duì)象 (諸如壁、阻擋物,以及在空間104中可選設(shè)置的其它障礙物,圖中 未示出)之間發(fā)生一次或多次碰撞。碰撞可屬于彈性碰撞類型,或非 彈性碰撞類型。在本領(lǐng)域中,這樣類型的碰撞已知有用于描述對(duì)象102 的碰撞后軌跡的分析模型(例如,基于Euler方程或類似公式)。可 選地,碰撞可遵循有選擇性地施加在相互作用對(duì)象102上的常規(guī)(即, 特定)定律。圖2的流程圖表示,根據(jù)本發(fā)明一個(gè)或多個(gè)實(shí)施例,對(duì)圖形數(shù)據(jù) 進(jìn)行處理的方法200。圖3的框圖表示多處理系統(tǒng)250的結(jié)構(gòu),其具 有能夠執(zhí)行方法200的一個(gè)或多個(gè)部分的兩個(gè)或更多個(gè)子處理器252 和系統(tǒng)存儲(chǔ)器256。每個(gè)處理器252A-D優(yōu)選地包括相關(guān)的本地存儲(chǔ)器 254A-D,并通過(guò)總線258與主(系統(tǒng))存儲(chǔ)器256相連。盡管示例性 表示出四個(gè)處理器252,然而在不偏離本發(fā)明精神和范圍的條件下, 可使用任意數(shù)量的處理器。處理器252可通過(guò)任何已知技術(shù)來(lái)實(shí)現(xiàn), 每個(gè)處理器252可具有相同的結(jié)構(gòu)或不同的結(jié)構(gòu)。方法200開始(步驟202),進(jìn)行到步驟204,在此步驟,在3D 圖形空間104內(nèi)將對(duì)象102的圖形數(shù)據(jù)分組(組織,或分桶)成多個(gè) 對(duì)象集,每個(gè)對(duì)象集處在3D空間104內(nèi)的相應(yīng)子空間(或桶)112 中。此外,將圖形數(shù)據(jù)存儲(chǔ)在系統(tǒng)存儲(chǔ)器256中,以使得與處在相同 桶112中的對(duì)象102相對(duì)應(yīng)的圖像數(shù)據(jù)彼此鄰近地處在系統(tǒng)存儲(chǔ)器 256中。在本說(shuō)明書中,后面將參照?qǐng)D6-8,更詳細(xì)地描述用于在系統(tǒng) 存儲(chǔ)器256中組織和存儲(chǔ)對(duì)象102的圖形數(shù)據(jù)的示例性方法。目前, 優(yōu)選地實(shí)現(xiàn)以下操作就足夠了,即,將類似類型的圖形數(shù)據(jù)(例如, 位置數(shù)據(jù)P(x,y,z)、速度數(shù)據(jù)V(x,y,z)、顏色屬性數(shù)據(jù)L (RGB, 3) 等)分組并按照彼此鄰近的方式進(jìn)行存儲(chǔ),以允許對(duì)計(jì)算機(jī)系統(tǒng)250 的子處理單元252的計(jì)算能力(例如,數(shù)據(jù)處理速度)進(jìn)行最佳利用。在步驟206,輸入與對(duì)象102的初始狀態(tài)相關(guān)的圖形數(shù)據(jù)。這可 涉及將圖形數(shù)據(jù)從系統(tǒng)存儲(chǔ)器256讀出到處理器252的一個(gè)或多個(gè)本 地存儲(chǔ)器254。例如,圖形數(shù)據(jù)可包括3D空間104中每個(gè)對(duì)象102 的初始位置數(shù)據(jù)P(x,y,z)、初始速度數(shù)據(jù)V(x,y,z)和初始顏色屬性數(shù)據(jù) L (RGB,"。在步驟208,在3D空間104中對(duì)象102的初始位置數(shù)據(jù)P(x,y,z) 處,定義施加到對(duì)象102的各個(gè)初始力F(x,y,z)。將初始力數(shù)據(jù)與其余 圖形數(shù)據(jù)組合,以便繼續(xù)使用子處理器252所采用的計(jì)算技術(shù)。例如, 如在本說(shuō)明書中后面將討論的,如果子處理器252釆用SIMD技術(shù), 則圖形數(shù)據(jù)的某些組合可生成較好的結(jié)果。在步驟210,子處理器252基于初始圖形數(shù)據(jù)計(jì)算對(duì)象集的每個(gè) 對(duì)象102的最終圖形數(shù)據(jù)。例如,在給定幀中,計(jì)算在力場(chǎng)F(x,y,z) 中移動(dòng)的對(duì)象102的最終位置P(x,y,z)。更具體而言,可根據(jù)對(duì)象102
的初始位置數(shù)據(jù)和以下各項(xiàng)中的至少之一來(lái)計(jì)算對(duì)象102的最終位置 數(shù)據(jù)對(duì)象102的初始速度、對(duì)象102的力數(shù)據(jù)和對(duì)象102的初始質(zhì) 量。該計(jì)算可涉及采用分析建模方案來(lái)計(jì)算在3D空間104中對(duì)象102 的最終位置、最終速度、最終顏色、最終質(zhì)量等。此外,計(jì)算也可涉 及確定一個(gè)或多個(gè)對(duì)象102是否與3D空間104中其它對(duì)象102或其 它障礙物相碰撞。優(yōu)選地,使用多處理器系統(tǒng)250的相應(yīng)子處理器252,來(lái)執(zhí)行對(duì) 于每個(gè)對(duì)象集的相應(yīng)計(jì)算。當(dāng)然,優(yōu)選地,在不考慮相鄰子空間112 中的對(duì)象102的條件下,給定子處理器252計(jì)算出給定子空間112的 所有運(yùn)動(dòng)和/或碰撞(最終圖形數(shù)據(jù))。對(duì)于在3D空間中所有對(duì)象102 實(shí)時(shí)運(yùn)動(dòng)的這種假設(shè)導(dǎo)致顯著計(jì)算和呑吐量效率。當(dāng)給定子處理器 252已完成給定對(duì)象集(給定幀)的最終圖形數(shù)據(jù)的計(jì)算時(shí),子處理 器252有空閑動(dòng)態(tài)地獲得另 一對(duì)象集以進(jìn)行計(jì)算。作為所計(jì)算的幀中運(yùn)動(dòng)的結(jié)果,某些對(duì)象102可能移到其初始位 置所處的桶112的外部的位置,即,對(duì)象可能移到其它桶112。此外, 某些對(duì)象102可徹底離開3D空間104,這樣,進(jìn)一步的模擬可將其排 除在外。由于運(yùn)動(dòng)和/或碰撞(最終圖形數(shù)據(jù))是對(duì)于給定子空間112 來(lái)計(jì)算的,而沒(méi)有考慮相鄰子空間112中的對(duì)象102,顯著降低了計(jì) 算復(fù)雜度。當(dāng)然,在給定子空間內(nèi),沒(méi)有必要考慮從另一子空間112 進(jìn)入該子空間112的對(duì)象。從而,無(wú)需計(jì)算與從另一子空間112進(jìn)入 子空間112的對(duì)象相關(guān)的若干可能碰撞。這可大大減少計(jì)算。在步驟212,當(dāng)最終圖形數(shù)據(jù)的計(jì)算表明一個(gè)或多個(gè)對(duì)象102具 有落在其初始子空間112外部的最終位置數(shù)據(jù)時(shí),將所有對(duì)象102的 其中某些重新組成一個(gè)或多個(gè)新對(duì)象集。優(yōu)選地,這樣的重新分組按 照基本與參照步驟204所述相似的方式,觸發(fā)系統(tǒng)存儲(chǔ)器256中圖形 數(shù)據(jù)的重新組織。在步驟214,最終圖形數(shù)據(jù)中的至少某些被用于繪制在視頻顯示 器(例如,薄膜晶體管(TFT)顯示器、等離子體顯示器、陰極射線 管顯示器(CRT)、電影屏幕等)上進(jìn)行顯示的對(duì)象。這可包括對(duì)對(duì)
象102的最終位置數(shù)據(jù)的3D/2D數(shù)據(jù)轉(zhuǎn)換和多邊形化。優(yōu)選地,以足夠速率逐幀重復(fù)進(jìn)行與步驟208-214相關(guān)的操作, 以便對(duì)3D空間104內(nèi)對(duì)象102的實(shí)時(shí)運(yùn)動(dòng)進(jìn)行模擬.在此方面,應(yīng) 該理解,將源自前一幀的最終圖形數(shù)據(jù)用作為當(dāng)前幀的初始圖形數(shù)據(jù)。 從而,在判定步驟216,方法200查詢是否為所有幀或者對(duì)于特定時(shí) 間間隔繪制了最終圖形數(shù)據(jù)。如果步驟216的判定結(jié)果為否,則流程 返回到步驟208。如果步驟216的判定結(jié)果為是,則流程進(jìn)行到步驟 218,在此,流程結(jié)束。在此,將描述適于實(shí)現(xiàn)此處所述一個(gè)或多個(gè)特征的多處理器系統(tǒng) 的優(yōu)選計(jì)算機(jī)體系結(jié)構(gòu)。根據(jù)一個(gè)或多個(gè)實(shí)施例,可將多處理器系統(tǒng) 實(shí)現(xiàn)為用于富媒體應(yīng)用(例如,游戲系統(tǒng)、家庭終端、PC系統(tǒng)、服 務(wù)器系統(tǒng)和工作站)的獨(dú)立和/或分布式處理的單芯片解決方案。在某 些應(yīng)用(例如游戲系統(tǒng)和家庭終端)中,可能需要進(jìn)行實(shí)時(shí)計(jì)算。例 如,在實(shí)時(shí)分布式游戲應(yīng)用中, 一個(gè)或多個(gè)聯(lián)網(wǎng)圖像解壓縮、3D計(jì)算 機(jī)圖像、音頻生成、網(wǎng)絡(luò)通信、物理模擬和人工智能處理必須執(zhí)行得 足夠快,以便能夠?yàn)橛脩籼峁?shí)時(shí)體驗(yàn)的假象。從而,在多處理器系 統(tǒng)中的每個(gè)處理器必須在很短和可預(yù)測(cè)的時(shí)間內(nèi)完成任務(wù)。為此,根據(jù)該計(jì)算機(jī)體系結(jié)構(gòu),由公共計(jì)算模塊(或單元)構(gòu)建 出多處理計(jì)算機(jī)系統(tǒng)的所有處理器。該公共計(jì)算模塊具有一致性結(jié)構(gòu), 優(yōu)選地采用同 一指令集體系結(jié)構(gòu)。多處理計(jì)算機(jī)系統(tǒng)可由一個(gè)或多個(gè) 客戶機(jī)、服務(wù)器、PC、移動(dòng)計(jì)算機(jī)、游戲機(jī)、PDA、機(jī)頂盒、電器、 數(shù)字電視和使用計(jì)算機(jī)處理器的其它設(shè)備組成。如果需要,多個(gè)計(jì)算機(jī)系統(tǒng)也可以是網(wǎng)絡(luò)成員。 一致性模塊化結(jié) 構(gòu)使得能夠通過(guò)多處理計(jì)算機(jī)系統(tǒng)對(duì)應(yīng)用和數(shù)據(jù)進(jìn)行高效、高速處理, 如果采用網(wǎng)絡(luò)的話,則能夠通過(guò)網(wǎng)絡(luò)對(duì)應(yīng)用和數(shù)據(jù)進(jìn)行快速傳送。該 結(jié)構(gòu)還簡(jiǎn)化了多種大小和處理能力的網(wǎng)絡(luò)成員的構(gòu)建,以及由這些成 員處理的應(yīng)用程序的準(zhǔn)備。參照?qǐng)D4,基本處理模塊為處理器元件(PE) 500。 PE500包括 1/0接口 502、處理器單元(PU) 504和多個(gè)子處理單元508,即,子 處理單元508A,子處理單元508B,子處理單元508C和子處理單元 508D。本地(或內(nèi)部)PE總線512在PU 504、子處理單元508和存 儲(chǔ)器接口 511之間傳送數(shù)據(jù)和應(yīng)用程序。本地PE總線512可具有, 例如,傳統(tǒng)體系結(jié)構(gòu),或可將其實(shí)現(xiàn)為分組交換網(wǎng)絡(luò)。如果實(shí)現(xiàn)為分 組交換網(wǎng)絡(luò)的話,盡管需要更多硬件,但增大了有效帶寬。能夠使用用于實(shí)現(xiàn)數(shù)字邏輯的各種方法構(gòu)建PE 500。優(yōu)選地將 PE 500構(gòu)建成采用在硅襯底上的互補(bǔ)金屬氧化物半導(dǎo)體(CMOS )的 單個(gè)集成電路。襯底的可選材料包括砷化鎵(gallium arsinide)、砷 化鎵鋁(gallium aluminum arsinide )以及采用多種摻雜的其它所謂 III-B化合物。PE 500也可使用超導(dǎo)材料實(shí)現(xiàn),例如,使用快速單磁 通量子(RSFQ)邏輯。PE 500通過(guò)高帶寬存儲(chǔ)器連接516與共享(主)存儲(chǔ)器514緊 密相關(guān)。盡管存儲(chǔ)器514優(yōu)選地為動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM), 還可使用其它裝置將存儲(chǔ)器514實(shí)現(xiàn)為例如靜態(tài)隨機(jī)存取存儲(chǔ)器 (SRAM)、磁隨機(jī)存取存儲(chǔ)器(MRAM)、光存儲(chǔ)器、全息存儲(chǔ)器 等。PU 504和子處理單元508優(yōu)選地均與包含直接存儲(chǔ)器存取DMA 功能的存儲(chǔ)器流控制器(MFC)相連,存儲(chǔ)器流控制器(MFC)與存 儲(chǔ)器接口 511結(jié)合使用,以便于在PE 500的DRAM 514與子處理單 元508和PU 504之間的數(shù)據(jù)傳送。應(yīng)該注意,DMAC和/或存儲(chǔ)器 接口 511可相對(duì)子處理單元508和PU 504集成或獨(dú)立布置。確實(shí), DMAC功能和/或存儲(chǔ)器接口 511功能可與一個(gè)或多個(gè)(優(yōu)選地,所 有)子處理單元508和PU 504集成在一起。還應(yīng)注意,DRAM 514 可相對(duì)PE 500集成或獨(dú)立布置。例如,可如圖所示將DRAM 514進(jìn) 行片外布置,或者,可以集成方式將DRAM 514進(jìn)行片上布置。PU 504可為例如能夠?qū)?shù)據(jù)和應(yīng)用進(jìn)行單獨(dú)處理的標(biāo)準(zhǔn)處理器。 在操作中,PU 504優(yōu)選地通過(guò)子處理單元對(duì)數(shù)據(jù)和應(yīng)用程序的處理進(jìn) 行調(diào)度(schedule)和安排(orchestrate)。子處理單元優(yōu)選地為單指 令多數(shù)據(jù)(SIMD)處理器。在PU 504的控制下,子處理單元按照并
行和獨(dú)立方式對(duì)這些數(shù)據(jù)和應(yīng)用程序執(zhí)行處理。PU 504優(yōu)選地使用 PowerPC核心實(shí)現(xiàn),PowerPC核心是采用精簡(jiǎn)指令集計(jì)算(RISC) 技術(shù)的微處理器體系結(jié)構(gòu)。RISC使用簡(jiǎn)單指令的組合執(zhí)行更復(fù)雜的 指令。從而,處理器的定時(shí)可基于更簡(jiǎn)單和更快的操作,使得微處理 器以給定時(shí)鐘速度執(zhí)行更多指令。應(yīng)該注意,PU 504可使用承擔(dān)主處理單元角色的一個(gè)子處理單 元508來(lái)實(shí)現(xiàn),此處所述主處理單元通過(guò)子處理單元508對(duì)數(shù)據(jù)和應(yīng) 用程序的處理進(jìn)行調(diào)度和安排。此外,在處理器元件500內(nèi)還可實(shí)現(xiàn) 多于一個(gè)的PU。根據(jù)該模塊化結(jié)構(gòu),具體計(jì)算機(jī)系統(tǒng)所采用PE 500的數(shù)量取決 于該系統(tǒng)所需的處理能力。例如,服務(wù)器可采用四個(gè)PE500,工作站 可采用兩個(gè)PE 500, PDA可采用 一個(gè)PE 500。指定來(lái)處理特定軟件 單元的PE 500的子處理單元的數(shù)量取決于在單元內(nèi)程序和數(shù)據(jù)的復(fù) 雜度和量。圖5表示子處理單元(SPU) 508的優(yōu)選結(jié)構(gòu)和功能。SPU 508 體系結(jié)構(gòu)優(yōu)選地填補(bǔ)了通用處理器(其用于實(shí)現(xiàn)寬范圍的應(yīng)用的高平 均性能)與專用處理器(其用于實(shí)現(xiàn)單個(gè)應(yīng)用的高性能)之間的空白。 SPU 508用于實(shí)現(xiàn)游戲應(yīng)用、媒體應(yīng)用、寬帶應(yīng)用等的高性能,并對(duì) 實(shí)時(shí)應(yīng)用的編程人員提供高級(jí)別控制。SPU 508的某些功能包括圖形 幾何流水線、表面細(xì)分、快速傅里葉變換、圖像處理關(guān)鍵字、流處理、 MPEG編碼/解碼、加密、解密、設(shè)備驅(qū)動(dòng)器擴(kuò)展、建模、游戲物理技 術(shù)、內(nèi)容創(chuàng)建和音頻合成與處理。子處理單元508包括兩個(gè)基本功能單元,即,SPU核心510A和 存儲(chǔ)器流控制器(MFC) 510B。 SPU核心510A用于程序執(zhí)行,數(shù)據(jù) 操作等,而MFC510B負(fù)責(zé)系統(tǒng)的SPU核心510A與DRAM 514之間 數(shù)據(jù)傳送的功能。SPU核心510A包括本地存儲(chǔ)器550、指令單元(IU) 552、寄 存器554、 一個(gè)或多個(gè)浮點(diǎn)執(zhí)行級(jí)556和一個(gè)或多個(gè)定點(diǎn)執(zhí)行級(jí)558。 本地存儲(chǔ)器550優(yōu)選地使用單端口隨機(jī)存取存儲(chǔ)器,例如,SRAM。 然而多數(shù)處理器通過(guò)采用高速緩存來(lái)縮減存儲(chǔ)器的時(shí)延,SPU核心 510A實(shí)現(xiàn)相對(duì)較小的本地存儲(chǔ)器550,而非高速緩存。當(dāng)然,為了對(duì) 實(shí)時(shí)應(yīng)用(以及此處所提到的其它應(yīng)用)的編程人員提供一致和可預(yù) 知的存儲(chǔ)器訪問(wèn)時(shí)延,在SPU 508A內(nèi)的高速緩沖存儲(chǔ)器體系結(jié)構(gòu)并 不是優(yōu)選的。高速緩沖存儲(chǔ)器的高速緩存命中與否(hit/miss )特性導(dǎo) 致易失性存儲(chǔ)器存取時(shí)間從數(shù)周期到數(shù)百周期。這種非易失性削弱了 例如在實(shí)時(shí)應(yīng)用編程中想得到的存取定時(shí)可預(yù)測(cè)性。通過(guò)將DMA傳 送與數(shù)據(jù)計(jì)算重疊,在本地存儲(chǔ)器SRAM 550中可實(shí)現(xiàn)時(shí)延隱藏。這 為實(shí)時(shí)應(yīng)用的編程提供了高級(jí)別控制。由于與DMA傳送相關(guān)的時(shí)延 和指令開銷超出了為高速緩存命中失誤提供服務(wù)的時(shí)延和指令開銷, 當(dāng)DMA傳送尺寸足夠大且充分可預(yù)測(cè)(例如,可在需要數(shù)據(jù)之前發(fā) 出DMA命令)時(shí),SRAM本地存儲(chǔ)器方法表現(xiàn)出優(yōu)勢(shì)。運(yùn)行在其中給定一個(gè)子處理單元508上的程序使用本地地址訪問(wèn) 相關(guān)本地存儲(chǔ)器550,然而,還在總系統(tǒng)的存儲(chǔ)器映射內(nèi)為本地存儲(chǔ) 器550的每個(gè)位置指定實(shí)地址(RA)。這允許特權(quán)軟件(Privilge Software)將本地存儲(chǔ)器550映射到處理進(jìn)程的有效地址(EA, Effective Address ),以便進(jìn)行在一個(gè)本地存儲(chǔ)器550與另 一本地存儲(chǔ) 器550之間的DMA傳送。此外,PU504也能夠使用有效地址直接訪 問(wèn)本地存儲(chǔ)器550。在優(yōu)選實(shí)施例中,本地存儲(chǔ)器550包含556千字 節(jié)存儲(chǔ)空間,寄存器552的容量為128x128位。SPU核心504A優(yōu)選使用處理流水線實(shí)現(xiàn),其中,以流水線方式 對(duì)邏輯指令進(jìn)行處理。盡管可將流水線劃分成對(duì)指令進(jìn)行處理的任意 數(shù)量的級(jí)段,不過(guò)流水線通常包括,獲取一個(gè)或多個(gè)指令,將指令解 碼,檢查指令之間的依賴,發(fā)出指令,和執(zhí)行指令。在此方面,IU552 包括指令緩沖器、指令解碼電路、依賴檢查電路和指令發(fā)送電路。指令緩沖器優(yōu)選地包含與本地存儲(chǔ)器550相連接且用于臨時(shí)性存 儲(chǔ)它們所獲得指令的多個(gè)寄存器。指令緩沖器優(yōu)選地按照所有指令成 組,即基本同時(shí)離開寄存器的方式工作。盡管指令緩沖器可為任何尺 寸,優(yōu)選地,其尺寸不大于約兩個(gè)或三個(gè)寄存器。
一般而言,解碼電路將指令分解(breakdown),并生成執(zhí)行相 應(yīng)指令功能的邏輯宏操作。例如,邏輯宏操作可指定運(yùn)算和邏輯操作、 對(duì)本地存儲(chǔ)器550的加栽和存儲(chǔ)操作、寄存器源操作數(shù)和/或立即數(shù)據(jù) 操作數(shù)。解碼電路也可指示指令使用那些資源,例如,目標(biāo)寄存器地 址、結(jié)構(gòu)資源、功能單元和/或總線。解碼電路還可提供指示其中需要 資源的指令流水線級(jí)段的信息。指令解碼電路優(yōu)選地能夠基本同時(shí)將 數(shù)量等于指令緩沖器的寄存器數(shù)量的若干指令解碼。依賴檢查電路包括數(shù)字邏輯,用于執(zhí)行測(cè)試以確定給定指令的操 作數(shù)是否依賴流水線中其它指令的操作數(shù)。如果依賴,則不應(yīng)執(zhí)行給 定指令,直到更新了該其它指令為止(例如,通過(guò)允許其它指令完成 執(zhí)行)。優(yōu)選地,依賴檢查電路確定從解碼電路112同時(shí)分配的多個(gè) 指令的依賴。指令發(fā)送電路用于向浮點(diǎn)執(zhí)行級(jí)556和/或定點(diǎn)執(zhí)行級(jí)558發(fā)送指令。優(yōu)選地將寄存器554實(shí)現(xiàn)為相對(duì)較大的統(tǒng)一寄存器堆,例如,128 項(xiàng)寄存器堆。這允許在無(wú)需寄存器重命名的條件下得到深流水線化高 頻實(shí)現(xiàn)。重命名硬件通常會(huì)消耗處理系統(tǒng)中的較大部分面積和功率。 從而,當(dāng)通過(guò)軟件循環(huán)展開(software loop unrolling)或其它交錯(cuò)技 術(shù)掩蓋時(shí)延時(shí),可實(shí)現(xiàn)有益操作。優(yōu)選地,SPU核心510A屬于超標(biāo)量體系結(jié)構(gòu),使得在每個(gè)時(shí)鐘 周期中發(fā)出多于一個(gè)的指令。SPU核心510A優(yōu)選地以超標(biāo)量方式工 作,該超標(biāo)量達(dá)到與指令援沖器的同時(shí)指令分配的數(shù)量,諸如在2和 3之間(表示在每個(gè)時(shí)鐘周期發(fā)出兩個(gè)或三個(gè)指令)的數(shù)量相對(duì)應(yīng)的 程度。根據(jù)所需的處理能力,可能會(huì)采用或更多或更少的浮點(diǎn)執(zhí)行級(jí) 556和定點(diǎn)執(zhí)行級(jí)558。在優(yōu)選實(shí)施例中,浮點(diǎn)執(zhí)行級(jí)556以每秒32x109 次浮點(diǎn)操作(32GFLOPS)的速度運(yùn)行,定點(diǎn)執(zhí)行級(jí)558以每秒32xl09 次操作(32GOPS)的速度運(yùn)行。MFC510B優(yōu)選地包括總線接口單元(BIU) 564、存儲(chǔ)器管理單 元(MMU) 562和直接存儲(chǔ)器存取控制器(DMAC) 560。除DMAC
560外,MFC 510B優(yōu)選地以與SPU核心510A和總線512相比為一 半的頻率(半速)運(yùn)行,以符合低功耗設(shè)計(jì)目標(biāo)。MFC510B用于處 理從總線512進(jìn)入SPU 508的數(shù)據(jù)和指令,為DMAC提供地址轉(zhuǎn)換, 以及用于保持?jǐn)?shù)據(jù)一致性的窺探操作。BIU 564提供在總線512與 MMU 562以及DMAC 560之間的接口 。從而,將SPU 508 (包括SPU 核心510A和MFC 510B )和DMAC 560與總線512進(jìn)行物理和/或邏 輯連接。MMU 562優(yōu)選地用于將有效地址(由DMA命令獲得)轉(zhuǎn)換成 用于存儲(chǔ)器訪問(wèn)的實(shí)地址。例如,MMU 562可將有效地址的高位轉(zhuǎn) 換成實(shí)地址位。不過(guò),低地址位優(yōu)選地不可轉(zhuǎn)換的,并被視為邏輯和 物理的,以用于形成實(shí)地址以及請(qǐng)求對(duì)存儲(chǔ)器的訪問(wèn)。在一個(gè)或多個(gè) 實(shí)施例中,MMU562可基于64位存儲(chǔ)器管理模型實(shí)現(xiàn),并可提供具 有4K-, 64K-, 1M-和16M-字節(jié)頁(yè)尺寸和256MB段尺寸的264字節(jié)有 效地址空間。優(yōu)選地,MMU562用于支持高達(dá)2"字節(jié)虛擬存儲(chǔ)器和 用于DMA命令的242字節(jié)(4萬(wàn)億字節(jié))物理存儲(chǔ)器。MMU 562的 硬件可包括8項(xiàng)全關(guān)聯(lián)(fully associative ) SLB, 256項(xiàng)4路組關(guān)聯(lián)(4 way set associative) TLB和TLB的4x4置換管理表(RMT)-用于 硬件TLB命中失誤處理。DMAC 560優(yōu)選地用于對(duì)來(lái)自SPU核心510A和諸如PU 504和/ 或其它SPU的一個(gè)或多個(gè)其它設(shè)備的DMA命令進(jìn)行管理。存在有三 類DMA命令Put命令,用于將數(shù)據(jù)從本地存儲(chǔ)器550移動(dòng)到共享 存儲(chǔ)器514; Get命令,用于將數(shù)據(jù)從共享存儲(chǔ)器514移動(dòng)到本地存儲(chǔ) 器550中;以及存儲(chǔ)控制命令,包括SLI命令和同步命令。同步命令 可包括原子命令、發(fā)送信號(hào)命令和專用障礙命令。根據(jù)DMA命令, MMU 562將有效地址轉(zhuǎn)換成實(shí)地址,并將實(shí)地址轉(zhuǎn)發(fā)到BIU 564。SPU核心510A優(yōu)選地使用通道接口和數(shù)據(jù)接口與DMAC 560 內(nèi)的接口進(jìn)行通信(發(fā)送DMA命令、狀態(tài)等)。SPU核心510A通 過(guò)通道接口將DMA命令分配到DMAC 560中DMA隊(duì)列。 一旦DMA 命令處在DMA隊(duì)列中,則通過(guò)在DMAC 560內(nèi)的發(fā)送和完成邏輯對(duì)
其進(jìn)行處理。當(dāng)完成對(duì)于DMA命令的所有總線事務(wù)時(shí),將完成信號(hào) 通過(guò)通道接口向回發(fā)送到SPU核心510A。圖6表示PU504的優(yōu)選結(jié)構(gòu)和功能。PU504包括兩個(gè)基本功能 單元,PU核心504A和存儲(chǔ)器流控制器(MFC ) 504B。 PU核心504A 實(shí)現(xiàn)程序執(zhí)行、數(shù)據(jù)操作、多處理器管理功能等,而MFC504B執(zhí)行 與PU核心504A和系統(tǒng)100的存儲(chǔ)器空間之間的數(shù)據(jù)傳送相關(guān)的功 能。PU核心504A可包括一級(jí)高速緩存570、指令單元572、寄存器 574、 一個(gè)或多個(gè)浮點(diǎn)執(zhí)行級(jí)576和一個(gè)或多個(gè)定點(diǎn)執(zhí)行及578。 一級(jí) 高速緩存為通過(guò)MFC 504B從共享存儲(chǔ)器106、處理器102,或存儲(chǔ) 器空間的其它部分接收的數(shù)據(jù)提供數(shù)據(jù)緩存功能。由于優(yōu)選地將PU 核心504A實(shí)現(xiàn)為超流水線,從而優(yōu)選地將指令單元572實(shí)現(xiàn)為具有 多級(jí)(包括獲取、解碼、依賴檢查、發(fā)送等)的指令流水線。此外, PU核心504A優(yōu)選地屬于超標(biāo)量配置,從而,每個(gè)時(shí)鐘周期從指令單 元572發(fā)出多于一個(gè)的指令。為實(shí)現(xiàn)高處理能力,浮點(diǎn)執(zhí)行級(jí)576和 定點(diǎn)執(zhí)行級(jí)578在流水線配置中包括多個(gè)級(jí)。根據(jù)所需處理能力,可 采用更多或更少數(shù)量的浮點(diǎn)執(zhí)行級(jí)576和定點(diǎn)執(zhí)行級(jí)578。MFC 504B包括總線接口單元(BIU)580、 二級(jí)高速緩沖存儲(chǔ)器、 非可高速緩存單元(NCU) 584、核心接口單元(CIU) 586和存儲(chǔ)器 管理單元(MMU ) 588。多數(shù)MFC 504B以與PU核心504A和總線 108相比為一半的頻率(半速)運(yùn)行,以符合低功耗設(shè)計(jì)目標(biāo)。BIU 580提供總線108與二級(jí)高速緩存582以及NCU 584邏輯塊 之間的接口。為此,BIU580在總線108上可起到主和從設(shè)備的作用, 以執(zhí)行完全一致的存儲(chǔ)器操作。作為主設(shè)備,它可向總線108發(fā)出載 入/存儲(chǔ)請(qǐng)求,以代表二級(jí)高速緩存582和NCU 584進(jìn)行服務(wù)。BIU 580 還可實(shí)現(xiàn)命令的流控制機(jī)制,用于限制可向總線108發(fā)送命令的總數(shù) 量??蓪⒖偩€108上的數(shù)據(jù)操作設(shè)計(jì)成占八拍(beat),因此,優(yōu)選 地將BIU 580設(shè)計(jì)成約128字節(jié)高速緩存線, 一致性和同步粒度為 128KB。
優(yōu)選地將二級(jí)高速緩存存儲(chǔ)器582 (和支持硬件邏輯)設(shè)計(jì)成高 速緩存512 KB數(shù)據(jù)。例如,二級(jí)高速緩存582可處理可高速緩存載 入/存儲(chǔ),數(shù)據(jù)預(yù)取、指令獲取、指令預(yù)取、高速緩存操作和障礙操作。 二級(jí)高速緩存582優(yōu)選地為8路組關(guān)聯(lián)系統(tǒng)。二級(jí)高速緩存582可包 括與六(6)個(gè)舍去(castout)隊(duì)列(例如,六個(gè)RC機(jī))相匹配的六 個(gè)再栽入隊(duì)列,和八個(gè)(64字節(jié)寬)存儲(chǔ)隊(duì)列。二級(jí)高速緩存582可 用于提供一級(jí)高速緩存570中某些或全部數(shù)據(jù)的備份拷貝。這在對(duì)處 理節(jié)點(diǎn)進(jìn)行熱切換(hotswap )時(shí)恢復(fù)狀態(tài)比較有用。該配置還允許一 級(jí)高速緩存570以更少端口更快速地運(yùn)行,并允許進(jìn)行更快速的高速 緩存到高速緩存的傳送(由于請(qǐng)求可停止在二級(jí)高速緩存582)。該 配置還提供將高速緩存一致性管理傳遞到二級(jí)高速緩沖存儲(chǔ)器582的 機(jī)制。NCU 584與CIU 586、 二級(jí)高速緩存存儲(chǔ)器582和BIU 580相接 口 ,其通常起到用于PU核心504A和存儲(chǔ)器系統(tǒng)之間的非可高速緩 存操作的排隊(duì)/緩沖電路的作用.NCU 584優(yōu)選地負(fù)責(zé)未由二級(jí)高速緩 存582處理的與PU核心504A進(jìn)行的所有通信,例如,禁止高速緩存 的載入/存儲(chǔ)、障礙操作和高速緩存一致性操作。NCU584優(yōu)選地以半 速運(yùn)行,以符合上述功耗目標(biāo)。CIU 586設(shè)置在MFC 504B和PU核心504A的邊界,對(duì)來(lái)自執(zhí) 行級(jí)576, 578、指令單元572和MMU單元588以及去往二級(jí)高速緩 存582和NCU 584的請(qǐng)求起到路由、仲裁和流控制點(diǎn)的作用。PU核 心504A和MMU 588優(yōu)選地以全速運(yùn)行,而二級(jí)高速緩存582和NCU 584以2:1速度比運(yùn)作。從而,在CIU 586中存在頻率邊界,當(dāng)它在 兩個(gè)頻域之間轉(zhuǎn)發(fā)請(qǐng)求以及重載入數(shù)據(jù)時(shí),其一項(xiàng)功能是正確處理頻 率交叉。CIU586由三個(gè)功能塊組成載入單元、存儲(chǔ)單元和重載入單元。 此外,數(shù)據(jù)預(yù)取功能通過(guò)CIU586執(zhí)行,其優(yōu)選地是載入單元的功能 部分。CIU 586優(yōu)選地用于(i )接受來(lái)自PU核心504A和MMU 588 的載入和存儲(chǔ)請(qǐng)求;(ii)將請(qǐng)求從全速時(shí)鐘頻率轉(zhuǎn)換成半速(2:1時(shí)
鐘頻率轉(zhuǎn)換);(iii)將可高速緩存的請(qǐng)求路由到二級(jí)高速緩存582, 并將非可高速緩存的請(qǐng)求路由到NCU 584; (iv)在對(duì)二級(jí)高速緩存 582和NCU 584的請(qǐng)求之間進(jìn)行公平仲裁;和(v)針對(duì)對(duì)二級(jí)高速 緩存582和NCU 584的分配進(jìn)行流控制,使得在目標(biāo)窗口中接收請(qǐng)求 并且避免溢出;(vi)接受載入返回?cái)?shù)據(jù),并將其路由到執(zhí)行級(jí)576, 578、指令單元572,或MMU 588; (vii)將窺探請(qǐng)求路由到執(zhí)行級(jí) 576, 578、指令單元572,或MMU 588;以及(viii)將載入返回?cái)?shù) 據(jù)和窺探業(yè)務(wù)從半速轉(zhuǎn)換成全速。MMU 588優(yōu)選地提供PU核心540A的地址轉(zhuǎn)換,例如,通過(guò)二 級(jí)地址轉(zhuǎn)換設(shè)備。通過(guò)可比MMU 588小得多和更快的各自指令和數(shù) 據(jù)ERAT (對(duì)實(shí)地址轉(zhuǎn)換有效)陣列,優(yōu)選地在PU核心504A中設(shè)置 第一級(jí)轉(zhuǎn)換。在優(yōu)選實(shí)施例中,PU504運(yùn)行在4-6GHz, 10F04,并具有64位 實(shí)現(xiàn)。寄存器優(yōu)選地為64位長(zhǎng)(雖然一個(gè)或多個(gè)專用寄存器可以更 小),有效地址為64位長(zhǎng)。指令單元570、寄存器572和執(zhí)行級(jí)574 和576優(yōu)選地使用PowerPC技術(shù)實(shí)施,以實(shí)現(xiàn)(RISC )計(jì)算技術(shù)。關(guān)于該計(jì)算機(jī)系統(tǒng)的模塊化結(jié)構(gòu)的更多細(xì)節(jié)可參看美國(guó)專利No. 6,526,491,在此其全部?jī)?nèi)容引作參考。如上所述,圖4的PE 500可執(zhí)行以上參照?qǐng)D2詳細(xì)描述的方法 200。應(yīng)該注意,為了隱藏DMAC 506的訪問(wèn)時(shí)延,并且增大在重復(fù) 存儲(chǔ)器操作期間的數(shù)據(jù)處理速度(例如,對(duì)系統(tǒng)存儲(chǔ)器514或本地存 儲(chǔ)器550讀、寫數(shù)據(jù)),子處理單元508也可使用眾知的"雙緩沖器" 技術(shù)。現(xiàn)在參考圖7-9,其中表示出根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例, 在如圖3和/或圖4所示計(jì)算機(jī)系統(tǒng)的系統(tǒng)存儲(chǔ)器中對(duì)圖形數(shù)據(jù)進(jìn)行組 織的不同方式。為說(shuō)明清楚和簡(jiǎn)潔起見,將參照?qǐng)D4所示PE500和系 統(tǒng)存儲(chǔ)器514對(duì)圖7-9進(jìn)行描述。具體而言,處理器508可用于按塊 對(duì)系統(tǒng)存儲(chǔ)器514讀/寫數(shù)據(jù),每個(gè)塊作為系統(tǒng)存儲(chǔ)器514中的鄰近區(qū) 域。在美國(guó)專利No.6,526,491中對(duì)該技術(shù)進(jìn)行了詳細(xì)描述。
如圖7所示,存儲(chǔ)器514可包括若干區(qū)域404i,每個(gè)區(qū)域具有一 個(gè)或多個(gè)鄰近塊。在本發(fā)明的該實(shí)施例中,將所有力數(shù)據(jù)F(x,y,z)存儲(chǔ) 在包括存儲(chǔ)器的一個(gè)或多個(gè)鄰近塊的第一區(qū)域404A中。將所有位置 數(shù)據(jù)P(x,y,z)存儲(chǔ)在包括存儲(chǔ)器的一個(gè)或多個(gè)鄰近塊的笫二區(qū)域404B 中。將所有速度數(shù)據(jù)V(x,y,z)存儲(chǔ)在包括存儲(chǔ)器的一個(gè)或多個(gè)鄰近塊 的第三區(qū)域404C中。將所有顏色數(shù)據(jù)L存儲(chǔ)在包括存儲(chǔ)器的一個(gè)或 多個(gè)鄰近塊的第四區(qū)域404D中。通過(guò)遍歷區(qū)域404i,例如,如附圖 標(biāo)記406i所示,可定位每個(gè)對(duì)象102的圖形數(shù)據(jù)。如以上所描述的, 期望定位存儲(chǔ)器514中給定對(duì)象集或子空間112內(nèi)彼此接近的對(duì)象 102的圖形數(shù)據(jù)。如圖7所示,通過(guò)將對(duì)象集的圖形數(shù)據(jù)布置在超過(guò) 一個(gè)的區(qū)域404中,可實(shí)現(xiàn)這樣的鄰近。通過(guò)該設(shè)置,由于可使每個(gè)區(qū)域404i中未用存儲(chǔ)器位置的數(shù)量 最小化和/或使其消除,有效利用了存儲(chǔ)器514。此外,由于即便將數(shù) 據(jù)設(shè)置在不同塊中也能按對(duì)象102和按對(duì)象集將圖形數(shù)據(jù)對(duì)準(zhǔn),從而 處理器508可獲得圖形數(shù)據(jù)的速度相對(duì)較快。然而,為實(shí)現(xiàn)這些優(yōu)點(diǎn), 當(dāng)對(duì)象102移入或移出子空間112時(shí),對(duì)存儲(chǔ)器514中數(shù)據(jù)進(jìn)行組織 的應(yīng)用程序必須對(duì)所有存儲(chǔ)器空間404i中的圖形數(shù)據(jù)進(jìn)行重新組織。如圖8所示,存儲(chǔ)器514可包括多個(gè)區(qū)域408,其中,每個(gè)區(qū)域 可包括一個(gè)或多個(gè)鄰近塊。在本發(fā)明的該實(shí)施例中,在系統(tǒng)存儲(chǔ)器514 的同一區(qū)域或塊中存儲(chǔ)給定對(duì)象102的所有圖形數(shù)據(jù)(例如,F(xiàn), P, V, L)。順序存儲(chǔ)給定對(duì)象的所有圖形數(shù)據(jù),如附圖標(biāo)記410i所示。 同樣,還期望定位存儲(chǔ)器514中給定對(duì)象集或子空間112內(nèi)彼此鄰近 的對(duì)象102的圖形數(shù)據(jù)。如圖8所示,通過(guò)將對(duì)象集的圖形數(shù)據(jù)布置 在存儲(chǔ)器514中的同一區(qū)域404中,可實(shí)現(xiàn)這樣的鄰近。通過(guò)該設(shè)置,可認(rèn)為與圖7的設(shè)置相比較,存儲(chǔ)器514的使用效 率更低,這是由于在每個(gè)區(qū)域408中需要若干未用存儲(chǔ)器位置以確保 正確對(duì)準(zhǔn)。在某些多處理環(huán)境中,例如當(dāng)采用SIMD處理器508時(shí), 使處理器508獲得和處理圖形數(shù)據(jù)所能達(dá)到的速度減小,這是由于必 須對(duì)數(shù)據(jù)類型(例如,F(xiàn)x, Fy, Fz, Px, Py, Pz, Vx, Vy, Vz等) 進(jìn)行矢量化,以便當(dāng)使用單個(gè)指令時(shí)可對(duì)相應(yīng)數(shù)據(jù)集進(jìn)行操作.由于在同一塊中可找到給定對(duì)象102的所有圖形數(shù)據(jù),從而,對(duì)存儲(chǔ)器514 中數(shù)據(jù)進(jìn)行組織的應(yīng)用程序能夠較容易地對(duì)所有存儲(chǔ)器區(qū)域408中的 圖形數(shù)據(jù)進(jìn)行重新組織。如圖9所示,存儲(chǔ)器514可包括多個(gè)區(qū)域412,其中每個(gè)區(qū)域412 可包括一個(gè)或多個(gè)鄰近塊。在本發(fā)明的該實(shí)施例中,將給定對(duì)象102 的所有圖形數(shù)據(jù)(例如,F(xiàn), P, V, L)存儲(chǔ)在系統(tǒng)存儲(chǔ)器514的同 一區(qū)域412或塊中。優(yōu)選地通過(guò)將N個(gè)對(duì)象的數(shù)據(jù)順序存儲(chǔ)在塊中, 對(duì)圖形數(shù)據(jù)進(jìn)行矢量化.例如,如果N為四,則順序存儲(chǔ)力數(shù)據(jù)的四 個(gè)Fx分量、力數(shù)據(jù)的四個(gè)Fy分量和力數(shù)據(jù)的四個(gè)Fz分量、力數(shù)據(jù) 的四個(gè)Fx分量。對(duì)于位置數(shù)據(jù)P、速度數(shù)據(jù)V、顏色數(shù)據(jù)L等,采 用同樣的順序分組。從而,在存儲(chǔ)器的塊內(nèi),將給定對(duì)象102的圖形 數(shù)據(jù)以某種程度散布,如附圖標(biāo)記414i所示。有利的是,當(dāng)采用SIMD 處理器508時(shí),該設(shè)置提高了處理數(shù)據(jù)的速度。這是由于,在存儲(chǔ)器 514中已將數(shù)據(jù)類型(例如,F(xiàn)x, Fy, Fz, Px, Py, Pz, Vx, Vy, Vz等)進(jìn)行矢量化,并且當(dāng)使用單個(gè)SIMD指令時(shí)可對(duì)其進(jìn)行操作。然而,通過(guò)這樣的設(shè)置,可認(rèn)為與圖7的設(shè)置相比較,存儲(chǔ)器514 的使用效率更低,這是由于在每個(gè)區(qū)域412中需要若干未用存儲(chǔ)器位 置以確保正確對(duì)準(zhǔn)和矢量化。對(duì)存儲(chǔ)器514中數(shù)據(jù)進(jìn)行組織的應(yīng)用程 序可能變得較為復(fù)雜,以便當(dāng)對(duì)象102移入或移出子空間112時(shí)對(duì)所 有存儲(chǔ)器區(qū)域412中的圖形數(shù)據(jù)進(jìn)行重新組織?,F(xiàn)參照?qǐng)D10,所示時(shí)序圖700表示在每個(gè)幀期間,在處理器(例 如,如圖4所示處理器SPU1, SPU2, SPU3和SPU4 ( 508A-D ))中, 如何對(duì)給定子空間112的圖形數(shù)據(jù)進(jìn)行處理。應(yīng)該注意,給定子空間 112的對(duì)象102到具體SPU 508的指定優(yōu)選地基于SPU是否可用于處 理給定子空間112的所有對(duì)象。此外,該指定可通過(guò)PU 504進(jìn)行管 理,或可通過(guò)SPU508本身對(duì)其進(jìn)行管理。在時(shí)刻Ti,假設(shè)所有SPU可用于對(duì)對(duì)象集進(jìn)行處理,從而,每 個(gè)SPU 508獲得給定子空間112的圖形數(shù)據(jù)。例如,SPU1- SPU4分
別獲得子空間112rll24的圖形數(shù)據(jù)。給定SPU對(duì)給定對(duì)象集的圖形 數(shù)據(jù)進(jìn)行處理所需的時(shí)期通常與子空間112中的對(duì)象102的數(shù)量成比 例。從而,SPU1-SPU4中的每個(gè)均可在不同時(shí)間完成這樣的處理。 在極端情形中,給定子空間112可不包含任何對(duì)象102,因此,至少 對(duì)于給定時(shí)間間隔,可對(duì)其進(jìn)行快速調(diào)度和/或一起將其忽略。當(dāng)SPU3完成對(duì)于子空間1123的對(duì)象102的計(jì)算時(shí),約在時(shí)刻 T2, SPU3獲得另一子空間(例如,子空間1125)的圖形數(shù)據(jù)。同樣, 約在時(shí)刻T3, SPU1可完成對(duì)子空間112i的處理,并獲得子空間1126 的對(duì)象102的圖形數(shù)據(jù),并開始對(duì)這樣的數(shù)據(jù)進(jìn)行處理。約在時(shí)刻T4, SPU4可完成對(duì)子空間1124的處理,并獲得子空間1127的對(duì)象102的 圖形數(shù)據(jù),并開始對(duì)該數(shù)據(jù)進(jìn)行處理。最后,約在時(shí)刻Ts, SPU2可 完成對(duì)子空間1122的處理,并獲得子空間1128的對(duì)象102的圖形數(shù)據(jù), 并開始對(duì)該數(shù)據(jù)進(jìn)行處理。該過(guò)程繼續(xù)進(jìn)行,直至在給定幀(例如, 在時(shí)刻T語(yǔ)D)中對(duì)空間104的所有對(duì)象102進(jìn)行了處理。根據(jù)本發(fā)明的至少一個(gè)其它方面,可使用合適的硬件,例如圖中 所示的硬件,來(lái)實(shí)現(xiàn)上述方法和裝置??墒褂萌魏我阎夹g(shù)(例如, 標(biāo)準(zhǔn)數(shù)字電路)、任何可用于執(zhí)行軟件和/或固件程序的已知處理器、 一個(gè)或多個(gè)可編程數(shù)字設(shè)備或系統(tǒng)(例如,可編程只讀存儲(chǔ)器 (PROM))、可編程陣列邏輯設(shè)備(PAL)等,來(lái)實(shí)現(xiàn)這樣的硬件。 此外,盡管將圖中所示裝置顯示成分為特定的功能塊,然而這樣的功 能塊也可通過(guò)獨(dú)立電路實(shí)現(xiàn)和/或?qū)⑵浣M合成一個(gè)或多個(gè)功能單元,此 外,本發(fā)明的各個(gè)方面可通過(guò)可存儲(chǔ)在合適存儲(chǔ)介質(zhì)(例如,軟盤、 存儲(chǔ)器芯片等)以便進(jìn)行運(yùn)輸和/或發(fā)行的軟件和/或固件程序來(lái)實(shí)現(xiàn)。此處盡管參照具體實(shí)施例描述了本發(fā)明,然而應(yīng)該理解,這些實(shí) 施例僅僅是對(duì)本發(fā)明的原理和應(yīng)用的示意性描述。因此,在不偏離如 所附權(quán)利要求所定義的本發(fā)明精神和范圍的條件下,可對(duì)示意性實(shí)施 例進(jìn)行多種修改,并可設(shè)計(jì)出其它方案。
權(quán)利要求
1. 一種方法,包括將三維(3D)圖形空間內(nèi)的對(duì)象分成多個(gè)對(duì)象集,每個(gè)對(duì)象集處在3D空間內(nèi)的相應(yīng)子空間中;基于每個(gè)對(duì)象的初始圖形數(shù)據(jù),計(jì)算對(duì)象集的每個(gè)對(duì)象的最終圖形數(shù)據(jù),其中,使用多處理器系統(tǒng)的多個(gè)處理器中的相應(yīng)處理器,執(zhí)行對(duì)于每個(gè)對(duì)象集的相應(yīng)計(jì)算;以及對(duì)于多個(gè)圖像幀的每個(gè),使用源自前一圖像幀的最終圖形數(shù)據(jù)作為當(dāng)前圖像幀的初始圖形數(shù)據(jù),重復(fù)上述步驟。
2. 根據(jù)權(quán)利要求1的方法,其中,每個(gè)對(duì)象的圖形數(shù)據(jù)包括位 置數(shù)據(jù)、力數(shù)據(jù)、速度數(shù)據(jù)、顏色數(shù)據(jù)和質(zhì)量數(shù)據(jù)中的至少之一。
3. 根據(jù)權(quán)利要求2的方法,其中,給定對(duì)象的最終圖形數(shù)據(jù)的 計(jì)算包括根據(jù)對(duì)象的初始位置數(shù)據(jù)和以下各項(xiàng)中的至少之一來(lái)計(jì)算 將對(duì)象的最終位置數(shù)據(jù)源自速度數(shù)據(jù)的對(duì)象初始速度、源自力數(shù)據(jù) 的對(duì)象初始力和源自質(zhì)量數(shù)據(jù)的對(duì)象初始質(zhì)量。
4. 根據(jù)權(quán)利要求1或2的方法,其中,給定對(duì)象的最終圖形數(shù) 據(jù)的計(jì)算包括關(guān)于對(duì)象與另一對(duì)象是否碰撞的計(jì)算。
5. 根據(jù)權(quán)利要求1至4其中之一的方法,其中,將對(duì)象分成3D 空間的子空間內(nèi)的對(duì)象集的步驟包括當(dāng)最終圖形數(shù)據(jù)的計(jì)算表明一 個(gè)或多個(gè)對(duì)象具有落在它們的初始子空間外部的最終位置數(shù)據(jù)時(shí),將 至少某些對(duì)象進(jìn)行重新分組。
6. 根據(jù)權(quán)利要求1至5其中之一的方法,還包括將至少某些 最終圖形數(shù)據(jù)變換成2維(2D)數(shù)據(jù);以及繪制2D數(shù)據(jù)以便在顯示 屏上進(jìn)行顯示。
7. 根據(jù)權(quán)利要求1至6其中之一的方法,其中,處理器用于執(zhí) 行單指令多數(shù)據(jù)(SIMD)計(jì)算。
8. 根據(jù)權(quán)利要求l至7其中之一的方法,還包括 將對(duì)象的最終圖形數(shù)據(jù)存儲(chǔ)在與多個(gè)處理器連接的系統(tǒng)存儲(chǔ)器 中;以及按照與對(duì)象集和子空間相對(duì)應(yīng)的方式,對(duì)系統(tǒng)存儲(chǔ)器內(nèi)的最終圖 形數(shù)據(jù)進(jìn)行分組。
9. 根據(jù)權(quán)利要求8的方法,還包括當(dāng)最終圖形數(shù)據(jù)的計(jì)算表 明一個(gè)或多個(gè)對(duì)象具有落在它們的初始子空間外部的最終位置數(shù)據(jù) 時(shí),將系統(tǒng)存儲(chǔ)器內(nèi)的最終圖形數(shù)據(jù)進(jìn)行重新分組,
10. 根據(jù)權(quán)利要求8或9的方法,其中,處理器用于對(duì)系統(tǒng)存儲(chǔ)器進(jìn)行按塊數(shù)據(jù)讀/寫,每個(gè)塊是系統(tǒng)存 儲(chǔ)器中的連續(xù)區(qū)域;以及每個(gè)對(duì)象的圖形數(shù)據(jù)包括位置數(shù)據(jù)、力數(shù)據(jù)、速度數(shù)據(jù)、顏色數(shù) 據(jù)和質(zhì)量數(shù)據(jù)中的至少之一,
11. 根據(jù)權(quán)利要求10的方法,其中,進(jìn)行以下至少之一的操作 (i)將所有位置數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的相應(yīng)一個(gè)或多個(gè)連續(xù)塊中;(ii)將所有力數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的相應(yīng)一個(gè)或多個(gè)連續(xù)塊中;(iii)將所 有速度數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的相應(yīng)一個(gè)或多個(gè)連續(xù)塊中;以及(iv)將 所有顏色數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的相應(yīng)一個(gè)或多個(gè)連續(xù)塊中。
12. 根據(jù)權(quán)利要求10的方法,其中,進(jìn)行以下至少之一的操作 將給定對(duì)象的所有圖形數(shù)據(jù)存儲(chǔ)在系統(tǒng)存儲(chǔ)器的同 一塊中;將多個(gè)對(duì)象的所有圖形數(shù)據(jù)存儲(chǔ)在系統(tǒng)存儲(chǔ)器的同 一塊或連續(xù)塊中;將給定對(duì)象集的所有圖形數(shù)據(jù)存儲(chǔ)在系統(tǒng)存儲(chǔ)器的同 一塊或連 續(xù)塊中。
13. 根據(jù)權(quán)利要求12的方法,其中,將給定對(duì)象的所有圖形數(shù) 據(jù)順序存儲(chǔ)在系統(tǒng)存儲(chǔ)器的同 一塊中。
14. 才艮據(jù)權(quán)利要求10的方法,其中,處理器用于執(zhí)行單指令多數(shù)據(jù)(SIMD)計(jì)算,多數(shù)據(jù)計(jì)算的數(shù) 量為N;以及將具有N個(gè)對(duì)象的各個(gè)集合的至少某些圖形數(shù)據(jù)順序存儲(chǔ)在系 統(tǒng)存儲(chǔ)器中的同一塊內(nèi)。
15. 根據(jù)權(quán)利要求14的方法,其中,將具有N個(gè)對(duì)象的各個(gè)集 合的位置數(shù)據(jù)、力數(shù)據(jù)、速度數(shù)據(jù)、顏色數(shù)據(jù)和質(zhì)量數(shù)據(jù)中的至少之 一,順序存儲(chǔ)在系統(tǒng)存儲(chǔ)器的同一塊內(nèi)。
16. 根據(jù)權(quán)利要求8的方法,還包括當(dāng)處理器變得可用時(shí),使 用所述處理器從系統(tǒng)存儲(chǔ)器讀取和處理子空間的對(duì)象集的圖形數(shù)據(jù)。
17. 根據(jù)權(quán)利要求1至16其中之一的方法,其中,根據(jù)處理器 的處理能力確定一個(gè)或多個(gè)子空間的尺寸。
18. 根據(jù)權(quán)利要求17的方法,其中,處理能力包括以下中的至 少之一處理器計(jì)算對(duì)象圖形數(shù)據(jù)的預(yù)期幀速率;處理器訪問(wèn)存儲(chǔ)器 中圖形數(shù)據(jù)時(shí)所能夠具有的速度;處理器計(jì)算圖像數(shù)據(jù)時(shí)所能夠具有 的速度;以及在每個(gè)給定處理器內(nèi)的本地存儲(chǔ)器大小。
19. 一種處理系統(tǒng),包括系統(tǒng)存儲(chǔ)器,用于存儲(chǔ)三維(3D)圖形空間內(nèi)多個(gè)對(duì)象的每個(gè)的 圖形數(shù)據(jù);以及多個(gè)處理器,每個(gè)處理器用于將三維(3D)圖形空間內(nèi)的對(duì)象分成多個(gè)對(duì)象集,每個(gè)對(duì)象集處 在3D空間內(nèi)的相應(yīng)子空間中;基于每個(gè)對(duì)象的初始圖形數(shù)據(jù),計(jì)算對(duì)象集的每個(gè)對(duì)象的最終圖 形數(shù)據(jù),其中,使用多個(gè)處理器中的相應(yīng)處理器,執(zhí)行對(duì)于每個(gè)對(duì)象 集的相應(yīng)計(jì)算;以及對(duì)于多個(gè)圖像幀的每個(gè),使用源自前一圖像幀的最終圖形數(shù)據(jù)作 為當(dāng)前圖像幀的初始圖形數(shù)據(jù),重復(fù)分組和計(jì)算功能。
20. 根據(jù)權(quán)利要求19的系統(tǒng),其中,每個(gè)對(duì)象的圖形數(shù)據(jù)包括 位置數(shù)據(jù)、力數(shù)據(jù)、速度數(shù)據(jù)、顏色數(shù)據(jù)和質(zhì)量數(shù)據(jù)中的至少之一。
21. 根據(jù)權(quán)利要求20的系統(tǒng),其中,處理器還用于根據(jù)對(duì)象的 初始位置數(shù)據(jù)和以下各項(xiàng)中的至少之一來(lái)計(jì)算給定對(duì)象的最終位置數(shù) 據(jù)源自速度數(shù)據(jù)的對(duì)象初始速度、源自力數(shù)據(jù)的對(duì)象初始力和源自 質(zhì)量數(shù)據(jù)的對(duì)象初始質(zhì)量。
22. 根據(jù)權(quán)利要求19或20的系統(tǒng),其中,處理器還用于使得給定對(duì)象的最終圖形數(shù)據(jù)的計(jì)算包括關(guān)于對(duì)象與另一對(duì)象是否碰撞的計(jì) 算。
23. 根據(jù)權(quán)利要求19至22其中之一的系統(tǒng),其中,處理器還用 于使得將對(duì)象分組成3D空間的子空間內(nèi)的對(duì)象集包括當(dāng)最終圖形 數(shù)據(jù)的計(jì)算表明一個(gè)或多個(gè)對(duì)象具有落在它們的初始子空間外部的最 終位置數(shù)據(jù)時(shí),將至少某些對(duì)象進(jìn)行重新分組。
24. 根據(jù)權(quán)利要求19至23其中之一的系統(tǒng),其中,處理器還用 于將至少某些最終圖形數(shù)據(jù)變換成2維(2D)數(shù)據(jù);以及繪制2D數(shù) 據(jù)以便在顯示屏上進(jìn)行顯示。
25. 根據(jù)權(quán)利要求19至24其中之一的系統(tǒng),其中,處理器用于 執(zhí)行單指令多數(shù)據(jù)(SIMD)計(jì)算。
26. 根據(jù)權(quán)利要求19至25其中之一的系統(tǒng),其中,處理器還用于將對(duì)象的最終圖形數(shù)據(jù)存儲(chǔ)在系統(tǒng)存儲(chǔ)器中;以及 按照與對(duì)象集和子空間相對(duì)應(yīng)的方式,對(duì)系統(tǒng)存儲(chǔ)器內(nèi)的最終圖 形數(shù)據(jù)進(jìn)行分組。
27. 根據(jù)權(quán)利要求26的系統(tǒng),其中,處理器還用于當(dāng)最終圖形 數(shù)據(jù)的計(jì)算表明一個(gè)或多個(gè)對(duì)象具有落在它們的初始子空間外部的最 終位置數(shù)據(jù)時(shí),將系統(tǒng)存儲(chǔ)器內(nèi)的最終圖形數(shù)據(jù)進(jìn)行重新分組。
28. 根據(jù)權(quán)利要求26或27的系統(tǒng),其中,處理器用于對(duì)系統(tǒng)存儲(chǔ)器進(jìn)行按塊數(shù)據(jù)讀/寫,每個(gè)塊是系統(tǒng)存 儲(chǔ)器中的連續(xù)區(qū)域;以及每個(gè)對(duì)象的圖形數(shù)據(jù)包括位置數(shù)據(jù)、力數(shù)據(jù)、速度數(shù)據(jù)、顏色數(shù) 據(jù)和質(zhì)量數(shù)據(jù)中的至少之一。
29. 根據(jù)權(quán)利要求28的系統(tǒng),其中,進(jìn)行以下至少之一的操作 (i)將所有位置數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的相應(yīng)一個(gè)或多個(gè)連續(xù)塊中;(ii)將所有力數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的相應(yīng)一個(gè)或多個(gè)連續(xù)塊中;(iii)將所 有速度數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的相應(yīng)一個(gè)或多個(gè)連續(xù)塊中;以及(iv)將 所有顏色數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器的相應(yīng)一個(gè)或多個(gè)連續(xù)塊中。
30. 根據(jù)權(quán)利要求28的系統(tǒng),其中,進(jìn)行以下至少之一的操作 將給定對(duì)象的所有圖形數(shù)據(jù)存儲(chǔ)在系統(tǒng)存儲(chǔ)器的同 一塊中; 將多個(gè)對(duì)象的所有圖形數(shù)據(jù)存儲(chǔ)在系統(tǒng)存儲(chǔ)器的同 一塊或連續(xù)塊中;將給定對(duì)象集的所有圖形數(shù)據(jù)存儲(chǔ)在系統(tǒng)存儲(chǔ)器的同 一塊或連 續(xù)塊中。
31. 根據(jù)權(quán)利要求30的系統(tǒng),其中,將給定對(duì)象的所有圖形數(shù) 據(jù)順序存儲(chǔ)在系統(tǒng)存儲(chǔ)器的同 一塊中。
32. 根據(jù)權(quán)利要求28的系統(tǒng),其中,處理器用于執(zhí)行單指令多數(shù)據(jù)(SIMD)計(jì)算,多數(shù)據(jù)計(jì)算的數(shù) 量為N;以及將具有N個(gè)對(duì)象的各個(gè)集合的至少某些圖形數(shù)據(jù)順序存儲(chǔ)在系 統(tǒng)存儲(chǔ)器中的同一塊內(nèi)。
33. 根據(jù)權(quán)利要求32的系統(tǒng),其中,將具有N個(gè)對(duì)象的各個(gè)集 合的位置數(shù)據(jù)、力數(shù)據(jù)、速度數(shù)據(jù)、顏色數(shù)據(jù)和質(zhì)量數(shù)據(jù)中的至少之 一,順序存儲(chǔ)在系統(tǒng)存儲(chǔ)器的同一塊內(nèi)。
34. 根據(jù)權(quán)利要求26的系統(tǒng),還包括,當(dāng)處理器變得可用時(shí), 使用所述處理器從系統(tǒng)存儲(chǔ)器讀取和處理子空間的對(duì)象集的圖形數(shù) 據(jù)。
35. 根據(jù)權(quán)利要求19至34其中之一的系統(tǒng),其中,根據(jù)處理器 的處理能力確定一個(gè)或多個(gè)子空間的尺寸。
36. 根據(jù)權(quán)利要求35的系統(tǒng),其中,處理能力包括以下中的至 少之一處理器計(jì)算對(duì)象圖形數(shù)據(jù)的預(yù)期幀速率;處理器訪問(wèn)存儲(chǔ)器 中圖形數(shù)據(jù)時(shí)所能夠具有的速度;處理器計(jì)算圖像數(shù)據(jù)時(shí)所能夠具有 的速度;以及在每個(gè)給定處理器內(nèi)的本地存儲(chǔ)器大小。
37. —種處理裝置,包括連接系統(tǒng)存儲(chǔ)器的多個(gè)處理器,所述系 統(tǒng)存儲(chǔ)器用于存儲(chǔ)在三維(3D)圖形空間內(nèi)多個(gè)對(duì)象的每個(gè)的圖形數(shù) 據(jù),所述處理裝置包括所述多個(gè)處理器,每個(gè)處理器用于將三維(3D)圖形空間內(nèi)的對(duì)象分成多個(gè)對(duì)象集,每個(gè)對(duì)象集處 在3D空間內(nèi)的相應(yīng)子空間中;基于每個(gè)對(duì)象的初始圖形數(shù)據(jù),計(jì)算對(duì)象集的每個(gè)對(duì)象的最終圖 形數(shù)據(jù),其中,使用多個(gè)處理器中的相應(yīng)處理器,執(zhí)行對(duì)于每個(gè)對(duì)象 集的相應(yīng)計(jì)算;以及對(duì)于多個(gè)圖像幀的每個(gè),使用源自前一圖像幀的最終圖形數(shù)據(jù)作 為當(dāng)前圖像幀的初始圖形數(shù)據(jù),重復(fù)分組和計(jì)算功能。
38. —種包含有軟件代碼的存儲(chǔ)介質(zhì),所述軟件代碼用于使與系 統(tǒng)存儲(chǔ)器相連的多個(gè)處理器中的一個(gè)或多個(gè)執(zhí)行操作,所述系統(tǒng)存儲(chǔ) 器用于存儲(chǔ)在三維(3D)圖形空間內(nèi)多個(gè)對(duì)象的每個(gè)的圖形數(shù)據(jù),所 述操作包括將三維(3D)圖形空間內(nèi)的對(duì)象分成多個(gè)對(duì)象集,每個(gè)對(duì)象集處 在3D空間內(nèi)的相應(yīng)子空間中;基于每個(gè)對(duì)象的初始圖形數(shù)據(jù),計(jì)算對(duì)象集的每個(gè)對(duì)象的最終圖 形數(shù)據(jù),其中,使用多處理器系統(tǒng)的多個(gè)處理器中的相應(yīng)處理器,執(zhí) 行對(duì)于每個(gè)對(duì)象集的相應(yīng)計(jì)算;以及對(duì)于多個(gè)圖像幀的每個(gè),使用源自前一圖像幀的最終圖形數(shù)據(jù)作 為當(dāng)前圖像幀的初始圖形數(shù)據(jù),重復(fù)上述步驟。
全文摘要
本發(fā)明所提供的方法和裝置用于將三維(3D)圖形空間內(nèi)的對(duì)象分成多個(gè)對(duì)象集,每個(gè)對(duì)象集處在3D空間內(nèi)的相應(yīng)子空間中;基于每個(gè)對(duì)象的初始圖形數(shù)據(jù),計(jì)算對(duì)象集的每個(gè)對(duì)象的最終圖形數(shù)據(jù),其中,使用多處理器系統(tǒng)的多個(gè)處理器中相應(yīng)一個(gè),執(zhí)行每個(gè)對(duì)象集的相應(yīng)計(jì)算;以及對(duì)于多個(gè)圖像幀的每個(gè),使用源自前一圖像幀的最終圖形數(shù)據(jù)作為當(dāng)前圖像幀的初始圖形數(shù)據(jù),重復(fù)上述步驟。
文檔編號(hào)G06T15/00GK101401128SQ200680001240
公開日2009年4月1日 申請(qǐng)日期2006年2月7日 優(yōu)先權(quán)日2005年2月7日
發(fā)明者安江正宏 申請(qǐng)人:索尼計(jì)算機(jī)娛樂(lè)公司