透明化客觀效能指標 超低功耗MCU評測掛保證

2018-03-05
物聯網(IoT)帶動了整個市場對於各種電池供電裝置可觀的需求,進而也驅動著業界對於更具能源效率之微控制器(MCU)與其他系統層級元件的要求,因此超低功耗(ULP)便成為被大量使用的行銷口號,尤其是針對用來宣傳微控制器。
要了解ULP背後的真正意義,首先應考量其所牽涉的各項因素。在某些情況下,面臨電源極度受限(例如自行採集能源)的狀況,運行模式下的主動電流(Active Current)就必須盡可能地壓到最低。如果系統大多數時間都處在待機或休眠模式,偶爾才會被喚醒(週期性或非同步)來處理特定作業,那麼就應將休眠模式電流降到最低程度。 

此外,ULP背後也意謂著能源效率,大多數作業都是在有限時間內完成的。整體來看,在規畫使用電池供電的裝置時,應根據各項考慮因素來權衡,以便在這些要求之間做出最妥切的取捨。 

當然,ULP涉及主觀分類與功能表現。微控制器如果在運行模式下消耗電流介於30微安培(μA)/MHz到40μA/MHz之間,而關閉狀態下消耗電流則介於50奈安培(nA)到70奈安培,就歸類為超低功耗。然而,要將微控制器分類為超低功耗,實際上涉及到許多方面的功能特色,包括架構、系統單晶片(SoC)設計、製程技術、智慧周邊以及深層睡眠模式等。 

本文將分析亞諾德(Analog Devices)的兩款微控制器,藉此了解如何解讀超低功耗的真正意涵。另外,還將探討嵌入式微處理器效能指標聯盟(EEMBC Consortium)的認證機制,該機制除了確保量測數據的真實性外,還協助系統開發商為其解決方案挑選最適合的微控制器。 

評測微處理器 優化ULP表現 

欲了解超低功耗的第一步,首先須要解釋要如何量測。開發者通常會查閱產品資料表來查找單位MHz耗電流,以及不同休眠模式下的消耗電流。而最先遇到的問題,就是在查看運作模式電流時,資料表所列出之數據通常都沒有標示是在什麼條件下所測得的,例如快閃記憶體元件的型號、電壓以及待機狀態等。 

有些廠商會使用作業模式參考數據,例如EEMBC CoreMark,有些會使用執行「while 1」程式敘述句。如果快閃元件有多種等候狀態,微控制器的效能就會降低,執行時間便會拉長,而執行一項作業所消耗的電力就會越高。某些廠商提供額定電壓下的數據,有些則提供最低電壓下的數據,甚至有些廠商完全沒有標明電壓。或許這些都是細微的差異,但如果沒有統一的標準,大家便只能進行粗略的比較。 

通常在資料表中都會詳盡說明深層睡眠模式,但各家廠商在這些模式中測得數據的條件並不一致(例如保留記憶體的數量或是電壓)。此外,在實際應用中,使用者還必須考量進入與離開這些模式必須消耗的能源。這些因素可能無關緊要,但也可能至為關鍵,端賴元件大多數時間都處在休眠模式或者經常喚醒而定,這引申出下個重點:裝置有多少時間處在休眠狀態?運作與休眠模式之間的平衡,對於評斷ULP的量測數據發揮非常重要的作用。 

為簡化流程,EEMBC在其ULPMark-CoreProfile(ULPMark-CP)中使用1秒週期,許多微控制器廠商以這個效能量測指標作為產品資料表的標準。使用1秒週期,是EEMBC工作小組各成員達成的共識。 

在ULPMark-CoreProfile作業負載的運行時間中,工作週期(Duty Cycle)大約為98%。在這個效能量測指標中,裝置每一秒喚醒一次,執行小量的工作(運作週期),完成之後再切回休眠狀態(圖1)。 

圖1 ULPMark-CP的工作週期為1秒。在這個時間內,裝置從深層睡眠模式中喚醒,執行固定的作業負載,然後切回深層睡眠模式。
在運行模式中,通常會因類比電路導致消耗電流產生偏移(Offset),因此須要盡可能降低運行時的主動電流,以及有效率地運用深層睡眠模式,這都有助於優化整體系統的耗電。 

另外,須要注意的是,雖然降低頻率能夠壓低主動電流,但卻會拉長作業時間,而當微控制器啟動時,先前提到因類比電路產生的偏移則維持固定。但在各種微控制器選擇之間,將面臨什麼樣的取捨?而應用的工作週期以及深層睡眠模式電流又會對能源產生什麼影響? 

每個週期消耗的能源和工作週期D之間呈函數關係(處於休眠模式的時間占所有時間的比例),其可以用一個簡單的公式1算出,該公式可推定在啟動與關閉轉換過程中所消耗的電力極低。 

 

......................................................公式1 

公式1中的斜率是由ION所定義,ISLEEP休眠電流遠小於ION啟動電流,y截距就只是ISLEEP。這個公式能協助了解工作週期,其中,主動電流遠比休眠模式電流來得重要。 

藉由測試比較 理解超低功耗 

如先前所述,接下來比較兩款超低功耗(能源)微控制器ADuCM4050與ADuCM302x。如ULPMark量測結果資料表所示,ADuCM4050與ADuCM302x兩者跑分分別為203與245.5。注意到這項量測只動用微控制器的核心(所以量測程式才名為CoreProfile)進行運算。那麼,到底是什麼因素導致兩款元件的跑分差了18%? 

ADuCM4050內含一個安謀國際(ARM) Cortex-M4F,該核心採用的是ARMv7E-M架構。而ADuCM302x則內含一個ARM Cortex-M3核心,該核心採用的是ARMv7-M架構。兩個核心都有一個具分支預測功能的三階管線,且兩者的指令集架構相似,其中只有Cortex-M4F支援數位訊號處理(DSP)以及浮點運算指令。由於ULPMark-CoreProfile沒有用到DSP指令,因此Cortex-M4F無法發揮浮點運算單元的優勢。 

為方便分析效能量測數據,ADuCM4050與ADuCM302x分別以52MHz以及26MHz的時脈運行。ADuCM4050需要大約11,284個週期才能執行完ULPMark作業負載,而ADuCM302x則需10,920個週期,代表前者在1秒週期中有217微秒處在作業模式,而後者則有420微秒(表1)。 

ADuCM4050使用的週期之所以會比ADuCM3029多一點,是因為使用的頻率(分別為52MHz與26MHz)的緣故,ADuCM4050需要為快閃元件設定一個等待狀態,而ADuCM3029在快閃元件方面就不需要等待狀態。ADuCM4050有一個快取記憶體,在快閃元件上多加等待狀態不須付出過多的代價,因為許多指令可以直接從快取記憶體執行,不需要額外的等待狀態就能以全速(52MHz)模式進行存取。在執行時間方面,一如預料,ADuCM4050執行作業負載的速度快過ADuCM3029,因為其頻率為ADuCM3029的兩倍。 

但為何ADuCM4050的耗電會比ADuCM3029多出10μA/MHz?其背後的原因是,因為前者運行的頻率是後者的兩倍,因此需要額外的緩衝區來容納更高頻率所衍生的各種時序限制。此外,ADuCM4050還具備一些ADuCM3029所沒有的特色,包括: 

・加倍的記憶體(包括SRAM與快閃) 

128kB與512kB對比ADuCM3029的64kB與256kB。依據實際應用,可能還需要額外的儲存元件。 

・加倍的頻率 

52MHz對比ADuCM3029的26MHz,因此ADuCM4050具備更高的效能。 

・加入RGB計時器 

・加入新安全功能 

保護式密鑰儲存,結合密鑰包裝-拆裝,以及支援密鑰拆裝機制的金鑰雜湊訊息鑑別碼(Keyed HMAC)技術。 

・加入三個額外的SensorStrobe輸出 

・加入完整SRAM保存機制 

最多124kB的資料可留存在ADuCM4050,對比ADuCM3029僅能保存32kB。 

在深層睡眠模式方面,ADuCM4050的休眠模式電流比較低,記憶體保存容量是ADuCM3029的兩倍,量測標準採用的是ULPMark-CoreProfile(前者為16kB對比後者的8kB)。主要是因為比較新的ADuCM4050產品採用了增強架構所致。 

依據不同應用的需求,例如功耗最佳化、額外的儲存、運行模式效能、保存資料能力等,自行判斷採用適合產品(表2)。 

表2 ULPMark-CP的前十強紀錄,公布於EEMBC官網(2017年8月18日)
編譯程式助力 左右跑分結果 

如上所述,ULPMark含有兩個運行狀態,包括啟動運行狀態,以及元件切換至休眠模式的低功耗狀態。這些狀態一起構成1秒整的工作週期。在運行狀態,每個元件執行相同的作業負載,但根據觀察,其運行的效率會受元件的架構所影響。此外,編譯程式也會影響運行效率。編譯程式可能會選擇變更與優化程式碼,導致指令的組合也會隨之而改變。 

依據應用的需求,可選擇針對大小、速度,或者綜合考量大小與速度進行優化。迴路展開(Loop Unrolling)就是其中一個例子,執行的分支和迴路內部程式碼之間的比例產生了變化。編譯程式仍承擔大部分的工作,負責找出更好的方法來得到理想的運算結果,但執行的作業都是相同的。 

舉例來說,用ULPMark-CP量測ADuCM3029時,可能的結果包括針對速度進行最佳化所得到的245.5分,中等最佳化時獲得的232分,一直涵蓋到低程度最佳化時的209分。 

說明編譯程式之重要性的另一個例子,就是運用ULPMark量測德州儀器(TI)的MSP430FR5969,當運用較新版本的IAR Embedded Workbench編譯程式時,跑分改進5%,儘管在達成這項改善時,外界仍不知道編譯程式內部已經進行了哪些變動。同樣的道理,由於無法得知專利型編譯程式技術的內情,因此無法判斷為何意法半導體(STMicroelectronics)的STM32L476RG元件採用的編譯程式在從ARMCC改成IAR之後量測到跑分的增幅會達到16%。 

亞諾德兩款微控制器測得的跑分結果,運用的都是IAR編譯程式,但版本不同。ADuCM4050與ADuCM302x分別使用IAR EWARM 7.60.1.11216與7.50.2.10505版。同樣地,外界無法得知兩版本的內部變動。兩款元件的跑分都是啟用no_size_constraints這個與最佳化速度有關的選項。 

將ULPMark轉成能源數值 

ULPMark-CoreProfile使用一個公式(公式2)求出相對應的能源數值(十個週期每秒消耗平均能源,重複量測五次後取中位數): 

......................................................公式2 

能源數值是裝置在執行作業負載(運行模式)以及處於休眠模式下,所有消耗能源的總和(運行模式)(公式3): 

......................................................公式3 

根據ADuCM3029的資料表,在執行質數運算程式碼時,主動電流的額定值為980毫安培。如果將程式碼置入快取,即可發揮其低功耗的優勢。在ULPMark-CoreProfile方面,由於大多屬線性程式碼,因此啟用快取不會產生太多效益,其消耗的電流和資料表中沒有使用快取時的電流數據相差無幾,可達到1.28毫安培(mA)的水準。在休眠模式的電流方面,ULPMark-CoreProfile要求得啟用LFXTAL與RTC,在休眠模式下耗用電流為830奈安培(根據資料表)。如先前所述,運行時間為420微秒(公式4)。 

 

......................................................公式4 

根據資料表數據和執行時間,主動電流的能源為1.61微焦耳,休眠時間所耗用的能源為2.49微焦耳。這些數據的成績符合EEMBC EnergyMonitor軟體的量測結果(公式5): 

......................................................公式5 

第一代ULPMark的其中一項缺點,就是運行規則(Run Rule)將工作電壓限制在3伏特(V),工作小組以此數值設為所有元件的通約基準(Common Level)。大多數使用更低電壓的現代微控制器都擁有更好的能源效率(效率可能會受到溫度與工作頻率所影響)。舉例來說,STM32L476RG由於使用一個直流對直流(DC-DC)變壓器將電壓從3伏特降到1.8伏特,因此在ULPMark量測到數據提升了19%。 

包括STM32L476RG在內的許多元件在其公布數據中都反映使用直流對直流變壓器將直接影響量測結果,有些元件的變壓器整合到元件內部,包括ADuCM302x與ADuCM4050,這些元件不需外部IC來提升元件的功耗表現。使用直流對直流變壓器的確有助於扳回劣勢,因為它讓元件在最佳能源效率下運行。 

舉例來說,有個元件僅在3伏特電壓下運行,那麼它就無法受益於直流對直流變壓器,因為元件本身已達到最佳化(或次最佳化)效率。反觀如果元件能在1.8伏特電壓下運行,但沒有使用直流對直流變壓器,基本上就浪費掉了64%的能源。 

此外,如果系統設計者的優先任務是能源效率,而系統採用的是3伏特的電池,那麼直流對直流變壓器額外所增加的成本,其產生的影響也許就沒那麼嚴重。另外,在使用直流對直流變壓器時應特別小心,避免量測到的能源效率是量到變壓器而不是微控制器。 

然而,在現實應用中,直流對直流作業模式也可能具有一些缺點,例如從作業模式切換到休眠模式的過渡時間過於冗長。 

使用直流對直流變壓器還得額外考慮一個因素,那就是變壓器的種類。有些是電感式變壓器,代表會占用更多空間、成本更高,以及容易具有電磁干擾(EMI)的問題。 

在分析ULPMark-CP結果或甚至資料表數據時,應注意元件變異性(Variance)的問題。在量測元件的能源效率時,漏電流是影響甚巨的因素,特別是休眠模式。 

一些傳統效能量測指標通常不會受這些因素影響,而包括諸如溫度與溼度等變因,則會對元件的漏電流產生某種程度的影響,進而影響ULPMark-CP的量測結果。在製造方面,即使是同一家廠商生產出的元件,不同時間或晶圓做出的元件都不可能完全一致,甚至同一個元件消耗的能源也會出現變化,不同時間量到數據可能會出現5%到15%的落差。 

基本上來說,這代表ULPMark-CP跑分應作為能源效率的參考依據。舉例而言,在ULPMark測得245分的元件,其若是在不同晶圓上生產,同型號的元件所測得的跑分可能從233分一直落到257分的範圍內。 

打造認證機制 建立公信力 

為確保跑分的真實性,許多廠商願意檢驗其元件,將機板與工具送到EEMBC技術中心(ETC),並附上平台規格組態檔案。EEMBC會將平台組態檔案整合到自己的系統檔(內含作業負載),然後對不同機板量測數次,最後取所有量測數據的平均值作為認證分數。 

圖3 EnergyMonitor軟體的圖形化使用者介面
EEMBC藉由這種方式確保所有跑分都在相同的條件下測得,例如相同的作業負載、相同的能源監視機板,以及相近的溫度等。圖2顯示機板連結方式,用來以ULPMark-CP量測ADuCM3029 EZ-Kit。 

在量測跑分時,EEMBC採用EnergyMonitor軟體(圖3)。一按下Run ULPBench按鈕,EnergyMonitor硬體就會為ADuCM3029 EZ-Kit機板供電,然後在分析程序中量測消耗能源。執行完成後,軟體會計算跑分然後顯示在螢幕上。此外,軟體還會在歷史視窗中顯示先前週期的平均消耗能源。 

圖2 量測跑分時的機板設定
多套量測指標 如實分析效能 

EEMBC的終極目標是提供多套量測程式,讓用戶對微控制器進行全面的評測。除了評鑑微控制器核心效率的ULPMark-CP,新釋出的ULPMark-PeripheralProfile(ULPMark-PP)則專注於量測微控制器的各個周邊,包括ADC、PWM、SPI以及RTC等。 

對ULPMark-PP來說,運作與淺度休眠電流非常重要,因為元件在執行作業負載時會進行許多周邊交易。ULPMark-PP的量測結果都公布在EEMBC網站;ULP- Mark-CP與ULPMark-PP的量測數據則開放給EEMBC會員或授權用戶查詢。 

目前研發中的包括IoTMark-BLE以及SecureMark,前者專門量測微控制器的效率,以及藍牙(Bluetooth)傳輸的傳送接收比例。後者則是一款複雜的安全套件,用來量測為各種物聯網裝置建置各類譯密元件時在能源與效能方面的影響。兩款量測程式在2017年底前釋出給會員與授權用戶。 

效能量測指標如同汽車一樣,兩者都需要人去跑,因此鼓勵所有微控制器廠商自行量測並公布結果。此外,也需要更多廠商將ULPMark結果列入其產品的資料表,例如Ambiq Micro、亞諾德、意法半導體以及德州儀器等廠商的作法。如此將大幅提升資料表中規格數據的可信度和可比較性。如果微控制器廠商沒有公布這些經過認證的結果,大可質問他們:「為什麼不公布,是否在隱瞞什麼呢?」 

(本文作者任職於亞德諾)

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!