專利名稱:中央處理單元調(diào)度方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種使功耗最小的中央處理單元(此后稱為“CPU”)調(diào)度方法。
背景技術(shù):
現(xiàn)有技術(shù)中微處理器的功率管理通常需要額外的硬件或需要向微處理器提供大量電力,而不考慮微處理器的功耗。圖1表示一個微處理器和用于控制MSM系列芯片的功耗的額外硬件的現(xiàn)有技術(shù)組合。圖1中顯示了CPU1,10,100,例如由高通公司(Qualcomm Co.)制造的MSM 3100;監(jiān)視部分50,用于監(jiān)視CPU 1,10,100的操作狀態(tài);和控制部分40,例如PM 100,用于響應(yīng)從監(jiān)視部分50產(chǎn)生的輸出信號控制CPU 1,10,100。而且,在該現(xiàn)有技術(shù)例子中,商業(yè)操作系統(tǒng)(OS)和其它部分實時操作系統(tǒng)并不考慮CPU 1,10,100的功耗。
圖1中表示的系統(tǒng)的操作開始于,由監(jiān)視部分50監(jiān)視CPU 1,10,100的操作狀態(tài),然后根據(jù)監(jiān)視結(jié)果把來自監(jiān)視部分的輸出信號施加到控制部分40。然后,控制部分40接收來自監(jiān)視部分50的輸出信號,并根據(jù)所接收的數(shù)據(jù)控制多個CPU 1,10,100的操作狀態(tài)以調(diào)節(jié)CPU的電力(電源)使用,其中操作狀態(tài)可以是運行(Run),等待(Wait),休眠(Sleep)或就緒(Ready)等等。
但是,如果使用這種用于調(diào)節(jié)CPU功耗的現(xiàn)有技術(shù)方法,監(jiān)視部分50從多個CPU 1,10,100接收表示它們的操作狀態(tài)的輸出信號,然后把輸出信號施加到單獨的硬件,其中控制部分40控制CPU的功耗。這個附加的控制部分40由于這個額外的硬件而導(dǎo)致制造成本增加,并且導(dǎo)致制造過程的復(fù)雜性增加。
上述參考內(nèi)容被適當(dāng)?shù)亟Y(jié)合于此,用于對其它或備擇細節(jié)、特征和/或技術(shù)背景進行適當(dāng)?shù)恼f明。
發(fā)明內(nèi)容
本發(fā)明的一個目的是至少解決上述問題和/或缺點并至少提供下面描述的優(yōu)點。
本發(fā)明的一個目的是通過提供一種CPU調(diào)度方法和裝置來至少解決上述問題和/或缺點,其中區(qū)域變量Wk,Tk,Ck,Ek等等和一個嵌入式系統(tǒng)的時鐘被輸入到裝置中以依據(jù)多個進程的操作狀態(tài)(即,運行,等待,休眠)控制CPU的時鐘,根據(jù)進程的狀態(tài)使用區(qū)域變量的值來改變功耗。
本發(fā)明的另一個目的是提供CPU調(diào)度,其中依據(jù)進程的狀態(tài)控制CPU的時鐘以減小功耗,包括把一個嵌入式系統(tǒng)的時鐘函數(shù)代入調(diào)度器函數(shù)(scheduler function),把調(diào)度完成時為止的等待時間與給定來滿足實時條件的執(zhí)行時間和允許誤差范圍之和進行比較,依據(jù)比較結(jié)果改變一個進程的時鐘狀態(tài),針對改變的調(diào)度時鐘和時鐘改變之前的調(diào)度時鐘之間的差來計算逝去時間以控制等待時間,并使用新確定的時鐘的值設(shè)置CPU的時鐘。
本發(fā)明的另一個目的是提供一種用于調(diào)度CPU的裝置,具有一個適于控制一個嵌入式系統(tǒng)的整體操作的CPU,配備有PLL以設(shè)置CPU的操作時鐘;和一操作軟件(S/W),由控制器控制,并包括一個進程形式的應(yīng)用程序和一個操作系統(tǒng)(OS),其中操作系統(tǒng)(OS)具有一個調(diào)度器,適于監(jiān)視CPU上執(zhí)行的所有進程的狀態(tài)并依據(jù)進程狀態(tài)的監(jiān)視結(jié)果控制CPU的時鐘,并且可以把一個存儲器連接到CPU和操作S/W。
本發(fā)明的另一個目的是提供一種方法,其中通過使用一個嵌入式系統(tǒng)的時鐘函數(shù)來監(jiān)視由調(diào)度器確定和管理的各進程的操作狀態(tài),以向每個進程提供有差別的電力,使得在滿足進程的實時條件的同時保持最小時鐘,從而有可能在嵌入式系統(tǒng)中長時間地使用電源。
本發(fā)明的另一個目的是提供一種調(diào)度CPU的方法,其中依據(jù)各進程的狀態(tài)控制CPU的時鐘速度以減小功耗,包括把一嵌入式系統(tǒng)的時鐘函數(shù)代入調(diào)度器函數(shù),把調(diào)度完成時為止的等待時間與給定來滿足實時條件的執(zhí)行時間和允許調(diào)度誤差的誤差范圍之和進行比較,依據(jù)比較結(jié)果改變一個進程的時鐘速度狀態(tài),針對改變的調(diào)度時鐘和時鐘速度狀態(tài)改變之前的調(diào)度時鐘之間的差來計算逝去時間以控制等待時間,并使用新確定的時鐘速度的值設(shè)置CPU的時鐘速度。
本發(fā)明的另一個目的是提供一種用于調(diào)度CPU的裝置,具有一個適于控制嵌入式系統(tǒng)的整體操作的CPU,該CPU配備有PLL以控制嵌入式系統(tǒng)的操作時鐘和保持一個用于CPU內(nèi)實時控制的時鐘;一個操作軟件,包括一個進程形式的應(yīng)用程序和一個操作系統(tǒng)(OS),該操作系統(tǒng)(OS)具有一個調(diào)度器,用于監(jiān)視CPU上執(zhí)行的所有進程的狀態(tài)和依據(jù)進程狀態(tài)的監(jiān)視結(jié)果控制CPU的時鐘;和一個存儲器,連接到CPU和操作S/W。
本發(fā)明的另一個目的是提供一種控制CPU以控制功耗的方法,包括把時鐘速度設(shè)置到預(yù)定值;測量完成調(diào)度所需的等待時間;測量用于滿足實時條件的執(zhí)行時間;確定等待時間是否大于執(zhí)行時間;并且改變提供給CPU的電力量,其中如果等待時間大于執(zhí)行時間,則增加提供的電力,而如果等待時間小于執(zhí)行時間,則降低提供給CPU的電力。
本發(fā)明的另一個目的是提供一種通過調(diào)度CPU來控制CPU中功耗的方法,包括把一個進程的系統(tǒng)檢查函數(shù)代入時鐘的調(diào)度器函數(shù);確定執(zhí)行時鐘的調(diào)度器函數(shù)所需的第一數(shù)量時間;確定滿足實時條件所需的第二數(shù)量時間;確定第一數(shù)量時間是否大于第二數(shù)量時間;并改變一個進程的時鐘速度,其中如果第一數(shù)量時間大于第二數(shù)量時間,則降低時鐘速度,而如果第一數(shù)量時間小于第二數(shù)量時間,則增加時鐘速度。
本發(fā)明的其它優(yōu)點、目的和特征將部分地在下面的說明中提出,部分地可以由本領(lǐng)域技術(shù)人員在審看了以下說明后了解,或者可以通過本發(fā)明的實踐獲得??梢酝ㄟ^所附權(quán)利要求中特別指出的方式實現(xiàn)和獲得本發(fā)明的目的和優(yōu)點。
將參考附圖對本發(fā)明進行詳細說明,其中相同標(biāo)號表示相同單元圖1是表示根據(jù)現(xiàn)有技術(shù)的CPU操作控制系統(tǒng)的方框圖;圖2是表示實現(xiàn)本發(fā)明優(yōu)選實施例的嵌入式系統(tǒng)的結(jié)構(gòu)的方框圖;圖3是表示根據(jù)本發(fā)明優(yōu)選實施例的CPU調(diào)度方法的流程圖。
優(yōu)選實施例的詳細說明圖2是表示根據(jù)本發(fā)明優(yōu)選實施例的嵌入式系統(tǒng)1的結(jié)構(gòu)的方框圖。參考圖2,嵌入式系統(tǒng)1優(yōu)選包括CPU2,例如一個內(nèi)置的微處理器,用于控制嵌入式系統(tǒng)1的整體操作;操作軟件/系統(tǒng)S/W3,用于操作嵌入式系統(tǒng)1;和存儲器5,用于存儲信息,時間條件,隊列,和調(diào)度器隊列。
CPU2可以配備有PLL4以控制嵌入式系統(tǒng)1的操作時鐘。PLL4還可以用于保持一個用于CPU2中實時控制的時鐘。
操作S/W可以包括以一個使用CPU2的進程形式的應(yīng)用程序3b和操作系統(tǒng)(OS)3a,其可以具有一個調(diào)度器,該調(diào)度器可以是操作S/W3的核心部分。操作系統(tǒng)(OS)3a的調(diào)度器可以監(jiān)視CPU2上執(zhí)行的所有進程的狀態(tài)并可以依據(jù)進程狀態(tài)的識別結(jié)果控制CPU的時鐘??梢砸罁?jù)操作系統(tǒng)(OS)3a中的各進程的每個狀態(tài)(運行,等待,休眠,空閑等等)保持一個獨立的狀態(tài)隊列,即,運行,等待,或休眠。
多個進程可以在嵌入式系統(tǒng)1的操作S/W3中執(zhí)行CPU2的操作,并且這些進程可以包括在圖2的操作S/W3的操作系統(tǒng)3a的調(diào)度器中。為此原因,為了保持具有不同狀態(tài)的多個進程的性能,可以使用操作系統(tǒng)3a的調(diào)度器和CPU2來保持CPU2的時鐘的性能。同時,當(dāng)產(chǎn)生每個進程Pj,Pk等等時,可以指定一個用于調(diào)度的時間量子(Time Quantum),該時間量子可以被認為是調(diào)度器的調(diào)度變量。
圖3是表示用于執(zhí)行CPU調(diào)度方法的本發(fā)明優(yōu)選實施例的流程圖。首先,可以執(zhí)行根據(jù)本發(fā)明的多個進程的運行、等待、休眠狀態(tài)的轉(zhuǎn)換。最初,在操作系統(tǒng)(OS)3a的調(diào)度器函數(shù)的執(zhí)行完成之前,可以添加一個用于確定嵌入式系統(tǒng)1的時鐘的函數(shù),使得調(diào)度器根據(jù)調(diào)度時間的監(jiān)視結(jié)果改變進程的狀態(tài)。這可以通過以下方式完成把主電源電壓施加到一個改變的進程(即,一個運行狀態(tài)的進程),并把第二電源電壓施加到一個對應(yīng)于等待或休眠狀態(tài)的進程,使得可以有效地使用電源。
可以使用各種CPU時鐘,因為功率集中不是由所使用的時鐘類型確定,本發(fā)明通過從預(yù)先確定的時鐘設(shè)置中可調(diào)整地進行選擇來使用一個時鐘。例如,可以使用一個全球變量CLKt作為本發(fā)明的系統(tǒng)中可用的CPU時鐘的變量,與具有任意進程Pk的時鐘相關(guān)聯(lián)的作為區(qū)域變量的信息還可以包括變量CLKk,Tk,Ck,Wk,Ek等等。此處,CLKk可以表示對應(yīng)于進程k的一組CPU時鐘,Tk可以表示給定來滿足實時條件的執(zhí)行時間,Ck可以表示一個進程已經(jīng)被執(zhí)行的時間期間,Wk可以表示完成一個調(diào)度所需的等待時間,Ek可以表示一個調(diào)度的允許誤差。
基于上述變量,可以使用進程時鐘的控制函數(shù)Clock_up()來控制對應(yīng)的進程時鐘。如果函數(shù)Clock_up()增加并變成Clock_up(+1),那么可以使用CLKk之后的(一個進程Pk在當(dāng)前等待隊列中具有的)第一時鐘元素(clock element)來增加時鐘速度。另一方面,如果函數(shù)Clockup()降低并變成Clock_up(-1),那么使用CLKk之前的(進程Pk已經(jīng)使用的)第二時鐘元素來降低時鐘速度。從上述可以看出,當(dāng)系統(tǒng)在進程時鐘的控制函數(shù)增加時使用第一時鐘元素時,時鐘可以變快,而當(dāng)進程時鐘的控制函數(shù)降低時使用第二時鐘元素時,時鐘可以變慢。
另一個控制函數(shù)是實時時鐘的控制函數(shù)Clock advance(),其可以用于控制存在于運行隊列、休眠隊列、和等待隊列中的每個進程的實時時鐘。即,函數(shù)Clock_advance()可以是這樣一個函數(shù),其中可以在計算了前一調(diào)度時鐘和在掃描所有現(xiàn)存進程期間確定的當(dāng)前調(diào)度時鐘之間的逝去時間后,控制每個進程的等待時間Wk。第三控制函數(shù)是一個用于設(shè)置時鐘的控制函數(shù)Clock_set(),其可以是這樣一個函數(shù),即使用新確定的時鐘CLKs值設(shè)置CPU的時鐘,以改變嵌入式系統(tǒng)1的時鐘。
第四函數(shù)是函數(shù)Insert_new_process(),其可以用于在選擇一個新進程時初始化一個對應(yīng)的區(qū)域變量并因此進入嵌入式系統(tǒng)1中的運行隊列。函數(shù)Insert_new_process()可以是這樣一個函數(shù),其中可以針對一個新插入的進程Ps把區(qū)域變量CLKs初始化為一個CLK0值,并且Ts可以從一個用戶給出,并且Ws也被設(shè)置為0。
圖3中顯示的系統(tǒng)的操作首先是在以下假設(shè)下設(shè)置調(diào)度算法,即第一進程Pj可以是一個當(dāng)前運行的進程,第二進程Pk可以是一個能從休眠隊列或等待隊列取出的進程。在步驟301,用于操作本發(fā)明算法的時鐘函數(shù)Tk,Ck,Wk和Ek,一個嵌入式系統(tǒng)的Clock_up(1),Clock_advance(),Clocl_set()和insert_new_process()可以被代入一個調(diào)度器函數(shù)。然后可以使用這些時鐘函數(shù)來控制包括在圖2的操作S/W的操作系統(tǒng)3a的調(diào)度器中的所有進程的時鐘,并且可以在CPU2上執(zhí)行這些時鐘函數(shù)。
在步驟302,可以使用步驟301的代入時鐘函數(shù)把一個等待時間Wk(完成一個調(diào)度的時間)與給定來滿足實時條件的執(zhí)行時間Tk和調(diào)度的允許誤差范圍Ek之和進行比較。在步驟302,如果等待時間Wk大于執(zhí)行時間Tk和允許誤差的誤差范圍Ek之和,那么在步驟303,對應(yīng)于進程CLKk的CPU時鐘的設(shè)置把進程時鐘的控制函數(shù)增加到Clock_up(+1),使得在步驟305中設(shè)置一個比當(dāng)前時鐘狀態(tài)(Pj一個一直運行到現(xiàn)在的進程)高一個步長的時鐘(Pj等待/休眠進程)。
另一方面,在步驟302,如果等待時間Wk不大于執(zhí)行時間Tk和允許誤差的誤差范圍Ek之和,那么在步驟304,對應(yīng)于進程CLKk的CPU時鐘的設(shè)置降低進程時鐘的控制函數(shù)Clock_up(-1),使得在步驟305中設(shè)置一個比當(dāng)前時鐘狀態(tài)(Pk等待或休眠進程)低一個步長的時鐘(Pk運行進程)。結(jié)果,可以改變進程的時鐘狀態(tài)。
在步驟306,可以把實時時鐘的控制函數(shù)Clock_advance()設(shè)置為一個函數(shù),其中可以在前一調(diào)度時鐘和在掃描所有現(xiàn)存進程期間確定的當(dāng)前調(diào)度時鐘之間計算一個差值的逝去時間。由用于控制運行隊列、休眠隊列和等待隊列中存在的每個進程的實時時鐘的控制函數(shù)Clock_advance()確定該計算,使得可以控制每個進程的等待時間Wk來執(zhí)行步驟302。
在步驟307,可以使用在步驟306控制的等待時間Wk和作為新確定時鐘值的區(qū)域變量Tk,Ck,Ek或CLKk的值,把CPU的時鐘設(shè)置為用于改變嵌入式系統(tǒng)1的時鐘的Clock_set()。然后,在步驟308,當(dāng)新插入的進程是Ps時,可以針對新插入的進程Ps把系統(tǒng)時鐘函數(shù)中的區(qū)域變量CLKs初始化為CLK0,Ts可以由用戶給出,并且當(dāng)一個進程進入嵌入式系統(tǒng)1中的運行隊列時,可以通過用于初始化一個對應(yīng)區(qū)域變量的函數(shù)Insert_new_process()把Ws設(shè)置為0。
從以上可以看出,根據(jù)本發(fā)明的優(yōu)選實施例,可以通過使用嵌入式系統(tǒng)的時鐘函數(shù),依據(jù)各進程的狀態(tài)控制CPU的時鐘,使得可以向每個進程提供不同的電力。這避免了向所有進程提供大量電力,從而有效使用CPU的電源以使功耗最小。
上述實施例僅是示例性的,不應(yīng)理解為對本發(fā)明的限制。本發(fā)明的教導(dǎo)可以容易地應(yīng)用于其它類型的裝置。本發(fā)明的描述是示意性的,不是為了限制權(quán)利要求的范圍。本領(lǐng)域技術(shù)人員可以進行很多替換,修改和變型。在權(quán)利要求中,裝置加功能的語句是為了涵蓋執(zhí)行所述功能的結(jié)構(gòu),不僅包括結(jié)構(gòu)的等同物,也包括等同物的結(jié)構(gòu)。
權(quán)利要求
1.一種調(diào)度CPU的方法,其中依據(jù)各進程的狀態(tài)控制CPU的時鐘速度,包括把一個嵌入式系統(tǒng)的時鐘函數(shù)代入一個調(diào)度器函數(shù);把調(diào)度完成之前的等待時間與給定來滿足實時條件的執(zhí)行時間和允許的調(diào)度誤差的誤差范圍之和進行比較;依據(jù)比較結(jié)果改變一個進程的調(diào)度時鐘狀態(tài);針對改變的調(diào)度時鐘和調(diào)度時鐘狀態(tài)改變之前的調(diào)度時鐘之間的差來計算逝去時間以控制等待時間;和使用從所計算的逝去時間新確定的時鐘速度的值設(shè)置CPU的時鐘速度。
2.根據(jù)權(quán)利要求1的方法,其中如果等待時間大于執(zhí)行時間和允許誤差的誤差范圍之和,那么在調(diào)度時鐘狀態(tài)改變之前把調(diào)度時鐘狀態(tài)設(shè)置為比當(dāng)前調(diào)度時鐘狀態(tài)高一個步長,如果等待時間不大于執(zhí)行時間和允許誤差的誤差范圍之和,那么在調(diào)度時鐘狀態(tài)改變之前把調(diào)度時鐘狀態(tài)設(shè)置為比當(dāng)前調(diào)度時鐘狀態(tài)低一個步長。
3.根據(jù)權(quán)利要求1的方法,其中在當(dāng)前調(diào)度時鐘狀態(tài)是休眠或等待時,高一個步長的時鐘狀態(tài)是休眠/等待,低一個步長的時鐘狀態(tài)是運行。
4.根據(jù)權(quán)利要求1的方法,其中各進程的狀態(tài)包括運行、等待或休眠。
5.根據(jù)權(quán)利要求1的方法,其中嵌入式系統(tǒng)的時鐘函數(shù)包括給定的執(zhí)行時間,進行時間,等待時間,允許誤差,進程時鐘的控制,時鐘元素,實時時鐘,CPU的時鐘,和新進程函數(shù)。
6.根據(jù)權(quán)利要求5的方法,其中當(dāng)一個進程進入嵌入式系統(tǒng)中的運行隊列時,使用新進程函數(shù)來初始化一個對應(yīng)的區(qū)域變量。
7.根據(jù)權(quán)利要求6的方法,其中當(dāng)把一個新插入的進程設(shè)置為第一預(yù)定值時,系統(tǒng)時鐘函數(shù)中的第一區(qū)域變量被初始化為第二預(yù)定值,第二區(qū)域變量由用戶給出,并且第三區(qū)域變量被設(shè)置為0。
8.一種用于調(diào)度CPU的裝置,包括一個適于控制一個嵌入式系統(tǒng)的整體操作的CPU,該CPU配備有PLL以控制嵌入式系統(tǒng)的操作時鐘和保持一個用于CPU內(nèi)實時控制的時鐘;一個由控制器控制的操作S/W,包括一個進程形式的應(yīng)用程序和一個操作系統(tǒng)(OS);該操作系統(tǒng)(OS)具有一個調(diào)度器,用于監(jiān)視CPU上執(zhí)行的所有進程的狀態(tài)和依據(jù)進程狀態(tài)的監(jiān)視結(jié)果控制CPU的時鐘;和一個存儲器,連接到CPU和操作S/W。
9.一種控制中央處理單元(CPU)以控制功耗的方法,包括把一個調(diào)度時鐘的時鐘速度設(shè)置到預(yù)定值;測量完成調(diào)度所需的等待時間;測量用于滿足實時條件的執(zhí)行時間;確定等待時間是否大于執(zhí)行時間;改變調(diào)度時鐘的時鐘速度,其中如果等待時間大于執(zhí)行時間,則增加調(diào)度時鐘的時鐘速度,而如果等待時間小于執(zhí)行時間,則降低調(diào)度時鐘的時鐘速度。
10.根據(jù)權(quán)利要求9的方法,進一步包括測量調(diào)度時鐘速度的等級發(fā)生改變的各時間之間的逝去時間,以控制等待時間。
11.一種通過控制中央處理單元(CPU)的調(diào)度來控制CPU中的功耗的方法,包括把一個進程的系統(tǒng)檢查函數(shù)代入時鐘的調(diào)度器函數(shù);確定執(zhí)行時鐘的調(diào)度器函數(shù)所需的第一數(shù)量時間;確定滿足實時條件所需的第二數(shù)量時間;確定第一數(shù)量時間是否大于第二數(shù)量時間;和改變一個進程的時鐘速度,其中如果第一數(shù)量時間大于第二數(shù)量時間,則降低時鐘速度,而如果第一數(shù)量時間小于第二數(shù)量時間,則增加時鐘速度。
全文摘要
一種調(diào)度CPU的方法,其中依據(jù)各進程的狀態(tài)控制CPU的時鐘以減小功耗。對時鐘的控制如下進行:把一個嵌入式系統(tǒng)的時鐘函數(shù)代入一個調(diào)度器函數(shù);把調(diào)度完成之前的等待時間與給定來滿足實時條件的執(zhí)行時間和允許的調(diào)度誤差的誤差范圍之和進行比較;依據(jù)比較結(jié)果改變一個進程的調(diào)度時鐘狀態(tài);針對改變的調(diào)度時鐘和時鐘改變之前的調(diào)度時鐘之間的差來計算逝去時間以控制等待時間Wk;使用新確定的時鐘的值設(shè)置CPU的時鐘。
文檔編號G06F1/32GK1340751SQ0113101
公開日2002年3月20日 申請日期2001年8月31日 優(yōu)先權(quán)日2000年9月1日
發(fā)明者黃世鎮(zhèn) 申請人:Lg電子株式會社