GPU特征处理技术
GPU特征處理技術(shù)
GPU和CPU有何不同?
現(xiàn)代片上系統(tǒng)(SoC)通常集成中央處理器(CPU)和圖形處理器(GPU)。設(shè)計(jì)不同,這可能更取決于處理的數(shù)據(jù)集的類(lèi)型。
CPU經(jīng)過(guò)優(yōu)化,可以一次對(duì)幾塊數(shù)據(jù)執(zhí)行大量分支任務(wù)。在CPU上運(yùn)行的線程通常是唯一的,并且是獨(dú)立執(zhí)行的,通常獨(dú)立于所有其他線程。任何給定的處理元素都將在單個(gè)線程中進(jìn)行處理。CPU上程序的典型線程數(shù)通常為1到8個(gè),在任何時(shí)間段內(nèi)最多為幾十個(gè)。
GPU經(jīng)過(guò)優(yōu)化,工作原理是同一段代碼將在多個(gè)線程中執(zhí)行,通常數(shù)為數(shù)百萬(wàn),以處理當(dāng)今設(shè)備的大屏幕分辨率。這些線程只在輸入上不同,通常遵循完全相同的執(zhí)行步驟。
并行性
每個(gè)圖形處理器在多線程上以單指令多數(shù)據(jù)(SIMD)處理的形式,并發(fā)執(zhí)行同一條指令。
SIMD體系結(jié)構(gòu)的主要優(yōu)點(diǎn),對(duì)于結(jié)構(gòu)正確的應(yīng)用程序,可以并行運(yùn)行大量線程,效率極高。SIMD體系結(jié)構(gòu)通常能夠同時(shí)運(yùn)行比典型CPU多幾個(gè)數(shù)量級(jí)的線程。
SIMD設(shè)計(jì)用于處理大的相干數(shù)據(jù)集,在這類(lèi)任務(wù)中表現(xiàn)得非常出色。因此,在大型相干數(shù)據(jù)集上獨(dú)立運(yùn)行的算法(如圖形和圖像處理),非常適合這種處理器類(lèi)型。
矢量和標(biāo)量處理
現(xiàn)代圖形核心體系結(jié)構(gòu)具有多個(gè)基于矢量或標(biāo)量的處理單元。都受不同版本的PowerVR體系結(jié)構(gòu)支持–Series 5 supporting vector,以及Series 6、Series 7和Series 8 supporting scalar。
標(biāo)量處理單元對(duì)每個(gè)處理單元的單個(gè)值進(jìn)行操作。
向量處理單元對(duì)每個(gè)處理單元處理多個(gè)值。
矢量
向量處理可以非常有效,因?yàn)閳?zhí)行單元可以同時(shí)處理多個(gè)值,而不是只處理一個(gè)值。對(duì)于顏色和頂點(diǎn)操作,這種類(lèi)型的架構(gòu)是非常有效的。因此,傳統(tǒng)的渲染操作非常適合這種體系結(jié)構(gòu),因?yàn)橛?jì)算通常同時(shí)對(duì)三個(gè)或四個(gè)元素進(jìn)行操作。
向量體系結(jié)構(gòu)的主要缺點(diǎn)是,如果使用標(biāo)量值或小于處理器期望值的向量,則會(huì)浪費(fèi)額外的處理元素寬度。最常見(jiàn)的向量寬度是4,這意味著主要操作三個(gè)分量向量的著色器或內(nèi)核將以75%的效率操作這些指令。一次只在一個(gè)標(biāo)量上工作的著色器可能會(huì)將這個(gè)數(shù)字降低到25%。這會(huì)浪費(fèi)能源和性能,因?yàn)樘幚砥鞯哪承┎糠譀](méi)有做任何工作。可以通過(guò)矢量化代碼對(duì)此進(jìn)行優(yōu)化,但這會(huì)增加程序員的負(fù)擔(dān)。
標(biāo)量
標(biāo)量處理器在每個(gè)硬件周期可以執(zhí)行的操作方面往往更加靈活,因?yàn)椴恍枰脭?shù)據(jù)填充額外的處理寬度。雖然向量架構(gòu)可能在同一個(gè)硅區(qū)域中處理更多的值,但對(duì)于非向量化代碼,在標(biāo)量架構(gòu)中每個(gè)時(shí)鐘的實(shí)際有用結(jié)果數(shù)通常會(huì)更高。標(biāo)量體系結(jié)構(gòu)往往更適合于通用處理和更高級(jí)的渲染技術(shù)。
關(guān)于消除混疊反采樣
該技術(shù)引入了GRLAA(Gradient Line Anti-Aliasing,梯度線消除混疊),這是一種相對(duì)簡(jiǎn)單有效的方法,用于處理汽車(chē)導(dǎo)航應(yīng)用中經(jīng)常出現(xiàn)的混疊線。
在信號(hào)處理學(xué)科中,有一個(gè)特定的采樣頻率稱為奈奎斯特頻率。當(dāng)以低于奈奎斯特頻率的頻率對(duì)信號(hào)進(jìn)行采樣時(shí),從這些采樣重構(gòu)的信號(hào)與原始信號(hào)不同。原始信號(hào)和重構(gòu)信號(hào)之間的差異表現(xiàn)為偽影。這種效果稱為“混疊”。
本文討論了計(jì)算機(jī)圖形學(xué)中兩種最常見(jiàn)的混疊現(xiàn)象。第一種是“鋸齒狀”(下圖1),這里原本是一條對(duì)角線的直線,看起來(lái)像鋸齒狀的樓梯。這是由圖形卡的“光柵化器階段”引入的,將“中間”像素渲染為開(kāi)或關(guān)。
第二種是采樣混疊。這是當(dāng)一個(gè)高頻(快速變化的)紋理被用來(lái)渲染遠(yuǎn)處的某物時(shí),比如圖2中的棋盤(pán)格圖案,并且似乎創(chuàng)建了被稱為moir的可見(jiàn)人工制品模式。
有幾種算法可用于消除可見(jiàn)鋸齒的數(shù)量,并去除staircase上的偽影artefacts。但是,這些算法可能會(huì)產(chǎn)生適中的性能成本,這取決于它所部署的硬件。
超級(jí)采樣消除混疊(SSAA)。這是一種暴力技術(shù),比最終分辨率高出整數(shù)倍(x2,x4)的分辨率渲染整個(gè)場(chǎng)景,然后對(duì)整個(gè)幀緩沖區(qū)進(jìn)行下采樣,產(chǎn)生所需的最終分辨率。結(jié)果,鋸齒和紋理偽影采樣,進(jìn)行優(yōu)良的質(zhì)量和改善,但技術(shù)顯然是極其昂貴的。渲染成本(包括光柵操作、片段操作和相關(guān)帶寬)乘以分辨率乘數(shù)的平方,即x4表示x2 SSAA,x16表示x4等
多采樣消除混疊(MSAA)。這種技術(shù)通過(guò)將圖像渲染到一個(gè)緩沖區(qū),增加每個(gè)像素的采樣數(shù),該緩沖區(qū)能夠存儲(chǔ)每個(gè)像素的多個(gè)采樣。然后解析該緩沖區(qū),生成與viewport分辨率匹配的輸出。這在PowerVR硬件上非常有效,因?yàn)榻馕鍪窃谛酒蠄?zhí)行的,節(jié)省了寶貴的內(nèi)存帶寬。MSAA改善了鋸齒,但沒(méi)有對(duì)偽影進(jìn)行采樣。
基于著色器的技術(shù),如快速近似消除混疊(FXAA)或亞像素形態(tài),消除混疊(SMAA)。這兩種技術(shù)分析檢測(cè)和模糊銳化的幾何特征。在屏幕空間中執(zhí)行的后處理算法,通常具有固定的成本(一次全屏傳遞),但需要更多的內(nèi)存帶寬,這在移動(dòng)和嵌入式設(shè)備上通常是額外的。
總結(jié)
- 上一篇: 数据类型概述
- 下一篇: MLIR: 编译器基础架构重定义