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

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

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

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

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

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

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

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

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