引言 隨著嵌入式系統應用的迅速發展,PDA和移動電話等便攜式裝置深入到生產生活的各個角落,嵌入式系統市場有迅速增長趨勢。嵌入式系統一般是由電池來供給電能的,而且大多數嵌入式設備都有體積和重量的約束。減少電能消耗不僅能延長電池的壽命,縮短用戶更換電池的周期,而且能提高系統性能與減小系統開銷,甚至能起到保護環境的作用。 1 嵌入式系統功耗分析 研究微處理器的低功耗設計技術,首先必須了解它的功耗來源。如圖1所示,從高層次仿真得出的結論可以看出,通過開關級功率模擬所獲得的高性能CPU的功率分布關系。其中,時鐘功耗所占比例最大,包括時鐘發生、驅動器、時鐘樹、鎖存器和所有時鐘負擔的器件;數據通路的功耗僅次于時鐘,主要包括執行單元、總線和寄存器文件;片上存儲器的功耗主要由存儲器的大小以及存儲陣列的電路和物理結構所決定;控制單元和I/O的功耗通常占整個芯片功耗的一小部分。 2 嵌入式系統低功耗設計 低功耗設計是一個復雜的綜合性課題。就流程而言,包括功耗建模、評估以及優化等;就設計抽象層次而言,包括自硬件底層至應用程序層的所有抽象層次,而目前低功耗設計大都在操作系統層實施,如圖2所示。同時,功耗優化與系統速度和面積等指標的優化密切相關,需要折中考慮。下面根據各部分在嵌入式系統中的不同層次,討論常用的低功耗設計技術及具體應用。 2.1 低功耗硬件設計 低功耗硬件設計是嵌入式系統降低功耗的重要內容。因此,需要從系統內部結構設計、系統時鐘設計和低功耗模式等幾方面采用特定的方法(例如,門控時鐘和可變頻率時鐘、并行結構與流水線技術、低功耗單元庫、低功耗狀態機編碼、Cache低功耗設計等)來實現系統硬件節能設計。下面介紹門控時鐘和可變頻率時鐘的應用。時鐘是惟一在所有時間都充放電的信號,而且很多情況下引起不必要的門的翻轉,因此降低時鐘的開關活動性將對降低整個系統的功耗產生很大的影響。門控時鐘包括門控邏輯模塊時鐘和門控寄存器時鐘。門控邏輯模塊時鐘對時鐘網絡進行劃分,如果在當前的時鐘周期內,系統沒有用到某些邏輯模塊,則暫時切斷這些模塊的時鐘信號,從而顯著降低開關功耗。圖3為采用“與”門實現的時鐘控制電路。門控寄存器時鐘的原理是當寄存器保持數據時,關閉寄存器時鐘,以降低功耗。門控時鐘易引起毛刺,必須對信號的時序加以嚴格限制,并對其進行仔細的時序驗證。 另一種常用的時鐘技術就是可變頻率時鐘。它可根據系統性能要求,配置適當的時鐘頻率以避免不必要的功耗。門控時鐘實際上是可變頻率時鐘的一種極限情況(即只有0和最高頻率兩種值),因此,可變頻率時鐘比門控時鐘技術更加有效,但需要系統內嵌時鐘產生模塊PLL,增加了設計復雜度。圖4為在具有低功耗特性的嵌入式芯片上進行的時鐘系統設計方案。片上時鐘系統通過2個數字鎖相環CPUPLL和SysPLL來穩定16 MHz的輸入時鐘,分別送到不同的倍頻器和分頻器。經CPU-PLL的時鐘信號作為處理器內核時鐘,經SysPLL的時鐘信號作為處理器內核之外的系統時鐘、存儲器時鐘和外設時鐘。 由于處理器芯片(如i.MX1)不支持電壓動態調節,可通過配置片內數字鎖相環實現內核頻率動態調節。根據公式計算出系統頻率: 其中:fref是系統的低頻時鐘頻率,作為倍頻的參考頻率;MFI是倍頻因子的整數部分;MFN和MFD分別是倍頻因子的分子和分母;PD是預設分頻因子。 2.2 操作系統層 系統級低功耗設計一般是在操作系統層實現。因為操作系統管理系統所有軟硬件資源,并獲取系統的各種狀態信息,控制硬件設備的狀態。因此,在操作系統中實現全局功耗控制是最佳選擇。操作系統層面分成功耗驅動模塊和功耗調度模塊。 2.2.1 功耗驅動模塊 驅動模塊實現相對簡單,主要是對硬件操作。功耗模式轉換和頻率調節都是通過片上時鐘系統控制寄存器進行設置。因此,實質上是對寄存器的設置。從睡眠模式或停止模式進入運行模式相對容易,只需向系統發出中斷信號,喚醒系統進入運行模式。而從運行模式到睡眠模式或停止模式相對復雜,其關鍵代碼如下: 2.2.2 功耗調度模塊 功耗調度模塊實現的關鍵技術在嵌入式Linux操作系統中有具體體現。在Linux操作系統中,任務的調度主要由進程調度(或任務調度)模塊 schedule()完成。schedule()掌握系統內所有進程的運行狀態,并對其執行的優先級進行管理調度。因此,系統級實現功耗控制,需要對嵌入式Linux內核的schedule()模塊全面改寫,將DPM和DVS策略加入其中。設計思路為:由于Linux內核提供的 CPU_usage_stat 結構記錄了處理器運行時間的分配情況,可以通過讀取這些參數計算出當前系統的運行比例,即通過cpu_scan函數來實現具體的操作。cpu_scan函數是處理器設備驅動的主要部分,它在固定的時間片內調用,時間片的大小可以根據需要在5~1D0 ms之間選取。該函數通過調用cpu_dvs函數和cpu_dmp函數來評估系統的狀態,這兩個函數分別是可變電壓技術和動態功耗管理的實現。 (1)DPM策略 DPM策略在低功耗嵌入式Linux系統的實現上分為觀測器和控制器兩部分,如圖5所示。我們在實現過程中采用了Timeout算法。該算法實現簡單,預測準確性也較高。統計表明,只要合理地設計Timeout,這種假設的可信度為95%。采用了Timeout算法的cpu_dmp函數在此不再具體解釋。但在動態電源管理實現過程中容易出現一個喚醒信號發送給一個等待隊列中的進程后,該進程不能夠立即被調度執行,從而造成事件丟失的情況。為了避免這種情況的出現,Llow被設置成比Lmax稍小的值。當事件數量到達Llow時,即使事件處理進程被喚醒后不能馬上轉入執行,由于Llow 更新事件列表算法代碼如下: 顯式資源需要對驅動程序作一些修改,即在驅動程序發送執行命令前和硬件完成服務并通過驅動程序告訴內核設備就緒后這兩個時間點,插入一個 NotifyEvent()函數調用。具體的代碼插入點根據不同類型的設備和對服務開始與結束的不同定義而不同。 根據觀測器得到的系統資源訪問歷史記錄計算出優化策略之后,控制模塊將在通過電源管理機發出控制命令給相應的硬件完成服務,并通過驅動程序告訴內核設備就緒后這兩個時間點插入一個NotifyEvent()函數調用。 (2)DVS策略 目前,嵌入式系統降低功耗多采用動態電壓縮放技術Ⅲ,即系統運行時可以通過設置可編頻率寄存器控制處理器的工作頻率。實驗觀察發現,系統的運行負荷具有明顯的非平穩特性,短時間內可能具有很高的執行負荷,但絕大部分時間維持輕負荷狀態。DVS技術根據嵌入式系統這一特點,在系統負荷較重時將處理器設置為最高執行速度,以保證系統的計算能力;而在系統負荷較輕時動態降低處理器的工作頻率,以降低處理器的執行功耗,從而實現系統計算性能與功耗的優化控制,如圖 6所示。DVS的預測通過采用了基于時間間隔AVGn算法的cpu_dvs函數實現。該函數讀取CPU使用信息,按照AVGn算法來估算系統的運行負荷,并根據返回給cpu_scan函數的結果實現具體的動態電壓縮放。 AVGn算法分析了多種簡單或復雜的估計算法和平滑技術。其基本思想是采用指數平滑平均值方法,即預測即將到來的間隔的n個運行百分比的加權平均值。但AVGn算法存在一個問題就是,逐檔改變頻率導致系統不能及時地響應負載變化,還需要大量深入細致的研究。 2.3 應用程序層 在基于微處理器、微控制器的系統中,軟件起到了引導硬件活動的主導作用。也就是說,軟件對系統的能量消耗有很大的影響。直到目前,還沒有有效且精確的方法可用來評估軟件設計對能量消耗所起的效應。沒有能量評估,就無法對軟件進行優化進而減少電能消耗。引起CPU電能消耗的眾多因素中,至少有2個受軟件的影響極大——存儲系統與系統總線。在嵌入式系統的低功耗軟件設計中,主要考慮這2個因素。 3 總 結 功耗已經成為嵌入式系統設計中優先要考慮的問題,隨著處理器速度越來越快,如何降低功耗已經成為衡量嵌入式系統性能優良的一個重要方面。因此,在低功耗嵌入式系統設計過程中要考慮各部分具體的低功耗設計方法,同時也要充分發揮各抽象層的低功耗技術優勢。 本文介紹的低功耗嵌入式系統中仍有很多不足,有待進一步探索:①DPM隨機決策模型和求解算法,并沒有解答最優策略是否存在、若存在最優策略具有什么特性等基本問題,也沒能從理論上解釋“實踐中超時策略可以取得優良節能效果”的原因。②本文的DVS策略采用與AVGn算法類似的假設條件,在實際應用中這些條件過于苛刻。如何將本文DVS策略的思想應用到特定的非理想情況的嵌入式系統中,尚需進一步研究。 參考文獻 1. Tiwari Vivek.Singh Deo.Rajgopal Suresh Reducing Power in High-performance microprocessors 1998 2. Emnett Frank.Biegel Mark Power reduction through RTL clock gating 2009 3. Freescale Semiconductor Power Network Design for i.MX1,i.MXL,and i.MXS 2006 4. 吳慧良.史烈.陳小平.周向軍 Linux下休眠功能的軟件實現 [期刊論文] -計算機工程2002(4) 5. 朱俊星.姜新建.陳愛杰.黃立培 基于 SKYPERTTM 32的IGBT驅動電路的設計 [期刊論文] -國外電子元器件2007(11) 6. 吳琦 嵌入式操作系統功耗管理技術研究 2006 作者單位:山東科技大學 張煒 韓進 來源:《單片機與嵌入式系統應用》 2009(6) |