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