IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ トヨタ自動車株式会社の特許一覧

特許7697480リソース管理装置、リソース管理方法及びリソース管理用コンピュータプログラム
<>
  • 特許-リソース管理装置、リソース管理方法及びリソース管理用コンピュータプログラム 図1
  • 特許-リソース管理装置、リソース管理方法及びリソース管理用コンピュータプログラム 図2
  • 特許-リソース管理装置、リソース管理方法及びリソース管理用コンピュータプログラム 図3
  • 特許-リソース管理装置、リソース管理方法及びリソース管理用コンピュータプログラム 図4
  • 特許-リソース管理装置、リソース管理方法及びリソース管理用コンピュータプログラム 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-06-16
(45)【発行日】2025-06-24
(54)【発明の名称】リソース管理装置、リソース管理方法及びリソース管理用コンピュータプログラム
(51)【国際特許分類】
   G06F 9/50 20060101AFI20250617BHJP
【FI】
G06F9/50 120Z
【請求項の数】 5
(21)【出願番号】P 2023000186
(22)【出願日】2023-01-04
(65)【公開番号】P2024096599
(43)【公開日】2024-07-17
【審査請求日】2024-03-11
(73)【特許権者】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【弁理士】
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100147555
【弁理士】
【氏名又は名称】伊藤 公一
(74)【代理人】
【識別番号】100123593
【弁理士】
【氏名又は名称】関根 宣夫
(74)【代理人】
【識別番号】100133835
【弁理士】
【氏名又は名称】河野 努
(72)【発明者】
【氏名】白石 真一
(72)【発明者】
【氏名】佐々木 悠
(72)【発明者】
【氏名】横尾 一直
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2016-99786(JP,A)
【文献】特開2011-242898(JP,A)
【文献】特開2019-125093(JP,A)
【文献】特開2010-44590(JP,A)
【文献】特開2017-162209(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
一連の処理を第1のハードウェアで実行したときの前記一連の処理のうちの少なくとも一つの所定の順序の処理の出力タイミングと、前記第1のハードウェアよりも処理能力が低い第2のハードウェアで前記一連の処理を実行したときの前記所定の順序の処理の出力タイミングとの差の絶対値和が所定の許容範囲内となるように、前記一連の処理に対する前記第1のハードウェアのリソースの割り当てを決定するリソース割り当て部、
を有するリソース管理装置。
【請求項2】
前記第1のハードウェアは複数の演算回路を有し、
前記一連の処理を前記第1のハードウェアで実行したときの前記一連の処理のそれぞれの出力タイミングが前記第2のハードウェアで前記一連の処理を実行したときの対応する処理の出力タイミングよりも早くなる条件を満たす範囲で、前記複数の演算回路のうち、前記一連の処理に割り当てる演算回路の数が最小化されるように、当該演算回路の数を決定する初期設定部をさらに有する、請求項1に記載のリソース管理装置。
【請求項3】
前記リソース割り当て部は、前記第1のハードウェアで前記一連の処理を実行したときの前記所定の順序の処理の出力タイミングと前記第2のハードウェアで前記一連の処理を実行したときの前記所定の順序の処理の出力タイミングとの差の絶対値和が前記所定の許容範囲内となるように、前記一連の処理に割り当てた個々の演算回路の占有率及び前記第1のハードウェアと他の機器間の通信回線の帯域幅の少なくとも一方を決定する、請求項2に記載のリソース管理装置。
【請求項4】
コンピュータが、一連の処理を第1のハードウェアで実行したときの前記一連の処理のうちの少なくとも一つの所定の順序の処理の出力タイミングと、前記第1のハードウェアよりも処理能力が低い第2のハードウェアで前記一連の処理を実行したときの前記所定の順序の処理の出力タイミングとの差の絶対値和が所定の許容範囲内となるように、前記一連の処理に対する前記第1のハードウェアのリソースの割り当てを決定する、
ことを含むリソース管理方法。
【請求項5】
一連の処理を第1のハードウェアで実行したときの前記一連の処理のうちの少なくとも一つの所定の順序の処理の出力タイミングと、前記第1のハードウェアよりも処理能力が低い第2のハードウェアで前記一連の処理を実行したときの前記所定の順序の処理の出力タイミングとの差の絶対値和が所定の許容範囲内となるように、前記一連の処理に対する前記第1のハードウェアのリソースの割り当てを決定する、
ことをコンピュータに実行させるためのリソース管理用コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、所定の処理に割り当てられるハードウェアのリソースを管理するリソース管理装置、リソース管理方法及びリソース管理用コンピュータプログラムに関する。
【背景技術】
【0002】
完全仮想化環境における仮想計算機システムのCPUリソースを効率的に利用するための技術が提案されている(特許文献1を参照)。
【0003】
特許文献1に開示された仮想計算機システムでは、ハイパーバイザが、ゲストOSからのHLT命令に基づいて仮想マシンに割り当てられたCPUの使用率を算出し、算出されたCPUの使用率に基づいて仮想マシンにCPUを割り当てる時間長を決定する。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2013-214146号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ソフトウェア開発の効率を上げるためには、ソフトウェアの出力がハードウェアに依存しないことが望まれる。特に、特定のハードウェアよりも高スペックな別のハードウェア上で、その特定のハードウェアで動作するソフトウェアを、開発中のソフトウェアアプリケーションの一部として動作させる場合、そのソフトウェアの出力が特定のハードウェアで動作させたときの出力と変わらないことが望ましい。
【0006】
そこで、本発明は、所定のハードウェア上でソフトウェアを実行する際に、そのソフトウェアに対してハードウェアリソースを適切に割り当てることが可能なリソース管理装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
一つの実施形態によれば、リソース管理装置が提供される。このリソース管理装置は、一連の処理を第1のハードウェアで実行したときの一連の処理のうちの少なくとも一つの所定の順序の処理の出力タイミングと、第1のハードウェアよりも処理能力が低い第2のハードウェアで一連の処理を実行したときのその所定の順序の処理の出力タイミングとの差の絶対値和が所定の許容範囲内となるように、一連の処理に対する第1のハードウェアのリソースの割り当てを決定するリソース割り当て部を有する。
【0008】
このリソース管理装置において、第1のハードウェアは複数の演算回路を有することが好ましい。そしてこのリソース管理装置は、一連の処理を第1のハードウェアで実行したときの一連の処理のそれぞれの出力タイミングが第2のハードウェアで一連の処理を実行したときの対応する処理の出力タイミングよりも早くなり、かつ、複数の演算回路のうち、一連の処理に割り当てる演算回路の数が最小化されるように演算回路の数を決定する初期設定部をさらに有することが好ましい。
【0009】
また、このリソース管理装置において、リソース割り当て部は、第1のハードウェアで一連の処理を実行したときの所定の順序の処理の出力タイミングと第2のハードウェアで一連の処理を実行したときの所定の順序の処理の出力タイミングとの差の絶対値和が所定の許容範囲内となるように、一連の処理に割り当てた個々の演算回路の占有率及び第1のハードウェアと他の機器間の通信回線の帯域幅の少なくとも一方を決定することが好ましい。
【0010】
他の形態によれば、リソース管理方法が提供される。このリソース管理方法は、一連の処理を第1のハードウェアで実行したときの一連の処理のうちの少なくとも一つの所定の順序の処理の出力タイミングと、第1のハードウェアよりも処理能力が低い第2のハードウェアで一連の処理を実行したときのその所定の順序の処理の出力タイミングとの差の絶対値和が所定の許容範囲内となるように、一連の処理に対する第1のハードウェアのリソースの割り当てを決定する、ことを含む。
【0011】
さらに他の形態によれば、リソース管理用コンピュータプログラムが提供される。このリソース管理用コンピュータプログラムは、一連の処理を第1のハードウェアで実行したときの一連の処理のうちの少なくとも一つの所定の順序の処理の出力タイミングと、第1のハードウェアよりも処理能力が低い第2のハードウェアで一連の処理を実行したときのその所定の順序の処理の出力タイミングとの差の絶対値和が所定の許容範囲内となるように、一連の処理に対する第1のハードウェアのリソースの割り当てを決定する、ことをコンピュータに実行させるための命令を含む。
【発明の効果】
【0012】
本開示に係るリソース管理装置は、所定のハードウェア上でソフトウェアを実行する際に、そのソフトウェアに対してハードウェアリソースを適切に割り当てることができるという効果を奏する。
【図面の簡単な説明】
【0013】
図1】リソース管理装置のハードウェア構成図である。
図2】リソース管理処理に関する、プロセッサの機能ブロック図である。
図3】(a)~(c)は、それぞれ、評価値の一例を説明する図である。
図4】評価値の他の一例を説明する図である。
図5】リソース管理処理の動作フローチャートである。
【発明を実施するための形態】
【0014】
以下、図を参照しつつ、リソース管理装置、及び、リソース管理装置にて実行されるリソース管理方法ならびにリソース管理用コンピュータプログラムについて説明する。このリソース管理装置は、処理能力が相対的に低いハードウェア(第2のハードウェア)上で動作するように開発された所定のソフトウェアを、処理能力が相対的に高いハードウェア(第1のハードウェア)で動作させるときの、そのソフトウェアの一連の処理に対して割り当てるハードウェアリソースを決定する。具体的に、このリソース管理装置は、所定のソフトウェアを第1のハードウェア上で動作させたときのそのソフトウェアによる一連の処理の処理結果の出力タイミングと、そのソフトウェアを第2のハードウェア上で動作させたときのそのソフトウェアによる一連の処理の処理結果の出力タイミングとの差を計測する。そしてこのリソース管理装置は、その差の絶対値が許容範囲内に収まるように、そのソフトウェアに対する第1のハードウェアのリソースの割り当てを決定する。
【0015】
以下では、説明の便宜上、リソース管理処理の対象となる所定のソフトウェアを、単に対象ソフトウェアと呼ぶことがある。
【0016】
第1のハードウェア及び第2のハードウェアは、それぞれ、所定の用途において実行される所定の演算処理を実行可能なハードウェアであり、例えば、車両自体、あるいは車両に搭載される何れかの機器の制御に用いられる電子制御ユニット(ECU)である。しかし、第1のハードウェア及び第2のハードウェアは、ECUに限られず、所定の演算処理を実行可能なものであればよい。
【0017】
第1のハードウェアは、一つまたは複数の演算ユニットを含む。演算ユニットは、例えば、プロセッサに含まれる個々の演算回路、すなわちコアであってもよく、あるいは、互いに別個に設けられる演算回路であってもよい。さらに、演算ユニットは、汎用のものに限られず、特定の種類の演算を実行するための専用の演算回路であってもよい。さらに、第1のハードウェアは、メモリを含んでいてもよい。さらにまた、第1のハードウェアは、所定の通信規格に従って通信回線を通じて他の機器と通信するための通信インターフェースを含んでもよい。同様に、第2のハードウェアは、少なくとも一つの演算ユニットを含む。演算ユニットは、例えば、汎用のものに限られず、特定の種類の演算を実行するための専用の演算ユニットであってもよい。さらに、第2のハードウェアは、メモリを含んでいてもよい。さらにまた、第2のハードウェアは、所定の通信規格に従って通信回線を通じて他の機器と通信するための通信インターフェースを含んでもよい。
【0018】
第1のハードウェアは、第2のハードウェアよりも相対的に高い処理能力を有する。具体的に、第1のハードウェアが有する演算ユニットの数は、第2のハードウェアが有する演算ユニットの数よりも多くてもよい。あるいは、第1のハードウェアが有する演算ユニットの単位時間当たりの演算回数は、第2のハードウェアが有する演算ユニットの単位時間当たりの演算回数よりも多くてもよい。あるいはまた、第1のハードウェアが利用可能な通信帯域は、第2のハードウェアが利用可能な通信帯域よりも広くてもよい。さらに、第1のハードウェアが有するメモリの容量は、第2のハードウェアが有するメモリの容量よりも大きくてもよい。さらにまた、第1のハードウェアが有するメモリの読み込み速度及び書き込み速度は、第2のハードウェアが有するメモリの読み込み速度及び書き込み速度よりも速くてもよい。
【0019】
対象ソフトウェアは、例えば、ECU上で動作する、車両の自動運転制御に関するソフトウェアである。対象ソフトウェアに含まれる一連の処理には、例えば、車載のカメラといった車両の周囲を表すセンサ信号から車両の周囲の移動物体を検出する処理、その検出結果に基づく移動物体の将来の軌跡を予測する処理、その予測結果に基づく車両の走行予定経路を作成する処理が含まれる。さらに、一連の処理には、ドライバモニタカメラにより得られたドライバを表す画像に基づくドライバの状態判定処理が含まれてもよい。そしてそれらの処理の結果が車両の制御に利用される。したがって、対象ソフトウェアの一連の処理のそれぞれの出力のタイミングが、対象ソフトウェアが動作するハードウェアに依存しないことが好ましい。
【0020】
図1は、リソース管理装置のハードウェア構成図である。リソース管理装置1は、通信インターフェース11と、ストレージ装置12と、メモリ13と、プロセッサ14とを有する。通信インターフェース11、ストレージ装置12及びメモリ13は、プロセッサ14と信号線を介して接続されている。リソース管理装置1は、キーボード及びマウスといった入力装置と、液晶ディスプレイといった表示装置とをさらに有してもよい。
【0021】
通信インターフェース11は、通信部の一例であり、リソース管理装置1を、第1のハードウェア21及び第2のハードウェア22に接続するためのインターフェース回路を有する。そして通信インターフェース11は、対象ソフトウェアを第1のハードウェア21または第2のハードウェア22で動作させるために必要なデータ、対象ソフトウェアを構成する1以上のソフトウェアモジュール及び命令をプロセッサ14から受け取って第1のハードウェア21または第2のハードウェア22へ出力する。なお、そのデータには、例えば、対象ソフトウェアが処理対象とする画像、音声といった各種のデータ、及び、対象ソフトウェアに対して割り当てられるハードウェアリソースを特定するための情報が含まれる。また、通信インターフェース11は、第1のハードウェア21または第2のハードウェア22から、対象ソフトウェアによる処理の結果、その処理に要した時間の計測値などを受け取ってプロセッサ14へわたす。
【0022】
ストレージ装置12は、記憶部の一例であり、例えば、ハードディスク装置または光記録媒体及びそのアクセス装置を有する。そしてストレージ装置12は、リソース管理処理において使用される各種のデータ及び情報を記憶する。例えば、ストレージ装置12は、対象ソフトウェアを構成する1以上のソフトウェアモジュール及び対象ソフトウェアが処理対象とするデータを記憶する。また、ストレージ装置12は、対象ソフトウェアを第1のハードウェア21上で実行するために必要なソフトウェア、例えば、第1のハードウェア21上で動作する仮想マシンを構築するためのソフトウェアを記憶する。さらに、ストレージ装置12は、対象ソフトウェアを第2のハードウェア22上で実行する際に、対象ソフトウェアの一連の処理に割り当てられる、第2のハードウェア22のリソースを表す情報(以下、説明の便宜上、基準割り当て情報と呼ぶ)を記憶する。基準割り当て情報には、例えば、メモリ容量、演算ユニットの数、演算ユニットの占有率及び通信帯域に関する割り当て情報が含まれる。さらに、ストレージ装置12は、プロセッサ14上で実行される、リソース管理処理を実行するためのコンピュータプログラムを記憶してもよい。さらにまた、ストレージ装置12は、対象ソフトウェアに割り当てるハードウェアリソースを特定するための情報を記憶してもよい。
【0023】
メモリ13は、記憶部の他の一例であり、例えば、不揮発性の半導体メモリ及び揮発性の半導体メモリを有する。そしてメモリ13は、リソース管理処理の実行中に生成される各種データなどを一時的に記憶する。
【0024】
プロセッサ14は、制御部の一例であり、1個または複数個のCPU(Central Processing Unit)及びその周辺回路を有する。プロセッサ14は、論理演算ユニットあるいは数値演算ユニットといった他の演算回路をさらに有していてもよい。そしてプロセッサ14は、リソース管理処理を実行する。
【0025】
図2は、リソース管理処理に関連するプロセッサ14の機能ブロック図である。プロセッサ14は、初期設定部31と、リソース割り当て部32とを有する。プロセッサ14が有するこれらの各部は、例えば、プロセッサ14上で動作するコンピュータプログラムにより実現される機能モジュールである。あるいは、プロセッサ14が有するこれらの各部は、プロセッサ14に設けられる、専用の演算回路であってもよい。プロセッサ14は、リソース管理処理を実行して、対象ソフトウェアに対する、第1のハードウェア21のリソースの割り当てを決定する。
【0026】
初期設定部31は、第2のハードウェア22で対象ソフトウェアの一連の処理を実行するときのメモリ容量と同じ容量の第1のハードウェア21のメモリを対象ソフトウェアの一連の処理に割り当てる。なお、初期設定部31は、ストレージ装置12に記憶されている基準割り当て情報を参照して、上記のメモリ容量を特定すればよい。
【0027】
さらに、初期設定部31は、第1のハードウェア21上で対象ソフトウェアの一連の処理を実行したときに、第2のハードウェア22で対象ソフトウェアの一連の処理を実行したときの各処理の出力タイミングよりも、対応する処理の出力タイミングが早くなる演算ユニット数のうち、最小となる数を求める。そして初期設定部31は、その最小となる数の演算ユニットを、対象ソフトウェアの一連の処理に割り当てる。これにより、初期設定部31は、ハードウェアの違いによる、対象ソフトウェアの一連の処理の結果の差を軽減しつつ、その一連の処理に適切な数の演算ユニットを割り当てることができる。
【0028】
そのために、初期設定部31は、第2のハードウェア22上で対象ソフトウェアの一連の処理を実行する。その際、初期設定部31は、基準割り当て情報で指定されたハードウェアリソースを対象ソフトウェアの一連の処理に割り当てる。さらに、初期設定部31は、ストレージ装置12から読み出した、対象ソフトウェアが処理対象とするデータを、通信インターフェース11を介して第2のハードウェア22にわたす。初期設定部31は、対象ソフトウェアの一連の処理を第2のハードウェア22上で実行するのに要する時間を計測し、計測したその時間を基準処理時間としてメモリ13に保存する。さらに、初期設定部31は、それら一連の処理を開始してから所定の順序の処理が終了するまでに要する時間を計測し、計測したその時間を所定順基準処理時間としてメモリ13に保存する。
【0029】
さらに、初期設定部31は、第1のハードウェア21上で対象ソフトウェアの一連の処理を実行する。その際、初期設定部31は、第1のハードウェア21が有する演算ユニットのうち、対象ソフトウェアの実行に利用する演算ユニットの数を変更しつつ、対象ソフトウェアの一連の処理に要する時間を計測する。なお、対象ソフトウェアを第1のハードウェア21上で実行するために必要なソフトウェア、例えば、仮想マシンを構築するソフトウェアが必要な場合、初期設定部31は、そのソフトウェアも第1のハードウェア21上で実行させる。また、初期設定部31は、割り当て可能な最大のハードウェアリソースを対象ソフトウェアに割り当てて、対象ソフトウェアの一連の処理に要する時間を計測すればよい。あるいは、初期設定部31は、基準割り当て情報で指定されるハードウェアリソースと同等の第1のハードウェア21のハードウェアリソースを対象ソフトウェアに割り当てて、対象ソフトウェアの一連の処理に要する時間を計測してもよい。そして初期設定部31は、対象ソフトウェアの一連の処理に要する時間が基準処理時間よりも短くなる、最小の演算ユニットの数を特定する。そして初期設定部31は、その最小となる数の演算ユニットを、対象ソフトウェアに割り当てると決定する。
【0030】
リソース割り当て部32は、対象ソフトウェアの一連の処理を第1のハードウェア21上で実行する際にそれら一連の処理に割り当てられる第1のハードウェア21のリソースを決定する。その際、リソース割り当て部32は、対象ソフトウェアの一連の処理を第1のハードウェア21で実行したときのそれら一連の処理のうちの所定の順序の処理の出力タイミングと、第2のハードウェア22でそれら一連の処理を実行したときの所定の順序の処理の出力タイミングとの差の絶対値和を計測する。そしてリソース割り当て部32は、その差の絶対値和が所定の許容範囲内となるように、対象ソフトウェアの一連の処理に対する第1のハードウェア21のリソースの割り当てを決定する。
【0031】
本実施形態では、リソース割り当て部32は、初期設定部31により設定されたメモリ容量及び設定された数の演算ユニットを用いて、対象ソフトウェアの一連の処理を第1のハードウェア21上で動作させる。その際、対象ソフトウェアを第1のハードウェア21上で実行するために必要なソフトウェア、例えば、仮想マシンを構築するソフトウェアが必要な場合、リソース割り当て部32は、そのソフトウェアも第1のハードウェア21上で実行させる。そしてリソース割り当て部32は、それら一連の処理が開始されてから、それら一連の処理のうちの少なくとも一つの所定の順序の処理が終了するまでの所要時間を計測する。所定の順序の処理は、例えば、最後の処理とすることができるが、これに限られず、最初の処理、あるいは、途中の何れかの処理であってもよい。
【0032】
リソース割り当て部32は、計測した所要時間と所定順基準処理時間との差の絶対値を評価値として算出する。リソース割り当て部32は、評価値が所定の許容範囲に含まれない場合、対象ソフトウェアの実行に利用するハードウェアリソースを変更して、第1のハードウェア21上で対象ソフトウェアの一連の処理を再度実行する。そしてリソース割り当て部32は、それら一連の処理が開始されてから、それら一連の処理のうちの所定の順序の処理が終了するまでの所要時間を再度計測する。
【0033】
変更するハードウェアリソースは、初期設定部31により設定されるメモリ容量及び演算ユニット数以外のリソースであり、例えば、対象ソフトウェアの一連の処理に割り当てられた個々の演算ユニットの占有率及び第1のハードウェア21と他の機器間の通信回線の帯域幅の少なくとも何れかである。
【0034】
リソース割り当て部32は、評価値が所定の許容範囲に含まれるようになるまで上記の処理を繰り返す。その際、リソース割り当て部32は、トライアンドエラー方式で所定量ずつ対象ソフトウェアに割り当てるハードウェアリソースを変更してもよく、あるいは、シミュレーティッドアニーリングあるいは最急降下法といった最適化手法に従って対象ソフトウェアに割り当てるハードウェアリソースを変更してもよい。
【0035】
一方、評価値が所定の許容範囲内に含まれると、リソース割り当て部32は、そのときに対象ソフトウェアが利用したハードウェアリソースを、対象ソフトウェアの一連の処理に割り当てるハードウェアリソースとして決定する。そしてリソース割り当て部32は、決定したハードウェアリソースを表すリソース割り当て情報をストレージ装置12に保存する。
【0036】
図3(a)~図3(c)は、それぞれ、評価値Eの一例を説明する図である。図3(a)~図3(c)において、横軸は経過時間を表す。また、上側に示される、outl[i](i=1,2,...,n、ただし、nは対象ソフトウェアの一連の処理の数)は、対象ソフトウェアの一連の処理を第2のハードウェア22上で動作させたときの各処理の出力タイミングを表す。一方、下側に示される、outh[i](i=1,2,...,n)は、対象ソフトウェアの一連の処理を第1のハードウェア21上で動作させたときの各処理の出力タイミングを表す。なお、図3(a)~図3(c)に示される例では、対象ソフトウェアの一連の処理の数nは5である。
【0037】
図3(a)に示される例では、評価値Eの算出に利用される所定の処理の順序は最後の処理である。この場合、リソース割り当て部32は、対象ソフトウェアの一連の処理を第1のハードウェア21上で動作させたときの動作開始から最後の処理の結果が出力されるまでの時間とそれら一連の処理を第2のハードウェア22上で動作させたときの動作開始から最後の処理の結果が出力されるまでの時間との差の絶対値を評価値Eとして算出する。すなわち、評価値Eは|outh[5]-outl[5]|で表される。そしてリソース割り当て部32は、評価値Eが所定の許容範囲に含まれるときに対象ソフトウェアが利用したハードウェアリソースを、対象ソフトウェアの一連の処理に割り当てるハードウェアリソースとして決定する。
【0038】
なお、評価値は上記の例に限られない。例えば、リソース割り当て部32は、対象ソフトウェアの一連の処理のうちの二つ以上について、対象ソフトウェアを第のハードウェア21上で動作させたときと第2のハードウェア22上で動作させたときのそれらの結果の出力タイミングの差の絶対値和を評価値Eとして算出してもよい。例えば、図3(b)に示されるように、評価値Eは、一連の処理のうちの最初の処理結果の出力タイミングの差の絶対値|outh[1]-outl[1]|と最後の処理結果の出力タイミングの差の絶対値|outh[5]-outl[5]|の和であってもよい。あるいは、図3(c)に示されるように、評価値Eは、一連の処理のそれぞれの処理結果の出力タイミングの差の絶対値の和Σ|outh[i]-outl[i]| であってもよい。あるいはまた、上記のそれぞれの評価値Eにおいて、対象ソフトウェアの動作が開始されるタイミングの代わりに、一連の処理のうちの最初の処理の出力タイミングからそれ以降の各処理の出力タイミングまでの時間が計算されてもよい。
【0039】
図4は、評価値Eの他の例を説明する図である。図4において、横軸は経過時間を表す。また、上側に示される、outl[i](i=1,2,...,n、ただし、nは対象ソフトウェアの一連の処理の数)は、対象ソフトウェアの一連の処理を第2のハードウェア22上で動作させたときの各処理の出力タイミングを表す。一方、下側に示される、outh[i](i=1,2,...,n)は、対象ソフトウェアの一連の処理を第1のハードウェア21上で動作させたときの各処理の出力タイミングを表す。図4に示される例でも、対象ソフトウェアの一連の処理の数nは5である。
【0040】
この例では、リソース割り当て部32は、対象ソフトウェアの一連の処理に含まれる、連続する個々の二つの処理結果の出力タイミングの間隔を評価値Eの算出に利用する。例えば、リソース割り当て部32は、対象ソフトウェアを第1のハードウェア21上で動作させたときと第2のハードウェア22上で動作させたときの対象ソフトウェアの一連の処理のうちの個々の連続する二つの処理結果の出力タイミング間の間隔の差の絶対値和を評価値Eとして算出する。すなわち、評価値Eは次式で表される。
E=Σ|Δhi,i+1-Δli,i+1|
ここで、Δhi,i+1は、対象ソフトウェアを第1のハードウェア21上で動作させたときのi番目の処理結果の出力タイミングと(i+1)番目の処理結果の出力タイミングの間隔である。同様に、Δli,i+1は、対象ソフトウェアを第2のハードウェア22上で動作させたときのi番目の処理結果の出力タイミングと(i+1)番目の処理結果の出力タイミングの間隔である。
【0041】
リソース割り当て部32は、このような評価値Eを利用することで、個々の連続する二つの処理結果の出力タイミング間の間隔が、対象ソフトウェアを動作させるハードウェアによらず一定となるように、対象ソフトウェアに割り当てる第1のハードウェア21のリソースを決定できる。なお、この評価値が用いられる場合でも、この評価値が許容範囲内となることで、対象ソフトウェアを第1のハードウェア21上で動作させたときと第2のハードウェア22上で動作させたときの各処理の出力タイミングの差の絶対値和も一定以下になるまで低下する。
【0042】
図5は、リソース管理処理の動作フローチャートである。
【0043】
プロセッサ14の初期設定部31は、第2のハードウェア22で対象ソフトウェアの一連の処理を実行するときのメモリ容量と同じ容量の第1のハードウェア21のメモリを対象ソフトウェアの一連の処理に割り当てる(ステップS101)。また、初期設定部31は、第2のハードウェア22で対象ソフトウェアの一連の処理を実行したときの各処理の出力タイミングよりも、対応する処理の出力タイミングが早くなる第1のハードウェア21の演算ユニット数のうち、最小となる数を求める。そして初期設定部31は、その最小となる数の演算ユニットを、対象ソフトウェアに割り当てる(ステップS102)。
【0044】
プロセッサ14のリソース割り当て部32は、対象ソフトウェアの一連の処理を、所定のハードウェアリソースを用いて第1のハードウェア21で実行したときのそれら一連の処理のうちの所定の順序の処理の出力タイミングと、第2のハードウェア22でそれら一連の処理を実行したときの所定の順序の処理の出力タイミングとの差の絶対値和を評価値Eとして算出する(ステップS103)。そしてリソース割り当て部32は、評価値Eが所定の許容範囲に含まれるか否か判定する(ステップS104)。
【0045】
評価値Eが所定の許容範囲に含まれない場合(ステップS104-No)、リソース割り当て部32は、対象ソフトウェアに割り当てるハードウェアリソースを変更する(ステップS105)。そしてリソース割り当て部32は、ステップS103以降の処理を繰り返す。
【0046】
一方、評価値Eが所定の許容範囲に含まれる場合(ステップS104-Yes)、リソース割り当て部32は、ステップS103にて用いたハードウェアリソースを、対象ソフトウェアの一連の処理に割り当てるハードウェアリソースとして決定する(ステップS106)。その後、プロセッサ14は、リソース管理処理を終了する。
【0047】
以上に説明してきたように、このリソース管理装置は、処理能力が相対的に低い第2のハードウェア上で動作するように開発された対象ソフトウェアを、処理能力が相対的に高い第1のハードウェアで動作させるときの、そのソフトウェアに対するハードウェアリソースの割り当てを決定する。特に、このリソース管理装置は、対象ソフトウェアを第1のハードウェア上で動作させたときのそのソフトウェアによる処理結果の出力タイミングと、そのソフトウェアを第2のハードウェア上で動作させたときのそのソフトウェアによる処理結果の出力タイミングとの差の絶対値を評価値として算出する。そしてその評価値が許容範囲内に収まるように、このリソース管理装置は、そのソフトウェアに対する第1のハードウェアのリソースの割り当てを決定する。このように、このリソース管理装置は、対象ソフトウェアの一連の処理のそれぞれの出力タイミングが第2のハードウェアで実行したときと変わらないように第1のハードウェアのリソースを割り当てるので、ハードウェアによる、一連の処理の出力タイミングに違いが生じることを抑制できる。その結果として、このリソース管理装置は、対象ソフトウェアの一連の処理を第1のハードウェアで実行し、その結果を他のソフトウェアが利用する際に不備が生じることを抑制できる。したがって、このリソース管理装置は、ソフトウェアアプリケーションの開発において開発済みのソフトウェアを利用することを容易化して、ソフトウェアアプリケーションの開発の工数を削減することができる。
【0048】
変形例によれば、リソース割り当て部32は、対象ソフトウェアに割り当てるハードウェアのリソースを決定する際に、第1のハードウェア21が有する演算ユニットのうち、対象ソフトウェアの一連の処理の実行に用いられる演算ユニットの数も決定してもよい。この場合、リソース割り当て部32は、他のハードウェアリソースの割り当てを決定するときと同様に、評価値が所定の許容範囲に含まれるようになるまで、利用するハードウェアリソースを変更する際に、対象ソフトウェアの一連の処理の実行に用いられる演算ユニットの数も変更すればよい。また、初期設定部31による、対象ソフトウェアの実行に用いられる演算ユニットの数の決定は省略される。
【0049】
上記の実施形態または変形例によるリソース管理装置のプロセッサが有する各部の機能をコンピュータに実現させるコンピュータプログラムは、コンピュータによって読取り可能な記録媒体に記憶された形で提供されてもよい。なお、コンピュータによって読取り可能な記録媒体は、例えば、磁気記録媒体、光記録媒体、又は半導体メモリとすることができる。
【0050】
以上のように、当業者は、本発明の範囲内で、実施される形態に合わせて様々な変更を行うことができる。
【符号の説明】
【0051】
1 リソース管理装置
11 通信インターフェース
12 ストレージ装置
13 メモリ
14 プロセッサ
21 第1のハードウェア
22 第2のハードウェア
31 初期設定部
32 リソース割り当て部
図1
図2
図3
図4
図5