在手機客戶端尤其是Android應(yīng)用的開發(fā)過程中,中培偉業(yè)《Android APP開發(fā)架構(gòu)應(yīng)用實戰(zhàn)》培訓(xùn)專家隋老師指出,我們經(jīng)常會接觸到“硬件加速”這個詞。由于操作系統(tǒng)對底層軟硬件封裝非常完善,上層軟件開發(fā)者往往對硬件加速的底層原理了解很少,也不清楚了解底層原理的意義,因此常會有一些誤解,如硬件加速是不是通過特殊算法實現(xiàn)頁面渲染加速,或是通過硬件提高CPU/GPU運算速率實現(xiàn)渲染加速。
隋老師指出,對于App開發(fā)者,簡單了解硬件加速原理及上層API實現(xiàn),開發(fā)時就可以充分利用硬件加速提高頁面的性能。
硬件加速的主要原理,就是通過底層軟件代碼,將CPU不擅長的圖形計算轉(zhuǎn)換成GPU專用指令,由GPU完成。
很多計算機中的GPU有自己獨立的顯存;沒有獨立顯存則使用共享內(nèi)存的形式,從內(nèi)存中劃分一塊區(qū)域作為顯存顯存可以保存GPU指令等信息。
由于電路的限制,不容易通過提高時鐘頻率、減小時鐘周期的方式提高運算速度。并行結(jié)構(gòu)通過增加電路規(guī)模、并行處理,來實現(xiàn)更快的運算。但并行結(jié)構(gòu)不容易實現(xiàn)復(fù)雜邏輯,因為同時考慮多個支路的輸出結(jié)果,并協(xié)調(diào)同步處理的過程很復(fù)雜。
CPU更擅長復(fù)雜邏輯控制,而GPU得益于大量ALU和并行結(jié)構(gòu)設(shè)計,更擅長數(shù)學(xué)運算。
隋老師最后總結(jié)道:頁面由各種基礎(chǔ)元素(DisplayList)構(gòu)成,渲染時需要進行大量浮點運算。硬件加速條件下,CPU用于控制復(fù)雜繪制邏輯、構(gòu)建或更新DisplayList;GPU用于完成圖形計算、渲染DisplayList。在此條件下,刷新界面尤其是播放動畫時,CPU只重建或更新必要的DisplayList,進一步提高渲染效率。實現(xiàn)同樣效果,應(yīng)盡量使用更簡單的DisplayList,從而達到更好的性能。