嵌入式系統(tǒng)降低功耗的方法研究
另一種常用的時鐘技術就是可變頻率時鐘。它可根據系統(tǒng)性能要求,配置適當?shù)臅r鐘頻率以避免不必要的功耗。門控時鐘實際上是可變頻率時鐘的一種極限情況(即只有0和最高頻率兩種值),因此,可變頻率時鐘比門控時鐘技術更加有效,但需要系統(tǒng)內嵌時鐘產生模塊PLL,增加了設計復雜度。圖4為在具有低功耗特性的嵌入式芯片上進行的時鐘系統(tǒng)設計方案。片上時鐘系統(tǒng)通過2個數(shù)字鎖相環(huán)CPUPLL和SysPLL來穩(wěn)定16 MHz的輸入時鐘,分別送到不同的倍頻器和分頻器。經CPU-PLL的時鐘信號作為處理器內核時鐘,經SysPLL的時鐘信號作為處理器內核之外的系統(tǒng)時鐘、存儲器時鐘和外設時鐘。
由于處理器芯片(如i.MX1)不支持電壓動態(tài)調節(jié),可通過配置片內數(shù)字鎖相環(huán)實現(xiàn)內核頻率動態(tài)調節(jié)。根據公式計算出系統(tǒng)頻率:
其中:fref是系統(tǒng)的低頻時鐘頻率,作為倍頻的參考頻率;MFI是倍頻因子的整數(shù)部分;MFN和MFD分別是倍頻因子的分子和分母;PD是預設分頻因子。
2.2 操作系統(tǒng)層
系統(tǒng)級低功耗設計一般是在操作系統(tǒng)層實現(xiàn)。因為操作系統(tǒng)管理系統(tǒng)所有軟硬件資源,并獲取系統(tǒng)的各種狀態(tài)信息,控制硬件設備的狀態(tài)。因此,在操作系統(tǒng)中實現(xiàn)全局功耗控制是最佳選擇。操作系統(tǒng)層面分成功耗驅動模塊和功耗調度模塊。
2.2.1 功耗驅動模塊
驅動模塊實現(xiàn)相對簡單,主要是對硬件操作。功耗模式轉換和頻率調節(jié)都是通過片上時鐘系統(tǒng)控制寄存器進行設置。因此,實質上是對寄存器的設置。從睡眠模式或停止模式進入運行模式相對容易,只需向系統(tǒng)發(fā)出中斷信號,喚醒系統(tǒng)進入運行模式。而從運行模式到睡眠模式或停止模式相對復雜,其關鍵代碼如下:
2.2.2 功耗調度模塊
功耗調度模塊實現(xiàn)的關鍵技術在嵌入式Linux操作系統(tǒng)中有具體體現(xiàn)。在Linux操作系統(tǒng)中,任務的調度主要由進程調度(或任務調度)模塊 schedule()完成。schedule()掌握系統(tǒng)內所有進程的運行狀態(tài),并對其執(zhí)行的優(yōu)先級進行管理調度。因此,系統(tǒng)級實現(xiàn)功耗控制,需要對嵌入式Linux內核的schedule()模塊全面改寫,將DPM和DVS策略加入其中。設計思路為:由于Linux內核提供的 cpu_usage_stat結構記錄了處理器運行時間的分配情況,可以通過讀取這些參數(shù)計算出當前系統(tǒng)的運行比例,即通過cpu_scan函數(shù)來實現(xiàn)具體的操作。cpu_scan函數(shù)是處理器設備驅動的主要部分,它在固定的時間片內調用,時間片的大小可以根據需要在5~1D0 ms之間選取。該函數(shù)通過調用cpu_dvs函數(shù)和cpu_dmp函數(shù)來評估系統(tǒng)的狀態(tài),這兩個函數(shù)分別是可變電壓技術和動態(tài)功耗管理的實現(xiàn)。
(1)DPM策略
DPM策略在低功耗嵌入式Linux系統(tǒng)的實現(xiàn)上分為觀測器和控制器兩部分,如圖5所示。我們在實現(xiàn)過程中采用了Timeout算法。該算法實現(xiàn)簡單,預測準確性也較高。統(tǒng)計表明,只要合理地設計Timeout,這種假設的可信度為95%。采用了Timeout算法的cpu_dmp函數(shù)在此不再具體解釋。但在動態(tài)電源管理實現(xiàn)過程中容易出現(xiàn)一個喚醒信號發(fā)送給一個等待隊列中的進程后,該進程不能夠立即被調度執(zhí)行,從而造成事件丟失的情況。為了避免這種情況的出現(xiàn),Llow被設置成比Lmax稍小的值。當事件數(shù)量到達Llow時,即使事件處理進程被喚醒后不能馬上轉入執(zhí)行,由于LlowLmax,事件列表還沒有全滿,也不會造成新事件丟失。這樣,既降低了事件丟失的幾率,對系統(tǒng)的影響也降到了最小,因為只有當事件列表快滿時才會調用事件處理進程。
評論