基于Linux的智能手機省電設計
成功實現(xiàn)AVS 的關鍵是在基帶芯片中集成部分系統(tǒng)電源管理電路, 即內(nèi)置AVS 控制器(圖3)。這一關鍵模塊包含專門的電路和算法, 用來確定給定處理量下的最優(yōu)電壓。通過向電壓調整器的參考端輸入饋送誤差信號, 可以生成最優(yōu)的VDD, 無需提供不必要的電壓余量, 從而減少了電能損耗。對任何閉環(huán)方法來說, 環(huán)路帶寬都是很重要的。環(huán)路快速跟蹤并穩(wěn)定的能力決定了基帶電源動態(tài)調整以自適應工作負載突變的能力。
內(nèi)置AVS 控制器
通過軟件方法降低設備功耗
低能耗軟件優(yōu)化對于基于處理器系統(tǒng)的應用程序而言, 是最有發(fā)展前途的降低系統(tǒng)能耗的技術方法。這種方法對于那些計算復雜度較高的應用程序最為有效。因為只有在應用程序執(zhí)行的時候, 才會消耗大量電源。
這項技術的最終目的是在執(zhí)行較為復雜的應用程序時, 盡量降低能耗。我們的程序用于降低計算的復雜度, 但不能改變程序原本的行為?,F(xiàn)在我們通過圖4(A) 中的例子, 來闡述一下一些有關軟件優(yōu)化的想法。
通過軟件方法降低設備功耗
考慮主函數(shù)中第一次調用過程test。如果檔參數(shù)a 和差數(shù)k都是0 的概率為90%, 我們可以將源代碼改寫為圖4(B) , 通過改寫, 我們減少了test 過程中的循環(huán)數(shù)。但在現(xiàn)實中, 參數(shù)a 和k 并不是總是為0。那么test 的過程調用不能被新的過程sp_test 所完全替代。我們用一個條件語句來限定過程的調用, 所有的過程調用依賴于cvd_test()的結果。當過程cvd_test()檢測為一般情況( a,k同時為0) , 符合此條件的修正后的代碼被執(zhí)行。如果當過程cvd_test()檢測為非一般情況( a,k 非同時為0) , 原有的代碼被執(zhí)行。在另一方面, 當過程cvd_test()檢測為非一般情況, 我們提升了程序的計算復雜度, 也相應提高了能耗。
一般而言, 對代碼優(yōu)化有各種各樣不同的方法。如果我不考慮參數(shù)k, 我們可以將源代碼轉化為圖4(C) 所示。a 為0 的概率大于a 和k 同時為0 的概率。在不同情況下, 對原有代碼所做的修改有不同的效果。
最后, 我們必須檢驗修改過的代碼對原有代碼的影響, 是不是改變了原有代碼的行為, 在任何條件下我們都不能去擅自改變原有代碼的行為。代碼質量的提升也是相當?shù)闹匾?。對于C 語言來說, 將一些簡單的函數(shù)轉換為宏定義時一種比較有效的方法。
綜上所述, 我們可以將一般情況下代碼優(yōu)化分為4 個步驟:
(1)一般案例的選擇。選擇最有效的、最長被調用的案例。
(2)一般案例的提煉。為給出的一般案例建立一個過程。
(3)全局檢測。檢測改變后的調用對于全局的影響。
(4)提高代碼質量。使用一些編程語言中的基本技巧, 以提高代碼質量。
總結
在移動終端設備設計方面, 節(jié)能成為了一個很重要的設計指標。我們選取了更高效的CPU 以降低能耗。對于交互式應用程序而言, 我們使用DPM策略降低處于空閑態(tài)的能耗, 這種方法主要使用于OS 層。而AVS 技術是通過電壓調整來實現(xiàn)減少能耗。在應用程序層, 我們通過對軟件的優(yōu)化來達到降低能耗的目的。在Intel? PXA27x 處理芯片環(huán)境下, 通過以上方法, 我們降低了26%的能耗, 提高了30%的系統(tǒng)性能以及增加了7%的代碼量。
評論