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