郭真林,桑 楠,江 維,宋元鳳
(電子科技大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,成都 611731)
隨著綠色計(jì)算概念的提出,原本處于受限環(huán)境的嵌入式系統(tǒng)面臨更加嚴(yán)峻的挑戰(zhàn)。尤其對(duì)于電池供電的嵌入式設(shè)備,如手機(jī)、傳感器、可穿戴計(jì)算設(shè)備等,系統(tǒng)電能消耗已經(jīng)成為影響產(chǎn)品成敗的關(guān)鍵因素之一。隨著服務(wù)需求的多樣化,嵌入式軟件的復(fù)雜度也在急劇攀升,其能耗與性能因素阻礙了嵌入式系統(tǒng)領(lǐng)域的發(fā)展。精確地測量嵌入式軟件能耗是優(yōu)化嵌入式軟件的重要一步。
國外對(duì)于嵌入式軟件能耗的研究比較成熟。在能耗數(shù)據(jù)的測量方面,較多采用先進(jìn)的自動(dòng)化儀器進(jìn)行測量[1-2]。嵌入式處理能耗測量標(biāo)準(zhǔn)EnergyBench,由嵌入式微處理器測試基準(zhǔn)協(xié)會(huì)EEMBC推出,但它沒有公開其詳細(xì)測量方法。國內(nèi)雖然針對(duì)嵌入軟件的能耗研究很多,但關(guān)注焦點(diǎn)在于能耗模型的建立或者是能耗仿真器上面[3-4]。文獻(xiàn)[5]從指令周期層次進(jìn)行建模取得了較好的結(jié)果,但絕對(duì)誤差只能控制在10%以內(nèi)。上述方法難以滿足對(duì)精確能耗數(shù)據(jù)的需求,因此,嚴(yán)重影響了嵌入式軟件能耗相關(guān)研究的正確性與準(zhǔn)確性。
LabVIEW是一種由NI公司推出的可視化軟件編程環(huán)境。通過可視化 VI編程生成的程序與各種相關(guān)硬件配合,可實(shí)現(xiàn)信號(hào)生成、數(shù)據(jù)處理、數(shù)據(jù)采集以及工程控制等各類任務(wù)。雖然基于LabVIEW的各種測量系統(tǒng)已經(jīng)存在很多,但針對(duì)嵌入軟件能耗測量的方法卻沒有得到關(guān)注。因此,本文提出一種能耗測量方案,并詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)了基于LabVIEW的數(shù)據(jù)采集程序。
圖 1給出了一種典型的嵌入式軟件能耗測量方案。假設(shè)目標(biāo)設(shè)備是TQ2440嵌入式開發(fā)板,配備了三星S3C2440 ARM CPU,并具有64 MB的SDRAM。為了測量電流,核心板上串聯(lián)了一個(gè)很小的定值電阻(6.8 ?),通過測量其電壓的方式來測量設(shè)備電流。本文采用低端電流測量法,以排除高端共模電壓的影響,從而避免對(duì)設(shè)備產(chǎn)生損壞[6]。測量儀器使用 PXI 1042Q測控平臺(tái),并配置NI 6221數(shù)據(jù)采集卡以實(shí)現(xiàn)多通道的同步數(shù)據(jù)采集。核心板電壓信號(hào)和定值電阻的電壓信號(hào)連線到接線盒SCB-68中,該接線盒連接到數(shù)據(jù)采集卡上。
本文利用LabVIEW編寫專門的數(shù)據(jù)采集軟件,實(shí)現(xiàn)對(duì)電流電壓通道以及一個(gè)用于標(biāo)記狀態(tài)的數(shù)字通道進(jìn)行同步數(shù)據(jù)采集。被測量的目標(biāo)程序被封裝成測量單元,并通過GPIO端口向此數(shù)字通道發(fā)送狀態(tài)。該狀態(tài)用于區(qū)別采集到的電流電壓數(shù)據(jù)樣本是否為目標(biāo)程序執(zhí)行時(shí)采到的樣本。

圖1 能耗測量方案
數(shù)據(jù)采集儀器周期性對(duì)輸入通道進(jìn)行采樣,設(shè)采樣頻率 f,則采樣周期為 1/T f= 。根據(jù)采樣定理,采樣頻率至少不低于2倍奈奎斯特頻率,即截止頻率2倍或以上才能保證信號(hào)被正確地還原。假設(shè)目標(biāo)電壓和電流信號(hào)同時(shí)被采集到,電壓、電流樣本集分別表示為:

則功率樣本集為:

如果功率樣本點(diǎn)是按照采樣定理獲得的,那么可以通過這些樣本點(diǎn)恢復(fù)連續(xù)的原始信號(hào)。假定功率樣本為時(shí)間的函數(shù),()s st= ,則可得到理論上的無誤差功能耗,即功率函數(shù)與時(shí)間的積分為:

由于恢復(fù)原始信號(hào)函數(shù)過于復(fù)雜,且計(jì)算量太大,因此直接對(duì)離散數(shù)據(jù)進(jìn)行一種近似計(jì)算是一種非常有效的方法。以固定周期進(jìn)行采樣,可將功率樣本點(diǎn)看作是以周期T為等間距寬度圍成的矩形的高,如圖2所示。能耗通過下式計(jì)算得出:


圖2 離散矩形近似逼近連續(xù)功率
通過這種方式處理數(shù)據(jù)會(huì)造成一定的誤差,誤差的大小為對(duì)應(yīng)矩形區(qū)的三角邊與功率曲線圍成的面積。如果采集的樣本量非常多時(shí),可能對(duì)最終的數(shù)值產(chǎn)生很大影響。由于直接計(jì)算這塊面積難度很大,需得到原函數(shù),因此通過計(jì)算三角形的面積來近似它,則變?yōu)榍筇菪蔚拿娣e和,能耗計(jì)算由式(2)變形為:

很明顯地,采樣頻率越高,越能反映原始的電流與電壓信號(hào)。采樣頻率的設(shè)定一方面取決于測量需求,另一方面取決于數(shù)據(jù)采集卡的采樣頻率。
為支持對(duì)程序中多個(gè)目標(biāo)的數(shù)據(jù)采集,要區(qū)分采到的樣本所屬的對(duì)象,需要增設(shè)一個(gè)對(duì)數(shù)字通道的采集。這只需占用一個(gè)端口線,例如采用 NI 6221的port0/line0[7-10]。嵌入式系統(tǒng)通常具有豐富的 I/O接口,如 GPIO,因此,可選擇合適接口連接到采集卡的數(shù)字通道上。在目標(biāo)程序執(zhí)行時(shí),可向該端口寫入1,執(zhí)行時(shí)完畢時(shí)寫入0,即可知道樣本所屬對(duì)象的變化。如果進(jìn)行多目標(biāo)的測量,則在發(fā)送一個(gè)低電平時(shí),插入一定的延時(shí)。這樣,可確保隨后的高電平被采集到。這是因?yàn)椴蓸宇l率低于這2個(gè)操作的時(shí)間會(huì)造成測量目標(biāo)丟失。這種方式的好處是:一旦采集開始后,無需停止,即是一種非浸入干擾的測量方法。電流信號(hào)、電壓信號(hào)和上述的數(shù)字脈沖信號(hào),三者是以相同的頻率被同步采集的。
圖3說明了對(duì)功率樣本的主要數(shù)據(jù)處理流程。按式(3)進(jìn)行一次計(jì)算需要相鄰2個(gè)樣本,所以,用一個(gè)浮點(diǎn)數(shù)VI(Last Sample)來存儲(chǔ)上一個(gè)樣本。計(jì)算完成后,同時(shí)對(duì)比數(shù)字脈沖是否零,以確定將能耗值寫入文件,否則繼續(xù)迭代,直至處理完樣本。
圖4說明了電流、電壓和數(shù)字脈沖信號(hào)通道的配置方法,這主要體現(xiàn)在對(duì)AI Current、AI Voltage和Digital Input 3種VI的配置。當(dāng)采樣頻率很高時(shí),需要的緩沖就越大,因此,增加 DAQmx服務(wù)包中的Configure Input Buffer[7]VI到程序中,以方便按需要設(shè)置緩沖區(qū)的大小。為了使三者進(jìn)行同步數(shù)據(jù)采集,將模擬輸入(Anology Input)與數(shù)字輸入(Digital Input)2種通道配置了相同的采樣頻率(VI Sample Clock)。這里采用的是觸發(fā)數(shù)據(jù)采集方式,因此,配置了Start Digital Edge VI接收觸發(fā)信號(hào)。整數(shù)指示器VI Elements指示測量目標(biāo)的個(gè)數(shù),根據(jù)脈沖的變化次數(shù)來計(jì)算,整數(shù) VI Samples和浮點(diǎn)數(shù) VI Power Consuming分別是當(dāng)前測量目標(biāo)的樣本數(shù)和能耗值計(jì)數(shù)器。
采集到的樣本是分批處理的,從模擬通道中讀出的電流與電壓樣本,直接相乘便得到功率樣本。然后對(duì)功率樣本集進(jìn)行迭代處理,以求得功耗。同時(shí)進(jìn)入for循環(huán)的還有脈沖信號(hào)的樣本,目的是判別功率樣本的有效性。

圖3 功率樣本數(shù)據(jù)處理流程

圖4 同步數(shù)據(jù)采集VI配置流程
圖5指示了for循環(huán)中的CASE結(jié)構(gòu)為真的情況,即脈沖信號(hào)指示高電平1狀態(tài)。這時(shí)按照式(3)計(jì)算功耗值。乘1000是為了將功耗的單位轉(zhuǎn)換為mJ。圖6說明了CASE結(jié)構(gòu)為假的情況,這時(shí)功率樣本直接被丟棄不作任何處理。
如果測量目標(biāo)的樣本數(shù)不為零,則將其功耗值寫入文件,同時(shí)將樣本數(shù)計(jì)數(shù)器、功耗值計(jì)數(shù)器清零。

圖5 數(shù)據(jù)讀取與處理模塊

圖6 能耗數(shù)據(jù)的文件存儲(chǔ)模塊
為驗(yàn)證測量數(shù)據(jù)的正確性,使用HIOKI 3334-01交直流單相功率計(jì),針對(duì)圖1中的目標(biāo)設(shè)備進(jìn)行能耗數(shù)據(jù)的對(duì)比測量。
LabVIEW測量的采樣頻率配置為10000 Hz,一次樣本讀取100個(gè)。功率計(jì)的接線方法,將電壓端輸入端子連接到負(fù)載側(cè)。所測得的數(shù)據(jù)如表1所示。

表1 能耗數(shù)據(jù)的對(duì)比測量結(jié)果
通過對(duì)比可以看出,2種方法測得的數(shù)據(jù)非常相近,最大差值也不超過 0.0002,從而驗(yàn)證了本文方法的有效性與準(zhǔn)確性。
針對(duì)當(dāng)前研究忽略嵌入式軟件能耗測量的現(xiàn)狀,本文分析基于 LabVIEW 的嵌入式軟件能耗測量方案。基于離散電壓、電流數(shù)據(jù)的近似處理方法,設(shè)計(jì)一種精確能耗計(jì)算方法,實(shí)現(xiàn)數(shù)據(jù)采集程序,通過加密軟件的測試驗(yàn)證其有效性。通過儀器對(duì)嵌入式軟件進(jìn)行能耗測量以及數(shù)據(jù)處理方法,為進(jìn)行嵌入式軟件能耗評(píng)估提供一種有效手段。
[1]Tiwari V.Power Analysis of Embedded Software∶ A First Step Towards Software Power Minimization[J].IEEE Transactions on VLSI Systems, 1994, 2(4)∶ 437-445.
[2]Acquaviva A, Benini L, Ricco B.Energy Characterization of Embedded Real-time Operating Systems[J].SIGARCH Computer Architecture News, 2001, 29(5)∶ 13-18.
[3]鐘偉軍, 劉明業(yè).支持嵌入式操作系統(tǒng)的 ARM 能耗模擬器設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用研究, 2006, 23(4)∶ 219-221.
[4]趙 霞, 郭 耀, 雷志勇, 等.基于模擬器的嵌入式操作系統(tǒng)能耗估算與分析[J].電子學(xué)報(bào), 2008, 36(2)∶209-211.
[5]廖海艷, 郭 兵, 沈 艷, 等.針對(duì) ARM 指令集的層次分類能耗測量方法[J].計(jì)算機(jī)工程, 2011, 37(10)∶228-230.
[6]National Instruments Corporation.Make Accurate Power Measurements with NI Tools[EB/OL].(2010-08-19).http∶//zone.ni.com/devzone/cda/tut/p/id/7077.
[7]National Instruments Corporation.LabVIEW Help[EB/OL].(2006-08-07).http∶//zone.ni.com/reference/en-XX/help/371361H-01/lvhelp/labview_help/.
[8]宋 超, 劉 明, 龔海剛, 等.基于分布式實(shí)時(shí)信息的車載網(wǎng)絡(luò)路由協(xié)議[J].軟件學(xué)報(bào), 2011, 22(3)∶ 166-480.
[9]王建軍, 李勇帆, 劉 琳, 等.ARP協(xié)議動(dòng)態(tài)交互仿真系統(tǒng)的設(shè)計(jì)[J]通信技術(shù), 2011, 44(2)∶ 41-45.
[10]李 鑫, 李 凡, 劉啟和.利用基數(shù)約束規(guī)則編程消解ECA 策略沖突[J].計(jì)算機(jī)應(yīng)用研究, 2009, 26(7)∶366-368.