沈忱,王宜懷,李成金,胡宗棠
(1.蘇州大學物理科學與技術學院,蘇州215006;2.蘇州大學計算機科學與技術學院)
目前研究分析該系列微控制器低功耗機制資料較少,對開發者而言其低功耗機制理解不夠可能會導致開發低功耗應用難度較高。鑒于此,本文以KL25微控制器為硬件平臺,對比分析業界幾款典型低功耗微控制器低功耗技術,總結了功耗參數及性能;充分分析了影響功耗的因素并給出這些功耗模型的優化方法以闡述其低功耗機理;研究了KL25不同等級功耗模式和時鐘模塊MCG 之間軟件可配關系,并應用在實驗室開發的KL25微控制器最小板載系統SD-FSL-KL25-EVB 平臺上,實際測試評估了KL25微控制器運行性能。該分析研究對嵌入式低功耗應用產品的開發有著較大的實用價值。
目前,基于CMOS主流制程工藝,從硬件角度,其功耗主要分為動態功耗和靜態功耗,并隨著工藝尺寸變小,晶體管靜態功耗成為影響低功耗設計的主要因素。
動態功率消耗發生在邏輯門狀態切換時刻,與門極相關的晶體管內部電容C 被充電,其功耗大小依賴時鐘頻率f,信號翻轉概率N,芯片核心電壓V;靜態功率消耗是指邏輯門不活動時晶體管開關引起的亞閾值漏電和氧化柵柵極漏電,大小與芯片核心電壓V、晶體管開關閾值(Vt)、工作溫度T 有關。其硬件功耗模型:

其中Ileak=exp(-qVt/KT),Pdynamic表示系統動態功耗;Pstatic表示系統靜態功耗。由式(1)可以看出,動態功耗與電壓二次方成正比,與頻率成線性關系;靜態功耗與溫度、晶體管開關閾值成指數關系。所以,低功耗優化可從兩方面著手。
在優化動態功耗方面,如降低時鐘頻率、時鐘門控技術以減少電路活動次數;縮小門極驅動的過驅線圈大小,減少驅動電容值(如低k電介質材料或低阻抗/電容銅軌技術);利用多重電壓區域,平衡邏輯門功耗與門極開關速度等。
在優化靜態功耗方面,如在關鍵時序路徑上使用低開關閾值(Vt)的晶體管,而在非關鍵路徑使用高開關閾值(Vt)的晶體管的多閾值CMOS技術;剝離持續供電和可關斷供電的片上門控電源(Power Gating,PG)技術以及更加特殊的狀態保持門控電源(State Retention PG)技術,都能降低芯片漏電流和靜態功耗。
對嵌入式低功耗的設計,不僅可以從硬件部分進行優化設計,還可通過軟件優化來降低系統功耗。由于不同架構支持的指令集不同,所以軟件優化方法適用性受限,但作用仍不可小覷,其軟件功耗模型[1]:

其中E表示執行程序所耗總能量;I表示某條指令;N1表示該指令執行次數;i表示遍歷程序中所有指令;O 表示某兩條指令間的附加能量值;N2表示該兩條指令出現的次數;j、k表示遍歷所有相鄰的兩條指令;E0表示造成流水線停頓、訪問Cache不命中等附加能量;o表示遍歷所有這種附加能量。
從式(2)中可以得出,為降低系統功耗,可以從低功耗編譯指令、指令低功耗調度和存儲結構等方面著手。對于某微控制器,每條指令都有一定功耗,每個操作都會激活微控制器中某些硬件部件,其中存儲功耗約占整個芯片功耗的30%~60%,所以采用高效的超長指令(VLIW)、代碼融合(Code Morphing)技術、合適的編譯方法,能夠減少存儲系統訪問頻率;通過合理選擇狀態機狀態的編碼方法(如Gray碼),可以減少狀態切換時電路的翻轉次數,降低程序執行功耗。
本文選取4款價格區間近似的低功耗微控制器:Microchip PIC24F系列、TI MSP430F系列、STM L1系列和Freescale KL系列。目前,在低功耗前沿技術領域,Microchip采用nanoWatt XLPTM (nanoWatt XLP eXtreme Low Power Technology)超低功耗技術[2];TI采用130nm超低漏電(ULL)工藝技術,整合Ramtron F-RAM 低能量存儲器技術[3];ST 采用130nm 專用低漏電流工藝以及優化的節能架構;Freescale采用90nm SG-TFS(Split Gate Thin Film Storage)工藝技術[4]各微控制器性能參數如表1所列。
從表1數據可以看出,各款MCU 在低功耗技術領域都有獨特技術專利,從功耗和性能角度,KL25系列Core-Mark/Core相較更有優勢,其工作主頻高而運行功耗低,能效比最大。

表1 微控制器性能參數
基于ARM Cortex-M0+內核32位KL低功耗設計,從表1數據,運行功耗比、EEMBC標準CoreMark測試數據,都體現了低功耗策略。為了進一步剖析KL低功耗機制,本節將從硬件功耗模型和軟件功耗模型角度出發,同時考慮到KL微控制器是面向取代8位市場領域,以Freescale S08系列的一款高性能低功耗8位微控制器MC9S08GB60為例進行分析,以全面闡述KL低功耗機制。
2.2.1 優化硬件功耗因子
(1)低功耗制程工藝
ARM 和Freescale公司都提供了先進的低功耗技術以優化式(1)中的功耗Pdynamic和Pstatic。
基于Cortex-M0+內核芯片的設計,ARM 提供標準單元庫,設計人員可以選擇不同的標準單元庫類型,并針對速度、功耗和面積優化其設計。其中電源管理工具包(Power Management Kit,PMK)是一種精密電源管理技術,包括電源門控、保持寄存器、隔離單元、電平轉換、不關機緩沖器和反偏壓單元,提供對動態耗電和靜態/泄露耗電的主動控制。依賴于PMK 技術,采用低功耗架構的通用I/O,可軟件編程實現多種輸入類型、壓擺率、驅動強度、上拉/下拉/開漏,電源管理功能還支持內核至I/O 電壓范圍更大的內置電平轉換器,并能在內核電源環斷電時保持狀態。
Cortex-M0+內核只是微控制器一部分,若要實現整個控制器的低功耗設計,采用支持低功耗特性的外設模塊組件是實現微控制器整體低功耗不可或缺的條件,尤其是存儲系統功耗。
Freescale是開發和優化了諸多工藝技術以降低功耗,詳細描述及技術參數略——編者注。
相比基于增強型S08的內核GB60,基于Cortex-M0+KL25微控制器在最低工作電壓、Flash電壓上都有很大程度優化;系統工作在最佳性能時,工作電流接近而KL25主頻是GB60的三倍;WAIT 模式靜態漏電流降低1/4。
(2)靈活電源模式和時鐘模式
KL25在Cortex-M0+內核低功耗模式Sleep、Deep Sleep基礎上,擴展8種低功耗模式,集成新特性低漏喚醒單元(LLWU),專用于在超低功耗低漏模式下的喚醒操作。而GB60 功耗模式僅為STOP3、STOP2、STOP1。表2總結了KL25在內核不同狀態下的功耗模式。

表2 KL25 8種功耗模式
VLPR模式限制CPU 頻率在2MHz內,內部穩壓器處于待機模式,同時還保持外設和低電壓檢測(LVD)正常工作;VLPW 模式下CPU 暫停,Flash、FlexMemory編程不可用,外部中斷事件能夠喚醒MCU,執行預定任務后恢復低功耗狀態,最大限度減少運行狀態和低功耗狀態之間頻繁切換;STOP模式MCU 處于靜態,保留所有寄存器并同時保持LVD工作;VLPS進一步關閉LVD;LLS低漏停止模式降低內在邏輯的電壓,最大限度減少未使用的內部電路的漏電;VLLSx極低漏停止模式則更進一步切斷內在邏輯,選擇性切斷RAM 內存,從而減少未使用電路的漏電。
KL系列中一個關鍵功率組件就是低漏電喚醒單元(LLWU),它在所有低漏電停止模式中充當喚醒監控器。在LLS/VLLSx模式下,提供如低功耗定時器,實時時鐘RTC,模擬比較器,觸摸感應接口(TSI)和幾個引腳中斷作為喚醒源,使能喚醒輸入,MCU 處于LLS/VLLSx模式它就會啟動。
對于數字系統來說,時鐘系統是整個系統的中樞神經,KL25片上集成靈活可配的時鐘系統和門控時鐘技術。在實際應用中,可軟件配置時鐘模式,選擇不同時鐘源和時鐘頻率。整個片上時鐘系統來源分為:MCG、OSC、RTC、PMC四個模塊,從功耗模式角度,這4個時鐘源在0~3 功耗等級模式下都可以全功能輸出,但在STOP以及功耗更低模式下,只有部分時鐘模塊工作;從時鐘模式角度,片上時鐘系統可分成8種:FEI、FEE、FBI、BLPI、FBE、BLPE、PBE、PEE,每種時鐘模式的差異在于時鐘源與時鐘頻率,共性都是為片上系統提供內核時鐘、系統時鐘、總線時鐘、Flash時鐘等。
在4大時鐘系統來源中,MCG 模塊是最重要的時鐘參考系統,可工作在0~5功耗等級模式下。內部固化的4 MHz/32kHz時鐘;內部集成鎖頻環FLL、鎖相環PLL。FLL輸出頻率在20~48 MHz之間,PLL 輸出頻率在48~100 MHz之間。MCG 模塊支持輸出以上8 種時鐘模式,尤其在系統時鐘精度、功耗、性能要求不高的應用中,直接使用內部固化時鐘驅動芯片工作,減少外圍時鐘電路。OSC模塊提供了一個外部時鐘源輸入接口電路,其輸出OSCERCLK 時鐘可工作在0~9 全功耗等級模式下。RTC模塊可在0~9全功耗等級模式下輸出1 Hz時鐘頻率,可以為系統提供精準定時,尤其應用在定時喚醒系統中;PMC模塊提供1kHz LPO 時鐘,也可工作在0~9全功耗等級模式下。
(3)低功耗中斷機制
為減少門數和提高系統靈活性,Cortex-M 處理器采用基于堆棧的異常模型。從中斷處理機制角度,一旦發生異常,Cortex-M 處理器實現硬件入棧關鍵的通用寄存器,支持中斷咬尾、晚到異常機制和自動執行多重數據傳送指令。在許多其他架構中,這些任務必須在軟件的中斷處理程序中執行,從而引入延遲并帶來復雜性。
基于門控狀態保留技術SRPG(State Retention Power Gating)、喚醒中斷控制器WIC(Wakeup Interrupt Controller)可在內核處于Deep Sleep模式,NVIC 停止工作、無片上時鐘系統甚至控制器處于掉電狀態下都能夠快速檢測中斷信號并喚醒MCU,從而實現更低的靜態功耗。
2.2.2 優化軟件功耗因子
(1)高能效內核指令集
對于性能至上的嵌入式產品,更少的指令數通常意味著更高的性能。相較于傳統8/16 位指令集,ARM Cortex-M0+采用Thumb 指令集,CoreMark/mA 將近8/16位MCU 的2倍,同時支持Thumb-2技術的特性解決了Thumb指令不支持一些特殊功能如SIMD,也不能訪問協處理器和使用特權指令的缺陷。在代碼密度和性能方面也得到改善,用更低的處理器主頻完成相同功能,進而降低系統整體功耗。
表3給出了不同架構指令集實現一個16位乘法的匯編程序。可以看出,Cortex-M指令集是一種高效單周期指令集。

表3 各處理器體系結構16位乘法運算比較
(2)減少訪問存儲器頻率
基于Load-Store架構,ARM Cortex-M0+采用二級流水線設計以減少每指令所耗平均周期(CPI),比高級流水線設計的內核更易簡化架構復雜度,在開發難度上也更接近8/16位。KL 系列內含64字節Cache,從外部總線來看,雖然整體架構屬于馮諾依曼結構,實際已經算是改進型哈佛結構,整體性能得到提高,同時處理器陰影分支(Branch Shadow)也可被降低,進而減少訪問存儲器頻率。如圖1所示。

圖1 Branch Shadow 示意圖
(3)IDE支持低功耗解決方案
KL系列低功耗策略,不僅體現于MCU 自身,同時支持它的開發工具和設計資源也是關鍵環節。第三方工具如IAR系統嵌入式工作平臺IDE(IAR System Embedded Workbench IDE)集成電源調試和分析工具,能提供將程序執行的關鍵事件與功耗術語相映射的功能,進而修改源代碼滿足功率曲線的要求。
針對KL25微控制器低功耗特性的評估與驗證,本文設計將KL25應用于水質監測系統中作為主控節點,采集來自PH 值傳感器、溶氧傳感器、光照傳感器、溫度傳感器數據,配合無線收發器MC13192實現無線節點數據的采集與發送。
整個水質監測系統工作在戶外且使用兩節AA 電池3.0V 供電,分別采用GB60微控制器(內集成10位精度A/D模塊與16位TPM 定時器),KL25微控制器(內集成16位精度A/D模塊與16位低功耗定時器LPTMR),實測電流數據如表4所列。

表4 GB60與KL25應用測試功耗數據
其中,GB60待機模式處于STOP3,A/D模塊不工作,SRAM 狀態保持;KL25待機模式處于LLS,A/D 模塊不工作,SRAM 狀態保持。GB60運行模式處于RUN,Core@16 MHz,fbus@8 MHz;KL25 運行模式處于RUN,PEE,Core@48 MHz,fbus@24 MHz。
從整個測試分析結果來看,KL25工作性能明顯高于GB60,最佳性能運行狀態系統功耗小于GB60,而在處理主頻上卻是3倍。在3.0V 電池供電下,每5s采集一次外部傳感器數據,其余時間微控制器處于待機模式,基于GB60主控節點工作時長約14天,而基于KL25主控節點工作時長約為20天。當然采集頻率降低,工作時間也就越長。
本文從軟硬件功耗模型角度分析了微控制器實現低功耗技術要點,總結出多種優化軟硬件功耗因子方法,如采用先進工藝制程,高效指令集以及降低數據移動量的存儲訪問機制等。重點分析了基于ARM Cortex-M0+超低功耗內核KL系列微控制器的低功耗機制,闡述在不同功耗等級模式下軟件可配時鐘模式關系以及低功耗中斷策略。最后,通過實例比較分析給出了KL25微控制器在低功耗應用中的性能參數,該研究給初學者快速了解、開發Kinetis L系列提供了技術基礎。
編者注:本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。
[1]周寬久,遲宗正,西方.嵌入式軟硬件低功耗優化研究綜述[J].計算機應用研究,2010,27(2):423-425.
[2]Microchip.nanoWatt and nanoWatt XLP Technologies:An Introduction to Microchip Low-Power Devices。2009.
[3]Philofsky E M.FRAM-the ultimate memory[C]//Nonvolatile Memory Technology Conference,1996,Sixth Biennial IEEE International.IEEE,1996:99-104.
[4]Kang S T,Yater J,Hong C M,et al.Si nanocrystal split gate technology optimization for high performance and reliable embedded microcontroller applications[C]//Non-Volatile Semiconductor Memory Workshop,2008and 2008International Conference on Memory Technology and Design.NVSMW/ICMTD 2008.Joint.IEEE,2008:59-60.
[5]Freescale.KL25Sub-Family Data Sheet Rev.3,2012.
[6]ARM.Cortex-M0+Technical Reference Manual Rev.r0p0,2012.
[7]ARM.Cortex-M0+Devices Generic User Guide,2012.
[8]Brake C.基于ARM 的便攜式系統的功耗管理[J].電子產品世界,2003(13):54-56.