提高數(shù)據(jù)中心系統(tǒng)的配電效率
隨著對移動和有線設(shè)備的能源效率需求的增長,系統(tǒng)開發(fā)人員會越來越多地使用功率智能型硬件解決方案,而更加節(jié)能的代碼能使之如虎添翼。
最前沿的功率智能型硬件技術(shù)就是多核SoC,它能夠工作在各種各樣的頻率及電壓下。還有一些CPU和外設(shè)也支持多種功耗模式。我們已經(jīng)看到硬件方面的進(jìn)展,但是要真正地從這些進(jìn)展中得到好處,還需要一種新型的操作系統(tǒng)。
在功率高效型嵌入式設(shè)計迎來曙光的今天,前輩們所使用的實時操作系統(tǒng)(RTOS)已經(jīng)不再滿足需要。這時所需要的是節(jié)能型RTOS,它更加注重處理CPU的各種模式,同時均衡系統(tǒng)總響應(yīng)度及功耗。
硬件技術(shù)趨勢
現(xiàn)在,電池的體積越來越小,但提供的容量卻越來越大。而大量的電子設(shè)備開始采用比以往更大的、由觸摸屏控制的、具備高級特性的背光LCD顯示器,這樣提高了產(chǎn)品的易用性,其代價是功耗更大,并且當(dāng)LCD技術(shù)獲得重大進(jìn)展時,就會推動背光需求,這就需要更多的功率。
圖1 任務(wù)的調(diào)度:未經(jīng)優(yōu)化的系統(tǒng)相對經(jīng)過優(yōu)化的系統(tǒng)
現(xiàn)代SoC設(shè)計采用了動態(tài)的電壓和頻率調(diào)節(jié)(DVFS)。在最簡單的情況下,降低頻率就能夠降低功耗,并且系統(tǒng)也能夠降低供給CPU的電壓,給節(jié)能帶來倍增的效果。CPU內(nèi)核提供了各式各樣的功耗狀態(tài):運(yùn)行(run)、睡眠(sleep)、打盹(doze)和小睡(snooze)。
CPU功耗狀態(tài)的功耗越小,喚醒CPU所需要的時間就越長。最深的節(jié)能等級會保存硬件的寄存器狀態(tài),并使DRAM進(jìn)入自保持模式,但較深的節(jié)能等級也會表現(xiàn)為在系統(tǒng)剛被喚醒時反應(yīng)緩慢。
今天的設(shè)計通常會加入支持DVFS中動態(tài)電壓部分的電源管理IC(PMIC)。當(dāng)SoC的頻率達(dá)到最大時,電壓也必須達(dá)到最大,以維持轉(zhuǎn)換時間,并且在較低頻率時,電壓可以降低。
圖1是經(jīng)過優(yōu)化和未經(jīng)優(yōu)化的系統(tǒng)示例。如果系統(tǒng)沒有針對功耗進(jìn)行調(diào)整,處理器將快速完成作業(yè),比實際需要更快。頻率的降低使得降低所需電壓成為可能,這意味著能夠在滿足時間限制的同時節(jié)省功耗。
有了上述硬件技術(shù)的進(jìn)步,軟件就當(dāng)仁不讓地占據(jù)了控制系統(tǒng)總體功耗的位置。要想盡可能地節(jié)省所有嵌入式設(shè)備的功耗,就需要一套相當(dāng)復(fù)雜的電源管理系統(tǒng)。用于電源管理的軟件可以分為被動電源管理和主動電源管理。
被動電源管理
最基本的電源管理方法是被動電源管理。被動電源管理通過將電源域置于低功耗狀態(tài)來監(jiān)視設(shè)備何時被使用,檢測設(shè)備何時停止活動,并做出反應(yīng)。
例如,當(dāng)設(shè)備的用戶界面被激活——用戶接觸觸摸屏——設(shè)備就處于活動狀態(tài)并保持在全功耗模式。如果觸摸屏不活動,隨著定時器計時結(jié)束,電源域的狀態(tài)機(jī)將轉(zhuǎn)換到低功耗狀態(tài)。第一次超時事件可能會將背光降至50%亮度。第二次超時事件可以將其完全關(guān)閉。
主動電源管理
主動電源管理采用的理念就是系統(tǒng)可以預(yù)測將來的資源使用,但這實際上是不可能的。對于系統(tǒng)而言,能夠做到的是分析每個任務(wù),并引入復(fù)雜的調(diào)度技術(shù),以便預(yù)測當(dāng)系統(tǒng)在工作時任務(wù)需要什么,并相應(yīng)地調(diào)節(jié)電壓和頻率。通過分析數(shù)據(jù),根據(jù)實際功率使用狀況以及系統(tǒng)正在執(zhí)行的動態(tài)測量來進(jìn)行手動編程,或者通過動態(tài)測量該系統(tǒng)正在執(zhí)行的任務(wù)來進(jìn)行手動編程。
圖2 使用DVFS時,頻率可快速調(diào)節(jié),而電壓則以慢得多的固定轉(zhuǎn)換速率變化
監(jiān)視任務(wù)時,可以監(jiān)視它們訪問哪些API,使用哪些設(shè)備以及每次準(zhǔn)備好接受調(diào)度所消耗的時間。接著,這些數(shù)據(jù)連同最近每項任務(wù)執(zhí)行調(diào)度的歷史會被搜集并存儲起來,以便用于分析完成這項作業(yè)需要多少處理資源。
通過使用DVFS,系統(tǒng)開發(fā)人員可以節(jié)省大量功耗,但這樣做是有代價的,因為在低功耗和高功耗狀態(tài)之間的切換會消耗額外的功率。低頻到高頻的切換意味著我們需要首先將電壓調(diào)節(jié)至CPU頻率可以承受的預(yù)定電壓水平。降低頻率的過程是瞬時的,但是電壓的調(diào)節(jié)過程受限于轉(zhuǎn)換速率,需要一定時間才能達(dá)到最佳設(shè)置,如圖2所示。
考慮到電源管理結(jié)構(gòu),有時,與其降低DVFS之后再重新調(diào)高以滿足新任務(wù)的需要,還不如讓系統(tǒng)保持在高功耗狀態(tài)。
用于對稱多處理(SMP)系統(tǒng)
對稱多處理(SMP,Symmetrical Multi-Processing)技術(shù),是指在一臺計算機(jī)上使用兩個或兩個以上處理器去進(jìn)行計算處理。如果有兩個內(nèi)核,兩項待運(yùn)行任務(wù),這兩項任務(wù)可同時運(yùn)行。如果DVFS設(shè)置為相同頻率,每項任務(wù)都可以運(yùn)行在任意內(nèi)核上。實際上,如果我們在單獨調(diào)節(jié)的每個內(nèi)核上使用不同的DVFS設(shè)置,情況會變得更加復(fù)雜。
隨著今天SoC中SMP復(fù)雜度的增加,遇到支持4個或更多個對稱內(nèi)核的系統(tǒng)并不罕見。這就需要調(diào)度多個可能工作在不同頻率上的內(nèi)核,增加了管理每個內(nèi)核的DVFS方面以及調(diào)度每個內(nèi)核上任務(wù)的復(fù)雜度.