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