功耗測量輔助微控制器的選擇
當設計工程師為低功耗應用選擇微控制器時,芯片廠商的數(shù)據(jù)手冊所提供的幫助是有限的。手冊不能提供業(yè)界標準的功耗評價方法,也不能說明像高速緩存(Cache)和集成浮點運算單元等功能部件是怎樣影響能量消耗和性能的。
當工程師嘗試比較包含了片上系統(tǒng)(System-on-chip)的處理器內核時,如何解釋這些部件或單元帶來的好處成了一個難題。供應商也用芯片的典型消耗電流數(shù)值來衡量他們的微控制器,但這種測量幾乎不能說明應用運行不同程序的能量消耗。為了解決這個問題,嵌入式處理器基準協(xié)會(Embedded Processor Benchmark Consortium――EEMBC)提出了一種在特定載荷下測量能量消耗的方法。本文中我們將以ARM-9為內核的微控制器作為測試例子來說明這種測試方法的原理。
標準化的方法和前提
通常而言,EEMBC衡量的側重點在處理器行為方面的性能指標,并開發(fā)了以反映嵌入式應用真實環(huán)境的測量基準。由于能夠驗證所有性能和功耗測量的重復性是相當重要的,測量方法也必須符合常規(guī)的標準。EnergyBench(能量基準)是由EEMBC開發(fā)的一種測量方法,用于提供一種基準工具,它可以給出處理器在運行應用程序時所消耗的能量數(shù)據(jù)。
測量的可靠性
EnergyBench采用NI公司(National Instruments)的LabVIEW平臺和數(shù)據(jù)采集卡。DAQ卡有多個差分測量通道用來測量電流和多個單端通道用于測量電壓。EnergyBench使用這樣的DAQ卡來對電壓和電流進行采樣,并利用一個觸發(fā)通道來同步性能的基準測量。
EnergyBench有兩個軟件模塊,一個用于測量數(shù)據(jù)(功率采樣模塊),另一個用于分析采集到的數(shù)據(jù)(分析模塊)。軟件的圖形界面用于顯示電壓和電流,并且有相應的控制按鈕用于啟動數(shù)據(jù)采集。
基準測量數(shù)據(jù)需要加載到微控制器中,并需要微控制器的兩個GPIO用作和功率采樣模塊的握手信號。當基準測量數(shù)據(jù)加載完成后,其中的一個GPIO用于通知微控制器啟動測試,另外一個通知功率采樣模塊。基準測量運行完多次迭代后,分析模塊計算基準測量每次迭代所消耗的平均能量?;鶞蕼y量分數(shù)是可以由制造商選擇的評價參數(shù),它與性能認證分數(shù)一起可以作為說明處理器能量效率的指標。
圖1 LPC3180是基于ARM9內核的MCU,具有32KB指令和數(shù)據(jù)Cache,以及一個向量浮點協(xié)處理單元
ARM9的測量結果
我們選擇由NXP生產、基于ARM926EJ內核的微控制器LPC3180作為測量對象,觀察不同處理器配置對能量消耗的影響。選擇該處理器的原因是由于它有很大的內部存儲器,64KB的通用存儲器和32KB的指令和數(shù)據(jù)高速緩存(Cache)。此外,它也有一個向量浮點單元和一個低電壓工作模式用于降低功耗。
表1列出了測量的結果。數(shù)據(jù)顯示向量浮點單元可以降低能量消耗的系數(shù)是4.5,而指令Cache的系數(shù)大約是1.4。如果我們查看數(shù)據(jù)手冊根本無法知道消耗過多的能量會帶來什么好處,就額外的性能而言,它是通過向量浮點單元和大容量的Cache獲得的。表中的數(shù)據(jù)也表明能量測量的意義就在于可以知道什么時候來決定選擇哪個處理器,以及哪個選項是重要的。處理器消耗的能量總和直接與它所執(zhí)行的任務所用的時鐘頻率相關。如果指令Cache被關閉了,程序不得不從位于AHB總線上的存儲器中去取指令。由于AHB總線的工作頻率只有處理器內核頻率的一半,因此程序運行的時間就更長,也就消耗了更多的能量。如果指令Cache被打開了,則相應Cache算法中的浮點運算所消耗的能量就會增加,但程序會運行得更快,因為Cache的操作是以處理器內核頻率進行的,結果總的能量消耗就降低了。當浮點單元使能時,它可以降低處理器和指令Cache的工作量,雖然只有少量的能量增加,但實際消耗的總體能量卻有了很大的降低。
外部存儲器對能量消耗的影響
對于大多數(shù)基于MCU的應用,存儲器子系統(tǒng)的設計是影響性能和能量消耗的決定性因素。當設計低功耗系統(tǒng)時,存儲器子系統(tǒng)的選擇和軟件設計對能量的消耗會產生很大的影響。這些選擇包括存儲器的選型、代碼運行空間的劃分,以及系統(tǒng)的省電模式等。
在NXP公司微控制器LPC3180的例子中,存儲控制器的接口是動態(tài)的,它通過切換I/O引腳來減小能量的消耗,同時可以動態(tài)支持大容量的存儲器。表2給出了4種類型存儲器在相同性能水平上的典型能量消耗,以及基于不同存儲器使用方式的對比和實際的系統(tǒng)性能。大多數(shù)微控制器都具有內部SRAM和Flash。LPC3180有64KB的SRAM,程序在其中運行的時鐘頻率是處理器頻率的一半,與訪問外部存儲器相比其消耗的能量是相當?shù)偷?。確切地講,內部存儲器消耗的能量大約是 72μW/MHz,以104MHz頻率持續(xù)訪問情況下所消耗的電流大約是7.5mA。由于電路板和存儲器芯片容性負載的存在,對外部存儲器總線的訪問會吸收大量的電流。這使得代碼運行空間的劃分成為低功耗設計中非常重要的一部分,代碼應盡可能的在芯片內部運行。
基準測量的測量結果顯示有3種部件會影響處理器的能量消耗:(1)開關損耗,(2)交叉?zhèn)鲗p耗,(3)漏電流損耗。在進行基準測量時,前兩種是動態(tài)損耗,它們代表微控制器能量消耗的絕大部分。
評論