JP4836903B2 - マイクロプロセッサ制御装置並びにその方法およびプログラム - Google Patents
マイクロプロセッサ制御装置並びにその方法およびプログラム Download PDFInfo
- Publication number
- JP4836903B2 JP4836903B2 JP2007237818A JP2007237818A JP4836903B2 JP 4836903 B2 JP4836903 B2 JP 4836903B2 JP 2007237818 A JP2007237818 A JP 2007237818A JP 2007237818 A JP2007237818 A JP 2007237818A JP 4836903 B2 JP4836903 B2 JP 4836903B2
- Authority
- JP
- Japan
- Prior art keywords
- deadline
- microprocessor
- state
- program
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Description
少なくとも1つの命令コードにデッドラインが指定された命令コード群を含むプログラムを実行するマイクロプロセッサの動作スピードを制御するマイクロプロセッサ制御装置であって、
前記デッドラインが指定された命令コードであるデッドライン命令コードの実行前に、あらかじめ指定された複数の各タイミングで前記プログラムの実行状態を観測する状態観測手段と、
あらかじめ定めた複数の前記実行状態の各々に対し前記デッドライン命令コードの実行完了までの残りの計算量を予測した計算量予測データを保持するデータ保持部と、
前記状態観測手段により観測された観測実行状態に基づき前記計算量予測データから残りの予測計算量を取得する予測計算量取得手段と、
前記デッドライン命令コードに指定された前記デッドラインまでの残り時間を計算する残り時間計算手段と、
前記残りの予測計算量を前記残り時間で処理するために必要な、前記マイクロプロセッサの最低動作スピードを計算する動作スピード計算手段と、
前記最低動作スピード以上で動作するように前記マイクロプロセッサを制御する制御手段と、
を備える。
少なくとも1つの命令コードにデッドラインが指定された命令コード群を含むプログラムを実行するマイクロプロセッサの動作スピードを制御するマイクロプロセッサ制御方法であって、
前記デッドラインが指定された命令コードであるデッドライン命令コードの実行前に、あらかじめ指定された複数の各タイミングで前記プログラムの実行状態を観測し、
あらかじめ定めた複数の前記実行状態の各々に対し前記デッドライン命令コードの実行完了までの残りの計算量を予測した計算量予測データを準備し、
観測された実行状態に基づき前記計算量予測データから残りの予測計算量を取得し、
前記デッドライン命令コードのデッドラインまでの残り時間を計算し、
前記残りの予測計算量を前記残り時間で処理するために必要な、前記マイクロプロセッサの最低動作スピードを計算し、
前記最低動作スピード以上で動作するように前記マイクロプロセッサを制御する、
ことを特徴とする。
少なくとも1つの命令コードにデッドラインが指定された命令コード群を含むプログラムを実行するマイクロプロセッサの動作スピードを制御するマイクロプロセッサ制御プログラムであって、
前記デッドラインが指定された命令コードであるデッドライン命令コードの実行前に、あらかじめ指定された複数の各タイミングで前記プログラムの実行状態を観測するステップと、
あらかじめ定めた複数の前記実行状態の各々に対し前記デッドライン命令コードの実行完了までの残りの計算量を予測した計算量予測データにアクセスするステップと、
観測された実行状態に基づき前記計算量予測データから残りの予測計算量を取得するステップと、
前記デッドライン命令コードのデッドラインまでの残り時間を計算するステップと、
前記残りの予測計算量を前記残り時間で処理するために必要な、前記マイクロプロセッサの最低動作スピードを計算するステップと、
を備える。
まず応用プログラム13を実行し、周期タスクの実行中にプログラム状態観測部21において応用プログラム13の状態を観測する。状態の観測はシステムコール"sys_ "が呼ばれた時点で行い、観測された状態は状態ラベルとして保存される。
応用プログラム13を実行し、周期タスクの実行中にプログラム状態観測部21において応用プログラムの状態を観測する。動作スピード制御部23は、観測した状態と、学習フェーズで得られた状態遷移テーブルとを用いて、状態遷移ごとに(システムコールが発生するごとに)、次の状態間の動作スピードを決定し、次の状態遷移まで、この動作スピードでマイクロプロセッサ(CPU)11を動作させる。このようにして周期タスク実行中のマイクロプロセッサ(CPU)11の動作スピードをシステムコールの発生タイミング(状態遷移のタイミング)で制御する。制御フェーズと学習フェーズとは逐次的に実行しても、並行に実行(たとえば運用中に計算量予測データを修正)してもよい。
プログラム状態観測部21は、周期タスクの実行中において、システムコールが呼ばれた時点で、応用プログラムの状態を観測する。システムコールが呼ばれた時点で観測を行うのは、観測箇所が過度に多いと(たとえばシステムコール以外のサブルーチンの呼び出し時点でも観測を行うと)、マイクロプロセッサの負荷が高くなるためである。したがって本発明は、システムコールの呼び出し時点と異なる時点で状態の観測を行うことを排除するものではない。
名称:app_stack
機能:スタック上の戻り番地の組を格納したリストを取得する。
定数:
スタック底 bot::Uint(定数)
オフセット off::Uint(定数)
入力:
OSコール識別子 sid::Uint
スタック配置メモリ mem::Map of Uint to Uint
出力:
スタック戻り番地列 seq::Seq of Uint
app_stack()
Uint bot = スタック底
Uint off = オフセット
Uint sid = OSコール識別子
Uint pos = フレームポインタ($fp)
Uint ret = リターンアドレス
pos ← $fp
ret ← sid
seq ← [ret] // 空リスト
while pos != bot do
pos ← mem[pos]
ret ← mem[pos + off]
seq ← seq + [ret]
od
return seq
M=(S,I,D,F,R,T)
ラベル集合: S (本例ではS={s0,s1,s2,s3,s4,s5})
開始ラベル集合: I ⊆ D (本例ではI={s0})
期限ラベル集合: D ⊆ S (本例ではD={s0,s4,s5})
終了ラベル集合: F ⊆ D (本例ではF={s5})
ラベル遷移関係: R ⊆ S × S (本例ではR={(s0,s1), (s1,s2), (s0,s3), (s3,s3), (s3,s4), (s4,s2), (s2,s5)}
デッドライン割当: T: D→Time (本例ではT={s0→0ms, s4→10ms, s5→20ms})
ラベル集合: S’ (本例ではS’={<s0,1>, <s1,1>, <s2,1>, <s3,1>, <s3,2>, <s4,1>, <s5,1>})
開始ラベル集合: I’⊆D’=D×{1} (本例ではI’={<s0,1>})
期限ラベル集合: D’ ⊆ S’ (本例ではD’={<s0,1>, <s4,1>, <s5,1>})
終了ラベル集合: F’ ⊆ D’ (本例ではF’={<s5,1>})
ラベル遷移関係: R’ ⊆ S’ × S’ (本例ではR’={(<s0,1>,<s1,1>), (<s1,1>,<s2,1>), (<s0,1>,<s3,1>), (<s3,1>,<s3,2>), (<s3,1>,<s4,1>), (<s3,2>,<s4,1>), (<s4,1>,<s2,1>), (<s2,1>,<s5,1>)}
デッドライン割当: T’: D’→Time (本例ではT’={<s0,1>→0ms, <s4,1>→10ms, <s5,1>→20ms) }
機能:M'計算用のラベル生成(発生カウントあり)
備考:Label = (Seq of Uint, Uint)
void label_start()
S::Set of State ← φ
f::Map of S to N ← φ
return
Label label_init()
for each s ∈ S do
f(s) ← 0
od
return label_call()
Label label_fini()
reurn label_call()
Label label_call()
s ← app_stack()
if not s ∈ S then
f(s) ← 0
S ← S ∪ {s}
fi
f(s) ← f(s) + 1
return <s,f(s)>
到達確率: Prob::Map of (S,D) to R
計算量(予測計算量): Cycl::Map of (S,D) to R
機能: 応用プログラムの状態遷移テーブル(Prob,Cycl)を生成する。
変数:
訪問頻度 FreqS::Map of S to N
訪問サイクル CyclS::Map of S to N
遷移頻度 FreqT::Map of (S,D) to N
遷移サイクル CyclT::Map of (S,D) to N
訪問フラグ Visit::Map of S to Bool
入力:
ラベル集合S、期限ラベル集合D
出力:
到達確率Prob、サイクル数Cycl
void mktab_start()
label_start()
for each s ∈ S do
FreqS(s) ← 0
for each d ∈ D do
FreqT(s,d) ← 0
CyclT(s,d) ← 0
od
od
void mktab_init()
for each s ∈ S do
Visit(s) ← false
CyclS(s) ← 0
od
s ← label_init()
Visit(s) ← true
CycleS(s) ← 実行サイクル数()
void mktab_call()
s ← label_call()
Visit(s) ← true
CycleS(s) ← 実行サイクル数()
void mktab_time()
mktab_call()
void mktab_fini()
for each s ∈ S do
for each d ∈ D do
if Visit(s) ∧ Visit(d) ∧ CycleS(s) < CycleS(d) then
FreqT(s,d) ← FreqT(s,d) + 1
CyclT(s,d) ← CyclT(s,d) + CycleS(d) - CycleS(s)
fi
od
od
void mktab_stop()
for each s ∈ S do
for each d ∈ D do
if FreqT(s,d) > 0 then
Cycl(s,d) ← CyclT(s,d) / FreqT(s,d)
else
Cycl(s,d) ← 0
fi
if FreqS(s) > 0 then
Prob(s,d) ← FreqT(s,d) / FreqS(s)
else
Prob(s,d) ← 0
fi
od
od
応用プログラム13における周期タスクを実行してプログラム状態観測部21に応用プログラム13の状態を観測させ、動作スピード制御部23が、観測した状態と、学習フェーズで生成された状態遷移テーブル(計算量予測データ)とを用いて、状態遷移ごとに(システムコールが発生するごとに)、次の状態間の動作スピードを決定する。このようにして周期タスクの実行中におけるマイクロプロセッサ(CPU)11の動作スピードを逐次制御する。
機能: 経過時間を計算する
変数: 開始時刻 t0:Uint
入力: なし
出力: 経過時間
void etime_start()
return
Uint etime_init()
t0 ← 現在時刻()
return 0
Uint etime_call()
return 現在時刻() - t0
Uint etime_fini()
return 現在時刻() - t0
void etime_stop()
return
機能:動作スピードを選択する
変数:
NumD::Map of D to N
FinD::Map of D to N
入力:
現在状態 s
現在時刻 t
定数:
到達確率 Prob::Map of (S,D) to [0,1]
サイクル数 Cycl::Map of (S,D) to R
スピード集合Freq::Map of N to N
出力:
動作スピードf
Const fmax = Freq(1)
Const fmin = Freq(N)
void speed_start()
for each d ∈ D do
NumD(d) ← 100
FinD(d) ← 100
od
void speed_init()
for each d ∈ D do
Time(d) ← T(d) * (FinD(d) / NumD(d))
od
Freq speed_call(Label s, Time t)
f0 ← 0
for each d ∈ D do
if Prob(s,d) > p0 then
f ← Cycl(s,d) / min(1, Time(d) - t)
if f > f0 then
f0 ← f
fi
fi
od
if f >= fmax then
return fmax
fi
for i = 1 to N do
if Freq(i) >= f0 then
return f
fi
od
void speed_time(Label s, Time t)
if s ∈ D then
NumD(s) ← NumD(s) + 1
if t <= T(s) then
FinD(s) ← FinD(s) + 1
fi
fi
void speed_fini()
return
機能:動作スピードを制御する
変数:
入力:
現在状態 s
現在時刻 t
到達確率 Prob
サイクル数 Cycl
出力:
処理スピード f:DOM(Freq)
void ctrl_start()
Prob ← 到達確率
Cycl ← サイクル数
label_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 ← label_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
f=10, 20, 40MHz
最初の状態は<s0,1>であり、現在時刻が0msのとき、閾値20%以上の確率で到達するデッドライン状態は<s5,1>である(<s4,1>は閾値未満の10%である)。そして状態<s5,1>への平均計算量(平均サイクル数)は300K(キロサイクル)である。したがって、300Kをデッドライン20ms以内に終えるのに必要な動作スピードを計算すると下記式に示すように15MHz以上となる。CPUが取り得る動作スピード10, 20, 40MHzの中で、この条件を満たす最低スピードは20MHzである。したがって20MHzを選択し、この20MHzにより、<s0,1>に対応するシステムコール後の応用プログラムを処理する。
s=<s0,1> //現在状態
t=0ms //現在時刻
300K/(20-0)ms =15MHz //必要スピード
f=20MHz //動作スピード
s=<s1,1>
t=5ms
200K/(20-5)ms =13
f=20MHz
s=<s2,1>
t=10ms
100K/(20-10)ms=10
f=10MHz
s=<s5,1>
t=20ms
完了
f=10MHz
周期タスク中の実行パスがs0,s3,s3,s4,s2,s5の時のスピード制御手順の動作例を示す。先の場合と同様だが、重複して現れる状態s3を出現回数に応じて区別する点に注意する。下記に、動作スピードの計算過程と、選択された動作スピードとを記す。簡単に補足説明を行うと以下の通りである。
s=<s0,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
100K/(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
完了
f=20MHz
Energy = Σ Power*Time
= Σ A*Freq2*Time
= Σ A*Freq2*(Cycle/Freq)
= Σ A*Freq*Cycle
固定スピード20MHz
Energy = 20*100+20*100+20*100 = 6000
s5到達 = 300/20 = 15ms
固定スピード40MHz
Energy = 40*100+40*100+40*100 = 12000
s5到達 = 300/40 = 7.5ms
可変スピード(本発明)
Energy = 20*100+20*100+10*100 = 5000
s5到達 = 20ms
固定スピード20MHz
Energy = 20*100+20*100+20*100+20*100+20*100 = 10000
s4到達 = 300/20 = 15ms
s5到達 = 500/20 = 25ms
固定スピード40MHz
Energy = 40*100+40*100+40*100+40*100+40*100 = 20000
s4到達 = 300/40 = 7.5ms
s5到達 = 500/40 = 12.5ms
可変スピード(本発明)
Energy = 20*100+40*100+40*100+20*100+20*100 =14000
s4到達 = 10ms
s5到達 = 20ms
(5000*0.9+14000*0.1)/(12000*0.9+20000*0.1)=60%
12:オペレーティングシステム(OS)
13:応用プログラム
14:適応型スピード制御装置
21:プログラム状態観測部
22:計算量予測データ生成部
23:動作スピード制御部
24:計算量予測データ
Claims (10)
- 少なくとも1つの命令コードにプログラムの開始点からのデッドライン(完了期限)が指定された命令コード群を含むプログラムを実行するマイクロプロセッサの動作スピードを制御するマイクロプロセッサ制御装置であって、
前記動作スピードの制御に先だって、
前記プログラムを実行し、
計算量予測データ生成部が、
あらかじめ指定された複数の各タイミングで、前記プログラムがその時点でどのサブルーチン呼び出しを行っているかを観測する状態観測手段を用い、
状態遷移グラフを生成し、
前記状態観測手段によって観測した、サブルーチン呼び出しの各々に対し、状態遷移グラフの各状態から次のデッドラインに至るまでの計算量予測データを生成し、
前記計算量予測データを前記サブルーチン呼び出しの各々に対応させてデータ保持部に保持させ、
前記マイクロプロセッサの動作スピードの制御を伴って前記プログラムを実行する際に、
前記あらかじめ指定された複数の各タイミングで、
前記状態観測手段によりどのサブルーチン呼び出しを行っているかを観測し、
前記データ保持部に保持された該サブルーチン呼び出しに対応した前記計算量予測データから、残りの予測計算量を取得する予測計算量取得手段を起動し、
次のデッドラインに至るまでの残り時間を、その時点までの経過時間と該デッドラインに指定されている時間との差から計算する残り時間計算手段を起動し、
前記残りの予測計算量を前記残り時間で処理するために必要な、前記マイクロプロセッサの最低動作スピードを計算する動作スピード計算手段を起動し、
前記最低動作スピード以上で動作するように前記マイクロプロセッサを制御する制御手段を起動する
ことを特徴とするマイクロプロセッサ制御装置。 - 前記あらかじめ指定された複数の各タイミングは、システムコールの発生タイミングであることを特徴とする請求項1に記載のマイクロプロセッサ制御装置。
- 前記各状態は、スタック上に存在する、サブルーチンの戻り番地の組により表されることを特徴とする請求項1に記載のマイクロプロセッサ制御装置。
- 前記制御手段は、あらかじめ与えられた相異なる複数の動作スピードの中から前記最低スピード以上の動作スピードを選択し、選択した動作スピードで動作するように前記マイクロプロセッサを制御することを特徴とする請求項1に記載のマイクロプロセッサ制御装置。
- 前記制御手段は、前記最低スピード以上の動作スピードのうち最も低い動作スピードを選択することを特徴とする請求項4に記載のマイクロプロセッサ制御装置。
- 前記命令コード群は分岐命令コードを含み、
前記計算量予測データ生成部が、前記各状態の各々に対し、前記デッドラインが指定された命令コードが実行される実行確率を計算し、計算した実行確率をデータ保持部に保持させ、
前記制御手段は、閾値以上の実行確率をもつ、前記デッドラインが指定された命令コードから計算された最低動作スピードのうち最も大きい動作スピード以上で動作するように前記マイクロプロセッサを制御することを特徴とする請求項5に記載のマイクロプロセッサ制御装置。 - 前記計算量予測データ作成部は、各前記タイミングに応じてそれぞれ複数回計測した計算量を平均することにより前記計算量予測データを得ることを特徴とする請求項6に記載のマイクロプロセッサ制御装置。
- 前記動作スピードの制御に先だって、前記プログラムを実行し、
完了確率計算手段を用いて、前記デッドラインが指定された命令コードの実行が前記デッドライン内に完了した完了確率を計算し、前記完了確率を前記データ保持手段に保持させ、
前記制御手段は、前記完了確率が低いほど、高い動作スピードで動作するように前記マイクロプロセッサを制御することを特徴とする請求項1に記載のマイクロプロセッサ制御装置。 - 少なくとも1つの命令コードにプログラムの開始点からのデッドライン(完了期限)が指定された命令コード群を含むプログラムを実行するマイクロプロセッサの動作スピードを制御するマイクロプロセッサ制御方法であって、
前記動作スピードの制御に先だって、
前記プログラムを実行し、
あらかじめ指定された複数の各タイミングで、前記プログラムがその時点でどのサブルーチン呼び出しを行っているかを観測して状態遷移グラフを生成し、
前記観測した、サブルーチン呼び出しの各々に対し、状態遷移グラフの各状態から次のデッドラインに至るまでの計算量予測データを生成し、
前記計算量予測データを前記サブルーチン呼び出しの各々に対応させてデータ保持部に保持させ、
前記マイクロプロセッサの動作スピードの制御を伴って前記プログラムを実行する際に、
前記あらかじめ指定された複数の各タイミングで、
どのサブルーチン呼び出しを行っているかを観測し、
前記データ保持部に保持された該サブルーチン呼び出しに対応した前記計算量予測データから、残りの予測計算量を取得し、
次のデッドラインに至るまでの残り時間を、その時点までの経過時間と該デッドラインに指定されている時間との差から計算し、
前記残りの予測計算量を前記残り時間で処理するために必要な、前記マイクロプロセッサの最低動作スピードを計算し、
前記最低動作スピード以上で動作するように前記マイクロプロセッサを制御する
ことを特徴とするマイクロプロセッサ制御方法。 - 少なくとも1つの命令コードにプログラムの開始点からのデッドライン(完了期限)が指定された命令コード群を含むプログラムを実行するマイクロプロセッサの動作スピードを制御するマイクロプロセッサ制御プログラムであって、
前記動作スピードの制御に先だって、
前記プログラムを実行し、
あらかじめ指定された複数の各タイミングで、前記プログラムがその時点でどのサブルーチン呼び出しを行っているかを観測して状態遷移グラフを生成するステップと、
前記観測した、サブルーチン呼び出しの各々に対し、状態遷移グラフの各状態から次のデッドラインに至るまでの計算量予測データを生成するステップと、
前記計算量予測データを前記サブルーチン呼び出しの各々に対応させてデータ保持部に保持させるステップと、
前記マイクロプロセッサの動作スピードの制御を伴って前記プログラムを実行する際に、
前記あらかじめ指定された複数の各タイミングで、
どのサブルーチン呼び出しを行っているかを観測するステップと、
前記データ保持部に保持された該サブルーチン呼び出しに対応した前記計算量予測データから、残りの予測計算量を取得するステップと、
次のデッドラインに至るまでの残り時間を、その時点までの経過時間と該デッドラインに指定されている時間との差から計算するステップと、
前記残りの予測計算量を前記残り時間で処理するために必要な、前記マイクロプロセッサの最低動作スピードを計算するステップと、
前記最低動作スピード以上で動作するように前記マイクロプロセッサを制御するステップと
をコンピュータに実行させるためのマイクロプロセッサ制御プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007237818A JP4836903B2 (ja) | 2007-09-13 | 2007-09-13 | マイクロプロセッサ制御装置並びにその方法およびプログラム |
US12/206,108 US8103857B2 (en) | 2007-09-13 | 2008-09-08 | Microprocessor control apparatus as well as method and program for the same |
CNA2008102135794A CN101387950A (zh) | 2007-09-13 | 2008-09-16 | 微处理器控制装置以及用于该装置的方法和程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007237818A JP4836903B2 (ja) | 2007-09-13 | 2007-09-13 | マイクロプロセッサ制御装置並びにその方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009070137A JP2009070137A (ja) | 2009-04-02 |
JP4836903B2 true JP4836903B2 (ja) | 2011-12-14 |
Family
ID=40455839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007237818A Expired - Fee Related JP4836903B2 (ja) | 2007-09-13 | 2007-09-13 | マイクロプロセッサ制御装置並びにその方法およびプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US8103857B2 (ja) |
JP (1) | JP4836903B2 (ja) |
CN (1) | CN101387950A (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090089555A1 (en) * | 2007-09-28 | 2009-04-02 | James Adam Cataldo | Methods and apparatus for executing or converting real-time instructions |
US8918657B2 (en) | 2008-09-08 | 2014-12-23 | Virginia Tech Intellectual Properties | Systems, devices, and/or methods for managing energy usage |
FR2943806A1 (fr) * | 2009-03-31 | 2010-10-01 | Inst Nat Rech Inf Automat | Dispositif de commande d'alimentation d'un calculateur |
CN101893927B (zh) * | 2009-05-22 | 2012-12-19 | 中兴通讯股份有限公司 | 手持设备功耗管理方法 |
JP2010277350A (ja) * | 2009-05-28 | 2010-12-09 | Toshiba Corp | 電子機器 |
CN110134441B (zh) * | 2019-05-23 | 2020-11-10 | 苏州浪潮智能科技有限公司 | Risc-v分支预测方法、装置、电子设备及存储介质 |
CN117348557B (zh) * | 2023-10-30 | 2024-03-26 | 山东鲁抗机电工程有限公司 | 一种自动化控制系统及控制方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5450575A (en) * | 1991-03-07 | 1995-09-12 | Digital Equipment Corporation | Use of stack depth to identify machine code mistakes |
IL132916A (en) * | 1999-11-14 | 2004-02-08 | Mcafee Inc | Method and system for intercepting an application program interface |
US6687838B2 (en) * | 2000-12-07 | 2004-02-03 | Intel Corporation | Low-power processor hint, such as from a PAUSE instruction |
JP2003006046A (ja) | 2001-06-25 | 2003-01-10 | Sanyo Electric Co Ltd | メモリプロテクション方法および回路 |
US7185215B2 (en) * | 2003-02-24 | 2007-02-27 | International Business Machines Corporation | Machine code builder derived power consumption reduction |
JP2006521618A (ja) * | 2003-03-27 | 2006-09-21 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 分岐によるアクティビティモニタ |
US7444501B2 (en) * | 2006-11-28 | 2008-10-28 | Qualcomm Incorporated | Methods and apparatus for recognizing a subroutine call |
-
2007
- 2007-09-13 JP JP2007237818A patent/JP4836903B2/ja not_active Expired - Fee Related
-
2008
- 2008-09-08 US US12/206,108 patent/US8103857B2/en not_active Expired - Fee Related
- 2008-09-16 CN CNA2008102135794A patent/CN101387950A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN101387950A (zh) | 2009-03-18 |
US8103857B2 (en) | 2012-01-24 |
US20090077358A1 (en) | 2009-03-19 |
JP2009070137A (ja) | 2009-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4836903B2 (ja) | マイクロプロセッサ制御装置並びにその方法およびプログラム | |
JP4383853B2 (ja) | 時間アロケータを有するグラフィックレンダリングエンジンを用いる装置、方法及びシステム | |
EP2473914B1 (en) | Hardware-based scheduling of graphics processor unit (gpu) work | |
JP5067425B2 (ja) | 翻訳装置と翻訳方法および翻訳プログラムとプロセッサコアの制御方法およびプロセッサ | |
CN110502294B (zh) | 数据处理的方法、装置及电子设备 | |
US8255911B2 (en) | System and method for selecting and assigning a basic module with a minimum transfer cost to thread | |
EP1763748A1 (en) | Signal processing apparatus | |
JPWO2005106623A1 (ja) | Cpuクロック制御装置、cpuクロック制御方法、cpuクロック制御プログラム、記録媒体、及び伝送媒体 | |
JP2004536395A (ja) | グラフィックコンテキストマネージャを有するグラフィックレンダリングエンジンを用いる装置、方法及びシステム | |
JP2006515690A (ja) | 複数のプロセッサを有するデータ処理システムと、複数のプロセッサを有するデータ処理システムのためのタスクスケジューラと、タスクスケジューリングの対応する方法 | |
JP5458998B2 (ja) | 仮想マシンシステムおよび仮想マシン管理方法 | |
JP2013511784A (ja) | 並列プログラム制御 | |
US20070157207A1 (en) | Hardwired scheduler for low power wireless device processor and method for using the same | |
JP6345353B2 (ja) | 描画制御装置 | |
JPWO2011148920A1 (ja) | マルチプロセッサシステム、実行制御方法、実行制御プログラム | |
US20160249354A1 (en) | Scheduling function calls | |
JP2009151645A (ja) | 並列処理装置及びプログラム並列化装置 | |
JP5970461B2 (ja) | 仮想計算機制御装置、仮想計算機制御方法、仮想計算機制御プログラム、及び集積回路 | |
JP2012181578A (ja) | 更新制御装置及びプログラム | |
JP5725040B2 (ja) | マルチコアプロセッサシステム、およびスケジューリング方法 | |
JP5076616B2 (ja) | プロセッサ及びプリフェッチ制御方法 | |
JP2000298593A (ja) | マルチタスクシステムの性能予測システム及び予測方法並びにその方法プログラムを記録した記録媒体 | |
CN116795503A (zh) | 任务调度方法、任务调度装置、图形处理器及电子设备 | |
JP6368452B2 (ja) | 非同期のデバイスによって実行されるタスクのスケジューリングの向上 | |
CN109983435B (zh) | 图形处理方法及相关装置和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100604 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110530 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110603 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110802 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110902 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110927 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20141007 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20141007 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |