專利名稱:微處理器控制裝置以及用于該裝置的方法和程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器控制裝置、微處理器控制方法和用于控制微處理 器的操作速度的微處理器控制程序。
背景技術(shù):
在嵌入式系統(tǒng)的M中,要求對(duì)保證服務(wù)質(zhì)量和減少能耗的均衡竟?fàn)?目標(biāo)。微處理器的功耗(每單位時(shí)間消耗的能源量)占能耗的很大比例, 它以;敞處理器的操作速度的大約三次冪增加(例如,功率=阿爾法*電容*
電壓*電壓*頻率,電壓oc頻率,其中"oc"表示比例,"阿爾法"表示常
數(shù))。服務(wù)質(zhì)量可以被解釋為對(duì)處理的最終期限或時(shí)間限制。任務(wù)的執(zhí)行 時(shí)間(處理的特定單元)與處理速度成反比,并且為了使任務(wù)處理的能耗 最小化,原則上最好使微處理器在最終期限內(nèi)以最低速度運(yùn)行。近年來(lái), 允許執(zhí)行期間改變它的處理速度的處理器已被納入實(shí)際應(yīng)用,這使得能夠 基于該原則減少能耗。
然而,當(dāng)處理通用程序時(shí)難以對(duì)處理器的操作速度進(jìn)^^適當(dāng)調(diào)整。例 如,由于改變處理器的操作速度要求特定的指令周期(例如,幾百個(gè)周期), 任務(wù)必須是相對(duì)較大的處理單元。通常,大的處理單元包括迭代和/或分支, 并且難以預(yù)測(cè)相關(guān)的計(jì)算量。而且,對(duì)程序的最終期限不是在每任務(wù)I^1 上而是作為(一字節(jié)組)時(shí)間被給出,在所述(一字節(jié)組)時(shí)間內(nèi)應(yīng)當(dāng)?shù)?達(dá)程序中可執(zhí)行的語(yǔ)句。已知的速度控制技術(shù)一般可以被分類為基于手動(dòng)
任務(wù)劃分的技術(shù)(優(yōu)點(diǎn)是對(duì)速度進(jìn)行精細(xì)粒度的調(diào)整,缺點(diǎn)是手動(dòng)進(jìn) 行任務(wù)劃分)和基于反饋控制的技術(shù)(優(yōu)點(diǎn)是不要求任務(wù)劃分,缺點(diǎn)是 對(duì)速度進(jìn)行粗粒度的調(diào)整)。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一方面,提供了 一種控制執(zhí)行包括指令代碼的程序的微 處理器的操作速度的微處理器控制裝置,在所述指令代碼中對(duì)至少一個(gè)指 令代碼指定最終期限,所述微處理器控制裝置包括
狀態(tài)觀察單元,其被配置為在先于執(zhí)行最終期限指令代碼的多個(gè)預(yù)定 定時(shí)觀察所述程序的執(zhí)行狀態(tài),所述最終期限指令代碼是被指定了所述最 終期限的指令代碼;
數(shù)據(jù)存儲(chǔ)單元,其被配置為存儲(chǔ)在為多個(gè)預(yù)定義執(zhí)行狀態(tài)的每一個(gè)完
成執(zhí)行所述最終期限指令代碼前要求的剩余計(jì)算量的預(yù)測(cè)數(shù)據(jù);
預(yù)測(cè)計(jì)算量獲取單元,其被配置為從所述預(yù)測(cè)數(shù)據(jù)中獲取對(duì)應(yīng)于觀察
的執(zhí)行狀態(tài)的剩余計(jì)算量作為剩余預(yù)測(cè)計(jì)算量;
剩余時(shí)間計(jì)算單元,其被配置為計(jì)算直至所述最終期限指令代碼的所
述最終期限的剩余時(shí)間;
操作速度計(jì)算單元,其被配置為計(jì)算在所述剩余時(shí)間內(nèi)處理所述剩余
預(yù)測(cè)計(jì)算量要求的所述微處理器的最小操作速度;以及
控制單元,其被配置為控制所述微處理器以所迷最小操作速度或更高
的速度操作。
根據(jù)本發(fā)明的一方面,提供了一種控制執(zhí)行包括指令代碼的程序的微 處理器的操:作速度的微處理器控制方法,在所述指令代碼中對(duì)至少一個(gè)指 令代碼指定最終期限,所述微處理器控制方法包括
在先于執(zhí)行最終期限指令代碼的多個(gè)預(yù)定定時(shí)觀察所述程序的執(zhí)行狀 態(tài),所述最終期限指令代碼是被指定了所述最終期限的指令代碼;
在存儲(chǔ)器中存儲(chǔ)在為多個(gè)預(yù)定義執(zhí)行狀態(tài)的每一個(gè)完成對(duì)所迷最終期 限指令代碼的執(zhí)行前要求的剩余計(jì)算量的預(yù)測(cè)數(shù)據(jù);
從所述存儲(chǔ)器中的所述預(yù)測(cè)數(shù)據(jù)中獲取對(duì)應(yīng)于觀察的執(zhí)行狀態(tài)的剩余
計(jì)算量作為剩余預(yù)測(cè)計(jì)算量;
計(jì)算直至所述最終期限指令代碼的所述最終期限的剩余時(shí)間;
計(jì)算在所述剩余時(shí)間內(nèi)處理所述剩余預(yù)測(cè)計(jì)算量要求的所迷微處理器
的最小操作速度;以及
控制所述樣i:處理器以所述最小操作速度或更高的速度操作。
根據(jù)本發(fā)明的一方面,提供了 一種存儲(chǔ)計(jì)算機(jī)程序用于促使控制執(zhí)行 包括指令代碼的程序的微處理器的操作速度的計(jì)算機(jī)執(zhí)行指令以實(shí)施以下 步驟的計(jì)算機(jī)程序存儲(chǔ)介質(zhì),在所述指令代碼中為至少一個(gè)指令代碼指定 最終期限,所述步驟包括
在先于執(zhí)行最終期限指令代碼的多個(gè)預(yù)定定時(shí)觀察所述程序的執(zhí)行狀 態(tài),所述最終期限指令代碼是被指定了所述最終期限的指令代碼;
訪問(wèn)存儲(chǔ)器中在為多個(gè)預(yù)定義執(zhí)行狀態(tài)的每一個(gè)完成執(zhí)行所述最終期 限指令代碼前要求的剩余計(jì)算量的預(yù)測(cè)數(shù)據(jù);
從所述存儲(chǔ)器中的所述預(yù)測(cè)數(shù)據(jù)中獲取對(duì)應(yīng)于觀察的執(zhí)行狀態(tài)的剩余 計(jì)算量作為剩余預(yù)測(cè)計(jì)算量;
計(jì)算直至所述最終期限指令代碼的所述最終期限的剩余時(shí)間;
計(jì)算在所述剩余時(shí)間內(nèi)處理所述剩余預(yù)測(cè)計(jì)算量要求的所述孩支處理器 的最小操作速度;以及
控制所述樣史處理器以所述最小操作速度或更高的速度操作。
圖1示出根據(jù)本發(fā)明的包含操作系統(tǒng)的嵌入式系統(tǒng);
圖2示出自適應(yīng)速度控制裝置的詳細(xì)配置;
圖3示出用于在隨后的描述中提供具體描述的應(yīng)用程序的例子;
圖4示出對(duì)應(yīng)用程序的控制流的略圖5示出狀態(tài)轉(zhuǎn)換圖的例子;
圖6示出狀態(tài)轉(zhuǎn)換圖的另一例子;
圖7示出狀態(tài)轉(zhuǎn)換圖的另一例子;
圖8示出包含狀態(tài)標(biāo)簽的例子的表;
圖9示出在生成狀態(tài)轉(zhuǎn)換表期間獲得的信息的表;
圖10示出從圖9的表生成的狀態(tài)轉(zhuǎn)換表的例子;以及
圖ll示出狀態(tài)轉(zhuǎn)換表的另一例子。
具體實(shí)施例方式
圖1示出根據(jù)本發(fā)明的包含操作系統(tǒng)的軟實(shí)時(shí)嵌入式系統(tǒng)。 該嵌入式系統(tǒng)包括微處理器(CPU) 11、被微處理器11執(zhí)行的操作系 統(tǒng)或OS 12、在操作系統(tǒng)12上運(yùn)行的應(yīng)用程序13以及當(dāng)微處理器11執(zhí)行 應(yīng)用程序13時(shí)調(diào)整微處理器11的操作速度的自適應(yīng)速度控制裝置14。微 處理器11支持例如動(dòng)態(tài)電壓頻率調(diào)節(jié)(DVFS)。自適應(yīng)速度控制裝置14 的功能可以祐 判如作為操作系統(tǒng)12的一部分并入。 圖3示出應(yīng)用程序13的例子。
應(yīng)用程序13由許多指令代碼構(gòu)成,并且包含許多子程序。以前綴 "app—"開始的子程序?qū)儆趹?yīng)用程序,以前綴"sys_"開始的子程序?qū)儆?對(duì)OS的系統(tǒng)調(diào)用。系統(tǒng)調(diào)用"sys—"是被應(yīng)用程序13用來(lái)請(qǐng)求來(lái)自操作 系統(tǒng)的處理的子程序。
該應(yīng)用程序在子程序的主回路"叩p—main"的開始itA數(shù)據(jù)接收等待 "sys—recv",并且緊隨數(shù)據(jù)接收到下一個(gè)接收等待(即,從"sys—init,, 到"sys—fini")的部是被周期性執(zhí)行的部分(周期性任務(wù))。"sys—init" 和"sys一fini"是定義周期性任務(wù)部的開始和結(jié)束的系統(tǒng)調(diào)用。"while(l)" 是命令重復(fù)跟隨"while (1)"的'T,和之間包含的指令的指令代碼。 在周期性任務(wù)中,取決于條件分支,執(zhí)行子程序"app_subl"或子程 序"app—sub2,,,并且之后執(zhí)行子程序"app—sub3"。子程序"app_subl" 和"app—sub2,,執(zhí)行數(shù)據(jù)傳輸"sys—send",子程序"app_sub3,,執(zhí)行文 件寫作"sys—wirte"。
系統(tǒng)調(diào)用"sys一"被分類成與控制操作速度相關(guān)的和與控制操作速度
無(wú)關(guān)的。后一種系統(tǒng)調(diào)用包括用于實(shí)施對(duì)標(biāo)準(zhǔn)文件的讀或?qū)懞?或經(jīng)由網(wǎng)絡(luò)
的通信("sys—recv,, 、 "sys—send" 、 "sys一wirte,,)的指令。前一種系 統(tǒng)調(diào)用包括指示周期性任務(wù)的開始的"sysjnit"、指示周期性任務(wù)的結(jié)束 的"sys一fini"以及在周期性任務(wù)中指定最終期限(完成的時(shí)間限制)的 "sys—time"。
"Void app—sub2"中的"sys—time (10ms)"意味著從周期性任務(wù) 的開始"sys—init"到完成執(zhí)行剛好早于"sys—time (10ms),,的指令代碼 必須在10毫秒(ms)內(nèi)。換言之,"sys—time (10ms),,對(duì)完成執(zhí)行剛 好早于它(最終期限指令代碼)的指令代碼指定最終期限。同樣地,"sys—fini (20ms),,意味著周期性任務(wù)必須在從周期性任務(wù)開始的20ms內(nèi)被終止 (或必須完成執(zhí)行"a卯—sub3")。也就是說(shuō),"sys_fmi (20ms)"為周 期性任務(wù)中的最后指令代碼"叩pjub3"指定最終期限。要注意,周期性 任務(wù)的開始"sys—init"是0ms。
如上所述,該實(shí)施例的應(yīng)用程序13包含被重復(fù)執(zhí)行的周期性任務(wù)。圖 4中示出應(yīng)用程序13的控制流特別是周期性任務(wù)的控制流的略圖。
應(yīng)用程序13包括在開始(START)和結(jié)束(STOP)之間被重復(fù)執(zhí)行 的周期性任務(wù)。圖中,被虛線環(huán)繞的部分表示在"sys_init"和"sys_fini (20ms)"之間包含的周期性任務(wù)。周期性任務(wù)有它的開始(INIT)和結(jié) 束(FINI),并且在開始(INIT)和結(jié)束(FINI)之間重復(fù)跨過(guò)最終期限 位置(TIME)和調(diào)用系統(tǒng)調(diào)用(CALL)。例如,回放運(yùn)動(dòng)圖4象的應(yīng)用程 序具有程序的開始和結(jié)束以及計(jì)算運(yùn)動(dòng)圖^象的一個(gè)幀的周期性任務(wù),并且 在周期性任務(wù)中存在各種系統(tǒng)調(diào)用和最終期限。圖中,例如,"INIT"對(duì) 應(yīng)于"sysjnit" , "FINI"對(duì)應(yīng)于"sys_fini (20ms) " , "TIME"對(duì)應(yīng) 于"sys—time (10ms ),,,以及"CALL"對(duì)應(yīng)于"sys_send,,和"sys—wirte"。
圖2示出圖1的自適應(yīng)速度控制裝置14的詳細(xì)配置。
程序狀態(tài)觀察單元21在OS調(diào)用(系統(tǒng)調(diào)用)的時(shí)候觀察執(zhí)行周期性 任務(wù)期間應(yīng)用程序的狀態(tài),并且向計(jì)算量預(yù)測(cè)數(shù)據(jù)生成器22或操作速度控 制單元23輸出表示觀察的狀態(tài)的狀態(tài)標(biāo)簽。程序狀態(tài)觀察單元21對(duì)應(yīng)于
例如狀態(tài)觀察單元和第二狀態(tài)觀察單元。
計(jì)算量預(yù)測(cè)數(shù)據(jù)生成器22生成計(jì)算量預(yù)測(cè)數(shù)據(jù)24,計(jì)算量預(yù)測(cè)數(shù)據(jù) 24表示對(duì)從觀察周期性任務(wù)獲得的每一個(gè)狀態(tài)到達(dá)最終期限狀態(tài)(即,狀 態(tài)中被指定了最終期限的狀態(tài)),也就是到完成執(zhí)行被指定了最終期限的 指令代碼(最終期限指令代碼)時(shí)的預(yù)測(cè)的計(jì)算量(或預(yù)測(cè)的循環(huán)計(jì)數(shù)) 以及諸如此類。計(jì)算量預(yù)測(cè)數(shù)據(jù)24也被稱為狀態(tài)轉(zhuǎn)換表。生成的計(jì)算量預(yù) 測(cè)數(shù)據(jù)24被存儲(chǔ)在例如數(shù)據(jù)存儲(chǔ)單元中。
根據(jù)計(jì)算量預(yù)測(cè)數(shù)據(jù)24并且基于當(dāng)前的程序狀態(tài),操作速度控制單元 23確定完成執(zhí)行被指定最終期限的指令代碼(最終期限指令代碼)時(shí)要求
的剩余計(jì)算量,并且基于確定的計(jì)算量和最終期限前的剩余時(shí)間,決定應(yīng) 當(dāng)采用的微處理器的操作速度直至轉(zhuǎn)換到下一程序狀態(tài)。例如,操作速度 控制單元23決定在剩余時(shí)間內(nèi)處理確定的計(jì)算量要求的最小速度作為微 處理器的操作速度??蛇x地,操作iUL控制單元23選擇比最小速度高并且 是許多預(yù)先指定的操作速度中具有最小值的操作速度。
假定在最終期限內(nèi)由于系統(tǒng)上的負(fù)栽增加以及類似原因應(yīng)用程序13 不終止,操作速度控制單元23還根據(jù)最終期限的完成率(最終期限實(shí)際被 滿足的比率)調(diào)整操作速度。例如,完成率越低,設(shè)置比通過(guò)以上提及的 方式確定的或選擇的操作速度高的操作速度。操作速度控制單元23包括例 如剩余時(shí)間計(jì)算單元、操作速度計(jì)算單元、控制單元和完成率計(jì)算單元。
下文將更詳細(xì)地描述自適應(yīng)控制裝置14的操作。
然而,以下的描述有時(shí)使用各種指令代碼來(lái)示出程序狀態(tài)觀察單元 21、計(jì)算量預(yù)測(cè)數(shù)據(jù)生成器22和操作速度控制單元23的處理過(guò)程。這樣 的描述遵循以下規(guī)則后綴"—start"被附加到當(dāng)應(yīng)用程序開始(START) 時(shí)被實(shí)施的處理,后綴"—stop"被附加到當(dāng)程序終止(STOP)時(shí)被實(shí)施 的處理,后綴"—init"被附加到當(dāng)周期性任務(wù)開始(INIT)時(shí)被實(shí)施的處 理,后綴"—fini"被附加到當(dāng)周期性任務(wù)終止(FINI)時(shí)被實(shí)施的處理, 以及后綴"一call"被附加到在系統(tǒng)調(diào)用(CALL)時(shí)被實(shí)施的處理。為了 區(qū)別系統(tǒng)調(diào)用和最終期限通知,添加了后綴"time"。
圖2的自適應(yīng)速度控制裝置14實(shí)施的處理一般包括學(xué)習(xí)階段和控制階 段。學(xué)習(xí)階段中,在執(zhí)行周期性任務(wù)期間觀察應(yīng)用程序的狀態(tài)并且創(chuàng)建狀 態(tài)轉(zhuǎn)換表(計(jì)算量預(yù)測(cè)數(shù)據(jù))??刂齐A段中,使用應(yīng)用程序的觀察的狀態(tài) 和狀態(tài)轉(zhuǎn)換表,預(yù)測(cè)一直到被指定最終期限的位置的計(jì)算量(sys一time, sys—fmi),即,完成執(zhí)行最終期限指令代碼時(shí)要求的計(jì)算量。然后,基于 預(yù)測(cè)的計(jì)算量和最終期限前的剩余時(shí)間控制微處理器的操作速度。
下面描述學(xué)習(xí)和控制階段的概況并隨后描述各階段的細(xì)節(jié)。 <學(xué)習(xí)階段的概況>
首先,執(zhí)行應(yīng)用程序13,并且在執(zhí)行周期性任務(wù)期間通過(guò)程序狀態(tài)觀 察單元21觀察應(yīng)用程序13的狀態(tài)。當(dāng)調(diào)用系統(tǒng)調(diào)用"sys—"時(shí)觀察狀態(tài) 并將觀察的狀態(tài)保存為狀態(tài)標(biāo)簽。
計(jì)算量預(yù)測(cè)數(shù)據(jù)生成器22基于通過(guò)程序狀態(tài)觀察單元21獲得的狀態(tài) 標(biāo)簽,生成表示周期性任務(wù)中狀態(tài)轉(zhuǎn)換的狀態(tài)轉(zhuǎn)換圖(見(jiàn)以下討論的圖5 和6 )。計(jì)算量預(yù)測(cè)數(shù)據(jù)生成器22然后生成表示從狀態(tài)轉(zhuǎn)換圖中的每一個(gè) 狀態(tài)到達(dá)最終期限狀態(tài)要求的微處理器的平均計(jì)算量(預(yù)測(cè)計(jì)算量)以及 到達(dá)每一個(gè)最終期限狀態(tài)的概率的狀態(tài)轉(zhuǎn)換圖(計(jì)算量預(yù)測(cè)數(shù)據(jù))。 <控制階段的概況>
執(zhí)行應(yīng)用程序13,并且在執(zhí)行周期性任務(wù)期間通過(guò)程序狀態(tài)觀察單元 21觀察它的狀態(tài)。使用觀察的狀態(tài)和在學(xué)習(xí)階段中獲得的狀態(tài)轉(zhuǎn)換表,操 作速度控制單元23決定在每一個(gè)狀態(tài)轉(zhuǎn)換(即,每次有系統(tǒng)調(diào)用)時(shí)對(duì)下 一狀態(tài)的操作速度,并且使微處理器(CPU) 11在該速度操作直至下一狀 態(tài)轉(zhuǎn)換為止。通過(guò)這種方式,執(zhí)行周期性任務(wù)期間微處理器(CPU) 11的 操作速度被以系統(tǒng)調(diào)用的定時(shí)(即,狀態(tài)轉(zhuǎn)換的定時(shí))控制??梢皂樞蚧?者并行(例如,在操作期間修改計(jì)算量預(yù)測(cè)數(shù)據(jù))執(zhí)行控制階段和學(xué)習(xí)階 段。
<學(xué)習(xí)階段的細(xì)節(jié)>
當(dāng)有系統(tǒng)調(diào)用而周期性任務(wù)被執(zhí)行的時(shí)候,程序狀態(tài)觀察單元21觀察 應(yīng)用程序的狀態(tài)。在系統(tǒng)調(diào)用時(shí)觀察狀態(tài),因?yàn)槿绻刑嗟挠^察點(diǎn)(例
如,如果在調(diào)用子程序而不是系統(tǒng)調(diào)用的時(shí)候也觀察狀態(tài)),微處理器上 的負(fù)栽將加重。因此,本發(fā)明不排除在系統(tǒng)調(diào)用以外的時(shí)候〗見(jiàn)察狀態(tài)。
在該實(shí)施例中,觀察的狀態(tài)對(duì)應(yīng)于在觀察的時(shí)候(即,緊隨系統(tǒng)調(diào)用 后)的在用子程序(包括系統(tǒng)調(diào)用和應(yīng)用子程序兩者)的字節(jié)組。對(duì)一個(gè)
字節(jié)組給定一個(gè)標(biāo)簽。例如,當(dāng)按照"a卯—main"然后是"sys—init"的順 序執(zhí)行子程序時(shí),并且在調(diào)用"sys一init"時(shí)實(shí)施狀態(tài)觀察,則獲得表示 "app_main,,和"sysjnit"的字節(jié)組的狀態(tài)標(biāo)簽。
圖8示出從觀察圖3的應(yīng)用程序的狀態(tài)中產(chǎn)生的表(狀態(tài)標(biāo)簽的例子)。
該表示出總共六個(gè)狀態(tài)標(biāo)簽s0、 sl、 s2、 s3、 s4和s5。也就是i兌, 當(dāng)調(diào)用系統(tǒng)調(diào)用時(shí)觀察的狀態(tài)屬于六個(gè)狀態(tài)sO、 sl、 s2、 s3、 s4和s5中的 一個(gè)。表中的"堆棧"域包含屬于各狀態(tài)的子程序的字節(jié)組,其中子程序 早于它們i^v圖中的左側(cè)被調(diào)用。當(dāng)圖中最右邊的子程序(系統(tǒng)調(diào)用)祐: 調(diào)用時(shí)實(shí)施狀態(tài)7見(jiàn)察。
在表中的"最終期限"域中,當(dāng)表中最右邊的系統(tǒng)調(diào)用指定最終期限 時(shí)存儲(chǔ)"o",當(dāng)它不指定一個(gè)時(shí)存儲(chǔ)"x"。例如出于處理簡(jiǎn)單起見(jiàn),采 用指示周期性任務(wù)開始的"sysjnit"指定最終期限。
具體來(lái)說(shuō),對(duì)應(yīng)于一個(gè)狀態(tài)的子程序的字節(jié)組可以被作為子程序的返 回地址的列表獲得,所述子程序被堆棧在用于應(yīng)用程序的調(diào)用堆棧中。用 于程序的調(diào)用堆棧為未完成的子程序存儲(chǔ)數(shù)據(jù)。對(duì)應(yīng)于一個(gè)子程序的數(shù)據(jù) 被稱為幀,所述幀包括子程序的本地變量、返回地址、前一個(gè)幀的起始地 址等。幀中的值,皮存儲(chǔ)在位于離該幀的起始地址的特定偏移量的地址處。 幀中的偏移量值和寄存器名取決于執(zhí)行環(huán)境而不同,但是基本的過(guò)程與此 處示出的類似。
該實(shí)施例假定4皮稱為幀指針($fp)的寄存器中的值指向最頂層的或 當(dāng)前幀的起始地址(POS),并且?guī)钠鹗嫉刂诽幋鎯?chǔ)的內(nèi)容(memposp 指示前一個(gè)幀的起始地址。位于遠(yuǎn)離幀的起始地址的偏移量值(off)處的 內(nèi)容(ret-mem[pos+offl )表示子程序的返回地址??梢酝ㄟ^(guò)追蹤調(diào)用堆 棧的同時(shí)記錄返回地址(ret)的字節(jié)組直至幀起始地址(pos)與堆棧底
層(bot)對(duì)應(yīng)為止,來(lái)獲得以上提及的列表。以下對(duì)偽程序中的"bot::Uint" 的描述意味著"變量'bot,的類型是不分正負(fù)的整數(shù)'Uint",。過(guò)程。
名稱app一stack
功能獲得存儲(chǔ)堆棧中的返回地址的列表 常量
Stack bottom, bot::Uint ( a constant) Offset, off::Uint ( a constant)
輸入
OS call identifier sid::Uint
Stack-allocated memory mem::Map of Uint to Uint
輸出
Stack return address sequence seq::Seq of Uint
app—stack (_) Uint bot= stack bottom Uint off= offset Uint sid =OS call identifier Uint pos= ( $ fp ) frame pointer Uint ret=return address Pos— $ fp Ret<~ sid
Seq <~ret〃an empty list while pos! =bot do
pos <~mem[posl
ret <~mempos+off] seq <~seq十ret
od
return seq
計(jì)算量預(yù)測(cè)數(shù)據(jù)生成器22接連地從程序狀態(tài)觀察單元21獲得狀態(tài)標(biāo) 簽(或列表),并且使用獲得的狀態(tài)標(biāo)簽創(chuàng)建表示應(yīng)用程序中的狀態(tài)轉(zhuǎn)換 的狀態(tài)轉(zhuǎn)換圖。狀態(tài)轉(zhuǎn)換圖可以被視為提取涉及應(yīng)用程序的操作的特征。
圖5示出從圖3的應(yīng)用程序創(chuàng)建的狀態(tài)轉(zhuǎn)換圖的例子。
狀態(tài)轉(zhuǎn)換圖是一種有向圖。狀態(tài)轉(zhuǎn)換圖表示被作為通過(guò)邊與表示前一 個(gè)或后續(xù)狀態(tài)的節(jié)點(diǎn)連接的節(jié)點(diǎn)在系統(tǒng)調(diào)用的時(shí)候觀察的應(yīng)用程序的狀 態(tài)。圖5中的s0、 sl、 s2、 s3、 s4和s5表示節(jié)點(diǎn)并且這些節(jié)點(diǎn)s0、 sl、 s2、 s3、 s4和s5對(duì)應(yīng)于圖8的表中示出的狀態(tài)(應(yīng)用程序的調(diào)用堆棧)。
圖5中的數(shù)字0ms、 10ms和20ms指最終期限。也就是說(shuō),假定狀態(tài) s0在Oms處,則必須在10ms內(nèi)到達(dá)狀態(tài)s4,并且必須在20ms內(nèi)到達(dá)狀 態(tài)s5。到標(biāo)簽"s3"的遞歸箭頭意味著標(biāo)簽"S3"已被重復(fù)獲得。更具體 地,它意p未著圖3的應(yīng)用程序的"void app—sub2"中的"for"語(yǔ)句中的 "sys_send"已被重復(fù)并且連續(xù)地執(zhí)行了多次,
下面示出對(duì)狀態(tài)轉(zhuǎn)換圖"M"的定義。假定標(biāo)簽集"S"是狀態(tài)標(biāo)簽的 集合,并且開始標(biāo)簽集'T,、最終期限標(biāo)簽集"D"和結(jié)束標(biāo)簽集"F" 是集合"S"的子集。周期性任務(wù)的狀態(tài)標(biāo)簽的集合纟^示為"I",結(jié)束 標(biāo)簽的集合被表示為"F"。集合"F,,和"I"沒(méi)有共同元素(FPIH)), 其中(|)表示空集。標(biāo)簽集"S-D" ( "S"減去"D"的余項(xiàng))對(duì)應(yīng)于正常的 系統(tǒng)調(diào)用。最終期限標(biāo)簽"dED"具有最終期限"T(d)"。
M= ( S,I,D,F(xiàn),R,T )
Label set: S (本例中, S= {s0, sl, s2, s3, s4, s5})
Start label set:I;D (本例中,I={sO})
Deadline lable set:D^S (本例中,D={s0,s4,s5})
Finish lable set:F^D (本例中,F(xiàn)={ s5})
Label transition relation: R^SxS(本例中, R= {(s0, sl), (si, s2), (s0, s3), (s3, s3), (s3, s4), (s4, s2), (s2, s5)}
Deadline assignment: T: D~>Time (本例中,T= ms, s"lO ms,
s5—20 ms})
盡管以上的例子將在用子程序的字節(jié)組(調(diào)用堆棧中的返回地址的列 表)作為狀態(tài)標(biāo)簽獲取,也有可能擴(kuò)展?fàn)顟B(tài)標(biāo)簽的內(nèi)容并將調(diào)用堆棧中的 返回地址列表的字節(jié)組以及發(fā)生頻率(每周期調(diào)用的數(shù)量)作為狀態(tài)標(biāo)簽 獲得。
圖6示出使用擴(kuò)展的狀態(tài)標(biāo)簽生成的狀態(tài)轉(zhuǎn)換圖的例子。 擴(kuò)展的狀態(tài)標(biāo)簽被表示為返回地址列表"S"和它的發(fā)生頻率"f(s)" 的對(duì),即,<s,f(s)>。例如,<83,1>意味著"s3"的第一次發(fā)生,〈s3,2〉意 味著"s3"的第二次發(fā)生。圖5用遞歸箭頭表示"S3"的多次發(fā)生,而圖6 中"s3"的每次發(fā)生^皮作為不同狀態(tài)獲得。從圖中要理解有兩種情況一 種是從〈s3,1〉經(jīng)由〈s3,2〉到〈s4,l〉發(fā)生轉(zhuǎn)換, 一種情況是從〈s3,l〉到〈s4,1〉 直接發(fā)生轉(zhuǎn)換。
此處,對(duì)具有擴(kuò)展的狀態(tài)標(biāo)簽的狀態(tài)轉(zhuǎn)換圖"M"的定義在下面示出。 標(biāo)簽集"S"是狀態(tài)標(biāo)簽的集合,并且開始標(biāo)簽集'T,、最終期限標(biāo)簽集 "D,,和結(jié)束標(biāo)簽集"F"是集合"S"的子集,對(duì)周期性任務(wù)的開始標(biāo)簽的集 合凈il4示為'T,,,結(jié)束標(biāo)簽的集合被表示為"F",。集合"F",和"I",沒(méi)有共同 元素(F'n'-(J)),其中())表示空集。標(biāo)簽集"S'-D',, ("S',,減去"D",的余項(xiàng)) 對(duì)應(yīng)于正常的系統(tǒng)調(diào)用。最終期限標(biāo)簽"d'eD'"具有最終期限"T'(d')",
Label set: S' (本例中,
S'={<s0,l>, <sl,l>, <s2,l>, <s3,l>, <s3,2>,< s4,l>, <s5,l>})
Start label set:I'eD'= Dx{l}(本例中,I'={<s0,l>})
Deadline lable set:D'S' (本例中,
D'={<s0,l>, <s4,l>, <s5,l>})
Finish lable set:F^D' (本例中,F'={ <s5,l>})
Label transition relation: R'^S'xS'(本例中,
R'={(<s0,l>,<sl,l>), (<sl,l>, <s2,l>), (<s0,l>, <s3,l>), (<s3,l>, <s3,2>), (<s3,l>, <s4,l>), <s3,2>, <s4,l>), (<s4,l>, <s2,l>), (<s2,l>, <s5,l>)} Deadline assignment: T': D'~>Time (本例中, T'= {<s0,l>~>0 ms, <s4,l>—10 ms, <s5,l>—20 ms})
下面示出計(jì)算擴(kuò)展的狀態(tài)標(biāo)簽的過(guò)程。以下的計(jì)算過(guò)程假定集合"S" 是用于維護(hù)在過(guò)去已發(fā)生的調(diào)用堆棧中的返回地址的列表的集合,并且映
射"r是用于維護(hù)在相同調(diào)用堆棧中的返回地址列表的發(fā)生頻率的映射。
當(dāng)啟動(dòng)程序(START)時(shí)集合"S"被初始化到空的狀態(tài),并且在系統(tǒng)調(diào) 用(CALL )的時(shí)候向集合"S"添加返回地址列表。當(dāng)啟動(dòng)程序(START ) 時(shí)映射"f,被初始化到空的狀態(tài),并且當(dāng)有系統(tǒng)調(diào)用(CALL)時(shí)在映射
"r中維護(hù)的發(fā)生頻率被增加。如以上提及的,狀態(tài)標(biāo)簽是返回地址列表
"s"和它的發(fā)生頻率"f(s)"的對(duì),<s,f(s)>。
功能生成用于計(jì)算"M"(具有發(fā)生計(jì)數(shù))的標(biāo)簽 注意:Label= ( Seq of Uint, Uint)
void label_start() S::Set of State—(j) f::Map of Sto NH> return
Label label—init () for each s e S do
17
f(s) <~0
od
return label一call()
Label label_fini () return label—call()
Label label—call () s <~app_stack() if not s e S then
f(s) —0
S4~SU{s}
f(s) —f(s)+l return <s,f(s)>
計(jì)算量預(yù)測(cè)數(shù)據(jù)生成器22生成表示在這樣創(chuàng)建的狀態(tài)轉(zhuǎn)換圖(圖5 或6)中從每一個(gè)狀態(tài)到達(dá)最終期限狀態(tài)的概率(或最終期限指令代碼的 執(zhí)行率)的狀態(tài)轉(zhuǎn)換表和微處理器的平均計(jì)算量(或預(yù)測(cè)的計(jì)算量)。定 義狀態(tài)轉(zhuǎn)換表如下。
當(dāng)前狀態(tài)是狀態(tài)"s"時(shí),到達(dá)最終期限狀態(tài)"d"的概率祐束示為"Prob (s,d)",并且一直到最終期限狀態(tài)"d"的計(jì)算量被束示為"Cycl(s,d)"。 下面討論的控制階段使用計(jì)算量"Cycl(s,d)"和從程序的當(dāng)前狀態(tài)"sGS" 到具有最終期限"dGD"的狀態(tài)的到ii^t率"Prob (s,d)"。狀態(tài)轉(zhuǎn)換表 包含計(jì)算量"Cycl"和對(duì)于路徑從每一個(gè)狀態(tài)到達(dá)最終期限狀態(tài)的到^ 率"Prob"。
到達(dá)概率Prob::Map of (S, D) to R
計(jì)算量(預(yù)測(cè)計(jì)算量)Cycl::Map of (S, D) to R
下面具體示出生成狀態(tài)轉(zhuǎn)換表的過(guò)程。狀態(tài)轉(zhuǎn)換表可以通過(guò)向狀態(tài)轉(zhuǎn) 換圖(圖5或6)添加轉(zhuǎn)換時(shí)的平均計(jì)算量和分支時(shí)的每一個(gè)分支的概率 來(lái)生成,但是可以通過(guò)觀察應(yīng)用程序更容易地直接生成。因此,下面將示 出通過(guò)觀察執(zhí)行應(yīng)用程序生成對(duì)應(yīng)用程序的狀態(tài)轉(zhuǎn)換表("Prob" ,"Cycl") 的過(guò)程。
以下過(guò)程假定可以借助例如對(duì)處理器的簡(jiǎn)檔計(jì)數(shù)器(profile counter )、 CPU ^^莫擬器或類似的來(lái)測(cè)量對(duì)應(yīng)用程序的指定部的計(jì)算量(CPU循環(huán)計(jì) 數(shù))。計(jì)算量預(yù)測(cè)數(shù)據(jù)生成器22包括測(cè)量對(duì)例如指定部的計(jì)算量的計(jì)算量 測(cè)量單元。
功能:生成應(yīng)用程序的狀態(tài)轉(zhuǎn)換表("Prob", "Cycl")
訪問(wèn)頻率,FreqS::Map of S to N 訪問(wèn)周期,CyclS::Map of S to N 轉(zhuǎn)換頻率,F(xiàn)reqT::Map of (S, D) to N 轉(zhuǎn)換周期,CyclT:: Map of ( S,D) to N i方問(wèn)才示i己,Visit::Map of S to Bool
輸入
標(biāo)簽集合"S,,以及最后期限標(biāo)簽集合"D"
輸出
到達(dá)概率"Prob,,以及循環(huán)計(jì)數(shù)"Cycl"
void mktab—start() label—start () for each s e S do FreqS(s)"
for each d e D do FreqT(s, d) CydT(s, d) —0
od
od
void mktab—init() for each s E S do Visit(s) <~false CyelS(s) <~0
od
s<~Iabel—init() Visit(s) <~true
CycleS(s) —execution cycle count ()
void mktabcall() s<~label—call() Visit(s) —true
CycleS(s) <~execution cycle count ()
void mktab—time() mktab一call ()
void mktab—fini() for each s e S do for each dED do
if Visit(s) a Visit(d) a CycleS(s) < CycleS(d) then FreqT(s, d) — FreqT(s, d) +1
CyclT(s, d) <~ CyclT(s, d) + CycleS (d)國(guó)CycleS(s)
fi
od od
void mktab—stop() for each s G S do for each d E D do if FreqT(s,d)>0 then
Cycl(s, d) <~ CyclT(s, d)/ FreqT(s, d) else
Cycl(s, d)"
fi
if FreqS(s)>0 then
Prob(s, d) <~ FreqT(s, d) / FreqS(s) else
Prob(s, d) <~0
fi od od
在以上的過(guò)程中,訪問(wèn)頻率"FreqS"記錄狀態(tài)"sES"的發(fā)生數(shù)量, 轉(zhuǎn)換頻率"FreqT"記錄從狀態(tài)"s已S"到狀態(tài)"dED"的轉(zhuǎn)換頻率。轉(zhuǎn) 換周期"CyclT"對(duì)從狀態(tài)"sGS"到狀態(tài)"dED"的轉(zhuǎn)換所要求的計(jì)算量 進(jìn)行加和。訪問(wèn)標(biāo)記"Visit"和訪問(wèn)循環(huán)"CyclS"分別記錄被訪問(wèn)的狀態(tài) (無(wú)論該狀態(tài)是否已被訪問(wèn))和從周期性任務(wù)的開始到周期性任務(wù)的結(jié)束 的訪問(wèn)時(shí)的循環(huán)計(jì)數(shù)。
分別地,當(dāng)啟動(dòng)應(yīng)用程序時(shí)(START),變量"FreqS" 、 "FreqT"
和"CyclT"被初始化到0,當(dāng)啟動(dòng)周期性任務(wù)(INII)時(shí),"Visit"和"CyclS" 被初始化到"false"和"0"。當(dāng)周期性任務(wù)已結(jié)束時(shí)(FINI),從"Visit" 和"CyclS"的值確定轉(zhuǎn)換關(guān)系,并且還更新"FreqT"和"CyclT"。當(dāng)程 序已終止時(shí)(STOP),從"FreqS" 、 "FreqT"和"CycIT,,的值計(jì)算狀 態(tài)轉(zhuǎn)換表("Cycl" , "Prob")。
圖9是示出在根據(jù)以上過(guò)程生成狀態(tài)轉(zhuǎn)換表期間的狀態(tài)的表。表的每 行對(duì)應(yīng)于在一個(gè)周期性任務(wù)中執(zhí)行的執(zhí)行路徑,并且包含變量"Visit"、
"CyclS" 、 "FreqS" 、 "CyclT,,和"FreqT"的值作為周期性任務(wù)的終 止的值(FINI)。
通過(guò)示例方式,給出集中于第三周期性任務(wù)中的執(zhí)行路徑〈sO、 s3、 s3、 s4、 s2、 s5〉的描述。
"Visit,,的〈s0, l>4l, <s2, 1>~>1, <s3, 1>—1, <s3, 2>—1, <s4, 1>~>1和 <s5,1>—1說(shuō)明狀態(tài)〈s0,1>、 <s2,1>、 <s3,1>、 <s3, 2>、 <s4,1>和<85, 1> 在第三周期性任務(wù)中被訪問(wèn)過(guò),而"l, l>—0說(shuō)明〈sl, 1>沒(méi)有被訪問(wèn)過(guò)。
"CyclS"的<s2,l>—400 K 、 <s3,l>~>100 K 、 <s3,2>—200 K 、 <s4,l>~>300 K和<85,1>—500 K說(shuō)明,假定訪問(wèn)<80,1>的時(shí)候循環(huán)計(jì)數(shù)是 OK,訪問(wèn)所述每一個(gè)狀態(tài)的時(shí)候循環(huán)計(jì)數(shù)(計(jì)算量)分別是400 K、 100 K、 200 K、 300K和500K循環(huán)。"K"是"kilocycle (千周)"的簡(jiǎn)寫。
"FreqS"的〈s0,1〉—3, <sl,l>—1、 <s2,l>—3, <s3,l>—2, <s3,2>~>1, <s4,l>和<85,1>~>3說(shuō)明當(dāng)?shù)谌芷谛匀蝿?wù)結(jié)束時(shí)這些狀態(tài)已總共分別
被訪f司三次、 一次、三次、兩次、 一次、兩次和三次o
"CyclT,,的(<s0,l>,<s4,l>) —500 K、 ( <s0,l>,<s5,l>) ~>1200 K、 (<sl,l>,<s5,l>)—200 K,…,說(shuō)明當(dāng)?shù)谌芷谛匀蝿?wù)結(jié)束的時(shí)刻在這些 狀態(tài)間轉(zhuǎn)換的總循環(huán)計(jì)數(shù)(計(jì)算量)分別是500K、 1200 K、 200 K,…。 "FreqT"的(<s0,l>,<s4,l> )42、 ( <s0,l>,<s5,l> )—3、 ( <sl,l>,<s5,l>) —1,...,說(shuō)明當(dāng)?shù)谌芷谛匀蝿?wù)結(jié)束的時(shí)刻在這些狀態(tài)間轉(zhuǎn)換的總數(shù)量分 別是2、 3、 1,…,。
圖10示出從對(duì)應(yīng)于圖9的表中的三個(gè)周期性任務(wù)的信息生成的狀態(tài)轉(zhuǎn)
換表的例子。
在該狀態(tài)轉(zhuǎn)換表中,列項(xiàng)目"從(from)"表示除了周期性任務(wù)終止 外的狀態(tài),行項(xiàng)目"到(to)"表示指定最終期限的最終期限狀態(tài)。如以 上提及的,狀態(tài)轉(zhuǎn)換表包含從每一個(gè)狀態(tài)到達(dá)最終期限狀態(tài)的概率和從每 一個(gè)狀態(tài)到達(dá)最終期限狀態(tài)的預(yù)測(cè)計(jì)算量(此處是平均值)。
例如,注意在"從"是<80,1>和"到,,是<84,1>的單元中,如從圖9
的表中看出的,由于總共有兩次從<80,1>到<54,1>的轉(zhuǎn)換,并且周期性任務(wù)
總共被執(zhí)行了三次,<80,1>到<84,1>的轉(zhuǎn)換發(fā)生的概率是2/3=67%(分?jǐn)?shù)被 上舍入)。從圖9的表看出,由于對(duì)從<50,1>到<84,1>的轉(zhuǎn)換要求的總循環(huán) 計(jì)數(shù)是500 K (第二次200 K, 笫三次300 K),并且總共有兩次轉(zhuǎn)換, 對(duì)從〈s0,l〉到〈s4,l〉的轉(zhuǎn)換要求的平均循環(huán)計(jì)數(shù)是500/2-250 K。 <控制階段的細(xì)節(jié)>
執(zhí)行應(yīng)用程序13的周期性任務(wù),使得程序狀態(tài)觀察單元21觀察應(yīng)用 程序13的狀態(tài),并且操作速度控制單元23通過(guò)使用觀察的狀態(tài)和在學(xué)習(xí) 階段生成的狀態(tài)轉(zhuǎn)換表(計(jì)算量預(yù)測(cè)數(shù)據(jù))決定每次有狀態(tài)轉(zhuǎn)換(即,每 次發(fā)生系統(tǒng)調(diào)用)時(shí)對(duì)下一狀態(tài)的^^t速度。通過(guò)這種方式,執(zhí)行周期性 任務(wù)期間微處理器(CPU) 11的操作速度被連續(xù)控制。
下面按照事件的順序描述對(duì)微處理器11的操作速度的控制。 操作速度控制的過(guò)程使用自周期性任務(wù)開始(INIT)起經(jīng)過(guò)的時(shí)間。 下面示出獲得流逝時(shí)間的示例性過(guò)程。在該過(guò)程中,"presenttime()(當(dāng)前 時(shí)間())"是指系統(tǒng)的實(shí)際時(shí)鐘。周期性任務(wù)開始(INIT)的時(shí)間被記錄在 變量"to"中,并且系統(tǒng)調(diào)用時(shí)經(jīng)過(guò)的時(shí)間被從當(dāng)前時(shí)間與開始時(shí)間之間 的差計(jì)算得出。
功能計(jì)算經(jīng)過(guò)的時(shí)間 變量開始時(shí)間tO:Uint 輸入 無(wú) 輸出經(jīng)過(guò)的時(shí)間<formula>formula see original document page 24</formula>
在操作速度控制的過(guò)程中,如隨后討論的,每次有系統(tǒng)調(diào)用時(shí)確定操 作速度。對(duì)于操作速度的確定,下面示出從許多速度中選擇操作速度的具 體過(guò)程。
功能選擇操作速度 變量
NumD::Map ofDtoN FinD::Map ofDtoN 輸入
當(dāng)前狀態(tài)"s" 當(dāng)前時(shí)間"t"
常量*.
到ii^t率,Prob::M叩of (S, D) to0, 1
循環(huán)計(jì)數(shù),Cycl::Map of (S, D) to R 速度集合,F(xiàn)req::Map of N to N 輸出
操作速度"r
Const fmax = Freq (1) Const fmin = Freq (N)
void speed—start() for each dGD do Num D (d) <~100 FinD (d) <~100
od
void speed—init() for each d ED do
Time (d)<~T(d)*( FinD(d)/ Num D(d))
od
Freq speed—call (Label s, Time t) f0<~0
for each dED do if Prob(s,d)>p0 then
f—Cycl(s,d)/min(l,Time(d)t) if f >f0 then f0<~f <formula>formula see original document page 26</formula>rn
以上示出的操作速度選擇過(guò)程假定微處理器(CPU) 11的操作速度在 從最小速度"Freq(l)"到最大速度"Freq(N)"的N步驟中可以改變,并 且映射"Freq"當(dāng)i<j時(shí)滿足Freq(i)< Freq(j)。
如在系統(tǒng)調(diào)用的時(shí)候?qū)嵤┑倪^(guò)程(speed—call)中描述的,當(dāng)給定當(dāng)前 狀態(tài)"sES"和時(shí)間"t"時(shí),選擇到狄率"Prob(s,d)"大于門限值"p0" 的具有最終期限"dGD"的狀態(tài),之后從計(jì)算量(循環(huán)計(jì)數(shù))"Cycl(s,d)"
和剩余時(shí)間"T(d)-t"計(jì)算要求的速度"fl)",并且選擇在最終期限內(nèi)要完 成處理的最小速度"f5 。
變量"NumD"和"FinD"維護(hù)到最終期限"d"的到達(dá)頻率"NumD(d)" 和及時(shí)完成頻率"FinD(d)"。值"FinD(d)/NumD(d)"表示最終期限的完 成率。
當(dāng)最終期限的完成率小于1時(shí),提供控制以便降低在選擇操作速度中 使用的有效最終期限"Time(d)"。也就是,最終期限"T(d)"和完成率 "FinD(d)/NumD(d)"的乘積被設(shè)置為有效最終期限"Time(d)"(見(jiàn)以上 的選擇過(guò)程中的Time(d)仨T(d)x( FinD(d)/ Num D(d)),由此增加完成率。 換言之,完成率越低,估算越短的有效剩余時(shí)間(Time(d)-t),由此計(jì)算 更高的操作速度(見(jiàn)以上的選擇過(guò)程中的f<~Cycl(s,d)/mm(l,Time(d)-t))。 基于以上描述的經(jīng)過(guò)時(shí)間確定和操作速度選擇的過(guò)程,下面示出操作 速度控制的示例性過(guò)程。
功能控制操作速度
輸入
當(dāng)前狀態(tài)"s" 當(dāng)前時(shí)刻"t" 到達(dá)概率"Prob" 循環(huán)計(jì)數(shù)"Cycl"
輸出
處理速度f(wàn): DOM (Freq)
void ctrl一start()
Prob<~ Probability of reach Cycl<~ Cycle count
810213579.4label start () etime—start () speed—start ()
void ctrl一init() speed— init () s<~label— init () t<~etime_ init () f—speed— init (s,t)
void Ctrl—call() s<~label_ call() t<~etime— call() f<~speed— call (s,t)
void ctrl一time() s<~labd— call () t<~etime_ call () speed— time (s,t) f<~speed— call (s,t)
void ctrl—fini() s<~label_ fini () t<~etime— fini () speed— time (s,t) speed— fini () f<~fmin
void ctrl一stop() return
下面將i兌明以上示出的對(duì)孩史處理器(CPU)操作速度控制的具體例子。 對(duì)于應(yīng)用程序13的狀態(tài)轉(zhuǎn)換表,使用圖ll中所示出的。 同樣假定微處理器(CPU)的操作速度在以下三個(gè)步驟中可以改變 f=10、 20和40MHz
將示出對(duì)當(dāng)周期性任務(wù)中的執(zhí)行路徑是sO、 sl、 s2、 s5時(shí)以及當(dāng)執(zhí)行 路徑是s0、 s3、 s3、 s4、 s2、 s5時(shí)的速度控制。 [對(duì)s0、 sl、 s2、 s5執(zhí)行路徑的速度控制
初始狀態(tài)是"0,1、并且當(dāng)前時(shí)間是Oms時(shí),以等于或大于20%的門 限值的概率到達(dá)的最終期限狀態(tài)是<85,1> (<54,1>是10%,小于門限值)。 到達(dá)狀態(tài)<85,1>的平均計(jì)算量(平均循環(huán)計(jì)數(shù))是300K (千周)。因此, 對(duì)在20ms的最終期限內(nèi)完成300 K要求的操作速度的計(jì)算給出15MHz或 更高,如以下乂^式中所示。在可被CPU采用的操作速度IO、 20和40 MHz 中滿足該條件的最低速度是20MHz。因此,選擇20MHz,并且在對(duì)應(yīng)于 <80,1>的系統(tǒng)調(diào)用后以20 MHz的速度處理應(yīng)用程序。
s=<sO, 1> 〃當(dāng)前狀態(tài) t=Oms 〃當(dāng)前狀態(tài)
300K/ (20-0) ms=15MHz 〃要求的速度
f=20MHz 〃操作速度
假定下一狀態(tài)是<81,1>,并且在對(duì)應(yīng)于<81,1>的系統(tǒng)調(diào)用的時(shí)候經(jīng)過(guò)的 時(shí)間是5ms。以等于或大于20%的門限值的概率到達(dá)的最終期限狀態(tài)是 <s5,l>。到達(dá)狀態(tài)<85,1>的平均計(jì)算量(平均循環(huán)計(jì)數(shù))是200K(千周)。 因此,對(duì)在最終期限的剩余時(shí)間15 (=20-5) ms內(nèi)完成200K要求的^^t 速度的計(jì)算給出13MHz或更高,如以下公式中所示。在可被CPU采用的
操作速度10、 20和40 MHz中滿足該M的最低速度是20 MHz。因此, 選擇20 MHz,并且在對(duì)應(yīng)于<81,1>的系統(tǒng)調(diào)用后以20 MHz的速度處理應(yīng) 用程序。
s=<sl, 1> t=5ms 200K/ (20-5) ms=13 f=20MHz
假定下一狀態(tài)是〈s2,1、并且在對(duì)應(yīng)于<82,1>的系統(tǒng)調(diào)用的時(shí)候經(jīng)過(guò)的 時(shí)間是10ms。以等于或大于20%的門限值的概率到達(dá)的最終期限狀態(tài)是 <s5,l>。到達(dá)狀態(tài)<85,1>的平均計(jì)算量(平均循環(huán)計(jì)數(shù))是100 K (千周)。 因此,對(duì)在最終期限的剩余時(shí)間10 (=20-10) ms內(nèi)完成100 K要求的操 作速度的計(jì)算給出10MHz或更高,如以下公式中所示。在可被CPU采用 的操作速度10、 20和40 MHz中滿足該條件的最低速度是10 MHz。因此, 選擇10 MHz,并且在對(duì)應(yīng)于<82,1>的系統(tǒng)調(diào)用后以10 MHz的速度處理應(yīng) 用程序。
s=<s2,1> t=10ms 100K/ (20-10) ms=10 f=10MHz
假定下一狀態(tài)是最終期限狀態(tài)<85,1>,并且在對(duì)應(yīng)于<85,1>的系統(tǒng)調(diào)用
的時(shí)候經(jīng)過(guò)的時(shí)間是20ms。接下來(lái)執(zhí)行路徑已在最終期限內(nèi)被完成。操作 速度被保持在最后選擇中所選的lOMHz。
s=<s5,1>
t=20ms completed f=10MHz
[對(duì)s0、 s3、 s3、 s4、 s2、 s5執(zhí)行路徑的速度控制
將示出當(dāng)周期性任務(wù)中執(zhí)行路徑是s0、 s3、 s3、 s4、 s2、 s5時(shí)速度控 制過(guò)程的示例性操作。盡管過(guò)程類似于前一種情況,應(yīng)當(dāng)注意狀態(tài)"s3" 的區(qū)別,根據(jù)它發(fā)生的數(shù)量狀態(tài),"s3"發(fā)生兩次。下面示出計(jì)算操作速 度和選擇的操作速度的過(guò)程。下面提供簡(jiǎn)短的補(bǔ)充描述。
在狀態(tài)<83,1>和<83,2>中,以等于或大于20。/。的門P艮值的概率到達(dá)的 最終期限狀態(tài)有兩個(gè),<84,1>和<85,1>。因而,對(duì)最終期限狀態(tài)的每一個(gè)計(jì) 算操作速度,并采用更高的操作速度。然后,從可被CPU采用的操作速度 10、 20和40MHz中選擇滿足所采用的操作速度的最低速度。例如,對(duì)于 狀態(tài)<83,1>,對(duì)〈s4,l〉計(jì)算出是40ms,對(duì)〈s5,l〉計(jì)算出是27ms,因而,采 用它們中較大的一個(gè),40ms。在可被CPU采用的操作速度10、20和40 MHz 中滿足該條件的最低速度是40MHz。相應(yīng)地,選擇40MHz。
s=<sO, 1> t=0ms
300K/ (20-0) ms=15
f=20MHz
s=<s3,1> t=5ms
200K/ (10-5) ms=40
400K/ (20-5) ms=27 f=40MHz
s=<s3, 2> t=7.5ms
100K7 (10-7.5) ms=40
300K/ (20-7.5) ms=24 f=40MHz
s=<s4,1> t=10ms
200K/ (20-10) ms=20 f=20MHz
s=<s2, 1> t=15ms
100K/ (20-15) ms=20 f=20MHz
s=<s5,1> t=20ms completed f=20MHz
此處,通過(guò)使用對(duì)能源估算的簡(jiǎn)單公式示出速度控制的效果。微處理 器(CPU)的能耗是功耗和運(yùn)算時(shí)間的乘積,并且以下例子假定功耗以操 作速度的大約二次冪增加。由于運(yùn)算時(shí)間是運(yùn)算循環(huán)計(jì)數(shù)除以操作速度, 在上述假定的基礎(chǔ)上,能耗是在的操作速度和運(yùn)算循環(huán)計(jì)數(shù)的乘積。這通 過(guò)以下示出的公式來(lái)表示,其中"Energy (能量)"表示能耗,"Power (功率)"表示功耗,"Time (時(shí)間),,表示運(yùn)算時(shí)間,"Freq"表示操 作速度,"Cycle (循環(huán))"表示運(yùn)算循環(huán)計(jì)數(shù),并且"A"是常量。在以
下描述中,"A" =1。
Energy = EPower * Time
=£ A * Freq 2 * Time
=SA * Freq2 * (Cycle/Freq)
=D A * Freq * Cycle
對(duì)于以上描述的兩個(gè)執(zhí)^f亍路徑(s0、 sl、 s2、 s5)和(sO、 s3、 s3、 s4、 s2、 s5),對(duì)固定速度(20和40MHz)和可變速度(本發(fā)明)計(jì)算能耗, 并且還確定在每種情況下到達(dá)最終期限狀態(tài)"s4"和"s5"的時(shí)間。下面 示出結(jié)果。然而,此處假定對(duì)狀態(tài)之間的所有轉(zhuǎn)換的預(yù)測(cè)循環(huán)計(jì)數(shù)是IOOK, 如圖7的狀態(tài)轉(zhuǎn)換圖中示出的。
[執(zhí)行路徑s0、 sl、 s2、 s5
固定速度20MHz
Energy=20 * 100+20 * 100+20 * 100=6000
到達(dá)"s5,,=300/20=15ms
固定速度40MHz Energy=40 * 100+40 * 100+40 * 100=12000 到達(dá)"s5,,=300/40=7.5ms
可變速度(本發(fā)明)
Energy=20 * 100+20 * 100+10 * 100=5000 到達(dá)"s5,,=20ms
[執(zhí)4亍路徑sO、 s3、 s3、 s4、 s2、 s5
固定速度20MHz
Energy=20 * 100+20 * 100+20 * 100+20 * 100+20 * 100=10000
到達(dá)"s4,,-300/20=15ms 到達(dá)"s5,,-500/20-25ms
固定速度40MHz Energy=40 * 100+40 * 100+40 * 100+40 * 100+40 * 100=20000 到達(dá)"s4,,=300/40=7.5ms 到達(dá)"s5"=500/40=12.5ms
可變速度(本發(fā)明)
Energy=20 * 100+40 * 100+40 * 100+20 * 100+20 * 100=14000 到達(dá)"s4,,=10ms 到達(dá)"s5,,=20ms
基于這些結(jié)果,在可以滿足兩個(gè)執(zhí)行路徑中的最終期限的固定速度 40MHz和本發(fā)明的可變速度之間比較能耗的預(yù)期值。如圖7中,當(dāng)?shù)谝粓?zhí) 行路徑(sO、 sl、 s2、 s5)以卯%的比率發(fā)生而第二執(zhí)行路徑(sO、 s3、 s3、 s4、 s2、 s5)以10%的比率發(fā)生(即,當(dāng)在<80,1>中到狀態(tài)<81,1>的轉(zhuǎn)換以 卯V。的概率發(fā)生而到〈s3,l〉的轉(zhuǎn)換以10%的概率發(fā)生),對(duì)本發(fā)明的可變 速度解決方案的能耗的預(yù)期值是固定速度解決方案的預(yù)期值的大約60%, j口通過(guò)以下/^式示出的
(5000 * 0.9+14000 * 0.1 ) / ( 12000 * 0.9+20000 * 0.1) =60%
如上所述,根據(jù)該實(shí)施例,通過(guò)使應(yīng)用程序的改變最小化并根據(jù)應(yīng)用 程序的特征適當(dāng)控制微處理器的操作速度,減少微處理器和包括微處理器 的嵌入式系統(tǒng)的能耗是可能的。
權(quán)利要求
1. 一種用于控制微處理器的操作速度的微處理器控制裝置,所述微處理器執(zhí)行包括指令代碼的程序,在所述指令代碼中對(duì)至少一個(gè)指令代碼指定最終期限,所述微處理器控制裝置包括:狀態(tài)觀察單元,其被配置為在先于執(zhí)行最終期限指令代碼的多個(gè)預(yù)定定時(shí)觀察所述程序的執(zhí)行狀態(tài),所述最終期限指令代碼是被指定了所述最終期限的指令代碼;數(shù)據(jù)存儲(chǔ)單元,其被配置為存儲(chǔ)在為多個(gè)預(yù)定義執(zhí)行狀態(tài)的每一個(gè)完成執(zhí)行所述最終期限指令代碼前要求的剩余計(jì)算量的預(yù)測(cè)數(shù)據(jù);預(yù)測(cè)計(jì)算量獲取單元,其被配置為從所述預(yù)測(cè)數(shù)據(jù)中獲取對(duì)應(yīng)于觀察的執(zhí)行狀態(tài)的剩余計(jì)算量作為剩余預(yù)測(cè)計(jì)算量;剩余時(shí)間計(jì)算單元,其被配置為計(jì)算直至所述最終期限指令代碼的所述最終期限的剩余時(shí)間;操作速度計(jì)算單元,其被配置為計(jì)算在所述剩余時(shí)間內(nèi)處理所述剩余預(yù)測(cè)計(jì)算量要求的所述微處理器的最小操作速度;以及控制單元,其被配置為控制所述微處理器以所述最小操作速度或更高的速度操作。
2. 根據(jù)權(quán)利要求l所述的裝置,其中,觀察所述執(zhí)行狀態(tài)的所述定時(shí) 是系統(tǒng)調(diào)用發(fā)生的時(shí)間。
3. 根據(jù)權(quán)利要求1所述的裝置,其中,要被觀察的所述執(zhí)行狀態(tài)是在 用子程序的字節(jié)組。
4. 根據(jù)權(quán)利要求3所述的裝置,其中,所述在用子程序的字節(jié)組是對(duì) 堆棧中存在的子程序的返回地址的字節(jié)組。
5. 根據(jù)權(quán)利要求1所述的裝置,其中,所述控制單元選擇操作速度, 所述操作速度是提前給定的多個(gè)不同操作速度中的最小速度或更高的速 度,并且控制所述微處理器以選擇的操作速度操作。
6. 根據(jù)權(quán)利要求5所述的裝置,其中,所述控制單元選擇等于或高于所述最小速度的最低操作速度。
7. 根據(jù)權(quán)利要求1所述的裝置,其中, 所述指令代碼包括兩個(gè)或多個(gè)最終期限指令代碼; 所述操作速度計(jì)算單元對(duì)所述最終期限指令代碼的每一個(gè)計(jì)算最小操作速度;以及所述控制單元控制所述微處理器以針對(duì)所述最終期限指令代碼計(jì)算出 的最小操作速度中最高的操作速度或更高的速度操作。
8. 根據(jù)權(quán)利要求7所述的裝置,其中, 所述指令代碼包括分支指令代碼;所述預(yù)測(cè)數(shù)據(jù)包含對(duì)所述預(yù)定義執(zhí)行狀態(tài)的每一個(gè)執(zhí)行所述最終期限 指令代碼的每一個(gè)的執(zhí)行概率;以及所述控制單元控制所述微處理器以針對(duì)具有等于或高于門P艮值的執(zhí)行 概率的最終期限指令代碼計(jì)算出的最小操作速度中的最高速度操作或以更 高的速度操作'
9. 根據(jù)權(quán)利要求1所述的裝置,進(jìn)一步包括第二狀態(tài)觀察單元,其被配置為在所述指令代碼被重復(fù)執(zhí)行的每次重 復(fù)的所述預(yù)定定時(shí)觀察所迷程序的所述執(zhí)行狀態(tài);計(jì)算量測(cè)量單元,其被配置為測(cè)量在觀察所述執(zhí)行狀態(tài)后直至執(zhí)行所 述最終期限指令代碼完成為止已被要求的計(jì)算量;以及預(yù)測(cè)數(shù)據(jù)生成器,其被配置為基于在所述預(yù)定定時(shí)多次測(cè)量的計(jì)算量, 發(fā)現(xiàn)在所述預(yù)定定時(shí)的每一個(gè)處觀察后直至所述最終期限指令代碼完成為 止將要求的預(yù)測(cè)的計(jì)算量,并且將針對(duì)所述預(yù)定定時(shí)的每一個(gè)發(fā)現(xiàn)的所述 預(yù)測(cè)的計(jì)算量映射到在所述預(yù)定定時(shí)的每一個(gè)處觀察的執(zhí)行狀態(tài),由此創(chuàng) 建所述預(yù)測(cè)數(shù)據(jù)。
10. 根據(jù)權(quán)利要求9所迷的裝置,其中,所述預(yù)測(cè)數(shù)據(jù)生成器將為所 述預(yù)定定時(shí)的每一個(gè)多次測(cè)量的所迷計(jì)算量進(jìn)行平均,以獲得對(duì)應(yīng)于在所 述預(yù)定定時(shí)的每一個(gè)處觀察的執(zhí)行狀態(tài)的所述預(yù)測(cè)的計(jì)算量。
11. 根據(jù)權(quán)利要求10所述的裝置,其中,所述指令代碼包括兩個(gè)或多個(gè)最終期限指令代碼; 所述指令代碼包括分支指令代碼;所述預(yù)測(cè)數(shù)據(jù)生成器基于在所述預(yù)定定時(shí)的每一個(gè)處觀察所述執(zhí)行狀 態(tài)后是否已執(zhí)行所述最終期限指令代碼的每一個(gè),為所述預(yù)定定時(shí)的每一 個(gè),計(jì)算所述最終期限指令代碼的每一個(gè)被執(zhí)行的執(zhí)行概率,并且將對(duì)所 述預(yù)定定時(shí)的每一個(gè)計(jì)算的所述最終期限指令代碼的所述執(zhí)行概率映射到 在所述預(yù)測(cè)數(shù)據(jù)中的所述預(yù)定定時(shí)的每一個(gè)處觀察的執(zhí)行狀態(tài);以及所述控制單元控制所述微處理器以對(duì)具有等于或高于門限值的所述執(zhí) 行概率的最終期限指令代碼計(jì)算出的最小操作速度中的最高速度或更高的 速度操作。
12. 根據(jù)權(quán)利要求1所述的裝置,進(jìn)一步包括完成率計(jì)算單元,其中, 所述指令代碼被重復(fù)執(zhí)行多次,完成率計(jì)算單元,其被配置為計(jì)算在所述最終期限內(nèi)完成執(zhí)行所述最 終期限指令代碼的完成率,以及所述完成率越低,所述控制單元控制所述微處理器以越高的操作速度 操作。
13. —種控制微處理器的操作速度的微處理器控制方法,所述微處理 器執(zhí)行包括指令代碼的程序,在所述指令代碼中對(duì)至少 一個(gè)指令代碼指定 最終期限,所述樣i處理器控制方法包括在先于執(zhí)行最終期限指令代碼的多個(gè)預(yù)定定時(shí)觀察所述程序的執(zhí)行狀 態(tài),所述最終期限指令代碼是被指定了所述最終期限的指令代碼;在存儲(chǔ)器中存儲(chǔ)在為多個(gè)預(yù)定義執(zhí)行狀態(tài)的每一個(gè)完成執(zhí)行所述最終 期限指令代碼前要求的剩余計(jì)算量的預(yù)測(cè)數(shù)據(jù);從所述存儲(chǔ)器中的所述預(yù)測(cè)數(shù)據(jù)中獲取對(duì)應(yīng)于觀察的執(zhí)行狀態(tài)的剩余 計(jì)算量作為剩余預(yù)測(cè)計(jì)算量;計(jì)算直至所述最終期限指令代碼的所述最終期限的剩余時(shí)間;計(jì)算在所述剩余時(shí)間內(nèi)處理所述剩余預(yù)測(cè)計(jì)算量要求的所述微處理器 的最小操作速度;以及控制所述微處理器以所述最小操作速度或更高的速度操作。
14. 一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)程序存儲(chǔ)介質(zhì),所述計(jì)算機(jī)程序用 于促使控制執(zhí)行包括指令代碼的程序的微處理器的操作速度的計(jì)算機(jī)執(zhí)行 指令以實(shí)施以下步驟,在所述指令代碼中為至少一個(gè)指令代碼指定最終期 限,所述步驟包括在先于執(zhí)行最終期限指令代碼的多個(gè)預(yù)定定時(shí)觀察所述程序的執(zhí)行狀 態(tài),所述最終期限指令代碼是被指定了所述最終期限的指令代碼;在存儲(chǔ)器中,訪問(wèn)在為多個(gè)預(yù)定義執(zhí)行狀態(tài)的每一個(gè)完成執(zhí)行所述最 終期限指令代碼前要求的剩余計(jì)算量的預(yù)測(cè)數(shù)據(jù);從所述存儲(chǔ)器中的所述預(yù)測(cè)數(shù)據(jù)中獲取對(duì)應(yīng)于觀察的執(zhí)行狀態(tài)的剩余 計(jì)算量作為剩余預(yù)測(cè)計(jì)算量;計(jì)算直至所述最終期限指令代碼的所述最終期限的剩余時(shí)間;計(jì)算在所述剩余時(shí)間內(nèi)處理所述剩余預(yù)測(cè)計(jì)算量要求的所述微處理器 的最小操作速度;以及控制所述微處理器以所述最小操作速度或更高的速度操作。
全文摘要
本發(fā)明涉及微處理器控制裝置以及用于該裝置的方法和程序。所述裝置控制微處理器的操作速度,該微處理器執(zhí)行包括指令代碼的程序,該裝置包括狀態(tài)觀察單元,其在執(zhí)行最終期限指令代碼前的多個(gè)預(yù)定定時(shí)觀察程序的執(zhí)行狀態(tài);在為預(yù)定義的執(zhí)行狀態(tài)的每一個(gè)完成執(zhí)行最終期限指令代碼前要求的剩余計(jì)算量的預(yù)測(cè)數(shù)據(jù);預(yù)測(cè)計(jì)算量獲取單元,其獲取對(duì)應(yīng)于觀察的執(zhí)行狀態(tài)的剩余計(jì)算量作為剩余預(yù)測(cè)計(jì)算量;剩余時(shí)間計(jì)算單元,其計(jì)算直至最終期限指令代碼的所述最終期限的剩余時(shí)間;操作速度計(jì)算單元,其計(jì)算在剩余時(shí)間內(nèi)處理剩余預(yù)測(cè)計(jì)算量要求的微處理器的最小操作速度;以及控制單元,其控制微處理器以所述最小操作速度或更高的速度操作。
文檔編號(hào)G06F9/22GK101387950SQ200810213579
公開日2009年3月18日 申請(qǐng)日期2008年9月16日 優(yōu)先權(quán)日2007年9月13日
發(fā)明者進(jìn)博正 申請(qǐng)人:株式會(huì)社東芝