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