新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式系統(tǒng)降低功耗的方法研究

嵌入式系統(tǒng)降低功耗的方法研究

作者: 時(shí)間:2009-07-08 來源:網(wǎng)絡(luò) 收藏

另一種常用的時(shí)鐘技術(shù)就是可變頻率時(shí)鐘。它可根據(jù)性能要求,配置適當(dāng)?shù)臅r(shí)鐘頻率以避免不必要的。門控時(shí)鐘實(shí)際上是可變頻率時(shí)鐘的一種極限情況(即只有0和最高頻率兩種值),因此,可變頻率時(shí)鐘比門控時(shí)鐘技術(shù)更加有效,但需要內(nèi)嵌時(shí)鐘產(chǎn)生模塊PLL,增加了設(shè)計(jì)復(fù)雜度。圖4為在具有低特性的芯片上進(jìn)行的時(shí)鐘設(shè)計(jì)方案。片上時(shí)鐘系統(tǒng)通過2個(gè)數(shù)字鎖相環(huán)CPUPLL和SysPLL來穩(wěn)定16 MHz的輸入時(shí)鐘,分別送到不同的倍頻器和分頻器。經(jīng)CPU-PLL的時(shí)鐘信號(hào)作為處理器內(nèi)核時(shí)鐘,經(jīng)SysPLL的時(shí)鐘信號(hào)作為處理器內(nèi)核之外的系統(tǒng)時(shí)鐘、存儲(chǔ)器時(shí)鐘和外設(shè)時(shí)鐘。
由于處理器芯片(如i.MX1)不支持電壓動(dòng)態(tài)調(diào)節(jié),可通過配置片內(nèi)數(shù)字鎖相環(huán)實(shí)現(xiàn)內(nèi)核頻率動(dòng)態(tài)調(diào)節(jié)。根據(jù)公式計(jì)算出系統(tǒng)頻率:



其中:fref是系統(tǒng)的低頻時(shí)鐘頻率,作為倍頻的參考頻率;MFI是倍頻因子的整數(shù)部分;MFN和MFD分別是倍頻因子的分子和分母;PD是預(yù)設(shè)分頻因子。
2.2 操作系統(tǒng)層
系統(tǒng)級(jí)低設(shè)計(jì)一般是在操作系統(tǒng)層實(shí)現(xiàn)。因?yàn)椴僮飨到y(tǒng)管理系統(tǒng)所有軟硬件資源,并獲取系統(tǒng)的各種狀態(tài)信息,控制硬件設(shè)備的狀態(tài)。因此,在操作系統(tǒng)中實(shí)現(xiàn)全局功耗控制是最佳選擇。操作系統(tǒng)層面分成功耗驅(qū)動(dòng)模塊和功耗調(diào)度模塊。
2.2.1 功耗驅(qū)動(dòng)模塊
驅(qū)動(dòng)模塊實(shí)現(xiàn)相對(duì)簡單,主要是對(duì)硬件操作。功耗模式轉(zhuǎn)換和頻率調(diào)節(jié)都是通過片上時(shí)鐘系統(tǒng)控制寄存器進(jìn)行設(shè)置。因此,實(shí)質(zhì)上是對(duì)寄存器的設(shè)置。從睡眠模式或停止模式進(jìn)入運(yùn)行模式相對(duì)容易,只需向系統(tǒng)發(fā)出中斷信號(hào),喚醒系統(tǒng)進(jìn)入運(yùn)行模式。而從運(yùn)行模式到睡眠模式或停止模式相對(duì)復(fù)雜,其關(guān)鍵代碼如下:

2.2.2 功耗調(diào)度模塊
功耗調(diào)度模塊實(shí)現(xiàn)的關(guān)鍵技術(shù)在Linux操作系統(tǒng)中有具體體現(xiàn)。在Linux操作系統(tǒng)中,任務(wù)的調(diào)度主要由進(jìn)程調(diào)度(或任務(wù)調(diào)度)模塊 schedule()完成。schedule()掌握系統(tǒng)內(nèi)所有進(jìn)程的運(yùn)行狀態(tài),并對(duì)其執(zhí)行的優(yōu)先級(jí)進(jìn)行管理調(diào)度。因此,系統(tǒng)級(jí)實(shí)現(xiàn)功耗控制,需要對(duì)Linux內(nèi)核的schedule()模塊全面改寫,將DPM和DVS策略加入其中。設(shè)計(jì)思路為:由于Linux內(nèi)核提供的 cpu_usage_stat結(jié)構(gòu)記錄了處理器運(yùn)行時(shí)間的分配情況,可以通過讀取這些參數(shù)計(jì)算出當(dāng)前系統(tǒng)的運(yùn)行比例,即通過cpu_scan函數(shù)來實(shí)現(xiàn)具體的操作。cpu_scan函數(shù)是處理器設(shè)備驅(qū)動(dòng)的主要部分,它在固定的時(shí)間片內(nèi)調(diào)用,時(shí)間片的大小可以根據(jù)需要在5~1D0 ms之間選取。該函數(shù)通過調(diào)用cpu_dvs函數(shù)和cpu_dmp函數(shù)來評(píng)估系統(tǒng)的狀態(tài),這兩個(gè)函數(shù)分別是可變電壓技術(shù)和動(dòng)態(tài)功耗管理的實(shí)現(xiàn)。
(1)DPM策略
DPM策略在低功耗嵌入式Linux系統(tǒng)的實(shí)現(xiàn)上分為觀測器和控制器兩部分,如圖5所示。我們?cè)趯?shí)現(xiàn)過程中采用了Timeout算法。該算法實(shí)現(xiàn)簡單,預(yù)測準(zhǔn)確性也較高。統(tǒng)計(jì)表明,只要合理地設(shè)計(jì)Timeout,這種假設(shè)的可信度為95%。采用了Timeout算法的cpu_dmp函數(shù)在此不再具體解釋。但在動(dòng)態(tài)電源管理實(shí)現(xiàn)過程中容易出現(xiàn)一個(gè)喚醒信號(hào)發(fā)送給一個(gè)等待隊(duì)列中的進(jìn)程后,該進(jìn)程不能夠立即被調(diào)度執(zhí)行,從而造成事件丟失的情況。為了避免這種情況的出現(xiàn),Llow被設(shè)置成比Lmax稍小的值。當(dāng)事件數(shù)量到達(dá)Llow時(shí),即使事件處理進(jìn)程被喚醒后不能馬上轉(zhuǎn)入執(zhí)行,由于LlowLmax,事件列表還沒有全滿,也不會(huì)造成新事件丟失。這樣,既了事件丟失的幾率,對(duì)系統(tǒng)的影響也降到了最小,因?yàn)橹挥挟?dāng)事件列表快滿時(shí)才會(huì)調(diào)用事件處理進(jìn)程。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉