郭真林,桑 楠,江 維,宋元鳳
(電子科技大學計算機科學與工程學院,成都 611731)
隨著綠色計算概念的提出,原本處于受限環(huán)境的嵌入式系統(tǒng)面臨更加嚴峻的挑戰(zhàn)。尤其對于電池供電的嵌入式設備,如手機、傳感器、可穿戴計算設備等,系統(tǒng)電能消耗已經(jīng)成為影響產(chǎn)品成敗的關鍵因素之一。隨著服務需求的多樣化,嵌入式軟件的復雜度也在急劇攀升,其能耗與性能因素阻礙了嵌入式系統(tǒng)領域的發(fā)展。精確地測量嵌入式軟件能耗是優(yōu)化嵌入式軟件的重要一步。
國外對于嵌入式軟件能耗的研究比較成熟。在能耗數(shù)據(jù)的測量方面,較多采用先進的自動化儀器進行測量[1-2]。嵌入式處理能耗測量標準EnergyBench,由嵌入式微處理器測試基準協(xié)會EEMBC推出,但它沒有公開其詳細測量方法。國內雖然針對嵌入軟件的能耗研究很多,但關注焦點在于能耗模型的建立或者是能耗仿真器上面[3-4]。文獻[5]從指令周期層次進行建模取得了較好的結果,但絕對誤差只能控制在10%以內。上述方法難以滿足對精確能耗數(shù)據(jù)的需求,因此,嚴重影響了嵌入式軟件能耗相關研究的正確性與準確性。
LabVIEW是一種由NI公司推出的可視化軟件編程環(huán)境。通過可視化 VI編程生成的程序與各種相關硬件配合,可實現(xiàn)信號生成、數(shù)據(jù)處理、數(shù)據(jù)采集以及工程控制等各類任務。雖然基于LabVIEW的各種測量系統(tǒng)已經(jīng)存在很多,但針對嵌入軟件能耗測量的方法卻沒有得到關注。因此,本文提出一種能耗測量方案,并詳細設計與實現(xiàn)了基于LabVIEW的數(shù)據(jù)采集程序。
圖 1給出了一種典型的嵌入式軟件能耗測量方案。假設目標設備是TQ2440嵌入式開發(fā)板,配備了三星S3C2440 ARM CPU,并具有64 MB的SDRAM。為了測量電流,核心板上串聯(lián)了一個很小的定值電阻(6.8 ?),通過測量其電壓的方式來測量設備電流。本文采用低端電流測量法,以排除高端共模電壓的影響,從而避免對設備產(chǎn)生損壞[6]。測量儀器使用 PXI 1042Q測控平臺,并配置NI 6221數(shù)據(jù)采集卡以實現(xiàn)多通道的同步數(shù)據(jù)采集。核心板電壓信號和定值電阻的電壓信號連線到接線盒SCB-68中,該接線盒連接到數(shù)據(jù)采集卡上。
本文利用LabVIEW編寫專門的數(shù)據(jù)采集軟件,實現(xiàn)對電流電壓通道以及一個用于標記狀態(tài)的數(shù)字通道進行同步數(shù)據(jù)采集。被測量的目標程序被封裝成測量單元,并通過GPIO端口向此數(shù)字通道發(fā)送狀態(tài)。該狀態(tài)用于區(qū)別采集到的電流電壓數(shù)據(jù)樣本是否為目標程序執(zhí)行時采到的樣本。
圖1 能耗測量方案
數(shù)據(jù)采集儀器周期性對輸入通道進行采樣,設采樣頻率 f,則采樣周期為 1/T f= 。根據(jù)采樣定理,采樣頻率至少不低于2倍奈奎斯特頻率,即截止頻率2倍或以上才能保證信號被正確地還原。假設目標電壓和電流信號同時被采集到,電壓、電流樣本集分別表示為:
則功率樣本集為:
如果功率樣本點是按照采樣定理獲得的,那么可以通過這些樣本點恢復連續(xù)的原始信號。假定功率樣本為時間的函數(shù),()s st= ,則可得到理論上的無誤差功能耗,即功率函數(shù)與時間的積分為:
由于恢復原始信號函數(shù)過于復雜,且計算量太大,因此直接對離散數(shù)據(jù)進行一種近似計算是一種非常有效的方法。以固定周期進行采樣,可將功率樣本點看作是以周期T為等間距寬度圍成的矩形的高,如圖2所示。能耗通過下式計算得出:
圖2 離散矩形近似逼近連續(xù)功率
通過這種方式處理數(shù)據(jù)會造成一定的誤差,誤差的大小為對應矩形區(qū)的三角邊與功率曲線圍成的面積。如果采集的樣本量非常多時,可能對最終的數(shù)值產(chǎn)生很大影響。由于直接計算這塊面積難度很大,需得到原函數(shù),因此通過計算三角形的面積來近似它,則變?yōu)榍筇菪蔚拿娣e和,能耗計算由式(2)變形為:
很明顯地,采樣頻率越高,越能反映原始的電流與電壓信號。采樣頻率的設定一方面取決于測量需求,另一方面取決于數(shù)據(jù)采集卡的采樣頻率。
為支持對程序中多個目標的數(shù)據(jù)采集,要區(qū)分采到的樣本所屬的對象,需要增設一個對數(shù)字通道的采集。這只需占用一個端口線,例如采用 NI 6221的port0/line0[7-10]。嵌入式系統(tǒng)通常具有豐富的 I/O接口,如 GPIO,因此,可選擇合適接口連接到采集卡的數(shù)字通道上。在目標程序執(zhí)行時,可向該端口寫入1,執(zhí)行時完畢時寫入0,即可知道樣本所屬對象的變化。如果進行多目標的測量,則在發(fā)送一個低電平時,插入一定的延時。這樣,可確保隨后的高電平被采集到。這是因為采樣頻率低于這2個操作的時間會造成測量目標丟失。這種方式的好處是:一旦采集開始后,無需停止,即是一種非浸入干擾的測量方法。電流信號、電壓信號和上述的數(shù)字脈沖信號,三者是以相同的頻率被同步采集的。
圖3說明了對功率樣本的主要數(shù)據(jù)處理流程。按式(3)進行一次計算需要相鄰2個樣本,所以,用一個浮點數(shù)VI(Last Sample)來存儲上一個樣本。計算完成后,同時對比數(shù)字脈沖是否零,以確定將能耗值寫入文件,否則繼續(xù)迭代,直至處理完樣本。
圖4說明了電流、電壓和數(shù)字脈沖信號通道的配置方法,這主要體現(xiàn)在對AI Current、AI Voltage和Digital Input 3種VI的配置。當采樣頻率很高時,需要的緩沖就越大,因此,增加 DAQmx服務包中的Configure Input Buffer[7]VI到程序中,以方便按需要設置緩沖區(qū)的大小。為了使三者進行同步數(shù)據(jù)采集,將模擬輸入(Anology Input)與數(shù)字輸入(Digital Input)2種通道配置了相同的采樣頻率(VI Sample Clock)。這里采用的是觸發(fā)數(shù)據(jù)采集方式,因此,配置了Start Digital Edge VI接收觸發(fā)信號。整數(shù)指示器VI Elements指示測量目標的個數(shù),根據(jù)脈沖的變化次數(shù)來計算,整數(shù) VI Samples和浮點數(shù) VI Power Consuming分別是當前測量目標的樣本數(shù)和能耗值計數(shù)器。
采集到的樣本是分批處理的,從模擬通道中讀出的電流與電壓樣本,直接相乘便得到功率樣本。然后對功率樣本集進行迭代處理,以求得功耗。同時進入for循環(huán)的還有脈沖信號的樣本,目的是判別功率樣本的有效性。
圖3 功率樣本數(shù)據(jù)處理流程
圖4 同步數(shù)據(jù)采集VI配置流程
圖5指示了for循環(huán)中的CASE結構為真的情況,即脈沖信號指示高電平1狀態(tài)。這時按照式(3)計算功耗值。乘1000是為了將功耗的單位轉換為mJ。圖6說明了CASE結構為假的情況,這時功率樣本直接被丟棄不作任何處理。
如果測量目標的樣本數(shù)不為零,則將其功耗值寫入文件,同時將樣本數(shù)計數(shù)器、功耗值計數(shù)器清零。
圖5 數(shù)據(jù)讀取與處理模塊
圖6 能耗數(shù)據(jù)的文件存儲模塊
為驗證測量數(shù)據(jù)的正確性,使用HIOKI 3334-01交直流單相功率計,針對圖1中的目標設備進行能耗數(shù)據(jù)的對比測量。
LabVIEW測量的采樣頻率配置為10000 Hz,一次樣本讀取100個。功率計的接線方法,將電壓端輸入端子連接到負載側。所測得的數(shù)據(jù)如表1所示。
表1 能耗數(shù)據(jù)的對比測量結果
通過對比可以看出,2種方法測得的數(shù)據(jù)非常相近,最大差值也不超過 0.0002,從而驗證了本文方法的有效性與準確性。
針對當前研究忽略嵌入式軟件能耗測量的現(xiàn)狀,本文分析基于 LabVIEW 的嵌入式軟件能耗測量方案?;陔x散電壓、電流數(shù)據(jù)的近似處理方法,設計一種精確能耗計算方法,實現(xiàn)數(shù)據(jù)采集程序,通過加密軟件的測試驗證其有效性。通過儀器對嵌入式軟件進行能耗測量以及數(shù)據(jù)處理方法,為進行嵌入式軟件能耗評估提供一種有效手段。
[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 能耗模擬器設計[J].計算機應用研究, 2006, 23(4)∶ 219-221.
[4]趙 霞, 郭 耀, 雷志勇, 等.基于模擬器的嵌入式操作系統(tǒng)能耗估算與分析[J].電子學報, 2008, 36(2)∶209-211.
[5]廖海艷, 郭 兵, 沈 艷, 等.針對 ARM 指令集的層次分類能耗測量方法[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]宋 超, 劉 明, 龔海剛, 等.基于分布式實時信息的車載網(wǎng)絡路由協(xié)議[J].軟件學報, 2011, 22(3)∶ 166-480.
[9]王建軍, 李勇帆, 劉 琳, 等.ARP協(xié)議動態(tài)交互仿真系統(tǒng)的設計[J]通信技術, 2011, 44(2)∶ 41-45.
[10]李 鑫, 李 凡, 劉啟和.利用基數(shù)約束規(guī)則編程消解ECA 策略沖突[J].計算機應用研究, 2009, 26(7)∶366-368.