【導(dǎo)讀】在物聯(lián)網(wǎng)的推動下,業(yè)界對各種電池供電設(shè)備產(chǎn)生了巨大需求。這反過來又使業(yè)界對微控制器和其他系統(tǒng)級器件的能源效率要求不斷提高。因此,超低功耗(ULP)已成為一個(gè)過度使用的營銷術(shù)語,特別是用于描述微控制器時(shí)。作為理解ULP背后真正意義的第一步,應(yīng)考慮其各種含義。
本文我們將考察ADI公司的兩款微控制器,以幫助大家了解如何在此背景下解讀超低功耗的真正意義。我們還會討論 EEMBC聯(lián)盟的認(rèn)證機(jī)制,因?yàn)樗_保了得分的準(zhǔn)確性,可幫助系統(tǒng)開發(fā)人員為其解決方案選擇最合適的微控制器。
測量和優(yōu)化超低功耗
作為了解ULP的出發(fā)點(diǎn),我們首先解釋如何測量它。開發(fā)人員通常會查看數(shù)據(jù)手冊,在其中可以找到每MHz的電流值,以及不同睡眠模式下的電流值。
第一個(gè)問題是,查看工作功耗時(shí),數(shù)據(jù)手冊通常不會解釋獲得該值的條件。例如代碼、電壓和閃存上的等待狀態(tài)。有些供應(yīng)商使用工作模式參考,例如EEMBC CoreMark,而有些供應(yīng)商則使用像"while 1"語句一樣簡單的操作。如果閃存上有等待狀態(tài),則微控制器單元的性能會降低,增加執(zhí)行時(shí)間,從而提高執(zhí)行任務(wù)的能耗。有些供應(yīng)商提供典型電壓時(shí)的數(shù)值,有些提供最低電壓時(shí)的數(shù)值,還有些供應(yīng)商不指定任何電壓。也許這些差異很微妙,但沒有一個(gè)標(biāo)準(zhǔn)的話,比較只能是大致上的對比。
通常,深度睡眠模式在數(shù)據(jù)手冊中有相當(dāng)詳細(xì)的解釋,但同樣,獲得這些模式下的電流消耗的條件因供應(yīng)商而異(例如保留的內(nèi)存量或電壓)。此外,在實(shí)際應(yīng)用中,用戶還必須考慮進(jìn)入和退出這些模式所消耗的電能。這可能是一個(gè)微不足道的值,也可能事關(guān)重大,取決于器件是大部分時(shí)間處于睡眠模式還是頻繁喚醒。
第二個(gè)問題是器件有多長時(shí)間處于睡眠狀態(tài)?工作模式和睡眠模式之間的平衡對于確定ULP測量非常重要。為了簡化該過程,EEMBC對其ULPMark-CoreProfile (ULPMark-CP)使用1秒鐘時(shí)間;這是一項(xiàng)基準(zhǔn)測試,許多微控制器廠商將其用作數(shù)據(jù)手冊的標(biāo)準(zhǔn)。注意:使用1秒的決定被視為EEMBC工作組的共識??紤]到ULPMark-CoreProfile工作負(fù)載的工作時(shí)間,占空比將為98%左右。在該基準(zhǔn)測試中,器件每秒喚醒一次,執(zhí)行少量工作(工作周期),然后回到睡眠狀態(tài)。
通常,在工作模式下,模擬電路會導(dǎo)致電流消耗存在偏移;因此,使工作電流最小并有效使用深度睡眠模式對優(yōu)化整個(gè)系統(tǒng)的電能使用是有意義的。請注意,降低頻率會降低工作電流,但時(shí)間會增加,前面提到的模擬電路造成的偏移在微控制器處于工作狀態(tài)時(shí)保持不變。但是,微控制器不同選擇的利弊是什么?應(yīng)用的占空比和深度睡眠電流對消耗的電能有何影響?
每周期的電能是占空比D(以睡眠模式時(shí)間占總時(shí)間的百分比給出)的函數(shù),可由一個(gè)簡化的公式來定義,假設(shè)開啟和關(guān)閉轉(zhuǎn)換的電能很小。
其中,斜率由ION定義,因?yàn)镮SLEEP遠(yuǎn)小于ION,y軸截距就是ISLEEP。此 公式可以幫助理解占空比,其中工作電流比睡眠電流更重要。
圖1. ULPMark-CP的占空比為1秒。在此期間,器件從深度睡眠模式喚醒,執(zhí)行固定的工作負(fù)載,然后返回深度睡眠模式。
超低功耗測試平臺
比較ADI公司的兩款微控制器——ADuCM4050 和 ADuCM302x的超低功耗(電能)特性。在ULPMark節(jié)課表中, ADuCM4050和ADuCM302x的得分分別為203和245.5。請記住,該基準(zhǔn)測試僅操作微控制器單元的核心(因此得名CoreProfile)。如何解釋18%的差異?
ADuCM4050包含一個(gè)采用ARMv7E-M架構(gòu)的ARM® Cortex®-M4F。ADuCM302x包含一個(gè)采用ARMv7-M架構(gòu)的ARM Cortex-M3。雖然兩個(gè)內(nèi)核均有帶分支推測的三級流水線,并且兩者的指令集架構(gòu)相似,但只有Cortex-M4F支持DSP和浮點(diǎn)指令。ULPMark-CoreProfile沒有DSP指令,因此Cortex-M4F器件沒能發(fā)揮FPU的優(yōu)勢。
對于基準(zhǔn)分析,ADuCM4050和ADuCM302x分別工作在52 MHz和26MHz。ADuCM4050需要大約11,284個(gè)周期來執(zhí)行ULPMark工作負(fù)載,ADuCM302x需要10,920個(gè)周期,這意味著前者在1秒周期的217μs內(nèi)完成工作模式部分,而后者的工作時(shí)間為420 μs。ADuCM4050使用的周期數(shù)比ADuCM3029多的原因是所用頻率不同(分別為52 MHz和26 MHz),ADuCM4050的閃存需要一個(gè)等待狀態(tài),而ADuCM3029的閃存上沒有等待狀態(tài)。ADuCM4050具有高速緩存,因此在閃存上增加等待狀態(tài)不會有太大影響,因?yàn)樵S多指令是從高速緩存執(zhí)行,可以全速(52 MHz)存取而無需額外的等待狀態(tài)。關(guān)于執(zhí)行時(shí)間,同預(yù)期一樣,ADuCM4050執(zhí)行工作負(fù)載的速度比ADuCM3029更快,因?yàn)槠溥\(yùn)行頻率是ADuM3029的兩倍。
表1. 在流行的ARM內(nèi)核上完成ULP-Mark-CoreProfile工作負(fù)載所需的大致周期數(shù)。周期數(shù)是近似值,因?yàn)橹芷跀?shù)還與編譯器有關(guān)。
*這是基于Cortex-M0+和Cortex-M3數(shù)字的估計(jì)值。
但為什么ADuCM4050比ADuCM3029多消耗10 μA/MHz?這種增加背后的原因是,前者能以兩倍于后者的頻率工作,因而需要額外的緩沖器來實(shí)現(xiàn)對更高頻率的時(shí)序約束。同ADuCM3029相比,ADuCM4050還有一些額外特性:
- 存儲器大小加倍(SRAM 和閃存均是如此):128 kB 和512 kB,而ADuCM3029 只有64 kB 和256 kB。根據(jù)應(yīng)用需求,您可能需要額外的存儲空間。
- 頻率加倍:52 MHz,而ADuCM3029 只有26 MHz,因此ADuCM4050性能更好。
- 增加了RGB 定時(shí)器。
- 增加了新的安全特性:帶密鑰包裹- 解包功能的保護(hù)密鑰存儲和帶密鑰解包功能的鍵控HMAC。
- 增加了三個(gè)額外的SensorStrobe 輸出。
- 增加了全部SRAM 內(nèi)容保留功能:ADuCM4050 最多可保留124kB,而ADuCM3029 最多只能保留32 kB。
圖2. ULPMark-CP結(jié)果前10名,位于EEMBC網(wǎng)站(2017年8月18日)。
根據(jù)應(yīng)用需求(功耗優(yōu)化、額外存儲、工作性能、內(nèi)容保留等),您可以決定使用ADuCM4050還是ADuCM302x產(chǎn)品。
關(guān)于深度睡眠模式,ADuCM4050在運(yùn)行ULPMark-CoreProfile并保留比ADuCM3029多一倍的存儲器內(nèi)容時(shí)(前者為16 kB,而后者為8 kB),實(shí)現(xiàn)了更低的休眠功耗。這種改善的原因是較新的ADuCM4050產(chǎn)品采用增強(qiáng)型架構(gòu)。
編譯器的作用
ULPMark包括兩種操作狀態(tài):工作狀態(tài)和低功耗狀態(tài)(器件處于睡眠模式)。這些狀態(tài)均納入恰好為1秒的占空比中。在工作狀態(tài)下,每個(gè)器件執(zhí)行相同的工作負(fù)載。但正如我們所看到的那樣,工作效率受架構(gòu)的影響。此外,它也受編譯器的影響。編譯器可能會選擇更改和優(yōu)化語句,致使指令組合發(fā)生變化。
根據(jù)應(yīng)用的需要,您可以針對尺寸和速度進(jìn)行優(yōu)化,以平衡尺寸和速度等因素。循環(huán)展開是一個(gè)簡單的例子,執(zhí)行的分支數(shù)與循環(huán)體內(nèi)代碼的比例會發(fā)生變化。編譯器在尋找更好的計(jì)算結(jié)果方式上仍能起到重要作用,但所做的工作是等價(jià)的。例如,ADuCM3029的ULPMark-CP結(jié)果可能會因優(yōu)化程度不同而異:針對速度高度優(yōu)化時(shí)為245.5,中等優(yōu)化時(shí)為232,低度優(yōu)化時(shí)為209。Texas Instruments MSP430FR5969的ULPMark結(jié)果是說明編譯器重要性的另一個(gè)例子。通過應(yīng)用更新版本的IAR Embedded Workbench編譯器,結(jié)果提高了5%——盡管不知道內(nèi)部編譯器做了什么改變來實(shí)現(xiàn)這一改進(jìn)(www.eembc.org/ulpbench/)。同樣,若不深入了解專有編譯器技術(shù),就無法知道為什么STMicroelectronics STM32L476RG從使用ARMCC編譯器變?yōu)镮AR編譯器后,結(jié)果提高了16%。
ADI公司MCU的兩個(gè)結(jié)果均是利用IAR編譯器編譯的代碼生成的,但版本不同。ADuCM4050和ADuCM302x分別使用IAR EWARM7.60.1.11216和7.50.2.10505。同樣不知道做了哪些內(nèi)部改變。提交的兩個(gè)得分使用了與優(yōu)化速度對應(yīng)的no_size_constraints選項(xiàng)。
將ULPMark轉(zhuǎn)換為電能值
ULPMark-CoreProfile使用一個(gè)取電能值倒數(shù)的公式(10個(gè)周期,5個(gè)每秒平均電能值的中位數(shù))。
電能為器件執(zhí)行工作負(fù)載(處于工作模式)時(shí)消耗的電能與器件處于休眠狀態(tài)時(shí)消耗的電能之和。
根據(jù) ADuCM3029 數(shù)據(jù)手冊,運(yùn)行質(zhì)數(shù)代碼時(shí),工作電流的典型值為980 μA。此代碼裝入緩存,以利用其功耗較低的優(yōu)勢。對于ULPMark-CoreProfile代碼,由于它主要是線性代碼,使能緩存沒有什么太大好處,因此電流消耗與數(shù)據(jù)手冊中針對禁用緩存所顯示的電流消耗(1.28 mA)相似。關(guān)于休眠電流,ULPMark-CoreProfile要求使能LFXTAL和RTC,因此睡眠模式下的電流消耗為830 nA(根據(jù)數(shù)據(jù)手冊)。如上所述,工作時(shí)間持續(xù)420 μs。
根據(jù)數(shù)據(jù)手冊數(shù)字和執(zhí)行時(shí)間,工作電流的電能為1.61 μJ,睡眠期間消耗的電能為2.49 μJ。根據(jù)這些值得到的分?jǐn)?shù)與EEMBCEnergyMonitor軟件測得的分?jǐn)?shù)相符。
第一代ULPMark的缺點(diǎn)之一是運(yùn)行規(guī)則將工作電壓限制在3 V(工作組這樣做的目的是為所有器件建立一個(gè)通用電平)。大多數(shù)現(xiàn)代MCU在更低電壓下運(yùn)行的能效要好得多(盡管這可能受溫度和工作頻率的影響)。例如,利用DC-DC轉(zhuǎn)換器將電壓從3 V降至1.8 V,STMicroelectronics STM32L476RG的ULPMark結(jié)果提高了19%。
圖3. ADuCM4050框圖。其集成一個(gè)1.2 V低壓差穩(wěn)壓器(LDO)和一個(gè)可選容性降壓調(diào)節(jié)器。
公布的結(jié)果受DC-DC轉(zhuǎn)換器使用的影響,STMicroelectronicsSTM32L476RG并非不是唯一這樣的器件,但有些器件將轉(zhuǎn)換器集成到器件本身,如ADuCM302x和ADuCM4050,不需要外部IC來提高器件的功耗性能。盡管如此,使用DC-DC轉(zhuǎn)換器有助于創(chuàng)造公平競爭環(huán)境,因?yàn)樗试S器件以最佳能效運(yùn)行。例如,僅工作在3 V的器件不會從DC-DC轉(zhuǎn)換器受益,因?yàn)樗呀?jīng)處于最優(yōu)(或者可能是次優(yōu))的效率水平。另一方面,一個(gè)可以工作在1.8 V但沒有利用DC-DC轉(zhuǎn)換器的器件,則會浪費(fèi)64%的供應(yīng)電能。此外,對于優(yōu)先考慮能效的系統(tǒng)設(shè)計(jì)人員而言,如果系統(tǒng)使用3 V電池,則外部DC-DC轉(zhuǎn)換器的附加成本可能并不重要。必須小心使用DC-DC轉(zhuǎn)換器,避免測量轉(zhuǎn)換器而非MCU的能效。盡管如此,必須考慮到在實(shí)際應(yīng)用中,DC-DC工作模式可能有一些缺點(diǎn),例如工作模式和睡眠模式的相互轉(zhuǎn)換時(shí)間會延長。
使用DC-DC轉(zhuǎn)換器時(shí),還需要考慮轉(zhuǎn)換器的類型。一些轉(zhuǎn)換器是基于電感的,可能會帶來更大面積、更高成本以及電磁干擾(EMI)之類的問題。ADuCM4050和ADuCM302x器件使用基于電容的轉(zhuǎn)換器,避免了這些問題。
分析ULPMark-CP結(jié)果或數(shù)據(jù)手冊值時(shí),重要的是要承認(rèn)器件差異的存在。換句話說,測量器件的能效時(shí),漏電流是一個(gè)重要因素,尤其是在睡眠模式下。雖然傳統(tǒng)的性能基準(zhǔn)一般不受影響,但溫度和濕度等因素對器件的漏電流有一定程度的影響,進(jìn)而會影響ULPMark-CP的結(jié)果。就制造而言,同一供應(yīng)商在不同日期或從不同晶圓生產(chǎn)的器件會不相同。甚至同一器件的功耗也可能發(fā)生變化(根據(jù)測量的時(shí)間和地點(diǎn),變化范圍在5%到15%)。從根本上說,這意味著給出的ULPMark-CP得分應(yīng)被用作能效指南。例如,一個(gè)器件的ULPMark結(jié)果為245,而來自不同晶圓的同款器件的得分可能在233到257之間(假設(shè)變化量為5%)。
認(rèn)證機(jī)制—建立可信度
為了確保得分的真實(shí)性,愿意認(rèn)證其器件的供應(yīng)商將電路板和工具同平臺特定的配置文件一起發(fā)送給EEMBC技術(shù)中心(ETC)。EEMBC將平臺配置文件集成到其系統(tǒng)文件(包括工作負(fù)載)中,并在不同電路板上多次測量得分。認(rèn)證的得分為所有測量的平均值。
通過這種方式,EEMBC確保所有得分的條件相同(相同工作負(fù)載、相同電能監(jiān)測板、相似的溫度等)。
圖4顯示了用于在 ADuCM3029 EZ-Kit上測量ULPMark-CP的連接設(shè)置。
圖4. 測量得分的電路板設(shè)置。
為了測量得分,EEMBC提供了EnergyMonitor軟件。單擊Run ULPBench(運(yùn)行ULPBench)按鈕后,EnergyMonitor硬件便向ADuCM3029 EZ-Kit板供電,并測量配置文件運(yùn)行的能耗。執(zhí)行結(jié)束時(shí),軟件計(jì)算得分并將其顯示在屏幕上。軟件還會在歷史窗口中顯示之前周期的平均能耗。
圖5. EnergyMonitor軟件—GUI。
下一步—MCU效率分析
EEMBC的終極目標(biāo)是提供多個(gè)基準(zhǔn)測試套件,使用戶能夠全面評估MCU。除了關(guān)注MCU核心效率的ULP-Mark-CP之外,新發(fā)布的ULPMark-PeripheralProfile (ULPMark-PP)聚焦于操作各種MCU外設(shè),如ADC、PWM、SPI和RTC。在ULPMark-PP中,由于器件在工作負(fù)載中執(zhí)行多個(gè)外設(shè)事務(wù),所以工作功耗和輕度睡眠功耗非常重要。ULPMark-PP的結(jié)果可從EEMBC網(wǎng)站獲得;ULP-Mark-CP和ULPMark-PP組合可供EEMBC成員使用或授權(quán)使用。
接下來開發(fā)IoTMark-BLE和SecureMark套件。前者側(cè)重于測量MCU和無線電通過藍(lán)牙®發(fā)射和接收數(shù)據(jù)的效率;后者是一種復(fù)雜的安全套件,用于測量物聯(lián)網(wǎng)器件實(shí)現(xiàn)各種加密機(jī)制的電能和性能開銷。二者均會在2017年底提供給成員和被許可人使用。
基準(zhǔn)測試如同汽車,需要人來運(yùn)行。因此,我們鼓勵(lì)大家敦促所有MCU供應(yīng)商運(yùn)行并發(fā)布器件結(jié)果。我們還需要更多供應(yīng)商將ULPMark結(jié)果包括在其數(shù)據(jù)手冊中。這會顯著增加數(shù)據(jù)手冊中規(guī)格特性的可信度和實(shí)際可比性。如果MCU供應(yīng)商未公布這些認(rèn)證結(jié)果,那么您就要問:"為什么不公布,你們在隱藏什么?"
推薦閱讀: