JP4836903B2 - マイクロプロセッサ制御装置並びにその方法およびプログラム - Google Patents

マイクロプロセッサ制御装置並びにその方法およびプログラム Download PDF

Info

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
Application number
JP2007237818A
Other languages
English (en)
Other versions
JP2009070137A (ja
Inventor
博 正 進
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2007237818A priority Critical patent/JP4836903B2/ja
Priority to US12/206,108 priority patent/US8103857B2/en
Priority to CNA2008102135794A priority patent/CN101387950A/zh
Publication of JP2009070137A publication Critical patent/JP2009070137A/ja
Application granted granted Critical
Publication of JP4836903B2 publication Critical patent/JP4836903B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5044Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

本発明は、マイクロプロセッサの動作スピードを制御するマイクロプロセッサ制御装置、マイクロプロセッサ制御方法およびマイクロプロセッサ制御プログラムに関する。
組み込みシステムの開発時は、サービス品質の保証とエネルギー消費の低減との両立が求められる。エネルギー消費の大きな割合を占めるマイクロプロセッサの消費電力(単位時間あたりのエネルギー消費量)は動作スピードの約3乗で増加する(例:Power=alpha*Capacitance*Voltage*Voltage*Frequency、Voltage∝Frequency。∝は比例を意味し、alphaは定数を表す。)。サービス品質は処理のデッドライン(時間的な締め切り)と解釈できる。タスク(一定の処理単位)の実行時間は処理スピードに反比例し、タスク処理のエネルギー消費を最小化するにはデッドライン内の最低スピードでマイクロプロセッサを運転するのが原理的に最適である。近年、実行時に動作スピードを変えられるプロセッサが実用化しており、この原理に基づくエネルギー消費の低減が可能となりつつある。
しかしながら、一般的なプログラムを処理する際にプロセッサの動作スピードを適切に調整するのは困難である。たとえば、プロセッサの動作スピードの変更には一定サイクル(例:数100サイクル)を要するので、比較的大きな処理単位をタスクとする必要がある。一般に大きな処理単位は繰り返しや分岐を含み計算量の予測が困難である。また、プログラムのデッドラインはタスク毎に与えられる訳でなく、プログラム上の実行文への到達時間(の組)で与えられる。公知のスピード制御技術は、マニュアルタスク分割(長所:細粒度でスピード調整、短所:手動でタスク分割)とフォードバック制御(長所:タスク分割が不要、短所:粗粒度のスピード調整)に大別できる。
特開2005−85164号公報
本発明は、応用プログラムの変更を最小限に抑えつつ、応用プログラムの特性に応じてプロセッサの動作スピードを適切に制御することで低消費電力化を可能としたマイクロプロセッサ制御装置、マイクロプロセッサ制御方法およびマイクロプロセッサ制御プログラムを提供する。
本発明の一態様としてのマイクロプロセッサ制御装置は、
少なくとも1つの命令コードにデッドラインが指定された命令コード群を含むプログラムを実行するマイクロプロセッサの動作スピードを制御するマイクロプロセッサ制御装置であって、
前記デッドラインが指定された命令コードであるデッドライン命令コードの実行前に、あらかじめ指定された複数の各タイミングで前記プログラムの実行状態を観測する状態観測手段と、
あらかじめ定めた複数の前記実行状態の各々に対し前記デッドライン命令コードの実行完了までの残りの計算量を予測した計算量予測データを保持するデータ保持部と、
前記状態観測手段により観測された観測実行状態に基づき前記計算量予測データから残りの予測計算量を取得する予測計算量取得手段と、
前記デッドライン命令コードに指定された前記デッドラインまでの残り時間を計算する残り時間計算手段と、
前記残りの予測計算量を前記残り時間で処理するために必要な、前記マイクロプロセッサの最低動作スピードを計算する動作スピード計算手段と、
前記最低動作スピード以上で動作するように前記マイクロプロセッサを制御する制御手段と、
を備える。
本発明の一態様としてのマイクロプロセッサ制御方法は、
少なくとも1つの命令コードにデッドラインが指定された命令コード群を含むプログラムを実行するマイクロプロセッサの動作スピードを制御するマイクロプロセッサ制御方法であって、
前記デッドラインが指定された命令コードであるデッドライン命令コードの実行前に、あらかじめ指定された複数の各タイミングで前記プログラムの実行状態を観測し、
あらかじめ定めた複数の前記実行状態の各々に対し前記デッドライン命令コードの実行完了までの残りの計算量を予測した計算量予測データを準備し、
観測された実行状態に基づき前記計算量予測データから残りの予測計算量を取得し、
前記デッドライン命令コードのデッドラインまでの残り時間を計算し、
前記残りの予測計算量を前記残り時間で処理するために必要な、前記マイクロプロセッサの最低動作スピードを計算し、
前記最低動作スピード以上で動作するように前記マイクロプロセッサを制御する、
ことを特徴とする。
本発明の一態様としてのマイクロプロセッサ制御プログラムは、
少なくとも1つの命令コードにデッドラインが指定された命令コード群を含むプログラムを実行するマイクロプロセッサの動作スピードを制御するマイクロプロセッサ制御プログラムであって、
前記デッドラインが指定された命令コードであるデッドライン命令コードの実行前に、あらかじめ指定された複数の各タイミングで前記プログラムの実行状態を観測するステップと、
あらかじめ定めた複数の前記実行状態の各々に対し前記デッドライン命令コードの実行完了までの残りの計算量を予測した計算量予測データにアクセスするステップと、
観測された実行状態に基づき前記計算量予測データから残りの予測計算量を取得するステップと、
前記デッドライン命令コードのデッドラインまでの残り時間を計算するステップと、
前記残りの予測計算量を前記残り時間で処理するために必要な、前記マイクロプロセッサの最低動作スピードを計算するステップと、
を備える。
本発明により、応用プログラムの変更を最小限に抑えつつ、応用プログラムの特性に応じてプロセッサの動作スピードを適切に制御することで低消費電力化を実現できる。
図1は、本発明に係る、オペレーティングシステムを搭載するソフトリアルタイムの組み込みシステムを示す。
この組み込みシステムは、マイクロプロセッサ(CPU)11と、マイクロプロセッサ11により実行されるオペレーティングシステム(Operating System: OS)12と、オペレーティングシステム12上で動作する応用プログラム13と、応用プログラム13を実行する際のマイクロプロセッサ11の動作スピードを調整する適応型スピード制御装置14とを備える。マイクロプロセッサ11はたとえばDVFS(Dynamic Voltage Frequency Scaling)対応である。適応型スピード制御装置14の機能はたとえばオペレーティングシステム12の一部として組み込まれても良い。
図3は、応用プログラム13の例を示す。
この応用プログラム13は、複数の命令コードから構成され、複数のサブルーチンを含んでいる。接頭語"app_"で始まるサブルーチンは応用プログラムに属し、接頭語"sys_"で始まるサブルーチンはOSのシステムコールに属する。システムコール"sys_"は、応用プログラム13がオペレーティングシステムに処理を依頼する際に利用するサブルーチンである。
この応用プログラムは、サブルーチン"app_main"のメインループ先頭でデータ受信待ち"sys_recv"となり、データの受信直後から次の受信待ちまでの区間("sys_init"から"sys_fini")が、周期的に実行される部分(周期タスク)となる。"sys_init"および"sys_fini"は周期タスクの区間開始および区間終了を定義するシステムコールである。なお"while(1) "は、"while(1) "以下の"{"と"}"で囲まれた命令群を繰り返すことを指示する命令コードである。
周期タスク内では条件分岐に応じてサブルーチン"app_sub1"またはサブルーチン"app_sub2"が実行された後、サブルーチン"app_sub3"が実行される。サブルーチン"app_sub1"と"app_sub2"は、データ送信"sys_send"を実行し、サブルーチン"app_sub3"はファイル書き込み"sys_write"を実行する。
システムコール"sys_"は、動作スピード制御に関係するシステムコール群と、関係しないシステムコール群とに分類される。後者のシステムコール群は、標準的なファイルの読み書き処理やネットワーク経由の通信処理などを行う命令("sys_recv", "sys_send", "sys_write")を含む。前者のシステムコール群は、周期タスクの開始を示す"sys_init"、周期タスクの終了を示す"sys_fini"および周期タスク中のデッドライン(完了期限)指定を行う"sys_time"を含む。
"void app_sub2"内の"sys_time(10ms)"は、周期タスクの開始"sys_init"から"sys_time(10ms)"の直前の命令コードの実行完了までに10msで到達しなければならないことを示す。つまり"sys_time(10ms)"は直前の命令コード(デッドライン命令コード)の実行完了のデッドラインを指定する。また"sys_fini(20ms) "は、周期タスクの開始から20ms以内に周期タスクを終了(" app_sub3"を実行完了)しなければならないことを示す。つまり"sys_fini(20ms) "は周期タスクにおける最後の命令コード"app_sub3"のデッドラインを指定する。ただし、周期タスクの開始"sys_init"を0msとしている。
このように本実施形態における応用プログラム13は、繰り返し実行される周期タスクを含む。応用プログラム13の制御フローの骨格、特に周期タスクの制御フローの骨格を図4に示す。
応用プログラム13には開始(START)から終了(STOP)までの間、繰り返し実行される周期タスクが存在する。図中、破線で囲まれた部分が周期タスクに相当し、"sys_init"と"sys_fini(20ms) "とで囲まれている。周期タスクには、その開始(INIT)と終了(FINI)が存在し、開始(INIT)と終了(FINI)との間で、デッドライン位置の通過(TIME)およびシステムコールの呼出(CALL)が繰り返される。たとえば動画再生などの応用プログラムは、プログラムの開始と終了が存在し、動画の1フレームを計算する周期タスクが存在し、周期タスク内には各種のシステムコールおよびデッドラインが存在する。図中、INITは"sys_init"に対応し、FINIは"sys_fini(20ms) "に対応し、TIMEは"sys_time(10ms) "に対応し、CALLはたとえば"sys_send", "sys_write"に相当する。
図2は、図1の適応型スピード制御装置14の詳細構成を示す。
プログラム状態観測部21は、周期タスク実行時における応用プログラムの状態をOSコール(システムコール)のタイミングで観測し、観測した状態を表す状態ラベルを、計算量予測データ生成部22または動作スピード制御部23に出力する。プログラム状態観測部21はたとえば状態観測手段および第2の状態観測手段に相当する。
計算量予測データ生成部22は、周期タスクの観測から得られる各状態から、デッドライン状態(各状態のうちデッドラインを指定した状態)に至るまでの、すなわち、デッドラインが指定された命令コード(デッドライン命令コード)が実行完了するまでの予測計算量(予測サイクル数)等を表した計算量予測データ24を生成する。計算量予測データ24は状態遷移テーブルとも称される。生成された計算量予測データ24は、たとえばデータ保持手段に保持される。
動作スピード制御部23は、計算量予測データ24から、現在のプログラム状態に基づき、デッドラインが指定された命令コード(デッドライン命令コード)の実行完了までに必要な残りの計算量を取得し、取得した計算量と、デッドラインまでの残り時間とに基づき、次のプログラム状態に遷移するまで適用するマイクロプロセッサの動作スピードを決定する。たとえば動作スピード制御手段23は、取得した計算量を上記残り時間で処理するために必要な最低スピードをマイクロプロセッサの動作スピードとして決定する。あるいは動作スピード制御部23は、あらかじめ指定された複数の動作スピードのうち、上記最低スピード以上で、かつ最も小さい値の動作スピードを選択する。
また動作スピード制御部23は、システムの負荷増加などが原因で応用プログラム13がデッドライン内に完了しない場合を想定し、デッドラインの完了確率(デッドラインが実際に満たされた割合)に応じて動作スピードを調整することも行う。たとえば完了確率が低いほど、動作スピードを、上記のようにして決定または選択された動作スピードよりも高くする。動作スピード制御部23は、たとえば残り時間計算手段、動作スピード計算手段、制御手段および完了確率計算手段を含む。
以降、適応型制御装置14の動作についてさらに詳細に説明する。
ただし、以降の説明では、種々の命令コードを利用して、プログラム状態観測部21、計算量予測データ生成部22および動作スピード制御部23の各処理手順が記述されることがある。その際、応用プログラムにおけるプログラム開始(START)時のタイミングで行う処理は接尾語"_start"、プログラム終了(STOP)時のタイミングで行う処理は接尾語"_stop"、周期タスク開始(INIT)時のタイミングで行う処理は接尾語"_init"、周期タスク終了(FINI)時のタイミングで行う処理は接尾語"_fini"、また、システムコール時(CALL)時のタイミングで行う処理は接尾語"_call"を付ける規約とする。システムコールをデッドライン通知と区別する場合は接尾語"..._time"を付ける。
図2の適応型スピード制御装置14により行われる処理は、大きく学習フェーズと制御フェーズとを含む。学習フェーズでは周期タスクの実行中に応用プログラムの状態を観測して状態遷移テーブル(計算量予測データ)を生成する。制御フェーズでは観測した応用プログラムの状態と状態遷移テーブルとを用いてデッドライン指定位置(sys_time,sys_fini)へ至るまでの計算量、すなわちデッドライン命令コードを実行完了するまでの計算量を予測し、予測した計算量とデッドラインまでの残り時間とに基づきマイクロプロセッサの動作スピードを制御する。
以下、学習フェーズおよび制御フェーズの各概要を説明した後、それぞれの詳細を説明する。
<学習フェーズの概要>
まず応用プログラム13を実行し、周期タスクの実行中にプログラム状態観測部21において応用プログラム13の状態を観測する。状態の観測はシステムコール"sys_ "が呼ばれた時点で行い、観測された状態は状態ラベルとして保存される。
計算量予測データ生成部22は、プログラム状態観測部21により取得された状態ラベルをもとに、周期タスクにおける状態の遷移を表した状態遷移グラフ(後述する図5および図6参照)を生成する。そして計算量予測データ生成部22は、状態遷移グラフの各状態からデッドライン状態へ至るまでのマイクロプロセッサの平均計算量(予測計算量)と、各デッドライン状態へ至る確率とを表した状態遷移テーブル(計算量予測データ)を生成する。
<制御フェーズの概要>
応用プログラム13を実行し、周期タスクの実行中にプログラム状態観測部21において応用プログラムの状態を観測する。動作スピード制御部23は、観測した状態と、学習フェーズで得られた状態遷移テーブルとを用いて、状態遷移ごとに(システムコールが発生するごとに)、次の状態間の動作スピードを決定し、次の状態遷移まで、この動作スピードでマイクロプロセッサ(CPU)11を動作させる。このようにして周期タスク実行中のマイクロプロセッサ(CPU)11の動作スピードをシステムコールの発生タイミング(状態遷移のタイミング)で制御する。制御フェーズと学習フェーズとは逐次的に実行しても、並行に実行(たとえば運用中に計算量予測データを修正)してもよい。
<学習フェーズの詳細>
プログラム状態観測部21は、周期タスクの実行中において、システムコールが呼ばれた時点で、応用プログラムの状態を観測する。システムコールが呼ばれた時点で観測を行うのは、観測箇所が過度に多いと(たとえばシステムコール以外のサブルーチンの呼び出し時点でも観測を行うと)、マイクロプロセッサの負荷が高くなるためである。したがって本発明は、システムコールの呼び出し時点と異なる時点で状態の観測を行うことを排除するものではない。
本実施形態では、観測される状態は、観測時点(システムコールが呼ばれた直後)における、実行中のサブルーチン(システムコールおよびアプリケーションサブルーチンの両方を含む)の組に相当する。1つの組ごとに1つのラベルが付与される。たとえば"app_main", "sys_init"の順でサブルーチンが実行され、"sys_init"が呼ばれた時点で、状態の観測を行うと、"app_main", "sys_init"の組を表す状態ラベルが取得される。
図8は、図3の応用プログラムの状態を観測することで得られた表(状態ラベルの事例)を示す。
この表では、合計6種類の状態ラベルs0,s1,s2,s3,s4,s5が示される。すなわち、システムコールが呼ばれた時点で観測される状態は、6種類の状態s0,s1,s2,s3,s4,s5のいずれかに属する。テーブル内のスタック(stack)のフィールドは、各状態に属するサブルーチンの組であり、図中左側のものほど、時間的に先に呼び出されている。図中一番右側のもの(システムコール)が呼び出された時点で、状態の観測が行われている。
テーブル中のdeadlineフィールドは、表における一番右のシステムコールがデッドラインを指定していれば○を、指定していなければ×を格納する。周期タスクの開始を示す"sys_init"はたとえば処理の簡単のため、デッドラインを指定しているとして扱う。
1つの状態に対応するサブルーチンの組は、具体的には、応用プログラムのコールスタックに積まれたサブルーチンの戻り番地のリストとして取得することができる。プログラムのコールスタックは未完了のサブルーチンのデータを格納する。一個のサブルーチンと対応するデータはフレームと呼ばれ、サブルーチンのローカル変数、リターン番地および前のフレーム先頭番地などから成る。フレーム上の値はフレーム先頭番地から一定のオフセットの番地に格納される。フレーム上のオフセット値およびレジスタ名は実行環境に応じて異なるが、本質的な手順はここに示すものと相違がない。
本実施形態ではフレームポインタ($fp)と呼ぶレジスタの値が最上位(現在)のフレーム先頭番地(pos)を示し、フレーム先頭番地の内容(mem[pos])は前のフレーム先頭番地を示すものとした。フレーム先頭番地からオフセット値(off)離れたところにある内容(ret=mem[pos+off])がサブルーチンの戻り番地となる。フレーム先頭番地(pos)がスタック底(bot)と一致するまでコールスタックを遡りながら戻り番地(ret)の組を記録することで上記リストが得られる。なお、以下の擬似プログラム中の"bot::Unit"の記述は「変数"bot"の型は符号無し整数"Uint"」の意味とする。
以下に、スタック上の戻り番地の組を格納したリストを取得する処理手続の一例を示す。

名称: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
計算量予測データ生成部22は、プログラム状態観測部21から状態ラベル(リスト)を逐次取得し、逐次取得した状態ラベルを用いて、応用プログラムにおける状態の遷移を表した状態遷移グラフを生成する。状態遷移グラフは応用プログラムの動作に関する特徴を抽象化したものと言える。
図5は、図3の応用プログラムから生成された状態遷移グラフの一例を示す。
状態遷移グラフは有向グラフ(directed graph)の一種である。状態遷移グラフはシステムコールのタイミングで観測した応用プログラムの状態を頂点(node)とし、前後の状態を表す頂点との間を辺(edge)で結合したものである。図5のs0,s1,s2,s3,s4,s5は頂点を表し、これらの頂点はs0,s1,s2,s3,s4,s5は図8の表に示した各状態(応用プログラムのコールスタック)に対応する。
図5における0ms, 10ms, 20ms はデッドラインを示す。つまり状態s0を0msとしたとき、状態s4へは10ms以内に到達しなければならず、状態s5へは20ms以内に到達しなければならない。ラベルs3に再帰的に矢印が入っているのは、ラベルs3が繰り返し連続して取得されたことを意味する。より詳細には、図3の応用プログラムの" void app_sub2"におけるfor文の中の"sys_send"が複数回連続して繰り返し実行されたことを意味する。
ここで状態遷移グラフMの定義を以下に示す。ラベル集合Sは状態ラベルの集合とし、開始ラベル集合I、期限ラベル集合Dおよび終了ラベル集合Fは集合Sの部分集合とする。周期タスクの開始ラベルの集合をI、終了ラベルの集合をFとする。集合Fと集合Iは共通要素を持たない(F∩I=φ)。φは空集合を表す。ラベル集合S-D(SからDを除いた残り)は、通常のシステムコールに対応する。期限ラベルd∈Dは、デッドラインT(d)を有する。

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})
上記の例では、状態ラベルとして、実行中のサブルーチンの組(コールスタックの戻り番地のリスト)を取得したが、状態ラベルの内容を拡張し、コールスタックの戻り番地のリストと、出現回数(1周期中に呼び出された回数)との組を、状態ラベルとして取得してもよい。
図6は、拡張した状態ラベルを用いて生成した状態遷移グラフの例を示す。
拡張された状態ラベルは、戻り番地のリストsと、その発生頻度f(s)との組<s,f(s)>として表される。たとえば<s3,1>はs3の一度目の出現を表し、<s3,2>はs3の2度目の出現を表す。図5では再帰的な矢印によってs3の複数回の出現を表現していたが、図6では、s3が出現するごとにそれぞれを異なった状態として取得している。<s3,1>から<s3,2>を経由して<s4,1>へ遷移するケースと、<s3,1>から<s4,1>へ直接遷移するケースの両方があることが図から理解される。
ここで拡張された状態ラベルをもつ状態遷移グラフM’の定義を以下に示す。ラベル集合S’は状態ラベルの集合とし、開始ラベル集合I’、期限ラベル集合D’および終了ラベル集合F’は集合S’の部分集合とする。周期タスクの開始ラベルの集合をI’、終了ラベルの集合をF’とする。集合F’と集合I’は共通要素を持たない(F’∩I’=φ)。φは空集合を表す。ラベル集合S’-D’(S’からD’を除いた残り)は、通常のシステムコールに対応する。期限ラベルd’∈D’は、デッドラインT’(d’)を有する。
ラベル集合: 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) }
以下に拡張された状態ラベルの計算手順を示す。以下の計算手順において、集合Sは過去に現れたコールスタックの戻り番地のリストを保持する集合、写像fは同じコールスタックの戻り番地のリストの出現回数を保持する写像とする。集合Sはプログラム開始(START)時に空の状態に初期化され、システムコール(CALL)時に集合Sに戻り番地のリストを追加する。写像fはプログラム開始(START)時に空の状態に初期化され、システムコール(CALL)時に、写像fに保持する出現回数を増加する。状態ラベルは、上記したように、戻り番地のリストsとその発生頻度f(s)の組<s,f(s)>である。

機能: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)>
計算量予測データ生成部22は、このようにして生成した状態遷移グラフ(図5または図6)において各状態からデッドライン状態への、到達確率(デッドライン命令コードの実行確率)およびマイクロプロセッサの平均計算量(予測計算量)を表した状態遷移テーブルを生成する。状態遷移テーブルは以下のように定義される。
現在の状態が状態sのとき、デッドライン状態dへ至る確率をProb(s,d)、デッドライン状態dまでの計算量をCycl(s,d)とする。なお、後述の制御フェーズでは、プログラムの現在状態s∈Sからデッドライン付き状態d∈Dへの計算量Cycl(s,d)と到達確率Prob(s,d)を利用する。状態遷移テーブルは、各状態からデッドライン状態へのパスについての計算量Cyclと到達確率Probとを含む。
到達確率: Prob::Map of (S,D) to R
計算量(予測計算量): Cycl::Map of (S,D) to R
以下に、状態遷移テーブルを生成する手順を具体的に示す。状態遷移テーブルは、状態遷移グラフ(図5または図6)に遷移時における平均計算量、分岐時における各分岐の確率を追加することで生成できるが、応用プログラムの観測により直接、状態遷移テーブルを生成するほうが簡単に生成できる。よって、以下には応用プログラム実行の観測により応用プログラムの状態遷移テーブル(Prob,Cycl)を生成する手順を示す。
なお、以下の手順において、応用プログラムにおける指定区間における計算量(CPUサイクル数)は、たとえばプロセッサのプロファイル用カウンタまたはCPUシミュレータなどを用いて計測できるとする。計算量予測データ生成部22は、たとえば指定区間における計算量を計測する計算量計測手段を含む。

機能: 応用プログラムの状態遷移テーブル(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
上記手順では、訪問頻度FreqSは状態s∈Sの発生回数を、遷移頻度FreqTは状態s∈Sから状態d∈Dへの遷移発生頻度を記録する。遷移サイクルCyclTは状態s∈Sから状態d∈Dへの遷移に要した計算量を積算する。訪問フラグVisitと訪問サイクルCyclSとは、周期タスクの開始から終了までの間、訪問した状態の記録(訪問の有無)と訪問時のサイクル数とを記録する。
応用プログラムの開始(START)時に変数FreqS、FreqT、CyclTを0へ初期化し、周期タスク開始(INIT)時にVisit及びCyclSをfalse及び0へ初期化する。周期タスク終了(FINI)時にVisit及びCyclSの値から遷移関係を決定しFreqT、CyclTを更新する。プログラム終了(STOP)時にFreqS、FreqT、CyclTの値から状態遷移テーブル(Cycl,Prob)を計算する。
図9は、上記手順に従い状態遷移テーブルを生成する途中の一状態を示す表である。表の各行が一つの周期タスクで実行された実行パスに対応し、周期タスク終了(FINI)時の変数Visit、CyclS、FreqS、CyclT、FreqTの値を含んでいる。
たとえば3回目の周期タスクにおける実行パス<s0,s3,s3,s4,s2,s5>に着目して説明する。
Visitの<s0,1>→1、<s2,1>→1、<s3,1>→1、<s3,2>→1、<s4,1>→1、<s5,1>→1は、3回目の周期タスクにおいて、各状態<s0,1>、<s2,1>、<s3,1>、<s3,2>、<s4,1>、<s5,1>への訪問があったことを示し、<s1,1>→0は、<s1,1>への訪問がなかったことを示す。
CyclSの<s2,1>→400K、<s3,1>→100K、<s3,2>→200K、<s4,1>→300K、<s5,1>→500Kは、<s0,1>の訪問時を0Kとした場合、各状態への訪問時のサイクル数(計算量)が400K、100K、200K、300K、500Kサイクルであったことを示す。なお、Kはキロサイクルの略である。
FreqSの<s0,1>→3、<s1,1>→1、<s2,1>→3、<s3,1>→2、<s3,2>→1、<s4,1>→2、<s5,1>→3は、3回目の周期タスクが終わった時点で、各状態への訪問が合計で3回、1回、3回、2回、1回、2回、3回あったことを示す。
CycleTの(<s0,1>,<s4,1>)→500K、(<s0,1>,<s5,1>)→1200K、(<s1,1>,<s5,1>)→200K、・・・は、3回目の周期タスクが終わった時点で、各状態間遷移のサイクル数(計算量)が、合計で500K,1200K,200K、・・・であったことを示す。
FreqTの(<s0,1>,<s4,1>)→2、(<s0,1>,<s5,1>)→3、(<s1,1>,<s5,1>)→1、・・・は、3回目の周期タスクが終わった時点で、各状態間遷移の回数が合計で2回,3回,1回であったことを示す。
図10は、図9の表における周期タスク3回分の情報から生成した状態遷移テーブルの例を示す。
この状態遷移テーブルにおいて縦項目「from」が、周期タスクの終了を除く各状態を表し、横項目「to」が、デッドラインを指定するデッドライン状態を表す。状態遷移テーブルには、上述したとおり、各状態からデッドライン状態へ至る確率と、各状態からデッドライン状態までの予測計算量(ここでは平均値)とが含まれる。
たとえば「from」が<s0,1>,「to」が<s4,1>のマスに着目すると、<s0,1>から<s4,1>への遷移は、図9の表から合計で2回あり、また周期タスクは合計3回実行されたので、<s0,1>から<s4,1>への遷移が起こる確率は2/3=67%(端数は繰り上げ)となる。そして、<s0,1>から<s4,1>への遷移に要したサイクル数は、図9の表から合計で500K(2回目が200K、3回目が300K)であり、遷移回数の合計は2回であるため、<s0,1>から<s4,1>への遷移に要したサイクル数の平均は500/2=250Kとなる。
<制御フェーズの詳細>
応用プログラム13における周期タスクを実行してプログラム状態観測部21に応用プログラム13の状態を観測させ、動作スピード制御部23が、観測した状態と、学習フェーズで生成された状態遷移テーブル(計算量予測データ)とを用いて、状態遷移ごとに(システムコールが発生するごとに)、次の状態間の動作スピードを決定する。このようにして周期タスクの実行中におけるマイクロプロセッサ(CPU)11の動作スピードを逐次制御する。
以下、マイクロプロセッサ11の動作スピード制御について順を追って説明する。
動作スピードの制御手順においては周期タスク開始(INIT)からの経過時間を利用する。経過時間の取得手続きの例を以下に示す。この手続中の"現在時刻()"はシステムの実時間クロックを表す。周期タスク開始(INIT)時の時刻を変数t0に記録し、システムコール時の経過時間は現在時刻と開始時刻の差から計算している。

機能: 経過時間を計算する
変数: 開始時刻 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
上記動作スピードの選択手順において、マイクロプロセッサ(CPU)11の動作スピードは最小スピードFreq(1)から最大スピードFreq(N)までのN段階に変速可能とし、写像Freqはi<jならFreq(i)<Freq(j)を満たすと仮定している。
システムコール時の手順(speed_call)に記すように、現在の状態s∈Sと時刻tとが与えられた時に、到達確率Prob(s,d)が閾値p0より大きなデッドライン付き状態d∈Dを選択後、計算量(サイクル数)Cycl(s,d)と残り時間T(d)-tとから必要スピードf0を計算し、デッドライン内に処理が完了する最低スピードfを選択する。
変数NumD、FinDはデッドラインdの到達頻度NumD(d)と時間内の完了頻度FinD(d)とを保持し、値FinD(d)/NumD(d)がデッドラインの完了確率を示す。
デッドラインの完了確率が1より低いときは、動作スピードの選択に用いる有効デッドラインTime(d)を引き下げる、すなわちデッドラインT(d)に完了確率FinD(d) / NumD(d)を乗じた値を有効デッドラインTime(d)とする(上記選択手順におけるTime(d) ← T(d)× (FinD(d) / NumD(d)を参照)ことで、完了確率を高めるように制御する。すなわち完了確率が低いほど、有効残り時間(Time(d) − t)を低く見積もることで、動作スピードを高く計算する(上記選択手順におけるf ← Cycl(s,d) / min(1, Time(d) - t)を参照)。
以上に説明した経過時間の取得手続および動作スピードの選択手続を元に、以下、動作スピードの制御手順の例を示す。

機能:動作スピードを制御する
変数:
入力:
現在状態 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
以上に示したマイクロプロセッサ(CPU)の動作スピード制御についてその具体例を以下に説明する。
ただし、応用プログラム13の状態遷移テーブルは図11に示すものを用いるとする。
また、マイクロプロセッサ(CPU)の動作スピードは以下の三段階に変速可能とする。
f=10, 20, 40MHz
以上の条件の下、周期タスク中の実行パスがs0,s1,s2,s5の時と、s0,s3,s3,s4,s2,s5の時のスピード制御の例を示す。
[実行パスがs0,s1,s2,s5の時のスピード制御]
最初の状態は<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 //動作スピード
次の状態は<s1,1>であり、<s1,1>に対応するシステムコール時の経過時刻は5msであるとする。閾値20%以上の確率で到達するデッドライン状態は<s5,1>である。また状態<s5,1>への平均計算量(平均サイクル数)は200K(キロサイクル)である。したがって、200Kをデッドラインまでの残りの時間15(=20-5)ms以内に終えるのに必要な動作スピードを計算すると下記式に示すように13MHz以上となる。CPUが取り得る動作スピード10, 20, 40MHzの中で、この条件を満たす最低スピードは20MHzである。したがって20MHzを選択し、この20MHzにより、<s1,1>に対応するシステムコール後の応用プログラムを処理する。

s=<s1,1>
t=5ms
200K/(20-5)ms =13
f=20MHz
次の状態は<s2,1>であり、<s2,1>に対応するシステムコール時の経過時刻は10msであるとする。閾値20%以上の確率で到達するデッドライン状態は<s5,1>である。また状態<s5,1>への平均計算量(平均サイクル数)は100K(キロサイクル)である。したがって、100Kをデッドラインまでの残りの時間10(=20-10)ms以内に終えるのに必要な動作スピードを計算すると下記式に示すように10MHz以上となる。CPUが取り得る動作スピード10, 20, 40MHzの中で、この条件を満たす最低スピードは10MHzである。したがって10MHzを選択し、この10MHzにより、<s2,1>に対応するシステムコール後の応用プログラムを処理する。

s=<s2,1>
t=10ms
100K/(20-10)ms=10
f=10MHz
次の状態はデッドライン状態<s5,1>であり、<s5,1>に対応するシステムコール時の経過時刻は20msであるとする。したがってデッドライン以内に実行パスが終了されたこととなる。動作スピードは直前に選択した10MHzを、そのまま維持する。

s=<s5,1>
t=20ms
完了
f=10MHz
[実行パスがs0,s3,s3,s4,s2,s5の時のスピード制御]
周期タスク中の実行パスがs0,s3,s3,s4,s2,s5の時のスピード制御手順の動作例を示す。先の場合と同様だが、重複して現れる状態s3を出現回数に応じて区別する点に注意する。下記に、動作スピードの計算過程と、選択された動作スピードとを記す。簡単に補足説明を行うと以下の通りである。
状態<s3,1>,<s3,2>では閾値20%以上の確率で到達するデッドライン状態は<s4,1>と<s5,1>の2つある。そこで、各デッドライン状態についてそれぞれ動作スピードを計算し、大きい方の動作スピードを採択する。そしてCPUが取り得る動作スピード10, 20, 40MHzの中で、採択した動作スピードを満足する最低のスピードを選択する。たとえば<s3,1>の場合、<s4,1>に対して40msが計算され、<s5,1>に対しては27msが計算されるため、これらのうち大きい方の40msを採択する。そしてCPUが取り得る動作スピード10, 20, 40MHzの中で、この条件を満たす最低スピードは40MHzである。したがって40MHzを選択する。

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
ここで、スピード制御の効果を、簡易なエネルギーの見積もり式を用いて例示する。マイクロプロセッサ(CPU)の消費エネルギーは、消費電力と計算時間との積となり、以下の例では消費電力は動作スピードの約二乗で増えると仮定する。計算時間は計算サイクル数を動作スピードで除算した値となるため、消費エネルギーは、上記仮定のもと、動作スピードと計算サイクル数との積となる。このことを式により表すと以下の通りである。Energyは消費エネルギー、Powerは消費電力、Timeは計算時間、Freqは動作スピード、Cycleは計算サイクル数、Aは定数である。以降の説明ではA=1とする。
Energy = Σ Power*Time
= Σ A*Freq2*Time
= Σ A*Freq2*(Cycle/Freq)
= Σ A*Freq*Cycle
上述した2つの実行パス(s0,s1,s2,s5),(s0,s3,s3,s4,s2,s5)を例に、消費エネルギーを固定スピード(20MHzと40MHz)と、可変スピード(本発明)との場合について計算し、また各ケースにおいてデッドライン状態s4、s5への到達時刻を求めると、以下のようになる。ただし、ここでは図7の状態遷移グラフに示すように、各状態間の遷移の予測サイクル数は全て100Kであるとした。
[実行パス:s0,s1,s2,s5]
固定スピード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
[実行パス:s0,s3,s3,s4,s2,s5]
固定スピード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
以上の結果に基づき、2つの実行パスの両方においてデッドラインを守ることができる40MHzの固定スピードと、本発明の可変スピードとで消費エネルギー期待値を比較する。図7のように、1番目の実行パス(s0,s1,s2,s5)が90%、2番目の実行パス(s0,s3,s3,s4,s2,s5)が10%の割合で発生する場合(<s0,1>のとき90%の確率で状態<s1,1>へ遷移し、10%の確率で<s3,1>へ遷移する場合)、本発明の可変スピード方式の消費エネルギーの期待値は、下記の式に示す通り、固定スピード方式の約60%となる。
(5000*0.9+14000*0.1)/(12000*0.9+20000*0.1)=60%
以上のように、本実施形態により、応用プログラムの変更を最小限に抑えつつ、応用プログラムの特性に応じてマイクロプロセッサの動作スピードを適切に制御することで、マイクロプロセッサならびにマイクロプロセッサを含む組み込みシステムの低消費エネルギー化が可能となる。
本発明に係る、オペレーティングシステムを搭載する組み込みシステムを示す。 適応型スピード制御装置の詳細構成を示す。 以降の解説において説明を具体化するために用いる応用プログラムの例を示す。 応用プログラムの制御フローの骨格を示す。 状態遷移グラフの一例を示す。 状態遷移グラフの他の例を示す。 状態遷移グラフのさらに他の例を示す。 状態ラベルの事例の表を示す。 状態遷移テーブルを生成する途中で得られる情報の表を示す。 図9の表から生成した状態遷移テーブルの例を示す。 状態遷移テーブルの他の例を示す。
符号の説明
11:マイクロプロセッサ(CPU)
12:オペレーティングシステム(OS)
13:応用プログラム
14:適応型スピード制御装置
21:プログラム状態観測部
22:計算量予測データ生成部
23:動作スピード制御部
24:計算量予測データ

Claims (10)

  1. 少なくとも1つの命令コードにプログラムの開始点からのデッドライン(完了期限)が指定された命令コード群を含むプログラムを実行するマイクロプロセッサの動作スピードを制御するマイクロプロセッサ制御装置であって、
    前記動作スピードの制御に先だって、
    前記プログラムを実行し、
    計算量予測データ生成部が、
    あらかじめ指定された複数の各タイミングで、前記プログラムがその時点でどのサブルーチン呼び出しを行っているかを観測する状態観測手段を用い
    状態遷移グラフを生成し、
    前記状態観測手段によって観測した、サブルーチン呼び出しの各々に対し、状態遷移グラフの各状態から次のデッドラインに至るまでの計算量予測データを生成し、
    前記計算量予測データを前記サブルーチン呼び出しの各々に対応させてデータ保持部に保持させ、
    前記マイクロプロセッサの動作スピードの制御を伴って前記プログラムを実行する際に、
    前記あらかじめ指定された複数の各タイミングで、
    前記状態観測手段によりどのサブルーチン呼び出しを行っているかを観測し、
    前記データ保持部に保持された該サブルーチン呼び出しに対応した前記計算量予測データから残りの予測計算量を取得する予測計算量取得手段を起動し
    次のデッドラインに至るまでの残り時間を、その時点までの経過時間と該デッドラインに指定されている時間との差から計算する残り時間計算手段を起動し
    前記残りの予測計算量を前記残り時間で処理するために必要な、前記マイクロプロセッサの最低動作スピードを計算する動作スピード計算手段を起動し
    前記最低動作スピード以上で動作するように前記マイクロプロセッサを制御する制御手段を起動する
    ことを特徴とするマイクロプロセッサ制御装置。
  2. 前記あらかじめ指定された複数の各タイミングは、システムコールの発生タイミングであることを特徴とする請求項1に記載のマイクロプロセッサ制御装置。
  3. 前記各状態は、スタック上に存在する、サブルーチンの戻り番地の組により表されることを特徴とする請求項1に記載のマイクロプロセッサ制御装置。
  4. 前記制御手段は、あらかじめ与えられた相異なる複数の動作スピードの中から前記最低スピード以上の動作スピードを選択し、選択した動作スピードで動作するように前記マイクロプロセッサを制御することを特徴とする請求項1に記載のマイクロプロセッサ制御装置。
  5. 前記制御手段は、前記最低スピード以上の動作スピードのうち最も低い動作スピードを選択することを特徴とする請求項4に記載のマイクロプロセッサ制御装置。
  6. 前記命令コード群は分岐命令コードを含み、
    前記計算量予測データ生成部が、前記状態の各々に対し、前記デッドラインが指定された命令コードが実行される実行確率を計算し、計算した実行確率をデータ保持部に保持させ、
    前記制御手段は、閾値以上の実行確率をもつ、前記デッドラインが指定された命令コードから計算された最低動作スピードのうち最も大きい動作スピード以上で動作するように前記マイクロプロセッサを制御することを特徴とする請求項5に記載のマイクロプロセッサ制御装置。
  7. 前記計算量予測データ作成は、各前記タイミングに応じてそれぞれ複数回計測した計算量を平均することにより前記計算量予測データを得ることを特徴とする請求項6に記載のマイクロプロセッサ制御装置。
  8. 前記動作スピードの制御に先だって、前記プログラムを実行し、
    完了確率計算手段を用いて、前記デッドラインが指定された命令コードの実行が前記デッドライン内に完了した完了確率を計算し、前記完了確率を前記データ保持手段に保持させ、
    前記制御手段は、前記完了確率が低いほど、高い動作スピードで動作するように前記マイクロプロセッサを制御することを特徴とする請求項1に記載のマイクロプロセッサ制御装置。
  9. 少なくとも1つの命令コードにプログラムの開始点からのデッドライン(完了期限)が指定された命令コード群を含むプログラムを実行するマイクロプロセッサの動作スピードを制御するマイクロプロセッサ制御方法であって、
    前記動作スピードの制御に先だって、
    前記プログラムを実行し、
    あらかじめ指定された複数の各タイミングで、前記プログラムがその時点でどのサブルーチン呼び出しを行っているかを観測して状態遷移グラフを生成し、
    前記観測した、サブルーチン呼び出しの各々に対し、状態遷移グラフの各状態から次のデッドラインに至るまでの計算量予測データを生成し、
    前記計算量予測データを前記サブルーチン呼び出しの各々に対応させてデータ保持部に保持させ、
    前記マイクロプロセッサの動作スピードの制御を伴って前記プログラムを実行する際に、
    前記あらかじめ指定された複数の各タイミングで、
    どのサブルーチン呼び出しを行っているかを観測し、
    前記データ保持部に保持された該サブルーチン呼び出しに対応した前記計算量予測データから残りの予測計算量を取得
    次のデッドラインに至るまでの残り時間を、その時点までの経過時間と該デッドラインに指定されている時間との差から計算
    前記残りの予測計算量を前記残り時間で処理するために必要な、前記マイクロプロセッサの最低動作スピードを計算
    前記最低動作スピード以上で動作するように前記マイクロプロセッサを制御する
    ことを特徴とするマイクロプロセッサ制御方法。
  10. 少なくとも1つの命令コードにプログラムの開始点からのデッドライン(完了期限)が指定された命令コード群を含むプログラムを実行するマイクロプロセッサの動作スピードを制御するマイクロプロセッサ制御プログラムであって、
    前記動作スピードの制御に先だって、
    前記プログラムを実行し、
    あらかじめ指定された複数の各タイミングで、前記プログラムがその時点でどのサブルーチン呼び出しを行っているかを観測して状態遷移グラフを生成するステップと、
    前記観測した、サブルーチン呼び出しの各々に対し、状態遷移グラフの各状態から次のデッドラインに至るまでの計算量予測データを生成するステップと、
    前記計算量予測データを前記サブルーチン呼び出しの各々に対応させてデータ保持部に保持させるステップと、
    前記マイクロプロセッサの動作スピードの制御を伴って前記プログラムを実行する際に、
    前記あらかじめ指定された複数の各タイミングで、
    どのサブルーチン呼び出しを行っているかを観測するステップと、
    前記データ保持部に保持された該サブルーチン呼び出しに対応した前記計算量予測データから残りの予測計算量を取得するステップと
    次のデッドラインに至るまでの残り時間を、その時点までの経過時間と該デッドラインに指定されている時間との差から計算するステップと
    前記残りの予測計算量を前記残り時間で処理するために必要な、前記マイクロプロセッサの最低動作スピードを計算するステップと
    前記最低動作スピード以上で動作するように前記マイクロプロセッサを制御するステップと
    コンピュータに実行させるためのマイクロプロセッサ制御プログラム。
JP2007237818A 2007-09-13 2007-09-13 マイクロプロセッサ制御装置並びにその方法およびプログラム Expired - Fee Related JP4836903B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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