(57)【要約】【課題】処理が一定時間で終了することが保証されていない場合には、ハードウェアにおける処理が実際に終了するタイミングよりも早いタイミングで、ハードウェアからプロセッサーに対して処理終了の通知を行うことができないという課題がある。【解決手段】ＨＷアクセラレーター１０４におけるデータ処理が開始されてから終了するまでの実測処理時間を計測する処理時間計測部１０６と、実測処理時間を記憶する実測処理時間記憶部１０７と、実測処理時間に基づいて、ＨＷアクセラレーター１０４で実行しようとするデータ処理の予測処理時間を算出する予測処理時間算出部１０８と、予測処理時間に基づいて予測されたデータ処理の終了時点で、ＣＰＵ１０１に予測終了タイミングを通知する予測終了タイミング通知部１０９と、予測終了タイミングの通知を受けてタスクの実行順序を設定するタスク実行順序設定部を備えたデータ処理装置を提供する。【選択図】図１
2011108140.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを、当該タスクの優先順位に従って順次実行するタスク実行制御部と、
前記タスク実行制御部から指示されたデータ処理を実行するデータ処理実行部と、を備え、
前記データ処理実行部は、前記データ処理実行部におけるデータ処理が開始されてから終了するまでの実測処理時間を計測する処理時間計測部と、
前記実測処理時間を記憶する実測処理時間記憶部と、
前記実測処理時間記憶部に記憶された前記実測処理時間に基づいて、前記データ処理実行部で実行しようとするデータ処理の予測処理時間を算出する予測処理時間算出部と、
前記予測処理時間に基づいて予測されたデータ処理の終了時点で、前記タスク実行制御部に予測終了タイミングを通知する予測終了タイミング通知部と、を備え、
前記タスク実行制御部は、前記予測終了タイミングの通知を受けてタスクの実行順序を設定するタスク実行順序設定部と、を備えたことを特徴とするデータ処理装置。
【請求項２】
請求項１に記載のデータ処理装置であって、
前記予測処理時間算出部は、前記実測処理時間記憶部に記憶された前記実測処理時間を統計処理することによって、前記予測処理時間を算出することを特徴とするデータ処理装置。
【請求項３】
請求項１または請求項２に記載のデータ処理装置であって、
前記予測終了タイミング通知部は、前記予測処理時間に補正を加えた前記予測終了タイミングを通知することを特徴とするデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを汎用的に処理するデータ処理装置に係り、特にハードウェアとプロセッサー上で動作するソフトウェアとが共同してデータを処理するデータ処理装置に関する。
【背景技術】
【０００２】
現在、特定の処理を実行するハードウェア装置を、プロセッサー等の制御装置によって制御する構成のデータ処理装置が広く使用されている。このようなデータ処理装置では、１つのプロセッサーが複数のタスクを優先順位にしたがって実行し、この過程において、タスクにおける比較的負荷が大きいデータ処理をハードウェアに依頼する。
ハードウェアに処理を依頼した場合、このプロセッサーは、このデータ処理に係るタスクを中断して次に実行すべきタスクを実行する。ハードウェアは依頼された処理が終了すると、処理の終了をプロセッサーに通知する。このとき、プロセッサーは、プロセッサーで実行中の処理に係るタスクがハードウェアに依頼した処理に係るタスクよりも優先度が低い場合、プロセッサーで実行中のタスクの処理を中断する。そして、ハードウェアに依頼した処理に係るタスクを必要に応じて引き続き実行する。
【０００３】
以上のプロセッサー及びハードウェアの動作において、例えば、特許文献１では、ハードウェアからプロセッサーに対して行われる処理終了の通知方法において、ハードウェアにおける処理の進捗を管理し、ハードウェアにおける処理が実際に終了するタイミングよりも早いタイミングで、ハードウェアからプロセッサーに対して処理終了の通知を行うことで、プロセッサーにおける処理効率を高める提案がなされている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１０９０３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、ハードウェアにおける処理が一定時間で終了することが保証されているため、処理の進捗を管理し、ハードウェアにおける処理が実際に終了するタイミングよりも早いタイミングで、ハードウェアからプロセッサーに対して処理終了の通知を行うことができる。
しかしながら、処理が一定時間で終了することが保証されていない場合には、ハードウェアにおける処理が実際に終了するタイミングよりも早いタイミングで、ハードウェアからプロセッサーに対して処理終了の通知を行うことができないことがある。そのため、プロセッサーにおける処理効率を高めることができないという課題がある。
【課題を解決するための手段】
【０００６】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態または適用例として実現することが可能である。
【０００７】
［適用例１］複数のタスクを、当該タスクの優先順位に従って順次実行するタスク実行制御部と、前記タスク実行制御部から指示されたデータ処理を実行するデータ処理実行部と、を備え、前記データ処理実行部は、前記データ処理実行部におけるデータ処理が開始されてから終了するまでの実測処理時間を計測する処理時間計測部と、前記実測処理時間を記憶する実測処理時間記憶部と、前記実測処理時間記憶部に記憶された前記実測処理時間に基づいて、前記データ処理実行部で実行しようとするデータ処理の予測処理時間を算出する予測処理時間算出部と、前記予測処理時間に基づいて予測されたデータ処理の終了時点で、前記タスク実行制御部に予測終了タイミングを通知する予測終了タイミング通知部と、を備え、前記タスク実行制御部は、前記予測終了タイミングの通知を受けてタスクの実行順序を設定するタスク実行順序設定部と、を備えたことを特徴とするデータ処理装置。
【０００８】
この構成によれば、データ処理実行部は、データ処理実行部におけるデータ処理が開始されてから終了するまでの実測処理時間を計測する処理時間計測部と、実測処理時間を記憶する実測処理時間記憶部と、実測処理時間記憶部に記憶された実測処理時間に基づいて、データ処理実行部で実行しようとするデータ処理の予測処理時間を算出する予測処理時間算出部と、を備える。これにより、データ実行処理部におけるデータ処理が一定時間で終了することが保証されていない場合であっても、予測処理時間に基づいてデータ処理の終了時点を予測する。そして、予測処理時間に基づいて予測されたデータ処理の終了時点で、タスク実行制御部に予測終了タイミングを通知する予測終了タイミング通知部を備える。そのため、データ実行処理部におけるデータ処理が一定時間で終了することが保証されていない場合であっても、データ処理実行部におけるデータ処理が実際に終了する前に、データ処理実行部からタスク実行制御部に対して予測終了タイミングを通知する機会を増すことができる。
【０００９】
また、タスク実行制御部は、予測終了タイミングの通知を受けてタスクの実行順序を設定するタスク実行順序設定部を備える。これにより、タスク実行制御部は、データ処理実行部におけるデータ処理が実際に終了する前に、データ処理実行部から予測終了タイミングの通知を受けると、タスク実行制御部がデータ処理実行部にデータ処理を依頼したタスクを再び実行する準備を行う。
【００１０】
このため、データ処理実行部で実際にデータ処理が終了した後、直ちに、タスク実行制御部がデータ処理実行部にデータ処理を依頼したタスクの実行を再開できるので、タスク実行再開までの時間を短縮することができる。従って、タスク実行制御部における処理効率を高めることができる。
【００１１】
［適用例２］前記予測処理時間算出部は、前記実測処理時間記憶部に記憶された前記実測処理時間を統計処理することによって、前記予測処理時間を算出することを特徴とする上記データ処理装置。
【００１２】
この構成によれば、統計処理を用いることで、実測処理時間記憶部に記憶された実測処理時間の集団における分布の傾向を分析できる。このため、分布の傾向が反映された予測終了時間に基づいて、データ処理が終了する時点を予測することができる。
【００１３】
［適用例３］前記予測終了タイミング通知部は、前記予測処理時間に補正を加えた前記予測終了タイミングを通知することを特徴とする上記データ処理装置。
【００１４】
この構成によれば、データ実行処理部におけるデータ処理が一定時間で終了することが保証されていない場合であっても、データ処理実行部におけるデータ処理が実際に終了する前に、データ処理実行部からタスク実行制御部に対して予測終了タイミングを通知する機会を増すことができる。また、予測処理時間と実際にデータ処理が終了した時間との差が小さい場合を増加させることができる。これにより、データ処理実行部でのデータ処理が終了するまでの間にタスク実行制御部において実行中であったタスクの実行時間を長くすることができる。これにより、タスク実行制御部の処理効率を上げることができる。
【図面の簡単な説明】
【００１５】
【図１】データ処理装置の構成を説明するための図。
【図２】タスク管理テーブルの一例を示した図。
【図３】ＣＰＵによって参照されるメモリーマップの一例を示した図。
【図４】クロックサイクル数の実測値と予測値及びそれらの差を記載した一例としての表。
【図５】（ａ）は、本実施形態におけるデータ処理装置のＣＰＵがタスクまたはタスクスイッチを実行する期間を示す図、（ｂ）は、本実施形態または比較例におけるデータ処理装置のＨＷアクセラレーターがデータ処理を行う期間を示す図、（ｃ）は、比較例におけるデータ処理装置のＣＰＵがタスクまたはタスクスイッチを実行する期間を示す図。
【図６】（ａ）は、本実施形態におけるデータ処理装置のＣＰＵがタスクまたはタスクスイッチを実行する期間を示す図、（ｂ）は、本実施形態または比較例におけるデータ処理装置のＨＷアクセラレーターがデータ処理を行う期間を示す図、（ｃ）は、比較例におけるデータ処理装置のＣＰＵがタスクまたはタスクスイッチを実行する期間を示す図。
【図７】比較例としてのデータ処理装置の構成図。
【図８】第２実施形態における実測値と予測値及び差の一例を示す表。
【発明を実施するための形態】
【００１６】
（第１実施形態）
以下、第１実施形態について図面を参照しつつ説明する。図１は、本実施形態のデータ処理装置１００の構成を説明するための図である。本実施形態のデータ処理装置１００は、複数のタスクをタスクの優先順位にしたがって順次実行するタスク実行制御部としてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と、ＣＰＵ１０１の指示によってデータを処理するデータ処理実行部としてのハードウェア（ＨＷ）アクセラレーター１０４と、を備えるデータ処理装置である。メモリー１０２は、ＣＰＵ１０１とＨＷアクセラレーター１０４と共にバス接続されており、ＣＰＵ１０１のタスクの実行に使用される命令や命令の実行に使用されるテーブルやデータ等を保存する。
【００１７】
なお、本実施形態は、図１に示したように、ＨＷアクセラレーター１０４を一つ備えるものに限定されるものではなく、複数のＨＷアクセラレーター１０４を備えるものであってもよい。このような場合、一つのＣＰＵが複数のＨＷアクセラレーター１０４を制御するものであってもよいし、複数のＣＰＵがあってもよい。
【００１８】
メモリー１０２は、ＣＰＵ１０１が複数のタスクを適正に順次実行するためのタスク管理テーブル１０３を備えている。図２は、タスク管理テーブル１０３の一例である。
【００１９】
タスク管理テーブル１０３は、タスクを管理するためのタスク管理テーブルである。タスク管理テーブル１０３は、各タスクのタスク名（ＴＡＳＫ  ＩＤ）と、各タスクの進行状況を示すプログラムカウンター（ＰＣ）、タスク実行時のプロセッサーの状態や条件等を記録するプロセッサーステートレジスター（ＰＳＲ）、スタックの位置を示すスタックポインター（ＳＰ）、タスクの実行状態を示すスティト（Ｓｔａｔｅ）、優先順位（ｐｒｉｏｒｉｔｙ）、実行中のタスクの処理内容（ｒｅｇｉｓｔｅｒ  ｆｉｌｅ）、ＨＷアクセラレーターが複数ある場合の使用されているＨＷアクセラレーター、または唯一のＨＷアクセラレーターの使用、不使用の内容（ＨＷ）などを管理する。
【００２０】
ＣＰＵ１０１は、タスク管理テーブル１０３を用い、複数のタスクの実行順序を設定する。実行順序は、実行可能なタスクをより早期に実行されるものから一列に列記して表される。
【００２１】
このようなＣＰＵ１０１とタスク管理テーブル１０３とは、本実施形態の実行順序設定部として機能し、タスクの優先順位に基づいて次に処理すべきタスクを設定する。
【００２２】
ＨＷアクセラレーター１０４は、タスクの実行にあたって比較的負荷の大きな処理を行うための装置である。このため、ＨＷアクセラレーター１０４は、制御部１０５によって制御されてデータ処理を行う演算部１１１を備える。
【００２３】
制御部１０５は、処理時間計測部１０６、実測処理時間記憶部１０７、予測処理時間算出部１０８、予測終了タイミング通知部１０９、ステータス信号生成部１１０を備える。
【００２４】
処理時間計測部１０６は、演算部１１１によってデータ処理に要した時間を実測処理時間として計測する。処理時間計測部１０６は、カウンターから成り、演算部１１１におけるデータ処理に要したクロックサイクル数を計測し、実測処理時間として計測する。尚、計測の対象としては本実施形態のようなクロックサイクル数に限定されるものではなく、例えば実時間値であってもよい。また処理時間計測部１０６は、ステートマシンから成っていてもよく、例えば処理終了状態が複数存在する場合、各々の状態を示す値を計測値としてもよい。
【００２５】
実測処理時間記憶部１０７は、処理時間計測部１０６で計測された実測処理時間としてのクロックサイクル数を記憶するための記憶領域である。処理時間計測部１０６は、計測したクロックサイクル数を実測処理時間記憶部１０７に記憶させる。
【００２６】
予測処理時間算出部１０８は、実測処理時間記憶部１０７に記憶されたクロックサイクル数をサンプルとして、予測処理時間を算出する。
【００２７】
予測終了タイミング通知部１０９は、予測処理時間算出部１０８で算出された予測処理時間に基づいて予測された終了時点に、矢印Ａに示すように、予測終了タイミングをＣＰＵ１０１に対して通知する。
【００２８】
ＨＷアクセラレーター１０４は、ステータス信号生成部１１０及びステータスレジスター１１２を備えている。ステータス信号生成部１１０は、演算部１１１の処理が終了したか否かを示すフラグ信号（ｄｏｎｅ＿ｆｌａｇ）を生成する。このフラグ信号は、本実施形態の電子データの処理の進捗状況を示す進捗情報（ＨＷステータス）である。フラグ信号が「０」であるとき、演算部１１１によるデータ処理が実行されていることを示し、フラグ信号が「１」であるとき、演算部１１１によるデータ処理が終了していることを示している。
【００２９】
図３は、ＣＰＵ１０１によって参照されるメモリーマップの一例を示した図である。図１のＣＰＵ１０１は、ステータスレジスター１１２に記録されたＨＷステータスを、メモリーマップ上の対応するアドレスを参照することで認識できる。対応するアドレスにはデータ処理の終了を示すフラグが書き込まれている。本実施形態ではメモリーマップのうちＨＷステータスが書き込まれるアドレスの範囲を予め設定しておく。ＣＰＵ１０１は、割込み処理の後、メモリーマップの設定された範囲のアドレスに書き込まれたデータを、矢印Ｂに示すポーリング等によって参照し、フラグ信号を認識する。
【００３０】
次に、本実施形態における予測処理時間算出部１０８が、実測処理時間を統計処理することによって予測処理時間を算出する方法について説明する。
【００３１】
図４は、演算部１１１によって、過去にデータ処理されときのクロックサイクル数の実測値と予測値及びそれらの差を記載した一例としての表である。演算部１１１における１回目から５回目までの予測値は、初期値として７０を設定する。演算部１１１における６回目から２０回目までの予測値は、直近の過去５回分の実測値に基づいて算出された移動平均値が記載されている。
【００３２】
実測処理時間記憶部１０７には、計測値５個分の記憶領域が備えられ、直近の過去５回分の実測値が記憶されている。予測処理時間算出部１０８は、実測処理時間記憶部１０７の記憶領域に記憶されている５回分の実測値に基づいて移動平均値を取り、その値を予測値（予測処理時間）として算出する。
【００３３】
予測終了タイミング通知部１０９は、予測処理時間算出部１０８によって算出された予測値を任意に設定される補正値によって補正し、現在、演算部１１１で実行している処理の予測終了タイミング（予測終了時点）を設定する。本実施形態では、ＣＰＵ１０１がタスクの切り替えに要する固定サイクル数を補正値とし、移動平均値から算出された予測値から補正値を差し引いた値を予測終了タイミングとして設定する。
【００３４】
予測終了タイミング通知部１０９は、次の２つの条件のうちいずれか早い方が成立した時点において、ＣＰＵ１０１に対して、終了通知を行い、割り込みを発生させる。
（１）予測終了タイミング通知部１０９が設定した予測終了タイミングとなったとき。
（２）演算部１１１でのデータ処理が終了したとき。
（１）のタイミングで終了通知する場合は、演算部１１１での処理は完全に終了していない。演算部１１１での処理が終了したら、ステータス信号生成部１１０は、フラグ信号を「１」に設定する。
【００３５】
ＣＰＵ１０１は割り込みによる終了通知を受けた後、タスク管理テーブル１０３で次に実行すべきタスクの優先度と、これまで演算部１１１で演算されていたデータ処理を含むタスクの優先度と、を比較し、優先度がより高いタスクを実行するようタスクの実行順序を設定する。
【００３６】
これまで演算部１１１で演算されていたデータ処理を含むタスクの実行がＣＰＵ１０１で再開された場合は、ＣＰＵ１０１はステータスレジスター１１２のフラグを参照し、フラグが「１」の場合は、演算部１１１でのデータ処理が完全に終了しているので、ＣＰＵ１０１で実行中のタスクにおける以降のステップを実行する。フラグが「０」の場合は、演算部１１１での処理が終了していないので、ＣＰＵ１０１はステータスレジスター１１２のフラグが「１」になるまでポーリングを行う。
【００３７】
図４の表における差の欄には、各回における予測値から実測値を差し引いた値が示されている。表の上段に示した△印は１回目から５回目において、差がプラスの値であるとき（３回目、４回目、５回目）を示し、○印は６回目から２０回目において、差がプラスの値であるとき（７回目、９回目、１１回目、１２回目、１７回目、１８回目）を示す。
【００３８】
差がプラスの値は、予測値である予測処理時間が、実測値である実測処理時間より短いことを示す。この場合は、予測終了タイミング通知部１０９は、演算部１１１での演算が終了する前に、ＣＰＵ１０１に対して終了通知を行う。反対に、差がマイナスの値は、予測値である予測処理時間が、実測値である実測処理時間より長いことを示す。この場合は、予測終了タイミング通知部１０９は、演算部１１１での演算が終了したときに、ＣＰＵ１０１に対して終了通知を行う。
【００３９】
次に、予測終了タイミングが演算部１１１でのデータ処理が実際に終了するタイミングより早かった場合において、図１のＣＰＵ１０１とＨＷアクセラレーター１０４の動作について説明する。
【００４０】
図５（ａ）は、本実施形態におけるデータ処理装置１００のＣＰＵ１０１がタスクまたはタスクスイッチを実行する期間を示す図、図５（ｂ）は、データ処理装置１００の演算部１１１がデータ処理を行う期間を示す図である。
【００４１】
時点Ｓ２０１では、図５（ａ）に示すＣＰＵ１０１は、実行中のタスクＡにおけるデータ処理をＨＷアクセラレーター１０４に依頼する。依頼を受けた図５（ｂ）のＨＷアクセラレーター１０４は、演算部１１１によりデータ処理を開始する。
【００４２】
時点Ｓ２０２では、ＣＰＵ１０１は、タスクスイッチの実行を開始する。時点Ｓ２０３では、ＣＰＵ１０１は、優先順位がタスクＡに次ぐタスクＢの処理を開始する。
【００４３】
時点Ｓ２０４は、図１の予測処理時間算出部１０８で算出された予測処理時間に基づいて予測された終了時点である。時点Ｓ２０４では、図１の予測終了タイミング通知部１０９は、ステータスレジスター１１２のフラグの内容を参照する。この時点では演算部１１１でデータ処理が終了していないため、フラグの内容が「０」であるので、予測終了タイミング通知部１０９は、ＣＰＵ１０１に対して、予測終了タイミングとしての予測終了通知を出力する。
【００４４】
ＣＰＵ１０１が予測終了通知を受信すると、ＣＰＵ１０１は、タスク管理テーブル１０３を参照し、優先順位がタスクＢより上位であるタスクＡへの切り替えを行うためのタスクスイッチの実行を開始する。
【００４５】
時点Ｓ２０５では、タスクＡへの切り替えにより、ＣＰＵ１０１は、図１のステータスレジスター１１２のフラグの内容を参照するポーリングを開始する。
【００４６】
時点Ｓ２０６では、演算部１１１でデータ処理が完全に終了すると、ステータス信号生成部１１０はステータスレジスター１１２の内容を「１」に更新する。ＣＰＵ１０１は、ステータスレジスター１１２を参照し、その内容が「１」であると、ＨＷアクセラレーター１０４でのデータ処理が完全に終了したと判断し、タスクＡの実行を再び開始する。
【００４７】
図７は、比較例としてのデータ処理装置５００の構成図である。本実施形態と比較のため、図７のデータ処理装置５００のＣＰＵ５０１とＨＷアクセラレーター５０４の動作内容について説明する。
【００４８】
データ処理装置５００に備えられたＣＰＵ５０１、メモリー５０２、タスク管理テーブル５０３、ＨＷアクセラレーター５０４、制御部５０５、演算部５１１は、本実施形態で説明した図１のデータ処理装置１００に備えられたＣＰＵ１０１、メモリー１０２、タスク管理テーブル１０３、ＨＷアクセラレーター１０４、制御部１０５、演算部１１１と、それぞれ同じ構成である。
【００４９】
データ処理装置５００は、本実施形態で説明した図１の処理時間計測部１０６、実測処理時間記憶部１０７、予測処理時間算出部１０８、予測終了タイミング通知部１０９、ステータス信号生成部１１０、ステータスレジスター１１２を備えていない。
【００５０】
従って、データ処理装置５００には、演算部５１１でのデータ処理が終了する前に、本実施形態のデータ処理装置１００を用いて説明した予測終了通知を通知する機能はなく、演算部５１１でのデータ処理が実際に終了したときに、ＨＷアクセラレーター５０４からＣＰＵ５０１に終了通知が通知される。
【００５１】
図５（ｂ）は、ここでは、比較例における図７のデータ処理装置５００のＨＷアクセラレーター５０４がデータ処理を行う期間を示す図として説明する。
【００５２】
図５（ｃ）は、比較例におけるデータ処理装置５００のＣＰＵ５０１がタスクまたはタスクスイッチを実行する期間を示す図である。図５（ｃ）のＣＰＵ５０１における時点Ｓ２０１から時点Ｓ２０３までの動作内容は、図５（ａ）におけるＣＰＵ１０１の時点Ｓ２０１から時点Ｓ２０３までの動作内容と同じである。
【００５３】
比較例における時点Ｓ２０４では、ＨＷアクセラレーター５０４からＣＰＵ５０１に対して予測終了タイミングとしての予測終了通知は出力されない。また、時点Ｓ２０５においても、ポーリングを行わない。そのため、時点Ｓ２０３でＣＰＵ５０１においてタスクＢの処理が開始されると、時点Ｓ２０４、時点Ｓ２０５においてもＣＰＵ５０１でのタスクＢが実行中である。
【００５４】
比較例における時点Ｓ２０６では、演算部５１１でのデータ処理が終了すると、ＨＷアクセラレーター５０４からＣＰＵ５０１に対して終了通知が通知される。
【００５５】
ＣＰＵ５０１は、タスク管理テーブル５０３を参照し、優先順位がタスクＢより上位であるタスクＡへの切り替えを行うためのタスクスイッチの実行を開始する。時点Ｓ２０７では、ＣＰＵ５０１においてタスクＡの実行が再び開始される。
【００５６】
図５（ｂ）、（ｃ）を用いて説明した比較例では、時点Ｓ２０６で、ＨＷアクセラレーター５０４からＣＰＵ５０１に対して終了通知がなされると、タスクスイッチが実行される。これに対して、図５（ａ）、（ｂ）を用いて説明した本実施形態では、時点Ｓ２０４において、予測終了タイミング通知部１０９によって予測終了通知がＣＰＵ１０１に出力され、ＣＰＵ１０１はタスクスイッチの実行を開始する。
【００５７】
そのため、比較例におけるＣＰＵ５０１においてタスクＡの実行が再び開始された時点は時点Ｓ２０７である。これに対して、本実施形態におけるＣＰＵ１０１においてタスクＡの実行が開始された時点は時点Ｓ２０６である。タスクＡの実行が再び開始された時点は、比較例におけるタスクＡの実行が再び開始された時点Ｓ２０７から、本実施形態におけるタスクＡの実行が再び開始された時点Ｓ２０６までの期間Ｍだけ早められたことになる。すなわち、比較例におけるタスクスイッチが実行される期間（時点Ｓ２０６から時点Ｓ２０７までの期間Ｍ）だけタスクＡの実行が再び開始された時点が本実施形態によって早められたことになる。
【００５８】
次に、演算部１１１でのデータ処理が終了するタイミングが予測終了タイミングより早かった場合において、ＣＰＵ１０１とＨＷアクセラレーター１０４の動作について説明する。
【００５９】
図６（ａ）は、本実施形態におけるデータ処理装置のＣＰＵがタスクまたはタスクスイッチを実行する期間を示す図、図６（ｂ）は、本実施形態または比較例におけるデータ処理装置のＨＷアクセラレーターがデータ処理を行う期間を示す図である。
【００６０】
時点Ｓ３０１では、図６（ａ）に示すＣＰＵ１０１は、実行中のタスクＡにおけるデータ処理をＨＷアクセラレーター１０４に依頼する。依頼を受けた図６（ｂ）のＨＷアクセラレーター１０４は、演算部１１１によりデータ処理を開始する。
【００６１】
時点Ｓ３０２では、ＣＰＵ１０１がタスク管理テーブル１０３を参照し、優先順位がタスクＡに次ぐタスクＢへの切り替えを行うためのタスクスイッチの実行が開始される。
【００６２】
時点Ｓ３０３では、ＣＰＵ１０１においてタスクＢの処理が開始される。時点Ｓ３０４では、演算部１１１での処理が実際に終了し、ＨＷアクセラレーター１０４からＣＰＵ１０１に対して終了通知が通知される。ＣＰＵ１０１は、タスク管理テーブル１０３を参照し、タスクＢより優先順位が高いタスクＡへ切り替えを行うためのタスクスイッチの実行を開始する。
【００６３】
時点Ｓ３０５は、予測終了タイミング通知部１０９が設定した予測終了タイミングである。予測終了タイミング通知部１０９は、ステータスレジスター１１２のフラグの内容を参照し、フラグの内容が「１」であるので、予測終了タイミング通知部１０９は、ＣＰＵ１０１に対して、予測終了タイミングとしての予測終了通知を通知しない。時点Ｓ３０６では、ＣＰＵ１０１においてタスクＡの実行が再び開始される。
【００６４】
本実施形態と比較のため、図７のデータ処理装置５００におけるＣＰＵ５０１の動作内容について説明する。図６（ｃ）は、比較例におけるデータ処理装置５００のＣＰＵ５０１がタスクまたはタスクスイッチを実行する期間を示す図である。図６（ｂ）は、ここでは、比較例におけるデータ処理装置５００のＨＷアクセラレーター５０４がデータ処理を行う期間を示す図として説明する。
【００６５】
比較例におけるデータ処理装置５００は、予測終了タイミング通知部を備えていないので、予測終了通知は、ＨＷアクセラレーター５０４からＣＰＵ５０１に対して通知されない。従って、図６（ｃ）のＣＰＵ５０１における時点Ｓ３０１から時点Ｓ３０６までの動作内容は、図６（ａ）におけるＣＰＵ１０１の時点Ｓ３０１から時点Ｓ３０６までの動作内容と同じである。
【００６６】
すなわち、演算部１１１でのデータ処理が終了するタイミングが、予測終了タイミングより早かった場合は、本実施形態におけるＣＰＵ１０１でタスクＡの実行が再び開始された時点Ｓ３０６は、比較例におけるＣＰＵ５０１でタスクＡの実行が再び開始された時点Ｓ３０６と同じ時点となる。
【００６７】
以上、本実施形態で説明したように、データ処理装置１００は、複数のタスクを、当該タスクの優先順位に従って順次実行するタスク実行制御部としてのＣＰＵ１０１と、ＣＰＵ１０１から指示されたデータ処理を実行するデータ処理実行部としてのＨＷアクセラレーター１０４と、を備え、ＨＷアクセラレーター１０４は、ＨＷアクセラレーター１０４におけるデータ処理が開始されてから終了するまでの実測処理時間を計測する処理時間計測部１０６と、実測処理時間としてのクロックサイクル数を記憶する実測処理時間記憶部１０７と、実測処理時間記憶部１０７に記憶されたクロックサイクル数に基づいて、ＨＷアクセラレーター１０４で実行しようとするデータ処理の予測処理時間としてのクロックサイクル数を算出する予測処理時間算出部１０８と、予測処理時間に基づいて予測されたデータ処理の終了時点Ｓ２０４で、ＣＰＵ１０１に予測終了タイミングとしての予測終了通知を通知する予測終了タイミング通知部１０９と、を備え、ＣＰＵ１０１は、予測終了タイミングの通知を受けてタスクの実行順序を設定するタスク実行順序設定部と、を備える。
【００６８】
この構成によれば、ＨＷアクセラレーター１０４におけるデータ処理が一定時間で終了することが保証されていない場合であっても、予測処理時間に基づいてデータ処理の終了時点を予測する。これにより、ＨＷアクセラレーター１０４におけるデータ処理が一定時間で終了することが保証されていない場合であっても、ＨＷアクセラレーター１０４におけるデータ処理が実際に終了する前に、ＨＷアクセラレーター１０４からＣＰＵ１０１に対して予測終了タイミングを通知する機会を増すことができる。
【００６９】
また、ＨＷアクセラレーター１０４で実際にデータ処理が終了した後、直ちに、ＣＰＵ１０１がＨＷアクセラレーター１０４にデータ処理を依頼したタスクの実行を再開できるので、タスク実行再開までの時間を短縮することができる。従って、ＣＰＵ１０１における処理効率を高めることができる。
【００７０】
また、予測処理時間算出部１０８は、実測処理時間記憶部１０７に記憶された実測処理時間を統計処理することによって、予測処理時間を算出する。
【００７１】
この構成によれば、統計処理を用いることで、実測処理時間記憶部１０７に記憶された実測処理時間の集団における分布の傾向を分析できる。このため、分布の傾向が反映された予測終了時間に基づいて、データ処理が終了する時点を予測することができる。
【００７２】
本実施形態では、移動平均値を算出する方法を用いたが、統計計算としては、例えば最頻度値を求める計算、およびその派生等であってもよい。算術計算以外にも計測値を用いたデータ処理を行ってもよい。データ処理方法としては例えば複数の計測値によるパターンマッチングを行ってもよい。また複数の処理方法を適宜切り替えて使用するようにしたり、外部からパラメーターを設定したりしてもよい。
【００７３】
また、予測終了タイミング通知部１０９は、予測処理時間に補正を加えた予測終了タイミングを通知する。
【００７４】
この構成によれば、予測処理時間に補正を加えることで、ＨＷアクセラレーター１０４の演算部１１１におけるデータ処理が一定時間で終了することが保証されていない場合であっても、演算部１１１におけるデータ処理が実際に終了する前に、ＨＷアクセラレーター１０４からＣＰＵ１０１に対して予測終了タイミングを通知する機会をさらに増すことができる。
【００７５】
（第２実施形態）
第２実施形態では、直前にデータ処理された１回の実測処理時間に基づいて、これから実行しようとするデータ処理の予測処理時間を算出する方法について説明する。
【００７６】
第２実施形態におけるデータ処理装置は、図１を用いて説明したデータ処理装置１００の構成と同じである。
【００７７】
データ処理実行部としてのＨＷアクセラレーター１０４の演算部１１１がｎ回目の処理を開始しようとする時点での予測値をＰ（ｎ）とし、ｎ回目の処理に要した実測値をＲ（ｎ）とする。
【００７８】
（ｎ＋１）回目の処理開始時の予測値Ｐ（ｎ＋１）は、次式として定義する。
Ｐ（ｎ＋１）＝Ｐ（ｎ）＋（Ｒ（ｎ）−Ｐ（ｎ））×Ｆ・・・（式１）
ここでＦはＦ＞０となる任意の係数である。また、ｎ＝０であるときは、
Ｒ（０）＝０、Ｐ（０）＝初期値（０以上）とする。
【００７９】
式１から明らかなように、前回処理開始時の予測値を前回の実測値に近づけた値を次回の予測値としており、係数Ｆによって近づけ方の度合いを調整する。例えば、Ｆ＝１の場合、前回の実測値がそのまま次回の予測値となる。
【００８０】
図８（ａ）、（ｂ）は、演算部１１１における実測値としてのクロックサイクル数と、予測処理時間算出部１０８で計算された予測値としてのクロックサイクル数の一例の表である。図８（ａ）は、係数Ｆが１であるときの予測値Ｐ（ｎ＋１）の表を示し、図８（ｂ）は、係数Ｆが０．８であるときの予測値Ｐ（ｎ＋１）の表を示す。
【００８１】
図８（ａ）、（ｂ）における差の欄は、ｎ回目における実測値Ｒ（ｎ）から予測値Ｐ（ｎ）を差し引いた値を示す。第１実施形態で説明したように、差がプラスの値は、予測値である予測処理時間が、実測値である実測処理時間より短いことを示す。この場合は、演算部１１１での演算が実際に終了する前に、予測終了タイミング通知部１０９から予測終了通知がＣＰＵ１０１に対して通知され、演算部１１１での演算が実際に終了した時点で、ステータス信号生成部１１０がステータスレジスター１１２の内容を「１」に更新する。ＣＰＵ１０１はステータスレジスター１１２を参照し内容が「１」であることを確認することでＨＷアクセラレーター１０４での処理が完全に終了したことを認識する。
【００８２】
反対に、差がマイナスの値は、予測値である予測処理時間が、実測値である実測処理時間より長いことを示す。この場合は、ＨＷアクセラレーター１０４から終了通知がＣＰＵ１０１に対して通知され、予測終了タイミング通知部１０９は、予測終了通知を通知しない。
【００８３】
図８（ａ）、（ｂ）における表の上段に示した○印は、図８（ａ）の表と、図８（ｂ）の表を比較したとき、同じ回数における差がプラスの値であるとともに、同じ回数における差が小さい方であることを示す。○印が記載されている回数は、図８（ａ）の表では３回（４回目、９回目、１５回目）であり、図８（ｂ）の表では７回（３回目、６回目、８回目、１２回目、１４回目、１７回目、１９回目）である。
【００８４】
これは、図８（ｂ）の係数Ｆが０．８であるときの方が、図８（ａ）の係数Ｆが１．０であるときの方より、予測値が実測値に近い回数が多かったことを意味する。
【００８５】
このように、係数Ｆの値を変更して補正することによって、予測値が実測値に近い値となる場合を増加させることができる。このようにすることにより、予測終了タイミングを演算部１１１でのデータ処理の終了時点より早く通知してタスクＡの実行再開に要する時間を短縮するとともに、演算部１１１で実行しているデータ処理を含むタスクＡより優先度の低いタスクＢの処理を実行している時間を長くすることができる（図５における時点Ｓ２０３から時点Ｓ２０４までの期間）。従って、ＣＰＵ１０１における処理効率を向上させることができる。
【符号の説明】
【００８６】
１００…データ処理装置、１０１…ＣＰＵ、１０３…タスク管理テーブル、１０４…ＨＷアクセラレーター、１０６…処理時間計測部、１０７…実測処理時間記憶部、１０８…予測処理時間算出部、１０９…予測終了タイミング通知部。
【図１】
2011108140.tif 000003
【図２】
2011108140.tif 000004
【図３】
2011108140.tif 000005
【図４】
2011108140.tif 000006
【図５】
2011108140.tif 000007
【図６】
2011108140.tif 000008
【図７】
2011108140.tif 000009
【図８】
2011108140.tif 000010