JP2010072731A - データ処理装置、方法及びプログラム - Google Patents
データ処理装置、方法及びプログラム Download PDFInfo
- Publication number
- JP2010072731A JP2010072731A JP2008236822A JP2008236822A JP2010072731A JP 2010072731 A JP2010072731 A JP 2010072731A JP 2008236822 A JP2008236822 A JP 2008236822A JP 2008236822 A JP2008236822 A JP 2008236822A JP 2010072731 A JP2010072731 A JP 2010072731A
- Authority
- JP
- Japan
- Prior art keywords
- semiconductor circuit
- processing
- unit
- time
- detected
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】パフォーマンスを向上させる。
【解決手段】複数のプロセッサコアを備えるデータ処理装置であって、第1のプロセッサコアが、第1のプロセッサコアに対する処理を検出する検出部と、第2プロセッサコアのローカルメモリに記憶された情報を用いて、第2プロセッサコアで、検出された処理を実行可能か否か判断する判断部と、検出された処理を、第1のプロセッサコアで実行した場合に要する第1の処理時間を算出する第1処理時間算出部と、判断部の判断結果に基づいて、ローカルメモリが情報を読み込ませる読込時間を加算するか否かを判断した上で、検出された処理を、第2プロセッサコアで実行した場合に要する第2の処理時間を算出する第2処理時間算出部と、第1の処理時間と第2の処理時間とを比較する比較部と、比較結果に基づいて、検出された処理を実行する第1のプロセッサコア又は第2プロセッサコアを選択する選択部を備える。
【選択図】 図1
【解決手段】複数のプロセッサコアを備えるデータ処理装置であって、第1のプロセッサコアが、第1のプロセッサコアに対する処理を検出する検出部と、第2プロセッサコアのローカルメモリに記憶された情報を用いて、第2プロセッサコアで、検出された処理を実行可能か否か判断する判断部と、検出された処理を、第1のプロセッサコアで実行した場合に要する第1の処理時間を算出する第1処理時間算出部と、判断部の判断結果に基づいて、ローカルメモリが情報を読み込ませる読込時間を加算するか否かを判断した上で、検出された処理を、第2プロセッサコアで実行した場合に要する第2の処理時間を算出する第2処理時間算出部と、第1の処理時間と第2の処理時間とを比較する比較部と、比較結果に基づいて、検出された処理を実行する第1のプロセッサコア又は第2プロセッサコアを選択する選択部を備える。
【選択図】 図1
Description
この発明は、複数の半導体回路で処理を実行するデータ処理装置、方法及びプログラムに関するものである。
近年、半導体技術の向上に伴い、複数のプロセッサ(コア)を搭載したマルチコアプロセッサが提案されている。このマルチコアプロセッサにおいては、主たるプロセッサと複数のサブプロセッサとで構成されているものも存在する。このようなマルチコアプロセッサでは、主たるプロセッサが、必要に応じてサブプロセッサに対して処理を割り当てる。
このようなマルチコアプロセッサにおいては、暗号処理や画像処理など特に高負荷のデータ処理をサブプロセッサに処理させることで、主たるプロセッサのデータ処理負荷を低減させたり、システムのスループットを向上させることができる。このようなマルチコアプロセッサにおいては、特定の処理に特化した専用のサブプロセッサを搭載しても良い。これにより、当該処理を行う際の処理時間を短縮できる。
しかしながら、マルチコアプロセッサでは、サブプロセッサ(データ処理専用にした汎用のプロセッサ)にデータの処理を依頼する場合、サブプロセッサがデータの処理を行うためのプログラムのロード時間がオーバヘッドとして存在する。特に、処理対象となるデータのサイズが小さい場合、プログラムのロード時間がオーバヘッドとして顕著に現れる。
よって、主たるプロセッサ(処理全般を行う汎用のプロセッサ)やサブプロセッサの能力によっては、サブプロセッサで行った場合の方が、純粋な処理時間は短いにも拘わらず、ロード時間を含めた処理全体の時間が長くなり、サブプロセッサを用いた方が主たるプロセッサを用いるよりも低スループットになる場合がある。
そこで、データの処理を行うプロセッサとして、主たるプロセッサと、サブプロセッサとのうち処理全体にかかる時間の短い方を選択する技術が提案されている。例えば、特許文献1では、主たるプロセッサで行った場合の処理時間と、サブプロセッサでプログラムをロードするロード時間と処理時間との合計時間とを比較し、比較した結果、実際にかかる時間の短いプロセッサにデータの処理を割り当てる。
しかしながら、特許文献1に記載された技術は、タスクの順序を考慮していない。例として、主となるプロセッサと、一つのサブプロセッサとが搭載されたマルチコアプロセッサにおいて、タスクA及びBの処理を交互に行う場合について検討する。この例においては、ロード時間を含めて考えても、タスクA及びBの処理はサブプロセッサが行った方が早いものとする。この場合、タスクA及びBの処理は共にサブプロセッサに割り当てられる。ところが、タスクB、タスクA、タスクBの順番で処理を行う場合、最初のタスクBをサブプロセッサで行い、タスクAを主たるプロセッサで行うと、次のタスクBの処理に必要なプログラムコードがサブプロセッサのローカルメモリ上に保持されているため、次のタスクBを行う際におけるプログラムコードのロード時間が短縮される。結果として全体的な処理時間の短縮を図ることができるが、このような場合を特許文献1では考慮されていない。
本発明は、上記に鑑みてなされたものであって、プログラムなどのロード時間を考慮した上で、全体的な処理時間の短縮を図るデータ処理装置、方法及びプログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明にかかるデータ処理装置は、第1の半導体回路と、処理の実行に使用される情報を記憶する回路内記憶部を有する第2の半導体回路と、を備えるデータ処理装置であって、前記第1の半導体回路が、前記第1の半導体回路に対して、実行を要求された処理を検出する検出部と、前記第2の半導体回路が有する回路内記憶部に記憶された情報を用いて、前記第2の半導体回路で、検出された前記処理を実行可能か否か判断する判断部と、検出された前記処理を、前記第1の半導体回路で実行した場合に要する第1の処理時間を算出する第1処理時間算出部と、前記判断部の判断結果に基づいて、検出された前記処理の実行に必要な情報を前記回路内記憶部に読み込ませる読込時間を加算するか否かを判断した上で、検出された前記処理を、前記第2の半導体回路で実行した場合に要する第2の処理時間を算出する第2処理時間算出部と、前記第1の処理時間と前記第2の処理時間とを比較する比較部と、前記比較結果に基づいて、検出された前記処理を実行する半導体回路を、前記第1の半導体回路及び前記第2の半導体回路から選択する選択部と、前記選択部が前記第1の半導体回路を選択した場合に、検出された前記処理を実行する演算部と、前記選択部が前記第2の半導体回路を選択した場合に、前記第2の半導体回路に対して、検出された前記処理の実行を依頼する依頼部と、を備えることを特徴とする。
また、本発明にかかるデータ処理方法は、第1の半導体回路と、処理の実行に使用される情報を記憶する回路内記憶部を有する第2の半導体回路と、を備えるデータ処理装置の第1半導体回路で実行されるデータ処理方法であって、検出部が、前記第1の半導体回路に対して、実行を要求された処理を検出する検出ステップと、判断部が、前記第2の半導体回路が有する回路内記憶部に記憶された情報を用いて、前記第2の半導体回路で、検出された前記処理を実行可能か否か判断する判断ステップと、第1処理時間算出部が、検出された前記処理を、前記第1の半導体回路で実行した場合に要する第1の処理時間を算出する第1処理時間算出ステップと、第2処理時間算出部が、前記判断ステップによる判断結果に基づいて、検出された前記処理の実行に必要な情報を前記回路内記憶部に読み込ませる読込時間を加算するか否かを判断した上で、検出された前記処理を、前記第2の半導体回路で実行した場合に要する第2の処理時間を算出する第2処理時間算出ステップと、比較部が、前記第1の処理時間と前記第2の処理時間とを比較する比較ステップと、選択部が、前記比較結果に基づいて、検出された前記処理を実行する半導体回路を、前記第1の半導体回路及び前記第2の半導体回路から選択する選択ステップと、演算部が、前記選択ステップにより前記第1の半導体回路を選択された場合に、検出された前記処理を実行する演算ステップと、依頼部が、前記選択ステップにより前記第2の半導体回路が選択された場合に、前記第2の半導体回路に対して、検出された前記処理の実行を依頼する依頼ステップと、を有することを特徴とする。
また、本発明にかかるデータ処理プログラムは、第1の半導体回路と、処理の実行に使用される情報を記憶する回路内記憶部を有する第2の半導体回路と、を備えるデータ処理装置の第1半導体回路で実行されるデータ処理プログラムであって、前記第1の半導体回路に対して、実行を要求された処理を検出する検出ステップと、前記第2の半導体回路が有する回路内記憶部に記憶された情報を用いて、前記第2の半導体回路で、検出された前記処理を実行可能か否か判断する判断ステップと、検出された前記処理を、前記第1の半導体回路で実行した場合に要する第1の処理時間を算出する第1処理時間算出ステップと、前記判断ステップによる判断結果に基づいて、検出された前記処理の実行に必要な情報を前記回路内記憶部に読み込ませる読込時間を加算するか否かを判断した上で、検出された前記処理を、前記第2の半導体回路で実行した場合に要する第2の処理時間を算出する第2処理時間算出ステップと、前記第1の処理時間と前記第2の処理時間とを比較する比較ステップと、前記比較結果に基づいて、検出された前記処理を実行する半導体回路を、前記第1の半導体回路及び前記第2の半導体回路から選択する選択ステップと、前記選択ステップにより前記第1の半導体回路を選択された場合に、検出された前記処理を実行する演算ステップと、前記選択ステップにより前記第2の半導体回路が選択された場合に、前記第2の半導体回路に対して、検出された前記処理の実行を依頼する依頼ステップと、を実行することを特徴とする。
本発明によれば、第2の半導体回路が備える回路内記憶部が記憶する情報を利用できるか否かに基づいて、検出した処理を実行する半導体回路として、第1の半導体回路及び第2の半導体回路から適切な半導体回路を選択できるので、処理を行う際のパフォーマンスを向上させることができるという効果を奏する。
以下に添付図面を参照して、この発明にかかるデータ処理装置、方法及びプログラムの最良な実施の形態を詳細に説明する。
(第1の実施の形態)
図1に示すように、データ処理装置100は、プロセッサ105と、RAM103と、記憶部104と、バス106を備える。バス106は、プロセッサ105、RAM103、及び記憶部104を接続する。
図1に示すように、データ処理装置100は、プロセッサ105と、RAM103と、記憶部104と、バス106を備える。バス106は、プロセッサ105、RAM103、及び記憶部104を接続する。
プロセッサ105は、第1プロセッサコア101と、第2プロセッサコア102とを備える。
本実施の形態にかかるプロセッサ105の第1プロセッサコア101は主たるプロセッサとしての機能を有し、第2プロセッサコア102はサブプロセッサとしての機能を有する。
記憶部104は、後述する第1プロセッサコア101及び第2プロセッサコア102で利用されるプログラムやデータを記憶する。
図2に示す例では、記憶部104に第1プログラム201と、第2プログラム202とが記憶されている。これら第1プログラム201、及び第2プログラム202は、第1プロセッサコア101及び第2プロセッサコア102で実行される場合に、それぞれユニークなプログラム識別子が割り当てられる。
さらに図2に示すように、第1プログラム201は、第1コア用コード211と、第2コア用コード212とを有する。第1コア用コード211は第1プロセッサコア101で実行されるためのコードであり、第2コア用コード212は第2プロセッサコア102で実行されるためのコードとする。本実施の形態においては、コードが異なる場合でも同一プログラムであれば同一のプログラム識別子が割り当てられるものとし、第1コア用コード211及び第2コア用コード212には、同一のプログラム識別子が割り当てられる。これにより、これら各プロセッサ用のコードが、実行するプロセッサに応じて選択的に実行できる。
なお、第1コア用コード211及び第2コア用コード212により実現される処理は、完全に同一である必要はない。例えば、各プロセッサのデータ形式に合わせるためのデータ変換処理を含んでもよい。また、第1コア用コード211及び第2コア用コード212は同じ命令セットを用いても良いし、異なる命令セットを用いても良い。
本実施の形態では、図2に示す例において、一つのプログラムに複数のプロセッサに対応するコードが含まれる例について説明したが、このような形式に制限するものではない。例えば、第1プログラム201の第1コア用コード211を一つのプログラムとし、第2コア用コード212をこれに関連付けられた別のプログラムとして保存しても良い。この場合においても、関連付に基づき、第1コア用コード211及び第2コア用コード212には同一のプログラム識別子が割り当てられる。
RAM103は、時刻データベース131を備える他、プログラムなどの作業領域として用いられる。
時刻データベース131は、第1プロセッサコア101において行われた処理の時刻に関する情報を記憶する。図3に示すように、時刻データベース131は、プログラム識別子と、最終検出時刻と、検出間隔とを対応付けて記憶する。各エントリは、後述する検出部111により登録される。
プログラム識別子は、同一の内容を行う処理(例えば、同一のプログラムコードを用いた処理、又はプログラム)毎に一意と割り当てられた識別子とする。プログラム識別子の割当手法としては、周知を問わずあらゆる手法を用いても良い。例えば、プログラムコードのハッシュ値を用いても良いし、利用者が定めても良い。また、プログラム識別子は、任意の処理が第1プロセッサコア101で実行される場合又は第2プロセッサコア102で実行される場合を問わず、同一の識別子が割り当てられる。
最終検出時刻は、検出部111が各処理を検出した時刻のうち、現在時刻から最も新しい時刻を保持する。図3に示す最終検出時刻は、ある所定時刻(例えば、データ処理装置100が起動した時刻)からの経過時間(例えば、秒)を示したものとする。
検出間隔は、検出部111が各処理を検出した検出間隔を保持する。本実施の形態にかかる検出間隔は、“最終検出時刻”に保存されている最も新しい検出時刻と、その前の検出時刻とから算出されたものとする。
なお、本実施の形態において検出間隔、検出時刻及び推定時刻の単位は、秒とするが、時間を計測する単位を秒に制限するものではなく、計算機内で表現可能な時間の単位(例えば、OSが管理する時間単位であれば、別の単位でも良い。
なお、検出間隔の算出手法は、上述した手法以外を利用しても良い。例えば、所定の処理が数回の検出された場合に、各検出間隔を記録し、各検出間隔の平均値や最頻値といった統計値を算出して固定的に検出間隔として扱っても良い。また、定期的に実行する命令であることが設計段階で分かっている場合には、定期的に実行される時間間隔を静的に設定してもよい。
また、当然ながら、時刻データベース131は、第2プロセッサコア102が有するローカルメモリ121に記憶された情報を使用した処理の検出時刻と、当該処理と同じプログラムを用いる処理の検出間隔と、についても対応付けて記憶している。
第1プロセッサコア101は、検出部111と、第1演算部112と、推定時刻特定部113と、処理時間算出部114と、選択部115と、依頼部116と、ローカルメモリ状態取得部117と、判断部118と、を備える。本実施の形態にかかる第1プロセッサコア101は、主となるプロセッサとしての機能を備え、必要に応じて第2プロセッサコア102に対して処理を依頼する
検出部111は、第1プロセッサコア101に対して、実行が要求された処理を検出する。また、検出部111は、検出した処理のプログラム識別子を特定し、当該プログラム識別子と、最終検出時刻と、を対応付けて時刻データベース131に登録する。なお、当該プログラム識別子のエントリが既に登録されている場合、当該エントリに対して更新を行う。その際、既に登録されていた最終検出時刻と、今回検出した最終検出時刻とから検出間隔を算出し、算出した検出間隔についても、上記プログラム識別子及び最終検出時刻と対応付けて更新する。
ローカルメモリ状態取得部117は、第2プロセッサコア102のローカルメモリ121にロードされた処理(当該処理を実行するためのプログラムコード及びデータを含む)を特定し、特定した処理を実行するプログラムに対応するプログラム識別子を取得する。例えば、ローカルメモリ状態取得部117がプログラム識別子を取得する手法は、周知の手法を問わずあらゆる手法を用いて良く、例えば、プログラム識別子がプログラムコードのハッシュ値の場合、ローカルメモリ121にロードされたプログラムコードのハッシュ値を求めるなどが考えられる。
なお、本実施の形態では、ローカルメモリ状態取得部117がローカルメモリ121の状態を取得するものとしたが、このような手法に制限するものではなく、例えば依頼部116が依頼した処理を記憶し、依頼部116が、推定時刻特定部113等の問い合わせに応じて、ローカルメモリ121に格納されている処理を通知しても良い。このように、ローカルメモリ121の状態を取得する手法としては、周知を問わずあらゆる手法を用いて良い。
判断部118は、ローカルメモリ状態取得部117が取得したローカルメモリ121にロードされた処理(当該処理を実行するためのプログラムコード及びデータを含む)に基づいて、プログラム等をロードする必要が有るか否か判断する。つまり、新たに検出された処理が、ローカルメモリ121にロードされたプログラムコードを使用するのであれば、プログラム等をロードする必要がないと判断する。また、検出した処理について、異なるプログラムコードを使用するのであれば、プログラム等をロードする必要があると判断する。
そして、判断部118は、ロードする必要がないと判断した場合に、第2プロセッサコア102が有するローカルメモリ121に記憶された情報(処理)を用いることで、第2プロセッサコア102で、検出部111が検出した処理を実行可能と判断する。判断部118は、ロードする必要があると判断した場合に、第2プロセッサコア102が有するローカルメモリ121に記憶された情報(処理)を用いることができず、処理を行うためのデータや命令列を読み込んだ後でなければ、第2プロセッサコア102で、検出部111が検出した処理を実行できないと判断する。
第1の実施の形態にかかる判断部118は、ローカルメモリ状態取得部117が取得したプログラム識別子と、検出部111が検出した処理を実行するプログラムのプログラム識別子とが一致した場合に、ロードが不要と判断する。プログラム識別子が一致しなかった場合に、ロードが必要と判断する。
処理時間算出部114は、第1処理時間算出部141と、第2処理時間算出部142とを備え、検出部111が検出した各処理をそれぞれのプロセッサで実行した場合の推定処理時間を算出する。
第1処理時間算出部141は、第1プロセッサコア101で、検出部111が検出した処理を、第1プロセッサコア101で実行した場合に要すると考えられる第1の推定処理時間を算出する。
第2処理時間算出部142は、判断部118の判断結果に基づいて、検出部111が検出した処理の実行に必要なデータや命令列をローカルメモリ121にロードさせるロード時間を加算するか否か判断する。そして、第2処理時間算出部142は、ロード時間を必要に応じて加算した上で、処理を第2プロセッサコア102で実行した場合に要する第2の推定処理時間を算出する。
図4に示す例では、第2プロセッサコア102のローカルメモリ121には、タスクBの処理に必要な情報(データや命令列)が記憶された状態で、タスクAの処理の実行依頼を受け付けた場合とする。この図4に示す例では前回行ったタスク(タスクB)と、次に行うタスク(タスクA)とが一致しない場合とする。これらタスクが一致するか否かの判断は、上述した判断部118で行われるものとする。このようにタスクが一致しない場合では、第2プロセッサコア102がロード処理を行う必要があるためロード時間401が必要となる。これにより、ローカルメモリ121上にタスクAに必要な情報が格納された後(符号402)、タスクAの処理を実行時間403の間だけ行われる。この場合、第2処理時間算出部142は、実行時間403に、ロード時間401を加算した合計時間を、第2の推定処理時間として算出する。なお、実行時間及びロード時間の算出手法は、周知の手法を問わず、あらゆる手法を用いて良い。
図5に示す例では、第2プロセッサコア102のローカルメモリ121には、タスクAの処理に必要な情報(データや命令列)が記憶された状態で、タスクAの処理の実行依頼を受け付けた場合とする。この図5に示す例では前回行ったタスク(タスクA)と、次に行うタスク(タスクA)とが一致する場合とする。この場合では、タスクAを実行するためのロード時間が不要となる。これにより、ローカルメモリ121上にタスクAに必要な情報501を用いて、タスクAの処理を実行時間502の間だけ行われる。この場合、第2処理時間算出部142は、実行時間502を、第2の推定処理時間として算出する。
なお、第1処理時間算出部141が算出する第1の推定処理時間は、第1プロセッサコア101においては情報のロードが不要(ロード時間がない)なため、第1プロセッサコア101におけるタスクの実行時間となる。
推定時刻特定部113は、第2プロセッサコア102にロードされている処理が、次に実行される時刻を、時刻データベース131に基づいて算出する。本実施の形態にかかる推定時刻特定部113は、ローカルメモリ状態取得部117により取得されたプログラム識別子と時刻データベース131で対応付けられている最終検出時刻及び検出間隔より、次の検出時刻となる推定検出時刻を特定する。
選択部115は、比較部143を備え、時刻データベース131に保存された情報と、推定時刻特定部113により特定された推定検出時刻と、処理時間算出部114にて算出された推定処理時間と、に基づいて、新たに実行を要求された処理を、第1プロセッサコア101及び第2プロセッサコア102のうち、いずれかで実行するかを選択する。なお、処理を選択するために提示した上記の条件を全て用いる必要は無い。例えば、時刻データベース131に保存された情報は、既に推定検出時刻が算出され、渡されている以上、必須の情報ではない。
比較部は、第1の処理時間と第2の処理時間とを比較する。これにより、選択部115は、比較結果に基づいて、新たに実行を要求された処理を、第1プロセッサコア101及び第2プロセッサコア102のうち、いずれかで実行するかを選択する。
また、選択部115は、さらに、推定時刻特定部113により特定された推定検出時刻前に、検出された第1の処理が第2プロセッサコア102で処理が終了するか否かに基づいて、第1プロセッサコア101及び第2プロセッサコア102から選択する。なお、詳細な選択手順については後述する。
第1演算部112は、新しく要求された処理の実行先として選択部115が第1プロセッサコア101を選択した場合に、当該処理を実行する。
依頼部116は、新しく要求された処理の実行先として選択部115が第2プロセッサコア102を選択した場合に、当該処理の実行を第2プロセッサコア102に対して依頼する。
なお、第1プロセッサコア101は、上述した本実施の形態の特徴的な構成の他に、一般的なプログラムのロードにより実現される各構成も備えているものとする。また、これら一般的なプログラムで実現された構成も、上述した構成と共用しても良い(例えば、第1演算部112など)。ただし、一般的なプログラムで実現された各構成は、本実施の形態と関係ないため、図ならびに説明からは省略する。
第2プロセッサコア102は、ローカルメモリ121と、第2演算部122とを備える。
ローカルメモリ121は、第1プロセッサコア101の依頼部116からの要求に基づいて、処理を実行するために必要な命令列やデータを保存する。
第2演算部122は、ローカルメモリ121に保存された命令を実行する。
次に、本実施の形態にかかるデータ処理装置100のタスクを、いずれかのプロセッサで実行するまでの処理手順について、図6を用いて説明する。
まず、検出部111が、第1プロセッサコア101に対する実行要求がなされた処理を、検出する(ステップS701)。この処理の検出手法としては、例えば、特定の関数やシステムコールの実行を検出したり、特定のアドレスによって識別される各プロセッサによる命令の実行を検出したり、各プロセッサが備える特定の命令の実行を検出してもよい。このように、処理の検出手法としては、周知を問わず、あらゆる手法を用いて良い。
次に、検出部111が、検出内容で、時刻データベース131を更新する(ステップS702)。これにより、時刻データベース131は、検出内容を記憶する。
次に、ローカルメモリ状態取得部117が、ローカルメモリ121上に記憶されている処理(タスク)を特定する(ステップS703)。その後、判断部118が、第2プロセッサコア102で検出した処理を実行する場合に、ロードが必要か否か判断する(ステップS704)。
次に、第1処理時間算出部141が、検出された処理を第1プロセッサコア101で実行した場合の第1の推定処理時間を算出する(ステップS705)。
そして、第2処理時間算出部142が、ステップS704の判断結果に基づいて、必要な場合にはロード時間を加算した上で、検出された処理を第2プロセッサコア102で実行した場合の第2の推定処理時間を算出する(ステップS706)。
推定処理時間に含まれる実行時間の算出手法としては、いくつかの手法が考えられる。例えば、実行時間を導出する近似式を用いる手法がある。この近似式は、第1プロセッサコア101又は第2プロセッサコア102の性能に基づいて作成され、データサイズを引数とする。データサイズを代入して近似式で計算処理を行うことで、各プロセッサに対応する実行時間を算出できる。この近似式は、設計段階で予め第1処理時間算出部141及び第2処理時間算出部142に埋め込んでおいても良い。他には、各プロセッサが処理を行った際に簡易な測定を行ない、計測結果に基づいて近似式を導出しても良い。この計測結果に基づいて近似式を導出する例としては、数種類のデータサイズを用いて各プロセッサによる実行時間を測定し、それらを結ぶ近似曲線の近似式を導出する等が考えられる。また、ロード時間についても同様の手法で算出できるものとして説明を省略する。なお、本実施の形態は、実行時間及びロード時間を導出する手法を、上述した近似式で算出する手法に限るものではなく、周知を問わず、あらゆる手法を用いて良い。
続いて、推定時刻特定部113が、第2プロセッサコア102において、ローカルメモリ121に格納されているため、実行可能状態にある処理が、再び検出されると考えられる推定検出時刻を、時刻データベース131が記憶する情報に基づいて算出する(ステップS707)。
次に、選択部115内の比較部143が、ステップS705で算出された第1の推定処理時間と、ステップS706で算出された第2の推定処理時間と、を比較する(ステップS708)。
そして、選択部115が、ステップS704の判断結果、ステップS707の推定検出時刻、及びステップS708の比較結果に基づいて、処理を実行するプロセッサとして、第1プロセッサコア101及び第2プロセッサコア102のうち一方を選択する(ステップS709)。この選択処理の詳細については、後述する。
そして、ステップS709において、第1プロセッサコア101で処理を行うことを選択した場合、第1演算部112が、当該処理に関する演算を実行する(ステップS710)。
一方、ステップS709において、第2プロセッサコア102で処理を行うことを選択した場合、依頼部116が、第2プロセッサコア102に処理を依頼するための情報を生成し、第2プロセッサコア102に対して、処理の実行を依頼する(ステップS711)。
これにより、プロセッサで処理が実行されることになり、処理が終了する。次に、本実施の形態にかかるデータ処理装置100の第1プロセッサコア101の各構成の動きについて、検出した処理をいずれかのプロセッサで実行するまでの手順について、図7を用いて説明する。
まずは、検出部111が、特定の処理を検出する(ステップS801)。これにより一連の処理が開始される。その後、検出部111は、時刻データベース131を更新する(ステップS802)。このステップS801及びS802の処理は、それぞれ図6のステップS701及びS702に対応する。
このステップS802で行う時刻データベース131に対する更新処理は、二つの処理で構成される。まず第1の処理は、検出間隔の更新とし、第2の処理は、最終検出時刻の更新とする。検出間隔は、例えば、今回の処理を検出した時刻と、検出した処理と同一の処理として既に登録されているエントリに登録された最終検出時刻との差から求める。そして求められた検出間隔の値で、当該エントリの検出間隔を更新する。最終検出時刻は、検出した時刻を用いて更新する。
なお、図7においては、検出部111が時刻データベース131のエントリを参照する処理を省略している。また、検出部111が、時刻データベース131を参照しに行くのではなく、検出部111自体が最後に検出した時刻を保持し、直接検出間隔を算出するようにしても良い。
その後、検出部111は、判断部118に対して検出結果を通知する(ステップS803)。同様に、検出部111は、処理時間算出部114に対して、検出結果を通知する(ステップS804)。このとき、検出結果としては、検出した処理を示すプログラム識別子と検出時刻とする。
次に、判断部118は、通知された検出結果に含まれるプログラム識別子と、ローカルメモリ121に記憶されている処理を示すプログラム識別子とから、ロードの有無を判断する(ステップS805)。なお、ローカルメモリ121に記憶されている処理を示すプログラム識別子は、ローカルメモリ状態取得部117から取得するものとする。
そして、判断部118は、判断結果を選択部115に通知した後(ステップS806)、処理時間選択部114に対しても通知を行う(ステップS807)。
その後、処理時間算出部114の第1処理時間算出部141は、取得した検出結果に基づいて、第1プロセッサコア101で処理を実行した場合に要する第1の推定処理時間を算出する(ステップS808)。次に、第2処理時間算出部142は、取得した検出結果及びロード有無の判断結果に基づいて、第2プロセッサコア102で処理を実行した場合に要する第2の推定処理時間を算出する(ステップS809)。
そして、処理時間算出部114は、第1処理時間算出部141及び第2処理時間算出部142による推定処理時間を算出結果として、選択部115に通知する(ステップS810)。
そして、通知を受けた選択部115は、ローカルメモリ121にロードされているプログラムを使用する処理が再び検出される可能性がある推定実行時刻の算出と、推定処理時間の比較とを行った後、処理を行うプロセッサとして、第1プロセッサコア101及び第2プロセッサコア102のいずれかを選択する。
このため、選択部115は、推定時刻特定部113に対して、推定実行時刻の特定を依頼する(ステップS811)。この依頼には検出されたプログラム識別子を含む。
依頼を受け付けた推定時刻特定部113は、通知されたプログラム識別子を検索キーとして時刻データベース131に対して検索を行う(ステップS812)。これにより、推定時刻特定部113は、時刻データベース131から検索結果の応答を得られる(ステップS813)。得られるエントリの例としては、図3に示したエントリなどがある。また、検索キーに対応するエントリが検出できなかった場合、ステップS814の処理をスキップして選択部115の処理に戻る(図7では省略)。同様に、検出されたエントリにおいて「検出間隔」が登録されていない場合(例えば図3の上から二行目のエントリ)、推定実行時刻を算出できないので、ステップS814の処理をスキップして選択部115の処理に戻る(図7では省略)。
そして、得られたエントリに「検出間隔」が登録されている場合、推定時刻特定部113は、当該エントリの「最終検出時刻」と「検出間隔」とから、当該処理が次に検出される推定検出時刻を算出する(ステップS814)。算出した推定検出時刻は、選択部115に特定結果として、推定時刻特定部113により通知される(ステップS815)。
その後、比較部143が、第1の推定処理時間及び第2の推定処理時間を比較する(ステップS816)。そして、選択部115が、比較結果、ロードの有無の判断結果、及び推定実行時刻に基づいて、実行に用いるプロセッサを選択する(ステップS817)。この選択処理の詳細については後述する。
仮に、選択部115が、第1プロセッサコア101を選択した場合、選択部115は第1演算部112に対して、演算を実行する通知を行う(ステップS818)。当該通知を受けて第1演算部112は、検出した処理についての演算を実行する(ステップS819)。
一方、選択部115が、第2プロセッサコア102を選択した場合、依頼部116に対して演算を実行する通知を行う(ステップS820)。当該通知を受けて依頼部116は、第2プロセッサコア102が解釈可能な形に変更した後(ステップS821)、第2プロセッサコア102に対して処理の実行を依頼する(ステップS822)。
以上に、第1の実施の形態のデータ処理装置100の一連の処理の流れを示した。なお、この処理の流れは一例であり、本実施の形態は、当該処理の流れに制限するものではない。他の例としては、上述した各構成の主たる機能を実現した上で、通知をポーリング方式に変更したり、通知と共に伝えていた情報を一時的に記憶部104や時刻データベース131に保存して、利用側で読み出すようにしてもよい。
次に、本実施の形態にかかる選択部115におけるプロセッサの選択手順について、図8を用いて説明する。
まず、比較部143が、第1プロセッサコア101の第1の推定処理時間と、第2プロセッサコア102の第2の推定処理時間とを比較し、第1の推定処理時間(実行時間)が第2の推定処理時間(ロード時間+実行時間)と比べて短いか否か判断する(ステップS901)。第1の推定処理時間が、短いと判断した場合(ステップS901:Yes)、選択部115が、第1プロセッサコア101を選択して(ステップS904)、処理を終了する。なお、第2プロセッサコア102の第2の推定処理時間には、プログラムのロード時間を含まれているものとするが、当該ロード時間が、検出された処理を実行するプログラム等が既にローカルメモリ121にロードされている場合には無視して良い(ゼロ時間とみなす)。
一方、比較部143が、第2の推定処理時間が短いと判断した場合、換言すればロード時間を加味しても第2プロセッサコア102の方が早く処理できると判断した場合(ステップS901:No)、選択部115は、さらに詳細な判断を行う。具体的には、選択部115が、判断部118の判断結果に基づいて、検出された処理に関するコード類(データや命令列を含む情報)がローカルメモリ121にロード済みであるか否か判断する(ステップS902)。ロード済みであると判断した場合(ステップS902:Yes)、選択部115は、第2プロセッサコア102を選択する(ステップS905)。
また、選択部115が、ロード済みではないと判断した場合(ステップS902:No)、まず、推定時刻特定部113により推定予測時刻が特定されているか否か判断する。推定予測時刻が特定されている場合、当該推定予測時刻が、第2プロセッサコア102に検出された処理で利用されるプログラムをロードして当該処理を実行が終了するより前の時刻か否か判断する(ステップS903)。
当該判断をより詳細に説明するため、図9を用いて説明する。初期状態においては、ローカルメモリ121にタスクAを実行するプログラムがすでにロード済みになっているものとする。さらに、当該タスクAの実行は完了しており、第1プロセッサコア101及び第2プロセッサコア102共に、任意のタスクを実行できる状態とする。
時刻t31では、検出部111がタスクBを検出し、当該タスクBを第1プロセッサコア101及び第2プロセッサコア102のどちらで実行すべきか判断を行うものとする。なお、当該判断においては、図8のステップS901及びステップS902では、Noと判断されているものとする。
つまり、図9に示す例では、第1プロセッサコア101におけるタスクBの推定処理時間601(実行時間Tr1(B)は、第2プロセッサコア102におけるタスクBの推定予測時刻602(ロード時間Tl2及び実行時間Tr2(B))より時間が長いため、ステップS901ではNoと判断されている。また、ロードされているプログラムは、タスクA603で利用されるプログラムであるため、ステップS902でもNoと判断される。
この段階で、選択部115が、図8のステップS903の判断を行う。図9に示す例では、説明のため、2通りのタスクAの推定検出時刻(推定検出時刻1及び推定検出時刻2)を示した。推定検出時刻1が推定時刻特定部113により特定された場合、タスクAの推定検出時刻の時点で、タスクBの処理が終了していない。すなわち、選択部115は、タスクBの処理中に、第2プロセッサコア102で処理すべきタスクAが検出されると判断し(ステップS903:Yes)、第1プロセッサコア101を選択する(ステップS904)。
一方、推定検出時刻2が推定時刻特定部113により特定された場合、タスクAの推定検出時刻の時点で、タスクBの処理が終了している。すなわち、選択部115は、タスクBの処理中に、第2プロセッサコア102で処理すべきタスクAが検出されないと判断し(ステップS903:No)、第2プロセッサコア102を選択する(ステップS905)。この場合、図9に示すように、ローカルメモリ121に、タスクB604がロードされる。
ここで選択部115が考慮すべき状態を整理すると、次の6個の組み合わせであることが分かる。それぞれ(推定処理時間が短いプロセッサ、時刻データベース131に検出間隔の記載の有無、第2プロセッサコア102にロード済みのプログラムを用いる処理と検出された処理とが一致)を記載している。
a:(1、×、×)
b:(2、×、×)
c:(1、○、○)
d:(2、○、○)
e:(1、○、×)
f:(2、○、×)
なお、a〜fに記載されていない組み合わせ(1、×、○)及び(2、×、○)は、検出間隔が記載されていない(すなわち初めての実行)状態で、ローカルメモリ121にプログラムがロードされている状態は起こりえないため、除外される。
a:(1、×、×)
b:(2、×、×)
c:(1、○、○)
d:(2、○、○)
e:(1、○、×)
f:(2、○、×)
なお、a〜fに記載されていない組み合わせ(1、×、○)及び(2、×、○)は、検出間隔が記載されていない(すなわち初めての実行)状態で、ローカルメモリ121にプログラムがロードされている状態は起こりえないため、除外される。
ここで組み合わせa、c、eの三個は、ステップS901により第1プロセッサコア101で処理を実行すると判断される。組み合わせdは、ステップS902により第2プロセッサコア102で実行すると判断される。組み合わせbは、ステップS903において、推定検出時刻の算出できないので、第1プロセッサコア101で実行すると判断される。組み合わせfは、上述した様に推定処理時間と推定検出時刻とを考慮した上で判断を行う。
組み合わせfの場合の判断は、選択部115は、時刻データベース131に対する検索結果に基づいて行う。時刻データベース131が図10に示した情報を保持している場合について説明する。なお、組み合わせfは、推定処理時間が短いプロセッサが第2プロセッサコア102であり、時刻データベース131に検出間隔の記載の有り、第2プロセッサコア102にロード済みのプログラムを用いる処理と検出された処理とが一致しない場合を示している。
図10に示した例では、タスクA及びタスクBに対してそれぞれ複数回の実行が検出されていることを示している。これらタスクA及びタスクBのエントリについては、検出間隔が登録されているため、推定時刻特定部113による推定実行時刻を特定することができる。次にこれらタスクA及びタスクBの検出間隔について説明する。
図11に示す例では、タスクAが図10で示したように“200”秒間隔で検出され、タスクBも図10で示したように“200”秒間隔で検出されている。そして、現在時刻は、500秒とする。この時点でタスクAの検出が行われており、650秒(現在時刻から150秒後)にタスクBが検出されるものと推定される。
図11の範囲Ttにおける第2プロセッサコア102の処理及びローカルメモリ121上に記憶されるプログラムを、詳細に示した図12においては、現在時刻となる“500”では、ローカルメモリ121上にタスクBのプログラムが格納されている。そして、タスクAが検出された場合、仮にタスクAの実行時間が第1実行時間1201であれば、タスクBの推定検出時刻より先に終了する。この場合、ローカルメモリ121にタスクAに関するプログラムが格納される(符号1203)。
一方、タスクAの実行時間が第2実行時間1202であれば、タスクBの推定検出時刻より後に終了する。この場合、第1プロセッサコア101でタスクAが実行されることになり、ローカルメモリ121にタスクBに関するプログラムが格納された状態を維持し続ける(符号1204)。これにより、タスクBの検出後、すぐに実行することができる。
上述した実施の形態では、データ処理装置100に2種類のタスクを検出する例について説明したが、2種類のタスクに制限するものではなく、1種類又は3種類以上のタスクを検出しても良い。
また、上述した実施の形態においては、データ処理装置100が、第1プロセッサコア101及び第2プロセッサコア102の二個のプロセッサを備える場合について説明したが、三個以上のプロセッサを備えていても良い。
このように、本実施の形態にかかるデータ処理装置100では、複数の異なるデータ処理要求を、複数のプロセッサに対して適切に割り当てることができるので、データ処理のパフォーマンスを向上させることができる。
(第2の実施の形態)
第2の実施の形態のデータ処理装置は、第1の実施の形態のデータ処理装置100と比べて、検出された処理を行う際に行うプロセッサの選択条件をさらに追加した実施の形態とする。
第2の実施の形態のデータ処理装置は、第1の実施の形態のデータ処理装置100と比べて、検出された処理を行う際に行うプロセッサの選択条件をさらに追加した実施の形態とする。
図13に示すデータ処理装置1300は、上述した第1の実施の形態に係るデータ処理装置100とは、制約条件記憶部1321を追加され、プロセッサ105と処理が異なるプロセッサ1301を備えた点のみ異なる。なお、本実施の形態のデータ処理装置1300の構成で、第1の実施の形態のデータ処理装置100と共通な構成については説明を省略する。
制約条件記憶部1321は、処理を行うプロセッサを選択する際に制約となる条件を記憶する。図14に示すように、制約条件記憶部1321は、プログラム識別子と、処理IDと、制約条件タイプと、制約条件とを対応付けて記憶する。
プログラム識別子は、第1の実施の形態で示したものと同じとする。処理IDは、あるプログラムコード識別子の下で処理される特定のデータや動作条件を特徴づけるために付与されるIDとする。制約条件タイプは、当該エントリで定義する制約条件の種別を規定する。制約条件は、制約条件タイプで期待された種別についての制約値とする。
制約条件記憶部1321には、ひとつのプログラムコード識別子/処理IDの組で特定される処理の対象に対して、複数の制約条件を指定(複数のエントリを登録)することができる。その場合、全ての制約条件の論理積として制約条件が定義されたものとする。
そして、本実施の形態においては、検出された処理が、各エントリに記載された条件を満たさない場合には、第2プロセッサコア102で実行するものとする。なお、本実施の形態は、このように条件を満たさない場合に第2プロセッサコア102を選択するような制約条件に制限するものではなく、例えば制約条件を満足した場合に第1プロセッサコア1302を選択するなど、プロセッサを選択するために様々な制約条件を設定可能とする。
図14に示す例に示される、一番上のエントリにおいては、を、第1プロセッサコア1302において、プログラム識別子「A」で識別されるプログラムコードの処理ID「1」で特定される処理が実行された場合、当該処理が実行時間30(ms)以内に終了しない場合には、第2プロセッサコア102で実行することを制約条件として設定したエントリである。なお、他のエントリについても同様の解釈に従って設定されたエントリとし、説明を省略する。
図14に示す制約条件記憶部1321では、各エントリの制約条件タイプを「実行時間」と設定した例について示した。しかしながら、制約条件記憶部1321の制約条件タイプを「実行時間」に制限するものではなく、例えば、第1プロセッサコア1302又は第2プロセッサコア102の負荷/占有率/稼働率/温度/消費電力/動作クロック/動作電圧、メモリ使用量、ネットワークを使う処理であればスループット/遅延/ジッタなどを制約条件として登録しても良い。また、これらを制約条件として用いる場合、第1プロセッサコア1302及び第2プロセッサコア102において、上述した状況を監視するための構成を備えることにしても良い。
制約条件記憶部1321に保存するエントリは、本データ処理装置の利用者が設定しても良いし、実行するプログラム自身が設定してもよい。例えば、リアルタイム性を要求するアプリケーションであれば、プログラムを設計する時点で実行時間に関する制約条件が判明している可能性がある。この場合、プログラムから直接制約条件を指定すればよい。
本実施の形態にかかるプロセッサ1301は、第1プロセッサコア1302において、第1の実施の形態にかかる選択部115と処理が異なる選択部1311を備えているものとする。
選択部1311は、第1の実施の形態にかかる選択部115の機能を備えるほか、さらに制約条件記憶部1321が記憶する制約条件に基づいて、検出部111により検出された処理を行うプロセッサとして、第1プロセッサコア101及び第2プロセッサコア102のうちいずれか一つを選択する。
本実施の形態にかかるデータ処理装置1300の全体的な処理の流れは、第1の実施の形態にかかるデータ処理装置100と同様とし説明を省略する。次に、第1の実施の形態と処理が異なる、本実施の形態にかかるデータ処理装置1300の選択部1311におけるプロセッサの選択手順について、図15を用いて説明する。
まずは、第1の実施の形態の図8のステップS901と同様に、比較部143が、第1の推定処理時間と、第2の推定処理時間とを比較する(ステップS1501)。第1の推定処理時間が、短いと判断した場合(ステップS1501:Yes)、選択部1311が、第1プロセッサコア1302を選択して(ステップS1505)、処理を終了する。
一方、比較部143が、第2の推定処理時間が短いと判断した場合(ステップS1501:No)、選択部1311は、制約条件記憶部1321に記憶されたエントリのうち、検出した処理に対応するプログラム識別子及び処理IDを有する全てのエントリについて、全ての制約条件を満足するか否か判断する(ステップS1502)。ひとつでも制約条件を満足しないと判断した場合(ステップS1502:No)、第2プロセッサコア102を選択する(ステップS1506)。
一方、全ての制約条件を満足すると判断した場合(ステップS1502:Yes)、以降、第1の実施の形態のステップS902〜S905と同様の処理を行い、プロセッサを選択する(ステップS1503〜S1506)。
上述したデータ処理装置1300においては、第1の実施の形態のデータ処理装置100で示した効果に加え、さらに制約条件に応じて適切なプロセッサを選択することで、さらにパフォーマンスを向上させることができる。
(第3の実施の形態)
第3の実施の形態は、処理を検出した際のプロセッサコアの状況に応じて、当該処理を実行するプロセッサコアを選択する実施の形態とする。
第3の実施の形態は、処理を検出した際のプロセッサコアの状況に応じて、当該処理を実行するプロセッサコアを選択する実施の形態とする。
図16に示すデータ処理装置1600は、上述した第1の実施の形態に係るデータ処理装置100とは、プロセッサ105と処理が異なるプロセッサ1601を備え、状態データベース1621を追加された点のみ異なる。なお、本実施の形態のデータ処理装置1600の構成で、第1の実施の形態のデータ処理装置100と共通な構成については説明を省略する。
状態データベース1621は、監視部1612からの更新に従って、データ処理装置1600と関連する周辺情報との状態を示す状態情報を保存する。
図17に示す状態データベース1621は、状態タイプと、統計量とを対応付けて記憶する。状態タイプは、保存している状態の種類を識別する。なお、図17では説明上、名前が記されているが実際には適切な識別子が登録される。統計量は、監視部1612から通知された値である。本実施の形態では、監視結果となる値を加工処理した結果を格納しているが、監視結果となる値を直接保存してもよい。図17に示す例では、4つの状態値が独立に保存されている様子を示している。
なお、本実施の形態とは異なるが、状態データベース1621は、新たに時刻情報をフィールドとして追加し、状態タイプ及び統計量に対して、各情報が生成された時刻を対応付けて記憶しても良い。この場合、後述する監視部1612が更新する際に更新時刻を、時刻フィールドに登録する。これにより、選択部1611は、状態データベース1621に登録された状態情報が有用か否かを時刻情報に基づいて判断し、プロセッサを選択することが可能となる。なお、時刻情報を保存するように拡張した状態データベースを用いる場合、複数の世代にわたって同一の情報を保存するようにしてもよい。
本実施の形態にかかるプロセッサ1601は、第1プロセッサコア1602において、第1の実施の形態にかかる選択部115と処理が異なる選択部1611を備え、監視部1612を追加されたものとする。
監視部1612は、本実施の形態にかかるデータ処理装置1600と関連する周辺情報(例えばネットワークを介した通信を行う場合のネットワーク状況)を監視する機能と、監視結果である情報に対して加工処理(統計値算出など)を行う機能と、監視結果である情報及び加工処理した情報を、状態データベース1621に保存する機能とを備える。
本実施の形態にかかるデータ処理装置1600では、監視部1612は、一個しか備えていないが、複数備えることにしても良い。また、監視部が様々な情報を監視しても良いし、1種類の情報を監視する監視部が複数存在していても良い。
監視部1612は、様々な情報を監視対象とすることができる。例えば、監視部1612が、第1プロセッサコア1602や第2プロセッサコア102の負荷を監視しても良く、この場合、オペレーティングシステムが管理する待機ジョブの数を参照することが考えられる。また、ハードウェアが提供するパフォーマンスカウンタを用いて演算に要したプロセッササイクル数を参照するようにしてもよい。
他の例としては、監視部1612が、各プロセッサの温度を監視するのであれば、各プロセッサに内蔵された温度センサを読み取ればよい。さらに、監視部1612が、ネットワークの使用帯域を監視するのであれば、オペレーティングシステムが管理している送受信データ量や送受信パケット数のカウンタを参照して監視すればよい。なお、本実施の形態は、上述した監視対象や監視手法に制限するものではなく、プロセッサの選択に影響する情報であれば、あらゆる情報を監視対象としても良い。これら監視対象を監視する監視手法については特に制限はないものとする。
選択部1611は、第1の実施の形態にかかる選択部115の機能を備えるほか、さらに状態データベース1621が記憶する状態情報に基づいて、検出部111により検出された処理を行うプロセッサとして、第1プロセッサコア1302を及び第2プロセッサコア102のうちいずれか一つを選択する。
本実施の形態にかかるデータ処理装置1600の全体的な処理の流れは、第1の実施の形態にかかるデータ処理装置100と同様とし説明を省略する。次に、第1の実施の形態と処理が異なる、本実施の形態にかかるデータ処理装置1600の選択部1611におけるプロセッサの選択手順について、図18を用いて説明する。
まず、選択部1611は、状態データベース1621に格納された現在の状態が、予め定められている条件を満足するか否か判断する(ステップS1801)。ここで、予め定められている条件とは、データ処理装置1600の設計時に事前に決められた条件とする。例えば、第1プロセッサコア1602の負荷を80%以下、動作時の第1プロセッサコア1602の温度は60度以下等とする。これらの条件は固定的な判断基準として選択部1611に組み込まれているものとする。
選択部1611が、現在の状態が予め定められている条件を満たさないと判断した場合(ステップS1801:No)、第2プロセッサコア102を選択する(ステップS1806)。一方、条件を満たす場合(ステップS1801:Yes)、更なる判断を継続する。
それ以降は、第1の実施の形態と同様の処理手順(ステップS901〜S905)で、第1プロセッサコア1602又は第2プロセッサコア102を選択する(ステップS1802〜S1806)。
(第4の実施の形態)
第4の実施の形態は、第2の実施の形態で示した制約条件に基づくプロセッサコアの選択機能と、第3の実施の形態で示した状態情報に基づくプロセッサコアの選択機能と、が追加された実施の形態とする。
第4の実施の形態は、第2の実施の形態で示した制約条件に基づくプロセッサコアの選択機能と、第3の実施の形態で示した状態情報に基づくプロセッサコアの選択機能と、が追加された実施の形態とする。
図19に示すデータ処理装置1900は、上述した第1の実施の形態に係るデータ処理装置100とは、制約条件記憶部1321及び状態データベース1621を追加され、プロセッサ105と処理が異なるプロセッサ1901を備えた点のみ異なる。なお、本実施の形態のデータ処理装置1900の構成で、第1の実施の形態のデータ処理装置100と共通な構成については説明を省略する。
また、制約条件記憶部1321は、第2の実施の形態で示した通りであり、状態データベース1621は第3の実施の形態で示した通りなので説明を省略する。
本実施の形態にかかるプロセッサ1901は、第1プロセッサコア1902において、監視部1612が追加され、第1の実施の形態にかかる選択部115と処理が異なる選択部1911を備えているものとする。
監視部1612は第3の実施の形態で示した通りなので説明を省略する。
選択部1911は、第1の実施の形態にかかる選択部115の機能を備えるほか、さらに制約条件記憶部1321が記憶する制約条件、及び状態データベース1621が記憶する状態情報に基づいて、検出部111により検出された処理を行うプロセッサとして、第1プロセッサコア1902及び第2プロセッサコア102のうちいずれか一つを選択する。
本実施の形態にかかるデータ処理装置1900の全体的な処理の流れは、第1の実施の形態にかかるデータ処理装置100と同様とし説明を省略する。次に、本実施の形態にかかるデータ処理装置1600の選択部1611におけるプロセッサの選択手順は、原則として第2の実施の形態にかかる選択部1311と同様の処理手順(図15)と同様として説明を省略する。
上述した実施の形態では、半導体回路として、プロセッサを用いた例について説明した。しかしながら、半導体回路をプロセッサ(コア)に制限するものではなく、ハードウェア的に結線された回路であればよい。また、一つのプロセッサに複数のプロセッサコアを備えるのではなく、別プロセッサにしても良い。
第1〜4の実施の形態では、図8、図15及び図18で示したようにプロセッサコアを選択するアルゴリズムは、各選択部に固定的に設定した。しかしながら、固定的な設定に制限するものではなく、データ処理装置の上で動作するアプリケーションやオペレーティングシステムが動的にプロセッサコアを選択するアルゴリズムを用いても良い。また、アプリケーションごとにプロセッサコアを選択するアルゴリズムを変更しても良い。
第1〜4の実施の形態では、第2プロセッサコア102としてローカルメモリ121を内部に保持する汎用プロセッサを想定していたが、制御コードによって内部構造を動的に再構成可能なプロセッサを用いてもよい。このとき、前述の説明にてロード時間として参照していた部分は、制御コードのロード時間とプロセッサの再構成に要する時間が含まれるものとする。
上述した実施の形態かかるデータ処理装置で実行されるデータ処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、上述した実施の形態にかかるデータ処理装置で実行されるデータ処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上述した実施の形態かかるデータ処理装置で実行されるデータ処理プログラムをインターネット等
のネットワーク経由で提供または配布するように構成しても良い。
のネットワーク経由で提供または配布するように構成しても良い。
また、上述した実施の形態にかかるデータ処理装置で実行されるデータ処理プログラムを、ROM等に予め組み込んで提供するように構成してもよい。
上述した実施の形態にかかるデータ処理装置で実行されるデータ処理プログラムは、上述した各部(検出部、第1演算部、推定時刻特定部、処理時間算出部、選択部、依頼部、ローカルメモリ状態取得部、判断部、及び監視部)を含むモジュール構成となっており、実際のハードウェアとしてはCPU(プロセッサ)が上記記憶媒体からデータ処理プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、検出部、第1演算部、推定時刻特定部、処理時間算出部、選択部、依頼部、ローカルメモリ状態取得部、判断部、及び監視部が主記憶装置上に生成されるようになっている。
なお、上述した実施の形態にかかるデータ処理装置で実行されるデータ処理プログラムは、ROM等に予め組み込まれて提供してもよい。
100、1300、1900 データ処理装置
101、1302、1602、1902 第1プロセッサコア
102 第2プロセッサコア
103 RAM
104 記憶部
105、1301、1601、1901 プロセッサ
106 バス
111 検出部
112 第1演算部
113 推定時刻特定部
114 処理時間算出部
115、1311、1611、1911 選択部
116 依頼部
117 ローカルメモリ状態取得部
118 判断部
121 ローカルメモリ
122 第2演算部
131 時刻データベース
141 第1処理時間算出部
142 第2処理時間算出部
143 比較部
1321 制約条件記憶部
1600 データ処理装置
1602 プロセッサコア
1612 監視部
1621 状態データベース
101、1302、1602、1902 第1プロセッサコア
102 第2プロセッサコア
103 RAM
104 記憶部
105、1301、1601、1901 プロセッサ
106 バス
111 検出部
112 第1演算部
113 推定時刻特定部
114 処理時間算出部
115、1311、1611、1911 選択部
116 依頼部
117 ローカルメモリ状態取得部
118 判断部
121 ローカルメモリ
122 第2演算部
131 時刻データベース
141 第1処理時間算出部
142 第2処理時間算出部
143 比較部
1321 制約条件記憶部
1600 データ処理装置
1602 プロセッサコア
1612 監視部
1621 状態データベース
Claims (6)
- 第1の半導体回路と、処理の実行に使用される情報を記憶する回路内記憶部を有する第2の半導体回路と、を備えるデータ処理装置であって、
前記第1の半導体回路が、
前記第1の半導体回路に対して、実行を要求された処理を検出する検出部と、
前記第2の半導体回路が有する回路内記憶部に記憶された情報を用いて、前記第2の半導体回路で、検出された前記処理を実行可能か否か判断する判断部と、
検出された前記処理を、前記第1の半導体回路で実行した場合に要する第1の処理時間を算出する第1処理時間算出部と、
前記判断部の判断結果に基づいて、検出された前記処理の実行に必要な情報を前記回路内記憶部に読み込ませる読込時間を加算するか否かを判断した上で、検出された前記処理を、前記第2の半導体回路で実行した場合に要する第2の処理時間を算出する第2処理時間算出部と、
前記第1の処理時間と前記第2の処理時間とを比較する比較部と、
前記比較結果に基づいて、検出された前記処理を実行する半導体回路を、前記第1の半導体回路及び前記第2の半導体回路から選択する選択部と、
前記選択部が前記第1の半導体回路を選択した場合に、検出された前記処理を実行する演算部と、
前記選択部が前記第2の半導体回路を選択した場合に、前記第2の半導体回路に対して、検出された前記処理の実行を依頼する依頼部と、
を備えることを特徴とするデータ処理装置。 - 前記第2の半導体回路が有する前記回路内記憶部に記憶された前記情報を使用した実行済処理が前記検出部により検出された検出時刻と、当該実行済処理と同じプログラムコードを用いる処理の検出間隔と、を対応付けて記憶する時刻記憶部と、
前記第1の半導体回路は、前記時刻記憶部に記憶された前記検出時刻と前記検出間隔とに基づいて、前記実行済処理と同じプログラムコードを用いる処理が次に検出される推定時刻を特定する推定時刻特定部と、をさらに備え、
前記選択部は、さらに、前記推定時刻特定部により特定された前記推定時刻前に、検出された前記処理が前記第2の半導体回路で処理が終了するか否かに基づいて、前記第1の半導体回路及び前記第2の半導体回路から選択すること、
を特徴とする請求項1に記載のデータ処理装置。 - 前記第1の半導体回路は、さらに、
前記処理を実行する半導体回路を決定するための制約条件を記憶する条件記憶部を備え、
前記選択部は、さらに前記条件記憶部に記憶された前記制約条件に基づいて、前記第1の半導体回路及び前記第2の半導体回路から選択すること、
を特徴とする請求項1又は2に記載のデータ処理装置。 - 第1の半導体回路及び前記第2の半導体回路のうち少なくとも一方の動作を監視する監視部と、
前記監視部による監視結果を示した監視情報を保存する監視情報記憶部と、をさらに備え、
前記選択部は、さらに前記監視情報記憶部に記憶された前記監視情報に基づいて、前記第1の半導体回路及び前記第2の半導体回路から選択すること、
を特徴とする請求項1又は2に記載のデータ処理装置。 - 第1の半導体回路と、処理の実行に使用される情報を記憶する回路内記憶部を有する第2の半導体回路と、を備えるデータ処理装置の第1半導体回路で実行されるデータ処理方法であって、
検出部が、前記第1の半導体回路に対して、実行を要求された処理を検出する検出ステップと、
判断部が、前記第2の半導体回路が有する回路内記憶部に記憶された情報を用いて、前記第2の半導体回路で、検出された前記処理を実行可能か否か判断する判断ステップと、
第1処理時間算出部が、検出された前記処理を、前記第1の半導体回路で実行した場合に要する第1の処理時間を算出する第1処理時間算出ステップと、
第2処理時間算出部が、前記判断ステップによる判断結果に基づいて、検出された前記処理の実行に必要な情報を前記回路内記憶部に読み込ませる読込時間を加算するか否かを判断した上で、検出された前記処理を、前記第2の半導体回路で実行した場合に要する第2の処理時間を算出する第2処理時間算出ステップと、
比較部が、前記第1の処理時間と前記第2の処理時間とを比較する比較ステップと、
選択部が、前記比較結果に基づいて、検出された前記処理を実行する半導体回路を、前記第1の半導体回路及び前記第2の半導体回路から選択する選択ステップと、
演算部が、前記選択ステップにより前記第1の半導体回路を選択された場合に、検出された前記処理を実行する演算ステップと、
依頼部が、前記選択ステップにより前記第2の半導体回路が選択された場合に、前記第2の半導体回路に対して、検出された前記処理の実行を依頼する依頼ステップと、
を有することを特徴とするデータ処理方法。 - 第1の半導体回路と、処理の実行に使用される情報を記憶する回路内記憶部を有する第2の半導体回路と、を備えるデータ処理装置の第1半導体回路で実行されるデータ処理プログラムであって、
前記第1の半導体回路に対して、実行を要求された処理を検出する検出ステップと、
前記第2の半導体回路が有する回路内記憶部に記憶された情報を用いて、前記第2の半導体回路で、検出された前記処理を実行可能か否か判断する判断ステップと、
検出された前記処理を、前記第1の半導体回路で実行した場合に要する第1の処理時間を算出する第1処理時間算出ステップと、
前記判断ステップによる判断結果に基づいて、検出された前記処理の実行に必要な情報を前記回路内記憶部に読み込ませる読込時間を加算するか否かを判断した上で、検出された前記処理を、前記第2の半導体回路で実行した場合に要する第2の処理時間を算出する第2処理時間算出ステップと、
前記第1の処理時間と前記第2の処理時間とを比較する比較ステップと、
前記比較結果に基づいて、検出された前記処理を実行する半導体回路を、前記第1の半導体回路及び前記第2の半導体回路から選択する選択ステップと、
前記選択ステップにより前記第1の半導体回路を選択された場合に、検出された前記処理を実行する演算ステップと、
前記選択ステップにより前記第2の半導体回路が選択された場合に、前記第2の半導体回路に対して、検出された前記処理の実行を依頼する依頼ステップと、
を実行することを特徴とするデータ処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008236822A JP2010072731A (ja) | 2008-09-16 | 2008-09-16 | データ処理装置、方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008236822A JP2010072731A (ja) | 2008-09-16 | 2008-09-16 | データ処理装置、方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010072731A true JP2010072731A (ja) | 2010-04-02 |
Family
ID=42204485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008236822A Pending JP2010072731A (ja) | 2008-09-16 | 2008-09-16 | データ処理装置、方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010072731A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013008325A1 (ja) * | 2011-07-13 | 2013-01-17 | 富士通株式会社 | マルチコアプロセッサシステム、および制御方法 |
WO2013084027A1 (en) * | 2011-12-06 | 2013-06-13 | Freescale Semiconductor, Inc. | Method, device and computer program product for measuring user perception quality of a processing system comprising a user interface |
US9672076B2 (en) | 2011-03-17 | 2017-06-06 | Fujitsu Limited | Scheduling process on a processor or an accelerator on a system driven by battery based on processing efficiency and power consumption |
-
2008
- 2008-09-16 JP JP2008236822A patent/JP2010072731A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9672076B2 (en) | 2011-03-17 | 2017-06-06 | Fujitsu Limited | Scheduling process on a processor or an accelerator on a system driven by battery based on processing efficiency and power consumption |
WO2013008325A1 (ja) * | 2011-07-13 | 2013-01-17 | 富士通株式会社 | マルチコアプロセッサシステム、および制御方法 |
JPWO2013008325A1 (ja) * | 2011-07-13 | 2015-02-23 | 富士通株式会社 | マルチコアプロセッサシステム、および制御方法 |
US9547576B2 (en) | 2011-07-13 | 2017-01-17 | Fujitsu Limited | Multi-core processor system and control method |
WO2013084027A1 (en) * | 2011-12-06 | 2013-06-13 | Freescale Semiconductor, Inc. | Method, device and computer program product for measuring user perception quality of a processing system comprising a user interface |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5347451B2 (ja) | マルチプロセッサシステム、競合回避プログラム及び競合回避方法 | |
CN104731560B (zh) | 支持多线程处理的功能单元、处理器及其操作方法 | |
JP2006338264A (ja) | タスク割当装置およびタスク割当方法 | |
US20140107812A1 (en) | Sensor information complementing system and sensor information complementing method | |
JP2006277062A (ja) | アプリケーション管理装置およびそのソフトウェアを格納した記憶媒体 | |
JP2012198724A (ja) | 情報処理プログラム及び方法、転送処理装置 | |
JP2011141782A (ja) | 情報処理装置、電子制御ユニット、タスク割り当て方法 | |
JP2010072731A (ja) | データ処理装置、方法及びプログラム | |
US20170262310A1 (en) | Method for executing and managing distributed processing, and control apparatus | |
JP2017211788A (ja) | 情報処理装置、ジョブ投入方法、およびジョブ投入プログラム | |
CN107608781A (zh) | 一种负载预测方法、装置以及网元 | |
US11212174B2 (en) | Network management device and network management method | |
JP2014167685A (ja) | データ処理システム、データ処理方法およびプログラム | |
JP6613763B2 (ja) | 情報処理装置、情報処理方法、及び、プログラム | |
US20170302558A1 (en) | Measuring apparatus, measuring system, measuring method, and recording medium in which program is recorded | |
CN113032119A (zh) | 一种任务调度方法、装置、存储介质及电子设备 | |
US10542099B2 (en) | Gateway device and data collection method | |
US11743492B2 (en) | Information processing apparatus, inference execution control method, and storage medium | |
JP2002351852A (ja) | システム運用管理方式 | |
JP6806065B2 (ja) | 仮想計算機システムの性能予測装置、性能予測方法およびコンピュータプログラム | |
JP5617586B2 (ja) | 情報処理プログラム、中継装置及び中継管理装置 | |
JP2007226399A (ja) | 計算機制御方法、計算機、計算機制御プログラム及び計算機システム | |
JP5010314B2 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
JP5056346B2 (ja) | 情報処理装置、情報処理システム、仮想サーバの移動処理の制御方法、及び、プログラム | |
JPH11110360A (ja) | トランザクション分配方法およびシステムおよびトランザクション分配処理用記録媒体 |