圖形處理單元 (GPU) 越來(lái)越多地包含在 SoC 中,驅(qū)動(dòng)嵌入式系統(tǒng)和連接的消費(fèi)電子產(chǎn)品。GPU 可以被認(rèn)為是適合顯示渲染的額外處理器,并且用戶(hù)界面通常構(gòu)成整體產(chǎn)品質(zhì)量的主要指標(biāo),因此最好盡可能地利用它是有意義的。消費(fèi)電子產(chǎn)品通常依賴(lài) HTML 瀏覽器來(lái)提供構(gòu)建 UI 和其他應(yīng)用程序的表示層。在這里,我將看看一些瀏覽器如何使用 GPU,并將其與更集中的方法進(jìn)行對(duì)比。
每當(dāng)頁(yè)面的任何部分發(fā)生變化時(shí),瀏覽器都需要重新繪制屏幕,同時(shí)最大限度地減少 CPU 的工作量。他們通過(guò)跟蹤屏幕上所有需要更新的區(qū)域來(lái)做到這一點(diǎn),然后僅重新繪制這些區(qū)域以及與它們重疊的任何其他屏幕元素的部分。
大多數(shù)瀏覽器使用 CPU 將這些元素的表示繪制成像素圖。通常,要顯示的下一幀是通過(guò)獲取前一幀并覆蓋更改來(lái)創(chuàng)建的,如圖 1 所示。如果可用,GPU 用于將前一幀和部分像素圖數(shù)據(jù)組合到下一幀中,從而釋放 CPU其他任務(wù)。

為了提高性能,許多瀏覽器使用加速合成,這是一種將頁(yè)面中不交互的部分組合在單獨(dú)的層中并獨(dú)立操作這些部分的技術(shù)。這種技術(shù)本質(zhì)上是內(nèi)存和 CPU 使用之間的權(quán)衡。當(dāng)發(fā)生任何變化時(shí),GPU 會(huì)將代表每一層的像素圖合成到幀緩沖區(qū)中,但 CPU 仍用于繪制這些像素圖的內(nèi)容。如圖 2 所示,圖層的組合始終覆蓋整個(gè)屏幕,因此無(wú)需訪(fǎng)問(wèn)前一幀的副本。

使用 GPU
盡管 GPU 提供了相當(dāng)大的靈活性,但瀏覽器在接受其全部?jī)?yōu)勢(shì)方面的速度相對(duì)較慢。瀏覽器設(shè)計(jì)的相互關(guān)聯(lián)性使得重新設(shè)計(jì)核心組件(例如渲染)以利用截然不同的硬件功能變得復(fù)雜。因此,大多數(shù)瀏覽器設(shè)計(jì)仍然將 GPU 視為增強(qiáng)的 blitter,并將其主要用于加速合成。
一段時(shí)間以來(lái),瀏覽器提供商一直在尋求超越簡(jiǎn)單的“GPU 作為一個(gè) blitter”場(chǎng)景。使用 GPU 而不是 CPU 來(lái)處理繪畫(huà)被稱(chēng)為 GPU 光柵化。一些瀏覽器包括使用擴(kuò)展圖形庫(kù)啟用 GPU 光柵化的選項(xiàng),這些圖形庫(kù)將繪畫(huà)任務(wù)傳遞給 GPU。這些庫(kù)滿(mǎn)足廣泛的使用場(chǎng)景,因此提供靈活的通用 API。不幸的是,這些 API 的靈活性對(duì)于 HTML 所需的用例來(lái)說(shuō)過(guò)于復(fù)雜,這會(huì)導(dǎo)致 GPU 的使用欠佳,從而導(dǎo)致渲染性能下降。
GPU 性能來(lái)自于能夠有效地執(zhí)行大量類(lèi)似的批處理操作,為管道提供數(shù)據(jù)以確保它們得到最佳填充。這些擴(kuò)展圖形庫(kù)提供的靈活性通常會(huì)導(dǎo)致無(wú)法保持 GPU 的管道滿(mǎn)載,從而顯著降低其效率。
為了充分利用 GPU,它的管道必須保持滿(mǎn)載;僅關(guān)注 HTML 的要求并將其與 GPU 功能相匹配是關(guān)鍵。HTML 的特性非常適合 GPU 加速。元素本質(zhì)上是矩形的,自然網(wǎng)格對(duì)齊,并且很少使用抗鋸齒。由于 GPU 處理三角形,因此每個(gè)矩形 HTML 元素可以使用兩個(gè)。HTML 所需的圖形基元集也相對(duì)較小,這意味著特定于 HTML 的 GPU 加速圖形 API 是一個(gè)現(xiàn)實(shí)的目標(biāo)。
GPU 光柵化過(guò)程與 CPU 完全異步發(fā)生。這意味著 CPU 可以在繪制任務(wù)完成之前開(kāi)始處理腳本和布局等后續(xù)任務(wù)。GPU 光柵化也改變了優(yōu)化獎(jiǎng)勵(lì)平衡。在 CPU 上,性能優(yōu)化是通過(guò)僅更新屏幕中已更改的那些區(qū)域來(lái)實(shí)現(xiàn)的。而在 GPU 上,最好跟隨游戲行業(yè)的領(lǐng)先地位,每幀更新整個(gè)屏幕。雖然重新繪制每一幀上的每個(gè)像素似乎違反直覺(jué),但在大多數(shù)情況下,重新繪制整個(gè)屏幕的處理成本低于 CPU 管理部分更新所需的計(jì)算成本。
Ekioh在其新的多線(xiàn)程 HTML 瀏覽器中使用了上述技術(shù)并取得了成功。在圖形繁重的應(yīng)用程序中,發(fā)現(xiàn)集中使用 GPU 的速度是更通用的基于庫(kù)的方法的兩倍多。此外,由于 GPU 光柵化不需要用于加速合成的大量緩存像素圖,因此在某些情況下可以節(jié)省大量?jī)?nèi)存(超過(guò) 45 MB)。隨著屏幕分辨率的提高,這些內(nèi)存節(jié)省將變得更加顯著。
因此,集中使用 GPU 是在不犧牲性能的情況下降低成本的關(guān)鍵。使用這種方法,下一代嵌入式芯片將能夠在大眾市場(chǎng)消費(fèi)電子產(chǎn)品上提供基于瀏覽器的 4K 應(yīng)用程序和 UI,而不會(huì)降低性能。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5200文章
20458瀏覽量
334307 -
cpu
+關(guān)注
關(guān)注
68文章
11281瀏覽量
225103 -
gpu
+關(guān)注
關(guān)注
28文章
5196瀏覽量
135512
發(fā)布評(píng)論請(qǐng)先 登錄
DLPC300數(shù)字控制器:解鎖DLP3000 DMD的強(qiáng)大功能
什么是嵌入式應(yīng)用開(kāi)發(fā)?
arm嵌入式主板優(yōu)缺點(diǎn)
探索 RZ/V2L:嵌入式 AI 應(yīng)用的強(qiáng)大之選
系統(tǒng)嵌入式的學(xué)習(xí)路線(xiàn)
ARM嵌入式這樣學(xué)
嵌入式和FPGA的區(qū)別
嵌入式與單片機(jī)定義及區(qū)別
嵌入式系統(tǒng)的定義和應(yīng)用領(lǐng)域
AMD 2025.1版嵌入式軟件和工具的新增功能
嵌入式工程師為什么要學(xué)QT?
Linux嵌入式和單片機(jī)嵌入式的區(qū)別?
嵌入式開(kāi)發(fā)入門(mén)指南:從零開(kāi)始學(xué)習(xí)嵌入式
飛凌嵌入式2025嵌入式及邊緣AI技術(shù)論壇圓滿(mǎn)結(jié)束
飛凌嵌入式「2025嵌入式及邊緣AI技術(shù)論壇」議程公布
為嵌入式瀏覽解鎖GPU的強(qiáng)大功能
評(píng)論