- 相關推薦
基于復雜度的嵌入式軟件功耗模型
摘要:系統功耗是嵌入式系統的一個重要方向,功耗很大程度上取決于執行的軟件。傳統的底層指令級模型功耗分析方法雖然能比較準確地估算出嵌入式系統的功耗,但是這種方法所需要的時間過長。本文介紹一種高層嵌入式軟件功耗分析估測方法,以對象函數所使用的算法的復雜度來對該函數構建功耗模型,從而根據此功耗模型能快速估算出該函數在各種輸入情形下的功耗情況。1 嵌入式軟件功耗
嵌入式系統的功耗主要來自微處理器的功耗與外圍部件的功耗。雖然能量的水泵最終發生在底層硬件,但是微處理器的功耗很大程度上取決于其所執行的軟件。因此,對嵌入式系統的功耗分析越來越多地轉移到軟件的角度上來,將能量的消耗過程視作軟件執行過程。
目前的嵌入式軟件功耗分析大多數都是基于指令級功耗模型的分析方法。在這種模型中,嵌入式軟件程序的功耗由單條指令的基本功耗開銷、連續執行不同類型的指令造成的功耗開銷以及額外的功耗開銷(如流水線斷流、Cache不命中)等構成。雖然這種底層的嵌入式軟件功耗的分析方法的準確性較高,但是其分析過程需要在特定微處理器平臺上將程序翻譯成匯編指令,然后通過逐條指令功耗分析和綜合因素考慮,最后才能估算出該程序在某種微處理器上執行的系統功能,需要相當長的分析時間。
2 基于復雜度的嵌入式軟件功耗模型
針對指令級功耗模型的瓶頸,本文介紹一種基于復雜度的嵌入式軟件功耗模型,利用現有條件能快速估算出某函數的功耗情況。
在嵌入式軟件應用中大量使用的多媒體計算和其它數據密集型計算中,經常用到諸如查找、排序、矩陣運算等算法。由于這些算法的平均復雜度都是已知的,因此復雜度成為這些嵌入式軟件程序的一個重要特征,同樣也能夠成為分析和估測嵌入式軟件功耗的一種重要依據;趶碗s度的嵌入式軟件功耗模型以具體函數所使用的算法的復雜度為建模的參數,選取該函數的典型輸入,并利用現有指令級模型分析方法獲得該函數在這些典型輸入情況下的功耗,利用回歸算法出該函數軟件功耗模型的系數,從而獲得完事的該函數軟件功耗模型,并可以用于快速估算該函數在任何輸入情況下的軟件功耗。
在某函數的算法復雜度是已知的或較容易獲得的情況下,假設該函數的執行所需功耗與其復雜度有關,則可以使用一個線性公式來描述該函數的軟件功耗:
其中Pj為模型的參數與函數的算法復雜度與函數的輸入相關;cj為相應的系數;p是參數個數。
構建模型的第一步是決定描述功耗模型的參數Pj。參數的選擇與具體的函數所使用的算法密度相關。幾種比較常見的算法的功耗模型可以表1中的線性公式來描述。
表1 基于復雜度的軟件功耗模型
參數確定之后,必須找到相應的系數cj,這是整個算法中最重要的步驟。一旦獲得系數cj后,就可以利用這些系統估算出該函數在任何輸入情況下的功耗。
要算出系數,首先要確定該函數的典型輸入集合S={I1,I2,…,In},S中的每個Ii都與該函數一組模型參數Pj相對應。n個Ii對應形成一個該函數的模型參數矩陣。
通過底層指令級模型分析得到該函數在每組參數Ii情況下的功耗。
其中然后通過矩陣運算即可回歸出參數向量C。
3 基于復雜度的插入排序函數軟件功耗建模
以下將以Integrator/CM7TDMI評估板的ARM7TDMI微處理器為基礎,對插入排序函數來構建基于復雜度的嵌入式軟件功耗模型。
假設某運行在ARM7TDMI處理器上的函數,對一長度為n的整形數組a[n]使用簡單插入排序算法進行排序。算法的C語言代碼與其經過ARMCC編譯器編譯后的匯編代碼如下:
void ins_sort(int a[],int n){
int x,i,j;
for(i=1;i
【基于復雜度的嵌入式軟件功耗模型】相關文章:
基于SIP的嵌入式終端軟件系統03-07
基于模塊化設計的嵌入式軟件測試方法03-20
嵌入式Linux下基于MiniGUI的信息終端軟件開發03-18
基于MSP430的極低功耗系統設計12-04
基于Tvp5150的低功耗視頻解碼模塊11-22
嵌入式軟件的覆蓋測試03-18