(57)【要約】【課題】データ処理のパフォーマンスを向上させる。【解決手段】第１〜第ｎの各データをそれぞれ第１のデータ処理部および第２のデータ処理部のいずれにより処理するかを定めた処理方法チェーンを１つ以上生成し、前記処理方法チェーン毎に前記第１〜第ｎのデータを全て処理するのに要する合計推定時間を算出し、前記合計推定時間が最小または選択閾値以下である処理方法チェーンを選択し、選択された選択処理方法チェーンにしたがって、前記第１〜第ｎのデータを、前記第１または第２のデータ処理部に供給する。【選択図】図１
2009122925.tif 000002
【特許請求の範囲】
【請求項１】
各々メモリにロードされて実行される第１および第２のプログラムを用いて同一のアルゴリズムを実行する第１のデータ処理部および第２のデータ処理部のいずれかにデータを供給して前記データに対する処理を実行させるデータ処理プログラムであって、
あるアプリケーションプログラムから、第１〜第ｎ（ｎは１以上の整数）のデータを受信するデータ受信ステップと、
前記第１〜第ｎの各データをそれぞれ前記第１のデータ処理部および第２のデータ処理部のいずれにより処理するかを定めた処理方法チェーンを１つ以上生成する処理方法チェーン生成ステップと、
前記処理方法チェーン毎に前記第１〜第ｎのデータを全て処理するのに要する合計推定時間を算出する処理時間推定ステップと、
前記合計推定時間が最小または選択閾値以下である処理方法チェーンを選択する処理方法チェーン選択ステップと、
前記処理方法チェーン選択ステップにより選択された選択処理方法チェーンにしたがって、前記第１〜第ｎのデータを、前記第１または第２のデータ処理部に供給することにより、前記第１〜第ｎのデータに対する処理を実行させるデータ処理依頼ステップと、を備え、
前記処理時間推定ステップは、
処理すべきデータサイズに応じて前記第１および第２のデータ処理部による処理に要する推定処理時間を定めた第１および第２の推定処理時間情報と、
前記第１のプログラムの全ておよび前記第２のプログラムの全てを前記メモリにロードするのに要する推定ロード時間を定めた第１および第２の初回オーバヘッドと、
処理の依頼先を前記第２のデータ処理部から前記第１のデータ処理部に切り替えたときに、前記第１のプログラムと前記メモリ上にロード済みの第１のプログラム部分との差分を前記メモリにロードするのに要する推定ロード時間と、前記処理の依頼先を前記第１のデータ処理部から前記第２のデータ処理部に切り替えたときに、前記第２のプログラムと前記メモリ上にロード済みの第２のプログラム部分との差分を前記メモリにロードするのに要する推定ロード時間と、を定めた第１および第２の切り替えオーバヘッドと、
に基づき前記処理方法チェーン毎に前記合計推定時間を推定する、
ことを特徴とするデータ処理プログラム。
【請求項２】
前記第１および第２の推定処理時間情報は、データサイズを引数として有し、処理時間を出力する関数であることを特徴とする請求項１に記載のデータ処理プログラム。
【請求項３】
前記第１および第２のプログラムは、前記メモリとして命令キャッシュを有するＣＰＵ上で実行されることを特徴とする請求項１または２に記載のデータ処理プログラム。
【請求項４】
前記第１および第２のプログラムは、前記メモリとしてローカルメモリを有するコプロセッサ上で実行されることを特徴とする請求項１または２に記載のデータ処理プログラム。
【請求項５】
前記処理方法チェーン生成ステップは、前記第１〜第ｎの各データと、前記第１のデータ処理部および第２のデータ処理部との全ての組み合わせについて前記処理方法チェーンを生成する、ことを特徴とする請求項１ないし４のいずれか一項に記載のデータ処理プログラム。
【請求項６】
前記処理方法チェーン生成ステップは、
前記第１〜第ｎの全てのデータを前記第１のデータ処理部に処理させることを定めた処理方法チェーンと、
前記第１〜第ｎの全てのデータを前記第２のデータ処理部に処理させることを定めた処理方法チェーンと、
あらかじめ定めた閾値未満のサイズをもつデータについては前記第１のデータ処理部、前記閾値以上のサイズをもつデータについては前記第２のデータ処理部に処理させることを定めた処理方法チェーンと、
の３つの処理方法チェーンを生成することを特徴とする請求項１ないし４のいずれか一項に記載のデータ処理プログラム。
【請求項７】
前記処理方法チェーン生成手段は、前記３つの処理方法チェーンのうち少なくとも１つについて、１つ以上のデータに対するデータ処理部を変更することにより、１つ以上の処理方法チェーンをさらに生成することを特徴とする請求項６に記載のデータ処理プログラム。
【請求項８】
前記第１のデータ処理部は、前記第１のプログラムをＣＰＵまたはコプロセッサに実行させることにより前記データを処理し、
前記第２のデータ処理部は、前記データを処理する専用ハードウェアを有し、
前記第２のプログラムは、前記専用ハードウェアにアクセスするためのプログラムであり、
前記第２のデータ処理部は、前記第２のプログラムを前記ＣＰＵまたは前記コプロセッサに実行させ、
前記専用ハードウェアは前記ＣＰＵまたは前記コプロセッサから前記第２のプログラムを介して前記データを受けて処理する、
ことを特徴とする請求項１ないし７のいずれか一項に記載のデータ処理プログラム。
【請求項９】
前記第２のデータ処理部は、前記データを処理する専用ハードウェアを有し、
前記第２のプログラムは、前記専用ハードウェアにアクセスするためのプログラムであり、
前記第２のデータ処理部は、前記第２のプログラムを前記ＣＰＵまたは前記コプロセッサに実行させ、
前記専用ハードウェアは前記ＣＰＵまたは前記コプロセッサから前記第２のプログラムを介して前記データを受けて処理し、
前記第１のデータ処理部は、前記データを処理する第２の専用ハードウェアを有し、
前記第１のプログラムは、前記第２の専用ハードウェアにアクセスするためのプログラムであり、
前記第１のデータ処理部は、前記第１のプログラムを前記ＣＰＵまたは前記コプロセッサに実行させ、
前記第２の専用ハードウェアは前記ＣＰＵまたは前記コプロセッサから前記第１のプログラムを介して前記データを受けて処理する、
ことを特徴とする請求項１ないし７のいずれか一項に記載のデータ処理プログラム。
【請求項１０】
前記第１のデータ処理部は、前記第１のプログラムをＣＰＵまたはコプロセッサに実行させることにより前記データを処理し、
前記第２のデータ処理部は、前記第２のプログラムを前記ＣＰＵまたは前記コプロセッサに実行させることにより前記データを処理する、
ことを特徴とする請求項１ないし７のいずれか一項に記載のデータ処理プログラム。
【請求項１１】
請求項１に従ったデータ処理プログラムを記憶する記憶装置と、
前記記憶装置内の前記データ処理プログラムを実行するＣＰＵと、
前記第１および第２のデータ処理部と、
を備えたデータ処理システム。
【請求項１２】
前記記憶装置は、前記第１のプログラムを記憶し、
前記ＣＰＵは、前記第１のプログラムを実行することにより前記第１のデータ処理部として機能することを特徴とする請求項１１に記載のデータ処理システム。
【請求項１３】
コプロセッサをさらに備え、
前記記憶装置は、第１のプログラムを記憶し、
前記コプロセッサは、前記第１のプログラムを実行することにより前記第１のデータ処理部として機能することを特徴とする請求項１１に記載のデータ処理システム。
【請求項１４】
前記第２のデータ処理部は、前記データを処理する専用ハードウェアを有し、前記第２のプログラムは、前記専用ハードウェアにアクセスするためのプログラムであり、
前記記憶装置は前記第２のプログラムを記憶し、
前記ＣＰＵが前記第２のプログラムを実行することにより前記専用ハードウェアにアクセスし、
前記専用ハードウェアは前記ＣＰＵから前記データを受けて処理することを特徴とする請求項１１ないし１３のいずれか一項に記載のデータ処理システム。
【請求項１５】
コプロセッサをさらに備え、
前記第２のデータ処理部は、前記データを処理する専用ハードウェアを有し、前記第２のプログラムは、前記専用ハードウェアにアクセスするためのプログラムであり、
前記記憶装置は前記第２のプログラムを記憶し、
前記コプロセッサが前記第２のプログラムを実行することにより前記専用ハードウェアにアクセスし、
前記専用ハードウェアは前記ＣＰＵまたは前記コプロセッサから前記データを受けて処理することを特徴とする請求項１１ないし１３のいずれか一項に記載のデータ処理システム。
【請求項１６】
各々メモリにロードされて実行される第１および第２のプログラムを用いて同一のアルゴリズムを実行する第１のデータ処理部および第２のデータ処理部のいずれかにデータを供給して前記データに対する処理を実行させるデータ処理方法であって、
あるアプリケーションプログラムから、第１〜第ｎ（ｎは１以上の整数）のデータを受信するデータ受信ステップと、
前記第１〜第ｎの各データをそれぞれ前記第１のデータ処理部および第２のデータ処理部のいずれにより処理するかを定めた処理方法チェーンを１つ以上生成する処理方法チェーン生成ステップと、
前記処理方法チェーン毎に前記第１〜第ｎのデータを全て処理するのに要する合計推定時間を算出する処理時間推定ステップと、
前記合計推定時間が最小または選択閾値以下である処理方法チェーンを選択する処理方法チェーン選択ステップと、
前記処理方法チェーン選択ステップにより選択された選択処理方法チェーンにしたがって、前記第１〜第ｎのデータを、前記第１または第２のデータ処理部に供給することにより、前記第１〜第ｎのデータに対する処理を実行させるデータ処理依頼ステップと、を備え、
前記処理時間推定ステップは、
処理すべきデータサイズに応じて前記第１および第２のデータ処理部による処理に要する推定処理時間を定めた第１および第２の推定処理時間情報と、
前記第１のプログラムの全ておよび前記第２のプログラムの全てを前記メモリにロードするのに要する推定ロード時間を定めた第１および第２の初回オーバヘッドと、
処理の依頼先を前記第２のデータ処理部から前記第１のデータ処理部に切り替えたときに、前記第１のプログラムと前記メモリ上にロード済みの第１のプログラム部分との差分を前記メモリにロードするのに要する推定ロード時間と、前記処理の依頼先を前記第１のデータ処理部から前記第２のデータ処理部に切り替えたときに、前記第２のプログラムと前記メモリ上にロード済みの第２のプログラム部分との差分を前記メモリにロードするのに要する推定ロード時間と、を定めた第１および第２の切り替えオーバヘッドと、
に基づき前記処理方法チェーン毎に前記合計推定時間を推定する、
ことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理プログラム、データ処理方法およびデータ処理システムに関わり、たとえばプロセッサユニットに対する負荷を低減し、データ処理のスループットを向上させることが可能なデータ処理プログラムに関する。
【背景技術】
【０００２】
プロセッサユニットに対するデータ処理負荷を低減させたり、システムのスループットを向上させたりするため、暗号処理や画像処理など特に高負荷のデータ処理に関しては、専用のハードウェアが多く利用されている。一方、専用ハードウェアを利用した場合、割り込み処理や排他処理、場合によってはシステムコールなど、固定的なオーバヘッドが少なからず存在する。そのため、データ処理の対象となるデータのサイズが小さくなる場合は、プロセッサユニットや専用ハードウェアの能力によっては、専用ハードウェアを用いた（ハードウェア処理）方がプロセッサユニットを用いる（ソフトウェア処理）よりも低スループットとなってしまう。
【０００３】
特許文献１および特許文献２では、ソフトウェア処理のスループットとハードウェア処理のスループットが逆転するデータサイズを閾値として定め、データ処理の対象データのサイズを閾値と比較することでソフトウェア処理を実行するか、ハードウェア処理を実行するかを判断し、処理の切り替えを実施している。
【０００４】
しかしながら、データ処理が連続して複数回繰り返される際には、2回目以降の処理において命令キャッシュが影響してくるため、予め定めた閾値がずれることが多い。具体的には、ソフトウェア処理のみ、またはハードウェア処理のみでデータ処理を実施する場合には命令キャッシュを有効に活用できるが、データ処理毎にソフトウェア処理とハードウェア処理を切り替える場合には命令キャッシュが書き変わってしまうことでキャッシュミスが発生する確率が高くなる。そのため、処理の連続性と命令キャッシュの影響を考慮しない従来の手法では、切り替えを実施することでかえってスループットが低下する可能性があった。
【特許文献１】特開２００３−６９５５５号公報
【特許文献２】特開２００６−７６３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、各データを第１および第２のデータ処理部に適切に振り分けることでデータ処理のパフォーマンスを向上させることを可能としたデータ処理プログラム、データ処理方法およびデータ処理システムを提供しようとするものである。
【課題を解決するための手段】
【０００６】
本発明の一態様としてのデータ処理プログラムは、
各々メモリにロードされて実行される第１および第２のプログラムを用いて同一のアルゴリズムを実行する第１のデータ処理部および第２のデータ処理部のいずれかにデータを供給して前記データに対する処理を実行させるデータ処理プログラムであって、
あるアプリケーションプログラムから、第１〜第ｎ（ｎは１以上の整数）のデータを受信するデータ受信ステップと、
前記第１〜第ｎの各データをそれぞれ前記第１のデータ処理部および第２のデータ処理部のいずれにより処理するかを定めた処理方法チェーンを１つ以上生成する処理方法チェーン生成ステップと、
前記処理方法チェーン毎に前記第１〜第ｎのデータを全て処理するのに要する合計推定時間を算出する処理時間推定ステップと、
前記合計推定時間が最小または選択閾値以下である処理方法チェーンを選択する処理方法チェーン選択ステップと、
前記処理方法チェーン選択ステップにより選択された選択処理方法チェーンにしたがって、前記第１〜第ｎのデータを、前記第１または第２のデータ処理部に供給することにより、前記第１〜第ｎのデータに対する処理を実行させるデータ処理依頼ステップと、を備え、
前記処理時間推定ステップは、
処理すべきデータサイズに応じて前記第１および第２のデータ処理部による処理に要する推定処理時間を定めた第１および第２の推定処理時間情報と、
前記第１のプログラムの全ておよび前記第２のプログラムの全てを前記メモリにロードするのに要する推定ロード時間を定めた第１および第２の初回オーバヘッドと、
処理の依頼先を前記第２のデータ処理部から前記第１のデータ処理部に切り替えたときに、前記第１のプログラムと前記メモリ上にロード済みの第１のプログラム部分との差分を前記メモリにロードするのに要する推定ロード時間と、前記処理の依頼先を前記第１のデータ処理部から前記第２のデータ処理部に切り替えたときに、前記第２のプログラムと前記メモリ上にロード済みの第２のプログラム部分との差分を前記メモリにロードするのに要する推定ロード時間と、を定めた第１および第２の切り替えオーバヘッドと、
に基づき前記処理方法チェーン毎に前記合計推定時間を推定する、
ことを特徴とするデータ処理プログラム。
【０００７】
本発明の一態様としてのデータ処理システムは、
上記データ処理プログラムを記憶する記憶装置と、
前記記憶装置内の前記データ処理プログラムを実行するＣＰＵと、
前記第１および第２のデータ処理部と、
を備えた。
【０００８】
本発明の一態様としてのデータ処理方法は、
各々メモリにロードされて実行される第１および第２のプログラムを用いて同一のアルゴリズムを実行する第１のデータ処理部および第２のデータ処理部のいずれかにデータを供給して前記データに対する処理を実行させるデータ処理方法であって、
あるアプリケーションプログラムから、第１〜第ｎ（ｎは１以上の整数）のデータを受信するデータ受信ステップと、
前記第１〜第ｎの各データをそれぞれ前記第１のデータ処理部および第２のデータ処理部のいずれにより処理するかを定めた処理方法チェーンを１つ以上生成する処理方法チェーン生成ステップと、
前記処理方法チェーン毎に前記第１〜第ｎのデータを全て処理するのに要する合計推定時間を算出する処理時間推定ステップと、
前記合計推定時間が最小または選択閾値以下である処理方法チェーンを選択する処理方法チェーン選択ステップと、
前記処理方法チェーン選択ステップにより選択された選択処理方法チェーンにしたがって、前記第１〜第ｎのデータを、前記第１または第２のデータ処理部に供給することにより、前記第１〜第ｎのデータに対する処理を実行させるデータ処理依頼ステップと、を備え、
前記処理時間推定ステップは、
処理すべきデータサイズに応じて前記第１および第２のデータ処理部による処理に要する推定処理時間を定めた第１および第２の推定処理時間情報と、
前記第１のプログラムの全ておよび前記第２のプログラムの全てを前記メモリにロードするのに要する推定ロード時間を定めた第１および第２の初回オーバヘッドと、
処理の依頼先を前記第２のデータ処理部から前記第１のデータ処理部に切り替えたときに、前記第１のプログラムと前記メモリ上にロード済みの第１のプログラム部分との差分を前記メモリにロードするのに要する推定ロード時間と、前記処理の依頼先を前記第１のデータ処理部から前記第２のデータ処理部に切り替えたときに、前記第２のプログラムと前記メモリ上にロード済みの第２のプログラム部分との差分を前記メモリにロードするのに要する推定ロード時間と、を定めた第１および第２の切り替えオーバヘッドと、
に基づき前記処理方法チェーン毎に前記合計推定時間を推定する、
ことを特徴とする。
【発明の効果】
【０００９】
本発明により、各データを第１および第２のデータ処理部に適切に振り分けることでデータ処理のパフォーマンスを向上させることが可能となる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施形態について説明する。
【００１１】
（第１の実施形態）
図1は、本発明の第1の実施形態にかかわるデータ処理プログラム110をCPU（Central Processing Unit：中央演算処理装置）に実行させた時に得られる各機能の関係を表した機能ブロック図である。図示のように、データ処理プログラム110を実行するとき、CPUは、受信部111、処理方法チェーン生成部112、処理時間推定部113、処理方法チェーン選択部114、データ処理依頼部115として機能し、これら各機能ブロックが有機的に関連して動作することで、データ処理プログラム110に記述されたデータ処理が実現される。
【００１２】
アプリケーション100はデータ処理を必要とするデータ、および該データに対するデータ処理を指示するデータ処理依頼を、データ処理プログラム110に対して供給する。より詳細には、アプリケーション100はデータ処理プログラム110に1つ以上のデータを同時に（一度に）供給するとともに、該データに対するデータ処理依頼を供給する。データ処理依頼には、たとえば各データを処理する順序および各データのサイズ等が記述されている。
【００１３】
ソフトウェア処理部120は、第１または２のプログラムを有し、該プログラムをCPUに実行させることにより特定のアルゴリズムを実行する。ソフトウェア処理部120は  第１のデータ処理部または第２のデータ処理部に相当する。より詳細にはソフトウェア処理部120は、データ処理プログラム110により発行されるデータ処理命令を受けて、データ処理プログラム110から渡されるデータに対してデータ処理を実行する。
【００１４】
ハードウェア処理部130は、データ処理用の専用ハードウェア131を用いて、ソフトウェア処理部120と同一のアルゴリズムを実行する。より詳細には、ハードウェア処理部130は、専用ハードウェア131と、専用ハードウェア131にアクセスするソフトウェア（I/Fソフトウェア132）から構成される。I/Fソフトウェア132はたとえば第２または第１のプログラムに相当する。I/Fソフトウェア132はCPUによって実行され、データ処理プログラム110により発行されるデータ処理命令を受けて、データ処理プログラム110から渡されるデータを専用ハードウェア131に供給する。また、専用ハードウェア131はI/Fソフトウェア132により供給されたデータに対してデータ処理を実行する。ハードウェア処理部130は第２または第１のデータ処理部に相当する。
【００１５】
データ処理プログラム110は、アプリケーション100から供給される1つ以上のデータについて、その合計処理時間が出来るだけ小さくなるように、それぞれのデータに対するデータ処理命令をソフトウェア処理部120あるいはハードウェア処理部130に対し発行して与える。より詳細には、データ処理プログラム110は、それぞれのデータをソフトウェア処理部120あるいはハードウェア処理部130の何れで処理するかを記述した処理方法チェーンを後述する方法で複数の候補の中から決定する。続いて、決定した処理方法チェーンに従ってそれぞれのデータに対するデータ処理命令をソフトウェア処理部120あるいはハードウェア処理部130に与える。データ処理プログラム110は図示しない記憶装置に格納され、CPUによって読み出され、実行される。アプリケーション100も同様に、上記と同一または別の記憶装置に記憶され、CPUによって読み出され実行される。
【００１６】
以上において、データ処理の内容自体は発明の本質ではなく、どのような内容であってもよい。また、ソフトウェア処理部120およびハードウェア処理部130によるデータ処理の結果が、データ処理プログラム110およびアプリケーション100に通知されても良いし、通知されずとも良い。
【００１７】
図2は、データ処理プログラム110を実行する時のCPUの動作を示すフローチャートである。
【００１８】
＜前提事項＞
ここでは、アプリケーション100によってデータ処理の対象となるデータが3つ同時に（一度に）データ処理プログラム110に供給される例を説明する。
【００１９】
この時、データサイズがXであるデータに対するソフトウェア処理部120の処理時間を近似式S(X)、ハードウェア処理部130の処理時間を近似式H(X）で算出できるものとする。
【００２０】
＜受信部の動作＞
まず、受信部111がアプリケーション100から3つのデータ（第1データ、第2データ、第3データ）をおよびデータ処理依頼を受信する（S201）。
【００２１】
データ処理依頼には、各データを第1データ⇒第2データ⇒第3データの順序で処理し、データサイズがそれぞれX1, X2, X3であることが記述されているとする。
【００２２】
＜処理方法チェーン生成部の動作＞
処理方法チェーン生成部112は、第1データ、第2データ、第3データの処理順序を定めた処理方法チェーンを生成する（S202）。具体的には処理方法のバリエーションとして以下の8通り（全組み合わせ）の処理方法チェーンを生成する。なお、表記の簡略化のため、「Soft⇒Hard⇒Soft」は「第1データをソフトウェア処理部120、第2データをハードウェア処理部130、第3データをソフトウェア処理部120で処理する」を意味するものとする。
・第1処理方法チェーン：Soft⇒Soft⇒Soft
・第2処理方法チェーン：Soft⇒Soft⇒Hard
・第3処理方法チェーン：Soft⇒Hard⇒Soft
・第4処理方法チェーン：Soft⇒Hard⇒Hard
・第5処理方法チェーン：Hard⇒Soft⇒Soft
・第6処理方法チェーン：Hard⇒Soft⇒Hard
・第7処理方法チェーン：Hard⇒Hard⇒Soft
・第8処理方法チェーン：Hard⇒Hard⇒Hard
【００２３】
＜処理時間推定部の動作＞
処理時間推定部113は、近似式S(X)、近似式H(X)、初回オーバヘッド、切り替えオーバヘッドを用いて、第1処理方法チェーン〜第8処理方法チェーンに対する第1推定処理時間〜第8推定処理時間を算出する（S203）。
【００２４】
以下に初回オーバヘッドと切り替えオーバヘッドについて述べる。
・初回オーバヘッド：命令コードがCPUの命令キャッシュ中に全くキャッシュされていない場合に、命令コードをfill(キャッシュに命令コードをロード)するために要する時間を初回オーバヘッドと定義する。それぞれ、ソフトウェア処理部120の命令コードに対する「ソフトウェア初回オーバヘッド（As）」と、ハードウェア処理部130（細かくはI/Fソフトウェア132）の命令コードに対する「ハードウェア初回オーバヘッド（Ah）」を定義する。
・切り替えオーバヘッド：既にソフトウェア処理部120による処理が実行されたものの、続いてハードウェア処理部130が実行されると、場合によって命令キャッシュにキャッシュされていたソフトウェア処理部120の命令コードが上書きされてしまう。改めてソフトウェア処理部120を実行する場合に、上書きされた一部（第１または第２のプログラムと、命令キャッシュ上に存在する第１または第２のプログラム部分との差分）の命令コードをfillするために要する時間を「ソフトウェア切り替えオーバヘッド（Bs)」と定義する。また、その逆を「ハードウェア切り替えオーバヘッド（Bh）」と定義する。
【００２５】
具体的に各推定処理時間を以下のように算出する。
・第1推定処理時間＝（As＋S(X1)）＋S(X2)＋S(X3)
・第2推定処理時間＝（As＋S(X1)）＋S(X2)＋（Ah＋H(X3)）
・第3推定処理時間＝（As＋S(X1)）＋（Ah＋H(X2)）＋（Bs＋S(X3)）
・第4推定処理時間＝（As＋S(X1)）＋（Ah＋H(X2)）＋H(X3)
・第5推定処理時間＝（Ah＋H(X1)）＋（As＋S(X2)）＋S(X3)
・第6推定処理時間＝（Ah＋H(X1)）＋（As＋S(X2)）＋（Bh＋H(X3)）
・第7推定処理時間＝（Ah＋H(X1)）＋H(X2)＋（As＋S(X3)）
・第8推定処理時間＝（Ah＋H(X1)）＋H(X2)＋H(X3)
【００２６】
＜処理方法チェーン選択部の動作＞
処理方法チェーン選択部114は、第1推定処理時間〜第8推定処理時間のうち、最小または選択閾値以下の値を示す処理方法チェーンを選択する（S204）。
【００２７】
＜データ処理依頼部の動作＞
データ処理依頼部115は、処理方法チェーン選択部114で選択した処理方法チェーンに従って、ソフトウェア処理依頼部120とハードウェア処理部130に対してデータ処理命令を発行し、第1データ、第2データ、第3データに対する処理を実行させる（S205）。例えば具体的には以下のように動作する。
・第1処理方法チェーンが選択された場合：ソフトウェア処理部120に対してデータ処理命令を発行し第1データに対する処理を実行させる。続いて、ソフトウェア処理部120に対してデータ処理命令を発行し第2データに対する処理を実行させる。最後に、ソフトウェア処理部120に対してデータ処理命令を発行し第3データに対する処理を実行させる。
・第6処理方法チェーンが選択された場合：ハードウェア処理部130に対してデータ処理命令を発行し第1データに対する処理を実行させる。続いて、ソフトウェア処理部120に対してデータ処理命令を発行し第2データに対する処理を実行させる。最後に、ハードウェア処理部130に対してデータ処理命令を発行し第3データに対する処理を実行させる。
・第8処理方法チェーンが選択された場合：ハードウェア処理部130に対してデータ処理命令を発行し第1データに対する処理を実行させる。続いて、ハードウェア処理部130に対してデータ処理命令を発行し第2データに対する処理を実行させる。最後に、ハードウェア処理部130に対してデータ処理命令を発行し第3データに対する処理を実行させる。
以上により本処理は終了する。
【００２８】
第１の実施形態では、処理時間推定部113において、候補となった全ての処理チェーンに対して推定処理時間の算出を行っていたが、各処理チェーンの推定時間を順次計算していく途中で、予め定めた閾値（選択閾値）を下回るものが生じた場合には、その時点で処理時間推定部113における計算をやめ、その処理方法チェーンを処理方法チェーン選択部114で選択するようにしても良い。
【００２９】
また、近似式、初回オーバヘッド、切り替えオーバヘッドといったパラメータについては、予めユーザが固定値としてデータ処理プログラム110中に設定しても良いし、データ処理プログラムの起動時に動的に設定されても良い。これらの値は例えば以下のように求めることができる。
【００３０】
まず、近似式の算出方法について説明する。
【００３１】
ソフトウェア処理部120に対してサンプルデータを供給し、処理が終了するまでの時間（処理時間）を測定する。この時、命令キャッシュにfillする時間を除外するため、複数回処理を繰り返し、2回目以降の値を計測値として取得する。これをサンプルデータのデータサイズを変化させて繰り返し、データサイズと処理時間の関係を表す式（近似式）を算出する。ハードウェア処理部130に対してもまったく同様にして近似式を算出する。
【００３２】
図３は、２つのサンプルデータ（サンプル１およびサンプル２）を用いて近似式を算出する例を示す。横軸をデータサイズ、縦軸を処理時間とする座標系に、サンプル１、２から得られたソフトウェア処理部１２０の処理時間（計測値）をそれぞれプロットし、各点を近似する直線を算出し、これを近似式として用いる。ここでは点は２つだけであるため、各点を通過する直線を求めればよい。点が３つ以上あるときは、たとえば最小二乗法などにより各点を近似する直線を算出することが可能である。ハードウェア処理部１３０についても同様にして、サンプル１、２から得られた処理時間（計測値）をプロットし、各点を近似する直線を算出することで、近似式を求める。
【００３３】
次に、初回オーバヘッド/切り替えオーバヘッドの算出方法について説明する。
【００３４】
図４（Ａ）はソフトウェア初回オーバヘッドおよびソフトウェア切り替えオーバヘッドの算出方法を説明する図である。
【００３５】
あるサンプルデータに対して、（１）ソフトウェア処理部120、（２）ハードウェア処理部130、（３）ソフトウェア処理部120、（４）ソフトウェア処理部120の順で連続して処理を実施し、それぞれの処理について処理時間を測定する。この時、（１）ソフトウェア処理部120の処理時間と（４）ソフトウェア処理部120の処理時間の差を「ソフトウェア初回オーバヘッド」とし、（３）ソフトウェア処理部120の処理時間と（４）ソフトウェア処理部120の処理時間の差を「ソフトウェア切り替えオーバヘッド」とする。
【００３６】
図４（Ｂ）はハードウェア初回オーバヘッドおよびハードウェア切り替えオーバヘッドの算出方法を説明する図である。
【００３７】
あるサンプルデータに対して、（１）ハードウェア処理部130、（２）ソフトウェア処理部120、（３）ハードウェア処理部130、（４）ハードウェア処理部130の順で連続して処理を実施し、それぞれの処理について処理時間を測定する。この時、（１）ハードウェア処理部130の処理時間と（４）ハードウェア処理部130の処理時間の差を「ハードウェア初回オーバヘッド」とし、（３）ハードウェア処理部130の処理時間と（４）ハードウェア処理部130の処理時間の差を「ハードウェア切り替えオーバヘッド」とする。
【００３８】
以上のように、本実施形態によれば、各データに対する処理方法を定めた１つ以上の処理方法チェーンを生成し、データサイズに加えて、初回オーバヘッド、切り替えオーバヘッドを考慮して各処理方法チェーンに対する推定処理時間を算出し、最小または選択閾値以下の処理方法チェーンを選択するようにしたことにより、従来に比べてより最適な処理方法を選択でき、よって、データ処理のパフォーマンスを向上させることができる。
【００３９】
（第2の実施形態）
本実施形態が、第1の実施形態と異なる主な点は、処理方法チェーン生成部112にある。第1の実施形態では処理方法（ソフトウェア処理部120あるいはハードウェア処理部130）のあらゆる組み合わせを考慮したが、本実施形態では処理時間推定部113における計算時間を削減するために、特に3つの組み合わせのみを考慮することを特徴とする。なお、本実施形態の機能ブロック図、および本実施形態の動作を示すフローチャートは、第1の実施形態と同じ図１および図２を参照するものとする。
【００４０】
以下、図１および図2を参照しながら、データ処理プログラム110を実行する時のCPUの動作について説明する。
【００４１】
＜前提事項＞
ここでは、アプリケーション100によってデータ処理の対象となるデータが3つ同時にデータ処理プログラム110に供給される例を説明する。
【００４２】
この時、データサイズがXであるデータに対するソフトウェア処理部120の処理時間を近似式S(X)、ハードウェア処理部130の処理時間を近似式H(X）で算出できるものとする。更にデータサイズXthより小さなXlに対してS(Xl)＜H(Xl)が成立するものとし、データサイズXth以上のデータサイズXbに対してS(Xb)≧H(Xb)が成立するものとする。以降、このデータサイズXthを閾値と記す。
【００４３】
＜受信部の動作＞
まず、受信部111がアプリケーション100から3つのデータ（第1データ、第2データ、第3データ）およびデータ処理依頼を受信する（S201）。第１の実施形態と同様に、各データは第1データ⇒第2データ⇒第3データの順序で処理するものとし、データサイズはそれぞれX1, X2, X3であるとする。ただしX1>閾値、X2＜閾値、X3>閾値である。
【００４４】
＜処理方法チェーン生成部の動作＞
処理方法チェーン生成部112は、第1データ、第2データ、第3データの処理順序を定めた処理方法チェーンを生成する（S202）。具体的には処理方法のバリエーションとして以下の3通りの処理方法チェーンを生成する。
・第1処理方法チェーン：第1データ、第2データ、第3データの全てをソフトウェア処理部120で処理する。
・第2処理方法チェーン：第1データ、第2データ、第3データの全てをハードウェア処理部130で処理する。
・第3処理方法チェーン：対象となるデータのデータサイズが閾値未満のデータをソフトウェア処理部120で処理し、閾値以上のデータをハードウェア処理部130で処理する。ここでは、X1>閾値、X2<閾値、X3>閾値であるため、第1データ、第3データをハードウェア処理部130で処理し、第2データをソフトウェア処理部120で処理する。
【００４５】
＜処理時間推定部の動作＞
処理時間推定部113は、近似式S(X)、近似式H(X)、初回オーバヘッド、切り替えオーバヘッドを用いて、第1処理方法チェーン、第2処理方法チェーン、第3処理方法チェーンに対する第1推定処理時間、第2推定処理時間、第3推定処理時間を算出する（S203）。初回オーバヘッドと切り替えオーバヘッドの定義は第1の実施形態と同様であり、「ソフトウェア初回オーバヘッド（As）」、「ハードウェア初回オーバヘッド（Ah）」、「ソフトウェア切り替えオーバヘッド（Bs）」、「ハードウェア切り替えオーバヘッド（Bh）」を定義する。
【００４６】
具体的には、各推定処理時間を以下のように算出する。
・第1推定処理時間＝（As＋S(X1)）＋S(X2)＋S(X3)
・第2推定処理時間＝（Ah＋H(X1)）＋H(X2)＋H(X3)
・第3推定処理時間＝（Ah＋H(X1)）＋（As＋S(X2)）＋（Bh＋H(X3)）
【００４７】
＜処理方法チェーン選択部の動作＞
処理方法チェーン選択部114は、第1推定処理時間、第2推定処理時間、第3推定処理時間のうち、最小または選択閾値以下の値を示す処理方法チェーンを選択する（S204）。
【００４８】
＜データ処理依頼部の動作＞
データ処理依頼部115は、処理方法チェーン114で選択した処理方法チェーンに従って、ソフトウェア処理依頼部120とハードウェア処理部130に対してデータ処理命令を発行し、第1データ、第2データ、第3データに対する処理を実行させる（S205）。具体的には以下のように動作する。
・第1処理方法チェーンが選択された場合：ソフトウェア処理部120に対してデータ処理命令を発行し第1データに対する処理を実行させる。続いて、ソフトウェア処理部120に対してデータ処理命令を発行し第2データに対する処理を実行させる。最後に、ソフトウェア処理部120に対してデータ処理命令を発行し第3データに対する処理を実行させる。
・第2処理方法チェーンが選択された場合：ハードウェア処理部130に対してデータ処理命令を発行し第1データに対する処理を実行させる。続いて、ハードウェア処理部130に対してデータ処理命令を発行し第2データに対する処理を実行させる。最後に、ハードウェア処理部130に対してデータ処理命令を発行し第3データに対する処理を実行させる。
・第3処理方法チェーンが選択された場合：ハードウェア処理部130に対してデータ処理命令を発行し第1データに対する処理を実行させる。続いて、ソフトウェア処理部120に対してデータ処理命令を発行し第2データに対する処理を実行させる。最後に、ハードウェア処理部130に対してデータ処理命令を発行し第3データに対する処理を実行させる。
以上により本処理は終了する。
【００４９】
また、近似式、閾値、初回オーバヘッド、切り替えオーバヘッドといったパラメータについては、予めユーザが固定値としてデータ処理プログラム110中に設定しても良いし、データ処理プログラムの起動時に動的設定されても良い。この時、近似式、初回オーバヘッド、切り替えオーバヘッドに関しては、第1の実施形態で述べたのと同様に求めることができる。また、閾値に関しては、例えば以下のように求めることができる。
【００５０】
・第１の実施形態で用いた図3を参照して、ソフトウェア処理部120用の近似式とハードウェア処理部130用の近似式とから、処理時間（スループット）が交差する交差点を求める。そして、求めた交差点におけるデータサイズを上記閾値として定める。
【００５１】
（第3の実施形態）
本実施形態が、第2の実施形態と異なる主な点は、処理方法チェーン生成部112〜処理方法チェーン選択部114の処理を繰り返すことにある。第2の実施形態では3つの処理方法チェーンを生成し、その中から適切な処理方法チェーンを選択した。本実施形態では、更に選択した処理方法チェーンに対して局所的に変更を加えることで、さらに処理方法チェーンを生成する。そして、選択した処理方法チェーンおよび生成した処理方法チェーンの中から処理方法チェーンを選択する。このような処理方法チェーンの選択と生成とを繰り返すことにより、計算量をできるだけ抑えつつ、最適な処理方法チェーンを見つける。以下、本実施形態について詳細に説明する。なお、本実施形態の機能ブロック図は第1の実施形態および第2の実施形態と同じ図１を参照するものとする。
【００５２】
図5は、データ処理プログラム110を実行する時のCPUの動作を示すフローチャートである。ここでは、アプリケーション100によってデータ処理の対象となるデータが3つ同時にデータ処理プログラム110に供給される例を説明する。
【００５３】
この時、データサイズがXであるデータに対するソフトウェア処理部120の処理時間を近似式S(X)、ハードウェア処理部130の処理時間を近似式H(X）で算出できるものとし、更にデータサイズXthより小さなXlに対してS(Xl)＜H(Xl)が成立するものとし、データサイズXth以上のデータサイズXbに対してS(Xb)≧H(Xb)が成立するものとする。以降、このデータサイズXthを閾値と記す。
【００５４】
＜受信部の動作＞
まず、受信部111がアプリケーション100から3つのデータ（第1データ、第2データ、第3データ）およびデータ処理依頼を受信する（S501）。第１および第２の実施形態と同様、各データは第1データ⇒第2データ⇒第3データの順序で処理するものとし、データサイズはそれぞれX1, X2, X3であるとする。ただしX1>閾値、X2＜閾値、X3>閾値である。
【００５５】
＜処理方法チェーン生成部の動作（１）＞
処理方法チェーン生成部112は、第1データ、第2データ、第3データの処理順序を管理する処理方法チェーンを生成する（S502）。具体的には処理方法のバリエーションとして以下の3通りの処理方法チェーンを生成する。
・第1処理方法チェーン：第1データ、第2データ、第3データの全てをソフトウェア処理部120で処理する。
・第2処理方法チェーン：第1データ、第2データ、第3データの全てをハードウェア処理部130で処理する。
・第3処理方法チェーン：対象となるデータのデータサイズが閾値未満のデータをソフトウェア処理部120で処理し、閾値以上のデータをハードウェア処理部130で処理する。ここでは、X1>閾値、X2<閾値、X3>閾値であるため、第1データ、第3データをハードウェア処理部130で処理し、第2データをソフトウェア処理部120で処理する。
【００５６】
＜処理時間推定部の動作（１）＞
処理時間推定部113は、近似式S(X)、近似式H(X)、初回オーバヘッド、切り替えオーバヘッドを用いて、第1処理方法チェーン、第2処理方法チェーン、第3処理方法チェーンに対する第1推定処理時間、第2推定処理時間、第3推定処理時間を算出する（S503）。初回オーバヘッドと切り替えオーバヘッドの定義は第1の実施形態と同様であり、「ソフトウェア初回オーバヘッド（As）」、「ハードウェア初回オーバヘッド（Ah）」、「ソフトウェア切り替えオーバヘッド（Bs）」、「ハードウェア切り替えオーバヘッド（Bh）」を定義する。
【００５７】
具体的には各推定処理時間を以下のように算出する。
・第1推定処理時間＝（As＋S(X1)）＋S(X2)＋S(X3)
・第2推定処理時間＝（Ah＋H(X1)）＋H(X2)＋H(X3)
・第3推定処理時間＝（Ah＋H(X1)）＋（As＋S(X2)）＋（Bh＋H(X3)）
【００５８】
＜処理方法チェーン選択部の動作（１）＞
処理方法チェーン選択部114は、第1推定処理時間、第2推定処理時間、第3推定処理時間のうち、最小または選択閾値以下の値を示す処理方法チェーンを選択する（S504）。ここでは、最小の値を示す処理方法チェーンを選択するものとし、第3処理方法チェーンが選択されたとする。
【００５９】
＜処理方法チェーン生成部の動作（２）＞
処理方法チェーン生成部112は、処理方法チェーン選択部114で選択された処理方法チェーン（ここでは第3処理方法チェーン）を元に、局所的に処理方法を入れ替えた処理方法チェーンを生成する。ここでは、第1データの処理方法を入れ替えた第4処理方法チェーンを生成する。なお、以降は表記の簡略化のため、第1の実施形態と同様に「Soft」/「Hard」の表記を用いる。
・第3処理方法チェーン：Hard⇒Soft⇒Hard
・第4処理方法チェーン：Soft⇒Soft⇒Hard
【００６０】
＜処理時間推定部の動作（２）＞
処理時間推定部113は、近似式S(X)、近似式H(X)、初回オーバヘッド、切り替えオーバヘッドを用いて、第3処理方法チェーンと第4処理方法チェーンに対する第3推定処理時間、第4推定処理時間を算出する（S503）。
【００６１】
具体的には各推定処理時間を以下のように算出する。
・第3推定処理時間＝（Ah＋H(X1)）＋（As＋S(X2)）＋（Bh＋S(X3)）
・4推定処理時間＝（As＋S(X1)）＋S(X2)＋（Ah＋S(X3)）
【００６２】
なお、ベースとなった第3処理方法チェーンに対する第3推定処理時間は既に算出されているため、値を保存しておき実際の計算を割愛しても良い。
【００６３】
＜処理方法チェーン選択部の動作（２）＞
処理方法チェーン選択部114は、第3推定処理時間、第4推定処理時間のうち、最小の値を示す処理方法チェーンを選択する（S504）。ここでは第4処理方法チェーンが選択されたものとする。
【００６４】
＜処理方法チェーン生成部の動作（３）＞
処理方法チェーン生成部112は、処理方法チェーン選択部114で選択された処理方法チェーン（ここでは第4処理方法チェーン）を元に、局所的に処理方法を入れ替えた処理方法チェーンを生成する。ここでは、第2データの処理方法を入れ替えた第5処理方法チェーンを生成する。
・第4処理方法チェーン：Soft⇒Soft⇒Hard
・第5処理方法チェーン：Soft⇒Hard⇒Hard
【００６５】
＜処理時間推定部の動作（３）＞
処理時間推定部113は、近似式S(X)、近似式H(X)、初回オーバヘッド、切り替えオーバヘッドを用いて、第4処理方法チェーンと第5処理方法チェーンに対する第4推定処理時間、第5推定処理時間を算出する（S503）。
【００６６】
具体的には各推定処理時間を以下のように算出する。
・第4推定処理時間＝（As＋S(X1)）＋S(X2)＋（Ah＋S(X3)）
・推定処理時間＝（As＋S(X1)）＋（Ah＋H(X2)）＋（Bs＋S(X3)）
【００６７】
なお、ベースとなった第4処理方法チェーンに対する第4推定処理時間は既に算出されているため、値を保存しておき実際の計算を割愛しても良い。
【００６８】
＜処理方法チェーン選択部の動作（３）＞
処理方法チェーン選択部114は、第4推定処理時間、第5推定処理時間のうち、最小の値を示す処理方法チェーンを選択する（S504）。ここでは第4処理方法チェーンが選択されたものとする。
【００６９】
＜処理方法チェーン生成部の動作（４）＞
処理方法チェーン生成部112は、処理方法チェーン選択部で選択された処理方法チェーン（ここでは第4処理方法チェーン）を元に、局所的に処理方法を入れ替えた処理方法チェーンを生成する。ここでは、第3データの処理方法を入れ替えた第6処理方法チェーンを生成する。
・第4処理方法チェーン：Soft⇒Soft⇒Hard
・第6処理方法チェーン：Soft⇒Soft⇒Soft
【００７０】
＜処理時間推定部の動作（４）＞
処理時間推定部113は、近似式S(X)、近似式H(X)、初回オーバヘッド、切り替えオーバヘッドを用いて、第4処理方法チェーンと第6処理方法チェーンに対する第4推定処理時間、第6推定処理時間を算出する（S503）。
【００７１】
具体的には各推定処理時間を以下のように算出する。
・第4推定処理時間＝（As＋S(X1)）＋S(X2)＋（Ah＋S(X3)）
・第6推定処理時間＝（As＋S(X1)）＋S(X2)＋S(X3)
【００７２】
なお、ベースとなった第4処理方法チェーンに対する第4推定処理時間は既に算出されているため、値を保存しておき実際の計算を割愛しても良い。
【００７３】
＜処理方法チェーン選択部の動作（４）＞
処理方法チェーン選択部114は、第4推定処理時間、第6推定処理時間のうち、最小の値を示す処理方法チェーンを選択する（S504）。ここでは第4処理方法チェーンが選択されたものとする。
【００７４】
＜データ処理依頼部の動作＞
データ処理依頼部115は、処理方法チェーン114で選択した処理方法チェーンに従って、ソフトウェア処理依頼部120とハードウェア処理部130に対してデータ処理命令を発行し、第1データ、第2データ、第3データに対する処理を実行させる（S505）。ここでは第4処理方法チェーンを用いるため、まず、ソフトウェア処理部120に対してデータ処理命令を発行し第1データに対する処理を実行させる。続いて、ソフトウェア処理部120に対してデータ処理命令を発行し第2データに対する処理を実行させる。最後に、ハードウェア処理部130に対してデータ処理命令を発行し第3データに対する処理を実行させる。
以上により本処理は終了する。
【００７５】
ここで、近似式、閾値、初回オーバヘッド、切り替えオーバヘッドといったパラメータについては、予めユーザが固定値としてデータ処理プログラム110中に設定しても良いし、データ処理プログラムの起動時に動的設定されても良い。また、これらの値に関しては、第1、第2の実施形態で述べたのと同様に求めることができる。
【００７６】
本実施形態においては、第6処理方法チェーンは第1処理方法チェーンと同一であった。処理方法チェーンの生成時点で既出の処理方法チェーンであると判明した場合には、処理時間推定部の処理を割愛しても構わない。
【００７７】
また、本実施形態においては、処理方法チェーンの先頭（第1データ）から局所的に処理方法を入れ替えていったが、末尾（第3データ）や任意の箇所から処理方法を入れ替えていっても構わない。
【００７８】
また、本実施形態では1つずつ全てのデータを入れ替えていったが、同時に複数のデータ（例えば第1データと第3データ）を入れ替えても良い。また、処理方法チェーンに含まれる一部のデータについてのみ処理方法を入れ替え、残りのその他のデータについては処理方法を入れ替えないようにしてもよい。
【００７９】
本実施形態ではベースとなる処理方法チェーンに対し、修正版の処理方法チェーンを一度に１つしか生成しなかったが、一度に2つ以上生成しても良い。
【００８０】
（第4の実施形態）
第1〜第3の実施形態においては、3つのデータが同時にデータ処理プログラムに供給される例を示したが、1つのデータが逐次供給される場合に対しても本発明は有効である。この場合は、事前にソフトウェア処理部120とハードウェア処理部130の何れが実行されたかを保持しておき、逐次供給されるデータに対して長さ1の処理方法チェーンを生成し、推定処理時間を算出し、ソフトウェア処理部120で実施するかハードウェア処理部130で実施するかを決定する。
【００８１】
（第5の実施形態）
第1〜第3の実施形態においては、3つのデータが同時にデータ処理プログラムに供給される例を示したが、より多くのデータが順次供給される場合に対しても本発明は有効である。ただし、推定処理時間部における計算量の増大を抑制するため、初回オーバヘッドと切り替えオーバヘッドの値が小さい場合には、処理方法チェーンの最大長（L）を定めておき、先頭からL個ずつのデータについて処理方法チェーン生成部〜データ処理依頼部の処理を実行することが好ましい。先頭からL個ずつのデータに分けてこれらの処理を行う様子を図６に示す。なお、L=1の時、第4の実施形態と同一の動作となる。
【００８２】
（第6の実施形態）
第1〜第3の実施形態では、ソフトウェア処理部120およびハードウェア処理部130（細かくはI/Fソフトウェア132）を、命令キャッシュを有するCPU上で実行する例について述べたが、ローカルメモリを有するコプロセッサ上で実行しても構わない。その際には、初回オーバヘッドと切り替えオーバヘッドの定義に用いた命令キャッシュへのfill時間は、ローカルメモリへの命令コードのロード時間となる。
【００８３】
（第7の実施形態）
第1〜第3の実施形態では、ソフトウェア処理部120とハードウェア処理部130の切り替えについて述べたが、２つのソフトウェア処理部の切り替え（たとえばソフトウェア処理部120aとソフトウェア処理部120bの切り替え）、又は、２つのハードウェア処理部の切り替え（たとえばハードウェア処理部130aとハードウェア処理部130bの切り替え）を行うことに対しても本発明は有効である。
【００８４】
図７は、2つのソフトウェア処理部の切り替えを説明する図である。
【００８５】
ソフトウェア処理部120a、ソフトウェア処理部120bがそれぞれ異なるデータサイズ−処理時間特性を有している。このように同じアルゴリズムを実現するソフトウェアであっても、その実装方法によって処理時間の傾向が異なる場合がある。したがって、２つのソフトウェア処理部の場合であっても、第1〜第3の実施形態で述べたように「データサイズ」と「ロードのオーバヘッド」を考慮した切り替えを実施することで最適な動作を実現することが可能である。
【００８６】
図８は、2つのハードウェア処理部の切り替えを説明する図である
ハードウェア処理部130a、ハードウェア処理部130bがそれぞれ異なるデータサイズ−処理時間特性を有している。このように同じアルゴリズムを実現する専用ハードウェアであっても、専用ハードウェアの構成によって処理時間の傾向が異なる場合がある。例えば、別々のベンダが提供する複数の専用ハードウェアをシステムに組み込む場合などが考えられる。したがって、２つのハードウェア処理部の場合であっても、第1〜第3の実施形態で述べたように「データサイズ」と「ロードのオーバヘッド」を考慮した切り替えを実施することで最適な動作を実現することが可能である。
【図面の簡単な説明】
【００８７】
【図１】本発明の第1〜第3の実施形態に係わるデータ処理プログラムの機能ブロック図。
【図２】本発明の第1および第2の実施形態の動作を示すフローチャート。
【図３】本発明の第1〜第3の実施形態で用いる近似式の概念図。
【図４】本発明の第1〜第3の実施形態で用いる初回/切り替えオーバヘッドの概念図。
【図５】本発明の第3の実施形態の動作を示すフローチャート。
【図６】本発明の第5の実施形態の動作を示すフローチャート。
【図７】2つのソフトウェア処理部の切り替えを説明する図。
【図８】2つのハードウェア処理部の切り替えを説明する図。
【図１】
2009122925.tif 000003
【図２】
2009122925.tif 000004
【図３】
2009122925.tif 000005
【図４】
2009122925.tif 000006
【図５】
2009122925.tif 000007
【図６】
2009122925.tif 000008
【図７】
2009122925.tif 000009
【図８】
2009122925.tif 000010