(57)【要約】【課題】パフォーマンスを向上させる。【解決手段】複数のプロセッサコアを備えるデータ処理装置であって、第１のプロセッサコアが、第１のプロセッサコアに対する処理を検出する検出部と、第２プロセッサコアのローカルメモリに記憶された情報を用いて、第２プロセッサコアで、検出された処理を実行可能か否か判断する判断部と、検出された処理を、第１のプロセッサコアで実行した場合に要する第１の処理時間を算出する第１処理時間算出部と、判断部の判断結果に基づいて、ローカルメモリが情報を読み込ませる読込時間を加算するか否かを判断した上で、検出された処理を、第２プロセッサコアで実行した場合に要する第２の処理時間を算出する第２処理時間算出部と、第１の処理時間と第２の処理時間とを比較する比較部と、比較結果に基づいて、検出された処理を実行する第１のプロセッサコア又は第２プロセッサコアを選択する選択部を備える。【選択図】        図１
2010072731.tif 000002
【特許請求の範囲】
【請求項１】
第１の半導体回路と、処理の実行に使用される情報を記憶する回路内記憶部を有する第２の半導体回路と、を備えるデータ処理装置であって、
前記第１の半導体回路が、
前記第１の半導体回路に対して、実行を要求された処理を検出する検出部と、
前記第２の半導体回路が有する回路内記憶部に記憶された情報を用いて、前記第２の半導体回路で、検出された前記処理を実行可能か否か判断する判断部と、
検出された前記処理を、前記第１の半導体回路で実行した場合に要する第１の処理時間を算出する第１処理時間算出部と、
前記判断部の判断結果に基づいて、検出された前記処理の実行に必要な情報を前記回路内記憶部に読み込ませる読込時間を加算するか否かを判断した上で、検出された前記処理を、前記第２の半導体回路で実行した場合に要する第２の処理時間を算出する第２処理時間算出部と、
前記第１の処理時間と前記第２の処理時間とを比較する比較部と、
前記比較結果に基づいて、検出された前記処理を実行する半導体回路を、前記第１の半導体回路及び前記第２の半導体回路から選択する選択部と、
前記選択部が前記第１の半導体回路を選択した場合に、検出された前記処理を実行する演算部と、
前記選択部が前記第２の半導体回路を選択した場合に、前記第２の半導体回路に対して、検出された前記処理の実行を依頼する依頼部と、
を備えることを特徴とするデータ処理装置。
【請求項２】
前記第２の半導体回路が有する前記回路内記憶部に記憶された前記情報を使用した実行済処理が前記検出部により検出された検出時刻と、当該実行済処理と同じプログラムコードを用いる処理の検出間隔と、を対応付けて記憶する時刻記憶部と、
前記第１の半導体回路は、前記時刻記憶部に記憶された前記検出時刻と前記検出間隔とに基づいて、前記実行済処理と同じプログラムコードを用いる処理が次に検出される推定時刻を特定する推定時刻特定部と、をさらに備え、
前記選択部は、さらに、前記推定時刻特定部により特定された前記推定時刻前に、検出された前記処理が前記第２の半導体回路で処理が終了するか否かに基づいて、前記第１の半導体回路及び前記第２の半導体回路から選択すること、
を特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記第１の半導体回路は、さらに、
前記処理を実行する半導体回路を決定するための制約条件を記憶する条件記憶部を備え、
前記選択部は、さらに前記条件記憶部に記憶された前記制約条件に基づいて、前記第１の半導体回路及び前記第２の半導体回路から選択すること、
を特徴とする請求項１又は２に記載のデータ処理装置。
【請求項４】
第１の半導体回路及び前記第２の半導体回路のうち少なくとも一方の動作を監視する監視部と、
前記監視部による監視結果を示した監視情報を保存する監視情報記憶部と、をさらに備え、
前記選択部は、さらに前記監視情報記憶部に記憶された前記監視情報に基づいて、前記第１の半導体回路及び前記第２の半導体回路から選択すること、
を特徴とする請求項１又は２に記載のデータ処理装置。
【請求項５】
第１の半導体回路と、処理の実行に使用される情報を記憶する回路内記憶部を有する第２の半導体回路と、を備えるデータ処理装置の第１半導体回路で実行されるデータ処理方法であって、
検出部が、前記第１の半導体回路に対して、実行を要求された処理を検出する検出ステップと、
判断部が、前記第２の半導体回路が有する回路内記憶部に記憶された情報を用いて、前記第２の半導体回路で、検出された前記処理を実行可能か否か判断する判断ステップと、
第１処理時間算出部が、検出された前記処理を、前記第１の半導体回路で実行した場合に要する第１の処理時間を算出する第１処理時間算出ステップと、
第２処理時間算出部が、前記判断ステップによる判断結果に基づいて、検出された前記処理の実行に必要な情報を前記回路内記憶部に読み込ませる読込時間を加算するか否かを判断した上で、検出された前記処理を、前記第２の半導体回路で実行した場合に要する第２の処理時間を算出する第２処理時間算出ステップと、
比較部が、前記第１の処理時間と前記第２の処理時間とを比較する比較ステップと、
選択部が、前記比較結果に基づいて、検出された前記処理を実行する半導体回路を、前記第１の半導体回路及び前記第２の半導体回路から選択する選択ステップと、
演算部が、前記選択ステップにより前記第１の半導体回路を選択された場合に、検出された前記処理を実行する演算ステップと、
依頼部が、前記選択ステップにより前記第２の半導体回路が選択された場合に、前記第２の半導体回路に対して、検出された前記処理の実行を依頼する依頼ステップと、
を有することを特徴とするデータ処理方法。
【請求項６】
第１の半導体回路と、処理の実行に使用される情報を記憶する回路内記憶部を有する第２の半導体回路と、を備えるデータ処理装置の第１半導体回路で実行されるデータ処理プログラムであって、
前記第１の半導体回路に対して、実行を要求された処理を検出する検出ステップと、
前記第２の半導体回路が有する回路内記憶部に記憶された情報を用いて、前記第２の半導体回路で、検出された前記処理を実行可能か否か判断する判断ステップと、
検出された前記処理を、前記第１の半導体回路で実行した場合に要する第１の処理時間を算出する第１処理時間算出ステップと、
前記判断ステップによる判断結果に基づいて、検出された前記処理の実行に必要な情報を前記回路内記憶部に読み込ませる読込時間を加算するか否かを判断した上で、検出された前記処理を、前記第２の半導体回路で実行した場合に要する第２の処理時間を算出する第２処理時間算出ステップと、
前記第１の処理時間と前記第２の処理時間とを比較する比較ステップと、
前記比較結果に基づいて、検出された前記処理を実行する半導体回路を、前記第１の半導体回路及び前記第２の半導体回路から選択する選択ステップと、
前記選択ステップにより前記第１の半導体回路を選択された場合に、検出された前記処理を実行する演算ステップと、
前記選択ステップにより前記第２の半導体回路が選択された場合に、前記第２の半導体回路に対して、検出された前記処理の実行を依頼する依頼ステップと、
を実行することを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数の半導体回路で処理を実行するデータ処理装置、方法及びプログラムに関するものである。
【背景技術】
【０００２】
近年、半導体技術の向上に伴い、複数のプロセッサ（コア）を搭載したマルチコアプロセッサが提案されている。このマルチコアプロセッサにおいては、主たるプロセッサと複数のサブプロセッサとで構成されているものも存在する。このようなマルチコアプロセッサでは、主たるプロセッサが、必要に応じてサブプロセッサに対して処理を割り当てる。
【０００３】
このようなマルチコアプロセッサにおいては、暗号処理や画像処理など特に高負荷のデータ処理をサブプロセッサに処理させることで、主たるプロセッサのデータ処理負荷を低減させたり、システムのスループットを向上させることができる。このようなマルチコアプロセッサにおいては、特定の処理に特化した専用のサブプロセッサを搭載しても良い。これにより、当該処理を行う際の処理時間を短縮できる。
【０００４】
しかしながら、マルチコアプロセッサでは、サブプロセッサ（データ処理専用にした汎用のプロセッサ）にデータの処理を依頼する場合、サブプロセッサがデータの処理を行うためのプログラムのロード時間がオーバヘッドとして存在する。特に、処理対象となるデータのサイズが小さい場合、プログラムのロード時間がオーバヘッドとして顕著に現れる。
【０００５】
よって、主たるプロセッサ（処理全般を行う汎用のプロセッサ）やサブプロセッサの能力によっては、サブプロセッサで行った場合の方が、純粋な処理時間は短いにも拘わらず、ロード時間を含めた処理全体の時間が長くなり、サブプロセッサを用いた方が主たるプロセッサを用いるよりも低スループットになる場合がある。
【０００６】
そこで、データの処理を行うプロセッサとして、主たるプロセッサと、サブプロセッサとのうち処理全体にかかる時間の短い方を選択する技術が提案されている。例えば、特許文献１では、主たるプロセッサで行った場合の処理時間と、サブプロセッサでプログラムをロードするロード時間と処理時間との合計時間とを比較し、比較した結果、実際にかかる時間の短いプロセッサにデータの処理を割り当てる。
【０００７】
【特許文献１】特開２００６−１０７５３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に記載された技術は、タスクの順序を考慮していない。例として、主となるプロセッサと、一つのサブプロセッサとが搭載されたマルチコアプロセッサにおいて、タスクＡ及びＢの処理を交互に行う場合について検討する。この例においては、ロード時間を含めて考えても、タスクＡ及びＢの処理はサブプロセッサが行った方が早いものとする。この場合、タスクＡ及びＢの処理は共にサブプロセッサに割り当てられる。ところが、タスクＢ、タスクＡ、タスクＢの順番で処理を行う場合、最初のタスクＢをサブプロセッサで行い、タスクＡを主たるプロセッサで行うと、次のタスクＢの処理に必要なプログラムコードがサブプロセッサのローカルメモリ上に保持されているため、次のタスクＢを行う際におけるプログラムコードのロード時間が短縮される。結果として全体的な処理時間の短縮を図ることができるが、このような場合を特許文献１では考慮されていない。
【０００９】
本発明は、上記に鑑みてなされたものであって、プログラムなどのロード時間を考慮した上で、全体的な処理時間の短縮を図るデータ処理装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明にかかるデータ処理装置は、第１の半導体回路と、処理の実行に使用される情報を記憶する回路内記憶部を有する第２の半導体回路と、を備えるデータ処理装置であって、前記第１の半導体回路が、前記第１の半導体回路に対して、実行を要求された処理を検出する検出部と、前記第２の半導体回路が有する回路内記憶部に記憶された情報を用いて、前記第２の半導体回路で、検出された前記処理を実行可能か否か判断する判断部と、検出された前記処理を、前記第１の半導体回路で実行した場合に要する第１の処理時間を算出する第１処理時間算出部と、前記判断部の判断結果に基づいて、検出された前記処理の実行に必要な情報を前記回路内記憶部に読み込ませる読込時間を加算するか否かを判断した上で、検出された前記処理を、前記第２の半導体回路で実行した場合に要する第２の処理時間を算出する第２処理時間算出部と、前記第１の処理時間と前記第２の処理時間とを比較する比較部と、前記比較結果に基づいて、検出された前記処理を実行する半導体回路を、前記第１の半導体回路及び前記第２の半導体回路から選択する選択部と、前記選択部が前記第１の半導体回路を選択した場合に、検出された前記処理を実行する演算部と、前記選択部が前記第２の半導体回路を選択した場合に、前記第２の半導体回路に対して、検出された前記処理の実行を依頼する依頼部と、を備えることを特徴とする。
【００１１】
また、本発明にかかるデータ処理方法は、第１の半導体回路と、処理の実行に使用される情報を記憶する回路内記憶部を有する第２の半導体回路と、を備えるデータ処理装置の第１半導体回路で実行されるデータ処理方法であって、検出部が、前記第１の半導体回路に対して、実行を要求された処理を検出する検出ステップと、判断部が、前記第２の半導体回路が有する回路内記憶部に記憶された情報を用いて、前記第２の半導体回路で、検出された前記処理を実行可能か否か判断する判断ステップと、第１処理時間算出部が、検出された前記処理を、前記第１の半導体回路で実行した場合に要する第１の処理時間を算出する第１処理時間算出ステップと、第２処理時間算出部が、前記判断ステップによる判断結果に基づいて、検出された前記処理の実行に必要な情報を前記回路内記憶部に読み込ませる読込時間を加算するか否かを判断した上で、検出された前記処理を、前記第２の半導体回路で実行した場合に要する第２の処理時間を算出する第２処理時間算出ステップと、比較部が、前記第１の処理時間と前記第２の処理時間とを比較する比較ステップと、選択部が、前記比較結果に基づいて、検出された前記処理を実行する半導体回路を、前記第１の半導体回路及び前記第２の半導体回路から選択する選択ステップと、演算部が、前記選択ステップにより前記第１の半導体回路を選択された場合に、検出された前記処理を実行する演算ステップと、依頼部が、前記選択ステップにより前記第２の半導体回路が選択された場合に、前記第２の半導体回路に対して、検出された前記処理の実行を依頼する依頼ステップと、を有することを特徴とする。
【００１２】
また、本発明にかかるデータ処理プログラムは、第１の半導体回路と、処理の実行に使用される情報を記憶する回路内記憶部を有する第２の半導体回路と、を備えるデータ処理装置の第１半導体回路で実行されるデータ処理プログラムであって、前記第１の半導体回路に対して、実行を要求された処理を検出する検出ステップと、前記第２の半導体回路が有する回路内記憶部に記憶された情報を用いて、前記第２の半導体回路で、検出された前記処理を実行可能か否か判断する判断ステップと、検出された前記処理を、前記第１の半導体回路で実行した場合に要する第１の処理時間を算出する第１処理時間算出ステップと、前記判断ステップによる判断結果に基づいて、検出された前記処理の実行に必要な情報を前記回路内記憶部に読み込ませる読込時間を加算するか否かを判断した上で、検出された前記処理を、前記第２の半導体回路で実行した場合に要する第２の処理時間を算出する第２処理時間算出ステップと、前記第１の処理時間と前記第２の処理時間とを比較する比較ステップと、前記比較結果に基づいて、検出された前記処理を実行する半導体回路を、前記第１の半導体回路及び前記第２の半導体回路から選択する選択ステップと、前記選択ステップにより前記第１の半導体回路を選択された場合に、検出された前記処理を実行する演算ステップと、前記選択ステップにより前記第２の半導体回路が選択された場合に、前記第２の半導体回路に対して、検出された前記処理の実行を依頼する依頼ステップと、を実行することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、第２の半導体回路が備える回路内記憶部が記憶する情報を利用できるか否かに基づいて、検出した処理を実行する半導体回路として、第１の半導体回路及び第２の半導体回路から適切な半導体回路を選択できるので、処理を行う際のパフォーマンスを向上させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に添付図面を参照して、この発明にかかるデータ処理装置、方法及びプログラムの最良な実施の形態を詳細に説明する。
【００１５】
（第１の実施の形態）
図１に示すように、データ処理装置１００は、プロセッサ１０５と、ＲＡＭ１０３と、記憶部１０４と、バス１０６を備える。バス１０６は、プロセッサ１０５、ＲＡＭ１０３、及び記憶部１０４を接続する。
【００１６】
プロセッサ１０５は、第１プロセッサコア１０１と、第２プロセッサコア１０２とを備える。
【００１７】
本実施の形態にかかるプロセッサ１０５の第１プロセッサコア１０１は主たるプロセッサとしての機能を有し、第２プロセッサコア１０２はサブプロセッサとしての機能を有する。
【００１８】
記憶部１０４は、後述する第１プロセッサコア１０１及び第２プロセッサコア１０２で利用されるプログラムやデータを記憶する。
【００１９】
図２に示す例では、記憶部１０４に第１プログラム２０１と、第２プログラム２０２とが記憶されている。これら第１プログラム２０１、及び第２プログラム２０２は、第１プロセッサコア１０１及び第２プロセッサコア１０２で実行される場合に、それぞれユニークなプログラム識別子が割り当てられる。
【００２０】
さらに図２に示すように、第１プログラム２０１は、第１コア用コード２１１と、第２コア用コード２１２とを有する。第１コア用コード２１１は第１プロセッサコア１０１で実行されるためのコードであり、第２コア用コード２１２は第２プロセッサコア１０２で実行されるためのコードとする。本実施の形態においては、コードが異なる場合でも同一プログラムであれば同一のプログラム識別子が割り当てられるものとし、第１コア用コード２１１及び第２コア用コード２１２には、同一のプログラム識別子が割り当てられる。これにより、これら各プロセッサ用のコードが、実行するプロセッサに応じて選択的に実行できる。
【００２１】
なお、第１コア用コード２１１及び第２コア用コード２１２により実現される処理は、完全に同一である必要はない。例えば、各プロセッサのデータ形式に合わせるためのデータ変換処理を含んでもよい。また、第１コア用コード２１１及び第２コア用コード２１２は同じ命令セットを用いても良いし、異なる命令セットを用いても良い。
【００２２】
本実施の形態では、図２に示す例において、一つのプログラムに複数のプロセッサに対応するコードが含まれる例について説明したが、このような形式に制限するものではない。例えば、第１プログラム２０１の第１コア用コード２１１を一つのプログラムとし、第２コア用コード２１２をこれに関連付けられた別のプログラムとして保存しても良い。この場合においても、関連付に基づき、第１コア用コード２１１及び第２コア用コード２１２には同一のプログラム識別子が割り当てられる。
【００２３】
ＲＡＭ１０３は、時刻データベース１３１を備える他、プログラムなどの作業領域として用いられる。
【００２４】
時刻データベース１３１は、第１プロセッサコア１０１において行われた処理の時刻に関する情報を記憶する。図３に示すように、時刻データベース１３１は、プログラム識別子と、最終検出時刻と、検出間隔とを対応付けて記憶する。各エントリは、後述する検出部１１１により登録される。
【００２５】
プログラム識別子は、同一の内容を行う処理（例えば、同一のプログラムコードを用いた処理、又はプログラム）毎に一意と割り当てられた識別子とする。プログラム識別子の割当手法としては、周知を問わずあらゆる手法を用いても良い。例えば、プログラムコードのハッシュ値を用いても良いし、利用者が定めても良い。また、プログラム識別子は、任意の処理が第１プロセッサコア１０１で実行される場合又は第２プロセッサコア１０２で実行される場合を問わず、同一の識別子が割り当てられる。
【００２６】
最終検出時刻は、検出部１１１が各処理を検出した時刻のうち、現在時刻から最も新しい時刻を保持する。図３に示す最終検出時刻は、ある所定時刻（例えば、データ処理装置１００が起動した時刻）からの経過時間（例えば、秒）を示したものとする。
【００２７】
検出間隔は、検出部１１１が各処理を検出した検出間隔を保持する。本実施の形態にかかる検出間隔は、“最終検出時刻”に保存されている最も新しい検出時刻と、その前の検出時刻とから算出されたものとする。
【００２８】
なお、本実施の形態において検出間隔、検出時刻及び推定時刻の単位は、秒とするが、時間を計測する単位を秒に制限するものではなく、計算機内で表現可能な時間の単位（例えば、ＯＳが管理する時間単位であれば、別の単位でも良い。
【００２９】
なお、検出間隔の算出手法は、上述した手法以外を利用しても良い。例えば、所定の処理が数回の検出された場合に、各検出間隔を記録し、各検出間隔の平均値や最頻値といった統計値を算出して固定的に検出間隔として扱っても良い。また、定期的に実行する命令であることが設計段階で分かっている場合には、定期的に実行される時間間隔を静的に設定してもよい。
【００３０】
また、当然ながら、時刻データベース１３１は、第２プロセッサコア１０２が有するローカルメモリ１２１に記憶された情報を使用した処理の検出時刻と、当該処理と同じプログラムを用いる処理の検出間隔と、についても対応付けて記憶している。
【００３１】
第１プロセッサコア１０１は、検出部１１１と、第１演算部１１２と、推定時刻特定部１１３と、処理時間算出部１１４と、選択部１１５と、依頼部１１６と、ローカルメモリ状態取得部１１７と、判断部１１８と、を備える。本実施の形態にかかる第１プロセッサコア１０１は、主となるプロセッサとしての機能を備え、必要に応じて第２プロセッサコア１０２に対して処理を依頼する
【００３２】
検出部１１１は、第１プロセッサコア１０１に対して、実行が要求された処理を検出する。また、検出部１１１は、検出した処理のプログラム識別子を特定し、当該プログラム識別子と、最終検出時刻と、を対応付けて時刻データベース１３１に登録する。なお、当該プログラム識別子のエントリが既に登録されている場合、当該エントリに対して更新を行う。その際、既に登録されていた最終検出時刻と、今回検出した最終検出時刻とから検出間隔を算出し、算出した検出間隔についても、上記プログラム識別子及び最終検出時刻と対応付けて更新する。
【００３３】
ローカルメモリ状態取得部１１７は、第２プロセッサコア１０２のローカルメモリ１２１にロードされた処理（当該処理を実行するためのプログラムコード及びデータを含む）を特定し、特定した処理を実行するプログラムに対応するプログラム識別子を取得する。例えば、ローカルメモリ状態取得部１１７がプログラム識別子を取得する手法は、周知の手法を問わずあらゆる手法を用いて良く、例えば、プログラム識別子がプログラムコードのハッシュ値の場合、ローカルメモリ１２１にロードされたプログラムコードのハッシュ値を求めるなどが考えられる。
【００３４】
なお、本実施の形態では、ローカルメモリ状態取得部１１７がローカルメモリ１２１の状態を取得するものとしたが、このような手法に制限するものではなく、例えば依頼部１１６が依頼した処理を記憶し、依頼部１１６が、推定時刻特定部１１３等の問い合わせに応じて、ローカルメモリ１２１に格納されている処理を通知しても良い。このように、ローカルメモリ１２１の状態を取得する手法としては、周知を問わずあらゆる手法を用いて良い。
【００３５】
判断部１１８は、ローカルメモリ状態取得部１１７が取得したローカルメモリ１２１にロードされた処理（当該処理を実行するためのプログラムコード及びデータを含む）に基づいて、プログラム等をロードする必要が有るか否か判断する。つまり、新たに検出された処理が、ローカルメモリ１２１にロードされたプログラムコードを使用するのであれば、プログラム等をロードする必要がないと判断する。また、検出した処理について、異なるプログラムコードを使用するのであれば、プログラム等をロードする必要があると判断する。
【００３６】
そして、判断部１１８は、ロードする必要がないと判断した場合に、第２プロセッサコア１０２が有するローカルメモリ１２１に記憶された情報（処理）を用いることで、第２プロセッサコア１０２で、検出部１１１が検出した処理を実行可能と判断する。判断部１１８は、ロードする必要があると判断した場合に、第２プロセッサコア１０２が有するローカルメモリ１２１に記憶された情報（処理）を用いることができず、処理を行うためのデータや命令列を読み込んだ後でなければ、第２プロセッサコア１０２で、検出部１１１が検出した処理を実行できないと判断する。
【００３７】
第１の実施の形態にかかる判断部１１８は、ローカルメモリ状態取得部１１７が取得したプログラム識別子と、検出部１１１が検出した処理を実行するプログラムのプログラム識別子とが一致した場合に、ロードが不要と判断する。プログラム識別子が一致しなかった場合に、ロードが必要と判断する。
【００３８】
処理時間算出部１１４は、第１処理時間算出部１４１と、第２処理時間算出部１４２とを備え、検出部１１１が検出した各処理をそれぞれのプロセッサで実行した場合の推定処理時間を算出する。
【００３９】
第１処理時間算出部１４１は、第１プロセッサコア１０１で、検出部１１１が検出した処理を、第１プロセッサコア１０１で実行した場合に要すると考えられる第１の推定処理時間を算出する。
【００４０】
第２処理時間算出部１４２は、判断部１１８の判断結果に基づいて、検出部１１１が検出した処理の実行に必要なデータや命令列をローカルメモリ１２１にロードさせるロード時間を加算するか否か判断する。そして、第２処理時間算出部１４２は、ロード時間を必要に応じて加算した上で、処理を第２プロセッサコア１０２で実行した場合に要する第２の推定処理時間を算出する。
【００４１】
図４に示す例では、第２プロセッサコア１０２のローカルメモリ１２１には、タスクＢの処理に必要な情報（データや命令列）が記憶された状態で、タスクＡの処理の実行依頼を受け付けた場合とする。この図４に示す例では前回行ったタスク（タスクＢ）と、次に行うタスク（タスクＡ）とが一致しない場合とする。これらタスクが一致するか否かの判断は、上述した判断部１１８で行われるものとする。このようにタスクが一致しない場合では、第２プロセッサコア１０２がロード処理を行う必要があるためロード時間４０１が必要となる。これにより、ローカルメモリ１２１上にタスクＡに必要な情報が格納された後（符号４０２）、タスクＡの処理を実行時間４０３の間だけ行われる。この場合、第２処理時間算出部１４２は、実行時間４０３に、ロード時間４０１を加算した合計時間を、第２の推定処理時間として算出する。なお、実行時間及びロード時間の算出手法は、周知の手法を問わず、あらゆる手法を用いて良い。
【００４２】
図５に示す例では、第２プロセッサコア１０２のローカルメモリ１２１には、タスクＡの処理に必要な情報（データや命令列）が記憶された状態で、タスクＡの処理の実行依頼を受け付けた場合とする。この図５に示す例では前回行ったタスク（タスクＡ）と、次に行うタスク（タスクＡ）とが一致する場合とする。この場合では、タスクＡを実行するためのロード時間が不要となる。これにより、ローカルメモリ１２１上にタスクＡに必要な情報５０１を用いて、タスクＡの処理を実行時間５０２の間だけ行われる。この場合、第２処理時間算出部１４２は、実行時間５０２を、第２の推定処理時間として算出する。
【００４３】
なお、第１処理時間算出部１４１が算出する第１の推定処理時間は、第１プロセッサコア１０１においては情報のロードが不要（ロード時間がない）なため、第１プロセッサコア１０１におけるタスクの実行時間となる。
【００４４】
推定時刻特定部１１３は、第２プロセッサコア１０２にロードされている処理が、次に実行される時刻を、時刻データベース１３１に基づいて算出する。本実施の形態にかかる推定時刻特定部１１３は、ローカルメモリ状態取得部１１７により取得されたプログラム識別子と時刻データベース１３１で対応付けられている最終検出時刻及び検出間隔より、次の検出時刻となる推定検出時刻を特定する。
【００４５】
選択部１１５は、比較部１４３を備え、時刻データベース１３１に保存された情報と、推定時刻特定部１１３により特定された推定検出時刻と、処理時間算出部１１４にて算出された推定処理時間と、に基づいて、新たに実行を要求された処理を、第１プロセッサコア１０１及び第２プロセッサコア１０２のうち、いずれかで実行するかを選択する。なお、処理を選択するために提示した上記の条件を全て用いる必要は無い。例えば、時刻データベース１３１に保存された情報は、既に推定検出時刻が算出され、渡されている以上、必須の情報ではない。
【００４６】
比較部は、第１の処理時間と第２の処理時間とを比較する。これにより、選択部１１５は、比較結果に基づいて、新たに実行を要求された処理を、第１プロセッサコア１０１及び第２プロセッサコア１０２のうち、いずれかで実行するかを選択する。
【００４７】
また、選択部１１５は、さらに、推定時刻特定部１１３により特定された推定検出時刻前に、検出された第１の処理が第２プロセッサコア１０２で処理が終了するか否かに基づいて、第１プロセッサコア１０１及び第２プロセッサコア１０２から選択する。なお、詳細な選択手順については後述する。
【００４８】
第１演算部１１２は、新しく要求された処理の実行先として選択部１１５が第１プロセッサコア１０１を選択した場合に、当該処理を実行する。
【００４９】
依頼部１１６は、新しく要求された処理の実行先として選択部１１５が第２プロセッサコア１０２を選択した場合に、当該処理の実行を第２プロセッサコア１０２に対して依頼する。
【００５０】
なお、第１プロセッサコア１０１は、上述した本実施の形態の特徴的な構成の他に、一般的なプログラムのロードにより実現される各構成も備えているものとする。また、これら一般的なプログラムで実現された構成も、上述した構成と共用しても良い（例えば、第１演算部１１２など）。ただし、一般的なプログラムで実現された各構成は、本実施の形態と関係ないため、図ならびに説明からは省略する。
【００５１】
第２プロセッサコア１０２は、ローカルメモリ１２１と、第２演算部１２２とを備える。
【００５２】
ローカルメモリ１２１は、第１プロセッサコア１０１の依頼部１１６からの要求に基づいて、処理を実行するために必要な命令列やデータを保存する。
【００５３】
第２演算部１２２は、ローカルメモリ１２１に保存された命令を実行する。
【００５４】
次に、本実施の形態にかかるデータ処理装置１００のタスクを、いずれかのプロセッサで実行するまでの処理手順について、図６を用いて説明する。
【００５５】
まず、検出部１１１が、第１プロセッサコア１０１に対する実行要求がなされた処理を、検出する（ステップＳ７０１）。この処理の検出手法としては、例えば、特定の関数やシステムコールの実行を検出したり、特定のアドレスによって識別される各プロセッサによる命令の実行を検出したり、各プロセッサが備える特定の命令の実行を検出してもよい。このように、処理の検出手法としては、周知を問わず、あらゆる手法を用いて良い。
【００５６】
次に、検出部１１１が、検出内容で、時刻データベース１３１を更新する（ステップＳ７０２）。これにより、時刻データベース１３１は、検出内容を記憶する。
【００５７】
次に、ローカルメモリ状態取得部１１７が、ローカルメモリ１２１上に記憶されている処理（タスク）を特定する（ステップＳ７０３）。その後、判断部１１８が、第２プロセッサコア１０２で検出した処理を実行する場合に、ロードが必要か否か判断する（ステップＳ７０４）。
【００５８】
次に、第１処理時間算出部１４１が、検出された処理を第１プロセッサコア１０１で実行した場合の第１の推定処理時間を算出する（ステップＳ７０５）。
【００５９】
そして、第２処理時間算出部１４２が、ステップＳ７０４の判断結果に基づいて、必要な場合にはロード時間を加算した上で、検出された処理を第２プロセッサコア１０２で実行した場合の第２の推定処理時間を算出する（ステップＳ７０６）。
【００６０】
推定処理時間に含まれる実行時間の算出手法としては、いくつかの手法が考えられる。例えば、実行時間を導出する近似式を用いる手法がある。この近似式は、第１プロセッサコア１０１又は第２プロセッサコア１０２の性能に基づいて作成され、データサイズを引数とする。データサイズを代入して近似式で計算処理を行うことで、各プロセッサに対応する実行時間を算出できる。この近似式は、設計段階で予め第１処理時間算出部１４１及び第２処理時間算出部１４２に埋め込んでおいても良い。他には、各プロセッサが処理を行った際に簡易な測定を行ない、計測結果に基づいて近似式を導出しても良い。この計測結果に基づいて近似式を導出する例としては、数種類のデータサイズを用いて各プロセッサによる実行時間を測定し、それらを結ぶ近似曲線の近似式を導出する等が考えられる。また、ロード時間についても同様の手法で算出できるものとして説明を省略する。なお、本実施の形態は、実行時間及びロード時間を導出する手法を、上述した近似式で算出する手法に限るものではなく、周知を問わず、あらゆる手法を用いて良い。
【００６１】
続いて、推定時刻特定部１１３が、第２プロセッサコア１０２において、ローカルメモリ１２１に格納されているため、実行可能状態にある処理が、再び検出されると考えられる推定検出時刻を、時刻データベース１３１が記憶する情報に基づいて算出する（ステップＳ７０７）。
【００６２】
次に、選択部１１５内の比較部１４３が、ステップＳ７０５で算出された第１の推定処理時間と、ステップＳ７０６で算出された第２の推定処理時間と、を比較する（ステップＳ７０８）。
【００６３】
そして、選択部１１５が、ステップＳ７０４の判断結果、ステップＳ７０７の推定検出時刻、及びステップＳ７０８の比較結果に基づいて、処理を実行するプロセッサとして、第１プロセッサコア１０１及び第２プロセッサコア１０２のうち一方を選択する（ステップＳ７０９）。この選択処理の詳細については、後述する。
【００６４】
そして、ステップＳ７０９において、第１プロセッサコア１０１で処理を行うことを選択した場合、第１演算部１１２が、当該処理に関する演算を実行する（ステップＳ７１０）。
【００６５】
一方、ステップＳ７０９において、第２プロセッサコア１０２で処理を行うことを選択した場合、依頼部１１６が、第２プロセッサコア１０２に処理を依頼するための情報を生成し、第２プロセッサコア１０２に対して、処理の実行を依頼する（ステップＳ７１１）。
【００６６】
これにより、プロセッサで処理が実行されることになり、処理が終了する。次に、本実施の形態にかかるデータ処理装置１００の第１プロセッサコア１０１の各構成の動きについて、検出した処理をいずれかのプロセッサで実行するまでの手順について、図７を用いて説明する。
【００６７】
まずは、検出部１１１が、特定の処理を検出する（ステップＳ８０１）。これにより一連の処理が開始される。その後、検出部１１１は、時刻データベース１３１を更新する(ステップＳ８０２)。このステップＳ８０１及びＳ８０２の処理は、それぞれ図６のステップＳ７０１及びＳ７０２に対応する。
【００６８】
このステップＳ８０２で行う時刻データベース１３１に対する更新処理は、二つの処理で構成される。まず第１の処理は、検出間隔の更新とし、第２の処理は、最終検出時刻の更新とする。検出間隔は、例えば、今回の処理を検出した時刻と、検出した処理と同一の処理として既に登録されているエントリに登録された最終検出時刻との差から求める。そして求められた検出間隔の値で、当該エントリの検出間隔を更新する。最終検出時刻は、検出した時刻を用いて更新する。
【００６９】
なお、図７においては、検出部１１１が時刻データベース１３１のエントリを参照する処理を省略している。また、検出部１１１が、時刻データベース１３１を参照しに行くのではなく、検出部１１１自体が最後に検出した時刻を保持し、直接検出間隔を算出するようにしても良い。
【００７０】
その後、検出部１１１は、判断部１１８に対して検出結果を通知する（ステップＳ８０３）。同様に、検出部１１１は、処理時間算出部１１４に対して、検出結果を通知する（ステップＳ８０４）。このとき、検出結果としては、検出した処理を示すプログラム識別子と検出時刻とする。
【００７１】
次に、判断部１１８は、通知された検出結果に含まれるプログラム識別子と、ローカルメモリ１２１に記憶されている処理を示すプログラム識別子とから、ロードの有無を判断する（ステップＳ８０５）。なお、ローカルメモリ１２１に記憶されている処理を示すプログラム識別子は、ローカルメモリ状態取得部１１７から取得するものとする。
【００７２】
そして、判断部１１８は、判断結果を選択部１１５に通知した後（ステップＳ８０６）、処理時間選択部１１４に対しても通知を行う（ステップＳ８０７）。
【００７３】
その後、処理時間算出部１１４の第１処理時間算出部１４１は、取得した検出結果に基づいて、第１プロセッサコア１０１で処理を実行した場合に要する第１の推定処理時間を算出する（ステップＳ８０８）。次に、第２処理時間算出部１４２は、取得した検出結果及びロード有無の判断結果に基づいて、第２プロセッサコア１０２で処理を実行した場合に要する第２の推定処理時間を算出する（ステップＳ８０９）。
【００７４】
そして、処理時間算出部１１４は、第１処理時間算出部１４１及び第２処理時間算出部１４２による推定処理時間を算出結果として、選択部１１５に通知する（ステップＳ８１０）。
【００７５】
そして、通知を受けた選択部１１５は、ローカルメモリ１２１にロードされているプログラムを使用する処理が再び検出される可能性がある推定実行時刻の算出と、推定処理時間の比較とを行った後、処理を行うプロセッサとして、第１プロセッサコア１０１及び第２プロセッサコア１０２のいずれかを選択する。
【００７６】
このため、選択部１１５は、推定時刻特定部１１３に対して、推定実行時刻の特定を依頼する（ステップＳ８１１）。この依頼には検出されたプログラム識別子を含む。
【００７７】
依頼を受け付けた推定時刻特定部１１３は、通知されたプログラム識別子を検索キーとして時刻データベース１３１に対して検索を行う（ステップＳ８１２）。これにより、推定時刻特定部１１３は、時刻データベース１３１から検索結果の応答を得られる（ステップＳ８１３）。得られるエントリの例としては、図３に示したエントリなどがある。また、検索キーに対応するエントリが検出できなかった場合、ステップＳ８１４の処理をスキップして選択部１１５の処理に戻る（図７では省略）。同様に、検出されたエントリにおいて「検出間隔」が登録されていない場合（例えば図３の上から二行目のエントリ）、推定実行時刻を算出できないので、ステップＳ８１４の処理をスキップして選択部１１５の処理に戻る（図７では省略）。
【００７８】
そして、得られたエントリに「検出間隔」が登録されている場合、推定時刻特定部１１３は、当該エントリの「最終検出時刻」と「検出間隔」とから、当該処理が次に検出される推定検出時刻を算出する（ステップＳ８１４）。算出した推定検出時刻は、選択部１１５に特定結果として、推定時刻特定部１１３により通知される（ステップＳ８１５）。
【００７９】
その後、比較部１４３が、第１の推定処理時間及び第２の推定処理時間を比較する（ステップＳ８１６）。そして、選択部１１５が、比較結果、ロードの有無の判断結果、及び推定実行時刻に基づいて、実行に用いるプロセッサを選択する（ステップＳ８１７）。この選択処理の詳細については後述する。
【００８０】
仮に、選択部１１５が、第１プロセッサコア１０１を選択した場合、選択部１１５は第１演算部１１２に対して、演算を実行する通知を行う（ステップＳ８１８）。当該通知を受けて第１演算部１１２は、検出した処理についての演算を実行する（ステップＳ８１９）。
【００８１】
一方、選択部１１５が、第２プロセッサコア１０２を選択した場合、依頼部１１６に対して演算を実行する通知を行う（ステップＳ８２０）。当該通知を受けて依頼部１１６は、第２プロセッサコア１０２が解釈可能な形に変更した後（ステップＳ８２１）、第２プロセッサコア１０２に対して処理の実行を依頼する（ステップＳ８２２）。
【００８２】
以上に、第１の実施の形態のデータ処理装置１００の一連の処理の流れを示した。なお、この処理の流れは一例であり、本実施の形態は、当該処理の流れに制限するものではない。他の例としては、上述した各構成の主たる機能を実現した上で、通知をポーリング方式に変更したり、通知と共に伝えていた情報を一時的に記憶部１０４や時刻データベース１３１に保存して、利用側で読み出すようにしてもよい。
【００８３】
次に、本実施の形態にかかる選択部１１５におけるプロセッサの選択手順について、図８を用いて説明する。
【００８４】
まず、比較部１４３が、第１プロセッサコア１０１の第１の推定処理時間と、第２プロセッサコア１０２の第２の推定処理時間とを比較し、第１の推定処理時間（実行時間）が第２の推定処理時間（ロード時間＋実行時間）と比べて短いか否か判断する（ステップＳ９０１）。第１の推定処理時間が、短いと判断した場合（ステップＳ９０１：Ｙｅｓ）、選択部１１５が、第１プロセッサコア１０１を選択して（ステップＳ９０４）、処理を終了する。なお、第２プロセッサコア１０２の第２の推定処理時間には、プログラムのロード時間を含まれているものとするが、当該ロード時間が、検出された処理を実行するプログラム等が既にローカルメモリ１２１にロードされている場合には無視して良い（ゼロ時間とみなす）。
【００８５】
一方、比較部１４３が、第２の推定処理時間が短いと判断した場合、換言すればロード時間を加味しても第２プロセッサコア１０２の方が早く処理できると判断した場合（ステップＳ９０１：Ｎｏ）、選択部１１５は、さらに詳細な判断を行う。具体的には、選択部１１５が、判断部１１８の判断結果に基づいて、検出された処理に関するコード類（データや命令列を含む情報）がローカルメモリ１２１にロード済みであるか否か判断する（ステップＳ９０２）。ロード済みであると判断した場合（ステップＳ９０２：Ｙｅｓ）、選択部１１５は、第２プロセッサコア１０２を選択する（ステップＳ９０５）。
【００８６】
また、選択部１１５が、ロード済みではないと判断した場合（ステップＳ９０２：Ｎｏ）、まず、推定時刻特定部１１３により推定予測時刻が特定されているか否か判断する。推定予測時刻が特定されている場合、当該推定予測時刻が、第２プロセッサコア１０２に検出された処理で利用されるプログラムをロードして当該処理を実行が終了するより前の時刻か否か判断する（ステップＳ９０３）。
【００８７】
当該判断をより詳細に説明するため、図９を用いて説明する。初期状態においては、ローカルメモリ１２１にタスクＡを実行するプログラムがすでにロード済みになっているものとする。さらに、当該タスクＡの実行は完了しており、第１プロセッサコア１０１及び第２プロセッサコア１０２共に、任意のタスクを実行できる状態とする。
【００８８】
時刻ｔ31では、検出部１１１がタスクＢを検出し、当該タスクＢを第１プロセッサコア１０１及び第２プロセッサコア１０２のどちらで実行すべきか判断を行うものとする。なお、当該判断においては、図８のステップＳ９０１及びステップＳ９０２では、Ｎｏと判断されているものとする。
【００８９】
つまり、図９に示す例では、第１プロセッサコア１０１におけるタスクＢの推定処理時間６０１（実行時間Ｔｒ１（Ｂ）は、第２プロセッサコア１０２におけるタスクＢの推定予測時刻６０２（ロード時間Ｔｌ２及び実行時間Ｔｒ２（Ｂ））より時間が長いため、ステップＳ９０１ではＮｏと判断されている。また、ロードされているプログラムは、タスクＡ６０３で利用されるプログラムであるため、ステップＳ９０２でもＮｏと判断される。
【００９０】
この段階で、選択部１１５が、図８のステップＳ９０３の判断を行う。図９に示す例では、説明のため、２通りのタスクＡの推定検出時刻（推定検出時刻１及び推定検出時刻２）を示した。推定検出時刻１が推定時刻特定部１１３により特定された場合、タスクＡの推定検出時刻の時点で、タスクＢの処理が終了していない。すなわち、選択部１１５は、タスクＢの処理中に、第２プロセッサコア１０２で処理すべきタスクＡが検出されると判断し（ステップＳ９０３：Ｙｅｓ）、第１プロセッサコア１０１を選択する（ステップＳ９０４）。
【００９１】
一方、推定検出時刻２が推定時刻特定部１１３により特定された場合、タスクＡの推定検出時刻の時点で、タスクＢの処理が終了している。すなわち、選択部１１５は、タスクＢの処理中に、第２プロセッサコア１０２で処理すべきタスクＡが検出されないと判断し（ステップＳ９０３：Ｎｏ）、第２プロセッサコア１０２を選択する（ステップＳ９０５）。この場合、図９に示すように、ローカルメモリ１２１に、タスクＢ６０４がロードされる。
【００９２】
ここで選択部１１５が考慮すべき状態を整理すると、次の６個の組み合わせであることが分かる。それぞれ（推定処理時間が短いプロセッサ、時刻データベース１３１に検出間隔の記載の有無、第２プロセッサコア１０２にロード済みのプログラムを用いる処理と検出された処理とが一致）を記載している。
ａ：（１、×、×）
ｂ：（２、×、×）
ｃ：（１、○、○）
ｄ：（２、○、○）
ｅ：（１、○、×）
ｆ：（２、○、×）
なお、ａ〜ｆに記載されていない組み合わせ（１、×、○）及び（２、×、○）は、検出間隔が記載されていない（すなわち初めての実行）状態で、ローカルメモリ１２１にプログラムがロードされている状態は起こりえないため、除外される。
【００９３】
ここで組み合わせａ、ｃ、ｅの三個は、ステップＳ９０１により第１プロセッサコア１０１で処理を実行すると判断される。組み合わせｄは、ステップＳ９０２により第２プロセッサコア１０２で実行すると判断される。組み合わせｂは、ステップＳ９０３において、推定検出時刻の算出できないので、第１プロセッサコア１０１で実行すると判断される。組み合わせｆは、上述した様に推定処理時間と推定検出時刻とを考慮した上で判断を行う。
【００９４】
組み合わせｆの場合の判断は、選択部１１５は、時刻データベース１３１に対する検索結果に基づいて行う。時刻データベース１３１が図１０に示した情報を保持している場合について説明する。なお、組み合わせｆは、推定処理時間が短いプロセッサが第２プロセッサコア１０２であり、時刻データベース１３１に検出間隔の記載の有り、第２プロセッサコア１０２にロード済みのプログラムを用いる処理と検出された処理とが一致しない場合を示している。
【００９５】
図１０に示した例では、タスクＡ及びタスクＢに対してそれぞれ複数回の実行が検出されていることを示している。これらタスクＡ及びタスクＢのエントリについては、検出間隔が登録されているため、推定時刻特定部１１３による推定実行時刻を特定することができる。次にこれらタスクＡ及びタスクＢの検出間隔について説明する。
【００９６】
図１１に示す例では、タスクＡが図１０で示したように“２００”秒間隔で検出され、タスクＢも図１０で示したように“２００”秒間隔で検出されている。そして、現在時刻は、５００秒とする。この時点でタスクＡの検出が行われており、６５０秒（現在時刻から１５０秒後）にタスクＢが検出されるものと推定される。
【００９７】
図１１の範囲Ｔｔにおける第２プロセッサコア１０２の処理及びローカルメモリ１２１上に記憶されるプログラムを、詳細に示した図１２においては、現在時刻となる“５００”では、ローカルメモリ１２１上にタスクＢのプログラムが格納されている。そして、タスクＡが検出された場合、仮にタスクＡの実行時間が第１実行時間１２０１であれば、タスクＢの推定検出時刻より先に終了する。この場合、ローカルメモリ１２１にタスクＡに関するプログラムが格納される（符号１２０３）。
【００９８】
一方、タスクＡの実行時間が第２実行時間１２０２であれば、タスクＢの推定検出時刻より後に終了する。この場合、第１プロセッサコア１０１でタスクＡが実行されることになり、ローカルメモリ１２１にタスクＢに関するプログラムが格納された状態を維持し続ける（符号１２０４）。これにより、タスクＢの検出後、すぐに実行することができる。
【００９９】
上述した実施の形態では、データ処理装置１００に２種類のタスクを検出する例について説明したが、２種類のタスクに制限するものではなく、１種類又は３種類以上のタスクを検出しても良い。
【０１００】
また、上述した実施の形態においては、データ処理装置１００が、第１プロセッサコア１０１及び第２プロセッサコア１０２の二個のプロセッサを備える場合について説明したが、三個以上のプロセッサを備えていても良い。
【０１０１】
このように、本実施の形態にかかるデータ処理装置１００では、複数の異なるデータ処理要求を、複数のプロセッサに対して適切に割り当てることができるので、データ処理のパフォーマンスを向上させることができる。
【０１０２】
（第２の実施の形態）
第２の実施の形態のデータ処理装置は、第１の実施の形態のデータ処理装置１００と比べて、検出された処理を行う際に行うプロセッサの選択条件をさらに追加した実施の形態とする。
【０１０３】
図１３に示すデータ処理装置１３００は、上述した第１の実施の形態に係るデータ処理装置１００とは、制約条件記憶部１３２１を追加され、プロセッサ１０５と処理が異なるプロセッサ１３０１を備えた点のみ異なる。なお、本実施の形態のデータ処理装置１３００の構成で、第１の実施の形態のデータ処理装置１００と共通な構成については説明を省略する。
【０１０４】
制約条件記憶部１３２１は、処理を行うプロセッサを選択する際に制約となる条件を記憶する。図１４に示すように、制約条件記憶部１３２１は、プログラム識別子と、処理ＩＤと、制約条件タイプと、制約条件とを対応付けて記憶する。
【０１０５】
プログラム識別子は、第１の実施の形態で示したものと同じとする。処理ＩＤは、あるプログラムコード識別子の下で処理される特定のデータや動作条件を特徴づけるために付与されるＩＤとする。制約条件タイプは、当該エントリで定義する制約条件の種別を規定する。制約条件は、制約条件タイプで期待された種別についての制約値とする。
【０１０６】
制約条件記憶部１３２１には、ひとつのプログラムコード識別子／処理ＩＤの組で特定される処理の対象に対して、複数の制約条件を指定（複数のエントリを登録）することができる。その場合、全ての制約条件の論理積として制約条件が定義されたものとする。
【０１０７】
そして、本実施の形態においては、検出された処理が、各エントリに記載された条件を満たさない場合には、第２プロセッサコア１０２で実行するものとする。なお、本実施の形態は、このように条件を満たさない場合に第２プロセッサコア１０２を選択するような制約条件に制限するものではなく、例えば制約条件を満足した場合に第１プロセッサコア１３０２を選択するなど、プロセッサを選択するために様々な制約条件を設定可能とする。
【０１０８】
図１４に示す例に示される、一番上のエントリにおいては、を、第１プロセッサコア１３０２において、プログラム識別子「Ａ」で識別されるプログラムコードの処理ＩＤ「１」で特定される処理が実行された場合、当該処理が実行時間３０(ms)以内に終了しない場合には、第２プロセッサコア１０２で実行することを制約条件として設定したエントリである。なお、他のエントリについても同様の解釈に従って設定されたエントリとし、説明を省略する。
【０１０９】
図１４に示す制約条件記憶部１３２１では、各エントリの制約条件タイプを「実行時間」と設定した例について示した。しかしながら、制約条件記憶部１３２１の制約条件タイプを「実行時間」に制限するものではなく、例えば、第１プロセッサコア１３０２又は第２プロセッサコア１０２の負荷／占有率／稼働率／温度／消費電力／動作クロック／動作電圧、メモリ使用量、ネットワークを使う処理であればスループット／遅延／ジッタなどを制約条件として登録しても良い。また、これらを制約条件として用いる場合、第１プロセッサコア１３０２及び第２プロセッサコア１０２において、上述した状況を監視するための構成を備えることにしても良い。
【０１１０】
制約条件記憶部１３２１に保存するエントリは、本データ処理装置の利用者が設定しても良いし、実行するプログラム自身が設定してもよい。例えば、リアルタイム性を要求するアプリケーションであれば、プログラムを設計する時点で実行時間に関する制約条件が判明している可能性がある。この場合、プログラムから直接制約条件を指定すればよい。
【０１１１】
本実施の形態にかかるプロセッサ１３０１は、第１プロセッサコア１３０２において、第１の実施の形態にかかる選択部１１５と処理が異なる選択部１３１１を備えているものとする。
【０１１２】
選択部１３１１は、第１の実施の形態にかかる選択部１１５の機能を備えるほか、さらに制約条件記憶部１３２１が記憶する制約条件に基づいて、検出部１１１により検出された処理を行うプロセッサとして、第１プロセッサコア１０１及び第２プロセッサコア１０２のうちいずれか一つを選択する。
【０１１３】
本実施の形態にかかるデータ処理装置１３００の全体的な処理の流れは、第１の実施の形態にかかるデータ処理装置１００と同様とし説明を省略する。次に、第１の実施の形態と処理が異なる、本実施の形態にかかるデータ処理装置１３００の選択部１３１１におけるプロセッサの選択手順について、図１５を用いて説明する。
【０１１４】
まずは、第１の実施の形態の図８のステップＳ９０１と同様に、比較部１４３が、第１の推定処理時間と、第２の推定処理時間とを比較する（ステップＳ１５０１）。第１の推定処理時間が、短いと判断した場合（ステップＳ１５０１：Ｙｅｓ）、選択部１３１１が、第１プロセッサコア１３０２を選択して（ステップＳ１５０５）、処理を終了する。
【０１１５】
一方、比較部１４３が、第２の推定処理時間が短いと判断した場合（ステップＳ１５０１：Ｎｏ）、選択部１３１１は、制約条件記憶部１３２１に記憶されたエントリのうち、検出した処理に対応するプログラム識別子及び処理ＩＤを有する全てのエントリについて、全ての制約条件を満足するか否か判断する（ステップＳ１５０２）。ひとつでも制約条件を満足しないと判断した場合（ステップＳ１５０２：Ｎｏ）、第２プロセッサコア１０２を選択する（ステップＳ１５０６）。
【０１１６】
一方、全ての制約条件を満足すると判断した場合（ステップＳ１５０２：Ｙｅｓ）、以降、第１の実施の形態のステップＳ９０２〜Ｓ９０５と同様の処理を行い、プロセッサを選択する（ステップＳ１５０３〜Ｓ１５０６）。
【０１１７】
上述したデータ処理装置１３００においては、第１の実施の形態のデータ処理装置１００で示した効果に加え、さらに制約条件に応じて適切なプロセッサを選択することで、さらにパフォーマンスを向上させることができる。
【０１１８】
（第３の実施の形態）
第３の実施の形態は、処理を検出した際のプロセッサコアの状況に応じて、当該処理を実行するプロセッサコアを選択する実施の形態とする。
【０１１９】
図１６に示すデータ処理装置１６００は、上述した第１の実施の形態に係るデータ処理装置１００とは、プロセッサ１０５と処理が異なるプロセッサ１６０１を備え、状態データベース１６２１を追加された点のみ異なる。なお、本実施の形態のデータ処理装置１６００の構成で、第１の実施の形態のデータ処理装置１００と共通な構成については説明を省略する。
【０１２０】
状態データベース１６２１は、監視部１６１２からの更新に従って、データ処理装置１６００と関連する周辺情報との状態を示す状態情報を保存する。
【０１２１】
図１７に示す状態データベース１６２１は、状態タイプと、統計量とを対応付けて記憶する。状態タイプは、保存している状態の種類を識別する。なお、図１７では説明上、名前が記されているが実際には適切な識別子が登録される。統計量は、監視部１６１２から通知された値である。本実施の形態では、監視結果となる値を加工処理した結果を格納しているが、監視結果となる値を直接保存してもよい。図１７に示す例では、４つの状態値が独立に保存されている様子を示している。
【０１２２】
なお、本実施の形態とは異なるが、状態データベース１６２１は、新たに時刻情報をフィールドとして追加し、状態タイプ及び統計量に対して、各情報が生成された時刻を対応付けて記憶しても良い。この場合、後述する監視部１６１２が更新する際に更新時刻を、時刻フィールドに登録する。これにより、選択部１６１１は、状態データベース１６２１に登録された状態情報が有用か否かを時刻情報に基づいて判断し、プロセッサを選択することが可能となる。なお、時刻情報を保存するように拡張した状態データベースを用いる場合、複数の世代にわたって同一の情報を保存するようにしてもよい。
【０１２３】
本実施の形態にかかるプロセッサ１６０１は、第１プロセッサコア１６０２において、第１の実施の形態にかかる選択部１１５と処理が異なる選択部１６１１を備え、監視部１６１２を追加されたものとする。
【０１２４】
監視部１６１２は、本実施の形態にかかるデータ処理装置１６００と関連する周辺情報（例えばネットワークを介した通信を行う場合のネットワーク状況）を監視する機能と、監視結果である情報に対して加工処理（統計値算出など）を行う機能と、監視結果である情報及び加工処理した情報を、状態データベース１６２１に保存する機能とを備える。
【０１２５】
本実施の形態にかかるデータ処理装置１６００では、監視部１６１２は、一個しか備えていないが、複数備えることにしても良い。また、監視部が様々な情報を監視しても良いし、１種類の情報を監視する監視部が複数存在していても良い。
【０１２６】
監視部１６１２は、様々な情報を監視対象とすることができる。例えば、監視部１６１２が、第１プロセッサコア１６０２や第２プロセッサコア１０２の負荷を監視しても良く、この場合、オペレーティングシステムが管理する待機ジョブの数を参照することが考えられる。また、ハードウェアが提供するパフォーマンスカウンタを用いて演算に要したプロセッササイクル数を参照するようにしてもよい。
【０１２７】
他の例としては、監視部１６１２が、各プロセッサの温度を監視するのであれば、各プロセッサに内蔵された温度センサを読み取ればよい。さらに、監視部１６１２が、ネットワークの使用帯域を監視するのであれば、オペレーティングシステムが管理している送受信データ量や送受信パケット数のカウンタを参照して監視すればよい。なお、本実施の形態は、上述した監視対象や監視手法に制限するものではなく、プロセッサの選択に影響する情報であれば、あらゆる情報を監視対象としても良い。これら監視対象を監視する監視手法については特に制限はないものとする。
【０１２８】
選択部１６１１は、第１の実施の形態にかかる選択部１１５の機能を備えるほか、さらに状態データベース１６２１が記憶する状態情報に基づいて、検出部１１１により検出された処理を行うプロセッサとして、第１プロセッサコア１３０２を及び第２プロセッサコア１０２のうちいずれか一つを選択する。
【０１２９】
本実施の形態にかかるデータ処理装置１６００の全体的な処理の流れは、第１の実施の形態にかかるデータ処理装置１００と同様とし説明を省略する。次に、第１の実施の形態と処理が異なる、本実施の形態にかかるデータ処理装置１６００の選択部１６１１におけるプロセッサの選択手順について、図１８を用いて説明する。
【０１３０】
まず、選択部１６１１は、状態データベース１６２１に格納された現在の状態が、予め定められている条件を満足するか否か判断する（ステップＳ１８０１）。ここで、予め定められている条件とは、データ処理装置１６００の設計時に事前に決められた条件とする。例えば、第１プロセッサコア１６０２の負荷を８０％以下、動作時の第１プロセッサコア１６０２の温度は６０度以下等とする。これらの条件は固定的な判断基準として選択部１６１１に組み込まれているものとする。
【０１３１】
選択部１６１１が、現在の状態が予め定められている条件を満たさないと判断した場合（ステップＳ１８０１：Ｎｏ）、第２プロセッサコア１０２を選択する（ステップＳ１８０６）。一方、条件を満たす場合（ステップＳ１８０１：Ｙｅｓ）、更なる判断を継続する。
【０１３２】
それ以降は、第１の実施の形態と同様の処理手順（ステップＳ９０１〜Ｓ９０５）で、第１プロセッサコア１６０２又は第２プロセッサコア１０２を選択する（ステップＳ１８０２〜Ｓ１８０６）。
【０１３３】
（第４の実施の形態）
第４の実施の形態は、第２の実施の形態で示した制約条件に基づくプロセッサコアの選択機能と、第３の実施の形態で示した状態情報に基づくプロセッサコアの選択機能と、が追加された実施の形態とする。
【０１３４】
図１９に示すデータ処理装置１９００は、上述した第１の実施の形態に係るデータ処理装置１００とは、制約条件記憶部１３２１及び状態データベース１６２１を追加され、プロセッサ１０５と処理が異なるプロセッサ１９０１を備えた点のみ異なる。なお、本実施の形態のデータ処理装置１９００の構成で、第１の実施の形態のデータ処理装置１００と共通な構成については説明を省略する。
【０１３５】
また、制約条件記憶部１３２１は、第２の実施の形態で示した通りであり、状態データベース１６２１は第３の実施の形態で示した通りなので説明を省略する。
【０１３６】
本実施の形態にかかるプロセッサ１９０１は、第１プロセッサコア１９０２において、監視部１６１２が追加され、第１の実施の形態にかかる選択部１１５と処理が異なる選択部１９１１を備えているものとする。
【０１３７】
監視部１６１２は第３の実施の形態で示した通りなので説明を省略する。
【０１３８】
選択部１９１１は、第１の実施の形態にかかる選択部１１５の機能を備えるほか、さらに制約条件記憶部１３２１が記憶する制約条件、及び状態データベース１６２１が記憶する状態情報に基づいて、検出部１１１により検出された処理を行うプロセッサとして、第１プロセッサコア１９０２及び第２プロセッサコア１０２のうちいずれか一つを選択する。
【０１３９】
本実施の形態にかかるデータ処理装置１９００の全体的な処理の流れは、第１の実施の形態にかかるデータ処理装置１００と同様とし説明を省略する。次に、本実施の形態にかかるデータ処理装置１６００の選択部１６１１におけるプロセッサの選択手順は、原則として第２の実施の形態にかかる選択部１３１１と同様の処理手順（図１５）と同様として説明を省略する。
【０１４０】
上述した実施の形態では、半導体回路として、プロセッサを用いた例について説明した。しかしながら、半導体回路をプロセッサ（コア）に制限するものではなく、ハードウェア的に結線された回路であればよい。また、一つのプロセッサに複数のプロセッサコアを備えるのではなく、別プロセッサにしても良い。
【０１４１】
第１〜４の実施の形態では、図８、図１５及び図１８で示したようにプロセッサコアを選択するアルゴリズムは、各選択部に固定的に設定した。しかしながら、固定的な設定に制限するものではなく、データ処理装置の上で動作するアプリケーションやオペレーティングシステムが動的にプロセッサコアを選択するアルゴリズムを用いても良い。また、アプリケーションごとにプロセッサコアを選択するアルゴリズムを変更しても良い。
【０１４２】
第１〜４の実施の形態では、第２プロセッサコア１０２としてローカルメモリ１２１を内部に保持する汎用プロセッサを想定していたが、制御コードによって内部構造を動的に再構成可能なプロセッサを用いてもよい。このとき、前述の説明にてロード時間として参照していた部分は、制御コードのロード時間とプロセッサの再構成に要する時間が含まれるものとする。
【０１４３】
上述した実施の形態かかるデータ処理装置で実行されるデータ処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１４４】
また、上述した実施の形態にかかるデータ処理装置で実行されるデータ処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上述した実施の形態かかるデータ処理装置で実行されるデータ処理プログラムをインターネット等
のネットワーク経由で提供または配布するように構成しても良い。
【０１４５】
また、上述した実施の形態にかかるデータ処理装置で実行されるデータ処理プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１４６】
上述した実施の形態にかかるデータ処理装置で実行されるデータ処理プログラムは、上述した各部（検出部、第１演算部、推定時刻特定部、処理時間算出部、選択部、依頼部、ローカルメモリ状態取得部、判断部、及び監視部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体からデータ処理プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、検出部、第１演算部、推定時刻特定部、処理時間算出部、選択部、依頼部、ローカルメモリ状態取得部、判断部、及び監視部が主記憶装置上に生成されるようになっている。
【０１４７】
なお、上述した実施の形態にかかるデータ処理装置で実行されるデータ処理プログラムは、ＲＯＭ等に予め組み込まれて提供してもよい。
【図面の簡単な説明】
【０１４８】
【図１】第１の実施の形態にかかるデータ処理装置の構成を示すブロック図である。
【図２】第１の実施の形態にかかる記憶部に記憶されるプログラムを説明した概念図である。
【図３】第１の実施の形態にかかる時刻データベースのテーブル構成を示した図である。
【図４】第２プロセッサコアで行われる処理の第１の例を説明した概念図である。
【図５】第２プロセッサコアで行われる処理の第２の例を説明した概念図である。
【図６】第１の実施の形態にかかるデータ処理装置における、検出した処理をいずれかのプロセッサで実行するまでの処理手順を示したフローチャートである。
【図７】第１の実施の形態にかかるデータ処理装置の第１プロセッサコアの各構成の動きについて、検出した処理をいずれかのプロセッサで実行するまでの処理を示したシーケンス図である。
【図８】第１の実施の形態にかかる選択部におけるプロセッサの選択手順を示したフローチャートである。
【図９】第２プロセッサコアがタスクＡの処理を実行した後に、タスクＢの処理を検出した例を説明した概念図である。
【図１０】タスクＡ及びタスクＢのエントリが時刻データベースに登録されている例を示した図である。
【図１１】第１の実施の形態にかかるデータ処理装置において、タスクＡ及びタスクＢの検出間隔を示した概念図である。
【図１２】図１１で示した範囲Ｔｔにおいて、第２プロセッサコアで行われる処理を説明した概念図である。
【図１３】第２の実施の形態にかかるデータ処理装置の構成を示すブロック図である。
【図１４】第２の実施の形態にかかる制約条件記憶部のテーブル構成を示した図である。
【図１５】第２の実施の形態にかかるデータ処理装置の選択部におけるプロセッサの選択手順を示したシーケンス図である。
【図１６】第３の実施の形態にかかるデータ処理装置の構成を示すブロック図である。
【図１７】第３の実施の形態にかかる状態データベースのテーブル構成を示した図である。
【図１８】第３の実施の形態にかかるデータ処理装置の選択部におけるプロセッサの選択手順を示したシーケンス図である。
【図１９】第４の実施の形態にかかるデータ処理装置の構成を示すブロック図である。
【符号の説明】
【０１４９】
１００、１３００、１９００  データ処理装置
１０１、１３０２、１６０２、１９０２  第１プロセッサコア
１０２  第２プロセッサコア
１０３  ＲＡＭ
１０４  記憶部
１０５、１３０１、１６０１、１９０１  プロセッサ
１０６  バス
１１１  検出部
１１２  第１演算部
１１３  推定時刻特定部
１１４  処理時間算出部
１１５、１３１１、１６１１、１９１１  選択部
１１６  依頼部
１１７  ローカルメモリ状態取得部
１１８  判断部
１２１  ローカルメモリ
１２２  第２演算部
１３１  時刻データベース
１４１  第１処理時間算出部
１４２  第２処理時間算出部
１４３  比較部
１３２１  制約条件記憶部
１６００  データ処理装置
１６０２  プロセッサコア
１６１２  監視部
１６２１  状態データベース
【図１】
2010072731.tif 000003
【図２】
2010072731.tif 000004
【図３】
2010072731.tif 000005
【図４】
2010072731.tif 000006
【図５】
2010072731.tif 000007
【図６】
2010072731.tif 000008
【図７】
2010072731.tif 000009
【図８】
2010072731.tif 000010
【図９】
2010072731.tif 000011
【図１０】
2010072731.tif 000012
【図１１】
2010072731.tif 000013
【図１２】
2010072731.tif 000014
【図１３】
2010072731.tif 000015
【図１４】
2010072731.tif 000016
【図１５】
2010072731.tif 000017
【図１６】
2010072731.tif 000018
【図１７】
2010072731.tif 000019
【図１８】
2010072731.tif 000020
【図１９】
2010072731.tif 000021