微控制器用于許多低功耗和/或電池供電的應用,從智能儀表到消費類醫(yī)療設備,再到遠程傳輸溫度、振動、濕度和其他參數(shù)數(shù)據(jù)的工業(yè)設備。在這些應用中,電池壽命是一個關鍵參數(shù)——微控制器在確定這一時間長度方面發(fā)揮著關鍵作用。
許多因素對微控制器的選擇起作用。主要因素,例如正確的外設組合和內(nèi)存配置文件,是數(shù)據(jù)表中非常量化的細節(jié)。然而,數(shù)據(jù)表數(shù)字如何轉(zhuǎn)化為電池壽命和微控制器性能是模棱兩可的。為了準確比較,工程師使用多個供應商的設備構(gòu)建原型,但這種方法非常耗時,因此唯一實際的選擇是依靠數(shù)據(jù)表編號并希望它與應用程序有某種關聯(lián)。這種方法通常意味著,在設計過程的后期,必須進行更改以添加更大或更復雜的電池。
大多數(shù)電池應用程序大部分時間都在睡眠中,醒來以執(zhí)行其功能,然后重新進入睡眠狀態(tài)。對于這些應用,電池壽命取決于微控制器的三個主要方面:
微控制器的“無所事事”狀態(tài),通常有許多不同的形式。
啟動時間,即微控制器從無操作狀態(tài)到運行應用程序狀態(tài)所需的時間。
應用程序運行時。
對于特定的微控制器,無論應用程序如何,無操作狀態(tài)和啟動狀態(tài)的功耗或多或少都是給定的,但應用程序的功耗是唯一的。為了合理地比較不同的設備,我們需要一個代表“典型”微控制器應用的基準算法,并練習大多數(shù)架構(gòu)特性和存儲器選項。
在以下研究中,我們使用 EEMBC? CoreMark? 基準來創(chuàng)建一個合理的方法來比較不同微控制器的功耗。正如您將看到的,低功耗的“直觀”選擇并不一定會產(chǎn)生最長的電池壽命。
CoreMark 復習
在 2011 年 7 月 8 日的 TechZone 微控制器解決方案雜志中,我們談到了CoreMark,但這里有一個快速復習。自 2009 年以來,CoreMark 基準測試已被下載近 7,000 次(截至撰寫本文時)。開發(fā)人員特別注意解決困擾舊基準的陷阱:幾乎不像真實代碼的工作負載;可能優(yōu)化部分代碼的編譯器;以及可能扭曲任何有意義的結(jié)果的其他操作的可能性。CoreMark 已證明自己是一個可靠的性能指標。CoreMark 基準測試通過仔細使用三種基本數(shù)據(jù)結(jié)構(gòu)來反映真實世界的計算。鏈表執(zhí)行指針操作;矩陣運算展示了緊密優(yōu)化的循環(huán);和狀態(tài)機測試結(jié)構(gòu)較少、難以預測的分支。
該程序主要由一個主循環(huán)組成,其中完成了大部分工作。我們將循環(huán)的每次偏移稱為一次迭代。在循環(huán)完成迭代后,運行循環(huán)冗余校驗 (CRC),它也是基準的定時部分的一部分,以確認在執(zhí)行期間沒有出錯。該基準測試的特點使其非常適合比較各種不同微控制器的性能(或在本例中為能耗)。
使用 CoreMark 比較當前
8位微控制器
16位微控制器
32位微控制器
“典型”功耗的數(shù)據(jù)表值通常附有腳注,表明測試設置與實際用戶應用程序中的現(xiàn)場情況有所不同。這些注意事項包括關閉所有內(nèi)部振蕩器并從外部振蕩器驅(qū)動設備。此外,所有外圍設備都關閉;核心和內(nèi)存是唯一的活動組件。部分原因是因為幾乎不可能設計出標準的使用配置文件,尤其是與內(nèi)存和外圍設備使用相關的情況。但是,數(shù)據(jù)表并未指定在進行功率測量時內(nèi)核上運行的代碼。有些表示 CRC 算法或簡要描述代碼;其他人指定一個“while (1)”循環(huán)。
最初,當我們比較微控制器的功耗時,我們查看了運行 EEMBC 的 CoreMark 基準測試時消耗的電流,然后將該值與數(shù)據(jù)表編號進行比較。我們在室溫下收集了我們的測試數(shù)據(jù),并與數(shù)據(jù)表注釋保持一致。在所有情況下,設備都是從 FLASH 執(zhí)行的。因為我們匹配了所有已知的測試條件(除了代碼),我們可以隔離代碼對確定測量數(shù)字可靠性的影響。
CoreMark 和數(shù)據(jù)表比較
下圖顯示了器件在數(shù)據(jù)表中報告的頻率以及運行 CoreMark 基準測試時測量的行為。在所有情況下,CoreMark 電流都高于報告的數(shù)據(jù)表數(shù)字,有時甚至高出很多。表 1 顯示了 CoreMark 測量電流與數(shù)據(jù)表電流的比率。

圖 1:比較數(shù)據(jù)表和 CoreMark 生成的通用 8 位微控制器的電流與頻率值。

圖 2:比較數(shù)據(jù)表和 CoreMark 生成的通用 32 位微控制器的電流與頻率值。

表 1:CoreMark 與數(shù)據(jù)表的比率表明,對于實際代碼執(zhí)行,差異有時可能會大 2.5 倍。
能量:計算曲線下的面積
使用 CoreMark 提供了很好的工作負載來展示微控制器之間的性能差異,但需要額外的步驟來確定內(nèi)核執(zhí)行算法所需的能量。如果兩個微控制器在給定頻率下消耗相同的電流,但一個比另一個更快地完成工作,那么速度更快的微控制器在工作時使用的能量更少。請注意,數(shù)據(jù)表中的值僅顯示電流消耗,不反映微控制器效率和能耗。
32 位微控制器運行應用程序的速度可能比 8 位或 16 位微控制器快兩到三倍,但這與電池壽命有什么關系呢?電池壽命由能量被移除的速率(即功率)決定,并由功率與時間曲線下的面積反映,如圖 3 所示。執(zhí)行。

圖 3:功率曲線下的面積決定能量。
更高效的微控制器可能會在固定時期內(nèi)產(chǎn)生更小的曲線下面積,因為可以在睡眠模式下花費更多時間。營銷幻燈片通常顯示一個通用圖表,所有位寬(8、16 或 32)的峰值電流相等,更寬位寬的執(zhí)行速度更快(參見圖 4)。換句話說,它們顯示了速度的優(yōu)勢,但可能忽略了更高電流的劣勢。這會夸大大型微控制器的能源效率。圍繞 CoreMark 基準進行標準化的實際測量可以更真實地了解微控制器的性能。

圖 4:對平均電流的性能影響。
能量測量
在我們執(zhí)行的評估過程中,每個設備都從睡眠狀態(tài)中喚醒,執(zhí)行 CoreMark 基準測試,然后重新進入靜態(tài)低功耗模式。大多數(shù)微控制器有許多不同的斷電模式。在一個示例中,微控制器可能會進入低功率振蕩器保持開啟的低功率狀態(tài)保持狀態(tài)。在這種情況下,微控制器會根據(jù)一些中斷將自己喚醒,并從它進入睡眠狀態(tài)時停止的地方繼續(xù)執(zhí)行應用程序。其他低功耗模式具有使微控制器的各個部分上電的選項。
各種模式以喚醒時間換取功耗。在最低功耗模式下,外部源必須喚醒微控制器。為了進行公平的評估,我們選擇了微控制器可以喚醒的最低功耗睡眠狀態(tài)。我們將喚醒時間包括在整體能量測量中。
隨著時間的推移測量微控制器的電流是一項挑戰(zhàn)——動態(tài)范圍很大,在很短的時間內(nèi)從微安到毫安。在這么大的范圍內(nèi)自動切換時,傳統(tǒng)的電流表太慢了。此外,當前的采樣時間太長,無法捕捉到快速變化。幾家公司已經(jīng)建立了合適的測量設備;我們使用了Hitex的PowerScale,它響應速度快,動態(tài)范圍大。我們將 PowerScale 探頭與微控制器的電源軌串聯(lián)。在所有情況下,微控制器 I/O 都處于非活動狀態(tài),我們只測量了內(nèi)核和內(nèi)存。
修改占空比
在我們的測量中,我們想要修改執(zhí)行時間與睡眠時間的比率。因此,我們修改了 CoreMark 基準,以允許測量工作循環(huán)的單次迭代。在 10 秒的時間里,我們運行了 CoreMark 工作循環(huán)的一次迭代,然后讓微控制器休眠;我們從中獲得了工作時間與睡眠時間的占空比。
每個微控制器都被編程為喚醒到給定頻率,執(zhí)行 CoreMark 基準測試的一次迭代,然后重新進入睡眠狀態(tài)。當電流開始上升時測量喚醒時間,當電流達到其靜止狀態(tài)時開始測量睡眠時間。這使得占空比測量與完成基準測試所需的時間(包括啟動和關閉時間)成正比。
我們通過調(diào)整時鐘頻率來修改占空比。例如,在 6 MHz 時,基準循環(huán)的完成速度是 3 MHz 時的兩倍,從而留出更多的睡眠時間,從而減少占空比(參見表 2)。

表 2:作為工作頻率函數(shù)的占空比比較(百分比)。
測量結(jié)果
對十秒內(nèi)的電流積分得出消耗的電荷量。由于電壓是固定的,每次迭代的電荷測量與每次迭代的能量成正比(參見圖 5)。例如,在 4 MHz 時,32 位微控制器的效率分別是 16 位和 8 位微控制器的 3.5 倍和 8.6 倍。

圖 5:每次迭代能量。
輸入電壓對能量的影響
輸入電壓會影響基于微控制器的半導體工藝的每次迭代能量,以及它是否具有電壓調(diào)節(jié)器,如果有,調(diào)節(jié)器的類型。例如,我們的測試表明,與 32 位微控制器相比,電壓變化導致 16 位微控制器的功耗變化更大;然而,16 位微控制器的制造過程允許設備在其整個電壓范圍內(nèi)運行而無需穩(wěn)壓器;32 位微控制器需要一個板載穩(wěn)壓器。不帶穩(wěn)壓器的設備的電流消耗變化將比帶穩(wěn)壓器的設備大得多。在我們的具體測試中,32位微控制器在數(shù)字邏輯前端使用了線性穩(wěn)壓器;這在輸入電壓變化時提供恒定電流。如果設備改用開關穩(wěn)壓器,則設備將消耗恒定功率而不是恒定電流。
單次迭代與重復能量
單次迭代測試更多地關注睡眠時間而不是清醒時間。我們通過運行一個基準測試迭代并讓微控制器進入睡眠狀態(tài)來做到這一點。這將是一個應用程序的準確表示,該應用程序運行一次,然后等待很長時間才能再次運行。我們確定,如果睡眠時間少于 75 秒,則 32 位微控制器將使用最少的能量,因為它花費了大部分時間運行代碼,而 32 位微控制器在運行代碼時效率更高。對于超過 75 秒的睡眠時間,16 位微控制器使用的能量最少,因為它在睡眠時效率更高。當睡眠時間超過 300 秒時,8 位消耗的電流最小。
如果應用程序代碼不斷迭代而不是只運行一次,那么能量分布看起來就會大不相同。圖 6 顯示了在選定頻率下測試的三個設備的能量分布。隨著時間的推移,能量線性累積。在這種類型的應用中,32 位微控制器可以以更低的電流更快地完成任務。

圖 6:CoreMark 重復執(zhí)行的測試結(jié)果。
但是我的電池能用多久?
絕對電池壽命取決于應用程序,但我們在運行重復的 CoreMark 工作負載時比較了上述三個微控制器。使用 240 mAhr CR2032紐扣電池為所有運行頻率為 6 MHz 的微控制器供電,結(jié)果如下:
32 位微控制器:360 萬次迭代或 100 小時使用壽命
16 位微控制器:120 萬次迭代或 33 小時使用壽命
8位微控制器:43.2萬次迭代或12小時壽命
結(jié)論
隨著電池供電嵌入式設備的普及,能耗已成為一個特別關鍵的設備參數(shù)。錯誤地獲取此規(guī)范可能會導致產(chǎn)品在市場上徹底失敗。不幸的是,微控制器數(shù)據(jù)表幾乎沒有提供真實的功率信息。使 CoreMark 基準測試對性能測量具有吸引力的特性也使其成為比較不同微控制器的實際功耗的有用應用程序。雖然絕對電池壽命估計需要使用實際目標應用程序進行測試,但 CoreMark 基準測試可以幫助在設計周期的早期做出關鍵的微控制器決策,遠在目標應用程序準備好之前。
評論