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