專利名稱:流水線化的圖像處理引擎的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及流水線化的圖像處理引擎,并且更具體地涉及用于通
過多核處理系統(tǒng)上的效果流水線(effect pipeline)來處理多個圖像幀的系 統(tǒng)和方法。
背景技術(shù):
隨著制造技術(shù)的持續(xù)提高,基于半導(dǎo)體的微電子的物理極限也擴(kuò)展來 滿足對更有能力的微處理器的需要。處理速度上的限制帶來了這樣的適應(yīng) 性通過采用多核或分布式體系結(jié)構(gòu)以分布工作負(fù)荷的并行化來平衡現(xiàn)有 處理器速度和性能,由此增加了處理能力并減少了處理時間。
電影/視頻/成像空間中的應(yīng)用常常以流水線方式將多個圖像處理效果 鏈接起來。這些圖像處理流水線可以從通過多核或分布式體系結(jié)構(gòu)提供的 并行化中受益。執(zhí)行這種圖像處理的應(yīng)用共享共同的特性,包括以實(shí)時的 速率處理并移動大量數(shù)據(jù)的需求。
這種系統(tǒng)的傳統(tǒng)實(shí)施方式遭受了差的吞吐量、高延時以及增加的復(fù)雜 性這些問題的組合,這降低了可擴(kuò)展性和可縮放性。如在流水線系統(tǒng)中那 樣,在將依賴于連續(xù)執(zhí)行的多個分立效果鏈接起來時,使這些限制增加。
在處理視頻時,'效果流水線'指以定義的順序?qū)D像應(yīng)用視覺效 果。類似地,'效果'指效果流水線的各級。
在效果流水線中將硬件資源分布在各個效果間的現(xiàn)有方法通常受到許 多關(guān)于并行化的限制的影響。
一種方法將各個圖像幀的數(shù)據(jù)定義為最小工作份額,這允許各個效果 獨(dú)立地對給定幀或其它幀操作。雖然這種方法允許多個效果共同存在于共 享系統(tǒng)中而不會在它們之間強(qiáng)加緊密集成,然而,這種方法也導(dǎo)致了整個 系統(tǒng)的高延時。這種延時與效果流水線中的效果數(shù)目有關(guān)。
6'流水線性能'將性能測量為延時和計(jì)算時間的組合。'延時'指流 水線系統(tǒng)發(fā)出給定單位的數(shù)據(jù)所需的時間。對于效果流水線,'延時'指 流水線中的每個圖像幀自進(jìn)入流水線中第一效果的時刻起到離開流水線中 最后一個效果的時間為止所花費(fèi)的時間。
H十算時間'指處理標(biāo)準(zhǔn)單位的數(shù)據(jù),例如圖像幀所需的時間。此 外,計(jì)算時間可以表示為視頻系統(tǒng)的幀頻的函數(shù),或者處理幀的實(shí)際時間 的函數(shù)。
圖11圖示出了多核系統(tǒng)中的6級基于幀的效果流水線。在圖11中, 在假設(shè)流水線中的處理器數(shù)目等于或大于效果數(shù)目的最佳情況下,各個效 果被指派給處理器(或核)。每個處理器每次對一個完整圖像幀上的效果 進(jìn)行處理。圖像幀可能來源于視頻流或圖像幀的其它源。各個進(jìn)入幀依次 順序地被處理。為了簡化起見,假設(shè)每個效果花費(fèi)相同量的時間來處理 幀,這表示了輸出每個幀所需的最佳時間,以便維持一致的幀頻。
在時間tl,幀1進(jìn)入流水線,并且由處理器1將第一效果應(yīng)用到幀 1。在時間t2,幀2被處理器l載入并處理,并且?guī)琹被處理器2載入并處 理。在時間t3,幀3被處理器1載入并處理,幀2被處理器2載入并處 理,并且?guī)琹被處理器3載入并處理。從時間t4至t6,幀4至幀6被引入 流水線,并且?guī)?-3沿著流水線前進(jìn)。在時間t6的結(jié)尾處,幀1從流水線 中出來。
可以將流水線延時測量為通過流水線中的所有級處理一幀所需的時 間,或者以 <幀時間',即在幀N離開效果流水線之前管道中的第一效果 所處理的幀數(shù)來測量流水線延時。作為幀時間的函數(shù),流水線延時被計(jì)算
為
PLFT = M-N (式l) 其中
PLpr是以幀時間為單位的流水線延時。
M是在時刻T時進(jìn)入流水線的幀。 .N是在時刻T時離開流水線的幀,并且]VKN。
對于基于幀的體系結(jié)構(gòu),流水線延時也可以被定義為鏈中的最慢效果
7的處理時間與流水線中的效果(或級)數(shù)之積。這被計(jì)算為
PLCT = NxTFM (式2)
其中
PLcT是作為計(jì)算時間的流水線延時。
,N是流水線中的級數(shù)。
TFM是流水線中的最慢效果M處理幀所需的時間。
假設(shè)每120 ms新的幀被饋送入流水線中,流水線包含6個級或效果, 并且流水線中的最慢效果也花費(fèi)120ms來處理一幀的數(shù)據(jù),則圖11中的 基于幀的系統(tǒng)的流水線延時(PL)為6x120 = 960 ms。
此外,由于流水線延時被測量為第一幀,即幀1進(jìn)入和離開流水線時 的時間的函數(shù),因此,通過使各個處理器并行地連續(xù)運(yùn)行每個效果不會帶 來益處。即,即使每個幀立即可用于處理,而不是每120ms將新的幀連續(xù) 饋送到流水線中,基于第一幀進(jìn)入和離開流水線的時間,流水線將仍然具 有6幀延時以及960 ms的計(jì)算時間延時。
上面的系統(tǒng)受到可用硬件資源的限制,即,如果效果數(shù)超過了可用獨(dú) 立處理組件數(shù),或者如果每個處理器中的可用緩存不能存儲一整幀,則處 理將變得相當(dāng)慢。
發(fā)明內(nèi)容
本發(fā)明提供了實(shí)現(xiàn)靈活可擴(kuò)展流水線的流水線化圖像處理引擎,流水 線能夠針對受限的硬件資源進(jìn)行調(diào)節(jié)。實(shí)施例還可以包括靜態(tài)和動態(tài)負(fù)荷 平衡。示例實(shí)施例移除或減少了許多上述限制,同時還提供了以更高效的 方式執(zhí)行效果的一般架構(gòu)。
本發(fā)明的示例實(shí)施例可以包括用于通過效果流水線處理圖像幀的方 法。該方法可以包括從每幀生成多個塊,以預(yù)定的連續(xù)順序通過效果流水 線來處理每塊,并且通過組合每個經(jīng)處理塊中的像素來聚合經(jīng)處理的塊以 產(chǎn)生輸出幀。每個塊可以包含一組主要像素和一組總像素,總像素包括效 果流水線中的效果產(chǎn)生針對主要像素的輸出所需的作為輸入的任何像素。 每個塊中的主要像素是將用于由效果流水線生成的最后一幀的像素。
8效果流水線可以被分布在多個處理節(jié)點(diǎn)中,并且每個效果可以處理被 提供作為節(jié)點(diǎn)的輸入的塊,以產(chǎn)生針對塊的主要像素的輸出。每個處理節(jié) 點(diǎn)可以獨(dú)立地利用效果對塊進(jìn)行處理??梢葬槍φ{(diào)度的目的來分析效果, 以便減少處理每幀中的第一塊與輸出每幀中的最后一塊之間的延時。
效果可以包括空間效果或時間效果。當(dāng)處理空間效果時,塊中的總像 素可以包括鄰近塊中的多個像素。當(dāng)處理時間效果時,總像素可以包括來 自時間上鄰近的圖像幀的多個像素。
塊處理和生成可以采用不同策略,例如下面描述的減小范疇或固定范 疇策略,但是不限于此而是可以包括不同策略的組合和子組合。例如,效 果流水線的不同部分可以利用不同策略進(jìn)行操作。
在一個實(shí)施例中,生成總像素可以包括識別通過效果流水線中的多 個效果連續(xù)地處理塊以產(chǎn)生針對主要像素的輸出的任何像素。這可以包 括分析第一效果以確定產(chǎn)生針對主要像素的輸出所需的總像素,并且分 析第二效果以確定生成針對所述總像素的輸出所需的總像素,所針對的總 像素是第一效果產(chǎn)生針對主要像素的輸出所需的。處理步驟然后可以在通 過第二效果處理塊之后并且在處理所述第一效果之前減少該塊中的總像素 的數(shù)目。
在另一實(shí)施例中,處理步驟可以包括在處理第一效果之后并且在處 理第二效果之前,利用來自至少一個鄰近塊的主要像素來更新塊中的總像 素。
另一示例實(shí)施例可以是用于通過效果流水線處理圖像幀鏈的裝置。該 裝置可以包括主要處理器、多個輔助處理器以及總線。總線可以互連主要 處理器、多個輔助處理器以及存儲器接口。
主要處理器可以包括塊生成器、效果分布器和塊聚合器。塊生成器可 以從經(jīng)由存儲器接口提供的輸入圖像幀中生成多個塊。效果分布器可以管 理效果和多個塊在多個輔助處理器間的分布和處理順序。最后,塊聚合器 可以組合經(jīng)處理的塊。
多個輔助處理器的每個可以包括存儲來自塊生成器的塊的內(nèi)容的最小 存儲器緩存。多個輔助處理器的每個可以以連續(xù)順序通過效果流水線一次
9處理一個塊。效果流水線可以被分布在多個輔助處理器中。每個輔助處理 器可以獨(dú)立地執(zhí)行效果,以產(chǎn)生針對給定塊的主要像素的輸出。
參考附圖,在下面的說明書中更全面地公開了本發(fā)明的這些以及其它 更詳細(xì)和具體的特征,在附圖中
圖1是根據(jù)本發(fā)明的多核處理器的一個示例。
圖2是根據(jù)本發(fā)明的計(jì)算機(jī)集群的第二示例實(shí)施例。
圖3圖示出了被劃分為16個均一塊的12x 12像素幀。 圖4圖示出了 12 x 12像素幀形成的塊。
圖5A圖示出了根據(jù)本發(fā)明的用于在流水線情景中處理三個區(qū)域效果 的減小范疇策略的示例實(shí)施例。
圖5B圖示出了用于在給定圖5A中的三個效果時確定生成所希望的主 要數(shù)據(jù)區(qū)域的輸出所需的外部范疇的大小的處理。
圖6A圖示出了根據(jù)本發(fā)明用于處理效果流水線的固定范疇策略。
圖6B是塊遍歷策略的第一示例實(shí)施例。
圖6C是塊遍歷策略的第二示例實(shí)施例。
圖7圖示出了根據(jù)本發(fā)明用于在多核處理器上執(zhí)行效果流水線的處理 的示例實(shí)施例。
圖8圖示出了根據(jù)本發(fā)明將最小工作份額減少為半幀的塊大小的第一 經(jīng)修改的效果流水線。
圖9使用與圖8的基于塊的架構(gòu)內(nèi)的相同效果流水線,但是將塊大小 減小為四分之一幀。
圖IOA圖示出了分布式非平衡效果流水線的一個示例。
圖10B圖示出了分布式負(fù)荷平衡效果流水線的一個示例。
圖11圖示出了多核系統(tǒng)中的傳統(tǒng)效果流水線。
具體實(shí)施例方式
在下面的描述中,為了說明的目的,闡述了諸如流程圖、系統(tǒng)配置和
10處理體系結(jié)構(gòu)之類的多個細(xì)節(jié),以便提供對本發(fā)明的一個或多個實(shí)施例的理解。然而,本領(lǐng)域技術(shù)人員將清楚,這些具體細(xì)節(jié)不是實(shí)施本發(fā)明所必需的。
本發(fā)明提供實(shí)現(xiàn)了對受限硬件資源進(jìn)行調(diào)節(jié)的靈活可擴(kuò)展流水線的流水線圖像處理引擎。實(shí)施例將每個'效果,所處理的最小份額的工作從幀減小到 <塊'(block)。每塊表示整幀的子集?;趬K的處理將相當(dāng)于每
幀的數(shù)據(jù)拆分為N個部分重疊或不重疊的塊,并且允許流水線的任何級中
的每個效果與其它塊相獨(dú)立地處理塊。這允許了多個效果同時工作而不用等待整個幀或場可用,并且還消除了對復(fù)雜的同步機(jī)制的需要。每個塊是
自足的(self-contained),并且保存了足以讓每個效果獨(dú)立地在其上工作的幀數(shù)據(jù)。由于塊是自足的并且在各個塊上工作的各個效果被松散地耦合,因此架構(gòu)可以容易地向流水線中的較慢效果指派更多的物理處理器,而向輕便的簡單效果分配較少的物理處理器。此外,處理器的指派可以逐幀改變,而不用任何用戶干預(yù)。
可以以各種形式來體現(xiàn)本發(fā)明,各種形式包括商業(yè)處理、計(jì)算機(jī)實(shí)現(xiàn)的方法、計(jì)算機(jī)程序產(chǎn)品、計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)、用戶接口、應(yīng)用編程接口等等。
圖1圖示出了根據(jù)本發(fā)明的多核處理器100的示例實(shí)施例。多核處理器100可以包括通過非??斓膬?nèi)部總線110連接起來的分立的單個處理器單元(SPU) 104池。多核處理器100還可以包括并行處理單元(PPU) 102、存儲器接口 106以及輸入/輸出接口 108。 PPU 102可以協(xié)調(diào)SPU 104之間的處理任務(wù)的分布。PPU 102還可以包含本地存儲器緩存103,用于存儲與運(yùn)行處理或效果相關(guān)的信息和指令。每個SPU 104可以包括存儲器緩存105,用來存儲與分配給該SPU 104的運(yùn)行處理或效果有關(guān)的信息。
在操作期間,包含效果流水線和多個圖像幀的輸入可以經(jīng)由輸入/輸出接口 108被提供給多核處理器100。 PPU 102可以將效果流水線解析為多個分立的效果。可以結(jié)合多個效果來分析每個圖像幀,并將其分離為像素塊。PPU 102然后可以將效果和塊分布在SPU 104間供處理。在SPU 104
ii基于效果處理了塊之后,PPU 102可以將經(jīng)處理的塊聚合為完整的輸出圖像幀。
雖然圖1圖示出了具有不同的PPU 102和SPU 104的體系結(jié)構(gòu),然而,本領(lǐng)域技術(shù)人員將理解,本發(fā)明不限于此,而是可以在包含均一的多核處理器的通用體系結(jié)構(gòu)或其它類型的專用體系結(jié)構(gòu)上實(shí)現(xiàn)。
圖2以計(jì)算機(jī)集群200的形式圖示出了本發(fā)明的第二示例實(shí)施例,計(jì)算機(jī)集群200能夠分布與處理效果流水線相關(guān)聯(lián)的工作負(fù)荷。計(jì)算機(jī)集群200可以包括通過網(wǎng)絡(luò)210連接起來的分立處理單元(DPU) 204池。計(jì)算機(jī)集群200還可以包括集群管理單元(CMU) 202以及控制終端208。CMU 202可以協(xié)調(diào)DPU 204之間處理任務(wù)的分配。CMU 202還可以包括用于跟蹤分布到各個DPU 204的進(jìn)展、負(fù)荷和效果的集群監(jiān)視器。
在操作期間,效果流水線和多個圖像幀可以從終端208或能夠訪問網(wǎng)絡(luò)210的另外的源被提供到CMU 202。 CMU 202可以將效果流水線解析為分立效果。可以結(jié)合效果來分析每個圖像幀并將其分離為像素塊。CMU202然后可以將效果和像素塊分布在DPU 204間供處理。
效果的類型
對于像素?cái)?shù)據(jù)塊,'效果'是改變或扭曲像素塊的處理。每塊包括多個像素,例如矩形或方形網(wǎng)格的像素。如果M x N個處理元件同時可用,則可以同時并行地處理具有M x N個像素的塊。這只有在每個輸入像素提供了給定效果產(chǎn)生相對應(yīng)的輸出像素所需的所有數(shù)據(jù)時才是可能的。然而,許多效果依賴于輸入像素和鄰近像素以合適地將輸入像素改變或扭曲為輸出像素。
可以將效果分為三類點(diǎn)效果、區(qū)域效果和范圍效果。 <點(diǎn)效果,是僅基于一個輸入像素來產(chǎn)生輸出像素的效果。色彩校正效果落在這類中。
'區(qū)域效果'是需要除給定輸入像素之外的一定量的鄰近像素來產(chǎn)生輸出像素的效果。諸如模糊效果之類的巻積濾波器就是區(qū)域效果。區(qū)域效果給尤其與存儲器占用(memory footprint)和性能有關(guān)的并行化帶來了一些挑戰(zhàn)。'范圍效果'是需要整體幀作為輸入以產(chǎn)生單個輸出像素的效果。直方圖效果一般是范圍效果,這是因?yàn)樗鼈冊谏扇魏屋敵鱿袼刂靶枰獙?br>
12整個幀的分析。范圍效果給并行化造成了最大挑戰(zhàn)。
雖然相對于空間域描述了上面的效果(即,它們利用單個幀的數(shù)據(jù)操作),然而,這些效果也可以在時間域中操作。時間域效果可能需要來自時間上鄰近的幀的數(shù)據(jù)。例如,時間區(qū)域效果可能需要鄰近幀輸入像素?cái)?shù)據(jù)來產(chǎn)生單個幀中的輸出像素?cái)?shù)據(jù),并且時間范圍效果可能需要剪輯或序
列的所有幀來產(chǎn)生單個輸出幀的像素?cái)?shù)據(jù)。例如,盒子模糊(Box Blur)是空間區(qū)域效果,而運(yùn)動模糊(Motion Blur)是時間區(qū)域效果。此外,效果可以在兩個域中工作。例如,交錯掃描到逐行掃描的轉(zhuǎn)換就是空間一時間區(qū)域效果,這是因?yàn)樗枰臻g(單個幀)域和時間域(鄰近幀)兩者中的鄰近數(shù)據(jù)。塊劃分
為了減少與幀相關(guān)聯(lián)的工作份額,可以將每個幀劃分為較小的子幀或數(shù)據(jù)/塊,。
圖3圖示出了被劃分為16個均一塊304 (圖示為塊1-16)的12 x 12像素幀302。雖然幀302包含12 x 12個像素,然而,每個塊304 (304-1至304-16)可以包含3 x 3個像素;需要16個塊來完整地將幀302映射到塊304。將會明白,12 x 12像素幀302僅被提供來用于示例的目的,而并不以任何方式將本發(fā)明限制于特定幀大小、分辨率或縱橫比。
示例實(shí)施例可以保持給定幀中所有塊的相同尺寸。這可以在所有SPU104間提供對工作的均勻分布。然而,塊大小的分布可以遵循不同方案。例如,在效果中某些像素間存在較大依賴性的情況中,可以將這些像素成組為單個塊以促進(jìn)并行化。此外,可以基于諸如色彩關(guān)系、對象標(biāo)識等之類的各種標(biāo)準(zhǔn)來劃分特定幀。最后,塊大小的標(biāo)準(zhǔn)還可以產(chǎn)生具有類似工作份額的塊,以使得給定效果在不同塊上的處理時間大體上保持均一。
塊劃分(或聚合)自身不是本質(zhì)上并行的任務(wù),因此可以被交付給可訪問多個SPU 104的結(jié)果并且可訪問更多可用存儲器資源的單個處理器,例如PPU 102。由于PPU 102能夠立即訪問整體幀,而SPU104可能優(yōu)選地在分立塊上操作,因此,可以將塊的劃分和聚合處理交付給PPU 102。此外,當(dāng)塊304被卸載(offload)到SPU 104時,PPU 102與SPU 104之
13間的交互優(yōu)選地可以被最小化。這通過平衡多個高速SPU 104而提高了最大計(jì)算吞吐量,同時避免了與跨處理或通信相關(guān)聯(lián)的延遲。
將幀分裂為不重疊的唯一塊在處理點(diǎn)效果時表現(xiàn)良好。然而,對于區(qū)域效果,相同的不重疊塊可能仍然有助于輸出,但是需要邊緣周圍的額外像素?cái)?shù)據(jù)。例如,可能需要5x5像素塊來修改或輸出3x3像素塊304。
對于塊304,可能經(jīng)效果修改的塊304的部分稱為'主要數(shù)據(jù),402。毗鄰主要數(shù)據(jù)402的另外的數(shù)據(jù),亦稱為'邊緣數(shù)據(jù)'406可能被需要來輔助處理區(qū)域效果。主要數(shù)據(jù)402與邊緣數(shù)據(jù)406的組合稱為塊304的'總數(shù)據(jù),。類似地,被主要數(shù)據(jù)402覆蓋的區(qū)域稱為^內(nèi)部范疇'(inner extent ) 404,而被主要數(shù)據(jù)402與邊緣數(shù)據(jù)406的組合覆蓋的區(qū)域稱為'外部范疇,(outer extent) 408。
所需邊緣數(shù)據(jù)406的量取決于區(qū)域效果。例如,巻積效果可能需要每個塊304的相當(dāng)于1像素寬周長的邊緣數(shù)據(jù)406。圖4圖示出了12x 12像素幀302的塊劃分。在圖4中,像素幀302被劃分為16個3 x 3像素塊304 (304-1至304-16)。例如,雖然塊304-6可以具有包含內(nèi)部范疇404的3 x 3像素主要數(shù)據(jù)402,然而總數(shù)據(jù)包含具有外部范疇408的5 x 5像素區(qū)域,包括主要數(shù)據(jù)402以及毗鄰像素寬的邊緣數(shù)據(jù)406。
在該示例中,每個塊的邊緣數(shù)據(jù)406與至少一個相鄰塊304的主要數(shù)據(jù)402重疊??梢匀哂嗟貙⒃撨吘墧?shù)據(jù)406包括進(jìn)來,以使得塊304對于效果處理盡可能地自足,以實(shí)現(xiàn)最大性能。位于幀302邊緣處的塊304可以包括制造的邊緣數(shù)據(jù)406,以確保它們可以被均一地處理。例如,該邊緣數(shù)據(jù)406可以包括幀302的邊界像素的拷貝,或者被設(shè)為固定值。
在圖4的示例實(shí)施例中,塊304-6的所有邊緣數(shù)據(jù)406都位于相鄰塊304的內(nèi)部范疇404內(nèi);這樣,塊304-6被當(dāng)作'內(nèi)部塊,。作為對比,塊304-16的兩個邊緣與幀302的邊緣重合;這樣,需要像上述那樣來制造塊304-16的一部分邊緣數(shù)據(jù)406。在塊創(chuàng)建時制造邊緣塊304的邊緣數(shù)據(jù)406可以避免需要各個效果具有專門的邊界條件檢查,并且避免需要效果在內(nèi)部或邊緣塊304之間進(jìn)行區(qū)分。
排除了任何邊緣數(shù)據(jù)406的塊304的大小也稱為'主要塊大小',因
14為這是塊304中對最終輸出圖像幀有貢獻(xiàn)的唯一部分。包括邊緣數(shù)據(jù)在內(nèi)的塊的大小稱為^總塊大小'。
在圖4中,每個塊304的主要塊大小可以為9像素,而總塊大小可以為25。由于這些塊是正方形的,因此只要將來自邊緣數(shù)據(jù)的像素添加到輸出塊大小中就可以計(jì)算出每個邊。
雖然相對于空間效果描述了所公開的塊劃分,然而,本領(lǐng)域技術(shù)人員將明白,塊劃分在時間域中也可以起作用。當(dāng)在時間域中作用時,塊304主要包括來自時間上相鄰幀的像素,并且總塊大小可以是二維或三維的,而不是像空間域中那樣是二維的。
雖然圖5A和圖5B圖示出了 9像素的各塊304的主要塊大小以及25像素的總塊大小,然而,本領(lǐng)域技術(shù)人員將理解,通過獨(dú)立地針對每個維度考慮流水線中的各個效果的邊緣需求,可以將這種實(shí)施方式擴(kuò)展到非正方形塊。此外,還可以將實(shí)施方式擴(kuò)展到多維域(其中,塊不是二維的,而是多維的,即n維)。
流水線系統(tǒng)中的塊邊緣
在包含多個效果的效果流水線的上下文中,多個區(qū)域效果中的每個將連續(xù)地使總塊大小的邊緣需求增加。將相對于包括三個區(qū)域效果(每個區(qū)域效果需要1像素寬的邊緣)來描述下面的示例實(shí)施例。然而,將明白,給定效果可能需要各種邊緣像素寬度,這可能會或者可能不會均一地被分布在內(nèi)部范疇404周圍。
此示例中的主要數(shù)據(jù)402可以包括具有9像素的內(nèi)部塊大小以及25像素的總塊大小的塊304。增加邊緣數(shù)據(jù)406產(chǎn)生了25像素的大小的塊,其承載了供流水線中的第一效果產(chǎn)生主要數(shù)據(jù)402的輸出的足夠信息。然而,當(dāng)?shù)谝恍Ч幚韷K304時,流水線中的下一區(qū)域效果利用余下的3x3像素的數(shù)據(jù)可能沒有足夠數(shù)據(jù)來產(chǎn)生主要數(shù)據(jù)402的數(shù)據(jù),或者下一效果可能必須訪問與經(jīng)修改的主要數(shù)據(jù)402不相符的未經(jīng)修改的邊緣數(shù)據(jù)406。這是因?yàn)閴K304的邊緣數(shù)據(jù)406將會仍然與第一效果接收到它時相同,而主要數(shù)據(jù)402將會反映第一效果的輸出。為了應(yīng)對流水線的情形,可能需要提供更大的總塊大小,這是因?yàn)槊總€連續(xù)區(qū)域效果可能僅能夠產(chǎn)
15生越發(fā)小的區(qū)域的輸出。
圖5A圖示出了用于在流水線情景中處理三個區(qū)域效果的減小范疇(reduced-extent)策略的示例實(shí)施例。該示例實(shí)施例通過為流水線中的每個連續(xù)區(qū)域效果增加額外的邊緣數(shù)據(jù)406來克服連續(xù)區(qū)域效果所導(dǎo)致的減少,使得每個在前的區(qū)域效果可以處理作為其輸出的一部分的后續(xù)效果的邊緣數(shù)據(jù)406。
在例示的減小范疇策略中,三個區(qū)域效果連續(xù)地處理像素塊。利用該策略,隨著塊304被各個效果處理,塊304的外部范疇連續(xù)地收縮。在上面示例的上下文中,第一效果處理81個像素,并且輸出或修改49個像素,第二效果處理49個經(jīng)修改的像素并輸出或修改25個像素,并且第三效果處理25個經(jīng)修改的像素,并輸出或修改內(nèi)部范疇404內(nèi)的9個像素。
在第一步驟中,主要塊大小為9像素,而總塊大小為81像素。第一區(qū)域效果被提供有具有外部范疇408-3的塊304,其產(chǎn)生具有外部范疇408-2的總數(shù)據(jù)的輸出。第二區(qū)域效果被提供有具有外部范疇408-2的總數(shù)據(jù),其產(chǎn)生具有外部范疇408-1的總數(shù)據(jù)的輸出。第三區(qū)域效果隨后被提供有具有外部范疇408-1的塊304,并且產(chǎn)生主要數(shù)據(jù)402的輸出。
圖5B圖示出了用于確定利用減小范疇策略在給定圖5A的三個效果的情況下生成所需要主要數(shù)據(jù)402區(qū)域輸出所需的外部范疇408的大小的處理。塊的外部范疇408是通過如下處理確定的取用所需要的內(nèi)部范疇404 (此示例中的3 x 3個像素),并且增加流水線中的最后一個區(qū)域效果的邊緣數(shù)據(jù)406 (以獲得5 x 5像素的外部范疇408-l),然后返回中間區(qū)域效果(以獲得7 x 7像素的外部范疇408-2),然后返回最后一個效果的外部范疇506 (以獲得9 x 9像素的外部范疇408-3)。該處理生成了具有9 x 9像素的外部范疇408-3的塊大小。
計(jì)算此的替代方式是簡單地將各個效果所需的邊緣尺寸增加到主要數(shù)據(jù)402的尺寸上。假若主要數(shù)據(jù)402的塊的原始尺寸為3 x 3像素,并且每個效果需要1像素邊界(在每個維度上增加2像素),則總尺寸為9 x9。
減小范疇策略在遍歷流水線時受益于給予每個塊304的高度獨(dú)立性。
16即, 一旦塊304進(jìn)入流水線,在數(shù)據(jù)塊304離開流水線之前,不需要與任何其它鄰近塊304同步,也不需要任何控制機(jī)制來確保數(shù)據(jù)完整性。這還提供了減小流水線延時的最大自由度。
雖然減小范疇策略導(dǎo)致了流水線中除了最后一級之外的所有效果的處理時間和總數(shù)據(jù)的存儲方面的額外成本,然而,,可以通過在點(diǎn)效果和區(qū)域效果之間進(jìn)行區(qū)分并且將任何點(diǎn)效果朝流水線的末尾(最后一個區(qū)域效果之后)放置來減小成本和延時。
圖6A圖示出了用于處理效果流水線的固定范疇策略。在固定范疇策略中,在每個塊304與鄰近塊304同步之前,在流水線的每一級僅處理一個效果。當(dāng)給定塊304與其鄰居同步之后,其可以被流水線中的下一效果處理。該策略可能使流水線延時增加一些余裕,但是減小了計(jì)算開銷。
圖6A圖示出了所有效果的內(nèi)部范疇404和外部范疇408都相同的固定范疇策略的示例實(shí)施例。在圖6A中,每個效果利用總數(shù)據(jù)作為輸入僅處理主要數(shù)據(jù)402。每個區(qū)域效果被處理之后與鄰近塊304的同步確保了在下一效果被處理之前,利用鄰近塊304的主要數(shù)據(jù)402更新塊304中的所有數(shù)據(jù)。
固定范疇策略的效率可能受塊304被處理的順序的影響。由于固定范疇策略需要鄰近塊304之間的后效果(post-effect)數(shù)據(jù)的同步,因此,在第一 (或在先)效果處理了給定塊的所有鄰近塊304并且給定塊的邊緣數(shù)據(jù)406與其鄰近塊304同步之前,給定的第二 (或當(dāng)前)效果不能開始處理該給定塊。作為示例,在經(jīng)第一效果處理之后,塊304-1必須在被第二效果處理之前與其周圍塊,即塊304-2、 304-5和304-6同步。類似地,塊304-6必須與塊304-1、 304-2、 304-3、 304-5、 304-7、 304-9、 304-10和304-11同步。
圖6B圖示出了以連續(xù)順序處理塊的塊遍歷策略(block traversalstrategy)的示例實(shí)施例。雖然是最簡單的處理策略,然而,該策略可能不是效率最高的。給定多處理器100的并行性質(zhì),PPU 104可以緊鄰其鄰近塊304被處理之后開始對給定塊的邊緣數(shù)據(jù)406進(jìn)行同步。作為示例,當(dāng)塊304-1經(jīng)第一效果處理之后,在其可以被同步之前,必須等待5個塊,即塊304-2至304-6被處理。類似地,當(dāng)塊304-6經(jīng)第一效果處理之后,在其可以被同步之前,必須等待5個塊,即塊304-7至304-11被處理。這樣,替代的塊遍歷策略可以提高固定范疇策略的并行性。
圖6C圖示出了替代的塊遍歷策略的示例實(shí)施例,其中,塊被處理以便減少在給定塊可以被同步之前必須處理的塊304的數(shù)目。作為示例,當(dāng)塊304-1經(jīng)第一效果處理之后,在其可以被同步之前,必須等待僅3個其它塊,即塊304-2、 304-5至304-6被處理。對于塊304-1,兩種策略都需要與3個鄰近塊304交換數(shù)據(jù)。由于在3個鄰近塊304被處理時實(shí)際等待的塊304的數(shù)目是固定的(4塊)并且與幀中的塊304的總數(shù)無關(guān),因此替代的塊遍歷策略更有用。作為對比,在圖6B的原始遍歷策略中,即使塊304-1取決于相同數(shù)目的塊304,也需要等待同一行中的所有其它塊304(塊304-2至304-4)以及該幀的下一行中的兩個相關(guān)塊(304-5禾n 304-6)被處理。這包括了三個相關(guān)塊(304-2、 304-5、 304-6)以及兩個無關(guān)塊(304-3、 304-4);后者因遍歷策略(對于從頂部至底部的所有行,在每行中向左或向右遍歷)而被包括。這對于具有較大塊分布的幀來說可能更顯著(例如,對于100X100塊的幀,利用圖6B的策略,塊0可能需要等待101塊,即3個相關(guān)塊和98個無關(guān)塊,但是利用圖6C的策略仍僅需等待4個塊304,即3個相關(guān)塊、1個無關(guān)塊)。
雖然圖6C示出了用于處理塊304的一個替代策略,然而,該策略僅僅是示例性的,并且意圖示出改變處理塊304的潛在遍歷順序的益處。此外,替代的遍歷策略在本發(fā)明的精神內(nèi)也是可能的。例如,替代策略可以通過優(yōu)化不同塊劃分策略、流水線中的效果、存儲器容量、處理器速度等來提高性能。
流水線處理
圖7圖示出了根據(jù)本發(fā)明在多核處理器100上執(zhí)行效果流水線的處理700的示例實(shí)施例。雖然處理700可以在各種系統(tǒng)中實(shí)現(xiàn),然而,為了清楚,相對于多核處理器100進(jìn)行描述。
在步驟702,多核處理器100可以接收標(biāo)識效果流水線的輸入。效果流水線可以標(biāo)識可由SPU 104執(zhí)行以處理像素塊304的多個效果。PPU
18102可以分析多個效果以識別出各個效果的空間/時間邊緣需求。
在步驟704,可以基于步驟702中的分析將效果指派并分布到多個SPU 104中。PPU 102可以給每個SPU 104指派一個效果?;蛘?,PPU 102可以將多個簡單的運(yùn)行快速的效果指派給單個SPU 104,并且將復(fù)雜的運(yùn)行慢速的效果指派給多個SPU 104。在另一替代實(shí)施例中,系統(tǒng)可以依賴于動態(tài)負(fù)荷平衡來管理效果在各個SPU 104間的分配。
在步驟706, PPU 102可以接收圖像幀302用于根據(jù)效果流水線進(jìn)行處理?;蛘?,PPU 102可以經(jīng)由存儲器接口 106從存儲器或者任何其它可訪問數(shù)據(jù)源讀取圖像幀302。
在步驟708, PPU 102可以從圖像幀302生成數(shù)據(jù)塊304。數(shù)據(jù)塊304的大小和結(jié)構(gòu)可以是預(yù)定義的,或者可以取決于各個效果的處理需求以及所釆用的處理策略。
在步驟710, PPU 102可以將各個數(shù)據(jù)塊304提供給被指派給效果流水線中的第一效果的SPU 104。各個數(shù)據(jù)塊304隨后可以按效果流水線所定義的順序遍歷效果流水線的多個效果。
在步驟712,當(dāng)數(shù)據(jù)塊304經(jīng)效果流水線所確定的最后一個效果進(jìn)行處理后,數(shù)據(jù)塊304可由PPU 102聚合在存儲器緩存103或其它存儲器中。PPU102然后可以將經(jīng)聚合的數(shù)據(jù)塊304組合成為圖像幀302。
在步驟714,如果任何其它圖像幀302需要通過效果流水線進(jìn)行處理,則處理返回步驟706;否則,處理結(jié)束。
圖11圖示出了在現(xiàn)有技術(shù)中,6級效果流水線中的預(yù)期延時為六幀,這是因?yàn)橥ㄟ^定義,每個幀花費(fèi)一幀時間進(jìn)行處理。
圖8圖示出了經(jīng)修改的效果流水線,其中,最小工作份額被減少為塊304。在此實(shí)施例中,每個塊304等于半個幀302,因此,由各個效果以1/2的幀時間來處理。如圖8所示,這可以將延時從6幀減少為3!/2幀。
在圖8中,第一半幀F(xiàn)1B1在3幀G/2幀X6個效果)內(nèi)被處理。第二半幀F(xiàn)1B2也在3幀內(nèi)被處理,但是僅在第一半幀F(xiàn)1B1后!/2幀進(jìn)入流水線。結(jié)果,第二半幀F(xiàn)1B2在3 W幀G/2幀X6個效果+V2幀延時)內(nèi)離開流水線,導(dǎo)致整個第一幀302的總的幀時間延時為3 V0貞。
19圖9所示的示例實(shí)施例使用圖8的基于塊的架構(gòu)內(nèi)的相同效果流水線,但是塊大小被減小到四分之一幀。與現(xiàn)有技術(shù)相比,本實(shí)施例通過再次減小塊大小,生成了從6幀到2 1/4幀的流水線延時改善。
在圖9中,第一四分之一幀F(xiàn)1B1在1 ^幀(1/4幀X6個效果)內(nèi)被處理。四分之一幀F(xiàn)1B2也在1 '/2幀內(nèi)被處理,但是僅在第一四分之一幀F(xiàn)1B1后1/4幀進(jìn)入流水線。結(jié)果,第二四分之一幀F(xiàn)1B2在1 3/4幀(1/4幀X6個效果+l/4幀延時)內(nèi)離開流水線。第三和第四個四分之一幀F(xiàn)1B3和F1B4也在第一四分之一幀F(xiàn)1B1之后^幀和3/4幀離開流水線。結(jié)果,第一幀在2 1/4幀內(nèi)被處理。
上面的示例清楚地表明了基于塊的效果處理相對于基于幀的效果處理的優(yōu)點(diǎn)。隨著塊大小持續(xù)減小,獲得關(guān)于流水線延時的更高增益變得可能;然而,增益變得越來越小。最終,從數(shù)據(jù)塊304的數(shù)據(jù)傳送以及處理的其它計(jì)算方面引入的延時隨著進(jìn)一步的塊減小而超過了增益。
與傳統(tǒng)的基于幀的體系結(jié)構(gòu)類似,基于塊的系統(tǒng)的流水線延時也可以定義為鏈中的最慢效果的處理時間與流水線中的效果(或級)數(shù)之積。然而,切換為基于塊的體系結(jié)構(gòu)將此減小為最慢效果M處理一塊304數(shù)據(jù)所花時間與效果(或級)數(shù)減1的乘積,再加上最慢效果處理一幀302數(shù)據(jù)所花時間的和。作為計(jì)算時間的基于塊的流水線延時可以計(jì)算為PLCT = (S x T脂)+ ((N- 1) x TBM) (式3)
其中
PLcr是作為計(jì)算時間的流水線延時。,N是流水線中的效果/級數(shù)。
S是從每個幀302生成的塊304的數(shù)目。
TBM是流水線中的最慢效果M處理一塊所需時間。假設(shè)與塊處理相關(guān)聯(lián)的開銷成本可忽略,這計(jì)算出的處理時間為TFM = (SxTBM) (式4)
例如,圖7所示的基于塊的系統(tǒng)的PLcr在S=2時變?yōu)?2 x 60) + (5 x60) = 420ms。由于我們忽略了與到塊處理的切換相關(guān)聯(lián)的任何開銷,因此T脂簡單地計(jì)算為TFM/S。計(jì)算以幀時間為單位的PL產(chǎn)生了公式PLFT = PLCT/FR (式5)其中-
PLpT是以幀時間為單位的流水線延時。
PLcT是作為計(jì)算時間的流水線延時。
,F(xiàn)R是有效幀頻。
利用上面的數(shù)字,圖8中的示例的PLpT為420 / 120 = 3.5幀,等于先前計(jì)算出的數(shù)目。圖9所示示例產(chǎn)生了 270 ms的PLct和2.25幀的PLFT。
如前面所提到的,這些示例假設(shè)基于塊的處理的開銷可忽略?,F(xiàn)實(shí)世界的情景可能具有位于流水線中較前面的效果的較多計(jì)算時間(減小范疇策略),或者較大的同步開銷,因此減小了流水線延時(固定范疇策略)。
存儲器需求
基于塊的系統(tǒng)在流水線的存儲器占用方面提供了重大優(yōu)點(diǎn)。傳統(tǒng)的基于幀的N級流水線需要至少N幀緩沖器來維持所有級的操作。由于在效果流水線的外面處理幀1/0,因此,這種系統(tǒng)還需要幾個額外的幀緩沖器來用于該目的(最少為2, 一個用于輸入, 一個用于輸出,并且如果采用I/0操作的雙緩沖則為4)。因此,處理流水線所需的最少幀緩沖器實(shí)際上為N+2。
如果P表示流水線系統(tǒng)中可用處理器元件的數(shù)目,則所需緩沖器將減少為(P, N)中的最小值個緩沖器,這是因?yàn)?,如果處理器元件的?shù)目少于流水線中的級數(shù),則系統(tǒng)僅可以同時處理P個幀302。相反,如果流水線級數(shù)小于處理器元件數(shù),則系統(tǒng)僅可以同時處理N個緩沖器,伺時其余處理器元件將保持空閑。
計(jì)算傳統(tǒng)的基于幀的流水線所需的幀緩沖器的最小數(shù)目的公式可以得出為
YF = min (P, N) + 2 (式6)其中
Yp是處理流水線所需的幀緩沖器的最小數(shù)目。
21,P是可用處理器元件的數(shù)目。
,N是流水線中的級/效果數(shù)。
則針對緩沖器的實(shí)際存儲器需求變?yōu)?br>
MFBA = YFxZF (式7)其中-
MFBA是利用基于幀的方法的流水線中的緩沖器所需的最小存儲器,以字
節(jié)為單位
Yp是處理流水線所需的幀緩沖器的最小數(shù)目,Zp是每個幀緩沖器的大小,以字節(jié)為單位
基于塊的系統(tǒng)在流水線的存儲器占用方面提供了重大優(yōu)點(diǎn)。由于塊比幀小,因此即使對于較短長度的管道,存儲器節(jié)省也可以是大量的。遵照前面的邏輯,基于塊的系統(tǒng)中所需的最小緩沖器數(shù)可以為min (P, N)個塊緩沖器,加上同樣用于I/0操作的至少2個幀緩沖器。如上
YB = min(P,N) (式8)
其中-
,YB是處理流水線所需的塊緩沖器的最小數(shù)目
'P是可用處理器元件(SPU104)的數(shù)目,N是流水線中的級數(shù)。
然而,所有緩沖器的實(shí)際存儲器需求為MBBA = YBxZB + 2xZF (式9)其中-
MBBA是利用基于塊的方法的流水線中的緩沖器所需的最小存儲器,以字
節(jié)為單位。
YB是處理流水線所需的塊緩沖器的最小數(shù)目。
,ZB是每個塊304緩沖器的大小,以字節(jié)為單位。,Zp是每個幀302緩沖器的大小,以字節(jié)為單位。
作為示例,在4 SPU系統(tǒng)上的6級流水線中,其中,保存一幀302所需存儲器為8192 KB (保存每2048 x 1024尺寸的4字節(jié)每像素HD幀所需的大小),并且每個幀302被劃分為256 x 256尺寸的塊304,保存每個塊304所需的大小為256 KB,并且每個幀302將有32個塊304 (為了簡化,
邊緣大小=0) o
利用傳統(tǒng)的基于幀的方法的公式,基于幀的流水線系統(tǒng)中的緩沖器所需的最小存儲器為
MFBA = [min (P, N) + 2] x ZF = [min (4, 6) + 2] x 8192 = 6 x 8192 = 49152 KB作為比較,利用基于塊的方法處理相同流水線所需的最小存儲器為
MBBA = [min (P, N)] x ZB + 2 x ZF = [min (4, 6)] x 256 + 2 x 8192 = 4 x 256 +
2 x 8192= 17408 KB。
此外,可以注意,兩個強(qiáng)制性(mandatory)幀緩沖器消耗了基于塊的
系統(tǒng)所使用的17MB中的16MB。因此,通過移除這些強(qiáng)制性緩沖器,可
比存儲器使用之差變?yōu)榛趲南到y(tǒng)的32MB相對于基于塊的系統(tǒng)的1.5
MB。即使基于塊的方法對于連續(xù)的區(qū)域效果將需要更大量的存儲器,存
儲器消耗也不可能接近基于幀的系統(tǒng)的存儲器消耗。III.負(fù)荷平衡
到此為止所圖示出的示例實(shí)施例假設(shè)所有構(gòu)成效果花費(fèi)相同量的時間來處理相同量的數(shù)據(jù)(不管是幀302還是塊304)。然而,效果可以基于它們的算法以及實(shí)施方式復(fù)雜度而花費(fèi)變化量的時間。不同效果的變化的處理時間可以降低流水線延時,并最慢效果導(dǎo)致了瓶頸。瓶頸隨后可能使下游SPU 104缺乏工作。如果緩沖器數(shù)目受到限制,這還可能使上游SPU104缺乏工作,這是因?yàn)榇鎯ζ鞅幌摹?br>
圖10A圖示出了效果的各自計(jì)算時間極大地變化的流水線的一個示例。在圖10A中,效果FX1、 FX2和FX4需要20 ms的計(jì)算時間,效果FX3需要160 ms的計(jì)算時間,而效果FX5和FX6需要10 ms的計(jì)算時間。在此實(shí)施例中,由于各個塊在效果FX1處進(jìn)入流水線并且連續(xù)地通過各個效果FX2-FX6,因此,在效果FX3處產(chǎn)生了瓶頸。
圖IOA中的處理流水線與相對于圖8和圖9所討論的每個SPU 104被指派有單個效果的實(shí)施例類似。然而,盡管在圖8和圖9中塊延時為6個塊,但是在圖10中,總的流水線延時因效果3所創(chuàng)建的瓶頸而高許多。這導(dǎo)致下游的效果(因此,其它SPU 104)在空閑狀態(tài)中浪費(fèi)時間。長期
23地,此瓶頸可能導(dǎo)致利用極大量的緩沖器僅僅用來保持上游SPU 104被占 用,而在輸出端沒有任何益處。
靜負(fù)荷平衡(Static Load Balancing)提供了對此問題的第一解決方 案。靜負(fù)荷平衡包括通過將所涉及的各個效果(FX1-FX6)的計(jì)算時間 考慮在內(nèi),來執(zhí)行對效果的靜態(tài)分析。這允許了效果的在先分布,其可以 包括將短計(jì)算效果組合到單個資源(即, 一個或較少的SPU),同時增加 較慢效果的資源數(shù)(例如,貢獻(xiàn)多個SPU)。
圖IOB圖示出了負(fù)荷平衡效果流水線的一個示例。圖IOB中的效果處 理時間與圖IOA相等;然而,效果在不同SPU 104 (104-1至104-6)之間 是負(fù)荷平衡的。在圖11B中,SPU 104-2至104-5專用于效果FX3。 SPU 104-1被指派給效果FX1和FX2,而SPU 104-6被指派給效果FX4、 FX5 和FX6。這種分布使用了所有的SPU 104,同時還限制了緩沖器的使用并 且提升了整體性能。尤其明顯的是效果FX3所消耗的過多處理時間被分布 在了多個SPU 104 (104-2至104-5)上的事實(shí)。這確保了當(dāng)每個塊304離 開效果FX2時,有可用SPU 104來處理效果FX3。此外,當(dāng)每個塊304離 開效果FX3時,指派給效果FX4至FX6的SPU 104立即可用。
對于固定功能流水線,靜負(fù)荷平衡可以工作得很好,但是在需要一般 效果流水線或者甚至在需要效果處理時間基于輸入數(shù)據(jù)的復(fù)雜性或外部參 數(shù)而變化的固定功能流水線時,不能夠很好的擴(kuò)展。
在處理負(fù)荷基于外部輸入(例如處理時間隨著用戶提供的參數(shù)而改變 的效果)或基于工作負(fù)荷本身(例如,基于編碼數(shù)據(jù)內(nèi)的壓縮變化的解碼 器)逐幀或逐塊變化的情況中,動態(tài)負(fù)荷平衡提供了對靜負(fù)荷平衡的替 代。
從基于幀的處理切換為基于塊的處理允許了調(diào)度系統(tǒng)中的更有效的動 態(tài)負(fù)荷平衡,這是因?yàn)橛懈嗟耐近c(diǎn)可供調(diào)度者用來使事件相抵消,并 且可以將本地化工作差異考慮在內(nèi)(例如,同一幀內(nèi)包含低反差數(shù)據(jù)的塊 和包含高反差數(shù)據(jù)的塊對于不同效果將具有不同的性能特性,并且切換到 基于塊的動態(tài)負(fù)荷平衡允許系統(tǒng)以更細(xì)粒度的水平來適應(yīng)此)。
關(guān)于這里描述的處理、系統(tǒng)、方法、試探法等,應(yīng)當(dāng)明白,雖然這些處理的步驟等被描述為根據(jù)某種順序序列而發(fā)生,然而,也可以利用按除 了這里描述的順序之外的順序執(zhí)行的所描述步驟來實(shí)施這些處理。還應(yīng)當(dāng) 明白,可以同時執(zhí)行某些步驟,可以添加其它的步驟,或者可以省略這里 描述的某些步驟。處理也可以實(shí)現(xiàn)為客戶端、服務(wù)器和/或數(shù)據(jù)庫中的計(jì)算 機(jī)可執(zhí)行指令(例如, 一個或多個腳本)、存儲的過程、可執(zhí)行程序等。 換言之,這里對處理的描述被提供用于圖示說明某些實(shí)施例的目的,而決 不應(yīng)當(dāng)被解釋為限制要求保護(hù)的發(fā)明。
因此,將明白,上面的描述希望是說明性的而非限制性的。本領(lǐng)域技 術(shù)人員在閱讀了上面的描述之后將清楚除了所提供的示例之外的許多實(shí)施 例和應(yīng)用。不應(yīng)當(dāng)參考上面的描述而應(yīng)當(dāng)參考所附權(quán)利要求書以及這些權(quán) 利要求享有的等同物的全部范圍來確定本發(fā)明的范圍。預(yù)期并希望將來的 發(fā)展將在這里所討論的技術(shù)中發(fā)生,所提到的系統(tǒng)和方法將包括在這些將 來的實(shí)施例中。總之,應(yīng)當(dāng)明白,本發(fā)明能夠進(jìn)行修改和變化并且僅由下 面的權(quán)利要求來限定。
所公開的并行處理方法可以應(yīng)用于音頻效果流水線、3D效果流水線 或者可以將數(shù)據(jù)拆分為分離塊并且通過效果流水線被處理的任何情形。
諸如這里所討論的那些計(jì)算設(shè)備之類的計(jì)算設(shè)備(例如,處理器、客 戶端、服務(wù)器、終端等) 一般可以包括可執(zhí)行指令。此外,處理器可以包 括包含了諸如SPU、 PPU、 GPU等之類的任意數(shù)目的處理組件的任何設(shè)備 本身??梢詮挠?jì)算機(jī)程序編譯或解析計(jì)算機(jī)可執(zhí)行指令,計(jì)算機(jī)程序是利 用本領(lǐng)域技術(shù)人員公知的包括但不限于單獨(dú)或組合形式的Java、 C、 C++、匯編等多種編程語言和/或技術(shù)創(chuàng)建的。 一般地,處理器(例如,微 處理器)接收指令(例如,從存儲器、計(jì)算機(jī)可讀介質(zhì)等),并執(zhí)行這些 指令,由此來執(zhí)行包括這里描述的一個或多個處理在內(nèi)的一個或多個處 理??梢岳枚喾N公知的計(jì)算機(jī)可讀介質(zhì)來存儲并發(fā)送這些指令和其它數(shù) 據(jù)。
計(jì)算機(jī)可讀介質(zhì)包括可由計(jì)算機(jī)讀取的參與提供數(shù)據(jù)(例如,指令) 的任何介質(zhì)。這種介質(zhì)可以采取許多形式,包括但不限于非易失性介質(zhì)、 易失性介質(zhì)以及傳輸介質(zhì)。非易失性介質(zhì)例如可以包括光或磁盤以及其它
25永久性存儲器。易失性介質(zhì)包括動態(tài)隨機(jī)存取存儲器(DRAM),其通常 構(gòu)成主存儲器。
計(jì)算設(shè)備之間以及計(jì)算設(shè)備內(nèi)的通信可以采用傳輸介質(zhì),包括同軸線 藍(lán)、銅線以及光纖,包括包含了耦合到處理器的系統(tǒng)總線在內(nèi)的線路。傳 輸介質(zhì)可以包括或傳送聲波、光波以及電磁發(fā)射,例如在射頻(RF)和紅 外(IR)數(shù)據(jù)通信期間生成的那些發(fā)射物。計(jì)算機(jī)可讀介質(zhì)的普通形式例 如包括軟盤、可折疊磁盤、硬盤、磁帶、任何其它磁介質(zhì)、CD-ROM、 DVD、任何其它光介質(zhì)、穿孔卡、紙帶、任何其它具有孔圖案的物理介 質(zhì)、RAM、 PROM、 EPROM、 FLASH-EEPROM、任何其它存儲芯片或模 塊、如此后描述的載波、或者可由計(jì)算機(jī)讀取的任何其它介質(zhì)。
因此,本發(fā)明的實(shí)施例產(chǎn)生并提供了流水線化圖像處理引擎。雖然已 參考本發(fā)明的某些實(shí)施例相當(dāng)詳細(xì)地描述了本發(fā)明,然而,在不脫離本發(fā)
明的精神或范圍的情況下,可以以各種形式體現(xiàn)本發(fā)明。因此,下面的權(quán) 利要求不應(yīng)當(dāng)以任何方式受限于這里所包含的對實(shí)施例的描述。
本申請與2008年9月9日提交的美國臨時申請No. 61/191,557有關(guān), 該申請的全部內(nèi)容通過引用結(jié)合于此。
2權(quán)利要求
1.一種用于通過效果流水線處理圖像幀的方法,所述方法包括生成多個塊,每個塊包含一組主要像素和一組總像素,所述總像素包括所述效果流水線中的效果產(chǎn)生針對所述主要像素的輸出所需的作為輸入的任何像素;以預(yù)定的連續(xù)順序通過所述效果流水線來處理每個塊,所述效果流水線被分布在多個處理節(jié)點(diǎn)中;以及通過組合經(jīng)處理塊中的所述主要像素,來聚合經(jīng)處理的塊以產(chǎn)生輸出幀,其中,所述效果流水線中的每個效果處理作為輸入被提供給節(jié)點(diǎn)的塊,以產(chǎn)生針對所述塊的所述主要像素的輸出。
2. 如權(quán)利要求1所述的方法,其中,總塊像素包括所述主要像素以及 至少一個效果產(chǎn)生針對所述主要像素的輸出所需的作為輸入的任何其它像 素。
3. 如權(quán)利要求1所述的方法,其中,生成多個塊還包括分析效果以 確定生成針對所述主要像素的輸出所需要的總像素。
4. 如權(quán)利要求3所述的方法,其中,生成多個塊包括分析第一效果以確定產(chǎn)生針對所述主要像素的輸出所需要的總像素;以及分析第二效果以確定生成針對所述總像素的輸出所需的總像素,所針 對的總像素是所述第一效果產(chǎn)生針對所述主要像素的輸出所需的。
5. 如權(quán)利要求4所述的方法,其中,所述處理步驟在通過所述第二效 果處理塊之后并且在處理所述第一效果之前,減少所述塊中的總像素的數(shù) 目。
6. 如權(quán)利要求1所述的方法,其中,所述處理步驟包括在處理第一 效果之后并且在處理第二效果之前,利用來自至少一個鄰近塊的主要像素 來更新塊中的總像素。
7. 如權(quán)利要求1所述的方法,其中,所述總像素包括通過所述效果流水線中的多個效果連續(xù)地處理塊以產(chǎn)生針對所述主要像素的輸出所需的作 為輸入的任何像素。
8. 如權(quán)利要求1所述的方法,其中,生成多個塊包括分析每個效果 以判斷所述效果是像素效果、區(qū)域效果還是范圍效果。
9. 如權(quán)利要求1所述的方法,其中,生成多個塊包括分析節(jié)點(diǎn)可用 的資源以及效果,以確定所述多個塊中的每個塊的總像素和主要像素的數(shù) 目。
10. 如權(quán)利要求1所述的方法,其中,所述總像素包括來自時間上鄰 近的圖像幀的多個像素。
11. 如權(quán)利要求1所述的方法,其中,所述總像素包括輸入圖像幀內(nèi) 的多個空間上鄰近的像素。
12. 如權(quán)利要求1所述的方法,其中,當(dāng)通過效果流水線處理每個塊 時,每個處理節(jié)點(diǎn)獨(dú)立地利用效果對塊進(jìn)行處理。
13. 如權(quán)利要求1所述的方法,其中,所述處理步驟包括調(diào)度效果 以減少每幀中的第一塊的開始處理與每幀中的最后一塊的輸出之間的延 時。
14. 一種用于通過效果流水線處理圖像幀鏈的裝置,包括 主要處理器,該主要處理器包括塊生成器、效果分布器和塊聚合器; 多個輔助處理器,每個輔助處理器包括存儲塊的內(nèi)容的最小存儲器緩存;以及總線,該總線互連所述主要存儲器、所述多個輔助處理器以及存儲器 接口;其中所述塊生成器從經(jīng)由所述存儲器接口提供的輸入圖像幀中生成多 個塊,每個塊包含來自所述輸入圖像幀的一組主要像素和一組總像 素,所述總像素包括所述效果流水線中的效果產(chǎn)生針對所述主要像素 的輸出所需的作為輸入的任何像素,所述效果分布器管理效果和所述多個塊在所述多個輔助處理器間 的分布和處理順序,所述塊聚合器組合經(jīng)處理的塊;所述多個輔助處理器通過所述效果流水線以連續(xù)順序處理每個 塊,所述效果流水線被分布在所述多個輔助處理器中,以及每個輔助處理器執(zhí)行獨(dú)立地處理每個塊以產(chǎn)生針對所述塊的主要 像素的輸出的效果。
15. 如權(quán)利要求14所述的裝置,其中,每個塊中的所述總像素包括所 述主要像素以及至少一個效果輸出所述主要像素所需的作為輸入的任何其 它像素。
16. 如權(quán)利要求14所述的裝置,其中,所述主要處理器分析效果以確 定生成所述主要像素所需的總像素。
17. 如權(quán)利要求14所述的裝置,其中,所述塊生成器分析第一效果以 確定生成所述主要像素所需的總像素,并且分析第二效果以確定生成所述 第一效果需要用來生成所述主要像素的總像素所需的總像素。
18. 如權(quán)利要求17所述的裝置,其中,輔助處理器在通過所述第二效 果處理塊之后并且在處理所述第一效果之前,減少所述塊中的總像素的數(shù) 目。
19. 如權(quán)利要求14所述的裝置,其中,所述輔助處理器在對塊處理第 一效果之后并且在處理第二效果之前,利用來自至少一個鄰近塊的主要像 素來更新所述塊的總像素。
20. 如權(quán)利要求14所述的裝置,其中,所述總像素包括執(zhí)行效果流水 線中的至少一個效果以產(chǎn)生針對所述主要像素的輸出的至少一個輔助處理 器連續(xù)地處理塊所需的作為輸入的任何像素。
21. 如權(quán)利要求14所述的裝置,其中,所述塊生成器分析每個效果以 判斷至少一個效果是像素效果、區(qū)域效果還是范圍效果。
22. 如權(quán)利要求14所述的裝置,其中,生成多個塊包括分析輔助處 理器可用的資源以及相對應(yīng)的效果,以確定總像素和主要像素的數(shù)目。
23. 如權(quán)利要求14所述的裝置,其中,所述總像素包括來自時間上鄰 近的圖像幀的多個像素。
24. 如權(quán)利要求14所述的裝置,其中,所述總像素包括空間上鄰近的塊中的多個主要像素中的像素。
25. 如權(quán)利要求14所述的裝置,其中,當(dāng)通過效果流水線處理每個塊 時,每個處理節(jié)點(diǎn)獨(dú)立地利用效果對塊進(jìn)行處理。
26. 如權(quán)利要求14所述的裝置,其中,所述主要處理器包括調(diào)度器, 以減少每幀中的第一塊的開始處理與每幀中的最后一塊的輸出之間的延 時。
全文摘要
本發(fā)明公開了流水線化的圖像處理引擎。本發(fā)明涉及通過將圖像幀分成為多塊圖像數(shù)據(jù)來通過效果流水線處理圖像幀。示例方法包括從每幀生成多個塊,以預(yù)定的連續(xù)順序通過效果流水線來處理每塊,并且通過組合每個經(jīng)處理塊中的主要像素來聚合經(jīng)處理的塊以產(chǎn)生輸出幀。效果流水線可以被分布在多個處理節(jié)點(diǎn)中,并且每個效果可以處理被提供作為節(jié)點(diǎn)的輸入的塊。每個處理節(jié)點(diǎn)可以獨(dú)立地利用效果對塊進(jìn)行處理。
文檔編號G06T1/20GK101673391SQ20091016911
公開日2010年3月17日 申請日期2009年9月9日 優(yōu)先權(quán)日2008年9月9日
發(fā)明者赫曼·K·加拉 申請人:索尼株式會社;索尼電子有限公司