專利名稱:Cpu的自適應(yīng)動(dòng)態(tài)調(diào)頻或調(diào)壓方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種嵌入式設(shè)備低功耗技術(shù)領(lǐng)域,尤其涉及一種用于節(jié)能的CPU的自
適應(yīng)動(dòng)態(tài)調(diào)頻或調(diào)壓方法及裝置。
背景技術(shù):
移動(dòng)手持設(shè)備在近幾年內(nèi)發(fā)展迅速,已成為繼個(gè)人電腦(PC, PersonalComputer)之后的又一大市場(chǎng)領(lǐng)域。目前,移動(dòng)手持設(shè)備大多數(shù)由電池供電,相對(duì)于市電供電的臺(tái)式機(jī),這類設(shè)備的電源供應(yīng)是有限的。尤其對(duì)于各種具有PC功能的智能手機(jī)來(lái)說(shuō),電池工作時(shí)間的長(zhǎng)短直接決定了其性能的優(yōu)劣。為了延長(zhǎng)電池的工作時(shí)間,一種辦法是利用各種存儲(chǔ)介質(zhì),來(lái)改進(jìn)電池的性能,以提高電池的比能量。但,由于各種因素的影響,電池的實(shí)際比能量總是遠(yuǎn)小于理論比能量。盡管人們付出了很大的努力,提高比能量的工作仍進(jìn)展緩慢。而另一種更現(xiàn)實(shí)的辦法就是降低系統(tǒng)運(yùn)行的功耗,以最大化的延長(zhǎng)電池的工作時(shí)間,而延長(zhǎng)電池的工作時(shí)間的關(guān)鍵在于節(jié)省電量。 低功耗算法包括許多針對(duì)不同對(duì)象、采用不同原理的算法,但其中最典型的是針對(duì)中央處理單元(CPU, Central Processing Unit)的動(dòng)態(tài)調(diào)壓(DVS, Dynamic VoltageScaling)算法。概括地說(shuō),DVS算法是操作系統(tǒng)層用來(lái)產(chǎn)生CPU的工作頻率的調(diào)度方案,即利用一定的判定條件來(lái)動(dòng)態(tài)調(diào)整CPU的工作頻率,從而調(diào)節(jié)CPU的供給電壓,以達(dá)到節(jié)能的目的。DVS算法的硬件實(shí)現(xiàn)中,電源電壓VDD經(jīng)過(guò)DC-DC轉(zhuǎn)換器調(diào)整為CPU的供給電壓V,由操作系統(tǒng)采用DVS算法實(shí)時(shí)調(diào)整CPU的工作頻率,并通過(guò)調(diào)整后的工作頻率來(lái)實(shí)時(shí)控制CPU的供給電壓V。在DVS算法中,合理的頻率調(diào)度方案能保證各個(gè)進(jìn)程的實(shí)時(shí)性,同時(shí),又能降低執(zhí)行這些進(jìn)程的總功耗。 目前,現(xiàn)有的DVS算法通過(guò)計(jì)算每個(gè)采樣周期內(nèi)CPU的利用率來(lái)動(dòng)態(tài)調(diào)整CPU的工作頻率。具體做法是,將時(shí)間劃分為一個(gè)一個(gè)相同時(shí)間長(zhǎng)度的采樣周期,這些采樣周期稱為窗口。 CPU利用率等于1減去每個(gè)窗口空進(jìn)程(IDLE進(jìn)程)的運(yùn)行時(shí)間占總時(shí)間的比例。通過(guò)計(jì)算過(guò)去的一個(gè)或多個(gè)窗口的CPU利用率,預(yù)測(cè)下一個(gè)窗口的CPU利用率,再根據(jù)CPU利用率的預(yù)測(cè)結(jié)果實(shí)時(shí)調(diào)整CPU的工作頻率。CPU利用率低,則將工作頻率降低以減少功耗;反之,則將工作頻率升高,以保證系統(tǒng)實(shí)時(shí)性的要求。最后,在預(yù)先設(shè)定的系統(tǒng)配置表中查找當(dāng)前CPU的工作頻率對(duì)應(yīng)的系統(tǒng)性能等級(jí),根據(jù)查找結(jié)果,通過(guò)寫寄存器的方式將CPU的供給電壓調(diào)整為當(dāng)前CPU的工作頻率所對(duì)應(yīng)系統(tǒng)性能等級(jí)中的電壓值。
現(xiàn)有的DVS算法的缺陷主要集中于兩點(diǎn)首先,上述DVS算法中利用CPU利用率實(shí)時(shí)調(diào)整CPU工作頻率的方法,降低了 CPU利用率,因?yàn)楦鶕?jù)經(jīng)典的實(shí)時(shí)調(diào)度算法(RM,RateMonotonic)可調(diào)度充分條件,要確保系統(tǒng)內(nèi)的所有進(jìn)程的實(shí)時(shí)性,必須保證30 %的CPU空閑時(shí)間。也就是說(shuō),在采用上述DVS算法時(shí),CPU的利用率不能超過(guò)70X,造成了 CPU 30%的功耗浪費(fèi)。其次,在上述DVS算法中,通過(guò)窗口統(tǒng)計(jì)CPU的利用率時(shí),只有在窗口長(zhǎng)度剛好和進(jìn)程周期相同時(shí),DVS算法才能達(dá)到最佳效果。如果周期長(zhǎng)度有變化,或者同時(shí)存在幾個(gè)不同周期的進(jìn)程,則無(wú)法確定最佳窗口長(zhǎng)度,從而會(huì)影響CPU的工作頻率的準(zhǔn)確確定。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻或調(diào)壓方法及
其裝置,以解決現(xiàn)有DVS算法中調(diào)整CPU工作頻率的方法降低CPU利用率的問(wèn)題。 為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的 本發(fā)明提供一種CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻方法,所述方法包括 實(shí)時(shí)記錄CPU中所有進(jìn)程的運(yùn)行時(shí)間; 檢測(cè)到CPU中只有空進(jìn)程在運(yùn)行時(shí),根據(jù)所記錄的運(yùn)行時(shí)間,確定CPU中各個(gè)進(jìn)程的頻率利用率; 根據(jù)所述頻率利用率的最大值,調(diào)整CPU的工作頻率。 在上述方案中,所述根據(jù)所記錄的運(yùn)行時(shí)間,確定CPU中各個(gè)進(jìn)程的頻率利用率,具體為在本次調(diào)頻與上次調(diào)頻期間的任一進(jìn)程的一個(gè)進(jìn)程周期內(nèi),得到優(yōu)先級(jí)不低于所述進(jìn)程的所有其他進(jìn)程在該進(jìn)程周期內(nèi)的運(yùn)行時(shí)間的總和;將所得到的運(yùn)行時(shí)間的總和與在所述進(jìn)程周期內(nèi)所記錄的所有進(jìn)程的運(yùn)行時(shí)間總和之間的比值確定為所述進(jìn)程的頻率利用率。 在上述方案中,所述調(diào)整CPU的工作頻率之前,還包括計(jì)算本次CPU調(diào)頻與上次CPU調(diào)頻之間的時(shí)間間隔;如果所計(jì)算的時(shí)間間隔不小于預(yù)設(shè)的檢測(cè)閾值,則調(diào)整CPU的工
作頻率。 在上述方案中,根據(jù)所述頻率利用率中的最大值,調(diào)整CPU的工作頻率,具體為確定CPU中所有進(jìn)程的頻率利用率中的最大值及CPU當(dāng)前的工作頻率;根據(jù)所確定的CPU當(dāng)前的工作頻率及所有進(jìn)程的頻率利用率的最大值,確定CPU的預(yù)調(diào)頻率;將CPU的工作頻
率調(diào)整為所述預(yù)調(diào)頻率。
在上述方案中,所述調(diào)整CPU的工作頻率,具體為在檢測(cè)到進(jìn)程的實(shí)時(shí)性被破壞時(shí),或在檢測(cè)到CPU中新增進(jìn)程時(shí),將CPU的工作頻率調(diào)整為調(diào)頻前的工作頻率。
本發(fā)明還提供一種CPU的自適應(yīng)動(dòng)態(tài)調(diào)壓方法,所述方法包括
實(shí)時(shí)記錄CPU中所有進(jìn)程的運(yùn)行時(shí)間; 檢測(cè)CPU中只有空進(jìn)程在運(yùn)行時(shí),根據(jù)所記錄的運(yùn)行時(shí)間,確定CPU中各個(gè)進(jìn)程的頻率利用率; 根據(jù)所述頻率利用率的最大值,調(diào)整CPU的工作頻率; 在CPU中預(yù)設(shè)的系統(tǒng)配置表中,查找調(diào)整后CPU的工作頻率所對(duì)應(yīng)的系統(tǒng)性能等級(jí); 將CPU當(dāng)前的供給電壓調(diào)整為所查找的系統(tǒng)性能等級(jí)中的電壓。
另外,本發(fā)明還提供一種CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻裝置,所述裝置包括
記錄單元,用于實(shí)時(shí)記錄CPU中所有進(jìn)程的運(yùn)行時(shí)間;
檢測(cè)單元,用于檢測(cè)CPU中是否只有空進(jìn)程在運(yùn)行; 確定單元,用于在所述檢測(cè)單元的檢測(cè)結(jié)果為只有空進(jìn)程在運(yùn)行時(shí),根據(jù)所記錄的運(yùn)行時(shí)間確定CPU中各個(gè)進(jìn)程的頻率利用率; 調(diào)頻單元,用于根據(jù)所述頻率利用率的最大值,調(diào)整CPU的工作頻率。 在上述方案中,所述檢測(cè)單元,還用于檢測(cè)CPU中的進(jìn)程的實(shí)時(shí)性是否被破壞;及或,所述檢測(cè)單元還用于檢測(cè)CPU中是否有新增的進(jìn)程;所述調(diào)頻單元還用于在所述檢測(cè) 單元檢測(cè)到實(shí)時(shí)性被破壞時(shí),或檢測(cè)到CPU中有新增進(jìn)程時(shí),將CPU的工作頻率調(diào)整為調(diào)頻 前的工作頻率。 在上述方案中,所述確定單元,具體用于在本次調(diào)頻與上次調(diào)頻期間的任一進(jìn)程 的一個(gè)進(jìn)程周期內(nèi),得到優(yōu)先級(jí)不低于所述進(jìn)程的所有其他進(jìn)程在該進(jìn)程周期內(nèi)的運(yùn)行時(shí) 間的總和;將所得到的運(yùn)行時(shí)間的總和與在所述進(jìn)程周期內(nèi)所記錄的所有進(jìn)程的運(yùn)行時(shí)間 總和之間的比值確定為所述進(jìn)程的頻率利用率。 在上述方案中,所述裝置還包括計(jì)算單元,用于在檢測(cè)到只有空進(jìn)程運(yùn)行時(shí),計(jì) 算本次CPU調(diào)頻與上次CPU調(diào)頻之間的時(shí)間間隔;判斷單元,用于判斷所述計(jì)算單元得到的 時(shí)間間隔是否不小于預(yù)設(shè)的檢測(cè)閾值,判斷結(jié)果為是時(shí),觸發(fā)所述調(diào)頻單元調(diào)整CPU的工
作頻率。 在上述方案中,所述調(diào)頻單元包括處理模塊,用于確定CPU中所有進(jìn)程的頻率利 用率中的最大值及CPU當(dāng)前的工作頻率;確定模塊,用于根據(jù)所確定的CPU當(dāng)前的工作頻率 及所有進(jìn)程的頻率利用率的最大值,確定CPU的預(yù)調(diào)頻率;調(diào)整模塊,用于將CPU的工作頻 率調(diào)整為所述預(yù)調(diào)頻率。
本發(fā)明還提供了一種CPU的自適應(yīng)動(dòng)態(tài)調(diào)壓裝置,所述裝置包括
記錄單元,用于實(shí)時(shí)記錄CPU中所有進(jìn)程的運(yùn)行時(shí)間;
檢測(cè)單元,用于檢測(cè)CPU中是否只有空進(jìn)程在運(yùn)行; 確定單元,用于在所述檢測(cè)單元的檢測(cè)結(jié)果為有空進(jìn)程在運(yùn)行時(shí),根據(jù)所記錄的 運(yùn)行時(shí)間確定CPU中各個(gè)進(jìn)程的頻率利用率; 調(diào)頻單元,用于根據(jù)所述頻率利用率中的最大值,調(diào)整CPU的工作頻率; 查找單元,用于根據(jù)調(diào)整后的CPU的工作頻率,在CPU中預(yù)設(shè)的系統(tǒng)配置表中查找
對(duì)應(yīng)的系統(tǒng)性能等級(jí); 調(diào)壓?jiǎn)卧?,用于將CPU當(dāng)前的供給電壓調(diào)整為所查找的系統(tǒng)性能等級(jí)中的電壓。
本發(fā)明根據(jù)CPU中各個(gè)進(jìn)程的"頻率利用率"動(dòng)態(tài)調(diào)節(jié)CPU的工作頻率,達(dá)到降低 CPU功耗的目的。 在本發(fā)明中,通過(guò)在CPU的操作系統(tǒng)中增加一個(gè)新的數(shù)據(jù)結(jié)構(gòu)來(lái)記錄各個(gè)進(jìn)程用 于計(jì)算頻率利用率的時(shí)間條件,并將計(jì)算進(jìn)程的頻率利用率以及對(duì)CPU動(dòng)態(tài)調(diào)頻的操作放 在IDLE進(jìn)程中來(lái)實(shí)現(xiàn),使得CPU的利用率不需保證30X的空閑,從而可有效提高CPU的 利用率。另外,由于受高優(yōu)先級(jí)進(jìn)程的影響,同一個(gè)進(jìn)程在不同進(jìn)程周期的頻率利用率不 相同,因此,一般會(huì)連續(xù)統(tǒng)計(jì)所有進(jìn)程在其多個(gè)進(jìn)程周期的頻率利用率并且以其最大者為 準(zhǔn)。這樣有利于減少進(jìn)程周期和運(yùn)行時(shí)間波動(dòng)對(duì)CPU調(diào)頻的影響,從而可以較為準(zhǔn)確的確 定CPU的工作頻率。 本發(fā)明CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻方法及裝置有效的保證了 CPU中各個(gè)進(jìn)程的順利運(yùn) 行,不會(huì)增加額外的系統(tǒng)運(yùn)行負(fù)擔(dān),有利于各個(gè)進(jìn)程的實(shí)時(shí)性。 另外,本發(fā)明基于CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻方法及裝置進(jìn)行的調(diào)壓,有利于節(jié)約CPU 系統(tǒng)功耗,增加CPU中電源的使用時(shí)長(zhǎng)。本發(fā)明可以用于存在CPU進(jìn)程調(diào)度的各種操作系 統(tǒng)中,尤以用有限電量電源供電的嵌入式系統(tǒng)為佳。
圖1為本發(fā)明CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻方法的方法流程圖; 圖2為本發(fā)明uC/OS-II操作系統(tǒng)中IDLE進(jìn)程處理Q隊(duì)列的流程圖; 圖3為本發(fā)明CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻裝置的結(jié)構(gòu)圖; 圖4為本發(fā)明CPU的自適應(yīng)動(dòng)態(tài)調(diào)壓方法的方法流程圖; 圖5為本發(fā)明CPU的自適應(yīng)動(dòng)態(tài)調(diào)壓裝置的結(jié)構(gòu)框圖。
具體實(shí)施例方式
下面將結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式
做詳細(xì)描述。
參照?qǐng)Dl,本發(fā)明的CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻方法,主要包括以下步驟 步驟101 :CPU的操作系統(tǒng)實(shí)時(shí)記錄CPU中所有進(jìn)程的運(yùn)行時(shí)間; 這里,實(shí)時(shí)記錄CPU中所有進(jìn)程的運(yùn)行時(shí)間,具體可以為在CPU的操作系統(tǒng)中,一
般會(huì)為每個(gè)進(jìn)程均設(shè)置一個(gè)或多個(gè)用于實(shí)時(shí)記錄其運(yùn)行時(shí)間的時(shí)間記錄節(jié)點(diǎn)。 在檢測(cè)到CPU中發(fā)生進(jìn)程調(diào)度時(shí),在CPU的操作系統(tǒng)中為舊進(jìn)程插入一個(gè)時(shí)間記
錄節(jié)點(diǎn),并把舊進(jìn)程的進(jìn)程號(hào)、和該進(jìn)程由開始運(yùn)行到發(fā)生進(jìn)程調(diào)度的運(yùn)行時(shí)間寫入該時(shí)
間記錄節(jié)點(diǎn)中。CPU發(fā)生進(jìn)程調(diào)度時(shí)舊進(jìn)程將中止運(yùn)行,被調(diào)度的進(jìn)程將開始運(yùn)行。所述中
止運(yùn)行是指舊進(jìn)程并未完全結(jié)束運(yùn)行,而只是因?yàn)樾枰{(diào)度其他進(jìn)程,暫時(shí)性地停止運(yùn)行,
直至舊進(jìn)程再次被調(diào)度時(shí),將繼續(xù)運(yùn)行。舊進(jìn)程繼續(xù)運(yùn)行后,直到再發(fā)生進(jìn)程調(diào)度或舊進(jìn)程
結(jié)束,再為其插入一個(gè)時(shí)間記錄節(jié)點(diǎn),以記錄舊進(jìn)程從繼續(xù)運(yùn)行直到再發(fā)生進(jìn)程調(diào)度或結(jié)
束的運(yùn)行時(shí)間。如此,便完成相應(yīng)進(jìn)程運(yùn)行時(shí)間的記錄。 如果在某一進(jìn)程運(yùn)行的過(guò)程中發(fā)生了中斷,并且中斷后仍然繼續(xù)執(zhí)行被中斷的進(jìn) 程,那么會(huì)在CPU中為同一進(jìn)程連續(xù)插入兩個(gè)時(shí)間記錄節(jié)點(diǎn),分別記錄進(jìn)程從開始運(yùn)行到 中斷之前的運(yùn)行時(shí)間和中斷后繼續(xù)進(jìn)行到結(jié)束的運(yùn)行時(shí)間,從而避免將中斷過(guò)程的時(shí)間計(jì) 入進(jìn)程的運(yùn)行時(shí)間內(nèi)。 如果處于掛起或等待狀態(tài)的進(jìn)程是CPU操作系統(tǒng)中特殊的IDLE進(jìn)程,為保證能正 確推算出其他各個(gè)進(jìn)程的頻率利用率,也會(huì)在CPU的操作系統(tǒng)中插入IDLE進(jìn)程的時(shí)間記錄 節(jié)點(diǎn),記錄IDLE進(jìn)程在開始運(yùn)行到處于掛起或等待狀態(tài)之間的運(yùn)行時(shí)間。
步驟102 :CPU的操作系統(tǒng)檢測(cè)CPU中是否只有空進(jìn)程在運(yùn)行,如果是,則繼續(xù)步驟 103,如果否,則返回步驟101 ; 步驟103 :根據(jù)所記錄的運(yùn)行時(shí)間,確定CPU中各個(gè)進(jìn)程的頻率利用率; 這里,頻率利用率可以是在一個(gè)進(jìn)程周期中,該進(jìn)程和比其優(yōu)先級(jí)高的進(jìn)程的運(yùn)
行時(shí)間的總和與該進(jìn)程周期內(nèi)所記錄的所有進(jìn)程的運(yùn)行時(shí)間的比值。 這里,根據(jù)所記錄的運(yùn)行時(shí)間,確定CPU中各個(gè)進(jìn)程的頻率利用率具體可以這樣 實(shí)現(xiàn)在本次調(diào)頻與上次調(diào)頻期間的任一進(jìn)程的一個(gè)進(jìn)程周期內(nèi),得到所有優(yōu)先級(jí)高于所 述進(jìn)程的所有進(jìn)程在該進(jìn)程周期內(nèi)的運(yùn)行時(shí)間與該進(jìn)程在該進(jìn)程周期內(nèi)運(yùn)行時(shí)間的總和; 將所得到的所述進(jìn)程周期內(nèi)運(yùn)行時(shí)間的總和與在所述進(jìn)程周期內(nèi)所記錄的所有進(jìn)程的運(yùn) 行時(shí)間之間的比值作為所述進(jìn)程的頻率利用率。 例如,對(duì)于本次調(diào)頻與上次調(diào)頻之間發(fā)生的任一進(jìn)程Pi,在進(jìn)程Pi的一個(gè)進(jìn)程周 期內(nèi),將優(yōu)先級(jí)低于進(jìn)程Pi的所有其他進(jìn)程的所有時(shí)間記錄節(jié)點(diǎn)所記錄的運(yùn)行時(shí)間進(jìn)行累加,得到進(jìn)程Pi的空閑時(shí)間總和; 同時(shí),在所述進(jìn)程周期內(nèi),將優(yōu)先級(jí)不低于Pi的所有進(jìn)程(包括進(jìn)程Pi)的所有 時(shí)間記錄節(jié)點(diǎn)所記錄的運(yùn)行時(shí)間進(jìn)行累加,得到進(jìn)程Pi的運(yùn)行時(shí)間總和;
那么,進(jìn)程Pi在該進(jìn)程周期內(nèi)的頻率利用率可由下式得到 Pi的頻率利用率=Pi的運(yùn)行時(shí)間總和/ (Pi的運(yùn)行時(shí)間總和+Pi的空閑時(shí)間總 和) 步驟104 :根據(jù)所述頻率利用率的最大值,調(diào)整CPU的工作頻率。
這里,根據(jù)所述頻率利用率中的最大值,調(diào)整CPU的工作頻率具體可以為確定步 驟103中所得到的CPU中所有進(jìn)程的頻率利用率中的最大值及CPU當(dāng)前的工作頻率;并,根 據(jù)所確定的CPU當(dāng)前的工作頻率及所有進(jìn)程的頻率利用率的最大值,確定CPU的預(yù)調(diào)頻率; 再將CPU的工作頻率調(diào)整為所述預(yù)調(diào)頻率。 其中,根據(jù)所確定的CPU當(dāng)前的工作頻率及所有進(jìn)程的頻率利用率的最大值,確 定CPU的預(yù)調(diào)頻率可以這樣實(shí)現(xiàn) 在調(diào)整CPU的工作頻率之前,對(duì)于CPU中任意一個(gè)進(jìn)程Pi來(lái)說(shuō),可能存在一個(gè)或 多個(gè)進(jìn)程周期。在進(jìn)程Pi的每個(gè)進(jìn)程周期結(jié)束時(shí),CPU的操作系統(tǒng)都會(huì)計(jì)算進(jìn)程Pi的頻 率利用率。 因此,需要統(tǒng)計(jì)CPU中各個(gè)進(jìn)程在其一個(gè)或多個(gè)進(jìn)程周期的頻率利用率,并記錄 各個(gè)進(jìn)程取值最大的頻率利用率,根據(jù)統(tǒng)計(jì)后各個(gè)進(jìn)程的頻率利用率確定其中的最大值k, 及確定CPU當(dāng)前的工作頻率f,根據(jù)公式
f' = f*k+ □ (1) 其中,A為非負(fù)常數(shù)。確定CPU的預(yù)調(diào)頻率f'后,再將CPU的工作頻率f降低為 該預(yù)調(diào)頻率f'。 其中,非負(fù)常數(shù)A是為在一個(gè)進(jìn)程P的進(jìn)程周期內(nèi),運(yùn)行的高優(yōu)先級(jí)進(jìn)程考慮的。 因?yàn)?,在CPU工作頻率降低時(shí),CPU中各個(gè)進(jìn)程的運(yùn)行時(shí)間都會(huì)延長(zhǎng),在實(shí)際運(yùn)行中高優(yōu)先 級(jí)進(jìn)程的運(yùn)行時(shí)間可能會(huì)延至進(jìn)程周期完成之后,導(dǎo)致用于確定預(yù)調(diào)頻率的頻率利用率與 實(shí)際的計(jì)算結(jié)果不相符,從而影響了 CPU頻率調(diào)整的準(zhǔn)確性。因此,需要在此次頻率調(diào)整 時(shí),預(yù)留一定的調(diào)整余量A,來(lái)提高CPU頻率調(diào)整的準(zhǔn)確性。其中A的具體大小,可視不同 的進(jìn)程情況而定,但A的取值必須在區(qū)間(0,f*(l_k))的范圍內(nèi)才有意義。
如果在檢測(cè)到CPU中有進(jìn)程的實(shí)時(shí)性被破壞時(shí),或在檢測(cè)到CPU中有新增進(jìn)程時(shí), 則直接將CPU的工作頻率調(diào)整為調(diào)頻前的工作頻率,來(lái)保證CPU中各個(gè)進(jìn)程的正常運(yùn)行。在 當(dāng)進(jìn)程的實(shí)時(shí)性被破壞,或新增進(jìn)程的時(shí)候,CPU的操作系統(tǒng)內(nèi)核會(huì)運(yùn)行Quicken子程序, 執(zhí)行一些清空的操作,例如將得到所有進(jìn)程的頻率利用率等清空,并將CPU的工作頻率調(diào) 回調(diào)頻前的工作頻率f。 其中,Quicken是將這一段代碼封裝起來(lái)的函數(shù)的名字,也可以是任何其他有意義 的名字,這樣封裝的目的在于可復(fù)用,增強(qiáng)代碼可讀性而已。 這里,IDLE進(jìn)程是CPU操作系統(tǒng)中優(yōu)先級(jí)最低的進(jìn)程,當(dāng)CPU的操作系統(tǒng)中沒(méi)有 其他進(jìn)程運(yùn)行時(shí),IDLE進(jìn)程就會(huì)運(yùn)行。 另外,在步驟104中CPU的操作系統(tǒng)調(diào)整CPU的工作頻率之前,還可以包括
CPU的操作系統(tǒng)計(jì)算本次CPU調(diào)頻與上次CPU調(diào)頻之間的時(shí)間間隔;如果所計(jì)算的時(shí)間間隔不小于預(yù)設(shè)的檢測(cè)閾值,則調(diào)整CPU的工作頻率。 這里,檢測(cè)閾值I是設(shè)定的兩次調(diào)頻的最小時(shí)間間隔。如果本次CPU調(diào)頻與上次 CPU調(diào)頻之間的時(shí)間間隔小于檢測(cè)閾值I,則不需要進(jìn)行對(duì)CPU調(diào)頻,以免頻繁的調(diào)頻反而 給CPU增加額外的負(fù)擔(dān)。 為證明本發(fā)明方案的有效性,以下將詳細(xì)介紹將本發(fā)明的自適應(yīng)動(dòng)態(tài)調(diào)頻方法應(yīng) 用于uC/OS-II操作系統(tǒng)中,對(duì)其進(jìn)程調(diào)度部分進(jìn)行改進(jìn)的過(guò)程。 其中,uC/OS-II是一種開放源碼的嵌入式實(shí)時(shí)操作系統(tǒng),它的進(jìn)程調(diào)度算法主要 在函數(shù)OSSched()中實(shí)現(xiàn)。 由于操作系統(tǒng)無(wú)法知道進(jìn)程的一個(gè)進(jìn)程周期是否開始,也無(wú)法知道進(jìn)程是否已經(jīng) 完成了一個(gè)進(jìn)程周期里的工作,所以要為每個(gè)進(jìn)程都增加兩個(gè)事件到達(dá)事件和完成事件。 到達(dá)事件標(biāo)志著新進(jìn)程周期的開始,它可以是中斷,也可以是來(lái)自其他進(jìn)程的消息。完成事 件表示進(jìn)程已經(jīng)完成一個(gè)周期里的工作,是由進(jìn)程自身產(chǎn)生的消息。 由于在CPU的操作系統(tǒng)中最多允許64個(gè)實(shí)時(shí)進(jìn)程,因此,在操作系統(tǒng)內(nèi)核中增加 一個(gè)含128個(gè)節(jié)點(diǎn)的環(huán)形隊(duì)列Q, Q隊(duì)列中包含了每個(gè)進(jìn)程的時(shí)間記錄節(jié)點(diǎn)和完成標(biāo)志節(jié) 點(diǎn)。當(dāng)收到完成事件時(shí),操作系統(tǒng)向Q隊(duì)列里插入一個(gè)完成標(biāo)志節(jié)點(diǎn),并把相應(yīng)進(jìn)程的進(jìn)程 號(hào)寫入該節(jié)點(diǎn),表示該進(jìn)程完成了一個(gè)進(jìn)程周期的運(yùn)行。在收到到達(dá)事件時(shí),向Q隊(duì)列中插 入一個(gè)時(shí)間記錄節(jié)點(diǎn),將進(jìn)程號(hào)和該進(jìn)程的運(yùn)行時(shí)間寫入到該節(jié)點(diǎn)中,以記錄所述進(jìn)程從 開始運(yùn)行到插入時(shí)間記錄節(jié)點(diǎn)的運(yùn)行時(shí)間。其中,時(shí)間記錄節(jié)點(diǎn)和完成標(biāo)志節(jié)點(diǎn)通過(guò)節(jié)點(diǎn) 里的標(biāo)志位來(lái)區(qū)分。 在uC/0S-II操作系統(tǒng)中增加4個(gè)數(shù)組,用來(lái)描述進(jìn)程的狀態(tài)(bFlag)、空閑時(shí)間總 和(wFressTime)、運(yùn)行時(shí)間總和(wRunTime)和頻率利用率的最大值(fU)。若不包括IDLE 進(jìn)程,系統(tǒng)中共允許運(yùn)行64個(gè)進(jìn)程,因此這些數(shù)據(jù)均包括64個(gè)元素,代碼表示如下
Bool bFlag[64];
word wFreeTime[64];
word wR皿Time[64];
float fU[64]; 其中,對(duì)于本次調(diào)頻與上次調(diào)頻期間的任意進(jìn)程Pi,其進(jìn)程狀態(tài)bFlag[Pi]為O 時(shí),表示進(jìn)程Pi已完成其在一個(gè)進(jìn)程周期的運(yùn)行,否則表示進(jìn)程Pi還未完成其在一個(gè)進(jìn)程 周期的運(yùn)行。根據(jù)進(jìn)程狀態(tài)bFlag [Pi]的值來(lái)決定進(jìn)程Pi是繼續(xù)進(jìn)行運(yùn)行時(shí)間的記錄和 累加還是進(jìn)行頻率利用率的計(jì)算。 這里,操作系統(tǒng)在每次收到進(jìn)程Pi的完成事件時(shí),都會(huì)把bFlag [Pi]置0 ;而在收 到進(jìn)程Pi的到達(dá)事件時(shí),如果bFlag[Pi]的值為O則把bFlag[Pi]置l,否則說(shuō)明時(shí)間約 束被破壞即進(jìn)程的實(shí)時(shí)性被破壞或有新增程序,執(zhí)行Quicken子程序,Quicken子程序則將 CPU的工作頻率調(diào)回調(diào)頻前的工作頻率,并將Q隊(duì)列清空以及其4個(gè)數(shù)組清0,來(lái)保證CPU 中各個(gè)進(jìn)程的正常運(yùn)行。 其中,進(jìn)程Pi的頻率利用率的最大值fU[Pi]、空閑時(shí)間總和wFreeTime[Pi]及運(yùn) 行時(shí)間總和wR皿Time[Pi]的初始值均設(shè)為0。 請(qǐng)參照?qǐng)D2所示uC/OS-II操作系統(tǒng)中的IDLE進(jìn)程處理Q隊(duì)列的流程圖,具體流 程如下
在檢測(cè)到CPU中只有IDLE進(jìn)程運(yùn)行時(shí),讀取Q隊(duì)列中的節(jié)點(diǎn)數(shù)據(jù);
所讀取的Q隊(duì)列是否為空; 如果讀取的Q隊(duì)列不為空,則將Q隊(duì)列中記錄的進(jìn)程Pi的運(yùn)行時(shí)間進(jìn)行累加操作 或計(jì)算進(jìn)程Pi的頻率利用率,具體操作如下 在進(jìn)程Pi的進(jìn)程狀態(tài)bFlag[Pi]為1即進(jìn)程Pi未完成在其一個(gè)進(jìn)程周期的運(yùn) 行時(shí),所讀取的Q隊(duì)列的節(jié)點(diǎn)數(shù)據(jù)為進(jìn)程Pi的運(yùn)行時(shí)間t,對(duì)于CPU中的每一個(gè)其他的進(jìn) 程Pj,如果Pj的優(yōu)先級(jí)比Pi高,則把Pi的運(yùn)行時(shí)間t累加到進(jìn)程Pj的空閑時(shí)間總和 wFreeTime[Pj]上,否則把運(yùn)行時(shí)間t累加到進(jìn)程Pj的運(yùn)行時(shí)間總和wR皿Time[Pj]上。 而對(duì)于進(jìn)程Pi來(lái)說(shuō),如果任意其他進(jìn)程Pj的優(yōu)先級(jí)比Pi高,則將進(jìn)程Pj的運(yùn)行時(shí)間累 加到進(jìn)程Pi的運(yùn)行時(shí)間總和wRunTime[Pi]上,否則把進(jìn)程Pj的運(yùn)行時(shí)間累加到Pi的空 閑時(shí)間總和wFreeTime[Pi]上。進(jìn)程Pi本身的運(yùn)行時(shí)間t也會(huì)累加到其運(yùn)行時(shí)間總和 wR皿Time[Pi]上。 在bFlag[Pi]為O即進(jìn)程Pi完成其在一個(gè)進(jìn)程周期的運(yùn)行時(shí),所讀取的是進(jìn)程Pi 的完成標(biāo)志節(jié)點(diǎn)的數(shù)據(jù),則可以根據(jù)下公式(2)計(jì)算進(jìn)程Pi的頻率利用率U':
U' = wR皿Time[Pi]/(wR皿Time[Pi]+wFreeTime[Pi]) (2)
如果U' > fU[Pi],則令fU[Pi] = U'。
如果讀取的Q隊(duì)列為空,則調(diào)整CPU的工作頻率,具體操作如下
如果Q隊(duì)列中已被IDLE進(jìn)程讀空,那么IDLE進(jìn)程本身會(huì)計(jì)算本次調(diào)頻距離上次 調(diào)頻的時(shí)間間隔。如果時(shí)間間隔不小于預(yù)先設(shè)定的檢測(cè)閾值I, IDLE進(jìn)程就會(huì)從頻率利用 率的數(shù)組fU[]中找出所有進(jìn)程的頻率利用率中的最大值k,再根據(jù)公式(1)將CPU當(dāng)前的 工作頻率f調(diào)整為f*k+ □。否則,執(zhí)行空循環(huán)。 這里,自適應(yīng)動(dòng)態(tài)調(diào)頻方法選擇在IDLE進(jìn)程運(yùn)行時(shí)來(lái)調(diào)整頻率,沒(méi)有進(jìn)程(IDLE 進(jìn)程除外)在運(yùn)行,而且Q隊(duì)列又是空的。此時(shí)調(diào)整頻率,無(wú)論對(duì)進(jìn)程的運(yùn)行還是Q隊(duì)列中 統(tǒng)計(jì)數(shù)據(jù)的正確性都沒(méi)有影響。操作系統(tǒng)中的調(diào)度器OSSched()是操作系統(tǒng)中執(zhí)行最頻繁 的部分,到達(dá)事件和完成事件也是頻繁發(fā)生的事件,自適應(yīng)動(dòng)態(tài)調(diào)頻方法給這三部分所增 加的時(shí)間復(fù)雜度都是O(l)復(fù)雜度。本發(fā)明的方法中大部分的時(shí)間開銷是在IDLE進(jìn)程中, 而IDLE進(jìn)程是在CPU其他進(jìn)程空閑時(shí)執(zhí)行的,所以這些時(shí)間開銷是可以忽略的。因此,本發(fā) 明CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻方法中,以各個(gè)進(jìn)程的頻率利用率來(lái)代替?zhèn)鹘y(tǒng)DVS算法中的"CPU 利用率"作為CPU調(diào)頻的判定條件,繞開了 RM可調(diào)度充分條件的限制,不需要將CPU的空閑 率保證在30%,同時(shí)沒(méi)有硬性的測(cè)量窗口,不會(huì)為CPU增加額外的運(yùn)行負(fù)擔(dān),從而可以有效 保證CPU中各個(gè)進(jìn)程的順利運(yùn)行,可大大提高CPU的利用率。 其中,0(1)是指CPU的操作系統(tǒng)中所采用的算法進(jìn)行過(guò)程的時(shí)間復(fù)雜度,是評(píng)判 該算法好壞的一個(gè)標(biāo)準(zhǔn)。 另外,自適應(yīng)動(dòng)態(tài)調(diào)頻方法實(shí)際上仍使用"面向過(guò)去"的預(yù)測(cè)算法,即認(rèn)為下一個(gè) 進(jìn)程周期的頻率利用率不會(huì)超過(guò)前面幾個(gè)進(jìn)程周期中最大的頻率利用率。所以,和其他在 線調(diào)度算法一樣,自適應(yīng)動(dòng)態(tài)調(diào)頻方法不能絕對(duì)保證進(jìn)程的實(shí)時(shí)性。它適合應(yīng)用于弱實(shí)時(shí) 系統(tǒng),如移動(dòng)終端的多媒體播放軟件、網(wǎng)絡(luò)電話、網(wǎng)絡(luò)視頻、手寫輸入等系統(tǒng)。
請(qǐng)參照?qǐng)D3,本發(fā)明CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻裝置,主要包括
記錄單元31,用于實(shí)時(shí)記錄CPU中所有進(jìn)程的運(yùn)行時(shí)間;
檢測(cè)單元32,用于檢測(cè)CPU中是否只有空進(jìn)程在運(yùn)行; 確定單元33,用于在檢測(cè)單元32的檢測(cè)結(jié)果為只有空進(jìn)程在運(yùn)行時(shí),根據(jù)記錄單 元31所記錄的運(yùn)行時(shí)間確定CPU中各進(jìn)程的頻率利用率; 調(diào)頻單元34,用于根據(jù)確定單元33中所確定的頻率利用率的最大值,調(diào)整CPU的 工作頻率。 其中,所述檢測(cè)單元32,還用于檢測(cè)CPU中的進(jìn)程的實(shí)時(shí)性是否被破壞; 及或,所述檢測(cè)單元32還用于檢測(cè)CPU中是否有新增的進(jìn)程。 其中,所述確定單元33具體用于在本次調(diào)頻與上次調(diào)頻期間的任一進(jìn)程的一個(gè)
進(jìn)程周期內(nèi),得到所有優(yōu)先級(jí)不低于所述進(jìn)程的所有進(jìn)程在所述進(jìn)程周期內(nèi)的運(yùn)行時(shí)間的
總和;并將所得到的運(yùn)行時(shí)間的總和與在進(jìn)程周期內(nèi)所記錄的所有進(jìn)程的運(yùn)行時(shí)間總和之
間的比值確定為所述進(jìn)程的頻率利用率。 其中,在所述檢測(cè)單元32檢測(cè)到實(shí)時(shí)性被破壞時(shí),或檢測(cè)到CPU中有新增進(jìn)程時(shí), 所述調(diào)頻單元34還可以用于將CPU的工作頻率調(diào)整為調(diào)頻前的工作頻率,以保證CPU中各 進(jìn)程的正常運(yùn)行。 其中,所述調(diào)頻單元34主要包括 處理模塊341 ,用于確定CPU中所有進(jìn)程的頻率利用率中的最大值及CPU當(dāng)前的工 作頻率; 確定模塊342,用于根據(jù)處理模塊341所確定的CPU當(dāng)前的工作頻率及所有進(jìn)程頻 率利用率中的最大值,確定CPU的預(yù)調(diào)頻率; 調(diào)整模塊343,用于將CPU的工作頻率調(diào)整為確定模塊342所確定的預(yù)調(diào)頻率。 其中,所述CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻裝置,還可以包括 計(jì)算單元35,用于計(jì)算本次CPU調(diào)頻與上次CPU調(diào)頻之間的時(shí)間間隔; 判斷單元36,用于判斷所述計(jì)算單元35得到的時(shí)間間隔是否不小于預(yù)設(shè)的檢測(cè)閾值。 其中,在判斷單元36的判斷結(jié)果為時(shí)間間隔不小于預(yù)設(shè)的檢測(cè)閾值時(shí),觸發(fā)調(diào)頻 單元34調(diào)整CPU的工作頻率,然后調(diào)頻單元34才根據(jù)確定單元33中所確定的頻率利用率 的最大值,調(diào)整CPU的工作頻率。 本發(fā)明CPU的自適應(yīng)動(dòng)態(tài)調(diào)壓方法,請(qǐng)參照?qǐng)D4,主要包括以下步驟
步驟401 :實(shí)時(shí)記錄CPU中所有進(jìn)程的運(yùn)行時(shí)間; 步驟402 :檢測(cè)CPU中是否只有空進(jìn)程在運(yùn)行,如果是,則繼續(xù)步驟403,如果否,則 返回步驟401 ; 步驟403 :根據(jù)所記錄的運(yùn)行時(shí)間,確定CPU中各個(gè)進(jìn)程的頻率利用率; 步驟404 :根據(jù)所述頻率利用率中的最大值,調(diào)整CPU的工作頻率。 步驟405 :在CPU中預(yù)設(shè)的系統(tǒng)配置表中,查找調(diào)整后CPU的工作頻率所對(duì)應(yīng)的系
統(tǒng)性能等級(jí); 步驟406 :將CPU當(dāng)前的供給電壓調(diào)整為所查找的系統(tǒng)性能等級(jí)中的電壓。
其中,步驟405-406中,在預(yù)設(shè)的系統(tǒng)配置標(biāo)中,查找調(diào)整后CPU的工作頻率所對(duì) 應(yīng)的系統(tǒng)性能等級(jí),再根據(jù)系統(tǒng)性能等級(jí)中的電壓值,根據(jù)具體硬件提供的具體寄存器設(shè) 定的某個(gè)或某幾個(gè)標(biāo)志位,將查找到的電壓等級(jí)數(shù)值寫入這些標(biāo)志位,之后再由CPU底層硬件完成CPU電壓的調(diào)整。 本發(fā)明CPU的自適應(yīng)動(dòng)態(tài)調(diào)壓裝置,請(qǐng)參照?qǐng)D5,主要包括
記錄單元51,用于實(shí)時(shí)記錄CPU中所有進(jìn)程的運(yùn)行時(shí)間;
檢測(cè)單元52,用于檢測(cè)CPU中是否只有空進(jìn)程在運(yùn)行; 確定單元53,用于在檢測(cè)單元52的檢測(cè)結(jié)果為只有空進(jìn)程在運(yùn)行時(shí),根據(jù)記錄單 元51所記錄的運(yùn)行時(shí)間確定CPU中各個(gè)進(jìn)程的頻率利用率; 調(diào)頻單元54,用于根據(jù)確定單元53所確定頻率利用率中的最大值,調(diào)整CPU的工 作頻率; 查找單元55,用于根據(jù)調(diào)頻單元54調(diào)整后的CPU的工作頻率,在預(yù)設(shè)的CPU的系 統(tǒng)配置表中查找對(duì)應(yīng)的系統(tǒng)性能等級(jí); 調(diào)壓?jiǎn)卧?6,用于將CPU當(dāng)前的供給電壓調(diào)整為查找單元55所查找的系統(tǒng)性能等 級(jí)中的電壓。 以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍,凡在 本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù) 范圍之內(nèi)。
權(quán)利要求
一種CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻方法,其特征在于,所述方法包括實(shí)時(shí)記錄CPU中所有進(jìn)程的運(yùn)行時(shí)間;檢測(cè)到CPU中只有空進(jìn)程在運(yùn)行時(shí),根據(jù)所記錄的運(yùn)行時(shí)間,確定CPU中各個(gè)進(jìn)程的頻率利用率;根據(jù)所述頻率利用率的最大值,調(diào)整CPU的工作頻率。
2. 根據(jù)權(quán)利要求1所述CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻方法,其特征在于,所述根據(jù)所記錄的運(yùn)行時(shí)間,確定CPU中各個(gè)進(jìn)程的頻率利用率,具體為在本次調(diào)頻與上次調(diào)頻期間的任一進(jìn)程的一個(gè)進(jìn)程周期內(nèi),得到優(yōu)先級(jí)不低于所述進(jìn)程的所有其他進(jìn)程在該進(jìn)程周期內(nèi)的運(yùn)行時(shí)間的總和;將所得到的運(yùn)行時(shí)間的總和與在所述進(jìn)程周期內(nèi)所記錄的所有進(jìn)程的運(yùn)行時(shí)間總和之間的比值確定為所述進(jìn)程的頻率利用率。
3. 根據(jù)權(quán)利要求1所述CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻方法,其特征在于,所述調(diào)整CPU的工作頻率之前,還包括計(jì)算本次CPU調(diào)頻與上次CPU調(diào)頻之間的時(shí)間間隔;如果所計(jì)算的時(shí)間間隔不小于預(yù)設(shè)的檢測(cè)閾值,則調(diào)整CPU的工作頻率。
4. 根據(jù)權(quán)利要求1至3任一所述CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻方法,其特征在于,根據(jù)所述頻率利用率中的最大值,調(diào)整CPU的工作頻率,具體為確定CPU中所有進(jìn)程的頻率利用率中的最大值及CPU當(dāng)前的工作頻率;根據(jù)所確定的CPU當(dāng)前的工作頻率及所有進(jìn)程的頻率利用率的最大值,確定CPU的預(yù)調(diào)頻率;將CPU的工作頻率調(diào)整為所述預(yù)調(diào)頻率。
5. 根據(jù)權(quán)利要求4所述CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻方法,其特征在于,所述調(diào)整CPU的工作頻率,具體為在檢測(cè)到進(jìn)程的實(shí)時(shí)性被破壞時(shí),或在檢測(cè)到CPU中新增進(jìn)程時(shí),將CPU的工作頻率調(diào)整為調(diào)頻前的工作頻率。
6. —種CPU的自適應(yīng)動(dòng)態(tài)調(diào)壓方法,其特征在于,所述方法包括實(shí)時(shí)記錄CPU中所有進(jìn)程的運(yùn)行時(shí)間;檢測(cè)CPU中只有空進(jìn)程在運(yùn)行時(shí),根據(jù)所記錄的運(yùn)行時(shí)間,確定CPU中各個(gè)進(jìn)程的頻率利用率;根據(jù)所述頻率利用率的最大值,調(diào)整CPU的工作頻率;在CPU中預(yù)設(shè)的系統(tǒng)配置表中,查找調(diào)整后CPU的工作頻率所對(duì)應(yīng)的系統(tǒng)性能等級(jí);將CPU當(dāng)前的供給電壓調(diào)整為所查找的系統(tǒng)性能等級(jí)中的電壓。
7. —種CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻裝置,其特征在于,所述裝置包括記錄單元,用于實(shí)時(shí)記錄CPU中所有進(jìn)程的運(yùn)行時(shí)間;檢測(cè)單元,用于檢測(cè)CPU中是否只有空進(jìn)程在運(yùn)行;確定單元,用于在所述檢測(cè)單元的檢測(cè)結(jié)果為只有空進(jìn)程在運(yùn)行時(shí),根據(jù)所記錄的運(yùn)行時(shí)間確定CPU中各個(gè)進(jìn)程的頻率利用率;調(diào)頻單元,用于根據(jù)所述頻率利用率的最大值,調(diào)整CPU的工作頻率。
8. 根據(jù)權(quán)利要求7所述自適應(yīng)動(dòng)態(tài)調(diào)頻裝置,其特征在于,所述檢測(cè)單元,還用于檢測(cè)CPU中的進(jìn)程的實(shí)時(shí)性是否被破壞;及或,所述檢測(cè)單元還用于檢測(cè)CPU中是否有新增的進(jìn)程;所述調(diào)頻單元還用于在所述檢測(cè)單元檢測(cè)到實(shí)時(shí)性被破壞時(shí),或檢測(cè)到CPU中有新增進(jìn)程時(shí),將CPU的工作頻率調(diào)整為調(diào)頻前的工作頻率。
9. 根據(jù)權(quán)利要求8所述自適應(yīng)動(dòng)態(tài)調(diào)頻裝置,其特征在于,所述確定單元,具體用于在本次調(diào)頻與上次調(diào)頻期間的任一進(jìn)程的一個(gè)進(jìn)程周期內(nèi),得到優(yōu)先級(jí)不低于所述進(jìn)程的所有其他進(jìn)程在該進(jìn)程周期內(nèi)的運(yùn)行時(shí)間的總和;將所得到的運(yùn)行時(shí)間的總和與在所述進(jìn)程周期內(nèi)所記錄的所有進(jìn)程的運(yùn)行時(shí)間總和之間的比值確定為所述進(jìn)程的頻率利用率。
10. 根據(jù)權(quán)利要求7至9任一所述自適應(yīng)動(dòng)態(tài)調(diào)頻裝置,其特征在于,所述裝置還包括計(jì)算單元,用于在檢測(cè)到只有空進(jìn)程運(yùn)行時(shí),計(jì)算本次CPU調(diào)頻與上次CPU調(diào)頻之間的時(shí)間間隔;判斷單元,用于判斷所述計(jì)算單元得到的時(shí)間間隔是否不小于預(yù)設(shè)的檢測(cè)閾值,判斷結(jié)果為是時(shí),觸發(fā)所述調(diào)頻單元調(diào)整CPU的工作頻率。
11. 根據(jù)權(quán)利要求7至9任一所述CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻裝置,其特征在于,所述調(diào)頻單元包括處理模塊,用于確定CPU中所有進(jìn)程的頻率利用率中的最大值及CPU當(dāng)前的工作頻率;確定模塊,用于根據(jù)所確定的CPU當(dāng)前的工作頻率及所有進(jìn)程的頻率利用率的最大值,確定CPU的預(yù)調(diào)頻率;調(diào)整模塊,用于將CPU的工作頻率調(diào)整為所述預(yù)調(diào)頻率。
12. —種CPU的自適應(yīng)動(dòng)態(tài)調(diào)壓裝置,其特征在于,所述裝置包括記錄單元,用于實(shí)時(shí)記錄CPU中所有進(jìn)程的運(yùn)行時(shí)間;檢測(cè)單元,用于檢測(cè)CPU中是否只有空進(jìn)程在運(yùn)行;確定單元,用于在所述檢測(cè)單元的檢測(cè)結(jié)果為有空進(jìn)程在運(yùn)行時(shí),根據(jù)所記錄的運(yùn)行時(shí)間確定CPU中各個(gè)進(jìn)程的頻率利用率;調(diào)頻單元,用于根據(jù)所述頻率利用率中的最大值,調(diào)整CPU的工作頻率;查找單元,用于根據(jù)調(diào)整后的CPU的工作頻率,在CPU中預(yù)設(shè)的系統(tǒng)配置表中查找對(duì)應(yīng)的系統(tǒng)性能等級(jí);調(diào)壓?jiǎn)卧?,用于將CPU當(dāng)前的供給電壓調(diào)整為所查找的系統(tǒng)性能等級(jí)中的電壓。
全文摘要
本發(fā)明涉及一種CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻或調(diào)壓方法及裝置,所述調(diào)頻方法主要包括實(shí)時(shí)記錄CPU中所有進(jìn)程的運(yùn)行時(shí)間;檢測(cè)到CPU中只有空進(jìn)程在運(yùn)行時(shí),根據(jù)所記錄的運(yùn)行時(shí)間,確定CPU中各個(gè)進(jìn)程的頻率利用率;再根據(jù)所述頻率利用率中的最大值,調(diào)整CPU的工作頻率。本發(fā)明CPU的自適應(yīng)動(dòng)態(tài)調(diào)頻方法及裝置有效的保證了CPU中各個(gè)進(jìn)程的順利運(yùn)行,不會(huì)為CPU增加額外的運(yùn)行負(fù)擔(dān),可有效提高CPU的利用率,且有利于節(jié)約CPU的系統(tǒng)功耗,增加CPU供給電源的使用時(shí)長(zhǎng)。本發(fā)明可以用于存在CPU進(jìn)程調(diào)度的各種操作系統(tǒng)中,尤以用有限電量的電源供電的嵌入式系統(tǒng)為佳。
文檔編號(hào)G06F1/32GK101699368SQ20091023684
公開日2010年4月28日 申請(qǐng)日期2009年11月2日 優(yōu)先權(quán)日2009年11月2日
發(fā)明者歐陽(yáng)慧琴 申請(qǐng)人:中興通訊股份有限公司