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

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

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

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

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

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

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

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

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