(57)【要約】【課題】プログラムに対し指定された実行時間に係わる性能指標を維持すると共に、特定のタスクによるＣＰＵ資源の過剰な占有を防止できる性能確保プログラムを自動的に生成可能にする。【解決手段】抽出部３１はコード４１により実行時間要求が指定されたプログラムソース３９の区間に条件分岐抽出や、ループ抽出を行う。導出部３３は該各処理の実行結果が反映されたプログラムソース３９にプロファイル取得用コード生成、計算量プロファイル取得、実行時間の関数近似を施す。計算機能付加部３５は該各処理の実行結果が反映されたプログラムソース３９に必要ＣＰＵ資源量見積りコード、必要ＣＰＵ資源量再見積りコードを挿入する。割当て機能付加部３７は該各処理の実行結果が反映されたプログラムソース３９に必要ＣＰＵ資源量見積りコード、必要ＣＰＵ資源量再見積りコードに基づき所定の演算処理を行う。【選択図】図２
2010186301.tif 000002
【特許請求の範囲】
【請求項１】
与えられたプログラムのソースコードを変換するプログラム変換装置において、
前記プログラムの性能指標が与えられる、前記プログラムの或る区間内の１箇所、若しくは複数箇所から該区間の終端までの間の実行に要する時間の最大値を算出する実行時間算出部と、
前記実行時間算出部により算出された実行時間の最大値と、前記性能指標とから、前記プログラムが起動するＣＰＵにおいて前記１箇所、若しくは複数箇所から該区間の終端までの間の実行のために確保すべきＣＰＵ資源割合を求める機能を、前記プログラムのソースコードに付与する機能付与部と、
前記機能付与部により前記ＣＰＵ資源割合を求める機能が付与されたプログラムのソースコードを、前記求めたＣＰＵ資源割合を確保するプログラムに変換するプログラム変換部と、
を備えるプログラム変換装置。
【請求項２】
請求項１記載のプログラム変換装置において、
前記プログラムの性能指標が与えられる前記プログラムの或る区間内において、前記プログラムの計算量に変動を及ぼす原因が生じたがどうかを検知する変動原因検知部、を更に備え、
前記プログラムの或る区間内の１箇所、若しくは複数箇所が、前記変動原因検知部により検知された前記変動を及ぼす原因が存在する位置であるプログラム変換装置。
【請求項３】
請求項２記載のプログラム変換装置において、
前記変動を及ぼす原因が、前記区間内に存在する条件分岐の分岐先であるプログラム変換装置。
【請求項４】
請求項２記載のプログラム変換装置において、
前記変動を及ぼす原因が、前記区間内に存在するループであり、前記１箇所、若しくは複数箇所が、前記区間内における前記ループのループ回数の確定箇所以降の箇所を含むプログラム変換装置。
【請求項５】
請求項４記載のプログラム変換装置において、
前記実行時間算出部が、前記変動原因検知部により検知された前記区間内に存在する前記確定したループ回数に応じた実行時間の最大値を求めるプログラム変換装置。
【請求項６】
請求項５記載のプログラム変換装置において、
前記実行時間算出部が、
前記プログラムの前記区間の実行に要する時間を求めるためのプロファイル取得用コードを生成する生成部と、
前記生成部により生成されたプロファイル取得用コードを実行する実行部と、
前記実行部による前記プロファイル取得用コードの実行により取得したプロファイルデータから、前記実行時間の最大値を算出する算出部と、
を備えるプログラム変換装置。
【請求項７】
請求項６記載のプログラム変換装置において、
前記性能指標が、前記プログラムの前記区間の実行に要する時間であるプログラム変換装置。
【請求項８】
与えられたプログラムのソースコードを変換するプログラム変換方法において、
前記プログラムの性能指標が与えられる、前記プログラムの或る区間内の１箇所、若しくは複数箇所から該区間の終端までの間の実行に要する時間の最大値を算出する第１のステップと、
前記第１のステップにおいて算出された実行時間の最大値と、前記性能指標とから、前記プログラムが起動するＣＰＵにおいて前記１箇所、若しくは複数箇所から該区間の終端までの間の実行のために確保すべきＣＰＵ資源割合を求める機能を、前記プログラムのソースコードに付与する第２のステップと、
前記第２のステップにおいて前記ＣＰＵ資源割合を求める機能が付与されたプログラムのソースコードを、前記求めたＣＰＵ資源割合を確保するプログラムに変換する第３のステップと、
を備えるプログラム変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、与えられたプログラムのソースコードを変換するプログラム変換方法、及び装置に関する。
【背景技術】
【０００２】
従来、プログラム変換の技術において、プログラムの指定区間に対して性能指標を与えることにより、該当区間を自動的にタスク（即ち、ＯＳ（オペレーティングシステムのこと。以下同じ）のスケジューリングの単位になっている）に分割して性能指標を付加する、プログラム変換方法、及び装置を提供することを目的とした提案が知られている。該提案の概要は、区間及び指標取得手段が、プログラムに埋め込まれた区間を表す区間コードと、該区間コードに関連付けて該プログラムに埋め込まれた性能指標情報とを取得し、タスクコード変換手段が、上記区間及び指標取得手段が取得した区間コードを、タスクコードとして分離し、タスク先頭を示すコードと、タスク終端を示すコードとを追加する。そして、タスク指標付加手段が、スケジューラに入力するための性能指標をタスクに付加するようになっている（例えば特許文献１参照）。また、ＯＳのスケジューラに対する付加機能として、タスクに割り当てるべきＣＰＵ資源の利用率を指定すると、その性能を確保することを可能にする機構に係る技術についても知られている（例えば非特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2006-126977号公報
【非特許文献１】S. Oikawa and R. Rajkumar, “Portable RK :A Portable Resource Kernelfor Guaranteed and Enforced Timing Behavior”, Proceedings of the Fifth IEEEReal-Time Technology and Applications Symposium, 1999.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
マルチタスク環境下においては、複数のタスクが同一のＣＰＵを共有した状態で、各々のタスクに係わる処理が実行される。即ち、ＣＰＵの処理能力を時分割し、各々のタスクに対しＣＰＵ資源を割り当てることにより、それら複数のタスクを同時に実行することが可能になる。一般的には、各々のタスクにＣＰＵ資源を割り当てるスケジューラ機能が、ＯＳの機能として提供されている。同一のＣＰＵを複数のタスクで共有しているマルチタスク環境下では、プログラムの全体、若しくは該プログラムの或る区間に対し、実行を開始してから該実行を終了するまでの実時間である実行時間は、該区間における実行開始から実行終了までに該プログラムがＣＰＵを使用した時間である計算時間よりも長くなる。スケジューラにより各々のタスクに割り当てられるＣＰＵ資源量は、該プログラムの実行時の環境により左右されるため（他のタスクの処理が割り込んでくるため）、同一の計算時間、若しくは同一の計算量であっても、該プログラムの実行時間は状況に応じて変動することになる。
【０００５】
特に、ディジタル放送受信機のような組込みシステムの場合には、プログラムのリアルタイム性が要求される。プログラムのリアルタイム性とは、該プログラムの実行時間に関わる性質であり、例えば、該プログラム中の特定の区間における実行時間が、予め定められた時間内に収まるような性質のことを指す。上述したディジタル放送受信機のような映像表示処理機器においては、映像表示のためのプログラムの実行を一定時間内に終了させることができない場合には、該映像表示処理機器からの出力映像に乱れが発生することになるので、プログラムのリアルタイム性を維持することが重要である。
【０００６】
しかし、上述したような複数のタスクが同一ＣＰＵを共有した状態で各々が動作しているような状況下においては、上記のように、スケジューラにより割り当てられるＣＰＵ資源は、プログラムの実行時の環境により左右されるため、プログラムのリアルタイム性を維持するのは困難である。そこで、プログラムに対し、ＣＰＵ資源利用率という態様で性能指標を与えることにより、各々のタスクに対して割り当てられるＣＰＵ資源を確保するための技術が提案されている。上述した特許文献１として開示されている技術や、非特許文献１として開示されている技術がそれである。
【０００７】
ところで、上述した特許文献１や、非特許文献１に開示されているような技術を採用した場合に、プログラムの実行のために割り当てられるＣＰＵ資源の利用率という態様で、プログラムが具備している性能を確保することはできるが、プログラム、若しくは該プログラム中の特定の区間に対する実行時間という態様で性能指標が与えられた場合においては、該プログラムが具備する性能を維持することができないという問題が生じる。また、従来の技術に含まれるＣＰＵ資源利用率の確保に係わる手法を採用して、上述した実行時間に関するプログラムの性能の維持を実現しようとした場合、確保したＣＰＵ資源の量が、適切なＣＰＵ資源利用率に満たなければ、該プログラムについての指定された実行時間に係わる性能指標を維持できないという状況が発生する虞もある。一方、確保したＣＰＵ資源の量が、適切なＣＰＵ資源利用率よりも過剰であれば、該タスク以外のタスクに割り当てるＣＰＵ資源量が減少し、その結果として、他のタスクに関して応答性の低下を惹き起こす可能性が生じる。
【０００８】
プログラムの計算量は、プログラムの内部状態や、外部から組み込みシステムへ入力される各種のデータ等により、同一のプログラムであっても、実行する時期に応じて変動することが知られている。上記のようにプログラムの計算量が変動すると、性能指標として与えられた実行時間内に該プログラム中の特定の区間を実行しなければならないために、該特定の区間を実行するのに適切なＣＰＵ資源量も変動するから、上述したように適切なＣＰＵ資源利用率を事前に求めることも困難になる。
【０００９】
従って本発明の目的は、マルチタスク環境下において、プログラムに対し、指定された実行時間に係わる性能指標を維持することができ、且つ、特定のタスクがＣＰＵ資源を過剰に占有するのを防止できるような性能確保プログラムを自動的に生成できるようにすることにある。
【課題を解決するための手段】
【００１０】
本発明の第１の観点に従うプログラム変換装置は、与えられたプログラムのソースコードを変換するもので、上記プログラムの性能指標が与えられる、上記プログラムの或る区間内の１箇所、若しくは複数箇所からその区間の終端までの間の実行に要する時間の最大値を算出する実行時間算出部と、上記実行時間算出部により算出された実行時間の最大値と、上記性能指標とから、上記プログラムが起動するＣＰＵにおいて上記１箇所、若しくは複数箇所からその区間の終端までの間の実行のために確保すべきＣＰＵ資源割合を求める機能を、上記プログラムのソースコードに付与する機能付与部と、上記機能付与部により上記ＣＰＵ資源割合を求める機能が付与されたプログラムのソースコードを、上記求めたＣＰＵ資源割合を確保するプログラムに変換するプログラム変換部と、を備える。
【００１１】
本発明の第１の観点に係る好適な実施形態では、上記プログラムの性能指標が与えられる上記プログラムの或る区間内において、上記プログラムの計算量に変動を及ぼす原因が生じたがどうかを検知する変動原因検知部、を更に備え、上記プログラムの或る区間内の１箇所、若しくは複数箇所が、上記変動原因検知部により検知された上記変動を及ぼす原因が存在する位置である。
【００１２】
上記とは別の実施形態では、上記変動を及ぼす原因が、上記区間内に存在する条件分岐の分岐先である。
【００１３】
また、上記とは別の実施形態では、上記変動を及ぼす原因が、上記区間内に存在するループであり、上記１箇所、若しくは複数箇所が、上記区間内における上記ループのループ回数の確定箇所以降の箇所を含む。
【００１４】
また、上記とは別の実施形態では、上記実行時間算出部が、上記変動原因検知部により検知された上記区間内に存在する上記確定したループ回数に応じた実行時間の最大値を求める。
【００１５】
また、上記とは別の実施形態では、上記実行時間算出部が、上記プログラムの上記区間の実行に要する時間を求めるためのプロファイル取得用コードを生成する生成部と、上記生成部により生成されたプロファイル取得用コードを実行する実行部と、上記実行部による上記プロファイル取得用コードの実行により取得したプロファイルデータから、上記実行時間の最大値を算出する算出部と、
を備える。
【００１６】
更に、上記とは別の実施形態では、上記性能指標が、上記プログラムの上記区間の実行に要する時間である。
【００１７】
本発明の第２の観点に従うプログラム変換方法は、与えられたプログラムのソースコードを変換するもので、上記プログラムの性能指標が与えられる、上記プログラムの或る区間内の１箇所、若しくは複数箇所からその区間の終端までの間の実行に要する時間の最大値を算出する第１のステップと、上記第１のステップにおいて算出された実行時間の最大値と、上記性能指標とから、上記プログラムが起動するＣＰＵにおいて上記１箇所、若しくは複数箇所からその区間の終端までの間の実行のために確保すべきＣＰＵ資源割合を求める機能を、上記プログラムのソースコードに付与する第２のステップと、上記第２のステップにおいて上記ＣＰＵ資源割合を求める機能が付与されたプログラムのソースコードを、上記求めたＣＰＵ資源割合を確保するプログラムに変換する第３のステップと、を備える。
【発明の効果】
【００１８】
本発明によれば、マルチタスク環境下において、プログラムに対し、指定された実行時間に係わる性能指標を維持することができ、且つ、特定のタスクがＣＰＵ資源を過剰に占有するのを防止できるような性能確保プログラムを自動的に生成することが可能になる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態に係るプログラム変換装置が組み込まれるシステムの全体構成の一例を示す機能ブロック図。
【図２】図１に示したプログラム変換装置の内部構成の一例を示す機能ブロックと、プログラムソースと、区間及び実行時間要求指定コードとから、上記各々の機能ブロックを通じて性能確保プログラムが生成されるまでのプロセスとを示した説明図。
【図３】図２で示したプログラムソースの一種である条件分岐を含むプログラムソースの一例を示した説明図。
【図４】図２で示したプログラムソースの一種であるループを含むプログラムソースの一例を示した説明図。
【図５】図２で示した区間及び実行時間要求指定コードの一例を示した説明図。
【図６】図２で示した計算量変動要因抽出部において実行される処理動作の一例を示すフローチャート。
【図７】図６で示した条件分岐抽出処理の動作において、計算量変動要因抽出部により生成される条件分岐による分岐先リストの一例を示す説明図。
【図８】図２で示した計算量変動要因抽出部による、図６で示した条件分岐抽出処理の動作の詳細を示すフローチャート。
【図９】図６で示したループ抽出処理の動作において、計算量変動要因抽出部により生成されるループリストの一例を示す説明図。
【図１０】図２で示した計算量変動要因抽出部による、図６で示したループ抽出処理の動作の詳細を示すフローチャート。
【図１１】図２で示した変動要因と計算量との関係導出部において実行される処理動作の一例を示すフローチャート。
【図１２】図２で示した変動要因と計算量との関係導出部による変動要因と計算量との関係導出処理の動作において生成されるプロファイル取得用コードの一例を示す説明図。
【図１３】図２で示した変動要因と計算量との関係導出部による、図１１で示した変動要因と計算量との関係導出処理の動作の詳細を示すフローチャート。
【図１４】図２で示した変動要因と計算量との関係導出部による、図１１で示した計算時間の関数近似処理において生成される計算時間計測位置と残り区間最大計算時間との対応を示す表の一例を示す説明図。
【図１５】図２で示した変動要因と計算量との関係導出部による、図１１で示した計算時間の関数近似処理において生成されるループ回数値と残り区間最大計算時間との対応を示す表の一例を示す説明図。
【図１６】図１５で示したループ回数値と残り区間最大計算時間との関係を示す、一次関数（一次式）により近似したグラフ。
【図１７】図２で示した変動要因と計算量との関係導出部による、図１１で示した計算時間の関数近似処理の動作の詳細を示すフローチャート。
【図１８】図２で示した必要ＣＰＵ資源量計算機能付加部において実行される処理動作の一例を示すフローチャート。
【図１９】図２で示した必要ＣＰＵ資源量計算機能付加部において実行される必要ＣＰＵ資源量見積りコードに係わる処理内容の一例を示すフローチャート。
【図２０】図２で示した必要ＣＰＵ資源量計算機能付加部において実行される処理動作の一例を示すフローチャート。
【図２１】図２で示したプログラム変換装置が、図４で示したプログラムソースを基に出力する性能確保プログラムの一例を示す説明図。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態を、図面により詳細に説明する。
【００２１】
図１は、本発明の一実施形態に係るプログラム変換装置が組み込まれるシステム（以下の説明では、「組込みシステム」と表記する。）の全体構成の一例を示す機能ブロック図である。以下の説明では、組込みシステムとして、ディジタル放送受信システムを例に挙げる。
【００２２】
図１に示すように、上記ディジタル放送受信システム１００は、ディジタル放送受信機本体（以下、「受信機本体」と表記する。）１と、リモートコントローラ（以下、「リモコン」と表記する。）３と、アンテナ５と、表示装置７と、プログラム変換装置９と、を含む。受信機本体１は、記憶装置１１と、プロセッサ１３と、信号受信部１５と、ディジタル放送チューナ１７と、を備える。
【００２３】
リモコン３には、受信機本体１に対し、種々の動作指令信号を送出するための複数のキー（図示しない）が配置された操作部（図示しない）が備えられている。ユーザが上記複数のキー（図示しない）の何れかを操作することにより、リモコン３において動作指令信号が生成されると、リモコン３は、例えば、該動作指令信号が重畳された赤外光を受信機本体１に向かって放射することで、該動作指令信号を、受信機本体１に送信する。
【００２４】
アンテナ５は、放送局（図示しない）から送出されるディジタル放送信号波を受信したことに起因して生成される電気信号を、受信機本体１へ出力する。表示装置７は、受信機本体１側からの表示出力に応じて画像情報を可視画像として表示する。
【００２５】
受信機本体１において、記憶装置１１は、プロセッサ１３の制御下で、ディジタル放送受信機ソフトウェア１９に含まれる各種のプログラムのうちの、プログラム変換装置９において性能確保プログラムに変換される処理が施された後のプログラム（以下、「変換プログラム」と表記する）と、上記変換処理が施されていないプログラムと、を共に格納する。なお、ディジタル放送受信機ソフトウェア１９には、リモートコントローラタスク（以下、「リモコンタスク」と表記する。）２１と、チューナタスク２３と、映像デコードタスク２５と、音声デコードタスク２７と、データ放送ブラウザタスク２９と、が含まれる。
【００２６】
ディジタル放送受信機ソフトウェア１９において、リモコンタスク２１は、ユーザによるリモコン３の操作に基づく動作指令（信号）に対応した該動作指令（信号）の受信処理を実行する機能を有する。この受信処理に対する適切な応答処理を個別に実行するためのプログラムとして、チューナタスク２３、映像デコードタスク２５、音声デコードタスク２７、及びデータ放送ブラウザタスク２９が夫々存在している。
【００２７】
即ち、チューナタスク２３は、ユーザによる（リモコン３の操作を介した）選局指令に基づく（受信機本体１の）ディジタル放送チューナ１７における選局動作に伴って起動し、受信番組の切り替え処理を実行する機能を有する。映像デコードタスク２５は、起動することにより、ディジタル放送チューナ１７を介してチューナタスク２３が受信したディジタル放送信号波に含まれる映像情報のデコード処理を実行する機能を有する。音声デコードタスク２７は、起動することにより、ディジタル放送チューナ１７を介してチューナタスク２３が受信したディジタル放送信号波に含まれる音声情報のデコード処理を実行する機能を有する。データ放送ブラウザタスク２９は、起動することにより、（ディジタル放送チューナ１７から）データ放送コンテンツを取得する機能と、該取得したデータ放送コンテンツに復号化処理を施す機能と、を有する。上記プログラムのうちの、チューナタスク２３と、映像デコードタスク２５と、音声デコードタスク２７とが、上記変換プログラムに該当し、残りのリモコンタスク２１、及びデータ放送ブラウザタスク２９が、上記性能確保プログラムへの変換処理が施されていないプログラムである。
【００２８】
上記性能確保プログラムとして記憶装置１１に記憶されるプログラムのうちの、映像デコードタスク２５、及び音声デコードタスク２７については、画像情報や、音声情報を途切れないようにして出力することが要求されるため、（画像情報の）フレームレートにより決まる時間内に、夫々のデコード処理を完了させなければならないという時間的な制約がある。また、上記性能確保プログラムとして記憶装置１１に記憶されるプログラムのうちの、チューナタスク２３についても、受信機本体１が、アンテナ５を介して受信したディジタル放送信号波から画像情報や、音声情報を取り出す処理を実行する時間に対して制約が課せられる。そこで、本実施形態においては、ディジタル放送受信機ソフトウェア１９に含まれる各種のプログラムのうちの、リアルタイム性を有するタスクである、チューナタスク２３、映像デコードタスク２５、及び音声デコードタスク２７については、プログラム変換装置９において性能確保プログラムに変換された上で、記憶装置１１に記憶されるようにしている。
【００２９】
一方、リモコンタスク２１、及びデータ放送ブラウザタスク２９については、決められた時間内に夫々が実行すべき処理動作を完了しなければならないという明確な制約は存在しないので、上述したチューナタスク２３、映像デコードタスク２５、及び音声デコードタスク２７とは異なり、そのままの状態で記憶装置１１に記憶されることになる。なお、上述したように、明確な制約がなくても処理動作の実行に長い時間を必要とする場合には、受信機本体１における応答性の低下や、操作性の低下を惹き起こすという不具合が生じる虞もある。
【００３０】
上述したディジタル放送受信機ソフトウェア１９に含まれる各種のプログラム（２１、２３、２５、２７、及び２９）が夫々有する機能は、プロセッサ１３において実行される。
【００３１】
記憶装置１１には、上記以外にも受信機本体１等の各種（ハードウェア）資源の管理や、アプリケーション（プログラム）が該各種（ハードウェア）資源を利用することができるようにするためのＯＳやアプリケーション（プログラム）等が格納されている。
【００３２】
信号受信部１５は、プロセッサ１３の制御下で、リモコン３から送信される、上記動作指令信号が重畳された赤外光を受光し、上記動作指令信号に対し所定の信号処理を施した後、プロセッサ１３へ出力する。ディジタル放送チューナ１７は、プロセッサ１３の制御下で、リモコン３を介してユーザから与えられる選局指令に従い、アンテナ５が受信した複数の放送局からのディジタル放送信号波（映像情報、及び音声情報を含む。）よりユーザの所望する放送局からのディジタル放送信号波を抽出するための選局処理動作を実行する。ディジタル放送チューナ１７において選局処理が施されることにより抽出されたユーザ所望のディジタル放送信号波は、プロセッサ１３の制御下で、復調等の信号処理を実行する信号処理系統（図示しない）に出力される。
【００３３】
プロセッサ１３は、記憶装置１１、信号受信部１５、及びディジタル放送チューナ１７等の受信機本体１を構成する各部を制御下に置き、各部の処理動作を管理する。即ち、プロセッサ１３は、リモコン３を介してユーザから与えられる各種の動作指令信号に基づく処理を実行すべく、記憶装置１１に記憶されている上記リモコンタスク２１、チューナタスク２３、映像デコードタスク２５、音声デコードタスク２７、及びデータ放送ブラウザタスク２９等の中から対応するプログラムを起動させる。上記リモコンタスク２１、チューナタスク２３、映像デコードタスク２５、音声デコードタスク２７、及びデータ放送ブラウザタスク２９等のディジタル放送受信機ソフトウェア１９が、プロセッサ１３のハードウェア資源を利用して夫々実行する処理動作の詳細については、既に説明済みであるので、ここでの重ねての説明は省略する。
【００３４】
プログラム変換装置９は、既述のように、記憶装置１１に記憶されるべきディジタル放送受信機ソフトウェア１９のうちの、チューナタスク２３、映像デコードタスク２５、及び音声デコードタスク２７については、性能確保プログラムに変換する処理を施し、変換プログラムとする。プログラム変換装置９は、上記性能確保プログラムに変換された後のチューナタスク２３、映像デコードタスク２５、及び音声デコードタスク２７を、ディジタル放送受信機ソフトウェア１９として、プロセッサ１３を通じて記憶装置１１に記憶させる。プログラム変換装置９については、以下に詳述する。
【００３５】
図２は、図１に示したプログラム変換装置９の内部構成の一例を示す機能ブロックと、プログラムソースと、区間及び実行時間要求指定コード（以下、「コード」と表記する。）とから、上記各々の機能ブロックを通じて性能確保プログラムが生成されるまでのプロセスとを示した説明図である。
【００３６】
上記プログラム変換装置９は、図２に示すように、プログラムソース３９と、コード４１とを入力し、上記プログラムソース３９に所定の変換処理を施すことにより、性能確保プログラム４３を出力する。上記プログラム変換装置９は、計算量変動要因抽出部（以下、「抽出部」と表記する。）３１と、変動要因と計算量との関係導出部（以下、「導出部」と表記する。）３３と、必要ＣＰＵ資源量計算機能付加部（以下、「計算機能付加部」と表記する。）３５と、ＣＰＵ資源割当て機能付加部（以下、「割当て機能付加部」と表記する。）３７と、を備える。
【００３７】
抽出部３１は、種々の態様の条件分岐を含むプログラムソース、及び種々の態様のループを含むプログラムソースを、プログラムソース３９として入力すると共に、複数種類の区間及び実行時間要求を、コード（即ち、区間及び実行時間要求指定コード）４１として入力する。抽出部３１は、上記入力したプログラムソース３９のうちの、上記コード４１により実行時間要求が指定された区間に対し、条件分岐抽出処理、及びループ抽出処理を実行する。上記条件分岐抽出処理、及び上記ループ抽出処理の実行結果が反映されたプログラムソース３９は、抽出部３１から導出部３３へ出力される。
【００３８】
導出部３３は、上記条件分岐抽出処理、及び上記ループ抽出処理の実行結果が反映されたプログラムソース３９を抽出部３１から入力すると、該プログラムソース３９に対し、プロファイル取得用コード生成処理、計算量プロファイル取得処理、及び実行時間の関数近似処理を施す。上記プロファイル取得用コード生成処理、上記計算量プロファイル取得処理、及び上記実行時間の関数近似処理の実行結果が反映されたプログラムソース３９は、導出部３５から計算機能付加部３５へ出力される。
【００３９】
計算機能付加部３５は、上記プロファイル取得用コード生成処理、上記計算量プロファイル取得処理、及び上記実行時間の関数近似処理の実行結果が反映されたプログラムソース３９を導出部３５から入力すると、該プログラムソース３９に対し、所定の手法により必要ＣＰＵ資源量見積りコードや、必要ＣＰＵ資源量再見積りコードを挿入する処理を実行する。該処理の実行結果が反映されたプログラムソース３９は、計算機能付加部３５から割当て機能付加部３７へ出力される。
【００４０】
割当て機能付加部３７は、上記必要ＣＰＵ資源量見積りコードや、上記必要ＣＰＵ資源量再見積りコードを挿入する処理の実行結果が反映されたプログラムソース３９を計算機能付加部３５から入力すると、上記必要ＣＰＵ資源量見積りコードや、上記必要ＣＰＵ資源量再見積りコードに基づき、所定の演算処理を実行する。これにより、上記プログラムソース３９がプログラム変換されることになり、該プログラム変換処理の操作を経たプログラムソース（３９）が、性能確保プログラム４３としてプログラム変換装置９から図１で示した受信機本体１へ出力されることになる。
【００４１】
図３は、図２で示したプログラムソース３９の一種である条件分岐を含むプログラムソースの一例を示した説明図である。
【００４２】
図３に記載のプログラムソース４５において、符号４５ａは、該プログラムソース４５における行番号“５”に対応する項目であって、上述したコード４１により指定された実行時間要求指定区間内の条件分岐を示す。また、符号４５ｂは、該プログラムソース４５における行番号“６”に対応する項目であって、該条件分岐４５ａに係わる所定の条件が成立する場合の分岐先を示す。更に、符号４５ｃは、該プログラムソース４５における行番号“９”に対応する項目であって、該条件分岐４５ａに係わる所定の条件が成立しない場合の分岐先を示す。なお、図３の左上の箇所に記載されている“src_a.c”は、図３で示したプログラムソース４５のファイル名を示す。
【００４３】
図４は、図２で示したプログラムソース３９の一種であるループを含むプログラムソースの一例を示した説明図である。
【００４４】
図４に記載のプログラムソース４７において、符号４７ｂは、該プログラムソース４７における行番号“７”乃至行番号“１０”に対応する項目であって、上述したコード４１により指定された実行時間要求指定区間内のループを示す。また、符号４７ａは、該プログラムソース４７における行番号“５”に対応する項目を指す。上記ループ４７ｂに係わるループ回数は、定数、又は変数（ｎ）のどちらかであるが、符号４７ａは、上記ループ４７ｂに係わるループ回数が変数（ｎ）である場合の、該変数（ｎ）の位置、即ち、上記ループ４７ｂのループ回数が決定する直後の処理の位置、換言すれば、上記ループ４７ｂよりも前の位置であって、最後に“ｎ”の値が更新される箇所を示す。なお、図４の左上の箇所に記載されている“src_b.c”は、図４で示したプログラムソース４７のファイル名を示す。
【００４５】
図５は、図２で示したコード（即ち、区間及び実行時間要求指定コード）４１の一例を示した説明図である。
【００４６】
図５において、コード４１は、ファイル名により識別される各プログラムソース（３９）毎の特定の区間を表す始点に係わる情報、及び終点に係わる情報と、制限された時間内に該特定の区間における処理を実行することを要求するに際しての、要求実行時間に係わる情報と、を含む。因みに、図５で示した例では、ファイルが“src_a.c”のプログラムソース（３９）における始点が行番号“２”、終点が行番号“１６”で画定される区間においては、該区間における処理を“１０ミリ秒”で実行することが要求される。また、ファイルが“src_b.c”のプログラムソース（３９）における始点が行番号“３”、終点が行番号“１３”で画定される区間においては、該区間における処理を“２０ミリ秒”で実行することが要求される。
【００４７】
図６は、図２で示した抽出部３１において実行される処理動作の一例を示すフローチャートである。
【００４８】
図６において、抽出部３１は、プログラムソース３９、及びコード４１を入力すると、該プログラムソース３９のうちの、該コード４１により所定時間内での処理動作の実行の要求を指定された区間に対し、まず、条件分岐抽出処理の動作を実行し（ステップＳ５１）、次いで、ループ抽出処理の動作を実行する（ステップＳ５２）。これにより、図６で示した一連の処理動作が終了する。
【００４９】
図７は、図６で示した条件分岐抽出処理の動作（ステップＳ５１）において、抽出部３１により生成される条件分岐による分岐先リスト（以下、「分岐先リスト」と表記する。）の一例を示す説明図である。
【００５０】
図７において、上記分岐先リスト５３は、複数のファイル名記録欄５５と、該複数のファイル名記録欄５３の各々に対応付けされる複数の行番号記録欄５７と、により構成される。
各々のファイル名記録欄５３には、プログラム変換装置９の処理対象である、個々のプログラムソース３９を識別するためのファイル名（情報）が、また、各々の行番号記録欄５５には、対応する個々のプログラムソース（３９）において、上記抽出部３１により検索された分岐先を示す行番号（情報）が、夫々記録される。図７に示した例は、ファイル名“src_a.c”のプログラムソース３９に係わるものであり、行番号“６”が、上記抽出部３１により検索された条件分岐（４５ａ）に係わる条件が成立した場合の分岐先として、また、行番号“９”が、上記条件分岐（４５ａ）に係わる条件が成立しない場合の分岐先として、夫々上記抽出部３１により記録されたことを示している。
【００５１】
図８は、図２で示した抽出部３１による、図６で示した条件分岐抽出処理の動作（ステップS５１）の詳細を示すフローチャートである。
【００５２】
図８において、上記抽出部３１は、まず、上記コード４１を入力し、次いで、該コード４１により指定された上記プログラムソース３９の区間を入力する（ステップＳ６１）。次に、抽出部３１は、上記区間中に条件分岐が存在するかどうか検索する。例えば、上記プログラムソース３９が、図３で示したファイル名“src_a.c”のプログラムソース４５であれば、条件分岐が存在していることになる（符号４５ａ）（ステップＳ６２でＹＥＳ）。この場合、上記抽出部３１により検索される条件分岐４５ａに係わる条件が成立していれば、分岐先は、符号４５ｂで示す行番号“６”の位置になる。一方、該条件分岐４５ａに係わる条件が成立していなければ、分岐先は、符号４５ｂで示す行番号“９”の位置になる。
【００５３】
ステップＳ６２でＹＥＳであれば、抽出部３１は、条件分岐４５ａに係わる条件が成立する場合には、分岐先として行番号“６”を、また、該条件分岐４５ａに係わる条件が成立しない場合には、分岐先として行番号“９”を、夫々図７に示した分岐先リスト５３に記録し（ステップＳ６３）、ステップＳ６２で示した処理動作に復帰する。一方、上記抽出部３１による検索の結果、処理対象であるプログラムソース３９における、上記コード４１により指定された区間中に、条件分岐を見出すことができなければ（ステップＳ６２でＮＯ）、上記抽出部３１は、図８で示した条件分岐抽出処理に係わる一連の処理動作を終了させる。
【００５４】
図９は、図６で示したループ抽出処理の動作（ステップＳ５２）において、抽出部３１により生成されるループリストの一例を示す説明図である。
【００５５】
図９において、上記ループリスト６５は、ループ回数変数（ループ回数には、定数と変数の２種類あるが、ここでは、説明の都合上変数の場合のみを例に挙げる。）記録欄６７と、ループ回数確定直後の処理の位置記録欄（以下、「処理の位置記録欄」と表記する。）６９と、により構成され、処理の位置記録欄６９は、ファイル名記録欄７１、及び行番号記録欄７３を有する。
【００５６】
ループ回数変数記録欄６７には、対応する個々のプログラムソース（３９）において、上記抽出部３１により検索された変数“ｎ”で示されるループ回数が、処理の位置記録欄６９におけるファイル名記録欄７１には、プログラム変換装置９の処理対象である、個々のプログラムソース３９を識別するためのファイル名（情報）が、夫々記録される。更に、処理の位置記録欄６９における行番号記録欄７３には、対応する個々のプログラムソース（３９）において、上記抽出部３１により検索されたループに示される該ループの回数、即ち変数“ｎ”が決定する直後の処理が実行される位置、換言すれば、上記ループよりも前の、最後に変数“ｎ”の値が更新される行の次の行の番号が記録される。図９に示した例は、ファイル名“src_b.c”のプログラムソース３９に係わるものであり、行番号“６”は、上記抽出部３１により検索されたループ４７ｂのループ回数変数“ｎ”
が決定する直後の処理が実行される位置である。
【００５７】
図１０は、図２で示した抽出部３１による、図６で示したループ抽出処理の動作（ステップＳ５２）の詳細を示すフローチャートである。
【００５８】
図１０において、上記抽出部３１は、まず、上記コード４１を入力し、次いで、該コード４１により指定された上記プログラムソース３９の区間を入力する（ステップＳ８１）。次に、抽出部３１は、上記区間中にループが存在するかどうか検索する。例えば、上記プログラムソース３９が、図４で示したファイル名“src_b.c”のプログラムソース４７であれば、ループが存在していることになる（符号４７ｂ）（ステップＳ８２でＹＥＳ）。図４を参照すれば明らかなように、ファイル名“src_b.c”のプログラムソース３９の場合には、ループ回数は変数“ｎ”である（ステップＳ８３でＹＥＳ）。よって、抽出部３１は、図９で示したループリスト６５のループ回数変数記録欄６７に、ループ回数として変数“ｎ”を記録すると共に、図９で示した処理の位置記録欄６９のファイル名記録欄７１に、“src_b.c”を、行番号記録欄７３に処理の位置として、行番号“６”を夫々記録する（ステップＳ８４）。そして、ステップＳ８２で示した処理動作に復帰する。処理対象であるプログラムソース３９の上述した指定区間におけるループのループ回数が定数である場合にも（ステップＳ８３でＹＥＳ）、ステップＳ８２で示した処理動作に復帰する。
【００５９】
抽出部３１による上記区間中における検索の結果、ループが検索されなければ、ループが存在しないものとして（ステップＳ８２でＮＯ）、図１０に示した一連の処理動作が終了する。
【００６０】
図１１は、図２で示した導出部３３において実行される処理動作の一例を示すフローチャートである。
【００６１】
図１１において、導出部３３は、上述したプログラムソース３９、プログラム抽出部３１から出力される分岐先リスト５３、及びループリスト６５を夫々入力する。そして、該分岐先リスト５３、及び該ループリスト６５に基づき、上記プログラムソース３９に対しプロファイル計測のためのコードを挿入することにより、プロファイル取得用コードを生成するプロファイル取得用コード生成処理を実行する（ステップＳ９１）。次に、生成したプロファイル取得用コードを、種々の条件下で実行し、該実行に係わる計算時間を記録する（ステップＳ９２）。そして、上記記録した計算時間について、関数近似処理を実行する（ステップＳ９３）。これにより、図１１で示した一連の処理動作が終了する。
【００６２】
図１２は、図２で示した導出部３３による変動要因と計算量との関係導出処理の動作において生成されるプロファイル取得用コードの一例を示す説明図である。図１２は、ファイル名が“src_b.c”であるプログラムソース３９におけるプロファイル取得用コードの例を示す。以下の説明では、該プロファイル取得用コードが生成される処理動作において、プログラムソース３９におけるコードの挿入を実施した位置（上述した指定区間の開始位置、分岐先リスト５３に記録された位置、又はループリスト６５に記録された位置）を、「計算時間計測位置」と表記する場合もある。
【００６３】
図１２に示すプロファイル取得用コード９５では、上述したループリスト６５（図９で示した）に記録されている位置である、行番号“６”で示される位置の直前の位置と、上述したコード４１（図２で示した）に基づく所定時間内での処理動作の実行の要求を指定された区間の開始位置である、行番号“３”で示される位置の直前の位置とに、夫々該位置から上記区間の終了までの計算時間取得コードが挿入されている。即ち、上記行番号“６”の位置の直前の位置である符号９５ｃの位置、及び上記行番号“３”の位置の直前の位置である符号９５ａの位置には、後に詳述するプロファイル取得に際し、シングルタスクで走らせるという前提において取得された現在時刻を記録するコードが、夫々挿入されている。また、行番号“１２”の位置の直後の位置である符号９５ｄの位置には、該位置にて求めた現在時刻を記録するコードが挿入されているのみならず、現在時刻９５ｄと現在時刻９５ａとの間の差分を示す値（符号９５ｅで示す）を記録するコード、及び現在時刻９５ｄと現在時刻９５ｃとの間の差分を示す値（符号９５ｆで示す）を記録するコードが、夫々挿入されている。
【００６４】
更に、上述した行番号“６” の位置の直前の位置には、ループ回数変数である“ｎ”の値（符号９５ｂで示す）を記録するコードが、挿入されている。
【００６５】
図１３は、図２で示した導出部３３による、図１１で示した変動要因と計算量との関係導出処理の動作の詳細を示すフローチャートである。図１３では、図１１で示した処理動作に含まれるプロファイル取得用コード生成処理の動作の詳細が示される。
【００６６】
図１３で示すプロファイル取得用コード生成処理の動作では、プログラム変換装置９に入力されたプログラムソース３９に対し、抽出部３１において記録された各々の計算量変動要因に係わるリスト（即ち、分岐先リスト５３、及びループリスト６５）に基づき、プロファイル計測のためのコードを（例えば、図１２で示した態様で）挿入することにより、プロファイル取得用コードが生成される。
【００６７】
図１３において、導出部３３は、上記各々の計算量変動要因に対し、ステップＳ１０２以下で夫々示されるようなコード挿入処理を実行する（ステップＳ１０１）。即ち、導出部３３は、まず、上述した計算量変動要因の種類が、ループによるものかどうかチェックする（ステップＳ１０２）。該チェックの結果、ループによるものであると判断すれば（ステップＳ１０２でＹＥＳ）、上述したループリスト６５に記録されている「ループ回数確定直後の処理の位置」の直前の位置（即ち、ループ回数が確定する直後の位置）に、該時点でのループ回数変数の値を記録するコードを挿入する（図１２の例では、符号９５ｂで示したコードが該当する。）（ステップＳ１０３）。該処理動作が終了すると、導出部３３は、次に、上記（計算量）変動要因の種類の如何を問わず、上記リスト（分岐先リスト５３、又はループリスト６５の何れか一方）に記録されているプログラムソース３９中の位置（ループ回数の確定位置、若しくは分岐先位置）に対し、該位置から上述した指定区間（即ち、所定時間内での処理動作の実行の要求を指定された区間）が終了するまでのプログラムソース３９の区間の計算時間を取得するためのコードを挿入する（図１２の例では、符号９５ｅ、及び符号９５ｆで夫々示したコードが該当する。）（ステップＳ１０４）。なお、ステップＳ１０２において、導出部３３が、上述した計算量変動要因の種類がループによるものではないと判断した場合には（ステップＳ１０２でＮＯ）、直ちにステップＳ１０４にて示した処理動作に移行する。
【００６８】
ステップＳ１０４で示した処理動作が終了すると、導出部３３は、（図１２のプログラムソース３９における）上記区間（即ち、所定時間内での処理動作の実行の要求を指定された区間）の開始位置に対しても、上記計算時間を取得するためのコード（図１２では、符号９５ａで示した位置のコード）を挿入する。これにより、上述した要求に該当する（指定）区間全体の計算時間の取得も可能になる（ステップＳ１０５）。そして、図１３で示した一連の処理動作が終了する。
【００６９】
なお、プログラムソース３９における上述したコード挿入位置から上記区間が終了するまでの計算時間を取得するための手法として、プロファイルを取得するに際してシングルタスクで走らせるという前提においては、コード挿入位置、及び所定時間内での処理動作の実行の要求を指定された区間が終了する位置に、夫々現在時刻を記録するコードを挿入し、記録した時刻同士の間の差分を求める方法がある。また、スケジューラから各々のタスクに配分したＣＰＵ時間情報を取得することができる場合には、該情報を用いても差し支えない。
【００７０】
図１４は、図２で示した導出部３３による、図１１で示した計算時間の関数近似処理において生成される計算時間計測位置と残り区間最大計算時間との対応を示す表（以下では、「対応表」と表記する。）の一例を示す説明図である。
【００７１】
図１４において、対応表１０７は、ファイル名により識別される各プログラムソース（３９）毎の計算時間計測位置を示す行番号情報と、該計算時間計測位置（計測開始位置）からの残り区間における計算時間の最大値（即ち、最大計算時間）に係わる情報（単位ミリ秒）と、を含む。因みに、図１４で示した例では、ファイル名が“src_a.c”のプログラムソース（３９）における計算時間計測位置が行番号“２”の残り区間最大計算時間は、“７.５ミリ秒”であり、該プログラムソース３９における計算時間計測位置が行番号“６”の残り区間最大計算時間は、“２.３ミリ秒”である。更に、該プログラムソース３９における計算時間計測位置が行番号“９”の残り区間最大計算時間は、“４.２ミリ秒”である。また、ファイル名が“src_b.c”のプログラムソース（３９）における計算時間計測位置が行番号“３”の残り区間最大計算時間は、“１４.２ミリ秒”である。
【００７２】
図１５は、図２で示した導出部３３による、図１１で示した計算時間の関数近似処理において生成されるループ回数値と残り区間最大計算時間との対応を示す表（以下では、「対応表」と表記する。）の一例を示す説明図である。
【００７３】
図１５に示す対応表１０９は、既に説明したファイル名が“src_b.c”のプログラムソース３９に係わるものである。該プログラムソース３９においては、上述した指定区間内に存在するループ回数が変数“ｎ”であり、ループ回数確定直後の処理位置は、図１２で示したように、該プログラムソース３９における行番号“６”
の位置である。そして、該行番号“６”の直前の位置には、ループ回数変数である“ｎ”の値（符号９５ｂで示した）を記録するコードが、挿入されている。
【００７４】
図１５に示した例では、ループ回数値が“０”の場合の残り区間最大計算時間は“５.６ミリ秒”であり、ループ回数値が“１”の場合の残り区間最大計算時間は“６.３ミリ秒”であり、ループ回数値が“２”の場合の残り区間最大計算時間は“７.３ミリ秒”であり、ループ回数値が“３”の場合の残り区間最大計算時間は“８.７ミリ秒”である。また、回数値が“４の場合の残り区間最大計算時間は“９.３ミリ秒”であり、ループ回数値が“５”の場合の残り区間最大計算時間は“１０.７ミリ秒”であり、ループ回数値が“６”の場合の残り区間最大計算時間は“１２.５ミリ秒”であり、ループ回数値が“７”の場合の残り区間最大計算時間は“１２.７ミリ秒”である。
【００７５】
図１６は、図１５で示したループ回数値と残り区間最大計算時間との関係を示す、一次関数（一次式）により近似したグラフである。
【００７６】
図１６で示すグラフでは、その縦軸に残り区間最大計算時間（単位ミリ秒）が、その横軸にループ回数変数値“ｎ”が、夫々設定されている。図１６において、線分１１１は、一次関数ｙ＝１.１ｘ＋５.９を表す。また、折れ線１１３は、ループ回数変数値“ｎ”が“０”から“７”までの値をとる場合の個々のループ回数値に対応する残り区間最大計算時間を示すグラフ上の点同士を結ぶことにより形成された線である。
【００７７】
図１６を参照すれば、ループ回数値と残り区間最大計算時間との関係を、図１４で示した各値を基に一次関数ｙ＝１.１ｘ＋５.９で近似することにより、何れのループ回数変数値における残り区間最大計算時間よりも大きい値を取り得ることが明らかになる。
【００７８】
図１７は、図２で示した導出部３３による、図１１で示した計算時間の関数近似処理の動作の詳細を示すフローチャートである。
【００７９】
図１７において、導出部３３は、上述した（図１４で示したような）各々の計算時間計測位置（計算時間計測開始位置）に対し、ステップＳ１２２以下で夫々示されるような処理動作を実行する（ステップＳ１２１）。即ち、導出部３３は、まず、任意の計算時間計測位置に係わる計算量変動要因の種類が、ループによるものかどうかチェックする（ステップＳ１２２）。該チェックの結果、ループによるものであると判断すれば（ステップＳ１２２でＹＥＳ）、計算時間と共に、（図１５で示した対応表１０９に）記録されているループ回数の値毎に、該計算時間計測位置から上述した指定区間が終了するまでの間に要する計算時間の最大値を求め、図１５で示した対応表１０９に記録する処理を実行する（ステップＳ１２３）。
【００８０】
次に、図１５で示した対応表１０９に基づき、個々のループ回数値と、各々のループ回数値に対応する残り区間最大計算時間との関係を、例えば、図１６において示した一次関数：ｙ＝１.１ｘ＋５.９のような一次関数で近似する処理（所謂関数近似処理）を実行すると共に、該近似した一次関数を記録する処理を実行する。これにより、該計算時間計測位置における処理が終了する（ステップＳ１２４）。図１６において説明したように、関数近似処理においては、何れのループ回数値に対しても、プロファイル取得によって得られた最大計算時間よりも大きな値を取る関数により近似が行われる。
【００８１】
一般に、上述したループにおいては、ループ回数に対して一時的に計算時間が増加する傾向があるため、一次式（一次関数）により関数近似が可能であると予測される。しかし、実際に取得されたデータによっては、他の関数の形で近似することも可能である。また、プログラムソース３９のコードサイズに余裕がある場合には、図１５で示した対応表１０９を、該プログラムソース３９内に上述したループ回数値と残り区間最大計算時間との関係を示すデータテーブルとして持つことも可能である。
【００８２】
ステップＳ１２２でのチェックの結果、該計算時間計測位置に係わる計算量変動要因の種類が、ループによるものでないと判断すれば（ステップＳ１２２でＮＯ）、導出部３３は、プロファイル取得により得られた該計算時間計測位置から上記指定区間が終了するまでの全ての計算時間の中から計算時間の最大値を求める。そして、該求めた計算時間の最大値を、残り区間最大時間として図１５で示した対応表１０９に記録する。これにより、該計算時間計測位置における処理が終了する（ステップＳ１２５）。
【００８３】
ステップＳ１２３乃至ステップＳ１２５で夫々示した処理動作が、全ての計算時間計測位置において実行されることにより、図１７で示した一連の処理動作が終了する。
【００８４】
図１８は、図２で示した計算機能付加部３５において実行される処理動作の一例を示すフローチャートである。
【００８５】
図１８に示したフローチャートでは、計算機能付加部３５が、プログラム変換装置９へ入力されたプログラムソース３９に対し、以下に説明する手法により必要ＣＰＵ資源量見積りコードを挿入する。即ち、計算機付加部３５は、まず、上記プログラムソース３９における上述した指定区間の開始位置において、デッドライン時刻（即ち、現在時刻に性能指標として与えられた実行時間が加えられた時刻であって、プログラムソース３９が終了しなければならない時刻のことを指す。）を求めるコードを挿入する処理を実行する（ステップＳ１３１）。次に、上述した各々の計算時間計測位置における処理として（ステップＳ１３２）、該位置に後に詳述する必要ＣＰＵ資源再見積りコードを挿入するための処理を実行する。そして、上記コードを挿入した結果として生成されるプログラムソースを記録する処理を実行する（ステップＳ１３３）。上記処理が、全ての計算時間計測位置に対して実行されることにより、図１８で示した一連の処理動作が終了する。
【００８６】
図１９は、図２で示した計算機能付加部３５において実行される必要ＣＰＵ資源量見積りコードに係わる処理内容の一例を示すフローチャートである。
【００８７】
図１９において、計算機能付加部３５は、まず、任意の計算時間計測位置に係わる計算量変動要因の種類が、ループによるものかどうかチェックする（ステップＳ１４１）。該チェックの結果、ループによるものであると判断すれば（ステップＳ１４１でＹＥＳ）、計算量変動要因であるループにおけるループ回数変数“ｎ”より、確定したループ回数値を取得する（ステップＳ１４２）。次に、ステップＳ１４２で取得したループ回数値と、上述した近似関数とを用いて、上記残り区間最大計算時間を計算する。ここで、上述した近似関数を用いるのではなく、上記データテーブルを用いて上記残り区間最大計算時間を求めることとした場合には、該データテーブルから該ループ回数に対応する残り区間最大計算時間を求めることになる（ステップＳ１４３）。該処理動作が終了すると、計算機能付加部３５は、次に現在時刻を取得すると共に、該取得した現在時刻から図１８のステップＳ１３１において求めた該処理動作の実行に係わるデッドライン時刻までの余裕時間を求める処理を実行する（ステップＳ１４４）。
【００８８】
上記処理動作が終了すると、計算機能付加部３５は、次に、ステップＳ１４３で求めた残り区間最大計算時間を、デッドライン時刻までの余裕時間で除算することにより、該残り区間における処理動作の実行をデッドライン時刻までの間に終了させるのに必要なＣＰＵ資源割合（即ち、必要ＣＰＵ資源割合）を求める（ステップＳ１４５）。ステップＳ１４５で示した処理動作が終了することにより、図１９で示した一連の処理動作が終了することになる。なお、ステップＳ１４１でのチェックの結果、ループによるものでないと判断すれば（ステップＳ１４１でＮＯ）、直ちにステップＳ１４４で示した処理動作に移行する。この場合、残り区間最大計算時間は、図１４で示した対応表１０７により、上記挿入コードの挿入時に判明しているので、上記対応表１０７中に記録されている値を用いることになる。
【００８９】
図２０は、図２で示した割当て機能付加部３７において実行される処理動作の一例を示すフローチャートである。
【００９０】
図２０において、割当て機能付加部３７は、各々の計算時間計測位置に対し、ステップＳ１５２で示す処理動作を実行する（ステップＳ１５１）。即ち、各々の計算時間計測位置毎に求められる必要ＣＰＵ資源割合（計算機能付加部３５において挿入された必要ＣＰＵ資源量見積りコードにより計算される）が、計算機能付加部３５から出力されると、割当て機能付加部３７は、該必要ＣＰＵ資源割合を確保することができるように、プログラム変換処理を実行する（ステップＳ１５２）。そして、全ての計算時間計測位置毎に、ステップＳ１５２で示した処理動作が終了すると、図２０で示した一連の処理動作が終了することになる。
【００９１】
なお、図２０で示した処理動作において用いられる、ＣＰＵ資源割合を確保するための手段の一例としては、上掲の非特許文献１に開示されている手法が挙げられる。該手法を用いる場合には、必要ＣＰＵ資源割合をＯＳ内の資源制御機構に設定するためのシステムコールを呼び出すコードが挿入されることになる。
【００９２】
図２１は、図２で示したプログラム変換装置９が、図４で示したプログラムソース４７を基に出力する性能確保プログラムの一例を示す説明図である。図２１は、ファイル名が“src_b.c”であるプログラムソース３９から変換された性能確保プログラムの例を示す。
【００９３】
図２１に示す性能確保プログラム１６１では、上述した指定区間の開始位置である行番号“３”の直前の位置に、符号１６１ａで示すように、デッドライン（ＤＬ）時刻として現在時刻から指定された実行時間である“２０ミリ秒”後の時刻を設定するためのコードが挿入されている。また、図１４で示した対応表１０７に記録された位置である行番号“３”の直前の位置に、符号１６１ｂで示すように、必要ＣＰＵ資源量見積りコードが挿入されている。符号１６１ｂで示す位置における必要ＣＰＵ資源割合（ｒ）は、上記対応表１０７に記録された残り区間最大計算時間である“１４.２ミリ秒”を、現在時刻からデッドライン時刻までの間の時間で除算することにより求められたものである。そして、上記符号１６１ｂで示した位置の直後の位置には、符号１６１ｃで示すように、上記（求められた）必要ＣＰＵ資源割合（ｒ）を確保するためのコードが挿入されている。また、図９で示したループリスト６５に記録されている位置である行番号“６”
の直前の位置にも、符号１６１ｄで示すように、必要ＣＰＵ資源量見積りコードが挿入されている。符号１６１ｄで示す位置における必要ＣＰＵ資源割合（ｒ）は、図１６において求めた関係である一次関数：ｙ＝１.１ｘ＋５.９のｘに、ループ回数変数の値“ｎ”を代入することにより求められる残り区間最大計算時間を、現在時刻からデッドライン時刻までの間の時間で除算することにより求められたものである。そして、上記符号１６１ｄで示した位置の直後の位置には、符号１６１ｅで示すように、上記（求められた）必要ＣＰＵ資源割合（ｒ）を確保するためのコードが挿入されている。
【００９４】
上述した構成のプログラムソース１６１が、ファイル名“src_b.c”のプログラムソース（３９）の性能確保プログラムとして、プログラム変換装置９から受信機本体１へ出力されることになる。
【００９５】
以上、本発明の好適な実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【符号の説明】
【００９６】
１  ディジタル放送受信機本体（受信機本体）
３  リモートコントローラ（リモコン）
５  アンテナ
７  表示装置
９  プログラム変換装置
１１  記憶装置
１３  プロセッサ
１５  信号受信部
１７  ディジタル放送チューナ
１９  ディジタル放送受信機ソフトウェア
２１  リモートコントローラタスク（リモコンタスク）
２３  チューナタスク
２５  映像デコードタスク
２７  音声デコードタスク
２９  データ放送ブラウザタスク
３１  計算量変動要因抽出部（抽出部）
３３  変動要因と計算量との関係導出部（導出部）
３５  必要ＣＰＵ資源量計算機能付加部（計算機能付加部）
３７  ＣＰＵ資源割当て機能付加部（割当て機能付加部）
３９  プログラムソース
４１  区間及び実行時間要求指定コード（コード）
１００  ディジタル放送受信システム
【図１】
2010186301.tif 000003
【図２】
2010186301.tif 000004
【図３】
2010186301.tif 000005
【図４】
2010186301.tif 000006
【図５】
2010186301.tif 000007
【図６】
2010186301.tif 000008
【図７】
2010186301.tif 000009
【図８】
2010186301.tif 000010
【図９】
2010186301.tif 000011
【図１０】
2010186301.tif 000012
【図１１】
2010186301.tif 000013
【図１２】
2010186301.tif 000014
【図１３】
2010186301.tif 000015
【図１４】
2010186301.tif 000016
【図１５】
2010186301.tif 000017
【図１６】
2010186301.tif 000018
【図１７】
2010186301.tif 000019
【図１８】
2010186301.tif 000020
【図１９】
2010186301.tif 000021
【図２０】
2010186301.tif 000022
【図２１】
2010186301.tif 000023