基于復(fù)雜度的嵌入式軟件功耗模型
摘要:系統(tǒng)功耗是嵌入式系統(tǒng)的一個(gè)重要方向,功耗很大程度上取決于執(zhí)行的軟件。傳統(tǒng)的底層指令級(jí)模型功耗分析方法雖然能比較準(zhǔn)確地估算出嵌入式系統(tǒng)的功耗,但是這種方法所需要的時(shí)間過長(zhǎng)。本文介紹一種高層嵌入式軟件功耗分析估測(cè)方法,以對(duì)象函數(shù)所使用的算法的復(fù)雜度來(lái)對(duì)該函數(shù)構(gòu)建功耗模型,從而根據(jù)此功耗模型能快速估算出該函數(shù)在各種輸入情形下的功耗情況。關(guān)鍵詞:算法復(fù)雜度 嵌入式系統(tǒng) 軟件功耗模型
1 嵌入式軟件功耗
嵌入式系統(tǒng)的功耗主要來(lái)自微處理器的功耗與外圍部件的功耗。雖然能量的水泵最終發(fā)生在底層硬件,但是微處理器的功耗很大程度上取決于其所執(zhí)行的軟件。因此,對(duì)嵌入式系統(tǒng)的功耗分析越來(lái)越多地轉(zhuǎn)移到軟件的角度上來(lái),將能量的消耗過程視作軟件執(zhí)行過程。
目前的嵌入式軟件功耗分析大多數(shù)都是基于指令級(jí)功耗模型的分析方法。在這種模型中,嵌入式軟件程序的功耗由單條指令的基本功耗開銷、連續(xù)執(zhí)行不同類型的指令造成的功耗開銷以及額外的功耗開銷(如流水線斷流、Cache不命中)等構(gòu)成。雖然這種底層的嵌入式軟件功耗的分析方法的準(zhǔn)確性較高,但是其分析過程需要在特定微處理器平臺(tái)上將程序翻譯成匯編指令,然后通過逐條指令功耗分析和綜合因素考慮,最后才能估算出該程序在某種微處理器上執(zhí)行的系統(tǒng)功能,需要相當(dāng)長(zhǎng)的分析時(shí)間。
2 基于復(fù)雜度的嵌入式軟件功耗模型
針對(duì)指令級(jí)功耗模型的瓶頸,本文介紹一種基于復(fù)雜度的嵌入式軟件功耗模型,利用現(xiàn)有條件能快速估算出某函數(shù)的功耗情況。
在嵌入式軟件應(yīng)用中大量使用的多媒體計(jì)算和其它數(shù)據(jù)密集型計(jì)算中,經(jīng)常用到諸如查找、排序、矩陣運(yùn)算等算法。由于這些算法的平均復(fù)雜度都是已知的,因此復(fù)雜度成為這些嵌入式軟件程序的一個(gè)重要特征,同樣也能夠成為分析和估測(cè)嵌入式軟件功耗的一種重要依據(jù)。基于復(fù)雜度的嵌入式軟件功耗模型以具體函數(shù)所使用的算法的復(fù)雜度為建模的參數(shù),選取該函數(shù)的典型輸入,并利用現(xiàn)有指令級(jí)模型分析方法獲得該函數(shù)在這些典型輸入情況下的功耗,利用回歸算法出該函數(shù)軟件功耗模型的系數(shù),從而獲得完事的該函數(shù)軟件功耗模型,并可以用于快速估算該函數(shù)在任何輸入情況下的軟件功耗。
在某函數(shù)的算法復(fù)雜度是已知的或較容易獲得的情況下,假設(shè)該函數(shù)的執(zhí)行所需功耗與其復(fù)雜度有關(guān),則可以使用一個(gè)線性公式來(lái)描述該函數(shù)的軟件功耗:
其中Pj為模型的參數(shù)與函數(shù)的算法復(fù)雜度與函數(shù)的輸入相關(guān);cj為相應(yīng)的系數(shù);p是參數(shù)個(gè)數(shù)。
構(gòu)建模型的第一步是決定描述功耗模型的參數(shù)Pj。參數(shù)的選擇與具體的函數(shù)所使用的算法密度相關(guān)。幾種比較常見的算法的功耗模型可以表1中的線性公式來(lái)描述。
表1 基于復(fù)雜度的軟件功耗模型
[1] [2] [3] [4] [5] [6]