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