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