文獻標識碼: A
文章編號: 0258-7998(2013)09-0028-03
系統(tǒng)級芯片(SoC)是智能移動終端的核心,決定了一款機器的性能水平,。目前的中高端嵌入式SoC中普遍集成了嵌入式圖形處理器GPU(Graphic Processing Unit),,主要用于處理CPU并不擅長的三維圖形任務。但高性能GPU所帶來的高功耗對于移動終端是一個嚴峻的挑戰(zhàn),。
動態(tài)電壓頻率調整DVFS(Dynamic Voltage and Fre-
quency Scaling)是降低動態(tài)功耗的常用方法,其核心思想是根據當前所運行的任務對計算能力的不同需求來動態(tài)調節(jié)處理器的工作頻率和電壓,,從而達到節(jié)能的目的,。DVFS的理論依據是如下動態(tài)功耗的計算公式[1]:
嵌入式GPU(下文均簡稱GPU)的發(fā)展時間短,技術更新快,,在設計目標,、軟硬件架構、圖形標準,、運行系統(tǒng)等方面與PC顯卡都有所差異[2],,有關降低功耗的研究尚不多見。針對這種現狀,,本文基于目前最流行的嵌入式操作系統(tǒng)Android,,在GPU的內核驅動層提出了一種GPU 動態(tài)調頻方案,使GPU可以根據性能需求自適應地調節(jié)運行頻率和電壓,,從而降低GPU的動態(tài)功耗,。
1 Android應用對GPU的性能需求
Android系統(tǒng)主界面的混合與疊加采用GPU硬件加速[3],除此之外,,圖庫,、動態(tài)壁紙、3D桌面,、3D游戲等多種應用也需要GPU的支持,。各種應用對于GPU性能的需求大不相同,例如,,動態(tài)壁紙的幀率一般被限定在15~20 f/s左右,,對GPU的性能需求較低;不同的3D游戲對于GPU性能的需求也大不相同,,即使在同一個游戲中,,對GPU性能的需求也是隨著場景的變化而不斷變化的,。GPU性能測試軟件需要反映GPU的最高性能,對GPU處理能力的要求遠超其他應用程序,。根據以上分析,,如果GPU始終以固定的頻率運行,則會出現兩種情況:對于低復雜度的任務,,若GPU運行在高頻,,則性能過剩,造成功耗的浪費[4],;對于高復雜度的任務,,若GPU沒有運行在足夠高的頻率,則無法滿足性能需求,。因此最理想的情況是GPU能夠根據需求快速地調整頻率,,以提供期望的性能。
2 GPU頻率-性能模型
2.1 選擇GPU工作頻率
Android系統(tǒng)的時鐘模塊可以為GPU提供多種頻率,,GPU動態(tài)調頻的工作頻率從這些頻率中選出,。在備選頻率中,選擇能滿足最低性能需求的最低頻率作為最低工作頻率,,選擇GPU能正常工作的最高頻率作為最高工作頻率,。在最低和最高工作頻率之間盡可能等間隔地選擇工作頻率,并且相鄰頻率的間隔不能太小,,否則GPU容易在相鄰的兩個頻率上反復切換,。以1 200 MHz的輸入時鐘為例,通過分頻可以得到75 MHz,、100 MHz,、120 MHz、150 MHz,、200 MHz,、240 MHz、300 MHz,、400 MHz,、600 MHz等頻率。根據上述方法首先確定最低工作頻率為100 MHz,,最高工作頻率為400 MHz,。考慮到相鄰工作頻率之間的間隔,,在100 MHz~400 MHz之間的頻率中選擇200 MHz和300 MHz作為工作頻率,。
2.2 測量GPU相對性能
GPU的性能可以通過運行Nenamark2、GLBenchmark、Basemark等專業(yè)的GPU性能測試軟件測量得到的幀率反映出來,。圖1是測量得到的某GPU的頻率-幀率對應關系圖,。不同的測試軟件下發(fā)給GPU的任務量不同,因此測得的幀率有所差異,,但是幀率與頻率之間都呈現近似分段線性的關系,,且頻率越高幀率的增長速度越緩慢。這是因為隨著頻率的增加,,GPU內部某個模塊會最先達到性能瓶頸,,從而影響整體性能的提升。
設GPU共有N個工作頻率,,分別為fi,,i=1,2,,…,,N,fi對應的幀率為Pi,,相對性能Ri=Pi/P1,。表1是運行性能測試軟件得到的3組相對性能值。從表中可看出,,通過不同的性能測試軟件測得的Ri值是基本一致的。綜合Ri值就可以建立該GPU的頻率-性能模型,,如圖2所示,。
3 GPU動態(tài)調頻算法
在Android系統(tǒng)的主界面切換、動態(tài)壁紙,、游戲等3D應用場景中,,GPU的負載在幾幀到幾十幀的短時間內具有相關性,因此可以根據過去一段時間內的GPU負載預測將來的GPU性能需求,。為了兼顧精確度和復雜度的需求,,本文采用一種基于歷史值加權平均的動態(tài)調頻算法,算法可分為4步:
(4)調整GPU頻率和電壓,。在調頻調壓時需要遵循以下原則[7]:提高GPU頻率時,,應先提高電壓再提高頻率;降低GPU頻率時,,應先降低頻率再降低電壓,。為了避免頻率的變化過大,可以只允許調整到相鄰的工作頻率,。
4 實驗結果
本文在Android4.1系統(tǒng)上,,選擇了界面切換、動態(tài)壁紙(bubbles)、捕魚達人游戲和Nenamark2 4種典型的應用場景測試動態(tài)調頻的效果,。作為測試對象的某GPU有4種工作頻率:100 MHz,、200 MHz、300 MHz和400 MHz,。實驗參數選擇如下:GPU負載的統(tǒng)計周期T=30 ms,,式(5)中K=4,預測系數h[0]=0.4,,h[1]=0.3,,h[2]=0.2,h[3]=0.1,,性能門限?茁=0.9,。在每個應用場景下隨機抽取10 s的統(tǒng)計數據,如表2所示,。
表2中,,預測負載誤差是指預測負載值與實際負載值的平均誤差。由于GPU只有4個離散的工作頻率,,因此預測頻率的錯誤率比預測負載誤差小很多,。預測頻率的準確率不僅與預測負載誤差的大小有關,還與應用對GPU性能的需求范圍有關,。如果應用對GPU性能的需求變化大,,GPU可能的工作頻率多,頻率的調整比較頻繁,,則預測頻率的準確率就會降低,。實驗結果表明,4種典型場景下預測GPU工作頻率的準確性都達到了95%以上,。
GPU負載統(tǒng)計周期為30 ms時,,在最差情況下,即GPU的初始頻率為100 MHz,、需求工作頻率為400 MHz時,,動態(tài)調頻算法只需要8個周期,即240 ms就可以完成調頻的過程,。因此對于各種3D應用,,動態(tài)調頻算法都能快速跟蹤GPU負載的變化,及時調整頻率以滿足需求,。
本文介紹了一種基于Android系統(tǒng)的GPU動態(tài)調頻方案,,可以有效降低GPU的動態(tài)功耗,延長移動終端的工作時間,。通過調整動態(tài)調頻算法的系數,,方案適用于多種GPU,,且易于移植到不同版本的Android系統(tǒng)上。針對特定的GPU,,還可以通過GPU驅動中提供的其他一些有用信息以及GPU廠商提供的開發(fā)工具對方案進行優(yōu)化,。本方案已申請國家發(fā)明專利,并在多款平板電腦產品上應用實施,。
參考文獻
[1] Kim K,,AGIS A I.Impact of microwave interference on dynamic operation and power dissipation of CMOS inverters[J].Electromagnetic Compatibility,IEEE Transactions,,2007,,49(2):329-338.
[2] CAPIN T,PULLI K,,AKENINE-MOLLER T.The state of the art in mobile graphics research[J].IEEE Computer Graphics and Applications,,2008,28(4):74-84.
[3] 韓超,,梁泉.Android系統(tǒng)原理及開發(fā)要點詳解[M].北京:電子工業(yè)出版社,,2010.
[4] YOU D,CHUNG K S.Dynamic voltage and frequency scaling framework for low-power embedded GPUs[J].Electronics Letters,,2012,,48(21):1333-1334.
[5] HARIHARAKRISHNAN K.Novel approaches for GPU performance analysis[C].ACM SIGGRAPH 2012 Mobile,New York,,2012.
[6] 張立,,袁小龍,韓銀和.基于線性預測的移動終端LPDVFS策略[J].計算機工程,,2012,,38(12):239-242.
[7] 盧春鵬.動態(tài)電壓與頻率調節(jié)在降低功耗中的作用[J].單片機與嵌入式系統(tǒng)應用,2007(5):12-17.